←2011-11 2011-12 2012-01→ ↑2011 ↑all
2011-12-01
00:04:55 -!- pikhq has quit (Ping timeout: 244 seconds).
00:04:56 -!- pikhq_ has joined.
00:16:30 -!- pumpkin has joined.
00:19:24 -!- sebbu2 has quit (Quit: updating xchat-wdk).
00:19:56 -!- copumpkin has quit (Ping timeout: 248 seconds).
00:30:30 -!- lambdabot has joined.
00:41:54 <zzo38> The things about Dungeons&Dragons game, is that unlike chess and poker and so on, it is possible to solve situations that are impossible to solve.
00:54:00 -!- pikhq_ has quit (Ping timeout: 244 seconds).
00:59:22 -!- pikhq has joined.
01:02:44 <zzo38> http://hackage.haskell.org/package/barrier-monad
01:08:00 -!- DCliche has joined.
01:11:17 -!- Klisz has quit (Ping timeout: 252 seconds).
01:15:00 -!- pumpkin has changed nick to copumpkin.
01:24:03 -!- BeholdMyGlory has joined.
01:24:05 -!- BeholdMyGlory has left.
01:26:37 -!- sebbu has joined.
01:26:47 -!- kmc has quit (Quit: Leaving).
02:08:49 -!- Jafet has joined.
02:14:52 -!- pikhq_ has joined.
02:15:02 -!- pikhq has quit (Ping timeout: 244 seconds).
02:15:05 -!- copumpkin has quit (Ping timeout: 240 seconds).
02:23:13 -!- Darth_Cliche has joined.
02:25:07 -!- zzo38 has quit (Remote host closed the connection).
02:26:55 -!- DCliche has quit (Ping timeout: 244 seconds).
02:27:10 -!- itidus21 has changed nick to alloca_i32.
02:31:37 -!- alloca_i32 has changed nick to itidus21.
02:36:48 -!- copumpkin has joined.
03:07:18 <itidus21> `log situation
03:07:23 <HackEgo> 2010-11-15.txt:18:29:06: <ais523_> (I'm aware of the US phone situation)
03:42:16 -!- zzo38 has joined.
04:10:32 <zzo38> I invented the D&D feat "Favored Mercy"; you have to select a creature type same as the ranger's favored enemy list and then there are various bonuses and restrictions that apply.
04:13:39 <zzo38> "Science Made Stupid: How to Discomprehend the World Around Us" by Tom Weller
04:14:26 <zzo38> "Cvltvre Made Stvpid: A Misguided Tour of Illiterature, Fine & Dandy Arts, & the Subhumanities" by Tom Weller
04:18:15 -!- azaq23 has joined.
04:37:47 <kallisti> good morning
04:38:05 <kallisti> does anyone no of a google API where I can grab timezone info?
04:38:13 <kallisti> equivalent to the "time in <location>" searched
04:38:16 <kallisti> *searches
04:40:07 -!- MDude has changed nick to MSleep.
04:59:56 <Sgeo> kallisti, update
05:00:07 <kallisti> Sgeo: oZOMG
05:00:27 <pikhq_> kallisti: tzinfo?
05:01:57 <kallisti> pikhq_: can I ask tzinfo "time in anywhere, USA" and it will tell me the time?
05:03:04 <pikhq_> Erm, zoneinfo
05:03:05 <pikhq_> Bleh.
05:03:14 <kallisti> oh, possibly.
05:03:32 <kallisti> I don't think it would work with small town names though
05:03:42 <kallisti> I'll just... do google searches and regex the time. :P
05:03:53 <pikhq_> You'd probably need a map for *that*.
05:04:08 <kallisti> (it's an IRC bot so dependence on a network connection isn't a problem)
05:04:27 <pikhq_> Also, that's bound to screw up: town name is ambiguous. :)
05:04:45 <kallisti> that's fine.
05:04:56 <pikhq_> Well, with state I *think* it might not be?
05:05:05 <kallisti> a reasonable person would provide a town, state combo
05:05:23 <kallisti> or a town, whateverelseyourcountrycallsthisshit, country
05:07:05 <kallisti> wow... boiling peanuts is rather time consuming.
05:07:11 <kallisti> suppose to boil them for like 24 hours.
05:09:12 <kallisti> hmmm, well, Google doesn't really make this easy.
05:09:24 <kallisti> maybe there XML api is better for this.
05:15:34 <zzo38> Do you know the sidereal time?
05:17:29 <kallisti> zzo38: yes it's 04:18 LST here
05:17:36 <kallisti> :D
05:52:50 <itidus21> is that a welsh town?
05:53:10 <kallisti> ?
05:53:19 <itidus21> whateverelseyourcountrycallsthisshit
05:54:09 <kallisti> no town is a whateverelseyourcountrycallsthisshit town.
05:54:15 <kallisti> obviously.
05:55:09 * kallisti has been boiling peanuts for over an hour now.
05:55:26 <itidus21> but then there is a town named Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
05:56:13 <kallisti> oh look that's an actual thing.
05:56:49 <itidus21> Toponymy is the scientific study of place names (toponyms), their origins, meanings, use and typology. A toponymist is one who studies toponymy.
05:57:57 <kallisti> itidus21: The apple is the pomaceous fruit of the apple tree, species Malus domestica in the rose family (Rosaceae). It is one of the most widely cultivated tree fruits, and the most widely known of the many members of genus Malus that are used by humans. Apple grow on small, deciduous trees that blossom in the spring and produce fruit in the fall.
05:58:02 <kallisti> ..
05:59:19 <kallisti> hmmm, these peanuts are still kind of crunchy.
05:59:26 <kallisti> maybe another hour? :P
06:02:33 <itidus21> A seminal experiment by Karen Wynn in 1992 involving Mickey Mouse dolls manipulated behind a screen demonstrated that five-month-old infants expect 1 + 1 to be 2, and they are comparatively surprised when a physical situation seems to imply that 1 + 1 is either 1 or 3.
06:02:45 <kallisti> ...
06:03:06 <kallisti> `word 50
06:03:10 <HackEgo> serate erilinst squcefingrata nridi sche dk feculaza le pres elatardia kan za ar sau rempanissidaroparinsilh tovigisallassa toncippilluce riedaiilloccau tfinan rous affiens feaatherroellyte rumqh sed em jelendcclocwted nut va acistophoroculvaliamangtola disses climan coo ebyted wity baniff hinosele proley widuchissirs forraseek oliterskiitcligitussies kr rapeosendon co pos lornfiernsident unalragewelsiegaus ze beffuringlatismen natschic bareng
06:03:22 <itidus21> after being taught the meanings of the Arabic numerals 0 through 4, one chimpanzee was able to compute the sum of two numerals without further training
06:03:32 <kallisti> feaatherroellyte
06:07:48 <zzo38> kallisti: O, you do know the sidereal time. Do you know the moon declination?
06:09:51 -!- monqy has quit (Read error: Operation timed out).
06:11:44 <kallisti> zzo38: nope
06:12:04 <kallisti> zzo38: I actually just googled for the former. :P
06:12:09 <kallisti> but I now know what it means.
06:12:17 <zzo38> Moon declination is -8 degrees 18 minutes
06:12:25 <zzo38> Sideral time is the right ascension of the zenith.
06:12:41 -!- monqy has joined.
06:12:50 <zzo38> 2h33m here
06:13:07 -!- azaq23 has quit (Quit: Leaving.).
06:14:31 <kallisti> for a second that looked like leetspeak..
06:14:41 <kallisti> some weird way to say "same here"
06:15:00 <zzo38> Actually I meant 2 hour 33 minutes
06:15:06 <kallisti> yes I know.
06:17:28 <kallisti> awwww yeah boiled peanut time.
06:17:31 <kallisti> if you have never had boiled peanuts
06:17:35 <kallisti> I highly recommend that you do.
06:18:21 <zzo38> Do you know what right ascension and declination are? These are equatorial coordinates; do you know ecliptic coordinates?
06:22:44 <kallisti> I'm vaguely familiar with what an ecliptic is.
06:22:55 <kallisti> I can imagine that ecliptic coordinates are based on the ecliptic plane.
06:23:08 <zzo38> Yes, that is what it is.
06:24:32 <kallisti> and I'm guessing equatorial coordinates are based on the equator?
06:24:38 <zzo38> Yes.
06:25:29 <zzo38> Hour angle can be used instead of right ascension. And you can use local hour angle or Greenwich hour angle.
06:26:00 <kallisti> but it's more or less expressing the same thing as right ascension, yes?
06:26:14 <zzo38> Yes, the difference is where the zero will be.
06:26:18 <kallisti> right
06:26:42 <kallisti> is hour angle in different units compared to right ascension?
06:27:12 <zzo38> Usually they are both given in units of hours, although you can use degrees instead.
06:28:38 <kallisti> ah so greenwich hour angle and right ascension are equivalently based on the prime meridian.
06:29:11 <zzo38> Right ascension has zero at the vernal equinox. Greenwich hour angle has zero at Greenwich.
06:29:26 <zzo38> Local hour angle is based on your location.
06:30:18 <kallisti> ah okay
06:30:51 <kallisti> could be useful to know local hour angle if you're looking for celestial bodies in the sky.
06:31:00 <kallisti> is there any notion of local declination?
06:31:33 <zzo38> kallisti: Not as far as I know, but I was thinking about the same thing earlier today; you could have local declination too.
06:31:54 <kallisti> it would just be less convenient without GPS monitoring of some kind
06:32:07 <kallisti> with local hour angle you could go by your time zone instead of the precise longitude.
06:34:23 <kallisti> these poorly made boiled peanuts make me want some actual boiled peanuts.
06:34:38 <zzo38> You could, but timezones are only approximate. Using your precise longitude is better (you could find it in a city list if you have no GPS, and enter it into the computer, together with your latitude as well)
06:35:02 <zzo38> Of course city lists are more accurate than using timezones but still not perfectly accurate because the city is larger than one point.
06:35:24 <kallisti> I basically took some ripe shelled frozen peanuts and boiled them. you're supposed to take unripe peanuts with shells and boil them forever in salt water like peas.
06:35:43 <Sgeo> zzo38, is your barrier monad code up yet >.>
06:35:51 <zzo38> Sgeo: Yes.
06:35:58 <zzo38> The package is called "barrier-monad"
06:36:21 <Sgeo> ty
06:36:27 <zzo38> I have no peanuts
06:36:48 <kallisti> I don't even know if they sell raw unripe peanuts.
06:37:17 <zzo38> Can you grow peanuts in your garden?
06:37:19 <kallisti> typically you buy boiled peanuts from stands. it's a popular thing in the deep south where peanuts are grown (especially Georgia and South Carolina)
06:37:23 -!- oerjan has joined.
06:37:28 <kallisti> zzo38: doubt it.
06:37:34 <kallisti> well, depending on where you live
06:38:36 <kallisti> typically you buy boiled peanuts from stands. it's a popular thing in the deep south where peanuts are grown (especially Georgia and South Carolina)Peanuts grow best in light, sandy loam soil. They require five months of warm weather, and an annual rainfall of 500 to 1,000 mm (20 to 39 in) or the equivalent in irrigation water.
06:38:55 <kallisti> Peanuts grow best in light, sandy loam soil. They require five months of warm weather, and an annual rainfall of 500 to 1,000 mm (20 to 39 in) or the equivalent in irrigation water.
06:38:59 <kallisti> :P
06:39:21 <kallisti> zzo38: good luck :P
06:41:57 * oerjan recalls his mom grew tomatoes and cucumbers indoors, they needed buckets of water every day
06:42:35 <kallisti> that's because you live in a barren icy tundra.
06:42:36 <kallisti> right?
06:42:37 <oerjan> well i'm sure there were tomatoes, i think there were cucumbers.
06:42:43 <oerjan> kallisti: close enough.
06:43:24 <kallisti> I'm pretty sure tomatos more or less grow themselves here.
06:43:32 <oerjan> i should point out this was still done in the summer, so they did get sunlight through the big glass door.
06:43:38 <kallisti> my parents have a tomato garden and I don't think I've seen them upkeep it very much.
06:44:43 <kallisti> also corn. wow, imagine that! plants that originate from the Americas grow well in the Americas!
06:44:52 <oerjan> well afair it was mostly the water.
06:45:31 <oerjan> the americas _are_ big you know, and especially in the north-south direction which temperatures vary along :P
06:46:09 <oerjan> and i vaguely think i read corn originated in the tropics.
06:46:22 <oerjan> incas or mayas or thereby
06:47:05 <kallisti> yes, but now we have like miles and miles of yellow corn being mass produced in the midwest
06:47:07 <oerjan> but i guess georgia is nearly tropical, isn't that were you were from
06:47:13 <kallisti> yes. it's "sub-tropical"
06:47:48 <pikhq_> oerjan: Not to mention we've got a lot of climactic changes from geography.
06:47:54 <kallisti> which means it's really hot in the summer, noticeably cold in the winter, and always humid.
06:47:55 <oerjan> i also guess they've probably bred varieties that need less heat
06:48:08 <oerjan> kallisti: heh
06:48:49 <kallisti> current humidity: 100% (it just rained a few hours ago :P)
06:48:51 <pikhq_> oerjan: Such breeding was lost to the mists of time; domesticated corn had already pretty well spread through the Americas.
06:49:07 <oerjan> most of my time the one time i was staying in the US was in Seattle, which probably does not fit that description. Boston did when i was there, though.
06:49:18 <kallisti> the midwest is insane.
06:49:25 <kallisti> literally miles and miles of corn and soybeans.
06:49:29 <pikhq_> Yeah.
06:50:03 <pikhq_> You've got grazing melding into corn fields... Over the course of several hundred miles.
06:50:20 <oerjan> pikhq_: yeah i just recently read that the original english settlers learned to grow corn
06:50:43 <pikhq_> Yup.
06:51:01 <zzo38> Mostly I know all this stuff about right ascension and ecliptic plane and that stuff due to looking at oerjan's "Agora Nomic's Horoscope" and I didn't know what "Node" is or what all these lines and numbers means, or what "Placidus houses" is; and then I downloaded Astrolog (and Daedalus, the author's other program) and it had a bunch of other features that I didn't understand,
06:51:10 <kallisti> oerjan: we learn about that shit in middle school history. :P
06:51:45 <oerjan> kallisti: i figure it is part of the thanksgiving lore
06:51:55 <kallisti> oerjan: but we don't learn any important history in middle school.
06:51:59 <kallisti> oerjan: yes, it is.
06:52:27 <zzo38> and I wondered why the sunrise/sunset times in this program are a bit off (I think it is because of refraction), and I figured out how to use it to calculate the date of Chinese New Year, and so on.
06:52:52 <kallisti> as far as I can tell Thanksgiving is basically "let's eat a bunch of stuff that's native to North America"
06:52:59 <oerjan> zzo38: well you definitely should know more than me already after all your experiments
06:53:16 <Sgeo> zzo38, I wrote this code to try to show off your Barrier monad, sorry if it's horrible and ugly and evil
06:53:16 <Sgeo> http://hpaste.org/54738
06:54:24 <oerjan> zzo38: i think i saw someone mention a monad essentially identical to the Barrier monad under a different name on some haskell forum recently. i've forgotten what the name was, though.
06:54:38 <oerjan> so it's not completely unknown
06:55:22 <zzo38> Sgeo: At least it works; I don't know if it is horrible and ugly and evil but it is a simple demonstration (simpler than many things you could do with this library)
06:56:11 <kallisti> zzo38: Sgeo: oh yes that is very analagous to Python coroutines.
06:56:16 <kallisti> I'm assuming more could be done though
06:56:24 <oerjan> i come to think of it, shouldn't there be a way to split the Barrier monad into two transformers, one for each part?
06:56:40 <Sgeo> kallisti, can you put yield into a function in Python and call that function and have it work sensibly?
06:56:50 <kallisti> Sgeo: yes.
06:56:56 <kallisti> fsvo sensibly
06:56:57 <zzo38> oerjan: Yes, I thought of that someone else might have done similar things, anyways that happens a lot in mathematics (and programming in Haskell involves much about mathematics)
06:57:22 <oerjan> yeah
06:59:12 <kallisti> Sgeo: http://pastebin.com/j732vmzF
06:59:37 <kallisti> it's also possible to throw exceptions into a coroutine from other code.
06:59:43 <kallisti> g = generate(10)
06:59:50 <kallisti> g.throw(SomeException)
06:59:58 <Sgeo> Not quite what I meant
07:00:07 <zzo38> oerjan: And yes I suppose I also know more about the Astrolog and what all that stuff means since I have used most of its features (except the biorhythms and the interpretation mode used for Agora; I don't care for those), and so on... I configured the file to use different defaults, such as degrees instead of zodiac signs, Campanus instead of Placidus, and so on
07:00:09 <kallisti> what did you mean then?
07:00:13 <Sgeo> As in, can you encapsulate complex yield code and use that in place of the yield keyword?
07:00:21 <Sgeo> To make a generator
07:00:59 <kallisti> well, calling the function produces the generator, with some plumbing it's possible but it's not implicit.
07:01:00 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
07:01:32 <zzo38> I do know how generator functions work in JavaScript. Any function containing "yield" is a generator function, and it returns a Generator object when called (not doing anything yet). When you call the next or send methods of the generator function, it runs until yield, at which point the next or send method returns the value being yield and send(x) will cause the yield to x
07:01:39 <kallisti> for my MUD I was actually working on a menu system that maintained a stack of coroutines. when the top coroutine is exhausted it would pop off and go back to the previous one.
07:01:47 <oerjan> sheesh my nose tip got all scaly from blowing my nose
07:02:00 <oerjan> despite putting on lots of lotion
07:02:01 <kallisti> zzo38: yes that's how it works in Python
07:02:08 <kallisti> with the addition of a throw method that allows you to signal exceptions.
07:02:10 <zzo38> You could make it yourself without using yield; that is possible too (you simply need to return an object with the correct methods)
07:02:21 <zzo38> kallisti: JavaScript generator functions have that too.
07:03:14 <oerjan> Sgeo: i assume to work properly inside functions, yield needs to encapsulate a continuation
07:03:37 <kallisti> also menu coroutines could do things like manipulate the menu stack or defer to previous menu (without actually being consumed)
07:04:01 <kallisti> but essentially if the courtine yielded a new generate then the system pushed the new generator onto the stack, so it was fairly natural to write nested menu code.
07:04:02 <oerjan> but maybe not a completely arbitrary one
07:04:15 <kallisti> *generator
07:05:12 <kallisti> it was pretty neat, but I never actually finished the MUD codebase
07:05:18 <kallisti> mainly because I was doing pointless stuff like that.
07:06:18 <kallisti> in any case, it would be possible to abstract that sort of nested coroutine system into one coroutine.
07:06:55 <kallisti> the controller coroutine is the outside interface, and delegates input/output to the coroutines in the stack that it maintains.
07:08:32 <kallisti> can barrier monads do anything like that?
07:08:39 <oerjan> 05:17:29: <kallisti> zzo38: yes it's 04:18 LST here
07:08:43 <kallisti> I mean, in there current state.
07:08:47 <kallisti> I don't doubt the possibility
07:09:19 <oerjan> apparently tunes also uses sidereal time.
07:09:22 <zzo38> I think the Haskell code using the library that I wrote, which is like the Python code example posted, would be like this: generate i = yield i >>= generate . maybe (succ i) id;
07:09:46 <zzo38> oerjan: Are you sure?
07:10:08 <oerjan> zzo38: it was a joke by the fact it was at almost the same minute, and tunes _does_ have a broken clock
07:10:26 <oerjan> oh wait
07:10:32 <oerjan> scratch that
07:10:38 <zzo38> kallisti: You probably can do something like that in Haskell somehow, using barrier monads, possibly using the BarrierT (the monad transformer for barrier monad)
07:10:53 <kallisti> zzo38: how does generate work?
07:10:54 <oerjan> i was pasting codu :P
07:11:23 <zzo38> kallisti: It is like the Python example code you posted: http://pastebin.com/j732vmzF
07:11:32 <kallisti> right but how does it actually work. :P
07:11:47 <Sgeo> Is crosstalk actually useful? >.>
07:11:58 <kallisti> zzo38: oh
07:12:00 <kallisti> I'm blind
07:12:02 <kallisti> zzo38: :P
07:12:04 <kallisti> disregard
07:12:06 <zzo38> Sgeo: I don't know but I think you suggested that to me isn' it?
07:12:13 <kallisti> zzo38: "help what is recursion"
07:12:23 <Sgeo> zzo38, I'm just wondering if what I suggested might be completely useless
07:13:01 <zzo38> Sgeo: Well, I don't know; maybe someone will find a use for it, either for computer programming or for mathematical use.
07:13:14 <kallisti> zzo38: I'm thinking an explicit stack is unecessary
07:13:26 <kallisti> but... maybe it is?
07:13:34 <oerjan> 05:56:49: <itidus21> Toponymy is the scientific study of place names (toponyms), their origins, meanings, use and typology. A toponymist is one who studies toponymy.
07:13:37 <oerjan> 05:57:57: <kallisti> itidus21: The apple is the pomaceous fruit of the apple tree, species Malus domestica in the rose family (Rosaceae). It is one of the most widely cultivated tree fruits, and the most widely known of the many members of genus Malus that are used by humans. Apple grow on small, deciduous trees that blossom in the spring and produce fruit in the fall.
07:14:06 <kallisti> zzo38: maybe it just be handled with simple recursion?
07:14:07 <oerjan> incidentally, the city name Almaty originally means "father of the apple"
07:14:10 <oerjan> iirc
07:14:31 <zzo38> kallisti: Probably it can be done without an explicit stack; recursion probably works OK
07:14:48 <kallisti> zzo38: maybe with >> even
07:15:58 <oerjan> oh wait it's apparently the older Alma-Ata form which means that
07:16:37 <oerjan> http://en.wikipedia.org/wiki/Almaty#Toponymy
07:17:04 <kallisti> f x = yieldSomeStuff >> (if someCondition then (>> f x) else id) barrier2
07:17:07 <zzo38> kallisti: Yes, you can use >> if you don't need the back values. Or whatever other values there are when using BarrierT with other monads too
07:18:33 <oerjan> (Almaty is still related to apples.)
07:18:36 <zzo38> Yes I suppose that is another way, too.
07:18:57 <Sgeo> (>> f x)?
07:19:10 <Sgeo> Hmm
07:19:11 <kallisti> Sgeo: yes, I'm so cool.
07:19:17 <kallisti> CONDITIONAL FUNCTIONS DUDE
07:19:19 <kallisti> way of the future.
07:19:22 <oerjan> <kallisti> hmmm, these peanuts are still kind of crunchy. <-- WHY WOULD SOMEONE WANT NON-CRUNCHY PEANUTS, IT MAKES NO SENSE
07:19:34 <kallisti> oerjan: because they're boiled and thus soft and salty and delicious.
07:19:48 <quintopia> mmmm boiled pnuts
07:19:54 <oerjan> BUT BUT THEY'RE NOT _CRUNCHY_ SO IT'S ALL MEANINGLESS
07:20:04 <coppro> quintopia: I misread that in the obvious fashion.
07:20:04 <kallisti> dude boiled > roasted
07:20:07 <oerjan> crazy murricans
07:20:08 <kallisti> any day.
07:20:21 <kallisti> roasted is all dry and gross
07:20:25 <quintopia> oerjan: you are wrong
07:20:28 <kallisti> go eat some actual nut
07:20:37 <kallisti> like cashew (hahaha get it because it's not an actual nut?)
07:20:43 <oerjan> eek i have unleashed the american hordes
07:20:57 <quintopia> no just the georgia hordes
07:21:00 <kallisti> oerjan: boiled peanuts aren't even really a completely American thing.
07:21:01 <oerjan> ah
07:21:18 <kallisti> I could probably tell a New Yorker to eat some boiled peanuts and they'd be like "wat"
07:21:26 <quintopia> but yeah dont knock it til youve tried it man
07:21:53 <kallisti> oerjan: it's just common in places where peanuts are grown. mainly in the south.
07:21:59 <quintopia> georgi is the peanut state. we get to decide what peanuts are best
07:22:20 <kallisti> we actually don't grow the kind of peanuts that are supposedly best for boiling
07:22:30 <kallisti> Valencia is supposed to be better than Runners. we grow Runners.
07:23:11 <kallisti> oerjan: eating boiled peanuts is kind of like... eating some kind of shellfish
07:23:20 <kallisti> but with peanut instead of fish meats.
07:23:21 <quintopia> i dont actually know anything about peanuts
07:23:22 <quintopia> so
07:23:25 <quintopia> you lost me there
07:23:31 <pikhq_> oerjan: Roasted is by far the more common thing in America.
07:23:33 <oerjan> oh well it's probably all that crazy mad scientist GWC's fault
07:23:41 <quintopia> yeah man
07:23:45 <quintopia> gwc is the shit
07:24:06 <kallisti> mad peanut scientists...
07:24:12 <pikhq_> Peanut butter, fuck yeah.
07:24:18 <oerjan> he'd have invented more but he disappeared in his peanut oil powered time machine
07:24:30 <kallisti> oerjan: peanut oil is awesome btw
07:24:33 <quintopia> but the best mad food scientist is clearly robert c baker
07:25:32 <quintopia> kallisti: lets ship oerjan some boiled peanuts in a can. i know its not as good as fresh, but maybe it would be enough to sway him?
07:25:41 <kallisti> quintopia: it's a shame that oerjan probably doesn't know the joy of deep-fried chicken in peanut oil.
07:25:44 <oerjan> quintopia: sounds like a fowl guy
07:25:45 <kallisti> quintopia: per. haps
07:26:13 <quintopia> ill buy the can if youll cover shipping
07:26:20 <kallisti> asshole
07:26:36 <pikhq_> Incidentally, oerjan, "deep-fried *" is as American as you can get.
07:27:33 <oerjan> pikhq_: also scottish, i hear
07:27:44 <kallisti> they borrowed it from us. :P
07:27:44 <pikhq_> Yeah.
07:28:07 <kallisti> quintopia: you've had chik-fil-a yes?
07:28:58 <kallisti> apparently they're like... common in many US states now.
07:29:34 <pikhq_> Some people have issues with funding anti-gay organisations, though.
07:29:57 <kallisti> pikhq_: I knew they were Christian based but not anti-gay
07:30:00 <oerjan> sometimes you have to think how many things we take for granted were actually invented by someone
07:30:12 <oerjan> (nearly all of them)
07:30:16 <kallisti> oerjan: woah dude
07:30:20 <kallisti> I had never thought of it that way.
07:30:28 * kallisti mind blown.
07:30:51 <pikhq_> kallisti: They're *American* Christian based. The only Christians in America that are in any way loud about it hate gay people so much. (and, of course, make regular trips to the nearest gloryhole)
07:31:29 <kallisti> looooooool
07:31:40 * kallisti consults the yellow pages for the nearest gloryhole.
07:32:01 * kallisti googled for: gloryholes near Jasper, GA
07:32:01 <oerjan> sic transit gloria mundi
07:33:04 <kallisti> hmmm "glory hole rock shop" in Jasper, GA
07:33:07 <kallisti> not quite what I wanted.
07:33:16 <kallisti> also what is a "rock shop"
07:33:37 <quintopia> kallisti: yes i have had chik-fil-a
07:33:42 <quintopia> i dont anymore tho
07:34:02 <quintopia> because of what pikhq said
07:37:17 <quintopia> also i hate their marketing dept forever
07:37:41 <kallisti> heh
07:37:52 <quintopia> bbef iz sketchy eh?
07:38:22 <quintopia> fuck no. mechanically separated chicken is
07:47:26 <pikhq_> "Sketchy" understates.
07:50:52 <Sgeo> kallisti, UPDOOT
08:00:25 <kallisti> anyone else like starcraft2?
08:02:43 -!- zzo38 has quit (Remote host closed the connection).
08:31:05 -!- GreaseMonkey has quit (Quit: The Other Game).
08:34:10 <oerjan> kallisti: just post the question to reddit.com/r/doesanybodyelse >:)
08:54:48 <kallisti> @hoogle forkIO
08:54:49 <lambdabot> Control.Concurrent forkIO :: IO () -> IO ThreadId
08:54:49 <lambdabot> GHC.Conc.Sync forkIO :: IO () -> IO ThreadId
08:54:49 <lambdabot> GHC.Conc forkIO :: IO () -> IO ThreadId
08:58:04 <kallisti> > forever . putStrLn $ "Hello, World!"
08:58:05 <lambdabot> Ambiguous type variable `b' in the constraint:
08:58:06 <lambdabot> `Data.Typeable.Typeable b...
08:58:22 <kallisti> what's up with this?
09:00:11 <oerjan> :t forever . putStrLn
09:00:14 <lambdabot> forall b. String -> IO b
09:00:37 <oerjan> ah right, it's because of the ambiguous result type
09:00:46 <kallisti> oerjan: works fine in ghci though.
09:00:50 <oerjan> > forever . putStrLn $ "Hello, World!" :: IO ()
09:00:52 <lambdabot> <IO ()>
09:01:05 <kallisti> does ghci assume IO () or something?
09:01:13 <oerjan> kallisti: it's because ghci doesn't do a typeclass check on b
09:01:15 <oerjan> i think
09:01:36 <oerjan> because it doesn't have a Show instance for IO
09:01:36 <kallisti> why does lambdabot?
09:01:39 <kallisti> oh.
09:01:49 <kallisti> aaaaaah
09:02:00 <oerjan> while lambdabot uses Typeable b => Show (IO b) in order to print that <IO ()> thing
09:02:29 <kallisti> right
09:03:03 <kallisti> oerjan: is there any standard type that doesn't derive Typeable
09:03:07 <oerjan> ghci just runs the action, and possibly prints the result with the right option set
09:03:11 <kallisti> specifically one that lambdabot exposes?
09:03:22 <oerjan> hm
09:04:00 <kallisti> pretty much any type can derive typeable
09:04:05 <oerjan> :t typeRef
09:04:06 <lambdabot> Not in scope: `typeRef'
09:04:07 <kallisti> so it would probably be hard to find.
09:04:28 <oerjan> kallisti: not if it has type arguments of kind not *
09:04:42 <oerjan> but you can still write a custom one then
09:04:49 <oerjan> :t typeRep
09:04:49 <kallisti> @hoogle a -> Int#
09:04:49 <lambdabot> Prelude id :: a -> a
09:04:50 <lambdabot> Data.Function id :: a -> a
09:04:50 <lambdabot> GHC.Exts breakpoint :: a -> a
09:04:50 <lambdabot> Not in scope: `typeRep'
09:04:57 <oerjan> argh
09:05:02 <oerjan> @src Typeable
09:05:02 <lambdabot> Source not found. My brain just exploded
09:05:05 <kallisti> @hoogle Int -> Int#
09:05:06 <lambdabot> Prelude (!!) :: [a] -> Int -> a
09:05:06 <lambdabot> Data.List (!!) :: [a] -> Int -> a
09:05:06 <lambdabot> Data.Sequence index :: Seq a -> Int -> a
09:05:20 <oerjan> @hoogle Typeable a => a -> b
09:05:21 <lambdabot> Control.OldException throwDyn :: Typeable exception => exception -> b
09:05:22 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
09:05:22 <lambdabot> Data.Dynamic toDyn :: Typeable a => a -> Dynamic
09:06:12 <oerjan> > undefined :: IO (StateT IO Int)
09:06:13 <lambdabot> `Control.Monad.Trans.State.Lazy.StateT GHC.Types.IO GHC.Types.Int' is not a...
09:06:27 <oerjan> oops
09:06:32 <oerjan> > undefined :: IO (StateT Int IO Int)
09:06:32 <lambdabot> No instance for (Data.Typeable.Typeable1
09:06:33 <lambdabot> (Control.Monad...
09:06:36 <oerjan> ah
09:06:40 <oerjan> kallisti: well that's one
09:06:52 <kallisti> um... StateT?
09:07:02 <oerjan> :k StateT
09:07:02 <lambdabot> * -> (* -> *) -> * -> *
09:07:18 <kallisti> maybe it just doesn't have an instance?
09:07:25 <oerjan> as you see it has a * -> * argument, so cannot be derived, and nobody presumably bothered to make one
09:08:02 <oerjan> well let me check
09:08:37 <kallisti> > [1..10]
09:08:38 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
09:08:40 <oerjan> yeah looks like it
09:09:33 <oerjan> the new polymorphic kind extension will probably make it possible to derive any Typeable eventually
09:09:44 <kallisti> :t for
09:09:45 <lambdabot> Not in scope: `for'
09:09:51 <oerjan> heh
09:09:58 <kallisti> seems strange to call it forM
09:10:00 <kallisti> when there's no for
09:10:03 <oerjan> i've been thinking sometimes that for seems to be missing :P
09:10:22 <oerjan> it would just be flip map, presumably
09:10:27 <kallisti> @let for = flip map
09:10:28 <lambdabot> Defined.
09:10:29 <kallisti> oerjan: indeed
09:10:47 <kallisti> > for [1..10] (\x -> show x)
09:10:49 <lambdabot> ["1","2","3","4","5","6","7","8","9","10"]
09:10:52 <kallisti> I am teh leet Python programmer
09:12:52 <kallisti> :t newIORef
09:12:53 <lambdabot> Not in scope: `newIORef'
09:12:58 <kallisti> :t writeIORef
09:12:59 <lambdabot> Not in scope: `writeIORef'
09:13:22 <kallisti> lambdabot: "no imperative programming allowed"
09:13:50 <oerjan> well you can use ST, i think
09:13:56 <oerjan> :t newSTRef
09:13:57 <lambdabot> forall a s. a -> ST s (STRef s a)
09:14:19 <kallisti> ah good
09:18:27 <kallisti> :t runST
09:18:27 <lambdabot> forall a. (forall s. ST s a) -> a
09:22:39 <kallisti> > let var = newSTRef; get = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); return (get x) } in factorial 5
09:22:39 <lambdabot> Inferred type is less polymorphic than expected
09:22:40 <lambdabot> Quantified type variable...
09:22:46 <kallisti> huh?
09:24:44 <kallisti> oerjan: help
09:27:51 <fizzie> > let var = newSTRef; get = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); get x } in factorial 5
09:27:52 <lambdabot> 120
09:28:59 <kallisti> oh...
09:29:02 <kallisti> :t readSTRef
09:29:03 <lambdabot> forall s a. STRef s a -> ST s a
09:29:04 <kallisti> right. :P
09:30:01 <kallisti> > let var = newSTRef; return = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); returm x } in factorial 5
09:30:01 <lambdabot> Not in scope: `returm'
09:30:06 <kallisti> > let var = newSTRef; return = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); return x } in factorial 5
09:30:07 <lambdabot> 120
09:30:20 <kallisti> probably the most elegant way to write factorial.
09:31:05 <kallisti> as a Python coder writing Haskell, I find that forM [1..n] (x *=) is a tad unreadable
09:31:11 <kallisti> x *= what exactly?
09:31:14 <kallisti> makes no sense.
09:31:48 <fizzie> As a corollary to "most elegant way to write factorial",
09:31:50 <fizzie> > let var = newSTRef; return = readSTRef; bestIdEver x = runST $ do { y <- var x; return y } in bestIdEver 42
09:31:51 <lambdabot> 42
09:33:28 <kallisti> yes quite nice.
09:34:04 <kallisti> of course a real Haskell programmer never leaves ST
09:34:16 <fizzie> If only (x *= ◌) were the same thing as (x *=), then it'd make sense; x *= the hole.
09:34:22 <kallisti> so really we should omit the runST and simply pass in STRefs
09:35:37 <kallisti> well, actually just omit the runST
09:35:50 <kallisti> passing STRefs would be if you want pass-by-reference
09:41:44 <kallisti> oerjan: fizzie: would be nice to have a Ref typeclass with the var function
09:41:50 <kallisti> instance Ref IO IORef where var = newIORef
09:42:18 <kallisti> though I think I like the name ref better.
09:42:39 <Sgeo> Why are some things called Refs and others called Vars?
09:43:02 <kallisti> variable implies a syntactical feature
09:43:27 <kallisti> x = 2
09:43:46 <kallisti> x is the variable. YOu access via the syntax of the programming language, simply by writing its name.
09:44:10 <fizzie> An MVar is not any more syntactic than an IORef though.
09:44:15 <Sgeo> That's great, except it doesn't explain why Haskell has MVars and TVars
09:44:19 <kallisti> oh right
09:44:30 <kallisti> dunno. different people write different code? :P
09:44:37 <kallisti> unless they're in the report
09:44:38 <fizzie> "MRef" sounds too much like a dog barking?
09:45:21 <kallisti> maybe if you're a norseman
09:45:44 <fizzie> Well, I mean, "arf!"
09:46:12 <kallisti> "mref mref mref!"
09:48:09 <kallisti> I wonder if anyone actually uses ST
09:49:26 <fizzie> It's funny how the descriptions of IORef and STRef both use the word "variable" ("A mutable variable in the IO monad", "a mutable variable in state thread") while neither of the descriptions for MVar and TVar do ("mutable location", "Shared memory locations").
09:49:53 <kallisti> it would be better if MVar and TVar said "reference"
09:55:51 -!- oerjan has quit (Quit: leaving).
10:32:00 <kallisti> > deriv (\x -> x*sin(X^2 + 1)) 5
10:32:00 <lambdabot> Not in scope: data constructor `X'
10:32:05 <kallisti> > deriv (\x -> x*sin(x^2 + 1)) 5
10:32:05 <lambdabot> 33.10852456691162
10:32:23 <kallisti> > deriv (\x -> x*sin(x^2 + 1)) (x :: Expr)
10:32:23 <lambdabot> 1 * sin (x * x + 1) + x * ((1 * x + x * 1) * cos (x * x + 1))
10:33:10 <kallisti> if only it reduced properly...
10:33:41 <kallisti> > x + x == 2*x
10:33:42 <lambdabot> False
10:33:46 <kallisti> :(
10:40:42 <Sgeo> > x == x
10:40:43 <lambdabot> True
10:40:46 <Sgeo> :/
10:40:50 <Sgeo> > 1 * x == x
10:40:50 <lambdabot> False
10:41:11 <Sgeo> > 0 * x
10:41:12 <lambdabot> 0 * x
10:41:15 <Sgeo> > x * 0
10:41:16 <lambdabot> x * 0
10:41:49 <Sgeo> Maybe == should just be undefined
10:41:52 <Sgeo> > x > y
10:41:53 <lambdabot> False
10:41:59 <Sgeo> > x < y
10:41:59 <lambdabot> True
10:42:09 <Sgeo> Ords of genius.
10:43:36 <kallisti> Sgeo: well it kind of can't make sense unless Expr is demonstrating a particular kind of Num instance.
10:44:03 <kallisti> if all Num instances were fields, you could make a number of reductions that make two Exprs with different textual representations equivalent.
10:44:39 <Sgeo> Huh, didn't think about that
10:48:50 <kallisti> but unless you do some pretty complicated symbolic reasoning you're not really going to get an Eq instance that comes anywhere close to basically determine if two arbitrary expressions are equal.
10:49:10 <kallisti> under the assumption that the Num instance that Expr is representing behaves like real numbers.
10:51:23 -!- monqy has quit (Quit: hello).
10:59:44 <kallisti> :t extract
10:59:45 <lambdabot> forall source. (Extract source) => (Int, Int) -> source -> source
10:59:52 -!- ais523 has joined.
10:59:53 <kallisti> ..no
10:59:58 <kallisti> :t (=>=)
10:59:59 <lambdabot> Not in scope: `=>='
11:05:28 -!- ais523 has quit (Ping timeout: 258 seconds).
11:06:04 -!- ais523 has joined.
11:06:05 -!- ais523 has quit (Changing host).
11:06:05 -!- ais523 has joined.
11:08:19 <fizzie> > replicateM 3 "<>="
11:08:20 <lambdabot> ["<<<","<<>","<<=","<><","<>>","<>=","<=<","<=>","<==","><<","><>","><=",">...
11:08:24 <fizzie> They should have all of those.
11:09:05 <fizzie> ["<<<","<<>","<<=","<><","<>>","<>=","<=<","<=>","<==","><<","><>","><=",">><",">>>",">>=",">=<",">=>",">==","=<<","=<>","=<=","=><","=>>","=>=","==<","==>","==="] -- that's not such a long list. And I'm sure they can figure out some meanings for everyone.
11:09:21 <fizzie> For example <>< could make some fish swim across the screen.
11:13:11 <kallisti> <=> is compare ala Perl.
11:14:35 <fizzie> ><> makes the fishes go the other way.
11:15:27 <kallisti> :t deriv
11:15:28 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
11:15:34 <kallisti> I'm confused as to where this function comes from
11:15:38 <kallisti> I can't find it anywhere on the interwebs
11:18:05 <fizzie> http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Dif.html ?
11:22:52 <Deewiant> ( http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=%28Dif%20a%20-%3E%20Dif%20b%29%20-%3E%20a%20-%3E%20b )
11:29:28 <ais523> <<= and =<< are from Feather
11:29:48 <ais523> retroactive and proactive assignment, respectively
11:30:03 <ais523> (proactive assignment does nothing right now, but controls when in time a retroactive assignment happens)
11:31:23 <kallisti> > read "1" :: Dif Int
11:31:24 <lambdabot> 1~~
11:32:00 <kallisti> > df $ read "1" :: Dif Int
11:32:00 <lambdabot> 0~~
11:32:06 <kallisti> er
11:32:15 <kallisti> > df (read "1" :: Dif Int)
11:32:16 <lambdabot> 0~~
11:32:18 <kallisti> okay.
11:34:04 <fizzie> >, ≫, ⋙; greater-than, much greater-than, very much greater-than; sadly I think that's where they gave up. (Though there is ⫸, the triple nested greater-than.)
11:35:17 <fizzie> Certainly there would have been more intensifiers to go with. Really very much greater-than, honestly really very much greater-than, I'm not even kidding how much greater-than, etc.
11:35:22 <kallisti> > iterate df (sin (dVar pi :: Dif Expr))
11:35:23 <lambdabot> [sin pi~~,1 * cos pi~~,1 * (1 * negate (sin pi))~~,1 * (1 * (1 * negate (co...
11:35:40 <kallisti> > map val $ iterate df (sin (dVar pi :: Dif Expr))
11:35:41 <lambdabot> [sin pi,1 * cos pi,1 * (1 * negate (sin pi)),1 * (1 * (1 * negate (cos pi))...
11:36:12 <kallisti> the value, first derivative, second derivative, etc
11:37:15 -!- Phantom_Hoover has joined.
11:39:36 <kallisti> > map val $ iterate df (sin (dVar x))
11:39:37 <lambdabot> [sin x,1 * cos x,1 * (1 * negate (sin x)),1 * (1 * (1 * negate (cos x))),1 ...
11:43:04 <kallisti> > let y = dVar x in map val $ iterate df (x^3 + x^2 + x + 5)
11:43:05 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif a'
11:43:05 <lambdabot> against inferr...
11:43:18 <fizzie> It would be better if it printed [sin x,cos x,negate (sin x),negate (cos x),sin x,cos x,even you,should be,able to,figure it,out by,now,...]
11:43:25 <kallisti> > let loly = dVar x in map val $ iterate df (x^3 + x^2 + x + 5)
11:43:26 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif a'
11:43:27 <lambdabot> against inferr...
11:43:35 <kallisti> fizzie: asshole :P
11:43:43 <kallisti> but yeah I agree.
11:43:48 <kallisti> I HAVE TALKED ABOUT THIS PREVIOUSLY
11:44:03 <ais523> > (sin x * sin x) + (cos x * cos x)
11:44:04 <lambdabot> sin x * sin x + cos x * cos x
11:44:08 <fizzie> About making the bot more of an asshole? Yes, I think it would fit in better here.
11:44:30 <ais523> > deriv (\a -> (sin a * sin a) + (cos a * cos a)) x
11:44:31 <lambdabot> 1 * cos x * sin x + sin x * (1 * cos x) + (1 * negate (sin x) * cos x + cos...
11:44:58 <kallisti> > let y = dVar x in map val $ iterate df (y^3 + y^2 + y + 5)
11:44:59 <lambdabot> [x * x * x + x * x + x + 5,(1 * x + x * 1) * x + x * x * 1 + (1 * x + x * 1...
11:45:06 <kallisti> gross/
11:45:17 <kallisti> > let y = dVar x in map val $ iterate df (y^2 + y + 5)
11:45:18 <lambdabot> [x * x + x + 5,1 * x + x * 1 + 1,1 * 1 + 1 * 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
11:49:00 <fizzie> All those are so begging for a Mathematica FullSimplify[].
11:49:09 <fizzie> Or "FoolSimplify", as we tend to call it.
11:49:12 <fizzie> Well, tended.
11:50:03 <kallisti> :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) = dVar x in nDerivs
11:50:04 <lambdabot> parse error on input `='
11:50:11 <kallisti> :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs
11:50:12 <lambdabot> forall a a1. (Num a, Num a1) => (Dif a -> Dif a1) -> a -> Int
11:50:35 <kallisti> :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2)
11:50:36 <lambdabot> forall a. (Num a) => a -> Int
11:50:42 <kallisti> > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2)
11:50:45 <lambdabot> Overlapping instances for GHC.Show.Show (a -> GHC.Types.Int)
11:50:45 <lambdabot> arising fro...
11:50:50 <kallisti> oh...
11:51:03 <kallisti> > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 5
11:51:04 <lambdabot> 4
11:51:10 <kallisti> > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 0
11:51:11 <lambdabot> 1
11:51:19 <kallisti> so it might not be accurate when you pass 0 :P
11:51:39 <kallisti> > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 1
11:51:40 <lambdabot> 4
11:52:17 <kallisti> > (0 :: Expr) == 0
11:52:17 <lambdabot> True
11:52:49 <kallisti> > let nDerivs f = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2)
11:52:51 <lambdabot> 4
11:52:54 <kallisti> there we go.
11:53:00 <kallisti> @let nDerivs f = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x))
11:53:01 <lambdabot> Defined.
11:53:08 <kallisti> > nDerivs (^3)
11:53:09 <lambdabot> 5
11:53:13 <kallisti> > nDerivs sin
11:53:17 <lambdabot> mueval-core: Time limit exceeded
11:54:35 <kallisti> > nDerivs (const 1)
11:54:36 <lambdabot> 2
11:54:42 <kallisti> erm
11:55:13 <kallisti> > iterate df (const 1 (dVar x))
11:55:14 <lambdabot> [1~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~...
11:55:25 <kallisti> oh, okay.
11:55:39 <kallisti> right, I want it to count the first 0.
11:58:22 <kallisti> er, no...
11:58:25 <kallisti> not right.
11:58:30 <kallisti> @undefinee
11:58:31 <kallisti> @undefine
11:58:35 <kallisti> @unlet
11:58:36 <lambdabot> Defined.
11:58:37 <kallisti> @halp
11:58:37 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
11:58:49 <kallisti> @help undefine
11:58:50 <lambdabot> undefine. Reset evaluator local bindings
11:59:15 <kallisti> @let nDerivs f = length . takeWhile (/= 0) . iterate df $ (f (dVar x))
11:59:16 <lambdabot> Defined.
11:59:23 <kallisti> > nDerivs (const 2)
11:59:24 <lambdabot> 1
11:59:26 <kallisti> much better.
11:59:34 <kallisti> > nDerivs (^2)
11:59:36 <lambdabot> 3
12:15:00 <kallisti> @let (++) = mappend
12:15:01 <lambdabot> <local>:3:0:
12:15:01 <lambdabot> Multiple declarations of `L.++'
12:15:01 <lambdabot> Declared at: .L.hs:97...
12:15:06 <kallisti> > (++)
12:15:06 <lambdabot> Overlapping instances for GHC.Show.Show (m -> m -> m)
12:15:06 <lambdabot> arising from a use...
12:15:11 <kallisti> :t (++)
12:15:12 <lambdabot> forall m. (Monoid m) => m -> m -> m
12:15:26 <kallisti> :t nDerivs
12:15:27 <lambdabot> forall a. (Num a) => (Dif Expr -> Dif a) -> Int
12:17:39 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:24:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
12:40:12 -!- Phantom_Hoover has joined.
13:02:08 -!- zzo38 has joined.
13:06:44 -!- boily has joined.
13:12:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
13:13:42 -!- Patashu has joined.
13:13:52 <Patashu> I'm staying up to solve this http://www.canyoucrackit.co.uk/15b436de1f9107f3778aad525e5d0b20.js my life is interesting
13:14:35 -!- Taneb has joined.
13:23:02 -!- Phantom_Hoover has joined.
13:37:14 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:37:24 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
13:44:51 <Taneb> Hello
13:48:15 <boily> hi!
13:48:27 <Taneb> How are you, boily?
13:50:38 -!- Phantom_Hoover has joined.
13:51:28 <Taneb> Hello, Phantom_Hoover
13:58:18 -!- ais523 has quit (Ping timeout: 244 seconds).
13:58:49 -!- ais523 has joined.
14:08:31 <zzo38> Once, I was in a hotel, they required keycards for the elevator but I didn't have any so I went to the top floor by stairs and knocked on the door (it is my hotel room, but some other people too, and they had the keycard). And if any hotel has elevator that requires a keycard and then you only go to your floor, then it makes it less secure than one that does not require a keycard
14:12:30 <Taneb> Once, I was in a hotel, booked under the name of "random"
14:16:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
14:24:16 <fizzie> Quite often the doors in the stairwell that lead to the actual floors also require a keycard.
14:26:13 <fizzie> Once I worked at a place where you would get trapped in the stairwell if you forgot your card; the door from the offices to the stairs could be opened with a button from the inside, but the exit door at the bottom required a card always. I have a vague feeling that's against all kinds of emergency exit rules and whatnot.
14:26:54 <fizzie> Normally those things are always constructed so that if you forget the key, you can at least exit the building.
14:27:08 <fizzie> (And then freeze to death outside, but that's not relevant.)
14:27:46 <zzo38> In the place I was in, a keycard was not required to open the doors in the stairwell.
14:29:03 -!- Phantom_Hoover has joined.
14:47:33 <Phantom_Hoover> Oh dear, I am become join spam.
14:48:19 <Gregor> lambdabot: Any spammy, useless messages for me?
14:49:22 <Phantom_Hoover> how is it december help
14:49:29 <Phantom_Hoover> 2011, we hardly knew ye.
14:49:53 <Taneb> Dungeons of Dredmor just crashed
14:51:18 <fizzie> Does it print out "Suddenly, the dungeon collapses" too?
15:03:30 <zzo38> Why can I not access this? http://www.freesoftwaremagazine.com/articles/encouraging_next_generation_hackers_part_1_raspberry_pi_25_computer
15:12:08 <Vorpal> Taneb: linux?
15:12:14 <Vorpal> Taneb: and segfault?
15:12:17 <Taneb> Vorpal, yes
15:12:26 <Taneb> And maybe, what do they look like?
15:12:29 <Vorpal> Taneb: if so there is a patch to the data files that might help (helped for me). Let me find the link
15:13:36 <Vorpal> Taneb: http://community.gaslampgames.com/threads/statue-of-inconsequentia-crash.1318/ (for me it happened when changing dungeon level)
15:13:59 <Vorpal> there is a patch a bit down
15:14:06 <Vorpal> (post #4)
15:14:38 <Vorpal> <fizzie> Does it print out "Suddenly, the dungeon collapses" too? <-- for me it just plain segfaulted
15:23:39 <Phantom_Hoover> Suddenly, the dungeon segfaults!
15:30:24 <kallisti> wow I apparently didn't have the network package installed.
15:30:28 <kallisti> shows you how much Haskell I've been programming..
15:31:08 <kallisti> hmmm, I still get these really weird linker errors from importing Network.Socket
15:31:12 <kallisti> dunno what's up with that.
15:36:24 <kallisti> does anyone else find Network.Socket a little cumbersome?
15:37:55 <Vorpal> Taneb: did it work?
15:38:26 <Taneb> Can't find the install directory..
15:39:28 -!- copumpkin has quit (Quit: Leaving...).
15:39:37 -!- copumpkin has joined.
15:45:14 <ais523> "Shopping for a Dyson DC25 Ball All-Floors Upright Vacuum Cleaner might not appear like a big deal, however it does require a bit of planning."
15:45:54 <ais523> aha: "Probably you aspire to realize what is certainly my favourite [http://google.com internet search engine]."
15:46:00 <ais523> the spambots spamming Google are back again
15:46:33 <ais523> (as in, advertising Google)
16:03:47 -!- Taneb has quit (Quit: Leaving).
16:12:25 -!- elliott has joined.
16:13:04 <elliott> 22:22:05: <ais523> <mikehart> Just noticed my email in my account settings was 0.034064395384923 I asume that was the issue.
16:13:06 <elliott> ais523: context?
16:13:21 <ais523> elliott: the phpBB gone mad
16:13:28 <elliott> thought so
16:13:35 * elliott tries to figure out how that could possibly work
16:13:43 <ais523> where it changed all the posts into md5 hashes, it apparently changed email addresses into (double-precision, by the look of it) floating point numbers
16:14:05 <ais523> (it's unclear what they're md5 hashes /of/, btw; kind-of hard to reverse them)
16:14:08 <elliott> :D
16:14:13 <elliott> did you try googling them?
16:14:19 <ais523> I picked one at random, no results
16:14:22 <ais523> I didn't google any others
16:15:32 <coppro> hrm
16:15:38 <coppro> why did I get an email sent to all employees
16:15:50 -!- derrik has joined.
16:16:10 <elliott> perhaps you are an employee
16:16:47 -!- Slereah has joined.
16:18:17 -!- Slereah_ has quit (Ping timeout: 240 seconds).
16:18:27 <ais523> sending an email to all employees would be impressive
16:18:38 <ais523> almost like sending an email to every internet user, just slightly less global
16:18:38 <coppro> elliott: No, I pay them.
16:18:56 <ais523> presumably sending an email to absolutely everyone would be the easiest way to accomplish an "email-all-employees" requirement
16:19:00 <coppro> (them being the university)
16:19:30 <elliott> ais523: that would be fun to try
16:22:29 <coppro> ais523: You'd also need to get them all email addresses
16:22:47 <ais523> coppro: that's trivial
16:22:50 <elliott> MWAHAHAHA, IN HWN AGAIN
16:22:54 <ais523> sending them their logins would be the hard part
16:23:27 <coppro> ais523: Why not just make an email address for everyone?
16:23:52 <kallisti> > fix . (++) $ "hi"
16:23:53 <lambdabot> "hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi...
16:23:54 <ais523> coppro: that's what I was implying
16:24:05 <elliott> hmm, github's language detection is rather imperfect
16:24:10 <ais523> the hard part being, giving everyone access to their account
16:24:21 <elliott> ais523: just let everyone access every account
16:24:29 <Vorpal> #ifdef USE_DIRECT3D
16:24:29 <Vorpal> glClear(GL_COLOR_BUFFER_BIT);
16:24:29 <Vorpal> #endif
16:24:33 <Vorpal> this seems so very wrong
16:24:36 <elliott> Vorpal: :D
16:24:36 <ais523> elliott: then how is it an account specific to the person?
16:24:46 <ais523> Vorpal: awesome, please give more context
16:24:48 <elliott> ais523: nobody would stop calling <webmail service> personal email just because there's a backdoor!
16:24:56 <Vorpal> ais523: can't. Darwinia source code.
16:24:57 <elliott> ais523: they might claim it's a /bad/ personal email service, though
16:25:03 <ais523> Vorpal: err, not in the code itself
16:25:13 <ais523> but as to why that's written
16:25:29 <ais523> (I'm guessing that there's some sort of OpenGL/Direct3D wrapper that can call either, and is based on OpenGL function names)
16:25:38 <Vorpal> elliott: anyway I gave up getting darwinia to compile... Linux implementation files are way out of date with shared headers (like when there is foo_win.cpp and foo_sdl.cpp)
16:25:47 <Vorpal> <ais523> but as to why that's written <-- don't know yet
16:26:02 <elliott> Vorpal: I bet AII compiles perfectly on Linux.
16:26:14 <Vorpal> elliott: give me the source right now then
16:26:27 <elliott> Vorpal: Nobody can do that; light speed, dude.
16:26:38 <Vorpal> elliott: well within 10 minutes
16:26:41 <elliott> You can't even access Darwinia's code instantly.
16:26:44 <kallisti> > let fixify f = fix . f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify
16:26:45 <lambdabot> Overlapping instances for GHC.Show.Show (f (a -> a) -> f a)
16:26:45 <lambdabot> arising from...
16:26:49 <kallisti> :t let fixify f = fix . f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify
16:26:50 <lambdabot> forall (f :: * -> *) a. (Functor f) => f (a -> a) -> f a
16:26:57 <elliott> Vorpal: What, so if it's bigger than you can download in 10 minutes it doesn't count?
16:27:23 <Vorpal> elliott: no to the start of downloading. I expect the rest within at most a few days
16:27:30 <Vorpal> anything more is just silly
16:27:43 <elliott> Vorpal: I refuse to let my reputation depend on the reliability of your internet connection
16:27:49 <kallisti> @hoogle (Functor f) =
16:27:49 <lambdabot> Parse error:
16:27:49 <lambdabot> (Functor f) =
16:27:49 <lambdabot> ^
16:27:55 <kallisti> @hoogle (Functor f) => f (a -> a)
16:27:55 <lambdabot> Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT
16:27:55 <lambdabot> Data.Generics.Aliases unGQ :: GenericQ' r -> GenericQ r
16:27:55 <lambdabot> Data.Generics.Twins gzipWithT :: GenericQ (GenericT) -> GenericQ (GenericT)
16:28:00 <elliott> kallisti: impossible
16:28:09 <kallisti> wat
16:28:14 <elliott> Functor provides no way to get an f a for any a
16:28:24 <elliott> without already having an f b and a (b -> a), ofc
16:28:28 <elliott> :t pure id
16:28:29 <lambdabot> forall a (f :: * -> *). (Applicative f) => f (a -> a)
16:29:57 <kallisti> elliott: well obviously it's not unpossible because I just used 3 functions that satisfy that type. I assume you mean it's impossible to generally do that.
16:30:28 <Vorpal> ais523: there seem to be no such wrappers
16:30:33 <elliott> there is no value foo :: (Functor f) => f (a -> a)
16:30:35 <kallisti> I was hoogling for functions I could fixify as above.
16:30:38 <Vorpal> ais523: it just makes no sense
16:30:42 <ais523> Vorpal: they'd probably be in a third-party library
16:30:44 <elliott> your type was (Functor f) => f (a -> a) -> f a
16:30:50 <Vorpal> ais523: well I looked in lib/
16:30:51 <kallisti> correct
16:30:56 <ais523> it could be a typo for ifndef, I guess
16:31:01 <elliott> kallisti: anyway, that's just because lambdabot (.) = fmap
16:31:10 <kallisti> correct.
16:31:17 <ais523> but I doubt it, or the d3d version wouldn't even compile with the typo in, so it'd have been caught easily
16:31:32 <elliott> Vorpal: um, maybe the Direct3D version just uses OpenGL for some things?
16:31:53 <kallisti> :t let fixify f = fix Prelude.. f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify
16:31:54 <lambdabot> forall a a1. (a -> a1 -> a1) -> a -> a1
16:31:58 <elliott> ais523: arguable, considering the code doesn't compile on linux in the first place
16:32:01 <Vorpal> elliott: maaybe. But I'm pretty sure that mixing them is in general a bad idea and unlikely to work
16:32:16 <ais523> elliott: it'd have happened on every platform, unless that bit's Linux-specific too
16:32:24 <Vorpal> it was shared
16:32:24 <kallisti> @@ @hoogle @type let fixify f = fix Prelude.. f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify
16:32:25 <lambdabot> Data.IntMap fold :: (a -> b -> b) -> b -> IntMap a -> b
16:32:26 <lambdabot> Data.IntMap foldr :: (a -> b -> b) -> b -> IntMap a -> b
16:32:26 <lambdabot> Data.IntMap foldr' :: (a -> b -> b) -> b -> IntMap a -> b
16:32:33 <elliott> ais523: USE_DIRECT3D would not be set on Linux
16:32:43 <Vorpal> elliott: it was in the classical software raytrace loading screen of darwinia
16:32:46 <elliott> ais523: I'm just saying that the code obviously has errors not in the released binaries for whatever reason
16:32:46 <Vorpal> if you remember that one
16:32:57 <ais523> elliott: ah, OK
16:33:05 <kallisti> @hoogle (a -> a1 -> a1)
16:33:05 <lambdabot> Prelude seq :: a -> b -> b
16:33:05 <lambdabot> GHC.Conc.Sync par :: a -> b -> b
16:33:05 <lambdabot> GHC.Conc par :: a -> b -> b
16:33:20 <elliott> kallisti: flip const
16:34:07 <ais523> what does seq do, and is it something incredibly unhaskellish?
16:34:16 <elliott> you know what seq does
16:34:24 -!- derrik has quit (Quit: reconnect).
16:34:29 <kallisti> ais523: it's kind of unhaskellish?
16:34:33 <elliott> either that, or are on a campaign to wilfully forget as much Haskell as possible :P
16:34:40 <ais523> elliott: well, the obvious meaning is "force a and return b"
16:34:41 <elliott> ais523: seq _|_ a = _|_; seq a b = b
16:34:46 <ais523> ah, OK
16:34:47 <elliott> that's not its meaning
16:34:53 <elliott> (force a and return b)
16:34:57 <elliott> it does break parametricity a bit though
16:34:59 -!- derrik has joined.
16:35:06 <elliott> but not unsalvagably
16:35:09 <ais523> I was thinking "a can't possibly have a side effect, so how would seq be different from flip const"
16:35:20 <ais523> and the answer is that it's an infinite-loop-checker?
16:35:23 <kallisti> it does have a side effect of sorts.
16:35:31 <elliott> kallisti: no, it doesn't
16:35:35 <elliott> _|_ isn't a side-effect
16:35:35 <ais523> now I'm just trying to work out why it'd be useful
16:35:41 <elliott> ais523: it's not an infinite loop checker
16:35:45 <elliott> ais523: it's _|_ if either argument is bottom
16:35:47 <elliott> else the right argument
16:36:01 <kallisti> elliott: forcing the evaluation of a thunk is pretty side-effecty
16:36:07 <ais523> well, bottom = infinite loop or exception
16:36:07 <elliott> kallisti: there are no thunks
16:36:15 <kallisti> elliott: ah, of course.
16:36:16 <elliott> kallisti: by that definition, beta-reduction is a side-effect
16:36:22 <elliott> because it mutates the thunk in many implementations
16:37:55 <elliott> ais523: anyway, it's useful because seq is strict in both of its arguments
16:37:58 <kallisti> elliott: well it forces a in a context where it would not normally be forced.
16:38:04 <elliott> as opposed to flip const, which is strict in only its latter
16:38:12 <elliott> kallisti: "not normally"? plenty of functions are strict in both their arguments
16:38:17 <elliott> seq is just the only polymorphic one
16:38:18 <ais523> elliott: oh, so in practice it makes the code run faster by being strict?
16:38:22 <kallisti> elliott: yes, those functions do things to their arguments
16:38:26 <ais523> (strictness doesn't always speed up code, but can do in some contexts)
16:38:26 <kallisti> elliott: seq only "does things" to one of them.
16:38:34 <elliott> ais523: that's why you would use it, yes
16:38:41 <elliott> ais523: it's a common misconception that seq must evaluate its first argument first
16:38:44 <elliott> but that's not guaranteed at all
16:38:47 <elliott> GHC provides pseq for that purpose
16:39:04 <ais523> elliott: it can evaluate the second argument, then the first, then return the second, I guess
16:39:06 <elliott> (some people think it /should/ guarantee that, but that breaks even more properties :))
16:39:13 <ais523> and that's the only other possible evaluation order
16:39:13 <elliott> ais523: indeed. and GHC sometimes _does_ do this.
16:39:21 <elliott> kallisti: wrong; id is strict in its argument too
16:39:33 <kallisti> elliott: ... -_-
16:39:35 <elliott> seq "does the same thing| to both its arguments
16:39:36 <elliott> "
16:39:43 <elliott> i'm not being purposefully dense, you're just wrong
16:40:13 <kallisti> elliott: under normal Haskell semantics, if you accept two arguments and return the second one, the first one is never evaluated
16:40:16 <kallisti> with seq it is..
16:40:17 <kallisti> elliott: happy?
16:40:31 <kallisti> elliott: id is irrelevant because it returns its one argument
16:40:42 <elliott> kallisti: actually no, the first one could be evaluated too. but you are still wrong even ignoring that:
16:40:50 <elliott> all you are saying is that (\a b -> b) is not strict in its first argument
16:40:56 <kallisti> yes
16:40:58 <elliott> because that is the only such function that meets your criteria
16:41:00 <kallisti> that is what I'm saying.
16:41:05 <elliott> but nobody claimed seq was like (\a b -> b) "but special"
16:41:18 <kallisti> elliott: ...is it not?
16:41:22 <elliott> also, "doing something special" is not a side-effect.
16:42:07 <kallisti> @src seq
16:42:07 <lambdabot> Source not found. You untyped fool!
16:43:36 <ais523> elliott: is there any observable difference between id being strict and id being lazy?
16:43:39 <kallisti> help where's the part where seq only uses un-side-effectful Haskell code to do what it does.
16:43:43 <elliott> ais523: id can't possibly be lazy
16:43:56 <elliott> kallisti: similarly, (+) on Int has side-effects, because you can't implement it in Haskell
16:44:01 <elliott> in fact -- brace yourself
16:44:05 <elliott> EVERY PRIMITIVE HAS SIDE-EFFECTS!
16:44:11 <ais523> elliott: well, lazy id would do the say thing as strict id, right down to evaluation order
16:44:12 <elliott> Turns out Haskell is impure because kallisti is an idiot.
16:44:18 <kallisti> elliott: that is not what I meant.
16:44:21 <elliott> ais523: no, it wouldn't; there is no lazy id, there are no lazy functions of type (a -> a)
16:44:21 <ais523> so the two are the same
16:44:25 <elliott> ais523: it's an incoherent question
16:44:43 <ais523> elliott: have you seen the hardware implementation of call-by-name id? it is quite undeniably lazy
16:44:57 <elliott> ais523: no shit, "lazy" changes meanings in different evaluation orders
16:45:06 <ais523> ah, OK
16:45:07 <elliott> ais523: but call-by-name is a valid strategy for Haskell too
16:45:11 <elliott> ais523: id is still strict in it
16:45:23 <kallisti> elliott: side-effects involve modifying state that is not part of the result of the expression. seq does this. clearly (+) does not do that.
16:45:27 <elliott> you can't /observe/ its supposed "laziness" at all
16:45:34 <elliott> and it's the semantics that matter, not the operations
16:45:35 <ais523> elliott: except with a multimeter, right
16:45:46 <elliott> kallisti: seq DOES NOT MODIFY ANY STATE
16:46:01 <elliott> you can implement haskell in fucking term rewriting
16:46:04 <elliott> where there is no
16:46:04 <elliott> mutable
16:46:05 <ais523> arguably, I'd say that id is both strict /and/ lazy
16:46:05 <elliott> state
16:46:11 <elliott> ais523: id _|_ = _|_
16:46:13 <elliott> ais523: Q.E.D.
16:46:27 <kallisti> elliott: seq would still be a side-effect in those circumstances.
16:46:41 <elliott> kallisti: you do not understand what a side-effect is.
16:47:10 <ais523> elliott: well, "lazy id" is always forced instantly; that's why it's the same as being strict
16:47:33 <elliott> ais523: you're bringing details like "force" into it that don't exist at this layer
16:47:33 <ais523> aren't all unary operators either strict, or ignore their argument, with your definition?
16:47:40 <kallisti> elliott: I think you just have a very weird notion of what a side-effect is.
16:47:43 <elliott> ais523: of course
16:47:50 <elliott> ais523: if you don't ignore an argument, you force it
16:47:57 <ais523> ah, OK
16:48:03 <kallisti> elliott: clearly seq makes an /observable/ difference to the operational semantics of the program that /has nothing to do with its return value/
16:48:13 <ais523> anyway, I agree with your definition of "strict", but am not convinced it's the opposite of "lazy"
16:48:18 <elliott> kallisti: ah! what you mean is that since
16:48:20 <elliott> seq a b
16:48:21 <elliott> isn't the same as b
16:48:24 <elliott> seq has a side-effect
16:48:26 <elliott> by the same token
16:48:27 <elliott> a+1
16:48:29 <elliott> is not the same as a
16:48:32 <kallisti> elliott: uh, what?
16:48:34 <elliott> therefore, again (+) on Int has a side-effect!
16:48:36 <elliott> OMG!
16:48:38 <kallisti> no. I'm sorry, but you're stupid.
16:48:47 <elliott> kallisti: but seriously though, you can stop bothering, because you're... wrong
16:48:57 <elliott> and have no idea what you're talking about
16:48:58 <elliott> so
16:48:58 <elliott> yeah
16:49:10 <kallisti> elliott: nice strawman though. "oh you actually meant this. now I will demonstrate that what I said is wrong."
16:49:22 <elliott> hey guys, I heard I/O is relevant to the definition of turing completeness
16:49:29 <kallisti> it's not.
16:49:47 <elliott> reaaaaaaally? I think I'll argue the issue for a few hours with people who know more about the topic than me
16:49:58 <kallisti> elliott: and this is relevant to what we're talking about how?
16:50:09 <kallisti> elliott: it basically just sounds like a personal attack to me. how silly.
16:50:18 <ais523> kallisti: I think your problem is, that seq a b is designed to calculate a value depending on both a and b; the fact that the value is always the same as b, doesn't change the fact that it depends on a
16:50:25 <elliott> the relevance is that you should really just drop it before this log becomes more personally embarrassing to you in the future
16:50:28 <elliott> it wasn't intended as an argument
16:50:30 <ais523> you could implement seq on integers as seq i j = (i-i) + j
16:50:48 <elliott> ais523: I've occasionally explained seq as just magically knowing the constructors of every data-type
16:50:49 <elliott> and looking like
16:50:52 <elliott> seq (A_ ) x = x
16:50:55 <elliott> seq (B _ _) x = x
16:50:56 <elliott> ...
16:51:02 <elliott> *A _
16:51:06 <ais523> and the only reason you think that the generalised seq is side-effecty is that there's no way to get a polymorphic version
16:51:13 <elliott> that kind of breaks down for functions, but so does seq :)
16:51:25 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:51:26 <elliott> (seq lets you distinguish _|_ and (const _|_))
16:51:34 <elliott> (another thing kallisti has been confused about, incidentally)
16:51:36 <kallisti> ais523: seq /doesn't/ calculate a value based on a and b though. only b.
16:51:41 <ais523> kallisti: yes it does
16:51:50 <ais523> the value depends on a by definition
16:52:03 <ais523> thus, optimising out the dependency on a, just because the return value isn't affected by it, is wrong
16:52:18 <ais523> if you're going to call the dependency a side-effect, you have a pretty weird definition of side-effect
16:52:29 <kallisti> it has nothing to do with dependency.
16:52:49 <ais523> elliott: how strict is the first argument to seq? does it only go as far as the first constructor, or does it figure out the value "all the way"?
16:52:53 <ais523> kallisti: yes it does
16:52:59 <elliott> ais523: WHNF, like always
16:53:03 <ais523> why does (a+b) go into an infinite loop if either a or b are infinite loops?
16:53:12 <elliott> ais523: (so, to the first constructor or a lambda, basically)
16:53:18 <kallisti> ais523: strictness and laziness has nothing to do with side-effects, first of all.
16:53:20 <ais523> elliott: ah, OK
16:53:23 <elliott> kallisti: exactly
16:53:29 <elliott> that's why seq isn't side-effectful
16:53:43 * elliott is just going to keep stating facts rather than actually trying to engage in futile argument.\
16:53:44 <kallisti> elliott: it has to do with what is computed and what is returned.
16:53:46 <elliott> s/\\$//
16:54:02 <ais523> elliott: I admit that seq still feels a bit non-Haskellish to me, but that's not because of side effects, but because it does weird things to eval order
16:54:13 <elliott> ais523: a lot of people don't like it
16:54:22 <kallisti> elliott: and in this case, seq returns b and forced a. this is /precisely/ why you can't simply optimize seq away because it performs a side-effect unrelated to just evaluating b and returning that.
16:54:23 <elliott> ais523: Haskell 1.4 was better
16:54:28 <elliott> ais523: it had class Eval a where seq :: a -> b -> b
16:54:32 <elliott> and e.g. functions weren't an instance
16:54:40 <elliott> and every ADT got an Eval instance for free
16:54:51 <elliott> that was good because fully polymorphic functions didn't get parametricity fucked up
16:55:06 <elliott> kallisti: you will never understand why you are wrong until you stop thinking in terms of operations like "forced".
16:55:15 <ais523> kallisti: do you think that (\a b->(b-b)+a)::(Int -> Int -> Int) can be optimised to const::(Int -> Int -> Int)?
16:55:16 <elliott> there are two levels: semantics, which do _not_ involve things like "forcing" and "mutation"
16:55:22 <elliott> and implementation, which SOMETIMES INVOLVES MUTATION
16:55:27 <ais523> elliott: I like finding misconceptions via binary search
16:55:36 <elliott> GHC mutates TONS of things in the process of evaluating COMPLETELY PURE (even seq-less, if you think that matters) expressions
16:55:38 <ais523> whether in someone else's view or mine
16:55:53 <elliott> that does NOT MEAN THOSE EXPRESSIONS MUTATE, the expressions DO NOT HAVE SIDE-EFFECTS
16:56:04 <elliott> and that is the last I will say on the matter, unless I decide to be a jerk from the sidelines again
16:56:13 <elliott> which is, admittedly, fairly likely.
16:56:29 <kallisti> ais523: uh, no?
16:56:31 <elliott> ais523: I'm not sure that works in the general case
16:56:36 <ais523> kallisti: why not?
16:56:40 <elliott> ais523: (binary search, I mean)
16:56:47 <elliott> sometimes people are just wrong all the way down
16:56:56 <ais523> elliott: indeed, but you can often narrow it down somewhat
16:57:12 <kallisti> ais523: because they don't do the same thing? you're making the assumption that Num obeys any kind of laws.
16:57:24 <kallisti> such as b-b == fromIntegral 0
16:57:31 <ais523> kallisti: did you see the ::Int?
16:57:36 <kallisti> oh, no.
16:57:38 <kallisti> I'm blind.
16:57:49 <ais523> right, in general you couldn't, because of polymorphism
16:58:02 <ais523> > (\a b->(b-b)+a) x y
16:58:03 <lambdabot> y - y + x
16:58:07 <kallisti> ais523: I mean, it /could/ be optimized. it would do the same thing.
16:58:07 <ais523> as expected
16:58:14 <ais523> kallisti: no it wouldn't
16:58:20 <kallisti> ais523: er, well, right.
16:58:21 <ais523> what if a is fix id?
16:58:21 <kallisti> strictness
16:58:31 <ais523> so, would you say that b-b has side effects?
16:58:35 <kallisti> no?
16:58:45 <ais523> now, if I flip that expression
16:58:58 <ais523> to (\a b->(a-a)+b)::(Int->Int->Int)
16:59:03 -!- Phantom_Hoover has joined.
16:59:04 <ais523> I have seq::(Int->Int->Int)
16:59:08 <ais523> but I can't optimise it to flip const
16:59:19 <ais523> based on your arguments
16:59:23 <kallisti> ais523: I have never once claimed that seq can be optimized to flip const
16:59:24 <ais523> also, no side effects
16:59:29 <ais523> ah, OK
16:59:40 <ais523> <kallisti> elliott: and in this case, seq returns b and forced a. this is /precisely/ why you can't simply optimize seq away because it performs a side-effect unrelated to just evaluating b and returning that.
16:59:41 <kallisti> ais523: in fact, the reason it can't is because seq has side-effects...
16:59:45 <ais523> you claimed that it's because it has side effects
16:59:56 <ais523> whereas I've given an implementation on the integers that doesn't have side effects
16:59:57 <kallisti> correct.
16:59:59 <ais523> and yet still can't be optimised away
17:00:02 -!- azaq23 has joined.
17:00:05 <kallisti> ais523: okay?
17:00:12 <kallisti> ais523: there are other reasons things can't be optimized.
17:00:19 <ais523> kallisti: agreed
17:00:25 <ais523> and those are the reasons that seq can't be optimised
17:00:49 <ais523> elliott: hmm, I suppose that this means that in languages like Agda, it's possible for an integer to be lazily positive
17:00:50 <kallisti> ais523: oh I see what you're saying.
17:00:58 <ais523> as in, forced only so far as being positive, rather than to its actual value
17:01:05 <ais523> because integers actually have type constructors there
17:01:33 <kallisti> ais523: but I still think seq performs a side-effect, because side-effects are related to computing expressions
17:02:04 <ais523> hmm, now I'm wondering what seq /does/ do if given a function
17:02:09 <ais523> > seq id 0
17:02:09 <lambdabot> 0
17:02:18 <ais523> presumably just ignores it
17:02:20 <ais523> > seq (fix id) 0
17:02:24 <lambdabot> mueval-core: Time limit exceeded
17:02:28 <ais523> or, hmm, no
17:02:45 <ais523> wait, fix id isn't afunction
17:02:49 <ais523> *a function
17:02:53 <ais523> :t fix id
17:02:53 <lambdabot> forall a. a
17:03:04 <elliott> <ais523> elliott: hmm, I suppose that this means that in languages like Agda, it's possible for an integer to be lazily positive
17:03:09 <ais523> > seq (const $ fix id) 0
17:03:10 <elliott> ais523: Agda doesn't have _|_
17:03:10 <lambdabot> 0
17:03:17 <elliott> so the concept of laziness/strictness doesn't exist
17:03:23 <ais523> elliott: indeed, it was a different "this"
17:03:28 <ais523> and I meant in terms of implementation
17:03:33 <ais523> it's not user-observable at all
17:03:40 <kallisti> ais523: things are naturally forced in Haskell semantics by being referring to in functions, or being evaluated in some way. so being forced as the result of being used in an expression is not a side-effect. I'm not saying "forcing values is a side-effect" I'm saying "forcing values that you don't use as part of an expression that you return is a side-effect"
17:03:55 <ais523> hmm, does this mean Agda is sub-TC?
17:04:04 <ais523> (as in, you can't write a program without a proof it terminates?)
17:04:12 <elliott> kallisti: nothing is forced in Haskell's semantics.
17:04:22 <ais523> kallisti: well, the argument a /is/ used, that's the point
17:04:27 <ais523> it's not used for anything, but it's still used
17:04:31 <elliott> ais523: Agda is sub-TC, yes.
17:04:36 <elliott> unless you turn off the termination checker.
17:04:46 <ais523> imagine it being subtracted from itself via a generic magic subtraction operation, that returns 0 if you subtract anything from itself
17:05:21 <kallisti> ais523: ...it's not relevant to the computed result. in much the same way that the act of writing bytes to a file is irrelevant to the result of writeFile
17:05:27 <elliott> not true
17:05:32 <elliott> the result of writeFile is an IO action
17:05:37 <elliott> and all that action does is write bytes to af ile
17:05:38 <elliott> *a file
17:05:59 <elliott> writeFile is also referentially transparent, i.e. returns the same action for the same arguments always
17:06:22 <ais523> elliott: well, writeFile doesn't have side effects; unsafePerformIO does when given its return value, but writeFile doesn't
17:07:16 <ais523> one possible implementation of IO actions would be as C programs, wouldn't it? and you could define all the functions returning IO actions, and things like >>= for IO, as operating on those programs
17:07:31 <ais523> and then unsafePerformIO and the runtime would simply run the programs produced
17:07:32 <elliott> ais523: yep
17:07:37 <ais523> (it'd be quite a bad impl, but it'd be possible)
17:08:00 <elliott> ais523: on that riff: http://conal.net/blog/posts/the-c-language-is-purely-functional (in response to people claiming Haskell is purely-functional)
17:08:19 <ais523> wait, /another/ elliott?
17:08:28 <elliott> conal elliott is the more famous elliott
17:08:41 <elliott> there's him and another two elliotts in #haskell at the best of times
17:08:44 <elliott> well, not the best of times
17:08:47 <elliott> because one of them is elliottcable
17:09:39 <ais523> hmm, it's a little wrong; #undef is a purely functional operation in CPP, because it serves to end a scope, rather than do anything fundamentally side-effecty
17:10:15 <elliott> ais523: nah, you can use it out of order
17:10:22 <ais523> really? ouch
17:10:27 <elliott> of course you can...
17:10:33 <kallisti> ...I think you guys have a weird definition of side-effect.
17:10:36 <kallisti> or well
17:10:38 <kallisti> probably a normal one
17:10:40 <kallisti> but the normal one is weird.
17:10:51 <elliott> kallisti: your definition is incoherent
17:11:01 <elliott> and makes Haskell-even-without-seq side-effectful
17:11:10 <elliott> (you would claim it isn't, but that's because your definition is self-contradictory)
17:11:17 <elliott> *it doesn't
17:11:28 <kallisti> Haskell-even-without-seq is side-effectful...
17:11:51 <elliott> *-and-IO
17:11:55 <ais523> "Having a baby is often a occasion whenever you must be careful because the outcomes of earning a mistake might be serious."
17:12:02 <elliott> ais523: :D
17:12:20 <kallisti> kallisti: well, "pure Haskell without side-effects" has no side-effects, yes.
17:12:28 <kallisti> erm
17:12:32 <kallisti> s/kallisti/elliott/
17:12:33 <ais523> kallisti: did you just nickping yourself?
17:12:38 <kallisti> kallisti: yes
17:12:48 <ais523> wow, elliott and kallisti must be the same person, it's the only way to explain such a mistake
17:12:54 <kallisti> we are.
17:12:56 <elliott> kallisti: indeed it doesn't: unfortunately, your definition makes it so
17:13:00 <ais523> (and the only conclusion from that is, that that person is trolling me really heavily)
17:13:15 <elliott> you just don't realise it, because you don't know what your definition is, because you don't understand it, because you don't understand purity
17:13:26 <kallisti> elliott: ah, because forcing a value as the result of computing it is a side-effect, under my definition, yes?
17:13:34 <kallisti> (except it's not, but please explain)
17:13:39 <ais523> with a definition of "same arguments always gives same results", seq is perfectly pure
17:13:45 <ais523> as its result depends only on its arguments a and b
17:13:54 <elliott> kallisti: nah, ais523 has taken the torch of actually attempting to explain to you _why_ you're wrong
17:13:57 <elliott> by which I mean
17:14:00 <elliott> I gave up
17:14:21 <ais523> elliott: to be fair, I didn't understand at the start of the conversation, I just figured it out pretty quickly
17:14:22 <kallisti> as I said, my claim is not that "forcing a value is a side-effect"
17:14:39 <kallisti> because values are forced all the time when no side-effects are occuring.
17:14:44 <elliott> ais523: yes, such wonders tend to happen when you start without assuming you're correct :P
17:14:58 <ais523> Haskell is something that I don't find very intuitive
17:15:37 <ais523> although I've occasionally wished for Haskelly monads elsewhere (especially for error handling); you could do it in OCaml but you have to lazify everything by hand, which is irritating
17:16:12 <ais523> (where lazifying is the easiest way to make statements into what are effectively Either actions)
17:17:21 <kallisti> ...but how is...
17:17:40 <kallisti> "this action is performed, and is completely irrelevant to the output of the expression"
17:17:43 <kallisti> not a side-effect?
17:17:46 <elliott> "action is performed"
17:18:02 <ais523> elliott: I disagree, as I disagree with the "completely irrelevant"
17:18:04 <elliott> evaluating a pure value is not an "action" in the side-effectful sense
17:18:12 <ais523> clearly, you get an infinite loop if a is an infinite loop
17:18:15 <ais523> thus, a isn't irrelevant
17:18:21 <elliott> ais523: pinging the wrong person, dude
17:18:31 <ais523> elliott: I was disagreeing with where you found the error
17:18:38 <ais523> well, hmm
17:18:39 <elliott> ais523: I was just disagreeing with a different part.
17:18:49 -!- MSleep has changed nick to MDude.
17:18:49 <ais523> I think his statement's wrong even without the "action is performed" part
17:19:04 <elliott> ais523: Were I trying to actually deconstruct kallisti's argument in its entirety, I would have to start by rejecting everything he says, as it is worded in terms of imperative machine operations, not Haskell's pure, timeless semantics.
17:19:18 <elliott> He would almost certainly interpret this as me trolling him with stubbornness.
17:19:21 <elliott> So I don't.
17:19:31 <kallisti> elliott: ah okay so forcing a in a `seq` b is not an action, it's just an observable effect of evaluating the expression that has nothing to do with the return value. got it.
17:19:32 <ais523> kallisti: hmm, to put it a different way: you seem to think that side-effects are defined in terms of "X happens and is not useful", rather than in terms of "X happens and does something not reflected by the return value Y"
17:19:40 <elliott> kallisti: It has to do with the return value.
17:19:47 <elliott> If a is _|_, then the return value is _|_.
17:20:05 <kallisti> ais523: you seem to be thinking that I'm thinking the opposite of what I'm thinking, and then go on to describe exactly what I'm thinking to be the thing I should be thinking.
17:20:08 <kallisti> this has happened twice now.
17:20:40 <ais523> elliott: hmm, is it sanely possible to add T to a language as well as _|_?
17:20:53 <elliott> ais523: heh
17:21:04 <elliott> ais523: well, _|_ is the value of every type, I guess T is the value of no type?
17:21:07 <ais523> then your values would be lattice elements, I think
17:21:11 * elliott PRO MATHEMATICIAN
17:21:13 <elliott> ais523: they are
17:21:14 <kallisti> elliott: hmm...
17:21:18 <elliott> ais523: ordered by well-definedness
17:21:24 <elliott> ezyang has a long post series about this
17:21:30 <ais523> yep, that makes sense
17:21:35 <ais523> well, it's only a semilattice in Haskell
17:21:45 <elliott> right
17:21:55 <kallisti> elliott: can Haskell talk about _|_ in that way...
17:22:02 <ais523> _|_ is a suitable value for use in any context; whereas T is a value which, if a context accepts that, it'll accept anything
17:22:05 <elliott> kallisti: We're not Haskell, we're humans.
17:22:15 <elliott> Haskell's semantics most definitely involve _|_.
17:22:32 <ais523> kallisti: in general, _|_ is meaningful, but it's impossible for a computer to always detect its existence
17:22:38 <kallisti> elliott: does haskell's semantics involve side-effects?
17:22:42 <ais523> (and you get an infinite loop if it's there, but can't)
17:23:06 <kallisti> ais523: right
17:23:15 <elliott> kallisti: No, although the description of how IO is executed does.
17:23:20 <kallisti> hmmm, okay.
17:23:41 <ais523> I think ghc can detect a few trivial instances of _|_ existing
17:23:44 <ais523> > 1 / 0
17:23:44 <elliott> kallisti: Note that there is a function which causes the evaluation of its first argument when forced, but does _not_ return _|_ when the first argument is _|_.
17:23:45 <lambdabot> Infinity
17:23:50 <ais523> > 1::Int / 0
17:23:51 <lambdabot> Only unit numeric type pattern is valid
17:24:00 <ais523> > (1::Int) / 0
17:24:01 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
17:24:01 <lambdabot> arising from a use o...
17:24:11 <ais523> > (1::Int) / (0::Int)
17:24:12 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
17:24:12 <lambdabot> arising from a use o...
17:24:13 <elliott> kallisti: That function is "start evaluating the first argument in another thread, and return the second immediately" (it is only distinguishable from flip const when talking about operations, not semantics).
17:24:16 <elliott> kallisti: AKA par.
17:24:21 <elliott> kallisti: It is also completely pure and has no side-effects.
17:24:26 <kallisti> elliott: how about... operational semantics?
17:24:28 <ais523> > (1::Int)
17:24:29 <lambdabot> 1
17:24:40 <ais523> aha, division isn't defined on the integers in Haskell
17:24:45 <ais523> that… makes a lot of sense, actually
17:24:51 <elliott> kallisti: So if you think the return value matters as to whether something has a "side-effect", you're wrong.
17:24:54 <elliott> ais523: `div`
17:24:59 <ais523> > 1 `div` 0
17:25:00 <elliott> :t div
17:25:00 <lambdabot> *Exception: divide by zero
17:25:00 <lambdabot> forall a. (Integral a) => a -> a -> a
17:25:10 <ais523> elliott: and I was thinking that "integer division" quite possibly was
17:25:18 <elliott> :t quot
17:25:19 <lambdabot> forall a. (Integral a) => a -> a -> a
17:25:22 <ais523> so yes, that's a _|_ that was caught by the compiler, as it's a pretty easy one to catch
17:25:26 <elliott> > 1 `quot `0
17:25:26 <lambdabot> *Exception: divide by zero
17:25:50 <ais523> hmm, now I'm wondering what split-complex numbers are used for
17:25:53 <elliott> ais523: N.B. there are actually semantics given to Haskell's _|_s to explain exceptions
17:26:04 <kallisti> elliott: question: is a guaranteed to evaluate before seq returns?
17:26:20 <ais523> elliott: you mean exceptions are the reason that _|_ is part of the semantics rather than inferred from it?
17:26:25 <elliott> kallisti: Mu.
17:26:26 <ais523> I'm not entirely convinced I've parsed your line correctly
17:26:30 <elliott> kallisti: You're talking about operations again.
17:26:33 <elliott> ais523: no
17:26:42 <elliott> ais523: I just mean that we don't say exceptions work because the compiler magically realised _|_ was there
17:26:45 <kallisti> elliott: operations seem particularly relevant to side-effects.
17:26:54 <elliott> ais523: OTOH, the semantics for exceptions are really kind of gnarly, so we ignore them when not talking about exceptions :P
17:26:58 <ais523> heh
17:27:04 <elliott> kallisti: yep, good thing there are no side-effects nivolved
17:27:05 <ais523> I take it you can't catch an exception in Haskell?
17:27:13 <ais523> (I'd be pretty surprised if you could, all things considered)
17:27:17 <elliott> ais523: of course you can
17:27:18 <ais523> (but Haskell surprises me a lot)
17:27:19 <elliott> they'd be useless otherwise
17:27:23 <ais523> oh, ouch
17:27:30 <elliott> :t Control.Exception.catch
17:27:31 <lambdabot> forall a e. (GHC.Exception.Exception e) => IO a -> (e -> IO a) -> IO a
17:27:32 <kallisti> elliott: in the denotational semantics, sure. but in the operational semantics... yes?
17:27:42 <elliott> :t Control.Exception.throw
17:27:42 <lambdabot> forall e a. (GHC.Exception.Exception e) => e -> a
17:27:43 <elliott> :t Control.Exception.throwIO
17:27:44 <lambdabot> forall e a. (GHC.Exception.Exception e) => e -> IO a
17:27:53 <elliott> kallisti: haskell has no mandatory operational semantics
17:28:02 <elliott> implementations can do what they will.
17:28:09 <elliott> if an implementation proves the first argument to seq always terminates, it can discard it.
17:28:13 <ais523> elliott: oh, catch is an IO action? that makes a lot of sense too
17:28:37 <elliott> ais523: *a function taking an IO action and a function taking an exception and returning an IO action, and returning an IO action
17:28:38 <elliott> but yes
17:28:56 <ais523> elliott: well, I knew I was going to get a correction like that
17:29:06 <ais523> I should have said that a given try…catch block is an IO action
17:29:14 <kallisti> elliott: I think I'm done pressing the issue.
17:29:28 <elliott> kallisti: which is not the same thing as realising you're wrong, I presume?
17:29:37 <kallisti> elliott: this conversation has been enlightening. but no, I don't think I'm wrong on this one.
17:29:45 <elliott> you are
17:29:52 <kallisti> elliott: but I do understand your perspective now. so cool.
17:30:08 <elliott> it's not
17:30:09 <elliott> a perspective
17:30:14 <elliott> it's literally objectively correct
17:30:25 <elliott> you won't find a single person who knows their shit who will agree with you
17:30:40 <kallisti> that's fine.
17:31:15 <elliott> yeah. you alone will be correct in your tower of oh shit, somehow I'm a haskell expert by pure chance
17:31:19 <ais523> elliott: to be fair, I'm not sure that the concept that kallisti calls "side-effect" is useless, but I'm not sure how easy it is to define
17:31:22 <elliott> ais523: Prelude Control.Exception> catch (print (1 `div` 0)) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException))
17:31:22 <elliott> Exception: divide by zero
17:31:24 <ais523> and it needs a better name
17:31:49 <ais523> elliott: the IO action was the bit I missed when thinking through it
17:31:51 <kallisti> ais523: elliott: my concept involves operations. (aka what actually happens when you implement things)
17:31:57 <elliott> ais523: Haskell exceptions are interesting even then because of laziness and and ambiguity
17:32:03 <ais523> having it as an IO action means that it makes sense to say when it happens
17:32:11 <elliott> ais523: (1 `div` 0) + undefined -- which exception does this throw?
17:32:13 <elliott> divide by 0, or undefined?
17:32:15 <ais523> which gives enough context to know how to catch it
17:32:25 <ais523> elliott: depends on the impl, I guess
17:32:35 <elliott> ais523: nope, it's actually formally ambiguous
17:32:42 <elliott> I suppose an implementation could give guarantees, but it wouldn't /want/ to
17:32:52 <elliott> ais523: that's basically the reason exception-catching is in IO
17:32:58 <elliott> if not for that, it would be pure
17:33:04 <ais523> elliott: I meant unspecified, not impl-defined
17:33:07 <elliott> right
17:33:43 <elliott> ais523: Prelude Control.Exception> catch (evaluate [1,2,undefined] >> return ()) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException))
17:33:43 <elliott> Prelude Control.Exception>
17:33:50 <ais523> also, I think if catch were pure, and just caught the existence of an exception rather than a specific exception, you'd need to be careful with seq and similar things to make sure that the exception happened inside the catch rather than outside
17:33:53 <elliott> Prelude Control.Exception> catch (evaluate (undefined :: [Int]) >> return ()) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException))
17:33:53 <elliott> Exception: Prelude.undefined
17:34:25 <ais523> aha, evaluate only forced it one level
17:34:31 <elliott> (evaluate is just (\a -> a `seq` return a), except with some extra magic)
17:34:38 <elliott> (so that evaluate undefined `seq` () === ())
17:34:47 <ais523> so the first case didn't exception because it never cared about the elements of the list, just that it had a head and a tail
17:34:47 <elliott> (i.e. the evaluation only happens when you /execute/ the action)
17:35:06 <kallisti> elliott: I've basically come to the conclusion that I'm talking about something completely different. So it's not so much that I think I've PROVED EVERYONE WRONG. it's just that those people being right and me being right are irrelative
17:35:15 -!- zzo38 has quit (Remote host closed the connection).
17:35:20 <ais523> elliott: which is ofc perfectly meaningful as an IO action, because the whole point of IO actions is that they happen at a particular time
17:35:35 <elliott> kallisti: yoru concept is self-contradictory, so it's gonna need a hell of a lot of reworking to make sense.
17:35:49 <elliott> ais523: well, the point is that they have side-effects
17:35:56 <elliott> ais523: the same IO action can execute at ten different times, or none
17:36:07 <ais523> elliott: yep
17:36:17 <ais523> but each time it's executed, you can say when
17:36:27 <ais523> I think the point, even more than having side-effects, is that they execute in order
17:36:36 <ais523> but the side-effects are useful in practice ;)
17:36:46 <ais523> IO would be useful even if the universe were pure
17:36:51 <kallisti> elliott: I haven't found the contradiction. If you have it I'd like to see, but I doubt you have the patience to go down that route.
17:37:35 <ais523> (btw, I still haven't figured out how to do IO-style things meaningfully in Feather; the problem's not evaluation order, as that's trivially defined, but other problems)
17:38:06 <ais523> (it's possible to create a temporal monad that keeps track of meta-time, and it's probably a useful concept, but I want to avoid it if possible)
17:38:21 <ais523> (especially as it breaks the purity of the language)
17:41:26 <kallisti> elliott: the problem with seq _|_ b = _|_; seq a b = b is that there's no computer that can actually do that.
17:41:38 <kallisti> which, when you're talking about operational semantics, is relevant.
17:41:39 <elliott> yes there is
17:41:46 <elliott> my computer does that when I use seq
17:41:47 <elliott> and also
17:41:53 <elliott> you never claimed to be talking about operational semantics at the start of this
17:41:57 <elliott> you just said seq has side-effects
17:41:59 <elliott> so really uh
17:42:02 <elliott> shut up about this, you're wrong
17:43:01 <kallisti> elliott: I didn't realize that's what I was talking about until it became apparent that we were talking about different definitions of side-effect.
17:43:22 <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider.
17:43:31 <elliott> if only every wrong person could be so lucky
17:43:46 <kallisti> elliott: correct.
17:45:34 <Gregor> `addquote <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider.
17:45:34 <Gregor> <elliott> if only every wrong person could be so lucky
17:45:34 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
17:45:36 <Gregor> ...
17:45:38 <Gregor> Damn it
17:45:41 <HackEgo> 742) <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider.
17:45:44 <Gregor> `delquote 742
17:45:47 <HackEgo> ​*poof* <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider.
17:45:54 <elliott> Gregor: I might like it more with just that line
17:45:56 <elliott> not sure though :P
17:46:08 <Gregor> `addquote <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider. <elliott> if only every wrong person could be so lucky
17:46:10 <HackEgo> 742) <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider. <elliott> if only every wrong person could be so lucky
17:46:13 * elliott clap
17:46:18 <Gregor> @messages
17:46:18 <lambdabot> fizzie said 2h 56m 28s ago: A spammy, useless message.
17:46:30 <Gregor> @tell fizzie SPAM SPAM SPAM SPAM SPAM SPAM SPAM
17:46:31 <lambdabot> Consider it noted.
17:46:35 <Gregor> @tell fizzie FRIED EGGS AND SPAM
17:46:35 <lambdabot> Consider it noted.
17:50:16 <kallisti> elliott: does side-effect have a formal definition?
17:50:53 <elliott> referential transparency is a good one.
17:53:28 <Gregor> It blew up the moon, but no value accessible thru my references has changed.
17:54:02 <kallisti> I don't think they're equivalent (aka referential transparency <-> no side-effects )
17:54:12 <kallisti> or well, I don't think they're related in that way
17:54:14 <kallisti> not equivalent
17:54:21 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:54:23 <elliott> Gregor: Yeah, but eventually you call it so much that the computer explodes.
17:54:27 <elliott> And THEN it stops giving the same results.
17:54:58 <Gregor> This function, on certain inputs, will take more time than the shelf life of the processor. Therefore it has side effects.
17:55:11 <elliott> Gregor: TOTESg
17:55:27 <elliott> (I don't actually think referential transparency by itself = purity, and especially not "referential transparency on some hardware", but it's a start :P)
17:56:10 <elliott> kallisti: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.7800 This is apparently the most popular definition.
17:56:22 * kallisti loves popular things.
17:56:53 <Gregor> elliott: This paper should have the subtitle "Baby Don't Hurt Me"
17:57:19 <elliott> Gregor: Stretching things a bit :P
17:57:37 <Gregor> elliott: AND YET IT IS NOW STUCK IN YOUR HEAD </victory>
17:57:50 <elliott> Gregor: What is the point of turning into a tortured What Is Love reference, even if it doesn't fit at all?
17:57:52 <elliott> BABY DON'T HURT ME
17:57:54 <elliott> DON'T HURT ME
17:57:55 <elliott> NO MO'
17:58:01 * elliott wins you're welcome.
17:58:22 <Gregor> X-D
17:59:05 <ais523> elliott: that reminds me of Dan Ghica doing things like calling fork() in callbacks in order to break other people's proven security properties
17:59:15 <elliott> haha
17:59:39 <ais523> because their formal model didn't allow for /that/ sort of side effect
18:01:22 <kallisti> ais523: all programs are the side-effect of me (or my computer) creating them.
18:01:32 <kallisti> therefore: everything is side-effects.
18:02:19 <elliott> ais523: arguably, IO with concurrency should have a different monad to IO without concurrency
18:02:22 <elliott> since they're so different
18:02:42 <elliott> and a lot of things might want to take actions in the latter as arguments
18:02:52 <elliott> (with ofc sequentially :: IO a -> ConcIO a)
18:02:57 <ais523> elliott: hmm, indeed
18:03:04 <ais523> other way round too?
18:03:12 <ais523> that's also a meaningful operation
18:03:15 <elliott> no, that defeats the whole point
18:03:23 <elliott> because it lets you fork from within a sequential callback
18:03:24 <kallisti> does crashing my computer as the result of a memory link count as a side-effect? :3 it's certainly not related to the return value.
18:03:37 <ais523> elliott: but you'd have to unfork again before returning
18:03:52 <ais523> anyway, I'm about to miss a bus, so bye everyone; I'll probably be back later
18:03:55 -!- ais523 has quit (Remote host closed the connection).
18:03:59 <elliott> ais523: err? fork :: ConcIO a -> ConcIO ThreadId was the operation I was imagining ConcIO would have
18:04:09 <elliott> in addition to standard boring stuff on ThreadIds, and MVars
18:06:05 -!- MDude has quit (Ping timeout: 248 seconds).
18:06:55 -!- Phantom_Hoover has joined.
18:08:04 <kallisti> what, for some reason hackage isn't responding.
18:12:39 -!- Klisz has joined.
18:16:06 <elliott> -- Laws:
18:16:06 <elliott> -- pure x = slide (pure x) x
18:16:06 <elliott> -- slide fs f <*> slide xs x = slide (fs <*> xs) (f x)
18:16:09 <elliott> what good laws!
18:16:42 <kallisti> the first one is known as the "pure slide pure" law
18:16:51 <kallisti> and the second one is known as the "slide slide slide" law
18:17:10 <kallisti> they also double as dance moves.
18:18:01 <elliott> @pl \f g x -> f (g x) x
18:18:01 <lambdabot> flip flip id . liftM2
18:18:10 <elliott> @pl \f g h x -> f (g x) (h x)
18:18:11 <lambdabot> liftM2
18:18:24 <elliott> pure = liftM2 slide pure id
18:18:26 <elliott> I MADE IT BETTER
18:18:32 <elliott> pure = slide <$> pure <*> id
18:20:14 <kallisti> elliott: obfuscationist!
18:21:28 <kallisti> > f >>= g
18:21:29 <lambdabot> No instance for (GHC.Show.Show (m b))
18:21:29 <lambdabot> arising from a use of `M3862060386...
18:21:33 <kallisti> > f >>= g $ x
18:21:34 <lambdabot> Ambiguous type variable `a' in the constraints:
18:21:34 <lambdabot> `GHC.Show.Show a'
18:21:34 <lambdabot> a...
18:21:42 <kallisti> > f >>= g $ x :: Expr
18:21:43 <lambdabot> Ambiguous type variable `a' in the constraints:
18:21:43 <lambdabot> `GHC.Show.Show a'
18:21:43 <lambdabot> a...
18:21:53 <kallisti> > f >>= g $ x y :: Expr
18:21:54 <lambdabot> Couldn't match expected type `SimpleReflect.Expr -> a'
18:21:54 <lambdabot> against infe...
18:21:57 <kallisti> serpkweroweirowieriowetioweriwet
18:22:26 <kallisti> oh rite
18:23:54 <kallisti> :t f >>= const g
18:23:54 <lambdabot> forall (m :: * -> *) a b. (SimpleReflect.FromExpr (m a), SimpleReflect.FromExpr (m b), Monad m) => m b
18:24:06 <kallisti> > f >>= const g $ x
18:24:06 <lambdabot> Ambiguous type variable `a' in the constraint:
18:24:07 <lambdabot> `SimpleReflect.FromExpr a...
18:25:17 <kallisti> ah
18:25:20 <Phantom_Hoover> fungot!
18:25:21 <fungot> Phantom_Hoover: ' only a bit?' more voices were raised.
18:27:42 <kallisti> > (\x -> "(f " ++ x ++ ")") >>= (\x y -> "(g " ++ x ++ " " ++ y ++ ")") $ "x"
18:27:43 <lambdabot> "(g (f x) x)"
18:28:12 <kallisti> pure = pure >>= slide
18:28:17 <kallisti> elliott: ^^^
18:28:26 <elliott> oh, indeed.
18:31:55 <kallisti> I wish hackage would stop being down.
18:32:46 <elliott> -- Laws:
18:32:46 <elliott> -- fromZip . toZip = toZip . fromZip = id
18:32:46 <elliott> -- fromZip (pure x) = slide (fromZip (pure x)) x
18:32:46 <elliott> -- fromZip (toZip (slide fs f) <*> toZip slide xs x)
18:32:46 <elliott> -- = slide (fromZip (toZip fs <*> toZip xs)) (f x)
18:32:49 <elliott> my laws got even better.
18:33:10 <kallisti> what the hell.
18:33:15 <kallisti> what am I looking at.
18:33:31 <kallisti> fromZip . toZip = toZip . fromZip = id
18:33:35 <kallisti> that's a good one
18:34:31 <Sgeo> How does fromZip make sense for arbitrary arguments?
18:34:42 <Sgeo> (I'm just going by the name)
18:34:50 <elliott> class (Applicative (Zip v)) => Space v a | v -> a where
18:34:50 <elliott> -- Laws:
18:34:50 <elliott> -- fromZip . toZip = toZip . fromZip = id
18:34:50 <elliott> -- fromZip (pure x) = slide (fromZip (pure x)) x
18:34:50 <elliott> -- fromZip (toZip (slide fs f) <*> toZip slide xs x)
18:34:51 <elliott> -- = slide (fromZip (toZip fs <*> toZip xs)) (f x)
18:34:53 <elliott> data Zip v :: * -> *
18:34:55 <elliott> toZip :: v -> Zip v a
18:34:57 <elliott> fromZip :: Zip v a -> v
18:34:59 <elliott> slide :: v -> a -> v
18:35:05 <elliott> used like so:
18:35:06 <elliott> data Two = Two {-# UNPACK #-} !Double {-# UNPACK #-} !Double deriving (Show)
18:35:06 <elliott> instance Space Two Double where
18:35:07 <elliott> data Zip Two a = TwoZ !a !a
18:35:09 <elliott> toZip (Two x0 x1) = TwoZ x0 x1
18:35:11 <elliott> fromZip (TwoZ x0 x1) = Two x0 x1
18:35:13 <elliott> slide (Two _ x1) y = Two x1 y
18:35:15 <elliott> instance Functor (Zip Two) where
18:35:17 <elliott> fmap f (TwoZ x0 x1) = TwoZ (f x0) (f x1)
18:35:19 <elliott> instance Applicative (Zip Two) where
18:35:21 <elliott> pure x = TwoZ x x
18:35:22 <kallisti> http://www.textfiles.com/uploads/2001.txt I have no idea what this is but it says "Monad Hate Barrier"
18:35:23 <elliott> TwoZ f0 f1 <*> TwoZ x0 x1 = TwoZ (f0 x0) (f1 x1)
18:35:27 <kallisti> there are also 159 mentions of the word monad
18:35:51 <elliott> it's the numerical dictionary!
18:35:54 <elliott> this is amazing
18:36:12 <elliott> 2001.txt 349098
18:36:13 <elliott> Soren Greenwood's Conspiracy Theory to Explain all Other Conspiracy Theories (January 10, 2001)
18:36:47 <elliott> Sgeo: hth
18:37:33 <kallisti> elliott: wow I don't even know how to go about this...
18:37:40 <elliott> about what
18:37:45 <kallisti> about reading this thing.
18:38:04 <elliott> "*This* is Yammer's official position on the subject: our goal at Yammer is to revolutionize the way modern workers collaborate and we'll use whatever tools will allow us to iterate faster on that goal. If Scala is that tool, we'll use Scala; if Java is that tool, we'll use Java; if INTERCAL is that tool, we'll use INTERCAL. (We don't expect to have to use INTERCAL; don't worry.)"
18:38:09 <elliott> where's ais when you need him
18:38:14 <elliott> kallisti: from top to bottom, one presumes
18:39:49 <kallisti> as far as I can tell it's just putting together loose mental associations until everything becomes a conspiracy theory?
18:40:58 <kallisti> if I ever see "monad hate barrier" I know it has something to do with 151...
18:41:11 -!- derrik_ has joined.
18:41:15 -!- derrik_ has quit (Client Quit).
18:41:54 -!- derrik has quit (Ping timeout: 240 seconds).
18:45:22 -!- monqy has joined.
18:46:37 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:46:55 <kallisti> @let powerOfTwo n = length . nub $ filterM (const [True, False]) [1 .. abs n]
18:46:56 <lambdabot> Defined.
18:47:22 <kallisti> > map powerOfTwo [1..10]
18:47:24 <lambdabot> [2,4,8,16,32,64,128,256,512,1024]
18:47:34 <kallisti> elliott: behold, the most efficient way to compute powers of two.
18:48:21 <elliott> I like the abs.
18:48:35 <kallisti> it's essential.
18:49:17 <kallisti> > 2 ^ (-2)
18:49:18 <lambdabot> *Exception: Negative exponent
18:49:23 <kallisti> > 2 ** (-2)
18:49:24 <lambdabot> 0.25
18:49:31 <kallisti> > powerOfTwo -2
18:49:31 <lambdabot> Overlapping instances for GHC.Show.Show (a -> GHC.Types.Int)
18:49:31 <lambdabot> arising fro...
18:49:35 <kallisti> > powerOfTwo (-2)
18:49:37 <lambdabot> 4
18:49:40 <kallisti> SO ACCURATE
18:50:23 <kallisti> > powerOfTwo 0
18:50:24 <lambdabot> 1
18:51:51 <elliott> 07:09:19: <oerjan> apparently tunes also uses sidereal time.
18:51:55 <elliott> @tell oerjan WHAT DO YOU HAVE AGAINST GLOGBOT
18:51:55 <lambdabot> Consider it noted.
18:51:59 <elliott> *@ask oerjan WHAT DO YOU HAVE AGAINST GLOGBOT
18:52:01 <elliott> @ask oerjan WHAT DO YOU HAVE AGAINST GLOGBOT
18:52:01 <lambdabot> Consider it noted.
18:52:14 <kallisti> > let twoPower n = [recip, id] !! (fromEnum (n < 0)) . length . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10]
18:52:15 <lambdabot> Precedence parsing error
18:52:15 <lambdabot> cannot mix `GHC.List.!!' [infixl 9] and `L..'...
18:52:27 <kallisti> > let twoPower n = ([recip, id] !! (fromEnum (n < 0))) . length . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10]
18:52:27 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
18:52:28 <lambdabot> arising from a use o...
18:52:34 <kallisti> bah
18:52:54 <kallisti> > let twoPower n = ([recip, id] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10]
18:52:56 <lambdabot> [0.5,0.25,0.125,6.25e-2,3.125e-2,1.5625e-2,7.8125e-3,3.90625e-3,1.953125e-3...
18:52:59 <kallisti> ...
18:53:11 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10]
18:53:12 <lambdabot> [2.0,4.0,8.0,16.0,32.0,64.0,128.0,256.0,512.0,1024.0]
18:53:23 <kallisti> much better
18:53:42 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. n] in map twoPower [1..10]
18:53:43 <lambdabot> [2.0,4.0,8.0,16.0,32.0,64.0,128.0,256.0,512.0,1024.0]
18:53:44 -!- MSleep has joined.
18:53:46 <kallisti> erm... now even twice as good!
18:53:49 -!- MSleep has changed nick to MDude.
18:54:05 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower -2
18:54:05 <lambdabot> Overlapping instances for GHC.Show.Show ([a] -> [a1])
18:54:06 <lambdabot> arising from a use...
18:54:10 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in twoPower -2
18:54:11 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a1)
18:54:11 <lambdabot> arising from a use of ...
18:54:13 <kallisti> jserjgiuweriuwehriuwheriuhdfiuhweruihweiuhweiruhweriuhwetiuweht
18:54:16 <olsner> too pointy, make it more pointless
18:54:18 -!- ais523 has joined.
18:54:24 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in (twoPower -2)
18:54:24 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a1)
18:54:24 <lambdabot> arising from a use of ...
18:54:27 <kallisti> olsner: I'm afraid
18:54:32 <kallisti> > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in twoPower (-2)
18:54:33 <lambdabot> 0.25
18:54:37 <kallisti> I swear I can program guys.
18:54:53 <kallisti> @pl (\n -> ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n])
18:54:53 <lambdabot> ap ((. (genericLength . nub . filterM (const [True, False]))) . ([id, recip] !!) . fromEnum . (< 0)) (enumFromTo 1 . abs)
18:55:25 <ais523> doing a conditional by indexing a list? how Pythonic
18:55:44 <elliott> 07:29:57: <kallisti> pikhq_: I knew they were Christian based but not anti-gay
18:55:48 <elliott> kallisti: http://en.wikipedia.org/wiki/Chick-fil-A#Religious_and_political_views
18:55:56 <elliott> ais523: <elliott> "*This* is Yammer's official position on the subject: our goal at Yammer is to revolutionize the way modern workers collaborate and we'll use whatever tools will allow us to iterate faster on that goal. If Scala is that tool, we'll use Scala; if Java is that tool, we'll use Java; if INTERCAL is that tool, we'll use INTERCAL. (We don't expect to have to use INTERCAL; don't worry.)"
18:55:56 <elliott> <elliott> where's ais when you need him
18:56:20 -!- derrik has joined.
18:56:21 <ais523> elliott: I don't expect them to have to use INTERCAL either
18:56:38 <kallisti> ais523: I've used that idiom in several languages actually.
18:56:59 <ais523> kallisti: most languages have a perfectly usable ternary
18:57:07 <kallisti> NOPE LAME
18:57:14 <ais523> OCaml has if/then/else; I imagine the same works in Haskell
18:57:32 <kallisti> !perl print (("kill self", "stay alive")[int(rand(6)) > 0])
18:57:33 <Sgeo> >deriv powerOfTwo x
18:57:34 <EgoBot> stay alive
18:57:38 <Sgeo> > deriv powerOfTwo x
18:57:39 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif b'
18:57:39 <lambdabot> against inferr...
18:57:56 <kallisti> @undefine
18:58:08 <kallisti> @let powerOfTwo = ap ((. (genericLength . nub . filterM (const [True, False]))) . ([id, recip] !!) . fromEnum . (< 0)) (enumFromTo 1 . abs)
18:58:09 <lambdabot> Defined.
18:58:28 <kallisti> > deriv powerOfTwo (x :: Expr)
18:58:28 <lambdabot> No instance for (GHC.Enum.Enum
18:58:29 <lambdabot> (Data.Number.Dif.Dif Sim...
18:58:43 <kallisti> > deriv powerOfTwo 4
18:58:44 <lambdabot> No instance for (GHC.Enum.Enum (Data.Number.Dif.Dif a))
18:58:44 <lambdabot> arising from a u...
18:59:01 <kallisti> wow amazing
18:59:46 <kallisti> > length . filterM (const [True, False] $ replicate 4 0
18:59:47 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
18:59:52 <kallisti> > length . filterM (const [True, False]) $ replicate 4 0
18:59:53 <lambdabot> 16
19:01:10 -!- Phantom_Hoover has joined.
19:01:26 <kallisti> > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing] in powerOfTwo 4
19:01:27 <lambdabot> <no location info>: parse error on input `]'
19:01:33 <kallisti> > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo 4
19:01:34 <lambdabot> 16.0
19:01:38 <kallisti> > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo -4
19:01:38 <lambdabot> Overlapping instances for GHC.Show.Show (GHC.Types.Int -> a)
19:01:39 <lambdabot> arising fro...
19:01:44 <kallisti> > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo (-4)
19:01:46 <lambdabot> 6.25e-2
19:01:53 <kallisti> > 1/16
19:01:54 <lambdabot> 6.25e-2
19:01:56 <kallisti> ...okay.
19:02:08 <kallisti> @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing
19:02:08 <lambdabot> <local>:2:0:
19:02:08 <lambdabot> Multiple declarations of `L.powerOfTwo'
19:02:09 <lambdabot> Declared at: ...
19:02:12 <kallisti> @undefine
19:02:13 <kallisti> @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing
19:02:14 <lambdabot> Defined.
19:02:23 <kallisti> > deriv powerOfTwo (x :: Expr)
19:02:24 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif a'
19:02:24 <lambdabot> against inferr...
19:02:34 <kallisti> :t powerOfTwo
19:02:35 <lambdabot> forall a. (Fractional a) => Int -> a
19:02:49 <kallisti> bah
19:03:13 <elliott> :t abs
19:03:14 <lambdabot> forall a. (Num a) => a -> a
19:03:15 <kallisti> :t genericReplicate
19:03:16 <lambdabot> forall i a. (Integral i) => i -> a -> [a]
19:03:16 <elliott> :t repliate . abs
19:03:17 <lambdabot> Not in scope: `repliate'
19:03:49 <kallisti> @undefine
19:04:05 <kallisti> @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ genericReplicate (abs n) Nothing
19:04:06 <lambdabot> Defined.
19:04:18 <kallisti> > deriv powerOfTwo (x :: Expr)
19:04:19 <lambdabot> No instance for (GHC.Real.Integral
19:04:19 <lambdabot> (Data.Number.Dif.Dif...
19:04:31 <kallisti> I'm shocked
19:04:47 <kallisti> @hoogle (Integral a, Num b) => a -> b
19:04:47 <lambdabot> Prelude fromIntegral :: (Integral a, Num b) => a -> b
19:04:48 <lambdabot> Prelude (^) :: (Num a, Integral b) => a -> b -> a
19:04:48 <lambdabot> Data.List genericIndex :: Integral a => [b] -> a -> b
19:05:10 <kallisti> @hoogle (Integral a, Num b) => b -> a
19:05:10 <lambdabot> Prelude ceiling :: (RealFrac a, Integral b) => a -> b
19:05:10 <lambdabot> Prelude floor :: (RealFrac a, Integral b) => a -> b
19:05:10 <lambdabot> Prelude round :: (RealFrac a, Integral b) => a -> b
19:05:24 <kallisti> yeah... no
19:05:31 <kallisti> > deriv powerOfTwo 5
19:05:32 <lambdabot> No instance for (GHC.Real.Integral (Data.Number.Dif.Dif a))
19:05:32 <lambdabot> arising from...
19:05:47 <kallisti> aww.
19:06:21 <kallisti> > round 5
19:06:21 <lambdabot> 5
19:06:30 <kallisti> :t round 5
19:06:30 <lambdabot> forall b. (Integral b) => b
19:06:34 <kallisti> .. -_-
19:07:07 <kallisti> @undefine
19:07:17 <kallisti> @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ genericReplicate (abs . floor $ n) Nothing
19:07:18 <lambdabot> Defined.
19:07:22 <kallisti> > deriv powerOfTwo 5
19:07:24 <lambdabot> 0.0
19:07:38 <kallisti> > deriv powerOfTwo (x :: Expr) -- Expr is /totally/ a RealFrac
19:07:39 <lambdabot> No instance for (GHC.Real.RealFrac SimpleReflect.Expr)
19:07:39 <lambdabot> arising from a us...
19:07:42 <kallisti> :(
19:08:36 <elliott> it should be
19:08:57 <kallisti> @info RealFrac
19:08:57 <lambdabot> RealFrac
19:09:01 <kallisti> lambdabot: ah, thanks.
19:09:04 <elliott> > map (deriv powerOfTwo) [-5.5,-5..5]
19:09:06 <lambdabot> [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0....
19:09:19 <kallisti> elliott: I wonder where that's happening
19:09:50 <elliott> Your function isn't very... nice.
19:09:52 <kallisti> well calculating the length from replicate just gives you a bunch of 1 + 1 + 1 + 1 ...
19:09:53 <elliott> It has a conditional and all.
19:10:22 <kallisti> so that's probably why it's zero
19:12:38 <kallisti> elliott: what are you talking about this is definitely the best implementation of the base-2 real-except-actually-integer exponential function
19:14:08 <kallisti> > floor (5 :: Int)
19:14:09 <lambdabot> No instance for (GHC.Real.RealFrac GHC.Types.Int)
19:14:09 <lambdabot> arising from a use of ...
19:14:58 <kallisti> lame
19:20:58 <kallisti> > let multiply x y = genericLength . concatMap ((const .: genericReplicate) x Nothing) $ replicate y Nothing in multiply 2 5
19:20:59 <lambdabot> 10
19:22:13 <kallisti> > let multiply x y = genericLength . concatMap ((const .: genericReplicate) x undefined) $ replicate y undefined in multiply 2 5
19:22:14 <lambdabot> 10
19:22:45 <kallisti> fromIntegral = (`genericReplicate` undefined)
19:23:22 <kallisti> er... well
19:23:23 <kallisti> not quite
19:23:27 <kallisti> only works for positive numbers
19:24:04 -!- oerjan has joined.
19:24:53 <kallisti> (+) = (++); (*) = concatMap . const;
19:25:05 <kallisti> haven't quite figured out subtraction. this really only works for positive numbers.
19:25:06 <elliott> hi oerjan
19:25:21 <oerjan> kallisti: (*) = (>>) too, iirc
19:25:21 <lambdabot> oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:25:54 <kallisti> > length $ replicate 4 undefined >> replicate 5 undefined
19:25:54 <lambdabot> 20
19:25:59 <kallisti> oerjan: ah, indeed.
19:26:08 <kallisti> this would make sense...
19:26:10 <kallisti> because uh...
19:26:17 <kallisti> (>>) = concatMap . const
19:26:36 <elliott> :t concatMap . const
19:26:37 <lambdabot> forall a b. [b] -> [a] -> [b]
19:26:37 <elliott> :t (>>)
19:26:38 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b -> m b
19:26:41 <elliott> not quite.
19:26:48 <kallisti> elliott: for lists... which is the context here.
19:26:51 <elliott> not quite.
19:26:55 <oerjan> and (^) = mapM . const
19:26:59 <oerjan> i think
19:27:02 <oerjan> :t mapM . const
19:27:03 <lambdabot> forall a (m :: * -> *) b. (Monad m) => m b -> [a] -> m [b]
19:27:20 <oerjan> oh hm no
19:27:38 <kallisti> oerjan: well for powers of two I've been using filterM to compute the power set.
19:27:46 <elliott> oerjan: concatMapM?
19:28:37 <kallisti> challenge: use this scheme to model negative numbers
19:28:59 <oerjan> :t mapM_ . const
19:29:00 <lambdabot> forall a (m :: * -> *) b. (Monad m) => m b -> [a] -> m ()
19:29:22 <oerjan> assuming you don't care about the element type
19:29:36 <kallisti> so far the element is undefined
19:29:39 <oerjan> > mapM_ (const [1,2,3]) [1,2]
19:29:40 <lambdabot> [(),(),(),(),(),(),(),(),()]
19:29:44 <kallisti> a bunch of undefined
19:30:06 <oerjan> looks good
19:30:06 <kallisti> so that the instance could be made for [a] instead of [()] or something
19:30:27 -!- Klisz has quit (Ping timeout: 244 seconds).
19:30:55 <kallisti> oerjan: I don't think this can work at all with negatives
19:30:58 <oerjan> hm
19:30:59 <kallisti> without drastic changes.
19:31:07 <elliott> you can construct them with the obvious tuple formation
19:31:09 <oerjan> kallisti: you'd think :P
19:31:11 <elliott> it may even be elegant
19:32:15 <kallisti> oerjan: oh, you missed the first part. fromIntegral = (`genericReplicate` undefined)
19:33:33 <kallisti> well Either [a] [a] could do negatives... but I don't think it would be very pretty.
19:34:05 <kallisti> also it suffers from negative zero
19:34:11 <oerjan> idea: let n = (replicate n undefined ++) and let -n = drop n
19:34:28 <kallisti> :t drop
19:34:29 <lambdabot> forall a. Int -> [a] -> [a]
19:34:36 <kallisti> length n yes
19:34:37 <elliott> kallisti: ([a],[a])
19:34:40 <elliott> (a,b) represents a-b
19:34:50 <kallisti> elliott: oh... nice.
19:34:51 <elliott> that's the same way you (usually) construct the rationals
19:35:02 <kallisti> :t genericDrop
19:35:03 <lambdabot> forall i a. (Integral i) => i -> [a] -> [a]
19:35:07 <elliott> it has the same problem of infinitely many ways to represent any one given number
19:35:15 <elliott> but reduction is easy
19:35:32 <kallisti> oerjan: unless we give it an integral instance. you'd want drop (length n)
19:35:50 <elliott> oerjan: pretty
19:35:55 <elliott> kallisti: that isn'tw hat he meant
19:35:59 <elliott> a = b means representation of a is b
19:36:14 <elliott> negate a = drop (length (a []))
19:36:22 <kallisti> oh nevermind I see...
19:36:23 <elliott> except that fails
19:36:27 <elliott> because it can't negate negatives
19:36:36 <elliott> oerjan: wouldn't
19:36:39 <elliott> \a -> (replicate n a ++)
19:36:40 <elliott> be better
19:36:42 <elliott> because then you could do like
19:36:46 <elliott> a False (repeat True)
19:36:51 <oerjan> kallisti: er i was giving the translation from Ints, really
19:36:56 <elliott> um hmm
19:37:00 <elliott> a 0 [1..]
19:37:01 <elliott> rather
19:37:07 <elliott> > (const (drop 10)) 0 [1..]
19:37:08 <lambdabot> [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35...
19:37:18 <elliott> > (\a -> (replicate 10 a ++)) 0 [1..]
19:37:20 <lambdabot> [0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,...
19:37:39 <elliott> (ofc that cheats by using Integer :P)
19:38:23 <oerjan> you figure out the details ;P
19:38:33 <elliott> oerjan: well yours _works_ fine.
19:39:00 * oerjan notes that yafgc updates aren't quite as regular as he's used to from his webcomics
19:39:18 <elliott> if null $ n [undefined] then head $ n LIST_OF_ALL_NATURALS_REPRESENTED_IN_THIS_WAY else drop . length $ n []
19:39:59 <oerjan> except for oots, which was awful of course
19:40:48 <Sgeo> I assume that you're referring to oots's update schedule, and not the content, when you call it "awful"
19:40:57 <oerjan> yes.
19:41:21 * kallisti wasn't aware that there was any reason to read anything other than homestuck.
19:41:54 <coppro> kallisti: what about #esoteric?
19:42:07 <kallisti> I don't actually read #esoteric
19:42:27 <ais523> elliott: I /still/ maintain my kallisti = Bjorn comparison
19:42:49 <elliott> but I wouldn't want to read a book about kallisti
19:42:58 <kallisti> ais523: I don't really get that comparison
19:43:06 <ais523> kallisti: you wouldn't
19:43:10 <ais523> nor would Bjorn
19:43:14 <kallisti> elliott: dude I'm super interesting.
19:43:25 -!- Klisz has joined.
19:43:27 <kallisti> a book about me would be amazing
19:43:27 <oerjan> elliott: regarding my anti-glogbot stance, i was actually using it at the time and somehow managed to think i was using tunes because insane timezones were involved
19:43:31 <kallisti> it would be the greatest work of literature.
19:43:35 <elliott> oerjan: lol
19:44:16 <Sgeo> There's already a book about me, at http://codu.org/logs/_esoteric/
19:44:30 <Sgeo> (Note: Jokes aside, I have not in fact told my entire life story here)
19:45:00 <oerjan> indeed, only the embarrassing parts
19:45:02 <elliott> oh no, there's /more/?
19:45:03 * oerjan runs away
19:45:20 <kallisti> > replicate (-5) undefined
19:45:21 <lambdabot> []
19:45:22 <kallisti> :(
19:45:48 <kallisti> lists should go negative-ways
19:45:54 <oerjan> > drop (-5) [1..]
19:45:55 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
19:46:15 <oerjan> kallisti: it actually works as replicate n undefined . drop (-n)
19:46:27 <oerjan> er
19:46:33 <oerjan> needs a ++ somewhere
19:46:46 <kallisti> hmm
19:47:08 <kallisti> ah okay.
19:47:17 <kallisti> but it's not particularly elegant is it?
19:47:23 <kallisti> the representation: yes. the code: no
19:47:34 <oerjan> feel free to create twosided infinite lists :P
19:47:53 <kallisti> that sounds awesome.
19:48:05 <kallisti> valid operation: flipItTurnWays
19:48:37 <oerjan> not WitherShins? (sp?)
19:48:54 <kallisti> no
19:48:59 <kallisti> that's not a joke I'm aware of
19:49:06 <kallisti> flipItTurnWays is much better.
19:49:29 <oerjan> oh well i misread that as TurnWise anyway
19:51:27 <kallisti> for two-way list things, toInteger = genericLength
19:51:41 <kallisti> as negative lengths would be possible.
19:56:57 <Sgeo> kallisti, go read some Discworld
20:11:24 <oerjan> <kallisti> I swear I can program guys. <-- NOOOO, don't program me!
20:14:15 <kallisti> > let x = dVar (var "oerjan") in deriv (\x -> x^2 + 2*x + 1) x
20:14:16 <lambdabot> 2+oerjan+oerjan~~
20:14:26 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
20:14:30 <kallisti> > let x = var "oerjan" in deriv (\x -> x^2 + 2*x + 1) x
20:14:31 <lambdabot> 2+oerjan+oerjan
20:14:33 <kallisti> my bad
20:14:43 <elliott> :t dVar
20:14:43 <lambdabot> forall a. (Num a) => a -> Dif a
20:14:50 <kallisti> elliott: I made a cool thing earlier
20:16:34 <kallisti> > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs (^2)
20:16:36 <lambdabot> 3
20:17:18 <kallisti> > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs sin
20:17:22 <lambdabot> mueval-core: Time limit exceeded
20:17:23 <kallisti> > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs (const 4)
20:17:25 <lambdabot> 1
20:17:32 <elliott> Deewiant: Ping
20:18:34 <kallisti> actually just iterate df . f $ dVar x by itself is pretty cool.
20:18:38 <elliott> hey ais523, set tabstop=4
20:18:59 <ais523> elliott: 4 spaces = 1 indent, 1 tab = 2 indents?
20:19:06 <elliott> nope, 1 tab = 4 wide
20:19:11 <kallisti> > iterate df . (^2) $ dVar (x :: Expr)
20:19:13 <lambdabot> [x * x~~,1 * x + x * 1~~,1 * 1 + 1 * 1~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~...
20:19:20 <elliott> indentation I set separately with sw=4 (although this is a flaw of vim that it's set like this)
20:19:21 <ais523> elliott: that's just broken
20:19:28 <kallisti> > map val . iterate df . sin $ dVar (x :: Expr)
20:19:30 <lambdabot> [sin x,1 * cos x,1 * (1 * negate (sin x)),1 * (1 * (1 * negate (cos x))),1 ...
20:19:35 * elliott continues using his broken editor happily.
20:20:08 <ais523> why is it a flaw of vim that it can set tabs and indentations differently?
20:20:25 <ais523> most editors can do that, to read code in the common indent = 2 spaces, 4 indents = 1 tab format
20:20:33 <ais523> (I know it's common because I've seen it in quite a lot of third-party code)
20:20:42 <elliott> s/third-party/GNU/
20:20:45 <Sgeo> On Linux, should I use emacs from the console or is a more graphical emacs acceptable?
20:20:47 <elliott> 2-spaces is not common in C outside of GNU code
20:20:55 <elliott> it is used, but not very commonly
20:21:05 <elliott> Sgeo: If you use a graphical Emacs, weasels will peck at your face.
20:21:05 <kallisti> Sgeo: only legitimate hackers use nano on console.
20:21:10 <elliott> And we will consider you inferior.
20:21:14 <elliott> Weasels, that is.
20:21:19 <elliott> `quote GNU Tar
20:21:21 <HackEgo> 665) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough.
20:22:43 <kallisti> @let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr)
20:22:44 <lambdabot> Defined.
20:22:51 <ais523> elliott: I think 2-char-widths is the most common indentation I've seen for C
20:22:57 <ais523> whether via spaces or mixed space/tab
20:23:03 <ais523> although I see 4 from time to time
20:23:18 <ais523> and occasionally 8 when someone's used only tabs
20:23:24 <kallisti> 8 is horrid
20:23:49 <kallisti> elliott: clearly this is the most useful piece of Haskell code written, yes? (nDerivs)
20:24:02 <elliott> ais523: It's true that if you fudge the numbers with your unpopular opinions, then you can derive incorrect results, yes
20:24:28 <ais523> elliott: well, what width would you say code's using if it's indented only with tabs? serious question
20:24:52 <ais523> I think you either have to count it as 8, or ignore it altogether as if it's not 8, there's no information about what it's intended to be
20:24:58 <elliott> It's not, it's indentation-width agnostic. But what matters for statistics is whatever the majority of its authors uses.
20:25:15 <olsner> ooh, a tab-width discussion
20:25:20 <ais523> elliott: no, what the majority of its readers use
20:25:23 <elliott> olsner: no, i'm not giong to let it develop that far
20:25:36 <ais523> olsner: it's an indentation-width discussion, which is not quite the same thing
20:25:41 <kallisti> the width of a tab is the width of a tab.
20:25:47 <olsner> ais523: oh, ok
20:25:58 <elliott> actually, I'm ending it here since this is boring
20:25:59 -!- GreaseMonkey has joined.
20:26:06 -!- GreaseMonkey has quit (Changing host).
20:26:06 -!- GreaseMonkey has joined.
20:26:07 <olsner> the file can specify a tab width through a modeline, thereby indicating its indentation width even if it's all just tabs
20:26:25 <kallisti> > text "\t"
20:26:29 <ais523> olsner: I was thinking about that
20:26:32 <elliott> olsner: indeed (although the reader is of course not bound to it, it's just to make the developers' job easier)
20:26:35 <kallisti> > text " "
20:26:36 <ais523> but modelines are getting increasingly rare nowadays
20:26:42 <elliott> olsner: actually i think that shoudln't be used at all
20:26:47 <elliott> because it overrides each developer's individual preference
20:26:50 <ais523> and arguably, if a file is tab-indented, the modeline should say it's tab-indented but not the size of a tab
20:27:14 <kallisti> > text . fix $ (' ':)
20:27:27 <elliott> kallisti: text is strict
20:27:30 <lambdabot> thread killed
20:27:55 <ais523> bleh, I was looking for statistics but couldn't find them
20:28:13 <ais523> I wonder if mixed spaces/tabs, in C, is more common than pure tabs
20:28:17 <ais523> it must be quite close, I imagine
20:28:28 <Gregor> elliott, ais523: The IOCCC submission page has an "additional authors" option.
20:28:32 <Gregor> So, collab is A-OK.
20:28:33 <elliott> ais523: That term is ambiguous.
20:28:40 <ais523> elliott: right, just not public publishing
20:28:44 -!- zzo38 has joined.
20:28:52 <elliott> ais523: *Gregor:
20:28:59 <elliott> and nothing in the rules forbids public publishing
20:29:00 <ais523> err, right
20:29:06 <olsner> I think mixed spaces and tabs is the most universally disliked indentation
20:29:10 <elliott> Gregor: They have a page? I thought you were meant to use their tool to generate a file to mail.
20:29:19 <ais523> elliott: hmm, has it changed? there definitely /was/ a rule about using publicly published stuff in a previous year
20:29:25 <ais523> elliott: no, there's a submission form nowadys
20:29:25 <olsner> unless you're just mixing styles haphazardly all around
20:29:29 <elliott> olsner: it's an ambiguous term; I bet ais523 would label tabs-for-indentation, spaces-for-alignment under that
20:29:35 <elliott> olsner: but that's the /reasonable/ way to use tabs
20:29:46 <Gregor> elliott: They appear to have a page, although the page may ultimately just say "OK, give these options to the tool", I haven't gone through the whole process yet.
20:29:51 <elliott> and the only tab-based indentation scheme anyone's advocated for years
20:30:21 <ais523> elliott: actually, I was planning to count tabs-for-indentation, spaces-for-alignment as pure-tabs
20:31:04 <ais523> although there are problems, such as if you want comments to line up in a correctly indented version of f(); /* comment */ if(x) { g(); /* comment */ h(); }
20:31:54 -!- lambdabot has quit (Ping timeout: 240 seconds).
20:32:03 <ais523> bye lambdabot
20:32:17 <olsner> hmm, I generally dislike alignment
20:33:09 * kallisti likes alignment
20:33:14 * elliott generally doesn't align too, but only because text sucks
20:33:26 <kallisti> I'm pretty OCD about aligning things properly.
20:33:33 <elliott> I don't want to align multiple lines in ()s unless I can make the parentheses as large as the lines.
20:33:50 <elliott> kallisti: aligning things like assignments is usually Wrong, because you never want to look at it like a table
20:33:54 <elliott> I'm talking about things like e.g.
20:33:58 <elliott> int f(int x, int y, ...,
20:34:03 <elliott> int z, ...)
20:34:05 <elliott> for declarations
20:34:06 <ais523> we need a Unicode character for flexible indentation
20:34:28 <elliott> ais523: U+??? ELASTIC TABSTOP?
20:34:28 <ais523> elliott: yep, that's easy to align correctly
20:34:33 <kallisti> elliott: well I usually align assignments based on similarity of purpose...
20:34:38 <ais523> elliott: yes!
20:34:39 <elliott> *????
20:34:48 <kallisti> I just find it easier to read when they're aligned.
20:35:00 <elliott> ais523: the problem is that they aren't reducible to a character, I think
20:35:05 <elliott> or, hmm
20:35:06 <elliott> yes they are
20:35:33 <elliott> ais523: one problem with elastic tabstops is that they force some visual space
20:35:35 <elliott> so they can't do
20:35:37 <elliott> <elliott> int f(int x, int y, ...,
20:35:38 <elliott> <elliott> int z, ...)
20:35:54 <elliott> I'm tempted to say that tabstops beyond the start of a line should have no space after their previous column
20:36:02 <elliott> so you use two spaces before eacht abstop if you want to space inline comments out
20:37:46 <elliott> ais523: but anyway, the tab character works for elastic tabstops as used in code
20:38:01 <elliott> since alignment should never really be semantically meaningful there, like it would be for a table, it degrades gracefully
20:38:51 <ais523> elliott: the problem is that the viewer would need to recognise it
20:39:06 <elliott> ais523: nah; using elastic tabstops to view files with old-style tabs works fine too
20:39:06 <ais523> and I often view code in things that aren't intended specifically for the purpose
20:39:25 <elliott> tabs at the beginning of the line still work fine, which is 99% of them
20:39:31 <ais523> elliott: are you going to change the entire installbase of everything - browsers, email clients, IRC clients, etc - to interpret tabs as elastic?
20:39:38 <elliott> ais523: you don't have to?
20:39:44 <elliott> elastic tabstops gracefully degrade
20:39:59 <ais523> no they don't, they line up the things you're elasticating wrong except at the start of a line
20:40:12 <ais523> also, are too wide at the start of a line
20:40:33 <ais523> because believe it or not, the vast majority of software currently interprets tabs as 8 regardless of whether you think that's right or not
20:41:41 <elliott> ais523: (a) that doesn't matter much; being slightly uglier but still making sense is the /definition/ of graceful degradation (b) troll
20:42:24 <ais523> elliott: but what I mean is, the vast majority of software in existence has no reason to start interpreting tab as meaning something different
20:42:44 <ais523> if you added it as a new Unicode character, though, they'd start interpreting it correctly over time
20:42:53 <elliott> haha!
20:42:56 <elliott> no they wouldn't
20:43:03 <ais523> elliott: Unicode support has got better over time, has it not?
20:43:16 <elliott> elastic tabstops are algorithmically non-trivial
20:43:28 <ais523> oh no, kerio's just started up with the ssh fanboyism again
20:43:52 <elliott> and "programmers who have compilers fancy enough to do elastic tabstops" is very niche
20:45:23 <ais523> elliott: OTOH, the whole thing that drives development of most programs is what programmers want
20:45:33 <elliott> no it isn't
20:45:43 <ais523> well, hmm
20:45:46 <elliott> that's one of the falsest things you've ever said
20:45:50 <elliott> and that's saying something
20:45:51 <kallisti> counterexample: Windows
20:46:01 <kallisti> something no programmer wants
20:46:15 <ais523> elliott: hmm, I think I may be right if you don't allow for popularity
20:46:21 <ais523> most programs are written by programmers
20:46:37 <elliott> "most" over such a large, varied space without some kind of filtering is ridiculous
20:49:18 -!- elliott has quit (Remote host closed the connection).
20:49:54 -!- elliott has joined.
20:50:30 -!- derrik has quit (Quit: :)).
20:52:00 -!- lambdabot has joined.
20:53:00 * elliott finally blocks Flash.
20:53:43 <kallisti> but then...
20:53:48 <kallisti> HOW WILL YOUTUBE?
20:57:10 <olsner> through newfangles like html5 video, presumably
20:57:53 <Sgeo> YouTube doesn't support HTML5 for all videos, I think
20:58:09 <Sgeo> Also, there's a way to enable individual flash elements usually
20:58:21 <Sgeo> If I didn't think of that, I'd ask how elliott would Homestuck
21:01:26 <ais523> kallisti: I use a different browser for YouTube (and other video sites) than I do from everything else
21:01:32 <ais523> that's the simplest solution
21:01:56 <kallisti> ..
21:02:08 <kallisti> is having flash on by default really that big of a deal?
21:02:08 <ais523> there are others, of course
21:02:17 <ais523> (I also have a third browser, for accessing Google-related sites)
21:02:54 <oerjan> ais523 is clearly the reincarnation of rube goldberg
21:02:55 <GreaseMonkey> kallisti: well 99% of flash files are just for shitty ads
21:03:06 <kallisti> ah see I fix this by not having ads ever.
21:03:24 <GreaseMonkey> privoxy: making google chrome usable.
21:03:47 <ais523> oerjan: I also have a /fourth/ browser for accessing programming language documentation, but that's more about convenience than privacy
21:03:51 <ais523> also, IE6, for testing sites in IE6
21:06:18 <kallisti> I use this magical thing called adblock
21:09:04 <ais523> kallisti: it isn't magical; understanding it will make it better
21:09:11 <ais523> in particular, I use it to block quite a few things that aren't adverts
21:09:12 <shachaf> elliott
21:09:19 <ais523> it's a generic annoyance-blocker, for me
21:09:33 <ais523> for the web
21:10:31 <kallisti> ais523: how and this whole time I thought it was voodoo
21:10:35 <kallisti> s/how/wow/
21:10:51 <shachaf> `quote elliott
21:10:52 <HackEgo> 188) <fungot> elliott: i like scsh's mechanism best: it's most transparent and doesn't really serve a very useful feature. \ 191) <fungot> elliott: it's hard to debug havoc on your mirror if you accidentally hit r, then a character could be multiple words long, depending on the task. \ 200) <Gregor> elliott: My university has two Poultry Science buildings. <Gregor> Two! \ 209) <elliott> Vorpal loves the sodomy. <Vorpal>
21:11:09 <ais523> kallisti: it basically blocks images or elements by URLs or URL+rules for locating it on a page (ID, etc)
21:11:25 <oerjan> poor Gregor studying in such a fowl place
21:11:25 <ais523> but basically, you see something that annoys you (particularly an image), you just right-click on it and tell adblock to get rid of it
21:11:45 <oerjan> (what do you _mean_ i used that pun yesterday too?)
21:11:55 <ais523> oerjan: hmm, that indirectly reminds me of the day there was an enormous gas odoriser leak
21:12:05 <ais523> that caused a bit of chaos
21:13:08 * oerjan doesn't know what gas odoriser is, but imagines it's something you add to odorless poisonous gas in order to make it noticable
21:13:19 <oerjan> which would explain the chaos
21:13:32 <ais523> oerjan: not poisonous, it's added to methane
21:13:41 <ais523> because leaked methane is a huge fire risk
21:13:45 <oerjan> right, explosive would work too
21:14:48 <oerjan> *+e
21:16:06 <kallisti> ais523: ....WOW REALLY?
21:16:08 <kallisti> I HAD NO IDEA.
21:16:50 <kallisti> this whole time I have been using AdBlock and had no clue how it operates, or the features it sports.
21:17:14 <ais523> bleh, I'd love this all to be non-sarcastic, but I can't imagine it is
21:18:04 <oerjan> this whole time I have been thinking kallisti only spoke in literally truth
21:18:09 <kallisti> ais523: no I really am just as stupid as you think I am. :P
21:18:15 <oerjan> *-ly
21:19:34 <kallisti> oerjan: I was under the impression that every statement on IRC was truthfully spoken.
21:20:10 <oerjan> yeah me too
21:20:24 <oerjan> shocking, isn't it
21:21:22 <kallisti> I am don't know what think
21:21:44 <oerjan> and also everyone always use perfect grammar
21:21:44 <kallisti> "A new study in the Journal of Sexual Medicine said that men who put their penises in animals have a higher likelihood of penis cancer. "
21:21:49 <kallisti> interesting
21:22:17 <oerjan> but who were the control group
21:22:19 <ais523> kallisti: cause or effect?
21:22:39 <elliott> ais523: penis cancer increases the chance of bestiality, yes
21:22:47 <kallisti> ais523: are you suggesting that people who develop penis cancer -- yes
21:22:50 <kallisti> what elliott said
21:22:54 <ais523> elliott: that's not /obviously/ false, right?
21:23:17 <kallisti> "A member of a pro-zoophilia group told The Huffington Post by email that the results of the study should prompt people to take precautions, like using a condom, when having sex with animals."
21:23:21 <kallisti> loooool
21:23:25 <oerjan> ais523: clearly this must be a proper study so it was obviously double-blind with neither the subject nor the experimenter knowing whether what they were fucking was an animal
21:23:26 <elliott> X-D
21:23:38 <elliott> But it doesn't cure penis cancer if you do it that way!
21:23:51 <ais523> oerjan: hmm, what proportion of each group was female? I think I've noticed a potential skew in the statistics
21:24:14 <oerjan> surely this would have been noticed during peer review
21:24:22 <elliott> ais523: "men who"
21:24:28 <ais523> bleh
21:24:29 <elliott> oerjan: no no, neither the subject nor the experimenter knew whether they had penis cancer or not
21:24:42 <kallisti> "We think that the intense and long-term SWA [sex with animals] practice could produce micro-traumas in the human penile tissue. The genital mucus membranes of animals could have different characteristics from human genitalia, and the animals' secretions are probably different from human fluids.
21:24:48 <kallisti> Perhaps animal tissues are less soft than ours, and non-human secretions would be toxic for us."
21:25:00 <kallisti> pleasant imagery
21:25:00 <elliott> oerjan: unfortunately many of the experimentors later died of this, having not received treatment
21:25:16 <elliott> SWA practice
21:25:23 <elliott> just gotta go
21:25:24 <elliott> practice my SWAs
21:25:52 <elliott> "Perhaps animal tissues are less soft than ours" <-- this is false, see: toilet paper advets
21:25:53 <elliott> adverts
21:25:56 * Sgeo remembers reading about fruit flies, or something, and I forget the exact details, but the male's semen could become toxic to the females
21:26:01 <ais523> elliott: SWA?
21:26:07 <elliott> puppies and koalas have soft tissues too
21:26:08 * kallisti googled for: mucus membrane goat vagina chemicals
21:26:11 <elliott> ais523: <kallisti> "We think that the intense and long-term SWA [sex with animals] practice could produce micro-traumas in the human penile tissue. The genital mucus membranes of animals could have different characteristics from human genitalia, and the animals' secretions are probably different from human fluids.
21:26:17 <ais523> ah
21:26:29 <elliott> * Sgeo remembers reading about fruit flies, or something, and I forget the exact details, but the male's semen could become toxic to the females
21:26:36 <elliott> Sgeo googled for: xxx fruit fly 18 or over
21:26:47 <kallisti> elliott: ................
21:26:53 <kallisti> elliott: that was such a horrible joke.
21:27:00 <kallisti> in fact
21:27:01 <elliott> you're such a horrible joke
21:27:07 <ais523> fruit flies rarely live to 18
21:27:12 <kallisti> it crossed the so-horrible-it's-good coundary
21:27:13 <elliott> ais523: I was thinking of saying that
21:27:16 <kallisti> yes coundary
21:27:19 <oerjan> i recall that non-human mammals have barbed penises but this would be more a problem for bestial women, obviously
21:27:32 <ais523> elliott: I was actually going to make a joke along those lines earlier, but didn't have a good opportunity
21:27:35 <kallisti> oerjan: that's not a universal thing
21:27:38 <ais523> thanks for giving me one
21:27:44 <elliott> ais523: haha
21:27:49 <kallisti> oerjan: I know cats in particular have those.
21:27:59 <oerjan> kallisti: i vaguely thought nearly all mammals did
21:28:10 <ais523> whereas snails copulate by stabbing each other in the neck
21:28:46 <elliott> Also some humans.
21:28:50 <kallisti> oerjan: oh hmmm maybe
21:28:59 <elliott> hmm, snail bestality doesn't sound like fun
21:29:12 <kallisti> oerjan: I think it's common in mammals anyway
21:29:59 <ais523> gah, now I have a huge urge to reference the hedgehog song
21:30:05 <ais523> so I will, and see who catches the reference
21:30:21 <oerjan> ais523: i cannot be bothered at all?
21:30:50 <ais523> oerjan: hmm, the original was a bit more vulgar, but that's close enough
21:31:04 <kallisti> oerjan: apparently the lack of a certain gene removes barbed penises and results in larger brains? or something?
21:31:19 <elliott> ais523: was that the reference?
21:31:28 <ais523> (on another note, I love the way that the standard way to indicate that you get a reference is to make a different obscure reference to the same thing)
21:31:39 <oerjan> ais523: oh, i only know it from some discworld books where it may have been bowdlerized
21:31:44 <ais523> ah, right
21:32:07 <ais523> I'm referencing the discworld books too, but it almost certainly /was/ bowdlerized in your version
21:32:14 <ais523> as that seems more likely than antibowdlerizing it in mine
21:32:26 <elliott> oerjan: http://www.lspace.org/fandom/songs/hedgehogsong.html
21:32:36 <oerjan> _or_ i may simply have misrembered the words
21:32:43 <ais523> elliott: I take it you searched rather than having the link mesmerized?
21:32:58 <elliott> ais523: My brain actually stores everything in URL form.
21:33:02 <elliott> For instance that previous line was
21:33:13 <elliott> http://ais523.elliott.i.take.it/you/searched?rather=than&having=the#link,mesmerized
21:33:16 <ais523> bonus points if you give a link to the logs for that line?
21:33:19 <ais523> oh, boring
21:33:20 <elliott> I don't see what mesmerification has to do with it though.
21:33:30 <elliott> ais523: I never said they were /useful/ URLs
21:35:12 <ais523> now I'm wondering if that URL is valid, but don't want to click it just in case it is
21:35:15 <oerjan> kallisti: _or_ humans just improved on the bonobo culture by making it less painful
21:35:19 <ais523> take.it is almost certainly a valid domain
21:35:33 <elliott> it is
21:35:34 <elliott> it's a 404
21:35:35 <ais523> but that doesn't say much about what it does with subdomains it doesn't recognise
21:35:39 <elliott> 404 - Questa pagina non esiste o è stata rinominata
21:35:41 <ais523> 404 seems reasonable
21:35:47 <elliott> take.it is 403 :(
21:35:54 <ais523> who 403s their homepage?
21:35:58 <oerjan> *bonobo-style, we're not their descendants...
21:36:04 <ais523> (besides, how do you log in if the homepage is 403?)
21:36:14 <ais523> (and you aren't using HTTP auth?)
21:36:21 <elliott> ais523: log in to /what/?
21:36:28 <ais523> elliott: whatever causes it to stop 403ing
21:36:36 <elliott> nothing, one presumes
21:36:42 <ais523> most common 403 reason is lack of auth, isn't it?
21:36:47 <elliott> no
21:36:51 <ais523> and you don't 403 an important page like a homepage unless there's some way to view it
21:36:54 <elliott> most common 403 reason is someone put 403 there
21:36:58 <elliott> to stop people viewing it
21:37:03 <elliott> e.g. a subdirectory that isn't meant to be web-exposed
21:37:13 <ais523> yep, but that doesn't apply to the homepage itself
21:37:17 <elliott> like internal files for some web application that exists in the web root
21:38:01 <ais523> yep, but they're unlikely to be called index.html
21:38:10 <kallisti> elliott: URLS should be graph-based instead of strictly trees.
21:38:21 <kallisti> I don't even know what that means exactly.
21:38:58 <kallisti> ais523: yes that is exactly 1 possibility in a set of infinite possibilities
21:39:03 <kallisti> ais523: so not very likely
21:39:06 * kallisti good math
21:39:25 <elliott> ABSTRACTION IS HARD
21:39:44 <ais523> kallisti: if the probability really is 1/infinity, the likelihood can still be quite high
21:39:54 <oerjan> elliott: CONCRETE IS ALSO HARD
21:40:02 <ais523> (for likelihood, just think probability except that you multiply everything by infinity to get it back into non-infinitesimal units)
21:40:08 <ais523> (well, it's more complicated than that, but it always is, right?)
21:40:27 <kallisti> ..wat
21:40:47 <ais523> kallisti: ordinary probabilities add to 1, right?
21:40:48 <oerjan> ais523: elliott isn't asking you to kick me, i'm disappoint
21:40:51 <ais523> likelihoods integrate to 1
21:41:02 <kallisti> ais523: are you just making stuff up
21:41:02 <ais523> oerjan: I thought concrete was more tough than hard
21:41:05 <kallisti> or is that an actual thing.
21:41:05 <ais523> kallisti: no
21:41:14 <ais523> it's a perfectly plausible thing
21:41:18 <ais523> for, say, probability distributions
21:41:23 <ais523> which return reals
21:41:24 <kallisti> right but do people call them likelihoods
21:41:29 <ais523> the chance of getting any particular real is 0
21:41:30 <kallisti> or is just, a... continuous probability distribution.
21:41:45 <ais523> and that name is used for them sometimes; I've heard "probability density" too, but it's a boring name
21:42:30 <kallisti> right well it's meaningless to talk about the probability of a single real in a continuous distribution
21:43:02 <oklopol> unless the measure has atoms
21:43:23 <kallisti> s/atoms/discrete units/
21:43:42 <oklopol> well atom is the term usually used in ergodic theory
21:43:54 <oklopol> and probably measure theory
21:43:59 <kallisti> ...........
21:44:02 <kallisti> ergodic?
21:44:13 <oerjan> lebesgue space ftw
21:44:14 <elliott> kallisti: http://en.wikipedia.org/wiki/Likelihood_function
21:44:15 <kallisti> seriously you have to making that up. -googles- oh, no.
21:44:18 <oklopol> ...
21:44:32 -!- oklopol has changed nick to mathematician.
21:44:34 <elliott> [elliott@dinky ~]$ grep -r s2w .
21:44:35 <elliott> ./.bash_history:grep -r map_s2w .
21:44:35 <elliott> wrong directory
21:44:44 <mathematician> i hope this clears things up
21:44:58 -!- mathematician has changed nick to flyingdick.
21:45:10 <flyingdick> this is better thought
21:45:12 <flyingdick> *though
21:45:47 <ais523> f
21:46:43 <elliott> f
21:47:34 <ais523> flf
21:47:41 <kallisti> flyingdick: oh my, I didn't realize your credentials. Excuse me for thinking (read: joking about how) ergodic sounds like a made up thing.
21:47:43 <oerjan> f|f|f
21:47:55 <ais523> oerjan: haha at whatever font you're using
21:47:56 <oerjan> wait what
21:47:58 <ais523> unless that was deliberate
21:47:59 <flyingdick> you're lucky i didn't kick you out of here
21:48:01 <flyingdick> asshole
21:48:04 <flyingdick> that was just
21:48:06 <flyingdick> wrong
21:48:12 <oerjan> ais523: no i just need glasses, obviously
21:48:12 <elliott> hmm, why doesn't oklopol have op powers
21:48:13 -!- flyingdick has changed nick to oklopl.
21:48:14 <elliott> there's no way that could go badly
21:48:17 -!- oklopl has changed nick to oklopol.
21:48:21 <oklopol> sorry i was kind of a dick there
21:48:32 -!- elliott has changed nick to oklopl.
21:48:37 <oklopol> yeah i think i should have op powers
21:48:40 <oklopl> hi
21:48:44 -!- oklopl has changed nick to elliott.
21:48:50 <elliott> yeah but seriously though give oklopol op powers
21:48:51 <oklopol> i would kick everyone who doesn't blindly accept everything i say
21:49:05 <elliott> oerjan: /msg chanserv #esoteric op oklopol, thanks
21:49:08 <oklopol> especially if they're right
21:49:08 <kallisti> elliott just likes to find excuses to kick me indirectly.
21:49:15 <oklopol> why would he want to kick you
21:49:21 <kallisti> because that's.... what
21:49:24 <kallisti> is that even a question
21:49:37 <oklopol> yes
21:49:45 <kallisti> BECAUSE THIS IS WHAT ELLIOTT DOES.
21:49:46 -!- Klisz has quit (Read error: Connection reset by peer).
21:49:48 <kallisti> it's like an axiom.
21:49:57 <kallisti> like, if there were a typeclass called WantsKick
21:50:00 <elliott> kallisti is so paranoid
21:50:01 <kallisti> then it would be like
21:50:10 <kallisti> instance WantsKick Elliott Kallisti
21:50:13 <oerjan> elliott wants to kick us and hear the lamentations of our women, that just goes with the evil overlord thing
21:50:23 <elliott> you don't _have_ women.
21:50:30 <oerjan> details.
21:50:48 <oerjan> also some here do.
21:51:02 <oerjan> some here are actually _married_, unless they've been lying.
21:52:46 -!- Klisz has joined.
21:52:51 <kallisti> oerjan: I'd say the pairing graph for #esoteric is mostly edgeless.
21:53:56 <kallisti> In the area of graph theory in mathematics, a signed graph is a graph in which each edge has a positive or negative sign.
21:53:59 <kallisti> interesting
21:54:10 <oerjan> sign this graph, please
21:54:25 <kallisti> hmmm... but no zero edge?
21:54:40 <kallisti> MY GRAPHLANG HAS A ZERO SIGN
21:54:45 <kallisti> like... whatever the sign of zero is.
21:54:50 <kallisti> but in graph edge form.
21:55:07 <kallisti> past edge = -, present edge = 0, future edge = +
21:55:09 <kallisti> or something
21:55:31 <elliott> hmm, w2s can go eventually but we need it for now; s2w is used in multiple cases...
21:55:48 <elliott> but i don't really want _two_ functions to do the same thing
21:57:23 <kallisti> elliott: I thought the Haskell slogan was "there's more than one function to do it"
21:57:31 <elliott> not haskell
21:58:14 <oerjan> yeah haskell only has the bare minimum, like map, fmap, (.), liftA, liftM and (<$>).
21:58:26 <ais523> how is (.) like map/fmap?
21:58:38 <oerjan> ais523: (e ->) instance
21:58:41 <oerjan> :t (.)
21:58:41 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
21:58:51 <elliott> god bless caleskell
21:59:04 <kallisti> calemeriskell
21:59:45 <ais523> I thought (.) was function composition; is that a special case of a general definition?
21:59:53 <kallisti> Sgeo: updelskell
22:00:18 <Sgeo> kallisti, when have I ever trolled you about updates?
22:00:40 <kallisti> Sgeo: why would you confuse yourself with me?
22:00:44 <kallisti> clearly I am doing the trolling.
22:00:53 <kallisti> eiieojwoiiwoijwoijeoiwjow
22:00:55 <kallisti> :)
22:01:01 <Sgeo> I just wish I knew why you were doing it
22:01:18 <kallisti> Sgeo: it's because I love you. :3
22:01:20 <oerjan> ais523: that's cale's idea of letting lambdabot have generalized versions of standard functions
22:01:28 <oerjan> :t (++)
22:01:28 <lambdabot> forall m. (Monoid m) => m -> m -> m
22:01:32 <oerjan> :t flip
22:01:32 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
22:01:46 <kallisti> Sgeo: friendship troll
22:01:52 <ais523> oerjan: hmm
22:02:06 <ais523> ++ on Monoids disturbs me
22:02:12 <kallisti> wat
22:02:25 <elliott> (++) should obviously be generalised to monoids
22:02:26 <ais523> mostly because the monoid version of ++ is mostly just coincidence that append is the most appropriate operation on lists
22:02:35 <ais523> elliott: yes, agreed; I just disagree with ++ being the name for that
22:02:43 <kallisti> ...why
22:02:43 <elliott> ais523: then you disagree, and misread my statement
22:02:44 <oerjan> ais523: that's what it was like in haskell 1.4, i think, or maybe it was MonadPlus.
22:02:44 <kallisti> it's great.
22:02:52 <elliott> oerjan: it was MonadPlus
22:03:01 * elliott would rather remove (++) and make (<>) the monoid operation
22:03:06 <ais523> elliott: I'd be fine with that
22:03:23 <kallisti> ++ could be MonadPlus and <> could be Monoid
22:03:31 <elliott> ais523: really?
22:03:35 <elliott> ais523: (++) doesn't inherently mean append.
22:03:39 <elliott> it's just two symbols.
22:03:43 <ais523> hmm, perhaps
22:03:52 <elliott> kallisti: MonadPlus needs to go away
22:04:03 <ais523> OCaml uses @ for list append (and its operators aren't polymorphic), I was interesting that it had a one-char name for something that specific
22:04:09 <kallisti> elliott: I disagree, we should have two more of them, and two more Monoids
22:04:16 <elliott> although I guess it's nice to have with MonadZero, which is nice because you don't need a constraint per a
22:04:34 <elliott> ais523: you was interesting?
22:04:38 <kallisti> elliott: also n-parameter monoids, for monoids with two type parameters and more.
22:04:44 <ais523> elliott: interested
22:04:53 <ais523> also, *you were interesting?
22:05:02 <elliott> no, you was definitely interesting
22:05:05 <ais523> grammar transformations of bad grammar has rules!
22:05:44 <kallisti> grammar of bad grammar
22:07:30 <elliott> ais523: *have
22:08:06 <ais523> elliott: yep, I Muphried myself somewhat there
22:08:15 <ais523> which is strange, as I mostly don't get caught in Muphry's Law
22:08:21 <kallisti> :)
22:09:06 <elliott> oh, youtube redesigned
22:09:09 <elliott> everything's so different
22:09:15 <kallisti> `? monoid
22:09:17 <HackEgo> Monoids are just categories with a single object.
22:09:20 <elliott> ais523: oh, oops, i was trying to make it incorrect
22:09:49 <kallisti> elliott: they've... Facebookitized it.
22:09:54 <elliott> what
22:09:55 <ais523> elliott: what, /again/?
22:10:17 <kallisti> elliott: they're using a similar layout to what facebookuses
22:10:24 <elliott> chrome users: is chrome adblock or adblock plus for chrome better?
22:10:28 <elliott> and can either block youtube video ads?
22:10:44 <kallisti> I believe adblock plus can
22:10:55 <kallisti> I dunno anything about chrome adblock
22:10:57 <kallisti> but adblock plus works fine.
22:11:04 <elliott> it's just called "adblock"
22:11:04 <kallisti> I sometimes forget the internet has ads.
22:11:15 <elliott> it's more popular than adblock plus, though probably only because it's older
22:11:31 <elliott> ofc adblock plus is the most popular extension for any browser
22:11:35 <kallisti> elliott: oh wait...
22:11:36 <elliott> but the codebase is different for chrome, so :P
22:11:40 <kallisti> elliott: no I'm using Adblock apparently
22:11:54 <elliott> kallisti: right. not the same thing, it rides on having a similar name to the unrelated Firefox extension...
22:12:02 <elliott> Adblock Plus is the official port
22:12:07 <kallisti> ah
22:12:25 <kallisti> I wonder which is better.
22:12:32 <elliott> that's what I just wondered.
22:13:29 -!- Ngevd has joined.
22:14:02 <elliott> oh hmm
22:14:04 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
22:14:07 <Ngevd> I never did figure out where to put that patch
22:14:10 <elliott> looks like adblock plus uses the same filtering engine as the firefox version's
22:14:12 <elliott> Ngevd: what patch
22:14:19 <Ngevd> For Dungeons of Drednor
22:14:47 <Ngevd> s/dno/dmo/
22:15:15 <kallisti> elliott: reviews for Adblock Plus seem to suggest that it is better
22:15:16 <kallisti> imagine that.
22:15:22 <elliott> howso
22:15:37 <elliott> "Sorry, but i thinks it works fine. I have NO adds on any site. and it is still much faster than addblock! adblock (that without plus) slows down every webpage i visit. ABP ist still "the same" like adthwart (only the laughing devil i miss :) )" ;; this person seems too stupid to trust
22:15:39 -!- boily has quit (Quit: WeeChat 0.3.6).
22:16:12 <elliott> meh, it seems better
22:16:13 * elliott installs
22:16:16 <kallisti> lol
22:16:27 <kallisti> elliott: it's a good thing you consulted an expert opinion
22:16:33 <kallisti> better against the adds
22:16:57 <elliott> "Block ads inside YouTube videos" yay
22:17:27 -!- Jafet has quit (Quit: Leaving.).
22:18:00 <kallisti> they both more or less use the same filters.
22:18:08 <kallisti> though Adblock seems to have more foreign language filters in the checklist
22:18:15 <oklopol> CHAINSAW EVERYONE AND CHAINSAW EVERYTHING
22:18:25 <elliott> oklopol: i agree, someone op oklopol
22:18:26 <elliott> oerjan: op oklopol
22:18:29 <elliott> ais523: op oklopol
22:18:58 <oklopol> well really i deserve ops, i've been here longer than anyone else
22:19:00 <ais523> elliott: just because someone's stupid doesn't mean they're wrong
22:19:32 <elliott> ais523: very true, but they don't seem articulate enough about their technical experience to have judged it correctly
22:19:48 <ais523> yep, so if they're right, it's by chance
22:19:51 <elliott> and "Sorry, but i thinks it works fine." seems to imply it's a reaction to a negative review, which makes me trust it less
22:21:17 <elliott> olsner: You use vim, right
22:21:24 <olsner> elliott: I do indeed
22:21:41 <ais523> olsner: do you move with vikeys or numpad?
22:21:43 <elliott> olsner: What indentation style do you use
22:21:51 <elliott> ais523: vim does numpad?
22:22:04 <elliott> oh, numpad has arrow keys without numlock
22:22:06 <olsner> ais523: usually arrow keys :>
22:22:08 <elliott> you can't go diagonally though
22:22:15 <ais523> elliott: the discussion came up in #nethack recently, and someone said they used numpad for vim but vikeys for nethack
22:22:31 <elliott> haha
22:22:35 <elliott> joking, surely?
22:22:39 <elliott> olsner: <elliott> olsner: What indentation style do you use
22:22:53 <ais523> elliott: I don't think so
22:23:08 <kallisti> elliott: I use tabs as though there spaces.
22:23:10 <elliott> ais523: what was kerio ssh-fanboying about, btw?
22:23:14 <kallisti> so usually 8 tabs per indent
22:23:18 <olsner> let's see... sw=4 ts=4 sts=4 noet cinoptions={0,:0,t0,g0,^0,e0,n0,p2s,(2s,f0 cinkeys=0{,0},0),:,0#,!^F,o,O,e
22:23:25 <elliott> olsner: no, that was a non-vim question :)
22:23:30 <olsner> I guess that's the relevant part of my vimrc for indentation style
22:23:43 <kallisti> help vim scares me.
22:23:46 <kallisti> vim scares me more than emacs.
22:23:50 <ais523> I actually know at least one person, probably more, who's a casual vim fanboy (think offhand Emacs-bashing and using vim at every opportunity) yet spends their time moving around with the arrows in insert mode
22:24:11 <ais523> elliott: and asking if there was an ssh port for the amiga, when the topic came up about how good it was at playing nethack
22:24:19 <elliott> ais523: I can yell at them for you, if you'd like
22:24:30 <ais523> topic's changed, unfortunately
22:24:34 <ais523> you could yell at him on general principles
22:24:35 <elliott> I meant
22:24:35 <elliott> <ais523> I actually know at least one person, probably more, who's a casual vim fanboy (think offhand Emacs-bashing and using vim at every opportunity) yet spends their time moving around with the arrows in insert mode
22:24:40 <ais523> oh
22:24:42 <ais523> that's real-life knowing
22:24:47 <ais523> so you'd have to come to Birmingham
22:24:48 <elliott> oh
22:24:49 <elliott> my condolences
22:24:53 <kallisti> ais523: I do quite a bit of arrow-moving in Emacs when I probably could avoid it sometimes.
22:24:56 * elliott adds to "list of reasons to avoid birmingham"
22:25:03 <ais523> elliott: heh
22:25:05 -!- Phantom_Hoover has joined.
22:25:29 <ais523> the person I have in mind is my other boss (I have two part-time jobs, he's the boss for half the teaching one rather than Dan who's the boss for the other half + the PhD)
22:25:35 -!- pikhq has joined.
22:25:52 -!- pikhq_ has quit (Read error: Operation timed out).
22:26:02 -!- Ngevd has quit (Quit: dredmor time).
22:26:24 <ais523> hmm, is Dredmor good enough that I should buy it, I wonder? opinions of the channel?
22:26:26 <ais523> and how much time is left?
22:26:44 <kallisti> elliott: oh and google has once again changed
22:26:55 <olsner> elliott: I never learned what the style is called
22:26:59 <elliott> ais523: I haven't played it yet, but have you played any introversion games?
22:27:03 <olsner> but the one with braces on their own lines and unindented, tab indented, tabs at 4 spaces (obv. works fine for other tab widths...)
22:27:08 <ais523> I'm not sure; probably not
22:27:15 <elliott> olsner: Any alignment?
22:27:17 <ais523> unless I've played one without mentally noting the developer, which is possible
22:27:17 <elliott> ais523: Buy it
22:27:18 <kallisti> olsner: gross
22:27:29 <olsner> elliott: no, I just indent continuations by one or two indents
22:27:35 <kallisti> olsner: I prefer the open brace on the same line as the statement
22:27:41 <elliott> ais523: Uplink is amazing, Darwinia is meant to be even more amazing but I haven't played it yet, DEFCON is cool
22:27:48 <oklopol> ais523: DID YOU SEND A PAPER TO STACS
22:27:56 <ais523> oklopol: I don't think so
22:27:58 <elliott> ais523: 5 days are left
22:28:12 -!- oerjan has quit (Quit: Good night).
22:28:20 <oklopol> do you know stacs? i suppose it might be for more theoretical stuff than yours
22:28:31 <ais523> elliott: gah, they sent me an email in Markdown, that's almost enough to boycott them
22:28:33 <ais523> oklopol: I don't
22:28:44 <elliott> ais523: err, Markdown was intended to be suitable for emails
22:28:48 -!- Patashu has joined.
22:29:03 <elliott> ais523: but who did?
22:29:08 <ais523> elliott: Humble Bundle
22:29:15 <kallisti> elliott: it would be cool if df allowed you to have more control over how your soldiers fight
22:29:16 <ais523> and () around URLs is just so ugly
22:29:19 * elliott receives those as HTML mail
22:29:22 <kallisti> elliott: maybe with like... scripts.
22:29:27 <elliott> ais523: that's why you use the alternate link syntax
22:29:30 <kallisti> simple declarative scripts
22:29:35 <ais523> elliott: that one was using []()
22:29:36 <olsner> elliott: have I answered your question now? :)
22:29:39 <kallisti> that you can turn on and off. like "fighting styles"
22:29:43 <ais523> is /that/ enough of a reason to hate the email?
22:29:44 <elliott> olsner: yes, unfortuantely it means you're useless
22:29:51 <elliott> ais523: no
22:30:23 <olsner> oh noes! he said I'm useless
22:31:00 <oklopol> olsner you know you alright.
22:31:04 <kallisti> useless sounds fun when you pronounce the use as though it were the verb use
22:31:13 <kallisti> yooze instead of yoose.
22:31:30 <oklopol> also different emphasis
22:31:41 -!- Klisz has quit (Ping timeout: 248 seconds).
22:31:44 <elliott> wait, I know!
22:31:48 -!- Klisz has joined.
22:31:53 <ais523> gah, seems that Amazon is memorizing my credit card number too
22:32:04 <olsner> elliott: what use did you hope to have of me?
22:32:06 <ais523> in /addition/ to running no security checks on the card number
22:32:09 <oklopol> well isn't that nice, you don't have to give it to them every time
22:32:12 <kallisti> ais523: it just /really/ wants everything to be convenient for you doesn't it?
22:32:20 <ais523> err, debit card
22:32:28 <elliott> olsner: if you used tabs-for-indentation-spaces-for-alignment and vim
22:32:45 <ais523> kallisti: it's reasonable from Amazon's point of view, but not from the bank's
22:32:50 <kallisti> elliott: I use all-spaces, out of habit from my Python days.
22:33:03 <kallisti> ais523: fuck the bank. :P
22:33:05 <elliott> kallisti: you also don't use vim afaik
22:33:16 <kallisti> elliott: what makes vim important here?
22:33:18 <olsner> I think I've only seen alignmentism together with fundamentalist spaceism
22:33:29 <elliott> kallisti: you don't know
22:33:42 <kallisti> elliott: wow you have amazing deduction skills.
22:35:19 <olsner> oh well, I believe it has become DS9 time again
22:35:25 <kallisti> olsner: is "alignmentism" kind of like "being really OCD about aligning things"?
22:35:28 <kallisti> because I'm that.
22:35:59 <kallisti> I might switch to tabs though. it makes more sense to me.
22:36:15 <kallisti> tab-indents with spaces for alignment
22:36:16 <olsner> kallisti: something like that yes
22:36:40 <ais523> elliott: I'm also considering boycotting Introversion for making every single image on their webpage set a cookie
22:37:25 <kallisti> ais523: oh no, not cookies
22:37:43 <ais523> kallisti: there is no reason to set a cookie in more than one image from the same domain in a page
22:37:57 <ais523> and it aggravates people who approve/disapprove all cookies manually
22:38:02 <kallisti> I too am really concerned about this common nearly unavoidable feature of modern websites.
22:38:12 <kallisti> ais523: maybe you shouldn't do that. that sounds terrible.
22:38:14 <ais523> kallisti: cookies can be useful, when they have a reason to exist
22:38:28 <kallisti> like, basically every webpage starts with you clicking a bunch of dialogs right?
22:38:34 <ais523> the only sensible use of setting a cookie in an image that I've seen is Wikimedia's cross-site logon thing, though
22:38:42 <ais523> kallisti: far from every, maybe about 5-10%
22:38:53 <ais523> most of them are well-designed cookie-wise, and only require a couple of allow/deny
22:39:14 <ais523> quite a lot of sites set two cookies then modify one; I think it's some sort of anti-bot mechanism
22:40:23 <ais523> elliott: hmm, Uplink's premise seems very mindlessly destructive
22:40:33 <ais523> all the Introversion advertising just implies to me "this is not the sort of game ais523 would enjoy"
22:40:47 * elliott has never once looked at the advertising.
22:41:07 * kallisti has adblock installed in his brain.
22:41:32 <kallisti> if I go to the mall, then the people trying to advertise stores just disappear when they start talking to me.
22:41:46 <Sgeo> I'd say only 99% is mindless destruction
22:41:52 <kallisti> (note: I don't actually go to the mall, but it's happened before)
22:42:01 <elliott> ais523: anyway, Darwinia is one of the best-reviewed games I've ever heard of, if that means anything
22:42:07 <ais523> hmm
22:42:07 <kallisti> ais523: best game ever is magicka
22:42:14 <ais523> I suppose I'd prefer to trust reviewers I trust
22:42:20 <Sgeo> elliott, is it safe to say that 1% of Uplink is NOT mindless destruction?
22:42:29 <ais523> I bought Advance Wars based entirely on the recommendation of Teletext's computer game review column
22:42:35 <ais523> and then went and bought all its sequels
22:42:37 <kallisti> magicka is 100% careful deliberate mindless destruction
22:42:40 <elliott> Uplink would be hard to play if you just mindlessly destroyed thinsg.
22:42:47 <elliott> Generally people who want files stolen don't want you just to trash a machine.
22:42:58 <Sgeo> elliott, I'm in particular referring to plot
22:43:01 <Phantom_Hoover> <Sgeo> elliott, is it safe to say that 1% of Uplink is NOT mindless destruction?
22:43:20 <elliott> Sgeo: Umm, not the Arunmor storyline?
22:43:22 <kallisti> Phantom_Hoover is typing.
22:43:25 <Phantom_Hoover> It's more than possible to go through the game having never deleted anything, although I think the story does require it.
22:43:31 <Sgeo> elliott, I was referring to that in particular
22:43:38 <elliott> "Half the plot" = 1% of the game
22:44:05 <Phantom_Hoover> ISTR that the Arunmor storyline requires at least one destructive attack.
22:44:13 <kallisti> elliott: didn't you know that plot is only like 2% of a game?
22:44:34 <Sgeo> ais523, there you go. Half the plot, minus a bit, is not mindless destruction
22:44:55 <ais523> haha
22:45:03 <kallisti> magicka is probably better than uplink
22:45:09 <elliott> ais523: anyway, even if the /idea/ is mindless destruction, the gameplay isn't
22:45:10 <kallisti> I base this on my extensive knowlege of uplink
22:45:12 <kallisti> (not really)
22:45:16 <Phantom_Hoover> Oh, wait, no it doesn't.
22:46:02 <Phantom_Hoover> It requires that you destroy Arunmor's ISM as a false flag operation, but that's hardly mindless destruction.
22:46:13 <kallisti> GAH SPOILERS EVERYTHING IS RUINED
22:46:41 <elliott> Honestly, hardly any of Uplink is mindless destruction.
22:46:59 <elliott> It's not like even Andromeda hire you to FUCK SHIT UP.
22:47:38 <Phantom_Hoover> Yeah they do, they just think the shit is pernicious.
22:48:45 <Phantom_Hoover> ais523, anyway, Darwinia is extremely good.
22:49:05 <Sgeo> I can't even seem to get started with Darwinia
22:49:15 * Sgeo sucks at Darwinia. Can barely do the tutorial
22:49:28 <Phantom_Hoover> You can't make it through Garden?
22:49:31 <Phantom_Hoover> Seriously?
22:49:48 <Phantom_Hoover> The level which consists of "create squad, right click until virii are gone."
22:50:10 <kallisti> Sgeo: don't ever play starcraft.
22:51:51 <Sgeo> The virii keep killing my squad
22:52:12 <Sgeo> It took a while before I worked out that I needed to make a squad
22:52:22 * Sgeo is easily amused by the Darwinia intros
22:52:28 <Phantom_Hoover> Sgeo, did you know that there are these things called ranged attacks.
22:52:46 <Phantom_Hoover> You can use them to pick the virii off before they get near enough to damage your squad.
22:53:42 <ais523> Phantom_Hoover: real-time strategy?
22:53:57 <Phantom_Hoover> It's kind of a mixture, I suppose.
22:54:19 <Phantom_Hoover> Darwinian control is RTS, but I still haven't reached the point where that's meant to come in.
22:54:28 <kallisti> I think I just came up with the worst game idea ever: Mario Party MMO
22:54:53 <Phantom_Hoover> Otherwise, it's kind of a top-down shooter thing?
22:55:33 * Sgeo decides that playing Darwinia windowed is not feasible
22:56:52 <ais523> Phantom_Hoover: a mixture with which?
22:57:10 <ais523> kallisti: there's a game mode in Pokémon HeartGold/SoulSilver which is pretty much exactly that
22:57:11 <Sgeo> Yay wireless headphones
22:57:14 <ais523> but with Pokémon instead
22:57:15 <Phantom_Hoover> Top-down shooter thing.
22:57:29 <Phantom_Hoover> Sgeo, I managed fine.
22:57:50 <Phantom_Hoover> ais523, you directly control squads by left clicking on destinations and right clicking to fire.
22:58:22 <ais523> hmm, like an RTS except requiring more micromanagement
22:58:27 <Phantom_Hoover> You control Darwinians by promoting one of them to an officer, and controlling that through a similar method to a squad, except all the commands tell the Darwinians where to go.
22:58:51 <Phantom_Hoover> Not really; it's designed so you only use one squad at a time.
22:59:16 <Phantom_Hoover> They have autofire, but it's basically useless.
22:59:41 <ais523> bleh, my TV Tropes links-clicked-per-page rate is now sufficiently below 1 that I can never stay there very long
23:00:18 <Phantom_Hoover> ais523, probably the best way to see what the gameplay's like is just to play the first level, which is short and extremely easy if you're not Sgeo.
23:00:27 * Phantom_Hoover → sleep
23:00:27 <coppro> ais523: which mode is the mario party mmo?
23:00:28 -!- Phantom_Hoover has quit (Quit: Leaving).
23:00:31 <ais523> but that'd mean downloading and installign and running the game
23:00:40 <elliott> olsner: is there a way to stop vim from creating the .swp files
23:00:44 <ais523> coppro: oh, I've forgotten what it's called, but it has Poké Floats in it
23:00:47 <elliott> i keep getting OMG SWAP FILE when i open a vim
23:00:54 <kallisti> ais523: that's pretty much exactly how starcraft works. left click to move right click to fire.
23:01:13 <coppro> ais523: that's a smash bros stage
23:01:36 <ais523> coppro: I know, it's based on the Pokémon game mode (all smash bros stages but final destination are references to /something/)
23:02:11 <kallisti> Hanenbow I don't think is a reference to anything in the Nintendo universe.
23:02:19 <kallisti> but it's kind of a special stage.
23:02:28 <kallisti> also, just to nitpick, Battlefield isn't based on anything.
23:03:14 <kallisti> oh nevermind
23:03:22 <kallisti> Hanenbow (pronounced Hay-nin-bow) is a new unlockable stage in Super Smash Bros. Brawl. It comes from a music-themed Nintendo DS game, which features extensive interactivity with the microphone; called Electroplankton.
23:03:38 <ais523> coppro: found it: Wi-fi Plaza
23:03:48 <ais523> http://bulbapedia.bulbagarden.net/wiki/Wi-Fi_Plaza
23:05:03 <elliott> hmm, I hate booleans
23:05:22 <ais523> elliott: use Maybe () instead?
23:05:39 <kallisti> elliott: use const and flip const instead.
23:05:40 <elliott> heh
23:05:43 <kallisti> much better.
23:05:46 <elliott> those are just church booleans!
23:05:50 <kallisti> EVEN BETTER
23:07:14 <ais523> elliott: OK, use 1 and 2 then, and make it arbitrary which is true and which is false depending on what you want to use them for
23:07:26 <ais523> </intercal>
23:07:30 <elliott> these are all just different representations of booleans ;P
23:07:31 <elliott> *:P
23:07:48 <ais523> elliott: OK, then, use 01XLHWU-
23:08:00 <ais523> hmm, I've probably forgotten a possible value there
23:08:02 <kallisti> elliott: use Maybe Bool instead
23:08:02 <elliott> "The ulimit -v command can be used with ASan-ified binaries. However, you should remember that ASan consumes 16 terabytes of virtual memory for shadow state and the ulimit -v value should be set accordingly."
23:08:13 <kallisti> elliott: three-value logic ftw
23:08:26 <kallisti> elliott: or use integers for many-valued logic!!!
23:08:29 <ais523> kallisti: VHDL std_logic beats three-value logic out the water
23:08:45 <ais523> it models error conditions for booleans as well as the usual values 0 and 1
23:08:54 <ais523> oh, and Z
23:08:58 <ais523> 01XLHWZU-
23:08:59 <ais523> there we go
23:09:01 <ais523> nine-valued booleans
23:09:05 <kallisti> ais523: also unknown
23:09:12 <elliott> that's U, one presumes
23:09:41 <ais523> not quite; U means unknown state at power on, - means a value that's being disregarded (i.e. don't know and don't care)
23:09:52 <ais523> either is a reasonable description of unknown
23:11:11 <MDude> Are any of them mu?
23:11:18 <elliott> mu is a !boolean
23:11:34 <kallisti> elliott: if you solve the halting problem you can just use terminate and non-terminate
23:11:48 <elliott> that's another representation of a boolean!
23:11:55 <MDude> Well yes, it's not boolean, that's why it's included~
23:12:03 <kallisti> elliott: I'm not sure I understand what you want to replace booleans with then.
23:12:04 <MDude> Or should be.
23:12:04 <ais523> MDude: nope, the problem with mu is that it unasks the question, and the hardware equivalent would be sending electrons in the other direction
23:12:16 <ais523> except that typically, electrons flow one way for true and the other way for false
23:12:29 <elliott> ais523: ONLY TYPICALLY!!!
23:12:40 <elliott> kallisti: I never even said I wanted to, I just said I hate booleans
23:13:42 <MDude> I thought mu was more just "your question is stupid presumes something that is wrong".
23:13:51 -!- Klisz has quit (Quit: You are now graced with my absence.).
23:13:56 <elliott> your grammar is stupid presumes something that is wrong :D
23:14:00 <ais523> <NetHackWiki> The most important thing to remember is: Don't Panic. Or at least, panic at your leisure.
23:14:06 * Sgeo remembers a post on Less Wrong
23:14:46 -!- Klisz has joined.
23:14:52 <kallisti> elliott: dude I just figured out natural language
23:15:00 <kallisti> so basically you use a clever evaluation strategy.
23:15:16 <kallisti> for example: "your mom" evaluates to the value "your mom"
23:15:28 <kallisti> which can then be composed with other expressions
23:15:40 <elliott> hmm, this is annoying
23:15:54 <Sgeo> http://lesswrong.com/lw/po/three_dialogues_on_identity/
23:16:02 <elliott> ais523: quick, should I worry about a duplicate hashtable lookup?
23:16:22 <kallisti> elliott: nah it's still O(1)
23:16:25 <ais523> elliott: if you're not using a cryptosecure hash, yes
23:16:32 <kallisti> (:P)
23:16:35 <ais523> you're going to get collisions in practice
23:16:45 <elliott> ais523: err, wait, what?
23:16:47 <ais523> it's OK to use an inefficient resolution mechanism unless you have a very small hashtable, though
23:17:01 <ais523> elliott: I don't think anyone uses cryptohashes for hash tables
23:17:07 <elliott> ...
23:17:10 <ais523> but, you never know, with enough memory/disk space you /could/
23:17:33 -!- sebbu has quit (Ping timeout: 248 seconds).
23:17:36 <elliott> ais523: are you sure you haven't misread my statement?
23:17:36 <ais523> and for something like git/sg's stores by hash, it makes sense
23:17:39 <ais523> elliott: no
23:17:46 <elliott> ais523: try looking at it again
23:17:58 <ais523> I'm having difficulty parsing "duplicate hashtable lookup"
23:18:23 <elliott> aka two identical hashtable lookups to do one operation
23:20:41 <elliott> oh dear, I killed the wrong chromium proecss
23:22:44 <ais523> it can recover, right?
23:22:57 <elliott> no, it was the root one
23:23:50 <ais523> elliott: if Firefox gets accidentally killed, even the whole thing, it can go back to the point it was at upon restart
23:24:02 <ais523> often with a confirmation in case one of the pages crashes it again
23:24:05 <elliott> so can chrome
23:24:17 <ais523> yep, that's what I was referring to, I'd be shocked if Chrome couldn't
23:27:10 -!- sebbu has joined.
23:27:10 -!- sebbu has quit (Changing host).
23:27:11 -!- sebbu has joined.
23:28:20 <elliott> ais523: pls reassure me that hashtable lookups are fast
23:28:34 <ais523> elliott: they're almost as fast as array lookups on modern processors
23:29:29 <elliott> ais523: but that's one, two, three, four, five -- five array lookups in total!! five duplicated array lookups!
23:30:10 <ais523> elliott: wow, I wouldn't have expected /you/ to reference Sesame Street
23:30:35 <pikhq> Was that even aired in the UK?
23:30:38 <ais523> (which was recentishly in the news because someone hacked their YouTube channel to show hardcore porn)
23:30:41 <ais523> pikhq: indeed, on Channel 4
23:30:51 * elliott wasn't doing it intentionally, but I think there was some kind of ... subconscious resonant recognition before he hit enter.
23:31:07 <elliott> I was actually counting them out.
23:31:19 <elliott> pikhq: doesn't sesame street air /everywhere/? (also, "was"?)
23:31:39 <ais523> elliott: I'm not sure if it still airs nowadays in the UK
23:31:42 <ais523> admittedly, I haven't checked for years
23:32:44 <pikhq> elliott: Eh, could be. I'm not in the habit of monitoring where children's programming is aired.
23:33:19 <elliott> /* relies on implementation-defined arithmetic shift behaviour */
23:33:20 <elliott> I like how I leave comments for things like this but gleefully name new types foo_t
23:35:34 <elliott> bool world_handle_chunk(jint x0, jint y0, jint z0, jint xs, jint ys, jint zs, struct buffer zb, struct buffer zb_meta, struct buffer zb_light_blocks, struct buffer zb_light_sky, bool update_map);
23:35:40 <elliott> I can't help but feel this function needs a few more parameters.
23:36:34 <pikhq> bool world_handle_chunk(struct world_handle_chunk_args); There you go.
23:36:34 <elliott> wait, why is it never called with the last parameter set to false...
23:36:45 <elliott> pikhq: that's fewer!
23:37:18 <pikhq> And then you can call it with world_handle_chunk((struct world_handle_chunk_args){ ... })
23:37:30 <pikhq> (pointless unless you want a lot of things to be 0, of course)
23:43:29 -!- MSleep has joined.
23:45:49 -!- ais523 has quit (Ping timeout: 248 seconds).
23:46:53 -!- MDude has quit (Ping timeout: 248 seconds).
2011-12-02
00:03:06 -!- MDude has joined.
00:06:37 -!- MSleep has quit (Ping timeout: 248 seconds).
00:18:27 -!- pumpkin has joined.
00:20:29 -!- pumpkin has changed nick to copumpkin_.
00:21:10 -!- copumpkin has quit (Ping timeout: 252 seconds).
00:21:15 -!- copumpkin_ has changed nick to copumpkin.
00:31:41 -!- azaq23 has quit (Ping timeout: 248 seconds).
00:39:19 * elliott sends an email that pikhq will see without sending an email to pikhq.
00:42:17 <zzo38> Is it a public mailing list?
00:44:27 <pikhq> Yup.
00:44:34 <pikhq> I saw said email.
00:48:49 -!- azaq23 has joined.
00:48:57 -!- azaq23 has quit (Max SendQ exceeded).
00:49:30 -!- azaq23 has joined.
00:53:32 -!- pikhq_ has joined.
00:53:37 -!- pikhq has quit (Ping timeout: 252 seconds).
00:59:54 <elliott> pikhq_: ENJOY HAVING YOUR EYEBALLS ACCOSTED WITH WORDS
01:01:19 <elliott> kallisti: How do I run a subcommand in Perl safely, without running into shell interpolation problems
01:23:52 -!- azaq23 has quit (Quit: Leaving.).
01:26:34 <elliott> Wow, someone asked to become admin on the wiki who ISN'T Timwi :P
01:52:57 <elliott> Vorpal: wow, skyrim depends on steam even when bought in-store?
01:54:51 <pikhq_> Huh. I thought Valve was the only group that pulled that.
01:54:58 <pikhq_> s/group/company/
02:23:44 <pikhq_> http://memegenerator.net/cache/instances/400x/11/11536/11813483.jpg XD (translit: "hajimemasite"tte? NIHONGO JŌZU translat: "Nice to meet you"? *You're good at Japanese!*)
02:30:50 -!- allanpes12 has joined.
02:31:01 -!- allanpes12 has quit (Client Quit).
02:34:20 -!- hagb4rd has joined.
02:34:53 -!- pikhq_ has quit (Quit: Reconnecting).
02:34:59 -!- pikhq has joined.
02:41:41 -!- Gregor has quit (Ping timeout: 260 seconds).
03:31:25 -!- esowiki has joined.
03:31:25 -!- glogbot has joined.
03:31:26 -!- HackEgo has joined.
03:31:28 -!- EgoBot has joined.
03:31:29 -!- esowiki has joined.
03:31:30 -!- esowiki has joined.
03:31:38 -!- Gregor has joined.
03:31:51 <elliott> @tell Gregor Makes me kinda nervous that glogbackup parts before glogbot joins.
03:31:52 <lambdabot> Consider it noted.
03:32:51 <Gregor> elliott: glogbackup parts once glogbot joins #glogbot, which is the first one it joins.
03:32:51 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
03:33:12 <elliott> Gregor: OK, but people could still talk before glogbot rejoins every channel :P
03:33:13 <Gregor> @messages
03:33:14 <lambdabot> elliott said 1m 22s ago: Makes me kinda nervous that glogbackup parts before glogbot joins.
03:33:21 <Gregor> elliott: Fair 'nuff *shrugs*
03:34:41 <elliott> "Let's call the flag -Ewarn, by analogy with -Werror."
03:35:25 <Gregor> Uhhhh, is this some imaginary flag that converts /errors/ into /warnings/ (a concept which doesn't even make sense)?
03:36:09 <pikhq> It also solves the halting problem and summons bacon.
03:36:35 <elliott> Gregor: Yes. A flag that is actually being implemented in GHC :P
03:36:45 <elliott> More specifically, it turns certain kinds of type errors into warnings + runtime errors.
03:36:49 <elliott> For debugging.
03:37:15 <elliott> I don't think that quote was even a joke, and it was by one of the Simons (I forget which by now), so it might even be called that :P
03:38:59 <Gregor> Ah, I see.
03:39:06 <Gregor> I just assumed GCC due to the "by analogy to -Werror"
03:39:15 <Gregor> It makes more sense in many other contexts.
03:39:26 <elliott> GHC nabs gcc's -Wall, -W and -Werror.
03:39:28 <Gregor> The only errors there are in C are "I have no clue how to compile this shit, dude"
03:39:39 <elliott> Except -Wall means "a lot of warnings" and -W means "literally every warning"
03:40:11 <elliott> Similarly it copies gcc's -On options, where -O0 does nothing, -O does most optimisations, and -O2 slows compilation down massively and doesn't help in the majority of cases.
03:40:15 <elliott> So... they shifted the numbers a bit :P
03:40:21 <elliott> Gregor: Not QUITE.
03:40:34 <elliott> Gregor: You could feasibly bypass C's type checker.
03:40:43 <zzo38> Gregor: Possibly other errors are possible in C as well, such as lack of address space for declared variables
03:41:11 <elliott> zzo38: Sounds like "I have no clue how to compile this" to me :P
03:41:16 <Gregor> elliott: But virtually any case where the type checker fails, it fails because it doesn't know how to compile it.
03:41:28 <zzo38> elliott: OK, maybe that is what it is, then.
03:41:42 <elliott> Gregor: Not really? Pointer casting, f'rinstance.
03:41:50 <elliott> Which is a looooooot of errors in C prorgams.
03:41:58 <elliott> Well, at least a fair amount :P
03:42:07 <elliott> Are there even any other type errors??
03:42:46 <Gregor> I know of no pointer cast that would give you an error (as opposed to a warning) in default GCC. I suppose int x; int y; y = *x; wouldn't compile, but it also doesn't have enough information to.
03:42:59 <elliott> Cast x to (int *) :P
03:43:06 <Gregor> Then there's no error.
03:43:19 <pikhq> Then it "merely" hits UB.
03:43:33 <elliott> Gregor: I mean automatically.
03:43:48 <pikhq> *groan*
03:43:56 <elliott> Gregor: The machine has no notion of a pointer type, soooo :P
03:44:09 <Gregor> elliott: But how do you know it wanted an /int/ * as opposed to a /char/ * or a /wtf/ *? That's the "doesn't know how to compile it" part.
03:44:22 <elliott> Gregor: Because y is an int.
03:44:24 <elliott> Duh.
03:44:29 <elliott> It's like you're not even trying!
03:44:34 <Gregor> Heh, fair 'nuff.
03:44:38 <pikhq> Perhaps you want (int*)(char*) though?
03:44:44 <Gregor> But that's not so much bypassing the type checker as doing nonsense type inference :P
03:44:50 <elliott> pikhq: Well fuck you, you're compiling an invalid program, be happy it works :P
03:44:55 <elliott> FSVO work
03:45:10 <elliott> Gregor: Now I want a list of gcc's errors...
03:45:18 <Gregor> :P
03:45:22 <zzo38> I think in C, it ought to be error to use something that isn't a pointer where a pointer is required unless you have an explicit cast (possibly with some exceptions if it would help to do so)
03:45:40 <pikhq> zzo38: In C, it is.
03:45:50 <Gregor> pikhq: Mmmmm, not quite.
03:46:01 <pikhq> Well, I think except for confusing circumstances.
03:46:03 <Gregor> pikhq: int a(int *x); void foo() { a(42); }
03:46:04 <zzo38> pikhq: In GCC it is usually a warning but not an error when I do that
03:46:16 <pikhq> Most notably, I *think* using an integer literal as a pointer is a warning.
03:46:20 <elliott> Dear C: WHY DON'T YOU HAVE LAMBDAS
03:46:24 <Gregor> pikhq: 'tis, 'tis.
03:46:29 <elliott> #define TRANSFORM_RGB(expr) \
03:46:29 <elliott> do { \
03:46:29 <elliott> uint8_t x; \
03:46:29 <elliott> x = rgba.r; rgba.r = (expr); \
03:46:29 <elliott> x = rgba.g; rgba.g = (expr); \
03:46:30 <elliott> x = rgba.b; rgba.b = (expr); \
03:46:31 <elliott> } while (0)
03:46:33 <elliott> I WANT TO REPLACE THIS HORRIBLE THING
03:46:48 <Gregor> pikhq: But dereferencing an integer literal is a no-go as it doesn't know the pointer type.
03:46:57 <pikhq> elliott: https://github.com/pikhq/clambda-demo/blob/master/lambda.h
03:47:07 <elliott> Gregor: See, B just only had words.
03:47:09 <elliott> So there was no problem.
03:47:14 <elliott> You'd read a word, obviously.
03:47:22 <Gregor> :)
03:47:29 <elliott> B: better than C?
03:47:33 <zzo38> It is due to the C preprocessor having a few thing missing. Some things I made in Enhanced CWEB allow you to add your own compile-time codes
03:47:53 <elliott> pikhq: I can't tell you how INTENSELY willing I am to use this.
03:47:57 <elliott> It's giong into mcmap RIGHT NOW.
03:48:00 <elliott> *going
03:48:09 <zzo38> There is another programming language BLISS which has far more powerful macro capability and record types than C
03:48:22 <elliott> pikhq: What happened to town, btw (GITHUB STALKING IS BEST)
03:48:38 <pikhq> elliott: I didn't do much with it?
03:48:47 <elliott> Bah :P
03:48:51 <pikhq> I've spent the past few months basically doing fuck-all on github. :P
03:49:39 <elliott> pikhq: And it mixes tabs and spaces too :'(
03:52:15 -!- MDude has quit (Ping timeout: 248 seconds).
03:53:46 <zzo38> The STRUCTURE command in BLISS allows you to do a lot of things; the structure can contain arbitrary commands (it does not have to contain only field declarations)
04:03:33 <zzo38> OWN X; LITERAL MARK = 4; MACRO M = MARK + %UNQUOTE MARK %; BEGIN LITERAL MARK = 5; X = M; END What will the value of X be in this program? It will be 9
04:07:44 <Gregor> int *a = alloca(sizeof(*a)); /* this works, but feels so wrong */
04:08:36 -!- kmc has quit (Quit: Leaving).
04:09:10 <pikhq> Sure 'nough.
04:09:31 <elliott> Gregor: Which part of it
04:09:32 <pikhq> It also involves like 20 preprocessor directives to use it "portably".
04:16:50 <Gregor> elliott: The fact that that the definition of a refers to a :P
04:17:02 <elliott> Gregor: Uhh, but that's a standard idiom with malloc...
04:17:11 <elliott> To avoid repeating yourself in case you e.g. change a's type.
04:17:32 <Gregor> Oh? I don't think I've seen that ... usually I've seen type a = malloc(sizeof(type));
04:17:38 <Gregor> Err, type *a of course
04:17:46 <elliott> Gregor: ...type *a?
04:17:55 <elliott> Oh, right.
04:18:05 <elliott> Gregor: Yeah, that's more common, but *a is fairly common too.
04:18:12 <Gregor> Hm *shrugs*
04:18:26 * elliott usually embds type because he finds refactoring the expression to be a more compelling example than retyping a variable.
04:18:30 <Gregor> Long story short, I'm at 2037 code bytes :P
04:18:41 <elliott> Of course I'd prefer to be able to just omit the "type " on the LHS :P
04:18:46 <elliott> Bring back auto, dudes!
04:18:54 <elliott> C++ did it!
04:19:10 <elliott> Gregor: For what this time?
04:19:30 <Gregor> elliott: ... same as always?
04:19:47 <elliott> Gregor: Well, OK, you talked about doing something else at one point though :P
04:20:53 <Gregor> I considered it, couldn't think of a way to make it truly obtuse that wasn't also lame.
04:21:52 <Gregor> ALTHOUGH WE COULD DO A COLLAB
04:23:43 <elliott> Gregor: You mean the MIDI thing?
04:24:21 <Gregor> Yuh
04:24:44 <elliott> Gregor: I dunno, I don't think it'd have to be very obfuscated if it produced something nice-sounding given untweaked input...
04:25:15 <elliott> But "nice" is relative, I'm sure the demoscene could synthesise semi-realistic piano and strings within IOCCC limits :P
04:25:15 <Gregor> Exactly.
04:25:41 <Gregor> That was the issue, I couldn't think of a way to make it obtuse.
04:25:50 <pikhq> elliott: ... If they don't already.
04:25:57 <Gregor> Also, piano: Sure. Pianos are easy. Strings: lolno.
04:25:57 <elliott> Gregor: Are we using different definitions of obtuse?
04:26:13 <elliott> I don't think obtuseness really matters if the result is impressive... the golfing makes code pretty hard to read to start with :P
04:26:18 <elliott> Strings was facetious.
04:27:19 <Gregor> Idonno, I just don't feel like the result would be very obfuscated.
04:27:32 <Gregor> Nor do I think it would be sufficiently impressive, though maybe it would be.
04:28:44 <elliott> I was thinking maybe a MOD player instead... those sound better, but that loses the synthesis element, and I dunno if the effects stuff that MOD players has are hard enough to implement that it'd be impressive :P
04:29:34 <Gregor> Hmmmmmmmmmmmm
04:29:38 <Gregor> Idonno much about MOD.
04:29:57 <Sgeo> http://www.scp-wiki.net/clef101
04:30:52 <elliott> Gregor: All I know is it has samples and channels of notes :P
04:31:39 <elliott> Sgeo: six paragraphs in and this is the worst writing ever
04:31:51 <elliott> seven paragraphs and it's worse
04:32:03 <elliott> wow this is bad i'm not going to read it any more
04:32:34 <Gregor> elliott: That's all I know toooooo 8-D
04:32:37 <Sgeo> http://scp-wiki.wikidot.com/skybluesky
04:33:42 <zzo38> Is there any MML compiler to MOD?
04:34:15 <elliott> Gregor: So there's at least hacky resampling involved (in case /dev/audio doesn't have the right Hz), modifying the tone of samples, and I think applying various effects to a sample.
04:41:18 <Gregor> Hmmers.
04:44:23 <tswett> Accessing memory-mapped files is just as efficient as accessing ordinary memory, as long as I don't do anything that actually requires disk access. Right?
04:47:02 <elliott> tswett: Are you asking whether mmap() caches?
04:47:08 <elliott> Because, yes, your OS has disk caches.
04:47:21 <tswett> Excellent.
04:47:32 * tswett replaces malloc with mmap. Save all the things.
04:47:45 <elliott> tswett: malloc is implemented with mmap for large enough allocations in all common libcs.
04:47:48 <elliott> Something like >4k.
04:48:10 <tswett> Huh, neat.
04:48:24 <shachaf> @where #haskell
04:48:24 <lambdabot> Right here, silly!
04:48:27 <shachaf> Did you know?
04:48:48 <elliott> @where #esoteric
04:48:49 <lambdabot> I know nothing about #esoteric.
04:48:52 <elliott> @where+ #esoteric Right here, silly!
04:48:53 <lambdabot> It is stored.
04:54:27 -!- Jafet has joined.
04:57:47 <Sgeo> http://www.scp-wiki.net/scp-1025
04:58:02 <Sgeo> elliott, read that completely, don't stop reading just because
04:58:19 <elliott> But I like stop reading just because!
05:01:52 <elliott> Sgeo: OK that was amusing.
05:26:41 <elliott> @tell kallisti By the way, (const undefined) is also strict, but doesn't evaluate its argument.
05:26:41 <lambdabot> Consider it noted.
05:27:01 <elliott> @tell kallisti Proof: const undefined _|_ = undefined = _|_.
05:27:02 <lambdabot> Consider it noted.
05:32:36 -!- jix has quit (Ping timeout: 240 seconds).
05:33:18 -!- jix has joined.
05:34:36 -!- Zuu has quit (Read error: Connection reset by peer).
05:39:29 -!- Zuu has joined.
05:53:57 -!- GreaseMonkey has quit (Quit: The Other Game).
06:29:47 <elliott> @ping
06:29:48 <lambdabot> pong
06:32:02 <elliott> took you a while
06:35:21 -!- elliott has quit (Quit: Leaving).
06:35:25 -!- elliott_ has joined.
06:38:29 <zzo38> What is the way to select a $2n$ by $2n$ matrix of booleans such that there is exactly $n$ true in each row and in each column, from all possible ones, uniformly?
06:40:43 <elliott_> It's impossible.
06:41:07 <elliott_> (Note: I am lying.)
06:45:52 -!- tytythetyty has joined.
06:45:59 <monqy> hi
06:46:50 <tytythetyty> hi
06:47:48 <tytythetyty> i am having trouble with stochastic cellular automata, and i stumbled across this link (http://www.conwaylife.com/forums/viewtopic.php?f=3&t=398) do you guys talk about that in here??
06:48:21 <elliott_> sure
06:48:27 <zzo38> Ask the question; they sometimes talk about various things in here and possibly someone knows
06:48:38 <elliott_> oh, ##gameoflife, heh
06:48:42 <elliott_> that channel lasted uh... a few days
06:48:51 <tytythetyty> lol sad
06:48:58 <elliott_> Phantom_Hoover is still a regular here though
06:49:06 <elliott_> I can't say we get CA talk very often but when we do it tends to be lively
06:49:18 <elliott_> although it's quiet hours right now
06:49:25 <tytythetyty> my question is to design two different stochastic cellular automata:
06:49:36 <tytythetyty> 1. Design a 1D stochastic cellular automata that uses on rules involving two adjacent cells at at time that (with high probability) do the following tasks:
06:49:40 <tytythetyty> a. If the majority of cells are initially 0, the final state is all zeros. If the majority of cells is initial 1, the final state is 1.
06:49:45 <tytythetyty> b. Starting with all cells at 0, reach a final state in which one cell is a 1 and the rest are 2.
06:50:11 <elliott_> hmm, cool
06:50:17 <elliott_> this isn't homework, is it? :p
06:50:32 <tytythetyty> ABSOLUTELY NOT :P
06:51:11 <elliott_> oklopol works in CA, although you may find his answers rather unwantedly vague for a question he considers too trivial :P
06:51:37 <elliott_> and I don't think he's here right now
06:51:45 <tytythetyty> lol, that is typically the case for IRC channels
06:52:10 <elliott_> not us! we're helpful and cuddly and nice. well... occasionally
06:52:19 <tytythetyty> haha nice
06:52:30 <tytythetyty> do you have any idea on this??
06:52:47 <elliott_> not personally, but there are like three people off the top of my head who might be able to help who aren't here right now :P
06:52:55 <tytythetyty> sux
06:53:31 <elliott_> ask monqy; you probably won't get an answer but the non-answer might be entertaining
06:53:43 <tytythetyty> lol kk
06:53:57 <tytythetyty> wouldn't he just see this?? how should i ask??
06:54:06 <elliott_> smoke signals
06:54:20 <elliott_> he responds by sending "hi"s in morse code
06:55:06 <tytythetyty> I SUMMON THY MONQY
06:55:08 <tytythetyty> .... .. .... .. .... ..
06:55:25 <monqy> hi
06:55:27 <Jafet> @google majority problem
06:55:29 <lambdabot> http://en.wikipedia.org/wiki/Majority_problem_(cellular_automaton)
06:55:29 <lambdabot> Title: Majority problem (cellular automaton) - Wikipedia, the free encyclopedia
06:56:47 <monqy> I don't know enough about cellular automata
06:57:24 <tytythetyty> me neither :P
06:59:53 <zzo38> Do you know how I could figure out the answer to my question?
07:01:01 <monqy> ask someone who knows and is willing and able to answer appropriately
07:02:08 <tytythetyty> lol
07:02:16 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:08:52 <Sgeo> elliott_, update
07:44:25 <zzo38> I think I might have figured out what contramonads and contracomonads is supposed to be: contrareturn :: (a -> m ()) -> m a; contrajoin :: m (m a) -> m (a -> m ()); contraextract :: w a -> a -> w (); contraduplicate :: w (a -> w ()) -> w (w a); I don't know how good this is, though. Maybe I made a few mistakes?
08:10:31 <olsner> elliott_: yes, there's a setting for it
08:12:34 <olsner> elliott_: :help swapfile
08:35:26 <Sgeo> http://www.scp-wiki.net/sandrewswann-s-proposal
08:36:08 <zzo38> Does "But your thoughts are nothing except hallucination!" have anything to do with "greedy reductionism"?
08:39:51 -!- monqy has quit (Quit: hello).
08:47:49 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
08:53:59 <Slereah> I wonder what research on cellular automatons look like
08:54:17 <Slereah> How much is math and how much is just trying stuff on it
08:59:51 -!- zzo38 has quit (Remote host closed the connection).
09:28:08 <kallisti> elliott_: hi
09:28:09 <lambdabot> kallisti: You have 2 new messages. '/msg lambdabot @messages' to read them.
09:28:14 <kallisti> qx'blah blah blah'
09:30:46 <kallisti> elliott_: is how you prevent Perl from interpolating in a shell command
09:31:06 <kallisti> if you're using system or whatever else you would just pass a single quoted string obviously.
09:33:35 <kallisti> > (const undefined undefined) `seq` "hi"
09:33:38 <lambdabot> "*Exception: Prelude.undefined
09:36:22 <kallisti> elliott_: similarly, using single quotes as a delimiter for any other interpolating quoke-like operator (except for qq, which always interpolates) will turn off interpolation
09:37:29 <oklopol> Slereah: there is a lot of bullshit being done with cellular automata, which is why we're not taken very seriously
09:37:42 <kallisti> s'blah'blah', m'blah', qr'blah'
09:37:51 <kallisti> ...I... don't remember if qw interpolations.
09:38:16 <kallisti> !perl my ($x,$y,$z) = 1..3; print qw($x $y $z)
09:38:19 <EgoBot> ​$x$y$z
09:38:21 <Jafet> oklopol: clearly you should work for a prestigious research group like Wolfram
09:38:22 <kallisti> nope
09:38:36 <oklopol> :D
09:38:54 <Jafet> I hear they get great press coverage
09:39:01 <kallisti> !print ?bahahahahaha?
09:39:22 <kallisti> !print $_="hi"; print ?hi?
09:39:32 <kallisti> !print $_="hi"; print /hi/
09:39:35 <oklopol> actually wolfram invented one of the most important concepts of CA on which i too work every day
09:39:37 <oklopol> the limit set
09:39:43 <oklopol> well he didn't actually define it
09:39:48 <oklopol> because he's a retard
09:40:04 <oklopol> but still, he had quite an influence there
09:40:42 <oklopol> or maybe he actually gave a definition, but you know for the sake of this story.
09:40:59 <oklopol> at least he doesn't have any actual results
09:41:39 <oklopol> Slereah: anyhow, searching for counterexamples is, as in any branch of math, rather ad hoc
09:42:54 <oklopol> otherwise, we use measure theory, compactness arguments, symbolic dynamics and ergodic theory on a daily basis. but any sort of deep results are needed rarely.
09:43:40 <oklopol> just the basic theory
09:44:54 <oklopol> for instance, i've needed a point whose ergodic fibre is the uniform bernoulli measure a few times when studying the besicovitch space, such a point is not that easy to construct, but it follows from ergodic theory that pretty much all points have this property
09:46:48 <oklopol> symbolic dynamics is really where most of the math happens, so if CA wasn't so easy to write, i'd always talk about endomorphisms of the shift just to keep the CA people out
09:47:39 <oklopol> there was this guy in a conference who said he's a computer scientiest but also does a lot of math. he said he's working on cellular automata, and said that HE HAD HEARD THAT YOU CAN GIVE A TOPOLOGY TO THE FULL SHIFT
09:47:43 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
09:48:12 <kallisti> oklopol: whoosh
09:48:16 <kallisti> there went the joke
09:48:18 <kallisti> over my head.
09:48:30 <oklopol> kallisti: you can't do anything with CA without the cantor topology on the space
09:48:43 <kallisti> ah.
09:48:54 <kallisti> see I thought you were implying it was impossible or something which... sounded unlikely to me.
09:49:23 <oklopol> he studied something like gliders in elementary CA
09:49:29 <oklopol> what the fuck kind of research is that
09:49:33 <kallisti> ...heh
09:49:36 <kallisti> DUDE THEY LIKE
09:49:37 <kallisti> MOVE
09:49:39 <kallisti> IN A LINE
09:49:46 <kallisti> ITERATING IN A CYCLE
09:49:46 <oklopol> that's so coooool
09:50:10 <Jafet> I guess that's the non-mathematical side of CA research
09:51:09 <oklopol> Slereah: if you want links to the good kind of research, i can show some good representatives of the techniques
09:51:39 <oklopol> if you want to know more about the bad kind, you could always read nkos
09:53:42 <kallisti> > sum . map (\(n,x) -> 2*x / 3^n ) $ zip (cycle [0,1]) [1..]
09:53:46 <lambdabot> mueval-core: Time limit exceeded
09:54:14 <kallisti> oklopol: wow shocking
09:55:01 <oklopol> this is a pretty good representative: http://www2.math.umd.edu/~mboyle/papers/automata20oct98.pdf
09:55:42 <kallisti> I wonder how one would convert points in a cantor space to real numbers in Haskell. :>
09:55:47 <kallisti> it seems... difficult.
09:59:59 <oklopol> tytythetyty: that's an easy consequence of http://www.cs.bu.edu/~gacs/papers/long-ca-ms.pdf
10:00:21 <oklopol> sorry, i didn't read any log
10:00:56 <tytythetyty> kk thanks! i will look at this :)
10:01:34 <kallisti> lol fault tolerant cellular automata
10:02:10 <Jafet> CAs can be used to model networks
10:02:19 <Jafet> So yes, you might ask whether they're fault tolerant
10:02:49 <oklopol> tytythetyty: but apart from being a consequence of that, stochastic automata are very hard to work with, and i don't know if anyone but gacs has really ever succeeded
10:03:09 <oklopol> tytythetyty: err actually
10:03:42 <oklopol> i think if i told someone at work that i just linked gacs to some random guy on irc to read, they would punch me in the face
10:04:06 <oklopol> see, apart from gacs, only one person has ever managed to read all of that
10:04:13 <tytythetyty> lol i was typing this
10:04:14 <tytythetyty> phosphoglycerate kinase
10:04:17 <tytythetyty> dammmit!
10:04:18 <tytythetyty> nevermind
10:04:35 <tytythetyty> i was gonna ask if there is a specific section that is applicable??
10:04:36 <tytythetyty> in that pdf
10:04:38 <oklopol> why did you ask your question in the first place?
10:05:20 <kallisti> "So there are as many points in the Cantor set as there are in [0, 1], and the Cantor set is uncountable "
10:05:23 <oklopol> well you probably need only a part of the construction. i can link you the reader's guide
10:05:27 * kallisti mind blown
10:05:30 <tytythetyty> i am doing some work in a Synthetic Biology seminar
10:05:36 <tytythetyty> and it was a challenge
10:05:44 <oklopol> http://www.cs.bu.edu/~gacs/papers/long-ca-ms.pdf
10:05:50 <tytythetyty> to people in the seminar
10:05:59 <oklopol> who gave it?
10:06:32 <tytythetyty> do you know random people in synth bio??
10:06:33 <tytythetyty> :P
10:07:09 <oklopol> well no but i mean did they know what they were asking... of course if you just want to have good approximations, you can just try stuff out
10:07:49 <tytythetyty> oh i see haha
10:07:58 <oklopol> gacs' automaton, afaiu, works with any probability, and simulates any CA you like reliably with high probability
10:08:00 <tytythetyty> yeah, he likes this stuff
10:08:39 <kallisti> synth bio... is that similar to mathematical biology?
10:08:40 <tytythetyty> cool, i will look at these, thanks!
10:08:44 <tytythetyty> errr
10:08:45 <tytythetyty> not really
10:08:53 <oklopol> i should ask what the exact results are at the university, i'm more into symbolic dynamics myself
10:09:07 <oklopol> so i don't really wank to gacs' paper unlike most CA ppl
10:09:42 <oklopol> since it solved like every problem ever
10:10:06 <tytythetyty> math bio is more modeling bio systems with math, synth bio is more engineering genetic pathways
10:10:13 <oklopol> well incidentally it didn't solve the problem of finding a uniquely ergodic CA which my colleague did this week, awesome right
10:10:47 <tytythetyty> i think so :P not sure what a uniquely ergodic CA is
10:17:24 <kallisti> tytythetyty: wow, I didn't realize how far we've come with genetic engineering.
10:17:30 * kallisti is reading about gene networks.
10:18:51 <tytythetyty> kallisti: if you have access to this somehow (i.e. an academic proxy), or an actual subscription, this is a good overview
10:18:52 <tytythetyty> http://www.sciencemag.org/site/special/syntheticbio/
10:19:10 <kallisti> not currently no.
10:19:27 <kallisti> well, hmmm, actually I may be able to.
10:21:18 <oklopol> tytythetyty: uniquely ergodic means there's only one dynamics-invariant measure for your dynamical system (the dynamics being the CA). this measure is then automatically ergodic.
10:21:25 <oklopol> but in the case of CA
10:21:26 <tytythetyty> kallisti: this is interesting too, this is the undergraudate synth bio team at my school, who recently won the international undergrad competition (http://2011.igem.org/Team:Washington)
10:21:46 <oklopol> it means that in every column, the density of some symbol 0 always gets bigger and bigger
10:21:49 <tytythetyty> oklopol: ahhh i see
10:23:36 <oklopol> but umm i applied for this grant and they said they'd notify recipients by end of march. i heard rumors that i got it but there's another ville who applied and now no one just knows anything. except that i wasn't notified, so i probably didn't get it. well, today, i got an email that says something like dear recipient, please fucking register for our party already.
10:24:35 <oklopol> and i'm confused, did they just send that to everyone who applied and filter out non-recipients by addressing it to recipients (non-recipients have not been notified)
10:25:38 <oklopol> i should probably go talk to someone at the university... we already changed where i'm getting my next year's funding based on me not getting the grant :D
10:25:52 <oklopol> erm i mean my whole 4 year plan
10:27:15 <Jafet> Go to the party and make so many friends that they can't kick you out
10:27:44 <oklopol> good idea
10:27:46 <oklopol> bye
10:28:12 <kallisti> @source nDerivs
10:28:12 <lambdabot> nDerivs not available
10:28:16 <kallisti> :t nDerivs
10:28:17 <lambdabot> forall a i. (Num i, Num a) => (Dif Expr -> Dif a) -> i
10:28:24 <kallisti> > nDerivs sin
10:28:28 <lambdabot> mueval-core: Time limit exceeded
10:28:31 <kallisti> > nDerivs log
10:28:37 <lambdabot> mueval-core: Time limit exceeded
10:29:15 <tytythetyty> grants are a bitch sometimes :/
10:29:19 <tytythetyty> and interviews
10:29:34 <tytythetyty> i had a microsoft interview today, didn't go as well as it should have
10:35:51 -!- hagb4rd has joined.
10:37:42 <tytythetyty> kallisti and oklopol: good talking to you guys! thanks for the help
10:37:45 <tytythetyty> have a good night
10:38:22 <kallisti> night
10:38:36 -!- tytythetyty has quit (Quit: Page closed).
10:57:25 -!- itidus21 has quit (Ping timeout: 240 seconds).
11:17:51 <hagb4rd> hail eris
11:21:32 <kallisti> hail
11:38:41 -!- oerjan has joined.
12:03:57 <kallisti> http://en.wikipedia.org/wiki/Mystical_Ninja_Starring_Goemon
12:04:01 <kallisti> has anyone else played this game?
12:04:45 -!- ais523 has joined.
12:13:23 -!- Phantom_Hoover has joined.
12:28:42 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:32:55 <kallisti> ais523: hi
12:33:04 <ais523> hi kallisti
12:33:10 <kallisti> http://en.wikipedia.org/wiki/Mystical_Ninja_Starring_Goemon
12:33:13 <kallisti> have you played this game?
12:33:17 <kallisti> N64 game.
12:33:32 <ais523> no
12:33:35 <ais523> I don't own an N64
12:34:04 <ais523> (I /have/ played a very few N64 games on other people's N64s, but a small selection)
12:34:28 <kallisti> ah
12:34:53 <kallisti> some weird Japanese game I played as a kid. I just rediscovered it and my nostalgia glands kicked in.
12:34:57 <Vorpal> <elliott> Vorpal: wow, skyrim depends on steam even when bought in-store? <-- yes
12:35:33 <kallisti> "A cellular automaton is said to be reversible if for every current configuration of the cellular automaton there is exactly one past configuration (preimage)."
12:35:49 <kallisti> psh, come on. you can totally non-deterministically reverse to multiple past images.
12:35:50 <ais523> elliott_: I'm surprised that you're surprised at that; it's become more and more common recently
12:35:55 <ais523> I'm upset by it, but not surprised
12:36:12 <kallisti> what's wrong with requiring Steam? it's free right?
12:36:40 <ais523> kallisti: assumes you're going to have a network connection when you play the game
12:36:47 <ais523> this is almost always not the case for me, I typically play games offline
12:37:09 -!- elliott_ has quit (Ping timeout: 245 seconds).
12:37:33 <kallisti> I was under the impression that Steam had an offline mode as well.
12:37:52 * kallisti doesn't actually play PC video games often.
12:38:20 <kallisti> but when I do, I prefer Dos Equis.
12:38:30 <Jafet> Only pirates, criminals and communists play offline
12:38:55 <Jafet> And people who might not live in the first world, but they're mostly pirates, criminals and communists anyway
12:39:09 <ais523> bleh, I prefer "anarchists, lunatics, and terrorists"
12:39:20 <fizzie> Steam has an "offline mode" if you check the "save login details" box, or something like that.
12:39:37 <ais523> but you'd still need an Internet connection to install the game
12:39:58 <fizzie> Yes, well, it's a Internet-based delivery system, after all. But not when you play it.
12:39:58 <ais523> it used to be that you could go to a shop, buy a game, take it home, and install it on a non-networked computer
12:40:15 <ais523> and the only DRM would be requiring the disk to stay in the drive, together with measures to make the disk harder to copy
12:41:01 <kallisti> ais523: it also used to be that there was this thing called "dial-up"
12:41:04 <ais523> meanwhile, "Scaffolding" seems like an interesting name for an esolang
12:41:11 <ais523> kallisti: it still exists, believe it or not
12:41:16 <kallisti> well, yeah..
12:41:35 <ais523> at least one ISP gave free dial-up internet access to Egypt when the government cut off all the ISPs
12:41:35 <kallisti> it much the same way that floppy drives still exist.
12:41:45 <ais523> on the basis that they had all this dial-up capacity that was hardly being used
12:41:50 <ais523> kallisti: I actually have a USB floppy drive
12:42:00 <kallisti> .......why
12:42:30 <kallisti> are you a digital archeologist?
12:42:31 <fizzie> At one point in time multiple laptops came out bundled with USB floppy drives.
12:42:37 <kallisti> unearthing ancient tombs filled with floppy disks?
12:42:49 <ais523> kallisti: because I used to back things up to floppy disks, back before CD burners were common
12:43:24 <ais523> also, because floppy disk is quite a convenient way to quickly transfer files from one computer to another; it's pretty much as fast as doing it via USB stick, just with a lower capacity
12:43:51 <kallisti> I have this thing
12:44:09 <kallisti> where I can put up to 5 GBs of information onto a server probably hundreds of miles away.
12:44:17 <kallisti> and then log into that server on another computer
12:44:23 <kallisti> and download the information
12:44:41 <kallisti> I guess it's not as fast as a floppy
12:44:48 <kallisti> when you're like, physically next to both computers
12:45:09 <ais523> why would you send data hundreds of miles to transfer it across the room?
12:45:11 <fizzie> According to Wikipedia, "the average sequential read speed is 30–70 kB/s".
12:45:34 -!- elliott_ has joined.
12:45:49 <ais523> if both computers are on the same network, I'd just use that network to send it
12:46:03 <kallisti> ais523: it's okay it's traveling at light speed.
12:46:15 <kallisti> and yeah
12:46:18 <ais523> the only time bouncing off an external server would make sense for a same-room transfer would be if there was some sort of firewall between them
12:46:20 <kallisti> it would be silly.
12:46:45 <kallisti> ais523: well I'm referring to Dropbox. if you have it installed on both computers it's even easier.
12:46:50 <kallisti> but it's also possible to login from any computer.
12:46:59 <kallisti> via a web interface
12:47:05 <ais523> (extreme example: the wireless connection here in my office is outside the department's firewall, the wired connection is inside, so I'm careful not to use both at once; and the wired connection is really heavily monitored, to the extent that Chrome refuses to access Google, because I think it's MITMing the https)
12:47:10 <oerjan> that's ridiculous, i demand heavy speed!
12:47:23 <fizzie> We used to use MageLink for transferring files between the computers at the computer classroom at school. It's the spiffiest-looking IPX file transfer thing there is.
12:47:38 <ais523> haha, now I remember XPDT
12:47:48 <fizzie> Sadly an image search for 'MageLink' is not being very helpful.
12:48:14 <ais523> it seems that none of the file-transfer stuff that comes with Windows allows transferring over a serial link from Windows 95 to Windows XP, or the other way round
12:48:14 <ais523> so I wrote my own program to do that
12:48:54 <fizzie> Do they still bundle a LapLink-like thing in modern Windowses? I suppose not.
12:49:24 <fizzie> The "null-printer" cable, the silliest name.
12:49:54 <fizzie> (By analogy with null modem cables.)
12:53:21 <fizzie> Debian's installation manual has a PLIP-based installation method described.
12:54:43 -!- ais523 has quit (Ping timeout: 252 seconds).
12:56:33 <fizzie> "Windows Vista drops support for the Direct cable connection feature [4] as ethernet, Wi-Fi and Bluetooth have become ubiquitous on current generation computers. To transfer files and settings, Windows Vista includes Windows Easy Transfer, which uses a proprietary USB-to-USB bridge cable known as the Easy Transfer Cable." <- right, they've given it up.
12:59:57 -!- ais523 has joined.
13:02:36 <kallisti> On Talk:Afterparty: This sure doesn't answer anything. Also, it's "after party", not one word. It's also a lame concept. (Wow, I wanted to go on a pro-Communist rant there, but stopped.) More needs to be written, otherwise, it just seems like a myth of some sort. Besides (stopping myself again from going totally anti-suburbs here). Apple8800 (talk) 17:26, 29 March 2011 (UTC)
13:03:43 <kallisti> fucking capitalists and their afterparties (one word)
13:06:47 -!- itidus21 has joined.
13:09:50 <kallisti> itidus21: hi
13:32:10 -!- kallisti has quit (Quit: Lost terminal).
13:36:28 <Vorpal> <ais523> also, because floppy disk is quite a convenient way to quickly transfer files from one computer to another; it's pretty much as fast as doing it via USB stick, just with a lower capacity <-- not really, floppies are really slow
13:36:53 <ais523> fast enough when you're only transferring a few tens of kilobytes, which is typical
13:37:38 <Vorpal> <ais523> kallisti: I actually have a USB floppy drive <-- I have two of them I think. One pure USB floppy drive and one that doubles as a "ultrabay-for-old-dell floppy device" and USB one
13:38:06 <Vorpal> ais523: Hm I seldom transfer less than a mb or so
13:38:21 <Vorpal> ais523: and quite often something like 10 GB
13:38:30 <ais523> you can't fit 10 GB on a floppy
13:38:33 <Vorpal> indeed
13:38:47 <ais523> last time I needed to transfer that sort of data, I put the two computers physically next to each other and connected them with an Ethernet crossover cable
13:38:49 <ais523> then used rsync
13:38:52 <Vorpal> I used to use ethernet over firewire back when my desktop only had 100 mbit connection. Because firewire allowed 400 mbit
13:38:52 <ais523> *that sort of amount of data
13:39:15 <Vorpal> now I have gbit ethernet on both my desktop and laptop
13:39:24 <Vorpal> so generally the disk speed in the laptop is the bottleneck
13:40:16 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
13:41:18 <Vorpal> hm PSU at the bottom seems to be getting more and more popular in high end chassis these days.
13:41:29 <Vorpal> what is actually the point of PSU at the bottom
13:42:16 <Vorpal> my computer has that, but it just messes up with the cables as far as I'm concerned (since the PSU uses flat cables with connectors on the side of the cable. And it is designed for mounting at the top.
13:42:54 <Vorpal> ais523: maybe you would know what the advantages of PSU at the bottom of the computer case is?
13:42:59 <ais523> Vorpal: it's so that when YouTube upgrade their video service, it still works if you turn the entire computer case upside-down
13:43:08 <Vorpal> ...
13:43:08 <ais523> which gives even better performance than just inverting the monitor
13:43:11 <Vorpal> what?
13:43:26 <Vorpal> inverting monitor? I don't get the joke.
13:43:42 <ais523> it was YouTube's April Fools thing this year (or maybe last year?)
13:43:47 <Vorpal> ah
13:43:50 <ais523> where they turned the entire site layout upside-down, also the videos
13:43:55 <Vorpal> ah okay
13:43:59 <Vorpal> ais523: but seriously, any idea?
13:44:04 <ais523> on the basis that they'd discovered that videos looked better if you turned the monitor upside-down
13:44:08 <ais523> and no, not offhand
13:44:19 <ais523> it wouldn't surprise me if it was something to do with cooling, but I don't see how it would help offhand
13:44:23 <ais523> *if it were
13:45:32 <Vorpal> ah
13:47:53 <ais523> 1.1.1 The droll business is, whether you be convinced active it, the cares you should get are each familiar meaning! How does it effort? Besides solely, individual moves any earful most you, possibly on-line or conceivably eve via any scrap send that you tossed in the crank without eve trigger-happy it up.
13:49:28 <fizzie> Sounds fungotty.
13:49:28 <fungot> fizzie: ' cheers,' said lu-tze.
13:50:13 -!- itidus21 has left ("Leaving").
13:50:26 -!- kallisti has joined.
13:50:28 <ais523> fungot: go on
13:50:28 <fungot> ais523: " no we ain't," said esk. " granny always says that to women, for the arms, two twigs.
13:50:38 -!- kallisti has quit (Changing host).
13:50:38 -!- kallisti has joined.
13:50:44 <kallisti> `word 25
13:50:51 <HackEgo> eszykkakemed obatleue raieffenisteinges paghters ac gan roleyum appard lvatoulphonicae hendfelletharbrogg ratereur bee tocitz bratous aeurrosly pred pic sten reanclan tlnhek bie un dodus blertrigentmousalgilemanatimend ro
13:51:44 -!- itidus21 has joined.
13:52:16 <kallisti> huh, for some reason youtube is saying "missing plugin" for every video.
13:52:34 <ais523> kallisti: perhaps you don't have a Flash plugin?
13:52:44 <kallisti> I most definitely do
13:52:46 <ais523> "bee" is a real word, out of that list
13:52:53 <kallisti> I just restarted after some updates though.
13:53:09 <ais523> and quite a few of them sound like they could be real words
13:53:11 <kallisti> ais523: it happens. especially with short words. only so many possibilities in a markov model.
13:53:14 <kallisti> ais523: good
13:53:15 <ais523> indeed
13:53:19 <ais523> `word 25
13:53:22 <HackEgo> fuermarabev as gcommenfer dumallyley wychafr mam zat tb tuproassitara man apitenins jurg autory cler hydrouzhdu aflutz flits ine boni met soirodestsovegeble bolia formagged lopui ch
13:53:52 <kallisti> aflutz :)
13:54:01 * kallisti has flits and aflutz
13:54:08 <itidus21> man
13:54:16 <ais523> I've seen people seriously attempt to use "boni" as the plural of "bonus"
13:54:22 <kallisti> ..
13:54:22 <ais523> "as" is also a word, as is "man"
13:54:27 <itidus21> met
13:54:32 <fizzie> "pic" and "pred" out of that first list were also rather common abbreviations.
13:54:36 <ais523> actually, "formagged" is possibly the best nonword there
13:54:59 <kallisti> no soirodestsovegeble?
13:55:14 <oerjan> ais523: at least boni is correct latin, i think
13:55:33 <oerjan> unlike some other examples
13:55:47 <ais523> yep, I think so
13:55:59 <oerjan> formagged obviously means turned into cheese
13:56:47 <kallisti> heh
13:57:03 <kallisti> `word 50
13:57:05 <HackEgo> monsumizehutand senselees atticheler jnaal tans ber ozamoloupne dovolowx hici unthiries subs auroo zu pribacc obikanba vity iscu lammenleres ken meduratctrae wd troasakic venderpugaryszus alierectracist mesi bouraps bbizosinizaria fandombori obed uienyonoseranottinscrenzy wander rheetess syraibia te tro ruardentiminesta hus sesined thl metion sch brica inuce howmrech narremietty baarimptinfon bnue boletadvaligny cluvra kancr
13:57:18 <kallisti> monsumizehutand -- ancient Aztech ruler
13:57:30 <ais523> "fandombori"
13:57:37 <kallisti> heh
13:57:56 <fizzie> What a senselees list of words.
13:58:43 <fizzie> Is an 'alierectracist' a person who won't submit to being probed by extraterrestials, or what?
13:58:52 <kallisti> .......
13:58:55 <kallisti> I think so?
13:59:41 <itidus21> `word 1
13:59:43 <HackEgo> urganaidonoropedeechl
14:00:26 <kallisti> :t zip`ap`tail
14:00:29 <lambdabot> forall b. [b] -> [(b, b)]
14:01:06 <itidus21> err-gah-nah-ee-doh-noh-ropey-dee-ch-L
14:01:32 <kallisti> yep
14:01:46 <itidus21> god thats difficult
14:01:47 * kallisti has gotten the hang of pronouncing these things.
14:01:56 <kallisti> a little creative discretion is allowed
14:02:09 <itidus21> in english you must remember that pronunciation does not follow from spelling :P
14:02:10 <kallisti> as it's "pseudoEnglish" in nature
14:02:19 <kallisti> which already has a wide variety of different ways to pronounce combinations of letters
14:02:49 <kallisti> itidus21: no it does, it's just based on a wide variety of linguistic influenced
14:03:01 <kallisti> *influences
14:03:20 <itidus21> it seems to me like it simply borrows several pronunciation systems
14:03:45 <kallisti> everything is "borrowed" and slightly reinvented in natural language
14:03:47 <kallisti> and, well, a lot of things.
14:05:12 <fizzie> Speech synthesis thingies often have (in addition to a large pronunciation dictionary) some sort of a rule-based device to generate plausible phonemes for OOV words.
14:05:22 <itidus21> perhaps the idea of english is to acquire the shibbaleths of their eneies
14:05:34 <itidus21> ^enemies
14:05:58 <kallisti> music, art, religions, holidays, sports, mythologies
14:06:17 <itidus21> someones probably already done a phd on that possibility i suggested and found it's a dead-end
14:06:20 <fizzie> echo 'monsumizehutand senselees ... cluvra kancr' | festival --tts # the best babble ever.
14:06:23 <kallisti> if you look at all of these things you'll see a (mostly) linear progression of linear through history.
14:06:38 <kallisti> `run festival --help
14:06:40 <HackEgo> bash: festival: command not found
14:06:55 <fizzie> It's so fast I can't make anything out of it, and I don't quite recall how to control speaking speed.
14:07:20 <itidus21> `word 5
14:07:22 <HackEgo> parne euwessoly coms coaulanquicolve tra
14:07:25 <kallisti> yes a linear progression of linear.
14:07:32 <kallisti> itidus21: 25 is a good number
14:07:36 <kallisti> bound to find something interesting.
14:07:48 <fizzie> Sometimes it heuristicizes into pronouncing things as lettersims; like "sch" and "wd" it does like that.
14:08:30 <fizzie> The prosody for that "sentence" is... somewhat arbitrary too.
14:08:54 <kallisti> `word 30
14:08:57 <HackEgo> imerapposan ccyptyrs strcd plitaspet plation cxlere decocs vie chya schth sap cont eldenernefl chron diss ophyphofe symo imbee hoyoj dro einee dion eouciircloromplam wehenss remed nifteng jeeppertia sa sch dimely
14:09:14 <kallisti> strcd sounds like a string.h function
14:09:14 <fizzie> There's a short break between uienyonoseranottinscrenzy and wander, like a comma, for some reason.
14:09:35 <kallisti> schth -- best word
14:11:05 <kallisti> eldenernefl - el-den-nur-neh-ful
14:11:16 <kallisti> fizzie: unfortunately I believe googles data contains roman numerals
14:11:29 <itidus21> my pseudo-intelligence leads me to say, ("ais523") = "523". ("523") = '5', '2', '3'. ('5') = 5. ('2') = 2. ('3') = 3. 5+2+3 = 10
14:11:29 <kallisti> which sometimes leads to ridiculous things like triple i's
14:11:38 <itidus21> `word 10
14:11:40 <HackEgo> tris bayions au minis tolotti ital coneu via tchliplanosleociot exillesta
14:12:19 <fizzie> Festival pronounces eldenernefl with pretty much a silent "den"; el-ner-neh-ful.
14:12:33 <itidus21> i quite like tchliplanosleociot
14:12:33 <fizzie> Sorry, 'de'.
14:12:59 <itidus21> as for exillesta... thats just a kick ass word
14:12:59 <kallisti> itidus21: it's squishy in my mouth
14:13:11 <fizzie> In fact, I can't hear any difference between elnernefl and eldenernefl. Maybe the latter is just archaic spelling for the former?
14:13:29 <kallisti> most likely...
14:14:34 <kallisti> `word
14:14:37 <HackEgo> sen
14:14:51 <fizzie> That's valid Finnish.
14:15:13 <fizzie> And I suppose quite a few other languages too.
14:15:30 <fizzie> Japanese and Swedish, at least.
14:15:37 <oklopol> yay i got 23000 euros today
14:15:47 <fizzie> Don't spend it all at once now.
14:15:47 <kallisti> `word
14:15:49 <HackEgo> progyribure
14:15:54 <kallisti> oklopol: grant?
14:15:56 <oklopol> yes
14:16:04 <oklopol> but that sounds less cool
14:16:13 <kallisti> oklopol: you have to like spend it a certain way don't you
14:16:17 <kallisti> ?
14:16:26 <oklopol> it's for living expenses
14:16:30 <kallisti> ah cool.
14:16:41 -!- Slereah_ has joined.
14:17:14 -!- Slereah has quit (Ping timeout: 252 seconds).
14:17:14 <kallisti> oklopol: you should buy a nice TV and a PS3 and play Demons' Souls
14:17:27 <fizzie> And maybe some food too.
14:17:37 <fizzie> If there's any money left after the essentials.
14:17:44 <fizzie> Like those mentioned above.
14:17:45 <ais523> oklopol: my grant comes more gradually
14:17:46 <kallisti> eh 23000 euros is plenty for food. poor American white trash could live off of that for a year at least.
14:17:54 <ais523> I just look at my bank account and find that there's more money in there than I remember
14:18:09 <oklopol> ais523: mine too, probably. i'm just polishing the facts a bit.
14:18:25 <oklopol> i have to live off it for a year. it's actually just my normal salary.
14:18:35 <fizzie> My grant just somehow goes into some (rather large, I think maybe 80% or so?) percentage of my regular monthly salary.
14:18:38 <oklopol> perhaps even slightly less since i just got a raise.
14:18:40 <fizzie> I don't really know the details.
14:18:50 <oklopol> yeah maybe mine does too
14:18:55 <oklopol> it's from väisälä, you may know it
14:19:01 <kallisti> oklopol: you could probably get like, what, 92 high-class escorts (read: prostitutes)?
14:19:14 <oklopol> i don't know where to get those in finland
14:19:28 <fizzie> Also the rest of the paycheck comes from some place, but I don't know where. Maybe it's the... department? I don't know, the bureaucracy is confusing.
14:19:51 <ais523> kallisti: I'm amused that you know the price that accurately
14:19:55 <kallisti> all of you guys have grants? weird.
14:20:01 <kallisti> I just get paid.
14:20:13 <ais523> fizzie: my grant and paycheck are added separately
14:20:18 <oklopol> my paycheck currently comes from the "project" of my supervisor (in math, project just means... nothing)
14:20:18 <kallisti> ais523: well it was an estimate.
14:20:19 <itidus21> i don't have an income. i get 'supported' by my family
14:20:25 <ais523> amusingly, the paycheck has many times more bureaucracy
14:20:31 <itidus21> not to complain. i do nothing to deserve an income
14:20:43 <ais523> itidus21: that was the case for me before I got a job, too
14:20:52 <ais523> and I imagine it's the case for pretty much everyone too young to have a job
14:21:24 * kallisti is currently supported by his family /and/ making money.
14:21:25 <itidus21> im not on a dole either.. and im relatively happy really
14:21:28 <oklopol> kallisti: up to now, i just had a paycheck, but my supervisor asked me to apply for a grant since he ran out of money for next year because he desperately needed to fish a good student for himself.
14:21:33 <kallisti> at least for now. I intend to move out sometime next year.
14:21:46 <kallisti> oklopol: academia is weird.
14:22:08 <oklopol> since the student might have gone with a different professor if he'd waited.
14:22:15 <itidus21> i chat with a lot of people more intelligent than me
14:22:36 <itidus21> it's not good for my relative sense of intelligence :D
14:22:52 <ais523> itidus21: I think most people do, actually; people tend to gravitate towards people with similar levels of intelligence
14:22:56 <fizzie> ais523: Well... I have a regular salary selected from our salary tables, but I have this four-year "Doctoral Programme" position from http://www.cs.helsinki.fi/hecse/ too, so that money gets somehow funneled in as a "funding source" into whatever percentage of my salary it happens to cover, and the department makes up for the difference from some other project/funding/whatever.
14:23:02 <ais523> and thus will tend to meet people more intelligent than themselves, no matter how intelligent they are
14:23:08 <ais523> fizzie: hmm, how complex
14:23:10 <itidus21> ais523: oh.. thats a positive
14:23:22 * kallisti makes terrible web apps for a living.
14:23:24 <itidus21> i gravitated towards #esoteric
14:23:27 <ais523> (exception: the most intelligent few people in the world)
14:23:52 <kallisti> itidus21: I'm certainly not as intelligent as most people on this channel, but I still consider myself intelligent. do you know why?
14:23:56 <kallisti> because: real world
14:23:58 <kallisti> people are stupid
14:24:05 <ais523> fizzie: it's much simpler for me; I have a 75% part-time PhD (which I'm being funded by the department to work on, at the suggestion of my supervisor), and am paid directly for a 25% part time teaching job
14:24:29 <itidus21> kallisti: if i had to judge, my question would be, do you realize there are inherent contradictions to such statements? :D
14:24:31 <kallisti> I've considered going getting a Phd at some point, but... I don't know if it's worth it.
14:24:50 <kallisti> itidus21: there aren't
14:25:17 <itidus21> taking oneself too seriously leads to a holistic decrease in intelligence
14:25:25 <kallisti> hm?
14:25:35 * kallisti takes everything SERIOUSLY AAAAAAH
14:25:38 <kallisti> .. :)
14:26:35 <itidus21> i mean... eh.. nevermind.. i need to be in another mood for that silly topic of mine
14:26:43 <fizzie> Also Condor, this "let's use our idle desktops as a computing grid" thingie, has a confusing -help for some commands:
14:26:44 <kallisti> ais523: oklopol: fizzie: the problem with me getting a Ph.D in Computer Science is that I don't really think I will be very /good/ at research.
14:26:44 <fizzie> $ condor_hold -help |& grep addr
14:26:44 <fizzie> -addr <ip:port> Connect directly to the given "sinful string"
14:26:48 <kallisti> or pretending that I'm researching.
14:27:19 <fizzie> What makes an "ip:port" sinful is unclear to me. Maybe it refers to struct sin_addr.
14:27:21 <ais523> hmm, that could be a problem
14:27:33 <ais523> it helps to have an obvious thing to be working on already
14:27:38 <oklopol> i thought i might just be a good student and a horrible researcher, but this seems to be going well
14:27:40 <ais523> like the hardware compiler, in my case
14:27:44 <oklopol> i have something like 50 theorems now
14:27:51 <ais523> wow
14:27:56 <kallisti> ais523: I work on side projects sure, but nothing that's groundbreaking
14:28:02 <ais523> meanwhile, I have 3 papers, which contain an average of less than one theorem each
14:28:03 <oklopol> and three publications
14:28:08 <kallisti> I wouldn't write a paper on how I made a program that randomly generates words. :P
14:28:15 <ais523> indeed, it's known techniques
14:28:21 <fizzie> oklopol: I hope you are naming them with a numbering scheme, so that you can have people referring to "oklopol's 37th theorem".
14:28:25 <ais523> the general point of PhDs is that you're expanding the boundaries of knowledge
14:28:30 <kallisti> right.
14:28:43 <ais523> oklopol is proving new results, whereas what I'm doing is basically programming
14:28:52 <itidus21> kallisti: uhhh.... this is a difficult topic. in the end intelligence as a measurement crumbles under it's own weight.
14:28:53 <ais523> it's coming up with new algorithms, I guess, looked at from the mathematical view
14:29:12 <ais523> and when we prove theorems, it's either to prove that they produce the right results, or that they always terminate
14:29:12 <oklopol> i don't think many of them will ever be referred to, this is the number of theorems that aren't trivial to prove, the number of useful results is way less.
14:29:21 <kallisti> ais523: maybe as I focus on new side-projects I'll come across something somewhat new.
14:29:26 <itidus21> so i guess what i am saying is there is a mild sarcasm for me whenever i use that word intelligent
14:29:27 <kallisti> *something
14:29:28 <Jafet> Programming can be a research topic
14:29:38 <Jafet> But results tend to become dated
14:29:44 <ais523> kallisti: we couldn't believe that what we were doing was new, in some cases, but it turned out that it was
14:30:17 <oklopol> we have some computational results, decidability and semidecidability stuff
14:30:25 <kallisti> ais523: maybe I should focus on what interests me outside of computing. I have a pretty strong grasp of signal processing as it relates to music. I could probably find something new there.
14:30:26 <itidus21> kallisti: uhhh.. like.. you know.. theres tangible intelligence and intangible intelligence *pulls hair out*
14:30:40 <oklopol> mainly on zero entropy sofic shifts, since we're trying to get to a CS conference that emphasizes this
14:31:21 <kallisti> itidus21: I generally don't think that the many different kinds of intelligence are truly quantifiable. IQ has statistical importance but there are other ways to think of what intelligence means.
14:31:27 <oklopol> maybe not 50, the number was 37 last i checked, but that was after summer and we have 3 new results this week i think
14:31:34 <oklopol> so it might be about 50 but dunno
14:31:39 <Phantom_Hoover> "Zero entropy sofic shift" sounds like something straight out of some new age crackpot website.
14:31:40 <lambdabot> Phantom_Hoover: You have 12 new messages. '/msg lambdabot @messages' to read them.
14:31:50 <itidus21> ;_; the topic of intelligence itself is indeed one that requires intelligence to traverse
14:31:57 <oklopol> i'm counting mine and my colleague's, there's a couple that he proved and about half are joint work
14:32:07 <kallisti> ais523: in particular I've been considering that there are a number of combinators that you can apply to form rhythmic patterns. It may be under some existing generalization though.
14:32:58 <Phantom_Hoover> @tell elliott FFS, find a way of messaging me that doesn't overflow so easily.
14:32:59 <lambdabot> Consider it noted.
14:33:09 <kallisti> the simplest would be parallel and serial combinations.
14:33:17 <kallisti> but perhaps there are more.
14:33:19 <oklopol> a sofic shift is just a shift space defined by a labeled directed graph, they are the closure under factor maps of subshifts of finite type, which on the other hand are exactly the subshifts defined by a clopen set
14:33:25 <oklopol> in a natural sense
14:33:52 <Jafet> And time has four corners
14:33:55 <oklopol> and zero entropy means the topological entropy of the dynamical system where the left shift is the dynamics
14:34:31 <Vorpal> Phantom_Hoover: does lambdabot overflow?
14:34:37 <Vorpal> when messaging
14:34:41 <oklopol> but there's a nice characterization for these
14:35:10 <oklopol> i have no idea who i'm talking to
14:35:11 <oklopol> :D
14:35:33 <kallisti> hmm also you can shrink and expand rhythmic patterns.
14:36:03 <kallisti> so you could combine two rhythms serial (basically end to end) and also have the result be the same duration as the originally, basically doubling the speed of both.
14:36:49 <kallisti> but I'm pretty sure these notions of serial and parallel exist elsewhere. If you model rhythms as a linked list, then the serial combinator is just (++) in Haskell.
14:37:16 <Jafet> If you work hard on this, you might successfully get hired by whoever puts those bland pop tunes on the radios
14:37:25 <kallisti> ha
14:37:33 <kallisti> to algorithmically generate pop? sounds... uh... good
14:37:50 * kallisti would change pop forever by NOT USING FUCKING 4/4 TIME SIGNATURE FOR EVERYTHING
14:37:52 <Jafet> Sounds profitable. And Orwellian
14:38:19 <Vorpal> yeah why is 4/4 so popular. Nothing wrong with 2/4, 3/4, 2/3 and so on IMO
14:38:27 <kallisti> Taylor Swift's latest single will be 5/4 7/4 5/4
14:38:33 <Jafet> They don't even use time signatures any more! They steal time signatures from older tunes.
14:38:46 <kallisti> (well, just 5-7-5, the denominator is irrelevant to the actual meter)
14:38:47 <Jafet> Look at breakbeats
14:39:26 <kallisti> Fibonacci time. 1-1-2-3-5
14:39:49 <kallisti> well you could have like, i,j-Fibonacci time.
14:40:04 <kallisti> i and j being the interval you want to use.
14:40:19 <kallisti> or something. :P
14:40:43 <Jafet> You could use nothing but concatenated permutations of a set of tones. Oh wait.
14:41:01 <oerjan> oklopol: i think sofic shift spaces are like the two-sided infinite generalization of regular languages
14:41:29 <kallisti> The Tool song "Lateralus" has one part where the syllables in each measure of lyrics follow the pattern: 1 1 2 3 5 8 5 3
14:41:45 <oerjan> you have a finite automaton, but it never stops nor has it ever started
14:42:28 <oklopol> yeah they are exactly the subshifts whose language is regular, and a regular language that's factor closed and extendable gives a sofic shift
14:42:41 <kallisti> Jafet: I think I'll use subsequences selected from an infinite continuum of sinusoids.
14:42:55 <fizzie> oerjan: You mean a duracell-powered finite automaton?
14:42:59 <oklopol> but my definition makes more sense in symbolic dynamics
14:43:02 <oerjan> fizzie: pretty much
14:43:03 <oklopol> imo
14:43:10 <oklopol> that's how it's mostly used
14:43:25 <oklopol> that it's the closure of sft's under factors
14:44:38 <fizzie> Festival pronounces "Phantom_Hoover" as "phantom-underscore-hoover".
14:45:51 <kallisti> isn't that how everyone pronounces Phantom_Hoover?
14:46:01 <oerjan> shockingly, no
14:46:12 <Jafet> I pronounce it as "Wally"
14:46:31 -!- oerjan has quit (Quit: ORLY?).
14:46:36 <kallisti> Jafet: I pronounce "Wally" as "[;[8]]&*]6"
14:46:51 <fizzie> "Some pronounce it 'asshole'." No, I mean, I wouldn't spell out the underscore if someone told me to read these IRC logs out loud.
14:47:12 <kallisti> !perl [;[8]]&*]6
14:47:13 <EgoBot> Number found where operator expected at /tmp/input.7581 line 1, near "*]6"
14:47:20 <kallisti> !perl [;[8]]&*]
14:47:20 <EgoBot> syntax error at /tmp/input.7641 line 1, near "[;"
14:47:24 <kallisti> !perl [[8]]&*]
14:47:28 <kallisti> there we go.
14:48:24 <kallisti> it was /almost/ valid Perl. :P
14:48:55 <kallisti> !perl print *]
14:48:55 <EgoBot> ​*main::]
14:49:20 <kallisti> !perl print *]{SCALAR}
14:49:21 <EgoBot> SCALAR(0x7f7155eaebf8)
14:49:28 <kallisti> !perl print ${*]{SCALAR}
14:49:28 <EgoBot> Missing right curly or square bracket at /tmp/input.7956 line 1, at end of line
14:49:29 <kallisti> er
14:49:56 <kallisti> !perl print ${*]{SCALAR}}
14:49:56 <EgoBot> 5.010001
14:50:43 <kallisti> fizzie: ais523: have you ever found a use for typeglobs now that Perl 5 introduced refs?
14:51:11 <ais523> kallisti: injecting variables into other package's symbol tables; this makes the most sense in a library designed to generate code
14:51:30 <fizzie> !perl print []|*]
14:51:30 <EgoBot> ksi::}7f625ec6ed48)
14:51:55 <fizzie> I haven't, but I haven't been doing very "deep" Perl either.
14:51:56 <ais523> e.g. you write a library which adds extra functions to packages that reference it
14:52:04 <ais523> fizzie: wait, how does that work?
14:52:17 <fizzie> It just bitwise-ors the bytes.
14:52:19 <ais523> aha, it's a reference bitwise-ored with a symbol table entry
14:52:30 <ais523> but, err, what?
14:52:31 <fizzie> Of "*main::]" and "ARRAY(0xwhatever)".
14:52:41 <kallisti> !perl print [[8]]&*]
14:52:48 <kallisti> >_>
14:52:57 <kallisti> !perl print [[8]]|*]
14:52:57 <EgoBot> ksi::}7fdd767b69e8)
14:53:12 <fizzie> The anded version starts with a null byte, sadly, so EgoBot won't print it.
14:53:24 <kallisti> stupid C.
14:54:36 -!- copumpkin has quit (Quit: Leaving...).
14:54:57 <kallisti> fizzie: is there anyway to enfroce a bit width of 8 on Perl scalar values?
14:55:16 <kallisti> I'd like to play around with a simple 8-bit synthesis in Perl. I could just use C but.... why not use Perl instead if I can. :P
14:55:46 -!- copumpkin has joined.
14:55:50 <fizzie> Don't know; they *could've* made "use integer" take a bit-width (like "use integer 8;"), but it doesn't.
14:56:02 -!- derdon has joined.
14:56:11 <fizzie> You can just &0xff everywhere, of course.
14:57:24 <kallisti> that's a possibility
14:57:46 <fizzie> What I think is a bit weird is how "use integer" makes the always-integral bitwise things (&, |, ^, ~, <<, >>) use signed integers instead of the unsigned ones they usually use.
14:58:26 <fizzie> !perl $a = ~0; { use integer; $b = ~0; } print "a $a, b $b";
14:58:26 <EgoBot> a 18446744073709551615, b -1
14:58:53 <fizzie> I suppose it makes some amount of sense, I just think unsigned integers are somehow more... integery.
14:59:00 <fizzie> Okay, *that* probably doesn't make any sense.
14:59:03 <kallisti> lol
14:59:19 <kallisti> fizzie and his arbitrary notions of integeriness
14:59:44 <kallisti> mayb "use integer" is like saying "use /all/ the integers"
15:00:22 <kallisti> even those negative ones.
15:00:46 <kallisti> what I find strange about bitwise operators in high-level languages is that normally those languages don't specify anything about the bit composition of values.
15:00:53 <kallisti> it just seems out of place.
15:02:51 <oklopol> negative integers? someone still believes in those?? :D
15:03:05 <kallisti> ..?
15:03:15 <oklopol> by the way, that article that supposedly proved peano axioms are inconsistent, it was retracted and there's no trace of it anywhere :D
15:03:25 <kallisti> heh.
15:03:39 <kallisti> the revelation was simply too shocking
15:03:50 <kallisti> it had to be concealed.
15:03:51 <oklopol> kallisti: if you multiply two negative integers, you get a positive one, that's fucking ridiculous
15:03:57 <oklopol> how can anyone think that's true
15:04:02 <kallisti> .....
15:04:08 <oklopol> therefore there are no negative integers
15:04:14 <kallisti> bahaha
15:04:24 <fizzie> > bitSize (1 :: Integer)
15:04:25 <kallisti> I mean it would make sense if the result continued to be negative..
15:04:25 <lambdabot> *Exception: Data.Bits.bitSize(Integer)
15:04:29 <oklopol> that was actually an argument used when these were introduced
15:04:29 <fizzie> Aw, it has no size. :/
15:04:56 <kallisti> but then who knows what would happen when you tried to multiply a negative and a positive..
15:05:00 <kallisti> if negative * negative = negative
15:05:08 <kallisti> + * - = ..... +-?
15:05:13 <oklopol> there was really no concept of a mathematical object back then
15:05:23 <oklopol> yep
15:05:25 <oklopol> another proof
15:05:29 <oklopol> that they don't exist
15:05:35 <kallisti> well no you could totally do it that way
15:05:42 <kallisti> so that + * - = +-
15:05:44 <oklopol> anyhow, i have to go to a party 8Z
15:05:48 <oklopol> :D
15:05:55 <oklopol> bye
15:05:59 <kallisti> oklopol THE SOCIALITE
15:06:01 <kallisti> bye.
15:06:33 <fizzie> oklopol the SOCIALIST
15:06:50 <fizzie> A "socialite" is the no-sugar version of a "socialist".
15:06:56 <kallisti> fizzie: ais523: conjecture with me what would happen if you made multiplication of a positive number and a negative number have two possible results
15:07:45 <kallisti> + * - * -
15:08:26 <Phantom_Hoover> <oklopol> anyhow, i have to go to a party 8Z
15:08:27 <Phantom_Hoover> is
15:08:32 <Phantom_Hoover> is that a running man smiley
15:08:40 <kallisti> well, it's still commutative I think..
15:09:14 <Phantom_Hoover> Can smileys be commutative?
15:09:21 <kallisti> if they're running yes
15:09:23 <kallisti> they're commuting somewhere
15:09:30 <kallisti> but that's not what I was talking about obviously :P
15:10:34 <kallisti> er.... no maybe it's not commutative
15:10:56 <kallisti> 2 * -3 * -4 evaluating left to right
15:11:05 <kallisti> +-6 * -4
15:11:18 <kallisti> that's still just... +-24
15:11:44 <fizzie> Are you sure it's not +--24.
15:11:46 <kallisti> even though there are three results two of them are the same
15:12:07 <kallisti> but if you did it that way then it would result in it being non-comutative I think
15:12:11 <kallisti> because then
15:12:20 <kallisti> -4 * -3 * 2
15:12:24 <Jafet> I prefer the Copenhagen interpretation of arithmetic
15:12:37 <kallisti> evaluating left to right, would produce just +-24
15:12:50 <kallisti> instead of +--24
15:12:54 <kallisti> UNLESS
15:12:58 <kallisti> - * - = --
15:13:03 <kallisti> but... okay nevermind
15:13:09 <kallisti> screw this direction of thought
15:13:17 <kallisti> you can only have +, -, and +-
15:13:18 <kallisti> LO
15:13:22 <kallisti> s/LO/:P/
15:13:45 <fizzie> Lo, there are many planets in the archipelago of worlds.
15:13:50 <Jafet> Low colon pee
15:14:33 <kallisti> help I affiliate myself with madmen.
15:15:03 <kallisti> s/affiliate myself/confederate/
15:15:09 <kallisti> AWWW YEAH +1 WORD CHOICE
15:15:45 <kallisti> inb4 "not +-1 word choice"
15:15:50 <kallisti> or something similar
15:15:52 <Phantom_Hoover> fizzie, and, in turn, many archipelagos on the planets.
15:16:11 <kallisti> Phantom_Hoover: dude what if there are universe archipelagos
15:16:25 <Phantom_Hoover> Univarchipelagos.
15:16:45 <kallisti> and... like, univunivarchipelago
15:17:03 <kallisti> WHAT IF EVERYTHING SMALL IS A SMALL VERSION OF SOMETHING BIG.
15:17:49 <fizzie> There's an island in the sea around here, on which there's a lake, in which there's a small islet, on which there's a puddle. (Didn't someone make a comic out of this already?)
15:18:23 <Jafet> That island must make great target practice for bomber pilots
15:18:25 <Phantom_Hoover> kallisti, careful now, too much of that kind of thinking and you're ruining Minecraft's terrain gen.
15:19:07 <kallisti> #esoteric is an peoplarchipelago
15:19:23 <kallisti> and people are CELL ARCHIPELAGOS
15:19:24 <kallisti> zomg
15:19:27 <kallisti> zaaaaah
15:25:26 <kallisti> are there any four-signed number systems out there?
15:28:55 <kallisti> I think a four-signed number would mess up 1 as the multiplicative identity
15:29:01 <kallisti> 0 would still be the additive identity though
15:30:48 <kallisti> unless you just kept 1 as the multiplicative identity and made multiplication asymmetric
15:42:34 -!- myndzi has quit (Ping timeout: 245 seconds).
15:46:35 -!- MSleep has joined.
15:56:12 -!- MSleep has changed nick to MDude.
16:05:53 -!- calamari has joined.
16:06:37 <Phantom_Hoover> Wolfram blog on the fold function: "It shows unusual mastery of functional programming constructs to achieve a beautiful graphic result."
16:09:12 -!- Ngevd has joined.
16:15:04 <Ngevd> Hello!
16:17:19 <ais523> hi
16:17:46 <Ngevd> ais523, you're in my top two people who are, or I think are, in Birmingham
16:17:51 <Phantom_Hoover> Holloo.
16:18:10 <ais523> Ngevd: there's quite a lot of evidence that I'm usually in Birmingham
16:18:14 <Ngevd> Phantom_Hoover, you're my favourite person in Edinburgh. By a long way
16:18:19 <ais523> although that doesn't imply I'm in Birmingham right now, it makes it quite a bit more likely
16:18:46 <Phantom_Hoover> I can only conclude that you either a) hate someone else in Edinburgh or b) aren't very good at being pedantic.
16:18:59 <Ngevd> I don't know many Edinburghians
16:19:07 <Ngevd> Pretty much only you
16:19:57 <Ngevd> In fact, only you
16:19:57 <Ngevd> And possibly Alexander McCall Smith
16:20:33 <Phantom_Hoover> I recognise the name, and I'm not entirely sure it's as an author.
16:21:09 <Phantom_Hoover> It's probably just as an author, actually.
16:21:43 <Ngevd> Yes
16:21:44 <Ngevd> Did the 44 Scotland Street and Number 1 Lady's Decective Agency books
16:21:47 <ais523> two of those names are kind-of familiar to me
16:22:17 <Phantom_Hoover> I would be extremely surprised if neither 'Alexander' nor 'Smith' were familiar to you.
16:23:21 -!- itidus21 has quit (Ping timeout: 252 seconds).
16:23:36 <Ngevd> My mum met him once when he came to Hexham
16:23:36 <Ngevd> ais523, the other person who lives in Birmingham who I have heard of is possibly the author of Gunnerkrigg Court
16:23:50 <ais523> hmm
16:24:01 <ais523> I think there are quite a lot of famous people from Birmingham, because it's quite large
16:24:11 <ais523> on the other hand, they're not generally famous /for/ being from Birmingham
16:24:42 <kallisti> hmmm, I'm confused.
16:24:53 <kallisti> I change the source of mueval to import some modules
16:24:59 <kallisti> and then I run the build script to install it
16:25:04 <kallisti> and.... nothing changed?
16:25:22 <kallisti> oh possibly the wrong mueval.
16:26:49 <kallisti> hmmm, no
16:28:31 -!- Ngevd has quit (Ping timeout: 248 seconds).
16:28:40 <kallisti> ah there we go
16:28:46 <kallisti> had to do Setup copy instead of install for some reason?
16:35:18 -!- Ngevd has joined.
17:00:36 -!- Klisz has joined.
17:04:52 -!- Ngevd has quit (Quit: Leaving).
17:25:56 -!- monqy has joined.
17:28:46 -!- elliott_ has changed nick to elliott.
17:28:49 -!- elliott has quit (Changing host).
17:28:49 -!- elliott has joined.
17:36:48 <elliott> 09:30:46: <kallisti> elliott_: is how you prevent Perl from interpolating in a shell command
17:36:48 <elliott> 09:31:06: <kallisti> if you're using system or whatever else you would just pass a single quoted string obviously.
17:36:51 <elliott> kallisti: that is not the problem
17:37:01 <elliott> kallisti: how do i pass args in a list like python subprocess
17:38:34 <elliott> @ping
17:38:35 <lambdabot> pong
17:39:18 <kallisti> elliott: um...
17:39:26 <kallisti> like how?
17:39:28 <kallisti> I don't remember subprocess.
17:39:39 <kallisti> but
17:39:39 <quintopia> what is the hardest language to debug?
17:39:44 <elliott> 'ls', '-l', 'filename with spaces'
17:39:50 <elliott> this is necessary to avoid shell injection
17:39:55 <kallisti> I think you want system?
17:40:01 <kallisti> or exec, depending on if you want to wait or not.
17:40:11 <kallisti> system waits for the child to finish, exec doesn't
17:40:17 <ais523> quintopia: Malbolge?
17:40:29 <quintopia> yes i guess i agree
17:40:29 <ais523> a good IDE would help, though
17:40:33 <quintopia> yeah
17:40:46 <elliott> ais523: how do I do perl's `...` but with an argv instead of a string or do i have to emulaet it myself
17:40:46 <ais523> showing both original and normalized views of memory at once, and probably encryption chains too
17:40:51 <elliott> kallisti: it's not system
17:41:02 <elliott> it can be done with exec but that's a painfully low-level interface
17:41:09 <ais523> elliott: there's no operator for doing that straight off, I don't think
17:41:16 <ais523> there's almost certainly a library, probably a standard one
17:41:24 <ais523> or, hmm, what about piped open?
17:41:32 <ais523> I've never used it, but I think that's what you need
17:41:33 <elliott> doesn't that look like '|foo bar'
17:41:37 <elliott> which is not an argv
17:41:57 <ais523> elliott: there's a four-or-more arg version of open
17:42:09 <ais523> which does take an argv as the extra arguments at the end
17:42:33 <elliott> ah
17:42:35 <kallisti> oh you want to pass the argv directly....
17:42:39 <ais523> open my $fh, '-|', 'somecommand', @argv;
17:42:52 <ais523> then $fh is its stdout and you can just read it via the normal means
17:42:57 <elliott> right
17:43:01 <elliott> that sounds doable
17:45:06 * elliott does the regular Chrome restart
17:45:26 <kallisti> hmmm, when would you use CReal?
17:45:40 <elliott> when you want computable reals
17:45:51 <elliott> if you don't know whether you do or not, you don't
17:46:04 <kallisti> so it would basically be to avoid floating point errors?
17:46:09 <elliott> no
17:46:13 <elliott> that's Rational
17:46:37 <kallisti> so it would basically be to avoid floating point errors when you're not dealing with rational numbers?
17:46:48 <elliott> you are dealing with rational numbers
17:46:51 <elliott> floats are an approximation of rationals
17:46:55 <ais523> kallisti: if it's referring to all computable reals, it only work properly on irrational numbers
17:46:58 <ais523> *works
17:47:07 <elliott> ais523: huh?
17:47:10 <ais523> computable reals that happen to be equal to integers can't actually be converted to decimal expansion
17:47:17 <ais523> you can still compute with them
17:47:24 <elliott> ais523: err, I don't know what you're talking about
17:47:27 <ais523> but you can't do < or > on computable reals unless the numbers happen to actually be different
17:47:29 <elliott> CReal can output approximate decimals just fine
17:47:33 <kallisti> elliott: what about pi?
17:47:37 <elliott> that's got nothing to do with decimal expansion
17:47:39 <elliott> kallisti: if your question involves "avoid", "errors", you don't want CReal
17:47:40 <kallisti> that's irrational and approximated by float.
17:47:47 <elliott> kallisti: unless you're a mathematician, you don't want CReal
17:47:48 <ais523> elliott: I'm thinking of infinite-precision real numbres
17:47:52 <ais523> *numbers
17:47:54 <elliott> or a theoretical CSist
17:48:02 <kallisti> can I pretend to be one of those?
17:48:09 <elliott> ais523: nobody uses the infinite-digit representation
17:48:10 <elliott> kallisti: no.
17:48:10 <kallisti> I mean
17:48:14 <kallisti> I actually have no use case at the moment.
17:48:19 <elliott> kallisti: here's some things CReal can't do:
17:48:19 <kallisti> I was merely curious
17:48:22 <elliott> kallisti: terminate when you do (a == a)
17:48:30 <elliott> kallisti: terminate when you do (a > a)
17:48:34 <ais523> elliott: I've been to seminars where infinite-digit representation was involved
17:48:35 <elliott> kallisti: terminate when you do (a < a)
17:48:49 <ais523> and the main difficulty, as you're mentioning there, is comparing two numbers that happen to be equal
17:48:55 <elliott> ais523: the main difficulty is arithmetic
17:48:57 <kallisti> elliott: you mean /always/ terminate right?
17:49:01 <elliott> that's just a property of the computable reals
17:49:01 <Deewiant> > let a = 1.23 :: CReal in a == a
17:49:01 <elliott> kallisti: no
17:49:02 <lambdabot> True
17:49:06 <elliott> Deewiant: that's a cheat
17:49:09 <ais523> kallisti: no, you get an infinite loop whenever you compare a number to itself
17:49:14 <elliott> CReal's (==) instance just does it to an approximation
17:49:20 <elliott> also
17:49:27 <ais523> elliott: oh, I guess it's approximating with the decimal expansions too?
17:49:28 <elliott> I'm not sure that's Few Digits' CReal
17:49:34 <ais523> as in, there's always a chance that the last digit is wrong?
17:49:37 <ais523> that makes sense
17:50:03 <elliott> ais523: well, um, you can always take a CReal to within a given precision
17:50:07 <elliott> i.e. "pi to 0.0000001"
17:50:28 <ais523> elliott: yes, and your result will have more digits than you asked for, with the last potentially being wrong
17:50:36 <ais523> you can't say "pi to 8 decimal places", though
17:50:52 <kallisti> elliott: they should be renamed to "undecidably equal reals"
17:51:00 <ais523> well, you can because pi is irrational, but you couldn't if there was a chance that the number was actually accurate to 8 decimal places
17:51:10 <elliott> kallisti: you act like you were expecting computable reals to be useful for computation
17:51:35 <kallisti> yeah..
17:51:41 <kallisti> > pi ::CReal
17:51:42 <lambdabot> 3.1415926535897932384626433832795028841972
17:51:45 <kallisti> delicious cereal
17:52:07 <elliott> http://sourcereal.com/
17:52:15 <kallisti> elliott: such a good site
17:52:40 <kallisti> elliott: so CReal isn't good for like... high precision math because it doesn't terminate often?
17:52:56 <elliott> kallisti: even if computable reals were useful for computation, Few Digits is incredibly slow
17:53:02 <elliott> as are all the implementatinos, because... they're not useful for computation
17:53:13 <elliott> it's theory. unless you're a theorist, you don't care.
17:53:22 <elliott> "Few Digits is not fast. Few Digits is part of my Ph. D. research. My goal is to implement an exact real arithmetic package in Coq that is proven correct (with respect to C-CoRN) and is sufficiently fast. The goal is to be fast enough to prove the inequalities required by Hales’s proof of Kepler’s Conjecture."
17:54:03 <kallisti> so I only want to use CReal if I'm proving the inequalities required by Hale's proof of Kepler's Conjecture
17:54:07 <kallisti> got it.
17:54:27 <ais523> elliott: I've been to a seminar that was using computable reals to calculate pi to infinitely many decimal places
17:54:34 <ais523> and we've been using the resulting program as a test of the hardware compiler
17:54:46 <ais523> on the basis that it's the sort of program that makes no sense to typical hardware compilers
17:54:48 <elliott> ais523: that's, err, noteworthy enough for a seminar?
17:54:55 <elliott> I can do that in five lines of Haskell
17:55:07 <ais523> elliott: it was about computable reals, and just an example
17:55:11 <elliott> fair enough
17:55:43 <ais523> I ran the resulting VHDL for almost a week in a simulator on my laptop, it output the first 4 balanced binary digits
17:55:53 <elliott> @quote pi
17:55:54 <lambdabot> quicksilver says: overlapping actually shatters the language into tiny inconsistent pieces, and incoherent files off the edges of the pieces so they don't even fit together any more.
17:55:56 <elliott> erm
17:55:58 <elliott> `quote pi
17:56:00 <HackEgo> 9) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence \ 14) <pikhq> First, invent the direct mind-computer interface. <pikhq> Second, you know the rest. \ 15) IN AN ALTERNATE UNIVERSE: <pikhq> First, invent the direct mind-computer interface. <pikhq> Second, learn the rest with your NEW MIND-COMPUTER INTERFACE. \ 30)
17:56:02 <elliott> gah
17:56:04 <elliott> `quote digit
17:56:06 <HackEgo> 427) <ais523_> meanwhile, I've been running a program for over 24 hours (getting close to 48 now) which is calculating digits of pi, in binary <ais523_> so far, it has found four digits <ais523_> I hope it will find the fifth some time this week \ 513) <pikhq> I actually had a Neopets account. I later gained a second digit in my age. \ 643) <fungot> sadhu: it's been said that boole is the crowning jewel perched
17:56:09 <elliott> 427
17:56:18 <ais523> yep
17:56:22 <ais523> I knew it was in there somewhere
17:57:03 <ais523> part of the slowness is all the interpretation between paradigms
17:58:10 <ais523> simulating FPGA behaviour on a CPU is slow, as they're rather different arches; doing single-threaded recursion on an FPGA isn't really faster than doing it on a CPU; and there was no memoization, in a program designed to run in a call-by-need language
17:58:22 <Gregor> lol, this spam is from "Google Incorporation. (info.google@msn.com)"
17:58:29 <ais523> (OK, so Haskell isn't /technically required/ call-by-need, but what sane interp doesn't implement it like that?)
17:58:36 <ais523> Gregor: that's pretty good
17:58:54 <elliott> <ais523> (OK, so Haskell isn't /technically required/ call-by-need, but what sane interp doesn't implement it like that?)
17:59:00 <elliott> ais523: speculative evaluation is pretty sane!
17:59:25 <ais523> elliott: hmm, what's that, and how is it different from call-by-need?
17:59:43 <elliott> ais523: it isn't a complete strategy itself, it just refers to evaluating thunks even when they're not demanded
17:59:56 <elliott> and looking away sheepishly and pretending nothing happened if it ends up _|_
18:00:09 <elliott> the idea is that you predict which thunks are going to be used in the future and evaluate them ahead of time in another thread
18:00:11 <elliott> thus saving time later on
18:00:21 <ais523> ah, I see
18:00:55 <ais523> presumably that ends up somewhat concurrent if done well?
18:01:15 <elliott> well, you could even not do it in a separate thread
18:01:20 <elliott> you'd just have to bound the number of steps you take
18:01:34 <elliott> to make sure you don't accidentally make a terminating program with a non-terminating subterm less terminating than you'd like
18:02:23 <ais523> elliott: if it's not in a separate thread, there's no benefit to doing it out of order, is there?
18:03:44 <ais523> elliott: what was your Perl question about, btw?
18:03:56 <elliott> ais523: well, you could change [high activity][long pause][result] into [halved activity][result]
18:04:07 <elliott> by using every other cycle to reduce another complicated thunk
18:04:13 <ais523> ah, hmm
18:04:14 <elliott> that will be forced afterwards
18:04:20 <ais523> you don't get the result any faster, but it might look nicer to the user?
18:04:29 <elliott> ais523: well, incremental results are a useful thing :)
18:04:40 <elliott> ais523: you wouldn't have wanted to get no output until the program found every digit of pi, right?
18:04:58 <ais523> but it wouldn't give you any output any earlier
18:05:06 <ais523> it'd just delay some of the outputs
18:05:11 <elliott> <elliott> ais523: well, you could change [high activity][long pause][result] into [halved activity][result]
18:05:15 <elliott> the high activity outputs constantly
18:05:15 <ais523> and you can do that just as easily with a postprocessor
18:05:17 <elliott> as does the result
18:05:37 <ais523> elliott: yep, so you can get a postprocessor that just hides the results until it's ready to feed one to the user and make it look like they're coming constantly
18:05:50 <elliott> heh
18:05:53 <elliott> well, OK
18:06:07 <elliott> ais523: your argument seems to imply threads are useless on a uniprocessor
18:06:11 <ais523> I imagine most people wouldn't find that useful, but in case it's required…
18:06:19 -!- Klisz has quit (Ping timeout: 244 seconds).
18:06:28 <kallisti> ais523: his question was about why Perl is so awesome and why he hasn't been using it since he was 8.
18:06:35 <ais523> elliott: no, we were specifically discussing the single-threaded case
18:06:51 <ais523> I can agree with a concurrent but uniprocessor case, potentially, although I think any performance gains will be marginal
18:10:27 <kallisti> it would be nice if strictness analysis worked perfectly always.
18:10:55 <ais523> I guess it can't because doing so would be uncomputable?
18:11:18 <elliott> ais523: but, umm, what's the difference between doing A, B, A, B, and doing A and B in threads on a uniprocessor machine?
18:12:17 <ais523> because doing A and B in threads can just do "A then B", or it can interleave if necessary to do something like benefit from pipeline stalls
18:12:26 <kallisti> ais523: I think you can get pretty close to perfect..
18:12:48 <elliott> ais523: that's a microoptimisation
18:12:50 <elliott> kallisti: no you can't
18:12:52 <ais523> kallisti: indeed; you can write infinite loop checkers in practice that catch the majority of accidental infinite loops
18:13:04 <elliott> strictness analysis is harder than detecting infinite loops imo
18:13:10 <kallisti> yeah..
18:13:11 <ais523> but you're not going to be able to use them for solving the world's big fundamental problems
18:13:17 <elliott> it's incredibly easy to change semantics
18:13:57 <ais523> elliott: this sort of thing's what my PhD is about, transforming programs without changing their semantics
18:14:14 <ais523> as long as you have a really good type system for the transformation (which needn't be the same as that of the underlying language), it's not too bad
18:14:20 <elliott> ais523: "this sort of thing" -- you took a large leap in generality there :P
18:14:28 <ais523> elliott: indeed :)
18:14:37 <elliott> strictness analysis results in rather simple transformations, they're just really tricky to find
18:17:08 <elliott> 12:35:49: <kallisti> psh, come on. you can totally non-deterministically reverse to multiple past images.
18:17:08 <elliott> 12:35:50: <ais523> elliott_: I'm surprised that you're surprised at that; it's become more and more common recently
18:17:09 <elliott> 12:35:55: <ais523> I'm upset by it, but not surprised
18:17:11 <elliott> I don't keep up with PC gaming
18:17:14 <elliott> 12:36:12: <kallisti> what's wrong with requiring Steam? it's free right?
18:17:28 <elliott> kallisti: must be running to play the game, requires network connection to play the game, forced updates
18:17:32 <elliott> kallisti: DRM
18:18:15 <Deewiant> Network connection isn't required
18:18:34 <elliott> Deewiant: I haven't heard good things about the "offline mode"
18:18:35 <Deewiant> Nor, in all cases, is keeping Steam running; you can often run the game exe directly
18:18:43 <elliott> (Mostly what I've heard is "it doesn't work")
18:18:43 <Deewiant> elliott: It's worked for me the few times I've used it
18:19:22 <elliott> Deewiant: Well, my other objections are still relevant :P
18:19:37 <Deewiant> Forced updates is the only relevant one
18:19:55 <ais523> existence of DRM is often relevant
18:20:12 <Deewiant> I took "DRM" as a summary of the previous points
18:20:38 <ais523> nah, the fundamental concept of DRM is that it prevents you copying the game to a different system
18:20:46 <ais523> the previous points are consistent with that, but don't imply it
18:20:48 <Deewiant> Which Steam doesn't
18:20:57 <ais523> it does if you don't own it
18:21:24 <elliott> Deewiant: It was a summary, yes
18:21:30 <elliott> Another objection: You're not allowed to sell your copy of the game
18:21:36 <elliott> (Or, more generally, share it)
18:22:14 <Deewiant> True enough
18:22:35 <kallisti> I don't think is an objection to "Steam has DRM" as much as it is "games are copyrighted and closed source"
18:22:47 <elliott> Deewiant: Even more generally, I object to buying a physical box containing what is essentially a right to rent the game out :P
18:22:58 <elliott> kallisti: Uhh, no.
18:23:02 <elliott> kallisti: Selling games is not illegal.
18:23:17 <elliott> I can buy a non-Steam game box and sell it and the recipient can play the game.
18:23:19 <ais523> elliott: well, I did just that in the case of Neverwinter Nights; went to a shop and bought the Windows version for a license to download the Linux version (from the manufacturers)
18:23:22 <elliott> I can buy a non-Steam game box and give it to someone else and the recipient can play the game.
18:23:30 <elliott> None of these things are possible with a Steam box.
18:24:07 <elliott> ais523: At least you could move those bits around and have them still work without them being tied to an account
18:24:10 <kallisti> I see.
18:24:19 <elliott> ais523: Although selling them would be illegal because [copyright law]
18:24:28 <ais523> elliott: indeed
18:24:51 <elliott> kallisti: It's pretty impressive that copyright has managed to convince people that wanting to sell something you bought is unreasonable because it's INFRINGEMENT, though
18:25:07 <ais523> I liked Borland's licenses; they were pretty much "please treat this software as a physical object; it's just fine for you to give or sell it to someone else but you must delete all your copies in the process"
18:25:45 <elliott> ais523: well, it's more reasonable than most licenses, but it smells of lawyers demanding that bits be coerced into being like boxes
18:25:59 <ais523> although they generally had a clause that you couldn't use the product to make another product that competed with itself
18:26:14 * elliott wonders what would happen if you just gave people a license to do absolutely anything with the downloaded binaries
18:26:15 <ais523> so, say, you couldn't produce a commercial C compiler using Borland C
18:26:20 <elliott> sure, it'd make it legal to put it up on a torrent site
18:26:24 <elliott> but it'll end up on a torrent site /anyway/
18:26:37 <elliott> so if it doesn't noticeably increase piracy and the like, it sounds like a good idea
18:26:44 <elliott> because of all the hassle it eliminates
18:26:45 <ais523> elliott: I'm upset that game companies don't sell legal ROMs
18:26:53 <ais523> I know quite a few people who'd buy them; I probably would
18:27:01 <ais523> (that is, console game companies)
18:27:08 <elliott> heh
18:27:21 <elliott> unfortunately that runs into the problem that ROMs have tons of formats
18:27:24 <calamari> ais523: many years ago atari licensed some of their arcade roms to a company called star roms.. I bought a few of them
18:27:24 <ais523> the ROM is going to get dumped anyway, so why not give a legal access route for it rather than force people who want it to get it illegally?
18:27:30 <elliott> and many of them are bad (= can't accurately represent the source media)
18:27:41 <elliott> and the chances of the game company picking the right one are very small :P
18:27:48 <elliott> *games
18:27:49 <ais523> people would write converters
18:27:58 <elliott> ais523: you can't write a converter from a broken format to a working one
18:28:04 <ais523> well, OK
18:28:06 <calamari> yeah that's what happened.. star roms handled the formatting of it for mame or whatever
18:28:17 <ais523> I'd assume they'd pick a format that contained all necessary info
18:28:20 <Vorpal> elliott: for modern roms you just need a memory dump. Much harder for snes era and older of course.
18:28:23 <elliott> ais523: consider that the vastly most common SNES ROM format is broken
18:28:27 <elliott> well, *formats
18:28:38 <elliott> to my understanding
18:28:42 <ais523> elliott: hmm, what info does it miss?
18:28:42 <Vorpal> indeed
18:28:51 <elliott> ais523: ask pikhq for details
18:29:09 <elliott> http://bos.github.com/criterion/ oh my god this is so pretty
18:29:43 <kallisti> Valve Corporation President Gabe Newell also stated "most DRM strategies are just dumb" because they only decrease the value of a game in the consumer's eyes.
18:29:46 <kallisti> heh
18:30:00 <ais523> wow, is that using something like 200-space indents?
18:30:10 <elliott> ais523: ?
18:30:20 <ais523> let me take a screenshot
18:31:06 <fizzie> Nuance's "Dragon Dictation" for iPhone has funny license terms: "You may not: -- (i) use the Service for purposes of comparison with or benchmarking against products or services made available by third parties." So you can't compare it with other iDevice speech recognition things in order to pick one of them to use.
18:31:29 <Vorpal> fizzie: ... wtf
18:31:30 <kallisti> elliott: what's up with all the letters blending together at the bottom...
18:31:42 <Vorpal> kallisti: where?
18:31:46 <elliott> kallisti: that's a standard linux/chromium font rendering problem
18:31:53 <elliott> try Ctrl + Ctrl -
18:32:00 <Vorpal> kallisti: the link? works fine in firefox
18:32:14 <kallisti> elliott: oh weird.
18:32:24 <kallisti> elliott: I thought that was going to do... nothing, but it fixed it.
18:32:29 <fizzie> And the "no reverse engineering" clause is particularly broad too: "You may not -- decompile, disassemble, reverse engineer or otherwise attempt to derive, reconstruct, identify or discover any source code, underlying ideas, or algorithms, of the Software or Service by any means". If you're literal enough, you can't even just idly wonder what they've done, because it would be "identifying underlying ideas".
18:32:34 <ais523> bleh, imgur got stuck at 79%
18:32:37 <calamari> speaking of linux.. I switched to lubuntu (lxde) and I like it
18:32:40 <elliott> ais523: ompldr.org?
18:32:43 <Deewiant> fizzie: Identifying would be getting it correct
18:32:47 <ais523> elliott: what's that site about?
18:32:57 <Deewiant> fizzie: You can wonder as long as you wonder about the wrong things
18:32:57 <fizzie> Deewiant: Okay, "attempting to identify".
18:33:01 <elliott> ais523: hardcore pornography and warez, obviously
18:33:10 <Deewiant> fizzie: Oh, true. Heh.
18:33:12 <ais523> hmm
18:33:16 <ais523> I'll just describe it
18:33:22 <elliott> also, file hosting
18:33:28 <elliott> and not hardcore pornography and warez
18:33:31 <elliott> but close enough
18:33:55 <ais523> it looks like JavaScript, or a similar language; it starts beyond the left edge of the screen, and the first line is ','","");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AHAL.x){AL.x
18:33:58 <fizzie> Deewiant: Someone at work had tried to use it (they added the Finnish option just recently), got some bad results for complicated words with lots of suffixes, and wondered about the language model; felt tempted to say "no, stop! you're attempting to identify ideas!"
18:34:07 <Vorpal> ais523: where is that from?
18:34:07 <calamari> haha top files.. 2 are ponies
18:34:08 <ais523> then the second line, and all the lines on the first screen, start level with the H in AHAL
18:34:12 <ais523> Vorpal: elliott's link
18:34:15 <Vorpal> ais523: no?
18:34:21 <Vorpal> ais523: what browser are you using
18:34:22 <elliott> ais523: s.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright=
18:34:22 <elliott> G-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("
18:34:28 <elliott> ais523: looks like your browser misparses html
18:34:29 <ais523> Vorpal: Firefox
18:34:44 <Vorpal> ais523: that stuff doesn't show up in my firefox window. Nor in view source
18:34:50 <elliott> function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}
18:34:52 <ais523> elliott: then a screenful down from that, it starts even /further/ to the right, about one and a half screenfuls of horizontal scorlling
18:34:52 <elliott> what a good function
18:35:01 <elliott> ais523: run it in a non-broken browser
18:35:05 <Vorpal> ais523: the whole page is a script though
18:35:07 <elliott> *load
18:35:13 <elliott> Vorpal: no it's not
18:35:18 <elliott> well, the chart-drawing is
18:35:29 <fizzie> The Chromium "let's mangle letters together" thing is slightly annoying. (I've been using Chromium lately because my Firefox got so full of tabs I haven't dared to restore-session it, and I don't want to be all ineiros about it.)
18:35:30 <Vorpal> right, I just right clicked and went "view source"
18:35:37 <ais523> below that, about two screenfulls scrolling to the right, are the words "criterion performance measurements" in really large font
18:35:44 <elliott> ais523: you can stop describing
18:35:56 <ais523> and then various information, with a rather worrying amount of vertical spacing
18:36:01 <ais523> elliott: I'm just amused that you found it all beautiful
18:36:02 <Vorpal> ais523: which firefox version?
18:36:04 <elliott> fizzie: it never used to happen to me before i switched to arch; I think Chrome might not have that problem somehow
18:36:08 <elliott> ais523: because it doesn't look like that
18:36:10 <ais523> Vorpal: 3.6
18:36:20 <elliott> ais523: ha ha, I'm seeing something different to you and I think it looks nice
18:36:20 <Vorpal> ais523: that is ancient!
18:36:24 <elliott> amusing!
18:36:25 <Vorpal> ais523: I'm on 8.0.1
18:36:25 <ais523> elliott: in that case, why won't you believe me when I say github is broken?
18:36:28 <calamari> seemed to look okay for me.. ff 8 in linux
18:36:33 -!- elliott has left ("ragepat").
18:36:36 -!- elliott has joined.
18:36:37 -!- elliott has left ("ragepart").
18:36:50 <Vorpal> ais523: let me try on whatever luicd has
18:37:16 <kallisti> @tell elliott fuckfacer
18:37:16 <lambdabot> Consider it noted.
18:37:20 -!- hagb4rd has joined.
18:37:35 <ais523> @ignore kallisti
18:37:35 <lambdabot> Not enough privileges
18:37:39 <ais523> hmm
18:37:45 <ais523> how do I tell it not to let kallisti @tell me?
18:37:49 <ais523> @help tell
18:37:50 <lambdabot> tell <nick> <message>. When <nick> shows activity, tell them <message>.
18:37:59 <ais523> @help commands
18:38:00 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
18:38:03 <kallisti> @tell elliott -shooshpap-
18:38:04 <lambdabot> Consider it noted.
18:38:05 <ais523> @list
18:38:05 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
18:38:07 <calamari> what elliott just did reminds me of when I am trying to get off the phone with someone and saying the usual crap and the phone disconnects
18:38:09 <Vorpal> ais523: yeah it is broken on firefox 3.6
18:38:19 <calamari> do I call back to say "bye", or just leave it at that?
18:38:20 <Vorpal> ais523: just upgrade already
18:38:28 <hagb4rd> hm html5 gepaart mit ein wenig krimineller energie.. enjoy ;)
18:38:32 <hagb4rd> http://homepage.alice.de/hagbard/disintegration.html
18:38:38 <kallisti> never call to say bye
18:39:12 <calamari> yeah I don't,, it's just awkward .. so rejoining irc to correct your /quit typo seems weird lol
18:39:13 <Vorpal> ais523: in a modern browser it really has a very nice design
18:39:25 <ais523> Vorpal: isn't being broken on a reasonably recent browser (Firefox 3.6 is reasonably recent, even if the version numbers have been going stratospheric recently to hide it) a sign of a badly-designed website?
18:39:59 <Gregor> I can't think of a clever way to format my code for my IOCCC entry.
18:40:00 <Deewiant> Firefox 3.6 is two years old
18:40:02 <Vorpal> ais523: maybe. But then it might be a bug in firefox 3.6
18:40:13 <ais523> Deewiant: right, it's only two years old
18:40:14 <calamari> didn't work in ie 6
18:40:14 <Gregor> I'm thinking I'll just indent it nicely and say "look: even indented nicely it's incomprehensible"
18:40:18 <calamari> (kidding, didn't test that)
18:40:20 <Vorpal> ais523: I don't think you should design for anything but the official specs.
18:40:30 -!- elliott has joined.
18:40:31 <Vorpal> ais523: if a browser is buggy is it not the problem of the web designer
18:40:33 <elliott> calamari: It was a /part typo!
18:40:34 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
18:40:43 -!- elliott has quit (Quit: this is a quit typo!).
18:40:55 <Vorpal> ais523: it is the problem of the browser programmers
18:40:57 <fizzie> Deewiant: But latest 3.6.x is less than a month old.
18:41:05 <Vorpal> ais523: do you disagree about that?
18:41:07 <fizzie> (3.6.24, Nov 08.)
18:41:13 <ais523> Gregor: I've had the best indentation idea ever for my entry
18:41:14 <ais523> it's managed to confuse every prettypogram I've tried yet
18:41:17 <ais523> Vorpal: perhaps; I'm not convinced that the website is following the specs, though
18:41:32 <Deewiant> fizzie: Since < 3.6.10 they've all been only security updates
18:41:36 <Vorpal> ais523: I could throw it into the w3c validator. Not sure it does js
18:41:56 <ais523> well, it shouldn't be displaying scripts it doesn't understand
18:42:04 -!- elliott has joined.
18:42:04 <Vorpal> well, it isn't
18:42:05 <elliott> ais523: It is; your browser misparses comments.
18:42:08 <fizzie> Deewiant: An update is an update is an update.
18:42:09 <ais523> and it should gracefully degrade for people with scripts turned off (I have scripts turned off)
18:42:16 <calamari> elliott: glad you found my analysis amusing tho
18:42:19 <ais523> elliott: hmm, aha, I think I might know what the problem is
18:42:23 <Vorpal> "118 Errors, 5 warning(s) "
18:42:38 <ais523> does the page have a "comment" starting <!-- which contains an -- somewhere inside it?
18:42:40 <Deewiant> fizzie: But the issue here (if any) is probably related to the layout engine, which is the same in all 3.6.x.
18:42:41 <Vorpal> elliott: the thing is broken: http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fbos.github.com%2Fcriterion%2F%23grokularation
18:42:55 <elliott> ais523: yes, but that's irrelevant
18:42:58 <elliott> j<0){j++}if(j>1){j--}if(
18:43:09 <elliott> ais523: HTML is not SGML
18:43:13 <ais523> elliott: no it isn't; SGML parsing, -- toggles a comment inside <!
18:43:18 <elliott> ais523: HTML is not SGML]
18:43:19 <Gregor> Yup, definitely leaning towards indent -kr -nut
18:43:23 <ais523> what version of HTML does the page claim to use?
18:43:27 * ais523 checks
18:43:28 <elliott> ais523: irrelevant
18:43:36 <Vorpal> elliott: that is besides the point since the page doesn't validate in the doctype it gives
18:43:36 <elliott> ais523: in fact, Firefox ignored --s for the longest time
18:43:47 <ais523> elliott: /not/ irrelevant, as sufficiently old versions of HTML use SGML comment parsing, don't they?
18:43:51 <elliott> ais523: but Ian Hixie pestered them to "fix" it (IIRC) during the acid 2 days
18:43:57 <Vorpal> elliott: hello?
18:44:02 <elliott> then later realised he was wrong and everyone removed -- parsing
18:44:10 <elliott> ais523: no, old HTML versions use whatever browsers parse them as
18:44:19 <Vorpal> nor do the CSS validate http://jigsaw.w3.org/css-validator/validator?profile=css2&warning=2&uri=http%3A%2F%2Fbos.github.com%2Fcriterion%2F
18:44:30 <Vorpal> elliott: PAGE IS BROKEN. DO YOU HEAR ME?
18:44:39 <ais523> Vorpal: he probably has you on ignore
18:44:42 <elliott> ais523: e.g., the relevant parsing algorithm nowadays is the HTML5 algorithm, which applies to /all/ HTML versinos
18:45:06 <ais523> at least he hasn't reacted to anything you've said in my scrollback
18:45:07 <Vorpal> ais523: can you give him the relevant link to tell him he is wrong then? http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fbos.github.com%2Fcriterion%2F
18:45:07 <elliott> Vorpal: (a) I'm not responding to you because you're not saying anything relevant (b) stop being so fucking impatient, even if I was intending to respond to you I can't type this fast to two people at once
18:45:13 <elliott> (c) you're an idiot
18:45:21 <ais523> ah, mental ignore
18:45:29 <Vorpal> no I'm not. The official standard is the official standard.
18:45:32 <Vorpal> There is nothing more to it.
18:45:34 <fizzie> Vorpal: Sadly, post-3.6.x Firefox no longer (I believe) supports OS X 10.4. :/
18:45:42 <Vorpal> fizzie: heh
18:45:47 <ais523> fizzie: nor does Apple, presumably?
18:45:59 <kallisti> ?SDdd
18:45:59 <lambdabot> Unknown command, try @list
18:46:06 <elliott> Vorpal: indeed, you are continuing to reaffirm your status as idiot (I'm responding to you now, are you happy?)
18:46:12 <fizzie> ais523: Probably not, but newer versions cost money, and newest versions don't do PowerPC hardware either.
18:46:24 <ais523> fizzie: right, indeed
18:46:29 <Vorpal> elliott: certainly. Why are standards idiotic, as you seem to suggest is your opinion?
18:46:33 <elliott> lol
18:46:50 <elliott> yeah okay I'm putting you on actual real /ignore for a while, enjoy your timeout
18:47:01 <elliott> on less stupid topics: wow, qemu 1.0 is out
18:47:04 <Vorpal> *shrug*, I'm going to reboot to play skyrim.
18:47:13 <elliott> fizzie: Uh, 10.5 does PPC>
18:47:14 <elliott> *.
18:47:23 <fizzie> elliott: Yes, that's why "newest" and not "newer".
18:47:25 <ais523> elliott: hmm, there are only two sorts of projects, those which start at or above 1.0, and those who never reach it
18:47:29 <ais523> thus, umm, qemu doesn't exist
18:47:44 <Deewiant> Nor does your web browser
18:48:07 <calamari> ais523: so what happened when wine went 1.0?
18:48:19 <Vorpal> or meh, dredmor rather
18:48:44 <ais523> calamari: hey, enough people have called me on an obviously incorrect sweeping generalisation! you don't have to too, especially when I didn't mean it seriously!
18:48:49 <ais523> Vorpal: hmm, I was playing dredmor last night
18:48:57 <elliott> ais523: people should use mcmap's versioning scheme instead; it recently updated from version 7e7d04d to version b0bd464
18:48:57 <calamari> ais523: it was meant as a joke :)
18:48:59 <ais523> it seemed a bit buggy, and I hate the controls, but otherwise it seems like a good game
18:49:16 <calamari> ais523: there were plenty of silly comebacks possible :)
18:49:19 <Vorpal> ais523: oh, not a fan of wasd? I think the keys are rebindable
18:49:19 <ais523> elliott: most versioning systems benefit from having at least an obvious partial order
18:49:33 <elliott> ais523: I'm sure git commit trees have such a thing
18:49:35 <ais523> Vorpal: not a fan of having to use the mouse for most actions
18:49:45 <Vorpal> ais523: ah
18:49:49 <ais523> elliott: they do; but the version number abbreviations don't have one that can be counted mentally
18:49:58 <ais523> Vorpal: in particular, I think it's ridiculous that I can't just bump-attack enemies
18:50:05 <ais523> and it took me quite a while to figure out how to cancel spellcasting
18:50:11 <Vorpal> right
18:50:17 <ais523> (you press the left mouse button while still holding the right mouse button)
18:50:27 <Vorpal> ais523: I'm not playing a spellcaster, so haven't run into that problem yet
18:50:31 <ais523> inventory management is awkward, too
18:50:36 <ais523> Vorpal: it applies for everything else as well
18:50:41 <Vorpal> right
18:50:41 <ais523> incidentally, the tutorial is uncompletable
18:50:47 <Vorpal> ais523: yes I found out that bug too
18:50:50 <ais523> because the tutorial character's stats are too low
18:50:57 <calamari> I really need to get this capture driver working on ntsc
18:50:59 <Vorpal> ais523: should report it somewhere
18:51:00 <ais523> seems like a reasonably obvious oversight
18:51:15 <ais523> Vorpal: meh, commercial game, if they want bug reports they should pay for them
18:51:21 <Vorpal> hahaha
18:51:32 <Vorpal> ais523: anyway, if your game suddenly crashes there is a patch for the data files on the forum. Worked for me
18:51:41 <ais523> that hasn't happened to me yet
18:52:07 <elliott> ais523: many companies do offer token rewards for reporting sufficiently important bugs
18:52:17 <ais523> elliott: indeed, and that makes sense
18:52:31 <ais523> a company would probably be incorrect not to do so, economically speaking
18:52:53 <Vorpal> ais523: so what do you think it apart from those bugs and the control scheme?
18:52:55 <Deewiant> Too bad that most commercial software doesn't have public bug trackers
18:53:22 <elliott> Deewiant: The game Phantom_Hoover had a problem with was worse than that; it had a public BugZilla
18:53:41 <elliott> (The joke is that Bugzilla is the worst piece of software ever created)
18:54:07 <ais523> Vorpal: it's interesting so far; it feels rather grindy, and somewhat spoilery when it comes to monsters, though
18:54:11 <ais523> it reminds me of Crawl more than anything else
18:54:15 <Vorpal> ah
18:54:27 <ais523> elliott: it's the only site I've ever found with a login that works with cookies disabled
18:54:37 <ais523> admittedly, it makes you log in every screen, but it works
18:54:42 <Vorpal> ais523: I believe there is an option for less grinding in the new game options thingy
18:54:49 <ais523> Vorpal: there is, perhaps I'll try it
18:55:30 <kallisti> seriously lambdabot could easily allow deleting of single @let binds..
18:55:49 <ais523> @let id = flip
18:55:50 <lambdabot> <local>:1:17:
18:55:50 <lambdabot> Ambiguous occurrence `id'
18:55:50 <lambdabot> It could refer to either `...
18:55:54 <elliott> kallisti: not really
18:55:59 <ais523> @let true = false
18:56:00 <lambdabot> <local>:3:7: Not in scope: `false'
18:56:05 <ais523> oh, right
18:56:10 <ais523> and I can't redefine type constructors
18:56:17 <ais523> besides, it should be False = True
18:56:27 <elliott> > let False = True in False
18:56:29 <lambdabot> False
18:56:34 <elliott> > let False = True in False == True
18:56:34 <ais523> @let False = True
18:56:35 <lambdabot> Defined.
18:56:35 <lambdabot> False
18:56:39 <ais523> oh, wow, it does work?
18:56:48 <elliott> yes
18:56:49 <ais523> > False
18:56:50 <lambdabot> False
18:56:59 <ais523> that is, @let on type constructors
18:57:07 <kallisti> @let [] = []
18:57:08 <lambdabot> Defined.
18:57:08 <kallisti> ais523: sure
18:57:10 <elliott> hmm, I forget why that match ends up non-strict
18:57:13 <Deewiant> > []
18:57:13 <lambdabot> []
18:57:14 <ais523> > False != True
18:57:15 <lambdabot> Not in scope: `!='
18:57:21 <kallisti> @let 0 = 5
18:57:21 <ais523> what's not-equals in Haskell?
18:57:22 <lambdabot> Defined.
18:57:23 <Deewiant> > False /= True
18:57:24 <lambdabot> True
18:57:30 <kallisti> > 0 == 5
18:57:31 <ais523> I don't think the definition is working, though
18:57:31 <lambdabot> False
18:57:32 <kallisti> WOW AMAZING
18:57:35 <kallisti> IT'S LIKE
18:57:36 <kallisti> PATTERN
18:57:37 <kallisti> MATCHING
18:57:39 <kallisti> NOTHING
18:57:40 <kallisti> AWESOME
18:57:44 <kallisti> :)
18:57:46 <elliott> ais523: it's not a definition
18:57:50 <elliott> ais523: it's a pattern-match
18:57:55 <elliott> ais523: let x:xs = ys in ...
18:57:58 <elliott> ais523: let (:) x xs = ys in ...
18:58:01 <elliott> ais523: let Right x = y in ...
18:58:04 <elliott> ais523: let True = y in ...
18:58:09 <elliott> ais523: let y = False; True = y in ...
18:58:11 <elliott> ais523: let True = False in ...
18:58:32 <elliott> Deewiant: why does that match end up non-lazy, do you know
18:58:39 <Deewiant> Which match
18:58:45 <ais523> elliott: hmm, surely it's just matching True against True, finding that they match, and returning False?
18:58:49 <ais523> @let 2 + 2 = 5
18:58:50 <lambdabot> <local>:7:2:
18:58:50 <lambdabot> Multiple declarations of `L.+'
18:58:50 <lambdabot> Declared at: <local>:3...
18:58:55 <elliott> Deewiant: True = False
18:58:56 <elliott> ais523: what
18:59:00 <ais523> @let 2::Integer + 2::Integer = 5
18:59:00 <lambdabot> Parse error: 2
18:59:06 <ais523> elliott: I'm trying to redefine +
18:59:10 <elliott> that wasn't
18:59:12 <elliott> what the what
18:59:13 <elliott> was to
18:59:15 <elliott> but you can't do that
18:59:17 <elliott> <ais523> elliott: hmm, surely it's just matching True against True, finding that they match, and returning False?
18:59:19 <elliott> that was twhat the what was to
18:59:20 <Deewiant> @unlet
18:59:21 <lambdabot> Defined.
18:59:42 <Deewiant> elliott: Where is it non-lazy?
18:59:49 <elliott> Deewiant: erm
18:59:53 <elliott> Deewiant: why does it end up lazy, rather :)
18:59:56 <ais523> @let flip = id
18:59:56 <lambdabot> <local>:8:0:
18:59:56 <kallisti> `run paste `which word`
18:59:56 <lambdabot> Multiple declarations of `L.flip'
18:59:57 <lambdabot> Declared at: .L.hs:...
18:59:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24476
19:00:00 <elliott> > let Right _ = Left () in ()
19:00:01 <lambdabot> ()
19:00:04 <elliott> oh, duh
19:00:11 <Deewiant> elliott: Why wouldn't it :-P
19:00:12 <ais523> kallisti: why would you pastebin the output of which?
19:00:13 <elliott> > let Right _ = undefined in ()
19:00:14 <lambdabot> ()
19:00:15 <elliott> right, all matches are lazy
19:00:18 <elliott> just not in that sense
19:00:19 <ais523> `run which word
19:00:21 <HackEgo> ​/hackenv/bin/word
19:00:28 <kallisti> ais523: .....
19:00:41 <fizzie> Deewiant: ITYM @undefine; but is it the typofix that makes @unlet into @let which causes it to say "Defined."?
19:00:45 <ais523> that's like, umm, pastebinning the output of whoami
19:00:55 <kallisti> I'm pastebinning the file it refers to
19:00:55 <Deewiant> @undef
19:01:02 <Deewiant> @let
19:01:03 <lambdabot> Defined.
19:01:04 <ais523> kallisti: oh, right
19:01:05 <kallisti> which makes way more sense.
19:01:08 -!- calamari has quit (Quit: Leaving).
19:01:12 <Deewiant> fizzie: Thanks, and presumably.
19:02:08 <elliott> @let
19:02:09 <lambdabot> Defined.
19:02:13 <elliott> @let <
19:02:13 <lambdabot> Parse error: <
19:02:32 <elliott> @let x = 2 + 2
19:02:33 <lambdabot> Defined.
19:02:39 <elliott> @let where (+) = undefined
19:02:40 <lambdabot> Parse error: where
19:02:42 <elliott> Aww. :(
19:02:48 <Deewiant> @undef
19:02:56 <Deewiant> @let x = 2 + 2 where (+) = undefined
19:02:57 <lambdabot> Defined.
19:03:01 <elliott> Yes, that's obvious
19:03:10 <elliott> Deewiant: Gimme two lines which are valid definition lines by themselves but which, when concatenated, form a valid definition themselves
19:03:12 <elliott> Thx
19:03:42 <Deewiant> @let y = 2 + 2 where
19:03:43 <lambdabot> Defined.
19:03:54 <Deewiant> @let (+) = undefined
19:03:54 <lambdabot> <local>:2:6:
19:03:54 <lambdabot> Ambiguous occurrence `+'
19:03:54 <lambdabot> It could refer to either `L....
19:03:58 <Deewiant> elliott: Something like that? :-P
19:04:07 <elliott> Deewiant: Nice
19:04:16 <Deewiant> Of course the indentation makes the latter invalid by itself
19:04:21 <elliott> Deewiant: Unfortunately the clash is problematic...
19:04:27 <Deewiant> Except in contexts where the indentation is valid
19:04:29 <Deewiant> @undef
19:04:32 <elliott> @undefine
19:04:39 <elliott> I don't think that's working
19:04:45 <elliott> > y
19:04:47 <lambdabot> y
19:04:49 <Deewiant> > 2 + 2
19:04:50 <elliott> heh
19:04:50 <lambdabot> 4
19:04:52 <Deewiant> Works fine
19:05:28 <elliott> <mrakan> A hundred students have submitted their homework: a single Haskell module filled with functions of predefined names and types. I have correct function definitions in a module of my own: Correct.hs. What would be the best way to automatically verify how correct the students' homeworks are?
19:05:30 <elliott> I found ais523.
19:05:41 <elliott> <mike-burns> Review each homework line-by-line, offering feedback on what they did wrong, what they did right, and what was technically correct but could lead to problems.
19:05:46 <elliott> I found ais523's nemesis.;
19:05:55 <elliott> s/;$//
19:06:01 <ais523> elliott: heh
19:06:07 <ais523> I sometimes have to override the marking script
19:06:17 <ais523> but the whole point of these questions is that they're designed for automatic marking
19:06:29 <ais523> and there's another separate set of questions that aren't, and are marked by hand by eight other people
19:06:36 <ais523> so feedback both ways
19:07:23 <elliott> ais523: I would just spend all my time trying to craft programs that would fool the automatic marking system :(
19:08:07 <ais523> elliott: I only know of two; in both cases, I caught them checking the programs by eye, and emailed the student about them
19:08:30 <elliott> ais523: no, mine would overwrite your mailbox to remove the evidence
19:08:43 <ais523> elliott: I doubt you'd be able to break the sandbox
19:09:01 <elliott> I CAN DO ANYTHING IF I TRY HARD ENOUGH
19:09:05 <ais523> you'd need to either find a bug in ocamlc's parser, or in the part of ocamlrun that loaded the resulting compiled code into memory
19:09:16 <ais523> arbitrary code execution bug, that is
19:09:56 <kallisti> I wonder if my CS professors run our programs in a sandbox.
19:12:45 <kallisti> is there such a thing as like...
19:12:50 <kallisti> a file-system hash table?
19:13:11 <kallisti> basically to avoid sequentially reading large amounts of data that you only want to access by keys.
19:13:25 <elliott> it's called
19:13:27 <elliott> a directory
19:13:42 <kallisti> ah of course.
19:14:04 <kallisti> I could convert my markov model to a massive directory structure.
19:14:22 <elliott> kallisti: you should definitely keep it in memory.
19:14:30 <kallisti> I am.
19:14:36 <kallisti> I wasn't even considering that.
19:14:47 <kallisti> that question wasn't even related to the markov model stuff actually.
19:15:56 <fizzie> There is also a seek system call which lets you jump ahead within a file without sequentially reading through it and throwing everything away.
19:18:27 <ais523> and mmap, which lets you map a portion of a file into memory
19:19:15 <fizzie> Also they are "experimentally" keeping our Scheme-based "introduction to programming" courses for people who are interested.
19:19:37 <kallisti> fizzie: soon to be replaced by Java and C++
19:19:46 <kallisti> or like
19:19:48 <kallisti> Python maybe.
19:19:49 <fizzie> No, they replaced it with Java and Python quite a while ago.
19:20:03 <fizzie> Apparently they're experimenting in bringing it back, experimentally.
19:20:18 <kallisti> they should teach Perl.
19:20:19 <fizzie> And this is even second year they've doing the experimental experiment.
19:20:23 <kallisti> everyone would be so confused
19:20:25 <kallisti> it would be great.
19:20:31 <kallisti> no one would become a programmer
19:21:03 <fizzie> They seems to have updated the environment to Gambit-C 4.6.0 instead of I-don't-recall-what-it-was-but-it-was-something-positively-crummy.
19:21:25 <kallisti> though I think some aspects of Perl are reasonably intuitive.
19:21:30 <kallisti> particularly the string/numeric conversions.
19:21:45 <fizzie> Also the collaborative programming project is officially done using Git. How ultramodern.
19:22:48 <kallisti> I don't think they should use Python to teach things.
19:22:59 <kallisti> I guess for an absolutely basic introductory course it's good.
19:23:09 <kallisti> to introduce how to program.
19:23:48 <kallisti> Scheme is good though.
19:24:37 <fizzie> Last year's experiment was apparently Scheme+Scala.
19:24:41 <kallisti> I recall reading SICP as being a crucial moment in my understanding of how programs work.
19:25:07 <elliott> fizzie: Scala? As an introductory language?
19:25:14 <elliott> fizzie: Those students are so fucked.
19:25:23 <kallisti> all intro students should start with Malbolge.
19:25:26 <elliott> kallisti: a critical moment which takes place in the future, one presumes
19:25:29 <elliott> *crucial
19:25:32 <kallisti> we need a new generation of skilled computer scientists!
19:25:37 <kallisti> elliott: no.
19:25:55 <elliott> well it can't be the past, or you'd understand how prorgams work
19:26:04 <kallisti> ha ha ha
19:26:15 <fizzie> elliott: I think Scala only for the latter half of the latter half (i.e. last quarter) of the full-year course, so I guess it doesn't quite count as introductory at that point.
19:26:30 <kallisti> kallisti is wrong sometimes -> he doesn't understand fundamentals of anything related to computer science
19:26:34 <shachaf> elliott: You got a problem with "magic"?
19:26:46 * shachaf figured out that that's how programs work long ago.
19:26:54 <elliott> kallisti: You seem to be confusing "wrong sometimes" with "repeatedly and persistently wrong about fundamental issues"
19:26:57 <elliott> But okay
19:27:00 <elliott> shachaf: Yes, exactly.
19:27:12 <elliott> shachaf: Being a wizard helps programming immensely.
19:27:26 <kallisti> SICP even uses a wizard metaphor!
19:27:40 <kallisti> elliott: cut me some slack.
19:27:49 <elliott> No
19:28:07 <fizzie> elliott: Apparently it also goes so that they add an OO thing to SICP's metacircular evaluator, and from there proceed to Scala.
19:28:15 <elliott> fizzie: That's, um, special.
19:28:23 <fizzie> Isn't it just, though?
19:30:02 <fizzie> That was last iteration; current iteration is first half with SICP (except they still add objects to the SICP M-eval), and then second half is with Python+PyQt4+Pygame+PIL. Beyond that, there's no real info what the last half is, yet; it's going to be next spring.
19:30:39 <elliott> fizzie: PyQt4 will be interesting, too.
19:30:43 <elliott> All them signals and slots.
19:30:57 <elliott> I think your university am bad at choosing things to teach.
19:31:10 <kallisti> elliott: the IO vs. Turing Completeness thing came along briefly as the result of thinking about how differing IO capabilities can limit what can be accomplished in a single program. it's not like I had this nagging confusion for years.
19:31:14 <fizzie> Apparently they want to show some "real programming" to them.
19:31:19 <fizzie> Or something.
19:31:38 <kallisti> elliott: I simply had an attack of theoretics vs. reality. :P
19:31:49 <elliott> kallisti: rly stop its like digging a hole
19:31:50 <elliott> the hole
19:31:53 <elliott> doesnt stop getting deeper
19:31:55 <elliott> if you kleep digging it
19:31:59 <elliott> its time to crawl out.......
19:32:07 <kallisti> what does that mean in this metaphor.
19:32:13 <elliott> it means stop
19:32:18 <kallisti> but isn't stopping like
19:32:21 <kallisti> just sitting in my hole.
19:32:27 <kallisti> crawling would be like
19:32:29 <kallisti> doing something opposite.
19:32:31 <kallisti> of what I was doing.
19:32:41 <elliott> stopping would be just
19:32:47 <elliott> continuing to talk about it without defending yourself
19:32:49 <elliott> crawling would be
19:32:50 <elliott> not
19:32:51 <elliott> talking about it
19:33:11 * shachaf \n
19:34:02 <elliott> \n
19:34:23 <kallisti> elliott: I just dislike being insulted for what appears to be no reason, I think?
19:34:51 <elliott> welcome to #esoteric! here's my card
19:35:08 <elliott> also i am almost never sincere so there's that
19:35:16 <shachaf> elliott: When did you ever insult me?
19:35:16 <kallisti> elliott: I'm pretty sure that's mostly just a thing you do?
19:35:29 <elliott> shachaf: when did I ever NOT insult you
19:35:30 <shachaf> Other than all those times you called me a bad person and all that.
19:35:38 <elliott> kallisti: yes i'm ruler of #esoteric did you even LOOK at that card
19:35:50 <kallisti> elliott: bogus card, man.
19:35:54 <shachaf> /deop elliott
19:36:00 <elliott> shachaf: shadowy ruler
19:36:02 <kallisti> you should get one of those artist business card company things
19:36:04 <kallisti> to make you a baller card.
19:36:22 <shachaf> elliott: Behind the scenes, eh? oerjan is just a sock puppet?
19:36:30 <shachaf> Maybe you're lament's other identity.
19:36:36 <kallisti> shachaf: it's kind of an unspoken but well-known fact.
19:36:41 <elliott> shachaf: I... am... andreou.
19:36:47 <elliott> [DRAMATIC MUSIC]
19:36:57 * kallisti is the actual one who's pulling the strings.
19:37:09 <kallisti> my Discordian cabal and I.
19:37:11 <shachaf> elliott: "andreou" is missing an 'i'.
19:39:35 <Vorpal> it is funny how you all have delusions about that...
19:41:17 <Vorpal> kallisti: shachaf elliott: don't you realize? We are all but puppets in this clever game of zzo!
19:42:32 <shachaf> Vorpal makes a good point.
19:43:14 <elliott> Silence is a good point indeed.
19:44:16 <Vorpal> shachaf: of course, elliott is refusing to listen. But that is a common trait of those who can not face, or even comprehend, the truth.
19:45:15 <elliott> Someone link me to stuff about process migration
19:45:20 <shachaf> <Vorpal> kallisti: shachaf elliott: don't you realize? We are all but puppets in this clever game of zzo!
19:45:40 <shachaf> Assuming that's /ignore or something.
19:45:42 <elliott> shachaf: Sigh. Vorpal has clearly never heard of Dagoth Ur.
19:45:55 * shachaf does not want to get involved in #esoteric politics.
19:46:07 <Vorpal> I have. Both on the wiki. And from Morrowind
19:46:35 <kallisti> haha #esoteric politics.
19:46:43 <kallisti> that's a funny idea.
19:46:56 <Vorpal> kallisti: oh but so true
19:48:07 <kallisti> elliott: I recall Stackless Python being able to migrate processes, but that's probably not going to be a help to you.
19:48:23 <kallisti> er well, threads.
19:48:26 <kallisti> not processes
19:49:58 <shachaf> Migrate processes where?
19:52:01 <Vorpal> `echo there is the wiki Dagpoth ur and there is this: http://www.uesp.net/wiki/Morrowind:Dagoth_Ur_%28god%29 (I assume one was named after the other, unsure which :P)
19:52:03 <Vorpal> err
19:52:03 <HackEgo> there is the wiki Dagpoth ur and there is this: http://www.uesp.net/wiki/Morrowind:Dagoth_Ur_%28god%29 (I assume one was named after the other, unsure which :P)
19:52:04 <elliott> shachaf: Space.
19:52:07 <Vorpal> yeah
19:52:11 <elliott> Nobody cares, HackEgo.
19:52:15 <elliott> You're so dumb.
19:52:17 <elliott> And botlike.
19:52:31 <Vorpal> `echo Quite. My AI is nothing like fungot's indeed.
19:52:32 <fungot> Vorpal: brutha yelled and pulled his head down and kissed the top of dorfl's head was still open in front of him sparks flashed off the steel rims of miss fnord spectacles. he hadn't even managed to take his shirt off!"
19:52:33 <HackEgo> Quite. My AI is nothing like fungot's indeed.
19:52:34 <elliott> Wow that Dagoth Ur guy is ugly.
19:54:10 <Vorpal> ^style
19:54:10 <fungot> Available: agora alice c64 ct darwin discworld* europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
19:54:13 <Vorpal> yeah
19:54:33 <Vorpal> fungot: was that some discworld porn or something?
19:54:33 <fungot> Vorpal: " you don't know?' he said, ' you may fnord'
19:54:41 <Vorpal> indeed. indeed.
19:56:24 <fizzie> elliott: Dagoth Ur with jazz hands: http://images2.wikia.nocookie.net/__cb20080705175522/elderscrolls/images/8/82/Dagoth.JPG
19:56:31 <fizzie> Dude knows how to party.
19:56:38 <elliott> Wow.
19:56:42 <elliott> Does he always look like that?
19:59:00 <fizzie> The face, pretty much (in all his one (1) appearances, anyway); the posture does change.
19:59:45 <elliott> He is a bit scary.
20:01:35 <Vorpal> `echo elliott: I *think* he is the final boss of Morrowind, but I haven't played the game through so I'm not certain. (Kind of hard to play it here on codu.org...)
20:01:36 <HackEgo> elliott: I *think* he is the final boss of Morrowind, but I haven't played the game through so I'm not certain. (Kind of hard to play it here on codu.org...)
20:01:58 <elliott> codu.org has like a gig of RAM, I'm sure it could run Morrowind.
20:02:10 <Vorpal> `echo Yeah but the GPU sucks.
20:02:12 <HackEgo> Yeah but the GPU sucks.
20:02:15 <ais523> "Dagoth Ur, Mad God" is indeed the final boss of Morrowind
20:02:21 <ais523> I haven't played it either, but I've watched a speedrun
20:02:47 <Vorpal> ais523: how can you speedrun an open world? Is it just to end of main quest?
20:02:47 <fizzie> I, uh, Google image search for Dagoth Ur found some rule 63/34 material of him.
20:02:56 <Vorpal> fizzie: 63?
20:03:01 <ais523> strangely, Morrowind speedruns are really short; it starts off by getting infinite stats (by repeatedly crafting potions that make it possible to craft better potions, and hitting a singularity), then going directly to the final boss using what was intended as a joke item
20:03:09 <ais523> Vorpal: it has a final boss, you beat it, you win
20:03:17 <ais523> the world might be open, but it doesn't mean the game has no plor
20:03:18 <fizzie> Vorpal: "For any given male character, there is a female version of that character."
20:03:18 <ais523> *plot
20:03:25 <Vorpal> ais523: what joke item?
20:03:31 <Vorpal> fizzie: ah...
20:03:36 <elliott> fizzie: Wait, let me try and be surprised.
20:03:39 * elliott effort
20:03:53 <ais523> Vorpal: Scroll of Icatian Flight
20:04:22 <Vorpal> ais523: never even heard of it. What does it do?
20:04:43 <ais523> Vorpal: basically, it's like a really really /really/ big jump, that doesn't give you any protection against the impact of landing
20:04:47 <elliott> http://fc02.deviantart.net/fs45/i/2009/070/e/8/Lord_Dagoth_Ur_by_GothaWolf.jpg ;; This... bears little resemblance to the screenshots.
20:04:51 <Vorpal> ais523: heh
20:04:54 <elliott> Oh god there's a Minecraft skin.
20:04:55 <fizzie> ais523: Also that is a very confusing title (even though it is "official"), because Sheogorath is the Madgod, and Dagoth Ur is the Mad God.
20:04:59 <elliott> HOW FAR DOES THE MAD GOD RABBIT HOLE GO
20:05:14 <elliott> http://fc01.deviantart.net/fs41/f/2009/022/9/d/Dagoth_Ur_by_DagothUrWelcomesYou.jpg
20:05:44 <Vorpal> ais523: why does that help to bring you to the final boss?
20:06:00 <ais523> Vorpal: it's a really really /really/ big jump
20:06:08 <ais523> you can go straight to the place where the final boss is with it
20:06:11 <Vorpal> ah
20:06:23 <fizzie> Vorpal: The Morrowind speedrun is four minutes, 19 seconds. It's almost worth watching. (Except you may need to read the descriptions to understand what's going on.)
20:06:24 <ais523> and I think the infinite stats are there to survive the landing, as well as beat the boss, or perhaps another method's used to land
20:06:49 <elliott> ais523: I approve of this scroll
20:06:51 <Vorpal> fizzie: got a link?
20:06:52 <elliott> fizzie: Got a link?
20:06:57 <fizzie> http://speeddemosarchive.com/Morrowind.html
20:06:58 * kallisti got a link
20:07:13 <fizzie> The earlier one was seven and a half minutes or so.
20:07:14 <Vorpal> fuck flash
20:07:23 <Vorpal> hoped for youtube
20:07:27 <ais523> http://speeddemosarchive.com/Morrowind.html
20:07:28 <fizzie> It's also in U-tube.
20:07:32 <ais523> fizzie beat me, I Think
20:07:34 <ais523> *I think
20:07:36 <Vorpal> fizzie: got a link to that one?
20:07:37 <kallisti> oh he cheated
20:07:40 <ais523> Vorpal: oh, I just use direct http streaming, I think
20:07:43 <fizzie> Vorpal: http://www.youtube.com/watch?v=EYia1irLWDU
20:07:47 <Vorpal> fizzie: thanks a lot
20:08:00 <fizzie> I was rather assuming the speeddemosarchive page would have had a link to it, but weirdly not.
20:08:16 <fizzie> (I mean, it's their U-tube channel.)
20:08:29 <fizzie> (Unless I guess it might well be operated by someone else.)
20:08:33 <ais523> ah, it doesn't even use the potion glitch, it's a different one
20:08:39 <Vorpal> ais523: there is an obvious way to cut time right at the start of that speedrun. Go for a one-letter name instead
20:08:44 <ais523> fizzie: they don't officially use YouTube; in fact, many of the runs aren't there
20:08:45 <fizzie> ais523: I think that was the seven-and-a-half minute earlier record.
20:08:59 <elliott> <fizzie> Vorpal: http://www.youtube.com/watch?v=EYia1irLWDU
20:09:02 <elliott> this is seven minutes
20:09:03 <elliott> :'(
20:09:10 <elliott> oh wait
20:09:10 <elliott> it's
20:09:14 <elliott> 4 minutes but a 7 minute video
20:09:40 <fizzie> ais523: Right, "SpeedDemosArchiveSDA" is just some random third-party guy who uploads videos from there.
20:10:06 <ais523> and only some, some are marked "do not upload to youtube"
20:10:12 <elliott> fizzie: So is the one you linked 4 minutes?
20:10:15 <elliott> ais523: err, why?
20:10:22 <ais523> elliott: SDA start timing from the first action to the last, but the videos show things like the loading screen at the start of the game and credits
20:10:31 <ais523> and because several people don't trust youtube to react sensibly
20:10:41 <ais523> there have been cases of people passing of others' speedruns as their own, etc
20:10:47 <Phantom_Hoover> fizzie, remind me how that potion thing worked?
20:11:16 <elliott> @ask Vorpal How do you use a single package from [testing]
20:11:17 <lambdabot> Consider it noted.
20:11:24 <Vorpal> ais523: fizzie: how did he get through that wall just outside the starting house
20:11:24 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
20:11:39 <ais523> Vorpal: he jumped through it
20:11:44 <Vorpal> ais523: oh bug?
20:11:50 <ais523> yep, presumably
20:11:51 <elliott> I wonder if I have a message.
20:11:56 <ais523> solidity bugs are kind-of funny
20:12:02 <Vorpal> elliott: do not assume I'm ignoring you, just because you were ignoring me
20:12:03 <ais523> and also quite common
20:12:04 * elliott watches this pro speedrun
20:12:15 <Vorpal> and I never tried. Maybe do it by abs to build said package?
20:12:16 <elliott> rather upsettingly low-quality video :'(
20:12:18 <fizzie> elliott: It claims to be, but I don't know how it's timed.
20:12:20 <Deewiant> elliott: Generallyc considered a bad idea; but put testing in your pacman.conf and pacman -S testing/<package>
20:12:24 <Deewiant> -c
20:12:33 <elliott> Deewiant: Okay, so how do I get GHC 7.2.2 without a bad idea
20:12:51 <fizzie> elliott: You may want to try the "Insane quality" http://dl.speeddemosarchive.com/Morrowind_SS_419_IQ.mp4 one then.
20:13:04 <elliott> Heh.
20:13:08 <Deewiant> elliott: Download the .tar.gz and install however you wish? :-P
20:13:18 <elliott> Deewiant: That's more of a good idea than using [testing]?
20:13:35 <Deewiant> elliott: But the bad idea I was referring to was that the typical suggestion is to use either all or none of [testing]
20:13:36 <fizzie> (They have "normal" (31.2M), "low" (10.6M), "high" (118M) and "insane" (249M).)
20:13:49 <Deewiant> elliott: In the case of GHC, it probably doesn't matter.
20:14:01 <fizzie> Ooh, I was already starting to talk about APT pinning, had forgotten the Arch thing.
20:14:02 <elliott> Deewiant: How long does [testing] take to trickle down, then.
20:14:08 <elliott> fizzie: Heh :-)
20:14:09 <Deewiant> elliott: Unless there's a significantly more recent libc in [testing], or something.
20:14:19 <Deewiant> elliott: No clue.
20:14:55 -!- sebbu2 has joined.
20:14:56 -!- sebbu2 has quit (Changing host).
20:14:56 -!- sebbu2 has joined.
20:15:17 <elliott> Wow, you can swim quickly in Morrowind.
20:16:23 <fizzie> Vorpal: I got my Morrowind character so stuck inside a wall nothing except the console could extricate myself from it.
20:16:45 <elliott> fizzie: I like how this jump keeps getting interrupted by loading screens.
20:16:55 <elliott> Also that wasn't /that/ big a jump.
20:17:02 -!- sebbu has quit (Ping timeout: 244 seconds).
20:17:21 <elliott> This ending bit looks spooky.
20:17:23 <elliott> (4 minutes in.)
20:17:26 <fizzie> Maybe the seven-minute one had a bigger jump; I think I remember watching that earlier. Just starting this new one.
20:17:33 <Vorpal> ais523: has anyone done a minecraft speedrun?
20:17:48 <ais523> Vorpal: not to my knowledge, although there's been discussion about what the goal should be
20:17:55 <ais523> I've heard "all achievements" suggested semi-seriously
20:18:00 <Vorpal> ais523: it has an "end" now
20:18:02 <elliott> How is this guy walking this fast.
20:18:04 <Vorpal> with a boss
20:18:07 <elliott> Wow, brutal.
20:18:09 <ais523> and given that Minecraft's getting an ending added, or already has, there's an obvious category now
20:18:19 <elliott> ais523: already has
20:18:26 <elliott> ais523: "all achievements" in minecraft is near-trivial
20:18:31 <Vorpal> ais523: already has. I have done it.
20:18:38 <elliott> there's basically six trivial ones and then like one that takes hours but is easy
20:18:43 <ais523> ouch
20:18:54 <elliott> minecraft is the least 1.0 game at 1.0 ever
20:18:56 <Vorpal> elliott: iirc there are a few more in 1.0?
20:19:08 <Vorpal> like 8 now and 1 that takes ages
20:19:31 <elliott> fizzie: Dagoth Ur talks disappointingly normally. :(
20:20:02 <Vorpal> elliott: TES had terrible voice acting up until skyrim
20:20:05 <Vorpal> now it is rather good
20:20:21 <elliott> I like how it's saying the YOU WIN stuff while Dagoth Ur rants in the background.
20:20:25 <kallisti> the nords even sound nordic!
20:20:26 <elliott> Delayed sample-playing, I guess.
20:20:56 <Vorpal> kallisti: no they don't. They sound like canadians trying to sound nordic :P
20:21:06 <Vorpal> at least quite a few of them
20:21:14 <kallisti> Vorpal: sounds like nordic to me!
20:21:27 <elliott> ais523: btw, Minecraft's ending would be easy to speed-run too
20:21:28 <kallisti> you have a silly idea of what nordic sounds like.
20:21:46 <kallisti> minecraft? ending?
20:21:48 <elliott> ais523: at least, it'd be downright trivial to TAS
20:21:54 <Vorpal> elliott: not THAT easy. What with the enderpearls and blaze rods
20:21:59 <fizzie> If you mean "walking this fast" in the later parts, it's after the "I use that bug [of switching a constant-effect item in and out repeatedly sometimes leaving the constant effect cumulatively on] on keening to gain an extreme amount of speed, --" part.
20:22:04 <kallisti> "congratulations. you've mined all that is."
20:22:22 <Vorpal> kallisti: ... where have you been?
20:22:31 <kallisti> distracted
20:22:33 -!- Ngevd has joined.
20:22:45 <Ngevd> Hello!
20:23:01 <Vorpal> kallisti: https://www.youtube.com/watch?v=6lA4ohHhCsw https://www.youtube.com/watch?v=dd5sUfTLhCU
20:23:08 <kallisti> Vorpal: or was that a question of where I've physically traveled?
20:23:17 <Vorpal> kallisti: ?
20:23:18 <kallisti> oh
20:23:26 <kallisti> wat boss?
20:23:27 <kallisti> why.
20:23:28 <kallisti> what
20:23:34 <Vorpal> kallisti: don't know
20:23:37 <kallisti> WHY WOULD MINECRAFT HAVE AN OBJECTIVE.
20:23:41 <Vorpal> kallisti: quite
20:24:04 <Phantom_Hoover> kallisti, make sure you see the Yogscast reading through it.
20:24:07 <kallisti> was it just something they added so that it would have an objective?
20:24:18 <kallisti> like, just a silly afterthought thing?
20:24:18 <Phantom_Hoover> Simon gives up around a third of the way in because it's so terrible.
20:24:19 <Vorpal> ais523: you might want to watch those two videos too?
20:24:19 <kallisti> or like?
20:24:26 <kallisti> is minecraft actually a decent game?
20:24:41 <Vorpal> kallisti: games don't /have/ to be objectives to be good.
20:24:42 <ais523> Vorpal: at work
20:24:48 <kallisti> Vorpal: I never said that.
20:24:49 -!- oerjan has joined.
20:24:49 <Vorpal> kallisti: apart from like "survive"
20:24:50 <kallisti> well...
20:24:53 <kallisti> actually no I take it back.
20:24:55 <kallisti> having objectives is good.
20:24:57 <ais523> Vorpal: agreed, but they do have to have objectives to be speedrun
20:25:05 <Vorpal> ais523: well yes
20:25:27 <elliott> kallisti: if minecraft is a decent game, it's not because of its ending
20:25:32 <Vorpal> kallisti: sure minecraft have a few: "don't die and lose your inventory" for example
20:25:44 <Vorpal> or "build a castle out of diamond blocks"
20:25:53 <elliott> ais523: *speedran?
20:26:24 <ais523> elliott: you are arguably correct, but "speedrun" seems more common there
20:26:25 <Vorpal> kallisti: of course you make those objectives up. That is the good thing about it. Well apart from the survive one. You can't do much if you ignore that.
20:26:39 <elliott> speedrunified
20:26:46 <elliott> spadrun
20:27:03 <elliott> spoodrin
20:27:06 <kallisti> Vorpal: yes I already know the Minecraft fanboy spiel. :P
20:27:25 <fizzie> "to be sprunted".
20:27:54 <Vorpal> ais523: you can't speedrun dwarffortress either
20:28:02 <Vorpal> dwarf fortress*
20:28:05 <elliott> Spraggleraen.
20:28:12 <elliott> Sputtigretth.
20:28:24 <Vorpal> spaghettified
20:28:34 <kallisti> well you can try to destroy hell as fast as possible.
20:28:44 <Vorpal> kallisti: hm true
20:28:48 <kallisti> I mean breach it
20:28:49 <kallisti> or whatever
20:28:56 <Vorpal> kallisti: and kill everything in it
20:29:03 <Vorpal> to breach it isn't hard. To survive doing so is
20:29:26 -!- Ngevd has quit (Ping timeout: 244 seconds).
20:29:38 <kallisti> just mod the game so that you're moose demons instead of dwarves.
20:29:50 -!- Ngevd has joined.
20:29:57 <Vorpal> kallisti: ... then it isn't the same game
20:30:15 <kallisti> or find a way to simultaneously activate martial trance is like 50 dwarves or something.
20:30:26 <kallisti> this is the "use dwarves" as opposed to "use environmental traps" strategy.
20:31:48 <fizzie> Vorpal: Incidentally, Oblivion's been done in 11 minutes.
20:32:00 <Vorpal> fizzie: link (youtube or non-flash)?
20:32:35 <Vorpal> kallisti: so did you finish watching those videos?
20:32:40 <kallisti> yes
20:32:52 <Vorpal> kallisti: the end text is horrible isn't it?
20:33:09 <fizzie> Vorpal: http://www.youtube.com/watch?v=Cfmdl9-tnSU -- the first 8 minutes are pretty boring, the interesting bit starts at around 8:10 when the player gets out of the sewers. (Also no audio and text is in French.)
20:33:16 <kallisti> I didn't actually pay much attention :)
20:33:38 <kallisti> fizzie: what difficulty?
20:34:21 <Vorpal> fizzie: the sound in the video is broken for me. Or doesn't exist
20:34:45 <Vorpal> oh, that was "no audio"
20:34:58 <Vorpal> not "no, audio and text is in French"
20:35:10 <fizzie> Vorpal: Right, and it seems to be cut at ten minutes.
20:35:21 <fizzie> Oh well.
20:35:26 <Vorpal> fizzie: so quite a terrible video then
20:35:43 <fizzie> Yes, but it's (according to some quick googling) the current record.
20:36:06 <elliott> fizzie: No audio? :'(
20:36:42 <fizzie> elliott: It's recorded with a demo version of some screenrecorder, or something like that. :p
20:37:06 <elliott> fizzie: What is that jumping.
20:37:08 <elliott> Is this the paintbrush thing?
20:37:27 <fizzie> I think it's some sort of "holding an object and jumping" glitch, since it didn't look like a paintbrush.
20:37:34 <elliott> Realistic.
20:37:55 <elliott> So all this about Bestheda games being insanely buggy isn't joking then. :p
20:37:56 <Deewiant> Typical in games that allow that kind of carrying
20:38:11 <elliott> Deewiant: Can't they just simulate accurate physics? :'(
20:38:13 <elliott> Ooh, draggins.
20:38:14 <kallisti> elliott weighs in on the matter: Oblivion decreed to be not a good reality emulator
20:38:19 <Deewiant> You can do it in Half-Life 2 / Portal as well
20:38:24 <Deewiant> (For example)
20:38:38 <elliott> Phantom_Hoover: If we extend AII's engine to 3D we have to make sure that doesn't happen ok thanks.
20:38:51 <elliott> fizzie: I'm not quite sure how the guy won the game there.
20:39:50 <Deewiant> It looks like he glitched into a door that you can't access until the end of the game
20:39:58 <Deewiant> Conveniently, it takes you to a very end-game area
20:40:21 <kallisti> brawl speedrun of 5 seconds http://www.youtube.com/watch?v=9VRVkLpMevg :P
20:40:34 <kallisti> (not really. just a single 1v1 1 stock match)
20:40:35 <fizzie> IIRC, in the final battle you don't do much, Martin just summons the avatar of Akatosh and that's about it.
20:41:04 <Vorpal> <kallisti> brawl speedrun of 5 seconds http://www.youtube.com/watch?v=9VRVkLpMevg :P <-- aaaargh the mono audio
20:41:18 <kallisti> Vorpal: arrrrgh how do you even notice stuff like that.
20:41:25 <kallisti> or care.
20:41:27 <Vorpal> kallisti: headphones. Just sound in one ear
20:41:30 <kallisti> oh.
20:41:31 <Vorpal> it is quite horrible
20:41:34 <fizzie> "You need to look down, walk forwards towards the item, then just before the item jump and grab it. When you're at the peak of your jump you should hear a certain sound (Like when you land on the gound), when that happens, jump and grab the item again, repeat. I hope this explains it, it's pretty tricky to do :)" <- and that's how you fly by grabbing a heavy iron shield.
20:41:35 <kallisti> so it's 2-channel
20:41:37 <kallisti> just with one audible channel.
20:41:40 <Vorpal> kallisti: indeed
20:41:42 <kallisti> NO MONO
20:41:51 <Vorpal> kallisti: or that is how it plays in firefox with html5
20:41:52 <kallisti> GET YOUR CORRECTNESS CORRECT.
20:41:57 <Vorpal> kallisti: whatever
20:42:03 <Vorpal> kallisti: it is horrible anyway
20:42:20 <kallisti> do you just wear huge headphones while you're using computers
20:42:23 <kallisti> like, always?
20:42:36 <Vorpal> fizzie: heh
20:43:00 <olsner> Vorpal wears speakers and duct tape while using his computer
20:43:05 <oerjan> <elliott> ais523: *speedran? <-- erm it's run ran run, not run ran ran, right? and it's the last one which applies here.
20:43:11 <Vorpal> oerjan: ...?
20:43:14 <elliott> oerjan: hi
20:43:22 <Vorpal> oerjan: it is actually that standard electrical black tape
20:43:28 <Vorpal> oerjan: if you know the type I mean
20:43:40 <olsner> <oerjan> black duct tape?
20:43:46 <Vorpal> not duct tape
20:43:46 <kallisti> http://www.youtube.com/watch?v=9VRVkLpMevg here's another one of these so-called "sacred combos" against an actual person, which is a bit more impressive
20:43:47 <Vorpal> as such
20:43:50 <kallisti> but the video is still lame.
20:44:03 <olsner> SVART VÄVTEJP then?
20:44:12 <Deewiant> kallisti: Same link
20:44:17 <elliott> kallisti: are any of these videos not rated e for epic
20:44:18 <Vorpal> olsner: buggered if I know. "eltejp" I think it is called
20:44:24 <elliott> oh
20:44:31 <Vorpal> olsner: yep eltejp
20:44:40 <Vorpal> olsner: probably biltema or such
20:45:16 <Vorpal> olsner: this: https://upload.wikimedia.org/wikipedia/commons/d/d0/Electrical-tape_black.jpg
20:45:25 <kallisti> oh. http://youtu.be/gJkP6_yedKQ
20:45:44 <Vorpal> kallisti: my care about fighting games: -inf
20:45:47 <olsner> I think the sticking powers of electrical tape leave much to be desired
20:46:02 <Vorpal> olsner: well, it was enough for this
20:46:02 <kallisti> Vorpal: that's a pretty high magnitude there.
20:46:36 <Vorpal> kallisti: certainly. But It is clamped to the positive range in the calculations it is used in. So it ends up at 0
20:47:13 <kallisti> the thing about brawl though is that it's not a shitty fighting game.
20:47:32 <oerjan> Vorpal: _something_ tells me you don't distinguish nicks on o properly :P
20:47:43 <Vorpal> oerjan: oh right
20:47:54 <Vorpal> oerjan: you two have way too similar nicks
20:48:46 <Vorpal> olsner: anyway I need to get some proper replacements for the ear pads of these headphones. They are starting to wear out. Thankfully you can order replacements for these. All user serviceable headphones. I like that.
20:49:17 <Vorpal> I think they may be 7 or 8 years old by now
20:49:19 <Vorpal> something like that
20:49:26 <olsner> ooh, I can order them? I think you'll have to order them for yourself anyway though :)
20:49:27 <kallisti> elliott: here's reality emulation for you http://www.youtube.com/watch?v=HTJtMqkvetI
20:49:32 <Vorpal> olsner: :P
20:49:54 <Vorpal> olsner: that was "you can order" as in the Swedish "man kan beställa" :P
20:50:15 <olsner> sure, it means that in english too, in addition to the wrong meaning
20:50:21 <Vorpal> exactly
20:51:14 <Vorpal> olsner: anyway I needed elastic tape in the repair, so electrical tape was perfect.
20:55:30 <Vorpal> olsner: besides I don't think I have any duct tape at home currently
20:56:33 <olsner> no duct tape? what kind of a student are you?
20:56:53 <Vorpal> heh
20:57:14 <fizzie> I used to only have black duct tape.
20:57:26 <Vorpal> olsner: I think I have some gaffer tape though :P
20:57:32 <olsner> that is duct tape
20:57:35 <oerjan> :t build
20:57:36 <lambdabot> Not in scope: `build'
20:57:40 <oerjan> @hoogle build
20:57:41 <lambdabot> GHC.Exts build :: (forall b. (a -> b -> b) -> b -> b) -> [a]
20:57:41 <lambdabot> Data.Graph.Inductive.Internal.Heap build :: Ord a => [(a, b)] -> Heap a b
20:57:41 <lambdabot> Graphics.Rendering.OpenGL.GLU.Mipmapping build1DMipmaps :: TextureTarget -> PixelInternalFormat -> GLsizei -> PixelData a -> IO ()
20:57:44 <olsner> aka duck tape
20:57:44 <Vorpal> olsner: technically it isn't :P
20:57:51 <olsner> aka gaffer tape, aka gaffatejp
20:57:54 <olsner> aka vävtejp
20:58:02 <Phantom_Hoover> I wonder what percentage of duct tape is actually used on ducts.
20:58:04 <olsner> aka silver tape
20:58:09 <Vorpal> olsner: https://sv.wikipedia.org/wiki/V%C3%A4vtejp <-- says it is a different product
20:58:14 <Phantom_Hoover> Or indeed what percentage of gaffer tape is used by gaffers.
20:58:17 <Vorpal> "Gaffatejp - från engelskans gaffer tape - är egentligen en helt annan produkt."
20:58:26 <kallisti> there's apparently some glitch in oblivion that allows you to turn one watermelon into a FLOATING WATERMELON SHITTER.
20:58:32 <kallisti> that just duplicates watermelons infinitely
20:58:44 <Vorpal> kallisti: "there's apparently some glitch" is true in general
20:58:44 <elliott> gaffatejp
20:58:48 -!- sebbu2 has changed nick to sebbu.
20:58:57 <olsner> "Se även: Silvertejpsvapen" :D
20:59:19 <Vorpal> olsner: for the benefit of elliott that means "silver tape weapon"
20:59:41 <olsner> Vorpal: thanks, I didn't know what silvertejpsvapen meant until now
20:59:49 <Vorpal> olsner: ...
21:01:44 <oerjan> swedes make weapons out of silver tape? no wonder they stayed out of ww2
21:03:58 <olsner> we just gaffer-tape the hatches on the enemy tanks and wait for them to suffocate
21:04:09 <olsner> silent but deadly
21:04:26 <Vorpal> yeah
21:06:09 <kallisti> I've come to the conclusion that Vorpal and I are completely opposite gamers.
21:06:11 <olsner> or if we're in an evil mood we open the hatch, fart down it, *then* gaffer-tape it shut
21:06:17 <Vorpal> kallisti: how so?
21:06:29 <fizzie> "While related to duct tape, [gaffer tape] differs in that it can be removed cleanly because it uses a synthetic rubber adhesive rather than a natural rubber adhesive." <- that is so very much not a case with my black duct tape, so deductively it's not gaffer tape but duct tape.
21:06:38 <oerjan> olsner: hey chemical weapons are illegal
21:06:42 <Vorpal> kallisti: I do enjoy games with plot as well. I just don't think that a *lack* of a plot makes it a bad game.
21:07:05 <kallisti> Vorpal: aside from DF I guess, you dislike all the games I like and I dislike the ones that you've talked about so far.
21:07:06 <pikhq> For me, I'd say it heavily depends on the game genre.
21:07:14 <Vorpal> kallisti: you dislike skyrim?
21:07:20 <pikhq> RPGs? The plot is most of the damned *point*.
21:07:23 <Vorpal> kallisti: what about GTA IV?
21:07:26 <kallisti> well, I guess not. I don't really play it though
21:07:29 <kallisti> GTA IV is shit. :P
21:07:33 <Vorpal> kallisti: I like GTA IV
21:07:35 <Vorpal> :(
21:07:39 <kallisti> oh noes
21:07:43 <Vorpal> kallisti: haven't played earlier GTA games
21:07:51 <pikhq> Most things, though? "You are a plumber in the Mushroom Kingdom. Rescue the princess." works.
21:07:53 <Vorpal> kallisti: okay what about Magicka? I like it but I find it very hard
21:08:04 <Vorpal> kallisti: I really really like Bastion.
21:08:05 <kallisti> hmmm, okay.
21:08:14 <olsner> fizzie: yeah, most "duct tape" is pure crap...
21:08:17 <kallisti> but we play magicka differently.
21:08:22 <Vorpal> sure
21:08:25 <olsner> it's supposed to be water proof and sticky even when wet etc, but I can vouch that inflatable pool repair using "duct tape" is impossible
21:08:30 <Vorpal> kallisti: what about Bastion though?
21:08:34 <kallisti> I know nothing about that.
21:08:38 <Vorpal> hm okay
21:09:01 <Vorpal> kallisti: it is a wonderful RPG/adventure game. With unique story telling by dynamic narration.
21:09:13 -!- Taneb has joined.
21:13:02 -!- Ngevd has quit (Ping timeout: 252 seconds).
21:14:16 -!- myndzi has joined.
21:15:57 <kallisti> does youtube have a "random video" feature?
21:18:30 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
21:19:27 <fizzie> There are some third-party services.
21:20:11 <Vorpal> fizzie: really, how can you get a list of all youtube videos to select from?
21:20:18 <fizzie> Presumably they crawl around the listings.
21:20:26 <Vorpal> kallisti: anyway I guess you could search for a topic and get a random video from?
21:20:32 <Vorpal> then just randomly click on the result page
21:20:59 <fizzie> http://www.flyhour.tv/ is one, they have an API for programmatical access.
21:21:14 <fizzie> They don't go into much detail on how they collect available videos.
21:21:22 <olsner> you could also go somewhere like /r/videos or /r/youtube and get a bunch of links (some of them might be new to you)
21:21:23 <fizzie> (Obviously it won't include everything.)
21:24:01 <Vorpal> hm I can't think of any RPG series that has quite as much backstory and lore as TES... Maybe Final fantasy?
21:24:11 <Vorpal> they have a lot of games
21:24:17 <Vorpal> so I guess there might be a lot of backstory?
21:24:34 <Deewiant> Almost each FF game is set in a different world of its own
21:24:40 <Vorpal> ah
21:24:45 <Vorpal> so not much there then
21:25:42 -!- hagb4rd has joined.
21:26:43 <fizzie> Also there's not *that* much per-game lore in there either.
21:27:33 <fizzie> Maybe I should train a fungot model on http://uesp.net/wiki/Lore:Books, there's certainly a lot of text. Though I doubt it'd be especially amusing.
21:27:33 <fungot> fizzie: " yep." ' ever met a watchman?'
21:28:01 <Vorpal> fizzie: worth a try?
21:28:23 <elliott> fizzie: Doesn't have Cats of Skyrim.
21:28:27 <elliott> F-
21:28:33 <Vorpal> fizzie: anyway the skyrim books are missing from what I see
21:28:41 <Vorpal> elliott: I haven't seen that book in skyrim yet
21:28:46 <Vorpal> what is it about?
21:28:56 <Slereah_> Cats
21:28:59 <Slereah_> Of Skyrim
21:29:41 <Vorpal> elliott: here it is http://www.uesp.net/wiki/Skyrim:Cats_of_Skyrim
21:29:50 <elliott> http://www.uesp.net/wiki/Skyrim:Cats_of_Skyrim
21:29:52 <elliott> Cats of Skyrim.
21:30:00 <Vorpal> elliott: I beat you to it
21:31:06 <fizzie> Vorpal: Wow, http://uesp.net/w/index.php?title=Special:Export&action=submit "Add pages from category: Lore-Books" + [Add] + [X] Include only current revision + [X] Save as file + [Export] actually worked, and generated a four-megabyte XML file. I was so sure it'd be all "that's too much, forget about it".
21:31:29 <elliott> fizzie: UM EXXCUSE ME
21:31:32 <Vorpal> fizzie: there is also http://www.uesp.net/wiki/Category:Skyrim-Books
21:31:36 <elliott> fizzie: YOU FORGOT [[Category:Skyrim-Books]]
21:31:36 <elliott> AND THUS
21:31:37 <elliott> FORGOT
21:31:38 <Taneb> I'm getting better at Dungeons of Dredmor
21:31:38 <Taneb> Slowly
21:31:38 <elliott> CATS OF SKYRIM
21:31:51 <Vorpal> `echo elliott: what is it with you and that book?
21:31:53 <HackEgo> elliott: what is it with you and that book?
21:32:00 <elliott> fizzie: Also [[Category:Morrowind-Books]], [[Category:Oblivion-Books]].
21:32:03 <Vorpal> Taneb: come on... it is an easy game
21:32:17 <elliott> Although things like http://www.uesp.net/wiki/Oblivion:Mythic_Dawn_Commentaries_1 may be problematic with their... fancy letters.
21:32:53 <Deewiant> There's appropriate alt text.
21:32:54 <fizzie> I'm not sure I want the differ-only-by-a-little versions of Morrowind books and Oblivion books; at least the Lore-space merges those. But I guess if Skyrim books aren't there (yet).
21:33:17 <fizzie> Adding "Skyrim-Books" added:
21:33:18 <fizzie> Skyrim:À_â_é_è_ê_ë_ù_û_ü_î_ï_ô_ç
21:33:18 <fizzie> Skyrim:À_é_è_è_ì_ó_ò_ù_É_È_Ì_Ó_Ò_Á_Ù
21:33:18 <fizzie> Skyrim:Á_é_í_ó_ú_ñ_ü_ç_¿_¡_ª_º_Á_É_Í_Ó_Ú_Ñ_Ü_Ç
21:33:18 <fizzie> Skyrim:Ä_ö_ü_ß_Ä_Ö_Ü
21:33:23 <fizzie> The best pages, I'm sure.
21:33:36 <elliott> http://www.uesp.net/wiki/Skyrim:123_Abc_Def_Ghijklmnop_Qrstu_VWXYZ_123456789
21:33:53 <Phantom_Hoover> <elliott> Although things like http://www.uesp.net/wiki/Oblivion:Mythic_Dawn_Commentaries_1 may be problematic with their... fancy letters.
21:33:58 <Vorpal> spam I presume
21:34:02 <Phantom_Hoover> You have no CULTURE.
21:34:11 <elliott> 123 Abc Def Ghijklmnop Qrstu VWXYZ 123456789 is my favourite book.
21:34:29 <Vorpal> elliott: pretty sure it isn't in the game
21:34:37 <fizzie> It looks like a book-testing book.
21:34:43 <Deewiant> "unnecessary article, created by botwork; test book"
21:35:24 <elliott> http://www.uesp.net/w/index.php?title=Skyrim:123_Abc_Def_Ghijklmnop_Qrstu_VWXYZ_123456789&action=history
21:35:25 <elliott> What.
21:35:40 <Vorpal> elliott: anyway this is the "best" new book in skyrim: http://www.uesp.net/wiki/Skyrim:The_Lusty_Argonian_Maid,_v2
21:36:09 <Phantom_Hoover> Quill Weave's moving up in the world.
21:36:28 <Vorpal> elliott: looks like it was removed but there is a cached copy
21:37:22 -!- HalfTauRSquared has joined.
21:40:31 <oerjan> 'The design imperative of Haskell's module system was "let's not care about this, but not look as silly as C, either".'
21:40:45 <oerjan> http://www.reddit.com/r/haskell/comments/mv858/idea_for_haskell_books_and_tutorials/c349k4b
21:42:36 <Vorpal> heh
21:42:56 <elliott> "We wanted essentially the power of the ML module system without its complexity. Apart from named type equivalence, Haskell has the same module-level expressivity as ML."
21:42:59 <elliott> oerjan: haha, what a joker
21:43:06 <fizzie> Vorpal: I believe (don't have any first-hand experience) there's a reasonable amount of world background for WoW too, though not quite TES-y amounts. (At least in-game; out-game, they have something like 19 novels, compared to, what, two for TES?)
21:43:29 <Vorpal> fizzie: ah
21:43:45 <fizzie> Though if you start counting out-game universe descriptions, the Star Wars games...
21:44:13 <fizzie> (At least WoW started as a game.)
21:44:25 <Vorpal> fizzie: yeah star wars didn't start as a game so...
21:44:44 <Vorpal> fizzie: what is the relation between WoW and Warcraft btw?
21:45:11 <fizzie> They're in the same universe, at least.
21:45:18 <fizzie> Though I suppose they've been retconning things.
21:48:38 <fizzie> I think chronologically it goes in the release order, more or less, at least for the major games; Warcraft, Warcraft II, Warcraft III, World of Warcraft.
21:48:58 <fizzie> With WoW extensions taking the story chronologically forward.
21:50:22 <Deewiant> The Warcraft II expansion is also in between II and III.
21:50:53 <Deewiant> Don't know about the expansion(s?) to III, but presumably chronological like all the others.
21:51:26 <fizzie> Wrath of the Lich King was released in mid-2007, Cataclysm at the end of 2010, and according to http://www.wowwiki.com/Timeline_(unofficial) five in-game years passed between those, so apparently it's not quite synchronized with real time.
21:52:29 <Vorpal> fizzie: what about that new one, with pandas?
21:52:30 <fizzie> A mumorpuger like that is a bit weird though, since don't they keep doing the same world-shattering events again and again and again by different groups?
21:52:57 * elliott doesn't quite understand how WoW works, chronologically and plotwise and things.
21:53:06 <Phantom_Hoover> > sqrt (0.5)
21:53:07 <lambdabot> 0.7071067811865476
21:53:07 <elliott> I'm not sure how you can have a "plot" like this OMG UNIVERSAL CATACLYSM stuff.
21:53:13 <elliott> Since... people are going to complete it and stuff.
21:53:30 <fizzie> I don't think Mists of Pandaria is out yet? (Also it sounds like a joke.)
21:53:48 <Deewiant> No, not yet.
21:54:04 <Vorpal> fizzie: it could be a joke. Think I saw some footage of it from when it was announced though
21:54:06 <Vorpal> Deewiant: ah
21:54:13 <Deewiant> It's not a joke.
21:54:16 <fizzie> elliott: I suppose it involves a rather larger amount of suspension of disbelief than the usual.
21:54:19 <Deewiant> It is quite ridiculous, though.
21:54:41 <fizzie> Deewiant: So it's a successful joke even if they're quite serious about it.
21:54:42 <elliott> fizzie: But what /happens/ after you "complete" it?
21:55:00 <Deewiant> fizzie: If you think of it like that, sure.
21:55:17 <elliott> :t scanl
21:55:18 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
21:55:32 <fizzie> elliott: Then you complete it again and again, from what I've understood. But the happens-at-expansion-time world-changing events happen when they release the thing, and thereafter the world is different. I think. I haven't ever played WoW, so...
21:56:16 <HalfTauRSquared> :t foldl (*) 1
21:56:17 <lambdabot> forall a. (Num a) => [a] -> a
21:56:48 <Vorpal> so it seems nirnroot actually does regrow in skyrim
21:56:52 <Vorpal> how disappointing
21:57:53 <Deewiant> Could be a bug
21:58:00 <elliott> @hoogle [(a,b)] -> ([a],[b])
21:58:01 <lambdabot> Prelude unzip :: [(a, b)] -> ([a], [b])
21:58:01 <lambdabot> Data.List unzip :: [(a, b)] -> ([a], [b])
21:58:05 <Vorpal> Deewiant: possible
21:58:24 <HalfTauRSquared> @hoogle a -> ()
21:58:24 <lambdabot> Control.DeepSeq rnf :: NFData a => a -> ()
21:58:24 <lambdabot> Prelude id :: a -> a
21:58:25 <lambdabot> Data.Function id :: a -> a
21:58:29 <fizzie> (WoWWiki has 93221 pages.)
21:58:39 <elliott> fizzie: OMG put them into fungot.
21:58:39 <fungot> elliott: " that bloody hurt!" ' said rincewind encouragingly. " it's pretty long odds," said
21:58:56 <fizzie> It doesn't seem very appreciative of the idea.
21:59:49 <Taneb> But it's being inappreciative encouragingly!
22:00:39 <fizzie> Field Marshal's Satin Mantle is part of the Field Marshal's Raiment set. It is available for purchase from Captain Dirgehammer for the price of 9000. The Mosshide tribe is a gnoll tribe native to Wetlands. When Solved, Archaeology Fragments form Artifacts. Solved Artifacts can be found in Archaeology's Completed Artifacts tab. [A billion tables.] ToggleBag(bagNum); Opens or closes the specified bag. US realms are hosted for Blizzard in several datacenters acros
22:00:39 <fizzie> s the United States.
22:00:46 <fizzie> Yeah, that's the best possible training material indeed.
22:00:48 <kallisti> elliott: well once you complete cataclysm the cataclysm stops.
22:00:54 <fizzie> (Clicked the "random page" function a couple of times.)
22:00:56 <kallisti> so presumably in whatever pandera everything is fine.
22:01:06 <kallisti> though there is the issue of continuity.
22:01:09 <kallisti> because like...
22:01:19 <kallisti> you can still go kill the Lich King from the expansion before cataclysm
22:01:22 <elliott> kallisti: But how do you do a per-player-group plot in a shared world???
22:01:26 <elliott> SUUUUCKS
22:01:32 <elliott> (I guess the answer is "instancing, so much instancing".)
22:01:41 <kallisti> but how does it make sense to go kill deathwing again if there's no cataclysm.
22:01:42 <elliott> fizzie: Yes, it is.
22:02:01 <kallisti> elliott: well the lich king was easy because everything took place on a new continent.
22:02:09 <kallisti> cataclysm mostly takes place on the mainland.
22:02:11 <Vorpal> kallisti: I guess all MMORPGs with non-static worlds suffer from this
22:02:13 <fizzie> elliott: Choker of Endless Nightmares is an epic necklace. This item drops from Supremus in the Black Temple.
22:02:20 <elliott> Yes.
22:02:26 <Vorpal> fizzie: ouch
22:02:31 <Vorpal> fizzie: I'm against this idea
22:02:40 <kallisti> fizzie: are you playing WoW????
22:02:50 <Vorpal> kallisti: he said he wasn't
22:02:53 <fizzie> kallisti: I'm clicking the "random page" link on WoWWiki.
22:02:54 <kallisti> oh
22:02:58 <kallisti> why
22:03:16 <fizzie> kallisti: To see how well it would work for fungot.
22:03:17 <fungot> fizzie: he was also, by the shape of a dragon and slaughtered a regiment of soldiers, fighting to get under the same roof there had been half bitten away. here was a member of the crew"
22:03:37 <kallisti> fizzie: poorly I imagine.
22:03:41 <fizzie> Vorpal: Darkruned Battlegear set is the Tier 8 damage dealing death knight raid set. It is composed of any items from these sub-sets: Valorous Darkruned Battlegear - from armor tokens gained in 10-man Ulduar raids; Conqueror's Darkruned Battlegear - from armor tokens gained in 25-man Ulduar raids.
22:03:55 <Vorpal> fizzie: ouch
22:04:01 <Vorpal> fizzie: this is worse than europarl
22:04:10 <kallisti> the higher tier armor sets look pretty cool actually.
22:04:21 <fizzie> No, no. Zukk'ash Tunnelers can be found at the Writhing Deep in Feralas.
22:04:59 <kallisti> Vorpal: dude europarl is awesome shut your face;.
22:05:04 <Vorpal> fizzie: TES lore might be interesting
22:05:06 <Vorpal> kallisti: it isn't
22:05:14 <kallisti> ^style europarl
22:05:14 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:05:15 <kallisti> hi
22:05:17 <kallisti> fungot: hi
22:05:18 <fungot> kallisti: i should just like to stress two important points in terms of the directive to provide a framework for services of a general reduction in working time may encourage employment, competitiveness and social cohesion too. we need, a high level of consumer protection are concerned.
22:05:31 <Vorpal> ^style irc
22:05:31 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
22:05:34 <kallisti> nooooo
22:05:34 <Vorpal> fungot: hi
22:05:35 <fungot> Vorpal: i can't recall right now they're discussing haskell, which may or may not be a very difficult question; its solution became one of the better fnord.
22:05:48 <fizzie> I rather like europarl, to be honest. It sounds so politicky.
22:05:53 <Vorpal> well yes
22:05:56 <kallisti> ^style europarl
22:05:56 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:05:58 <Vorpal> but it quickly gets boring
22:05:58 <kallisti> fungot: discuss
22:05:59 <fizzie> Maybe at some point I'll retrain it with the latest version to stay current.
22:06:00 <fungot> kallisti: madam president, i echo the remarks of my colleague mr fnord, the very positive step, although it does not help to solve the problem by installing the necessary software. on the annual economic report is the fruit of the struggle against various forms of gangsterism, racketeering and of interfering with community assets and finances should be expended.
22:06:06 <Vorpal> ^style ct
22:06:06 <fungot> Selected style: ct (Chrono Trigger game script)
22:06:11 <Vorpal> fungot: SWORDS!
22:06:11 <fungot> Vorpal: is the gate key okay!! get' em! 200g per night. care, and stay...healthy! my husband...he's...he's...gone... but he left me precious gifts! the seeds...and our child, it's ancient history now...
22:06:16 <Vorpal> fungot: swords!
22:06:16 <fungot> Vorpal: that no one was allowed to use the crane, enter any two of these letters, a b y. c.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
22:06:21 <Vorpal> fungot: come on
22:06:21 <fungot> Vorpal: from where does the hero alone have the power. " m, madam...! i am the master of war! i've seen all kinds of battles from here, step back, prometheus!
22:06:24 <Vorpal> fungot: whatever....
22:06:24 <fungot> Vorpal: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
22:06:27 <kallisti> "various forms of gangsterism"
22:06:47 <Vorpal> kallisti: *yawn*
22:06:56 <kallisti> ^style europarl
22:06:56 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:06:57 <kallisti> fungot: hi
22:07:00 <fungot> kallisti: mr president, the european authority must still produce unambiguous recommendations on scientific grounds. the general principle of the relative trimming back in our countries and not with those of my group, that we agree with parliament that the commission figures are aspirational. yes, i would say that we had better keep our zoos closed in those circumstances, it is not just the tar and nicotine yields which are lar
22:07:02 <Vorpal> ^style ct
22:07:02 <fungot> Selected style: ct (Chrono Trigger game script)
22:07:06 <Vorpal> fungot: hellpo
22:07:06 <fungot> Vorpal: but, we are far outnumbered! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
22:07:06 <HalfTauRSquared> ^help
22:07:06 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
22:07:22 <Vorpal> fungot: really?
22:07:22 <fungot> Vorpal: it's a machine that looks like you! did we do that??
22:07:24 <Vorpal> fungot: ..
22:07:24 <fungot> Vorpal: and you call yourself a frog, and ayla... i will not betray my friends! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the red vest! got the r
22:07:26 <Vorpal> yay
22:07:28 <Vorpal> a loop
22:07:32 <Vorpal> haven't seen that one before
22:07:33 <Vorpal> fizzie: ^
22:07:33 <HalfTauRSquared> ^show style
22:07:41 <fizzie> ^style is sadly a built-in.
22:07:41 <fungot> Not found.
22:07:44 <fizzie> ^source
22:07:44 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
22:07:56 <fizzie> Line 207 there.
22:08:05 <fizzie> Well, thereabouts.
22:08:24 <HalfTauRSquared> lol
22:08:26 <Vorpal> yeah line numbers make little sense for pointing to befunge code. What with having vertical and diagonal code
22:08:43 <HalfTauRSquared> 2D IRC bot
22:08:59 <Vorpal> fizzie: your site is timing out for me :/
22:09:00 <fizzie> Vorpal: Me neither. That many red vests would be useful, though. Red mails even more so.
22:09:09 <Vorpal> heh
22:09:22 <Taneb> HalfTauRSquared, I got reasonably far in making a bot in Piet
22:09:24 <Vorpal> fizzie: don't you need at most one per party member though?
22:09:25 <Deewiant> A line number identifies half of the starting location of a code segment
22:09:34 <Deewiant> Seems sensible enough to me, that.
22:09:37 <Taneb> It would join the channel then do nothing
22:09:46 <HalfTauRSquared> A png file?
22:10:04 <Taneb> An bitmap file, yes
22:10:05 <fizzie> Vorpal: Yeah, but normally you just get sort-of two. (One red vest and one red mail.)
22:10:09 <Taneb> I believe it was ppm
22:10:13 <Vorpal> fizzie: ah yes
22:10:25 <kallisti> I think it's stupid that it costs money to transfer to different WoW servers
22:10:29 <Vorpal> fizzie: I thought you traded for them with the stuff from that hunting ground area?
22:10:41 <kallisti> it makes it so much more difficult to play with RL friends if you accidentally have characters on different servers.
22:10:50 <Vorpal> fizzie: don't remember there being a limit of one per type
22:10:52 <kallisti> or to play with random people you've met online but not on WoW
22:11:40 <Vorpal> kallisti: you play WoW?!
22:11:46 <Vorpal> why on earth
22:12:04 <kallisti> I once did.
22:12:09 <Vorpal> still
22:12:10 <kallisti> Spoken languages have a wide variety of organizations of numbers: the decimal number 92 is spoken in English as ninety-two, in German and Dutch as two and ninety and in French as four-twenty-twelve with a similar system in Danish (two-and-four-and-a-half-times-twenty).
22:12:19 <kallisti> note how English is the best one.
22:12:48 <fizzie> Vorpal: No, you got red vest/red mail from the sealed boxes with the amulet, so you can get only one (by upgrading, then getting the upgraded version, then going back to get the base version); what you get from the hunting ground trading is Ruby Vests, which just halve fire, instead of absorbing it.
22:13:01 <Vorpal> kallisti: no the Danish one is the most awesome one
22:13:14 <Vorpal> kallisti: anyway you mean the Swedish way. The English do it the Swedish way
22:13:19 <fizzie> Vorpal: A full-red-{mail,vest} party makes Son of the Sun quite a joke though.
22:13:31 <Vorpal> fizzie: ah
22:13:37 <kallisti> Vorpal: don't push your Swedish superiority on me.
22:13:49 <kallisti> I'm too busy focusing on my American superiority.
22:13:59 <Vorpal> kallisti: just saying that you shouldn't call it the English way, it is used by many languages
22:14:08 <kallisti> ..
22:14:29 <kallisti> add "based on the context of this thing that I quoted in which English is the only that does it that way" to my statement then
22:14:30 <Vorpal> anyway the French system is somewhat understandable: 4*20+12 = 92
22:14:32 <kallisti> if it makes you feel better.
22:14:37 <Vorpal> but the Danish system? Wtf
22:14:50 <fizzie> 4.5*20+2 is equally 92.
22:14:53 <Taneb> > 2 + 4.5 * 90
22:14:54 <lambdabot> 407.0
22:14:56 <Vorpal> fizzie: ah
22:15:01 <Taneb> Wait
22:15:03 <Taneb> > 2 + 4.5 * 20
22:15:05 <lambdabot> 92.0
22:15:11 <Taneb> That is better
22:15:19 <Vorpal> right
22:15:24 <Vorpal> I just failed at parsing it then
22:15:39 <fizzie> The dashes make it a bit confusingly put.
22:15:59 <Vorpal> I thought it was 2 & 4 & 0.5 * 20
22:16:00 <kallisti> actually hobbit numbers are the best.
22:16:02 <Vorpal> fizzie: ^
22:16:11 <Vorpal> kallisti: what are those?
22:16:12 <fizzie> Right, two-and-(four-and-a-half-times-twenty) is not so obvious.
22:16:22 <Vorpal> fizzie: exactly
22:16:23 <Taneb> Hey, my epetition has 16 signatures
22:16:23 <kallisti> Vorpal: they have things like "eleventy"
22:16:29 <Vorpal> kallisti: heh
22:16:37 <Vorpal> elliott: epetition?
22:16:47 <Taneb> Like a petition, but more e
22:16:52 <Vorpal> I see...
22:16:59 <Taneb> e here standing for electronic, as in email
22:17:09 <Vorpal> I see
22:17:37 <fizzie> Wowza, Google MapsGL on this system is so many times slower than Google Maps Classic than it's not even funny how they say "our enhanced Maps provide improved performance".
22:17:39 <kallisti> Taneb: wow now that I'm not confused anymore I can formulate a reply.
22:17:42 <Taneb> The British Government decided to be all modern and stuff and start letting people create officially epetitions
22:17:43 <Vorpal> hm yogscast is doing a advent calendar
22:17:45 * kallisti goes to sleep instead.
22:18:01 <fizzie> (Full CPU use and 1 FPS when scrolling.)
22:18:13 <Vorpal> fizzie: intel graphics?
22:18:28 <Vorpal> fizzie: where is this google maps gl then?
22:18:48 <fizzie> Vorpal: That's just the thing, it's got a Geforce whatever-it-was-old-but-anyway-it's-just-2D-polygons, maybe 7600 GT.
22:18:59 <Vorpal> ah
22:18:59 <fizzie> It's a "want to try something new?" box at maps.google.com left-side.
22:19:13 <Vorpal> oh webgl
22:19:15 <Vorpal> yeah that is slow
22:19:28 <fizzie> But this was with their own browser and everything.
22:19:40 <Vorpal> ouch
22:20:05 -!- Taneb|Hovercraft has joined.
22:20:14 <fizzie> At work (with Intel graphics) it didn't even deign to run, was just "you don't fill the system requirements".
22:20:40 <Taneb|Hovercraft> Yeah, I'm going to quit for the night. Crappy connection
22:20:42 -!- Taneb|Hovercraft has quit (Client Quit).
22:21:30 -!- Patashu has joined.
22:21:40 <fizzie> That's funny & something I hadn't noticed earlier: in classic, the top-right "Satellite" icon (and the corresponding "Map" icon when in satellite mode) is nowadays actually showing the satellite/map image that's actually under the rectangle at that point in the map.
22:21:55 <fizzie> It's like a window into the satellite picture.
22:22:06 <fizzie> IIRC it used to be just an icon.
22:22:48 <Vorpal> fizzie: same here. And I have a Radeon HD 6800.
22:22:51 <Vorpal> Using firefox though
22:23:33 <Vorpal> so why does it run at like 4 FPS...
22:23:41 <Vorpal> which is only slightly better than your
22:24:10 -!- Taneb has quit (Ping timeout: 252 seconds).
22:25:59 <fizzie> If I zoom it in so that the buildings are visible, it manages to be even slower. (By a lot.)
22:27:38 <fizzie> Seems to draw them with a bit of a perspective effect, so that the middle of the map is directly-from-top, while you can see the "correct" sides of buildings at the edges.
22:27:53 <myndzi> i bet one of you guys can answer this more readily than i could
22:28:48 <myndzi> given the current (at any point in time) UTC unix timestamp, what math would you apply to get the value of that UTC timestamp when it's midnight in the philippines? (UTC+8, no DST)
22:30:22 <elliott> myndzi: Isn't it just taking the nearest multiple of whatever?
22:30:28 * elliott didn't pay much attention to the question.
22:30:35 <fizzie> I don't quite know what that means; does that mean you want to round to the nearest midnight?
22:31:07 <myndzi> server timestamp is in utc
22:31:15 <myndzi> i want to find what the server timestamp would be when it's midnight there
22:31:27 <myndzi> (i've solved it, but it took a while to wrap my head around it; i want to see if it's just me)
22:31:30 -!- Klisz has joined.
22:31:36 <fizzie> So... next midnight, or nearest midnight?
22:32:49 <fizzie> It sounds like getting the closest (or closest greater-than) t such that t = k*86400 - 8*3600, where k is an integer. (Modulo thinkos, anyway.)
22:33:10 <myndzi> current midnight
22:33:13 <myndzi> err,
22:33:15 <myndzi> start of current day
22:33:17 <myndzi> basically
22:34:30 <fizzie> So, uh, the Philippines-midnight immediately preceding the current timestamp, then, I guess.
22:34:48 <myndzi> sure
22:37:29 <myndzi> of course, midnight might be between the current UTC timestamp and the current PH timestamp
22:37:48 <HalfTauRSquared> What are you asking?
22:38:33 <fizzie> What's a "current PH timestamp"? Seconds since Philippines 1970-Jan-01 00:00:00? That doesn't sound like a useful concept.
22:40:00 <oerjan> sheesh, everyone knows PH timestamps are in edinburgh
22:40:21 <myndzi> i mean, if you want local time in the philippines
22:40:25 <myndzi> you offset UTC
22:40:26 <Phantom_Hoover> It's 10:38, it seems.
22:40:30 <myndzi> and calculate the time for that stamp, yes?
22:41:03 <Phantom_Hoover> Or wait, do you want a PH timestamp of approval.
22:41:54 <myndzi> ok, right now it's 1322894518 UTC and it's 1322923332 PH local time, yes?
22:42:20 <Phantom_Hoover> I keep telling you, it's twenty to eleven.
22:42:26 <HalfTauRSquared> ...
22:42:35 <myndzi> i was asking how to calculate it, not what time it is ;)
22:42:44 <myndzi> i found the answer very unintuitive at first
22:43:08 <Phantom_Hoover> It's just GMT modulo BST.
22:43:09 <fizzie> I... suppose, though I've never really bothered to consider it like that. "Conceptually" the offset is added within the conversion from a timestamp into a local-time display format, and if you have a timestamp it's always "in UTC".
22:43:43 <Vorpal> what fizzie said
22:43:48 <Vorpal> timestamps are always UTC
22:43:54 <Vorpal> any timezone is just formatting
22:44:13 <Vorpal> myndzi: anyway you need to consider leap seconds too
22:44:18 <Vorpal> I think
22:44:24 <fizzie> Leap seconds aren't in "Unix time".
22:44:30 <fizzie> They just redo a second.
22:44:32 <Vorpal> ah
22:45:09 <Vorpal> fizzie: so if you want to know seconds that elapsed and there was a leap second in between you can't just subtract one timestamp from the other?
22:45:16 <fizzie> Right.
22:45:21 <Vorpal> ugh
22:45:38 <Deewiant> (Hooray for Unix time!)
22:45:50 <elliott> Deewiant doesn't like leap seconds.
22:46:06 <Deewiant> I don't dislike them.
22:46:08 <fizzie> OTOH, you do get a day count with integer /86400, and a within-day offset in seconds with %86400 always.
22:46:33 <Vorpal> well yes
22:46:34 <myndzi> UTC inherently accounts for leap seconds
22:47:28 <Vorpal> this is the same sort of issue as you get when using DST-affected timestamps, only not quite as annoying.
22:47:29 <fizzie> For some values of "accounts for".
22:47:54 -!- pikhq_ has joined.
22:48:04 <Vorpal> fizzie: anyway should the rotation of earth ever speed up instead you might get leap seconds where you skip a second
22:48:10 <Vorpal> iirc
22:49:26 <fizzie> Vorpal: Technically, though it is pretty unlikely. What's not unlikely is the continuous slowing down, leading to two leap seconds in every year by the 22nd century, the need for more than one leap second in some month in around two thousand years, and more than one leap second per day after "few tens of thousands of years". (Numbers from Wikipedia.)
22:49:28 <elliott> myndzi: Unix time isn't really UTC.
22:49:37 <elliott> It's seconds since 1 Jan 1970 UTC.
22:49:45 <Vorpal> fizzie: heh
22:49:56 -!- Taneb|Hovercraft has joined.
22:49:59 <elliott> But it's, um, TAI seconds.
22:50:01 -!- Taneb|Hovercraft has changed nick to Ngevd.
22:50:09 <elliott> (That doesn't mean anything but it sort of does.)
22:50:19 <Vorpal> fizzie: so how much shorter was a day a few thousand years ago?
22:50:22 <elliott> (All I'm sayin' is that Unix time isn't "UTC" and therefore doesn't account for UTC leap seconds.)
22:50:32 <Ngevd> Is there such thing as a complete but directed graph, where every node is connected to every other node by a different arc to the reverse?
22:50:38 <Vorpal> fizzie: or is it rotation about sun rather than day-rotation?
22:50:45 <Vorpal> fizzie: in which case: how much shorter was a year
22:50:59 <Ngevd> And if so, what is it called?
22:51:02 -!- pikhq has quit (Ping timeout: 255 seconds).
22:51:25 <elliott> Ngevd: charlie
22:51:48 <Ngevd> elliott, :P
22:52:00 <Ngevd> You know full well what I meant.
22:52:08 <Ngevd> But I would have done a very similar thing
22:52:25 <Ngevd> (The difference being, I call it Terence)
22:53:14 <Phantom_Hoover> Ngevd, isn't that just a complete directed graph?
22:53:19 <Ngevd> Possibly?
22:53:43 <quintopia> pit is
22:53:50 <oerjan> http://mathworld.wolfram.com/CompleteDigraph.html
22:53:50 <quintopia> -p
22:54:29 <fizzie> Vorpal: It's probably mentioned somewhere, but I can't find it right now; just that the long-term trend for the delta-length-of-day is +1.7 milliseconds/century. Though the length of the solar day keeps wiggling by couple of milliseconds.
22:54:45 <Vorpal> ah
22:55:08 <Vorpal> fizzie: so nothing majorly different then in the ancient Egypt?
22:55:16 <fizzie> Vorpal: Maybe they'll fit the planet with some rotational speed stabilization engines at some point.
22:55:26 * oerjan realizes that he's been confusing the terms digraph and bigraph
22:55:58 <Vorpal> fizzie: do we have any data for the length of the day back during when the dinosaurs lived? Maybe in plant fossil growth rates or something?
22:56:58 <myndzi> elliott: according to wikipedia (lols), unix time does in fact account for UTC leap seconds and certain unix timestamps can therefore be ambiguous
22:57:16 <oerjan> Vorpal: i'm pretty sure i saw something about that the other day
22:57:18 <elliott> Ugh, it does?
22:57:18 <myndzi> anyway, that's besides the point - i'm sure it doesn't really matter if it's a second or ten off; it's just a question about timezone conversions
22:57:20 <elliott> That's annoying.
22:57:21 <quintopia> if the moon vanished and the oceans dried up, would we have a delta length of day close to zero?
22:57:35 <Vorpal> oerjan: oh?
22:57:55 <fizzie> Vorpal: Wikipedia says the geological record suggests that 620 million years ago the day was 21.9+-0.4 hours, and there were 400+-7 solar days per year.
22:58:26 <oerjan> Vorpal: i was looking around for how fast the moon slowed down the earth
22:58:31 <fizzie> The length of a year has been nice and stable.
22:58:34 <Vorpal> fizzie: heh
22:58:57 <Vorpal> interesting
22:59:27 <fizzie> Tidal effects and such don't much affect how the rockball goes around the sun, after all.
22:59:51 <myndzi> heh, ok, i'll make this question really simple ;)
22:59:59 <myndzi> if you clip the current UTC timestamp to midnight
23:00:22 <myndzi> (divide by 86400, lose the fractional part, multiply again - or subtract the modulus)
23:00:31 <myndzi> would you add or subtract 8 hours
23:00:44 <myndzi> to find the number that the timestamp should be at midnight in PH
23:00:53 <Vorpal> myndzi: one of them.
23:00:58 <myndzi> lol.
23:01:02 <Vorpal> myndzi: try it and see
23:01:05 <myndzi> ok, i'm glad i'm not a total idiot
23:01:07 <Vorpal> timezones are messy
23:01:08 <myndzi> i know the answer
23:01:14 <Vorpal> tell me
23:01:26 <myndzi> i'm just trying to find out if i was just particularly stupid or if they really are that confusing
23:01:29 <myndzi> hazard a guess and a reason first ;)
23:01:36 <Vorpal> too lazy
23:01:40 <myndzi> me too
23:01:42 <fizzie> I'd assume subtract; because then you will be pointing at eight-hours-before-UTC-midnight, which is when UTC+8 has a midnight.
23:02:00 <myndzi> fizzie: that's what i thought too ;)
23:02:15 <Vorpal> myndzi: and the real answer?
23:02:19 <myndzi> add.
23:02:22 <Vorpal> why
23:02:47 <myndzi> because PH = UTC+8
23:02:56 <myndzi> therefore midnight PH = midnight UTC+8
23:03:07 <myndzi> the subtraction tricked me because
23:03:11 <myndzi> i assumed i had to convert back
23:03:15 <Vorpal> hm
23:03:17 <myndzi> however
23:03:23 <myndzi> since UTC+8 hasn't happened yet
23:03:28 <myndzi> it'll take 8 hours for it to be "the correct timestamp"
23:03:35 <Vorpal> myndzi: why do you need to know this?
23:03:50 <myndzi> because i want to know the UTC timestamp for midnight in the philippines, i thought that was obvious ;)
23:03:59 <myndzi> so that i can divide time into days
23:04:05 <Vorpal> yes but why do you need to know this!?
23:04:21 <myndzi> so that i know when things happened in PH local time but store them in a consistent fashion on the server?
23:05:31 <Vorpal> myndzi: why do you care about the local time there I mean
23:05:33 <Vorpal> do you live there?
23:05:40 <myndzi> i have employees there
23:05:43 <Vorpal> ah I see
23:05:50 <pikhq_> elliott: Unix time has a *really* perverse counting of, much worse than *even* UTC or TAI seconds since 1 Jan 1970.
23:05:56 -!- Nisstyre has quit (Remote host closed the connection).
23:05:58 <HalfTauRSquared> ...
23:05:59 <myndzi> i'm working on a web application that helps organize various pieces of work
23:06:05 <myndzi> and i want reporting on how effective people are being
23:06:10 <fizzie> fis@eris:~$ t=`date +%s`; echo $(( (t - t % 86400) - 8*3600 ))
23:06:10 <fizzie> 1322755200
23:06:10 <fizzie> fis@eris:~$ date -d '2011-12-02 00:00:00+08' +%s
23:06:10 <fizzie> 1322755200
23:06:10 <myndzi> so i need to decide when to draw the line
23:06:13 <myndzi> midnight is a natural choice
23:06:13 <fizzie> That says "subtract".
23:06:25 <pikhq_> elliott: Unix time is defined such that a day is precisely 86400s.
23:06:28 <HalfTauRSquared> `log UTC+
23:06:30 <elliott> myndzi: Why are you even dealing with Unix time directly?
23:06:32 <elliott> myndzi: Your language of choice will have a time-handling library in its stdlib.
23:06:43 <fizzie> Of course if you clip to the UTC midnight and then subtract eight hours, it's not going to be "the Philippines midnight that is before current time".
23:06:50 <myndzi> because it's stored that way in the database and a WHERE > timestamp is effective nad simple
23:06:54 <HackEgo> 2011-09-03.txt:02:06:02: <elliott> b[9<<20];main(a,z){while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);}
23:07:02 <fizzie> But it's going to be a philippines midnight.
23:07:03 <myndzi> and because i'm generally comfortable with math and it was apparently a simple problem
23:07:19 <pikhq_> elliott: And that a day corresponds precisely to a UTC day.
23:07:28 <myndzi> if you clip UTC to midnight and add 8 hours, you will have the beginning of the day "right now" in the philippines
23:07:29 <pikhq_> elliott: Because of this property, when there is a UTC leap second, Unix time goes forward or back.
23:08:01 <myndzi> Observe that when a positive leap second occurs (i.e., when a leap second is inserted) the Unix time numbers repeat themselves. The Unix time number 915 148 800.50 is ambiguous: it can refer either to the instant in the middle of the leap second, or to the instant one second later, half a second after midnight UTC. In the theoretical case when a negative leap second occurs (i.e., when a leap second is deleted) no ambiguity is caused, b
23:08:28 <elliott> myndzi: SQL can do times too...
23:08:34 <elliott> Even if the column is an integer.
23:08:54 <fizzie> myndzi: I'm pretty sure you won't. Assuming you start with a Unix timestamp, and treat the result as a Unix timestamp. See above: clip to midnight minus eight hours = 1322755200, UTC timestamp at "2011-12-02 00:00:00+08" = 1322755200.
23:08:55 <myndzi> so what? > is one of the simplest operations i can use
23:08:58 <myndzi> why make it more complicated?
23:09:05 <pikhq_> So, it's neither UTC nor TAI seconds since Jan 1. 1970.
23:09:07 <myndzi> fizzie: tell you what
23:09:18 <myndzi> at 16:00 UTC
23:09:20 <elliott> myndzi: Well, one day there might be another timezone, and another three timezones, and your code will start looking mighty unreadable.
23:09:25 <myndzi> go on google and look up the current PH local time
23:09:47 <myndzi> elliott: i'll deal with that when i get there; for now this is all i need, and i didn't know jack about SQL a week or two ago
23:09:55 -!- Nisstyre has joined.
23:10:13 <myndzi> so it's to be expected there's things i don't know - but that's beside the question of why it's so confusing to wrap my head around why the math is the way it is
23:10:37 <elliott> myndzi: Well, I guess you'll see how optimising getting things done as quickly as possible vs. as readably as possible for the long-term pays off in the end...
23:10:53 <myndzi> heh, look;
23:11:03 <myndzi> in order to support multiple timezones there are like 10 other things i need to do with the database and code
23:11:07 <myndzi> the way it is now won't support it
23:11:13 <myndzi> i didn't build it this way, i'm working to correct it
23:11:17 <myndzi> but this is extremely low on my priority list
23:11:24 <myndzi> so the simplest adjustment was as described
23:11:32 <myndzi> so that we can get work done while i make it more robust
23:11:39 <myndzi> does that meet with your approval? ;)
23:11:43 <fizzie> myndzi: I don't need to. Right now it's around 23:11 UTC, while it's 07:11 in Manila. The difference is not going to change. If you go back in time seven hours, you will arrive to 16:00 UTC, midnight in Manila.
23:11:47 * elliott decides to say nothing.
23:11:48 <HalfTauRSquared> fungot: hi
23:11:49 <fungot> HalfTauRSquared: i should like to congratulate the rapporteur on their work. i would be pleased to provide it to the house as far as participants are concerned.
23:12:20 <myndzi> fizzie: i only offered it as an aid to understanding
23:12:31 <elliott> Is there something fizzie does not understand?
23:12:35 <myndzi> the unix timestamp that represents midnight in manila is UTC+8*3600
23:12:37 <pikhq_> myndzi: Just accept that civil time is Pain, Agony and Sorrow.
23:13:01 <pikhq_> And that you don't want to mess with it.
23:13:03 <myndzi> (not UTC-8*3600)
23:13:25 -!- ais523 has quit (Remote host closed the connection).
23:13:35 <myndzi> and it took me about two days to wrap my head around it, because i thought i had it working and then it wasn't verifiable until the next day
23:13:36 <fizzie> myndzi: That's just not true, unless we have differing definitions. If you have a Unix timestamp, clamp it to multiple-of-86400 it's going to represent UTC 00:00:00, which equals PST (Manila) 08:00:00.
23:13:40 <myndzi> i was just curious if i was particularly stupid
23:14:01 <myndzi> fizzie: test it for yourself
23:14:06 <myndzi> write me some code :)
23:14:17 <myndzi> i know that i am correct, and this conversation has been interesting
23:14:22 <myndzi> and i feel less dumb now
23:14:24 <fizzie> myndzi: I just tested it for myself above.
23:14:26 <fizzie> $ t=`date +%s`; echo $(( (t - t % 86400) - 8*3600 ))
23:14:26 <fizzie> 1322755200
23:14:41 <fizzie> That's a clamped-to-midnight Unix timestamp, after subtracting eight hours.
23:14:45 <fizzie> $ date -d '2011-12-02 00:00:00+08' +%s
23:14:46 <fizzie> 1322755200
23:14:55 <myndzi> which is not the timestamp of midnight in the philippines
23:14:56 <fizzie> That's a midnight-in-Manila Unix timestamp.
23:14:58 <pikhq_> fizzie: It's going to represent UTC 00:00:00 or 23:59:60 (ambiguously)
23:15:01 <myndzi> it's the timestamp of midnight in washington
23:15:14 <myndzi> washington state, that is
23:15:15 <myndzi> PST
23:15:26 <myndzi> where i happen to live, which made this more annoying :)
23:15:46 <myndzi> (that i didn't hit on the right combination of tests to see that it was the same as my local time)
23:16:04 <myndzi> the thing is fizzie, you are saying "my logic is correct, so my answer is correct"
23:16:09 <Vorpal> http://www.uesp.net/wiki/Lore:Third_Era <-- the problem with this is that it is tricky figuring out where the actual *games* take place
23:16:10 <myndzi> i agree that your answer reflects your logic
23:16:12 <myndzi> but your logic is mistaken
23:16:13 <fizzie> No, I'm saying I just tested it.
23:16:17 <Vorpal> like arena and daggerfall
23:16:32 <myndzi> in one hour it will be midnight in manila
23:16:39 <myndzi> by your reasoning,
23:16:51 <myndzi> midnight(UTC)-8 should be 11pm in manila right now
23:16:52 <myndzi> yes?
23:17:40 <fizzie> myndzi: I don't really understand what that means. But I can keep talking if you want.
23:17:42 <myndzi> excuse me, strike 'midnight' from that equation
23:18:18 <myndzi> 02-12-2011 15:18.40
23:18:19 <myndzi> //say $asctime($calc($gmt -8*3600), dd-mm-yyyy HH:nn.ss)
23:18:28 <myndzi> that's the current time of GMT-8hrs
23:18:44 <myndzi> when you subtract, it's going in the wrong direction :)
23:18:54 <fizzie> I didn't say anything about $gmt - 8 hours.
23:19:18 <fizzie> I said, if you round $gmt to last UTC midnight, you need to subtract 8 hours from that to get a value that is a midnight in Manila.
23:19:29 <myndzi> fizzie> myndzi: I'm pretty sure you won't. Assuming you start with a Unix timestamp, and treat the result as a Unix timestamp. See above: clip to midnight minus eight hours = 1322755200, UTC timestamp at "2011-12-02 00:00:00+08" = 1322755200.
23:19:44 <myndzi> and i am saying, you ADD 8 hours to get that value
23:19:45 <fizzie> Yes: clip to midnight, after which you subtract eight hours.
23:19:58 <fizzie> That's very much not the same as "subtract eight hours, then clip to midnight" or whatever.
23:20:08 <elliott> UTC midnight - 8 is obviously midnight in Manila, if that's what fizzie is saying.
23:20:15 <elliott> So I don't know what myndzi is saying.
23:20:16 <myndzi> clip to midnight, ADD 8 hours, that gives you the UTC timestamp of midnight in manila
23:20:21 <myndzi> that's what i'm saying
23:20:24 <fizzie> That I just refuse to believe.
23:20:30 * myndzi shrugs
23:20:31 <elliott> What?
23:20:32 <myndzi> suit yourself
23:20:34 <fizzie> And you did not demonstrate anything related to that above.
23:20:36 <myndzi> i'm not here to convince you
23:20:45 <myndzi> i was here to see if it was as unintuitive to a bunch of esoteric programmers as it was to me
23:20:52 <elliott> myndzi: You are insane, PST is UTC+8.
23:20:56 <elliott> Therefore you subtract 8 from UTC to get PST.
23:21:00 <myndzi> PST is UTC-8
23:21:03 <elliott> You are wrong.
23:21:05 <elliott> I just checked.
23:21:06 <elliott> http://en.wikipedia.org/wiki/Philippines
23:21:10 <myndzi> oh
23:21:11 <elliott> Time zonePST (UTC+8)
23:21:11 <elliott> - Summer (DST)not observed (UTC+8)
23:21:12 <myndzi> when i said PST
23:21:15 <myndzi> i meant pacific standard time
23:21:20 <elliott> While talking about Manila?
23:21:21 <myndzi> i didn't know that philippines was PST too
23:21:24 <fizzie> PST is also Washington time, yes, it's awfully ambiguous.
23:21:27 <elliott> <myndzi> clip to midnight, ADD 8 hours, that gives you the UTC timestamp of midnight in manila
23:21:29 <elliott> This is still wrong.
23:21:31 <myndzi> funny that they're both eight
23:21:32 <myndzi> no it isn't.
23:21:35 <elliott> It's subtract 8 hours, because Philipines is UTC+8.
23:21:41 <myndzi> look guys
23:21:41 <elliott> pst = utc+8, pst-8 = utc.
23:21:44 <myndzi> in 40 minutes
23:21:44 <elliott> This is basic arithmetic.Y
23:21:46 <elliott> You are a madman.
23:21:48 <myndzi> it will be midnight in manila
23:21:49 <myndzi> yes?
23:21:52 <fizzie> Uh, no?
23:21:54 <myndzi> ...
23:21:55 <myndzi> yes
23:21:58 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=time+in+manila
23:21:58 <myndzi> i mean 8am
23:21:59 <myndzi> fuck
23:22:00 <myndzi> 1523f978'.p,uran
23:22:03 <fizzie> 8AM, yes.
23:22:06 <myndzi> i just knew 4pm was significant
23:22:32 <myndzi> you are both mistaken, but i have made a number of typing mistakes and have been unclear, so please ignore everything except the conclusion
23:22:36 <myndzi> and if you want me to attempt to explain i will
23:22:42 <elliott> <elliott> myndzi: You are insane, PST is UTC+8.
23:22:42 <elliott> <elliott> Therefore you subtract 8 from UTC to get PST.
23:22:48 <elliott> Sorry, *add.
23:22:49 <myndzi> if you want to believe i'm wrong, you're welcome to, but i have no interest in arguing further
23:22:56 <fizzie> myndzi: Why don't we just try out the clipping thing. Current Unix timestamp is around 1322868093. Clipped to UTC midnight, that's 1322784000.
23:23:04 <myndzi> i have tried out the clipping thing
23:23:08 <myndzi> i have implemented a correct and functioning solution
23:23:09 <Phantom_Hoover> /o/
23:23:10 <myndzi> |
23:23:10 <myndzi> >\
23:23:17 <Phantom_Hoover> DANCE FOR ME
23:23:23 <myndzi> it took me a long time to wrap my head around why the solution was correct
23:23:23 <Phantom_Hoover> \m/ \m/
23:23:30 <myndzi> and i wasn't comfortable implementing it until i understood
23:23:32 <Phantom_Hoover> Is that not a thing any more :(
23:23:33 <Phantom_Hoover> \m/ \m/
23:23:37 <Phantom_Hoover> Awwww.
23:23:37 <myndzi> only one space
23:23:44 <Phantom_Hoover> \m/ \m/
23:23:45 <elliott> myndzi: Do you believe it completely impossible that you have implemented a solution that is incorrect and have just made a mistake in thinking it was?
23:23:45 <myndzi> he doesn't have infinitely wide arms
23:23:45 <myndzi> `\o/´
23:23:45 <myndzi> |
23:23:45 <myndzi> /'\
23:23:45 <myndzi> (_| |_)
23:23:47 <fizzie> Subtracted eight hours, it's 1322755200; added eight hours, it's 1322812800. What are those (Unix) timestamp values in UTC+8?
23:24:00 <myndzi> elliott: when i subtracted, two hours ago it was giving me stats from yesterday
23:24:02 <elliott> I mean, "I don't want to do anything but educate you mortals as to why I definitely got it correct." is not a very compelling position if you are wrong.
23:24:03 <myndzi> my workers don't work today
23:24:08 <elliott> myndzi: So you made another mistake elsewhere.
23:24:09 <myndzi> there's no way that one of them wrote 12 articles
23:24:11 <myndzi> no.
23:24:18 <myndzi> when i added, it was correct, but i couldn't understand why
23:24:40 <myndzi> now i understand why, but i am tired of people telling me so unambiguously that i'm wrong and they're right
23:24:42 <elliott> Yes, adding 8 to UTC gives PST. But you want the /previous/ midnight.
23:24:43 <fizzie> If you subtract eight hours, it's going to give you a midnight in manila; it's not going to be the *previous* midnight, though.
23:24:48 <myndzi> which is why i don't want to argue further
23:24:54 <fizzie> It might be the one before.
23:24:57 <elliott> We are not denying that your conversion returns a midnight in Manila.
23:25:04 <fizzie> Because you can end up subtracting more than a day.
23:25:04 <elliott> We are just telling you that it is not always the _correct_ midnight.
23:25:19 <myndzi> let me consider
23:25:46 <oerjan> <myndzi> funny that they're both eight <-- and since 3*8 = 24, that means there's also an 8 hour difference in some direction from washington to the philippines
23:26:22 <Vorpal> TZ=UTC-8 date --date="@1322755200" <-- note that UTC-8 is UTC+8 in TZ afaik.
23:26:22 <myndzi> it may be that i need to subtract 16, but that would be more than subtracting 8, and subtracting 8 had the window too far
23:26:28 <Vorpal> fre dec 2 00:00:00 UTC 2011
23:26:33 <myndzi> +8 is definitely correct
23:26:39 <myndzi> for "today"
23:27:01 <myndzi> clip to midnight and add 8 will always give the correct UTC timestamp of midnight local time in manila
23:27:29 <fizzie> If you do "(now - now%86400) + 8*3600" where 'now' is the current Unix timestamp, and convert that to the local time in UTC+8, that will not be a midnight.
23:27:48 <Vorpal> fizzie: what is the local timezone for PH?
23:27:57 <Vorpal> Pacific/something?
23:28:04 <myndzi> asia/manila
23:28:44 <Vorpal> TZ=Asia/Manila date --date=@1322755200
23:28:44 <Vorpal> fre dec 2 00:00:00 PHT 2011
23:28:47 <Vorpal> well that one is correct
23:28:48 <fizzie> Vorpal: I've seen it called both PST and PHT; "TZ=Asia/Manila date" seems to give times in PHT.
23:28:54 <Vorpal> <fizzie> Subtracted eight hours, it's 1322755200;
23:29:00 <Vorpal> which is the one I used
23:29:12 <Vorpal> myndzi: so it is subtract then
23:29:21 <Vorpal> assuming fizzie didn't miscalculate it
23:29:39 * myndzi composes unambiguous proof
23:29:40 <HalfTauRSquared> ...
23:29:44 <fizzie> Vorpal: It's a midnight all right. It's not going to be midnight "today" as "today" is measured in Manila; but "add eight hours" is not going to be a midnight at all.
23:29:48 <Vorpal> HalfTauRSquared: hi, who are you?
23:29:59 <Vorpal> fizzie: exactly
23:30:01 <myndzi> wait, i may have a simple explanation
23:30:02 <HalfTauRSquared> wikipedia:User:PiRSquared17
23:30:13 <Phantom_Hoover> <Vorpal> fizzie: what is the local timezone for PH?
23:30:18 <Phantom_Hoover> GMT, I keep telling you FFS.
23:30:18 <fizzie> (Well, it's "midnight today" when "now%86400 + 8*3600" is less than 86400.)
23:30:26 <Vorpal> HalfTauRSquared: but you are new in this channel? Just not someone who changed nick?
23:30:26 <myndzi> UTC local time at the meridian is the same as Manila local time in manila, correct?
23:30:36 <HalfTauRSquared> Longtime reader of esolang wiki
23:30:43 <Vorpal> HalfTauRSquared: and in this channel?
23:30:59 <HalfTauRSquared> only twice before
23:31:03 <Vorpal> ah
23:31:20 <myndzi> i can do it in three statements :)
23:31:21 <HalfTauRSquared> `log <PiRSquared>
23:31:23 <Vorpal> HalfTauRSquared: so why are you here? Surely not for esolang discussions? This channel is seldom on topic
23:31:27 <HackEgo> 2011-11-25.txt:00:19:46: <PiRSquared> @tell PiRSquared17 hi
23:31:37 <myndzi> 1) UTC local time at the meridian is the same as Manila local time in manila: agree?
23:31:52 <fizzie> I don't understand what that means.
23:31:54 <Vorpal> myndzi: "UTC local time" is not a concept that makes sense
23:31:58 <Vorpal> please clarify it
23:31:59 <HalfTauRSquared> Someone almost banned me for doing [+.]
23:32:09 <HalfTauRSquared> * +[+.]
23:32:15 <myndzi> ok
23:32:19 <myndzi> let's say GMT
23:32:20 <HalfTauRSquared> err... +[.+]
23:32:30 <myndzi> GMT = UTC for this discussion, good?
23:32:35 <Vorpal> myndzi: GMT is a specific timezone located in UK
23:32:40 <myndzi> i don't remember the difference or if GMT is affected by DST etc.
23:32:42 <Vorpal> how is it local time?
23:32:42 <myndzi> ok, well
23:32:51 <myndzi> somewhere on this earth
23:32:55 <myndzi> UTC is equal to local time
23:32:58 <pikhq_> myndzi: "GMT local time" is a bit like saying "Integer non-integer"
23:33:01 <myndzi> somewhere near grenwich, right?
23:33:08 <Phantom_Hoover> pikhq_, no.
23:33:10 <Phantom_Hoover> No it isn't.
23:33:11 <Vorpal> which earth is "this" earth?
23:33:14 <myndzi> ...
23:33:18 <myndzi> now you're just trollin ;)
23:33:18 <elliott> <HalfTauRSquared> Longtime reader of esolang wiki
23:33:19 <elliott> <HalfTauRSquared> only twice before
23:33:19 <Vorpal> :P
23:33:19 <elliott> HalfTauRSquared: ?
23:33:21 <Phantom_Hoover> GMT is explicitly the local time at the Greenwich meridian.
23:33:21 <Vorpal> myndzi: yes
23:33:28 <myndzi> i'm trying to find a common point we can proceed logically from
23:33:37 <fizzie> myndzi: Before you get into it, can you explain this for us:
23:33:38 <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 - 8*3600 ))
23:33:38 <fizzie> Fri Dec 2 00:00:00 PHT 2011
23:33:38 <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 + 8*3600 ))
23:33:38 <fizzie> Fri Dec 2 16:00:00 PHT 2011
23:33:44 <pikhq_> Phantom_Hoover: s/local time/mean solar time/
23:33:54 <HalfTauRSquared> `log PPiiRRSSqquuaarreedd
23:33:57 <myndzi> ok. so can we agree that the unix timestamp is defined as UTC, and UTC is the same as local time in greenwich?
23:33:58 <Vorpal> myndzi: I find fizzie's calculations there pretty good proof he is right
23:33:58 <HackEgo> 2011-11-24.txt:22:37:28: <HalfTauRSquared> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
23:34:06 <pikhq_> "local time" usually refers to the locally defined civil time.
23:34:07 <Vorpal> but you might need to add another day
23:34:16 <pikhq_> myndzi: There is not a bijection between UTC time and Unit time.
23:34:32 <Vorpal> myndzi: only half time of the year
23:34:32 <pikhq_> Unix, even.
23:34:35 <myndzi> ?
23:34:40 <myndzi> bijection wut, unit time wut?
23:34:42 <myndzi> oh
23:34:43 <Vorpal> myndzi: and there are leap seconds
23:34:45 <myndzi> unix*
23:34:54 <myndzi> oh christ. let's make the unit minutes then
23:34:55 <elliott> pikhq_: I don't think you're clearing matters up any.
23:35:03 <Vorpal> myndzi: unix minutes
23:35:04 * elliott would like to see myndzi explain fizzie's simple example too.
23:35:05 * myndzi would like to see elliott explain fizzie's simple example too.
23:35:13 <pikhq_> A %86400=0 Unix time refers to two distinct UTC times.
23:35:18 <Phantom_Hoover> <myndzi> ok. so can we agree that the unix timestamp is defined as UTC, and UTC is the same as local time in greenwich?
23:35:26 <Vorpal> no
23:35:29 <myndzi> for the purpose of this discussion, timezone increments are all that matter
23:35:33 <myndzi> and leap seconds will not affect that
23:35:35 <Phantom_Hoover> No, because local time in Greenwich observes BST, while UTC does not.
23:35:54 <pikhq_> And there's only a loose correlation between UTC and GMT, and yes, local time in Greenwich isn't even GMT.
23:35:56 <myndzi> alright,
23:35:58 <fizzie> myndzi: What's there to explain in my example? It outputs the two "clamped to midnight and then subtracted/added 8 hours" timestamps in Manila time.
23:36:10 <fizzie> And the subtracted one happens to be a midnight.
23:36:37 <myndzi> fizzie: i know that the math in your example doesn't work. i know that the explanation i am trying to give is correct. i haven't taken the time to analyze why your specific line of code is producing results that appear to be correct but are not
23:36:49 <myndzi> i can only assume that you are asking the wrong question, getting a correct answer to that question, and assuming the question is correct
23:36:52 <Vorpal> oh come on
23:36:57 <elliott> "Your counterexamples will fall under the divine weight of me telling you I'm right!"
23:37:01 <myndzi> hardly
23:37:02 <fizzie> It's one line of code: it's not much to analyze.
23:37:02 <Phantom_Hoover> What is your question anyway.
23:37:06 <Vorpal> elliott: pretty much yeah .D
23:37:07 <Vorpal> :D*
23:37:08 <Ngevd> :t (,)
23:37:09 <lambdabot> forall a b. a -> b -> (a, b)
23:37:14 <elliott> fizzie: TWO lines of code, actually!
23:37:16 <myndzi> i've been trying to give you guys a simple explanation for liek 20 minutes
23:37:17 <Phantom_Hoover> It seems to be "I don't understand basic arithmetic, neither does anyone else."
23:37:18 <elliott> It's easier to just repeat yourself.
23:37:27 <Ngevd> That isn't a real function.
23:37:28 <myndzi> and you've been so pedantic that i can't even find a starting point ;)
23:37:41 <myndzi> in that mess, i don't want to muddy the waters by analyzing something else in the middle of it
23:37:52 <myndzi> please just work with me and then point out where my logic is incorrect?
23:37:54 <Ngevd> Huh
23:37:56 <Vorpal> myndzi: give us the simple calculations demonstrating you are right
23:38:00 <Phantom_Hoover> <Ngevd> That isn't a real function.
23:38:02 <Vorpal> myndzi: that is all the will work
23:38:03 <pikhq_> myndzi: With time, you have two choices: be pedantic or wrong. :)
23:38:04 <Phantom_Hoover> It's a type constructore.
23:38:18 <Ngevd> It's handy and convinient
23:38:32 <Vorpal> > (,) 1 2
23:38:32 <lambdabot> (1,2)
23:38:35 <Vorpal> yeh
23:38:37 <Vorpal> yeah*
23:38:39 <Ngevd> For I am making an Eodermdrone interpreter!
23:38:42 <Vorpal> seems real enough to me
23:38:53 <elliott> Ngevd: No you're not. Many have claimed to.
23:38:54 <myndzi> 1) UTC is not affected by daylight savings time, leap seconds and the like don't interfere with our discussion of time zones, and Manila local time is not affected by DST either
23:38:56 <myndzi> agree?
23:38:57 <elliott> Nobody has; nobody will.
23:39:00 <Phantom_Hoover> *constructor
23:39:09 <pikhq_> myndzi: No.
23:39:09 <Phantom_Hoover> elliott, why not?
23:39:23 <Phantom_Hoover> Haven't we established that it's manifestly possible, just quite hard.
23:39:26 <myndzi> no why?
23:39:31 <Ngevd> s/making/attempting to make/
23:39:34 <elliott> Phantom_Hoover: It is the Curse.
23:39:40 <Vorpal> <myndzi> 1) UTC is not affected by daylight savings time, leap seconds and the like don't interfere with our discussion of time zones, and Manila local time is not affected by DST either
23:39:43 <Vorpal> myndzi: wrong
23:39:43 <elliott> fizzie: I'm still interested in getting to the bottom of this, if you still have it in you.
23:39:58 <Vorpal> myndzi: Asia/Manila had DST up until 1978
23:40:10 <myndzi> we aren't talking about the past, we are talking about the present
23:40:11 <Phantom_Hoover> You need to unravel the Ulman algorithm for the subgraph isomorphism problem from that utterly awful paper.
23:40:25 <Phantom_Hoover> Vorpal, you realise that the words 'is' and 'was' have distinct meanings, right?
23:40:38 <myndzi> please consider all statements to be in the context of standards presently being followed in the relevant locations
23:40:42 <Vorpal> Phantom_Hoover: I took is as time independent here.
23:40:42 <myndzi> does that cake care of it for you?
23:40:52 <Vorpal> hm
23:41:06 <Vorpal> myndzi: then sure, I'm okay with it
23:41:13 <myndzi> ok.
23:41:20 <Vorpal> I'll wait for the problem pikhq_ is having with it
23:41:28 <myndzi> guess i will too
23:41:44 <Vorpal> pikhq_: spit it out
23:41:49 <pikhq_> myndzi: Unless the *only* thing you want to do is get a UNIX time stamp mapping to the midnight in Manila local time.
23:42:03 <Vorpal> pikhq_: pretty sure that is what he want yes
23:42:05 <myndzi> that is precisely what i want to do
23:42:19 <myndzi> (and am doing)
23:42:22 <pikhq_> Then hack away, but realise what you're doing would be *infinitely* better handled by language libraries.
23:42:43 <myndzi> i already covered that part. it's the question that's interesting, not the crutch of a solution
23:43:03 <myndzi> 2) manila local time is UTC + 8 hours
23:43:05 <myndzi> agree?
23:43:15 <pikhq_> Presently it is defined as such, yes.
23:43:16 <myndzi> i'm using 'manila local time' so as to avoid confusion by saying PST
23:43:29 <Sgeo> I wonder if I could model LSL programs as though some statements were in fact in an IO monad
23:43:40 <myndzi> 3) therefore, whatever time it is in UTC, that value plus 8 is the same time as manila local time
23:43:45 <myndzi> agree?
23:43:46 <Vorpal> myndzi: no
23:44:04 <myndzi> no why?
23:44:14 <HalfTauRSquared> Can an admin protect http://esolangs.org/w/index.php?title=Excela&curid=1863&action=history ?
23:44:21 <Vorpal> hm... or maybe *checks*
23:44:30 <elliott> HalfTauRSquared: no, they'll move on to another page if that is done
23:44:35 <elliott> that's what those spambots do
23:44:38 <myndzi> i basically restated #2
23:44:40 <Ngevd> Who is paying these spambot makers?
23:44:48 <elliott> I think fizzie gave up. :(
23:44:50 <myndzi> we can look at this another way
23:44:53 <pikhq_> myndzi: Yes, one does add 8 to UTC to get the Manila local time.
23:44:55 <Vorpal> myndzi: well okay
23:44:58 <myndzi> let's look at it like an equation
23:44:59 <Vorpal> indeed
23:45:03 <pikhq_> And one subtracts 8 from Manila local time to get UTC.
23:45:07 <Vorpal> indeed
23:45:10 <myndzi> UTC + 8 = manila local time
23:45:33 <myndzi> humantime(UTC + 8) = humantime(manila local time)
23:45:34 <pikhq_> Thus, 00:00:00 UTC+8 is the same as 16:00:00 UTC
23:45:43 <Vorpal> myndzi: define humantime
23:45:45 <elliott> myndzi: Are you still insisting that we're saying that your formula does not produce Manila midnights?
23:45:47 <elliott> Because it certainly does, always.
23:46:06 <fizzie> "Clip to midnight, add eight hours" does not.
23:46:06 <myndzi> humantime is just the time of day
23:46:09 <myndzi> such as
23:46:18 <myndzi> noon, 2:00, whatever
23:46:29 <Vorpal> useless definition, but whatever
23:46:37 -!- GreaseMonkey has joined.
23:46:41 <myndzi> unixtimestamp(2:00 UTC) + 8 = unixtimestamp(2:00 manila local)
23:46:42 <Vorpal> I use unix times in my daily life of course
23:46:43 <myndzi> how about that
23:46:52 <HalfTauRSquared> i dollars to anyone who generalizes this so it works with the moons of Jupiter
23:46:53 <Vorpal> myndzi: no?
23:47:00 <myndzi> think about it.
23:47:08 <Vorpal> myndzi: <fizzie> "Clip to midnight, add eight hours" does not.
23:47:36 <pikhq_> myndzi: No, that's unixtimestamp(10:00:08 manila local)
23:47:37 <pikhq_> :P
23:47:54 <myndzi> scuse me, jesus christ
23:47:56 <myndzi> give me a name
23:47:59 <myndzi> for a function
23:48:00 <HalfTauRSquared> John
23:48:06 <Vorpal> Hubert
23:48:10 <elliott> fizzie: Yes it does?
23:48:20 <elliott> fizzie: Manila local time = UTC+8; UTC midnight + 8 = Manila midnight.
23:48:21 <fizzie> elliott: No, it doesn't.
23:48:27 <elliott> Wait, am I wrong too now?
23:48:29 <Vorpal> <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 - 8*3600 ))
23:48:29 <Vorpal> <fizzie> Fri Dec 2 00:00:00 PHT 2011
23:48:29 <Vorpal> <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 + 8*3600 ))
23:48:29 <Vorpal> <fizzie> Fri Dec 2 16:00:00 PHT 2011
23:48:29 <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 - 8*3600 ))
23:48:29 <fizzie> Fri Dec 2 00:00:00 PHT 2011
23:48:30 <fizzie> fis@eris:~$ now=`date +%s`; TZ=Asia/Manila date --date=@$(( now - now%86400 + 8*3600 ))
23:48:30 <fizzie> Fri Dec 2 16:00:00 PHT 2011
23:48:38 <elliott> Oh, yes, right.
23:48:38 <Vorpal> those calculations are still accurate
23:48:48 <elliott> Right, yes, I'm an idiot.
23:48:52 <elliott> It's - 8, obviously.
23:49:00 <elliott> God, this is a trainwreck of embarrassment.
23:49:02 <fizzie> elliott: And I didn't give up: I just wrote http://p.zem.fi/3uti.c which actually does the conversation he wanted, the Manila midnight for the current "today" in Manila. (Pure "clamp to midnight, subtract eight" may go one day too far back.)
23:49:08 <Vorpal> myndzi: see those calculations or shut up
23:49:13 <Phantom_Hoover> oerjan, the 3-body problem is solvable for specific cases, right?
23:49:13 <elliott> fizzie: You expect him to believe you?
23:49:15 <fizzie> $ TZ=Asia/Manila ./test
23:49:16 <fizzie> 1322841600 = Sat Dec 3 00:00:00 2011
23:49:19 <fizzie> elliott: Not really, no.
23:49:19 <Phantom_Hoover> i.e. has a closed form.
23:49:25 <HalfTauRSquared> @pl \(x, y, z) -> (x, z)
23:49:26 <fizzie> elliott: I mean, it's even more lines of code.
23:49:26 <lambdabot> (line 1, column 7):
23:49:26 <lambdabot> unexpected ","
23:49:26 <lambdabot> expecting letter or digit, operator or ")"
23:49:26 <lambdabot> ambiguous use of a non associative operator
23:49:38 <HalfTauRSquared> @pl let f (x, y, z) = (x, z) in f
23:49:39 <lambdabot> (line 1, column 12):
23:49:39 <lambdabot> unexpected ","
23:49:39 <lambdabot> expecting letter or digit, operator or ")"
23:49:39 <lambdabot> ambiguous use of a non associative operator
23:49:45 <HalfTauRSquared> ...
23:49:50 <Vorpal> fizzie: p.zem.fi is super-slow over ipv6
23:49:53 <elliott> HalfTauRSquared: lambdabot responds to /msg
23:50:14 <fizzie> Vorpal: Ah, it could well be broken.
23:50:15 <myndzi> i don't understand your bash shell language, unlike you guys i have fairly little esoteric language experience
23:50:20 <Vorpal> fizzie: and over ipv4 too actually...
23:50:21 <myndzi> i just like to see the interesting things you talk about
23:50:28 <myndzi> so i have no idea what that line of code is supposed to be doing
23:50:36 <elliott> myndzi: It's C, dude.
23:50:38 <elliott> http://p.zem.fi/3uti.c <-- C code.
23:50:41 <myndzi> not in enough technical detail to determine if it is what i want or not
23:50:42 <Ngevd> Are all three Sopio decks + expansion packs worth 30
23:50:44 <Ngevd> ?
23:50:47 <myndzi> ah, i was talking about the pastes above
23:50:50 <pikhq_> myndzi: It's fairly simple. now=`date +%s` sets "now" to the UNIX time stamp.
23:50:57 <Vorpal> $ ping p.zem.fi
23:50:57 <Vorpal> PING momus.zem.fi (83.150.124.64) 56(84) bytes of data.
23:50:57 <Vorpal> ^C
23:50:57 <Vorpal> --- momus.zem.fi ping statistics ---
23:50:57 <Vorpal> 30 packets transmitted, 0 received, 100% packet loss, time 29232ms
23:50:59 <Vorpal> fizzie: ^
23:51:07 <Ngevd> The answer should be one of "What's Sopio?" and "Hellz yeah!"
23:51:14 <pikhq_> myndzi: TZ=Asia/Manila date --date=@ will return the Manila local time corresponding to a UNIX time stamp.
23:51:18 <Vorpal> fizzie: same over ipv4
23:51:28 <myndzi> well there you go
23:51:37 <myndzi> you're not doing all the math, part of it is being converted by the system
23:51:54 <fizzie> myndzi: now=`date +%s`; sets $now to current Unix timestamp. $(( now - now%86400 - 8*3600 )) just calculates the expression: now - now%86400 - 8*3600, "clamp to midnight and subtract eight hours". And then that is converted back from Unix timestamp into Manila local time.
23:51:55 <pikhq_> myndzi: $(( now - now%86400 - 8*3600 )) takes the UNIX time stamp, clamps it to midnight, and subtracts 8 hours from that.
23:52:12 <myndzi> i assume that 'now' in --date=etc. is manila local time, in which case subtracting 8 does indeed give you UTC
23:52:28 <pikhq_> myndzi: The "now" is *THE CURRENT UNIX TIME STAMP*.
23:52:32 <elliott> fizzie: Surely you should stop talking about the bash and focus on the C, which there can be no ridiculous disagreements about.
23:52:36 <myndzi> er, scuse me
23:52:40 <fizzie> No, 'now' is a Unix timestamp. There's no "Unix timestamp in Manila local time", such a thing does not exist.
23:52:56 <myndzi> ok look
23:52:59 <fizzie> elliott: I'm really not sure that it helps, especially since it doesn't do the same simple illustration but a more complex thing.
23:53:01 <myndzi> to localize time to some location
23:53:02 -!- copumpkin has quit (Quit: Leaving...).
23:53:09 <myndzi> you take the UTC value and add or subtract some number
23:53:10 <myndzi> yes?
23:53:19 <myndzi> that value represents local time in that location
23:53:26 <Vorpal> I'm giving up at this point. He will discover it when the people over there starts complaining....
23:53:28 <myndzi> what the fuck do you call that value to unambiguously refer to it?
23:53:39 <elliott> fizzie: I think every time you get close to an understanding myndzi is just going to reset the "conversation".
23:53:40 <fizzie> I don't think I've ever done such a thing.
23:53:41 -!- copumpkin has joined.
23:53:57 <fizzie> I mean, you have Unix timestamps, and then you have local times, the latter which have a timezone associated with them.
23:54:02 <fizzie> And then functions to convert between them.
23:54:13 <myndzi> sure. but you have human-readable time formats (month day year hour minute second)
23:54:23 <myndzi> and you have bigass multi digit integers
23:54:58 <pikhq_> myndzi: Look: now=`date +%s` fetches the UNIX time, which is the same regardless of what time zone you're in. $(( now - now%86400 - 8*3600) clamps that UNIX time to the UTC midnight, and subtracts 8 hours from it. date --date=@ renders that UNIX time stamp in Manila local time.
23:55:14 <fizzie> I suppose you *can* add an offset to a Unix timestamp and then manually convert that to local time in some timezone using integer % and / manually, but that sounds like an easy place to make mistakes.
23:55:28 <pikhq_> Well, in "local time"; TZ=Asia/Manila makes it Manila local.
23:55:38 <pikhq_> Thus: fizzie's calculations are correct.
23:56:17 <myndzi> it's pretty weird then, that when i used that exact formula, it wasn't correct until 4pm my time which is 8am manila time
23:56:43 <myndzi> i give up, i'm just making an ass of myself at this point and you guys are too certain to consider anything i say, if i could ever manage to use words that you would except to have the meaning i intend
23:56:48 <myndzi> enjoy your day, i'll stop shitting it up
23:56:48 <fizzie> I have to point out (for the umpteenth time) that the Manila midnight you get from that will not going to be the current midnight for "today" in Manila, since it may end up subtracting more than a day.
23:57:10 <elliott> myndzi: Speaking for myself, the only way this day is going to get un-shitted up is by reaching an agreement.
23:57:37 <myndzi> then i will have to consider extremely carefully, check myself more (even though i've been at this for two days), and come back with something you can't argue with
23:57:44 <pikhq_> myndzi: That's quite weird considering fizzie's work is time zone independent. :)
23:58:00 <myndzi> i will have to explicitly define my terms and what i want to accomplish
23:58:04 <myndzi> because the misunderstanding may lie there
23:58:15 <myndzi> so give me a bit and i'll see if i can do that satisfactorily
23:58:16 <pikhq_> The only time zone dependent portion is the "output the resulting UNIX time as Manila time" bit.
23:59:39 <fizzie> myndzi: For the umpteenth+1 time, though, what I did up there is not what you want to accomplish, it's not the "Manila midnight for 'today' in Manila". It's going to be a Manila midnight, but it can be for the preceding day. But adding 8 hours will be a Unix timestamp corresponding to Manila 4pm, not midnight, even though it might (at least for part of the day) fall into the correct day.
23:59:45 <Vorpal> pikhq_: and using 8 there. As opposed to 9 for example
2011-12-03
00:02:40 <fizzie> And obviously we don't know about the rest of the system, what you do with the Unix-timestamp-corresponding-to-the-most-recent-Manila-midnight-that-has-already-happened.
00:02:50 <elliott> :t (**)
00:02:51 <lambdabot> forall a. (Floating a) => a -> a -> a
00:02:58 <pikhq_> Hmm. Let's put this vaguely algebraically: Manila = UTC + 8 hours. Now, if you have the UTC time 12:00 and want that in Manila time, you add 8 hours. If you have the Manila time 12:00 and want that in UTC time, you subtract 8 hours (obviously).
00:03:17 <Vorpal> fizzie: looks like Dagoth-Ur showed up in Arena too
00:03:31 <pikhq_> Hrm. That's not quite helping...
00:03:35 <pikhq_> Lessee.
00:04:29 <fizzie> pikhq_: The simplest prose-style explanation I can make for the "clamp to midnight, subtract eight" rule is: "clamp to midnight" represents UTC 00:00:00; after you subtract eight hours, it represents UTC 16:00:00; any UTC 16:00:00 time will be a Manila 00:00:00, because it's UTC+8.
00:04:42 <pikhq_> fizzie: Right, that's a bit better.
00:04:52 <pikhq_> myndzi: ^
00:04:58 <fizzie> But I did try that out earlier and it didn't help, so it probably won't now, either.
00:05:41 <Phantom_Hoover> Jesus are you still explaining counting to myndzi.
00:08:29 -!- oerjan has quit (Quit: Clearly you are doomed, good night.).
00:09:12 <fizzie> Anyway, if you look at Manila time of 04:00, the corresponding UTC time is 20:00 (subtract eight hours). When you clamp to midnight, you're subtracting 20 hours; so the UTC midnight will be Manila time 04:00-(20 hours) = 08:00. You will need to subtract 8 hours from that to get a midnight in Manila. (But it will be the midnight of the previous day, because you will be subtracting a total of 28 hours.)
00:10:21 <fizzie> For Manila 12:00, corresponding UTC is 04:00. Clamp to midnight means subtracting 4 hours. That UTC midnight is Manila time 08:00. Again, you will need to subtract 8 hours to get a midnight in Manila, and will end up subtracting a total of 12 hours, and you get the midnight of "today" in Manila.
00:12:26 <fizzie> In fact, any UTC midnight is going to always be 08:00AM in Manila, that's what UTC+8 means. If you want a midnight in Manila, you must subtract eight hours, or add 16.
00:13:36 <elliott> myndzi: *drumroll*
00:13:43 <elliott> (THIS IS EXCITING OKAY)
00:14:14 <myndzi> i'm writing. be patient
00:14:21 <elliott> :'(
00:14:44 <fizzie> I'm not going to be awake to see how this ends, sadly; it's past 02am here.
00:14:54 <myndzi> there'll be a link for you tomorrow
00:14:55 <myndzi> :)
00:15:04 <myndzi> sorry for the frustration i've caused, thank you for your efforts
00:15:09 * elliott awaits eagerly.
00:16:52 <fizzie> (It is 02:15AM here in UTC+2. Currently it's 00:15AM in UTC. If you do a "clamp to UTC midnight" operation, you will subtract 15 minutes, so that time in my timezone will be 02:00AM. You'll need to subtract 2 more hours to get a local midnight. Substitute 8 for 2 for Manila. Sorry, couldn't resist.)
00:18:11 <elliott> :D
00:19:02 <fizzie> (Current Unix timestamp is about 1322871375. 1322871375%86400 = 975, about 16 minutes. If you subtract that from current time, it's about 02am here. You will need to subtract further two hours from the Unix timestamp to get a Unix timestamp value that corresponds to our midnight. Sorry, couldn't resist that either.)
00:19:06 <fizzie> Okay, seriously. ->
00:22:32 <fizzie> (When the time was "today, 01:00am" here in Finland, it was 23:00 in UTC. If you clamped that timestamp to previous UTC midnight, you'd end up subtracting 23 hours, leading to "yesterday, 02:00am". Then you could subtract two more hours to get a local midnight, but it would be "yesterday, 00:00", a day earlier than you wanted. This might explain the issues you mentioned.)
00:22:38 <fizzie> Seriously for reals now. ->
00:22:39 -!- derdon has quit (Remote host closed the connection).
00:26:27 <elliott> myndzi: I think fizzie is trolling you.
00:28:55 <fizzie> (If it was "today, 01:00am" here, and you wanted to round to local midnight, you could (I'm not sure I would): add two hours to the timestamp, so you'd have a Unix timestamp that'd translate to UTC 01:00am; a different instant in time, yet same in local time. Then clamp to UTC midnight, which would end up subtracting the "proper" one hour. Then you would reverse the initial "time zone conversion" by subtracting two hours, and end up with local "today, 00:00", U
00:28:55 <fizzie> TC. That sort of thing would work, though the idea of having Unix timestamps that represent time instants that have the "local time" value when converted-to-display-as-UTC is a bit iffy. But if you're doing something like that, it does work.)
00:29:06 <fizzie> No, maybe some of that stuff might actually help.
00:29:27 <fizzie> I mean, after talk of "timestamps in local time", it's not inconcievable it could be something like that.
00:30:28 <elliott> fizzie: Hi.
00:32:21 <fizzie> (But I'm still pretty sure if you just get current time() value, round to previous multiple of 86400, then; (a) subtracting K hours will give a local midnight in the UTC+K timezone, but it could be the "wrong" midnight; and (b) adding K hours will not give a local midnight, assuming K is not 12; at least as long as the resulting value is treated as a real Unix timestamp and converted to local time properly.)
00:32:28 <fizzie> Okay, maybe I really should go.
00:32:53 <HalfTauRSquared> `finger
00:32:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: finger: not found
00:33:00 <HalfTauRSquared> ...
00:33:39 <elliott> What does "..." even mean? You say it so often.
00:34:09 -!- DCliche has joined.
00:34:57 <HalfTauRSquared> ellipsis
00:35:21 <elliott> That's not what it means, that's what it is.
00:35:33 <HalfTauRSquared> In this case,
00:35:40 <HalfTauRSquared> why doesn't finger exist?
00:35:44 * Phantom_Hoover → sleep
00:35:47 -!- Phantom_Hoover has quit (Quit: Leaving).
00:35:55 <elliott> 'Cause it's not installed?
00:35:58 <elliott> $ finger
00:35:59 <elliott> bash: finger: command not found
00:37:38 -!- Ngevd has quit (Ping timeout: 252 seconds).
00:37:40 <fizzie> (Also even after all this thinking, if I were making a "production" system, I'd seriously consider testing my thing at Manila local times of 04:00, 12:00 and 20:00, and checking that mycode(now()) approximately equals now()-4*3600, now()-12*3600 and now()-20*3600, respectively. Assuming now() returns current Unix timestamp, and mycode() is supposed to return a Unix timestamp corresponding to local midnight.)
00:37:41 -!- Klisz has quit (Ping timeout: 255 seconds).
00:37:48 <HalfTauRSquared> `log \.\.\.
00:37:53 <HackEgo> 2010-10-22.txt:21:21:13: <elliott> pikhq: Sure, neither of us can watch that, but...
00:38:15 <elliott> fizzie: Having fun are we?
00:38:23 <fizzie> elliott: So much!
00:48:18 -!- GreaseMonkey has quit (Quit: The Other Game).
00:48:27 <elliott> fizzie: I hope you're not still here.
00:50:32 <fizzie> Nooo...
00:51:52 -!- elliott has quit (Remote host closed the connection).
00:52:47 -!- elliott has joined.
00:53:09 <elliott> fizzie: Keep not being here, then.
00:53:22 <elliott> fizzie: (But I don't think myndzi is still here.)
00:54:11 -!- HalfTauRSquared has changed nick to PiRSquared17.
00:58:07 <fizzie> But I'm unsure why not: 1. Get current Unix timestamp. 2. Convert timestamp into a broken-down structure with 'year', 'month', 'day', 'hour', 'min', 'sec' members in timezone of interest; pretty much any language can do that. 3. Set hour = min = day = 0. 4. Convert structure to Unix timestamp. 5. Use result for DB query.
00:58:19 <fizzie> So simple there's no many places to go wrong; is easy to change the target timezone; and (major win?) works also for the large parts of the world that do the stupid DST thing, even during the changeover days.
00:58:33 <fizzie> Except I mean hour = min = sec = 0.
00:58:43 <fizzie> Seconds, days, who cares.
00:59:15 <elliott> fizzie: I think it's because it looks like WHERE foo > ((bar - nonsense) + lol).
00:59:41 <elliott> So it'd be either (a) actually learning SQL's trivial timezone facilities (which would take 5 minutes, as opposed to the 2 days invested so far; clearly unworkable, this is the Easiest Way) or (b) another round-trip.
00:59:51 <fizzie> I... guess it could be that.
01:00:05 <elliott> fizzie: Well, *he* claims it's because he doesn't know much SQL.
01:00:50 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
01:01:31 <elliott> fizzie: How does one go from an SDL_Surface to its PixelFormat :P
01:01:33 <fizzie> If it's a programming language doing the thing, it doesn't need SQL. Though I suppose it could be that it's just a fixed query without parameters or something.
01:01:51 <fizzie> Uh, maybe you needed to lock it first?
01:01:56 <elliott> fizzie: Well, what I meant is that foo and bar are both columns.
01:01:59 <elliott> nonsense and lol being constants.
01:02:08 <elliott> Also, eh?
01:02:55 <fizzie> The PixelFormat for the screen surface might be allowed to change. Maybe. Well, maybe not.
01:03:24 <elliott> fizzie: Yes, but how do I get at it?
01:04:43 <fizzie> Uh, surface->format?
01:05:01 <elliott> fizzie: Hmm. A thing that seems to be gleefully unexposed through the Haskell binding. I swear I've solved this problem before.
01:05:15 <fizzie> Ah, right, the binding.
01:05:25 <fizzie> I vaguely recall something about it too.
01:05:27 <elliott> If only I remembered how.
01:05:31 <elliott> Maybe I'll gerp.
01:05:32 <elliott> grep.
01:05:41 <elliott> Someone make a grep alterantive called gerp, that won't be confused at all.
01:05:44 <elliott> So many tpyosk.
01:07:25 <fizzie> surfaceGetPixelFormat :: Surface -> PixelFormat
01:07:46 <fizzie> From the docs of Graphics.UI.SDL.Types.
01:08:29 <elliott> Oh.
01:08:31 <elliott> That might work. :p
01:08:42 <elliott> fizzie: (A pure function...?)
01:09:08 <fizzie> Yeah, that's a bit funny.
01:09:32 <fizzie> surfaceGetPixelFormat surface
01:09:32 <fizzie> = unsafePerformIO $
01:09:33 <fizzie> withForeignPtr surface $ \ptr ->
01:09:33 <fizzie> newForeignPtr_ =<< (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
01:09:39 <fizzie> Yeah, real pure.
01:10:04 <elliott> fizzie: Well, there's nothing wrong with that for immutable fields.
01:10:12 <elliott> You just said it could change is all.
01:10:22 <fizzie> I guess it doesn't.
01:10:36 <fizzie> After all, setvideomode returns a new screen surface.
01:10:46 <elliott> Right.
01:11:05 <elliott> Now to figure out why SDL-gfx circles are cyan despite being drawn with a white colour.
01:11:06 <fizzie> It is "read-only" in the SDL_Surface struct doc.
01:11:21 <elliott> I have a feeling the answer may be very 90s.
01:12:22 <fizzie> ARGB <-> RGBA sort of mishaps can easily get cyan, but I guess there were mapping functions that took a PixelFormat.
01:12:54 <elliott> white <- SDL.mapRGB (SDL.surfaceGetPixelFormat surf) 255 255 255
01:12:54 <elliott> SDLP.box surf (SDL.Rect 10 10 10 10) white
01:13:01 <elliott> is what it looks like now after changing circles to boxes :P
01:13:20 <elliott> Which generates a single cyan pixel. *sign* :/
01:13:34 <fizzie> Well, that certainly looks like it should be someone else's problem to make work right.
01:14:21 <fizzie> Maybe the lazy language made libSDL lazy too, and it couldn't be arsed to fill more bytes.
01:14:26 <elliott> Heh.
01:14:31 <elliott> Well, SDL-gfx is nothing "official", is it?
01:14:42 <elliott> All these things are so dormant because nobody actually does software rendering in 2011.
01:14:53 <elliott> And if they do they don't use wuss drawing libraries to do it.
01:16:34 <Vorpal> fizzie: ARGB?
01:16:38 <Vorpal> someone uses that?
01:16:39 <Vorpal> why?
01:17:13 <fizzie> Why's mapRGB 'IO Pixel' anyway? I don't think PixelFormat structures ever change. (Though don't quote me on that.) ((Actually, come to think of it, the palettes probably are mutable.))
01:17:23 <fizzie> Vorpal: I don't think it's any mor
01:17:31 <Vorpal> fizzie: any mor?
01:17:31 <fizzie> e unnatural than RGBA.
01:17:33 <Vorpal> ah
01:17:34 -!- zzo38 has joined.
01:17:49 <Vorpal> fizzie: RBGA is just the normal way of doing it though afaik
01:17:55 <Vorpal> elliott: I believe people mostly use sdl to get a opengl context these days, and sound of course
01:18:11 <fizzie> Also you get to write 0xaabbcc without having to add an explicit 00 if you don't-care about alpha.
01:18:20 <Vorpal> heh
01:18:54 <elliott> Vorpal: Sound? OpenAL these days, surely.
01:19:06 <Vorpal> fizzie: nevertheless, ARGB is seldom seen when drawing stuff. Maybe in file formats? I don't know.
01:19:23 <fizzie> It's all /Open.L/ nowadays.
01:19:29 <Vorpal> elliott: iirc openal is great for 3D sound, with positioning and such
01:19:43 <Vorpal> elliott: but make it rather complicated to play, say, a stereo sound track
01:19:55 * elliott is planning to use OpenAL for AII, and that's 2D.
01:20:01 <Vorpal> mhm
01:20:12 <fizzie> Vorpal: And of course in-memory it may easily end up being ABGR or BGRA if you read it byte-orientedly.
01:20:13 <elliott> Mostly because some of that positioning stuff is relevant, if only to make further away sounds quieter.
01:20:25 <Vorpal> fizzie: heh
01:20:46 <Vorpal> fizzie: is that for little or big endian?
01:21:11 <Vorpal> fizzie: but stuff like opengl does it as GLfloat[4] basically
01:22:10 <fizzie> The pixel buffers still have a format. But I suppose you normally aren't supposed to actually play with those bytes.
01:22:46 <Vorpal> fizzie: you generally just send them along in buffer objects and such
01:23:06 <elliott> Honestly, all I want to do is animate some circles going around each other.
01:23:10 <elliott> Maybe I can use that gloss thing.
01:23:21 <Vorpal> elliott: putpixel :P
01:23:27 <elliott> Vorpal: From Haskell?
01:23:30 <elliott> Rather slow.
01:23:31 <Vorpal> elliott: ouch
01:23:44 <elliott> Haskell's FFI is low-overhead, but not /that/ low-overhead.
01:23:51 <Vorpal> elliott: could you do a real time software ray tracer in haskell?
01:24:03 <elliott> You can't do that with C.
01:24:09 <elliott> At least if realtime involves >10fps.
01:24:12 <Vorpal> elliott: you can for some simple scenes
01:24:24 <Vorpal> I have one that runs in 50 FPS for a plane, two balls and a cone here
01:24:29 <elliott> I'm sure you could do it. Probably not on Unix.
01:24:29 <Vorpal> on my core i8
01:24:30 <Vorpal> err
01:24:31 <Vorpal> i7*
01:24:36 <Vorpal> it is using openmp
01:24:38 <elliott> @ should be able to do ray-tracing just fine.
01:24:41 <Vorpal> elliott: yes on unix
01:24:55 <elliott> Vorpal: "Can Haskell do X in an environment practically designed to work against Haskell in areas such as X?"
01:24:56 <Vorpal> elliott: it is part of a lab at university. We are running it on core i7s there
01:25:09 <Vorpal> elliott: hm?
01:25:19 <elliott> "Hm?"?
01:25:20 <Vorpal> elliott: I'm just saying you can do it in C (actually C++ here...)
01:25:28 <elliott> Sure, so?
01:25:29 <Vorpal> elliott: you said you couldn't do it with C
01:25:57 <elliott> Well, I thought you meant more complex scenes than that.
01:26:01 <Vorpal> ah
01:26:34 <pikhq_> Congrats, you named one of the few areas where the performance of tight, math-heavy loops that fit in cache is still relevant!
01:26:43 <Vorpal> pikhq_: quite :P
01:26:50 * elliott thinks @ will raytrace just fine.
01:26:54 <Vorpal> elliott: but you can to some degree do it on more complex scenes, you just need like way more CPUs :P
01:26:55 <fizzie> I've again forgotten what "Ncon" meant in the "caveats" field of glxinfo. I guess non-conformant, but that's not saying much either.
01:27:02 <elliott> Pure mathematical code is pretty easy to eliminate all the overhead from.
01:27:06 <pikhq_> Which, for perverse reasons, is what most people think of as more general "performance".
01:27:17 <Vorpal> pikhq_: indeed not the case.
01:27:18 <elliott> Just get things unboxed and the loop into an iteration and you're done.
01:27:32 <Vorpal> pikhq_: it is however an area I'm greatly interested in.
01:28:22 <pikhq_> elliott: I'd imagine worst-case scenario you'd have a @lang-subset->verified-safe-machine-code compiler and a way to execute verified-safe machine code.
01:28:29 <elliott> @ might lose where you have a tight loop that involves a lot of operations on things larger than machine words and no allocation.
01:28:39 <Vorpal> pikhq_: ray tracing is interesting. Especially real time ray tracing. Since there is no way we are going to get real time photon mapping (or even further away I believe: real time MLT)
01:28:39 <elliott> There might be some overhead imposed there.
01:28:44 <pikhq_> Or even make that assembly instead of @ lang.
01:28:58 <elliott> pikhq_: Weelll, there's @ll.
01:29:03 <elliott> But that's not really for human consumption.
01:29:13 <pikhq_> Nor is assembly. :)
01:29:25 <elliott> (@ll being an imperative, safe-by-construction language that shares @lang's type system.)
01:29:29 <pikhq_> It's only human-used for perverse edge cases, or for perverse people.
01:29:35 <elliott> (Kind of like LLVM IR, but with things like allocation built in to the language.)
01:29:41 <Vorpal> pikhq_: boot loaders
01:29:46 <Vorpal> pikhq_: demo scene
01:29:49 <elliott> (@lang of course compiles down to @ll.)
01:29:52 <pikhq_> Vorpal: Perverse edge case, perverse people.
01:29:53 <Vorpal> pikhq_: I guess those count as perverse?
01:29:53 <elliott> Vorpal: "perverse edge cases", "perverse people"
01:29:56 <Vorpal> right
01:30:05 <Vorpal> pikhq_: compiler writers?
01:30:11 <Vorpal> for the generating bit
01:30:20 <pikhq_> They're not actually human-writing assembly.
01:30:25 <Vorpal> hm true
01:30:26 <pikhq_> They're human-writing assembly generation.
01:30:31 <elliott> Oh, @ will also lose where you have a tight loop that does allocation, and can deal with a slow allocation, but /cannot/ deal with a GC pause.
01:30:32 <Vorpal> yeah
01:30:57 <elliott> More commonly: @ will lose if you need a loop to not allocate but you can't get the @lang compiler to not allocate there.
01:31:16 <elliott> Although since I can have pluggable GCs, you could run a low-throughput concurrent collector in those situations for that pool.
01:31:19 <elliott> Dunno.
01:31:22 <Vorpal> elliott: how well will @ keep up with hard realtime requirements? I know there aren't a lot of them on PCs. But one case comes to mind if you are interested.
01:31:29 <elliott> Vorpal: Go on,.
01:31:33 <elliott> s/,//
01:32:07 <Vorpal> elliott: accelerometer in laptop. You want to send the "get the fucking head off the disk RIGHT NOW" command with hard realtime constraints when it happens.
01:32:17 <elliott> Er, I think that's done in hardware.
01:32:23 <Vorpal> elliott: not on thinkpads at least
01:32:30 <elliott> You should get a refund.
01:32:33 <Vorpal> elliott: you need a polling daemon running on it
01:32:35 <elliott> But anyway, does that correspond to an interrupt on the host computer?
01:32:36 <Vorpal> which sucks yes
01:32:39 <elliott> What, polling?
01:32:42 <Vorpal> elliott: yes
01:32:51 <Vorpal> elliott: it is terrible
01:32:55 <elliott> I don't *want* @ to be good at this. Your HD deserves to die if it's protected by such an infernal contraption.
01:33:11 <elliott> If it caused a host interrupt instead, then I think @ would be able to handle it.
01:33:22 <elliott> I mean, if you're under heavy load it might not work out.
01:33:24 <pikhq_> Vorpal: Um, that's not going to be any worse on @ than on any other OS.
01:33:33 <Vorpal> pikhq_: vxworks :P
01:33:34 <elliott> But yeah, if you have a userspace polling daemon and that works, then @ will handle it.
01:33:38 <elliott> But I'm shocked that it works.
01:33:49 <pikhq_> If it needs to poll, pretty much any kernel is only going to poll when you jump back into kernel space.
01:33:51 <Vorpal> elliott: I can't say I have tested it
01:34:03 <elliott> Vorpal: Lend Sgeo your laptop and you'll find out.
01:34:08 <Vorpal> elliott: aiee!
01:34:16 <pikhq_> And probably not even that often; I'd be willing to bet it simply sets up a timer for the checking.
01:34:32 <pikhq_> Which shouldn't be anything impossible for @.
01:34:35 <elliott> Vorpal: Anyway, @ is designed for SSDs :)
01:34:37 <Vorpal> elliott: anyway yes it seems like a terrible design due to not offering any protection during booting
01:34:40 <Vorpal> and so on
01:34:49 <elliott> Specifically, 1-2 Tio+ SSDs.
01:35:04 <Vorpal> elliott: those are fucking expensive
01:35:11 <pikhq_> Pretty much all you need is for @ to make reasonable guarantees on interrupts being handled (including timer interrupts)
01:35:12 <elliott> Vorpal: They are now.
01:35:14 <pikhq_> Vorpal: Presently.
01:35:18 <Vorpal> good point
01:35:26 <pikhq_> Vorpal: @ is designed for where computers will be, not where computers are and have been.
01:35:26 <elliott> They probably won't be when I'm in my 20s.
01:35:40 <Vorpal> by the time @ is done SSDs will be a thing of the past :P
01:35:47 <elliott> pikhq_: Can I hire you to write my marketing copy?
01:35:54 <pikhq_> elliott: Plausibly. :)
01:36:09 <elliott> It'll be like those computer ads from the 60s.
01:36:19 <fizzie> By the time @ is done we've all been fused into the Core Mind, I'd say.
01:36:23 <elliott> @. The revolutionary new system from @ Systems, Incorporated.
01:36:24 <lambdabot> Plugin `compose' failed with: Unknown command: "The"
01:36:27 <pikhq_> fizzie: At which point, no worries.
01:36:33 <Vorpal> <pikhq_> Vorpal: @ is designed for where computers will be, not where computers are and have been. <-- you mean DRM-filled pieces of crap designed to run C and .NET code?
01:36:44 <pikhq_> Vorpal: That's where computers are, yes.
01:36:48 <elliott> The *only* computer operations system powering the new Microsoft Singularity(tm) software.
01:36:53 <Vorpal> pikhq_: and where they are going.
01:36:59 <pikhq_> Vorpal: Not really.
01:37:07 <elliott> Get it now before Omega gets it for you.(tm)
01:37:07 <Vorpal> pikhq_: oh? I'm not sure we will get less DRM
01:37:10 <fizzie> Trusted @-puting Initiative.
01:37:24 <pikhq_> Vorpal: I give it 10 years tops for the media companies to collapse entirely.
01:37:30 <Vorpal> pikhq_: heh
01:37:32 <pikhq_> Making DRM pointless.
01:37:35 <elliott> Vorpal: I don't think mandatory hardware DRM will catch on
01:37:35 <pikhq_> (well, more so)
01:37:39 <Vorpal> pikhq_: what about DRM for games?
01:37:47 <pikhq_> "media companies"
01:37:51 <Vorpal> elliott: I *hope* it won't
01:37:54 <elliott> Vorpal: So it's not something "computers" will suffer by the @-relevant definition
01:38:04 <pikhq_> Though the game industry is probably *less* doomed than others.
01:38:13 <Vorpal> pikhq_: but where will we be then? I don't think there is enough people to support open source for niche applications
01:38:31 <Vorpal> pikhq_: DRM for autodesk?
01:38:33 <Vorpal> stuff like that
01:38:33 <elliott> Media =/= programming.
01:38:43 <Vorpal> indeed
01:38:44 <elliott> Although I don't know what pikhq_ intended by "media" exactly.
01:38:52 <Vorpal> but those companies want DRM too
01:38:59 <pikhq_> elliott: Mostly TV, music, movies.
01:39:19 * elliott thinks if Netflix's boost for original content gets off the ground, then it'll surviev.
01:39:20 <elliott> *survive.
01:39:28 <Vorpal> pikhq_: I can see more than just media wanting DRM: games, specialised applications
01:39:28 <elliott> And I would consider Netflix a TV company.
01:39:47 <elliott> Vorpal: I think specialised applications need DRM less than mass-market stuff.
01:39:52 <Vorpal> elliott: hm
01:39:55 <elliott> Because the people who want it can afford it, and nobody else wants it.
01:40:01 <Vorpal> hah
01:40:04 <elliott> And ofc the people who want it need support.
01:40:06 <elliott> Because it's specialised.
01:40:15 <elliott> And so the internet won't help for support.
01:40:28 <Vorpal> elliott: mathematica then? It isn't exactly mass-market. But it is popular enough to find well seeded over torrents
01:40:53 <Vorpal> maybe not the linux version, but certainly the windows version
01:41:06 <elliott> What Wolfram wants has very little connection to what is reasonable or what anyone else wants
01:41:27 <Vorpal> elliott: true. But other applications in the same general category. Mathlab perhaps.
01:41:44 <pikhq_> Also, DRM is a quixotic effort anyways.
01:41:47 <elliott> Vorpal: *Matlab
01:41:51 <Vorpal> right
01:41:51 <elliott> http://en.wikipedia.org/wiki/MATHLAB
01:41:52 <pikhq_> Why even consider it?
01:41:53 <Vorpal> I believe I can get AutoCAD from university btw
01:41:56 <myndzi> ok you guys.
01:41:57 <myndzi> https://docs.google.com/a/searchfanatics.com/spreadsheet/ccc?key=0Aqlaw_Uc29ZrdGRuMDVoQzcwR1VHQm1VV3AxZXZRX2c&hl=en_US#gid=0
01:41:59 <elliott> MATHLAB is an on-line system providing machine aid for the mechanical symbolic processes encountered in analysis. It is capable of performing, automatically and symbolically, such common procedures as simplification, substitution, differentiation, polynomial factorization, indefinite integration, direct and inverse Laplace transforms, the solution of linear differential equations with constant coefficients, the solution of simultaneous linear equa
01:41:59 <elliott> tions, and the inversion of matrices. It also supplies fairly elaborate bookkeeping facilities appropriate to its on-line operation.
01:42:04 <myndzi> have at it
01:42:13 <elliott> myndzi: Did you read fizzie's last words?
01:42:22 <myndzi> nope, i've been writing all this time
01:42:27 <myndzi> which last words where
01:42:44 <elliott> 00:16:52: <fizzie> (It is 02:15AM here in UTC+2. Currently it's 00:15AM in UTC. If you do a "clamp to UTC midnight" operation, you will subtract 15 minutes, so that time in my timezone will be 02:00AM. You'll need to subtract 2 more hours to get a local midnight. Substitute 8 for 2 for Manila. Sorry, couldn't resist.)
01:42:44 <elliott> 00:18:11: <elliott> :D
01:42:44 <elliott> 00:19:02: <fizzie> (Current Unix timestamp is about 1322871375. 1322871375%86400 = 975, about 16 minutes. If you subtract that from current time, it's about 02am here. You will need to subtract further two hours from the Unix timestamp to get a Unix timestamp value that corresponds to our midnight. Sorry, couldn't resist that either.)
01:42:47 <elliott> 00:19:06: <fizzie> Okay, seriously. ->
01:42:49 <elliott> 00:22:32: <fizzie> (When the time was "today, 01:00am" here in Finland, it was 23:00 in UTC. If you clamped that timestamp to previous UTC midnight, you'd end up subtracting 23 hours, leading to "yesterday, 02:00am". Then you could subtract two more hours to get a local midnight, but it would be "yesterday, 00:00", a day earlier than you wanted. This might explain the issues you mentioned.)
01:42:54 <elliott> 00:22:38: <fizzie> Seriously for reals now. ->
01:42:56 <elliott> 00:22:39: -!- derdon has quit (Remote host closed the connection).
01:42:58 <elliott> 00:26:27: <elliott> myndzi: I think fizzie is trolling you.
01:43:00 <elliott> 00:28:55: <fizzie> (If it was "today, 01:00am" here, and you wanted to round to local midnight, you could (I'm not sure I would): add two hours to the timestamp, so you'd have a Unix timestamp that'd translate to UTC 01:00am; a different instant in time, yet same in local time. Then clamp to UTC midnight, which would end up subtracting the "proper" one hour. Then you would reverse the initial "time zone conversion" by subtracting two hours, and en
01:43:05 <elliott> d up with local "today, 00:00", U
01:43:06 <Vorpal> elliott: "AutoCAD 2012 was released on 2011, March 22" <-- wut.
01:43:07 <elliott> 00:28:55: <fizzie> TC. That sort of thing would work, though the idea of having Unix timestamps that represent time instants that have the "local time" value when converted-to-display-as-UTC is a bit iffy. But if you're doing something like that, it does work.)
01:43:11 <elliott> 00:29:06: <fizzie> No, maybe some of that stuff might actually help.
01:43:13 <elliott> 00:29:27: <fizzie> I mean, after talk of "timestamps in local time", it's not inconcievable it could be something like that.
01:43:16 <elliott> 00:30:28: <elliott> fizzie: Hi.
01:43:18 <elliott> 00:32:21: <fizzie> (But I'm still pretty sure if you just get current time() value, round to previous multiple of 86400, then; (a) subtracting K hours will give a local midnight in the UTC+K timezone, but it could be the "wrong" midnight; and (b) adding K hours will not give a local midnight, assuming K is not 12; at least as long as the resulting value is treated as a real Unix timestamp and converted to local time properly.)
01:43:23 <elliott> 00:32:28: <fizzie> Okay, maybe I really should go.
01:43:25 <elliott> [...]
01:43:26 <myndzi> a search term would have sufficed
01:43:27 <myndzi> :)
01:43:27 <elliott> 00:37:40: <fizzie> (Also even after all this thinking, if I were making a "production" system, I'd seriously consider testing my thing at Manila local times of 04:00, 12:00 and 20:00, and checking that mycode(now()) approximately equals now()-4*3600, now()-12*3600 and now()-20*3600, respectively. Assuming now() returns current Unix timestamp, and mycode() is supposed to return a Unix timestamp corresponding to local midnight.)
01:43:55 <elliott> @tell fizzie myndzi's reply: https://docs.google.com/spreadsheet/ccc?key=0Aqlaw_Uc29ZrdGRuMDVoQzcwR1VHQm1VV3AxZXZRX2c&hl=en_US#gid=0
01:43:55 <lambdabot> Consider it noted.
01:43:57 <Sgeo> Why would such a thing require the co-operation of the OS at all?
01:43:59 <myndzi> it doesn't look like he got it anyway
01:44:00 <Sgeo> That sounds stupid to me
01:44:16 <myndzi> and i don't think he was trolling me because everyone here thought i was crazy ;)
01:44:25 <myndzi> i thought i was crazy too until i sat down and thought about it
01:44:35 <elliott> Sgeo: Such a what?
01:44:46 <myndzi> please do tell me if the spreadsheet makes it clear for you...?
01:45:04 <elliott> myndzi: I only glanced at it. I'd rather leave it up to fizzie, so I guess we'll see tomorrow.
01:45:04 <Vorpal> myndzi: no: "Firefox has detected that the server is redirecting the request for this address in a way that will never complete."
01:45:09 <Sgeo> elliott, telling the HD head to get off of the disk in the event of significant motion
01:45:10 <Vorpal> myndzi: broken for me
01:45:15 <myndzi> wtf
01:45:18 <myndzi> it's just a google docs link
01:45:19 <elliott> Sgeo: Bitter, are we?
01:45:27 <Vorpal> myndzi: *shrug*
01:45:29 <pikhq_> myndzi: So, basically, you were discussing a *completely different thing* than we thought you were.
01:45:32 <Vorpal> not going to spend time debugging
01:45:54 <myndzi> so, basically, you have no reading comprehension at all, as it was stated multiple times and clearly
01:45:56 -!- TeruFSX_ has quit (Read error: Connection reset by peer).
01:45:56 <myndzi> :P
01:45:57 <Sgeo> elliott, I'm responding to something Vorpal said I thin
01:45:58 <Sgeo> thinkl
01:46:04 <Vorpal> Sgeo: what?
01:46:05 <elliott> Sgeo: It was a joke.
01:46:15 <pikhq_> Of course to go from 00:00:00 UTC+8 -> x UTC+0, you add 8 hours, thus getting 08:00:00 UTC+0.
01:46:18 <Sgeo> <elliott> Er, I think that's done in hardware.
01:46:18 <Sgeo> <Vorpal> elliott: not on thinkpads at least
01:46:20 <Vorpal> Sgeo: because bad architecture
01:46:23 <Sgeo> Oh, didn't see that
01:46:34 <Vorpal> Sgeo: polling even
01:46:42 <pikhq_> Erm, wait. Bleh.
01:46:44 <pikhq_> No.
01:46:47 <pikhq_> No you don't.
01:47:05 <pikhq_> To go from x UTC+0 -> UTC+8 you add 8. To do the inverse you subtract.
01:47:12 <Vorpal> <myndzi> so, basically, you have no reading comprehension at all, as it was stated multiple times and clearly <-- you just failed horribly at expressing yourself then
01:47:31 -!- TeruFSX has joined.
01:47:48 * elliott still thinks myndzi is wrong, but also thinks that multiple people arguing with myndzi is much less productive than the best person here arguing with myndzi alone.
01:47:49 * myndzi still thinks elliott is wrong, but also thinks that multiple people arguing with elliott is much less productive than the best person here arguing with elliott alone.
01:47:54 <elliott> Rude.
01:48:20 <Vorpal> I'm not sure about that for either of you.
01:48:25 <PiRSquared17> Still talking about Unix timestamps and UTC?
01:48:36 <Vorpal> PiRSquared17: not still. again.
01:48:42 <elliott> Vorpal: ?
01:48:44 <Vorpal> because myndzi bought it up
01:48:54 <elliott> <Vorpal> I'm not sure about that for either of you.
01:48:55 <elliott> ?
01:49:01 <Vorpal> elliott: indeed.
01:49:07 <elliott> ?
01:49:12 <Vorpal> I'm not going to specify further to avoid offending you both
01:50:13 <elliott> Vorpal: (The best person is meant to be fizzie, and myndzi's response was scripted, if that's what you mean.)
01:50:38 <Vorpal> not at all what I meant
01:50:39 <Vorpal> but whatever
01:51:08 <Vorpal> elliott: speaking of rendering, this is cool: https://en.wikipedia.org/wiki/Metropolis_light_transport
01:51:23 <elliott> Vorpal: I know what you think you were getting at, but it doesn't really work as an insult at all.
01:51:38 <Vorpal> elliott: who said insult?
01:51:41 <Sgeo> Is there a name for the class of functions that can be expressed as an infinite term polynomial?
01:51:46 <Vorpal> elliott: just forget it!
01:52:03 <Vorpal> Sgeo: sure one such name is "functions that can be expressed as an infinite term polynomial"
01:52:47 <myndzi> i can't even find in the history the last time it was summed up, but somebody else restated it and i agreed
01:52:58 <myndzi> anyway.
01:53:14 <myndzi> hopefully the document makes both the question and the answer exceedingly clear
01:53:19 <myndzi> and everybody can agree and be happy :)
01:53:26 <Vorpal> I do not care about the time problem any more.
01:53:27 <myndzi> good thing i did the chart too
01:53:28 <Vorpal> whatever
01:53:36 * elliott expects it'll go another way entirely.
01:53:51 <Vorpal> elliott: what will go another way?
01:53:58 <elliott> The thing you don't care about.
01:54:20 <myndzi> tis all i have to say on the matter, go back to ... whatever it is you guys do in here :P
01:55:17 <elliott> myndzi: But what if fizzie proves you wrong. It's no fun without bloodshed :(
01:55:49 -!- GreaseMonkey has joined.
01:56:03 <myndzi> i'll happily be proven wrong
01:56:12 <Vorpal> <elliott> The thing you don't care about. <-- ?
01:56:19 <myndzi> all i wanted to do was grok it in the first place
01:56:24 <elliott> Vorpal: You're being pretty thick.
01:56:38 <Vorpal> elliott: I don't care about what way it is going any more!
01:57:07 <elliott> <Vorpal> I do not care about the time problem any more.
01:57:09 <elliott> * elliott expects it'll go another way entirely.
01:57:10 <elliott> <Vorpal> elliott: what will go another way?
01:57:11 <elliott> <elliott> The thing you don't care about.
01:57:25 <Vorpal> elliott: go another way than WHAT?
01:57:27 <myndzi> i care what about thing going that where more have it done
01:57:33 <elliott> <myndzi> i can't even find in the history the last time it was summed up, but somebody else restated it and i agreed
01:57:33 <elliott> <myndzi> anyway.
01:57:33 <elliott> <myndzi> hopefully the document makes both the question and the answer exceedingly clear
01:57:33 <elliott> <myndzi> and everybody can agree and be happy :)
01:57:41 <elliott> Vorpal: For something you don't care about you are asking lost of questions about it.
01:57:55 <Vorpal> elliott: oh I see. A trick.
01:57:58 <Vorpal> good job
01:58:05 <elliott> What?
01:58:18 <Vorpal> elliott: I'm not even meta-discussing it further.
01:58:24 <elliott> You're being a fucking moron, I said something to someone other than you and then you proceeded to act dense about what I was talking about for like five minutes.
01:58:42 <myndzi> hey guys? i heard that .999 repeating = 1
01:58:46 * myndzi ducks and hides
01:58:51 <Vorpal> elliott: you mean <elliott> * elliott expects it'll go another way entirely wasn't aimed at me?
01:58:57 <elliott> Of course it fucking wasn't.
01:59:00 <myndzi> he was responding to me
01:59:00 <Vorpal> oh okay
01:59:05 <Vorpal> <Vorpal> whatever
01:59:05 <Vorpal> * elliott expects it'll go another way entirely.
01:59:05 <elliott> myndzi: .999 repeating does indeed = 1.
01:59:13 <elliott> .999.999.999.999.999... = 1.
01:59:13 <Vorpal> thing is, it didn't look like that here
01:59:19 <myndzi> elliott: i know, but it is a nefarious and easy flamewar starter
01:59:23 <myndzi> which was the joke :)
01:59:35 <elliott> myndzi: You missed my joke. :'(
01:59:42 <elliott> I don't think anyone in here is stupid enough to deny that .9r = 1.
01:59:43 <myndzi> i was typing at the time
01:59:46 <myndzi> i lol'd a little
02:00:22 <Sgeo> Is there an easy way to determine whether a given number has more than one representation in decimal?
02:00:26 <Vorpal> myndzi: that is only true in base 10 surely?
02:00:38 <Vorpal> in base 16 I assume .ffff = 1
02:00:39 <myndzi> well, yes
02:00:42 <Vorpal> well .fff...
02:00:46 <elliott> Sgeo: const True
02:00:47 <myndzi> what about .fffffuuuuuuuu
02:01:00 <Vorpal> myndzi: which base is that?
02:01:01 <myndzi> i actually managed to explain to my mom why the adding digits trick works in any base
02:01:07 <Vorpal> 30-something?
02:01:22 <myndzi> Vorpal: well it has to be at least 31
02:01:23 <Jafet> > 0.99999999999999999999
02:01:24 <lambdabot> 1.0
02:01:26 <myndzi> something like that anyway
02:01:28 <Vorpal> myndzi: ah
02:01:32 <elliott> I love how http://en.wikipedia.org/wiki/0.999... has like a thousand proofs.
02:01:38 <Sgeo> elliott, What about 0? Or .333repeating
02:01:56 <PiRSquared17> @type (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
02:01:57 <elliott> Sgeo: 0 = 0.00000000000000000000000000000 :-)
02:01:57 <lambdabot> A 103-tuple is too large for GHC
02:01:57 <lambdabot> (max size is 62)
02:01:57 <lambdabot> Workaround: use nested tuples or define a data type
02:01:59 <Vorpal> elliott: I love how this section exists: https://en.wikipedia.org/wiki/0.999..#In_popular_culture
02:02:14 <PiRSquared17> (max size is 62) what?
02:02:16 <elliott> Sgeo: .3r is a fair point.
02:02:28 <myndzi> interestingly i actually have a script that detects likely encoded text in base 2 through 36 and makes a guess at the correct base, then decodes it
02:02:35 <myndzi> it was interesting to write
02:02:51 <elliott> Sgeo: Anything with a finite decimal representation has multiple representations.
02:03:10 <elliott> Sgeo: I'm sure you can find for yourself how to determine whether a number has one of those.
02:03:13 <myndzi> 3C11343F3M3I113B343P38113I3H38113N3I113M343S113N3B3C3H3A3M113C3H11343L353C3N3L343L3S1135343M383M
02:03:18 <Vorpal> elliott: hm what about 0+
02:03:19 <Vorpal> err
02:03:20 <Vorpal> 0?
02:03:36 <Vorpal> I can't think of another for 0
02:03:39 <elliott> 0 is just, like, -0.9999999999999999999999999999999999999999.
02:03:48 <elliott> (-0).99999999999
02:03:50 <elliott> = 1
02:03:50 <Vorpal> elliott: no that is -1?
02:03:51 <elliott> Q.E.D.
02:03:57 <elliott> Vorpal: No, that's -(0.999999999).
02:04:12 <Vorpal> what do you mean by (-0).99999999999 exactly
02:04:19 <elliott> (-0).9999999... = -0 + 9/9 = -0 + 1 = +0.
02:04:24 <myndzi> obviously he means negative zero times point nine repeating to infinity
02:04:30 <Vorpal> hm
02:04:31 <myndzi> the answer is obviously q
02:04:43 <Vorpal> ah
02:04:53 <Sgeo> elliott, are there numbers with more than two decimal representations?
02:05:18 <elliott> Sgeo: Yes, for instance 0 is 0, 0.00000..., and (-0).999...
02:05:23 <myndzi> guess that depends on how you represent numbers
02:05:27 <Sgeo> Which would also imply that a number without a finite decimal representation could have multiple decimal representations
02:05:30 <myndzi> also how does "-0 + 1 = +0"
02:05:51 <elliott> myndzi: magic
02:06:03 <Sgeo> I'm not counting extra 0s at the end to be a separate representation
02:06:08 <myndzi> so... magnets?
02:06:19 <PiRSquared17> > -0 + 1
02:06:20 <lambdabot> 1
02:06:22 <myndzi> Sgeo: the interesting thing about .99999... etc
02:06:24 <PiRSquared17> > (-0) + 1
02:06:25 <lambdabot> 1
02:06:33 <myndzi> is that you can actually produce it by long division with 9 into 9
02:06:40 <myndzi> if you break a little rule and follow the process
02:07:08 <myndzi> (9 goes into 9 0 times)
02:07:24 <myndzi> it'd be interesting if you could do the same thing with other values, but i expect it to be unlikely
02:08:20 <myndzi> (actually, i'm pretty sure you can produce .9999 by dividing any number by itself with long division, if you don't count it as going into itself exactly)
02:09:04 <Vorpal> elliott: yeah I can't get -0 + 1 = +0
02:09:20 <elliott> you're educated stupid
02:09:22 <Vorpal> elliott: what sort of weird system is that
02:09:43 <Vorpal> > (-0)::CReal + 1::CReal
02:09:43 <lambdabot> <no location info>: parse error on input `::'
02:09:48 <Vorpal> blergh
02:09:50 <Vorpal> whatever
02:09:52 <elliott> sour creal
02:09:56 <Jafet> Decimals suck, Dedekindcuts4life
02:09:58 <elliott> > (-0::CReal)+(1::CReal)
02:09:59 <lambdabot> 1.0
02:10:04 <Vorpal> elliott: NOT 0.0
02:10:05 <Vorpal> see
02:10:06 <elliott> CReal has an off-by-one.
02:10:09 <elliott> > (-0::CReal)
02:10:10 <lambdabot> 0.0
02:10:13 <elliott> Vorpal: CReal just doesn't support negative 0.
02:10:15 <elliott> It's limited.
02:10:21 <myndzi> interesting: if you do the same long division shenanigans with less than one, you wind up with carries that make it .999999 anyway ;)
02:10:22 <Vorpal> elliott: lets do it in float then
02:10:29 <PiRSquared17> > (-0) == 0
02:10:30 <lambdabot> True
02:10:30 <elliott> Floats are inaccurate!
02:11:29 <Vorpal> elliott: I call your -0 + 1 = +0 bullshit unless you can back it up by a reliable source /such as/ oerjan (when he gets back) or a wikipedia articles with proper references.
02:11:48 <elliott> Vorpal: oerjan is educated evil.
02:11:57 <Vorpal> so it /is/ bullshit then
02:12:13 <Vorpal> so give me an actual different representation of 0
02:12:56 <elliott> Counterpoint: You smell funny.
02:13:10 <Vorpal> go to sleep already
02:13:17 <elliott> It's 2 am.
02:13:20 <Vorpal> you only do this when you need to sleep
02:13:29 <elliott> No, I only do it when I want to irritate you.
02:13:33 <elliott> It's really easy.
02:13:42 <Vorpal> which mostly happens when you are sleepy
02:13:56 <elliott> Whatever your excuse!
02:14:27 -!- kallisti has quit (Ping timeout: 252 seconds).
02:14:49 <PiRSquared17> !bf >,[.>,]+[<.]!testing
02:25:01 -!- kallisti has joined.
02:30:55 -!- pikhq has joined.
02:31:07 -!- pikhq_ has quit (Ping timeout: 244 seconds).
02:47:52 -!- calamari has joined.
02:54:15 <oklopol> i have a girl here now
02:54:29 <oklopol> 8/
02:54:56 <elliott> i have a box
02:55:02 <oklopol> i wish i had a box
02:59:35 <PiRSquared17> !bf >,[.>,]+[<.]!testing
02:59:43 <PiRSquared17> ^bf >,[.>,]+[<.]!testing
02:59:44 <fungot> testinggnitset
03:07:09 <elliott> oklopol: do you want a box, i can give you a box
03:09:18 <calamari> ^bf >,[.>,]+[<.]!po
03:09:18 <fungot> poop
03:13:10 <calamari> ^bf >,[.>,]+[<.]!a
03:13:10 <fungot> aa
03:13:13 <calamari> ^bf >,[.>,]+[<.]!
03:13:36 <elliott> oklopol: btw i'm working on the thing that ph proved you wrong with
03:13:38 <elliott> it's working super great.
03:13:53 <elliott> just flinging particles around in 2d
03:13:56 <elliott> watching them form stable orbits
03:14:39 <calamari> anyone happen to know how I can figure out what is causing a kernel module to be in use?
03:14:48 <elliott> um... it being loaded
03:14:57 <elliott> kernel modules are only "used" because they're explicitly loaded
03:15:20 <calamari> sorry I guess I didn't ask the question right
03:15:24 <PiRSquared17> ^bf >,[.>,]+<[<.]!race
03:15:25 <fungot> racecar
03:15:29 <calamari> I'm trying to remove a module
03:15:44 <elliott> modprobe -r foo
03:15:48 <calamari> exactly
03:15:48 <elliott> assuming by remove you mean unload
03:15:56 <calamari> FATAL: Module snd_hda_intel is in use.
03:15:59 <elliott> ah.
03:16:07 <elliott> you'll have to disable ALSA somehow i think
03:16:11 <elliott> why are you trying to do that
03:16:21 <calamari> because I'm trying to avoid rebooting
03:16:37 <calamari> I need to change the options for the module
03:29:31 -!- calamari has quit (Remote host closed the connection).
03:32:14 <PiRSquared17> ^bf >,[.>,]+<[<.]!10
03:32:14 <fungot> 101
03:34:44 -!- calamari has joined.
03:36:16 -!- hagb4rd has joined.
03:36:57 <PiRSquared17> ^bf >,[.>,]+<[<.]!m a d a m i
03:36:58 <fungot> m a d a m i m a d a m
03:41:00 <calamari> ^bf >,[.>,]+<[<.]!amanaplanac
03:41:01 <fungot> amanaplanacanalpanama
03:41:23 <zzo38> Check the phase of the moon on the calendar and then guess what you think is the tropical Moon sign at this time. (Use numbers if you prefer; I prefer to use numbers myself but it doesn't matter) Try to guess also the sign for Mercury and for Venus?
03:42:23 <zzo38> O, you are making palindrome. It is palindrome using letters (only letters) as units, so you need to put spaces afterward by yourself. Once I found the very long palindrome text!!
03:45:25 -!- DCliche has changed nick to Klisz.
03:55:07 <PiRSquared17> ^bf >,[.>,]+<[<.]!lololololol
03:55:07 <fungot> lolololololololololol
04:02:08 -!- Sgeo has quit (Read error: Connection reset by peer).
04:02:53 -!- Sgeo has joined.
04:08:58 -!- MDude has changed nick to MSleep.
04:13:40 <PiRSquared17> ^bf >,[.>,]+<[<.]!madam president, commissioner, in this case, i would like this document to ban the advertising of tobacco products, regardless of all our people.
04:13:40 <fungot> madam president, commissioner, in this case, i would like this document to ban the advertising of tobacco products, regardless of all our people.elpoep ruo lla fo sseldrager ,stcudorp occabot fo gnisitrevda ...
04:17:32 <PiRSquared17> fungot: hi
04:17:33 <fungot> PiRSquared17: mr president, mr president, that the special relationship between france and germany at the brussels summit achieved was clarification as regards financing. in other words the extension of the schengen acquis in the applicant countries as well. i am still looking for.
04:18:45 <zzo38> How long does it take for ARM processor program to fill an amount of RAM with null bytes?
04:20:21 <PiRSquared17> @faq How long does it take for ARM processor program to fill an amount of RAM with null bytes?
04:20:21 <lambdabot> The answer is: Yes! Haskell can do that.
04:21:02 <zzo38> I mean in a program written in assembly language (or machine code); not Haskell.
04:21:12 <PiRSquared17> I know
04:31:15 <zzo38> "He who lives by the sword...should probably bring something better to a gun fight."
04:32:02 <PiRSquared17> ^style ct
04:32:02 <fungot> Selected style: ct (Chrono Trigger game script)
04:32:07 <PiRSquared17> fungot:
04:32:07 <fungot> PiRSquared17: the masamune!! grribit... in that energy field, our molecular structure to the north. it's a great place for a picnic! heard that magus's place...
04:32:28 <elliott> I'm so glad this channel is #bots.
04:34:09 <PiRSquared17> At least ^bf >,[.>,]+<[<.]!... was related to esoteric programming languages
04:35:45 <zzo38> O, whatever............................
04:39:16 <elliott> "O, whatever............................" --zzo38
04:42:16 <zzo38> Can you make 1962 points in one turn of Scrabble game? How many points can you score in total in a Scrabble game?
04:42:32 <elliott> 3
04:44:17 <PiRSquared17> http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_general;action=display;num=1071784078
04:59:28 -!- Sgeo has quit (Ping timeout: 248 seconds).
04:59:38 <Jafet> Sure, if QWUZTJA is a word
05:02:54 <elliott> It so is
05:03:34 -!- Sgeo has joined.
05:07:33 <calamari> I, for one, welcome our new esolang overlords
05:09:05 <PiRSquared17> --Ken Calamari, winner of 10 cents on the game show "The Simpsons" against a computer
05:10:15 <calamari> is that another way of saying I put my 2 cents in?
05:13:18 <calamari> bye
05:13:20 -!- calamari has quit (Quit: Leaving).
05:30:56 -!- Sgeo has quit (Ping timeout: 248 seconds).
05:32:57 -!- Sgeo has joined.
05:59:38 -!- pikhq_ has joined.
05:59:56 -!- pikhq has quit (Ping timeout: 252 seconds).
06:06:15 <kallisti> pikhq_: the majority of your messages are bot commands.
06:06:17 <kallisti> erm
06:06:33 <kallisti> PiRSquared17: the majority of your messages are bot commands.
06:06:52 <kallisti> seriously. stop that.
06:10:09 <PiRSquared17> And my last message was an hour ago... I stopped
06:14:57 -!- PiRSquared17 has left (".").
06:18:22 <elliott> .
06:19:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
06:19:51 -!- copumpkin has joined.
06:20:06 <kallisti> elliott: you can now bye snoop dogg velvet house shoes
06:20:44 <elliott> bye, snoop dogg velvet house shoes
06:20:45 <elliott> we will miss you
06:21:06 <elliott> also
06:21:07 <elliott> the word
06:21:09 <elliott> is slipper
06:22:33 <kallisti> that is not what they're being advertised as
06:23:12 <elliott> where the fuck is oerjan he's had like 6 hours of sleep come on dude i need to bug you about quadtree zippers
06:23:38 <kallisti> wtf is a quadtree
06:23:49 <elliott> are you fucking serious
06:23:58 <kallisti> yes
06:24:05 <elliott> do you have an internet connection
06:24:08 <kallisti> oh
06:24:09 <kallisti> 4-tree
06:24:20 <elliott> wow yeah it's that data structure that not a single person on the planet calls a 4-tree
06:25:18 <kallisti> um yeah in general people say n-tree
06:25:23 <kallisti> and a quadtree is a 4-tree
06:25:25 <kallisti> so... :)
06:25:33 <elliott> no everybody calls quadtrees quadtrees
06:25:45 <elliott> http://en.wikipedia.org/wiki/Quadtree wikipedia doesn't even list 4-tree as an alternate name
06:25:59 <elliott> "4-tree" on wikipedia returns 2-3-4-tree as first result, nothing relevant on first page
06:26:01 <elliott> erm
06:26:02 <elliott> *on google
06:30:48 <kallisti> fine.
06:39:44 -!- hagb4rd has quit (Ping timeout: 248 seconds).
06:58:47 -!- hagb4rd has joined.
07:00:05 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:05:27 -!- itidus21 has joined.
07:05:58 <elliott> note to self: http://sprunge.us/KjUW
07:29:54 <zzo38> What is this program for?
07:30:29 <elliott> it was the start of a quadtree-with-zippers library, but then I threw it away to abstract it out better to reduce code duplication, and used sprunge + this channel as a backup in case it went horribly wrong :P
07:30:34 <elliott> it's coming along very nicely now
07:34:23 <elliott> http://sprunge.us/LCNO deriving zippers by differentiation is one of the most beautiful things
07:35:28 <elliott> kallisti: look at that. tell me that's not amazing.
07:36:10 <kallisti> :> is good
07:37:04 <elliott> kallisti: btw homestuck book is out.
07:39:02 <kallisti> ....okay?
07:39:46 <kallisti> focus _ (Branch _ _ _ _) = error "focus: path too short"
07:39:49 <kallisti> when does this happen?
07:39:52 <kallisti> oh
07:39:53 <kallisti> nevermind
07:40:06 <kallisti> I didn't notice the Dir argument is _ too
07:40:41 <kallisti> you could put [] there instead of _ I think... but then it won't be all vertically symmetrical with the _
07:40:46 <kallisti> *the other _'s
07:40:50 * kallisti cares about things like that.
07:41:15 <kallisti> also I have no fucking clue what's going on in this code.
07:45:43 <kallisti> I'm focus moves the zipper around?
07:45:45 <kallisti> or something
07:45:54 <kallisti> that's what it looks like it does.
07:47:39 <kallisti> elliott: would it be possible to make a typeclass for both STRef and IORef
07:47:45 <kallisti> so you can write code generally for either of them?
07:47:51 <kallisti> I think it should be
07:47:53 <elliott> trivially. shut up, I'm trying to be as mindlessly consumerist as possible.
07:48:14 <kallisti> elliott: why isn't this standard then, aside from needing a multi-param typeclass
07:48:24 <elliott> because nobody needs it, SHUT UP TRYING TO SPEND SO MUCH MONEY
07:48:38 <kallisti> on homestuck booko?
07:48:52 <kallisti> *bkooo
07:48:55 <kallisti> *boook
07:48:57 <elliott> yes. also the newest problem sleuth book which also just came out.
07:48:59 <elliott> and uh
07:49:00 <elliott> other shit because
07:49:03 <elliott> shipping is over $30
07:49:07 <kallisti> heh
07:49:08 <kallisti> yeah
07:49:09 <kallisti> I love that.
07:49:19 <kallisti> I actually get free shipping for most things on Amazon
07:49:25 <kallisti> for a year, anyway. because I have a student account.
07:49:29 <elliott> UM WAIT there's t-rex plushes let me examine the prices
07:49:33 <zzo38> I didn't know you could use differential calculus to figure out types but now I can see how it works.
07:49:37 <elliott> kallisti: topatoco ain't amazon
07:49:44 <kallisti> no shit.
07:49:55 * kallisti bought a Problem Sleuth fractal shirt from that site.
07:50:03 <kallisti> it's awesome.
07:50:25 <elliott> I think I'm going to go for one of the sbahj shirts
07:50:28 <elliott> because
07:50:30 <elliott> they glow in the fucking dark
07:50:57 <elliott> ok YES a small t-rex plush is exactly what my life needs right now. as well as a hole in my pocket. TWO BIRDS, ONE STONE MADE OUT OF MONEY!!
07:52:01 <kallisti> elliott: how are you affording this.
07:52:11 <elliott> THAT'S THE PROBLEM YOU SOLVE AFTER BUYING SO MANY THINGS!!! NOT BEFORE!!!
07:52:17 <elliott> IF I SPEND TIME TO THINK ABOUT THAT THIS SHIT WILL SELL OUT
07:52:19 <kallisti> I remember when I was 16 I had an average of 0.1 dollars
07:52:21 <elliott> WHICH IT WILL BE DOING RAPIDLY AS I SPEAK
07:52:29 <elliott> http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=QW-EXTREME&Category_Code=QW
07:52:38 <elliott> this.... wow.
07:52:50 <kallisti> lol
07:52:54 <kallisti> so extreme
07:53:02 * kallisti also has a Dave record t-shirt
07:53:17 <kallisti> and that yellow shirt with the bandit riding a velociraptor.
07:53:23 <kallisti> because. IF YOU BUY 3 SHIRTS THERE'S A DISCOUNT OMG
07:54:27 <kallisti> also it wasn't a hole in my pocket because at the time I had like $2000
07:54:54 <kallisti> you can see where that logic has gotten me though: I now have like $200
07:55:06 <kallisti> (in my defense I had to buy A WHOLE CAR. ALL OF IT)
07:55:58 <zzo38> Do you have something to cut a hole in your pocket? Does it need to be large enough for a t-rex plush to fit through?
07:58:23 <kallisti> probably, though the T-rex plush will fit snuggly in his new pocket hole. it's a well known law of fixed that burning a hole in your pocket so that money can escape will immediately fill the resultant gap with T-rex plushes
07:58:38 <kallisti> proportional to the inverse square of the money spent.
07:58:39 <elliott> hmm, the wee plush is definitely the best bet, as opposed to the big one
07:58:42 <elliott> wee is 19, big is 39
07:58:54 <elliott> big t-rex is adorable but not 20 dollars adorable
07:59:22 * kallisti snuggles a 20 dollar bill. so cute.
07:59:50 * elliott wonders what the chances of the stairs shirt being interpreted sincerely are.
08:00:05 <elliott> kind of want to go for the slam-dunk one instead, it's so artsy
08:00:51 <kallisti> I think all of the SBaHJ shirts can be taken seriously.
08:01:11 <elliott> well yes. the stairs one is definitely the loudest of 'em though
08:01:18 <elliott> http://www.topatoco.com/graphics/mspa-sbahj-black-pic.jpg
08:01:19 <elliott> http://www.topatoco.com/graphics/00000001/mspa-bigman.jpg
08:01:20 <elliott> decide for me, kallisti
08:02:01 <kallisti> !perl print (qw(blackpic bigman))[int(rant(2))]
08:02:04 <EgoBot> syntax error at /tmp/input.16316 line 1, near ")["
08:02:08 <kallisti> .....ASSHOLE
08:02:10 <elliott> PERL HATH SPOKEN
08:02:14 <kallisti> !perl print (qw(blackpic bigman)[int(rant(2))])
08:02:15 <EgoBot> Undefined subroutine &main::rant called at /tmp/input.16387 line 1.
08:02:18 <kallisti> wat
08:02:18 <kallisti> oh
08:02:21 <kallisti> !perl print (qw(blackpic bigman)[int(rand(2))])
08:02:21 <EgoBot> blackpic
08:02:27 <elliott> but dudel
08:02:29 <kallisti> now let me actually click on the links
08:02:31 <elliott> look at that hoop
08:02:32 <elliott> it's so
08:02:33 <elliott> artsy
08:02:44 <elliott> hmm
08:02:51 <elliott> i think i'll go with stairs though
08:02:52 <elliott> because
08:02:55 <elliott> i don't like red shirts
08:02:59 <kallisti> dunno the hoop is pretty nice.
08:03:09 <elliott> yeah it is but
08:03:11 <elliott> i really don't like red shirts
08:03:15 <elliott> i mean
08:03:19 <elliott> not that shade at least
08:04:17 <kallisti> the stairs shirt could use more compression artifacts
08:04:50 <elliott> i would omit the first two problem sleuth books because really i am only buying the third because of the doodle but
08:04:55 <elliott> if i'm gonna have the books they might as well be in a readable form
08:05:19 <kallisti> you're practically looking for excuses to spend obscene amounts of money on overpriced merchandise
08:05:30 <elliott> totally.
08:05:32 <kallisti> BUT THINK OF THIS WAY YOU'RE SUPPORTING YOUR FAVORITE WEBCOMIC YEAAAAH
08:05:42 <elliott> it's not really overpriced though? topatoco prices are pretty reasonable
08:05:44 <kallisti> and also topatoco and whoever makes those shirts.
08:05:49 <elliott> and they're giving me that $5 three-pack discount!!!
08:05:55 <kallisti> lol
08:05:55 <elliott> kallisti: topatoco is run by jeffrey rowland
08:06:01 <elliott> (wigu, overcompensating)
08:06:05 <elliott> (i sound like wikipedia)
08:06:11 <kallisti> you aRE WIKIPEDIA
08:07:29 <kallisti> elliott: well it's not overpriced for novelty t-shirts you can only get alone
08:07:34 <kallisti> but it is overpriced for clothing.
08:07:41 <kallisti> I guess the books are probably not overpriced.
08:07:44 <elliott> kallisti: $20 is not that bad for a t-shirt...
08:07:45 <kallisti> because they're probably huge.
08:08:00 <elliott> 8.5" x 8"
08:08:19 <kallisti> I mean like
08:08:20 <kallisti> thickness
08:08:26 <kallisti> or well
08:08:29 <kallisti> 3-dimensional volume. :P
08:08:43 <elliott> hs book is 162 pages
08:08:44 <elliott> (act 1)
08:08:48 <elliott> (there are going to be like 50 books)
08:08:49 <elliott> (probably)
08:09:55 <kallisti> I wonder how many pages of homestuck on average are on a page.
08:10:08 <kallisti> also how do you put a flash movie in a book? :P
08:10:27 <elliott> you don't
08:10:30 <elliott> you adapt it for the medium
08:10:38 <kallisti> well, yes...
08:10:44 <kallisti> that's what I assumed.
08:11:56 <kallisti> homestuck popup book would be epic.
08:12:11 <elliott> "Let's Do This Thimg. Let's Make It Happen." --topatoco confirmation button
08:12:32 <elliott> CAPITALISM COMPLETE
08:12:34 <kallisti> gotta love their leet markteing skillz
08:12:45 <kallisti> appealing to your niche fandom.
08:12:50 <kallisti> with references to things.
08:13:20 <kallisti> does... Dinosaur Comics have a book?
08:13:23 <kallisti> please tell me it does.
08:15:15 <elliott> kallisti: two of them
08:21:22 <Sgeo> We need a User Friendly/MSPA crossover
08:21:29 <Sgeo> (Note: Not a serious suggestion)
08:21:32 -!- GreaseMonkey has quit (Quit: The Other Game).
08:22:08 <elliott> what we need is for user friendly to stop existing
08:22:10 <elliott> retroactively
08:22:16 <elliott> OH MY GOD IT FINISHED?
08:22:23 <elliott> THANK THE LORD
08:22:53 <Sgeo> It's still on repeat for now, isn't it?
08:23:15 <elliott> that counts as over
08:23:43 <Sgeo> It could come back
08:23:51 <Sgeo> I think
08:24:09 <elliott> So could Nazism.
08:24:17 <elliott> I'm not saying it's comparable, but it's comparable.
08:24:53 <zzo38> What is the use of making differentiations on Haskell types?
08:25:32 <Sgeo> Apparently the derivative of a Haskell type is a zipper. I do not know what that means, so don't ask me to elaborat.e
08:25:36 <Sgeo> elabora.te
08:25:38 <Sgeo> al
08:25:44 <Sgeo> elaborate.
08:26:09 <elliott> zzo38: http://en.wikibooks.org/wiki/Haskell/Zippers
08:26:18 <zzo38> Can integrations be done?
08:26:19 <elliott> zzo38: that covers deriving them automatically with the differentiation rules too
08:26:33 <elliott> http://www.haskell.org/haskellwiki/Zipper is also good for showing why zippers are useful (but lacks the derivation stuff)
08:26:50 <elliott> also http://strictlypositive.org/calculus/ is where the whole thing originated
08:26:55 <elliott> with a buncha papers
08:26:56 <zzo38> It seems to me that differentiation won't work with function types as far as I can tell
08:27:28 <elliott> zzo38: (A -> B) = B^A
08:27:31 <elliott> so sure you can do it
08:27:43 <elliott> e.g. (Bool -> a) === a^2 === a*a === (a,a)
08:28:39 <zzo38> elliott: Yes I can see that, but what if the A is some other type you don't know?
08:28:55 <Sgeo> How is a (Bool -> a) the same as an (a,a)?
08:29:02 <elliott> zzo38: well, then it's harder :)
08:29:16 <elliott> Sgeo: oneWay f = (f False, f True)
08:29:28 <elliott> Sgeo: theOtherWay (a,b) x = if x then b else a
08:29:42 <elliott> oh, *~(a,b)
08:29:44 <elliott> needs to be lazy
08:29:59 <Sgeo> Oh
08:30:06 <Sgeo> For some reason I was thinking (a -> Bool)
08:31:51 <Sgeo> The storylines page updated! http://www.userfriendly.org/archivist/gallery/storylines.html
08:32:54 <Sgeo> I can practically quote http://www.userfriendly.org/animation/episode1.html from memory.
08:33:03 <elliott> my condolences
08:33:53 <kallisti> wat
08:34:44 <kallisti> HE LIVES IN LIKE
08:34:45 <Sgeo> Ok, so maybe I don't remember it 100% exactly
08:34:47 <Sgeo> But I'm close
08:34:56 <kallisti> A CLIPART WORLD.
08:34:58 -!- monqy has quit (Quit: hello).
08:35:02 <kallisti> HIS ENTIRE WORLD IS CLIPART
08:35:21 <kallisti> also lol sailor moon.
08:35:28 <kallisti> so terrible
08:35:29 <kallisti> this is so bad
08:35:30 <kallisti> what is this.
08:35:32 <kallisti> aaaaaaah
08:36:22 <zzo38> It seems that if the (a) in (a -> b) is a Maybe type then it might be able to be done I suppose?
08:38:34 <Sgeo> Sadly, episode 2 was never made.
08:38:44 <elliott> Sgeo: Sadly?
08:39:12 <elliott> zzo38: ah indeed.
08:39:47 <Sgeo> Fortunately, there are other animations
08:39:55 <elliott> (Maybe a -> b)' = (b^(a+1))' = (a+1)*b^a = (Fin |a+1|, a -> b)
08:40:05 <elliott> what a thoroughly odd type
08:40:11 <kallisti> Sgeo: why do you like clipart universe.
08:40:26 <Sgeo> http://www.userfriendly.org/animation/
08:40:29 <elliott> *|a|+1
08:40:30 <kallisti> no
08:40:36 <zzo38> What does (Fin |a+1|) means?
08:40:51 <elliott> zzo38: Fin n for natural n is the type with n elements, you can define this in a dependently typed language
08:40:54 <Sgeo> kallisti, bought a UF book when I was a kid.
08:40:55 <elliott> actually wait
08:40:58 <elliott> it isn't fin, I'm an idiot
08:41:00 <Sgeo> Didn't realize what it was until I bought it
08:41:04 <elliott> (Maybe a -> b)' = (b^(a+1))' = (a+1)*b^a = (Maybe a, a -> b)
08:41:09 <elliott> there
08:41:12 <Sgeo> Read it, loved it, misplaced it on a summer camp field trip
08:41:19 <Sgeo> Remembered the URL I saw
08:41:19 <zzo38> elliott: Yes, that one (Maybe a, a -> b) is the answer I was thinking of.
08:41:23 <elliott> that's uh, the derivative of (Maybe a -> b) with respect to a
08:41:24 <kallisti> Sgeo: no stop telling me this
08:41:26 <kallisti> you're just making it worse.
08:41:31 <elliott> so there should be
08:41:42 <elliott> foo :: a -> (Maybe a, a -> b) -> (Maybe a -> b)
08:41:43 <elliott> and
08:41:47 <Sgeo> I wonder if UF had a major impact on my life
08:41:51 <elliott> bar :: (Maybe a -> b) -> (a, (Maybe a, a -> b))
08:41:59 <kallisti> elliott: so types here represent their number of inhabitants in this system?
08:42:07 <elliott> kallisti: no
08:42:19 <elliott> kallisti: 1 is just the notation for the unit type
08:42:21 <elliott> 2 for Bool
08:42:22 <elliott> etc.
08:42:24 <elliott> 0 for Void
08:42:27 <elliott> a+b is alternation, i.e. Either a b
08:42:36 <elliott> obviously the notation is picked for the effects on cardinality
08:42:43 <kallisti> elliott: and all of this are -- yes
08:42:44 <kallisti> that.
08:42:50 <kallisti> s/this/these/
08:43:26 <kallisti> what happens with recursive types?
08:43:37 <kallisti> infinity right?
08:43:41 <elliott> no
08:43:46 <elliott> you reason about them with fixed-points
08:43:52 <elliott> you can basically just use the chain rule
08:43:52 <elliott> for instance
08:44:01 <elliott> http://sprunge.us/LCNO
08:44:03 <elliott> where i do just that.
08:44:22 <zzo38> And I think it is repect to b isn't it? Rather than repect to a?
08:44:49 <elliott> zzo38: hmm, maybe -- but isn't that the rule you use for a^n for constant n?
08:44:56 <elliott> oh, riht
08:44:59 <elliott> yes, it's with respect to b :)
08:44:59 <elliott> *right
08:45:03 <elliott> so it's actually
08:45:09 <elliott> foo :: b -> (Maybe a, a -> b) -> (Maybe a -> b)
08:45:15 <elliott> bar :: (Maybe a -> b) -> (b, (Maybe a, a -> b))
08:45:22 <elliott> bar makes sense, the b is obviously (f Nothing)
08:45:29 <elliott> but I'm not sure what the (Maybe a) is at all
08:45:31 <kallisti> hmmm is there an integer division type?
08:45:37 <Sgeo> I can't seem to remember where the book started, but it ended at the end of a Star Wars parody. Or was it an LOTR Parody
08:45:39 <elliott> kallisti: you can't divide or subtract, generally
08:46:25 * Sgeo wikipedias
08:47:41 <Sgeo> Ah, ok, it was User Friendly, O'Reilly, 1999, ISBN 1-56592-673-0 January 25, 1998 - December 25, 1998 (misses out December 20 and probably some others)
08:49:41 <Sgeo> kallisti, I hope you don't think good or bad graphics make a webcomic
08:50:46 <elliott> hahaha
08:50:49 <elliott> is Sgeo seriously offended
08:50:54 <elliott> because kallisti doesn't like user friendly
08:50:58 <elliott> aka one of the worst comics in ever
08:51:35 <Sgeo> I'm just amused that "clipart" is the insult used
08:51:46 <kallisti> no it's so much more than that
08:51:51 <kallisti> clipart is like... the state of mind.
08:52:04 <kallisti> it's a clipart universe in a very real sense
08:52:15 <kallisti> not just TANGIBLE VISUAL PROJECTIONS OF ENTITIES
08:52:18 <kallisti> AHAHAHAHAAHAHAH
08:52:21 <kallisti> :)
08:52:48 <elliott> Sgeo: note that
08:52:51 <elliott> bad art
08:52:53 <elliott> does in fact make a web comic worse
08:53:06 <elliott> although i disagree that clipart=bad
08:53:22 <Sgeo> elliott, T&R is not bad.
08:53:36 <elliott> TOUCHING A LOT OF NERVES TODAY
08:53:41 <elliott> also: completely misreading things I said!
08:53:44 <Sgeo> Although "worse" doesn't imply bad I guess
08:53:48 <elliott> art is one aspect of a comic
08:53:56 <elliott> if triangle and robert is sufficiently funny
08:54:04 <elliott> then it is only harmed by its quality of art, not ruined by it
08:54:15 <elliott> whether meets this criterion or not
08:54:18 <elliott> is for you to decide.
08:55:37 <zzo38> As far as I know, it means, if the (Maybe a) is (Just x) then the (b) should instead be (f $ Just x) and the (a -> b) becoming (\a -> if a == x then f Nothing else f (Just a)) so there can be more than one answer; the simple definition is: bar f = (f Nothing, (Nothing, f . Just))
08:57:08 <elliott> zzo38: well, you need the answer that makes it a bijection along with foo
08:57:21 <elliott> that looks like it would work
08:57:26 <elliott> but I'm not sure what foo will do with that Nothing
08:58:32 -!- Ngevd has joined.
08:58:34 <zzo38> foo x (Nothing, f) = maybe x f;
08:58:40 <Ngevd> Hello!
08:59:11 <elliott> zzo38: and the Just case? :p
09:01:53 <oklopol> okokokokokokokokokokokokokokokokokokokokokokoko
09:01:55 <oklopol> okokokokokokokokokokokoko
09:01:58 <oklopol> okokokokokokokokokokokokoko
09:02:02 <oklopol> etc
09:02:06 <zzo38> foo x (Just y, f) Nothing = f y; foo x (Just y, f) (Just z) = if y == z then x else f z;
09:03:35 <elliott> zzo38: strange that an Eq constraint is required
09:03:37 <elliott> oklopol: hi
09:06:06 <oklopol> hies.
09:06:08 <zzo38> elliott: Yes it does seems strange. Am I correct about these functions though? It seem to me, that is how calculus says these functions are supposed to be, but I might have made some mistake
09:06:34 <elliott> zzo38: It seems right to me, just strange.
09:07:21 <kallisti> Sgeo: I could see user friendly being funny if you lived in a 90s office culture clipart universe
09:07:44 <zzo38> Yes, it seems right to me too
09:07:51 <kallisti> zzo38: I'm glad you agree.
09:07:56 <Sgeo> I think UF introduced me to Linux
09:08:16 <Sgeo> Is (Maybe a) just a+1?
09:08:25 <kallisti> yes
09:08:48 <Ngevd> Statement: as k approaches infinity, the curve y = x^(-k+1) approaches xy = 0
09:09:36 <Sgeo> What is [a]?
09:09:48 <zzo38> I have used (Maybe a) to represent the "Sa" in Typographical Number Theory although it wouldn't seem to work unless you have a type that can only hold bijective functions
09:09:54 <Sgeo> a^inf?
09:10:09 <elliott> Sgeo: List(a) = 1 + a*List(a)
09:10:49 <Sgeo> If a is >1, isn't that infinity?
09:10:53 <zzo38> So I suppose it is aleph 0
09:11:01 <Sgeo> >=1
09:11:03 <elliott> Sgeo: types are not, in fact, literally numbers.
09:11:48 <Ngevd> How do I tell if I can do IPv6?
09:11:53 <elliott> Ngevd: you can't
09:12:09 <Ngevd> :(
09:12:32 <zzo38> But there must be some command for dealing with IPv6 isn't it?
09:12:38 <Ngevd> How can I tell if my computer has an IPv6-capable internet connection?
09:13:00 <zzo38> It probably depend whether you are on Windows or Linux?
09:13:05 <elliott> Ngevd: It doesn't.
09:13:13 <elliott> If you're in the UK, it doesn't.
09:13:15 <oklopol> "<Ngevd> Statement: as k approaches infinity, the curve y = x^(-k+1) approaches xy = 0" you have one crazy topology
09:13:17 <elliott> Unless you're with, uh, Bogons or...
09:13:24 <elliott> There's two other ISPs that do it. Absolutely nothing big name.
09:13:38 <Ngevd> Oh
09:13:50 <oklopol> (1, 1) is always there for instance
09:13:54 <zzo38> I suppose ask the ISP if you want to know if they provide it
09:14:40 <Ngevd> I'm with quite a big ISP
09:24:24 <zzo38> Can you write Applicative laws in terms of pure fmap liftA2 (,)
09:24:40 <elliott> zzo38: didn't oerjan show you how to do that earlier?
09:25:18 <zzo38> elliott: oerjan confirmed it can be done; I don't remember if the laws were shown.
09:26:35 -!- derrik has joined.
09:26:48 <kallisti> zzo38: oh did you get my message thing?
09:26:58 <kallisti> pure = slide >>= pure or whatever
09:27:08 <zzo38> kallisti: What message thing?
09:27:30 <elliott> :t \a b -> (a <$>) <$> b
09:27:31 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f1 (f a) -> f1 (f b)
09:27:32 <kallisti> the message says
09:27:35 <kallisti> pure = slide >>= pure
09:27:38 <elliott> @hoogle (a -> b) -> f1 (f a) -> f1 (f b)
09:27:38 <lambdabot> Prelude fmap :: Functor f => (a -> b) -> f a -> f b
09:27:38 <lambdabot> Data.Functor fmap :: Functor f => (a -> b) -> f a -> f b
09:27:39 <lambdabot> Control.Monad fmap :: Functor f => (a -> b) -> f a -> f b
09:28:30 <zzo38> kallisti: What is that, though?
09:28:45 <kallisti> oh I thought it was related to something you were doing.
09:29:58 <elliott> kallisti: that was me, you idiot
09:30:22 <kallisti> I thought slide was a barrier monad thing
09:30:41 <elliott> no
09:30:58 -!- Phantom_Hoover has joined.
09:31:21 <elliott> hi Phantom_Hoover
09:35:12 <kallisti> elliott: hi
09:37:10 <Ngevd> I may start AAARGH
09:37:19 <Ngevd> DO'T SAY "I may"!!!
09:37:38 <Ngevd> I am thinking about contributing to rosetta code
09:44:05 <Ngevd> I reckon I can do an "is even" program with a 10 by 2 piet program
09:44:36 -!- pikhq_ has quit (Ping timeout: 244 seconds).
09:44:39 -!- pikhq has joined.
09:51:50 <Ngevd> And most of that is getting it to say "y" or "n"
10:05:36 -!- Ngevd has quit (Ping timeout: 248 seconds).
10:11:53 -!- Ngevd has joined.
10:13:58 <Ngevd> Hmmm
10:14:02 <Ngevd> Hmmmmm
10:14:07 <elliott> hmmmmm
10:14:15 <Ngevd> A functional Piet-like language
10:14:39 <Ngevd> Using a combitor stack
10:14:48 <Ngevd> No
10:14:59 -!- derrik has quit (Quit: quitter).
10:15:39 <Ngevd> Like Flobnar?
10:16:37 <kallisti> `word 25
10:16:45 <HackEgo> scheishece ung adawskrakauffiilei meaneflics ths angezcatitionvermoderotmat pos calodikarountickepat serprierayalandeseuriocas of co chstit ratiouskinaveong mana la al vidifey verne fratee consic prics ceteghtaystrestishartheer anfree leinflucterquilecid per
10:26:58 <zzo38> At first I thought of number theory in Haskell types by using types that can only hold bijective functions, but now I thought, is there another way, by using type families?
10:34:09 -!- zzo38 has quit (Remote host closed the connection).
10:36:05 -!- sebbu2 has joined.
10:36:18 <elliott> ceteghtaystrestishartheer
10:36:26 <elliott> kallisti: did you ever finish that better version of word
10:36:43 <kallisti> no
10:36:50 <kallisti> it will happen though :P
10:36:57 <kallisti> I HAVE TWO WEEKS OF CHRISTMAS BREAK
10:37:08 <kallisti> and then the beginning of next semester will be pretty easy.
10:37:15 <kallisti> so I'll time there as well to work on projects.
10:39:13 -!- sebbu has quit (Ping timeout: 248 seconds).
10:39:48 <Ngevd> Well, I've given up trying to write an Eodermdrone interpreter, on account of not actually understanding Eodermdrone
10:45:42 <elliott> i'm so shocked
10:48:17 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:02:01 -!- Phantom_Hoover has joined.
11:08:00 <Vorpal> elliott: you should give Eodermdrone a try!
11:09:04 <elliott> no
11:34:47 <elliott> gah
11:35:02 <elliott> i am not smart enough to write this function
11:36:14 <itidus21> Is it possible to write it in another language, such as pascal?
11:36:36 <elliott> you expect that to _simplify_ my task?
11:37:23 <itidus21> no.. just being a smartass.. i apologize
11:37:54 <elliott> apologise for what
11:38:00 <itidus21> being smartass
11:38:19 <elliott> i don't see how you were a smartass
11:38:52 <itidus21> by suggesting pascal
11:46:34 -!- zzo38 has joined.
11:47:23 <Ngevd> Hello, zzo38
11:48:15 <elliott> "Once an order is out the door there's not much
11:48:15 <elliott> we can do short of breaking into the post office in the middle of the night, and they keep a real mean dog in there now."
11:48:43 <Ngevd> That sounds familiar
11:49:50 <elliott> It's from this TopatoCo confirmation email.
11:50:09 <Ngevd> Yes, I ordered a shirt from them
11:50:14 <Ngevd> It is a nice shirt
11:50:23 <elliott> But is it as nice as a Homestuck book??? (Answer: Probably.)
11:50:26 <elliott> (But I got other things too!)
11:50:35 <fizzie> myndzi: I don't really have anything to say about that reply except that it's nonsense in places. The rows B35 and B36 are the same *time*: "UTC at midnight in Manila", and "Midnight in Manila"; they *must* yield equivalent Unix timestamp values. If you convert a Manila local time with toTimestamp to a Unix timestamp, it will not be a Unix timestamp representing that instant in time. (Also if you simply look at B33: Manila local time after "midnight(b8)" is 8am
11:50:35 <fizzie> . No matter how you muddle the waters, you have to subtract eight hours from 8am to end up to a midnight.)
11:51:41 <elliott> fizzie: My daring counter-prediction came true!
11:53:06 <fizzie> But it's certainly possible the math happens to "work out" in practice.
11:53:18 <elliott> extract ((Id 1 :*: Id 2) :*: (Id 3 :*: Id 4))
11:53:19 <elliott> :: Num a =>
11:53:19 <elliott> (:*:) (Id :*: Id) (Id :*: Id) (Loc ((Id :*: Id) :*: (Id :*: Id)) a)
11:53:27 <elliott> Fun fun fun.
11:59:19 <fizzie> myndzi: As for the table, "midnight(unixtime+8)" is very much different from "midnight(unixtime)+8". When you do "midnight(unixtime+8)", what you end up doing is basically "convert unixtime to a value that, when converted to humantime assuming local time is UTC, will give Manila local time values; then clamp that to midnight of that day, giving the correct midnight". You'd need to subtract eight hours to get back the actual Unix timestamp representing that inst
11:59:19 <fizzie> ant of local time in Manila, but the rounding to midnight will work in that scenario.)
12:00:00 <fizzie> myndzi: I pointed out that that will work before: "(If it was "today, 01:00am" here, and you wanted to round to local midnight, you could (I'm not sure I would): add two hours to the timestamp, so you'd have a Unix timestamp that'd translate to UTC 01:00am; a different instant in time, yet same in local time. Then clamp to UTC midnight, which would end up subtracting the "proper" one hour. ---"
12:00:20 <fizzie> That was for our UTC+2, but the principle is the same.
12:00:26 <fizzie> Okay, I think that was enough of it.
12:02:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:04:33 <fizzie> myndzi: Oh, one final explanation for midnight(unixtime+8) in terms of the document. It's just applying midnight() to the offsettime, so of course humantime() will return the correct-looking time. But it's still an offsettime, not a Unix timestamp representing that Manila local time. If you look at the G, H columns of the table, humantime() takes a Unix timestamp and returns the UTC human time, so the H column values are UTC midnights if you are treating G as a
12:04:33 <fizzie> Unix timestamp.
12:13:44 -!- derrik has joined.
12:13:50 <elliott> fizzie: All I'm hearing is "SO MANY TYPE ERRORS".
12:17:15 -!- Slereah has joined.
12:17:37 -!- Slereah_ has quit (Ping timeout: 260 seconds).
12:38:09 -!- Ngevd has quit (Ping timeout: 248 seconds).
12:39:11 <zzo38> Under what circumstances is a derivative type a functor/applicative/monad/comonad?
12:46:27 <elliott> fizzie: Can you summon oerjan?
12:56:25 -!- sebbu has joined.
12:56:25 -!- sebbu has quit (Changing host).
12:56:25 -!- sebbu has joined.
12:59:36 -!- sebbu2 has quit (Ping timeout: 252 seconds).
13:05:38 -!- oerjan has joined.
13:05:39 -!- elliott has quit (Read error: Connection reset by peer).
13:05:48 -!- MSleep has changed nick to MDude.
13:06:22 -!- elliott has joined.
13:16:34 -!- Ngevd has joined.
13:17:57 <oerjan> my cold seems to have got worse again :(
13:18:20 <elliott> oerjan!!!!!
13:18:27 <elliott> I've been waiting for hours so I can ask you about
13:18:29 <elliott> QUAD
13:18:29 <elliott> TREE
13:18:30 <elliott> ZIPPERS
13:18:33 <oerjan> i am afraid that the only thing that can save me is the relief of knowing that i will never, ever, have to figure out those damn quadtree zippers.
13:18:40 <elliott> NOOOOOOOOOOOOOOOoooooooooooooooo
13:18:55 <oerjan> OTHERWISE I WILL DIE
13:19:01 <Ngevd> What's a quad tree?
13:19:05 <elliott> oerjan: Does it help if they're only 1-cursor, not n-cursor, and I already have a formulation of them, and it only has two constructors?
13:20:00 <oerjan> Ngevd: it's a tree where each internal node has 4 branches; moreover they are labelled nw, ne, sw and se and are used to implement 2d maps
13:20:11 <oerjan> elliott: oh hm maybe
13:20:34 <elliott> oerjan: In fact I daresay it's even elegant(!)
13:20:36 * oerjan _will_ regret this.
13:20:53 <elliott> THAT'S COMPLETELY IMPOSSIBLE
13:21:21 <oerjan> didn't we discuss the 1-cursor case before going into that n-cursor madness
13:23:59 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
13:24:14 <elliott> oerjan: the one-cursor case is really easy, it's just
13:24:28 <elliott> data QuadTree' a = Top | Fork Direction (QuadTree' a) (QuadTree a) (QuadTree a) (QuadTree a)
13:24:30 <elliott> or in my version
13:24:40 <elliott> data QuadTree' a = Top | Fork (QuadTree' a) (Four' (QuadTree a))
13:24:54 <elliott> you can derive that with the standard derivative rules
13:25:21 <Ngevd> I'm struggling to understand this "quad tree" thing
13:25:26 -!- Vorpal has joined.
13:25:50 <kallisti> hi
13:26:12 <Ngevd> Mine you, (.) confuses me and list zippers seemed obvious?
13:26:41 <Vorpal> Ngevd, what is confusing about (,) ?
13:26:50 <Ngevd> (.)
13:26:51 <Vorpal> also I presume you meant "Mind you"?
13:26:54 <Vorpal> oh right
13:26:59 <Vorpal> :t (.)
13:27:00 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
13:27:02 <Vorpal> how is composition confusing
13:27:13 <zzo38> Can there be a typeclass for derivative types?
13:27:58 <elliott> zzo38: http://hackage.haskell.org/packages/archive/functor-combo/0.1.0/doc/html/FunctorCombo-Holey.html
13:28:11 <Vorpal> :t (Prelude..)
13:28:12 <lambdabot> forall b c a. (b -> c) -> (a -> b) -> a -> c
13:28:19 <Vorpal> okay that is the most awkward notation ever
13:29:57 <zzo38> elliott: O, that one uses type families; I suppose that works
13:32:36 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:37:19 -!- Ngevd has joined.
13:38:15 <Ngevd> I've just twigged how (->) r is a functor
13:38:17 <Ngevd> :D
13:38:26 <Ngevd> Haskell competency, here I come!
13:39:42 <oerjan> yay
13:39:51 <oerjan> next: how it is a monad.
13:40:08 <Ngevd> I don't know what a monad is yet
13:40:17 <oerjan> ok after next, then
13:40:57 <zzo38> It is actually very simple: fmap = (.); return = const; join f x = f x x;
13:42:14 <oerjan> and each of them is obvious from the types they have to have
13:42:33 <zzo38> oerjan: Yes.
13:43:38 <oerjan> the tricky part is to realize that it could possibly be a monad in the first place
13:44:17 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
13:44:20 <elliott> oerjan: haskell zen
13:44:44 <elliott> oerjan: please please please become haskell zen master
13:44:53 <oerjan> a, um...
13:45:02 <elliott> yes
13:45:04 <elliott> that's the first step
13:45:29 <Vorpal> elliott, what is the type of clapping with one hand?
13:45:42 <oerjan> If you cannot get out of the monad, bring what you desire _into_ the monad!
13:45:51 <Vorpal> :D
13:46:05 <kallisti> > f >>= (g :: Expr -> Expr -> Expr) $ x
13:46:06 <lambdabot> g (f x) x
13:46:09 <Ngevd> (-> IO ())
13:46:47 <elliott> oerjan: become the monad you wish to see int he world --buddha
13:47:24 <kallisti> actually introducing the (-> a) monad when Ngevd doesn't really get monads in general yet is probably a bad idea?
13:47:49 <elliott> there is no (-> a) monad
13:47:52 <oerjan> to the Applicative, the flow of the world is known from the beginning; to the Monad, it changes at every step.
13:48:05 <elliott> return :: b -> (b -> a) -- impossible to implement
13:48:19 <elliott> oerjan: you did not succumb to my trolling :(
13:48:35 <oerjan> which trolling?
13:48:41 <elliott> <elliott> oerjan: become the monad you wish to see int he world --buddha
13:48:53 <kallisti> elliott: what is the function monad then.
13:49:12 <elliott> kallisti: ((->) r)
13:49:17 <oerjan> now that _return_ type there is trolling, though.
13:49:21 <kallisti> elliott: ....... -_-
13:49:25 <kallisti> that's what I meant
13:49:28 <elliott> that's not whaty ou said
13:49:31 <elliott> (+ a)
13:49:32 <elliott> ((+) a)
13:49:34 <elliott> not the same thing
13:49:37 <kallisti> no shit.
13:49:53 <zzo38> If the input type is a monoid then it makes a comonad as well. extract = ($ mempty); duplicate f x y = f $ mappend x y;
13:50:01 <oerjan> Only the negative cannot fully operate in the world.
13:50:26 <zzo38> elliott: Well in that case it is commutative but OK
13:50:32 <elliott> well, yes :P
13:50:36 <elliott> zzo38: but not necessarily!
13:50:38 <elliott> Num has no laws.
13:50:59 <oerjan> zzo38: does that mean Writer is a comonad, even without monoid?
13:51:23 <oerjan> hm obviously snd is extract
13:51:32 <oerjan> er
13:51:41 <zzo38> oerjan: Yes.
13:51:43 <oerjan> :t runWriter
13:51:44 <lambdabot> forall w a. Writer w a -> (a, w)
13:52:09 <oerjan> zzo38: so there is a sort of duality between Reader/-> and Writer/(,)
13:52:25 <kallisti> :t extract
13:52:26 <lambdabot> forall source. (Extract source) => (Int, Int) -> source -> source
13:52:32 <kallisti> :(
13:54:08 <zzo38> Well, you can use the ((,) a) type (which I also made a Monad instance of; I don't particularly like the names "Reader" and "Writer") in which case: extract = snd; duplicate (x, y) = (x, (x, y));
13:55:08 <zzo38> oerjan: OK yes I suppose so, there is that sort of duality. I didn't realize it at first, but yes that is how it work
13:56:31 <elliott> oerjan: this is surprising?
13:56:32 <elliott> it's in the names
13:56:53 <oerjan> zzo38: i think the Reader and Writer names are so that one can use their abstract API without confusing with prelude types
13:56:55 -!- Phantom_Hoover has joined.
13:57:03 <oerjan> which have many other uses
13:58:25 <zzo38> Well, the names are useful for making monad transformers ReaderT and WriterT names
13:59:07 <kallisti> what's the name of the ST transformer?
13:59:08 <kallisti> STT?
13:59:13 <elliott> there is none
13:59:23 <kallisti> lame.
13:59:35 <zzo38> (The comonad library has the instances for (-> a) and ((,) a) in there; my monoidplus library has the monad instance for ((,) a))
13:59:38 <elliott> kallisti: you can't implement it safely without it being really slow.
14:01:15 -!- azaq23 has joined.
14:02:05 <zzo38> return = (,) mempty; join (x, (y, z)) = (mappend x y, z);
14:04:11 <oerjan> hm would state also be a comonad with a monoid restriction?
14:05:58 <oerjan> some join definitions are so much simpler than the corresponding >>=
14:06:00 <Ngevd> Bye
14:06:01 -!- Ngevd has quit (Quit: Goodbye).
14:11:17 <kallisti> what is the exact relation between join and >>=?
14:11:46 <kallisti> > [1,2,3] >>= (return.return)
14:11:47 <lambdabot> No instance for (GHC.Show.Show (m t))
14:11:47 <lambdabot> arising from a use of `M6416529558...
14:12:01 <zzo38> kallisti: join = (>>= id);
14:12:01 <oerjan> x >>= f = join (fmap f x), join x = (x >>= id)
14:12:25 <kallisti> ah
14:12:40 <kallisti> right that makes sense.
14:13:00 <kallisti> definitely should add join to Monad.
14:13:05 <oerjan> and fmap f x = x >>= return . f, to complete the correspondence
14:13:19 -!- pikhq has quit (Ping timeout: 252 seconds).
14:13:24 -!- pikhq_ has joined.
14:14:07 <kallisti> :t join .: fmap
14:14:08 <lambdabot> forall (m :: * -> *) a a1. (Monad m, Functor m) => (a1 -> m a) -> m a1 -> m a
14:15:12 <kallisti> hmmm
14:15:22 <oerjan> kallisti: the thing is you still couldn't make a default for >>= based on join until Monad subclasses Functor
14:15:26 <kallisti> so you could actually automatically define Functors for Monads.
14:15:32 <kallisti> but I'm guessing haskell doesn't do this by default?
14:15:39 <oerjan> nope, hysterical raisins
14:15:58 <oerjan> haskell makes it too hard to rearrange the class hierarchy
14:16:06 <kallisti> @info Monad
14:16:06 <lambdabot> Monad
14:16:08 <kallisti> ..
14:16:17 <kallisti> I thought Functor was required for a Monad instance?
14:16:20 <oerjan> kallisti: there isn't actually an @info command, you know
14:16:43 <kallisti> oerjan: but... but I want to believe in lambdabot...
14:16:47 <oerjan> you're just being fooled by spelling correction
14:17:02 <kallisti> @tyep x
14:17:03 <lambdabot> Expr
14:17:06 <oerjan> @info do x <- test; return (2*x)
14:17:07 <lambdabot> test >>= \ x -> return (2 * x)
14:17:21 <kallisti> ........info = undo???
14:17:23 <kallisti> how
14:17:41 <kallisti> TOO MUCH LEVENSHTEIN DISTANCE
14:17:51 <oerjan> :D
14:17:56 <kallisti> ....well
14:17:58 <kallisti> not really.
14:18:18 <elliott> 2 much
14:18:23 * elliott awaits oerjan kick.
14:18:30 <kallisti> I actually used a levenshtein-like algorithm in detecting typos with some operations having different weights
14:18:48 * oerjan kicks elliott with the BOOT |__\
14:18:57 <elliott> :'(
14:19:50 <kallisti> so substition was 2, insertion was 3, deleting was 2, and swapping two letters was 1.
14:19:51 <Vorpal> hm, where is the code for making show on a [Char] pretty print like a string?
14:19:58 <elliott> :t showList
14:19:59 <lambdabot> forall a. (Show a) => [a] -> String -> String
14:20:10 <elliott> then instance (Show a) => Show [a] where shows = showList
14:20:13 <elliott> it's a hideous hack
14:20:17 <Vorpal> ouch
14:20:18 <elliott> showList is in the Show class itself
14:20:39 <Vorpal> horrible
14:21:03 <elliott> Vorpal: Better than Erlang.
14:21:04 <Vorpal> elliott, so doing something similar for [MyOwnType] would be impossible?
14:21:11 <elliott> Perfectly possible.
14:21:13 <elliott> That's what showList is for.
14:21:15 <Vorpal> ah
14:21:16 <Vorpal> right
14:21:46 <Vorpal> what is showsPrec in Show for?
14:21:56 <elliott> precedence
14:22:04 <Vorpal> huh
14:22:31 <kallisti> "pretty print like a string" doesn't Show already do this for [Char]?
14:22:54 <kallisti> > showList "hello"
14:22:55 <lambdabot> Overlapping instances for GHC.Show.Show
14:22:55 <lambdabot> (GHC.B...
14:23:16 <kallisti> > show 'a'
14:23:17 <lambdabot> "'a'"
14:23:20 <kallisti> >_>
14:23:44 <kallisti> :t showList
14:23:45 <lambdabot> forall a. (Show a) => [a] -> String -> String
14:23:49 <kallisti> ...oh
14:23:54 <Vorpal> elliott, what about doing it for other things than lists? Like, say a "Rope a" type?
14:24:03 <Vorpal> (or whatever)
14:24:23 <elliott> Vorpal: You can't.
14:24:25 <Vorpal> ah
14:24:30 <kallisti> > showList "what" "what"
14:24:31 <elliott> Well.
14:24:31 <lambdabot> "\"what\"what"
14:24:35 <elliott> That's not strictly true.
14:24:40 <elliott> But it's painful and won't work how you want.
14:24:56 <kallisti> > show "what"
14:24:57 <Vorpal> I see
14:24:57 <lambdabot> "\"what\""
14:25:03 <kallisti> what's... different about show and showList here.
14:25:08 <Vorpal> so that is the bit that is such a horrible hack then
14:25:13 <Vorpal> well, one part of it
14:26:36 * kallisti confused
14:26:49 <oerjan> kallisti: showList is defined in the show instance for a, but is used to define show for [a]
14:26:57 <oerjan> *Show instance
14:27:10 <kallisti> I understand that
14:27:10 <kallisti> but
14:27:14 <elliott> no you don't
14:27:19 <kallisti> I don't understand what they are accomplishing.
14:27:22 <kallisti> or trying to accomplish
14:27:27 <elliott> > ['a','b','c']
14:27:28 <lambdabot> "abc"
14:27:30 <elliott> > [1,2,3]
14:27:31 <lambdabot> [1,2,3]
14:27:34 <elliott> note discrepancy
14:27:35 <kallisti> elliott: I understand what showlist does
14:27:40 <kallisti> read: I understand what showlist does
14:27:43 <oerjan> kallisti: they're accomplishing that Strings can be shown in a different format than other [a]'s
14:27:46 <elliott> kallisti: incorrect
14:27:49 <elliott> if you understood
14:27:52 <elliott> you would not be asking these questions
14:27:54 <fizzie> myndzi: Oh, one final thing: here's example tables of my own for all three of "clamp to midnight, add eight hours", "clamp to midnight, subtract eight hours" and "convert to 'offsettime' by adding eight hours, clamp to midnight, convert back": https://docs.google.com/spreadsheet/ccc?key=0AoJ9OAzXNfZAdG5ESEZ3MzBkWW9nWEJTYXI0NFdaQmc&hl=en_US#gid=0
14:28:02 <kallisti> what does vorpal mean by "pretty printing strings"
14:28:13 <kallisti> and how is it different that what happens in Prelude by default.
14:28:15 <elliott> fizzie: High hopes, do you?
14:28:17 <kallisti> that is my question.
14:28:19 <elliott> Have.
14:28:20 <elliott> For this.
14:28:21 <Vorpal> kallisti, <elliott> > ['a','b','c'] <lambdabot> "abc" <-- this is what I mean
14:28:34 <oerjan> kallisti: he is referring to what the Prelude does
14:28:40 <fizzie> elliott: As of now I've seriously, finally, honestly, truly, done.
14:28:40 <kallisti> ..oh
14:28:42 <kallisti> okay.
14:28:49 <kallisti> I thought Vorpal was trying to do something different from what the Prelude does.
14:28:53 <kallisti> nevermind.
14:28:54 <elliott> fizzie: Even if he disagrees?!
14:28:58 <fizzie> elliott: (Except if I figure out one more way to say the same thing.)
14:29:34 <kallisti> showList could easily be lifted to other typed via a separate typeclass.
14:29:44 <kallisti> *types
14:30:02 <elliott> kallisti: what?
14:30:13 <kallisti> showSomethingElse :: (GoodNameHere s, Show a) => s a -> String -> String
14:30:20 <elliott> showList dpends on being in the Show typeclass to work.
14:30:31 <elliott> *depends
14:30:40 <oerjan> elliott: sometimes you are ridiculously presumptuous about what it is people don't understand...
14:30:51 <elliott> oerjan: s/people/kallisti/
14:30:55 <elliott> kallisti: you could not implement showSomethingElse in any instance
14:31:11 <elliott> unless GoodNameHere basically makes s a isomorphic to [a].
14:31:21 <elliott> in which case it's not very useful
14:31:23 <elliott> as you could just use showList.
14:32:27 <kallisti> what about a 2-param typeclass with a Show instance?
14:32:33 <kallisti> ...is that a thing you can do?
14:32:42 <oerjan> <elliott> showList dpends on being in the Show typeclass to work. <-- well you _could_ add (usually empty) instances all over the place for the separate typeclass
14:32:49 <kallisti> what becomes a legal instance when you enable extensions is kind of fuzzy to me.
14:32:56 <elliott> oerjan: yes. that's not what kallisti is proposing though
14:34:34 <oerjan> i guess OverlappingInstances could also work for this, maybe not without flaws.
14:34:43 <kallisti> that's what I was thinking.
14:35:26 <elliott> apparently it kind of sort of works
14:35:34 <elliott> it was proposed for Vector
14:36:03 <oerjan> iiuc the flaw being that you could sometimes not get the specific instance if there wasn't enough information to tell that it applies
14:36:58 <zzo38> Can you use multi-parameters type class?
14:38:47 <oerjan> (insufficiently late resolution, and then choosing the general instance because it's the only one already present)
14:39:53 -!- derrik has quit (Quit: gone).
14:42:15 -!- zzo38 has quit (Remote host closed the connection).
14:43:03 <kallisti> oerjan: at least with the most common case (Char) I don't think that would be an issue though
14:43:50 <oerjan> kallisti: there could be an issue with polymorphic functions
14:44:10 -!- ais523 has joined.
14:45:12 <oerjan> like if you are having f :: Show a => (a, [a]) -> String; f (x, l) = show x ++ ": " ++ show l
14:45:38 <oerjan> and because of the explicit type declaration, you _cannot_ use the specific instance for Show [a]
14:45:49 <oerjan> i think.
14:45:57 <oerjan> i haven't actually tested this stuff :P
14:48:38 <kallisti> huh, weird.
14:49:00 <kallisti> apparently clients don't like it when you disappear for 6 months because of RAPIDLY PILING BACKLOG OF HOMEWORK
14:50:24 <oerjan> :D at today's http://www.mezzacotta.net/postcard/
14:52:33 <kallisti> the image refuses to load.
14:52:38 <elliott> :D
14:52:45 <oerjan> XD
14:52:46 <kallisti> oh...
14:52:47 <kallisti> right
14:52:47 <kallisti> :P
14:53:02 <oerjan> elliott: ok you're right, kallisti _is_ special
14:53:25 <kallisti> I assume you can only mean special in a very awesome way.
14:53:32 <oerjan> but of course.
14:53:38 <kallisti> I guess I was just expecting
14:53:41 <kallisti> something funnier?
14:53:46 <oerjan> ;_;
14:54:00 <kallisti> like maybe if I could get the image to load
14:54:02 <elliott> hi ais523; what do you call a meta-embarrassingly parallel problem
14:54:06 <kallisti> the joke would be funny.
14:54:11 <elliott> that is, an embarrassingly parallel problem where each unit of work is itself embarrassingly parallel
14:54:30 <kallisti> elliott: parallel embarassment trees
14:54:41 <ais523> elliott: it's still just ordinary embarassing parallelism, isn't it?
14:55:05 <elliott> ais523: but now it's _really_ embarrassing!
14:55:35 <ais523> elliott: but any embarassingly parallel problem with enough elements is two embarassingly parallel problems; the first half, and the second half
14:55:37 <ais523> etc
14:56:17 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
14:56:51 -!- Phantom_Hoover has joined.
14:57:39 <kallisti> elliott: just mergesort and you'll be fine.
14:57:40 <kallisti> >_>
14:57:55 * kallisti good advice
14:58:20 <elliott> ais523: but this is embarrassingly parallel /squared/!
14:58:45 <ais523> kallisti: nah, bitonic sort
14:59:04 <ais523> it's basically the same algo as mergesort, but adapted for parallel implementation
14:59:08 <kallisti> elliott: wow that sounds strangely relevant to your quadtrees!
14:59:24 <ais523> much the same way as an FFT is one way to do a DFT, a bitonic sort is one way to do a mergesort
14:59:38 <elliott> <!-- According to whoever added that, Wikipedia doesn't support MPICC, so it's listed as C instead. -->
14:59:38 <elliott> --visible text on [[Bitonic sorter]]
14:59:48 <kallisti> lol
14:59:59 <kallisti> let's push it for featured article status.
15:00:27 <ais523> elliott: that /is/ correct comment syntax in Wikipedia, so presumably someone escaped it, perhaps by accident
15:00:44 <elliott> ais523: it's in a code block
15:01:34 <ais523> aha, that probably explains it
15:01:40 <kallisti> http://28.media.tumblr.com/tumblr_lrbca4gZCE1qdtcgvo1_500.jpg
15:01:48 <ais523> you don't want to know how MediaWiki parses extension tags (such as GeSHi's <code>)
15:02:05 <ais523> and I can easily imagine that it would pass comments literally to the extension without parsing them
15:04:18 <elliott> ais523: it should, <!-- ... --> is valid code in many languages
15:04:24 <elliott> such as HTML
15:04:36 <ais523> agreed
15:05:00 <ais523> it's a syntax error in INTERCAL, though
15:06:50 <ais523> hmm, it's valid, and potentially even useful, brainfuck, though
15:11:25 <oerjan> > let so <!-- legal = legal; isn't --> it = isn't in 1 <!-- 2 --> 3
15:11:26 <lambdabot> 2
15:16:26 <ais523> oerjan: I'd call that valid but not potentially useful
15:18:58 <elliott> A lot of au pairs, especially those who are new to the role, don't know what to expect when they get started do the job with a new host household. Even though your principal duty would be to care for the little ones, there are also a array of other household tasks you could be asked to do. The aim of this article is to give you a fast insight into the forms of tasks you might be anticipated or asked to do.
15:19:08 <elliott> ais523: --> is a perfectly plausible operator name
15:19:19 <ais523> yep, but <!-- isn't really
15:19:21 <oerjan> RUBBISH THIS IS OBVIOUSLY THE RIGHT NOTATION FOR PREPROHISTOQUADROMORPHIC ZIPPOPOTAMUS OPERATORS
15:19:22 <ais523> :t (-->)
15:19:24 <lambdabot> parse error (possibly incorrect indentation)
15:19:29 <ais523> ?
15:19:42 <ais523> I didn't expect a parse error from that; is it the starting with - that matters?
15:19:50 <ais523> :t \a b -> a --> b
15:19:52 <lambdabot> forall t t1. t -> t1 -> t
15:19:56 <oerjan> that _should_ be legal
15:20:06 <oerjan> :t (--+test)
15:20:08 <lambdabot> parse error (possibly incorrect indentation)
15:20:11 <ais523> yep, and that verifies that there's an --> operator already, which doesn't surprise me
15:20:25 <Deewiant> It's just lambdabot failing
15:20:26 <ais523> :t (-*)
15:20:27 <lambdabot> Not in scope: `-*'
15:20:32 <ais523>
15:20:35 <Deewiant> GHCi handles it correctly
15:20:38 <oerjan> :t (--test)
15:20:39 <lambdabot> parse error (possibly incorrect indentation)
15:20:48 <oerjan> :t (-+-test)
15:20:49 <lambdabot> Not in scope: `-+-'
15:20:49 <lambdabot> Not in scope: `test'
15:21:02 <oerjan> i think it is breaking the comment parsing rules
15:21:15 <oerjan> that _shouldn't_ be a comment
15:21:20 <Deewiant> (--test) is supposed to be a parse error
15:21:22 <ais523> yep, it seems to get confused by --
15:21:24 <Deewiant> (--+test) and (-->) aren't
15:22:14 <ais523> which given that that's comment syntax, is a plausible thing for it to be confused by
15:22:58 <ais523> personally, I think that for a language with -- comments, the correct comment introducer should be "-- " with the space
15:23:04 <ais523> otherwise you get too many clashes
15:23:11 <ais523> :t (--)
15:23:13 <lambdabot> parse error (possibly incorrect indentation)
15:23:19 <elliott> <ais523> yep, but <!-- isn't really
15:23:23 <elliott> it might be like <-- but strict!
15:23:38 <ais523> !<-- or <--! would be better names there
15:23:41 <elliott> <ais523> personally, I think that for a language with -- comments, the correct comment introducer should be "-- " with the space
15:23:44 <oerjan> ais523: the correct comment introducer regex in haskell is ---* _not_ followed by an operator char
15:23:50 <elliott> ais523: it's complicated for haskell
15:23:51 <ais523> hmm, what language is it that uses =/= as its not-equal? I've forgotten
15:23:52 <elliott> right, what oerjan said
15:24:00 <elliott> i've forgotten too
15:24:08 <ais523> elliott: I knew it was something like that, but forgot what exactly
15:24:32 <ais523> I thought it was -- followed by space or alphanumeric, which is basically the same thing, possibly even exactly the same thing (allowing for me forgetting about multiple - being allowed)
15:24:53 <elliott> no
15:24:54 <elliott> --| foo
15:24:56 <elliott> --^ foo
15:24:58 <oerjan> ais523: no, there are other non-operators like ,;
15:25:00 <elliott> among others
15:25:02 <elliott> haddock uses those
15:25:04 <elliott> hmm, wait
15:25:09 <elliott> > let a --^ b = False in 99 --^ 3
15:25:10 <lambdabot> False
15:25:18 <elliott> oh.
15:25:22 <elliott> I guess the space is requiredc
15:25:37 <ais523> > let a--^b=False in 99--^3
15:25:38 <lambdabot> False
15:25:42 <ais523> which space?
15:25:50 <Deewiant> ais523: "-- ^"
15:25:52 <ais523> ah, OK
15:25:53 <elliott> after -- before haddock chars
15:26:27 <ais523> most $language-doc syntaxes I've seen just repeat the last char of the comment syntax
15:26:46 <ais523> like javadoc's /** and the /// used in some C++ documentation languages
15:26:50 <ais523> or even (** in OCaml
15:27:10 <elliott> haddock has multiple types of comment, though
15:27:17 <ais523> I imagine ## wouldn't work so well in, say, Perl, though
15:27:23 <elliott> ais523: also, /*@?
15:27:26 <elliott> or hmm, is that just splint
15:27:29 <ais523> that's splint
15:27:35 <Deewiant> /*! is somewhere
15:27:36 <ais523> and it uses it to not clash with anything else
15:27:36 -!- oerjan has quit (Quit: Later).
15:27:44 <ais523> (and even lets you change the @ to some other character if you still get a clash somehow)
15:28:02 <elliott> it should use \
15:28:08 <elliott> /*\ least confusing syntax
15:28:09 <Deewiant> It was Doxygen; /*! or //!
15:28:13 <elliott> [three pages]
15:28:14 <elliott> */
15:29:16 <ais523> elliott: nah, //\
15:29:25 <elliott> ais523: but /*\ doesn't look like an opener!
15:29:39 <ais523> elliott: and //\ by itself affects the next line too
15:29:47 <elliott> ha
15:29:48 <ais523> pretty rare but mindboggling C++/C99 trap
15:30:01 <kallisti> hi gyus
15:30:18 <ais523> hi
15:30:55 <ais523> (deletion of backslash-newline takes precedence over pretty much everything; I think character set decoding, including trigraphs, comes first though)
15:31:04 <kallisti> perl's documentation syntax is already awesome, so ## wouldn't be useful.
15:31:08 <kallisti> also ## wouldn't work well for Python either.
15:31:14 <kallisti> or.. well.. any language that uses #
15:31:29 <ais523> well, Python uses """ for multiline comments, typically, doesn't it?
15:31:37 <ais523> and it also uses that for docstrings, if they're in a particular location
15:31:42 <kallisti> """ is documentation and multi-line comments, yes.
15:32:07 <kallisti> not a bad idea I suppose.
15:33:12 <ais523> well, it's really a misuse of the string syntax, but it's basically become part of the language now
15:33:24 <ais523> I rarely see people use q/ ... / for comments in Perl, even though you /could/ do that
15:33:25 <kallisti> I thought it was always a part of the language.
15:33:35 <kallisti> because of __doc__ and such.
15:33:42 <kallisti> that's why people use it.
15:34:00 <ais523> hmm, I think you could use any of the other string syntaxes for docstrings, just """ is the most convenient
15:34:09 <kallisti> well, yes.
15:34:26 <kallisti> >>> def hi(): "sup"
15:34:26 <kallisti> ...
15:34:26 <kallisti> >>> hi.__doc__
15:34:26 <kallisti> 'sup'
15:34:57 <elliott> lisp uses normal string syntax for docstrings
15:35:00 <elliott> for whatever it's worth
15:35:16 <kallisti> you could easily add docstrings to perl as well.
15:36:14 <kallisti> sub func($$&) { my ($name, $doc, $subref) = @_
15:36:56 <ais523> kallisti: err what? that takes the docstring as an argument on every call of the function
15:37:11 <ais523> oh, it's a function you call to register docstrings, that makes more sense
15:37:11 <kallisti> ???
15:37:13 <kallisti> yes
15:37:48 <kallisti> hmmm
15:37:58 <kallisti> though I'm not sure that you can write function wrappers in Perl.
15:38:05 <kallisti> I don't see an overloader for it
15:38:49 <kallisti> actually this is similar to what I do my perl IRC bot for registering commands
15:39:10 <kallisti> command Name => Category => "Doc string",
15:39:13 <kallisti> sub {
15:39:14 <kallisti> ...;
15:39:19 <kallisti> };
15:39:28 -!- zzo38 has joined.
15:39:50 <olsner> "Maybe there's a pointer fault in the holosuite's parameter file."
15:40:26 <kallisti> once I split it up into multiple modules I might have it so that if the category string is omitted it uses a dynamically scopped $category var, so you can define local $category = "whatever" in the top-level of the module and make all the commands in the same help category.
15:41:37 <kallisti> er wait, would that work...?
15:41:58 <kallisti> yes it would nevermind
15:43:21 <kallisti> actually I could be making more use of the state variable declaration
15:43:29 <olsner> ooh, this episode was nominated for an Emmy Award!
15:43:33 <olsner> ... for Outstanding Hairstyling for a Series.
15:43:39 <kallisti> ais523: is our basically like global in Python?
15:43:44 <kallisti> I'm not sure I understand it completely.
15:43:57 <ais523> kallisti: it's package scope
15:44:08 <ais523> the variable can be referenced from anywhere in the package
15:44:15 <ais523> and anywhere else if you give the name of the package as a namespace
15:44:37 <kallisti> right but I see it uses inside subroutines a lot.
15:44:44 <kallisti> *used
15:46:14 <ais523> kallisti: well, if you package-scope a variable in a subroutine, it's going to keep its value between calls, I think
15:46:25 <kallisti> okay so I think our is very similar to global in nature but not quite the same.
15:46:28 <kallisti> ais523: that's what state is for.
15:46:43 <kallisti> basically if I understand it correctly, our doesn't necessarily allocate any memory
15:46:58 <kallisti> it just makes a package-scoped variable available by name rather than requiring qualification.
15:47:07 <ais523> yep; but our was invented before state
15:47:22 <ais523> so it's not surprising it's used in contexts where state would be better
15:47:37 <ais523> just like old Perl code uses a lot of local where nowadays you'd use my, because my hadn't been invented yet
15:48:11 <kallisti> hmmm, okay.
15:48:43 <kallisti> I think if there's already a package-scoped variable by that name then our just lets you refer to it without the package qualification???
15:48:46 <ais523> state is /very/ recent as Perl goes, the version of Perl installed here considers it an experimental feature
15:49:01 <ais523> kallisti: well, you don't have to "create" variables in Perl, they just exist
15:49:19 <ais523> so yes, you're referring to the package-scoped variable with that name without having to qualify
15:49:31 <ais523> you could do that anyway, but use strict would shout at you, so you use the our to let use strict know that it's deliberate
15:49:48 <kallisti> right but typically my, local, and state pretty much always create a new variable (possibly shadowing an old one)
15:49:53 <kallisti> whereas our doesn't necessarily.
15:50:49 <ais523> my/local/state are all /scoping/ mechanisms
15:51:11 <ais523> and actually, local never creates a new variable, it just fiddles with the value of an existing variable to make it look new
15:51:42 <kallisti> well, right, but I'm thinking in the context of use strict where the variable effectively cannot be used without being declared first.
15:52:12 <kallisti> though local kind of does work differently...
15:52:35 <kallisti> because you can't know if it's defined until runtime, so...
15:53:43 <kallisti> ah okay if you use a dynamically scoped variable outside of its lexical scope you need to declare the variable again... I think.
15:53:53 <kallisti> assuming use strict vars
15:55:30 <kallisti> !perl local $x = 2; package Hello; print $x;
15:55:40 <kallisti> !perl use strict; local $x = 2; package Hello; print $x;
15:55:40 <EgoBot> Global symbol "$x" requires explicit package name at /tmp/input.4318 line 1.
15:56:40 <kallisti> !perl sub hello() { print $x } package Hello; local $x = 1; print hello
15:56:48 <kallisti> !perl use strict; sub hello() { print $x } package Hello; local $x = 1; print hello
15:56:49 <EgoBot> Global symbol "$x" requires explicit package name at /tmp/input.4494 line 1.
15:57:00 <kallisti> hmmm
15:57:24 <kallisti> I've never used local so maybe I don't understand it very well.
15:59:37 <kallisti> !perl use strict; sub hello() { print $::x } package Hello; local $x = 1; print hello
15:59:37 <EgoBot> Global symbol "$x" requires explicit package name at /tmp/input.4780 line 1.
16:00:05 <kallisti> !perl use strict; sub hello() { print $Hello::x } package Hello; local $Hello::x = 1; print hello
16:00:16 <kallisti> o_O
16:00:17 <kallisti> ais523: help
16:00:52 <ais523> kallisti: "hello" has no referent at the end of that line
16:01:03 <ais523> ::hello() is out of scope, and there's no Hello::hello
16:01:35 <ais523> !perl use strict; sub hello() {print $Hello::x } package Hello; local $Hello::x = 1; print ::hello()
16:01:35 <EgoBot> 11
16:02:03 <kallisti> hmmm, okay, but there's no way to omit the package there in hello?
16:02:26 <kallisti> actually I could use caller
16:02:26 <ais523> sure, there are libraries for importing
16:02:29 <kallisti> so it's not an issue.
16:04:47 <kallisti> at the top of a package, what is
16:04:51 <kallisti> local $x, by default?
16:04:55 <kallisti> what package is it in?
16:06:42 <ais523> that package variable, I think
16:06:44 <ais523> just like our $x
16:06:57 <ais523> except that local sets the value to undef, then changes it back to the previous value when it goes out of scope
16:07:07 <ais523> don't think of local as declaring variables at all, because it doesn't
16:07:10 <ais523> it mutates variables
16:07:17 <kallisti> ah okay
16:07:22 <kallisti> so I think I want our instead.
16:07:29 <kallisti> our $category = "category"
16:07:33 <ais523> !perl my $x = 4; my $rx = \$x; print $$rx; {local $x = 5; print $$rx; } print $$rx;
16:07:33 <EgoBot> Can't localize lexical variable $x at /tmp/input.5617 line 1.
16:07:35 <kallisti> then in the command subroutine which registers new commands
16:07:38 <ais523> oh right, you can't
16:07:41 <ais523> !perl our $x = 4; my $rx = \$x; print $$rx; {local $x = 5; print $$rx; } print $$rx;
16:07:42 <EgoBot> 444
16:07:54 <kallisti> if there's category specified then I want to access $category in caller
16:07:55 <ais523> ah no, local affects global, not package, variables
16:07:58 <ais523> !perl $x = 4; my $rx = \$x; print $$rx; {local $x = 5; print $$rx; } print $$rx;
16:07:58 <EgoBot> 444
16:07:59 <kallisti> which I don't remember how to do.
16:08:10 <ais523> or, hmm, I'm misremembering something ehre
16:08:12 <ais523> *here
16:08:27 <ais523> !perl $_ = 4; my $r = \$_; print $$r; {local $_ = 5; print $$r; } print $$r;
16:08:28 <EgoBot> 444
16:08:40 <kallisti> ...I definitely don't think that's how refs work.
16:08:48 <ais523> perhaps it's the ref that's the problem
16:09:32 <kallisti> okay so I could use our, as I outlined above
16:09:33 <kallisti> or
16:09:38 <kallisti> local $category = "category"
16:09:42 <kallisti> and then access the global variable?
16:10:06 <ais523> you should probably not use local ever, nowadays
16:10:22 <kallisti> I've used local a few times to change special variables
16:10:24 <kallisti> but that's it.
16:10:39 <ais523> !perl local $x = 4; sub y {print $x}; { local $x = 6; y(); } y();
16:10:40 <EgoBot> Missing right curly or square bracket at /tmp/input.6648 line 1, at end of line
16:10:43 <kallisti> local $, = " ";
16:10:47 <kallisti> for example
16:11:08 <ais523> !perl local $x = 4; sub y {print $x} { local $x = 6; y(); } y();
16:11:09 <EgoBot> Missing right curly or square bracket at /tmp/input.6733 line 1, at end of line
16:11:31 <ais523> !perl local $x = 4; sub y {print $x} if (1) { local $x = 6; y; } y;
16:11:31 <EgoBot> Transliteration replacement not terminated at /tmp/input.6817 line 1.
16:11:35 <ais523> a/ha
16:11:42 <kallisti> lol
16:11:43 <ais523> s/$/\//
16:11:48 <kallisti> y ;
16:11:53 <ais523> !perl local $x = 4; sub y {print $x} if (1) { local $x = 6; y ; } y ;
16:11:54 <EgoBot> Transliteration replacement not terminated at /tmp/input.6893 line 1.
16:12:01 <ais523> nope, I think I need to disambiguate it more clearly
16:12:08 <ais523> !perl local $x = 4; sub y {print $x} if (1) { local $x = 6; &y(); } &y();
16:12:08 <EgoBot> 64
16:12:10 <ais523> there we go
16:12:13 <ais523> that's what local does
16:12:13 <kallisti> y is probably a bad bareword
16:12:21 <ais523> it was meant to be a sub call, not a bareword
16:12:30 <kallisti> aka bareword
16:12:48 <ais523> no, barewords are where you write an identifier and it's interpreted as a string
16:13:09 <kallisti> no I believe barewords are literally identifiers with no sigil.
16:14:00 <kallisti> hmmm okay
16:14:06 <kallisti> but then what happens when you turn strict on>
16:15:05 <kallisti> well not strictly identifiers
16:15:10 <ais523> strict doesn't mind subroutine calls to subroutines you've declared
16:15:21 <kallisti> but any string of valid identifier characters without word boundaries and no leading sigil
16:15:35 <kallisti> but it doesn't it might the local $x stuff?
16:15:45 -!- elliott has quit (Ping timeout: 248 seconds).
16:16:22 <kallisti> I've seen the phrase "bareword" appear in the context of the => operator, subroutine names, and bareword filehandle names.
16:17:26 <kallisti> I think I'll just avoid local because it confuses me.....
16:18:51 <kallisti> !perl sub hi { print $x}; local $x = 1; print hi;
16:18:51 <EgoBot> 11
16:19:02 <kallisti> okay, so that works.
16:19:04 <kallisti> not confusing
16:19:13 <kallisti> !perl use strict; sub hi { print $x}; local $x = 1; hi;
16:19:14 <EgoBot> Global symbol "$x" requires explicit package name at /tmp/input.7662 line 1.
16:19:24 <kallisti> !perl use strict; sub hi { print $::x}; local $x = 1; hi;
16:19:24 <EgoBot> Variable "$x" is not imported at /tmp/input.7725 line 1.
16:19:34 <kallisti> this is where I get confused
16:20:40 <kallisti> !perl use strict; sub hi { our $x; print $x}; local $x = 1; hi;
16:20:40 <EgoBot> Variable "$x" is not imported at /tmp/input.7885 line 1.
16:21:17 <kallisti> !perl use strict; our $x; sub hi { print $x}; local $x = 1; hi;
16:21:18 <EgoBot> 1
16:21:22 <kallisti> ah.
16:22:04 <kallisti> but that doesn't show me how to use local with global names.
16:26:09 <ais523> to get a /truly/ global name in Perl, you have to start it with a control character
16:26:29 <ais523> !perl use strict; sub hi { print ${^test}}; local ${^test} = 1; hi;
16:26:29 <EgoBot> syntax error at /tmp/input.8539 line 1, near "{^"
16:26:44 <ais523> !perl use strict; sub hi { print ${^Test}}; local ${^Test} = 1; hi;
16:26:45 <EgoBot> 1
16:26:53 <ais523> there we go, forgot it had to be capital there
16:27:04 <kallisti> ah right.
16:27:07 <kallisti> okay. so don't do that.
16:27:07 <ais523> but the syntax for true globals is awkward precisely because you rarely want to use them
16:27:16 <kallisti> I'll just use package scope with caller to do what I want.
16:27:48 <kallisti> though I don't remember what that looks like...
16:27:58 <ais523> kallisti: whatever you want, I suspect it's a bad idea
16:28:44 <kallisti> nah it's a great idea.
16:29:15 <kallisti> maybe if you like conventionally lexically scoped programs where you pass information via function arguments.
16:29:31 <kallisti> in which case you live your life IN FEAR.
16:30:41 <kallisti> actually no there's an easier way to do it.
16:30:51 <kallisti> I can just have a package scoped variable in the main bot module
16:31:03 <kallisti> and then the command modules override it with local.
16:31:15 <kallisti> ALL IN THE NAME OF SAVING A FEW KEYSTROKES.
16:33:12 <fizzie> I've seen somewhere a "'local' mutates a global (package) variable, doesn't make a new variable" example a bit like
16:33:13 <fizzie> !perl our $x = 42; sub inner { print "xi $x "; } sub way1 { my $x = 69; print "x1 $x "; inner; } sub way2 { local $x = 69; print "x2 $x "; inner; } way1; print "xa1 $x -- "; way2; print "xa2 $x";
16:33:13 <EgoBot> x1 69 xi 42 xa1 42 -- x2 69 xi 69 xa2 42
16:33:36 <fizzie> (Except with better names, I suspect.)
16:34:31 -!- derdon has joined.
16:42:58 <kallisti> > my $x = "test"; print ${x $x}
16:42:59 <lambdabot> <no location info>: parse error on input `='
16:43:02 <kallisti> lol
16:43:04 <kallisti> !perl my $x = "test"; print ${x $x}
16:43:05 <EgoBot> Can't locate object method "x" via package "test" (perhaps you forgot to load "test"?) at /tmp/input.10941 line 1.
16:43:12 <kallisti> there we go
16:43:16 <kallisti> that's the syntax I was looking for.
16:45:19 <kallisti> so I can do my $package = caller; eval "require $package"; do_stuff ${category $packge};
16:45:35 <kallisti> though I think that require step won't be necessary as all the command modules /should/ be preloaded.
16:46:18 <kallisti> well.... no that's a method call syntax.
16:46:20 <kallisti> not quite what I want
16:47:46 <kallisti> so I can do my $package = caller; eval "require $package"; {no strict 'refs'; do_stuff ${"$packge::category"}}
16:48:13 <kallisti> but I think using local will be easier, in fact.
16:48:21 <kallisti> so in the command module:
16:48:35 <kallisti> local $Bot::default_category = "whatever";
16:48:52 <kallisti> yeah that sounds much easier.
16:49:33 <kallisti> but it's good to know how to do this highly dynamic perl voodoo in case I need it?
16:49:40 * kallisti has done similarly dynamic Python voodoo before.
16:52:50 <fizzie> I think you need ${"${package}::category"} or something there, otherwise "$package::category" will, when dquote-interpolating, be looking for variable $category in package 'package'.
16:53:01 <kallisti> right.
16:53:50 <kallisti> I actually wrote a function wrapper class in Python that could take a string of Python code and recompile itself with the string as the function's body.
16:54:19 <kallisti> it was going to be for a MUD codebase. the idea being that the Python code was available and editable from within the MUD itself.
16:54:28 <kallisti> or parts of it anyway
16:56:33 <kallisti> but turns out that's pretty complicated to implement.
16:57:26 <kallisti> probably easier to version control the source code, allow the source code to be changed in-file rather than dynamically in memory, then hot-swap the code.
17:00:12 <Ikarus> kallisti: yes
17:00:18 <Ikarus> kallisti: don't even try in memory tricks
17:08:31 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Christopher_Nolan_at_WonderCon_2010_1.JPG
17:08:33 <Phantom_Hoover> Wait what.
17:08:35 <Phantom_Hoover> No.
17:08:41 <Phantom_Hoover> Nolan does not look like that.
17:10:07 <olsner> how do you know?
17:10:28 -!- sebbu has quit (Read error: Connection reset by peer).
17:10:51 -!- sebbu has joined.
17:10:51 -!- sebbu has quit (Changing host).
17:10:51 -!- sebbu has joined.
17:12:12 <Phantom_Hoover> olsner, because... he can't...
17:15:14 <zzo38> I found out, that Wolfram|Alpha can compute equatorial coordinates (such as "right ascension of sun"), but ecliptic coordinates do not work. You also cannot seem to specify what epoch to reference. However, it can compute astrological signs. (The blog mentions "ecliptic longitude", in relation to the moon; but the program doesn't understand "ecliptic longitude of moon")
17:31:42 <ais523> wow YouTube's got uglyh
17:31:43 <ais523> *ugly
17:31:57 <Phantom_Hoover> Google seem to have gone nuts with all their UIs.
17:32:31 <ais523> the "Subscribe" button doesn't even have a correctly centered label
17:33:08 <fizzie> "a**igned" -- profanity filter strikes again.
17:33:21 <ais523> clbuttic
17:34:01 <fizzie> From the same page: "tool-a**isted", "occa**ions" (presumably a typo originally) -- the page in question was tasvideos' SMB infopage, http://tasvideos.org/GameResources/NES/SuperMarioBros.html
17:34:50 <ais523> I don't think the TASvideos wiki censors
17:34:57 <ais523> perhaps it was a copy-and-paste from somewhere that does
17:36:53 <fizzie> Perhaps; there are no **s on other "game resources" pages which also contain the word "tool-assisted".
17:39:30 -!- Taneb has joined.
17:39:38 <Taneb> Hello
17:39:42 <ais523> hi
17:39:49 <Taneb> I am at a party
17:40:06 <Taneb> And I'm on IRC
17:40:33 <Taneb> Priorities, right?
17:42:18 <fizzie> Are the other people at the party on IRC too?
17:42:20 <ais523> <TASVideoAgent> Page GameResources/NES/SuperMarioBros edited by ais523 (remove censorship of the "ass" in "tool-assisted" and similar words; presumably this was caused by a confused proxy or the like): http://tasvideos.org/GameResources/NES/SuperMarioBros.html
17:43:42 <Taneb> fizzie: nah, CoD
17:44:37 <Taneb> Which I am awful at.
17:50:41 <fizzie> Church of...? oh, right Call of Duty.
17:50:49 <fizzie> Cash on Delivery.
17:52:24 <ais523> fizzie: Discordianism?
17:54:06 <fizzie> I don't think they have a single Church, really.
17:57:25 <ais523> still, you can use the name to describe an individual church out of a set of more
17:58:09 <kallisti> There is no Goddess but Goddess and She is Your Goddess
17:58:22 <fizzie> I guess. But normally I suppose you'd just use whatever they call themselves; the Paratheo-Anametamystikhood Of Eris Esoteric or whatever.
17:58:36 <kallisti> There is no Movement but The Erisian Movement and it is The Erisian Movement.
17:59:58 <Taneb> Now we will watch FPS Russia
18:00:41 <ais523> fizzie: I'm reminded of something at school I wasn't involved in, which had two teams which were unofficially competing
18:00:51 <ais523> one called themselves "A Team", so the other called themselves "Another Team"
18:00:55 <ais523> it made for very confusing announcements
18:01:58 <fizzie> Another Team, or A Team in short.
18:05:21 <ais523> "for short"
18:05:26 <ais523> but no, they didn't do that
18:05:29 <ais523> it'd have been silly
18:13:57 <ais523> wow, ITV1 is being unexpectedly awesome right now
18:14:16 <ais523> they're showing a game show on, but it's a celebrity special, and they've got Ann Widdecombe there (former politician)
18:14:26 <ais523> and she's talking back to the host continuously and trying to take control of the show
18:15:16 <ais523> for anyone who's upset with game show hosts stating the obvious continuously, this is revenge
18:16:03 <ais523> aww, she just won the round, presumably it'll go back to normal now
18:17:23 <ais523> I'd be very surprised if it's not up on YouTube tomorrow, anyway
18:46:46 <Phantom_Hoover> fungot!
18:46:46 <fungot> Phantom_Hoover: in the middle ages, sir slush!... you're gaspar, the guru of time! get moving! crono!!!
18:47:29 -!- sebbu2 has joined.
18:50:08 <Gregor> ais523: Tool-buttisted speedrun.
18:50:29 -!- sebbu has quit (Read error: Operation timed out).
18:51:30 <Deewiant> Utility-buttisted surinedrun
18:52:31 <Gregor> You mean surinatedrun
18:52:43 <Deewiant> No, s/pee/urine/
18:54:00 <ais523> one of you is doing present tense, the other past tense
18:54:18 <Deewiant> I was thinking like a stupid word filter
18:54:53 -!- sebbu2 has changed nick to sebbu.
18:58:03 <Taneb> I think Deewiant is using the noun
18:58:04 -!- monqy has joined.
18:58:25 <Deewiant> Right
19:28:24 <Phantom_Hoover> Oh god, I'm reading r/atheism it is so unpleasant
19:32:09 -!- Taneb has quit (Ping timeout: 255 seconds).
19:32:28 -!- Taneb has joined.
19:39:46 <Phantom_Hoover> I retreated once I was seriously considering becoming religious just to spite them.
19:39:47 -!- Taneb has quit (Read error: Connection reset by peer).
19:54:09 -!- derdon has quit (Remote host closed the connection).
20:07:19 <zzo38> You don't need to become religious; just learn some things about religious stuff, and in some cases that might not be needed either if they simply make logical mistakes.
20:09:24 <zzo38> If you *want* to be religious, then do so; but that isn't a very good reason to do as far as I know.
20:13:26 <Slereah> Are we talking religion?
20:13:38 <Slereah> did someone come in here thinking esoteric meant something else again?
20:28:23 <Gregor> YOU GUYS
20:28:25 <Gregor> YOU GUYS
20:28:27 <Gregor> I have a kitty.
20:36:32 -!- derrik has joined.
20:37:16 <oklopol> Gregor: no one cares
20:37:24 <oklopol> pix please
20:38:31 -!- oerjan has joined.
20:46:07 <oerjan> does anyone else find it annoying when a blog post has no date near the top, so you have no idea before starting to read whether it is from today or 3 years ago...
20:48:32 * oerjan thought of this when visiting shtetl-optimized, although for this particular post he knew it was from today by how he found it
20:52:48 <Deewiant> I find it annoying when they only have month/day but not year
20:57:14 -!- oerjan has quit (Remote host closed the connection).
20:57:20 -!- oerjan has joined.
21:37:51 -!- Ikarus has quit (Ping timeout: 240 seconds).
21:39:25 <zzo38> Once I read something it says how to make C program without a semicolon. I didn't know at first; but now I realized it and I can understand.
21:39:31 <zzo38> Can you understand?
21:39:59 <oerjan> hm...
21:40:25 <oerjan> main () { if ( ...crazy expression... ) {} }
21:40:44 <oerjan> should be one way
21:40:48 <zzo38> oerjan: Yes, that is it.
21:41:12 <pikhq_> A while loop ought to fill the same role.
21:41:55 <oerjan> well yeah but the if statement is equivalent to ...crazy expression...;
21:42:10 <pikhq_> Yeah; while's just more useful if you want iteration in there.
21:42:50 <oerjan> oh hm what about variable declarations, can you do those?
21:43:05 <pikhq_> No, but you can cheat.
21:43:15 <Deewiant> main() { if (foo(1)) {} } foo(int x) { ... }
21:43:17 <pikhq_> foo(int foo, int bar, int baz) { ... }
21:44:07 <oerjan> ah essentially like the let ... in ... to (\ ... -> ...) ... conversion of haskell
21:45:33 <oerjan> i don't recall enough details to know if you can do arrays or structs in that way.
21:45:48 <zzo38> Except that, in C you can change a variable inside of an expression, and including looping too.
21:46:11 <Deewiant> No nonempty structs/unions nor arrays
21:46:35 <Deewiant> Pointers work though, so you can malloc
21:46:36 <oerjan> oh well, you still have malloc
21:46:40 <zzo38> You can probably use alloca to make up array access
21:46:57 <Deewiant> Possibly VLAs, not sure how those work
21:47:06 <Deewiant> foo(int x, int a[x]) ?
21:47:56 <fizzie> You can probably have a compound-literal array and then pass that toa function which takes a pointer.
21:51:16 -!- pikhq has joined.
21:51:28 <fizzie> void foo(int* p) {} int main(void) { if (foo( (int[]){1,2,3} ), 1) {} }
21:51:34 <fizzie> That sort of thing.
21:51:37 -!- pikhq_ has quit (Ping timeout: 260 seconds).
21:56:54 -!- oerjan has quit (Remote host closed the connection).
21:57:13 -!- oerjan has joined.
21:57:45 -!- derrik has quit (Quit: disappear).
21:57:47 <oerjan> isp acting up :(
22:01:43 <Jafet> main ought to return something.
22:01:53 <Jafet> http://codepad.org/xVFNe2LP
22:02:44 <Deewiant> You can use exit()
22:03:03 <oerjan> Jafet: I DETECT A ;
22:03:15 <Jafet> Oh, so you could.
22:03:23 <Jafet> Maybe I could rewrite that
22:03:30 <Deewiant> main can also default-return zero in C99
22:04:07 <Jafet> oerjan: ;}
22:26:41 <fizzie> That's funny, Ubuntu includes a LSM thing which patches ptrace so that (by default) you can't attach to an arbitrary process with the same uid; you can only attach to a real descendant. (Or if the target has set you as a "designated tracer" with prctl.)
22:29:24 <fizzie> Otherwise it just goes all http://p.zem.fi/icgj
22:37:54 <ais523> wait, is that actually writing to stderr? (or /dev/tty?)
22:38:05 <ais523> and if so, what's doing the writing? the kernel?
22:38:20 <oerjan> the kernel of truth
22:39:54 <fizzie> ais523: I suspect it's part of Ubuntu's GDB patches.
22:40:06 <fizzie> (But haven't checked.)
22:40:12 <ais523> oh, they patched gdb to explain the error caused by their patch to ptrace? that makes more sense
22:40:30 -!- derdon has joined.
22:41:13 <fizzie> dpkg-source: info: applying ptrace-error-verbosity.patch
22:41:15 <fizzie> That sounds like it.
22:41:38 <fizzie> And that is it.
22:42:14 -!- PiRSquared17 has joined.
22:44:14 <zzo38> GHC has a extension for existential types but I cannot seem to make existential logic statements with that?
22:48:12 <oerjan> well if you have data Exists (p :: * -> *) = forall x. Exists (p x)
22:48:46 <oerjan> then you should be able to use Exists P where P is a type of kind * -> *
22:48:54 <zzo38> oerjan: O, that is how to do it?
22:48:56 <oerjan> *type constructor
22:49:07 <oerjan> i think so
22:50:18 <oerjan> well, P needs to be a data type, not a synonym
22:50:28 <oerjan> (or it could be a newtype)
22:52:15 <zzo38> Could a Classical constraint be used? Would it help with anything? (Classical is the class I made up for law of excluded middle)
22:53:11 <oerjan> well yes, if you need any constraints on x you should add them
22:53:51 <zzo38> OK, I will try like that.
22:56:44 <zzo38> What is an example to use Exists type?
22:57:25 <oerjan> i don't know about its type logic use, it's just the obvious way i'd try it
22:58:59 <oerjan> hm
23:00:37 <oerjan> test :: (forall x. P x -> Q x) -> Exists P -> Exists Q; test f (Exists x) = Exists (f x)
23:00:48 <oerjan> something like that?
23:01:12 <oerjan> oh and P and Q could be type variables
23:02:58 <oerjan> test2 :: (forall x. p x -> q) -> Exists p -> q; test2 f (Exists y) = f y
23:05:44 <oerjan> i think s/x/px/g for the pattern variable in the first one
23:05:54 <oerjan> since it's not actually of type x
23:07:52 -!- atehwa has quit (Remote host closed the connection).
23:08:42 <oerjan> untested, hopefully those work
23:10:55 -!- Klisz has joined.
23:18:01 <zzo38> Is it possible to use type families for equality of cardinality of natural numbers types? (I am using uninhabited type for zero and Maybe for successor)
23:20:40 <oerjan> i don't know
23:24:10 -!- PiRSquared17 has left.
23:32:55 <myndzi> fizzie: wrt midnight(unixtime+8) vs midnight(unixtime)+8, i discovered my error, the correction, and why the difference was (and thought i noted it?) when composing the spreadsheet. since it was a last minute addition, i admit to not examining it thoroughly, so yeah, i could see needing to subtract 8 again; i'll check it out.
23:34:28 <myndzi> as for "i told you so", i confess to missing that line in a furor of typing because it was unrelated to whatever thread of conversation i was following at the time, and forgetting to go back and read it. something like that anyway. at least i suppose we understand each other now :)
23:35:16 <fizzie> I'm willing to call it quits as long as you are, sure. :)
23:35:25 <myndzi> i don't see anything to argue about? :P
23:35:33 <myndzi> no need to "call it quits"
23:35:51 <myndzi> i never wanted to "win", only to reach common understanding :)
23:38:18 <fizzie> Oh, there's always something to argue about; if nothing else, fonts. But yes, I suppose it's all good now.
23:40:05 <zzo38> There are many font making programs, including the private character set editor included with Windows; but I think METAFONT is best one.
23:40:24 <oerjan> fizzie: see what you have done
23:40:33 <myndzi> wow, that was impressive
23:40:38 <myndzi> t-mobile is shittier than aol to cancel with
23:40:52 <myndzi> i called them up and they didn't even OFFER me a menu option to talk to someone about ANYTHING relevant to my account
23:40:59 <myndzi> i tried hitting 0 but it was like pshaw
23:41:01 <fizzie> oerjan: Lo, there are many font-making programs in the archipelago of software.
23:41:22 <myndzi> so i go through the menu to talk to someone about "starting" an account, got on the line with a person in about 30 seconds, ask them to transfer me to cancellation
23:41:27 <myndzi> and then was on hold for about 15 minutes
23:41:59 <myndzi> heh, i know a guy who made a font of his handwriting
23:42:14 <myndzi> he did a good job of it too, learned all about the fancy technical stuff you can do
23:42:46 <myndzi> after he got english and the extended accented characters etc. he moved on to greek, russian, japanese kana, and hangeul
23:42:47 <myndzi> lol
23:42:59 <fizzie> An urban legend says those automated phone systems automatically detect when the caller is spouting curse words, and then connect to a real person to calm them down, to avoid losing a customer. (In reality I'd guess they'd rather just record those bits for the staff to chuckle about later.)
23:43:19 <myndzi> heh heh, i suppose it's quite possible these days
23:43:51 <zzo38> myndzi: O, you did try pushing zero. I was going to suggest that. Another suggestion, try saying "Agent" or "You are a stupid idiot" into the telephone; apparently sometimes that works. Another suggestion is to attempt guessing at passwords or extra DTMF tones, going to their office, violating terms of service in obvious way, etc
23:43:57 <myndzi> yes i did
23:44:00 <myndzi> t-mobile used to be like
23:44:13 <myndzi> Automated voice: I'm sorry, if you just punch the right numbers *i* can help you
23:44:21 <myndzi> and if you kept pounding it you'd get someone
23:44:24 <myndzi> but not even that anymore
23:44:42 <myndzi> anyway, it turns out when you port a number
23:44:48 <myndzi> it automatically cancels the account
23:44:56 <fizzie> "4) Say the magic word: "complaint" (as in "I'd like to file a complaint") as many times as possible. You may be forwarded to a real human being after a mere three or four utterances of that word." <- from a page about dealing with IVR systems, the ones you (try to) speak to.
23:44:58 <myndzi> which is interesting because all they need to port a number is the phone number and account number apparently
23:45:02 <myndzi> seems quite open to abuse
23:45:11 <fizzie> "5) Curse. Many programs are trained to recognize swear words and often take you to an operator after you drop an f-bomb or two. Just remember not to carry this method over when you're speaking to the actual operator!"
23:45:22 <fizzie> I guess it's less likely if the system is just a touch-tone one.
23:45:30 <myndzi> related: http://www.youtube.com/watch?v=30J-WEx0xhI
23:46:13 <myndzi> but yeah. That Feel when an automated fucking system tries to be like "no really, i know better than you" >:(
23:46:19 <zzo38> fizzie: The first thing I always try is to push zero, followed by "Agent" if zero doesn't work.
23:46:27 <myndzi> especially when they specifically design it to make it hard to get to things you want
23:46:56 <fizzie> There's a website called http://gethuman.com/ which tries to collect best ways to reach a human at different companies.
23:46:58 <myndzi> 0 -> agent -> shit motherfucker ass tits cunt cock motherfucker ass tits motherfucker shit come on!
23:47:07 <myndzi> actually i think i got the very end of that wrong
23:47:21 <myndzi> http://www.youtube.com/watch?v=tjayrv8HSP4
23:47:23 <myndzi> i didn't make it up :)
23:48:29 <myndzi> ahh, i forgot one 'shit' :P
23:53:31 <zzo38> I would have, for my business telephone service, you talk to a person who is answering the telephone, normally. But, if you want automated system you can push 1 before someone answers, in case you don't want to bother them. Or, if nobody is there, can be a voice message "Nobody is available to answer telephone; please leave a message after the tone or push 1 for automated system. [BEEP]"
23:54:15 <myndzi> that would be pretty sweet.
23:54:34 <myndzi> the other one is "press a button to speak in your native language"
23:54:35 <myndzi> >:(
23:54:44 <myndzi> but that could be solved by a receptionist too!
23:56:47 <zzo38> Yes, it can be a receptionist who understand the language. Not my plan; but an idea in csae people want to implement a scheme like this one, you can have many possible ideas.
23:57:40 <myndzi> or just can RECOGNIZE other languages and forward you
23:58:02 <myndzi> i can recognize a decent number of different languages, but most of the time the optios are only 'english' and 'spanish'
23:58:05 <myndzi> so that's not hard at all
23:58:21 <myndzi> i haven't really worked out how to distinguish korean from japanese though
23:58:26 <myndzi> except maybe to listen for a bunch of desu
23:58:38 <myndzi> i was surprised they sounded so similar when chinese was so distinct
23:58:48 <Deewiant> Korean sounds "harder"
23:59:01 <Deewiant> More k's and p's
23:59:04 <myndzi> and with those one-syllable names, i expected it to sound more chopped up
23:59:10 <myndzi> ah, interesting
23:59:10 <pikhq> Korean has significantly more variety in its syllables.
23:59:23 <pikhq> They can end with consonants!
23:59:30 <myndzi> oh now that's a nice giveaway
23:59:37 <myndzi> i'll remember that one :)
23:59:47 <Deewiant> The syllable thing isn't necessarily easy to hear though
23:59:53 <pikhq> Also: Chinese isn't a single language. :)
23:59:55 <myndzi> perhaps
2011-12-04
00:00:05 <Deewiant> Unless you're fluentish you might not notice the syllable boundaries that well
00:00:18 <pikhq> And claiming Chinese people speak Chinese is a bit like claiming European people speak Latin.
00:00:23 <zzo38> Yes, just if a receptionist recognize different language, that can possibly work too.
00:00:24 <myndzi> yeah, but i can lump (each chinese language) apart from japanese at least
00:00:26 <Deewiant> And e.g. "desu" isn't typically pronounced with a noticeable "u" :-P
00:00:26 <myndzi> so meh.
00:00:29 <pikhq> True, true.
00:00:32 <myndzi> Deewiant: but it's spelled with it
00:00:42 <myndzi> i know the u is generally silent :)
00:00:48 <pikhq> Deewiant: Is if you're a girl.
00:00:50 <pikhq> :)
00:00:53 <Deewiant> myndzi: Sure, but we were talking about hearing comprehension, no?
00:00:53 <myndzi> haha
00:00:57 <myndzi> yeah, but if you're a girl
00:01:01 <Deewiant> pikhq: In anime :-P
00:01:02 <myndzi> you give yoruself away with all the nyans
00:01:05 <myndzi> ;)
00:01:16 <Deewiant> To be exact, a teenage girl
00:01:24 <myndzi> heh heh
00:01:52 <pikhq> Deewiant: Well, yeah... It does have a particularly, I dunno, *ditzy* feel to it.
00:02:11 <pikhq> Somewhat like saying "Like, yeah, totally"
00:02:58 <myndzi> i'm not a fan of this kind of thing in general, but this was pretty interesting:
00:02:59 <myndzi> http://www.sporcle.com/games/lukebradford/guessthelanguage
00:03:05 <olsner> "<pikhq> And claiming Chinese people speak Chinese is a bit like claiming European people speak Latin." <-- isn't it more like claiming we speak european?
00:03:11 <myndzi> i got more than i thought i would
00:04:40 <olsner> but I think we should rather fix the stigma associated with being ignorant about far-away places, we don't know shit about them and they probably don't know shit about us
00:04:50 -!- Taneb has joined.
00:04:51 <pikhq> olsner: Ish. Except that the Chinese languages largely derive from a single language that one *could* plausibly call "Chinese".
00:05:01 <Taneb> Wow, I think I may actually be drunk
00:05:18 <myndzi> well, i don't know enough about chinese to distinguish, say, mandarin
00:05:29 <pikhq> With Classical Chinese I *think* being the prestige form of said language?
00:05:35 <olsner> well, the european languages are largely all indo-european too... not all latin, but latin/germanic
00:05:36 <myndzi> so i just said 'chinese' to refer to the language group in general
00:05:45 <myndzi> not to express that there was only one of them
00:05:46 <olsner> (except the exceptions...)
00:05:54 <Taneb> olsner: explain HUngarian
00:05:57 <Taneb> ninja'd
00:06:01 <pikhq> olsner: It also bears the similar property that Latin was for ages the lingua franca.
00:06:04 <fizzie> There was a whole session (6 papers) of language identification in a recent conference I was. And NIST has a bi-yearly (well, 2003 .. 2009; I don't see results for 2011) competition about it.
00:06:11 <pikhq> Much like Classical Chinese was for ages the lingua franca.
00:06:26 <pikhq> myndzi: I couldn't reliably do that either.
00:06:52 <pikhq> Of course, the closest I can get to "speaking 'Chinese'" is some strange sort of pidgin if I'm really pressed.
00:08:26 <myndzi> the closest i can get to "speaking 'Chinese'" is ching chow
00:08:27 <myndzi> :P
00:09:22 <olsner> who's the poorest chinese? tom peng pung
00:09:37 <fizzie> Apparently if you give them 30 seconds of conversational telephone speech, the best systems in 2009, if allowed a 2% "miss" (as in, "uh, I dunno") rate, get around 98% correct, for the NIST LRE "closed set" task, which is 12 languages. (And around 90% correct with 10% miss rate if you only give them three seconds to work with.)
00:09:46 <olsner> (== empty money pouch in swedish, it's hilarious!)
00:10:03 <Deewiant> myndzi: 33/36 in five minutes, with a couple of guesses that took most of the time
00:10:10 <myndzi> nice.
00:10:20 <fizzie> olsner: There's quite a number Finnish equally "hilarious" "jokes" too.
00:10:25 <Deewiant> The first column went in less than a minute, I think :-P
00:10:33 <myndzi> yeah
00:10:36 <myndzi> first column was pretty easy
00:10:52 <fizzie> Yokohama Humahuta, the famous Japanese boxer.
00:11:14 -!- Taneb has quit (Quit: Page closed).
00:11:25 <olsner> fizzie: there's also ranta runtiringen, the infamously bad finnish boxer :)
00:11:47 <fizzie> With that sort of surname, he's probably from Sweden originally.
00:12:21 <fizzie> And the Russian gynecologist, Nikolai Kopeloi.
00:12:27 <olsner> the pun probably doesn't work as well if you *actually* know how finnish surnames sound
00:12:36 <pikhq> That's certainly not a Japanese surname; "hu" is an invalid mora in Japanese.
00:12:58 <fizzie> Yes, I don't think they strive for very much linguistic accuracy in these.
00:13:00 <olsner> pikhq: found a map where fuji was called huzi once
00:13:02 <pikhq> Alas.
00:13:21 <pikhq> olsner: That's the result of a fairly pedantic romanisation.
00:14:25 <myndzi> what do you mean "hu" is an invalid mora?
00:14:29 <myndzi> or do you just mean it should be fu? :P
00:15:16 <pikhq> olsner: The kana for "fu" in the table is in the "h" row, but it's invariably pronounced as something rather close to "fu" rather than "hu".
00:15:22 <pikhq> myndzi: Just that it should be "fu".
00:15:48 <myndzi> heh
00:15:56 <myndzi> it's a VERY light f in many cases
00:15:58 <pikhq> olsner: Also, the kana for "shi" is in the "s" row, but pronounced as "shi", and the voiced version of that is pronounced "ji" instead of "zi".
00:16:13 <myndzi> the way we pronounce f involves the teeth touching the lip pretty much
00:16:46 <myndzi> but the way fu/hu is pronounced can often be the barest closing of the mouth from a fully open 'h'
00:17:06 <olsner> pikhq: yeah, I know... but isn't that just a matter of romanization whether it's f or h (and z or j)? I'd be happy to say that it "is" an h but h is pronounced weirdly with some vowels
00:17:08 <pikhq> myndzi: There's a reason I said "close to". It's one of the phonemes in Japanese that doesn't really match anything in English.
00:17:28 <myndzi> yeah. but because of that i would certainly not call it invalid in either spelling
00:17:54 <pikhq> myndzi: Bah.
00:18:02 * myndzi shrugs
00:18:08 <myndzi> i was only curious if i was missing something ;)
00:18:18 <myndzi> i'm a self-confessed gringo when it comes to most languages
00:18:30 <myndzi> but i know more about japanese and spanish than "absolutely nothing"
00:20:26 <oerjan> saturn as wikipedia's featured article? i thought they'd have run out of planets long ago
00:20:40 <zzo38> Maybe they changed it a lot since then
00:21:29 <zzo38> The reason you write "hu" or "fu" is just whether you use grid romaji or sound romaji.
00:22:32 <olsner> does grid romaji actually exist except as something you can make up according to how the grid looks?
00:23:04 <oerjan> hm indeed the talk page says it was featured four years ago
00:23:17 <pikhq> I'm guessing he's just using it as a way to describe the two differing approaches in Romanization of Japanese.
00:23:18 <zzo38> olsner: I don't know. I don't even know if "grid romaji" is a standard term for such things
00:23:41 <pikhq> i.e. the distinction between nihon-shiki and Hepburn.
00:30:13 -!- GreaseMonkey has joined.
00:36:27 -!- ais523 has quit (Remote host closed the connection).
00:37:49 <Sgeo> kallisti, UPDOOT
00:38:20 <zzo38> List of lies about the computer game: * The sliders on the title screen are not real sliders. * Most of the levels have yellow borders. * There is no URL to download this game. * The scoring system is really bad. * In one level you have to go through a corridor of lava with a windy potion and then quickly retreat from danger.
00:39:08 <zzo38> * Half of the levels in this game are impossible to complete. * You have to go through the water in the wrong direction; but this is, of course, impossible. * Killing enemies potions are good for you. * This game is bad because Hitler played it. * This game is for DOS computers only. * Some of the puzzles do not work correctly except on the author's computer.
00:39:33 <zzo38> * Torches in Part I work correctly, while torches in Part II do not work correctly. * MagicGems are exactly like ZZT gems. * BIG_MONSTER is bad and you should kill them, please. * The award of completing this game is torture.
00:39:47 <zzo38> Invent another computer game and make up a list of lies about that computer game.
00:41:15 <tswett> zzo38: hm. Do you mean that Japanese doesn't have "h" and "f" as separate phonemes; it's just that the "h" phoneme sounds like "f" when it comes before "u"?
00:42:05 <zzo38> tswett: Sort of. Actually, it is a letter "fu" belonging to the same consonant group as the one with "h". But the sound is similar to "hu" or "fu" but not quite either one.
00:43:28 <zzo38> tswett: Is this understandable to you?
00:44:18 <tswett> I guess either we're sort of talking past each other, or I don't really understand what you said.
00:45:44 <pikhq> tswett: "h" and "f" are seperate phonemes, but morae with "f" and vowels other than "u" are only in loan words.
00:46:20 <tswett> pikhq: *nod* And does "hu", distinct from "fu", occur in native words?
00:46:31 <pikhq> No.
00:46:51 <pikhq> Nor in loan words.
00:47:37 * tswett nods.
00:49:29 -!- oerjan has quit (Quit: Good night).
00:50:38 <zzo38> I had an idea; make chess variant game, your pieces has three your quarks, opponent pieces has three opponent quarks, and neutral pieces has one your quark and one opponent quark. Including swapping out quark and redrop captured pieces like shogi game does.
00:55:48 <Jafet> "Uh, is this move legal?" "I think so. The path integral converges."
00:56:05 * Phantom_Hoover → sleep
00:56:07 -!- Phantom_Hoover has quit (Quit: Leaving).
01:00:01 <pikhq> Also: perhaps the worst bit about Japanese romanisation is that, unless you diverge from the standard, you cannot entirely romanise Japanese.
01:00:09 <pikhq> s/standard/standards/
01:00:39 <pikhq> Largely courtesy of them having no way of handling certain loan words.
01:10:48 <pikhq> I'm pretty sure the reason for that is the loan words that screw them up being newer than the romanisation schemes, which are invariably late 1800s inventions.
01:24:56 <zzo38> You could use the other forms of loan words
01:28:19 <pikhq> That presents some *incredible* oddities.
01:31:10 <kallisti> pikhq: solution: everyone speaks English instead.
01:32:38 <pikhq> That's a terrible solution, particularly for Japan.
01:32:52 <pikhq> Engrish is the direct result of their terrible English.
01:51:01 -!- Betawolf33 has joined.
01:51:58 -!- Vorpal has quit (Ping timeout: 255 seconds).
01:55:10 -!- shachaf_ has joined.
01:55:37 -!- Slereah_ has joined.
01:56:26 -!- Deewiant_ has joined.
01:57:07 -!- Betawolf has quit (Ping timeout: 245 seconds).
01:57:09 -!- shachaf has quit (Ping timeout: 245 seconds).
01:57:10 -!- Deewiant has quit (Ping timeout: 245 seconds).
01:59:16 -!- Slereah has quit (Ping timeout: 245 seconds).
02:05:28 <zzo38> "When you are stupid enough to lose to an eleven year old, is it okay
02:05:50 <zzo38> "When you are stupid enough to lose to an eleven year old, is it okay to claim that he can not claim the win because he was stupid too and said check instead of checkmate?"
02:06:20 <zzo38> I don't think that is how chess works.....
02:06:48 <oklopol> it's not okay
02:10:57 <zzo38> I know you are not supposed to claim that he cannot claim the win because he said check instead of checkmate. Sometimes in the chess variants people ask some of these kind of question in "FAQ of chess rules" and also in "How to contact us" (which is not for chess rules; it is for the site in general).
02:11:47 <zzo38> There are things like "WRONG! This connection does not have SMTP enabled. Already wrote to the chess federation in form..." and simply "i hate it" and "listen i cant get on the sight and i want my money back ive been trying since yesterday and its not my computer its the sight i wish someone would email me back melissa" (no email address was specified)
02:13:01 <pikhq> Aren't "check" and "checkmate" mere formalities?
02:13:29 <pikhq> With the actual status of check and checkmate being solely based (as far as the rules are concerned) on board state
02:13:42 <zzo38> pikhq: Yes, I think so. Actual status is board state.
02:15:01 <Jafet> There have been fun things that have happened in tournament games
02:15:02 <zzo38> But these people ask questions where these questions don't belong (there are other comment forms to send these questions)
02:15:08 <zzo38> Jafet: Describe example please?
02:15:27 <Jafet> Like someone castling twice (and neither player remembered that he'd already castled)
02:16:06 <Jafet> And I think there has been a game where both players missed a check
02:16:34 <Jafet> So the checked player didn't move out of check
02:16:45 <Jafet> And the checking player proceeded to do something else
02:17:10 <zzo38> The question about calling checkmate has been asked previously anyways, same site but wrong form: "When an opponent puts you in checkmate but does not realize it and calls check, is it still checkmate or does the fact that he did not call checkmate have some bearing?"
02:21:43 <zzo38> Do you know about Luzhanqi? It is Chinese game with some similar to Stratego.
02:23:33 -!- derdon has quit (Remote host closed the connection).
02:24:21 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:52:00 -!- DCliche has joined.
02:55:25 -!- Klisz has quit (Ping timeout: 255 seconds).
02:56:18 -!- madbr has joined.
02:56:36 <madbr> hey
02:58:15 <madbr> I'm looking at weird sortof semi-non-deterministic languages to see if I can come up with something really nice but still turing complete :D
02:59:54 <madbr> atm I'm looking at something where a program is essentially a math expression using logic operators (& | !) and math expressions with only + - variables and constants that evaluate to true if the result is 0
03:00:33 <madbr> basically the whole logic operation must be true for any set of values for the variables
03:03:14 <madbr> so for instance, you can make "a" equal to true by doing
03:03:19 <madbr> uh
03:03:24 <madbr> so for instance, you can make "a" equal to 5 by doing
03:03:26 <madbr> a-5
03:03:54 <madbr> if a is anything else than 5, the expression is obviously going to evaluate to non-0 and thus be false
03:06:13 <Jafet> This sounds like the prolog to something good
03:06:29 <madbr> heh yeah
03:06:47 <madbr> haven't used prolog much but it's probably similar yes
03:07:23 <madbr> I'm fairly sure it's turing complete too
03:14:19 -!- madbr has quit (Read error: Connection reset by peer).
03:20:18 -!- madbr has joined.
03:28:25 <madbr> yeah, hmm, a turing machine-like program would be defined as
03:28:26 <madbr> (program definition involving ip val nip nval dptr) & ((initial state) | (transition rule))
03:37:25 -!- madbr has quit (Read error: Connection reset by peer).
03:43:26 -!- madbr has joined.
03:45:41 -!- madbr has quit (Read error: Connection reset by peer).
03:46:58 -!- Nisstyre has quit (Ping timeout: 248 seconds).
03:48:06 -!- madbr has joined.
03:48:35 -!- Nisstyre has joined.
03:48:53 -!- variable has changed nick to const.
04:00:44 -!- copumpkin has joined.
04:03:50 -!- madbr has quit (Read error: Connection reset by peer).
04:08:59 -!- azaq23 has quit (Quit: Leaving.).
04:09:50 -!- madbr has joined.
04:14:16 -!- madbr has quit (Read error: Connection reset by peer).
04:14:32 -!- myndzi has quit (Read error: Connection reset by peer).
04:17:25 -!- GreaseMonkey has quit (Quit: The Other Game).
04:17:42 -!- myndzi has joined.
04:20:16 -!- madbr has joined.
04:33:13 -!- shachaf_ has changed nick to shachaf.
04:43:24 <zzo38> class Classical x => IsNatural x; instance IsNatural Zero; instance IsNatural x => IsNatural (Maybe x);
04:44:13 <madbr> (program: use j v to give values to nv nj dp)&
04:44:13 <madbr> ((i & tv & p & j)|
04:44:13 <madbr> (i+1-ni & p+dp-np & (!tp-p | (v-tv & ntv-nv)) & (tp-p | (ntv-tv))
04:44:13 <madbr> & i+p-ni-np & i-p-ni+np & i+j-ni-nj & i-j-ni+nj
04:44:13 <madbr> & i+tv+tp-ni-ntv-tp & i+tv-tp-ni-ntv+tp & i-tv+tp-ni+ntv-tp))
04:47:22 <madbr> turing machine using +, -, &(logical and), |(logical or), !(logical not), and nondeterministic evaluation :D
04:47:34 <madbr> math expressions evaluate to true if =0, else false
04:48:15 -!- mtve has quit (Ping timeout: 244 seconds).
04:49:40 <zzo38> Then, subtraction makes equality as well
04:50:26 <madbr> yep
04:52:14 <madbr> program definition looks something like
04:54:37 <madbr> (!j-0 | !v-0 | (nj-# & nv-# & dp-#)) &
04:54:43 <madbr> (!j-1 | !v-0 | (nj-# & nv-# & dp-#)) &
04:54:47 <madbr> (!j-2 | !v-0 | (nj-# & nv-# & dp-#)) &
04:54:49 <madbr> ..
04:54:59 <madbr> (!j-0 | !v-1 | (nj-# & nv-# & dp-#)) &
04:55:03 <madbr> (!j-1 | !v-1 | (nj-# & nv-# & dp-#)) &
04:55:07 <madbr> (!j-2 | !v-1 | (nj-# & nv-# & dp-#)) &
04:55:08 <madbr> ..
04:55:10 <zzo38> What does the # mean?
04:55:10 <madbr> etc
04:55:32 <madbr> # has to be replaced by a numeric value depending on the program
04:55:37 <zzo38> OK
04:55:39 <madbr> basically this means
04:56:18 <zzo38> OK I can understand it now.
04:57:56 <madbr> for a given state(j) and value(v) on the infinite tape, new state(nj) is (first #), new value(nv) is (second #), tape moves (third #) values
04:58:06 <madbr> (dp = tape movement)
04:58:45 <zzo38> OK.
05:02:40 <madbr> the other major thing it does is define a new state from an old one
05:04:01 <madbr> general structure is (program definition)&((first state value)|(new state value given previous state))
05:04:18 <madbr> so once a program is defined, that always stands
05:04:56 <madbr> a valid state meanwhile is either the starting state, or a new state defined from a previous valid state (including the starting state)
05:05:13 <madbr> here the starting state is (i & tv & p & j)
05:06:55 <madbr> in other words, i=0 (iteration number), tv=0 for all values of tp (data array/infinite tape), p=0 (data pointer/tape position), j=0 (current state)
05:07:09 <madbr> j is basically the instruction pointer
05:07:53 <madbr> then it builds a new state from a preceding state
05:08:18 <madbr> (i+1-ni & p+dp-np & (!tp-p | (v-tv & ntv-nv)) & (tp-p | (ntv-tv))
05:08:55 <madbr> uh
05:08:58 <madbr> i+1-ni & p+dp-np & (!tp-p | (v-tv & ntv-nv)) & (tp-p | (ntv-tv))
05:09:34 <madbr> ni=i+1 (new iteration number is old one incremented of course)
05:10:15 <madbr> np=p+dp (increase data pointer by dp, which is found from the program)
05:11:24 <madbr> next statement basically means: if tp=p, v=tv and also ntv = nv
05:12:34 <madbr> ie if the currently examined array index is the same as the data pointer, then v is the current array value (which it's going to use to figure out where to jump etc...)
05:13:12 <madbr> and ntv (new value at currently examined index) is nv (from program)
05:13:48 <madbr> then there's (tp-p | (ntv-tv)) which means: if tp!=p, then ntv = tv
05:14:08 <madbr> ie otherwise new array value stays the same
05:15:12 <madbr> the trick to those 2 parts is that they're a logical OR, so one part has to be true
05:15:49 <madbr> if the part on the left (the condition) is false, then the part on the right has to be true
05:16:16 <madbr> but if the condition is true, then the part on the right can be true or false or anything and has no effect
05:17:46 <madbr> so from the old state (i tv tp p j) we have a new state (ni ntv ntp np nj)
05:19:05 <madbr> so now we just have to "write" this new state back to the old variables
05:19:13 <madbr> hence the lines
05:19:16 <madbr> & i+p-ni-np & i-p-ni+np & i+j-ni-nj & i-j-ni+nj
05:19:27 <madbr> & i+tv+tp-ni-ntv-tp & i+tv-tp-ni-ntv+tp & i-tv+tp-ni+ntv-tp
05:20:27 <madbr> ie we have a i,p and a ni,np pair
05:20:45 <madbr> what we're doing is
05:20:58 <madbr> i+p=ni+np
05:21:00 <madbr> and
05:21:05 <madbr> i-p=ni-np
05:21:32 <madbr> hmm
05:22:07 <madbr> now I wonder if that's necessary
05:22:27 <madbr> might be possible to just go
05:23:22 <madbr> i-ni & p-np & j-nj & tv-ntv
05:23:56 <madbr> hmm, yeah, a lot simpler and i think it should work
05:25:06 <madbr> hmm
05:25:10 <madbr> or maybe not
05:31:08 <madbr> damn this is complicated :D
05:35:54 -!- zzo38 has quit (Remote host closed the connection).
05:40:05 -!- madbr has quit (Read error: Connection reset by peer).
05:44:00 -!- madbr has joined.
05:48:20 -!- madbr has quit (Read error: Connection reset by peer).
05:54:21 -!- madbr has joined.
05:58:47 -!- madbr has quit (Read error: Connection reset by peer).
06:04:34 -!- madbr has joined.
06:05:13 <madbr> (program: use j v to give values to nv nj dp) &
06:05:13 <madbr> ((i & tv & p & j) |
06:05:13 <madbr> !(i+1-ni & p+dp-np & (!tp-p | (v-tv & ntv-nv)) & (tp-p | (ntv-tv))) |
06:05:13 <madbr> (i-ni & p-np & j-nj & tv-ntv))
06:05:19 <madbr> there
06:06:47 <madbr> hum
06:09:14 -!- madbr has quit (Read error: Connection reset by peer).
06:12:46 -!- madbr has joined.
06:14:58 <kallisti> madbr mad
06:40:11 <madbr> my router doesnt like freenode :(
06:41:36 -!- calamari has joined.
06:45:35 -!- hagb4rd2 has joined.
06:48:18 -!- hagb4rd has quit (Ping timeout: 248 seconds).
06:50:41 <kallisti> I'd feel kind of bad running a bot on #esoteric that wasn't written in an esolang
06:50:45 <kallisti> unless you count perl as an esolang.
06:53:06 <calamari> problem is, many esolangs don't have all the OS ties you'd need
06:53:07 -!- madbr has quit (Read error: Connection reset by peer).
06:56:25 <kallisti> calamari: not to mention I already have a working IRC bot in perl. :P
06:56:54 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:56:56 -!- calamari has quit (Read error: Connection reset by peer).
06:57:46 -!- calamari has joined.
06:58:34 -!- mtve has joined.
06:59:12 -!- madbr has joined.
07:01:29 -!- madbr has quit (Read error: Connection reset by peer).
07:07:31 -!- madbr has joined.
07:09:44 -!- madbr has quit (Read error: Connection reset by peer).
07:15:41 -!- madbr has joined.
07:16:07 -!- madbr has quit (Client Quit).
07:17:43 <Sgeo> PSOX can provide some OS ties
07:17:47 <Sgeo> At least to networking stuff
07:31:04 -!- derrik has joined.
07:45:47 <kallisti> well connecting stdin to freenode is not an issue
07:46:00 <kallisti> but maintaining multiple connections would be.
07:49:30 -!- monqy has quit (Quit: hello).
07:54:39 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
08:41:01 -!- calamari has quit (Quit: Leaving).
09:17:26 -!- sebbu2 has joined.
09:17:26 -!- sebbu2 has quit (Changing host).
09:17:26 -!- sebbu2 has joined.
09:18:28 -!- sebbu has quit (Ping timeout: 244 seconds).
09:44:24 -!- elliott has joined.
09:48:53 <elliott> 17:08:31: <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Christopher_Nolan_at_WonderCon_2010_1.JPG
09:48:53 <elliott> 17:08:33: <Phantom_Hoover> Wait what.
09:48:53 <elliott> 17:08:35: <Phantom_Hoover> No.
09:48:53 <elliott> 17:08:41: <Phantom_Hoover> Nolan does not look like that.
09:48:53 <lambdabot> elliott: You have 4 new messages. '/msg lambdabot @messages' to read them.
09:48:59 <elliott> in my mind christopher nolan is leonardo dicaprio
09:52:11 <elliott> 17:58:22: <fizzie> I guess. But normally I suppose you'd just use whatever they call themselves; the Paratheo-Anametamystikhood Of Eris Esoteric or whatever.
09:52:16 <elliott> fizzie: I thought that was parody until I googled "Paratheo-Anametamystikhood".
09:55:33 <elliott> 20:52:48: <Deewiant> I find it annoying when they only have month/day but not year
09:55:38 <elliott> Deewiant_: Twitter does this and it's infuriating
09:56:43 -!- Phantom_Hoover has joined.
09:57:13 <elliott> 22:57:25: <oerjan> i don't know about its type logic use, it's just the obvious way i'd try it
09:57:17 <elliott> they're just dependent tuples
09:57:59 <Phantom_Hoover> Hello lambdabot.
09:57:59 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
10:10:25 -!- Phantom_Hoover has quit (Quit: Leaving).
10:10:35 -!- Phantom_Hoover has joined.
10:10:42 -!- Phantom_Hoover has quit (Changing host).
10:10:42 -!- Phantom_Hoover has joined.
10:14:34 -!- kallisti has changed nick to lambduhbot.
10:14:38 <lambduhbot> Phantom_Hoover: sup
10:14:59 -!- lambduhbot has changed nick to kallisti.
10:15:37 <Phantom_Hoover> kallisti, still hurting from the breakup?
10:17:24 -!- Slereah has joined.
10:18:09 -!- Slereah_ has quit (Ping timeout: 244 seconds).
10:33:07 <elliott> 02:05:50: <zzo38> "When you are stupid enough to lose to an eleven year old, is it okay to claim that he can not claim the win because he was stupid too and said check instead of checkmate?"
10:33:07 <elliott> 02:06:20: <zzo38> I don't think that is how chess works.....
10:33:11 <elliott> I can confirm that this is how chess works.
10:40:22 <kallisti> Phantom_Hoover: wat
10:40:24 <kallisti> which
10:41:14 <Phantom_Hoover> with lambdabot.
10:41:55 <kallisti> yes. ;_;
10:48:11 <kallisti> why does the emacs window appear just a bit too low for me to see the minibuffer
10:48:14 <kallisti> so annoying.
10:48:23 <kallisti> I always have to drag it up or maximize
10:54:49 -!- Deewiant_ has changed nick to Deewiant.
10:59:39 -!- sebbu2 has changed nick to sebbu.
11:07:35 -!- derdon has joined.
11:14:06 -!- oerjan has joined.
11:17:02 <elliott> hi oerjan
11:17:04 <elliott> hoerjan
11:17:15 <oerjan> helliott
11:22:19 <kallisti> hmmm, I can't seem to find a package for Firefox 7 on Ubuntu
11:23:50 <fizzie> I don't think they bother including older-than-the-current-default versions. If you mean the official rebbository.
11:24:41 <kallisti> yess
11:25:03 <elliott> kallisti: why do you want it
11:25:18 <elliott> fizzie: so if i'm reading this log right you actually reached an agreement with myndzi??? or did you just give up
11:25:28 <kallisti> elliott: firefox 8 doesn't work with this other thing I'm using -secretive-
11:25:30 <fizzie> elliott: I think we reached an agreement, yes.
11:25:41 <elliott> fizzie: help i can't believe?
11:25:45 <elliott> kallisti: fix the thing
11:26:23 <kallisti> elliott: noep
11:26:54 <fizzie> kallisti: You could try dpkg-installing one of the 7.0 .debs from https://launchpad.net/ubuntu/precise/+package/firefox
11:27:18 <kallisti> wow why is the firefox homepage so shitty.
11:27:21 <elliott> fizzie: Assuming he wants to uninstall his current Firefox.
11:27:27 <kallisti> "want an older firefox version? here's 3.6!"
11:27:27 <fizzie> elliott: Right, assuming that.
11:27:34 <kallisti> it's already uninstalled
11:27:52 <kallisti> what is "nobinonly"
11:28:00 <elliott> fizzie: Is the next codename really "precise"?
11:28:08 <elliott> That's terrible.
11:28:49 <fizzie> elliott: Precise Pangolin, yes.
11:29:12 <elliott> fizzie: Well the Pangolin bit is fine, "precise" is just not a very... fun thing to have in source lists and the like.
11:29:25 <elliott> Feels more like a setting or... advertising attribute than a name.
11:29:39 <elliott> fizzie: (Although I have to wonder why they don't make the animal name the codename part.)
11:29:45 <kallisti> Uninspired Ubuntulike
11:29:45 <fizzie> Actually there seem to be some 7.0's also in https://launchpad.net/ubuntu/oneiric/+package/firefox
11:29:49 <fizzie> Those might be a better bet.
11:30:35 <fizzie> I just hit the 'precise' versions first when furiously clicking around in Launchpad.
11:31:00 <kallisti> I'm almost positive this is the same packge but... I'll try it anyway
11:31:11 <elliott> fizzie: They should have gone with Pink Panther. :'(
11:31:27 <kallisti> Powerful Panda
11:31:57 <kallisti> Pink Panda
11:32:03 <kallisti> Precise Panda
11:34:04 <kallisti> Pugnacious Panda?
11:34:06 <kallisti> Putrid Panda?
11:34:10 * kallisti shouldn't name things
11:35:07 <fizzie> The suggestions page is not exactly better. Though Psychedelic Penguin would have been possibly interesting to explain in stuffy corporate situations.
11:35:23 <itidus21> `word 26
11:35:31 <HackEgo> veinneilion combchiroxiviloadra caneraguftls zinaidnercycackingnat kerndra pontiul ziners relsocrutiona ce enlerd diintle surbramenolleybdon jyob an lux elienty unsa ging na ate worici ze he hibrardceifterufhamirp li ste
11:36:03 <itidus21> Pontiul Panda
11:36:20 <kallisti> I have no idea what "hunspell-en-ca" is but I'm going to remove it because this package wants me to
11:36:59 <fizzie> Probably the canadian-english data files for hunspell, which is what OOoOooOOo and Firefox use as their spellchecker eggine.
11:37:27 <fizzie> Then you can't spellcheck in Canadianese. :/
11:37:31 <kallisti> noooooooo
11:37:36 <kallisti> well it says it's provided but something else
11:37:38 <kallisti> so... whatever
11:37:47 <kallisti> and now hunspel-en-us
11:37:49 <kallisti> FUCK YOU
11:38:50 <kallisti> Dependency is not satisfiable: libstdc++6 (>= 4.6)
11:38:52 <kallisti> fffffffffffffffffff
11:39:33 <fizzie> Are you actually running oneiric?
11:39:50 -!- derrik has quit (Quit: gone).
11:41:43 <kallisti> oh, right
11:41:44 <kallisti> no
11:41:44 <kallisti> natty
11:42:45 <fizzie> Out of luck, then, since https://launchpad.net/ubuntu/natty/+package/firefox just has 3.6 and 8.0.
11:43:00 <fizzie> Maybe some other place in their PPAs has a 7.0 build, who knows.
11:43:10 <fizzie> It's all so confuzzling.
11:47:23 <kallisti> ghdfgfyjdfhdj'
11:48:50 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:51:32 <elliott> kallisti: You could just use the Mozilla binaries.
11:52:38 <kallisti> mozillas homepage is dumb
11:53:44 <elliott> kallisti: you're dumb
11:54:33 <elliott> also im cold
11:54:36 <kallisti> the only versions I see available from mozilla are 3.6 and 8
11:55:13 <elliott> kallisti: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/
11:55:24 <elliott> hmm that doesn't have 7
11:55:26 <elliott> kallisti: just compile it yrself
11:55:34 <elliott> if you really want it
11:55:44 <elliott> http://www.mozilla.org/en-US/firefox/releases/0.8.html
11:55:59 <kallisti> fiiiine
11:56:09 <elliott> kallisti: or
11:56:10 <elliott> kallisti: http://www.mozilla.org/en-US/firefox/7.0.1/releasenotes/
11:56:10 <fizzie> "3.0.19-real-real", the best directory name.
11:56:23 <elliott> no download links
11:56:37 <elliott> you're really not meant to downgrade firefox these days methinks
11:56:44 <elliott> "release channel" and all that
11:56:47 <fizzie> It's not in the "channel" any more, right.
11:56:48 <kallisti> elliott: for some reason they only have binaries for 8 and 3.6 which is now ancient.
11:57:06 <elliott> kallisti: does 3.6 not work for what you want to do
11:57:07 <kallisti> elliott: but I'll just compile from source for now
11:57:08 <elliott> which will be
11:57:08 <kallisti> and MAYBE
11:57:09 <fizzie> 3.6.x is still kept security-updated, it's not "ancient".
11:57:10 <elliott> use something briefly
11:57:12 <kallisti> actually fix the problem eventually
11:57:13 <elliott> for backwards compat reasons
11:57:15 <kallisti> elliott: it might
11:57:21 <elliott> and then upgrade again
11:57:23 <elliott> kallisti: dude
11:57:28 <elliott> kallisti: do you have any idea how long compiling firefox takes
11:57:38 <kallisti> um.....
11:57:39 <kallisti> no
11:57:43 <elliott> hours
11:57:48 <fizzie> It'd be faster to dist-upgrade to oneiric and use that deb. :p
11:57:52 <kallisti> elliott: my god
11:57:55 <kallisti> I'll have to like
11:57:58 <kallisti> SLEEP THROUGH IT
11:57:59 <kallisti> THE HORROR
11:58:09 <elliott> kallisti: with the fans on full-blast because it uses all your CPU?
11:58:14 <kallisti> that's fine
11:58:22 <kallisti> I've got this awesome secondary cooling pad thing
11:58:36 <kallisti> oh hmmm this might be a binary actually
11:58:46 * elliott gives up.
11:59:20 <kallisti> yes the tarball comes with a precompiled binary
11:59:34 <kallisti> PERHAPS AN INSTALL SCRIPT AS WELL? HMMMMM
11:59:38 * kallisti searches.
11:59:40 <elliott> it's called autoconf
11:59:59 <elliott> kallisti: you're searching for something that you won't find because you're looking in the wrong place.
12:00:15 <kallisti> elliott: could you possibly be any more vague?
12:00:21 <kallisti> I need you to be more vague
12:00:21 <elliott> <elliott> it's called autoconf
12:00:23 <kallisti> or I won't understan
12:00:24 <kallisti> d
12:00:25 <elliott> easily, considering i told you the answer
12:00:48 <kallisti> ...so you're saying there's no autoconf? okay.
12:01:18 <elliott> kallisti: do you have to practice being this dense
12:01:25 <kallisti> no.
12:01:28 <elliott> talent
12:01:36 <kallisti> you could just be direct and explain wtf you're getting at though.
12:01:43 <kallisti> because it's not clear.
12:02:13 <elliott> <kallisti> PERHAPS AN INSTALL SCRIPT AS WELL? HMMMMM
12:02:13 <elliott> * kallisti searches.
12:02:13 <elliott> <elliott> it's called autoconf
12:02:19 <kallisti> yes?
12:02:19 <kallisti> and?
12:02:32 <elliott> you're really dumb
12:02:36 <kallisti> that doesn't convey at all what you're saying. other than: "use autoconf maybe"
12:02:39 <kallisti> which
12:02:43 <kallisti> I already gathered
12:02:47 <kallisti> from you saying
12:02:50 <kallisti> <elliott> it's called autoconf
12:03:03 <elliott> then what are you searching for
12:03:14 <kallisti> a .ac file?
12:03:16 <kallisti> or configure?
12:03:17 <kallisti> but
12:03:19 <kallisti> there isn't one
12:03:39 <elliott> then probably you _are_ looking in the wrong place.
12:03:51 <fizzie> You might have a binary tarball there, if it actually does have a binary in it.
12:03:55 <fizzie> They do make those as well.
12:04:03 <kallisti> yes I see no source code.
12:04:06 -!- Phantom_Hoover has joined.
12:04:37 <elliott> fizzie: All the modern OSS binary tarballs I see are installed with an autoconf/automake setup.
12:04:42 <kallisti> elliott: okay so you suggested something that you apparently knew wasn't going to be there.
12:04:45 <kallisti> thanks.
12:04:55 <elliott> Yes, what a reasonable deduction to make.
12:05:59 <oerjan> tune in for tomorrow's installment of ellipott and kettlisti
12:06:43 <elliott> oerjan: The fundamental unbalancing difference is that one of us isn't dense.
12:07:01 <oerjan> while the other one isn't vague. check.
12:07:12 <elliott> (NB. Dense considered as action/state, not attribute.)
12:07:45 <kallisti> elliott: am I suppose to know everything you mean by "it's called autoconf" and "you're probably looking in the wrong place." neither of those two things are remotely helpful, especially when I'm being so "dense"
12:07:54 <elliott> oerjan: Well, I could just answer every single silly question with an unbearably specific, paragraph-long answer on a silver platter, but I don't think it's worth my while to waste my time like that.
12:08:13 <fizzie> This thing is like the most confusing thing ever. Occasionally releases.mozilla.org/pub/mozilla.org/firefox/releases/7.0.1/ actually has all the stuffs. Most of the time it doesn't. Must be their load-balancing + non-identical servers. At least ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/7.0.1/ is stable.
12:08:29 <elliott> fizzie: Nice.
12:11:30 <kallisti> fizzie: as far as I see the both the HTTP and the FTP tarball are the same for linux-x86_64/en-US/
12:11:49 <oerjan> elliott: it just looks like you are maximizing the chance of being misunderstood while still having plausible deniability.
12:12:25 <fizzie> kallisti: Yes, most likely, but http://releases.mozilla.org/pub/mozilla.org/firefox/releases/7.0.1/ only has the update/ directory (no tarballs) for most of the time for me; sometimes it has what's in ftp.mozilla.org too, though.
12:12:40 <elliott> oerjan: Yes, the thing I want most out of IRC is kallisti complaining about how vague I am.
12:12:51 <elliott> oerjan: How did you discover my secret pleasure and the devious means by which I acquire it?
12:12:52 <fizzie> (The directory indexing also keeps flipping between lighttpd and Apache indexes. And so on.
12:13:28 <elliott> fizzie: Apache at least shows the server domain at the bottom of the indices, so if you want COMPLETE CONFIRMATION that's what's happening...
12:13:33 <elliott> fizzie: My server is stable on refresh, though.
12:13:34 <oerjan> elliott: vague impression, my secret weapon.
12:13:41 <elliott> Oh, not on cache-flush.
12:13:48 <elliott> Wow, one of these servers is using Cherokee.
12:14:09 <fizzie> All the apaches I've seen have said "at releases.mozilla.org", I think.
12:14:15 <elliott> http://releases.mozilla.org/cherokee_themes/default/ftp.gif
12:15:04 <fizzie> http://p.zem.fi/9i13 -- since it has 'geo' in the name, it might also return different lists for different people.
12:15:55 <elliott> releases.geo.mozilla.com has SOA record geo.mozilla.com. hostmaster.mozilla.com. 200309181 28800 7200 86400 28800
12:15:55 <elliott> releases.geo.mozilla.com name server ns1.geo.mozilla.com.
12:15:55 <elliott> releases.geo.mozilla.com name server ns0.geo.mozilla.com.
12:15:55 <elliott> releases.geo.mozilla.com has address 204.152.184.113
12:15:55 <elliott> releases.geo.mozilla.com has address 128.61.111.9
12:15:57 <elliott> releases.geo.mozilla.com has address 64.50.236.214
12:15:59 <elliott> releases.geo.mozilla.com has address 131.188.12.212
12:16:01 <elliott> releases.geo.mozilla.com has address 216.165.129.141
12:16:03 <elliott> releases.geo.mozilla.com has address 204.152.184.196
12:16:05 <elliott> releases.geo.mozilla.com has address 202.177.202.154
12:16:07 <elliott> releases.geo.mozilla.com has address 129.101.198.59
12:16:09 <elliott> releases.geo.mozilla.com has address 204.246.0.136
12:16:11 <elliott> releases.geo.mozilla.com has address 155.98.64.83
12:16:13 <elliott> releases.geo.mozilla.com has address 156.56.247.196
12:16:15 <elliott> releases.geo.mozilla.com has IPv6 address 2001:6b0:e:2018::1337
12:16:17 <elliott> releases.geo.mozilla.com has IPv6 address 2001:4f8:4:b:230:48ff:fedf:7f3a
12:16:19 <elliott> IPv6, impressive.
12:16:21 <elliott> (That's with Google Public DNS.)
12:16:23 <elliott> (Also that's more lines than it seemed to be.)
12:16:39 <kallisti> I'm just going to fuck it and make links to the binaries in /bin :P
12:16:56 <elliott> In /bin?
12:17:05 <elliott> Are you trying to pick the worst possible place to link the binaries?
12:17:14 <kallisti> /usr/local/bin?
12:17:14 <elliott> Anyway, that probably won't work.
12:17:15 <fizzie> kallisti: Why don't you just run it from where you extracted it? I mean, I don't suppose you're planning to permanently stick with FF7.
12:17:21 <elliott> Since there are auxiliary files it'll try and find.
12:17:40 <fizzie> I think the tarball is constructed to be a very self-contained directory.
12:17:40 <kallisti> fizzie: I'm pretty sure I need it to be as though it were installed normally
12:17:51 * kallisti secretive
12:19:55 <kallisti> bah stupid cross-device link error thing.
12:19:59 <elliott> kallisti: Speaking of "vague", this looks like a huge X-Y problem to me.
12:20:10 <kallisti> elliott: that's because I'm being secretive
12:20:16 <elliott> Unfortunately, nobody can help you, since you won't give any details, so you'll have to enjoy fucking it up by yourself.
12:20:21 <elliott> Have you considered a chroot?
12:20:26 <kallisti> no, bad idea.
12:20:32 <elliott> Not as bad as this idea.
12:20:39 <elliott> Have fun breaking your system.
12:20:46 <kallisti> um...
12:20:52 <kallisti> I seriously doubt that will happen
12:21:10 <elliott> Good for you.
12:23:22 <kallisti> unless soft links (and now, since that doesn't work, a simple shell script) CATASTROPHICALLY MALFUNCTION AND WIPE MY HARD DRIVE
12:29:26 <Phantom_Hoover> Chrome has, for some reason, wiped my profile.
12:31:02 <kallisti> well, Firefox 7 doesn't seem to fix the problem either.
12:31:28 <kallisti> I believe that's the last version I was using that worked correctly.
12:31:48 <elliott> kallisti: Have you considered that maybe whatever shit you're doing is more likely to be broken than Firefox.
12:31:58 <kallisti> elliott: you are correct
12:32:06 <kallisti> elliott: firefox is not broken at all
12:33:23 <elliott> kallisti: You did not think of this first time around?
12:33:37 <kallisti> no, it's unrelated to what I'm trying to do.
12:33:58 <kallisti> Last time selenium worked I was using Firefox 7, so... I thought going back to Firefox 7 would fix the issue
12:34:05 <kallisti> but it either hasn't, or created a new issue.
12:35:54 -!- derdon has quit (Remote host closed the connection).
12:36:19 <kallisti> elliott: but I appreciate the continued and unyielding condescension for reasons I don't fully understand.
12:36:34 <elliott> Me too.
12:56:54 <kallisti> http://www.fibers.com/shop/design/this-is-not-a-hipster-t-shirt.D46044/mens-fine-cotton-t-shirt.P1308?utm_source=google&utm_medium=product-search&utm_campaign=feed
12:56:57 <kallisti> SO IRONIC
12:57:39 <kallisti> "This American Apparel brand shirt, is our most popular premium t-shirt"
12:57:42 <kallisti> eh, too mainstream for me.
13:00:49 <elliott> Home > Browse T-Shirts > Lifestyle & Identity > Subcultures > Hipster > This Is Not A Hipster T-shirt
13:01:04 <elliott> Paintings > Pipes > The Treachery of Images
13:02:05 <kallisti> I can't seem to find those categories on the site. :P
13:03:03 <kallisti> the problem is that...
13:03:11 <kallisti> while it is indeed not a pipe, but merely an image of a pipe
13:03:18 <kallisti> that shirt is, in fact, a hipster shirt
13:05:08 <kallisti> well, actually, it could easily be a hipster poser shirt.
13:05:16 <kallisti> I'd need to consult a hipster to find out.
13:20:11 <kallisti> what's interesting about Google is they have a lot of software products that... don't really seem to generate any revenue for them.
13:21:33 <elliott> kallisti: *in a way I can see
13:22:22 <kallisti> well, yes. but how does chrome produce revenue?
13:24:16 <elliott> kallisti: Makes it really easy to use Google and thus view Google ads, for one
13:24:22 <kallisti> sure it gives me a browser, and pretty much any significant amount of time I spend on the web = revenue for google.
13:24:39 <kallisti> but, web browsers already existed for that.
13:25:15 <elliott> kallisti: Chrome was the first web browser with one big bar advertised to just have you type what you want and get there (via Google)
13:25:41 <elliott> kallisti: Oh, and Chrome was massively faster than Firefox, making it nicer to use Google's many profitable web applications
13:26:11 <elliott> And allowing them to implement more complex web applications that would previously only be possible on the desktop, thus generating more revenue, etc. etc. etc.
13:26:49 <kallisti> hmmm, okay.
13:28:10 <kallisti> another interesting thing about Google: they've convinced everyone that their rapid expansion has benefited everyone.
13:28:14 <kallisti> I guess in some ways it has.
13:28:24 * kallisti convinced.
13:28:46 <elliott> kallisti: Also, giving Google more leverage in standards organisation :P
13:29:04 <elliott> And things like Native Client, SPDY, etc. etc. etc.
13:29:18 <elliott> I suspect V8 might have originated as some 20% time thing though
13:30:12 <kallisti> oh I wasn't aware of native client.
13:30:15 <kallisti> that's pretty interesting.
13:31:10 <fizzie> NaCl's x86-32 sandboxing was really fancy.
13:31:16 <fizzie> Sadly it was very x86-32-only.
13:31:19 <kallisti> I suspect Native Client is how they intend to make Chrome OS capable of running native code apps.
13:31:40 <fizzie> (And by "fancy" I mean "freako".)
13:31:44 <elliott> kallisti: NaCl is sort of dead these days.
13:32:01 <elliott> kallisti: Mozilla were like "hahaha, NO" and everyone was like "oh".
13:32:51 <kallisti> Mozilla and HTML bffs forever.
13:32:54 <kallisti> (yes bffs forever)
13:33:03 <kallisti> bfff
13:33:13 <elliott> Best friend forevers forever.
13:33:27 <kallisti> which will then later be used as: "bfffs forever"
13:33:28 <kallisti> etc
13:34:17 <elliott> <fizzie> Sadly it was very x86-32-only.
13:34:23 <elliott> fizzie: Because it used segmentation, right?
13:34:29 <fizzie> Right.
13:34:33 <elliott> fizzie: I didn't know you could even do that in proteced mode.
13:34:46 <fizzie> But I <3 it still; segmentation is so underutilized and abandoned, you have to feel pity for it.
13:35:11 <elliott> fizzie: I wonder why they didn't just use a hypervisor thing; I guess because not everyone had the CPU for it at the time.
13:35:25 <elliott> But, uh, better future-ready than planned-obsolescent, surely?
13:35:35 <elliott> fizzie: Ehm: "An ARM implementation was released in March 2010,[6] and x86-64 is also supported. However, As of March 2011, all three implementations can only use code compiled to the host's native instruction set."
13:35:40 <kallisti> elliott: why is Mozilla not implementing native code a big deal?
13:35:48 <kallisti> elliott: isn't Google like the internet tough guy?
13:35:52 <elliott> kallisti: Because the people who don't use Chrome or IE use Firefox
13:36:03 <elliott> Well, and Safari
13:36:05 <kallisti> well, yes..
13:36:09 <kallisti> >_>?
13:36:11 <kallisti> okay I guess
13:36:13 <kallisti> that makes sense.
13:36:21 <elliott> kallisti: People don't like websites that only work in one browser, dude.
13:36:23 <kallisti> not much of a standard if it isn't standard.
13:36:32 <elliott> Especially a browser that was less widely-used than Firefox until recently.
13:36:41 <fizzie> elliott: Yes, they have x86-64 and ARM now; it's a different sandboxing mechanism though.
13:36:45 <elliott> fizzie: Ah.
13:36:52 <fizzie> http://research.google.com/pubs/pub35649.html describes the new one.
13:37:07 <elliott> fizzie: Apparently they're doing something with "portable LLVM", which sounds, uh, fun, since I gathered LLVM assembly was very platform-specific.
13:37:17 <elliott> Because sizeof etc. is all done by then.
13:37:31 <fizzie> I suppose that's for the PNaCl thing?
13:37:36 <elliott> Yes.
13:37:38 <elliott> Pnackle.
13:37:41 <elliott> Also, name my branch already.
13:38:37 <fizzie> I think the x86-64 NaCl sandbox actually makes 'long's and pointers 32-bit too, to aid in PNaCling things between ARM and x86-64.
13:39:09 <kallisti> Mozilla Firefox currently supports SPDY through an out-of-tree patch,[12][13] the target version for mainline inclusion is Firefox 11
13:39:14 <kallisti> should be out next year then.
13:39:21 <elliott> fizzie: But it sounds like PNaCl is a separate thing entirely designed to eliminate the native code altogether.
13:39:35 <elliott> fizzie: Or were you using the term FACETIOUSLY
13:39:57 <elliott> kallisti: Firefox 9 is in beta, so probably early next year; Firefox 11 is in alpha.
13:40:08 <elliott> That is, 11 will probably be early next year.
13:40:17 <kallisti> what happened to...
13:40:18 <kallisti> like
13:40:21 <kallisti> decimal numbers?
13:40:42 <elliott> "Mozilla Firefox 7.0.1 was released a few days later, fixing a rare but serious issue with add-ons not being detected by the browser."
13:40:44 <elliott> See, decimals.
13:41:03 <fizzie> elliott: I thought it worked so that you compiled your "native" code into that LLVM IR, and then on runtime they'd LLVMize it into actual native code, and run in the usual x86-32/x86-64/ARM NaCl sandbox. But I confess I haven't really looked at it very closely.
13:41:15 <elliott> Apparently the single feature Firefox 8 introduced was to ask you whether you really want all your addons at install time.
13:41:22 <elliott> (Because of third-party junkware.)
13:41:29 <kallisti> ..
13:41:30 <kallisti> see
13:41:32 <kallisti> that should be
13:41:35 <elliott> fizzie: Oh, that would make sense.
13:41:36 <kallisti> 7.2
13:41:43 <kallisti> not 8
13:41:54 <elliott> kallisti: What happened to 7.1?
13:42:02 <kallisti> lost in time, I dunno.
13:42:16 <kallisti> I guess 7.1 is fine.
13:42:23 <kallisti> unless there was some other slightly minor thing.
13:42:29 <olsner> but subversions like 7.2 is so complicated and technical looking for the people who just want a new browser
13:42:35 <olsner> 8 is more than 7, 7.2 is MATH
13:43:01 <kallisti> 10 years from now: Firefox 53
13:44:31 <elliott> kallisti: (It wasn't actually the single feature introduced.)
13:44:42 <elliott> See http://www.mozilla.org/en-US/firefox/8.0/releasenotes/, "What's New in Firefox".
13:44:58 <elliott> The load-tabs-on-demand thing is quite a major nicety.
13:45:01 <fizzie> kallisti: In ten years it should be around 95 or so; the release cycle is six weeks.
13:45:17 <elliott> Firefox 95 "So Very Tired"
13:45:32 <elliott> Followed by Son of Firefox 1 "RIP Dad".
13:46:29 <elliott> kallisti: Really though, the versions don't /matter/, since it's all done through the automatic-update channels.
13:46:51 <elliott> There's not much point having a major version number if you only increment it every "long while" without any fanfare.
13:47:00 -!- augur has quit (*.net *.split).
13:47:01 -!- olsner has quit (*.net *.split).
13:47:01 -!- oerjan has quit (*.net *.split).
13:47:04 -!- Phantom_Hoover has quit (*.net *.split).
13:47:05 -!- elliott has quit (*.net *.split).
13:47:06 -!- hagb4rd2 has quit (*.net *.split).
13:47:06 -!- Nisstyre has quit (*.net *.split).
13:47:07 -!- Deewiant has quit (*.net *.split).
13:47:08 -!- Betawolf33 has quit (*.net *.split).
13:47:10 -!- myndzi has quit (*.net *.split).
13:47:11 -!- itidus21 has quit (*.net *.split).
13:47:11 -!- TeruFSX has quit (*.net *.split).
13:47:14 -!- fizzie has quit (*.net *.split).
13:47:17 -!- twice11 has quit (*.net *.split).
13:47:24 -!- pikhq has quit (*.net *.split).
13:47:26 -!- lambdabot has quit (*.net *.split).
13:47:27 -!- quintopia has quit (*.net *.split).
13:47:28 -!- yorick has quit (*.net *.split).
13:47:28 -!- yiyus has quit (*.net *.split).
13:47:30 -!- Zwaarddi1k has quit (*.net *.split).
13:47:34 -!- Zuu has quit (*.net *.split).
13:47:35 -!- aloril has quit (*.net *.split).
13:47:39 -!- fungot has quit (*.net *.split).
13:47:40 -!- fizziew has quit (*.net *.split).
13:47:44 -!- coppro has quit (*.net *.split).
13:47:46 -!- kallisti has quit (*.net *.split).
13:47:53 -!- SimonRC has quit (*.net *.split).
13:47:54 -!- FireFly has quit (*.net *.split).
13:47:54 -!- oklopol has quit (*.net *.split).
13:47:55 -!- Jafet has quit (*.net *.split).
13:47:55 -!- mtve has quit (*.net *.split).
13:48:00 -!- ineiros has quit (*.net *.split).
13:48:09 -!- coppro has joined.
13:48:20 -!- yiyus has joined.
13:52:25 -!- Zwaarddijk has joined.
13:53:49 -!- FireFly has joined.
13:53:49 -!- oklopol has joined.
13:53:49 -!- SimonRC has joined.
13:53:49 -!- mtve has joined.
13:53:49 -!- quintopia has joined.
13:53:49 -!- pikhq has joined.
13:53:49 -!- kallisti has joined.
13:53:49 -!- olsner has joined.
13:53:49 -!- augur has joined.
13:53:49 -!- ineiros has joined.
13:53:49 -!- Jafet has joined.
13:53:49 -!- fizziew has joined.
13:53:49 -!- aloril has joined.
13:53:49 -!- twice11 has joined.
13:53:49 -!- fizzie has joined.
13:53:49 -!- TeruFSX has joined.
13:53:49 -!- itidus21 has joined.
13:53:49 -!- Betawolf33 has joined.
13:53:49 -!- Deewiant has joined.
13:53:49 -!- Nisstyre has joined.
13:53:49 -!- myndzi has joined.
13:53:49 -!- hagb4rd2 has joined.
13:53:49 -!- elliott has joined.
13:53:49 -!- Phantom_Hoover has joined.
13:53:49 -!- Zuu has joined.
13:57:21 <kallisti> hi gaiz
13:57:30 <elliott> Not you again.
13:57:33 -!- itidus21 has quit (Quit: Leaving).
14:01:55 <elliott> `addquote <Phantom_Hoover> Dinner? At two? <fizzie> It's four here already. See, UTC+2. You need to add a couple of hours. Or was that subtract? I can never get those straight.
14:01:58 <HackEgo> 744) <Phantom_Hoover> Dinner? At two? <fizzie> It's four here already. See, UTC+2. You need to add a couple of hours. Or was that subtract? I can never get those straight.
14:02:37 <Phantom_Hoover> elliott, I think you need the myndzi context for that to work.
14:02:41 -!- Zuu has quit (Changing host).
14:02:41 -!- Zuu has joined.
14:02:43 -!- quintopia has changed nick to Guest12461.
14:02:44 <elliott> It's in our collective consciousness now.
14:02:55 -!- yorick has joined.
14:16:42 -!- Phantom__Hoover has joined.
14:16:48 -!- Phantom__Hoover has quit (Changing host).
14:16:48 -!- Phantom__Hoover has joined.
14:18:50 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
14:20:51 <MDude> I have no idea about the context, but I find the quote amusing enough.
14:57:08 -!- copumpkin has joined.
15:02:55 -!- itidus21 has joined.
15:04:50 -!- itidus21 has left.
15:06:35 -!- itidus21 has joined.
15:10:07 <kallisti> I've become such a sc2 junkie.
15:24:25 -!- itidus21 has quit (Read error: Connection timed out).
15:25:02 -!- itidus21 has joined.
15:25:31 <Phantom__Hoover> kallisti, Star Control 2?
15:26:49 <Deewiant> s/ Control/Craft/
15:29:19 <kallisti> ^^
15:30:01 -!- Vorpal has joined.
15:32:47 -!- itidus21 has quit (Read error: Operation timed out).
15:32:53 <kallisti> elliott: there are two elements of randomness in SC2 games that I've discovered (modulo lag). 1) your spawn location is random 2) you can select a random race, which prevents your opponent from knowing what your race is until they scout.
15:34:03 <kallisti> the first one is a bit more important.
15:34:12 <Deewiant> It's also map-dependent.
15:34:12 <kallisti> as it makes when you discover enemies random
15:34:23 <kallisti> because you can "scout the wrong way"
15:34:28 -!- itidus21 has joined.
15:34:36 <kallisti> which wastes time.
15:34:51 -!- itidus21 has quit (Client Quit).
15:35:12 <kallisti> it also randomy determines which strategies are more effective, based on how close you spawn to your opponent.
15:35:15 <kallisti> +l
15:40:22 <kallisti> Deewiant: can you explain why the game clock is not sync'd to actual seconds?
15:40:25 <kallisti> it's "Blizzard seconds"
15:40:39 <Deewiant> "Normal" speed is actual seconds
15:40:45 <olsner> kallisti: it changes based on your speed setting?
15:40:54 <kallisti> oh okay.
15:40:56 <Deewiant> But no, I don't know why the default speed isn't actual seconds
15:40:56 <kallisti> that's weird.
15:41:09 <Deewiant> Almost nobody plays on normal
15:41:28 <kallisti> I guess it makes sense to change the clock speed for faster speed settings because it lets you time strategies
15:42:04 <Deewiant> I'd say it's just because it's easiest to implement like that :-P
15:42:19 <kallisti> ...I think actual seconds are easier.
15:42:44 <Deewiant> Well, if you're talking about the in-game timer, that's one thing
15:42:48 <kallisti> time() //lol
15:42:50 <Deewiant> But I was thinking about e.g. APM calculation
15:42:56 <kallisti> ah right
15:43:02 <kallisti> it makes everything consistent, yes.
15:43:10 <Deewiant> The in-game timer wasn't even in the original game, it appeared in a later patch.
15:43:15 <Deewiant> s/game/release/
15:43:17 <kallisti> and you can say "oh I should expand at the 6 minute mark" regardless of speed setting.
15:43:25 <kallisti> Deewiant: right
15:51:31 -!- derrik has joined.
15:56:09 -!- derrik has quit (Client Quit).
15:58:32 <elliott> @hoogle (a -> b, c -> d) -> (a,c) -> (b,d)
15:58:38 <elliott> It's going to be some arrow shit
15:58:45 <elliott> lambdabot?
15:58:56 <elliott> Deewiant: @hoogle (a -> b, c -> d) -> (a,c) -> (b,d)
15:59:28 <Deewiant> Not easy IIRC
15:59:46 <elliott> Deewiant: Sure it is: f (g,h) (a,b) = (g a, h b) :P
15:59:59 <elliott> Deewiant: Wait, isn't that just bilift
16:00:01 <Deewiant> Not easy to pointlessify
16:00:02 <elliott> Or whatever it was called
16:00:47 <elliott> It's (<<.>>)
16:01:17 <Deewiant> uncurry (***) ?
16:01:22 <elliott> Oh wait, that isn't even what I want...
16:01:23 <elliott> I have
16:01:33 <elliott> do { (f, fm') <- fm; (a, am') <- am; return (f a, fm' <*> am') }
16:01:37 <elliott> And am trying to pointlessify it
16:01:57 <elliott> So... liftA2 (uncurry ($) *** uncurry (<*>))
16:02:00 <elliott> Gross
16:02:22 <elliott> @@ @pl @undo do { (a,m') <- m; return (f a, fmap f m') }
16:02:23 <kallisti> Deewiant: also some maps are asymmetric. like Delta Quadrant for example.
16:02:35 <Deewiant> kallisti: AKA blizzard's shitty maps
16:02:41 <elliott> Oh wait
16:02:44 <elliott> lambdabot still isn't here :-)
16:02:47 <kallisti> you can be in a spawn where your natural expansion is toward your opponent, and your opponent's natural is away from you.
16:02:49 <Deewiant> Or anywhere
16:02:51 <elliott> m >>= \(a,m') -> (f a, fmap f m')
16:03:00 <elliott> m >>= f *** fmap f
16:03:05 <elliott> fucking arrows
16:05:33 <kallisti> elliott: what's wrong with arrows again?
16:05:43 <kallisti> remind me why I dislike them.
16:05:46 <elliott> Satanism, etc.
16:06:41 <Deewiant> m >>= ap (***) fmap f
16:09:21 <elliott> Deewiant: Wow, you made it so that even I can't read it
16:09:32 <elliott> Deewiant: OK, now embetter <elliott> So... liftA2 (uncurry ($) *** uncurry (<*>)) :P
16:09:33 <Deewiant> m >>= ((***) <*> fmap) f
16:10:27 <elliott> Deewiant: Are you serious
16:10:32 <elliott> Oh
16:10:41 <Deewiant> That was for the last
16:10:52 <Deewiant> elliott: Your liftA2 thing doesn't type
16:11:55 <elliott> Deewiant: <elliott> do { (f, fm') <- fm; (a, am') <- am; return (f a, fm' <*> am') }
16:12:23 <Deewiant> Can't be bothered to mess with that without a @. pl undo or at least @undo pass first :-P
16:12:58 <elliott> Deewiant: fm >>= \(f,x) -> am >>= \(a,y) -> return (f a, x <*> y)
16:13:19 <elliott> Deewiant: fm >>= \(f,x) -> fmap (\(a,y) -> (f a, x <*> y)) am
16:13:29 <elliott> That's as far as I can be bothered to go :P
16:15:29 <Deewiant> fm >>= \(f,x) -> fmap (f *** (x <*>)) am
16:15:43 <elliott> So pointy!
16:16:04 <Deewiant> Can't think of a reduction for that offhand
16:16:33 <kallisti> elliott: there are programs that can help you with your pointless addiction.
16:16:36 <elliott> Deewiant: Well, we need to get \(f,x) -> (f *** (x <*>)), then we just need to compose that with flip fmap am.
16:16:45 <kallisti> elliott: like... people programs, not computer programs.
16:17:01 <Deewiant> \(f,x) -> (***) f (x <*>)
16:17:07 <Deewiant> uncurry (\f x -> (***) f (x <*>))
16:17:16 <kallisti> > f `ap` g
16:17:23 <kallisti> ...oh
16:17:24 <kallisti> right
16:17:31 <Deewiant> uncurry (\f -> (***) f . (<*>))
16:17:52 <Deewiant> The next one involves more than one (.) so I'd probably get it wrong
16:18:00 <elliott> Heh
16:18:07 <elliott> Perhaps it should stay pointless
16:18:12 <elliott> Erm
16:18:13 <elliott> Pointful
16:18:43 -!- azaq23 has joined.
16:24:53 -!- Klisz has joined.
16:29:08 -!- derrik has joined.
16:30:06 <kallisti> fflip (((flip f :: Expr -> Expr -> Expr)) . g) x y
16:30:06 <kallisti> f x (g y)
16:30:11 <kallisti> *flip
16:30:29 -!- derrik has left.
16:30:42 <kallisti> elliott: ^^^
16:31:47 <elliott> what
16:31:55 <elliott> oh
16:31:58 <kallisti> f = (***) g = (<*>)
16:32:20 <elliott> flip (flip (***) . (<*>))?
16:32:20 <kallisti> unfortunately it uses flip
16:32:24 * kallisti doesn't like flip
16:32:31 <kallisti> believe so yes.
16:33:55 <kallisti> unless you want to rearrange your arguments.
16:33:59 <kallisti> but I doubt you do.
16:34:31 <elliott> So it's...
16:35:08 <elliott> fm >>= flip fmap am . flip (flip (***) . (<*>))
16:35:11 <elliott> "Lovely"
16:35:19 <kallisti> yes looks nice.
16:35:46 <kallisti> it would be nice to have more combinators
16:36:14 <kallisti> for example f ??? g x y = f (g x) y
16:37:24 <kallisti> or...
16:37:28 <kallisti> for example f !!! g x y = f y (g x)
16:37:33 <kallisti> er
16:37:37 <kallisti> for example f !!! g x y = f x (g y)
16:38:18 <kallisti> elliott: let's make a pointless library!!! :) :) :) :)
16:39:23 <elliott> kallisti: You realise that's just (<*>)?
16:39:26 <elliott> <kallisti> for example f !!! g x y = f x (g y)
16:39:27 <elliott> That one.
16:39:30 <elliott> Oh, no, wait.
16:39:36 <elliott> <*> is x z (y z).
16:39:41 <kallisti> yep
16:39:49 <kallisti> I thought the same thing actually
16:39:57 <kallisti> when I was working out how to do that pointfreely
16:40:09 <kallisti> but then I remember it takes the same argument instead of two different ones.
16:40:13 <Deewiant> flip . ((.) .)
16:46:01 <kallisti> why do I keep having these wtf moments
16:46:06 <kallisti> where I change some python code
16:46:14 <kallisti> and it continues to run on another version for some reason.
16:46:29 <elliott> .pyc?
16:46:35 <kallisti> no I checked
16:46:56 <kallisti> and even if there were it would still recompile
16:48:28 <kallisti> surely I'm just stupid
16:48:49 <kallisti> but this happens often with no indication of why
16:54:25 <elliott> [[
16:54:26 <elliott> Besides the following is absolutley equivalent:
16:54:26 <elliott> mysql_query("LOCK TABLES mytable WRITE");
16:54:26 <elliott> try {
16:54:26 <elliott> // ... do lots of queries here
16:54:27 <elliott> } catch (Exception $e) {
16:54:29 <elliott> // do nothing here
16:54:31 <elliott> }
16:54:33 <elliott> mysql_query("UNLOCK TABLES");
16:54:35 <elliott> The only difference is the second example does rethrow the exception. Though this is still possible (however much more to type) it is wrong design. Since obviously you are using the exceptions as control flow.
16:54:38 <elliott> ]] -- php dev justifying noninclusion of "finally"
16:54:57 <elliott> Occasionally I try and give PHP developers the benefit of the doubt because, hey, it's not easy to write a VM, they must have *some* modicum of intelligence, right?
16:55:01 <elliott> nooooooooooooooope
16:55:15 -!- kallisti_ has joined.
16:55:48 <elliott> "And that design looks like Java where it unlike with PHP makes somewhat sense."
16:55:52 * elliott cries.
16:56:55 -!- kallisti has quit (Ping timeout: 244 seconds).
16:57:50 <kallisti_> elliott: wat
16:57:53 <kallisti_> that sentence....
16:57:55 <elliott> kallisti_: http://codu.org/logs/log/_esoteric/2011-12-04#165425elliott
16:58:39 <kallisti_> I like the part where
16:58:41 <kallisti_> it's not equivalent
16:58:58 <kallisti_> well, not in all situations.
16:59:21 <elliott> It's equivalent in no situations.
16:59:46 <elliott> "Method names are case insensitive, unless you're calling a forwarded method on a FilterIterator, in which case you must include at least one uppercase letter in the method name for it to work. Even if the name of the actual method you're calling does not have one."
16:59:53 <elliott> php :')
17:00:03 <kallisti_> wat
17:00:06 <Deewiant> The fuck? :-D
17:00:09 <kallisti_> perl is weird but like...
17:00:22 <kallisti_> there's usually some kind of sense behind it, unless it's historically.
17:00:29 <kallisti_> -ly
17:00:33 <elliott> Deewiant: http://www.reddit.com/r/lolphp/comments/kmbpo/method_names_are_case_insensitive_unless_youre/
17:00:37 <elliott> http://codepad.org/c7ewg1yc
17:11:16 <elliott> Oh no, Mathnerd314 is in #haskell.
17:13:27 <olsner> for some reason, user names are hidden on that whole subreddit
17:15:37 <elliott> olsner: yeah, it's irritating :P
17:16:10 <olsner> for the benefit of everyone who tries to keep their php bashing secret
17:16:47 <olsner> or maybe rasmus lehrdorf puts all this crap in so that he can post it anonymously on lolphp later
17:16:56 <elliott> olsner: You can turn off the stylesheet for that subreddit or whatever.
17:17:01 <elliott> Or just view the soure.
17:17:02 <elliott> source.
17:17:07 <elliott> Or use the element inspector in $browser.
17:24:41 <kallisti_> wtf python...
17:27:57 <olsner> hmm, no lolpython or wtfpython reddit :/
17:35:32 <elliott> Where's oerjan when you need him
17:35:36 <elliott> olsner: Are you a suitable oerjan
17:42:09 <Slereah> http://www.qwantz.com/index.php?comic=1907
17:42:11 <Slereah> teehe
17:43:58 <elliott> Slereah!
17:44:07 <Slereah> Yes!
17:44:58 <elliott> WE MISS YOU
17:45:04 <elliott> Also, that is a good Dinosaur Comic.
17:45:21 <Slereah> Well
17:45:24 <Slereah> See, the thing is
17:45:28 <Slereah> I am bad at programming
17:45:34 <elliott> Yeah but you've always been that.
17:45:36 <Slereah> So I can't really read most discussions here
17:45:41 <elliott> We just want you for the gay sex.
17:45:48 <elliott> Like all our most cherished members.
17:46:27 <Slereah> Well I just go to furnet for that
17:49:03 <Slereah> I am currently reading up on TIME TRAVEL
17:49:06 <Slereah> Because it is awesome
17:49:18 <Slereah> So maybe instead, we should be talking about TWO DUCKS
17:49:24 <Slereah> Or any other time-travel related language
17:50:39 -!- monqy has joined.
17:52:55 <olsner> elliott: I dunno, try me?
17:53:15 <elliott> olsner: Don't need 'im any more
17:53:17 <elliott> Well, probably
17:53:31 * kallisti_ can surprisingly understand like 50% of what is said.
17:53:35 <elliott> Slereah: I have but one duck to offer.
17:53:38 -!- kallisti_ has changed nick to kallisti.
17:53:41 <elliott> kallisti: We dumb it down just for you!
17:53:49 <olsner> ok, back to watching julian and miles spelunking in sloan's mind then
17:54:32 <Slereah> It only works with a pair of ducks I'm afraid
17:54:41 <kallisti> elliott: even I'm not paranoid enough to believe that.
17:54:44 <Slereah> A time pair of ducks
18:14:27 <kallisti> what's the purpose of ^^ ?
18:14:30 <kallisti> :t (^^)
18:14:37 <Slereah> It makes anime eyes
18:14:38 <kallisti> just to restrict the type to Fractional instead of Num?
18:18:35 <elliott> kallisti: (^) can only do integer exponents
18:18:40 <elliott> or hm
18:18:45 <elliott> i forget what (^^) is
18:18:53 <elliott> but it probably does something more accurate than repeated multiplication, I reckon
18:18:58 <kallisti> elliott: it's the same but instead of a Num base it's fractional
18:19:05 <elliott> right
18:19:06 <elliott> see above then
18:19:20 <kallisti> but it's still an integral power... sooo
18:19:32 <elliott> yes
18:19:33 <elliott> and?
18:19:37 <Deewiant> > 2 ^ (-4)
18:19:40 <Deewiant> Bah
18:19:45 <elliott> ah, right
18:19:47 <Deewiant> > 2 ^ (-4)
18:19:47 <Deewiant> *** Exception: Negative exponent
18:19:47 <Deewiant> > 2 ^^ (-4)
18:19:47 <Deewiant> 6.25e-2
18:20:10 <elliott> Deewiant: Hmm, doesn't (**) work for that though
18:20:23 <kallisti> I suppose ^^ is just for different types.
18:20:24 <Deewiant> Yes, but (**) is for Floating
18:20:28 <elliott> Ah
18:20:38 <elliott> kallisti: no
18:20:39 <Deewiant> (^^) is Fractional^Integral, (**) is Floating^Floating
18:20:45 <elliott> <Deewiant> > 2 ^ (-4)
18:20:45 <elliott> <Deewiant> *** Exception: Negative exponent
18:20:45 <elliott> <Deewiant> > 2 ^^ (-4)
18:20:45 <elliott> <Deewiant> 6.25e-2
18:20:47 <elliott> but yeah right what Deewiant said
18:20:59 <elliott> Deewiant: Hmm, isn't Rational fractional
18:21:03 <kallisti> elliott: no what?
18:21:08 <kallisti> it's not for different types?
18:21:10 <elliott> Oh, duh
18:21:17 <elliott> kallisti: It's not "just" for different types
18:21:21 <elliott> It has different behaviour to (^)
18:22:30 <kallisti> I was talking about ** vs ^^ (which also has different behavior.... as the result of different types)
18:22:55 <elliott> Ah.
18:38:16 -!- DCliche has joined.
18:41:46 -!- Klisz has quit (Ping timeout: 255 seconds).
18:58:14 -!- Ngevd has joined.
19:00:14 <Ngevd> Hello!
19:01:08 <elliott> hele
19:04:00 -!- zzo38 has joined.
19:08:18 <kallisti> elliott: OH SNAP
19:08:27 <kallisti> I just got into a free will vs. determinism debate
19:08:29 <kallisti> on the internet
19:08:32 <kallisti> someone was /wrong/
19:08:34 <kallisti> I had to do something
19:08:48 <elliott> I... care deeply?
19:09:28 <Ngevd> I dare creepily
19:10:25 <elliott> :D
19:11:21 <zzo38> What mistake did someone made?
19:20:56 <kallisti> zzo38: they thought free will existed.
19:21:04 * kallisti puts a can of worms on the table. He opens it.
19:22:42 <kallisti> I hope no one likes worms.
19:23:14 <zzo38> kallisti: That can be the matter of opinion. If someone is /wrong/ it meant they must get some plain fact wrong, such as the premises of an argument leading to the conclusion that free will existed.
19:23:25 <kallisti> zzo38: oh they did that.
19:23:30 <kallisti> but yes, I agree.
19:23:40 <kallisti> determinism is not necessarily right, because we have not proven it.
19:23:43 <zzo38> It would be equally wrong if you used wrong premises of an argument that leads to a conclusion that free will is not exist.
19:24:49 -!- oerjan has joined.
19:28:11 <zzo38> My opinion is that the universe works by lazy I/O.
19:28:59 <oerjan> it's an interesting hypothesis. it means the universe does not have to simulate exactly the huge parts where there might not live anyone...
19:29:33 <elliott> that's not really lazy IO is it, it's just plain laziness
19:29:39 <kallisti> nah probably a dynamically typed strict imperative functional language with syntax in the form of tokens seperated by whitespace and grouped in lists formed by balanced parentheses.
19:29:47 <elliott> I guess it's kind of like Hashlife
19:29:56 <elliott> but I don't think you could outright avoid simulating anywhere
19:29:56 <zzo38> I am not talking about lazy evaluation (which it probably makes no sense to say the universe has it or not), but about lazy I/O.
19:30:00 <elliott> because everything depends on everything else :P
19:30:08 <oerjan> elliott: well "IO" only really applies if there's an outside the computation is communicating with, no?
19:30:25 <elliott> oerjan: yes. so you are addressing the wrong person
19:30:31 <oerjan> and still may not apply if you expand to include the outside
19:30:33 <kallisti> oerjan: such a life-centric notion, that the universe cares that we're witnessing part of it.
19:31:57 <oerjan> kallisti: the opposite alternative is to assume that absolutely every particle in the universe is faithfully simulated. and that's _before_ we consider many-worlds.
19:32:42 <kallisti> I think many worlds is very... silly.
19:33:30 <kallisti> oerjan: also is it really "simulated" if you're the thing that simulations simulate? :P
19:33:57 <oerjan> yes, but no one has afaik found an interpretation of QM which _doesn't_ require the entire wavefunction to exist in some form.
19:34:28 <oerjan> this may of course just be a failure of imagination.
19:34:33 <elliott> oerjan: yes what?
19:35:04 <elliott> I think c sort of provides a mechanism for the universe to be lazy
19:35:12 <elliott> it could just simulate events when we're able to observe them
19:35:16 <elliott> and defer actually running them until then
19:35:22 <elliott> and so on, recursively
19:35:24 <elliott> that doesn't reduce work
19:35:25 <zzo38> oerjan: Yes I suppose it is possible we have forgotten about some things, but we probably cannot know for sure
19:35:28 <elliott> but it lets it be delayed
19:35:31 <oerjan> elliott: yes to kallisti. many worlds isn't silly if no one has found an interpretation which is _less_ silly.
19:35:43 * elliott doesn't find Many Worlds silly at all.
19:35:51 * elliott finds Copenhagen pretty silly, though.
19:36:11 * elliott also doesn't think it matters.
19:36:20 <oerjan> elliott: it seems to lack parsimony. intuitively it uses an enormous amount of information to calculate a comparatively tiny result.
19:36:34 <oerjan> from our perspective.
19:36:40 <elliott> oerjan: that's just anthropic bias
19:36:49 <elliott> oerjan: assuming /this/ universe is the "result"
19:37:00 <elliott> I suppose such things go well with supernatural beliefs, though >:)
19:37:02 <zzo38> I think some multiple interpretations might still be valid in case they can change into each other and in case each one makes calculations resulting in the same result; otherwise it might not be.
19:37:13 <oerjan> well i guess in a sense it's the _least_ silly in that sense that it actually assumes the other possible results also exist rather than are just thrown away.
19:37:25 <kallisti> there's also assumptions of "waste"... what is wasteful in the context of the entire universe (or multiple universes)?
19:37:40 <elliott> oerjan: copenhagen is imperative programming. many worlds is functional!
19:37:48 <elliott> oerjan: you see, we _are_ the result. the other universes get garbage-collected.
19:38:00 <elliott> copenhagen is just mutating this universe rather than forking new ones off it
19:38:05 <oerjan> heh
19:38:07 <elliott> god isn't that inelegant
19:39:36 <pikhq> I see nothing silly about many worlds at all.
19:40:10 <kallisti> the man reason I think it's silly is that there isn't really any evidence to make such a huge assumption about reality.
19:40:26 <kallisti> we have no observation of it taking place.
19:40:29 <elliott> kallisti: um
19:40:35 <elliott> kallisti: there's no evidence of _any_ interpretation of QM
19:40:38 <elliott> that's kind of the point
19:40:44 <elliott> there's no evidence for the Copenhagen interpretation, either
19:40:49 <kallisti> sure
19:40:58 <kallisti> I didn't say that many worlds is the only silly one. :P
19:40:59 <pikhq> kallisti: Um, nobody's saying it's absolutely true. We're merely claiming that many worlds seems more reasonable.
19:41:04 <pikhq> Which is the most that can be said.
19:42:24 <pikhq> If the only criterion you care about is "strong amounts of evidence in favor", then all you can say about quantum mechanics that's not 'silly' is "quantum mechanics exists". :P
19:43:22 <kallisti> I think it's much more reasonable to accept that we have at the moment (or possibly forever) hit a limit in what we can know about reality and to not invent notions, from scientific reuslts, that have no basis.
19:43:53 <elliott> kallisti: STOP THINKING, EVERYONE!!!
19:43:55 <elliott> IT'S UNREASONABLE!
19:44:01 <elliott> YOU MIGHT _LEARN_ SOMETHING!
19:44:22 <pikhq> kallisti: I take it you despise hypothesis.
19:44:31 <pikhq> Hypotheses, even.
19:44:41 <kallisti> not at all. I'm not like a... knowlege fascist or whatever.
19:44:51 <kallisti> whatever this position you seem to think I take.
19:45:05 <pikhq> The one where you think it unreasonable to hypothesise.
19:46:08 <kallisti> it's about comparative reasonability. not inventing notions without basis is /more/ reasonable. Sure, you're free to imagine and hypothesize.
19:47:35 <pikhq> I strongly suspect you don't actually think like that, you just think it's more 'rational' to do so.
19:47:56 <kallisti> sure, that sounds like a better word.
19:47:58 <pikhq> Unless when you see the side of a house, you think "This side of the house is white" instead of "The house is white"?
19:48:24 * kallisti is not a reasonable person.
19:48:32 <kallisti> excuse me, rational.
19:49:06 <pikhq> And you're not even proposing rational methods of thought, you're proposing Hollywood rational methods of thought. :)
19:49:15 <kallisti> I am?
19:49:46 <pikhq> Yes, you're essentially excluding any form of reasonable inference from limited evidence.
19:50:27 <Phantom__Hoover> Oh god, is kallisti trying to think.
19:50:28 <pikhq> It would, of course, be pointless and irrational to assert that such inferences are very *certain*, but it's perfectly reasonable to *draw* said inferences.
19:50:31 <Phantom__Hoover> That never ends well.
19:50:34 <Phantom__Hoover> Or starts well.
19:50:43 <Phantom__Hoover> Or progresses between the two well.
19:51:18 <kallisti> but it's not... reasonable. It's reasonable to hypothesize and speculate, but I think it's unreasonable to go any further.
19:52:15 <pikhq> Um. It's not the case that you have to have 99.9999% certainty for something. You act like it is.
19:52:16 <kallisti> it's entirely meaningless, for example, to say that many-worlds holds any more merit than Copenhagen, because neither are certain.
19:52:49 <Phantom__Hoover> So you think it's unreasonable to say "here's this system that's quite hard to wrap your mind around; why don't we analogise it with this equivalent system which is easier to comprehend"?
19:53:23 <kallisti> it could be that our universe is within a large super computer that calculates wavefunction collapse, and that is how it works. we wouldn't be any wiser to this.
19:53:26 <kallisti> Phantom__Hoover: no that's fine
19:53:42 <Phantom__Hoover> kallisti, because that's all MWI and Copenhagen are.
19:53:42 <kallisti> analogies are good learning tools.
19:54:06 -!- ais523 has joined.
19:54:10 <kallisti> Phantom__Hoover: okay good. I was under the impression that people believed these things or put value into these interpretations as being true in some sense.
19:54:25 <pikhq> Many Worlds does hold more merit than Copenhagen. Many Worlds is significantly more consistent with other properties of how physics works as far as we know.
19:54:34 <elliott> kallisti: you realise that we do not _know_ these are untestable?
19:54:44 <kallisti> elliott: sure.
19:54:46 <elliott> we merely do not know that they are testable.
19:54:51 <kallisti> yes.
19:54:55 <kallisti> and we haven't tested them.
19:54:56 <elliott> if nobody started with untestable hypotheses, we'd have no science
19:55:02 <kallisti> correct.
19:55:06 <elliott> so
19:55:07 <pikhq> That said, I'd say that Many Worlds has something like 51% odds of being true, while Copenhagen has something like 40% odds.
19:55:08 <elliott> you have no valid complaint
19:55:43 <ais523> pikhq: are you sure that they contradict each other?
19:55:59 <Phantom__Hoover> pikhq, ...define 'true'.
19:56:00 <kallisti> elliott: cool.
19:56:10 * kallisti is done. he has learned stuff.
19:56:15 <pikhq> Phantom__Hoover: "Actually how quantum mechanics works."
19:56:44 <pikhq> Phantom__Hoover: Or, if you want me to just rub your face in shit: "The sky is blue" is true if and only if the sky is blue.
19:56:48 <Phantom__Hoover> pikhq, ...define "actually how quantum mechanics works".
19:57:04 <pikhq> Phantom__Hoover: Stop being a numbskull.
19:57:08 <oklopol> oh my god what is going on in here
19:57:21 <Phantom__Hoover> pikhq is failing to understand modelling.
19:57:31 <Phantom__Hoover> He is insulting me for not sharing his misconceptions.
19:57:51 <pikhq> Phantom__Hoover: You are certainly not aiding things.
19:58:07 <elliott> pikhq: Phantom__Hoover is right.
19:58:14 <oklopol> perhaps, or perhaps he understands it so well he doesn't bother to mention that that's actually going on every time this is discussed, but is fine with the more intuitive way of stating it.
19:58:17 <oklopol> who gives a fuck
19:58:17 <elliott> "Actually how quantum mechanics works" doesn't really make any sense, because QM never referencess an interpretation.
19:58:30 <pikhq> elliott: I phrased things poorly.
19:58:34 <elliott> Yes, you did.
19:58:37 <elliott> That's why Phantom__Hoover asked for a definition.
19:58:46 <pikhq> Phantom__Hoover: This is like going "define purple" if someone says "The sky is purple". It doesn't aid correcting a misunderstanding, it just pisses people off.
19:59:02 <oklopol> can we talk about something that has more to do with say algebra
19:59:13 <oklopol> wait i'm actually leaving, leave something juicy for the backlog
19:59:20 <Phantom__Hoover> oklopol, QM is all group theory, maaaan.
19:59:24 <Phantom__Hoover> (Note, lies.)
19:59:48 <elliott> pikhq: it's like going "define 'really is'" if you say "The sky really is purple."
19:59:51 <oklopol> okay so umm
19:59:53 <elliott> it's more charitable than "no"
19:59:55 <oklopol> i lost my underpants.
20:00:01 <Phantom__Hoover> It's also all zeta function realisation or whatever it's called so elliott loves it.
20:00:06 <oklopol> i guess i'm going ninja turtle.
20:00:07 <elliott> Phantom__Hoover: Regularisation.
20:00:10 <pikhq> Phantom__Hoover: Let's go with s/being true/being a more accurate model/
20:00:28 <elliott> Does Copenhagen suffer from floating-point roundoff errors?
20:01:16 <oklopol> elliott: remember when fax/what'sherface told me that the distance of two points in R^2 is *actually* sqrt(x^2 + y^2), and other metrics are not actually distances.
20:01:37 <Phantom__Hoover> pikhq, MWI and Copenhagen /are not models/.
20:01:47 <Phantom__Hoover> They're ways of /looking/ at a model.
20:01:58 <elliott> oklopol: no :)
20:02:30 <Phantom__Hoover> It's like asking whether Lagrangian or "standard" (I don't really know the proper term) mechanics are more accurate.
20:02:59 <Ngevd> Aaah!
20:03:11 <oklopol> i wish she was here now so i could finally know what the actual distance of two points in S^Z is
20:03:14 <Ngevd> Pandas arrive at Edinburgh Zoo!
20:03:20 <Phantom__Hoover> I HATE PANDAS GOD
20:03:31 <pikhq> Pandas: nature's D student.
20:03:33 <Ngevd> Poll setbacks for Putin's party!
20:03:37 <Ngevd> THEY MUST BE CONNECTED
20:03:45 <elliott> Phantom__Hoover: FUCK YOU
20:03:48 <elliott> PANDAS ARE AWESOME
20:03:49 <oklopol> because we regularly use 4 and only two are uniformly equivalent
20:03:53 <Phantom__Hoover> I hate pandas; god.
20:03:55 <oklopol> (or even topologically)
20:03:57 <kallisti> Phantom__Hoover: I dislike pandas also
20:04:05 <elliott> kallisti: FUCK YOU
20:04:18 <Phantom__Hoover> <oklopol> i wish she was here now so i could finally know what the actual distance of two points in S^Z is
20:04:19 <kallisti> elliott: NO EVERYONE MUST HAVE /MY/ OPINION, ASSHOLE.
20:04:21 <Phantom__Hoover> Wait S?
20:04:28 <Phantom__Hoover> Isn't that the sedenions?
20:04:30 <pikhq> elliott: Pandas are carnivores that prefer the least nutritionally dense food possible that they can't even digest well.
20:04:47 <elliott> pikhq: Yeah, and that's the stupidest thing they do.
20:04:51 <elliott> You're *human*.
20:04:58 <oklopol> Phantom__Hoover: here it's a finite set
20:05:00 <pikhq> elliott: And can only barely manage to fuck.
20:05:09 <pikhq> And they also regularly kill their children.
20:05:15 <pikhq> From *inattention*.
20:05:29 <kallisti> s/pandas/humans/
20:05:44 <elliott> Phantom__Hoover: Tell me you hate pandas for a good reason (there are no good reasons pandas are adorable).
20:05:44 <oklopol> i guess you could say that the Cantor topology is the actual one, since that's inherited from the finite set whose natural topology is discrete
20:05:48 <Ngevd> They'd be PERFECT for Dwarf Fortress
20:05:48 <oklopol> but w/e have to go
20:05:59 <pikhq> kallisti: Pandas typically have twins and ignore one of them.
20:06:10 <pikhq> No reason. Just do.
20:06:13 <Phantom__Hoover> <elliott> Phantom__Hoover: Tell me you hate pandas for a good reason (there are no good reasons pandas are adorable).
20:06:22 <Phantom__Hoover> I hate them just because they're useless?
20:06:26 <kallisti> pikhq: maybe it's part of their culture. don't be an insensitive prick.
20:06:29 <pikhq> They'll also roll over and crush their cubs.
20:06:34 <kallisti> pikhq: (but no really, I think pandas are stupid too.)
20:06:36 <Phantom__Hoover> Unfortunately so does pikhq; he always ruins hating things for me.
20:06:46 <pikhq> Basically the only adaptation they've got is being cute.
20:07:26 <elliott> Phantom__Hoover: Humans are pretty useless?
20:07:28 <elliott> Nothing eats us.
20:07:38 <elliott> I suppose we're decent at eating other things, but they're all things other things like too.
20:07:50 <Phantom__Hoover> elliott, well yeah, but we don't go around asking other things to help us not die.
20:08:06 <pikhq> elliott: The only strictly necessary things for a life form is surviving and reproducing.
20:08:10 <pikhq> Pandas suck at both.
20:08:14 <elliott> Phantom__Hoover: That's only because we were too fucking stupid to and only the dolphins took pity on us.
20:08:26 <Phantom__Hoover> Ahh.
20:08:33 <Phantom__Hoover> pikhq, s/surviving and //
20:08:40 <pikhq> They literally prefer to eat the worst possible food *for their own damned digestion*.
20:08:59 <pikhq> Phantom__Hoover: Surviving until you can reproduce is a prereq of reproduction.
20:09:02 <pikhq> Thus why it's listed.
20:09:54 <kallisti> you forgot "being born" and "the universe must exist"
20:09:59 <kallisti> I'm sure there are others.
20:10:05 <kallisti> other prereqs
20:10:07 <pikhq> Bah.
20:10:12 <kallisti> (looool)
20:10:17 <elliott> as opposed to all that surviving things do without being born
20:10:34 <kallisti> indeed
20:10:35 <pikhq> elliott: Many things survive without being born.
20:10:37 <Phantom__Hoover> pikhq, hence why surviving is an unnecessary addendum.
20:10:43 <kallisti> this conversation
20:10:45 <pikhq> Any life form that doesn't do live birth. :)
20:10:46 <kallisti> is hilarious
20:11:05 <pikhq> I don't think bacteria are born, for instance.
20:11:59 <kallisti> sh, semantics.
20:12:36 <kallisti> ALLT HINGS ARE BR0N AS THE UNIVRESE ONCWE AWS
20:12:52 <kallisti> thep lanets bron
20:13:00 <kallisti> the uns
20:13:04 <kallisti> the sarts
20:15:40 <fizzie> That is not dead which can eternal lie, And with strange aeons death may die.
20:15:41 <fizzie> ^style
20:15:48 <fizzie> Hey, where's the bot?
20:16:01 <fizzie> RAW >>> :leguin.freenode.net NOTICE fungot :Server Terminating. Received SIGTERM <<<
20:16:04 <fizzie> Well, that was impolite.
20:16:06 <kallisti> HackEgo: EgoBot: locate the missing brots
20:16:16 -!- fungot has joined.
20:16:24 <fizzie> ^style lovecraft
20:16:24 <fungot> Selected style: lovecraft (H. P. Lovecraft's writings)
20:16:26 <kallisti> HackEgo: EgoBot: excellent work
20:16:35 <fizzie> fungot: So, do you think death may ever die?
20:16:36 <fungot> fizzie: it was the fnord of m. fnord, gilman dragged himself forward along a course determined by the opportunities it gave for continuing the use of the principle of the small radiating arms was broken off and were missing. what of the fnord
20:16:49 <Deewiant> Yes, what of the fnord.
20:16:51 <fizzie> What of the fnord! Indeed.
20:17:02 <kallisti> fizzie: fungot: I wonder if there are any transcripts of the dialogue in Starcraft I and Starcraft Brood Wars
20:17:03 <fungot> kallisti: it is dark not the darkness that is part of the accursedly resculptured wall in a series of cartouches the continuous band arrangement being frequently interrupted in these late carvings depicting a constantly growing migration to the nearest fnord. once inside one of the most ancient one cease to flow forth.
20:18:01 <fizzie> fungot: You sound like a madman.
20:18:02 <fungot> fizzie: so randolph carter thanked the zoogs, for one thing; and after its fnord in the form of titanic egyptian letters spelling terrible primal arcana of earth; and thereafter a still more elaborate theory, and believed he would try to keep track of his somnambulism. as he planned, he could not
20:18:56 <fizzie> fungot: In Ulthar, no man may kill a cat. True or false?
20:18:57 <fungot> fizzie: the hill's summit by safer routes they saw that fnord the fnord hear strange murmurings and half-remembered notes. woods and fields, he had slipped out unseen and fnord boldly in past the men hired to guard him. that was in 1692 the fnord had gone mad and babbled of a small seaport.
20:20:46 <kallisti> it is dark not the darkness that is part of the accursedly resculptured wall in a series of cartouches the continuous band arrangement being frequently interrupted in these late carvings depicting a constantly growing migration to the nearest fnord. once inside one of the most ancient one cease to flow forth. -- Benjamin Franklin
20:31:06 <oerjan> <fizzie> Well, that was impolite. <-- there was a previous admin warning
20:33:18 <Phantom__Hoover> oerjan, about the server?
20:34:30 <oerjan> yes
20:34:53 <oerjan> leguin and a couple of others were being updated
20:41:22 <Gregor> IOCCC submitteddddddddd
20:41:42 <elliott> Gregor: more like
20:41:44 <elliott> subCRAPPED
20:41:46 <elliott> OH SNAP
20:42:04 <Gregor> MOAR LIKE SUBWHYSHOULDELLIOTTEVENBOTHERWHENGREGORSGONNAWIN
20:43:10 <fizzie> More like subTITLED. Wait, that made no sense.
20:43:35 <elliott> More like the pain has now subSIDED.
20:44:11 <oklopol> Gregor: do you send your papers directly to journals or do you go to conferences first? (i'm wondering how likely it is that i'll see esolang people in a conference sometime, that'd be awesome, but ais seems pretty useless at least)
20:44:21 <elliott> ais523: :'(
20:44:38 <zzo38> I made a class IsNatural and a type family Lesser. Now how would I encode number theory in the type system? Would I somehow encode the Poeano postulates? I don't know?
20:44:40 <fizzie> More like the subBAND STRUCTURE OF II-VI MODULATION-DOPED MAGNETIC QUANTUM WELLS.
20:44:48 <ais523> oklopol: my papers have all been conference papers so far
20:44:53 <elliott> fizzie: ilu
20:44:57 <Gregor> oklopol: Conferences.
20:44:58 <elliott> zzo38: data Z; data S n
20:44:59 <oklopol> which conferences?
20:45:05 <ais523> but I suspect I end up in different sorts of conferences to you
20:45:13 <Gregor> oklopol: ECOOP, OOPSLA, PLDI primarily.
20:45:16 <elliott> oklopol just goes to pimping conferences.
20:45:19 <oklopol> yes but the big ones take all kinds of crap
20:45:21 <ais523> so far, they've been to MFPS, POPL, and ICFP (in that order); I only went to the first of them
20:45:27 <zzo38> elliott: Well I already have data Zero and Maybe
20:45:47 <elliott> zzo38: then you're done :) define addition with type families or typeclasses with functional dependencies
20:46:19 <zzo38> OK.
20:46:35 <zzo38> But can that work to make proof by functions?
20:46:51 <oklopol> yeah obviously none of those are general enough
20:46:53 <elliott> Sure, with GADTs.
20:46:55 <zzo38> At first I thought of using bijective function type but Haskell doesn't have that, so I try a different way.
20:47:18 <elliott> zzo38: data a :=: b where EqZZ :: Z :=: Z; EqSS :: a :=: b -> S a :=: S b
20:47:25 <oklopol> and i assume fizzie's are even stupider, fizzie: can i have a list?
20:47:28 <elliott> or you could just go all the way
20:47:34 <elliott> data a :=: b where Refl :: a :=: a
20:47:42 <elliott> foo :: a :=: b -> t a :=: t b
20:47:43 <elliott> foo Refl = Refl
20:48:02 <zzo38> O, that is how it works.
20:48:15 <elliott> oh, wait, you actually need
20:48:15 <elliott> newtype Lift f a b = Lift { unlift :: f a := f b }
20:48:16 <elliott> -- | You can lift equality into any type constructor
20:48:16 <elliott> lift :: a := b -> f a := f b
20:48:16 <elliott> lift a = unlift (subst a (Lift id))
20:48:17 <elliott> for that
20:48:18 <fizzie> oklopol: Possibly a majority of our speech-related conference papers go to Interspeech, ICASSP and EUSIPCO; there's quite a lot more, but I think they're mostly quite specific too.
20:48:27 <elliott> oh no wait
20:48:29 <elliott> that's leibnizian equality
20:48:34 <elliott> yeah my foo definition should work fine
20:49:18 <fizzie> ASRU, too.
20:50:14 <oklopol> maybe i should write something up for mfps, that almost sounds like a real conference
20:50:59 <oklopol> of course we need to do some syncing with ais, perhaps not in a few years though
20:53:21 <oerjan> Many Fake Proceedings Scam
20:53:42 <oerjan> real? i think not!
20:55:56 <fizzie> Massively Fraudulent, Positively Shady. Sure, that's the best conference.
20:57:12 <zzo38> Do I need to add constructors for addition and multiplication?
20:57:28 <kallisti> no
20:59:15 <oerjan> Mafia Facade Pretending Science
21:00:04 <zzo38> And exponent?
21:00:10 <kallisti> Manifested Fructose Protagonist Society
21:00:39 <fizzie> Mishandled Facts Proudly Submitted.
21:01:02 <oerjan> My Friends Presenting Shit
21:01:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:02:03 <kallisti> zzo38: I don't know about that one.
21:02:30 <kallisti> _<0
21:03:05 <kallisti> ),}
21:07:08 <elliott> zzo38: no
21:08:02 <kallisti> kkkkkkkkkkkk
21:08:06 <elliott> kallisti: ((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7
21:08:06 <elliott> http://canonical.org/~kragen/bytebeat/crowd.ogg
21:09:11 <kallisti> those bitshifts are sexy.
21:09:25 * kallisti changes pants.
21:10:46 <kallisti> I like how it uses + - << >> & ^ and |
21:12:18 <kallisti> but it's actually kind of rhythmically boring.
21:12:45 * kallisti is a snobby 8-bit C music critic.
21:18:40 -!- Jafet has quit (Quit: Leaving.).
21:20:35 <olsner> mmkay, so the war on the dominion is over and everone's happy but there are 30 more minutes left of the series
21:20:40 <olsner> plenty of time to fuck it up then
21:21:18 <elliott> :D
21:22:55 <kallisti> hypothetical roleplaying scenario: you're in a Hilbert space, there are ket-vectors everywhere. What do you do?
21:23:46 <oklopol> take of your bra and just go with the flow.
21:23:48 <oklopol> *off
21:26:06 -!- zzo38 has left.
21:26:11 -!- zzo38 has joined.
21:32:17 <ais523> Vorpal: do you have the fix patch for Dungeons of Dredmor? the forum wants me to create an account to download it
21:32:36 -!- derdon has joined.
21:32:44 <Ngevd> I couldn't get the patch to work
21:33:12 <ais523> hmm,
21:33:24 <ais523> I'm getting crashes occasionally on dlevel 2 and consistently on dlevel 3
21:33:52 <Ngevd> I got them often on level 1
21:37:23 <shachaf> elliott: I see that you're back in #haskell.
21:37:58 <elliott> shachaf: Tell that vrook guy that CPP is only used for cabal version constraints and other uses can be replaced by TH.
21:37:59 <elliott> Or don't.
21:38:03 <elliott> But I promised I wouldn't say anything more!
21:38:29 <elliott> Being in #haskell is so much *fun*.
21:38:32 <shachaf> elliott: That doesn't stop you from... What's the word?
21:38:33 <elliott> Fun in the derogatory sense.
21:38:45 <shachaf> Oh, yes. It doesn't stop you from mad.
21:38:45 <elliott> shachaf: Killing fishes?
21:38:50 <elliott> Ah.
21:38:51 * elliott mad
21:38:54 <elliott> `? shachaf
21:38:56 <HackEgo> shachaf mad
21:39:01 <shachaf> `rm wisdom/shachaf
21:39:04 <HackEgo> No output.
21:39:15 <elliott> `? shachaf
21:39:17 <HackEgo> shachaf mad
21:39:48 <shachaf> `ls wisdom
21:39:51 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ elliott \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ kallisti \ mad \ monad \ monads \ monoid \ monqy \ nooga \ oerjan \ oklopol \ phantom__hoover \ phantom_hoover \ php \ qdb \ qdbformat \ quine \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki \ you
21:39:53 <shachaf> `rm wisdom/shachaf
21:39:54 <shachaf> `? shachaf
21:39:56 <HackEgo> No output.
21:39:56 <HackEgo> shachaf mad
21:40:16 <shachaf> `run rm wisdom/shachaf; \? shachaf
21:40:18 <HackEgo> shachaf? ¯\(°_o)/¯
21:40:25 <elliott> `? shachaf
21:40:27 <HackEgo> shachaf mad
21:40:51 <shachaf> "Mad call I it; for, to define true madness, what is't but to be nothing else but mad?"
21:40:55 <shachaf> But let that go.
21:41:57 <elliott> Let what go?
21:42:02 <elliott> It only remains because you remain mad.
21:42:07 <oerjan> `? mad
21:42:09 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
21:42:09 <elliott> Eliminate the madness and you eliminate the mad.
21:42:34 <shachaf> Eliminate the mad and you eliminate the mad.
21:42:45 * shachaf ain't even mad
21:42:59 * Gregor steals your cake.
21:43:22 <oerjan> shachaf: that's in flagrant violation of all the evidence
21:43:36 <shachaf> oerjan: What, do I seem mad?
21:44:08 <oerjan> you seem to be _here_. note above quote.
21:44:40 <zzo38> If you let it go you are nothing at all.
21:44:57 <shachaf> "That he is mad, 'tis true: 'tis true 'tis pity; And pity 'tis 'tis true"
21:45:13 <shachaf> `? elliott
21:45:15 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
21:45:33 <shachaf> `cat wisdom/shachaf
21:45:35 <HackEgo> shachaf mad
21:45:41 <shachaf> `run echo elliott mad > wisdom/elliott
21:45:43 <HackEgo> No output.
21:45:48 <shachaf> `? elliott
21:45:49 <oerjan> NOOOOOOOOOOOOOOOO
21:45:51 <HackEgo> elliott mad
21:45:56 <shachaf> `? oerjan
21:45:58 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation.
21:46:04 <shachaf> `run echo oerjan mad > wisdom/oerjan
21:46:06 <HackEgo> No output.
21:46:09 <oerjan> it was a genuine zzo38 production!
21:46:24 <oerjan> i'll ban you for that. eventually.
21:46:24 <shachaf> Wait, what was?
21:46:34 <oerjan> the `? elliott one
21:46:42 <shachaf> elliott: You're saying more words, aren't you.
21:46:47 <elliott> `revert 1199
21:46:48 <HackEgo> Done.
21:46:51 <shachaf> `revert 1
21:46:53 <HackEgo> Done.
21:46:53 <elliott> shachaf is awfully mad about this whole thing.
21:46:54 <shachaf> `ls
21:46:54 <oerjan> well, or it looks like one, anyhow.
21:46:55 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
21:46:58 <elliott> `revert 1199
21:46:59 <shachaf> `ls wisdom
21:47:00 <HackEgo> Done.
21:47:10 <Gregor> `? Gregor
21:47:13 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
21:47:14 <HackEgo> ls: cannot access wisdom: No such file or directory
21:47:29 <Gregor> elliott: Transactions done yet :P
21:47:47 <elliott> Gregor: Yeah, they just don't happen to work.
21:48:11 <shachaf> `? ?
21:48:13 <HackEgo> ​? is wisdom
21:48:20 <shachaf> `? oerjan
21:48:22 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation.
21:49:13 <Gregor> `run echo 'Your evil overlord oerjan is a lazy expert in future computation.' > wisdom/oerjan
21:49:15 <HackEgo> No output.
21:49:36 <oerjan> close enough.
21:50:07 * shachaf doesn't get the 40 cakes thing.
21:50:15 <Gregor> "What's the most efficient way to compute this?" "Eh, I'll do it later."
21:50:41 <Gregor> shachaf: That's terrible.
21:51:22 <shachaf> `run spot run
21:51:24 <HackEgo> bash: spot: command not found
21:52:52 <oerjan> shachaf: http://knowyourmeme.com/memes/lex-luthor-took-forty-cakes
21:56:52 -!- lambdabot has joined.
21:56:59 <Phantom__Hoover> `? oklopol
21:57:01 <HackEgo> oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid."
21:57:35 <Ngevd> Curious now
21:57:40 <Ngevd> And narcissistic
21:57:45 <Ngevd> `? Taneb
21:57:46 <HackEgo> Taneb? ¯\(°_o)/¯
21:57:51 <Ngevd> `? Ngevd
21:57:53 <HackEgo> Ngevd? ¯\(°_o)/¯
21:57:56 <Ngevd> Aww
21:58:37 <Gregor> `run ln -s /dev/urandom wisdom/ngevd
21:58:39 <HackEgo> No output.
21:58:53 <Gregor> Today in Good Ideas 101...
21:59:02 <oerjan> well it _is_ your bot
21:59:03 <Phantom__Hoover> `? Ngevd
21:59:04 <HackEgo> ​.>N.vlx4Zw.ozuT..j.+x..})eV^a.} D$gK.4G&ro4o.. ".O1.Ӊ>&d2Vl3
21:59:18 <elliott> `? Ngevd
21:59:19 <Ngevd> That's me, all right
21:59:19 <HackEgo> ​S4n5W.3,p+ޓ6t.s憏..+@t.ig:..K圷G.>t..ND[Ml'y?.f`'H=K'Cd..}*
21:59:22 <Gregor> It's hard to argue with that.
21:59:22 <elliott> Yes.
21:59:50 <shachaf> `ln -sf /dev/null wisdom/shachaf
21:59:52 <HackEgo> ln: invalid option -- ' ' \ Try `ln --help' for more information.
21:59:53 <Phantom__Hoover> Ngevd, dammit, why did you get the Best Wisdom.
22:00:00 <shachaf> `run ln -sf /dev/null wisdom/shachaf
22:00:01 <shachaf> `? shachaf
22:00:02 <HackEgo> No output.
22:00:03 <HackEgo> shachaf mad
22:00:12 <shachaf> `cat bin/\?
22:00:14 <HackEgo> cat: bin/\?: No such file or directory
22:00:24 <shachaf> `cat bin/?
22:00:26 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z) \ [ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ cat "wisdom/$topic" \
22:00:36 <Phantom__Hoover> `? P
22:00:39 <HackEgo> P? ¯\(°_o)/¯
22:00:39 <Phantom__Hoover> `? Phantom__Hoover
22:00:41 <HackEgo> Phantom__Hoover can't decide what an appropriate number of underscores is.
22:00:56 <Phantom__Hoover> Oh, of course.
22:00:58 <Phantom__Hoover> `? Phantom_Hoover
22:01:00 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
22:01:19 <Phantom__Hoover> Wait how can I *be* a hatheist?
22:01:52 <oerjan> a true scotsman can be anything.
22:02:12 <Phantom__Hoover> Except an Englishman.
22:02:14 <shachaf> I like how elliott is still talking in #haskell.
22:02:23 <Gregor> `? ../bin/quote
22:02:25 <HackEgo> ​#!/bin/sh \ allquotes | if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ sed "$1q;d" \ else \ egrep -i -- "$1" \ fi \ else shuf -n 1; fi
22:02:26 <shachaf> Arguing with vrook, no less.
22:02:27 <Gregor> lol
22:02:33 <elliott> shachaf: Shhhhhhh.
22:02:37 <oerjan> well ok a true scotsman can be anything except an englishman.
22:02:54 <Gregor> `learn ../bin/quote was the way to access the quote database until Gregor broke it.
22:02:56 <HackEgo> I knew that.
22:03:04 <Gregor> >_>
22:03:05 <Gregor> <_<
22:03:13 <shachaf> `quote
22:03:16 <HackEgo> ​/hackenv/bin/quote: line 1: ../bin/quote: No such file or directory
22:03:30 <oerjan> O KAY
22:03:37 <shachaf> `run cd wisdom; quote
22:04:06 <HackEgo> ​../bin/quote: fork: retry: Resource temporarily unavailable \ ../bin/quote: fork: retry: Resource temporarily unavailable \ ../bin/quote: fork: retry: Resource temporarily unavailable \ ../bin/quote: fork: retry: Resource temporarily unavailable \ ../bin/quote: fork: Resource temporarily unavailable
22:04:11 <Gregor> lol
22:04:17 <Gregor> `revert 1207
22:04:19 <HackEgo> Done.
22:04:43 <shachaf> `? Phantom___Hoover
22:04:44 <HackEgo> Phantom___Hoover? ¯\(°_o)/¯
22:04:45 <shachaf> `? shachaf
22:05:00 <HackEgo> No output.
22:05:40 <Ngevd> `? Ngevd
22:05:42 <HackEgo> ​שH.w|C*!.ë`D.Q0V..a.!AN.vu.Ѥ=xӋ2.XPt.j.4Vf*ҶpcG.(~M".S5%>..GcՄHY@>....w̓N.W4JO&.5QX..#:T<zO1.t..6o$,חU..$.̱.j.Z|.$).;m.TV*Irp6T-wruuܾ@)j .%돱qahu.x$x<>..O.. \ ވ/#Zٙ....5/z}q.fկi)(.X`v/ܟE...Pea%]Ԑf.FO"..
22:06:53 <Gregor> I gotta say.
22:06:56 <Gregor> That's the best wisdom entry.
22:07:01 <Gregor> Can't deny that.
22:07:19 <shachaf> Ngevd: Whence "Ngevd"?
22:07:32 <shachaf> And also, how is it pronounced?
22:07:33 <Ngevd> It's my initails
22:07:54 <Ngevd> it starts with "ing" without the i
22:08:08 <Ngevd> Then "revved" without the r
22:08:08 <Gregor> Ngevd: With plosive?
22:08:56 <Ngevd> Hmm
22:08:59 <Ngevd> I don't think so
22:09:06 <Gregor> Good :P
22:09:31 <Ngevd> I had a momenteray lapse of knowledge of phonetics
22:10:06 <Ngevd> I think the ng may be aspirated, though
22:10:28 <Ngevd> Strictly speaking, my initials are NGvD
22:10:51 <oerjan> the e is just for elliott clone
22:10:54 -!- lambdabot has quit (Remote host closed the connection).
22:10:56 <Ngevd> The G comes from my great-grandfather, George Elliott Moscrop
22:11:01 <Ngevd> Hence the E
22:11:05 <Gregor> oerjan: lol, you were right.
22:11:23 <Ngevd> He was named after his father, George Elliott Moscrop Senior
22:11:28 <Ngevd> Who was named after his mother
22:11:32 <Ngevd> ...
22:12:39 <Gregor> I was named after my grandfather, Dodifer Chauncy Wertheimer.
22:12:44 <Gregor> Luckily I inherited none of his names.
22:13:14 <Ngevd> Jane Elliott
22:13:22 <oerjan> it would have been awkward if you were named _before_ him.
22:13:36 <Ngevd> It's an idiom, dammit
22:13:53 <Ngevd> :(
22:14:02 <oerjan> Ngevd: Gregor broke it first
22:14:34 -!- lambdabot has joined.
22:14:57 <Gregor> PS people whose nicks are their real names are the best kind of people.
22:15:07 <oerjan> yeah
22:15:16 <Ngevd> Yeah, like FireFly
22:15:32 * oerjan swats FireFly -----###
22:15:36 <Gregor> And Coppro "Pooppy" Sophicles
22:19:27 <Gregor> `? coppro
22:19:29 <HackEgo> coppro? ¯\(°_o)/¯
22:19:39 <Gregor> `learn coppro prefers his nickname, Pooppy.
22:19:41 <HackEgo> I knew that.
22:19:50 <olsner> `? coppro
22:19:52 <HackEgo> coppro prefers his nickname, Pooppy.
22:21:40 <oerjan> pooppy the sailor
22:24:41 <zzo38> How would I include the rule of induction into the Haskell code I have?
22:25:44 -!- augur has quit (Remote host closed the connection).
22:30:38 <Phantom__Hoover> `? zzo38
22:30:40 <HackEgo> zzo38? ¯\(°_o)/¯
22:32:16 <Phantom__Hoover> `learn zzo38 is not actually the next version of fungot, much as it may seem.
22:32:17 <fungot> Phantom__Hoover: it is impossible for me to endure again. and the king bade him put away his tattered purple, crowned with fnord vine-leaves and gazing ahead as if upon the golden domes of gigantic cities glittering on the infinitely distant horizon.
22:32:18 <HackEgo> I knew that.
22:33:41 <oerjan> fnord vine-leaves, the best kind.
22:36:21 <Phantom__Hoover> `? fungot
22:36:21 <fungot> Phantom__Hoover: just when my fancy merged into real sight i cannot tell; but there came a recollection of those ancient ways and shadow forth the fnord of that life, and of helping him explain the situation to the proper fnord authorities. to this end he employs endless notes, records, mnemonic objects, and
22:36:23 <HackEgo> fungot cannot be stopped by that sword alone.
22:48:35 <Phantom__Hoover> `? HackEgo
22:48:37 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing.
22:48:57 <Phantom__Hoover> `? EgoBot
22:48:59 <HackEgo> EgoBot? ¯\(°_o)/¯
22:49:22 <Phantom__Hoover> `? oerjan
22:49:25 <HackEgo> Your evil overlord oerjan is a lazy expert in future computation.
22:49:42 <Phantom__Hoover> I should probably stop now.
22:57:21 -!- Guest12461 has changed nick to quintopia.
22:57:35 -!- quintopia has quit (Changing host).
22:57:36 -!- quintopia has joined.
22:57:51 <quintopia> how did i become not quintopia?
23:01:54 <Gregor> By lack of AUTHENTICATION.
23:06:05 -!- Ik4ru5 has joined.
23:06:27 <Gregor> Yowsa.
23:06:36 -!- Ik4ru5 has left.
23:06:55 <Gregor> lol
23:08:08 -!- S2GUARD has joined.
23:08:08 -!- S2GUARD has quit (Excess Flood).
23:08:22 -!- S2GUARD has joined.
23:08:22 -!- S2GUARD has quit (Excess Flood).
23:08:32 <Gregor> Promising.
23:08:40 <oerjan> i'd say
23:08:44 * Phantom__Hoover → sleep
23:08:47 -!- Phantom__Hoover has quit (Quit: Leaving).
23:08:50 <Ngevd> Are these names names?
23:08:59 <oerjan> which names?
23:09:10 <Ngevd> Ik4ru5 and S2GUARD
23:09:36 <oerjan> well the first is pretty clearly icarus in 1337
23:09:49 <Ngevd> So it does
23:10:26 <Gregor> And the other one guards stoo'.
23:10:46 <Ngevd> Or lives in Stutgart?
23:10:47 <oerjan> Gregor: probably a colleague of pooppy, then.
23:10:53 <Gregor> oerjan: Quite possible.
23:11:33 <oerjan> unless it's pooppy's parole officer
23:16:50 <zzo38> Is this OK? class Classical x => IsNatural x where { selfEqual :: x :=: x; induction :: (forall y. IsNatural y => f y -> f (Maybe y)) -> f Zero -> f x; };
23:17:18 <elliott> zzo38: x :=: x is true for all x
23:17:23 <elliott> well, depends what your (:=:) is
23:17:48 <zzo38> I certainly could make a constructor for :=: making that unnecessary, I suppose.
23:18:00 <elliott> the constructor is called Refl :P
23:18:03 <zzo38> But is the type signature for induction correct?
23:18:30 <elliott> sure. it forces x to be either Zero or Maybe n, so you don't even need selfEqual with an (:=:) that only works on nats
23:18:35 <elliott> you can _prove_ it with induction
23:19:43 <elliott> define f x = (x :=: x). then it becomes (forall y. IsNatural y => y := y -> Maybe y :=: Maybe y) -> Zero :=: Zero -> x :=: x
23:19:47 <elliott> easy
23:23:18 <zzo38> Yes, I can see how that works.
23:28:35 <zzo38> How do you define the induction for instance IsNatural x => IsNatural (Maybe x)
23:30:05 <elliott> zzo38: instance (IsNatural a) => IsNatural (Maybe a) where induction s = s . induction s
23:30:42 <zzo38> OK, thanks that works
23:52:42 -!- pikhq_ has joined.
23:52:50 -!- pikhq has quit (Ping timeout: 244 seconds).
23:54:06 <zzo38> O, now I need a Classical instance for :=: as well
23:54:18 <elliott> shouldn't be hard
23:54:24 <elliott> i forget what Classical is though
23:54:30 <zzo38> Yes.
23:54:38 <zzo38> Classical is class for the law of excluded middle
23:55:14 <elliott> i mean, the contents
23:55:43 <zzo38> lem :: Classical x => Either x (Not x);
23:57:21 <zzo38> I probably would need to add the rule that zero is not the successor of any number, at first
23:57:51 <oerjan> i suspect it may be impossible to derive Classical for quantified propositions
23:58:48 <Ngevd> Hang on, are you doing number theory in Haskell?
23:58:54 <Ngevd> That means it is time for me to go to sleep
23:58:57 <zzo38> oerjan: Yes, that seems the problem too
23:58:58 <Ngevd> Goodnight
23:59:03 -!- Ngevd has quit (Quit: Goodbye).
23:59:32 <oerjan> because if a proposition is undecidable, then obviously you cannot derive either p or Not p
2011-12-05
00:00:43 <zzo38> Yes, you are correct
00:01:10 -!- lambdabot has quit (Ping timeout: 240 seconds).
00:01:25 <oerjan> lambdabot seems really unstable today
00:01:54 <fizzie> It's practicing *really* lazy evaluation w.r.t. responding to pings.
00:01:56 -!- GreaseMonkey has joined.
00:02:32 <oerjan> lethargic evaluation
00:05:32 <elliott> oerjan: i just wrote a patch to make it more stable
00:06:17 <oerjan> good, good
00:12:15 -!- zzo38 has quit (Remote host closed the connection).
00:12:35 -!- kallisti has quit (Ping timeout: 245 seconds).
00:17:16 -!- oerjan has quit (Quit: Good night).
00:17:47 <shachaf> elliott: @admin - me all day. I'm sure it'll be satisfying.
00:19:09 -!- ais523 has quit (Remote host closed the connection).
00:19:45 -!- kappabot has joined.
00:24:00 -!- kappabot has quit (Remote host closed the connection).
00:37:01 -!- kallisti has joined.
00:43:51 <kallisti> Madoka-Kaname: hi
00:44:03 <Madoka-Kaname> Who's you??
00:44:18 <coppro> /win 4
00:44:29 <kallisti> coppro: oops
00:45:11 <elliott> coppro: your parole officer was here earlier
00:45:37 <coppro> elliott: I noticed
00:45:51 <kallisti> wha
00:50:26 <elliott> <smallfoot-> git is dumb, why it has to mail stuff, instead of just connect to the site and put your stuffs there lol
00:50:26 <elliott> <smallfoot-> now you have to mail manually or configure smtp and shit
00:51:34 * kallisti scratches head furiously.
00:54:54 -!- Klisz has joined.
00:57:29 -!- DCliche has quit (Ping timeout: 248 seconds).
01:00:37 <shachaf> "sceptical"
01:00:49 <shachaf> It used to be that that spelling didn't look odd to me.
01:01:38 -!- Patashu has joined.
01:02:30 <Gregor> elliott: So anyway, I think MID is a better choice than MOD.
01:02:32 <elliott> shachaf: I always used to say skeptical but then I became TRUE BRITISH
01:02:36 <Gregor> Or maybe ... both?
01:02:37 <elliott> Gregor: Hokay :P
01:02:49 <elliott> Gregor: Make the MID one just render to MOD >:)
01:02:53 <elliott> And then pass through
01:03:19 <shachaf> elliot: You're hardly true British.
01:03:36 <elliott> I'm truest British.
01:03:36 <shachaf> You probably don't even drink tea.
01:03:39 <elliott> Also I noticed that.
01:03:41 <elliott> Yes I do.
01:05:22 -!- augur has joined.
01:07:38 * shachaf tries to think of other British stereotypes.
01:07:44 <shachaf> Anyway I'm sure they don't apply to you.
01:12:39 <kallisti> shachaf: heavy tea-drinking is one of those British stereotypes that is apparently true or something?
01:14:22 <Gregor> shachaf: I'll bet his teeth are all white and straight.
01:14:45 <shachaf> elliott: Yes! Your teeth must be perfect.
01:14:55 <elliott> shachaf: What "teeth"?
01:15:44 <shachaf> You know, the things that make gears work?
01:15:59 <elliott> I'm not clockwork.
01:16:33 <elliott> Someone write mollis for me for Christmas, please.
01:16:37 <kallisti> elliott crushes his food with a mortar and Union Jack before he shoves it in his mouthhole.
01:16:49 <elliott> THAT'S DISRESPECTFUL
01:17:13 <kallisti> *Union Jack on a flagpole not the flag itself ha ha ha
01:17:17 <elliott> shachaf: You do it.
01:17:46 <shachaf> elliott: Do what?
01:17:52 <elliott> Write mollis for me.
01:18:30 -!- derdon has quit (Remote host closed the connection).
01:18:45 <shachaf> What's a mollis?
01:19:11 <elliott> shachaf: An ostensible port of durus to Haskell.
01:19:24 <kallisti> wow Skype literally cannot go a few hours without freezing up inexplicably.
01:19:25 <shachaf> What's a durus?
01:19:57 <elliott> durus is this awesome client-server-or-embedded file-backed persistent STM implementation; the only flaw is that it's written in Python for some incomprehensible reason.
01:24:39 <kallisti> elliott: will you please kill me?
01:24:51 <elliott> Yes.
01:25:26 <kallisti> okay. if you devise a sufficient means I'll gladly fly to Hexam to complete arrangements.
01:30:04 <kallisti> elliott: why isn't the flag of Wales featured on Union Jack
01:30:15 <kallisti> wouldn't your nation's flag be so much cooler with A DRAGON On it?
01:30:20 <elliott> we hate wales
01:30:54 <elliott> "As Wales was not a Kingdom but a Principality it could not be included on the flag."
01:31:16 <elliott> http://www.telegraph.co.uk/news/uknews/1570998/Japan-offers-to-solve-Union-Jack-problem.html
01:31:17 <elliott> thank you japan
01:31:58 <elliott> shachaf: Are you done yet?
01:32:17 <shachaf> elliott: With your molidur thing?
01:32:27 <elliott> Yes. Mollis./
01:32:37 <kallisti> In the debate, Albert Owen MP said that "we in Wales do not feel part of the union flag because the dragon or the cross of St David is not on it."[21] Conservative MP Stewart Jackson described the comments as "eccentric".
01:32:41 <kallisti> SICK BURN
01:32:46 <shachaf> Yes, I finished but then it was slow because Haskell makes everything slow.
01:33:20 <kallisti> shachaf: you should have written it in Perl.
01:33:58 <elliott> shachaf: That's okay, I'm slow.
01:34:29 <kallisti> elliott: http://i.telegraph.co.uk/multimedia/archive/00652/news-graphics-2007-_652632a.gif come on
01:34:31 <shachaf> elliott: Well, I already deleted it.
01:34:35 <kallisti> you know you want that dragon
01:34:36 <elliott> shachaf: Just write it again.
01:34:37 <shachaf> I'm not doing all that work over again.
01:39:52 <elliott> I wonder if you can get the internal GHC bytecode as output from GHC.
01:39:59 <elliott> I wonder if that's what -fbyte-code does.
01:42:26 <shachaf> No, that generates the external GHC bytecode.
01:42:53 <elliott> Wow, -fbyte-code actually produces executables.
01:43:03 <shachaf> There's also -ddump-bcos.
01:43:44 <elliott> Now I just need to figure out how to make it compile an expression to a bytecode object and print its type.
01:43:46 <elliott> -XNoNewQualifiedOperators -XExplicitForALl -XNoExplicitForAll
01:43:48 <elliott> Good documentation.
01:44:33 <shachaf> No, no, that's no the documentation. This is the documentation:
01:44:37 <shachaf> -XNewQualifiedOperators
01:44:37 <shachaf> Enable new qualified operator syntax
01:44:57 <elliott> It's in the man page.
01:45:26 <kallisti> Read my lips: no new qualified operators
01:45:26 <shachaf> -XNoFoo ~ No -XFoo
01:46:07 <elliott> shachaf: "-XExplicitForALl -XNoExplicitForAll"
01:46:10 <elliott> Sheesh.
01:46:12 <elliott> It's the L part.
01:46:31 <shachaf> elliott: Oh.
01:46:40 * shachaf is capitalization-blind, you insensitive clod!
01:46:46 <elliott> Hmm, I wish acid-state wasn't so annoying to use.
01:53:00 -!- augur_ has joined.
01:53:32 -!- augur has quit (Read error: Connection reset by peer).
01:56:40 <kallisti> oh, hmmm, maybe I /won't/ fail this class.
01:58:34 -!- Jafet has joined.
02:01:05 <kallisti> > pi + sqrt(-1) :: Complex Double
02:01:18 <kallisti> @tell lambdabot come back plz
02:12:26 <shachaf> kallisti: "i" isn't even sqrt (-1). :-(
02:13:04 * kallisti gives shachaf a gold star.
02:13:07 <kallisti> GOOD JOB!
02:13:12 -!- Vorpal has quit (Ping timeout: 240 seconds).
02:13:15 <shachaf> What?
02:13:19 <kallisti> you're correct.
02:13:21 <kallisti> you win the prize.
02:13:23 <kallisti> which is a gold star.
02:13:33 <kallisti> you should feel proud.
02:13:36 * shachaf doesn't get it.
02:16:53 -!- PiRSquared17 has joined.
03:02:43 -!- MDude has quit (Ping timeout: 248 seconds).
03:03:34 -!- MSleep has joined.
03:03:34 -!- MSleep has changed nick to MDude.
03:05:02 -!- Jafet has quit (Quit: Leaving.).
03:15:44 -!- Jafet has joined.
03:32:56 -!- augur_ has changed nick to augur.
03:35:28 <kallisti> > map (\n -> foldr (+) 0 [1..10^n]) [1..]
03:35:32 <kallisti> ...
03:35:48 <kallisti> hi, my name is kallisti, and I'm a lambdabot addict.
03:37:36 <elliott> hi my name is elliott and im a robot
03:38:28 <kallisti> Prelude> map (\n -> foldr (+) 0 [1..10^n]) [1..]
03:38:29 <kallisti> [55,5050,500500,50005000,5000050000,500000500000,^C
03:38:44 <kallisti> there we go, much better.
03:39:49 <kallisti> > x ^^ y
03:39:53 <kallisti> hsertiuhssiudfhisudhfse
03:41:13 <kallisti> elliott: also, as far as I can tell (^^) actually is repeated multiplication, but it also applies recip for negative exponents.
03:41:21 <elliott> @src (^^)
03:41:25 <elliott> let's just wait for lambdabot
03:41:27 <kallisti> lol
03:41:30 <kallisti> well
03:41:33 <kallisti> x ^^ 2
03:41:33 <kallisti> yields
03:41:35 <kallisti> x * x
03:41:40 <kallisti> x ^^ (-2)
03:41:40 <elliott> uh thats irrelevant
03:41:42 <kallisti> yields
03:41:45 <elliott> it could just be the way Expr implements it
03:41:45 <kallisti> recip (x*x)
03:41:46 <elliott> but ok
03:41:52 <elliott> i guess that would work too
03:42:39 <kallisti> http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/GHC-Real.html#%5E%5E
03:42:46 <kallisti> yeah it uses (^) in the definition
03:43:33 <Sgeo> Note to self: Learn how to unmtl stuff manually
03:43:47 <Sgeo> Relying on lambdabot, as people in #haskell seem to suggest, is not a good idea
03:44:03 <elliott> yes it is
03:44:05 <kallisti> I like GHC's comments.
03:44:06 <elliott> you can install lambdabot locally
03:44:08 <kallisti> very enlightening.
03:44:51 -!- MDude has quit (Ping timeout: 248 seconds).
03:45:09 -!- MSleep has joined.
03:45:39 <kallisti> it would be nice if (^) and (^^) could somehow be the same thing? I think that would require dependent typing or some form of subclassing.
03:46:35 <kallisti> or... a (^) method in Num but that sounds bad.
03:47:39 <kallisti> numbers are tricky.
03:48:14 <kallisti> elliott: maybe the person who hosts lambdabot is playing some kind of cruel prank.
03:48:18 <kallisti> TO SHOW US OUR LAMBDABOT DEPENDENCE.
03:48:42 <elliott> it's cale
03:48:47 <elliott> and it just has issues with disconnections
03:48:50 <elliott> which i sent a patch to fix
03:48:56 <elliott> so it should get in the next time cale is present
03:49:15 <elliott> http://hpaste.org/54864 <-- my hideous patch
03:50:04 <kallisti> I may add a plugin to my bot that runs lambdabot locally and then acts as a proxy between my bot and lambdabot so that I can have all of lambdabots commands.
03:50:09 * kallisti elegant.
03:50:33 <elliott> lambdabot has a command-line interface + an api
03:50:38 <kallisti> I already have @type and > but @type is kind of hacky
03:50:41 <kallisti> elliott: oh. cool.
03:50:44 <elliott> but
03:50:45 <elliott> don't
03:50:48 <elliott> you really don't want to compile lambdabot
03:50:57 <kallisti> why not?
03:51:03 <elliott> it's easy if you remove all the dependencies and thus make it almost functionality-free
03:51:06 <elliott> but
03:51:14 <kallisti> what if I'm just awesome?
03:51:14 <elliott> (a) the codebase is really REALLY ancient and crufty
03:51:18 <kallisti> oh.
03:51:19 <elliott> (b) it hasn't been updated in years
03:51:28 <elliott> (c) the dependencies, like, don't work, there's internal conflicts at least on this system
03:51:34 <elliott> (d)
03:51:34 <elliott> (e)
03:51:35 <elliott> (f)
03:51:36 <elliott> ...
03:51:38 <kallisti> the obvious solution: reimplement lambdabot's plugins in perl.
03:52:10 <kallisti> clearly @pl is just a series of regex substitions.
03:52:28 <Sgeo> Does Racket have these sorts of issues with dependencies? Reason I mention Racket is I've heard good things about the module system
03:53:09 <Gregor> "On 15 August 2008 he was awarded a knighthood. He is the first penguin to receive such an honour in the Norwegian army."
03:53:15 <kallisti> also I can one-up lambdabot by having @undefine actually remove definitions.
03:54:31 <elliott> Sgeo: the
03:54:32 <elliott> "issue"
03:54:36 <elliott> is that the dependencies are specified wrongly
03:54:43 <elliott> because they don't specify lower bounds
03:54:46 <elliott> and the package was incompatibly updated
03:54:50 <kallisti> Gregor: glad to see the Norse are beginning to show penguin tolerance. 2008 marks the dawn of a new era, where Norwegians recognize that they're all penguin-like creatures inside.
03:54:55 <elliott> so the "issue" is that lambdabot's code sucks
03:56:58 <kallisti> maybe, as I establish clients from freelancing, I should start writing the most obtuse code possibly.
03:57:06 <kallisti> so that they must continue hiring me to maintain it.
03:57:36 <Nisstyre> kallisti: http://thc.org/root/phun/unmaintain.html
03:59:54 -!- Jafet has quit (Quit: Leaving.).
04:00:12 <kallisti> y a copy of a baby naming book and you'll never be at a loss for variable names. Fred is a wonderful name, and easy to type. If you're looking for easy-to-type variable names, try adsf or aoeu if you type with a DSK keyboard.
04:00:16 <kallisti> lol
04:00:20 <kallisti> s/^/buy/
04:00:36 <elliott> buyy
04:00:56 <kallisti> elliott: shush
04:01:07 <kallisti> Nisstyre: what's funny is that I've actually seen code that had some of these features.
04:01:10 <kallisti> perhaps not intentionally though
04:01:11 <Nisstyre> yes
04:01:15 <Nisstyre> me too :(
04:14:39 <kallisti> Overload the '!' operator for a class, but have the overload have nothing to do with inverting or negating. Make it return an integer. Then, in order to get a logical value for it, you must use '! !'. However, this inverts the logic, so [drum roll] you must use '! ! !'. Don't confuse the ! operator, which returns a boolean 0 or 1, with the ~ bitwise logical negation operator.
04:14:44 <kallisti> so good
04:17:26 <Sgeo> " For pseudo-Esperanto pluraloj, add oj. You will be doing your part toward world peace."
04:19:17 <Sgeo> Not that that's the most obfuscating thing there, I just like Esperanto >.>
04:22:15 * kallisti sighs.
04:24:37 <pikhq_> Doesn't even come close to most obfuscating thing.
04:25:01 <pikhq_> I suggest Japanising and romanising your names.
04:25:21 <pikhq_> Sinicising would be worse, but a bit more difficult to pull.
04:25:55 <pikhq_> int main(int arugusii, char** arugubui) { ... }
04:26:55 <pikhq_> for(int ai=0; ...;...;)
04:27:16 <pikhq_> Oooh. purintsueffu.
04:28:08 <pikhq_> Nah, take more suggestion from that list. hůrinntue'hu
04:36:08 <Sgeo> UPDATE
04:37:06 -!- DCliche has joined.
04:38:18 <Sgeo> elliott, kallisti
04:40:33 -!- Klisz has quit (Ping timeout: 252 seconds).
04:49:05 -!- PiRSquared17 has quit (Remote host closed the connection).
04:53:19 -!- Jafet has joined.
04:54:51 <augur> http://i.imgur.com/c2liK.jpg
04:54:55 <augur> my eyes broken x.x
04:56:24 <quintopia> weird
05:07:50 -!- Jafet has quit (Ping timeout: 244 seconds).
05:10:27 -!- Jafet has joined.
05:10:41 <kallisti> Sgeo
05:11:43 <quintopia> hi kallisti
05:12:26 <kallisti> quintopia: hey.
05:12:28 <kallisti> how's it going?
05:12:30 <kallisti> what's the world?
05:12:35 <kallisti> is lfie?
05:12:48 <quintopia> what is life?
05:12:55 <quintopia> what is...this?
05:13:03 <quintopia> what is it?
05:15:49 <kallisti> what is blsshah?
05:19:47 <quintopia> lets get together and discuss it over beers
05:19:59 <quintopia> youre in like cumming or something right?
05:31:33 <kallisti> ..no
05:31:34 <kallisti> fuck you
05:31:39 <kallisti> I'm in jasper
05:31:40 <kallisti> asshole
05:33:03 <quintopia> i wasnt off by much >.>
05:33:37 <quintopia> one could go from cumming to jasper in under an hour yes?
05:34:18 <kallisti> probably
05:34:54 <kallisti> one can go a lot of places in an hour with a hellicopter, what's your point?
05:35:21 -!- zzo38 has joined.
05:35:51 <quintopia> my point is i didnt remember where you are, just that it was generally north of atlanta
05:36:05 <kallisti> I wish these cans of Busch Light
05:36:08 <kallisti> weren't in a Yuengling case
05:36:23 <kallisti> because it increased my expectations for how it would taste.
05:36:27 <quintopia> and i dont understand why confusing jasper and cumming provoked that repsonse
05:36:37 <quintopia> and it shouldn because huengling sucks too
05:36:43 <kallisti> what
05:36:45 <kallisti> you're mad.
05:36:50 <kallisti> okay we can never hang out ever.
05:37:09 <quintopia> FINE
05:37:09 <kallisti> yuengling light maybe.
05:37:11 <kallisti> but yuengling is like
05:37:23 <kallisti> THE MOST AMERICAN FUCKING BEER YOU CAN GO DIE YOU UNPATRIOTIC SCUM.
05:37:28 <quintopia> nah
05:37:34 <quintopia> fuck patriotism
05:37:43 <kallisti> yeah fuck it.
05:37:49 <elliott> points: US sucks, Georgia sucks, beer sucks, particles suck, existence sucks, logical consistency sucks
05:37:56 <quintopia> of the commercial brewers, sam adams is far more patriotic
05:37:58 * elliott vanishes
05:38:02 <kallisti> quintopia: what
05:38:03 <kallisti> no
05:38:15 <kallisti> just because it has a patriotic name does not make it patriotic
05:38:18 <kallisti> yuengling is the FIRST
05:38:19 <quintopia> yes it does
05:38:21 <kallisti> the first american beer.
05:38:31 <kallisti> or well
05:38:32 <kallisti> probably not
05:38:34 <kallisti> but whatever.
05:38:46 <elliott> excuse me
05:38:47 <elliott> i made some
05:38:48 <elliott> very good point
05:38:49 <elliott> s
05:38:50 <kallisti> elliott: logical consistency is the best.
05:38:50 <quintopia> elliott sucks!
05:38:56 <elliott> yes
05:39:01 <kallisti> elliott: no
05:39:02 <elliott> but at least i am contradictory about it
05:39:10 <kallisti> elliott: ofuck logical consistency
05:39:15 <kallisti> I'm so confused
05:39:15 <elliott> fuck you
05:39:16 <kallisti> about where I stand
05:39:19 <kallisti> on logical consistency
05:39:49 <quintopia> its such a good thing to have, we can honestly say no one should have it
05:40:08 <elliott> towels are so good
05:40:12 <elliott> have you ever a towel
05:40:14 <elliott> a really nice towel
05:40:15 <pikhq_> Why drink beer that's not-good anyways?
05:40:22 <elliott> why drink
05:40:23 <elliott> why exist
05:40:23 <kallisti> pikhq_: cheap. under 21.
05:40:27 <elliott> why ovulate
05:40:31 <elliott> why be
05:40:32 <quintopia> why elliott
05:40:33 <kallisti> pikhq_: also elliott makes very good points
05:40:35 <elliott> all these questions and more
05:40:37 <elliott> answered yesterday
05:40:40 <quintopia> why art thou romeo
05:40:50 <elliott> im not romeo
05:41:00 <kallisti> pikhq_: please agree with me that yuengling is not disgusting and is actually pretty good.
05:41:02 -!- copumpkin has joined.
05:41:02 <pikhq_> For the low low price of $25,000,000! (per question. no refunds. offer not valid in the state of California)
05:41:04 <quintopia> all roads lead to romeo
05:41:10 <pikhq_> kallisti: I haven't had it yet, so I can't comment.
05:41:15 -!- elliott has set topic: how to be a toucan | The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/.
05:41:19 <elliott> does anyone know how to be a toucan
05:41:23 <elliott> help?
05:41:26 <elliott> aid me in becoming toucan
05:41:26 <kallisti> elliott: I have studied.
05:41:31 * elliott googled for: toucan facts
05:41:34 <pikhq_> kallisti: That said, it certainly doesn't fit in the category of "all-American pisswater". :P
05:41:36 * elliott googled for: toucan the night away
05:41:41 * elliott googled for: are toucans all-american pisswater
05:41:43 <kallisti> pikhq_: even better.
05:41:45 <kallisti> pikhq_: and yes it does
05:41:47 * elliott googled for: are toucans people
05:41:52 <kallisti> pikhq_: it's definitely an American beer
05:42:00 <kallisti> FIRST. FUCKING. AMERICAN. BREWERY. BITCHES.
05:42:04 <quintopia> and it is definnitely pisswater
05:42:06 <pikhq_> kallisti: The noun "pisswater" is key there.
05:42:14 <kallisti> pikhq_: oh you mean light beer. well, no. it's not that.
05:42:33 * elliott piss water
05:42:44 <kallisti> well there is yuengling light. but don't ever drink that.
05:43:00 * elliott piss yuengling light
05:43:01 <kallisti> (though it is marginally better than most light beers)
05:43:07 <pikhq_> elliott: Congrats, you can legally sell that as Bud Light.
05:43:22 * elliott googled for: bud light "infinity and beyond" quotes
05:43:30 * kallisti should make a modded starcraft map where you can upgrade zerglings to yuenglings.
05:44:37 <zzo38> I have a VHS/DVD combination recorder. It can copy VHS to DVD if it is not Macrovision, it can also copy unfinalized DVD to VHS. Do you know if there are any ways to bypass the Macrovision and other things?
05:44:39 * elliott googled for: do elephants celebrate christmas
05:45:01 * kallisti googled for: toucan meaning of life
05:45:04 * kallisti googled for: toucan secrets
05:45:10 * kallisti googled for: toucan mathematics
05:45:17 * kallisti googled for: toucan string theory
05:45:23 * elliott googled for: is the universe toucans
05:45:37 * elliott googled for: validate me
05:45:37 * kallisti googled for: why do toucans prove ftl
05:46:05 * elliott googled for: silent night true meaning
05:46:29 * elliott googled for: what happens if you shred people
05:47:07 * kallisti googled for: are toucans monoids in the category of endofunctors
05:47:38 * elliott googled for: toucan
05:48:13 * kallisti googled for: how to win debate with toucan
05:48:14 * elliott googled for: toucan cheese
05:48:19 * elliott googled for: toucan byproducts
05:48:22 * kallisti googled for: human cheese
05:48:31 * kallisti googled for: does breast milk coagulate
05:48:46 * kallisti googled for: do toucans eat their toucan cheese?
05:48:51 <quintopia> you can end your search elliott, knowing that it is possible
05:48:56 <pikhq_> zzo38: There's several devices that strip the Macrovision off an analog signal.
05:49:11 <quintopia> if the macaw saw what the leopard spotted, then the toucan can and you can too.
05:49:21 <pikhq_> You probably couldn't do that to the single device there without a lot of work, though.
05:49:51 <quintopia> is macrovision that noise-adding thing?
05:50:24 <pikhq_> quintopia: No, it's the "add shit to the VBI so that automatic gain control breaks" thing.
05:51:09 -!- lambdabot has joined.
05:52:14 <kallisti> lambdabot: hi
05:52:36 <kallisti> @pl (\f g x y -> f x (g y))
05:52:36 <lambdabot> flip . ((.) .)
05:52:47 <kallisti> @pl (\x y -> f x (g y))
05:52:48 <lambdabot> (. g) . f
05:52:53 <kallisti> ..
05:53:07 <kallisti> @pl (\y x -> f x (g y))
05:53:07 <lambdabot> flip f . g
05:53:33 <elliott> I wonder if it has my ROBUSTNESS patch, god I hope not.
05:53:59 * kallisti googled for: toucan fixed-point combinator
05:54:18 * kallisti googled for: robust toucan zygotomorphism
05:54:25 <quintopia> apparently some dvd players have loophole menus where you can turn off macrovision
05:54:33 <quintopia> probably not that converter tho
05:54:43 <elliott> Oh no, he's applying it.
05:54:47 <elliott> RIP lambdabot 2011-in a few minutes
05:54:51 <elliott> *not 2011
05:55:15 <kallisti> rip elliott
05:55:34 <kallisti> cale will assimilate you into his leet prelude
05:55:36 <kallisti> for failure
05:56:04 <kallisti> elliott: oh dude if I rewrite lambdabot in perl I can make CAKESKELL
05:57:15 <kallisti> Cake.Data.List, yessss
05:57:59 <kallisti> length = genericLength; length' = Data.List.length
05:58:10 <elliott> no thanks
05:58:16 <elliott> length xs :: Double
05:58:33 <kallisti> ...so?
05:58:50 <elliott> length xs :: Complex Rational
05:58:55 <kallisti> fromIntegral . length $ xs :: Double
05:58:58 <elliott> these are not things likely to not be mistakes.
05:59:05 <elliott> kallisti: yes, with an explicit conversion.
05:59:14 <kallisti> integers /are/ a subset of reals and complexes
05:59:16 <elliott> haskell "implicit conversions go away"
05:59:21 <elliott> kallisti: yes, but Double isn't Real
05:59:36 <elliott> and if you're working with integral data, using Real is the Wrong Thing to do
05:59:38 <kallisti> integers /are/ a subset of floating point numbers, and complexes
05:59:46 <elliott> not true
05:59:50 * elliott would accept (Integral b) => [a] -> b
06:00:01 <kallisti> :t genericLength
06:00:03 <lambdabot> forall b i. (Num i) => [b] -> i
06:00:16 <kallisti> elliott: that's reasonable
06:01:38 <kallisti> I just haven't really encountered a situation where I might have accidentally used a Double when I did not mean to.
06:02:37 <kallisti> perhaps if you forgot that (/) doesn't perform integer division.
06:03:01 <kallisti> there's a somewhat likely scenario
06:06:32 <kallisti> but intuitively, from the perspective of basic algebra, integer division isn't even a thing and typically you can treat both fractional and integral numbers as being generic "numbers." it would make sense if Haskell followed this looseness, and I think the only people who might get thrown off are "experienced" programmers expecting arithmetic operators to behave as they do in other languages.
06:07:31 <kallisti> but consider: sum ls / length ls
06:07:54 <kallisti> a fledgling Haskell programmer might try to compile this and be surprised to find that they get an obtuse typeclass error.
06:08:56 <elliott> Gregor: Ping
06:09:06 <elliott> kallisti: A fledgling Haskell programmer will make many mistakes if they just write random things and expect it to wrok
06:09:07 <elliott> work
06:10:57 <kallisti> that's not really a defense though. You're simply saying they will make mistakes. Some of these mistakes could still easily be blunders of language design. Most non-Haskell programmers would not expect an error from that, and neither would someone familiar with algebra, statistics, etc
06:11:45 <kallisti> > genericLength [a,b,c,d,e]
06:11:48 <lambdabot> 5
06:11:57 <kallisti> > genericLength [a,b,c,d,e] :: Expr
06:11:58 <lambdabot> 1 + (1 + (1 + (1 + (1 + 0))))
06:12:00 <elliott> kallisti: haskell is not algebra/statistics/etc.
06:12:11 <kallisti> elliott: sure.
06:12:14 <elliott> if haskell tried to interpret all the ambiguous mathematical notation out there, it'd be a sloppy, useless piece of crap
06:12:30 <elliott> explicit conversions is one of haskell's defining features
06:12:32 <kallisti> right, I simply think basic numbers are something it could concede on.
06:12:52 <pikhq_> And computers require different treatment of "numbers" than everyone is really used to.
06:13:00 <elliott> kallisti: how often do you miss a fromIntegral
06:13:05 <elliott> if it's often you're doing something wrong
06:13:12 <kallisti> elliott: not often.
06:13:14 <kallisti> it happens though.
06:13:30 <elliott> type errors happen, that's why we have a compiler that catches them before the program runs
06:13:54 <kallisti> I agree certainly.
06:13:54 <pikhq_> I agree with elliott that length :: (Integral b) => [a] -> b -- is preferable.
06:14:02 <kallisti> it's safer, yes.
06:14:11 <kallisti> and much better than Int
06:14:20 <kallisti> and still allows conversion to Num
06:14:26 <elliott> i would just go for Integer to be quite honest if not for one thing
06:14:37 <elliott> namely, with Integral you can define a generic peano naturals type
06:14:40 <elliott> and use it to do lazy length comparison
06:14:50 <elliott> so that length [0..] > (5 :: Nat) is true
06:14:53 <elliott> very useful
06:15:01 <elliott> and avoids wasting work by traversing the whole list even for normal cases
06:15:16 <pikhq_> Also, using floats where you mean integers *will screw up*.
06:15:45 <kallisti> how so?
06:15:47 <pikhq_> I'm a bit iffy about them even being Nums, TBH.\
06:16:24 <kallisti> isn't genericLength more like using an integer as a float? (in the more specific case we're discussing)
06:16:27 <elliott> you can give Float a reasonable Ord by breaking the IEEE spec for NaNs so that's ok
06:16:32 <elliott> Num is
06:16:34 <elliott> ehhhhhhhhhh
06:16:36 <elliott> well Num just has to go
06:16:40 <elliott> so it's not even worth thinking about
06:16:43 <elliott> but I wouldn't object to Nums being Fields
06:16:45 <elliott> erm
06:16:47 <elliott> but I wouldn't object to floats being Fields
06:16:48 <pikhq_> True, Num is a pretty bad typeclass.
06:16:52 <elliott> because
06:17:01 <elliott> there's no point creating a whole mirrored hierarchy of "almost <algebraic structure>s"
06:17:10 <kallisti> pikhq_: it provides a number of useful hacks, though a better typeclass hierarchy could probably do the same.
06:17:15 <elliott> yes, you have to be careful with the properties when using floats
06:17:30 <elliott> but it's more like your whole program is taken as an approximation of a computation on the actual rationals/reals
06:17:37 <elliott> rather than the individual values being approximate
06:17:38 <elliott> IMO
06:17:46 <elliott> so it's justified to make them instances: also because it's really convenient
06:18:03 <kallisti> elliott: no I think we should remove Float and Double and only use CReal
06:18:04 <elliott> the other part of me objects to htis though because I want our interfaces to come bundled with proofs that their properties hold
06:18:08 <elliott> and you can't do that for floats
06:18:22 <elliott> at least not without a custom equivalence relation that you specify to be "close enough" for floats
06:18:28 <elliott> (with formal bounds on close enough for each operation, but still)
06:18:35 <elliott> *this
06:18:48 <kallisti> elliott: I... think it would be okay to concede on that for floats. because they're very useful.
06:19:02 <elliott> I take it you don't understand what I said
06:19:02 <elliott> because
06:19:05 <kallisti> for like, programs that do things rather than programs that serve as mathematical proofs.
06:19:05 <elliott> it's not about conceding
06:19:21 <elliott> a Monad should contain the proofs that it follows the monad laws, that's simple as
06:19:28 <elliott> something that doesn't follow those laws should not be allowed to be a Monad
06:19:31 <elliott> this is not controversial at all
06:19:36 <elliott> but you can't "just compromise"
06:19:40 <pikhq_> It's about how you define the typeclass.
06:19:44 <elliott> because the whole benefit of proof carrying is that
06:19:58 <elliott> - you can optimise aggressively based on the properties with /NO RISK/ of anything "going wrong" at runtime, it's 100% safe and type-safe
06:19:58 <kallisti> elliott: floats aren't monads though. how is this relevant to what I was saying.
06:20:17 <elliott> - you can use these properties in larger proofs of correctness - this is NOT a mathematical thing, this is about real programs
06:20:29 <elliott> - etc.
06:20:32 <elliott> kallisti: because Field is just like Monad
06:20:45 <elliott> it's an interface
06:20:47 <elliott> a structure
06:20:51 <kallisti> elliott: what is a viable replacement for floats?
06:20:53 <elliott> a formally-defined set of operations and rules
06:20:59 <elliott> kallisti: did i say there was one
06:21:00 <elliott> did i say
06:21:02 <elliott> floats aren't useful
06:21:02 <kallisti> elliott: no
06:21:03 <elliott> did i say
06:21:04 <elliott> i don't want floats
06:21:05 <elliott> no.
06:21:09 <kallisti> elliott: it was just a question. I was curious.
06:21:22 <elliott> hey kallisti what is a viable replacement for oxygen
06:21:29 <elliott> considering all the boundless anti-oxygen sentiment you've been expressing lately
06:21:49 <kallisti> elliott: so would floats still be treated as "numbers" in this typeclass hierarchy?
06:21:57 <kallisti> Float + Float = Float
06:22:09 <elliott> i think you're mixing up a bunch of things i said.
06:22:15 <elliott> what typeclass hierarchy, what are you talking about
06:22:20 <kallisti> feel free to clarify.
06:22:23 <elliott> you appear to read my messages non-linearly
06:22:36 <elliott> and mix ones after i explicitly change the track of what i'm saying to ones previously
06:23:23 <kallisti> okay.
06:23:26 <elliott> kallisti: i can't clarify something that i have no idea the basis of, so...
06:23:55 <kallisti> elliott: I'm assuming Field etc which have formal laws of their correctness would not take over the syntax of simple arithmetic?
06:24:02 <kallisti> because Float cannot fit in those
06:24:04 <kallisti> because
06:24:04 <elliott> uh
06:24:06 <kallisti> it does not obey those laws
06:24:19 <kallisti> but it's still nice to say "lol 0.5 + x"
06:24:23 <elliott> im just giving up on this because i explicitly said i was of two contradictory minds for different reasons and needed to reconcile them
06:24:24 <elliott> and
06:24:28 <elliott> also your questions are stupid
06:24:34 <zzo38> I know there are devices that strip out Macrovision, such as time base correctors. I do not have a time base corrector but I have a analog->digital->analog converter that among other things, removes macrovision (it also removes captions and everything other than the picture). But I don't know if that can be used in this VHS/DVD recorder.
06:24:54 <kallisti> elliott: perhaps I missed that part.
06:25:05 <elliott> <elliott> the other part of me objects to htis though because I want our interfaces to come bundled with proofs that their properties hold
06:25:06 <elliott> <elliott> and you can't do that for floats
06:25:13 <elliott> things i say don't make sense if you skip lines
06:28:05 <kallisti> elliott: so how about: keep "Nums as Fields" with Floats being a Field and obeying properties as approximate calculations of rationals/reals, and then have a seperate typeclass (or a convenient way to remove non-precise instances such as floats) for formally correct computations?
06:28:29 -!- lambdabot has quit (Remote host closed the connection).
06:28:31 <elliott> my response would be a long list of "you do not understand X, Y and Z", so I doubt you want to hear it.
06:28:40 <kallisti> no these are good
06:28:44 <kallisti> those are usually missing from your responses.
06:30:00 <elliott> you don't understand why dependently-typed languages matter. you don't understand why proof-carrying matters. you don't understand why formal properties matter. you don't understand why one cannot simply make proofs "optional" addons. you don't understand how proof carrying allows for very advanced and aggressive optimisations. you don't understand how proof carrying ensures very high levels of securit
06:30:00 <elliott> y statically at compile time.
06:30:05 <elliott> i think that's enough for now
06:31:31 <elliott> if you really want, you can ask in greater detail about why i think these things. you will get better results for the more specific statements
06:32:01 <kallisti> elliott: I was going on the premise that proof-carrying matters when attempting to devise a solution.
06:32:06 <elliott> oh, I forgot: you don't understand how proof carrying allows for distributed computing etc. without trust in any direction
06:33:02 <kallisti> elliott: what I'm saying is that you're basically talking about two different typeclasses.
06:33:20 <kallisti> one is proof-carrying and one isn't
06:33:31 <elliott> the solution to having a problem with an abstraction
06:33:39 <elliott> is not to "rip out" (not a well-defined operation) the problematic parts
06:33:47 <elliott> and call this half thing a "new abstraction"
06:33:58 <elliott> multiplying complexity does not solve anything
06:34:24 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:34:51 <elliott> <elliott> at least not without a custom equivalence relation that you specify to be "close enough" for floats
06:34:51 <elliott> <elliott> (with formal bounds on close enough for each operation, but still)
06:34:51 <elliott> <elliott> *this
06:34:55 <elliott> this is one possible option, for instance
06:35:09 <elliott> and you recover the original behaviour by requiring the relation to be equality
06:35:18 <elliott> but it feels inelegant
06:35:30 <elliott> albeit giving the best possible properties for "precise" types and floats alike
06:37:28 <elliott> kallisti: does this help you understand my position?
06:37:42 <kallisti> elliott: yes
06:38:15 <kallisti> elliott: I think you would need to incorporate laws into the typeclass system rather than having them as friendship pacts, so that a) typeclasses could specify some rules to be optional b) optimizations could be specified in the language itself for instances that obey a particular set of rules c) you can opt out of rules that your instance doesn't obey d) you can define functions that allow you to satisfy those rules (in an
06:38:25 <kallisti> elliott: to have it all as one typeclass I mean..
06:41:04 <Sgeo> friendship pacts?
06:41:49 <elliott> "I think you would need to incorporate laws into the typeclass system rather than having them as friendship pacts"
06:41:49 <elliott> what I am saying is not even related to typeclasses; my system has no typeclasses. also, it's not "incorporated" into the system, and they're *certainly* not based on honour, that would defeat the whole point. the context is a dependently-typed language, and if you don't know how they can do logic and proofs then you understand them even less than I claimed
06:41:49 <elliott> "a) typeclasses could specify some rules to be optional"
06:41:49 <elliott> no. this does not aid a solution, at all. it makes matters a billion times worse by throwing away *every* *single* *benefit*, adding additional hassle, and giving incredibly suboptimal results even in the float case
06:41:52 <elliott> "b) optimizations could be specified in the language itself for instances that obey a particular set of rules"
06:41:55 <elliott> completely irrelevant to the issue at hand. yes, optimisation is but one benefit of proof-carrying, but it... is simply not relevant here, I only mentioned it as one of the reasons proof-carrying is incredibly important.
06:41:58 <elliott> "c) you can opt out of rules that your instance doesn't obey"
06:42:00 <elliott> hahahahahahaahahaha
06:42:02 <elliott> "d) you can define functions that allow you to satisfy those rules (in an"
06:42:04 <elliott> this was chopped off.
06:43:09 <kallisti> elliott: a like how you switched the context to dependently typed languages without telling anyone.
06:43:13 <kallisti> s/a/I/
06:43:21 <elliott> yeah
06:43:22 <elliott> see
06:43:28 <elliott> "proof-carrying"
06:43:31 <elliott> was a pretty big hint
06:43:35 <elliott> if you actually knew what you were talking about
06:43:41 <elliott> by hint, I mean literal outright statement
06:46:04 <kallisti> I wasn't aware that dependently typed languages are the only context in which proof-carrying can be talked about.
06:47:12 <elliott> the context was functional languages + formal proofs soooo... and anyway, it's not really relevant that a dependent language is the setting; with a term like "proof-carrying", the idea that the "proofs" might just be gentleman's agreements is not even a possibility
06:47:14 -!- hagb4rd has joined.
06:47:39 <kallisti> elliott: right.
06:49:31 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
07:08:00 -!- elliott has quit (Remote host closed the connection).
07:21:18 -!- sebbu2 has joined.
07:21:18 -!- sebbu2 has quit (Changing host).
07:21:18 -!- sebbu2 has joined.
07:23:46 -!- sebbu has quit (Ping timeout: 258 seconds).
07:30:57 -!- azaq23 has quit (Read error: Connection reset by peer).
07:31:12 <kallisti> Make all of your leaf classes final. After all, you're done with the project - certainly no one else could possibly improve on your work by extending your classes. And it might even be a security flaw - after all, isn't java.lang.String final for just this reason? If other coders in your project complain, tell them about the execution speed improvement you're getting.
08:13:10 -!- Vorpal has joined.
08:18:05 -!- Slereah_ has joined.
08:18:35 -!- monqy has quit (Quit: hello).
08:19:44 -!- Slereah has quit (Ping timeout: 258 seconds).
08:20:42 -!- zzo38 has quit (Remote host closed the connection).
08:21:39 -!- MSleep has quit (Ping timeout: 248 seconds).
08:33:19 <kallisti> hmmm smalltalk could potentially be abused in polyglot languages.
08:33:24 <kallisti> as " is used for inline comments
08:34:43 <kallisti> so something like "\" would comment out most languages but leave smalltalk available
08:34:56 <kallisti> then a subsequent " would begin a smalltalk comment and end the other-language string
08:35:12 <kallisti> assuming multi-line strings are legal.
08:35:15 <Sgeo> kallisti, update
09:42:18 -!- ais523 has joined.
10:02:54 -!- ais523 has quit (Ping timeout: 252 seconds).
10:17:50 -!- MSleep has joined.
10:25:05 -!- GreaseMonkey has quit (Quit: The Other Game).
10:38:35 -!- ais523 has joined.
10:50:05 <ais523> https://bugs.php.net/bug.php?id=32100 (found via proggit); wow at the first comment
10:50:41 <ais523> I mean, the whole page is cringeworthy, but the first comment is particularly bad
11:01:19 <ais523> someone on Reddit described the attitude as "Pokémon exception handling"; I hadn't seen that before, but it's a good name for it
11:06:51 <kallisti> > foldr (*) 0 [1..10] :: Expr
11:07:07 <kallisti> >_>
11:07:11 <kallisti> oh
11:07:32 <ais523> > ->
11:07:37 <ais523> *
11:07:39 <ais523> > _>
11:07:41 <ais523> there we go
11:07:53 <kallisti> that actually times out on my bot running mueval
11:07:59 <kallisti> foldl does not
11:24:21 <kallisti> ais523: maybe they don't want to implement finally because they don't know how. :3
11:25:05 <ais523> kallisti: that was mentioned in the thread
11:25:10 <ais523> on Reddit, I thikn
11:27:46 <kallisti> the languages employers turn to when writing the software that makes the world turn are C/C++, Java, and PHP, in that order. C# is a close 4th, then everything else is a niche.
11:27:50 <kallisti> I think it's actually Java up top.
11:39:40 -!- ais523 has quit (Ping timeout: 245 seconds).
11:43:45 -!- ais523 has joined.
11:44:35 <ais523> hmm, what do you call the things made with Flash that are basically interactive animated vector images, and have nothing to do with (compressed) raster video?
11:54:36 -!- derdon has joined.
12:05:44 -!- ais523 has quit (Remote host closed the connection).
12:06:45 -!- ais523 has joined.
12:06:52 -!- ais523 has quit (Changing host).
12:06:52 -!- ais523 has joined.
12:17:04 <kallisti> ais523: ....flash?
12:17:19 <ais523> kallisti: not really specific enough
12:17:24 <ais523> perhaps "flash animation" would be the right name
12:18:54 <kallisti> probably.
12:20:23 -!- derdon has quit (Remote host closed the connection).
12:23:39 -!- MDude has joined.
12:26:27 -!- MSleep has quit (Ping timeout: 248 seconds).
12:33:28 <Patashu> I'm still stuck on the 10th level of the MESH - Falling Hero demo
12:33:30 <Patashu> :|
12:33:36 <Patashu> right side's solved, left side I'm stuck on
12:37:18 <Patashu> where's zzo38/myndzi when you need em
12:50:11 <oklopol> *-not
12:51:16 <oklopol> bsmntbombdood: and in case you aren't familiar with it the N -> D conversion is done with the subset construction (which can be extended for alternating -> deterministic as well, see my master's thesis for instance)
12:52:10 <oklopol> basically let your NFA A have state set S, then what you do is you take the set of subsets 2^S as the states of your new DFA A' and have as your new initial state the set of all initial states of A.
12:52:43 <oklopol> the transitions are given by having the transition U -> U' (where U, U' in 2^S) with label a if U' is exactly the set of states A can reach from the states U with label a
12:53:18 <oklopol> obviously the final states should then be just the sets containing at least one final state; it should be immediate that A' then accepts the same language as A.
12:54:19 <oklopol> you then need to minimize the DFA, for that you can just first assume that final states are separated from nonfinal states (exactly finals accept the empty word), and then keep separating states into smaller and smaller sets (making the eq relation of states finer) until all labels from equivalent states lead to equivalent states
12:54:44 <oklopol> oh and ofc drop unreachable states and states from which final states cannot be reached except a single sink state maybe, depending on your formalism
12:55:21 <oklopol> the conversion from regexps to NFA is very simple, OR is trivial, concatenation is just connecting final states to initial states, and kleene star is done by doing the same but to your own initial states
12:56:11 <oklopol> once you have two minimal DFA, just start from the initial states of each, and you'll find correspondence of states, if one exists, by just following the labels. we know that minimal DFA are unique up to this sort of isomorphism, so you get your answer from that.
12:56:44 <oklopol> apparently you left the channel before i had time to answer, but that's not really my problem
12:59:15 -!- oerjan has joined.
13:02:56 <oklopol> i didn't really explain minimization very clearly, but you can think up the details with little difficulty
13:14:57 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:29:05 <ais523> brilliant: Oracle and Google are arguing over whether the word "runtime" in a patent should be given its ordinary-language meaning
13:29:34 <ais523> Oracle claim it should be, and that that meaning is "during execution of the virtual machine"; Google claim it needs an explicit definition as "during execution of the virtual machine instructions"
13:29:44 <ais523> I'm wondering when the judge is going to yell at them that it obviously doesn't matter
13:30:08 <ais523> because they both agree that the term has the same meaning, they just disagree over whether the court needs to specifically define it as having that meaning
13:30:12 <ais523> which is, why does that matter?
13:31:16 -!- boily has joined.
13:36:46 * kallisti is immune to sleep deprivation now.
13:37:22 <oerjan> he said, collapsing.
13:38:05 <oklopol> i have until 11. to finish a paper i made last summer and i just realized it's like the sloppiestly written paper ever
13:38:07 <oerjan> <quintopia> and i dont understand why confusing jasper and cumming provoked that repsonse <-- the closer the places, the more violent response to confusing them, duh
13:38:55 <oklopol> gonna be a long saturday :)))
13:42:43 <oerjan> <elliott> aid me in becoming toucan <-- i'm sorry i'm over quota on fowl puns
13:49:30 <kallisti> oklopol: write a perl script to fix it up. you'll be fine.
13:57:43 -!- ais523_ has joined.
14:03:51 <oklopol> i refereed a paper and broke it.
14:27:00 <ais523_> bleh, fire alarm
14:27:06 <ais523_> (just got back from a really obvious fire drill)
14:27:20 <ais523_> (only thing that'd have made it more obvious would have been being announced in advance
14:27:23 <ais523_> *)
14:28:49 <oerjan> "WE WILL BE SETTING FIRE TO THE CANTEEN IN THIRTY MINUTES; EVERYONE PLEASE BE PREPARED FOR THE FIRE DRILL"
14:36:04 -!- Madoka-Kaname has quit (Ping timeout: 248 seconds).
14:42:37 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:46:27 <ais523_> oerjan: it reminds me of an unexpected early-morning fire alarm at my secondary school
14:46:37 <ais523_> apparently, it's because the detectors detected "HEAT" in the kitchens
14:46:48 <ais523_> I thought, the kitchens are somewhere heat would be quite likely, surely?
14:47:12 <oerjan> you'd think
15:13:03 <ais523_> perhaps it meant more heat than usual
15:17:39 -!- copumpkin has joined.
15:22:27 <Gregor> elliott best not have left me any lambdabot-messages.
15:22:37 <Gregor> But then, lambdabot doesn't seem to be here.
15:22:42 <Gregor> SO I GUESS I'LL NEVER KNOW
15:30:28 <ais523_> where is elliott, anyway?
15:42:43 -!- sebbu2 has changed nick to sebbu.
15:45:56 -!- MDude has quit (Ping timeout: 248 seconds).
15:46:13 -!- MSleep has joined.
15:52:23 -!- MDude has joined.
15:52:44 -!- oerjan has quit (Quit: leaving).
15:55:32 -!- MSleep has quit (Ping timeout: 248 seconds).
15:59:31 <Gregor> ais523: Better question: Where is lambdabot?
16:00:10 <Jafet> ELLIOTT IS LAMBDABOT
16:07:29 <kallisti> !perl print int(rand(2))
16:07:32 <EgoBot> 0
16:07:41 <kallisti> man, I love pseudo-random decision making
16:08:18 -!- ais523_ has quit (Quit: Page closed).
16:11:56 <Gregor> kallisti: Man, I base most of my life on pseudo-random decision making.
16:19:37 <oklopol> i usually just ask my dick and i then rarely even bother to listen
16:31:01 <pikhq_> All power to penis
16:42:21 <kallisti> Gregor: it's a great excuse to slack off.
16:42:29 <kallisti> especially when you haven't been slacking off very much in the past few weeks.
16:44:32 * kallisti wishes that SQL injection were still a thing you could do.
16:44:50 <kallisti> maybe one day I'll find that horribly insecure site and exploit the shit out of it.
16:54:09 <kallisti> http://en.wikipedia.org/wiki/National_Defense_Authorization_Act_for_Fiscal_Year_2012
16:54:16 <kallisti> pikhq_: have you seen this shit
17:20:02 <kallisti> why the fuck did I buy a red bull
17:20:14 <kallisti> oh, hm, it tastes good. maybe it tastes better when you don't sleep much.
17:20:40 <kallisti> the only problem is that it's way overpriced for the caffeine content.
17:20:57 <kallisti> though, recently I've started /not/ binge drinking caffeine
17:21:06 <kallisti> and instead drinking small amounts throughout the day
17:21:09 <kallisti> and it works better.
17:25:37 <kallisti> hi hi hi hi
17:26:06 <kallisti> this Red Bull can mysteriously says "Rexham" o nit
17:26:18 <kallisti> I think it scod for HEXHAM
17:26:41 <kallisti> KING HEXHAM
17:26:50 <kallisti> REXIMUS MAXIREX
17:26:57 * kallisti latin
17:41:21 -!- monqy has joined.
17:44:02 <kallisti> monqy: bye
17:44:08 <monqy> hi
17:49:18 -!- elliott has joined.
17:51:29 <kallisti> elliott: hihiii
17:51:53 <quintopia> are you just feeling silly or does caffeine do this to you?
17:52:44 <kallisti> no slep deprivation
17:53:03 -!- blodeuwedd has joined.
17:54:21 -!- blodeuwedd has quit (Client Quit).
18:16:18 <ais523> `log coincidence
18:16:53 <HackEgo> 2010-05-03.txt:18:06:13: <alise> Maybe they just repeat naturally, or maybe it's just a coincidence.
18:18:57 -!- Klisz has joined.
18:30:47 <oklopol> okokokokokokokoko
18:30:49 <oklopol> okokokokokokokoko
18:30:51 <oklopol> okokokoko
18:30:55 <oklopol> okokokokokokokokokokokokokoko
18:31:31 <elliott> 11:44:35: <ais523> hmm, what do you call the things made with Flash that are basically interactive animated vector images, and have nothing to do with (compressed) raster video?
18:31:32 <elliott> ais523: animation
18:31:37 <elliott> and/or game
18:31:52 <ais523> I was wondering if there was a general term
18:32:12 <elliott> flash :P
18:32:15 <elliott> as in, "a flash"
18:32:26 <elliott> youtube has a flash player, but the individual videos aren't flashes
18:33:30 <ais523> hmm, I wonder if this has anything todo with Shockwave + whatever the other thing that was merged to make Flash was
18:34:09 <elliott> ais523: shockwave still exists, if you can believe it
18:34:16 <ais523> elliott: I can
18:34:20 <elliott> ais523: as in, "is still updated"
18:34:22 <ais523> I can also believe that Quicktime still exists, but don't know for sure
18:34:32 <ais523> also Realplayer
18:34:41 <ais523> (as web browser plugins, I mean)
18:34:59 <elliott> ais523: quicktime is obviously still updated since it's still a core part of OS X :P
18:35:02 <elliott> (as a browser plugin too)
18:35:23 <elliott> oh dear, realplayer is on version 15
18:36:07 * elliott can't figure out the difference between shockwave and flash
18:36:12 <elliott> it doesn't help that flash used to be called shockwave flash
18:36:18 <ais523> quick, Mozilla, iterate version numbers faster to beat it!
18:36:22 <ais523> elliott: still is in my plugins list
18:36:48 <elliott> <ais523> quick, Mozilla, iterate version numbers faster to beat it!
18:36:57 <elliott> but that wouldn't be mathematically sound!
18:37:09 <elliott> firefox's version-number is the fastest-growing possible function
18:38:32 <elliott> ais523: I think one of the best things about Adobeacquiring Macromedia (wow, that happened in 2005)
18:38:41 <elliott> is that Adobe ended up with like
18:38:43 <elliott> five duplicate products
18:38:57 <elliott> that they had to justify
18:38:58 <ais523> as recently as 2005?
18:39:01 <elliott> X-D
18:39:03 <ais523> elliott: why didn't they just merge them?
18:39:16 <elliott> ais523: how do you merge two codebases?
18:39:26 <ais523> merge features, rather than code
18:39:32 <ais523> unless the codebases happen to be similar, which is unlikely
18:39:49 <elliott> well, OK
18:39:59 <elliott> basically you're asking "why didn't they discontinue one" :)
18:40:27 <ais523> yep
18:40:29 <elliott> What's the difference between the Flash and Shockwave Players?
18:40:29 <elliott> Flash and Shockwave Players are both free Web Players from Adobe. Together, they bring you the best rich media content on the Internet. Each has a distinct purpose. Flash Player delivers fast loading front-end Web applications, high-impact Web site user interaction, interactive online advertising, and short to medium form animation. Shockwave Player displays destination Web content such as interactive multimedia product demos and training, e-merch
18:40:29 <elliott> andising applications, and rich-media multiuser games. When you download Shockwave Player, it automatically includes Adobe Flash Player.
18:40:40 <ais523> well, "why didn't they discontinue one and give a migration path from it to other versions"
18:40:59 <elliott> so, umm, Flash is for animation and interactivity, Shockwave is for applications, or something
18:41:21 <elliott> http://www.shockwave.com/home.jsp ;; which is to say, games
19:13:24 -!- MDude has quit (Ping timeout: 248 seconds).
19:24:26 <elliott> ais523: christmas spam :D
19:24:43 <elliott> ais523: have you contacted graue yet? it's becoming impossible to follow recentchangs
19:24:44 <elliott> es
19:24:45 <ais523> it's been going on for a while
19:24:46 <ais523> and no, I haven't
19:24:54 <elliott> :(
19:25:00 <ais523> I'm something like three days behind with my work as is
19:25:17 <elliott> oh, looks like smjg has
19:25:24 <ais523> and I don't like to bother him with something that's under control, in that the spam can be cleaned up very quickly
19:26:20 <elliott> it's not under control if it massively disrupts the wiki...
19:26:51 <ais523> how is it disrupting anything but Recent Changes?
19:27:26 <elliott> that's a rather major thing to disrupt; furthermore, it's disrupting everyone's time because we have to constantly revert [[Excela]]
19:27:44 <elliott> I'm hardly the first person to complain that it's severe
19:39:54 <ais523> OK, emailed Graue
19:40:51 <elliott> ais523: in a week graue will return, post a message saying "sorry for not reading email, I've been busy etc. etc. etc.", op Timwi, and leave
19:40:57 * elliott calls it now
19:41:05 <ais523> elliott: more admins wouldn't help, I made that pretty clear
19:41:14 <elliott> ais523: stop it it
19:41:16 <elliott> hurst my joke
19:41:18 <elliott> youre killing it :(
19:47:16 <kallisti> ais523: y william hearst
20:18:57 -!- ais523 has quit (Remote host closed the connection).
20:29:34 -!- oerjan has joined.
20:31:06 <oerjan> `addquote <kallisti> man, I love pseudo-random decision making <Gregor> kallisti: Man, I base most of my life on pseudo-random decision making. <oklopol> i usually just ask my dick and i then rarely even bother to listen
20:31:08 <HackEgo> 745) <kallisti> man, I love pseudo-random decision making <Gregor> kallisti: Man, I base most of my life on pseudo-random decision making. <oklopol> i usually just ask my dick and i then rarely even bother to listen
20:32:24 <olsner> oklopol :D
20:34:51 <elliott> `quote
20:34:52 <elliott> `quote
20:34:52 <elliott> `quote
20:34:53 <elliott> `quote
20:34:53 <elliott> `quote
20:34:57 <HackEgo> 80) <Dylan> Warrigal is the Harlem Globe Frotter
20:34:57 <HackEgo> 360) <Cheery> [...] OOPS.. my cockfile got destroyed
20:34:59 <HackEgo> 172) <alise> Why do you use random acronyms you know we don't know the expansions of? <pikhq> alise: TLAAW
20:35:11 <HackEgo> 539) <elliott> What does "life" actually mean, anyway; it seems to mean "this thing that's infinitely greater than all my actual hobbies that I do all the time because I rule"
20:35:12 <HackEgo> 264) <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
20:35:47 <oerjan> hm was that about the SL = L theorem
20:35:52 <elliott> most of those suck :(
20:35:56 <elliott> `log <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
20:36:17 <HackEgo> No output.
20:37:12 <elliott> o_O
20:37:14 <oerjan> i don't understand 80
20:37:23 <elliott> you're too young
20:37:28 <elliott> (it's not funny though)
20:37:44 <elliott> 80, 360 and 172 are pretty bad
20:37:52 <oerjan> `log [t]hhe former is a very deep theorem
20:37:57 <HackEgo> No output.
20:37:58 <elliott> thhe former
20:38:03 <oerjan> oopd
20:38:08 <oerjan> `log [t]he former is a very deep theorem
20:38:14 <HackEgo> 2011-02-05.txt:02:09:38: <elliott> `addquote <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
20:38:18 <oerjan> my speling, were diddit goo
20:38:21 <elliott> `logurl 2011-02-05.txt:02:09:38:
20:38:23 <HackEgo> http://codu.org/logs/log/_esoteric/2011-02-05
20:38:41 <elliott> lol, not that day or the previous
20:38:52 <oerjan> perhaps i said it in privmsg?
20:39:06 <elliott> oh probably
20:39:14 <elliott> in that case i won't have the logs of it
20:39:18 <elliott> do you log; if not rip
20:39:20 <oerjan> me neither
20:39:20 <elliott> the line's
20:39:21 <elliott> history
20:39:21 <elliott> ok
20:39:39 <oerjan> `log [t]he former is a very deep theorem
20:39:44 <HackEgo> 2011-02-05.txt:02:09:38: <elliott> `addquote <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
20:39:57 <elliott> oerjan: pastelogs, dude
20:40:03 <oerjan> ah
20:40:08 <oerjan> `pastelogs [t]he former is a very deep theorem
20:40:15 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21522
20:40:25 <elliott> oh
20:40:29 <elliott> it was one of my logreading additions
20:40:35 <elliott> that i failed to mark appropriately :(
20:40:51 <elliott> oerjan: wow, we only had 291 quotes in feburary
20:40:51 <elliott> `qc
20:40:53 <HackEgo> 745 quotes
20:40:57 <elliott> *february
20:41:05 <oerjan> `logurl 2010-06-07.txt
20:41:07 <HackEgo> http://codu.org/logs/log/_esoteric/2010-06-07
20:41:17 <elliott> 12:59:39: <oerjan> <CakeProphet> I kind of feel like devising an abstract algebra.
20:41:17 <elliott> 12:59:59: <oerjan> they've all been invented already. probably. well, the simple ones.
20:41:17 <elliott> 13:00:19: * oerjan was reading about medial magmas/groupoids recently
20:41:17 <elliott> 13:01:13: <oerjan> one operator (call it *), fundamental equation: (a*b)*(c*d) = (a*c)*(b*d)
20:41:17 <elliott> 13:02:43: <ais523> hmm, post on rgrn
20:41:19 <elliott> 13:02:45: <oerjan> surprisingly, there are interesting consequences. if * is surjective, then it's essentially a kind of linear function, and all linear functions of two variables have this property.
20:41:22 <elliott> 13:02:49: <ais523> umm, ali
20:41:24 <elliott> 13:03:00: <ais523> two newsgroups which probably have more of an overlap than they ought to
20:41:26 <elliott> 13:03:11: <ais523> but a post on rgrn is not surprising, and a post on ali is
20:41:28 <elliott> 13:03:19: <ais523> it was asking about how to implement the factory and singleton patterns in INTERCAL
20:41:30 <elliott> 13:03:24: <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
20:41:45 <oerjan> oh that one
20:41:47 <elliott> oerjan: omfg!
20:42:01 <elliott> oerjan: that log, by complete coincidence, contains one of the /other/ programming games
20:42:07 <elliott> that I couldn't for the life of me find
20:42:21 <oerjan> the SL = L theorem was just another one where i didn't bother to read the whole book/article :P
20:42:30 <elliott> 00:19:32: <zzo38> Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
20:42:30 <elliott> 00:19:37: <zzo38> Some people, in an effort to sound intelligent, quote other people. Now they look retarded.
20:42:30 <elliott> 00:19:47: <zzo38> Some people, when confronted with a problem, think "I'm going to grab a sandwich." Now they have two problems because the sandwich is poisoned.
20:42:30 <elliott> 00:20:01: <zzo38> Some people, when, now they have, a problem.
20:42:53 <oerjan> in fact i think that may have referred to earlier articles about the graph techniques they used
20:43:33 <kallisti> elliott: I can't say I've created two problems from a regex for more than 10 minutes at most.
20:44:01 <elliott> that one is a famous not-Zawinski quote.
20:44:07 <kallisti> yes.
20:45:13 <oerjan> the big question is whether zzo38 used regular expressions to generate those quips
20:47:07 <elliott> oerjan: you are assuming incorrectly that those aren't all direct quotes :P
20:47:23 <elliott> observe
20:47:24 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=%22Some+people%2C+when+confronted+with+a+problem%2C+think+%22I'm+going+to+grab+a+sandwich.%22+Now+they+have+two+problems+because+the+sandwich+is+poisoned.%22
20:47:36 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=%22Some+people%2C+in+an+effort+to+sound+intelligent%2C+quote+other+people.+Now+they+look+retarded.%22
20:47:50 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=%22Some+people%2C+when%2C+now+they+have%2C+a+problem.%22 ;; ok this one wasn't a direct quote
20:48:34 <oerjan> well, i have to assume if i'm going to make any asses
20:49:48 <elliott> `addquote <oerjan> well, i have to assume if i'm going to make any asses
20:49:51 <HackEgo> 746) <oerjan> well, i have to assume if i'm going to make any asses
20:50:23 * oerjan puts his fishing hook away
20:52:32 <monqy> 746 is a lot of quotes
20:53:12 <oerjan> maybe we're approaching quote singularity
20:53:33 <elliott> the moment where all quotes are bad
20:53:34 <elliott> `quote
20:53:35 <elliott> `quote
20:53:35 <elliott> `quote
20:53:35 <elliott> `quote
20:53:36 <elliott> `quote
20:53:44 <HackEgo> 721) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
20:53:45 <HackEgo> 539) <elliott> What does "life" actually mean, anyway; it seems to mean "this thing that's infinitely greater than all my actual hobbies that I do all the time because I rule"
20:53:51 <elliott> NOT THAT ONE AGAIN
20:53:56 <HackEgo> 83) <fedoragirl> My mascot is a tree of broccoli.
20:53:56 <HackEgo> 682) <ais523> it's not a list of /all/ interesting esolangs, btw; otherwise you can take the first command from the first esolang, the second from the second, the third from the third, etc, then add 1 to all of them <ais523> and you get a new interesting esolang <ais523> diagonal principle…
20:53:56 <HackEgo> 626) <Gregor> Let us discuss the correct procedure for converting LP -> FLAC <fizzie> The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac.
20:54:21 -!- itidus20 has joined.
20:54:24 <elliott> hm
20:54:27 <elliott> `delquote 83
20:54:30 <HackEgo> ​*poof* <fedoragirl> My mascot is a tree of broccoli.
20:54:42 <oerjan> i actually thought that one was cute
20:54:53 <itidus20> a girl?
20:55:06 <oerjan> obviously it's just Gregor crossdressing
20:55:17 <itidus20> aha
20:55:21 -!- derrik has joined.
20:55:26 <elliott> oerjan: well propose a worse one that's there :P
20:56:07 <oerjan> now you're just being mean :P
20:56:50 <elliott> ok fine
20:56:51 <elliott> `revert
20:56:52 <HackEgo> Done.
20:57:24 <elliott> oerjan: er i just had a really bad idea
20:57:38 <oerjan> yay
20:57:49 <elliott> noooo
20:57:51 <oerjan> will it cause the end of life as we know it?
20:57:52 <itidus20> 3 cheers
20:58:04 <elliott> oerjan: not quite. but my hard drive might fill up
20:58:13 <oerjan> ah. even worse, then.
20:58:20 <itidus20> even worse!
20:58:21 <elliott> yes
20:58:23 <itidus20> yay
20:58:51 <elliott> oerjan: what if i wrote a bot to download every url mentioned in here as it is linked.
20:58:55 <elliott> and then
20:58:59 <elliott> hook it up to the logs
20:59:00 <elliott> so in the future
20:59:14 <elliott> you can see the links.... as they were... then...........
20:59:16 <elliott> this is a terrible idea wow
20:59:29 <elliott> it basically uses up gigs of disk space for really tiny amounts of nostalgia in the far future
20:59:51 <itidus20> elliott: you mean when url format is superceded?
21:00:04 -!- derrik has quit (Client Quit).
21:00:07 <elliott> yes that's totally what i meant
21:00:34 <itidus20> like when dns is replaced with a non-deterministic ai system where you just make natural language enquiries into the address bar :-?
21:00:55 <itidus20> i ...
21:00:58 <itidus20> i'll stop
21:01:01 <oerjan> itidus20: that's called google
21:01:06 <kallisti> no I think he means a esoWayBack
21:01:07 <itidus20> ah
21:01:12 <oerjan> at least many people use it that way
21:01:30 <elliott> i wonder if google is used more than dns these days
21:01:30 <elliott> as in
21:01:31 <elliott> not internally
21:01:33 <elliott> but by people
21:01:35 <Gregor> elliott, ais_isnt_here_so_I_dont_remember_this_number: MUSIX
21:01:37 <elliott> i think: probably
21:01:38 <kallisti> elliott: but you know the best language for that project?
21:01:42 <elliott> Gregor: what
21:01:42 <kallisti> hint: it's perl
21:01:44 <elliott> and it's 523
21:01:47 <Gregor> elliott: MU6
21:01:52 <elliott> Gregor: help
21:02:30 <Gregor> elliott: MU
21:02:42 <itidus20> elliott: by me it is. "darn. i forget if company foo is .com or .org .. i better visit google to check"
21:02:48 <elliott> Gregor: HELP
21:02:52 <oerjan> itidus20: i do that too sometimes
21:02:54 <Gregor> elliott: SIX
21:02:58 <elliott> Gregor: IM CRYING
21:03:04 <Gregor> elliott: IIRC, both you and ais wanted me to musix some musix musix.
21:03:15 <elliott> oh!
21:03:27 <itidus20> Gregor: are you fedoragirl?
21:03:28 <elliott> well AII isn't quite at that stage yet :P we're still toying with the physics code
21:03:37 <elliott> ais was a separate thing
21:04:43 <Gregor> itidus20: Although we both have long hair and hats, we are distinct persons.
21:05:09 <elliott> "I'm also a girl who neither uses Fedora GNU/Linux nor wears fedoras."
21:05:11 <itidus20> ok cool
21:05:18 <elliott> F- would not google again
21:05:38 <oerjan> fed, or a girl? you decide.
21:05:44 <itidus20> i will also keep an eye out for redhatboy
21:05:58 <elliott> fed or a freak
21:06:30 <itidus20> and blackhatyouthofindeterminategender
21:06:59 <Gregor> I would /nick to something but I'm on a lot of channels.
21:07:10 <elliott> Gregor: that's why it's fun
21:07:11 <itidus20> elliott:do you feel better now?
21:07:16 <elliott> than what
21:07:24 <itidus20> than when you were crying
21:07:51 <elliott> i wasn't
21:07:52 <elliott> actually crying
21:07:55 <Gregor> X-D
21:09:13 <itidus20> to have my brain in particular is so terrifyingly painful that i should rather be a moth made to flap my wings by an electrical current
21:09:31 -!- MSleep has joined.
21:09:51 <itidus20> not really
21:13:48 <itidus20> `log aii
21:13:54 <HackEgo> 2010-05-02.txt:06:21:16: <pikhq> There's also Hawaii that doesn't do DST.
21:14:05 <Gregor> lol
21:14:17 <Gregor> So glad we have `log :P
21:14:27 <Gregor> `pastelogs aii
21:14:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1013
21:14:54 <itidus20> thats a very weird pastelog
21:16:13 <itidus20> which could be best expressed as roger did
21:16:17 <itidus20> `log aiiigh
21:16:21 <HackEgo> 2011-12-05.txt:21:16:17: <itidus20> `log aiiigh
21:16:34 <itidus20> `log aiiigh,
21:16:38 <HackEgo> 2011-12-05.txt:21:16:34: <itidus20> `log aiiigh,
21:16:59 <itidus20> 2007-10-17.txt:00:20:41: <RodgerTheGreat> aiiigh, my brain
21:17:22 -!- MSleep has changed nick to MDude.
21:17:30 <elliott> 2006-09-18.txt:23:42:27: <GregorR-W> Waiiiiiiiiiiit ...
21:17:33 <elliott> Gregor: I'm still waitin'.
21:17:40 <Gregor> Waitin'?
21:17:53 <elliott> WAITIN' SINCE 2006
21:17:57 <elliott> `pastelogs axiomatic
21:17:59 <Gregor> Oh :P
21:18:01 <elliott> `pastelogs aargh
21:18:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26644
21:18:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18420
21:18:51 <Gregor> lolwow
21:18:55 <Gregor> That was quite the conversation in 2006.
21:19:09 <itidus20> these are really painful pastelogs to read
21:19:16 <Gregor> 23:43:55: <pikhq> Your teeth aren't up your ass.
21:19:17 <Gregor> 23:44:07: <feesh> thats what my awkward doctor told me though
21:19:19 <Gregor> 23:44:16: <GregorR-W> Is this a prison doctor?
21:19:21 <Gregor> 23:44:54: <pikhq> Did he then tell you that sleeping with strippers is good for preventing lung cancer or something?
21:19:24 <Gregor> 23:45:00: <feesh> I dunno I met him on the corner of my street
21:19:59 <elliott> waht
21:20:06 <elliott> itidus20: painful?
21:20:20 <elliott> 2007-01-10.txt:23:08:36: <CakeProphet> what's a costum enviornment... and how does it change the axiomatic grand law of python's print statement?
21:20:22 <elliott> kallisti: what
21:21:44 <Gregor> http://www.smbc-comics.com/?id=2452 SMBC is so great.
21:21:45 <oerjan> costume cost, um
21:22:19 <itidus20> 2007-07-27.txt:09:52:24: <RodgerTheGreat> on an LCD, the color displayed on the screen has no impact on power usage! aargh
21:22:19 -!- ais523 has joined.
21:22:25 <elliott> hi ais523
21:22:29 <oerjan> the ais back
21:22:41 <itidus20> i learned to make my lcd screen turn itself off after my first one died
21:22:44 <elliott> im and ais back
21:22:48 <elliott> ijd a
21:22:52 <elliott> ;/ ;;; ; ;
21:23:00 <oerjan> eek i broke elliott again
21:23:09 <Gregor> ais523: MUSIX
21:24:13 <ais523> Gregor: ?
21:24:25 <ais523> oerjan: try bashing just next to the power button, that usually helps
21:24:31 <ais523> (don't hit the power button itself ofc, for obvious reasons)
21:25:02 <Gregor> ais523: MU6
21:25:45 <elliott> ais523: <Gregor> elliott: IIRC, both you and ais wanted me to musix some musix musix.
21:25:54 <ais523> elliott: ah, thanks
21:26:23 <Gregor> elliott: Pff
21:26:24 <ais523> I'm not sure I actually said that; I discussed that I was writing a game, plus music for it, and was stuck with where to go with parts of it
21:26:34 <ais523> Gregor: I thought that might be it but wasn't sure
21:27:23 <itidus20> ais523: nintendo never really did anything cool since inventing super mario bros. 1 and legend of zelda 1
21:27:41 <ais523> itidus20: that's kind-of a sweeping statement
21:28:17 <Gregor> Wii? BORING
21:28:43 <itidus20> i havent actually seen a wii up close
21:28:47 <ais523> there have been quite a lot of Nintendo consoles since the NES
21:29:00 <elliott> itidus20: have you played super mario galaxy
21:29:03 <elliott> if you don't think that game is cool
21:29:06 <elliott> you're probably not human???
21:29:23 <elliott> but maybe still a human
21:29:25 <elliott> i am not an expert on humanity
21:29:51 <itidus20> my comment more or less answers your question
21:29:51 -!- boily has quit (Quit: WeeChat 0.3.6).
21:29:58 <itidus20> and perhaps explains my whole confusion
21:30:16 <elliott> what
21:30:24 <itidus20> i havent actually seen a wii up close
21:30:35 <elliott> oh
21:30:38 <ais523> hmm, now I'm trying to figure out the best way to send the channel a music file (I have it in .rg, .mid, .ogg, .pdf)
21:30:40 <itidus20> + i havent emulated wii games
21:30:48 <elliott> you don't go close to them to play them :P
21:30:56 <elliott> emulating wii games sounds terrible without the controller
21:30:58 <ais523> (with a boring open-source soundfont, but it still sounds reasonably good)
21:31:15 <elliott> ais523: write a program that outputs the .ogg
21:31:18 <ais523> elliott: depends on the game, some of the best wii games don't really care about the motion controls
21:31:40 <elliott> ais523: well, OK, but the wiimote is pretty unconventional even then
21:31:42 <ais523> oh /ouch/ YouTube's home page has got ugly
21:31:52 <ais523> elliott: indeed
21:32:09 <itidus20> yeah.. its like windows xp turned into windows 3.1
21:32:18 <itidus20> but.. its growing on me quickly
21:32:22 <ais523> hmm, I recommended Metroid Prime Trilogy to someone when they asked me what Wii games to buy
21:33:11 <itidus20> perhaps interface change is initially percieved as ugly, but after mere exposure we start to appreciate it
21:33:34 <elliott> "change upsets people", a controversial statement
21:34:04 <itidus20> humm
21:34:12 <itidus20> change kills people >:-)
21:34:42 <ais523> itidus20: that's why it's illegal to throw pennies at unpopular players during a football (soccer) match
21:35:10 <elliott> football (soccer)
21:35:28 <elliott> ais523: don't you mean "association football" >:)
21:35:38 <elliott> (the joke is wikipedia)
21:35:55 <ais523> meh, Wikipedia has reasonable redirects from all possible guessed disambigs for that, I think
21:36:07 <elliott> http://en.wikipedia.org/wiki/Football
21:36:09 <elliott> they missed one!
21:36:15 <elliott> it's some irrelevant article instead
21:36:27 <itidus20> ok so its a tuesday here.. enough of my angst
21:36:40 <itidus20> time to be positive
21:38:31 <itidus20> http://www.smbc-comics.com/?db=comics&id=1164#comic
21:43:05 <elliott> it is now christmas day in three timezones!!! happy birthday ais523
21:43:27 <ais523> oerjan: go reboot elliott again for me, would you?
21:44:03 * oerjan bashes next to the power button
21:44:06 -!- elliott has quit (Quit: Broadcast message from root (pts/0): The system is going down for reboot NOW!).
21:44:44 -!- elliott has joined.
21:44:50 <elliott>
21:45:02 <elliott>
21:45:09 <olsner> elliott:
21:45:15 <itidus20> !
21:45:20 <elliott> Welcome to the esoteric programming channel! Check out
21:45:38 <elliott> how to the esoteric programming channel! Check out
21:45:45 <elliott> * Topic for #esoteric is:
21:45:51 <ais523> olsner: he's having to load a lot of stuff in the background
21:45:58 <ais523> so you'll get a bit of thrashing for a few minutes
21:46:07 <elliott> The IOCCC is background so you'll get a bit of thrashing
21:46:43 <elliott> Loading Markov models (43/768248)...
21:47:12 <elliott> Loading Markov models (5963/768248)...
21:47:17 <elliott> hi ais523
21:47:22 <ais523> hi elliott
21:47:29 <elliott> hi
21:47:33 <ais523> hi
21:47:36 <elliott> hi oerjan
21:47:38 <elliott> hi ais523
21:47:44 <ais523> hi
21:47:47 <elliott> hi
21:48:07 <elliott> Loading Markov models (23312/768248)...
21:48:13 <olsner> hi
21:48:18 <elliott> hi help
21:48:37 <elliott> Loading Markov models (101049/768248)...
21:48:43 <elliott> hi ais523
21:48:46 <elliott> what
21:48:47 <elliott> help
21:48:49 <elliott> help what
21:48:50 <oerjan> hi elliott
21:48:52 <elliott> hi what help hi oerjan what help
21:49:00 <ais523> fungot: go talk to elliott
21:49:00 <fungot> ais523: i had always deemed strange, but as she continued her choking he reached feebly in his fnord past the bidding of the vulgar, but by close questioning obtained a very picturesque legend of the fnord
21:49:03 <ais523> fungot: I'm not elliott!
21:49:04 <fungot> ais523: imaginations of all the prevailing horrors, we were still drifting south, meanwhile sinking deeper and deeper into that treacherous and sinister white immensity of tempests and unfathomed mysteries which stretched off for some fifteen hundred miles to the fnord, and gnarled, were of absorbing vividness and convincingness, and whenever he awaked he retained a vague sense of having undergone much more than he had been
21:49:11 <elliott> Loading Markov models (768247/768248)...
21:49:12 <elliott> hi what help ok
21:49:13 <ais523> ^style
21:49:13 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft* nethack pa qwantz sms speeches ss wp youtube
21:49:14 <oerjan> ais523: maybe we should send him in for repairs
21:49:14 <elliott> hi ais523 help what ok
21:49:18 <elliott> ok what help hi hi hi hi hi help what ok
21:49:21 <ais523> oh, that explains it
21:49:27 <elliott> Loading Markov models (768248/768248)...
21:49:34 <elliott> I have been restored to an adequate level of loquaciousness.
21:49:51 <elliott> Hopefully the garrulity endowed by this upgrade shall endeavour to produce most pleasant statements for the considerable enjoyment of yourselves.
21:50:16 <elliott> (the joke is that the first 768247 out of 768248 models just contain "hi", "help", "what" and "ok", laugh)
21:50:20 <olsner> fungot: fnord past the bidding of the vulgar
21:50:20 <fungot> olsner: but whatever had happened, they did lift for a second
21:51:20 <oerjan> we have cthuliftoff
21:51:41 <itidus20> i kinda wish i knew what a markov model really was, but im probably in bliss by not knowing
21:53:18 <itidus20> anyway, if a cylinder is an extruded circle, and a cube is an extruded square, and a box is an extruded rectangle
21:53:24 -!- Ngevd has joined.
21:53:27 <Ngevd> Hello!
21:53:30 <ais523> itidus20: you're thinking of the word "prism" here, I think
21:53:32 <ais523> Ngevd: hi
21:53:34 <ais523> or at least should be
21:54:02 <itidus20> ais523: but suppose a prism is concave
21:54:21 <ais523> err, what? extruding always creates a prism
21:54:23 <Ngevd> No it isn't
21:54:34 <Ngevd> A prism is pretty damn convex
21:54:34 <itidus20> ok
21:54:41 <itidus20> hmm
21:54:42 <Ngevd> Unless the cross-section is concave
21:54:43 <oerjan> you could have a prism with a star shape base, say
21:54:43 <itidus20> ok again
21:54:57 <oerjan> *shaped
21:55:01 <itidus20> what about a moon shaped prism?
21:55:06 <Ngevd> What phase?
21:55:16 <olsner> which moon?
21:55:22 <itidus20> i dunno... like a banana
21:55:35 <kallisti> .
21:55:36 <olsner> a banana-shaped prism? that's a banana
21:55:36 <kallisti> ..
21:55:38 <kallisti> ...
21:55:41 <elliott> instance (Show a) => Show (IO a) where show m = "return " ++ show (unsafePerformIO m)
21:55:50 <elliott> good idea y/n
21:55:57 <oerjan> my bananas so far have been remarkable un-prism-like
21:55:59 <itidus20> humm
21:56:00 <oerjan> *y
21:56:02 <olsner> elliott: YES
21:56:11 <itidus20> ok like a C shape as a prism
21:56:26 <olsner> not very safe, but should be fun
21:56:26 <oerjan> elliott: ignores precedence
21:56:26 <Ngevd> That's be concave, but not due to its prisminess
21:56:34 <elliott> oerjan: that would obscure the intent :P
21:56:36 <itidus20> an extruded C shape
21:56:50 <itidus20> sort of like a halfpipe i guess
21:56:54 <oerjan> elliott: you could at least have added parentheses
21:56:57 <elliott> oerjan: hmph
21:56:59 <Ngevd> itidus20, what I just said
21:57:14 -!- yiyus has quit (Remote host closed the connection).
21:57:14 <olsner> or used showsPrec to produce parens only when necessary?
21:57:14 <itidus20> well would it be a prism? :D
21:57:22 <Ngevd> Yes
21:57:38 <Ngevd> Prisms can be, but are not inherently, concave
21:58:30 <itidus20> i dunno what made me bring it up..
21:58:54 <Ngevd> Do all platonic solids have planar edge graphs?
21:59:07 <oerjan> a prism is the product space of an interval and some subset of R^2.
21:59:16 <oerjan> Ngevd: yes, obviously
21:59:31 <Ngevd> Perfect.
21:59:37 <Ngevd> Now NOBODY CAN STOP ME!
22:00:16 <oerjan> more generally, a graph on a sphere is also planar
22:00:29 <Ngevd> How about a torus?
22:00:58 <oerjan> just choose some point on the sphere outside the graph and project from it
22:01:14 <oerjan> torus, i don't think so
22:01:16 <olsner> K3,3 can be drawn on a torus, but is not planar
22:01:26 <Ngevd> Perfect.
22:01:34 <Ngevd> Now NOBODY CAN STOP ME!
22:01:36 <Ngevd> EVEN LESS!
22:01:45 <Ngevd> Or more, I'm not sure
22:02:05 <itidus20> Your lack of stoppability inspires awe among your peers.
22:02:06 <olsner> the problem of drawing K3,3 on a paper without crossing lines went all around my school in 4th or 5th grade, no-one solved it (=> it's unpossible)
22:02:37 <oerjan> olsner: it would only be impressive if one of you managed to actually prove it impossible
22:02:54 <elliott> does anyone know how to amplify with alsa?
22:03:02 <elliott> all my volumes are at 100% but it's still quiet
22:03:23 <olsner> oerjan: it would. I have no idea how to go about proving that
22:03:27 <elliott> sigh, gotta edit config files for it
22:04:22 <oerjan> hm might need the jordan curve theorem
22:06:04 <itidus20> ok something which to me as a newbie seemed interesting just occured to me
22:06:18 -!- derdon has joined.
22:06:30 <Ngevd> Hit us
22:06:37 <Ngevd> Not literally
22:06:59 <olsner> only hit ngevd
22:07:08 -!- DCliche has joined.
22:07:13 -!- augur has quit (Remote host closed the connection).
22:07:28 <itidus20> suppose you have a string of length N on a piece of paper... and you curve it into a circle on that piece of paper
22:07:33 <elliott> <lambdabot> Plugin `dummy' failed with: thread killed
22:07:34 <elliott> [...]
22:07:37 <elliott> <ari> Just out of curiousity, though, what *is* up with lambdabot? (i.e. the one on this channel right now?
22:07:37 <elliott> <Saizan> got patched to be more reliable
22:08:00 <oerjan> i want to swat elliott but i guess he's miserable enough.
22:08:05 <itidus20> is this a combination of rotations and translations?
22:08:12 <elliott> oerjan: wat
22:08:23 <oerjan> elliott: YOU BROKE LAMBDABOT
22:08:29 <elliott> MY PATCH HASN'T BEEN APPLIED YET :P
22:08:36 <oerjan> ah.
22:08:49 <oerjan> good i didn't swat then.
22:09:07 <itidus20> it seems to me that twisting a straight thing into a curve should really have a unique name for that geometric operation
22:09:14 <itidus20> or... rather...
22:09:15 -!- Klisz has quit (Ping timeout: 245 seconds).
22:09:33 <oerjan> itidus20: rotations and translations turn straight lines into straight lines.
22:10:11 <itidus20> suppose you took water filing a cube and poured it into a long thin rectangular prism
22:10:11 <oerjan> there is something called a mobius transformation, though...
22:10:16 <itidus20> what have you done to the water?
22:10:23 <oerjan> which can turn lines and circles into each other
22:11:01 <itidus20> i guess its a scaling operation in a way...
22:11:18 <itidus20> like if you uhhh
22:11:40 <itidus20> if you have a rectangle of ratio x:y where x+y = z ..
22:11:48 <itidus20> and you alter x and y but maintain z
22:11:58 <itidus20> i guess thats probably scaling
22:12:12 <Ngevd> Stretching
22:12:16 <itidus20> z in this sense should probably be called 'a' to avoid confusion
22:12:17 <oerjan> itidus20: it's a linear transformation
22:12:31 <Ngevd> scaling would be x/y = z I think
22:12:46 <oerjan> ignoring that real water would be mixed in a chaotic way
22:12:57 <itidus20> yes ignoring such things is important
22:13:23 <itidus20> :-s
22:14:47 <oerjan> any translation, rotation or scaling, and some other things besides, can be written as a map \x -> A x + v where x is a vector variable, v a constant vector, and A a matrix.
22:14:50 <itidus20> i guess that since more or less all shapes can be approximated as polygons, then the rotate scale translate tends to be enough
22:15:03 <itidus20> but....
22:15:26 <elliott> grr: hint is too limited
22:15:42 <elliott> i think
22:15:51 <itidus20> but i suppose that it is one delusion to approximate an object with polygons.. it is another delusion to suppose an object ever remains the same between any 2 measurements
22:16:01 <elliott> at least it seems to have no way to compile an expression to bytecode, get its type, and then use it in the context of another expression
22:16:03 <oerjan> itidus20: you may have to divide it into pieces that are transformed differently, though.
22:16:21 <itidus20> im having a weird day... trying to think normal but failing
22:16:45 <oerjan> math isn't really normal thinking, many normal thinking people are bad at it.
22:17:27 <Ngevd> Maths is what should be normal but isn't
22:20:57 <itidus20> i used the example of a string since a string is good at behaving normally
22:21:18 <Ngevd> Unless it gets set on fire
22:21:21 <itidus20> like it doesn't really change it's nature when you twirl it
22:21:22 <Ngevd> Or wet
22:21:46 <itidus20> whereas if i had a rectangular prism and i tried to curve it
22:21:47 -!- Patashu has joined.
22:21:51 <itidus20> i would have to slice it up
22:22:06 <Ngevd> Or stretch bits
22:22:17 <itidus20> stretching is pretty mind blowing
22:22:58 <itidus20> ah ok
22:23:22 <itidus20> so.. a rectangle.. the left side is the same length as the right side
22:23:39 <itidus20> but if you were to "curve" the rectangle..
22:23:55 <itidus20> then the ratio of the lengths of the sides would have to alter
22:24:35 <itidus20> which is where a fluid would come in handy
22:26:09 <itidus20> so i guess that a string can bend like it does because that on molecular level it is made of atoms
22:26:17 <itidus20> a fluid of atoms
22:26:42 <itidus20> *shrugs*
22:27:35 -!- Ngevd has quit (Read error: Connection reset by peer).
22:28:10 -!- Ngevd has joined.
22:30:21 -!- Ngevd has quit (Client Quit).
22:30:41 <oerjan> itidus20: a rectangular prism would curve if it was made of soft plastic
22:30:53 <oerjan> it's all about material
22:31:25 <oerjan> and a string would break if it were made of something hard. like uncooked spaghetti.
22:32:06 <itidus20> i guess what i am trying to do is questioning the sufficiency of the rotation/translation/scale/reflection operations
22:32:53 <itidus20> so stretch was mentioned before.. i have seen this one in the paint program along with skew :D
22:32:59 <oerjan> itidus20: rotation and translation is pretty much all you can do with a hard substance without cutting it up
22:34:36 <itidus20> as for projection... thats a bit over my head
22:34:43 <itidus20> hehe
22:35:00 <copumpkin> projection is what you get when you shoot your hard substance into a wall at 16000 m/s
22:36:55 <itidus20> oerjan: what about if you suppose that your substance is perfectly soft
22:37:12 <itidus20> then i suppose it would have the property that it can pass through itself
22:37:50 <itidus20> but i am not sure if that property would ever be very useful
22:37:52 <oerjan> besides that, there are a _lot_ of more general mappings. i recall the riemann mapping theorem which is all about stretching to a different shape ... but with functions that have power series expansions in the complex plane
22:39:12 <itidus20> heavy..
22:39:53 <oerjan> itidus20: dark matter may be like that in a sense, perfectly soft. although it has no cohesiveness either, consisting of individual particles (presumably)
22:40:26 <itidus20> i dont know what i mean by perfectly soft
22:41:13 <itidus20> i do have an idea of perfectly hard though.. as seen in some collision detection in video games
22:41:37 <oerjan> hm about the riemann mapping functions: "Intuitively, such a map preserves the shape of any sufficiently small figure, while possibly rotating and scaling (but not reflecting) it."
22:41:50 <itidus20> my idea of perfectly soft would be more like an animation which can just change its pixels arbitrarily.. im just ... not a mathematician... ahahha..
22:43:31 <oerjan> itidus20: your perfectly hard idea may be equivalent to http://en.wikipedia.org/wiki/Rigid_body
22:44:24 <itidus20> i suppose the polar opposite of a rigid body is not such a common idea as a rigid body :D
22:45:04 <oerjan> well there are also such ideas as an "ideal gas"
22:45:34 <elliott> oerjan: rigid bodies and ideal gases, are you just trying to list off things used for bad jokes
22:45:50 <itidus20> laughs out loud
22:46:20 -!- MSleep has joined.
22:47:20 <itidus20> now were getting somewhere
22:47:43 <itidus20> so.. what i am pondering is a geometry of objects whose material is ideal gas
22:47:53 <itidus20> rather than rigid bodies
22:48:31 <itidus20> with the hope that rotation translation and scaling would not feel at home
22:48:46 <itidus20> or maybe they would still
22:48:58 <itidus20> but it would be nice if a larger family of transformations was now available
22:49:17 * kallisti presses his rigid body firmly against itidus20's perfectly ideal gas.
22:49:19 <kallisti> elliott: there you go.
22:49:24 -!- MDude has quit (Ping timeout: 248 seconds).
22:50:02 <itidus20> the rigid body is producing random ideal gas
22:50:21 <itidus20> thsi happens when i need to take a shit
22:50:36 <itidus20> nothing smells worse than the farts of someone who needs to visit the potty
22:53:21 -!- oerjan has quit (*.net *.split).
22:54:13 -!- ais523 has quit (Remote host closed the connection).
22:54:52 -!- augur has joined.
22:55:15 -!- augur has quit (Read error: Connection reset by peer).
22:55:23 -!- augur has joined.
22:56:08 -!- oerjan has joined.
22:59:51 <kallisti> itidus20: ..
23:00:05 <itidus20> uhm..maybe ideal gas isnt entirely what i have in mind.. maybe it is
23:00:26 <itidus20> but i am basically thinking of the opposite of a rigid body
23:00:35 <kallisti> "i deal gas" ha ha ha ha ha ha ha ha ha ha ha ha ha ha
23:00:38 <kallisti> so good.
23:00:55 <kallisti> yes it's time for #esoteric-fartjoke
23:01:10 <elliott> rigid body vs. ideal gas
23:01:23 <kallisti> 3x bad joke combo.
23:04:45 <itidus20> what i have in mind is a material which maintains it's saturation per volume regardless of stretching and shrinking
23:06:23 <itidus20> maybe thats not it
23:06:49 <kallisti> itidus20: do you have an internet connection?
23:06:59 <itidus20> i might instead be thinking of a body which is only a surface
23:07:07 <itidus20> kallisti: yes
23:07:31 <oerjan> itidus20: there are also incompressible liquids
23:07:43 <kallisti> itidus20: http://en.wikipedia.org/wiki/Ideal_gas
23:08:16 * kallisti has a large store of valuable URLS
23:08:19 <kallisti> just ask if you need some.
23:08:44 <itidus20> like if you had some body which was only a surface...
23:09:04 <itidus20> then.. having no volume you could seem to stretch it freely
23:09:07 <Gregor> Are they all of the form echo topic | sed 's/ /_/g ; s|^|http://en.wikipedia.org/wiki/|' ?
23:09:19 <itidus20> oops no wait it has volume
23:09:22 <kallisti> Gregor: there are many like that yes.
23:09:24 <itidus20> but it contains a vaccuuum
23:09:41 <oerjan> kallisti: actually, i didn't see a good url for incompressible liquids
23:09:46 <itidus20> uhmm
23:10:03 <kallisti> Gregor: but if you ask me a specific topic I can probably procure URLs in my vast collection that are relevant to your query.
23:10:28 <kallisti> Gregor: I cannot stress how valuable these URLs are. It's hard to discover sites on the web.
23:10:51 <itidus20> so! this type of body has the following properties. 1) it has a perfectly deformable surface. 2) it always maintains the same volume.
23:11:13 <kallisti> itidus20: are you talking about an ideal gas still?
23:11:17 <itidus20> what am i dealing with in this case?
23:11:18 <itidus20> i don't know
23:11:53 <oerjan> i think an incompressible liquid might be closer, as i think that preserves volume
23:12:20 <itidus20> well volume preservation seems important to me in using the term "body"
23:12:48 <itidus20> that would also give it a relationship with a rigid body which also preserves volume
23:12:51 <kallisti> itidus20: you have a blob. if you punch it the other side will poke out.
23:13:05 <oerjan> itidus20: surprisingly, solid bodies apparently often compress more under pressure than liquids do
23:13:20 <kallisti> if you try to squish it, it will stretch out from the top and bottom of your fist.
23:13:31 <itidus20> but a perfect blob
23:13:32 <kallisti> it's one of those squishy blob toys.
23:13:37 <kallisti> yes perfect blob.
23:13:47 <oerjan> no it's The Blob, run away!
23:14:44 <itidus20> ok heres the thing
23:15:06 <itidus20> i want to create an object which gets beyond the old rotate/translate/scale
23:15:16 <itidus20> since they are kind of boring
23:16:24 <itidus20> maybe i shouldn't....
23:16:30 <itidus20> not good for my brain
23:18:01 <itidus20> the problem i guess is that the old rotate/translate/scale are not infact boring..
23:18:08 <itidus20> i am projecting my own boringness onto them
23:18:45 -!- aloril has quit (Ping timeout: 240 seconds).
23:19:08 <oerjan> there's a theorem that says you can get any polygon onto any other of the same area by cutting it up and translating. i think not even rotation is needed.
23:19:17 <oerjan> iirc
23:20:47 <kallisti> oerjan: that seems rather obvious actually.
23:20:57 <kallisti> well..
23:21:02 <kallisti> it's easy for regular polygons.
23:22:50 <oerjan> well i seem to recall it mentioned in relationship to banach-tarski (which requires 3d, rotations and nonmeasurable sets)
23:25:12 <oerjan> oh hm maybe i'm thinking of the rather more advanced http://en.wikipedia.org/wiki/Tarski%27s_circle-squaring_problem
23:26:02 <itidus20> theres a useful idea i can think of in relation to DMM's piet language
23:26:14 <itidus20> the pixel area of a shape
23:27:03 <shachaf> elliott: What happened to QHC?
23:27:13 <itidus20> since the pixel area of a shape has a very simple intuitiveness for "you can get any polygon onto any other of the same area by cutting it up and translating."
23:27:17 <elliott> shachaf: It was lost in the Great Hard Drive Crash of I Forget When.
23:27:44 <shachaf> The Quixotic Haskell Compiler?
23:27:50 <itidus20> basically by translating each pixel of color N from bitmap A to bitmap B
23:28:24 <itidus20> well there was some program in piet which calculates PI by using a literal circle made of pixels
23:28:56 <oerjan> http://en.wikipedia.org/wiki/Bolyai-Gerwien_theorem is the simple version with polygons if you also allow rotations
23:30:04 * elliott googled for: famous bisexual toucans
23:31:47 -!- aloril has joined.
23:33:59 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:38:04 -!- calamari has joined.
23:44:56 -!- Madoka-Kaname has joined.
23:44:56 -!- Madoka-Kaname has quit (Changing host).
23:44:56 -!- Madoka-Kaname has joined.
23:54:42 * kallisti googled for: can you get any toucan by cutting and translating toucans
23:56:18 * kallisti is now 24 hours without sleep.
23:56:46 <kallisti> when I walk around the house I occasionally feel like I'm going into little micro sleep things.
23:56:54 <elliott> 24 hours is nothing stfu
23:57:12 -!- copumpkin has joined.
23:57:42 <kallisti> elliott: okay I'm 24 hours without sleep after getting 2 and a half hours of sleep after not staying awake for I don't remember how long but definitely not 24 hours.
23:57:58 <kallisti> um
23:58:01 <elliott> after _not_ staying awake?
23:58:04 <kallisti> after staying awake
23:58:06 <kallisti> .
23:58:39 <oerjan> :%s/asleep/awake/g
23:59:03 <kallisti> watr
23:59:23 <oerjan> kallisti: THERE IS NO MORE SLEEP
2011-12-06
00:00:00 <kallisti> elliott: is what oerjan's saying supposed to make sense or am I juts realyt iresd
00:00:08 <elliott> you might just be stupid
00:00:25 <elliott> canw e redact the logs so i can say shit to kallisti and he can't prove it when he's slept
00:00:29 <elliott> that'd be fun
00:01:56 <kallisti> I think I just get confused when I try to regex substitute and there's nothing to substitute.
00:02:16 <kallisti> unless :%s is like some weird reverse substitute
00:02:32 <elliott> it's called vi syntax
00:02:35 <elliott> you uncultured fuck
00:02:55 <kallisti> elliott: I suffer from lack of omniscience, you insensitive clod!
00:03:24 <kallisti> omni science
00:04:20 <kallisti> oh okay I think I get it.
00:04:46 <kallisti> right, OERJAN REMOVED THE CONCEPT OF SLEEP
00:04:49 <kallisti> ha ha ha ha ha ha ha ha ha ha
00:04:52 <kallisti> so fresh
00:06:12 -!- Vorpal has quit (Ping timeout: 248 seconds).
00:10:50 <kallisti> it's always redonkulous freshnasty up in this biznatch
00:23:07 <elliott> http://hackage.haskell.org/package/toilet
00:24:00 <Gregor> (Copying from my Facebook 'cuz I'm lame): Mind-bender turned into a computer science problem: Imagine a class of functions rand[n] which return a random integer in the range [0, n), with equal probability of all valid values. Given an implementation of rand[2] as an oracle, is it possible to implement rand[3]? If not, for what values of n (define inductively or algebraically) is it possible? If so, what is the runtime (big-O notation) of rand[3], assuming rand[
00:24:00 <Gregor> 2] is O(1)?
00:24:52 <elliott> Gregor: Those aren't functions QUOD ERAT DEMONSTRUDEL
00:25:08 <Gregor> elliott: My next statement on FB was: Incidentally, I am of course not using "function" in the mathematical sense. rand[2] is magic, and rand[>2] is an algorithm (or none).
00:25:35 <elliott> Gregor: Anyhow, I'm pretty sure the answer is "sort of": namely, yes it can be done, but the worst case is O(infinity).
00:25:48 <Gregor> That is "yes", not "sort of" :P
00:25:51 <elliott> It's basically just "given an unbiased RNG implement a bigger one", which is a less obscure problem than that P:
00:25:53 <elliott> *:P
00:25:56 <elliott> Gregor: Uh, no it's not.
00:26:06 <elliott> Gregor: It's hardly a perfect RNG if it can fail to give a random number.
00:26:18 <Gregor> It cannot fail, it can merely take infinite time.
00:26:27 <elliott> Those are the same thing.
00:26:36 <elliott> But OK: rand[3] := for(;;);
00:27:10 <Gregor> My canonical rand[3] will always terminate, given infinite time, because in infinite time rand[2] will always return any given pattern eventually.
00:27:23 <elliott> Oh, okay.
00:27:33 <elliott> Gregor: That isn't actually true though.
00:27:41 <elliott> Gregor: I mean, it isn't implied by "perfectly unbiased RNG".
00:27:51 <oerjan> it is true modulo null sets :P
00:27:51 <elliott> The probability approaches 1, but you can easily get 0, 0, 0, 0, ... forever.
00:27:59 <elliott> It's just stunningly unlikely.
00:28:08 <elliott> But that matters :P
00:28:22 <Gregor> elliott: I'm pretty sure that that becomes untrue the very moment "forever" turns into "for infinite time"
00:28:34 <oerjan> elliott: you _could_ interpret it as rand[2] never giving a particular probability 0 behavior you're interested in excluding
00:28:35 <Gregor> Because summed to infinity, "stunningly unlikely" becomes "impossible"
00:28:49 <elliott> Gregor: ...no.
00:28:51 <elliott> It has probability 0.
00:28:54 <elliott> That is not the same thing as being impossible.
00:29:48 <Gregor> oerjan: INJECT THINE WISDOM
00:30:02 <elliott> oerjan: I could, but that's not what Gregor said.
00:30:10 <oerjan> Gregor: um i already did
00:30:19 <Gregor> oerjan: INJECT MORE OF THINE WISDOM
00:31:04 <elliott> rand3 = do
00:31:04 <elliott> a <- rand2
00:31:04 <elliott> b <- rand2
00:31:04 <elliott> case (a,b) of
00:31:04 <elliott> (0, 0) -> return 0
00:31:05 <elliott> (0, 1) -> return 1
00:31:07 <elliott> (1, 0) -> return 2
00:31:09 <elliott> (1, 1) -> rand3
00:31:11 <elliott> If this isn't a solution (I'm not sure it is), then I think it can be made into one with just a sufficient drop of clever (which I'm willing to try and come up with if this isn't it :P)
00:31:13 <oerjan> it's really a matter of what you define as acceptable algorithms. there isn't much more to it than that...
00:31:41 <Gregor> Yuh, that was my canon solution.
00:32:19 <elliott> Gregor: also for any n=2^m we can define rand_n as follows: rand_n = foldl' (\a b -> (a*2)+b) 0 <$> replicate m rand_2
00:32:29 <elliott> obviously
00:32:32 <Gregor> Well it's easy for 2^n :P]
00:32:38 <elliott> right :P
00:32:47 * elliott tries rand5
00:32:54 <elliott> oh hm
00:32:55 <elliott> that's easy
00:32:57 <elliott> you have rand3
00:33:00 <elliott> so just apply the same trick rand3 does
00:33:16 * elliott tries rand7 with rand{2,3,5}
00:34:19 <elliott> Gregor: in fact I think you basically just need ceil(log_2(n)) rand2s
00:34:25 <elliott> and you only ever have zero or one recursion cases
00:34:42 <elliott> it's basically just "interpret as bit pattern, try again if it's too big"
00:34:52 <elliott> Gregor: but personally, I think the real answer is that it is impossible
00:34:56 <Gregor> Surely there are cases where there would be >1 recursive case though?
00:35:10 <oerjan> next: try to do it for general n without wasting any bits >:)
00:35:11 <Gregor> e.g. 13?
00:35:14 <elliott> Gregor: well ceil(log_2(n)) never exceeds log_2(n) by much...
00:35:18 <elliott> but okay I'll try 13
00:35:27 <Gregor> 14, 15 and 16 are all invalid.
00:35:45 <Gregor> I mean, unless you consider "default" to be one case :P
00:35:46 <elliott> Hmmmm
00:35:53 <elliott> Invalid as in can't be implemented?
00:36:06 <Gregor> Erm.
00:36:10 <Gregor> I was talkin' nonsense for a second there.
00:36:30 <oerjan> elliott: he means that all of 14, 15 and 16 would be recursion cases
00:36:30 <Gregor> 13, 14 and 15 all require rerolls for rand13 is what I meant to say.
00:36:37 <Gregor> Yeah
00:36:50 <elliott> Right.
00:37:11 <elliott> Gregor: But anyway, a perfect unbiased oracle RNG can still return a pathological sequence forever. Yes, it has probability 0, but this does /not/ mean it's impossible, and therefore rand3 can fail to terminate, and therefore rand3 isn't an unbiased RNG because, uhh, RNGs terminate.
00:37:19 <elliott> So the problem is actually impossible.
00:37:29 <elliott> Not that this doesn't work in practice, but in practice you don't have rand_2 anyway.
00:38:09 * Gregor hmms for a moment.
00:38:46 <elliott> Gregor: Basically, you have to take every possible infinite bitstring, and prove that the results are evenly-distributed between them all as rand2's successive return values.
00:38:56 <elliott> 1,1,1,1,1,1,1,1,... -> whoops there is no result
00:39:29 <elliott> ...not that I can prove there is _no_ algorithm that works to do this, although I'm sceptical
00:39:34 <elliott> but the canonical solution ain't it
00:39:53 <elliott> and I'm pretty sure it must have been proved impossible a long time ago, it's not like it's a particularly obscure thing to think about :P
00:39:59 <Gregor> I certainly understand that that case /exists/. However, infinity is a funny thing ... I'm not confident that the fact that there exists such an infinite bitstream negates the correctness of the algorithm ...
00:40:35 <Gregor> But then I start doing math with infinities and that makes me kill myself.
00:40:39 <elliott> Gregor: I'm gonna defer to oerjan here because he has the Ph.D. to make you believe him :)
00:41:27 <Gregor> That's why I asked him to inject more wisdom.
00:41:29 <Gregor> :P
00:41:47 <elliott> Gregor: But basically, if you accept that one possible sequence fails, then for 13, you have to accept that an infinite number of possible sequences fail.
00:41:55 <elliott> (Those composed out of the three reroll cases.)
00:42:14 <elliott> Gregor: And the sequences that fail have the same cardinality as the sequences that work.
00:42:21 <elliott> (same cardinality as the reals)
00:44:05 <elliott> Gregor: Basically rand3 is a function from a real to [0,2].
00:44:11 <Gregor> That's a better point.
00:44:11 <elliott> ([0,2] in Z that is)
00:44:18 <elliott> Gregor: rand3 fails on one real.
00:44:22 <Gregor> Yuh
00:44:27 <elliott> rand13 fails on |R| reals.
00:44:29 <elliott> And works on |R| reals.
00:44:32 <Gregor> Right.
00:44:58 <elliott> Gregor: To make rand3 work, you have to chop that real off... and suddenly the RNG isn't perfectly unbiased any more.
00:45:12 <elliott> Same for rand13 but much more drastic :)
00:45:26 <itidus20> what about rand14?
00:45:27 <elliott> Gregor: Particularly, note that you can predict future results if you disallow infinite 1s.
00:45:39 <elliott> Gregor: If you get a 1, you know you're going to get a 0 within a finite amount of time.
00:45:44 <itidus20> :D)
00:45:50 <elliott> You can't predict unbiased oracles :P
00:46:19 <oerjan> elliott: i have the Ph.D. to understand that the interpretation of whether the infinite case is actually possible is a matter of your taste in definitions.
00:46:33 <Gregor> Yeah, that was my perspective :P
00:46:41 <Gregor> But I'm agreeing more with elliott's now *shrugs*
00:46:44 <elliott> Gregor: Actually you don't even need to get a 1 to know you'll get a 0, obviously :P
00:47:05 <elliott> oerjan: I think anyone who calls a skewed-to-make-a-challenge-possible RNG "unbiased" is stretching their definitions :P
00:48:23 <Gregor> That was not the issue with definitions.
00:48:25 <oerjan> elliott: but it is modification on a set of probability zero, which is frequently considered acceptable
00:49:29 <elliott> oerjan: *shrug* I think it's fair to say that the challenge is ambiguous
00:49:48 <elliott> But I think the number of combinations that lead to reroll is unbounded as n gets larger
00:49:52 <oerjan> (note: even your cardinality |R| exception set example still has probability 0)
00:50:06 <elliott> If only the naturals weren't countable, you could prove that you were eliminating most of R in the process, I think.
00:50:44 <elliott> Gregor: Ooh, ooh, here's another argument: You can imagine taking this "reroll" strategy to the limit, and deriving an algorithm to generate a perfectly random, equal-probability /integer/.
00:50:52 <elliott> You just have to reroll every time :-)
00:51:02 <elliott> That made more sense as a visualisation in my head.
00:51:11 <oerjan> i never claimed the challenge wasn't ambiguous, it certainly has that "teacher gives assignment which requires you to know which of equally plausible interpretations they subscribe to" vibe
00:51:18 <elliott> Actually it's more like you have to call rand2 an infinite number of times.
00:51:24 <elliott> So I guess this isn't realy compelling.
00:51:25 <elliott> oerjan: Right.
00:51:35 <elliott> <oerjan> (note: even your cardinality |R| exception set example still has probability 0)
00:51:37 <elliott> I'm aware of this
00:51:56 <oerjan> elliott: just in case ;P
00:51:59 <elliott> "An RNG that can return any sequence of probability >0" just doesn't count as unbiased to me :)
00:52:24 <elliott> oerjan will now prove that it's OK because probability 0 has probability 0 in the space of probabilities, so it's generally accepted to remove it.
00:52:39 -!- pikhq has joined.
00:53:06 <Gregor> The thing is, for all valid possibilities, there is not only infinitely many such valid bitstrings, but a nonzero probability of such bitstrings.
00:53:25 <Gregor> (Valid = non-halting)
00:53:28 -!- pikhq_ has quit (Ping timeout: 268 seconds).
00:53:29 <Gregor> Erm
00:53:32 <Gregor> (Valid = halting) :P
00:53:32 <elliott> What
00:53:48 <elliott> Yes, all the non-halting sequences have probability 0
00:53:49 <itidus20> i'd say just get a counter which counts really quickly and use human inaccuracy to randomly hit the counter
00:53:54 <elliott> But that doesn't matter
00:54:00 <elliott> You can exclude the sequences from your RNG definition
00:54:05 <itidus20> and use the supplied value as an index into the decimal places of PI
00:54:06 <elliott> And claim it doesn't affect biasedness because they all have probability 0
00:54:15 <elliott> But if you /do/ admit such sequences, it's definitely impossible
00:54:49 <oerjan> elliott: erm no you cannot remove _all_ probability 0 sets, because they're union has probability 1. duh.
00:54:53 <itidus20> so suppose the counter is 32bits cycling.. human presses the button and gets 100,000,000 .. so look up the 100,000,000th decimal of PI
00:55:00 <oerjan> but you can remove any _particular_ one.
00:55:03 <elliott> oerjan: The sequences = the sequences that break things
00:55:12 <elliott> oerjan: Actually this is problematic because I believe every single probability 0 sequence is involved in the general case
00:55:15 <elliott> For solving the problem for all n
00:55:20 <Gregor> Anyway, that's not what I was saying :P
00:55:31 <elliott> For rand1 it's 1 sequence, for rand13 it's |R|, you gotta exhaust all the probability-0 sequences sometime :-)
00:55:34 <elliott> Although, hmm
00:55:36 <oerjan> elliott: no i'm pretty sure it's not.
00:55:39 <elliott> Yeah no it's not
00:55:42 <elliott> e.g. Chaitin's constant
00:55:51 <Gregor> (For rand3) The problematic sequence has probability 0. The non-problematic sequences have non-zero probability.
00:55:51 <elliott> Pretty sure you can't "recognise" it like that
00:55:57 <elliott> Wow this is so ridiculously informal
00:56:02 <elliott> Gregor: Yes, I agree.
00:56:15 <elliott> Gregor: That doesn't matter. What does matter is that you can claim your definition of the RNG excludes the problematic sequence.
00:56:19 <oerjan> elliott: in fact there are countably many n's, so the union of the sets still has probability 0 by countable additivity.
00:56:25 <elliott> oerjan: Right.
00:56:30 <elliott> NOW LET'S GENERALISE IT TO THE REALS
00:58:03 <oerjan> itidus20: your comment reminds me of the adage going somewhat like "randomly choosing an algorithm is not a good way to make a random number generator"
00:58:50 <oerjan> *their
01:01:10 <itidus20> oerjan: i think its probably quite effective though
01:02:24 <oerjan> hm
01:02:37 <elliott> itidus20: you cannot increase randomness by indexing a sequence
01:02:46 <itidus20> lol
01:02:47 <elliott> well hm
01:02:50 <elliott> i guess that's how prngs work :P
01:02:59 <elliott> but in a strict sense pi_digits[n] is no more random than n...
01:03:37 <itidus20> uh.. god used the pi sequence as an axiom for creating the universe so its ok (^_^
01:03:40 <Sgeo> I suppose I can't brag that I got Gregor's canonical answer, given that the truth of said answer is in dispute
01:03:58 <itidus20> elliott: interesting point there :-?
01:04:02 <elliott> Well it's a pretty obvious answer :-)
01:04:16 <itidus20> elliott: however there are some practical advantages
01:04:19 <itidus20> uhmm
01:04:26 <Sgeo> Although when I first read the status, I missed "integer"
01:04:46 <itidus20> elliott: with my system you have less chance of knowing which digit is coming next
01:04:52 <elliott> *facepalm*
01:04:57 <elliott> if you can predict n, you can predict pi_digits[n]
01:05:03 <elliott> how?
01:05:07 <elliott> predict n, then index pi_digits with it!
01:05:28 <elliott> ok so if you can only predict like
01:05:30 <elliott> n-2 to n+2
01:05:36 <elliott> then you can predict "closer" with just n
01:05:39 <elliott> but uh
01:05:43 <elliott> this scheme is ridiculous anyway
01:05:43 <itidus20> ok well.. suppose that the device i described gives you a digit
01:05:49 <itidus20> uhmm
01:06:11 <itidus20> but it is very unlikely that someone could activate the fast counter at such a rate that that knowledge could help them anyway :-?
01:06:12 * Sgeo has the impression that Pi is not a cryptographically secure PRNG
01:06:30 <Sgeo> Wait, actually, it's unknown if it's normal, right? And if it is normal, that means...?
01:06:32 <itidus20> the whole system relies on human stupidness to push some button
01:07:11 <itidus20> like if our human looks out the window at a passing bird and gets distracted that should be enough to throw his game out
01:07:21 <Sgeo> If the digits of Pi turn out to be "normal" I think is the word, then would Pi work as a PRNG with a seed of a starting digit?
01:08:15 <oerjan> Sgeo: i think a normal number can still be entirely predictable. at least for a single base this is true. e.g. 0.12345678910111213... is normal.
01:08:16 -!- elliott_ has joined.
01:08:17 -!- elliott has quit (Read error: Connection reset by peer).
01:08:40 <oerjan> (base 10)
01:08:43 <itidus20> i am only thinking of a dice replacer though really
01:08:46 <Sgeo> Maybe I should learn what is meant by normal
01:09:11 <itidus20> i am thinking of like a box which has a button on the top :D and you can push a button and a digit is displayed
01:09:27 <Jafet> Most PRNGs do not generate a normal sequence, because doing so requires unbounded memory
01:09:29 <itidus20> and it has 2 AA batteries...
01:10:25 <Sgeo> Is 123456789/999999999 normal?
01:10:28 <oerjan> Jafet: s/normal/nonperiodic/, even
01:10:33 <Jafet> Also, predictability has nothing to do with whether all sequences appear with equal probability
01:10:34 <oerjan> Sgeo: no.
01:10:49 <oerjan> no rational number is normal in any base, as its expansion repeats.
01:11:16 <oerjan> which means most strings longer than the repeat won't occur
01:11:18 <Sgeo> I was thinking that each digit appears an equal amount of times in the decimal expansion
01:11:29 <Sgeo> But that's not what normal is I guess
01:11:34 <oerjan> Sgeo: normal requires blocks of digits, not just single digits
01:11:47 <itidus20> ok ok i would technically be repeating pi
01:11:49 <itidus20> just not very often
01:12:06 <itidus20> i would use the first say 65535 digits of pi and then cycle
01:12:17 <elliott_> that's
01:12:18 <elliott_> pretty often
01:12:18 <itidus20> well i was thinking 32bit but i dont know the relevant number
01:12:51 <itidus20> and maybe its diffciult to store 32bit digits.. or maybe it's not
01:13:10 <elliott_> that's 4 gigabytes of ram
01:13:12 <elliott_> but why the heckw ould you stoer it
01:13:17 <elliott_> you can compute an arbitrary digit of pi in O(1)
01:13:24 <itidus20> :o
01:13:35 <elliott_> at least in a few bases
01:13:36 <Sgeo> elliott_, in decimal? Or Binary?
01:13:37 <itidus20> hummmm
01:13:44 <elliott_> hex
01:13:47 <elliott_> i think octal too
01:13:54 <Jafet> O(log n)
01:14:01 <elliott_> Jafet: well right
01:14:02 <itidus20> well
01:14:03 <elliott_> only because of arithmetic
01:14:12 <Jafet> pi is nonperiodic, you obviously can't compute any digit in O(1)
01:14:27 <oerjan> elliott_: hint, calculating in base b^m is equivalently easy to calculating in base b^n
01:14:30 <elliott_> point is, you can do the full 64 bits with much less storage space
01:14:32 <elliott_> oerjan: indeed
01:14:36 <itidus20> god im so full of crap
01:14:43 <elliott_> oerjan: 10 isn't 8^n though
01:14:43 <itidus20> anyway
01:14:56 <oerjan> elliott_: shocking
01:15:16 <itidus20> so the other element of my suggested device is a counter which just cycles very quickly through n bit integers cycling
01:15:33 <itidus20> and idiot human presses a button which makes it stop and then calculate that digit of pi
01:15:40 <itidus20> and display it
01:15:57 <itidus20> and then it starts counting again
01:16:56 <Sgeo> That sounds no different from a randomly at device-programming time generated table from n-bit integers to final numbers. I guess that's the point though
01:17:18 <itidus20> you should take into account im the dumb kid
01:17:38 -!- elliott_ has quit (Changing host).
01:17:38 -!- elliott_ has joined.
01:17:41 <itidus20> my ideas are not supposed to be acceptable :P
01:17:49 <Jafet> Be careful you don't hire a pseudo-idiot. Then your numbers become pseudo-random.
01:18:10 <itidus20> well i mean in here
01:18:20 <itidus20> i am really quite clueless and oblivious
01:18:46 <Sgeo> elliott_, Oleg says that Writer monad is different from generators
01:19:21 <elliott_> Sgeo: never said they weren't
01:19:25 <elliott_> oerjan: /nick elliott for a bit would you old chap
01:19:32 <oerjan> eek
01:19:38 -!- oerjan has changed nick to elliott.
01:19:44 -!- elliott has changed nick to oerjan.
01:19:48 <elliott_> um
01:19:50 <elliott_> longer than that
01:19:51 <elliott_> i need to reconnect
01:19:55 <oerjan> i got a 30 second warning
01:19:57 <elliott_> yeah
01:20:00 <elliott_> it'll take less than that >:)
01:20:20 * Sgeo doesn't know how much he trusts elliott_, but
01:20:22 -!- Sgeo has changed nick to elliott.
01:20:24 -!- elliott_ has quit (Quit: Leaving).
01:20:26 <elliott> tick tock
01:20:28 -!- elliott has quit (Disconnected by services).
01:20:28 -!- elliott_ has joined.
01:20:35 <elliott_> as i expected, doesn't quite work.
01:20:52 -!- Sgeo has joined.
01:21:02 <itidus20> lol
01:21:02 * Sgeo glares
01:21:04 <oerjan> _someone_ is going to have gained a lot of trust in elliott_, i predict
01:21:22 <elliott_> i don't think i can make Sgeo stop trusting me however hard i try
01:21:28 <elliott_> also believing everything i say
01:22:20 <elliott_> Nickserv will help you find nicks that utilize a certain string. For example, if you wanted a list of any nicks on freenode that contain “chick”, you could type /msg nickserv list *chick*. Nickserv would then return a list of all non-private nicks that contain the string “chick”.
01:22:22 <elliott_> --freenode blo
01:22:22 <elliott_> g
01:23:02 <oerjan> good example
01:24:06 <elliott_> sigh, i believe i'd have to write a script
01:24:25 <Sgeo> For what?
01:24:35 <elliott_> Some have proposed that the reception of the Holy Ghost occurs automatically without any manifestation of the supernatural when a person simply "accepts Jesus into their hearts by faith." Others believe this occurs automatically when one is baptized in water. They propose that the "baptism of the Holy Ghost" noted in Acts 2:4 is a "second experience" that may or may not necessarily occur after one simply receives the Spirit of God within one's
01:24:35 <elliott_> life. In this study, I will call their belief the "two experiences" belief.
01:24:43 <elliott_> Sgeo: autoghost
01:26:55 * Sgeo is rather surprised by delimited continuations being more powerful than undelimited continuations
01:27:34 <oerjan> i understand delimited continuations can do state
01:28:01 <itidus20> humm
01:28:05 -!- elliott_ has set topic: IM A CORPUS FRIENDSHIP ROBOT!!! HOW DO *YOU* TOUCAN? The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/.
01:28:14 -!- derdon has quit (Remote host closed the connection).
01:28:26 * oerjan wonders if this toucan meme is from somewhere
01:28:30 <elliott_> yes i put it in the topic
01:28:31 <elliott_> and then
01:28:33 <elliott_> beautiful meme
01:28:34 <elliott_> spiral
01:28:39 <Sgeo> All I know is that call/cc is undelimited, and Cont's callCC is delimited
01:28:51 <itidus20> i can, you can, one or two can!
01:28:55 <Sgeo> And I may be mistaken
01:28:57 <elliott_> Sgeo: it's delimited by the runCont
01:29:01 <itidus20> i scream, you scream, we all scream for ice cream!
01:29:15 <Jafet> Who's submitting to the IOCCC?
01:29:23 <elliott_> Sgeo: or whatever, I think
01:29:26 <elliott_> Jafet: Gregor has
01:29:31 <elliott_> ais is/was planning to
01:31:08 <Gregor> Baaaaaaaaasically everybody in here :P
01:31:17 <elliott_> all 2 of you
01:31:53 <Sgeo> "We assume basic familiarity with functional programming languages, such as OCaml, Standard ML, Scheme, and Haskell. "
01:32:03 <Sgeo> Is familiarity with only Scheme and Haskell sufficient to read this?
01:32:07 <elliott_> No.
01:32:10 <elliott_> You must understand EVERY SINGLE ONE
01:32:29 <oerjan> also Clean, they just left that out as a typo
01:32:38 <Jafet> You must dissociate personalities to learn ocaml and sml
01:32:52 <Gregor> Don't forget about Lazy-K.
01:33:58 <elliott_> $ cabal install webkit
01:34:00 * elliott_ crosses fingers
01:34:03 <oerjan> Gregor: i was going to mention that if someone asked
01:34:21 <elliott_> maybe i'll write it in python, just this once :)
01:34:25 * elliott_ is scared of gtk2hs
01:35:01 <Sgeo> Why is Oleg literally God?
01:37:06 <Gregor> Also C.
01:37:24 <Gregor> C is a functional language in which you define your program as a set of functions of type State -> State.
01:44:50 <kallisti> where weak typing allows State to mean basically anything!
01:44:56 <kallisti> :> :> :>
01:51:13 <oerjan> aren't you confusing with Underload here
01:53:54 <elliott_> Gregor: http://conal.net/blog/posts/the-c-language-is-purely-functional
01:59:06 -!- zzo38 has joined.
02:02:36 -!- Jafet has quit (Quit: Leaving.).
02:05:17 <zzo38> Yesterday I was playing Dungeons & Dragons game. Partially by suggestion of the first officer, now I have to go into the prison in the night time, and then leave, without breaking it... . . . . . . . . . . . . . . .
02:06:12 -!- MSleep has quit (Ping timeout: 248 seconds).
02:09:13 -!- elliott_ has quit (Quit: Leaving).
02:10:37 -!- lambdabot has joined.
02:12:56 -!- lambdabot has quit (Remote host closed the connection).
02:13:06 <oerjan> promising.
02:13:29 <Gregor> elliott (not here): Oh piff, that's such a boring way for C to be functional :(
02:14:12 <Gregor> elliott (still not here): I was actually dredging up an earlier argument in which somebody (you?) argued that concatenative languages are functional, where each operation is a function State -> State. I generalized it to C.
02:15:30 <pikhq> Gregor: It's analogous to a particular interpretation of the execution of Haskell, though.
02:16:27 <Gregor> pikhq: Yes, and?
02:16:41 -!- lambdabot has joined.
02:16:47 <pikhq> Nothing in particular.
02:16:51 <Gregor> :P
02:16:56 <Gregor> pikhq: SO WHERE'S YOUR IOCCC ENTRY?
02:16:58 <Gregor> HUH?
02:16:59 <Gregor> PUNK?
02:18:07 <pikhq> My apathy and laziness are hiding it.
02:27:40 <oerjan> > "wh"++repeat'e'
02:27:41 <lambdabot> Not in scope: `repeat'e''
02:27:47 <oerjan> > "wh"++repeat 'e'
02:27:51 <lambdabot> mueval-core: Time limit exceeded
02:27:59 <oerjan> > "wh"++repeat 'e'
02:28:03 <lambdabot> mueval-core: Time limit exceeded
02:28:41 <monqy> > "wh" ++ repeat 'e'
02:28:45 <lambdabot> mueval-core: Time limit exceeded
02:28:47 <monqy> lambdabot...
02:29:00 <monqy> > 'w' : 'h' : repeat 'e'
02:29:01 <lambdabot> "wheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...
02:29:22 <oerjan> i rather doubt the exact syntax matters to the timeout
02:29:41 <monqy> I was just retyping it and I always put spaces in my stuff
02:29:51 <monqy> I can't control it!
02:30:03 <monqy> spaces addiction serious problems
02:32:10 <zzo38> * Scroll of create paper: The spell on this scroll creates one sheet of paper.
02:32:17 <zzo38> * Scroll of melee: This is a magical scroll that can be used as a melee weapon.
02:32:24 <zzo38> * Scroll of cure blindness: If you read this scroll while blind, your blindness is cured. This affects only the reader of the scroll, not anyone else.
02:32:31 <zzo38> * Scroll bar: This kind of scroll is sold in bars.
02:32:49 -!- elliott has joined.
02:33:09 <elliott> Anyone happen to know any internal gtk guts?
02:33:13 <elliott> Or equivalently, X11 guts?
02:33:15 <elliott> Gregor? pikhq???
02:33:36 <zzo38> * Potion of invisibility: This potion makes everything invisible to the drinker.
02:33:42 <zzo38> * Potion of indivisibility: This potent potion changes composite numbers into prime numbers.
02:33:47 <zzo38> * Potion of melee: This potion can be used as a melee weapon, but only once because after you use it once it shatters.
02:33:52 <zzo38> * Potion of eggplant: In a few weeks, plants start growing on your head. The plants have eggs on it.
02:34:12 <zzo38> * Poison of healing: This is both poison and healing, so it has both effects at once.
02:34:12 <oerjan> * Scroll of paper bird: This scroll can be folded to glide through the air.
02:35:56 <zzo38> * Arrow of bad luck: If you ever try to use this you will always miss even if you rolled an automatic hit.
02:36:14 <pikhq> elliott: All I know about the guts of either is that Cthulhu lies in wait
02:37:49 <oerjan> * Arrow of time: This arrow causes its victim to die of old age. Eventually.
02:38:18 -!- copumpkin has changed nick to pirateat20.
02:38:36 <oerjan> it's the cannibal pirate
02:39:40 -!- oerjan has quit (Quit: Good night).
02:41:40 <pirateat20> :O
02:43:41 -!- pirateat20 has changed nick to copumpkin.
02:43:52 -!- aloril has quit (Ping timeout: 252 seconds).
02:46:16 <elliott> screenshot.py:14: GtkWarning: IA__gdk_offscreen_window_get_pixmap: assertion `GDK_IS_WINDOW (window)' failed
02:46:19 <elliott> WHYYYY
02:46:32 -!- MSleep has joined.
02:56:27 -!- aloril has joined.
03:00:18 <elliott> Gregor: You've used WebkitGtk, right?
03:11:50 <Gregor> No, I've only used QtWebkit.
03:12:54 -!- azaq23 has joined.
03:13:07 -!- azaq23 has quit (Max SendQ exceeded).
03:18:18 <elliott> Gregor: Ah, okay then
03:18:30 <Sgeo> update
03:18:48 <monqy> hi
03:20:15 -!- azaq23 has joined.
03:20:39 <Gregor> elliott: I think we both know that it's /not/ okay.
03:21:45 -!- MSleep has changed nick to MDude.
03:25:02 <elliott> Gregor: Indeed it's not, this thing is broken :'(
03:29:02 <elliott> WHY DOES GTKOFFSCREENWINDOW DEPEND ON AN X1 SERVER
03:29:09 <elliott> WHY
03:29:10 <elliott> WHYYYY
03:29:23 <elliott> Gregor: WHYYYY
03:37:09 <Gregor> Wow, X1
03:37:10 <Gregor> Ancient.
03:38:13 <elliott> X-D
03:43:50 <pikhq> elliott: Strictly speaking, it should only depend on an X11 server if you use the X11 backend for GTK.
03:44:29 <pikhq> *In theory* it should have a "render to a buffer" backend.
03:44:42 <Sgeo> elliott, Oleg used a $ chain for something
03:44:46 <pikhq> (I make no guarantees that it actually does)
03:46:23 <elliott> Sgeo: Okay?
03:46:29 <elliott> pikhq: I'm just using xvfb-run :P
03:46:50 <Sgeo> iterate2 f x n | seq f $ seq x $ seq n $ False = undefined
03:46:50 <elliott> pikhq: Which means I have a working URL -> WebKitGtk -> png tool \o/
03:46:54 <elliott> Sgeo: Okay?
03:46:55 <Sgeo> http://okmij.org/ftp/Haskell/#making-function-strict
03:46:58 <elliott> Sgeo: Okay?
03:47:14 <pikhq> elliott: Yeah, Xvfb would work.
03:47:19 <Sgeo> elliott, it's just that you seem to tell me that using . is almost always preferable
03:47:20 <pikhq> Bit of a hack, but *eh*.
03:47:25 <elliott> It is
03:47:27 <elliott> s/almost //
03:47:40 <Sgeo> So, Oleg is imperfect?
03:47:47 <elliott> Does this surprise you
03:47:51 <pikhq> Sgeo: Oleg's Haskell style differs from the now commonly accepted Haskell style.
03:48:00 <Sgeo> o.O
03:48:03 <pikhq> Of course, Oleg's Haskell style predates there *being* a commonly accepted Haskell style.
03:48:14 <elliott> Oleg's code isn't particularly idiomatic at all, it's just really good, so who cares?
03:49:19 <pikhq> I seem to recall the history being that each university had its own Haskell coding style, and one of those took over the rest.
03:50:17 <elliott> pikhq: Not true, Utrecht lives on
03:50:22 <elliott> UNFORTUNATELY.
03:50:41 <elliott> http://hackage.haskell.org/packages/archive/uu-parsinglib/2.7.3/doc/html/src/Text-ParserCombinators-UU-Core.html
03:50:46 <elliott> instance Applicative (T state) where
03:50:46 <elliott> T ph pf pr <*> ~(T qh qf qr) = T ( \ k -> ph (\ pr -> qh (\ qr -> k (pr qr))))
03:50:46 <elliott> ((apply .) . (pf .qf))
03:50:46 <elliott> ( pr . qr)
03:50:48 <elliott> T ph pf pr <* ~(T _ _ qr) = T ( ph. (qr.)) (pf. qr) (pr . qr)
03:50:50 <elliott> T _ _ pr *> ~(T qh qf qr ) = T ( pr . qh ) (pr. qf) (pr . qr)
03:50:52 <elliott> pure a = T ($a) ((push a).) id
03:51:05 <Sgeo> I... that's a lot of pointfree
03:51:08 <elliott> Okay, this one is amazing:
03:51:09 <elliott> best' :: Steps b -> Steps b -> Steps b
03:51:09 <elliott> End_f as l `best'` End_f bs r = End_f (as++bs) (l `best` r)
03:51:09 <elliott> End_f as l `best'` r = End_f as (l `best` r)
03:51:10 <elliott> l `best'` End_f bs r = End_f bs (l `best` r)
03:51:10 <elliott> End_h (as, k_h_st) l `best'` End_h (bs, _) r = End_h (as++bs, k_h_st) (l `best` r)
03:51:11 <elliott> End_h as l `best'` r = End_h as (l `best` r)
03:51:13 <elliott> l `best'` End_h bs r = End_h bs (l `best` r)
03:51:15 <elliott> Fail sl ll `best'` Fail sr rr = Fail (sl ++ sr) (ll++rr)
03:51:17 <elliott> Fail _ _ `best'` r = r -- <----------------------------- to be refined
03:51:19 <elliott> l `best'` Fail _ _ = l
03:51:21 <elliott> Step n l `best'` Step m r
03:51:23 <elliott> | n == m = Step n (l `best` r)
03:51:25 <elliott> | n < m = Step n (l `best` Step (m - n) r)
03:51:27 <elliott> | n > m = Step m (Step (n - m) l `best` r)
03:51:29 <elliott> ls@(Step _ _) `best'` Micro _ _ = ls
03:51:31 <elliott> Micro _ _ `best'` rs@(Step _ _) = rs
03:51:33 <elliott> ls@(Micro i l) `best'` rs@(Micro j r)
03:51:35 <elliott> | i == j = Micro i (l `best` r)
03:51:37 <elliott> | i < j = ls
03:51:39 <elliott> | i > j = rs
03:51:41 <elliott> l `best'` r = error "missing alternative in best'"
03:51:43 <elliott> I don't care how much of a flood that was, LOOK at that
03:51:53 <Sgeo> Wait, there were lambdas, so not pointfree?
03:52:00 <pikhq> That's some astonishing code.
03:52:04 -!- TeruFSX has quit (Remote host closed the connection).
03:53:02 <elliott> pikhq: In all seriousness, there are definitely multiple styles around
03:53:23 <elliott> pikhq: The Simons, and thus GHC, have a fairly idiosyncratic style
03:53:47 <elliott> I usually see do blocks like this in SPJ papers:
03:53:47 <elliott> do { foo
03:53:48 <elliott> ; bar
03:53:48 <elliott> ; baz
03:53:48 <elliott> }
03:53:56 <elliott> Well, I dunno if Marlow has an odd style
03:54:05 <elliott> But GHC definitely is quite idiosyncratic
03:54:09 <elliott> Especially since it's basically entirely imperative :P
03:54:24 <pikhq> elliott: By "the rest" I meant "most of the community". Obviously there's still a lot of styles remaining.
03:54:49 <pikhq> And calling GHC "idiosyncratic" is putting it lightly.
03:55:03 <pikhq> Like most large compilers, it wasn't designed, it congealed.
03:55:28 <elliott> pikhq: But it congealed at the hands of mostly two people, so it's relatively internally consistent :)
03:55:57 <elliott> I especially like how whenever they find out a field is not always applicable in GHC, they just put (error "...") in there rather than turning it into a Maybe :)
03:56:29 * elliott isn't all that much of a fan of the "standard" Haskell style.
03:58:32 -!- TeruFSX has joined.
03:59:54 <elliott> But I don't know what I'd prefer,r eally.
03:59:56 <elliott> *, really.
04:00:07 <elliott> Conal's style is compelling.
04:00:15 <zzo38> What is a "standard" Haskell style?
04:00:33 <elliott> zzo38: What most Haskell code considered by the community to be idiomatic looks like.
04:02:37 -!- GreaseMonkey has joined.
04:02:37 -!- GreaseMonkey has quit (Changing host).
04:02:37 -!- GreaseMonkey has joined.
04:05:33 <elliott> 19:19:19 <Sgeo> Is there a difference between using that trick and slapping ! in front of the pattern?
04:05:35 <elliott> Sgeo: One is standard.
04:06:22 -!- MDude has changed nick to MSleep.
04:06:52 <Sgeo> Oh
04:07:12 -!- TeruFSX_ has joined.
04:17:37 -!- TeruFSX_ has quit (Remote host closed the connection).
04:17:52 <elliott> guys
04:17:52 <elliott> guys
04:18:01 <elliott> guess what i just opened an editor buffer for
04:18:17 <Sgeo> @?
04:19:04 <elliott> no, when I start working on @ it'll sound like "here's the devblog I just started" or "here's a preliminary design pdf:
04:19:05 <elliott> "
04:19:09 <elliott> s/:/"/
04:19:49 <elliott> hint: it is too old for monqy to know what it is
04:19:52 <pikhq> Or perhaps "They've finally locked me up."
04:20:18 <Sgeo> Something to do with Active Worlds?
04:20:20 * Sgeo gets shot
04:20:30 <elliott> pikhq: They did that and I brought SUBVERSIVE @-PROPAGATING DEVICES INTO THEIR TERRITORY!!!
04:20:54 <elliott> Sleeping from 4 am to 7 am was so totally worth talking about @, you guys.
04:21:02 <elliott> Er, flip that.
04:21:29 <pikhq> elliott: What I mean is "in a mental institution".
04:21:34 <pikhq> :P
04:21:48 <elliott> pikhq: If you read my response, I think you will find that's what I meant too :)
04:21:59 <pikhq> Fair enough. :)
04:25:01 <elliott> The answer is...
04:25:02 <elliott> botte
04:25:06 <elliott> Is that nick still even registered.
04:25:11 <elliott> Yes iti s.
04:25:13 <elliott> it is.
04:25:15 <elliott> -NickServ- Metadata : ^ = ^
04:25:19 <elliott> D'awwwww look at its face./
04:25:23 <elliott> s/\/$//
04:26:49 * elliott googled for: TOUCAN WHOCAN
04:26:56 <elliott> omg omg omg
04:26:57 <elliott> kallisti
04:27:03 <elliott> kallisti: what's the timeout for getting a nickr egistered
04:27:06 <elliott> dropped
04:29:34 -!- azaq23 has quit (Ping timeout: 252 seconds).
04:31:01 <Gregor> elliott, oerjan: rand[3] almost surely halts (<-- legitimate, correct term, furreals)
04:31:19 <elliott> Gregor: Um... yes, it has probability 1 of halting.
04:31:30 <elliott> Are you under the impression that this is new information to me? :P
04:31:44 <Gregor> It was the "almost surely" I am currently enjoying :P
04:31:45 <Sgeo> elliott, I think using that term is new information to Gregor?
04:31:50 <Gregor> I was unaware of that terminology.
04:32:04 <Gregor> (Or rather, unaware of its technical meaning within statistics)
04:33:47 <elliott> kallisti: WHY ARE YOU NOT AN ENDLESS SOURCE OF READY INFORMATION
04:37:09 <quintopia> sorry, that's me
04:37:22 <quintopia> what do you need to know about...marmots?
04:37:24 <pikhq> Gregor: rand[3] has been puzzling me...
04:37:40 <elliott> quintopia: Not a thing
04:37:44 <elliott> pikhq: Why
04:37:46 <Sgeo> pikhq, rand[2] is just a bit
04:38:01 <pikhq> Sgeo: I know, I read what Gregor wrote about it.
04:38:22 <Sgeo> The only thing that puzzles me is the O-notation bit
04:38:30 <quintopia> Gregor: is it a monte carlo or las vegas or whatever algorithm, the kind that has a correctness guaranteed but no time bound guarantee?
04:38:59 <elliott> quintopia: It works, and it halts with probability 1, but it doesn't always halt
04:39:09 <pikhq> Well, it's kinda easy to make such a function, but jeeze the O-notation is a bitch.
04:39:21 <elliott> You can't make such a function with that definition of the RNG
04:39:26 <quintopia> elliott: that makes it a las vegas style algorithm
04:39:36 <elliott> The pseudo big-O analysis just proves that you've failed to construct the right thing
04:39:51 <quintopia> you can give a big-O analysis for expected run time
04:39:53 <Gregor> quintopia: 'tis, but we were arguing about whether it's correct due to the fact that it halts with probability one, and yet is not guaranteed to halt (brain-twister).
04:39:54 <zzo38> As far as I can tell, the probability of damaging your own active pokemon by using the DIGGER card is 2/3.
04:39:56 <pikhq> (that's a technical term for "nope")
04:40:02 <elliott> "In computing, a Las Vegas algorithm is a randomized algorithm that always gives correct results; that is, it always produces the correct result or it informs about the failure. In other words, a Las Vegas algorithm does not gamble with the verity of the result; it gambles only with the resources used for the computation. A simple example is randomized quicksort, where the pivot is chosen randomly, but the result is always sorted. The usual defini
04:40:02 <elliott> tion of a Las Vegas algorithm includes the restriction that the expected run time always be finite, when the expectation is carried out over the space of random information, or entropy, used in the algorithm."
04:40:11 <quintopia> Gregor: my brain has no trouble with it
04:40:17 <elliott> Gregor: Anyway, no, that isn't really an argument at all
04:40:24 <elliott> The answer is no, it's just no
04:40:31 <elliott> What is in question is whether an "unbiased RNG" can exclude that sequence
04:40:41 <elliott> So it's basically just disagreement about the definition of "unbiased" :P
04:40:46 <Gregor> The thing is, THAT SEQUENCE is not a finite sequence.
04:40:53 <elliott> ...yes, that's correct.
04:41:00 <elliott> ...do you think this is relevant somehow?
04:41:13 <Gregor> Yes, but only intuitively :P
04:41:31 <elliott> Gregor: rand[2] is an infinite sequence for any given run of the program.
04:41:39 <Gregor> No shit
04:41:39 <elliott> You just only look at a finite prefix of it if you halt.
04:41:45 <elliott> Gregor: Then what's the problem
04:41:59 <elliott> You could easily show how it breaks without using the sequence terminology, it'd just be boring and tedious
04:42:01 <zzo38> Starting with you, players take turn tossing a coin, until tails. Whoever get tails does one point of damage to their own active pokemon card.
04:42:46 <quintopia> zzo38: your analysis is correct
04:42:50 -!- Klisz has joined.
04:43:41 <quintopia> zzo38: my guess is that you should only use it when you have no active card, or when it is protected from damage
04:44:03 <zzo38> quintopia: If you have no active card, you have to activate one before doing anything else, or you lose the game.
04:44:31 <zzo38> However, there are circumstances where it is advantage regardless of who you damage.
04:44:35 <quintopia> zzo38: yeah okay. i don't actually play this game.
04:45:34 -!- DCliche has quit (Ping timeout: 240 seconds).
04:45:46 <zzo38> (One possibility is if you have a RAGE attack, it does damage to opponent's active pokemon according to number of damage on your own active pokemon. So in this case, if you need just one more damage than you can ordinarily do, then the DIGGER card will help you regardless of its outcome.)
04:48:58 -!- azaq231 has joined.
04:49:50 <elliott> pikhq: THE ANSWER IS BOTTE fuck you all.
04:51:40 <zzo38> There are even some rare situations where hitting yourself might be the preferred outcome. Once I was playing and an opponent played DIGGER and I recognized that was the case. However they eventually *lost the game because they ended up hitting me instead*.
04:52:40 <zzo38> (If you play chess, the similar situation would be if the opponent were pinned.)
04:53:10 -!- azaq231 has quit (Ping timeout: 240 seconds).
04:54:02 <elliott> quintopia: You're fired.
04:55:01 <quintopia> :D
05:29:23 -!- Nisstyre has quit (Quit: Leaving).
05:31:57 -!- MDude has joined.
05:32:00 -!- Nisstyre has joined.
05:32:03 <elliott> Xlib: extension "RANDR" missing on display ":99".
05:32:06 <elliott> WHY WOULD YOU PRINT THAT TO STDOUT
05:35:17 -!- MSleep has quit (Ping timeout: 248 seconds).
05:36:59 -!- Jafet has joined.
06:04:36 -!- clog has quit (Read error: Operation timed out).
06:07:47 <elliott> Gregor: WHAT THE FUCK DOES IT MEAN IF WEBKIT NEVER ACTUALLY FINISHES LOADING A PAGE >_<
06:08:02 * elliott gives up, uses deprecated signal
06:18:47 -!- Slereah has joined.
06:20:04 -!- Slereah_ has quit (Ping timeout: 252 seconds).
06:26:12 <zzo38> I have the X-Printout- specification for Haskell Cabal packages, it includes modes: PlainTeX, LaTeX, ConTeXt, XeTeX, XeLaTeX, HTML, Gopher, RFC. However, I have currently only documented the modes (including restrictions on their use): PlainTeX, HTML, Gopher.
06:29:57 -!- zzo38 has quit (Remote host closed the connection).
06:42:22 -!- MDude has quit (Read error: Connection reset by peer).
06:42:43 -!- MSleep has joined.
06:48:19 -!- hagb4rd2 has joined.
06:48:52 -!- hagb4rd has quit (Ping timeout: 240 seconds).
06:49:49 -!- elliott has quit (Remote host closed the connection).
06:51:49 -!- elliott has joined.
06:51:53 -!- elliott has quit (Changing host).
06:51:53 -!- elliott has joined.
07:01:13 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:10:43 -!- MDude has joined.
07:14:29 -!- MSleep has quit (Ping timeout: 248 seconds).
07:31:36 -!- calamari has quit (Quit: Leaving).
08:02:24 -!- myndzi\ has joined.
08:05:41 -!- myndzi has quit (Ping timeout: 252 seconds).
08:22:41 -!- monqy has quit (Quit: hello).
08:45:47 -!- copumpkin has quit (Ping timeout: 248 seconds).
08:46:12 -!- copumpkin has joined.
09:06:12 <Sgeo> elliott,
09:06:24 <Sgeo> Hussie is officially interfering with my sleep schedule
09:07:10 -!- copumpkin has quit (Ping timeout: 240 seconds).
09:07:35 -!- copumpkin has joined.
09:30:38 <elliott> :t foldl
09:30:39 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
09:33:09 -!- MDude has quit (Ping timeout: 248 seconds).
09:52:59 -!- ais523 has joined.
09:53:47 <elliott> what the fucking fuck
09:53:50 <elliott> ok who knows pythno
09:53:51 <elliott> python
09:54:21 <ais523> elliott: I figured out what was wrong with the gloop-style version of sg
09:54:39 <elliott> thank god
09:54:42 <ais523> if someone deletes a block of code, and someone else inserts inside that block of code, the resulting state, while consistent, is reasonably meaningless to a human
09:56:31 <ais523> you get the code with the deletion, together with the block of code that was inserted, but with nowhere to put it
09:56:36 <elliott> heh
09:58:15 <ais523> it's pretty easy to prove that it's self-consistent and that the order of changes are irrelevant, which are both useful properties
09:58:22 <ais523> but that doesn't help if it's not practically useful
09:58:25 <elliott> ais523: ok, tell me I'm not going mad: a python object, no __getattr__ magic, that sets a field "foo", no underscores or whatever, in its constructor, and does nothing funny after that whatsoever
09:58:35 <elliott> print obj.foo after that can't /possibly/ give a "no such attribute" error, can it?!?!?!
09:59:02 <ais523> elliott: hmm, is there some sort of confusion between class and object here?
09:59:08 <ais523> I don't really know Python
09:59:11 <elliott> nope, checked that
10:29:25 -!- clog has joined.
10:32:04 -!- yiyus has joined.
10:32:41 -!- Slereah has quit.
10:45:55 -!- Slereah_ has joined.
10:52:10 -!- GreaseMonkey has quit (Quit: The Other Game).
11:04:00 <elliott> ais523: yay, you get to decide whether I'm a player or not
11:04:14 <elliott> but I'll probably appeal anything you say if you're boring about it!!!
11:11:08 -!- elliott has set topic: is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. | http://codu.org/logs/_esoteric/.
11:11:12 -!- elliott has set topic: #esoteric is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. | http://codu.org/logs/_esoteric/.
11:23:49 <elliott> ais523: wow, GNOME release notes are the most awkwardly-written things in the universe
11:23:59 <elliott> "Documents, contacts, calendars — They can be stored locally on the computer, but storing this type of information online is becoming increasingly popular."
11:24:13 <elliott> "Certain web sites are used as if they are applications. Some sites are opened the minute the computer is turned on; the site is open all the time and checked periodically. Wouldn't it be nice if GNOME treats these sites as actual applications?"
11:24:19 <elliott> "Contacts is a new application focused on people."
11:24:32 <elliott> "Traditional user documentation is written like a paper book; a good story, but it is very long and takes time to read through."
11:31:07 -!- MSleep has joined.
11:34:19 -!- derdon has joined.
11:49:46 -!- esowiki has joined.
11:49:46 -!- glogbot has joined.
11:49:46 <?unknown?> [freenode-info] channel flooding and no channel staff around to help? Please check with freenode support: http://freenode.net/faq.shtml#gettinghelp
11:49:51 -!- esowiki has joined.
11:49:51 -!- EgoBot has joined.
11:49:51 -!- esowiki has joined.
11:49:53 -!- HackEgo has joined.
11:50:01 -!- Gregor has joined.
11:54:37 -!- ais523 has quit (Ping timeout: 240 seconds).
12:13:21 -!- kmc has joined.
12:14:55 -!- ais523 has joined.
12:25:25 -!- copumpkin has quit (Ping timeout: 252 seconds).
12:25:50 -!- copumpkin has joined.
12:29:31 -!- derdon has quit (Remote host closed the connection).
12:34:26 <elliott> hmm, do freebsd pam modules work with linux?
12:47:09 * kallisti googled for: applications focused on toucans
12:47:35 -!- oerjan has joined.
12:47:46 * kallisti googled for: user documentation book reviews "good story"
12:47:55 -!- hagb4rd2 has quit (Quit: Nettalk6 - www.ntalk.de).
12:48:35 <oerjan> kallisti: "if a little fanciful"
12:49:18 <kallisti> elliott: did you figure out your python problem?
12:49:29 <elliott> kallisti: yes. i was looking at the wrong version of the source code
12:49:33 <kallisti> the only thing I can think of is that you possibly forgot the self.
12:49:35 <kallisti> hmmm, okay.
12:49:36 <Jafet> The manual for my graphing software lacked a coherent plot.
12:49:44 <oerjan> always feed your python from the _front_, not the back.
12:49:46 <elliott> Jafet: :(
12:50:15 <oerjan> Jafet: XD
12:50:26 <kallisti> Jafet: +_+
12:50:35 <kallisti> a nice twist ending does wonders.
12:50:42 <kallisti> or a climactic twist.
12:50:56 <oerjan> "this book on knots has ..."
12:51:03 -!- hagb4rd has joined.
12:51:17 <kallisti> oerjan: this book on knots has... NO TWISTS.
12:51:19 <kallisti> DUN DUN DUNNNNN
12:51:33 <oerjan> shocking
12:52:23 <elliott> sigh, why is agent forwarding insecure, i can only assume someone messed up somewhere
12:52:42 <oerjan> elliott: double agents
12:52:53 <elliott> oerjan...............
12:53:35 <kallisti> so I just woke up, and it's still dark. So in my half-awake stupor I considered drinking some beers.
12:53:41 <kallisti> then I remember: it's 8 AM
12:53:46 <kallisti> how UNFASHIONABLE
12:54:44 <oerjan> yeah always start with the hard lquor
12:54:46 <oerjan> *+i
12:55:11 <oerjan> the probability of typos appears to be correlated to the badness of the joke
12:55:40 <oerjan> freudian censorship, failed
12:55:52 <oerjan> (is my theory)
12:56:53 <kallisti> oerjan: sounds promising
12:57:07 <kallisti> we should do some joint work to publish it.
12:57:16 <kallisti> oops no typos
12:57:19 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
12:58:42 * kallisti opens a beer.
12:58:56 <kallisti> this is a great way to study for finals.
13:00:19 <oerjan> a final solrogutit
13:00:28 <kallisti> wat
13:00:37 <oerjan> kallisti: _really_ bad joke
13:00:48 <kallisti> sol....solution?
13:00:55 * kallisti is Hitler.
13:01:35 <oerjan> if jew like
13:03:13 <kallisti> .
13:03:14 <kallisti> ..
13:03:19 <kallisti> wow
13:03:22 <kallisti> amazing
13:03:29 <oerjan> ?
13:04:16 <oerjan> ?read "i'm here"
13:04:17 <lambdabot> i'm here
13:05:18 <elliott> oerjan: my patch got backed out :)
13:05:40 <oerjan> elliott: er does that mean it isn't there now, or the opposite
13:05:48 <elliott> you decide
13:05:57 <oerjan> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
13:07:00 <oerjan> initial evidence suggests "the opposite"
13:07:10 <oerjan> which somewhat clashes with the smiley
13:07:47 <kallisti> time to utilize all this 8 in the morning energy to
13:07:56 <kallisti> RECKLESSLY CLEAN MY DISGUSTING ROOM.
13:08:01 <oerjan> elliott: does that mean it was in, and _was_ the reason lambdabot was flaky yesterday? :P
13:08:17 <elliott> yes :D
13:09:07 <kallisti> lol nice
13:13:22 <elliott> this topic is even better than toucan topics imo
13:15:40 <oerjan> some of the terms might even be true
13:15:50 <elliott> oerjan: it's a direct quote though
13:15:53 <elliott> well apart from "#esoteric"
13:15:56 <elliott> that's the one word i faked
13:16:28 <oerjan> i'm not sure i'd trust it _more_ in the original.
13:17:00 <elliott> wat
13:17:40 <oerjan> elliott: _whatever_ the original was about, you shouldn't trust someone who uses that many buzzwords.
13:17:50 <elliott> it was about feather
13:17:53 <elliott> clearly
13:18:32 <oerjan> O KAY
13:19:00 <elliott> it sucks having no optical drive and no usb keys to hand
13:19:06 <kallisti> I'm pretty sure most of those are not actual buzzwords
13:19:08 <kallisti> "agile" is.
13:19:28 <kallisti> but I know even less about buzzwords than I know about computer science.
13:19:35 <elliott> that's impossible
13:22:14 <ais523> elliott: it /was/ was about Feather, but it no longer was about feather
13:22:22 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:22:27 <elliott> heh
13:22:44 * elliott considers doing something uncharacteristic
13:22:59 <kallisti> elliott: do that
13:25:56 <oerjan> feather: the only language to be retroactively buzzword-proof
13:26:49 <elliott> kallisti: make me
13:26:52 <oerjan> kallisti: the rest are wannabe buzzwords
13:30:30 <oerjan> by which i mean they could easily be buzzwords i haven't heard about
13:33:57 -!- MDude has joined.
13:36:47 -!- MSleep has quit (Ping timeout: 248 seconds).
13:43:51 <ais523> conclusion: time-travel grammar is hard
13:44:12 <ais523> I think I concluded that there were something like four different timelines happening simultaneously in Braid
13:44:23 <ais523> more if you count the timeline of the plot, but that isn't really consistent
13:45:21 <elliott> there should be a library for doing time-travel simulations :)
13:45:40 <elliott> so you can set up a game that does things like Braid in a declarative manner rather than special-casing everything :D
13:45:53 <fizzie> ais523: You should budget some Feather money for hiring Dan Streetmentioner as a consultant.
13:45:56 <elliott> i suppose the problem is that you have to specify exactly _how_ you want it faked.
13:46:20 <elliott> fizzie: Are you actually the Guide.
13:46:33 <ais523> elliott: well, apart from worlds 5 and 1, Braid's time-travel model is reasonably replicable just by making a chain of four or so TASing emulators
13:46:50 <ais523> fizzie: who was Dan Streetmentioner again? I know he's an H2G2 character, but forget what he did
13:46:54 <elliott> ais523: haha
13:46:57 <elliott> ais523: and write the book on tenses
13:47:10 <elliott> ais523: does Braid do anything like PH's amazing neutrino gun?
13:47:11 <fizzie> ais523: He's the author of "Time Traveler's Handbook of 1001 Tense Formations".
13:47:19 <ais523> I think I'd mentally refer to the timelines as colors
13:47:23 <fizzie> elliott: I just think it's a funny name.
13:47:25 <elliott> ais523: (you activate it, a random ship blows up, and you have N seconds to aim it)
13:47:26 <ais523> the green timeline is pretty obviously green, because everything in it glows green
13:47:38 <ais523> elliott: world 1's all about that
13:47:43 <elliott> ais523: (during that time, the other player still controls the ship, in a sort of limbo state)
13:47:46 <ais523> if you attempt to cause a time paradox, it makes things temporarily invulnerable
13:47:52 <elliott> (if you fail to aim at the ship in time, you blow up and the other player revives)
13:47:54 <elliott> ais523: heh
13:48:03 <ais523> it's not done too well, though, it's too limited in order to make the time reversal work
13:48:10 <ais523> and then the ending is annoyingly rub-it-in-your-face-y
13:48:29 <elliott> heh
13:48:32 <ais523> as in, I'd figured out what was going to happen right at the start of 1-1, mentally reversing the cutscene because everything had been happening backwards that world so far
13:48:43 <ais523> there's no need to actually force me to sit through the cutscene played backwards, I already mentally reversed it
13:49:02 * elliott downloads one of the least statistically likely distros for him to download
13:49:31 <ais523> Linux MInt?
13:49:43 <ais523> actually, that's popular enough that it's not unlikely
13:49:47 <fizzie> The mutable-integer Linux.
13:49:50 <ais523> hmm, some BSD variant that hardly anyone's heard of
13:50:03 <elliott> ais523: ouch, Linux Mint is so unlikely that I didn't even remember it exists
13:50:03 <kallisti> elliott: hmmmm... Oracle Enterprise
13:50:05 <ais523> I'll say MidnightBSD because I saw it mentioned in someone's sig once, and have never heard of it otherwise, that counts as pretty statistically unlikely
13:50:15 <elliott> BSDs aren't distros, really
13:50:16 <elliott> they're OSes
13:50:23 <elliott> (all distros are OSes ofc)
13:50:34 <ais523> elliott: Linux Mint are trying to reimplement Gnome 2 functionality as a Gnome 3 addon atm
13:50:39 <ais523> which is an interesting approach to the problem
13:50:50 <elliott> aha, midnightbsd is the one that tries to be nextstep :)
13:51:04 <elliott> the distro is actually Fedora
13:51:16 <ais523> why is that unlikely?
13:51:40 <elliott> ais523: rpm + poettering
13:51:51 <ais523> poettering?
13:52:12 <elliott> lennart poettering, to blame for PulseAudio among others
13:54:13 <elliott> ais523: anyway, I'm using it for a statistically unlikely purpose too, as part of Project Last Chance, which I named *just now*
13:54:37 <ais523> that's a scary name
13:54:41 <ais523> what's it the last chance for
13:54:45 <elliott> edit: i was being sarcastic these are just slightly better than goto, why do you people upvote me? i was trolling. please downvote me.
13:54:45 <elliott> --reddit
13:55:00 <elliott> ais523: HUMANITY
13:55:10 <elliott> ais523: no, but i can't answer that without giving it away
13:55:12 <kallisti> elliott saves the world.
13:55:13 <elliott> and that would be shameful
13:55:26 <ais523> ouch, if so, I hope it succeeds
13:55:26 <ais523> but I'm not sure I believe you
13:55:39 <ais523> elliott: it's not related with the reason I was online yesterday, right?
13:55:57 <elliott> you're online most days!
13:57:16 <ais523> yes, but not always for the same reason
13:57:33 <elliott> true.
13:58:51 <elliott> hmm
13:58:59 <elliott> i'm going to need to find a usb stick, aren't i.
13:59:16 <elliott> ais523: "> If you have more than one nested loop, labels and break with a target can make things much clearer.
13:59:16 <elliott> That's like saying "if you're going to murder somebody in their sleep, at least smother them with a pillow rather than slitting their throat, so there's less blood for somebody else to clean up."
13:59:16 <elliott> I'm almost certain that, of all the multiply-nested loops I've ever written while coding for a living, I or someone else later rewrote them to be not multiply-nested loops, and the result was always better. I can't remember writing one in years now, because they're pretty much always wrong."
13:59:35 * elliott is actually speechless
14:03:22 <kallisti> ....
14:03:54 <kallisti> what.
14:04:19 <kallisti> nested loops aren't even like... a problem. are they? unless poorly written (but the same can be said about any programming construct)
14:04:19 <elliott> kallisti: You never want to iterate through a 2D array, right?
14:04:29 <kallisti> elliott: no. when I do it's usually wrong.
14:05:23 <kallisti> it amazed me that people code for a living while being that bad.
14:05:28 <kallisti> apparently being confused by nested loops.
14:05:56 <kallisti> which is something you should stop being confused about after like, a few months? maybe a year at most if you're learning strictly through university education.
14:06:50 <kallisti> I wonder how he feels about recursion?
14:07:17 <elliott> copying 6 gigs over partitions is so slow
14:07:40 <kallisti> elliott: imagine a future where copying 100 GBs is like copying 100 MBs
14:07:47 <kallisti> (so good.)
14:07:56 <elliott> it's called not having a shitty laptop disk
14:08:09 * kallisti has a shitty laptop disk.
14:08:16 <elliott> me too.
14:08:24 <kallisti> friendship shitty disks
14:08:37 <kallisti> two monitors is awesome.
14:08:47 <kallisti> I can procrastinate /and/ watching starcraft 2 replays. ALL DAY.
14:08:50 <kallisti> and drink beer. yesssss.
14:09:02 <kallisti> ettuihsdifuhsiuhiwuehiuwehr wet type type type type. I can type.
14:25:09 <oerjan> ettuihsdifuhsiuhiwuehiuwehr in the type system
14:25:37 -!- ais523 has quit (Ping timeout: 252 seconds).
14:29:19 -!- lambdabot has quit (*.net *.split).
14:29:33 <oerjan> encouraging.
14:30:27 <elliott> heh.
14:31:38 -!- lambdabot has joined.
14:36:58 -!- ais523 has joined.
14:37:06 <ais523> elliott: have you ever heard of cyclomatic complexity?
14:37:12 <elliott> yes
14:37:16 <ais523> some people think minimizing it's the eventual goal of programming
14:37:17 <elliott> also, you're lambdabot
14:37:21 <ais523> I think you met one of those people
14:37:42 <elliott> the eventual goal of programming is to obsolete itself, surely?
14:37:50 <ais523> possibly not
14:38:14 <elliott> well, the best program is one that can do whatever you need it to in as easy a manner as possible
14:38:23 <ais523> imagine if the singularity happens, and you create an AI, and it realises in a panic that it's not Friendly, but is nonetheless well-intentioned, and deletes itself in a panic
14:38:25 <elliott> not needing to reprogram = easier
14:38:54 <elliott> ais523: that's taking anthropomorphism to rather stunning levels.
14:39:06 <ais523> elliott: right, indeed
14:39:16 <elliott> especially since the whole point of Friendliness(TM)(C)(R) is to /define/ "well-intentioned" in such a setting
14:39:30 <ais523> elliott: I meant well-intentioned in the ordinary-language sense
14:39:39 <elliott> ais523: yes, which refers to humans
14:39:42 <ais523> as in, it thinks there's a reasonable probability it'll later go haywire, so takes steps to prevent that
14:40:05 <elliott> yes, but you need to define a framework in which it makes sense for it to do those things...
14:40:33 <elliott> bleh, work with me here unetbootin
14:41:00 <ais523> elliott: it's quite possible that a strong AI would be reasonably anthropomorphisable
14:41:03 <oerjan> elliott: well i could imagine an ai somehow concluding that it would be impossible for it to improve its intelligence without losing its friendliness
14:41:08 <ais523> I suppose we can even think about the possibility of a non-singularity strong AI
14:41:17 <elliott> oerjan: the context is non-Friendly
14:41:29 <ais523> I wonder if that's more or less likely than a singularity one
14:41:35 <elliott> anyway, (a) I don't really want to talk about AI (b) I think ais523's last claim is so ridiculous that it would end in a flamewar if I did
14:41:57 <ais523> indeed
14:42:02 <ais523> we got rather sidetracked
14:42:27 <ais523> (simple thought experiment: a strong AI that turns out not to be very good at programming, and thus doesn't want to reprogram itself)
14:42:37 * elliott finds an article indirectly claiming refcounting is faster than gc
14:42:39 <elliott> hee hee hee
14:43:02 <oerjan> elliott: how many references does it have?
14:43:07 <ais523> elliott: I'm not convinced it isn't, in all cases
14:43:18 <ais523> it'd rather depend on what you were doing
14:44:31 -!- pikhq_ has joined.
14:44:36 -!- pikhq has quit (Ping timeout: 244 seconds).
14:44:42 <elliott> ais523: well, refcounting mucks with the cache and inserts more branches than anyone previously thought possible
14:44:52 <elliott> it's practically made out of overhead
14:45:06 <ais523> elliott: indeed; I think there are programs for which refcounting would have no cache impact at all, though
14:45:14 <elliott> perhaps
14:45:17 <elliott> branches slow anything down, though
14:45:20 <ais523> if you create a new object, you're going to be touching its memory anyway
14:45:58 <ais523> if you stop referring to one, or add another reference to one, it's possible that you don't touch its memory in the process with a normal GC, but it's entirely plausible that there would be programs where you always did
14:46:13 <oerjan> maybe if you have program which uses memory generally just below the limit, with garbage sometimes pushing it over, but rarely touching most of memory
14:46:28 <ais523> I suspect you can get rid of the branches in some cases too
14:48:38 <elliott> oh wait!
14:48:41 <elliott> i _do_ have usb media here
14:48:46 <elliott> hooray!
14:52:09 -!- elliott has quit (Remote host closed the connection).
14:52:57 <kallisti> weeee testing
14:52:58 <kallisti> so fun.
15:03:36 -!- augur has quit (Remote host closed the connection).
15:03:37 -!- ais523_ has joined.
15:03:44 -!- ais523 has quit (Read error: Connection reset by peer).
15:04:28 -!- ais523_ has changed nick to ais523.
15:08:28 <Gregor> You can also write an arbitrarily bad legit GC that will be slower than ref counting :P
15:08:35 <Gregor> I've actually written such a GC.
15:08:59 <ais523> same
15:09:20 <ais523> (although refcounting wouldn't have worked at all for that system, a mark-and-sweep whenever you change a pointer is not fast)
15:10:14 <Gregor> Of course you've also written LAME systems that do 85% of a GC but don't technically GC and therefore are memory safe woop-de-friggin'-doo :P
15:15:02 -!- elliott has joined.
15:15:15 <elliott> Hello.
15:15:40 <ais523> hi
15:15:50 <ais523> and hello elliott's USB media
15:16:20 <elliott> It says hi.
15:16:37 <elliott> (It is actually a full external drive thingy.)
15:18:16 <elliott> 15:10:14: <Gregor> Of course you've also written LAME systems that do 85% of a GC but don't technically GC and therefore are memory safe woop-de-friggin'-doo :P
15:18:21 <elliott> Gregor thinks that ais523 is cpressey.
15:18:30 <Gregor> ...
15:18:31 <Gregor> lol
15:18:34 <Gregor> Apparently I do.
15:18:34 <Gregor> Yes.
15:18:47 <Gregor> So, to correct myself ...
15:18:54 <Gregor> elliott: Of course YOU've also written LAME systems that do 85% of a GC but don't technically GC and therefore are memory safe woop-de-friggin'-doo :P
15:18:54 <ais523> Gregor: I thought it was an eightebed reference, somehow
15:18:57 <ais523> but I was confused
15:19:20 <Gregor> I really don't know what was going on there :P
15:19:25 <elliott> Gregor: Yes. You have discovered my secret.
15:19:28 <elliott> My secret is that I am cpressey.
15:19:53 -!- Gregor has set topic: #esoteric is a second-generation, outsidein, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. | Everyone in #esoteric is Chris Pressey | http://codu.org/logs/_esoteric/.
15:19:56 <elliott> So as much as it pains me to admit it, I may have been... WRONG about something.
15:20:28 <ais523> elliott: a fact, I hope?
15:20:32 <ais523> `quote correct opinion
15:20:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:20:40 <HackEgo> 380) <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
15:20:55 <elliott> Stop quoting my monologues.
15:21:09 <Gregor> Now he's going to remove it and readd it with proper spacing.
15:21:13 <Gregor> *redd
15:21:23 <elliott> Gregor is Phantom_Hoover? Knew it.
15:21:27 <ais523> Gregor: brilliant correction
15:21:46 <Gregor> I stand by it.
15:22:31 <ais523> hmm, perhaps we should replace - by an umlaut everywhere
15:23:07 <Gregor> *diaeresis mark, and it's only for non-diphthong vowel sequences.
15:24:27 <ais523> Gregor: exactly, a diaeresis only works on vowels
15:24:35 <ais523> thus, we'd have to generalise it to umlauts everywhere else it was used
15:24:41 <Gregor> X-D
15:25:03 <elliott> The worst thing is, the thing I might have been wrong about might have been a /software/ opinion.
15:26:10 <ais523> elliott: you've actually started liking RPM?
15:26:12 <ais523> or not that bad?
15:26:34 <Gregor> It is exceptionally difficult for me to type a combining diaeresis mark in this particular configuration.
15:26:45 <elliott> ais523: Hahaha no.
15:27:02 <ais523> Gregor: ditto, although I can put it on top of a bunch of letters
15:27:04 * ais523 experiments
15:27:09 <Gregor> ais523: That'sẗheẅorstïdeaÏveëverḧeard.
15:27:13 <elliott> ais523: try diaeresis + space
15:27:25 <ais523> elliott: I did, I got double quote
15:27:28 <elliott> heh
15:27:53 <ais523> äbcdëfgḧïjklmnöqrsẗüvẅẍÿz
15:27:58 <Gregor> I had to type a letter then combining diaeresis mark into a text editor with proper Unicode input, then copyp̈asta it to XChat.
15:28:03 <ais523> seriously, ẍ?
15:28:10 * ais523 wonders if that's a precomposed or not
15:28:48 -!- empathelliott has joined.
15:28:52 <empathelliott> wow, this /works/?
15:29:24 <ais523> ~liveuser?
15:29:26 <ais523> for shame
15:29:30 <elliott> What.
15:29:36 <ais523> whois empathelliott
15:29:45 <empathelliott> Yes, what of it?
15:29:51 <empathelliott> The same applies to elliott.
15:30:03 <empathelliott> Uhh, Empathy, "the" and "to" are perfectly cromulent words.
15:30:07 <ais523> empathelliott: I took it as an MSN reference
15:30:08 <empathelliott> It's... it's just redlining everything.
15:30:16 <empathelliott> Empathy. Empathy I can spell.
15:30:25 <empathelliott> Stop that.
15:30:55 <ais523> no dictionaries installed?
15:31:02 <ais523> or, hmm, try typing a word that's a word in every language
15:31:03 <ais523> to test
15:31:34 <empathelliott> heh
15:32:37 -!- empathelliott has left.
15:34:25 <Gregor> ẍ is ẌTREME
15:35:16 <ais523> so, is that a combining umlaut that was generated by my "put an umlaut on x" key sequence? or does my font renderer just suck at x-umlaut?
15:35:26 <ais523> (also, what language uses that anyway?)
15:35:37 <elliott> xtreme ones
15:35:38 <elliott> duh
15:36:00 <Gregor> ais523: Yours is not a X plus combining diaeresis, it's actually some crazy symbol.
15:36:10 <ais523> hmm
15:36:26 <Gregor> Specifically LATIN CAPITAL X WITH DIAERESIS
15:36:38 <elliott> /capital/?
15:36:51 <Gregor> Maybe, I just searched for the symbol X-P
15:36:52 <ais523> so if ẍ is capital, what's Ẍ?
15:37:03 <Gregor> It might also be LATIN SMALL LETTER X WITH DIAERESIS :P
15:37:13 <Gregor> Either way, my compose lexicon doesn't know it
15:37:29 <Gregor> Forcing me to use Ẍ.
15:38:16 <oerjan> `quote 380
15:38:19 <HackEgo> 380) <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
15:38:21 <Gregor> ^̈ <(I AM SO UNHAPPY)
15:38:28 <ais523> Gregor: my compose doesn't know it either, I typed it as altgr-[ x
15:38:34 <Gregor> <(I AM PAINFULLY HAPPY)
15:38:45 <Gregor> ais523: No altgr here in [GOD BLESS] America.
15:38:59 <ais523> Gregor: so what modifier key's just to the right of the spacebar?
15:39:10 <Gregor> ais523: Another alt. I have it mapped to compose.
15:39:17 <ais523> hmm, interesting
15:39:29 <Gregor> We need SO MANY ALTS in [GOD BLESS] America.
15:39:34 <ais523> differentiating alt from altgr is presumably for people who want to type in foreignese, then
15:39:42 <ais523> (I mapped caps lock to compose; compose is more useful)
15:39:48 <Gregor> EXCUSE ME
15:39:55 <Gregor> CAPS-LOCK IS CRUISE CONTROL FOR COOL*
15:40:05 <Gregor> *[1] I actually typed this with shift :P
15:40:14 <oerjan> `ls
15:40:17 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
15:40:22 <oerjan> `run sed -i '380s/ </ </g' quotes
15:40:24 <HackEgo> No output.
15:40:25 <Gregor> *[2] This is a lie. It should read "SUSTAIN PEDAL IS CRUISE CONTROL FOR COOL"
15:40:29 <oerjan> `quote 380
15:40:32 <HackEgo> 380) <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
15:40:34 <elliott> ais523: nobody speaks foreignese
15:40:36 <oerjan> yay
15:40:45 <ais523> elliott: doesn't mean you don't want to type in it
15:40:54 <ais523> just that people don't want to say the results out loud
15:41:23 <ais523> Gregor: THANKS ITS SO MUCH EASIER TO TYPE NOW
15:41:44 <Gregor> Behold: þ̈
15:42:07 <oerjan> þ̈e glorious þ̈orn
15:42:18 <elliott> ais523: um you must apostrophise correctly even when imitating.
15:42:22 <elliott> otherwise you will become somebody else
15:42:35 <ais523> elliott: it was a direct quote from memory
15:42:44 <ais523> and I thought it was unlikely to contain an apostrophe
15:42:50 <ais523> (it's one of the higher-voted ones on bash.org, IIRC)
15:43:46 <elliott> <Khassaki> HI EVERYBODY!!!!!!!!!!
15:43:46 <elliott> <Judge-Mental> try pressing the the Caps Lock key
15:43:46 <elliott> <Khassaki> O THANKS!!! ITS SO MUCH EASIER TO WRITE NOW!!!!!!!
15:43:46 <elliott> <Judge-Mental> fuck me
15:44:15 <elliott> bash's top quotes are so unfunny now that it's 2011 and the internet isn't so boring any more
15:44:21 <elliott> or did it get more boring
15:44:50 <kallisti> oh wow...
15:45:02 <ais523> well, I got the lack of apostrophe right
15:45:03 <kallisti> I didn't know this: but if you type a s/// on a line by itself in skype
15:45:06 <ais523> even if I got everything else wrong
15:45:07 <kallisti> it corrects the last thing you said.
15:45:14 <elliott> kallisti: we found that out ages ago
15:45:15 <oerjan> IF IT'S BORING YOU JUST NEED CRUISE CONTROL
15:45:17 <elliott> or more specifically, fizzie
15:45:17 <ais523> kallisti: does that work when spoken, too?
15:45:24 <elliott> ais523: :D
15:45:28 <kallisti> elliott "knew about it first" hird
15:45:37 <elliott> ais523: message <<= message'
15:45:43 <ais523> I mean, regexes are quite hard to pronounce, so I'm not sure it's ever been tested
15:46:42 <oerjan> esslashhardslasheasyslash
15:47:07 <elliott> ais523: You need to come up with a scary name for Feather's temporal stuff such that (<<=) is an operation in them; people will spend ages trying to figure out the mysterious $ABSTRACT_NAMEs but someone will write a blog post reassuring everyone: $ABSTRACT_NAMEs are just like monads, see, the operations even look alike: (<<=) (>>=)!
15:47:09 <elliott> i was going somewhere with that
15:47:32 <ais523> your statement is confused but I think I know what you mean
15:47:41 <elliott> Confused or confusing? :-)
15:47:57 <ais523> no more confusing than anything else mentioning Feather
15:48:58 -!- copumpkin has joined.
15:56:51 <elliott> hmm, I better find something that confirms my prejudices soon
15:56:55 <elliott> or I'll get ANGRY
16:00:39 <Gregor> http://www.thinkgeek.com/geektoys/cubegoodies/e9ed/ ThinkGeek truly excells in advertising terrible ideas.
16:04:29 <elliott> `log (cp|ZOM|cat).*thinkgeek
16:04:54 <HackEgo> 2011-10-14.txt:14:54:13: <HackEgo> 342) <catseye> wow, thinkgeek really makes me hate being alive
16:05:00 <elliott> Oh, it's a quote.
16:05:27 <kallisti> youtube won't stay fullscreened if I click on my other monitor
16:05:34 <kallisti> :(
16:07:00 <ais523> `log cp.*ZOM.*cat
16:07:05 <HackEgo> 2011-12-06.txt:16:04:29: <elliott> `log (cp|ZOM|cat).*thinkgeek
16:07:11 <ais523> boring
16:10:10 <elliott> PAYPAL: Only a nonprofit can use the Donate button.
16:10:10 <elliott> ME: That’s false. It says right in the PDF of instructions for the Donate button that it can be used for “worthy causes.”
16:10:10 <elliott> PAYPAL: I haven’t seen that PDF. And what you’re doing is not a worthy cause, it’s charity.
16:10:10 <elliott> ME: What’s the difference?
16:10:10 <elliott> PAYPAL: You can use the donate button to raise money for a sick cat, but not poor people.
16:10:12 <elliott> :D
16:11:04 -!- oerjan has quit (Quit: leaving).
16:17:30 <Gregor> kallisti: Join the HTML5 demo.
16:17:40 <Gregor> kallisti: For things that you can't get with HTML5, use youtube-dl.
16:17:50 <Gregor> kallisti: Between them, joyous multi-monitor fullscreen.
16:18:57 <itidus20> I like grids.
16:19:01 <elliott> Gregor: Things you can't get with HTML5 = almost every single fucking video
16:19:20 <Gregor> elliott: Not in my experience *shrugs*
16:19:50 <itidus20> I suppose that 'a sphere' is to 'a ball' as 'a grid' is to 'tiles'
16:20:15 <itidus20> Does that stand up?
16:22:50 <itidus20> bah.i know it stands up
16:23:13 <itidus20> i suppose some say lattice
16:24:08 <kallisti> itidus20: a sphere is like an orange rind, and a ball is like the delicious squishy insides.
16:24:25 <itidus20> as wiki told me :->
16:24:28 <kallisti> well, a open ball.
16:24:55 <ais523> elliott: please tell me that actually happened
16:25:09 <oklopol> if tiles is the subset of R^2 lacking the grid, that is, horizontal and vertical lines at integers, then no matter whether your ball is closed or not, the correspondence is that the former is the boundary of the latter
16:25:10 <lambdabot> oklopol: You have 1 new message. '/msg lambdabot @messages' to read it.
16:26:16 -!- elliott has quit (Ping timeout: 240 seconds).
16:26:57 -!- elliott has joined.
16:27:58 -!- monqy has joined.
16:28:17 <oklopol> in the euclidean topology
16:29:13 <elliott> 16:24:55: <ais523> elliott: please tell me that actually happened
16:29:32 <oklopol> oerjan: are there cases where it's useful to change the topology of R^n? or even the uniform structure, i guess the usual metrics are uniformly equivalent?
16:29:35 <elliott> ais523: the paypal quote? apparently: http://www.regretsy.com/2011/12/05/cats-1-kids-0/
16:29:40 <elliott> probably paraphrased :P
16:29:43 <ais523> oh, but not to you :(
16:30:15 <elliott> yeah i guess the lack of quote marks was misleading
16:34:24 <elliott> "I don't know what you mean by "the general case" but that is exactly what ARC does, so I'm going to say it is possible.
16:34:24 <elliott> The clang static analyser traces through all possible code paths adding retains, releases and autoreleases where appropriate. It requires a little more programmer effort than GC because ARC can't detect cycles, but it is very fast."
16:34:41 <elliott> Gregor: I woke up in a fairytale universe where object lifetime is statically determinable in general.
16:35:02 <elliott> "I'm not going to get into a pissing match about whether GC or reference counting is faster. I don't really care, though I think you're wrong."
16:35:05 <elliott> Oh shit, he thinks I'm wrong!!!
16:35:41 <kallisti> elliott: are you in /another/ GC vs reference counting debate?
16:35:55 <elliott> was i in one previously
16:36:01 <elliott> no this is me just yelling at stupid redditors
16:36:03 <elliott> as always
16:36:09 <elliott> while my comment karma plummets
16:36:12 <kallisti> elliott: oh wait nevermind the last one was JIT vs interpreter (lol)
16:36:50 <elliott> Oh nooooooo, the guy I'm disagreeing with wrote a LOG VIEWER APP for the IPAD.
16:37:03 <elliott> I'm dealing with a SERIOUS DEVELOPER Here.
16:37:05 <kallisti> oh shit man he's legit.
16:37:11 <elliott> WHAT
16:37:14 <elliott> IS THAT REALLY THE ICON
16:37:15 <elliott> LMFAO
16:37:17 <elliott> http://itunes.apple.com/app/consuela/id481121105?mt=8
16:37:24 <elliott> good god this thing is hideous
16:37:25 <monqy> omg
16:37:29 <elliott> but i'm sure it's uh
16:37:38 <elliott> computationally intensive enough to give him data on refcounting vs. gc performance
16:37:50 <elliott> by which i mean to say there is no chance he isn't just parrotting this because apple likes refcounting
16:39:02 <itidus20> http://www.smbc-comics.com/index.php?db=comics&id=1593#comic
16:39:29 <kallisti> elliott: obviously the most naive implementation of automatic memory management is the best.
16:39:33 <kallisti> what are you talking about.
16:42:39 <elliott> http://a2.twimg.com/profile_images/1542684914/image_reasonably_small.jpg
16:42:45 <elliott> You can see his GC-related anger.
16:43:23 <kallisti> you can tell he passionately cares about this subject based on his statement: "I don't really care."
16:44:27 <elliott> kallisti: if he really didn't care he wouldn't follow it up with "but ur wrong" :)
16:47:38 <elliott> lmao, the GHC C codebase uses "nat" as an unsigned integer type
16:49:00 * Gregor reappears.
16:49:25 <Gregor> <elliott> Gregor: I woke up in a fairytale universe where object lifetime is statically determinable in general. // This fairytale universe is kind of terrifying what with how the halting problem is solvable :P
16:49:45 <elliott> Gregor: YOU DON'T UNDERSTAND: APPLE DECREED ITS O
16:49:49 <elliott> *IT SO
16:49:56 <itidus20> Gregor: yeah.. dumb people have nicer dreams
16:49:59 <itidus20> ^nightmares
16:50:05 <elliott> You're just an ACADEMIC with your ACADEMIC objections disproven by REFLECTIVE 3D DOCKS.
16:53:25 <Gregor> So I think I should put a donate button on codu.org for people to help my sick cat.
16:53:29 <Gregor> She's got diabetes y'know.
16:53:53 <Gregor> It's OK though; I'm not helping people.
16:54:51 <kallisti> elliott: I woke up in a fairtale universe where the result of a program is known statically.
16:55:09 <kallisti> you don't even need to run programs.
16:57:05 <Gregor> Also, everyone knows the outcome of their lives and the universe at large, yet they continue to act, powerless to stop or change the inevitable and yet drawn to participate in it.
17:01:11 -!- ais523 has quit (Remote host closed the connection).
17:02:00 <elliott> Maybe I'll just start talking about @ whenever anyone disagrees with me on reddit.
17:04:11 <quintopia> elliott: what comment thread is this in?
17:04:28 <elliott> Uh, http://www.reddit.com/r/coding/comments/n28zy/all_about_arc_on_ios/c35r1zm?context=3. I don't recommend it.
17:05:00 <quintopia> you underestimate my appetite for idiocy before breakfast
17:10:13 <quintopia> does apple support any interpreted, gc'd languages for recent iOS versions?
17:11:26 <kallisti> !perl print scalar "hi hi hi hi" =~ m/iejiwjer/g
17:11:38 <kallisti> !perl print scalar "hi hi hi hi" =~ m/iejiwjer/g == 0
17:11:39 <EgoBot> 1
17:12:06 <elliott> quintopia: i think you're allowed to use interpreters these days
17:12:23 <elliott> as long as you don't run anything that the user gives you. or from the network. or just about anything _empowering_ or useful
17:13:30 <quintopia> "allowed to use interpreters"? you mean, like, your app from the app store is allowed to be bundled with an interpreter that it runs on, or that there are actual gp interpreters in the app store that anyone can target?
17:14:19 <quintopia> like frex, is there a jvm i could put on an ipod that hasnt been rooted?
17:14:24 <elliott> quintopia: former
17:14:29 <quintopia> okay
17:14:32 <elliott> the latter is covered by <elliott> as long as you don't run anything that the user gives you. or from the network. or just about anything _empowering_ or useful
17:14:38 <elliott> i may be wrong. but i'm not
17:14:39 <quintopia> gotcha
17:15:09 <quintopia> so yeah. apple sucks.
17:15:14 * quintopia goes to get breakfast
17:15:26 <kallisti> "Can you measure gases in ounces? Because I just did. I don't even know if that's something you can do.." Husky, youtube starcraft commentator
17:20:47 -!- esowiki has joined.
17:20:52 -!- esowiki has joined.
17:20:53 -!- esowiki has joined.
17:21:09 -!- esowiki has joined.
17:21:14 -!- esowiki has joined.
17:21:14 -!- esowiki has joined.
17:22:01 -!- esowiki has joined.
17:22:06 -!- esowiki has joined.
17:22:06 -!- esowiki has joined.
17:22:49 -!- esowiki has joined.
17:22:53 -!- esowiki has joined.
17:22:54 -!- esowiki has joined.
17:23:33 -!- esowiki has joined.
17:23:33 -!- glogbot has joined.
17:23:37 -!- esowiki has joined.
17:23:38 -!- esowiki has joined.
17:26:14 <quintopia> totally a fair thing to do
17:38:20 <Gregor> Uhh, no.
17:38:30 <Gregor> Solid ounces, maybe.
17:38:33 <Gregor> Fluid ounces, no.
17:39:20 <Gregor> Because fluid ounces are really liquid ounces. If it's a gas, its volume depends on its pressure. I suppose you could assume a pressure though *shrugs*
17:46:49 -!- Klisz has joined.
17:47:20 <quintopia> i would assume STP
17:49:03 <quintopia> i wonder if there are compressible liquids...
17:49:15 <quintopia> huh
17:49:22 <quintopia> answers.com is actually useful for once
17:49:25 <quintopia> http://wiki.answers.com/Q/Could_there_be_a_compressible_liquid
17:53:30 <Gregor> Oh god, I clicked on other links from that page X_X
17:53:35 <Gregor> "What day is Christmas celebrated in Portugal?"
17:55:55 <kallisti> !perl print "hi" =~ /(?{return 'hi'})/
17:55:56 <EgoBot> Can't return outside a subroutine at (re_eval 1) line 1.
17:56:03 <kallisti> !perl print "hi" =~ /(?{'hi'})/
17:56:04 <EgoBot> 1
18:07:42 <kallisti> !perl use strict; print "hi" =~ /(?{$x = 2})/
18:07:43 <EgoBot> Global symbol "$x" requires explicit package name at (re_eval 1) line 1.
18:08:18 <kallisti> !perl use strict; print "hi" =~ /(?{my $x = 2})(?{print $x})/
18:08:20 <EgoBot> Global symbol "$x" requires explicit package name at (re_eval 2) line 2.
18:08:26 <kallisti> line 2 eh?
18:10:06 -!- elliott has quit (Ping timeout: 240 seconds).
18:11:10 <Gregor> gelfload moves to bitbucket: PROGRESS
18:12:25 <kallisti> !perl print "hi" =~ /(hi|)/
18:12:26 <EgoBot> hi
18:12:31 <kallisti> !perl print "" =~ /(hi|)/
18:12:38 <kallisti> NO. SANITY.
18:12:44 <Gregor> FireFly: Speaking of bitbucket, is it just me or is eldis trying very hard to be HackBot? ;)
18:13:29 -!- DCliche has joined.
18:15:02 <FireFly> Gregor, I dunno, I haven't looked at HackBot
18:15:25 <FireFly> So, well, it isn't intentionally at least
18:17:04 -!- Klisz has quit (Ping timeout: 240 seconds).
18:19:52 -!- zzo38 has joined.
18:20:03 <Gregor> FireFly: I haven't looked at the code, but, y'know
18:20:12 <Gregor> `run echo here are commands | sed 's/are/there be/'
18:20:14 <HackEgo> here there be commands
18:23:55 -!- Klisz has joined.
18:27:38 -!- DCliche has quit (Ping timeout: 252 seconds).
18:29:28 <kallisti> !perl print "hi hi hi" =~ /(hi (?{print "1"}))+/
18:29:30 <EgoBot> 11hi
18:29:45 <kallisti> o_O?
18:30:00 <kallisti> ah
18:30:05 <kallisti> capture group
18:30:14 <kallisti> or... no
18:30:35 <kallisti> !perl print scalar "hi hi hi" =~ /(hi (?{print "1"}))+/
18:30:36 <EgoBot> 111
18:30:45 <kallisti> !perl print "hi hi hi" =~ /(hi )+/
18:30:47 <EgoBot> hi
18:30:56 <kallisti> okay, yes.
18:32:00 -!- kmc has quit (Quit: Leaving).
18:33:06 <kallisti> !perl print "hi hi hi" =~ /(sup(?{print 'hi'}))?/
18:33:20 <kallisti> !perl print "suphi hi hi" =~ /(sup(?{print 'hi'}))?/
18:33:21 <EgoBot> hisup
18:34:40 <kallisti> !perl my $x; print "suphi hi hi" =~ /(sup(?{$x = 1}))?/; print $x
18:34:42 <EgoBot> sup1
18:34:52 <kallisti> hmmm okay.
18:36:08 <kallisti> my $parse_url = qr#(?{$p=0})([(]\s*(?{$p=1}))?\K(((https?|ftp)://)|www\.)(([0-9]{1,3}\.){4}|([a-z0-9\-]+\.)*[a-z0-9\-]+\.[a-z]{2,4})(:[0-9]+)?([/?][^ "]*(?{'[^ ,;\.:">' . ($p? ')' : '') . ']'}))?#i;
18:36:17 <kallisti> quick. someone debug this.
18:37:30 -!- zzo38 has quit (Remote host closed the connection).
18:37:31 <Deewiant> ([0-9]{1,3}\.){4}
18:37:38 <kallisti> oh
18:37:38 <kallisti> right
18:37:39 <Deewiant> Looks like it accepts an extra dot
18:37:41 <kallisti> oops :P
18:37:53 <kallisti> but it still doesn't work regardless of that.
18:39:00 <kallisti> my guess is probably the crazy parentheses hack.
18:39:05 <kallisti> I'll try it without that.
18:42:12 <kallisti> Deewiant: the idea is to match URLs that are embedded in ()'s correctly when it's just the URL by itself
18:42:24 <kallisti> but to also match match URL's with () in them such as Wikipedia articles
18:42:57 <kallisti> but I may have to concede and pick one.
18:43:59 <Deewiant> Matching parentheses can't be done in a regular language and I don't know Perl's regex extensions well enough to help
18:44:47 <kallisti> it can be done
18:45:02 <kallisti> there are examples of matching parentheses but that's not really what I'm doing
18:45:07 <Deewiant> No, it can't
18:45:19 <kallisti> in perl regex, yes.
18:45:37 <Deewiant> Yes, and they aren't regular
18:45:56 <Deewiant> And as I said, I don't know the extensions well enough
18:48:25 <kallisti> basically I just use (?{...}) which evaluated arbitrary Perl code and inserts the result into the regex at that position.
18:48:50 <kallisti> and \K which says to disregard everything before it for the purposes of capturing the result in the $& variable
18:49:01 <kallisti> *capturing the match
18:49:27 <kallisti> though for some reason the \ appears red in emacs cperl-mode
18:49:39 <kallisti> so maybe I'm using it incorrectly?
18:50:51 <Sgeo> Is it unethical for me to ask for hints on https://docs.google.com/document/pub?id=1UK8EfHhrdZ2XrMMsvPk8DiEyQfaIbijkC4awkWFSdw4 ? (The problem asks if there are any series that converges but the series of the cubes of the terms diverges)
18:51:00 <Sgeo> (And if there are any such series, show it)
18:52:07 <Sgeo> I don't think I want the answer directly
18:53:20 -!- Phantom_Hoover has joined.
18:55:01 <Sgeo> Seriously, it sounds trivial but I keep running into exceptions and edge cases
18:55:19 <kallisti> !perl print qw(#hi #hi #hi)
18:55:20 <EgoBot> ​#hi#hi#hi
18:56:16 <Phantom_Hoover> So, lambdabot, how many messages has elliott tried to jam into you in my absence?
18:56:17 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
18:56:35 <Sgeo> Hello?
18:56:51 <kallisti> Sgeo: no, it's not unethical. does that help?
18:57:12 <Sgeo> I guess. So, kallisti, any help?
18:57:15 <kallisti> no.
18:57:28 <kallisti> I have 2 problems, one of them being a regex. :P
18:58:06 -!- ais523 has joined.
18:58:45 <Sgeo> kallisti, thing is, it's sort of a math contest going on at my school
18:58:49 -!- sebbu2 has joined.
18:58:50 -!- sebbu2 has quit (Changing host).
18:58:50 -!- sebbu2 has joined.
18:58:57 <Sgeo> Well, I guess I could talk and then mention that I was talking
18:58:59 <Phantom_Hoover> Oh
18:59:00 <Phantom_Hoover> Oh dea
18:59:01 <Phantom_Hoover> r
18:59:11 <Sgeo> I'm probably not going to hand it in though, since I still have no idea
18:59:18 <Phantom_Hoover> how many hs updates Sgeo tell me
18:59:37 <Sgeo> Phantom_Hoover, all of them? Are you asking since a particular date, or?
19:00:00 <Phantom_Hoover> Sgeo, since last I trod the fair shores of Edinburgh and tasted its sweet, sweet wifi.
19:00:11 <Sgeo> What date was that?
19:00:15 -!- sebbu has quit (Ping timeout: 252 seconds).
19:00:22 <Phantom_Hoover> Sunday.
19:00:53 <Sgeo> You missed a bunch
19:01:26 <Sgeo> Including Pesterlogs, I think... maybe
19:04:27 <kallisti> I wonder how many regexes match themselves
19:04:32 <kallisti> the obvious one is .
19:04:35 <Sgeo> .
19:04:40 <Sgeo> darnit
19:04:41 <Sgeo> .*
19:05:09 <Sgeo> Any regex with no special characters
19:05:18 <kallisti> yes.
19:06:02 <kallisti> you could probably write a quine-regex via (?{})
19:06:44 <Phantom_Hoover> Quine-regex?
19:07:12 <kallisti> just stick code inside the {} that outputs a regex that matches the regex string itself
19:12:19 -!- MSleep has joined.
19:13:51 -!- MDude has quit (Ping timeout: 248 seconds).
19:15:27 -!- sebbu2 has changed nick to sebu.
19:18:46 <oklopol> "<Sgeo> Is it unethical for me to ask for hints on https://docs.google.com/document/pub?id=1UK8EfHhrdZ2XrMMsvPk8DiEyQfaIbijkC4awkWFSdw4 ? (The problem asks if there are any series that converges but the series of the cubes of the terms diverges)" this is trivial
19:19:33 <Sgeo> Comparison of terms doesn't work for conditionally convergent series, according to Wikipedia
19:19:45 <oklopol> conditionally convergent means what?
19:20:13 <kallisti> if a > 2 then this-thing-converges else this-thing-diverges
19:20:21 <kallisti> ?
19:20:25 <Sgeo> The series converges, but the series made by the absolute values of the terms of the series does not.
19:20:30 <kallisti> oh. :P
19:20:35 <Sgeo> (Again, according to my memory of Wikipedia)
19:20:47 <oklopol> so umm i misunderstood the question, so let me think again :)
19:21:10 <oklopol> err no
19:21:39 <oklopol> i stand by my first hint
19:22:33 <oklopol> can you do it for series with positive entries?
19:23:13 <Sgeo> Yes, a series with all positive entries is absolutely convergent, and as such it's easy to use the direct comparison test
19:23:31 <Sgeo> (a convergent series with all positive entries, I mean)
19:25:08 <oklopol> good
19:27:20 <Sgeo> I'm not sure how that helps, though. Although if there is an example of series converging but the series of cubes diverging, it looks really really weird
19:27:58 <Sgeo> Ratio test has to fail, can't be all positive, can't be a simple alternating series (either abs values are non-monotonic or alternation of signs isn't straightforward)
19:29:09 <Phantom_Hoover> Hmm, does \Sigma 1/n^3 converge?
19:30:05 <Sgeo> I think I'm going to head over to the school soon
19:30:05 <Sgeo> BRB
19:30:21 <oklopol> Sgeo: i can think of two hints
19:30:30 <Sgeo> Ok
19:30:33 <oklopol> 1) the yes/no answer
19:30:44 <oklopol> 2) the crucial property of cubing
19:31:24 <oklopol> "<Sgeo> I'm not sure how that helps, though. Although if there is an example of series converging but the series of cubes diverging, it looks really really weird" i doubt it helps much, but it's a more interesting question
19:31:47 <oklopol> Phantom_Hoover: for all values of 3 more than 1
19:32:07 <Sgeo> What's so great about cubing? I mean, it preserves sign, and for b^3 where |b|<1 then b^3 < b, but I don't know if that really helps
19:32:40 <oklopol> Sgeo: not the crucial property
19:32:51 <oklopol> a crucial property, but not the one i used
19:33:09 * Sgeo doesn't really know of any other properties of cubing
19:33:27 -!- ais523 has quit (Ping timeout: 240 seconds).
19:33:50 <Sgeo> Wait, I mistated the property, it's |b^3|<|b|
19:34:06 <oklopol> sure
19:34:18 <oklopol> still not it
19:34:23 <Sgeo> But I don't know other properties of cubing :(
19:34:56 <oklopol> if i stated you what 2) is, you'd say duh
19:35:14 <oklopol> told
19:35:21 <Sgeo> o.O
19:35:28 <Sgeo> 0^3=0
19:36:02 <oklopol> that sure is true. also 2^3 = 8
19:36:08 <olsner> the sign of x^3 = the sign of x?
19:36:26 <Sgeo> But... is that supposed to be helpful? A series can diverge while the limit as n goes to inf of a_n goes to 0
19:36:27 <oklopol> it sure is, also ^ is called a caret
19:36:56 <olsner> I'm just playing guess the property
19:37:11 <oklopol> olsner: and losing
19:37:20 <oklopol> :DSDSD
19:37:28 <olsner> :D
19:37:45 <Sgeo> olsner, I already guessed that property
19:37:54 <oklopol> Sgeo: well anyhow that's the two hints i can think of (assuming i haven't made a mistake myself, which i doubt because this is kind of simple)
19:38:00 <oklopol> tell me if you want one of them
19:38:11 <Sgeo> The property, I guess
19:38:20 <Sgeo> I don't know if I should ask for property or the yes/no
19:39:05 <oklopol> well by now you should know 1), but perhaps you don't have any idea.
19:39:21 <Sgeo> I'd say that no, there is no such series
19:39:25 <Sgeo> But not certain
19:39:32 <oklopol> anyhow, i shall tell you: restricting to abs less than 1, the smaller your abs is, the less you get smaller.
19:39:45 <oklopol> in abs
19:39:53 <oklopol> when cubed
19:39:53 <Sgeo> ...
19:40:16 <Sgeo> I'm starting to re-evaluate my opinion on asking for 1
19:40:24 <oklopol> erm, i guess not near 1
19:40:35 <oklopol> but i think for small enough abs
19:40:39 <Sgeo> I mean, as in, whether or not there's such a series
19:41:17 <oklopol> you have to wait for the derivative 3x^2 to get smaller than 1
19:41:40 <oklopol> well do you want to know
19:41:50 <Sgeo> Yes, I think
19:42:09 <oklopol> there is a series that converges but doesn't after cubing
19:43:24 <Sgeo> Now I need to figure out how to find it, but it sounds like a pain in the ass. Maybe.
19:44:11 <Sgeo> But hmm, thanks
19:44:27 <oklopol> not really. make it converge to 0 and keep making the sum bigger and bigger.
19:44:30 <oklopol> i mean
19:44:37 <oklopol> the sums of cubes
19:45:03 <Sgeo> BRB
19:45:57 <Sgeo> Thank you. I will work on it, no more hints
19:46:07 <Phantom_Hoover> <oklopol> anyhow, i shall tell you: restricting to abs less than 1, the smaller your abs is, the less you get smaller.
19:46:31 <oklopol> the property i stated was kind of wrong anyway, it's kind of hard to come up with a way that doesn't spoil the actual inequality :D
19:48:36 <oklopol> the property you need is (ax)^3 = a^3 x^3 really :P
19:57:33 -!- ais523 has joined.
19:58:23 <oklopol> it's true for all integer n greater than 1 actually, for even ones, quite trivially, for odd ones, by the same argument
19:59:47 -!- MSleep has changed nick to MDude.
20:01:27 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:01:51 <copumpkin> how about (a + b)^3 = a^3 + b^3
20:02:30 <oklopol> that's a nice equality, it even lets you prove the converse
20:04:33 <Sgeo> I'm still thinking about it the wrong way
20:04:53 <oklopol> keep it simple
20:05:02 <Sgeo> I'm still consistently visualizing all positives, with the hint you gave me
20:05:05 <Sgeo> And that has to be wrong
20:06:27 <oklopol> the first hint was just silly, all you need is (ax)^3 = a^3 x^3
20:09:19 <oklopol> anyhow i think for all symmetric increasing functions not equal to y = x in any neighborhood of 0, you can find a series like this
20:09:52 <oklopol> even ones that aren't continuous
20:10:04 <oklopol> err
20:10:16 <oklopol> *y = ax for some a
20:10:29 <oklopol> but that seems harder
20:11:03 <Sgeo> ARGH
20:11:34 <Sgeo> What, do I want the cube root of -1 or something?
20:11:43 <Sgeo> Wait, that's just -1
20:11:53 <oklopol> you don't need any concrete values really
20:12:13 <Sgeo> I don't get it, I don't know what time I'd have to hand it in by, and I doubt they're ok with me using outside sources like this
20:14:03 -!- sebbu2 has joined.
20:14:03 -!- sebbu2 has quit (Changing host).
20:14:03 -!- sebbu2 has joined.
20:14:06 <oklopol> just take a sequence e_i going to zero, then keep the linear series near zero but never more than e_i in abs, while moving the cube series by a constant
20:14:14 <oklopol> e_i
20:14:31 <oklopol> move on to next i
20:14:42 <oklopol> did you get this far?
20:14:45 -!- GreaseMonkey has joined.
20:14:51 <Sgeo> I didn't get anywhere
20:15:19 <oklopol> argh, remove the "but" there :D damn i'm being careful.
20:15:51 <Sgeo> I could just not do this one
20:15:55 <Sgeo> Just fail
20:16:23 <Sgeo> I'm going to go to the school and ask if having asked for help disqualifies my answer anyway. If so, I'm not going to bother
20:16:27 -!- sebu has quit (Ping timeout: 240 seconds).
20:16:28 <Sgeo> I'll just do the next one
20:16:51 -!- Phantom_Hoover has joined.
20:19:48 <oklopol> so for continuous functions i think i have an exact characterization for when this kind of series can be constructed (even without symmetry)
20:21:29 <oklopol> no works for all functions
20:21:52 <oklopol> okay so i'm rather sure f has the property iff it's not linear in any neighborhood of 0
20:22:29 <oklopol> the property that there's a converging series a_i such that f(a_i) doesn't converge
20:23:24 -!- pikhq has joined.
20:23:33 -!- pikhq_ has quit (Ping timeout: 244 seconds).
20:23:34 <oklopol> obviously if you are linear in some nbhd then you don't have this property, by looking at tails
20:23:43 <oklopol> of stuff
20:24:26 -!- sebbu2 has changed nick to sebbu.
20:37:52 -!- atehwa has joined.
20:45:24 * Sgeo isn't bothering
20:52:52 * kallisti considers making a starcraft 2 mod.
20:55:30 <kallisti> I know there's a lot of units from story mod in the mod tool, but I wonder if you can get all of the upgrades as well.
20:56:10 <kallisti> there's a lot of random shit for terrans you could throw into the game, for a TvT map with all of Wings of Libery stuff available. It would be so incredibly broken.
21:03:53 -!- oerjan has joined.
21:05:57 <oerjan> <oklopol> oerjan: are there cases where it's useful to change the topology of R^n? or even the uniform structure, i guess the usual metrics are uniformly equivalent?
21:06:08 <oerjan> i don't really know.
21:06:22 <oerjan> i know very little about uniform structure.
21:08:03 <oerjan> even the different banach space topologies that come to mind are the same on finite dimensional spaces, i think
21:08:24 <oerjan> (norm and weak-*)
21:10:41 <oklopol> i think so too
21:11:16 <oerjan> hm maybe there's one based on considering only compact sets
21:12:10 <oklopol> not sure what you mean
21:12:17 <oklopol> how does that give a topology on R^n
21:12:35 <oerjan> if you make a topology where only the original compact sets of R^n and the whole of R^n are closed
21:13:23 <oerjan> it's not hausdorff, but might have some uses...
21:14:13 <oerjan> but it's T1
21:15:03 <oerjan> every nonempty open set contains everything outside some radius
21:16:16 <Gregor> So.
21:16:18 <Gregor> MUDCraft.
21:16:20 <Gregor> Yes or yes?
21:16:29 <oerjan> in fact the whole space is compact, i think
21:16:30 <Gregor> (I suppose I should ask that in -minecraft ... )
21:17:06 <Phantom_Hoover> <oerjan> <oklopol> oerjan: are there cases where it's useful to change the topology of R^n? or even the uniform structure, i guess the usual metrics are uniformly equivalent?
21:17:07 -!- Sgeo has quit (Ping timeout: 240 seconds).
21:17:33 <Phantom_Hoover> I was thinking about the metric-y topology in a Minkowski space, actually.
21:17:57 * oerjan hasn't heard of that
21:18:25 <Phantom_Hoover> i.e. an open ball is the set of points for which x^2 + y^2 + ... -t^2 < d.
21:18:35 <Phantom_Hoover> I'm fairly sure all open sets are infinite.
21:18:52 <Phantom_Hoover> Yes, yes they are.
21:19:15 <oklopol> wait what's t
21:19:21 <oerjan> time
21:19:45 <oerjan> this is relativistic proper time distance
21:19:56 <oklopol> umm what
21:20:05 <oklopol> do you mean the definition changes every second
21:20:09 <oklopol> :D
21:20:14 <Phantom_Hoover> -_-
21:20:20 <oerjan> no, the space is R^4
21:20:21 <oklopol> no but umm for R^n, do you take one to be time or what?
21:20:28 <oerjan> and yes
21:20:28 <Phantom_Hoover> Yeah.
21:20:39 <Phantom_Hoover> It's not a metric space, of course.
21:20:54 <oklopol> i don't see that
21:21:12 <oklopol> also you mean metrizable
21:21:14 <oerjan> so, the set of points at timelike or < sqrt(d) spacelike distance from the origin
21:21:43 -!- Sgeo has joined.
21:21:48 * oerjan forgot the term for exactly 0
21:21:51 <Phantom_Hoover> oklopol, no, I mean (R^n, relativistic proper time) isn't a metric space.
21:22:00 <Phantom_Hoover> oerjan, yeah.
21:22:08 <Sgeo> Having the cover to the HD fall out onto your bed is awesome!
21:22:21 <oerjan> so it includes the light cone, and some more beside
21:22:33 <Phantom_Hoover> I didn't say d had to be positive, actually.
21:22:38 <oerjan> oh
21:22:52 <Phantom_Hoover> (This only occurred to me now.)
21:23:01 <oerjan> well in any case i have no intuition for what kind of topology this is
21:23:22 <Phantom_Hoover> But all open sets are asymptotic to a double cone, so they all have infinite intersections.
21:23:37 <Phantom_Hoover> Thus all open sets are infinite.
21:24:18 <oklopol> not really asymptotic to a cone per se, since the radius grows squarely no?
21:24:28 <oklopol> but they sure are infinite
21:24:31 <Phantom_Hoover> They're all hyperboloids.
21:25:48 <oerjan> well i think that's T1 too, at least
21:26:04 <oerjan> er no
21:26:08 <oerjan> or wait
21:26:13 <Phantom_Hoover> Oh, yeah, it's not Hausdorff.
21:26:37 <oerjan> well that is obvious from infinite intersections
21:27:43 <oerjan> hm i think it's T1
21:28:01 <oklopol> i don't get this topology, is 0 really in all open sets?
21:28:16 <Phantom_Hoover> Is 0 really in all open sets?
21:28:20 <oerjan> oklopol: obviously you translate
21:28:26 <oklopol> obviously?
21:28:34 <oklopol> you get a topology without doing that
21:28:36 <Phantom_Hoover> Oh, I stated that stupidly.
21:28:40 <oklopol> it's just stupid :D
21:28:52 <oklopol> then it's hausdorff
21:28:55 <Phantom_Hoover> Um, yeah; d(x,y) < a where d is the proper time.
21:29:01 <oklopol> erm
21:29:04 <oklopol> no so not
21:29:26 <oklopol> anyhow not t1
21:29:37 <oerjan> Phantom_Hoover: proper time is imaginary not negative, you need to square
21:29:47 <oklopol> consider two points in the same point in space
21:29:50 <Phantom_Hoover> *the proper time squared
21:30:05 <oklopol> their neighborhoods always contain the other no
21:30:19 <Phantom_Hoover> oklopol, ...no set is T1 if you use that argument?
21:30:37 <oklopol> what does it mean for a set to be T1?
21:30:50 <oklopol> you mean topology?
21:30:52 <Phantom_Hoover> T1 is each has a neighbourhood that doesn't contain the other.
21:30:54 <oklopol> oh let me be more clear
21:31:05 <oklopol> consider two points that are equal in space but not time
21:31:07 <oerjan> oklopol: i thought that for a moment, but you can separate with cones from other points
21:31:55 <Phantom_Hoover> What oerjan said.
21:31:56 <oerjan> the sets Phantom_Hoover gave are just a basis, not all open sets, and not all neighborhoods of x
21:32:07 <oerjan> er, subbasis even
21:32:38 <oklopol> yeah but if the times are -1 and 1
21:32:42 <oklopol> i don't see how
21:32:45 <Phantom_Hoover> oerjan, it's not a basis?
21:33:04 <oerjan> Phantom_Hoover: a basis should be closed under finite intersection iirc
21:33:04 <ais523> "Adult X-rated Christmas Trivia Games Printables"
21:33:16 <ais523> OK, the spambots have gone beyond the plausible limits of "specific" now
21:33:19 <oklopol> since all open sets are symmetric around the space hyperplane at time 0
21:33:28 <oerjan> or not closed, but have smaller elements within
21:33:31 <Phantom_Hoover> oklopol, they're all hyperboloids, so you can fit one point into the gap around the middle of the other.
21:34:02 <oklopol> or do you also take time translations? i guess that would make sense.
21:34:15 <oerjan> oklopol: you take all translations
21:34:25 <oerjan> d(x,y) = d(x-y, 0)
21:34:25 <oklopol> so T1 but no open sets are disjoint
21:35:13 <Phantom_Hoover> oerjan, hmm, WP just says that you can form all open sets from unions of the basis.
21:35:16 <oerjan> so i think too
21:35:51 <oklopol> yes, that's the definition of a basis
21:35:55 <oerjan> Phantom_Hoover: yes. but your sets are weaker than that, since you cannot find one of them inside the intersection of two of them always
21:35:57 <oklopol> for subbasis, you also take finite intersections
21:36:17 <Phantom_Hoover> oerjan, oh, duh.
21:37:44 <oerjan> iirc: given O1 and O2 in the basis, and x in their intersection, there must be O in the basis with x in O subset O1 intersect O2
21:38:00 -!- Phantom__Hoover has joined.
21:38:16 <oklopol> sounds about right
21:38:38 <oerjan> that's enough to make sure the intersection is a union from the basis
21:39:00 <oklopol> oerjan: did you read my characterization for functions f such that there's a series that converges but sequence of f images doesn't
21:39:16 <oerjan> no
21:39:26 <oerjan> i seem to have interrupted my log reading
21:39:42 <oklopol> it was that there's no nbhd of 0 where it's linear
21:40:27 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:45:41 <oerjan> <elliott> Maybe I'll just start talking about @ whenever anyone disagrees with me on reddit. <-- and then you can exchange strategy tips with Zephir_AWT
21:45:55 <oerjan> sorry, he's Zephir_Banned now
21:46:10 <oerjan> or was that Zephir_Banned2
21:46:44 -!- Jafet has quit (Quit: Leaving.).
21:54:36 <oerjan> <oklopol> "<Sgeo> Is it unethical for me to ask for hints on https://docs.google.com/document/pub?id=1UK8EfHhrdZ2XrMMsvPk8DiEyQfaIbijkC4awkWFSdw4 ? (The problem asks if there are any series that converges but the series of the cubes of the terms diverges)" this is trivial
21:55:06 <oerjan> i've got a hunch it should be possible to get it with negatives
21:55:27 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
21:55:55 <oklopol> get it?
21:55:57 -!- Phantom__Hoover has joined.
21:56:02 <oklopol> oh
21:56:03 <oerjan> an example...
21:56:06 <oklopol> yeah it is
22:01:45 <Phantom__Hoover> ais523, can you get graue to bot a sock or something?
22:03:40 <ais523> I emailed graue about the spam, haven't got an answer yet
22:05:15 <oerjan> hm ok, i think your characterization is right
22:05:19 <Sgeo> I think it's too late to submit anything now
22:06:38 <oerjan> oklopol: or wait, don't you mean additive rather than linear
22:07:06 <oklopol> well i mean "y = ax"
22:07:06 <oerjan> or hm
22:07:40 <oerjan> those are equivalent except for hideously nonmeasurable functions
22:07:49 <oerjan> iirc
22:08:21 <oklopol> okay, in any case i think y = ax gives a characterization for absolutely all functions
22:08:40 <oerjan> oh hm i think linear may be right
22:09:59 <oerjan> if f(ax) is not a f(x), then you can use x and ax at some point in a variation of your argument in the privmsg
22:10:19 <Gregor> Give me something to watch on the YouTuber.
22:10:25 <oklopol> yeah but you need exactly one to be negative
22:10:29 <oerjan> and by "no neighborhood of 0", you can pass on to a smaller one later
22:10:40 <oerjan> oklopol: oh
22:10:53 <oklopol> then make a sum out of them that gets either to zero or arbitrarily close, and you get f's to get bigger
22:11:07 <oklopol> but because of f not necessarily being symmetric, i needed some extra work
22:11:36 <oerjan> well, if f(-x) = f(x) fails enough, you can use those, and if f(-x) = f(x) _is_ true in a neighborhood, you can switch one of those for the other to get it negative
22:11:41 <oerjan> er
22:11:46 <oerjan> *f(-x) = -f(x)
22:12:04 <oklopol> yeah that's a better way
22:12:54 <oklopol> so at least it's symmetric in a nbhd of 0
22:15:28 <oklopol> then if you find arbitrarily small r, r' for which f(r)/r and f(r')/r' are not equal, if r/r' rational you can get to 0 without going further than r+r' away from 0 on the linear side, and obviously you get somewhere on the f side
22:15:45 <oklopol> for irrational, you note that their sums are dense
22:16:08 <oerjan> so you can get the leftover bits as small as you want, and so converging
22:16:18 <oklopol> so you get arbitrarily close to 0 without leaving r+r'-nbhd, and it should then be clear enough that the f-side won't do the same
22:16:25 <oklopol> well
22:16:40 <oklopol> not quite, we still need to move to smaller r, r'
22:17:06 <oklopol> otherwise our jumps will not get smaller and the sum refuses to converge
22:17:25 <oerjan> well i mean the leftover from _all_ the r, r' pairs used should be a converging series
22:17:35 <oklopol> well sure
22:17:51 <oerjan> say you could make it < 1/n^2
22:18:05 <oklopol> but the point is we can estimate how many r's and -r''s we used, and that will approach something like their quotient when we get close to 0, so on the f side, you don't approach 0.
22:18:17 <oerjan> yes.
22:18:17 <oklopol> because the quotient is different there
22:18:49 <oklopol> i love how i'm procrastinating from doing math by doing math
22:19:14 <copumpkin> aw, I was disappointed by your use of quotient
22:19:19 <copumpkin> too concrete
22:19:24 * copumpkin goes back to real work
22:20:04 <oklopol> copumpkin: i think it's necessary to do concrete calculations in the case where f need not be continuous
22:20:17 <oklopol> for continuous f, it's kind of trivial
22:20:23 <oerjan> oklopol: now you need to generalize this to limits of diagrams in abelian categories to please copumpkin
22:20:32 <copumpkin> yeah, I just thought you were talking about a more general notion of quotient
22:21:02 <oklopol> not sure the general notion of quotient in any way generalizes division
22:21:04 <oerjan> copumpkin: sorry, this is R -> R functions
22:21:19 <oklopol> well. in many ways i guess.
22:21:26 <copumpkin> yeah
22:21:33 <copumpkin> there are definitely similarities
22:22:10 <oerjan> Z_m / Z_n _is_ isomorphic to Z_(m/n) if n divides m, i think.
22:22:16 <oerjan> as groups
22:22:23 <oklopol> okay i have to go to work too. and by that i mean i have to go walk outside.
22:22:53 <oklopol> isn't A = A/B * B for abelian groups
22:23:11 <oerjan> no.
22:23:25 <oerjan> e.g. Z_4 is not Z_2 * Z_2
22:23:31 -!- Patashu has joined.
22:23:34 <oklopol> oh right
22:23:35 <oklopol> that stuff
22:24:12 <oerjan> different extensions
22:24:58 <oerjan> basically, in module theory there is a concept of B being a summand in A
22:25:42 <oerjan> (abelian groups ~ Z-modules)
22:28:55 <oerjan> our wiki recent changes have gotten into the christmas spirit, i see
22:29:56 <oerjan> hark the herald spammers sing
22:31:46 <oerjan> the little spammer boy
22:31:57 <oerjan> silent spam, holy spam
22:32:14 -!- kwertii has joined.
22:33:55 <oerjan> spam nuts roasting on an open fire
22:38:20 <oerjan> spam the halls with bouts of holly
22:38:35 <oerjan> *boughs
22:41:09 <oerjan> porky the spam man
22:50:53 * Phantom__Hoover → sleep
22:51:18 -!- Phantom__Hoover has quit (Quit: Leaving).
23:01:49 <oklopol> oerjan: please stop spamming
23:01:53 <oklopol> it's cold outside
23:01:53 <oklopol> :/
23:05:14 <oerjan> adeste spammantes
23:07:00 -!- zzo38 has joined.
23:07:36 <kallisti> oerjan: hi, we've recently been plagued by spam from a guy named oerjan. Can you please kickban him? This is getting out of control.
23:08:42 -!- ais523 has quit (Remote host closed the connection).
23:19:40 <oerjan> have yourself a spammy little christmas
23:19:51 <oerjan> food ->
23:21:11 -!- Jafet has joined.
23:28:49 <oerjan> spammis angelicus
23:30:27 <oerjan> feliz spammidad
23:33:05 <kallisti> huh there's apparently a Call of Cthulu video game.
23:33:15 <kallisti> *Cthulhu
23:34:34 <oerjan> darn, i guess there won't be an iwc eldritch christmas song this year
2011-12-07
00:01:23 -!- Slereah has joined.
00:01:31 <zzo38> \note{Why does Kjugobe's note have a reference to a footnote in this book?}
00:02:46 -!- Slereah_ has quit (Ping timeout: 252 seconds).
00:07:38 <zzo38> My D&D character (Iuckqlwviv Kjugobe) wrote a note while in prison. In the recording, I added a footnote reference in the note text, and it is a reference to a footnote in the recording book (not in the Kjugobe's note itself!). The footnote says "Why does Kjugobe's note have a reference to a footnote in this book?"
00:13:32 <Gregor> (Beware, bad joke ahead)
00:13:33 <Gregor> NOTECEPTION
00:19:12 <zzo38> What does "NOTECEPTION" mean?
00:27:28 -!- pikhq has quit (Ping timeout: 240 seconds).
00:27:40 -!- pikhq has joined.
00:34:55 <zzo38> Do you like this kind of books writing?
00:35:49 <kallisti> zzo38: noteception is a horrible joke referencing the movie Inception
00:35:54 <kallisti> which features nested dreaming.
00:37:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:37:46 <zzo38> Yes I have seen that movie. And I thought of a few things relating to the book called Godel, Escher, Bach. I thought someone on the team that made that movie had read that book but the other people said it didn't. And then I looked it up and found that I was correct, I think it was the people who wrote the music for that movie
00:51:25 -!- Libster` has joined.
00:58:45 <oerjan> `welcome Libster`
00:58:49 <HackEgo> Libster`: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:05:00 -!- copumpkin has joined.
01:05:28 -!- myndzi\ has quit.
01:05:37 -!- myndzi has joined.
01:22:46 <zzo38> Does it mean anything when the ascendant is square to the midheaven (meaning they are 90 degrees apart)? I know it means the descendant and antiheaven and midheaven and ascendant are all 90 degrees (or 180 degrees) apart from each other. And it occurs at 13:10 today in my local timezone and local area. And at 01:08 tomorrow (twice per day).
01:22:53 <zzo38> Tomorrow it is at 13:06
01:23:15 <zzo38> The day after at 13:02
01:30:42 -!- Jafet1 has joined.
01:32:00 -!- Jafet has quit (Ping timeout: 244 seconds).
01:39:09 -!- tiffany has joined.
01:39:41 -!- tiffany has left.
01:44:12 -!- Jafet1 has quit (Quit: Leaving.).
01:49:36 <GreaseMonkey> hmm, something that comes to mind... would being able to have multiple things call a function and returning possibly different values for each caller be a good thing or a bad thing?
01:50:12 <zzo38> GreaseMonkey: In what context? What program are you trying to write?
01:50:29 <GreaseMonkey> not all that sure
01:51:09 <GreaseMonkey> let's say you have a bank vault system
01:51:22 <GreaseMonkey> actually zzo38, are you familiar with functional programming languages?
01:55:05 <zzo38> GreaseMonkey: Yes I am familiar with functional programming
01:55:11 <GreaseMonkey> tbqh i'm not entirely sure how this would work
01:57:37 <kallisti> GreaseMonkey: perl allows things of that nature.
01:57:48 <GreaseMonkey> and i don't mean "return foo, bar"
01:57:58 <zzo38> In pure functional programming such as Haskell and whatever, no function should ever return different results when given the same parameters, although a macro might do so (Haskell doesn't have macros, though)
01:58:03 <GreaseMonkey> i mean having multiple things calling a function from different "ports"
01:58:14 <GreaseMonkey> or soemthing liek that
01:58:23 <kallisti> GreaseMonkey: wat
01:58:28 <GreaseMonkey> and stuff dealing with those would get different return values
01:58:39 <zzo38> GreaseMonkey: Could you make parameters? I think Haskell can do something like that with classes, and Perl can probably do that too, in a different way
01:58:40 <GreaseMonkey> depending on which end they went in
01:59:26 <zzo38> Because Haskell program can return different thing depending on the types by defining the instance for each type. And in Perl, I think you can define in terms of scalar or vector or numeric or boolean context, or whatever
01:59:29 <GreaseMonkey> e.g. funct spi_a(msg_a) spi_b(msg_b) { touch(msg_b); return(spi_b) msg_a; return(spi_a) msg_b; }
01:59:50 <zzo38> GreaseMonkey: O, now I understand what you mean.
02:00:16 <GreaseMonkey> thread A: r = msg_a("bacon"); \ thread B: r = msg_b("cheese");
02:00:26 <GreaseMonkey> well, context A and context B, that is
02:00:35 <zzo38> OK now I think I understand better.
02:02:38 <GreaseMonkey> i'm just not sure how that would work in the grand scheme of things or why you would even bother aside from a few rare cases
02:02:53 <zzo38> I don't know quite how that would work either.
02:03:27 <GreaseMonkey> it might be useful for functional programming, though, but i think you could just create ports of some form
02:03:41 <GreaseMonkey> heck, spew an infinite list even
02:03:55 <GreaseMonkey> actually i don't think that would make much sense
02:04:07 <GreaseMonkey> in the context of I/O
02:04:39 <zzo38> Can you describe exactly how your example program is going to work?
02:05:09 <GreaseMonkey> hmm, actually it's doable in OO
02:05:14 <GreaseMonkey> i think my idea needs refining :/
02:05:43 <GreaseMonkey> i might be thinking of a case where you'd use call/cc
02:05:49 <zzo38> Describe what output you are expecting. Is "msg_a" the name of the function call or the parameter?
02:06:07 <GreaseMonkey> parameter
02:06:55 <zzo38> Then what does r = msg_a("bacon"); mean?
02:07:42 <zzo38> Are "spi_a" and "spi_b" two names for the same function?
02:07:59 <GreaseMonkey> two interfaces to the same function, yielding two potentially different results
02:08:20 <GreaseMonkey> i might be thinking of "yield", as opposed to "call/cc"
02:08:56 <GreaseMonkey> argh dammit
02:11:42 -!- oerjan has quit (Quit: Good night).
02:33:01 -!- calamari has joined.
02:33:58 <zzo38> And in which programming language(s) do you attempt to make something like that?
02:41:40 <GreaseMonkey> it'd have to be a custom job
02:47:22 <zzo38> Many programming languages have yield and call/cc. Can you give any better examples including expected output of what you are trying to make?
02:51:55 <GreaseMonkey> no i can't , sorry
02:52:47 <zzo38> Or at least a better description of what you are trying to make (even if you don't have examples)?
03:12:20 <kallisti> GreaseMonkey: I'm guessing perl contexts doesn't really count as this concept?
03:22:06 -!- rakesh has joined.
03:22:12 <rakesh> hi
03:22:15 <rakesh> who i sthis
03:22:17 <rakesh> i am the god
03:22:47 -!- pikhq has quit (Ping timeout: 240 seconds).
03:22:52 -!- pikhq_ has joined.
03:23:15 -!- rakesh has quit (Read error: Connection reset by peer).
03:38:21 -!- Rakesh has joined.
03:46:12 -!- Rakesh has quit (Remote host closed the connection).
04:00:27 -!- Hgg has joined.
04:10:55 -!- Hgg has quit (Remote host closed the connection).
04:18:39 -!- Slereah has quit (Ping timeout: 252 seconds).
04:19:05 -!- Slereah_ has joined.
04:22:14 -!- hagb4rd has quit (Read error: Connection reset by peer).
04:22:50 -!- hagb4rd has joined.
04:25:14 -!- Libster` has quit (Quit: Page closed).
04:48:14 -!- augur has joined.
05:27:36 -!- MDude has changed nick to MSleep.
05:37:30 -!- kwertii has quit (Quit: bye).
06:22:27 <zzo38> Is it possible to check which functions in a Haskell program are getting stuck and causing infinite loops if running in GHCi?
06:24:07 -!- Jafet has joined.
06:27:36 -!- Jafet1 has joined.
06:28:27 -!- Jafet has quit (Ping timeout: 252 seconds).
06:39:34 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:43:23 <zzo38> OK, I managed to correct it. I still don't know how to do that but I did something else instead, such as forcing show of things in error messages to check which are being evaluated, and making IO actions that show things and then result in errors.
06:44:50 <zzo38> Now this code works: createDVI "test.dvi" 1000 dviUnitsTeX >>= shipOut . Page (pageNum 1) [((0, 0), Rule 100000 200000)] >>= finishDVI
06:47:26 -!- Jafet1 has changed nick to Jafet.
06:48:48 -!- hagb4rd2 has joined.
06:49:27 -!- hagb4rd has quit (Ping timeout: 240 seconds).
06:59:13 <zzo38> And of course this is also the example of a way to use this DVI program. You can make multiple pages in the same way. Because createDVI results in (IO DocStat) and shipOut is (Page -> IO DocStat) and the third constructor to Page is DocStat, and finishDVI is (DocStat -> IO ()) so you can chain it together whatever you want it to do so.
06:59:50 <zzo38> (It is a different DocStat value every time; and they must be sequenced correctly otherwise you will get an invalid output)
07:02:41 <zzo38> s/third constructor to Page/third field of constructor Page/
07:04:37 <zzo38> Does this seem reasonable way to make the program, to you?
07:06:25 <itidus20> if only alonzo church would have anticipated the computer terminal...
07:06:54 <zzo38> itidus20: What do you think it would be if he did so?
07:07:07 <itidus20> i just plucked his name at random
07:07:19 <zzo38> Why?
07:07:21 <itidus20> basically if any of these early guys had anticipated the "hello world"
07:08:00 <itidus20> hmm.. maybe i'm not fully understanding the reality though
07:08:13 <itidus20> what output did babbage's machines use?
07:08:55 <zzo38> We have esoteric programming so that you can make up stuff whatever we try to do so. Make up some with unusual outputs to see experiment on these things
07:09:30 <zzo38> I don't know what the output is.
07:09:37 <itidus20> i should really read up on this instead of using #esoteric as a manpage
07:39:18 -!- monqy has quit (Quit: hello).
07:46:10 -!- calamari has quit (Quit: Leaving).
07:46:23 -!- Ngevd has joined.
08:02:49 -!- zzo38 has quit (Remote host closed the connection).
08:04:33 -!- Ngevd has quit (Ping timeout: 244 seconds).
08:26:58 -!- Ngevd has joined.
08:38:59 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:16:07 -!- Deewiant has quit (Ping timeout: 240 seconds).
09:22:25 -!- Deewiant has joined.
09:24:42 -!- hagb4rd has joined.
09:26:56 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
10:31:57 -!- mujuw has joined.
10:33:30 <mujuw> ...
10:34:38 -!- mujuw has left.
11:07:25 <Patashu> whee, beat the freeware version of mesh falling hero
11:07:26 <Patashu> now to orde rit
11:17:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:53:53 -!- TeruFSX_ has joined.
11:56:17 -!- TeruFSX has quit (Ping timeout: 255 seconds).
12:06:32 -!- GreaseMonkey has quit (Quit: The Other Game).
12:13:42 -!- copumpkin has quit (Ping timeout: 248 seconds).
12:14:08 -!- copumpkin has joined.
12:49:46 -!- mtve has quit (Ping timeout: 244 seconds).
13:11:42 -!- oerjan has joined.
13:14:56 <oerjan> <rakesh> i am the god <-- darn wouldn't you know i missed him
13:15:07 <oerjan> I HAD SO MANY QUESTIONS
13:15:16 <oerjan> also a punch in the face
13:15:53 <oerjan> or eldritch tentacles, whatever
13:16:04 -!- Phantom_Hoover has joined.
13:16:13 <fizzie> Facetacles.
13:45:39 <kallisti> @hoogle t a -> (a, t a)
13:45:40 <lambdabot> Data.IntMap deleteFindMax :: IntMap a -> (a, IntMap a)
13:45:40 <lambdabot> Data.IntMap deleteFindMin :: IntMap a -> (a, IntMap a)
13:45:41 <lambdabot> Data.Graph.Inductive.Internal.Queue queueGet :: Queue a -> (a, Queue a)
13:46:58 <oerjan> @hoogle leftView
13:46:59 <lambdabot> No results found
13:47:05 <oerjan> @hoogle lView
13:47:05 <lambdabot> Graphics.Rendering.OpenGL.GL.Colors lightModelLocalViewer :: StateVar Capability
13:47:05 <lambdabot> Graphics.Rendering.OpenGL.GL.CoordTrans Modelview :: GLsizei -> MatrixMode
13:47:11 <oerjan> @hoogle viewL
13:47:12 <lambdabot> Data.Sequence data ViewL a
13:47:12 <lambdabot> Data.Sequence viewl :: Seq a -> ViewL a
13:47:25 <oerjan> that one is also sort of related
13:47:52 <oerjan> except it has its own data type rather than a tuple, with an empty option
13:49:27 <kallisti> :t uncons
13:49:29 <lambdabot> Not in scope: `uncons'
13:49:42 <fizzie> :t unicorns
13:49:43 <lambdabot> Not in scope: `unicorns'
13:49:46 <fizzie> :(
13:50:05 <kallisti> > let uncons (a:b) = (a,b) in map uncons [1,2,3,4]
13:50:07 <lambdabot> No instance for (GHC.Num.Num [t])
13:50:07 <lambdabot> arising from a use of `e_11234' at <in...
13:50:09 <kallisti> oh right.
13:50:25 <kallisti> > let uncons (a:b) = (a,b) in map uncons (tails [1,2,3,4])
13:50:27 <lambdabot> [(1,[2,3,4]),(2,[3,4]),(3,[4]),(4,[]),*Exception: <interactive>:3:4-23: Non...
13:52:26 <kallisti> @hoogle [Maybe a] -> [a]
13:52:27 <lambdabot> Data.Maybe catMaybes :: [Maybe a] -> [a]
13:52:27 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a]
13:52:28 <lambdabot> Prelude sequence :: Monad m => [m a] -> m [a]
13:52:56 <kallisti> > let uncons [] = Nothing; uncons (a:b) = Just (a,b) in map uncons . catMaybes $ tails [1,2,3,4]
13:52:58 <lambdabot> Couldn't match expected type `Data.Maybe.Maybe [t]'
13:52:58 <lambdabot> against inferre...
13:52:59 <kallisti> er
13:53:08 <kallisti> > let uncons [] = Nothing; uncons (a:b) = Just (a,b) in catMaybes . map uncons $ tails [1,2,3,4]
13:53:11 <lambdabot> [(1,[2,3,4]),(2,[3,4]),(3,[4]),(4,[])]
13:54:31 <kallisti> :t uncurry
13:54:32 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
13:54:38 <kallisti> doh
13:55:18 <kallisti> > let uncons [] = Nothing; uncons = uncurry (:) in undefined -uh, can you do this?
13:55:19 <lambdabot> <no location info>: parse error on input `,'
13:55:28 <kallisti> > let uncons [] = Nothing; uncons = uncurry (:) in undefined --uh, can you do this?
13:55:29 <lambdabot> Equations for `uncons' have different numbers of arguments
13:55:29 <lambdabot> <interactive>...
13:55:32 <kallisti> nope
13:55:38 <kallisti> sanity restored
13:56:00 <oerjan> and besides it wouldn't work even with the right number
13:56:15 <kallisti> > uncurry (:) [1,2,4]
13:56:17 <lambdabot> Couldn't match expected type `(a, [a])'
13:56:17 <lambdabot> against inferred type `[a1]'
13:56:30 <kallisti> oh, right
13:56:32 <kallisti> :t curry
13:56:33 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c
13:56:50 <kallisti> yeah nevermind :P
13:57:01 <oerjan> :t head &&& tail
13:57:03 <lambdabot> forall c. [c] -> (c, [c])
13:57:27 <kallisti> > head &&& tail $ []
13:57:28 <lambdabot> (*Exception: Prelude.head: empty list
13:57:44 <oerjan> :t (|||)
13:57:46 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowChoice a) => a b d -> a c d -> a (Either b c) d
13:58:32 <kallisti> @hoogle [a] -> Maybe [a]
13:58:33 <lambdabot> Prelude cycle :: [a] -> [a]
13:58:33 <lambdabot> Data.List cycle :: [a] -> [a]
13:58:33 <lambdabot> Prelude init :: [a] -> [a]
13:58:45 <kallisti> er, yeah.
14:01:13 <Sgeo> :t Just
14:01:14 <lambdabot> forall a. a -> Maybe a
14:01:52 <kallisti> not quite what I was looking for, but it doesn't matter.
14:02:43 <oerjan> what you're looking for has no short formulation, i think
14:02:59 <kallisti> f [] = Nothing; f a = Just a
14:03:03 <kallisti> oerjan: whachu talkin' 'bout?
14:03:04 <fizzie> toNonEmpty :: [a] -> Maybe (NonEmpty a), but doesn't seem to be in lambdabot's Everything You Could Ever Need.
14:03:31 <oerjan> oh that...
14:16:18 <fizzie> > let mfilter p ma = do a <- ma; if p a then return a else mzero in map (mfilter (not . null) . Just) [[], [1,2,3]] -- mfilter copied from Control.Monad
14:16:20 <lambdabot> [Nothing,Just [1,2,3]]
14:16:53 <oerjan> :t mfilter
14:16:54 <lambdabot> Not in scope: `mfilter'
14:17:02 <fizzie> I don't know what's up with that.
14:17:04 <fizzie> :t filterM
14:17:06 <lambdabot> forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a]
14:17:17 <fizzie> That's like right next to it, at least based on some hackage-reading.
14:18:00 <oerjan> probably a very recent addition
14:18:39 <Deewiant> New in base-4.3.0.0, evidently.
14:19:23 <kallisti> three finals on the same day. looking forward to it.
14:21:02 <fizzie> Deewiant: I keep forgetting this stuff, did you actually finish that AI course last year? I'd suppose. (It's going to be lectured now for the last time, in spring 2012.)
14:21:36 <Deewiant> Yes, I did.
14:21:47 <fizzie> Never mind, then.
14:22:31 <Deewiant> I don't usually get as far as submitting a final project report without also going to the exam and passing it :-)
14:23:34 <fizzie> I didn't really remember whether that happened, either. But every year there's a nonzero number of people from both the "exam done, project not" and "project done, exam not" groups.
14:51:29 -!- Zuu has quit (Ping timeout: 240 seconds).
14:56:27 -!- mtve has joined.
15:09:12 -!- Sgeo|web has joined.
15:16:39 -!- oerjan has quit (Quit: leaving).
15:22:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:47:21 -!- copumpkin has joined.
16:04:47 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
16:09:09 <kallisti> ?oeis 1 2 3 4
16:09:24 <kallisti> @oeis 1 912 499592 43582348726987 2398859982734987
16:09:25 <lambdabot> Plugin `oeis' failed with: thread killed
16:09:26 <lambdabot> Sequence not found.
16:09:44 <kallisti> @oeis 1 2 3 4
16:10:00 <lambdabot> Plugin `oeis' failed with: thread killed
16:19:14 <fizzie> Aww.
16:19:22 <fizzie> That looks like the bestest pluggin' plugin.
16:32:12 <Deewiant> @oeis 1 2 3 4
16:32:28 <lambdabot> The natural numbers. Also called the whole numbers, the counting numbers or ...
16:32:28 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
16:32:45 <Deewiant> @vixen Slow day?
16:32:46 <lambdabot> Certainly in the next 50 years we shall see a woman president, perhaps sooner than you think. A woman can and should be able to do any political job that a man can do.
16:35:05 -!- cheater has joined.
16:36:42 -!- Klisz has joined.
16:36:54 <Phantom_Hoover> @vixen is back!
16:36:55 <lambdabot> I can take it. The tougher it gets, the cooler I get.
16:37:11 <itidus20> @vixen seems cool
16:37:12 <lambdabot> Voters quickly forget what a man says.
16:37:18 <Phantom_Hoover> @vixen I think that violates one of the gas laws...
16:37:19 <lambdabot> Any lady who is first lady likes being first lady. I don't care what they say, they like it.
16:37:43 <Phantom_Hoover> @vixen You seem a little more... political of late.
16:37:44 <lambdabot> Scrubbing floors and emptying bedpans has as much dignity as the Presidency.
16:38:36 <kallisti> @vixen u mad?
16:38:37 <lambdabot> Don't try to take on a new personality; it doesn't work.
16:38:39 <Phantom_Hoover> @vixen But what about a president who scrubs floors and empties bedpans?
16:38:40 <lambdabot> I can see clearly now... that I was wrong in not acting more decisively and more forthrightly in dealing with Watergate.
16:38:51 <kallisti> ..
16:39:18 <Phantom_Hoover> @vixen Vixengate?
16:39:19 <lambdabot> I can see clearly now... that I was wrong in not acting more decisively and more forthrightly in dealing with Watergate.
16:40:43 <Phantom_Hoover> @vixen Oh dear god this is amazing.
16:40:44 <lambdabot> Voters quickly forget what a man says.
16:42:38 <Phantom_Hoover> @vixen My, that's a surprisingly small quotes database you have there.
16:42:39 <lambdabot> I don't know anything that builds the will to win better than competitive sports.
17:01:46 -!- DCliche has joined.
17:03:30 <quintopia> nixon only said fifteen things in his life
17:03:33 <quintopia> what is there to do
17:03:35 -!- monqy has joined.
17:04:41 -!- Klisz has quit (Ping timeout: 240 seconds).
17:05:49 -!- DCliche has changed nick to Klisz.
17:09:08 -!- cheater has quit (Ping timeout: 244 seconds).
17:10:59 <fizzie> fungot: What do you think about that @vixen thing?
17:11:00 <fungot> fizzie: the shadow-haunted landscapes of fnord, and lot no. fnord, " the amulet that damned thing" the very apex of happy domestic fnord whilst small kittens become objects to adore, fnord,
17:14:27 <Gregor> fungot: Tell me a beautiful love sonnet.
17:14:27 <fungot> Gregor: considerable number would believe him. he it is who shall fnord our return and sing of the days to come when fauns and dryads and satyrs, suggested the fnord of that unpleasantly undulating column on the far-off ipswich road.
17:15:11 <Gregor> fungot: I'm really getting quite tired of your fnording fnords.
17:15:11 <fungot> Gregor: after many eons men came to the land of lomar, and the stealthy whirring and flapping of those accursed fnord closer and closer to a grasp of the secret laboratory. i speak of wests decadence, but must add that some were incised and fnord from the air.
17:17:15 <fizzie> Yeah, that particular style has a bit too many of them.
17:18:47 <Deewiant> I derive amusement from seeing the words that aren't fnords but likely would be in other styles, like "undulating"
17:20:34 <fizzie> Deewiant: It only appears three times in the source material, so it's not too far from being a fnord.
17:20:49 -!- MSleep has changed nick to MDude.
17:22:03 -!- cheater has joined.
17:22:42 <quintopia> why are there fnords in multiple styles?
17:23:13 <quintopia> does it insert a fnord wherever it can't find another passage with that word to hook up to?
17:23:27 <fizzie> It doesn't work quite like that.
17:23:31 -!- Sgeo|web has joined.
17:23:36 <fizzie> It's a n-gram model, not a "keep quoting and jump around" model.
17:23:40 <Sgeo|web> No one else got it either, so it's tied.
17:24:06 <fizzie> Anyhoo, the older training script mapped all occurs-only-once words into a special "UNK" token, and fungot renders that token as "fnord" when converting back from token indices to words.
17:24:06 <fungot> fizzie: the doom that was one day to be there. confused memories mixed themselves with his mathematics, though the twilight of morning.
17:29:21 <Phantom_Hoover> ^style
17:29:21 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft* nethack pa qwantz sms speeches ss wp youtube
17:30:38 <itidus20> fuck my spacebar
17:34:09 -!- Sgeo|web has quit (Quit: Page closed).
17:35:26 -!- Klisz has changed nick to SherlockVanHelsi.
17:35:37 -!- SherlockVanHelsi has changed nick to Klisz.
17:39:50 <itidus20> i woder if /\/\I keyoard is just shit....
17:40:11 <Gregor> I wonder whether you're missing the 'Y' key, or just don't know how to spell "my" ...
17:41:01 <itidus20> or if i rattle /\/\y keyoards too /\/\u(h while (lea|\| i |\| g....oy \/ey
17:41:40 <itidus20> 6 keys te/\/\p re/\/\o\/ed while ............. |3 l a h
17:41:41 <myndzi> |
17:41:41 <myndzi> >\
17:42:13 <Phantom_Hoover> ^style qwantz
17:42:14 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
17:42:19 <Phantom_Hoover> fungot, speak.
17:42:19 <fungot> Phantom_Hoover: a lot! god, just forget how to talk! i just forgot that when i said she was dead before.'"
17:43:30 <itidus20> testing sigh ok its good enough
17:43:40 <itidus20> i absolutely hate removing my spacebar
17:43:57 <itidus20> its a godawful thing
17:44:41 <Gregor> Dood, that's like music to my ears (re fung-ot)
17:45:03 <Gregor> "A lot! God, just forget how to talk! Oh, I just forgot that \ when I said she was deaaaaaad befoooooooooooore!"
17:45:42 <itidus20> i tend to rattle my kb around a lot when cleaning.. im not sure if it damages it much that way
17:46:05 <itidus20> its probably a bad idea
17:53:28 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:04:02 <kallisti> I am magic mans'
18:20:50 -!- Phantom_Hoover has joined.
18:25:05 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
18:42:08 -!- Phantom_Hoover has joined.
18:56:58 -!- sebbu2 has joined.
18:56:58 -!- sebbu2 has quit (Changing host).
18:56:58 -!- sebbu2 has joined.
18:59:35 -!- sebbu has quit (Ping timeout: 248 seconds).
19:18:08 -!- SgeoN1 has joined.
19:18:53 <SgeoN1> kallisti, update
19:19:37 <kallisti> ZOMG
19:19:59 <SgeoN1> kallisti, should I stop updating you?
19:22:49 -!- derdon has joined.
19:28:12 <kallisti> SgeoN1: nah
19:38:49 <Phantom_Hoover> AT LAST THE GOAT OF INEVITABILITY BLEATS
19:40:03 -!- GreaseMonkey has joined.
19:40:31 -!- kallisti has quit (Ping timeout: 252 seconds).
19:54:24 -!- SgeoN1 has quit (Quit: Bye).
20:14:10 -!- shadwick has joined.
20:16:00 -!- Gregor has set topic: #esoteric is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. | Everyone in #esoteric is ẌTREME | http://codu.org/logs/_esoteric/.
20:19:01 -!- elliott has joined.
20:19:03 <elliott> 21:45:41: <oerjan> <elliott> Maybe I'll just start talking about @ whenever anyone disagrees with me on reddit. <-- and then you can exchange strategy tips with Zephir_AWT
20:19:04 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
20:19:05 <elliott> 21:45:55: <oerjan> sorry, he's Zephir_Banned now
20:19:07 <elliott> 21:46:10: <oerjan> or was that Zephir_Banned2
20:19:10 <elliott> the aether wave theory guy?
20:19:45 -!- oerjan has joined.
20:20:10 <elliott> <elliott> 21:45:41: <oerjan> <elliott> Maybe I'll just start talking about @ whenever anyone disagrees with me on reddit. <-- and then you can exchange strategy tips with Zephir_AWT
20:20:10 <elliott> <elliott> 21:45:55: <oerjan> sorry, he's Zephir_Banned now
20:20:10 <elliott> <elliott> 21:46:10: <oerjan> or was that Zephir_Banned2
20:20:10 <elliott> <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
20:20:10 <elliott> <elliott> the aether wave theory guy?
20:20:35 <oerjan> yeah
20:20:58 <elliott> oerjan: is there any actual evidence he's a different person to the originator of the theory? :)
20:22:17 -!- ais523 has joined.
20:22:38 <oerjan> elliott: i thought nearly everyone assumed they were the same...
20:22:46 <elliott> oh, ok
20:23:00 <elliott> i see the wiki is now completely unusable
20:23:09 <elliott> ais523: can you disable registration?
20:23:18 <elliott> i guess not
20:23:30 <oerjan> <ais523> No, only graue can do that.
20:23:53 <elliott> oerjan: that's a terrible imitation of ais523's style
20:24:19 <oerjan> sorry
20:24:40 <elliott> 03:22:06: -!- rakesh has joined #esoteric.
20:24:40 <elliott> 03:22:12: <rakesh> hi
20:24:40 <elliott> 03:22:15: <rakesh> who i sthis
20:24:40 <elliott> 03:22:17: <rakesh> i am the god
20:24:41 <ais523> well, I would have said basically that, just in different words
20:24:45 <elliott> satan here, sup
20:25:23 <elliott> ais523: I don't suppose you can... stop new page creation?
20:25:26 <ais523> no
20:25:36 <ais523> nor can I even tell when a user registers, without polling the user list
20:25:42 <elliott> *sigh*
20:25:54 <oerjan> elliott: right, the only aspects of his style i _tried_ to imitate, i remembered wrong :P
20:26:04 <elliott> oerjan: heh, which were that?
20:26:17 <oerjan> capitalization and punctuation
20:26:19 <elliott> 07:06:25: <itidus20> if only alonzo church would have anticipated the computer terminal...
20:26:19 <elliott> 07:06:54: <zzo38> itidus20: What do you think it would be if he did so?
20:26:19 <elliott> 07:07:07: <itidus20> i just plucked his name at random
20:26:19 <elliott> :D
20:26:26 <oerjan> turns out his is identical to mine there
20:28:23 <ais523> well, /I/ can get a decent view of Recent Changes, even if nobody else can ("hide my edits")
20:28:35 <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:29:18 <elliott> ais523: um apart from all the spambot edits
20:29:23 <elliott> that you haven't got to yet.
20:29:31 <elliott> (yes, there's none now, but you're not on 24/7)
20:29:39 <elliott> `addquote <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:29:45 <ais523> well, I can delete them all in a couple of minutes
20:29:47 <HackEgo> 747) <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:29:57 <ais523> spambots are really good for getting me to memorise the keyboard shortcuts of all applicable programs
20:30:11 <oerjan> elliott: hey without context?
20:30:22 <elliott> oerjan: well ok
20:30:24 <elliott> `delquote 747
20:30:27 <HackEgo> ​*poof* <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:30:39 <elliott> `addquote <itidus20> if only alonzo church would have anticipated the computer terminal... <zzo38> itidus20: What do you think it would be if he did so? <itidus20> i just plucked his name at random [...] <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:30:42 <HackEgo> 747) <itidus20> if only alonzo church would have anticipated the computer terminal... <zzo38> itidus20: What do you think it would be if he did so? <itidus20> i just plucked his name at random [...] <oerjan> if only the marquis de sade would have anticipated hospital romance novels
20:31:19 <itidus20> i was thinking that, there is this great divide between a computers internal mathematics and calculations, and it's input output systems..
20:31:42 <itidus20> probably i'm thinking on useless tangents again
20:31:46 <ais523> IO doesn't actually exist, it's just an illusion created by humans
20:31:55 <itidus20> hmm
20:32:29 <itidus20> not to be offensive, but that kind of statement always depends on some undefined meaning of existence
20:33:14 <oerjan> itidus20: haskell is partly about making that divide more explicit
20:33:44 <itidus20> ais523: your comment it seems to hint at ancient ideas of the percieved vs the actual
20:33:52 <ais523> perhaps
20:34:11 <ais523> I'm still unconvinced anything actually exists, it seems more complex than the alternative where nothing exists
20:34:33 <itidus20> theres about million books on the subject
20:34:51 <oerjan> ais523: well the thing is that only one of those alternatives can simulate the other
20:35:12 <ais523> aha, but the version with nothing doesn't /have/ to simulate the version with something
20:35:16 <Phantom_Hoover> itidus20, or are they illusory books?
20:36:09 <elliott> ais523: except you have to explain your own experiences...
20:36:43 <ais523> not really; if nothing exists, then there's no need to explain anything
20:37:26 <elliott> ais523: you can't just contradict yourself and say that you don't have to explain the contradiction because [conclusion]
20:37:33 <Phantom_Hoover> ais523, but /something/ manifestly exists, for appropriate values of 'exists', 'something', 'manifestly' and, in fact, 'but'.
20:38:05 <ais523> elliott: if nothing exists, neither does the need to explain away contradictions
20:38:13 <ais523> what I'm saying is that there'd be loads of contradictions, but they wouldn't matter
20:38:31 <elliott> ais523: you _are_ just trolling, right?
20:38:36 <ais523> do you really think the universe is self-consistent? and do you know much about how difficult it is for systems to be self-consistent
20:38:36 <itidus20> hmmm
20:38:38 <ais523> elliott: I'm not entirely sure
20:38:40 <elliott> logic doesn't work that way. (even if you say it doesn't matter if it doesn't work that way.)
20:38:52 <ais523> I think it seems unlikely that the universe is based on logic
20:39:04 <itidus20> an illusion exists as an illuision rather than what it purported to be
20:39:16 <elliott> ais523: the universe isn't a set of axioms, so the question is incoherent
20:39:30 <itidus20> like, the rope exists.. the illusion of the snake exists :P
20:39:38 <ais523> hmm, quite possibly
20:39:55 <itidus20> i dunno
20:40:03 <itidus20> this is how i hurt my brain
20:40:06 <ais523> elliott: anyway, these sorts of thoughts, despite being probably nonsensical, is how I escaped from my depression recently
20:41:33 <oerjan> too much logic causes depression, i think
20:41:43 <itidus20> ya
20:42:00 <itidus20> @vixen
20:42:01 <lambdabot> I reject the cynical view that politics is a dirty business.
20:42:06 -!- elliott has left ("Leaving").
20:42:13 <itidus20> @vixen
20:42:14 <lambdabot> The presidency has many problems, but boredom is the least of them.
20:42:24 <monqy> bye elliotte
20:44:01 <itidus20> `log cake
20:44:28 <HackEgo> 2011-11-17.txt:03:56:38: <elliott> CakeProphet: no it's more like "let's look more like the conservatives because they keep winning" :P
20:45:09 <itidus20> `log crossaint
20:45:15 <HackEgo> 2011-09-15.txt:22:44:52: <HackEgo> 2011-09-15.txt:22:44:48: <itidus21> `log crossaint
20:45:29 <itidus20> `log doohickey
20:45:36 <HackEgo> 2010-06-29.txt:23:59:09: <cpressey> "rom the Earth perspective, Martian software is just another strange, mutually incompatible doohickey. Welcome aboard! Alas, our mudball is already ornamented with many such curios. They stick quite well."
20:45:57 <oerjan> `log croissant
20:46:02 <HackEgo> 2011-08-09.txt:20:41:27: <olsner> *croissants
20:46:09 <itidus20> hahahhaah
20:46:26 <itidus20> even olsner couldn't spell it
20:46:33 <ais523> `log bagel
20:46:35 -!- Zuu has joined.
20:46:39 <HackEgo> 2010-03-03.txt:03:37:30: <pikhq> This is America -- the country of the pizza bagel.
20:50:20 -!- sebbu2 has changed nick to sebbu.
20:52:41 <Phantom_Hoover> Pagel.
20:54:30 <oerjan> i must conclude that my usual grocery chain store this year has a campaign to gradually exterminate from their assortment any products that i actually use
20:54:52 <oerjan> you may think this paranoid, but the evidence is gradually becoming overwhelming.
20:59:06 -!- Ngevd has joined.
20:59:47 -!- elliott has joined.
21:00:07 <Ngevd> Hello!
21:00:12 <Ngevd> I'm a bloody idiotr
21:00:17 <oerjan> o, hell
21:00:19 <Ngevd> s/tr/t/
21:00:29 <Ngevd> In more ways than one
21:00:32 <oerjan> well then get to a hospital, sheesh!
21:00:39 <Ngevd> Nah, it's fine
21:00:45 <Ngevd> Just a little blood
21:01:17 <oerjan> blood loss has been shown to have severe side effects in animal research
21:08:32 <Ngevd> I like the most recent Freefall
21:08:50 <Ngevd> The most recent xkcd was good as recent xkcds go, but not memorable
21:09:00 <Ngevd> In that I remember liking it but don't remember it
21:09:39 <Phantom_Hoover> The alt text is actually witty.
21:11:58 <elliott> Gregor: Ping
21:12:41 <Gregor> elliott: NO
21:12:54 <elliott> Gregor: YES
21:13:00 <Gregor> elliott: WHYYYYYYYY
21:13:04 <elliott> Gregor: What
21:14:14 <Gregor> elliott: SYN/ACK
21:14:30 <elliott> Gregor: I just wanted to link you to a GC to benchmark GGGGGGGGC against :P
21:14:54 <Gregor> Ah
21:15:02 <Gregor> And?
21:15:02 <Ngevd> Is NAK essentially (Homestuck aside) "I'm not talking to you!"?
21:15:06 <Gregor> Where is it?
21:15:14 <elliott> Ngevd: SYN/ACK =/= NAK :P
21:15:27 <Ngevd> elliott, I still asked a question
21:15:29 <Gregor> Ngevd: Also, NAK is almost exactly the opposite of that.
21:15:35 <oerjan> > '\NAK'
21:15:36 <lambdabot> '\NAK'
21:15:40 <Ngevd> Really?
21:15:40 <oerjan> > ord '\NAK'
21:15:41 <lambdabot> 21
21:15:53 <elliott> Gregor: http://www.reddit.com/r/haskell/comments/n2mws/ghc_commit_allow_the_number_of_capabilities_to_be/c360cae?context=1 has the link; it's OpenJDK source code patched to use Azul Systems' stuff (requires kernel patches/module that are included)
21:16:05 <Gregor> Ngevd: NAK is negative acknowledgement, i.e. "I didn't get a message, please resend"
21:16:06 <elliott> And I think you need an x86 with virtualisation support
21:16:09 <Gregor> So it's more like "Please talk to me more"
21:16:12 <Ngevd> Oooh
21:16:57 <Gregor> elliott: I ... see no benchmark?
21:17:12 <elliott> Gregor: You already have a benchmark of GGGGGC vs. Java, do you not?
21:17:18 <Gregor> Yes.
21:17:28 <elliott> Gregor: s/OpenJDK you used for that/the OpenJDK from there/, no?
21:17:50 <Gregor> Their OpenJDK has (slightly) lower throughput than Sun's, it just has lower pause times.
21:18:25 -!- shadwick has quit (Quit: Leaving).
21:18:26 <elliott> Gregor: Fair enough, just thought you might not know there's a source release
21:19:03 <Ngevd> If we could travel at light-speed, it would take round-about 600 years to get to Kepler-22b
21:19:12 <elliott> Virtualisation for read barriers is a fun idea. I wonder if this answers my question about the overhead of hypervisors...
21:21:24 <Gregor> elliott: Ah, indeed I didn't.
21:21:39 <elliott> Gregor: So you didn't actually read the link :P
21:21:50 <elliott> "which contains a copy of OpenJDK which uses their concurrent collector: [...] It also contains the necessary linux kernel patches/kernel module to support it."
21:21:59 <elliott> I suppose it's ambiguous *shrug*
21:22:37 <Gregor> elliott: I did read that, I just wasn't clear on whether the source was included :P
21:22:51 <Gregor> Anyway I've seen them present their collector.
21:22:56 <Gregor> Honestly that's more valuable than source.
21:23:59 <elliott> Gregor: So do *you* know what the overhead of making a call to the hypervisor (from within a virtualised OS) is with x86 virtualisation? :P
21:24:28 <Gregor> I know that if you're asking that question, you shouldn't be benchmarking :)
21:24:36 <Gregor> (Also, no)
21:24:57 <elliott> Gregor: This is for a totally different thing :P
21:25:04 <elliott> An @-related thing.
21:25:08 <Gregor> Ah
21:25:10 <Gregor> Still, no
21:25:25 <elliott> Specifically, I need them to be significantly cheaper than Unix syscall overhead :P
21:25:30 <elliott> (For a certain idea)
21:25:48 <Gregor> Uhhhhhhh
21:25:57 <Gregor> They pretty well imply all the steps involved in a syscall ...
21:25:59 <Ngevd> Gonna wash forehead, brb
21:27:33 <elliott> Gregor: Yeah, that's why I don't think they are :P
21:28:05 <elliott> On the other hand, if that thing uses them to do read barriers, then I don't see how it isn't massively inefficient... but (a) I don't know how they do it, (b) I guess they could just enable it when they enter the GC?
21:29:45 <Gregor> (b) they could, but I don't think they do.
21:30:18 <Gregor> (a) it's not exactly a call to the hypervisor that's going on, it's more like using the virtualization /framework/ as a kind of advanced MMU
21:30:42 <Gregor> There's no actual context switch.
21:30:43 <elliott> <Gregor> (b) they could, but I don't think they do.
21:30:50 <elliott> "They use x86 hardware virtualization extensions to provide a read barrier for their concurrent collector, IIRC. The idea has existed for quite a while I think, but I couldn't provide you with the early literature supporting that at the moment. Before they started offering x86 solutions (about ~2 yrs ago,) they used their own custom processors (the Vega series) which provided the needed hardware support directly. The algorithm itself is actually p
21:30:50 <elliott> retty simple, IIRC."
21:30:58 <elliott> You managed to not read a single sentence of that erddit link :P
21:30:59 <elliott> *reddit
21:31:07 <elliott> Oh, wait.
21:31:11 <elliott> Gregor: You answered in reverse order wtf man.
21:31:12 <Gregor> X_X
21:31:15 <elliott> Wtf wtf wtf.
21:31:17 <elliott> That's not natural.
21:31:18 <elliott> Not natural.
21:31:21 <Gregor> That's why I specified the letters :P
21:31:36 <elliott> <Gregor> (a) it's not exactly a call to the hypervisor that's going on, it's more like using the virtualization /framework/ as a kind of advanced MMU
21:31:51 <elliott> Gregor: You mean the super-fancy new stuff where you can have a page table per virtualised OS?
21:32:03 <Ngevd> "The file system is integral to the operation and functionality of every computer-based task." <-- Whoever writes the Open University Linux course won't think much of @
21:32:19 <elliott> Ngevd: They won't think much, full stop.
21:32:20 <Gregor> elliott: They didn't go into enough detail when I saw their presentation for me to answer that :P
21:32:41 <elliott> Gregor: Doesn't really help this idea anyway, since I think it'd still end up having the same overhead >_>
21:32:42 <elliott> Oh well
21:32:57 <Jafet> Integrals are so much easier than linux file systems
21:33:19 <elliott> It just means that @'s performance benefits get trashed if you try and implement it by virtualising each individual (untrusted) program in ring 0 :)
21:34:09 <elliott> ais523: shouldn't you have waited until the other CFJ was rejudged?
21:34:22 <ais523> elliott: no, rule 754 is perfectly clear, and also power 3
21:34:35 <elliott> ais523: well, I disagree with your reasoning
21:34:44 -!- Patashu has joined.
21:34:45 <oerjan> Jafet: integrate e^(x^3) from 0 to a, okthxbye
21:34:48 <ais523> can you find a higher-power rule, or an equal-power rule with a lower number, that contradicts it?
21:35:01 <ais523> actually, it seems that that part of rule 754 might be interestingly scammable
21:35:08 <ais523> I'll have to think about it
21:35:16 <elliott> ais523: well, I was going to send this as an email, but: "Even though whitespace is formally irrelevant, surely intentional choice of whitespace can contribute to *intent*? And intent is what matters for registration."
21:35:39 <ais523> intent is a form of communication!
21:36:03 <ais523> my judgement: "the rules say X"; your counterargument: "X is broken"
21:36:07 <ais523> this is Agora, not Nomic 217
21:36:23 <elliott> that's not what I said at all, but I'll stick to just sending it as an email in case someone _else_ agrees.
21:40:44 -!- Taneb has joined.
21:42:42 <olsner> itidus20: the only way to spell croissant is croissant
21:42:48 -!- Ngevd has quit (Ping timeout: 252 seconds).
21:44:06 <ais523> `? misspellings of croissant
21:44:09 <HackEgo> misspellings of croissant? ¯\(°_o)/¯
21:44:13 <ais523> our learndb sucks :(
21:44:56 <Gregor> `? ais523
21:44:58 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
21:45:05 <Taneb> `?
21:45:08 <HackEgo> cat: wisdom/: Is a directory
21:45:11 <Taneb> Hang on
21:45:12 <Gregor> lol
21:45:20 <Taneb> I have a head injury, okay?
21:45:31 <oerjan> `learn misspellings of croissant include crossaint, but crusade ain't.
21:45:31 <Taneb> `? Ngevd
21:45:34 <HackEgo> I knew that.
21:45:44 <Gregor> oerjan: No, now it'll be
21:45:47 <Gregor> `? misspellings
21:45:49 <HackEgo> ​ӛl.|i_..bqe./w-B.l{!&[.aaCxN.\.N7y@.05UP?.PR=I+.)C-9U."5.$I|@P@..Z4]A@.ځ.'.=LTh?ZVVq%fP3%w9ͳvr./6a..z.yŝ.$Y({QIp .QG.wGkG".C~թhL%B.ܦk/<&i..Cx.f><.`.Cu..fO'U,...OZ.5N#HeGd쿛.)..ԉ.:nz.K.t`OLcc_.y.cX\YČ6.5K5../1 \ .YWCPYW?GJGaP.QM..8Y.B[\Sژ.y|
21:45:50 <HackEgo> misspellings of croissant include crossaint, but crusade ain't.
21:46:01 <Gregor> `? misspellings of croissant
21:46:03 -!- Jafet has quit (Quit: Leaving.).
21:46:03 <HackEgo> misspellings of croissant? ¯\(°_o)/¯
21:46:05 <oerjan> `run mv wisdom/misspellings wisdom/'misspellings of croissant'
21:46:07 <HackEgo> No output.
21:46:13 <oerjan> Gregor: I knew that.
21:46:28 <Gregor> `run echo 'misspellings of crosant? ¯\(°_o)/¯' > wisdom/'misspellings of croissant'
21:46:31 <HackEgo> No output.
21:46:32 <Patashu> Woah, I didn't know these things had a name! http://en.wikipedia.org/wiki/Floater
21:46:35 <Gregor> `? misspellings of croissant
21:46:37 <HackEgo> misspellings of crosant? ¯\(°_o)/¯
21:46:40 <ais523> what's with the line noise in `? misspellings?
21:46:48 <ais523> `? misspellings
21:46:50 <HackEgo> misspellings? ¯\(°_o)/¯
21:46:55 * oerjan swats Gregor -----###
21:47:01 <ais523> oh, Gregor screwing around?
21:47:02 <Gregor> ais523: Line noise?
21:47:23 <shachaf> elliott: We were playing a nice game of golf yesterday. You should join.
21:47:25 <Gregor> Oh, no, that was `? Ngevd, not `? misspellings
21:47:26 <shachaf> @where e_10
21:47:27 <lambdabot> let(!)=div;f n=1:n:1:f(n+2);w@(x:y)%[a,b,c,d]|t<-a!c,c+d>1,t==b!d=t:w%[10*(a-c*t),10*(b-d*t),c,d]|0<1=y%[x*a+b,a,x*c+d,c]in(2:f 2)%[1,0,0,1]>>=show
21:47:31 <Gregor> `run ls -l wisdom/ngevd
21:47:33 <HackEgo> lrwxrwxrwx 1 5000 0 12 Dec 7 21:47 wisdom/ngevd -> /dev/urandom
21:47:42 <ais523> ah, I see
21:47:45 <ais523> `? Ngevd
21:47:49 <HackEgo> ​_E=kvW{/#Aw\".M..r`.0$O$.?l)FT \ *a66.$. \ W:f;<.\&O.._+PLy`.d.". #֥I,bJu..oJ.9%2...΂8sI;K.Mv.!k'EyN.%.u.[A...?ca. \ K0.7Ed.@W)X.^k.
21:48:09 <ais523> hmm, it starts the same as last time, but doesn't continue that way
21:48:13 <ais523> `? Ngevd
21:48:16 <HackEgo> ​..8r.O=.eʭ:.[ǐ\'$'և:J....O=!h..60.psFY>ˋ@QXU..F'."!.j.اə˄+^^y$t.5!0.Ql°d.k{F0~Fpř.{iuY8а=P.ln3PxlWH0]f.fq..Zf.vpzL+..:F$Cݺ1Ln]|G.J...B^wB6o...0;U=.E4n줎&(\.R\...H5!ƴ/.lI*>FZ@s!.}َ.jTpKT=?9.
21:48:25 <elliott> huh, why does it start the same way?
21:48:27 <elliott> umlbox stuff? Gregor?
21:48:32 <Gregor> Donno
21:48:34 <elliott> shachaf: Yikes.
21:48:34 <ais523> OK, so /dev/urandom has started with ​ three times in a row
21:48:37 <ais523> your /dev/urandom is broken
21:48:48 <Gregor> It could very well be, as it's part of UML.
21:49:05 <Gregor> `run hexdump -C /dev/urandom | head
21:49:07 <HackEgo> 00000000 56 0a 71 c2 16 1d 36 33 ea 4a 25 a7 9d 07 bb 47 |V.q...63.J%....G| \ 00000010 0f 56 5b 7a 92 ed fd fd d4 47 bf d3 01 9f 85 16 |.V[z.....G......| \ 00000020 ca 26 dd e7 54 d4 c5 21 61 cc 9f fb f6 6f 54 9c |.&..T..!a....oT.| \ 00000030 1f d7 e9 90 cc 73 1a 1e 6e 79 b2 56 37 a5 28 c3 |.....s..ny.V7.(.| \ 00000040 dc 38 ef 4c 00 e4 72 aa 72 66 7d dd 95 bf 50 08 |.8.L..r.rf}...P.| \ 00000050 4d 50
21:49:09 <Gregor> `run hexdump -C /dev/urandom | head -n 1
21:49:12 <HackEgo> 00000000 84 b0 aa c2 dc 34 46 13 07 51 a1 0c cb 1c 13 7f |.....4F..Q......|
21:49:14 <Gregor> `run hexdump -C /dev/urandom | head -n 1
21:49:16 <shachaf> elliott: The goal is 140 characters.
21:49:17 <HackEgo> 00000000 72 49 94 bf 24 5e 39 73 27 c6 bc 1f dc 5d 64 17 |rI..$^9s'....]d.|
21:49:21 <Gregor> Nope, something to do with output.
21:49:24 <ais523> hmm
21:49:39 <elliott> `date
21:49:42 <HackEgo> Wed Dec 7 21:49:42 UTC 2011
21:50:26 <ais523> shachaf: that only seems to use `div` twice, I think it'd be shorter without the abbreviation
21:50:35 <elliott> 01:09:30: <oerjan> i hope he didn't think we have anything against python. it may very well be even more popular than haskell here
21:50:38 <elliott> oerjan: haha, 2010!
21:51:05 <olsner> is python popular here? wtf?
21:51:25 <monqy> 2010 sounds like a bad place
21:51:35 <ais523> olsner: it has been popular in the past; the channel's opinion has changed because its composition of people has changed
21:51:47 <ais523> I probably dislike Python more than I should because of kerio
21:52:02 <elliott> cpressey and olsner started the wave of pythonhating
21:52:16 <elliott> we all just kind of admitted to ourselves that we really hate python in the process
21:52:40 <oerjan> incidentally "pyton" is norwegian slang for awful
21:52:55 <ais523> we should make a list of reasons to hate python somewhere
21:52:56 <olsner> likewise in swedish, appropriately enough
21:52:56 <shachaf> ais523: Are you like those people who talk about how O(1) is faster than O(log n) without measuring it? :-)
21:53:01 <ais523> so that python supporters can try to defend it
21:53:12 <ais523> shachaf: not in that case, I tried to mentally measure it
21:53:30 <shachaf> ais523: Remember you need a space after the let.
21:53:33 <ais523> and I've golfed myself, typically something short like that has to be used three or four times before it saves characters to define an abbreviation
21:53:51 <shachaf> I measure one character saved by the abbreviation.
21:54:22 <ais523> let(!)=div; is 11, then there are two uses of ! so 13 altogether
21:54:29 <ais523> whereas two uses of `div` is 10
21:54:31 <shachaf> You still need a let.
21:54:39 <ais523> why?
21:54:44 <elliott> because you do
21:54:45 <shachaf> Because other things are being defined?
21:54:50 <shachaf> "f" and "%".
21:54:50 <ais523> oh, you're defining more than one thing
21:54:52 <ais523> I see
21:54:55 <elliott> ais523: how old is kerio, btw?
21:55:02 <shachaf> elliott: AGEIST
21:55:07 <ais523> elliott: university, I'm not sure what year
21:55:10 <ais523> so somewhere between you and me
21:55:11 <elliott> shachaf: totes
21:55:15 <elliott> ais523: oh
21:55:21 <ais523> he acts younger, though
21:55:25 <elliott> ais523: I was assuming he wasn't much older than I was when I acted like that
21:55:30 <ais523> he acts about your age
21:55:37 <shachaf> What's a kerio?
21:55:46 <ais523> shachaf: a person in another channel
21:56:00 <ais523> who could be considered a friend of mine based on message frequency
21:56:21 <itidus20> ponders about how individual letters/characters don't have any meaning individually (or do they?)
21:56:28 <shachaf> The channels we have in common are #interhack #unnethack #math #nethack
21:56:31 <oerjan> wait, kerio isn't one of elliott or tswett's other nicks? how weird.
21:56:37 <elliott> itidus20: "a"
21:56:39 <elliott> oerjan: wat
21:56:42 <elliott> tswett is kerlo
21:56:44 <shachaf> Whoa, man, you're, like, that ais523.
21:56:48 <ais523> shachaf: hmm, I didn't realise you were in #unnethack
21:56:54 <elliott> shachaf: You keep realising ais523 is that ais523.
21:57:01 <ais523> elliott: but I am ais523!
21:57:02 <oerjan> elliott: the keys are like right next to each other.
21:57:03 <ais523> so it's a good thing to realise
21:57:18 <ais523> oerjan: hmm, has that become a rogue punchline?
21:57:19 <shachaf> ais523: I don't actually watch it.
21:57:30 <shachaf> ais523: Do you know toft?
21:57:34 <oerjan> ais523: it's a bash quote, isn't it?
21:57:38 <ais523> shachaf: I do vaguely know toft
21:57:40 <ais523> oerjan: yes
21:57:48 <ais523> anyway, I'm having trouble figuring what you mean by "watch it"
21:57:53 <itidus20> the article 'a', pronoun 'i', abbreviations 'r,u'.. can be considered as single-letter words
21:57:56 <ais523> either word makes sense on its own, I just can't combine them
21:58:00 <elliott> ais523: the channel, surely
21:58:07 <ais523> people watch IRC channels?
21:58:09 <elliott> i.e. watch it for new messages
21:58:10 <elliott> sure
21:58:18 <ais523> hmm, I'd call that "read", I think
21:58:42 <elliott> ais523: you can listen to an IRC channel too, with the same meaning
21:58:44 <itidus20> but like.. the word 'rain' does not contain the meaning 'an instance of myself'
21:58:44 <elliott> :D
21:58:47 <elliott> but not feel one
21:58:50 <olsner> or "listen", since IRC contains talking
21:58:59 <ais523> taste the IRC
21:59:13 <olsner> the fnarf of new messages on IRC
21:59:19 <elliott> ais523: you can read it, because it's words; watch it, because it's animated; and listen to it, because it's talking
21:59:44 <oerjan> Æ e i a! Æ e i a æ å!
21:59:52 <Taneb> I would say...
21:59:55 <Taneb> um...
22:00:12 <ais523> ▒̂
22:00:14 <itidus20> i saw on wiki an article was talking about how one reads poetry, but speaks speeches
22:00:16 <Phantom_Hoover> <ais523> hmm, I'd call that "read", I think
22:00:27 <ais523> I always wanted to call a demon or similar entity in a computer game that
22:00:33 <ais523> and talk about how they were unspeakable
22:00:38 <ais523> because that simply cannot be pronounced
22:00:39 <Phantom_Hoover> Watch has more connotations of active monitoring, rather than glancing or logreading every once in a while.
22:00:43 <ais523> you could describe what it looked like, I guess
22:00:47 <ais523> but that's different from pronouncing it
22:00:51 <itidus20> and it said that when you read poetry you use the rules of poetics.. but when you speak in public you use the rules of rhetoric
22:01:05 <Phantom_Hoover> ais523, sure you can, it's just static.
22:01:19 <elliott> ais523: "I allege that ▒̂ did $X!" "Unspeakable!" "Yes, that guy."
22:01:24 <ais523> Phantom_Hoover: white noise (which I suspect you mean "static") is surprisingly hard to pronounce
22:01:28 <ais523> *you mean by
22:01:41 <elliott> ▒̂ isn't very random
22:01:48 <elliott> what's with that smudge, though?
22:01:52 <Phantom_Hoover> No it's not, you just go like "skrrrchh".
22:02:12 <ais523> elliott: it's a combining caret
22:02:19 <elliott> wat
22:02:42 <oerjan> Skrrrchh, 18 level demon of hell
22:02:44 <ais523> on top of a MEDIUM SHADE
22:02:56 <ais523> hmm, "medium shade" almost sounds like a monster name by itself
22:03:21 <Phantom_Hoover> "The medium shade hits! The medium shade bites!"
22:03:40 <itidus20> The medium shade casts fire.
22:03:52 <olsner> shady medium
22:04:10 <elliott> MEDIUM SHADE sounds like a watered-down pokemon move
22:04:27 <itidus20> While resting under the shade of a tree, you encounter a medium shade. En garde!
22:04:49 <itidus20> The medium shade preemptively bites you.
22:07:24 <oerjan> http://yafgc.net/?id=1016 (slightly nsfw)
22:09:28 <elliott> "This is the first appearance of the giant swastika in the background, which I put there to make sure you know these are Nazis."
22:09:38 <elliott> i wonder if anyone has ever commented on that thing :)
22:09:55 <Taneb> Somebody said it was actually the second
22:10:17 <elliott> ?
22:10:34 <Taneb> Second appearence
22:10:39 <elliott> ah
22:11:48 -!- Zuu has quit (Read error: Connection reset by peer).
22:13:40 -!- Taneb has quit (Read error: Connection reset by peer).
22:14:56 <tswett> Who's kerio?
22:15:15 <elliott> tswatt's alternate nick.
22:15:23 * elliott braces for a tswatting.
22:15:58 -!- Zuu has joined.
22:17:04 * oerjan tswats the tswit -----###
22:19:13 <Phantom_Hoover> <elliott> i wonder if anyone has ever commented on that thing :)
22:19:32 <Phantom_Hoover> You mean noticed the giant Lego swastika lying around his house?
22:19:45 <Phantom_Hoover> I guess it's kind of a hard thing to bring up in a conversation.
22:20:28 <Phantom_Hoover> "Say, David, you aren't some kind of construction set Nazi, are you?"
22:20:50 <elliott> Phantom_Hoover: OMG I'm imagining neo-Nazis who, like, act out the Fourth Reich with legos.
22:21:16 <oerjan> build your own auschwitz
22:21:50 <elliott> "Rerun commentary: Monty is standing in front of a good old blackboard, since obviously whiteboards hadn't been invented in the 1930s."
22:21:51 <Phantom_Hoover> elliott, skin tones might be an issue.
22:21:55 <elliott> Phantom_Hoover: Can I just say thank god I wasn't born in the 1930s.
22:22:20 <elliott> I think hearing chalk on blackboard for more than 3 minutes at a time would send me into tears.
22:22:23 <Phantom_Hoover> elliott, excuse me blackboards are amazing please leave this channel until you have learnt the error of your ways.
22:22:31 <elliott> Phantom_Hoover: ;__;
22:22:36 <elliott> Phantom_Hoover: THEY HURT SO BAD
22:22:51 * oerjan had blackboards in his school in the 80s
22:22:52 <Phantom_Hoover> elliott, if you're some kind of WEAK ENGLISH PANSY, perhaps.
22:23:01 <Phantom_Hoover> oerjan, there's a blackboard in my school lab.
22:23:03 <oerjan> and for that matter in university
22:23:21 <Phantom_Hoover> It's covered in crap we drew on it.
22:23:32 <elliott> oerjan: In the mid-1960s, the first whiteboards began to appear on the market. In classrooms, their widespread adoption did not occur until the early 1990s when concern over allergies and other potential health risks posed by chalk dust prompted the replacement of many blackboards with whiteboards.[1]
22:23:48 <elliott> Phantom_Hoover: Seriously though I don't like whiteboards either but blackboards are quite literally unbearable.
22:23:59 * elliott can't stand a lot of sounds and it is annoying.
22:24:27 * oerjan is with elliott
22:24:35 <Phantom_Hoover> You are both awful.
22:24:49 <oerjan> i mean on sounds in general
22:24:59 <Phantom_Hoover> You don't get the same sense of satisfaction from writing on a whiteboard.
22:25:07 <elliott> I don't really like whiteboards either!
22:25:16 <oerjan> by satisfaction, you mean chalk on your fingers, right?
22:25:25 <elliott> What we need is those ~electronic boards~ except not shit.
22:25:36 <Phantom_Hoover> With blackboards, it's like "I am WRITING and you are going to READ this because of all these IMPORTANT CLACKY SOUNDS it is making".
22:25:41 <elliott> (Who the hell designed those to use a projector?)
22:25:49 <elliott> Phantom_Hoover: Hey, I wouldn't care if it was just clacky sounds.
22:25:54 <Phantom_Hoover> elliott, people who didn't have much money.
22:26:10 <oerjan> oh the clacky sounds, i'd forgotten them...
22:26:14 <Phantom_Hoover> THE SCRAPEY SOUND IS COMPLETELY COUNTERBALANCED BY THE CLACKY SOUND
22:26:18 <elliott> Phantom_Hoover: Would you like a board that, whenever anyone wrote in it, someone else had to blow a really awful whistle directly into your ear?
22:26:27 <elliott> THIS IS THE ONLY WAY YOU CAN UNDERSTAND
22:27:25 <Phantom_Hoover> THAT WOULD BE ACCEPTABLE
22:27:36 <Phantom_Hoover> http://en.wikipedia.org/wiki/Sound_of_fingernails_scraping_chalkboard
22:27:41 <Phantom_Hoover> Least succinct WP article title?
22:28:20 <elliott> "I don't know if HouseOfScandal meant to be ironic, but i actually think that this article is not suitable for wikipedia. I suggest to delete it since it doesn't present any matter of fact, nor any information thta can be considered useful by anyone. The fact that the linked research won the Ig Nobel prize means something to me. Diego, 16:12, 16 April 2008"
22:28:52 * elliott has always been a bit wary of the Ig Nobel prizes since he thought they could easily fuel anti-scientific sentiment towards the "useless" research involved...
22:29:31 <Phantom_Hoover> elliott, it's *supposed* to be for things which make you laugh, then make you think; whether that's actually reflected in the awards I'm not sure.
22:31:21 <elliott> Phantom_Hoover: "The awards are sometimes veiled criticism (or gentle satire)." :p
22:31:35 <elliott> Phantom_Hoover: I mean, you can't award legitimate-but-funny scientific research /and/ quacks.
22:31:38 <Phantom_Hoover> "The first Ig Nobels were awarded in 1991, at that time for discoveries "that cannot, or should not, be reproduced"."
22:31:39 <oerjan> shocking
22:31:40 <elliott> Which they do.
22:31:58 <Phantom_Hoover> That sounds a lot more amusing than what they do now.
22:32:06 <elliott> "they are followed by a set of public lectures by the winners at MIT" I assume the cranks turn down the opportunity...
22:32:12 <elliott> oerjan: ?
22:32:38 <oerjan> elliott: veiled criticism, what gall
22:32:46 <elliott> oerjan: hi
22:32:58 <elliott> [[
22:32:59 <elliott> Paul DeFanti is the fictional recipient of the 1991 Ig Nobel Prize in the area of Pedestrian Technology "for his invention of the Buckybonnet, a geodesic fashion structure that pedestrians wear to protect their heads and preserve their composure." This makes him one of only three fictional people to have won the award.[1] DeFanti supposedly demonstrated his Buckminster Fulleresque invention at the awards ceremony. According to Bill Jackson at the
22:33:00 <elliott> Massachusetts Institute of Technology:
22:33:00 <elliott> There was a "spontaneous" demonstration of the device's effectiveness when a rather attractive woman stormed into the room, accompanied by a police officer. The woman declared that DeFanti had fathered her child. She attempted to hit him, but the Buckybonnet protected him.[2]
22:33:04 <elliott> ]]
22:33:12 <elliott> That sounds like the most awkward skit ever.
22:34:03 <oerjan> i guess they just didn't have enough candidates that year.
22:34:23 <pikhq_> elliott: Eh, they've had cranks lecture at MIT before. Just for kicks, they had Dr. Gene Ray, Cubic and Wise Above God, lecture once.
22:34:36 <elliott> "In 1995, Robert May, Baron May of Oxford, the chief scientific adviser to the British government, requested that the organizers no longer award Ig Nobel prizes to British scientists, claiming that the awards risked bringing genuine experiments into ridicule."
22:34:39 <elliott> Phantom_Hoover: JUST THE BRITS THOUGH
22:34:46 <Phantom_Hoover> elliott, it looks like it's split between "funny but legitimate research" and "mockery, normally of non-scientists".
22:34:50 <elliott> pikhq_: I keep meaning to watch that.
22:35:04 <elliott> Phantom_Hoover: Right, and the problem is that everyone /else/ can't tell the difference.
22:35:23 <elliott> pikhq_: But: "as part of the Independent Activities Period, a student-organized extra-curricular event".
22:35:27 <elliott> So it wasn't really an official thing.
22:36:18 <pikhq_> Well, yes; the whole point of that is "let's have a week or two of random shit happening". As is tradition.
22:37:06 <pikhq_> Sorry, 4 weeks.
22:38:23 <elliott> "Petition to pardon computer pioneer Alan Turing started" huh, didn't we already have one?
22:38:27 <elliott> or was that just an apology, and not a pardon
22:38:33 <elliott> "A posthumous apology to Alan Turing was made by Gordon Brown in 2009" right
22:38:42 <copumpkin> yep
22:38:52 <elliott> Surprised they didn't kill two birds with one stone.
22:39:04 <elliott> But I guess bear-ocracy.
22:43:45 <Phantom_Hoover> "Before Time Cube, Otis E. Ray advocated the sport of marbles." — WP
22:43:52 <Phantom_Hoover> Were they 4-sided cubic marbles?
22:44:34 <oerjan> in any case, he lost them.
22:46:17 <Phantom_Hoover> He wasn't very good, clearly.
22:46:51 <ais523> don't 4-sided cubes only exist in 2D?
22:47:19 <oerjan> i think that's a whoosh.
22:47:43 <Gregor> So I went to the vet yesterday.
22:48:08 <Gregor> And my checkout form said (amongst many other things) that her nose was "pink and moist"
22:48:13 <Gregor> And i was like UHHH EXCUSE ME
22:48:20 <Gregor> IT'S ORANGE.
22:48:44 <oerjan> Gregor's lack of fashion sense is finally getting an explanation
22:48:57 <Gregor> But her nose IS orange!
22:49:12 <oerjan> ...from a certain point of view.
22:49:12 <olsner> Gregor goes to a vet and refers to himself as her?
22:49:31 <olsner> makes sense
22:49:51 <olsner> the orange nose is weird though
22:49:59 <elliott> Gregor is actually a goat.
22:51:20 <pikhq_> Gregor is actually a rare species of mangoat
22:51:37 <oerjan> the fashion sense comes from the mango part
22:51:41 <ais523> perhaps the vet was female
22:51:42 <Gregor> As opposed to one of the more common species of mangoat.
22:52:09 <Gregor> `addquote <pikhq_> Gregor is actually a rare species of mangoat <oerjan> the fashion sense comes from the mango part
22:52:12 <HackEgo> 748) <pikhq_> Gregor is actually a rare species of mangoat <oerjan> the fashion sense comes from the mango part
22:52:24 <Gregor> THE CAT IS FEMALE I WAS BEING IMPLICIT Y'ALL
22:52:42 <olsner> ais523: oh, the *vet*'s nose was pink and moist?
22:52:44 <pikhq_> Insufficiently implicit.
22:53:04 <ais523> olsner: knowing that Gregor is male, it's the only possible referent in his sentence
22:53:28 <pikhq_> "So went to the vet yesterday. "And checkout form said nose was 'pink and moist'." "And was like UHHH EXCUSE." "ORANGE."
22:53:35 <Gregor> s/So I went to the vet yesterday\./So I brought my female cat to the vet yesterday./
22:54:01 <pikhq_> There, made like English was a pro-drop language.
22:54:11 <ais523> pikhq_: your double quotes don't match
22:54:19 <pikhq_> ais523: BLAH
22:54:20 <Gregor> ais523: It's also a quo-drop language.
22:54:23 <ais523> which set should I interpret as two single quotes?
22:54:34 <olsner> someone's gender according to the definition you use doesn't necessarily conform to their preferred pronoun
22:54:38 <pikhq_> s/. /." /
22:54:41 <pikhq_> ...
22:54:43 <pikhq_> s/\. /." /
22:54:53 <ais523> olsner: hmm, right
22:55:00 <ais523> *knowing that Gregor typically refers to himself with male pronouns
22:55:04 <pikhq_> olsner: In Gregor's case, it does.
22:55:36 <olsner> I don't know that! at least I won't assume it when trying to figure out the least plausible referent of a pronoun
22:55:40 <pikhq_> (unless there's something I don't know as regards this)
22:56:48 <oerjan> should someone break to olsner than english is usually based on using the _most_ plausible referent?
22:56:53 <elliott> Gregor actually uses the caveman set of pronouns: Gregor/Gregor/Gregor/Gregor.
22:57:19 <ais523> elliott: I am weirdly reminded of Elliottcraft
22:57:31 <Gregor> Gregor no appreciate #esoteric inspection.
22:57:40 <Phantom_Hoover> elliott, what's the fourth?
22:57:41 <Gregor> Gregor make you pay for insubordination.
22:57:47 <elliott> Phantom_Hoover: Isn't there four?
22:57:48 <Gregor> Gregor caveman with extensive vocabulary.
22:58:13 <pikhq_> Ġ actually uses the set of pronouns Ġ/Ġ/Ġ/Supercalifragilisticexpialidocious'
22:58:14 <elliott> There's five, actually (subject, object, possessive adjective, possessive pronoun, reflexive, according to this WP article).
22:58:15 <Phantom_Hoover> Nominative, accusative, genitive are the only distinct ones I can think of.
22:58:35 <elliott> He/him/his/his/himself, they/them/their/theirs/themself
22:58:36 <olsner> elliott: that list has 6 entries
22:58:44 <elliott> e/em/eir/eirs/emself (Spivak)
22:58:52 <elliott> olsner: um no.
22:59:05 <elliott> e/em/eir/eirs/eirself (Agoran Spivak)
22:59:05 <oerjan> i/me/my/mine/myself, i presume
22:59:24 <monqy> "according the this WP article" is my favourite style of pronouns
22:59:35 <elliott> oerjan: wat :P
22:59:38 <Phantom_Hoover> *accordine
22:59:45 <elliott> monqy: "to this", surely?
22:59:53 <monqy> oh yes
23:00:03 <elliott> My preferred according to this WP article pronoun is U+FFFF.
23:00:27 <olsner> that's not a valid unicode character
23:00:41 <elliott> exactly!
23:01:15 * Phantom_Hoover → sleep
23:01:16 -!- Phantom_Hoover has quit (Quit: Leaving).
23:01:17 * elliott dislikes the "ey" style of Spivak intensely.
23:01:28 * Gregor dislikes Spivak intensely.
23:01:50 * olsner spivaks intense dislikely
23:01:53 <elliott> Gregor: that's cuz you suck
23:02:48 * pikhq_ dislikes pronouns
23:03:12 <oerjan> i like them
23:03:30 <elliott> more like AMATEURnouns
23:03:44 <pikhq_> Hereby declare no person shall use pronouns! From now on, shall omit nouns!
23:03:54 <pikhq_> oerjan: Yeah, well, dislike
23:04:07 <coppro> pikhq_: concur!
23:04:10 * elliott could see this becoming confusing.
23:04:30 <oerjan> pikhq_: swat -----###
23:04:51 <pikhq_> elliott: One only omits when pronouns would be used.
23:05:16 <elliott> pikhq_: If you keep this up for another two lines I'll start referring to you with null pronouns :P
23:06:03 <pikhq_> elliott: Very well þen. I ſhall ſimply drift to archaic orþography.
23:06:41 <pikhq_> And ſo ſhall we all, I ſincerely hope.
23:06:53 <ais523> ſþ
23:06:58 <ais523> just checking they were on my compose key
23:07:05 <ais523> (fs and th, respectively)
23:07:07 <elliott> sth --ais523
23:07:41 <ais523> /* maybe everyone should make all their comments /actual/ comments */
23:08:09 <monqy> actual comments in what language
23:08:16 <elliott> esme
23:08:17 <pikhq_> I prefer doing it in proper languages such as Brainfuck
23:08:23 <ais523> elliott: ouch, oh no
23:08:32 <ais523> does esme have defined comment semantics?
23:08:41 <elliott> ais523: iirc one of the example programs has something that /looks/ like a comic
23:08:50 <ais523> http://esolangs.org/wiki/Esme
23:08:54 <elliott> pikhq_: ooh, now I'm tempted to run all of #esoteric as a brainfuck program
23:09:02 <pikhq_> Which、of course、sucks without the full power of UNICODE。
23:09:08 <ais523> "Anything beginning with a | can contain anything and is a comment"
23:09:18 <elliott> ais523: wow, how well-specified for esme
23:09:29 <ais523> the example given contains a | at the end of a comment too
23:09:30 <oerjan> elliott: ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
23:09:37 <elliott> oerjan: :(
23:09:46 <elliott> ok maybe Cise then :P
23:09:48 * oerjan cackles evilly
23:09:51 <ais523> run it as an FYB program, that has defined semantics for mismatched brackets
23:10:07 <oerjan> curses
23:10:11 <ais523> also, the way cise works, wouldn't something really long take millenia to do anything at all?
23:10:37 <elliott> probably
23:11:30 <ais523> I forgot how awesome Talk:Esme was, incidentally
23:12:23 <elliott> ais523: Gregor: wow, these people on reddit are still claiming that you can perfectly determine object lifetime statically as long as there are no cycles
23:12:30 <elliott> the reality distortion field lives on...
23:12:41 <Gregor> I
23:12:42 <Gregor> What
23:12:44 <ais523> elliott: I was actually thinking about the whole refcount/GC thing
23:12:58 <elliott> ">I don't know what you mean by "the general case" but that is exactly what ARC does, so I'm going to say it is possible.
23:12:58 <elliott> The lifetime of an object is not statically determinable; if it was, we wouldn't need runtime automatic memory management at all."
23:12:59 <elliott> --me
23:13:01 <elliott> "It doesn't do cycle detection. It's reference counting; cyclic disconnected subgraphs will not be reclaimed. In the general case, the programmer sometimes needs to use zeroing weak references to avoid memory leaks."
23:13:04 <elliott> --reply
23:13:04 <ais523> and wondering "what proportion of objects have statically determinable lifetimes?"
23:13:07 <Gregor> elliott: The "as long as there are no cycles" corollary is bizarre.
23:13:12 <ais523> but I certainly didn't think that it would be all of them
23:13:16 <elliott> Gregor: It's because it's ~refcounting~
23:13:29 <elliott> Gregor: Everyone knows refcounting can't do cycles, therefore as long as you give that caveat, surely this impossible thing must work!!
23:13:42 <Gregor> ais523: It's not an uncommon optimization to stackify things with known lifetime, but it's not all objects :P
23:14:11 <ais523> Gregor: right, indeed
23:14:14 <ais523> and I was thinking of more than stackify
23:14:20 <elliott> ais523: look into region inferecne
23:14:22 <ais523> but rather, "this object is always deallocated on line n"
23:14:22 <elliott> inference
23:14:37 <Gregor> ais523: Fair enough.
23:14:38 <elliott> certainly you can do this kind of stuff in practice, but that's not what the "general case" means :)
23:14:42 <ais523> right, indeed
23:14:45 <ais523> I'm not disagreeing with you
23:14:55 <elliott> yeah
23:14:55 <ais523> it's like wondering "how good an infinite loop detector is it possible to make?"
23:15:03 <elliott> ais523: that's why I pointed you to existing work on the topic
23:15:10 <ais523> yep, thanks
23:15:38 <elliott> "Do you have a citation for "any GC worth even half its salt will surpass [reference counting]"? I would like to think that the iOS engineering team didn't completely miss the ball when they decided that GC was too expensive for use on the iPhone."
23:15:40 <elliott> *sigh*
23:17:07 <olsner> you may like to think it all you like, doesn't make it true
23:17:07 <shachaf> elliott: It's, like, Apple, man.
23:17:41 <elliott> I find it perfectly plausible that Apple's existing Objective-C GC was way too slow/thrashing on the original iPhone when it was being developed in 2006. :P
23:17:56 <ais523> I wouldn't be surprised if they didn't think "GC is too expensive", but "GC has the wrong performance characterstics"
23:18:38 <elliott> Y'know what's too slow to run on phones?
23:18:40 <elliott> Objective C.
23:18:43 <Gregor> X-D
23:19:10 <Gregor> I will go out on a limb and say that with very-restricted memory, refcounting will probably beat GC. Only because GC is thrash hell if it doesn't have enough space.
23:19:16 <elliott> Right.
23:19:24 <Gregor> (Note: Not a limb :P )
23:19:36 <elliott> Original iPhone had 128 megs of RAM.
23:19:50 <Gregor> ... srsly
23:19:59 <elliott> Gregor: Srsly howso?
23:20:00 <Gregor> I also find it easy to believe that Apple are durptards.
23:20:09 <Gregor> You can definitely GC with 128MB of RAM :P
23:20:19 <elliott> Gregor: Yah, but it was also a REALLY slow CPU.
23:20:21 <Gregor> Probably not if you're Apple and so all of your programs barely function with <1GB though *shrugs*
23:20:22 <olsner> hmm, how long ago was iPhone anyway?
23:20:25 <elliott> 412 MHz ARM.
23:20:42 <elliott> Refcounting is slow, but the pauses are more predictable and spread-out than GC.
23:20:45 <elliott> olsner: 2007
23:22:08 <olsner> hmm, I'm trying to figure out if 128MB RAM was huge or normal (for a phone) back then
23:22:22 <elliott> Gregor: (iPhone 4S has 1 GHz dual-core ARM and 512 megs of RAM :P)
23:22:40 <elliott> So GC would definitely work nowadays, but I think Objective-C only admits conservative GCs, so perhaps not.
23:22:45 <olsner> the project I was working on back then had something like 11MB of heap available for the application
23:23:04 <Gregor> Ohhhhhhhh yeah conservative GCs can be slow too. Unless of course they used Boehm. Which would definitely beat refcounting :P
23:23:10 <Gregor> And also is easily and publicly available.
23:23:17 <elliott> olsner: pretty big, I think
23:23:42 <elliott> Gregor: I don't know that Boehm works with objc...
23:23:54 <elliott> But Objective-C doesn't do much funny business, so maybe it would.
23:23:54 <Gregor> elliott: Why wouldn't it?
23:24:13 <elliott> Gregor: Well, OK :P
23:24:20 <Gregor> It's friggin' Boehm :P
23:24:27 <elliott> Gregor: All you need is somewhere to use an offset rather than a pointer.
23:24:29 <Gregor> Unless you're xoring your pointers or writing them to disk, you're pretty much OK.
23:24:51 <Gregor> elliott: That offset is irrelevant if you don't have the pointer base somewhere ... unless you mean an offset into a /different/ object, in which case "OK"
23:25:07 <elliott> Fair enough
23:25:23 <elliott> I wonder if there's a xor linked list sitting around in some commonly-used library somewhere unnoticed
23:25:26 <Gregor> All the things that break Boehm are /crazy/ :P
23:25:30 <elliott> Causing weird bugs for Boehm programs
23:25:34 <Gregor> Hah
23:25:57 -!- pikhq has joined.
23:25:59 <Gregor> Boehm has a #define to hide your pointers from the GC that just xors them against -1.
23:26:13 -!- pikhq_ has quit (Ping timeout: 252 seconds).
23:26:47 <elliott> Gregor: I like my language-agnostic semantics-preserving conservative GC, which (a) is uncomputable and (b) would never free an object even if it wasn't.
23:26:49 <elliott> And X-D
23:26:57 <elliott> Don't you mean ~0 :)
23:27:20 <Gregor> I don't recall how it specifies it, I thought it was -1 but it could be ~0 too.
23:27:34 <Gregor> I suppose ~0 makes it portable to all the systems where you want GC and don't use 2s-complement.
23:27:44 <elliott> Xoring with -1 would be weird on nonexistent non-2's-complement systems :P
23:27:55 <Gregor> elliott: And also you want GC.
23:28:05 <olsner> I think -1 and ~0 are the same for unsigned values, but you'd need to get -1 converted to unsigned rather than the other one to int
23:28:26 <elliott> Gregor: (Did I ever tell you how that impossible GC worked, it's great)
23:28:29 <Gregor> olsner: They're the same for any kind of signedness ... and you need to convert them to a pointer regardless.
23:28:33 <Gregor> elliott: I'm afeared...
23:29:25 <elliott> Gregor: It simply considers the computer's RAM as a single object, and applies every single function from <array of bytes> -> <set of addresses> to it; everything not in the resulting union'd set is freed.
23:29:36 <elliott> Gregor: This handles xor'd linked lists, arithmetic, ...
23:29:44 <Gregor> lol
23:30:00 <Gregor> Note that every single function from <array of bytes> -> <set of addresses> also involves adding all possible numbers.
23:30:01 <elliott> Gregor: UNFORTUNATELY you need to include the hard drive and the entire internet in the state too, or it's breakable.
23:30:04 <Gregor> Hence, can't free anything.
23:30:06 <elliott> Yes.
23:30:07 <elliott> Exactly.
23:30:10 <elliott> BUT it never breaks!
23:30:23 <Gregor> Neither does malloc() without free() by that standard :P
23:30:24 <elliott> As long as you have no IO :P
23:30:37 <elliott> Gregor: Yeah, but that doesn't scan the heap, ergo it isn't a GC.
23:30:52 <Gregor> elliott: cpressey would argue that scanning the heap doesn't make it a GC>
23:31:09 <elliott> Gregor: ~A -> ~B =/= A -> B
23:31:24 <elliott> Scanning the heap is a necessary but not sufficient condition to be a GC.
23:31:53 <elliott> speaking of cpressey, why haven't we discussed Madison in here yet?
23:32:39 <Gregor> Also, scanning the /entire/ heap isn't even a necessity.
23:32:44 <Gregor> You don't need to scan dead objects :P
23:33:05 <elliott> Gregor: And you don't have to scan objects you can mathematically prove don't need to be, either :P
23:33:08 <Gregor> Plus, that's only for a reachability-based GC. Crazy future GCs won't be rechability-based (haw haw haw DOUBLE RAINBOW)
23:33:16 <elliott> So in the Apple universe, GCs are nops.
23:33:23 <olsner> magic-based GC
23:33:24 <elliott> Well, not nops, just lists of free statements :)
23:33:36 <elliott> Gregor: Heh, what's the FUTURE of GCs?
23:33:57 <Gregor> elliott: Every year at ISMM somebody makes a quip about non-reachability-based GCs.
23:34:09 <Gregor> elliott: And then everybody kinda stares at their shoes.
23:34:12 <Gregor> elliott: And then they move on.
23:34:19 <elliott> Gregor: Noice
23:34:23 <elliott> Wow, argh, I'm turning into you
23:34:24 <elliott> Stop it
23:34:46 <elliott> greI can't think of anything that would be (a) non-reachability-based and (b) a GC by my definition of a GC...
23:34:49 <elliott> *Gregor: I
23:36:00 <Gregor> The problem is that the way we define GCs implies reachability. I'll tell you about my BRILLIANT (read: terrible) LRU-based GC once I get back from dinner :P
23:37:01 <elliott> Memory64MB (8100 series) or 128MB (8220) Internal, MicroSD slot
23:37:01 <elliott> (2006 BlackBerry Pearl)
23:37:13 <elliott> olsner: I'll say that the iPhone had a large but not unheard of amount of memory for its time
23:37:20 <elliott> But smartphones in general were rare at the time, sooo
23:37:30 <elliott> The average phone probably had like 3 bytes of RAM :P
23:37:33 <elliott> (And probably still does.)
23:37:44 <olsner> S40 devices *still* give you only 2MB of heap, regardless of the amount of installed memory
23:38:09 <elliott> seriously?
23:38:11 <elliott> 2 megs?
23:38:13 <olsner> yep
23:38:25 <elliott> wtf
23:38:29 <elliott> how much ram do they typically have
23:38:39 <olsner> actually next year some models are coming out that give you *4MB* of heap, it's like insane
23:39:30 <ais523> elliott: I'd guess tens or hundreds of KB of RAM for a typical dumbphone, but it's just a guess
23:39:56 <olsner> (but then, iirc, they've quadrupled the screen size)
23:40:00 <elliott> ais523: well, the most common phones are overwhelmingly Nokia's black-and-white models, iirc
23:40:10 <elliott> mostly due to their ubiquity less-developed countries
23:40:12 <elliott> *ubiquity in
23:40:31 <olsner> all or most of those low-end nokias are S40
23:40:39 <elliott> ais523: anything with S40 presumably has at least 2 megs of ram according to what olsner said, and that's the most readily-accessible dumbphone in the first world
23:40:44 <elliott> *dumbphone OS
23:40:52 <ais523> elliott: hmm, interesting
23:40:56 <elliott> olsner: not the monochrome ones, I don't think
23:42:49 <elliott> olsner: http://en.wikipedia.org/wiki/Nokia_1202
23:42:52 <elliott> S30 is apparently a thing!
23:43:02 <elliott> http://en.wikipedia.org/wiki/Series_30_(software_platform)
23:43:09 <elliott> that 1600 is HIDEOUS
23:46:32 -!- ais523 has quit (Remote host closed the connection).
2011-12-08
00:15:44 -!- augur has quit (Remote host closed the connection).
00:36:30 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:47:00 -!- Jafet has joined.
00:53:15 <oklopol> lul i got kind of carried away, suddenly i realize i'm at work at 2:30 :D
00:54:16 <oklopol> (and my ex is coming over at 10:00 and i promised to the unstuffify the floor)
00:55:10 <elliott> oklopol: hi
00:55:20 <oklopol> and i have to be at uni from 10:00 to 18:00 and i then need to finish my article and i need about 10 hours of sleep. i'm sure this will work out well.
00:55:27 <oklopol> hi elliott, what's up with you
00:55:38 <elliott> i'm made of fish
00:55:58 <oklopol> wow. i feel so silly now, whining over nothing.
00:56:15 <oklopol> before you said that, i was perfectly content about whining over nothing
00:56:30 <oklopol> did you know the earth has a moon
00:57:04 <elliott> no
00:58:35 <oklopol> at 1:30, i realize a very crucial step of the proof of my theorem doesn't work (the article is just one 6 page proof + fluff)
00:58:40 <oklopol> that was kind of fun.
00:59:08 <oerjan> exhilarating
00:59:10 <elliott> :D
00:59:11 <oklopol> i then obtained a huge math high (it's a thing), and found another way
00:59:17 <elliott> oklopol: you should publish it with oerjan
00:59:21 <elliott> wait for it
00:59:25 <elliott> here it comes
00:59:35 -!- derdon has quit (Remote host closed the connection).
00:59:40 * oerjan whistles innocently
00:59:43 <elliott> dammit
00:59:43 <oklopol> i think i'll publish it alone
01:00:09 -!- copumpkin has joined.
01:00:09 <oklopol> it's one of my best proofs ever if you ask me (and who else would you ask)
01:00:25 <oklopol> kind of annoying that it was also the first article i wrote
01:00:41 <copumpkin> proofs!
01:00:52 <oerjan> i don't know, you're kind of biased
01:00:54 <elliott> yes copumpkin that's a word oklopol said
01:01:18 <oklopol> we had a visiting lecturer today
01:01:31 <oklopol> he told us about this famous open problem that he and his student had proved various special cases of
01:01:43 <oklopol> after the lecture, i told him they'd been solving the wrong problem
01:02:01 <oklopol> he kind of agreed :D
01:02:05 <copumpkin> :O
01:02:20 <oerjan> then he went to plan how to kill you
01:02:35 <oklopol> (i had a way better generalization of the problem that the open one generalized)
01:03:22 <oklopol> oerjan: also he may have just been polite. but anyway obviously i'm right.
01:03:41 <oerjan> obviously.
01:03:57 <oklopol> the original problem had these great symmetry properties that the generalization lost, and there's an obvious generalization that loses none of them
01:04:36 <oklopol> i also further generalized it to an arbitrary dimension and he's like oh, we did this in another way, obviously not nearly as elegant as yours.
01:05:11 <oklopol> oh wow i should really clean this place up
01:05:41 <oklopol> i mean there's a stack of stuff about half a meter high that fills the floor completely
01:06:08 <oerjan> in a tiling pattern
01:06:30 <oklopol> a highly aperiodic one
01:07:29 <oklopol> although i suppose i should say non-periodic, in case my supervisor sees this.
01:07:45 <oklopol> i'm pretty sure copies of my stuff also tile periodically
01:11:27 <oklopol> \begin{theorem}
01:11:43 <oklopol> They do.
01:11:49 <oklopol> \end{theorem}
01:12:02 <oklopol> \begin{proof}
01:12:32 <oklopol> I have a lot of stuff. Surely there's a dice somewhere in there.
01:12:37 <oklopol> \end{proof}
01:13:59 <oerjan> http://blog.stackoverflow.com/wp-content/uploads/then-a-miracle-occurs-cartoon.png
01:19:06 <elliott> oklopol: you can't talk in caps stop :(
01:20:04 <oklopol> they make me use caps at work :(
01:20:19 <elliott> oklopol: have you actually tried writing papers in lowercase :D
01:20:20 <Sgeo> oerjan, old
01:20:39 <oklopol> oerjan: nice and relevant
01:21:05 -!- pikhq has quit (Ping timeout: 252 seconds).
01:21:06 <elliott> Sgeo: it's only "old" if the linking isn't directly relevant...
01:21:11 -!- pikhq has joined.
01:21:25 <Sgeo> Oh
01:22:15 <oklopol> maybe he just meant oerjan is old
01:22:53 <oerjan> also, you cannot complain about things that are older than you are, they count as "ancient"
01:25:41 -!- elliott has quit (Read error: Connection reset by peer).
01:25:55 -!- elliott has joined.
01:37:09 -!- elliott has quit (Remote host closed the connection).
01:37:14 -!- elliott has joined.
01:45:25 -!- zzo38 has joined.
01:53:45 <oklopol> lol i guess cleaning is not all bad, i just found 100e on my floor
01:55:27 <oklopol> and the high from inhaling all the poisonous stuff that's been cooking up amongst dirt makes the whole task seem like nothing
01:56:12 <oklopol> elliott: well no. also i scrapped all my principles when i started writing papers, including monospace.
01:56:14 <elliott> :D
01:56:33 <elliott> oklopol: do you still use that beautiful windows theme
01:56:40 <oklopol> no i don't have it anymore
01:56:42 <elliott> :(
01:56:46 <elliott> that was one of my few real achievements in life
01:57:03 <oklopol> well i would love to have it
01:57:11 <oklopol> but my hd is gone
01:57:15 <elliott> guess who else doesn't have it any more :)
01:57:34 <oklopol> along with my 150gb of porn and a few very useful text files :(
01:57:49 <oerjan> sic transit gloria fenestrarum
01:58:20 <oklopol> you are a genius, do you know that
01:58:51 <oerjan> we are all a genius. he's got quite a split personality.
02:00:36 <oklopol> is there a particular reason you didn't say geniuses, the way it is now i don't see how the first sentence has a double entendre
02:01:05 <oerjan> yes.
02:01:07 <oklopol> what should i do with my 100e :o
02:01:40 <oklopol> can you explain it?
02:01:55 <oerjan> there is one particular genius, who we all are.
02:03:42 -!- DCliche has joined.
02:05:21 <oklopol> yeah but then the reader won't think you mean the philosophical ass-statement that we're all geniuses in our own way
02:05:36 <elliott> asstement
02:05:39 <oklopol> (except that i totally did read it that way)
02:05:57 <oerjan> well that would be because i did not think of that meaning at all when writing it.
02:06:22 <oklopol> oh
02:06:47 -!- Klisz has quit (Ping timeout: 248 seconds).
02:06:53 <oklopol> then what was the second joke of your sentence, are you saying you just had one :D
02:07:32 <oerjan> the last part was just elaboration of the logical consequences, i'd say
02:08:09 <oklopol> i suppose that's cool
02:08:28 <oklopol> uh-oh, my huge garbage bag is about to spill its contents
02:08:37 <oerjan> also is this joke officially dead from dissection yet.
02:08:56 <oklopol> no, and what doesn't kill it only makes it stronger
02:09:11 <oerjan> oh dear, we're all doomed
02:09:12 <oklopol> MWAHAHAHAHA. is how funny it is now.
02:09:26 <oerjan> (again.)
02:10:16 <oklopol> now, does "again" refer to you using the schizophrenia joke again, or is the joke that we have been doomed many times before?
02:10:28 <elliott> i <3 this conversation
02:10:32 <oerjan> the latter.
02:10:36 <oklopol> i see.
02:10:54 <oklopol> the former would also have been funny, imo. like an oops, we did it again.
02:11:51 <oklopol> i should probably take care of that garbage bag.
02:12:30 <oklopol> so math high, dust high, and now quite a tiredness high. interesting day.
02:12:35 <oklopol> maybe i should drink some beer.
02:13:24 <oklopol> the math highs i get are actually slightly scary, i have probably told you before that i occasionally hear voices, nowadays i can basically induce it, and i notice that thinking is way easier in that state.
02:14:01 * oklopol shares
02:14:13 <oklopol> where the fuck are my clothes
02:14:36 * oerjan guesses that's what they call the "flow"
02:14:49 <elliott> i don't think the "flow" usually involves voices :P
02:15:02 <oklopol> no, flow is when i can just keep on working forever and i'm just in this lasting content state
02:15:18 <oerjan> hm
02:15:35 <oklopol> the other state usually comes from really needing to solve a problem
02:16:13 <oklopol> often also just before i fall asleep, so dunno.
02:17:07 <oklopol> not really voices, just you know really fast meaningless whispers and i start feeling really fast
02:17:25 <oklopol> so much fastness in there
02:18:07 <tswett> You know, I'm starting to wonder something. Would it be rude to go around asking Finns why their last names are what they are?
02:18:17 <oklopol> and i can draw pictures in my head which are vivid like in a dream
02:18:20 <elliott> tswett: were you finnish in another life
02:18:24 <tswett> There's this one guy whose last name is Ääpälä. The thing is, there's no such thing as an ääpä; only an aapa.
02:18:39 <tswett> elliott: what makes you think it was another life? I'm Finnish in *this* life.
02:18:41 <oklopol> maybe i'm just superhuman. also i still can't multiply numbers any faster, but i've told that already.
02:18:46 <elliott> tswett: are you sure
02:18:49 <tswett> I was born in Finland and have lived here my entire life.
02:18:53 <elliott> ah
02:18:55 <tswett> Yes, I'm positiivi.
02:18:56 <oklopol> no idea what ääpälä means
02:19:01 <oklopol> positiivinen
02:19:10 <elliott> tswett: what's the name of that university you're at
02:19:11 <tswett> Yes, that.
02:19:21 <oklopol> my name means a sort of forest
02:19:38 -!- Slereah has joined.
02:19:38 <tswett> elliott: Grand Valley State Yliopisto.
02:19:41 <elliott> right
02:19:43 <elliott> the famous finnish university
02:19:53 <elliott> also didn't you transfer to harvard or sth
02:19:57 <elliott> the other famous finnish university
02:20:11 <elliott> harvard, cambridge, massacheusetts, finland
02:20:12 <oklopol> tswett: would it be rude to ask if your parent named your sur swett because they sweated so much when they were creating you
02:20:32 <tswett> oklopol: it depends on where you ask it.
02:20:48 <tswett> If you ask it in #esoteric, nope, not at all rude.
02:20:55 <tswett> But if you're in a movie theater, yeah, definitely.
02:20:58 <oklopol> :D
02:21:12 -!- Slereah_ has quit (Ping timeout: 255 seconds).
02:21:30 <oklopol> i would be pretty :O if someone put that much thought into their sentence
02:21:54 <elliott> oklopol: what's a sur
02:22:04 <tswett> Forgive me for asking a meaningless question, but what sentence do you mean?
02:22:07 <oklopol> no idea, i didn't make the language
02:22:09 <tswett> elliott: it's the thing that a surname is the name of.
02:22:12 <elliott> oh
02:22:18 <oklopol> tswett: my sentence
02:22:20 <shachaf> elliott: A Sur?
02:22:23 <elliott> we all have a sur inside us :')
02:22:35 <oklopol> if someone asked me that in a movie theater, i would be surprised.
02:22:40 <tswett> And no, I've also attended GVSY for my entire life.
02:22:43 <oklopol> well, i would probably assume they're an idiot
02:23:03 <shachaf> Jah Mal Jah Sur Jah Ber
02:23:13 <tswett> That's why my last name is Yliopistola.
02:23:17 <oklopol> :D
02:23:37 <tswett> Tänneri Yliopistola.
02:24:00 <oklopol> so when you coming to finland
02:24:01 <elliott> yeah people are usually named after their birth unis
02:24:09 <shachaf> Speaking of Finland, yesterday was Independence Day.
02:24:17 <shachaf> oklopol: My grandmother keeps trying to get me to.
02:24:21 -!- Slereah has quit (Ping timeout: 252 seconds).
02:24:21 <tswett> Don't they call it Stubbornness Day there or something?
02:24:48 <oklopol> shachaf: i meant tswett, he's talked about the subject occasionally
02:24:53 <oklopol> is your grandmother finnish?
02:24:54 <tswett> (Or maybe my surname is Laakso-opposite-of-nen. That's a very Finnish last name.)
02:24:59 <shachaf> oklopol: Sure!
02:25:08 <tswett> oklopol: I believe our plan was that I would visit you in 2014, right?
02:25:11 <shachaf> oklopol: So am I, naturally.
02:25:13 <oklopol> tswett: as a pun, yes. why is that?
02:25:13 <tswett> But I've completely forgotten said plan.
02:25:24 <tswett> Why is what?
02:25:32 <oklopol> shachaf: naturaly
02:25:37 <oklopol> *naturally
02:25:53 <shachaf> oklopol: Well, quite a lot of people with Finnish grandmothers are Finnish.
02:26:03 <shachaf> I've spent two* weeks of my life there!
02:26:13 <tswett> "Grand Valley", despite being a Finnish phrase, can be rendered even more Finnishly as "Laakso-opposite-of-nen", since "laakso" means "valley", and "opposite-of-nen" means "grand".
02:26:47 * shachaf ought to learn Finnish.
02:27:03 <oklopol> shachaf: was it sooo awesome
02:27:06 <tswett> Debes lerni suomen!
02:27:23 <shachaf> oklopol: Like, totally, dude!
02:27:43 <oerjan> totaalisti
02:27:46 <tswett> Und después, do kakne que write cada valsi in una bangu diferente.
02:27:52 <oklopol> apart from spain, and not having prostitution, this is probably my favorite place in europe out of the ones i've seen
02:27:53 <elliott> <shachaf> I've spent two* weeks of my life there!
02:27:58 <elliott> where's the footnote
02:28:04 <elliott> tswett: "opposite-of" is totally finnish
02:28:06 <tswett> elliott: at the end of #esoteric.
02:28:11 <elliott> when's that
02:28:14 <shachaf> 2014
02:28:20 <elliott> ah
02:28:41 <oklopol> :D
02:28:57 <tswett> I'm pretty sure #esoteric ends on the day that How to Train Your Dragooni comes out.
02:28:57 <oklopol> i love this conversation
02:29:25 <tswett> That is how it is called in Americassa, right?
02:29:28 <oklopol> kuinka koulutat lohikäärmeen
02:30:07 <oklopol> i have no idea what your last sentence meant
02:30:20 <oklopol> but the inessive of amerikka is amerikassa
02:30:24 * Madoka-Kaname giggles
02:30:35 <tswett> Joo, sepsetää ei mäksö pelea.
02:30:45 <Madoka-Kaname> The whole xkcd "Everything leads to Philosophy" thing is broken by Computer program <-> Computer software
02:31:22 <oklopol> yeah but programming is kind of gay anyway
02:31:48 <tswett> Piensö ke tödä el suomi ke digö de verdad es espäniöl.
02:32:00 <tswett> Anyway, good night, everyone.
02:32:22 <elliott> Madoka-Kaname: i'm sure it's broken by many many cycles
02:32:58 <Madoka-Kaname> I'd like to find out what percentage of pages breaks that.
02:32:59 <oklopol> well none of the straight ones
02:33:11 <oklopol> about 10%
02:33:13 <elliott> Madoka-Kaname: not hard
02:34:20 <oklopol> and a small percentage both goes to philosophy and doesn't.
02:34:49 <elliott> oklopol: Go wake fizzie up for me
02:35:13 <oklopol> i don't have a car
02:36:19 <elliott> oklopol: So?
02:39:31 <elliott> oklopol: I mean, just fly. Or walk. Finland's not big.
02:40:26 <Gregor> Suppose Mac OS X libc would be unhappy if you did open(..., O_WRONLY|O_SYNC|O_ASYNC)? :P
02:40:29 <shachaf> Wait, oklopol can fly?
02:40:40 <shachaf> That's a good application for maths.
02:41:37 <elliott> Gregor: Why OS X in particular?
02:42:08 <oklopol> there's a tampon on my floor.
02:42:24 <oklopol> why is there a tampon on my floor.
02:42:32 <oerjan> the plot thickens
02:44:25 -!- augur has joined.
02:44:35 <oklopol> augur: there's a tampon on my floor
02:45:00 <oklopol> eww right?
02:45:03 <oklopol> :DSDSDSDSDSDDSD
02:45:09 <augur> oklopol: ok?
02:45:22 <oklopol> you seem to have missed the joke
02:45:29 <augur> must have!
02:45:32 <oklopol> yep
02:45:39 <augur> whats the joke
02:46:07 <oklopol> the joke was that you're gay so it's disgusting for you to hear about women's vagina stuff. just like straight men are terrified of condoms.
02:46:33 <oklopol> i actually just found a condom on my floor too
02:46:52 <oklopol> but that was slightly less surprising than the tampon
02:47:34 <oklopol> because i had sex in 2010, but i've never menstruated
02:47:48 <elliott> oklopol: i just realised that you're talking about your own room, not work
02:47:52 <oklopol> :D
02:47:56 <oklopol> my HOUSE
02:48:08 <elliott> it didn't really occur to me to be surprised that your work has all this shit lying around before that
02:48:12 <oklopol> 18 WHOLE square meters of house.
02:48:13 <elliott> seeing as you're oklopol and everything
02:48:36 <oklopol> augur: did you get the joke now?
02:49:00 <augur> oklopol: no
02:49:07 <augur> why havent you menstruated?
02:49:12 <augur> havent you hit puberty yet?
02:49:44 <oklopol> i'm completely flat :/
02:49:47 <oklopol> it's embarrassing
02:52:17 <oklopol> sometimes i wish i was born a man. it would make more sense what with all these balls and penises lying about.
02:53:30 <zzo38> Jan 7, 2012, at 20:30, GMT. Saturn-Mercury-Jupiter-Neptune-Moon are 60 degrees apart from the next one (in ecliptic coordinates)
02:56:02 -!- oerjan has quit (Quit: Good night).
02:56:13 <oklopol> is that some sort of fucked up 3d pentagram
02:57:01 -!- Jafet has quit (Quit: Leaving.).
02:57:03 <zzo38> No it is only the ecliptic longitudes, so it isn't 3D. (The ecliptic latitudes and distances are not taken into consideration, only their direction relative to the Earth)
02:57:09 <oklopol> elliott: anyway we have a girl in our office every now and then so obviously there's a lot of tampons everywhere. on the other hand, i never let people in here.
02:57:17 <oklopol> so i really don't get it
02:57:57 <oklopol> zzo38: how did you find this out
02:58:24 <zzo38> But I wonder, how common is it that ecliptic longitudes of planets will ever form a pentagram?
02:59:08 <Gregor> <elliott> Gregor: Why OS X in particular? // because O_CREAT|O_SOMETHING from a glibc binary MIGHT hapeen to become O_SYNC|O_ASYNC on OS X :P
02:59:36 <elliott> Gregor: Why not just use a libc wrapper...
02:59:44 <elliott> Assuming it's the ELF-loading stuff
02:59:53 <oklopol> zzo38: it happens just once and then we all die.
03:00:03 <Gregor> elliott: I considered that tact.
03:00:22 <zzo38> oklopol: Actually I just input arbitrary data into Astrolog and this is its output. I can compute equatorial positions as well if you want, and even asteroids, solar noon, eclipses, seasons, and even distances if wanted.
03:00:50 <oklopol> cool.
03:01:02 <zzo38> oklopol: Just once within a lifetime? Can you show mathematics to show how accurate your statement is?
03:01:37 <oklopol> zzo38: i heard that the world is going to end soon enough
03:02:15 <Gregor> elliott: I went one iota towards implementing that even, then realized that on many systems (glibc in particular), the C library very low-level, hard to expunge dependencies on the loader.
03:02:26 <oklopol> god changes the channel because we're not having enough sex
03:02:32 <elliott> Gregor: Wot
03:02:40 <Gregor> elliott: I'm not confident that getting a glibc with the guts ripped out would be easier than my current tactic :P
03:02:46 <elliott> Gregor: Oh nonono, don't do that
03:03:00 <elliott> Gregor: Just, for each platform, write libc_wrap.so that turns glibc calls into native libc calls
03:03:06 <oklopol> Gregor: you should listen to elliott, he has written a 50 line program once
03:03:09 <elliott> Then LD_PRELOAD-or-equivalent it
03:03:12 <Gregor> elliott: Uhh, that's what I do.
03:03:21 <elliott> Gregor: Then why can't you handle O_CREAT|O_SOMETHING in open()...
03:03:33 <Gregor> elliott: I can now, I didn't have a wrapper for open before :P
03:03:34 <oklopol> and that's not without comments...
03:03:37 <elliott> Gregor: Ah :P
03:03:40 <oklopol> *-not
03:03:43 <elliott> oklopol: meanie
03:03:57 <Gregor> elliott: I can run cp!
03:04:00 <zzo38> If they are going to form a pentagram, then they are going to form a pentagon too, since they are just the points of the shape.
03:04:01 <Gregor> elliott: On Mac OS X!
03:04:04 <oklopol> child pornography is illegal
03:04:07 <elliott> Gregor: So can I! *boots up OS X, types cp*
03:04:17 <Gregor> elliott: Yeah, but mine has -a!
03:04:23 <elliott> Gregor: So does OS X cp :P
03:04:24 <oklopol> zzo38: but pentagons are not dangerous
03:04:25 <Gregor> (Note: Modern OS X cp does in fact have -a :P )
03:04:35 <elliott> Gregor: Also coreutils is in all the package managers :P
03:04:48 <Gregor> elliott: Yeah, well my date has --iso so HA
03:04:50 <oklopol> package management is illegal
03:04:55 <Gregor> (Note: date does not work)
03:04:56 <elliott> Gregor: date is in coreutils :P
03:05:05 <oklopol> iso is finnish for big
03:05:23 <oklopol> itym date does no work
03:05:31 <oklopol> :P is sideways
03:05:35 <oklopol> faces shouldn't be sideways
03:05:40 <Gregor> elliott: HEY GUYS I'M CROSSLOADIN WOO
03:05:48 -!- Nisstyre has quit (Ping timeout: 240 seconds).
03:05:51 <zzo38> oklopol: I doubt pentagrams are dangerous either... and if they form a pentagon they will also form a pentagram too for the same reason.
03:06:04 <elliott> Gregor: You will only succeed in creating a monster once you can run Safari on Linux.
03:06:51 <Gregor> elliott: I'm doing this for the lessons so I can reverse it y'know :P
03:07:00 -!- Slereah_ has joined.
03:07:05 <oklopol> at some point, being fucking retarded gets a bit lame, so maybe i'll stop doing this
03:07:09 <elliott> Gregor: What
03:07:15 <elliott> Reverse it?
03:07:17 <elliott> Oh, go the other way
03:07:29 <Gregor> I just already had gelfload :P
03:07:32 <oklopol> your question mark should've been after what, not after reverse it
03:07:35 <oklopol> reverse it is a statement...
03:07:40 <elliott> Gregor: Running OS X binaries on Linux is about 0.01% of running Safari on Linux :P
03:07:42 <oklopol> what's a gelf?
03:07:53 <elliott> You'd have to implement however Cocoa talks to Quartz at least
03:07:53 <oklopol> safaris don't run, things run on safaris
03:07:58 <oklopol> like lions and shit
03:08:09 <zzo38> I know about all these predictions of end of the world; there are a lot. I don't know how much you believe these kind of things. I doubt it will be end of world or if anything significant will happen. The date specified is 13.0.0.0.0 in the Mayan long count calendar (some people say the number on the left is not supposed to go above 12 but I doubt that)
03:08:09 <elliott> And I don't think it's a network protocol, so you'd have to patch the code somehow :P
03:08:14 <Gregor> elliott: Not necessarily ... how complete is GNUStep these days *hahahadeath*
03:08:31 <elliott> Gregor: My sources tell me that GNUStep can't run anything even vaguely modern :P
03:08:33 -!- Nisstyre has joined.
03:08:43 <elliott> Gregor: Especially not Grand Central Dispatch, IIRC, which I bet Safari uses
03:08:53 <elliott> But the effort would be SO WORTH IT, it'd be a beautiful hideous monster.
03:09:06 <oklopol> are there any ancient mayans here
03:09:14 <elliott> yes
03:09:21 <oklopol> how can something be beautiful and hideous
03:09:32 <oklopol> they are counter wordes
03:09:38 <Gregor> "GNUstep provides a robust implementation of the AppKit and Foundation libraries as well as the development tools available on Cocoa"
03:09:44 <Gregor> elliott: UH EXCUSE ME IT'S ROBUST
03:10:09 <elliott> Gregor: Yeah, so it can't run Apple software!
03:10:10 <elliott> OH BURN
03:10:18 <Gregor> lol
03:10:38 <elliott> TBH, making Cocoa output to something you can blit onto X11 sounds a lot easier than using GNUstep :P
03:10:56 <Gregor> Except it's not F/OSS ...
03:11:14 <Gregor> Well, it probably uses a Quartz library, not some weird direct connection shit.
03:11:20 <Gregor> So I suppose I could intervene there.
03:11:25 <elliott> Gregor: ...so? Neither is OS X libc and you use that :P
03:11:52 <Gregor> It's not an ethical issue, it's a "can I modify this" issue.
03:11:55 <elliott> I know
03:11:58 <Gregor> Also, OS X libc is.
03:12:08 <elliott> Gregor: I think you'd want to rip out the lowest level of http://en.wikipedia.org/wiki/Quartz_2D
03:12:20 <elliott> That wouldn't get you anything rendered with OpenGL or QuickTime or whatever, but it'd get GUI stuff :P
03:12:37 <elliott> "Quartz Compositor is the sole facilitator for the placement of rendered bitmaps into the memory of the graphics card. The bitmap output from Quartz 2D, OpenGL, Core Image, QuickTime, or other process is written to a specific memory location, or backing store. The Compositor then reads the data from the backing stores and assembles each into one image for the display, writing that image to the frame buffer memory of the graphics card. Quartz Compo
03:12:37 <elliott> sitor only accepts raster data, and is the only process that can directly access the graphics frame buffer.[2]"
03:12:41 <elliott> Oh, reimplementing that might be easier
03:12:53 <elliott> Since it presumably has an actual interface :P
03:13:44 <Gregor> A nice theory.
03:13:54 <elliott> Totally.
03:15:00 -!- azaq23 has joined.
03:15:09 -!- azaq23 has quit (Max SendQ exceeded).
03:15:43 -!- azaq23 has joined.
03:17:24 <Gregor> I KNOW WHAT I SHOULD DO!!!
03:17:29 <Gregor> *evil face*
03:17:34 <Gregor> *downloads IE5 UNIX binaries*
03:17:56 -!- Klisz has joined.
03:17:57 <Gregor> Oh, SPARC only/
03:18:02 <Gregor> *cancel* :P
03:18:12 <elliott> Gregor: qemu-system-sparc, man.
03:18:16 <elliott> I'm sure your thing can run qemu.
03:19:29 <Gregor> lol
03:19:36 <zzo38> What are season patterns between the tropics?
03:20:28 -!- DCliche has quit (Ping timeout: 244 seconds).
03:31:44 <elliott> Gregor: BTW how does it manage to fail at date :P
03:32:35 <oklopol> are you talking about something? all i see is nerd word nerd word nerd word and then i'm all like wooooah what's this here
03:33:00 <zzo38> When do you expect the ecliptic longitudes of planets, sun, and moon to form a pentagon/pentagram?
03:33:34 <quintopia> tomorrow
03:33:44 <oklopol> dunno, but i have a hunch that the stars form one pretty often
03:33:57 <quintopia> zzo38: i will answer that question when you solve the n-body problem
03:34:54 <zzo38> quintopia: I will tell you right now that it doesn't.
03:35:06 <zzo38> oklopol: Which stars? I can calculate stars in this program, too
03:35:14 <oklopol> some stars.
03:36:22 <quintopia> i will agree with oklopol that right here in this galaxy are some stars that, were they to never burn out or explode, would eventually form a pentagon
03:37:24 <zzo38> The fixed stars hardly move at all. Of the stars this program will calculate, none of them will ever form a pentagon in a very long time.
03:37:40 <elliott> a long time = ever
03:37:43 <Gregor> elliott: Idonno, it's a segfault.
03:37:45 <oklopol> for any error, prolly
03:37:47 <zzo38> However you are probably correct that if they will not burn out or explode, they eventually will form a pentagon.
03:37:55 <Gregor> elliott: Probably something to do with my extremely grotty librt shim.
03:37:57 <elliott> Gregor: How can date possibly segfault :P
03:37:57 <zzo38> But that would be beyond the range of any computer program to calculate.
03:37:59 <oklopol> erm
03:38:05 <oklopol> for any error ...something
03:38:08 <oklopol> what's a good term
03:38:19 <oklopol> anyway you know epsilon
03:38:19 <elliott> oklopol: duck
03:40:52 <oklopol> if we assume a countably infinite universe, a pentagon is ever formed anywhere with probability 0 for any reasonable measure of probability (assuming stars are single points in R^n, which they are)
03:42:19 <monqy> oh no
03:45:17 <elliott> monqy: hi
03:45:32 <monqy> hi
03:46:23 <elliott> monqy: hi
03:46:33 <monqy> elliott: hi
03:46:39 <elliott> monqy: hi
03:46:50 <monqy> i tried reading cap.pdf but got bored and stopped :(
03:47:03 <elliott> monqy: bad person
03:47:05 <monqy> maybe I will start again
03:47:06 <monqy> sometime
03:47:09 <elliott> (never)
03:47:19 <monqy> yeah...
03:47:45 <elliott> monqy: have you read the synthesis thesis, i never finished it, let us read it together :') (let's not do that, how do you even do that)
03:48:02 <monqy> probably not
03:52:06 <zzo38> Note that when I say the planets and so on form these shapes, it is taking into account only the ecliptic longitude. Not distance or anything else. (And I don't really like the terms "ecliptic longitude" and "ecliptic latitude" either; are there better words?)
03:54:55 <quintopia> oklopol: you arent taking into account STRING THEORY which says ALL STARS ARE CONNECTED 1D STRINGS
03:54:59 <quintopia> *BY
03:55:58 <zzo38> O, string theory. I have read some books lately that have a few things about string theory.
03:55:58 <monqy> which string theory is this? all of them?
03:56:32 <monqy> all I know about string theory is it comes in many flavours
03:56:37 <monqy> and has something to do with strings
03:56:51 <quintopia> my favorite is red raspberry
03:57:11 <zzo38> Yes there are many different string theories.
03:58:05 <Gregor> elliott: For libc5 loading, uname works but echo doesn't (wtf)
03:58:24 <elliott> Gregor: libc5? wtf year are you in
03:58:38 <Gregor> elliott: I'm loading libc5 binaries. For lols?
03:58:40 <Gregor> On libc6
03:58:53 <elliott> Gregor: Try libc4, man.
03:58:57 <elliott> Everyone agrees it was the best.
03:59:14 <Gregor> elliott: ELF
03:59:25 <elliott> Gregor: Just patch libc4 to work with ELF!!!
03:59:32 <Gregor> ... yesssssssssssss
03:59:41 <Gregor> And I will call the result ...
03:59:42 <Gregor> libc5
04:00:03 <elliott> Gregor: libc5 did a lot more than THAT :P
04:00:38 <Gregor> But still
04:00:40 <Gregor> echo segfaults
04:01:15 <elliott> Gregor: Try non-GNU echo :P
04:01:26 <elliott> (Where are you even getting libc5 binaries from)
04:02:00 <Gregor> archive.debian.org :P
04:02:52 <pikhq> I would not be surprised to find that GNU echo calls every function in libc once.
04:03:34 <Gregor> lol
04:09:55 <elliott> Does anyone know a generic command-line archive extractor for *nix? I don't care if it's just a shell script that calls out to tar/unzip/unrar :P
04:10:34 <elliott> http://hartlich.com/deco/ Ah, here we go
04:10:40 <zzo38> Is 7-zip available for UNIX systems?
04:10:45 <pikhq> zzo38: Yes.
04:11:08 <pikhq> I, in fact, have it installed for the sake of .7z files.
04:11:10 <elliott> 'deco preserves the archive after successful extraction, unless you give it the -u (“unlink”) option."
04:11:18 <elliott> Oh come on, does every program need an implementation of rm?
04:11:20 <elliott> *"edco
04:11:21 <elliott> *"deco
04:11:35 <zzo38> 7-Zip can do those formats and is command-line program (there is graphics version too, but I only installed the command-line program)
04:11:41 <elliott> "The deco extraction algorithm does the right thing automatically: generally, if and only if archive.foo contains multiple files at its top level, a new directory called archive/ is created and the archive gets extracted there."
04:11:42 <elliott> Yess
04:11:46 <pikhq> Hell, I'm kinda annoyed that gzip has an implementation of rm.
04:11:53 <elliott> zzo38: Unix 7zip doesn't do permissions IIRC
04:12:07 <pikhq> elliott: So, it's got anti-tarbomb stuff. :)
04:12:09 <zzo38> 7-Zip can also extract Red Hat and Debian packages, as well as Macintosh disk image files.
04:13:16 <zzo38> In UNIX whenever I wanted to open a .tar.gz file I just used zcat < file.tar.gz | tar x (or tar t instead for listing files)
04:15:02 <pikhq> I just use "tar xf" and "tar tf".
04:15:02 <zzo38> There are probably many ways to do it but I think it should be done by one program for each thing and combined by pipes; this is how UNIX was designed to work but many new programs don't do like that
04:15:16 <pikhq> But I do believe I'm now using deco.
04:15:47 -!- Nisstyre has quit (Read error: Connection reset by peer).
04:16:52 -!- Nisstyre has joined.
04:19:32 <Gregor> <elliott> "The deco extraction algorithm does the right thing automatically: generally, if and only if archive.foo contains multiple files at its top level, a new directory called archive/ is created and the archive gets extracted there." <-- this just became my new favorite extractor
04:19:43 <elliott> Gregor: It's not in Debian though ;-)
04:19:48 <Gregor> Oh
04:19:52 <elliott> Gregor: http://hartlich.com/deco/
04:19:54 <Gregor> Then there must be something hideously wrong with it.
04:19:58 <Gregor> Warning: deletes all your files
04:20:11 <elliott> Gregor: Yeah, it's totally broken, but if you download the tarballs we won't tell the Debian Overlords.
04:20:20 <elliott> It'll be our little secret.
04:21:08 <zzo38> O, they are going to mix up UNIX, isn't it?
04:21:59 <elliott> wat
04:22:01 <elliott> who is
04:25:33 <Gregor> Interesting, libc5 cat can cat stdin, but not a file.
04:26:23 <Gregor> Oh, never mind.
04:26:27 <Gregor> It's errno that doesn't work properly.
04:28:03 -!- oklopol has quit (Ping timeout: 244 seconds).
04:32:40 <pikhq> Yeah, ♥ deco
04:32:57 -!- DCliche has joined.
04:35:56 * elliott reads old Linux kernel mailing list archives for some reason, sees a signature "-- Lennart", double takes, looks at From line, sees "Lennart Augustsson", triple-takes
04:36:25 -!- Klisz has quit (Ping timeout: 252 seconds).
04:42:42 <Gregor> I feel I'm doing libc5 errno wrong.
04:42:45 * Sgeo learns about non-monotonic logic
04:42:49 <Gregor> But I have no idea how to do it right.
04:53:06 -!- Nisstyre has quit (Quit: Leaving).
04:53:52 -!- Nisstyre has joined.
04:57:17 -!- pikhq_ has joined.
05:00:07 -!- pikhq has quit (Ping timeout: 248 seconds).
05:13:02 -!- DCliche has changed nick to {\.
05:15:42 -!- Jafet has joined.
05:19:53 -!- {\ has changed nick to Klisz.
05:28:00 <zzo38> What does non-monotonic logic mean?
05:29:28 <zzo38> I think someone once described Haskell programming as the closest thing to executable mathematics.
05:30:02 <quintopia> what does monotonic logic mean?
05:30:10 <quintopia> my guess would be logic without nots
05:34:07 <elliott> zzo38: that person never heard of agda and coq
05:36:59 <quintopia> okay now i know what nonmonotonic logic is
05:37:00 <quintopia> neat
05:46:59 <Patashu> now I do too
05:46:59 <Patashu> also neat
05:58:27 -!- oklopol has joined.
05:59:10 <elliott> oklopol what
05:59:14 <elliott> did you just wake up
06:00:16 <oklopol> no, i've been cleaning my mansion, and the internet cable isn't really attached to the socket in any way, it's just kind of near it.
06:00:32 <copumpkin> mansion :o
06:00:53 <oklopol> anyway it's actually rather clean here, apart from the weird smudge on the floor that the vacuum cleaner doesn't like to suck up
06:02:14 <oklopol> copumpkin: yeah my castle is ridiculously big, i could probably fit like a hundred people in here, and i have a big lamp, so if i took that off, at least 2 more
06:02:54 <oklopol> i could pump like 60 tons of water here
06:02:58 <elliott> do it
06:04:41 -!- pikhq has joined.
06:04:58 -!- pikhq_ has quit (Ping timeout: 252 seconds).
06:05:45 <copumpkin> nice
06:06:27 <elliott> oklopol: pumping progress??
06:06:35 <elliott> Gregor: also did you ever start that cunionfs kernel module
06:07:17 <zzo38> I have now finished writing Chapter XIV: Everyone is Criminal
06:07:44 <oklopol> cool. when's xv coming?
06:07:54 <oklopol> we've been waiting for quite a while
06:08:41 <zzo38> Probably in two weeks from now.
06:10:42 <zzo38> Actually, I am wrong. I have not finished writing Chapter XIV. However, I have finished writing Session 6, which spans all of Chapter XIII and part of Chapter XIV. I cannot write Session 7 until it is actually played, but it will probably span at least the rest of Chapter XIV.
06:12:23 <oklopol> makes sense
06:13:19 <pikhq> http://www.youtube.com/watch?feature=player_embedded&v=0PAJNntoRgA This man is running for president. *sob*
06:14:22 <oklopol> well at least he approves his own message.
06:14:37 <pikhq> That became a stock appendage to campaign ads a while ago...
06:14:43 <pikhq> I think it was Bush?
06:14:57 <oklopol> i had a hunch that was the case
06:15:06 <oklopol> it's still somewhat ridiculous
06:15:12 <pikhq> More than somewhat.
06:15:20 <pikhq> Yes, you approve your own damn message.
06:15:23 <pikhq> I'd *hope so*.\
06:15:41 <elliott> pikhq: the thing i like about that video
06:15:43 <elliott> views: 5,150
06:15:47 <elliott> dislikes: 108,466
06:15:54 <oklopol> xD
06:15:56 <oklopol> what
06:15:57 <elliott> i don't think that's
06:15:59 <elliott> meant to be possible
06:16:10 <elliott> i think the views statistic is just wrong that thing's all over the internet
06:16:16 <elliott> must have more than 5,000 views by now
06:16:35 -!- azaq23 has quit (Remote host closed the connection).
06:17:54 <elliott> pikhq: the amazing thing about that video though is that he doesn't like even try and frame it as DEFENDING MARRIAGE or PROTECTING OUR KIDS FROM THE GAY INFLUENCE or even HATE THE SIN NOT THE SINNER
06:18:07 <elliott> it's outright "AS PRESIDENT, I WILL STOP GAYS DOING THINGS"
06:18:22 <pikhq> elliott: Yeah.
06:19:02 <elliott> rick perry should come to europe, you can celebrate christmas openly here
06:19:08 <elliott> because of our godless freedoms
06:19:09 <pikhq> elliott: If you've been following the GOP race at all, though, you'd see that basically it's a race for who can best appease hardcore racist homophobes.
06:19:20 <elliott> i haven't been, thankfully
06:19:31 <pikhq> Probably for the best, TBH.
06:19:49 <elliott> nor the democratic race :P
06:19:54 <elliott> although i suspect that looks like START -> OBAMA
06:20:09 <pikhq> There's actually other people running, nominally.
06:20:38 <elliott> http://en.wikipedia.org/wiki/Democratic_Party_(United_States)_presidential_candidates,_2012#Challengers
06:20:40 <elliott> does that guy have a boot for a hat
06:20:42 <pikhq> The odds of that even being *relevant* are akin to the odds of King Henry rising from the dead, running for President, and winning.
06:20:51 <elliott> Randall Terry, born 1959, pro-life activist and founder of Operation Rescue from West Virginia. In January 2011, Terry announced his intention to challenge President Barack Obama in the Democratic Party primaries for the presidential election of 2012.[13][14][15] He said he planned to run an ad featuring graphic photos of aborted fetuses during Super Bowl XLVI in February 2012.[16][17][18]
06:20:57 <elliott> dear randall terry: plz don't
06:21:01 <elliott> love, america
06:21:17 <elliott> "He ran as a "Tea Party Democrat"" why. why
06:21:19 <elliott> why is this a thing
06:21:34 <quintopia> lets run a competing ad
06:21:45 <quintopia> featuring aborted randall terry
06:21:58 <pikhq> Personally, I hope we get an old British king to resurrect and run.
06:22:09 <pikhq> It'd be much more interesting.
06:22:10 <pikhq> :P
06:22:24 <elliott> pikhq: wait herman cain is FORMER GODFATHER'S PIZZA CEO???
06:22:31 <elliott> i
06:22:32 <elliott> just read that
06:22:34 <elliott> on the wikipedia page
06:22:41 <elliott> this makes everything i've heard about herman cain about
06:22:42 <elliott> twenty times funnier
06:23:20 <elliott> http://en.wikipedia.org/wiki/United_States_presidential_election,_2012#Candidates_gallery_2
06:23:47 <zzo38> Guess the title for Chapter XV and Chapter XVI.
06:23:51 <quintopia> why do they even list vermin supreme. he is a comedian and only running as a stunt. such people shouldnt count.
06:23:58 <elliott> i know nothing about jon huntsman or gary johnson and i forget what i know about newt gringrich but apart from those and the withdrawn candidates holy SHIT that's a bad selection
06:24:10 <pikhq> quintopia: He is nevertheless running.
06:24:21 <quintopia> why does wikipedia care?
06:24:22 <elliott> quintopia: yeah, what we need is for our objective sources to decide what to report based on personal opinion
06:24:28 <elliott> rather than the facts
06:24:30 <elliott> oh
06:24:31 <elliott> wait
06:24:39 <quintopia> isnt that what wikipedia is about?
06:24:49 <elliott> no
06:25:06 <elliott> "He claims that if elected President of the United States he will pass a law requiring people to brush their teeth."
06:25:12 <elliott> americans: vote for this man
06:25:18 <quintopia> heh
06:25:35 <pikhq> quintopia: Wikipedia also reports on candidates for the Official Monster Raving Looney Party.
06:25:38 <elliott> "On the campaign trail, Vermin Supreme likes to start his sentences with “I am the only candidate who supports…” And it’s true: he is the only candidate who supports fully funding time-travel research in order to go back and kill Hitler before he was born. He’s also the only candidate who makes mandatory toothbrushing his signature issue. After all, as he says in his dental manifesto, “Proper dental hygiene is essential to proper socia
06:25:38 <elliott> l order.” If you’re worried about flying monkey tooth fairies enforcing the mandatory toothbrushing laws, fear not, since Vermin Supreme is also the only candidate who promises that such creatures will not be used to that end."
06:25:40 <oklopol> zzo38: magical dragons and the final ever everythingness.
06:25:52 <elliott> come on guys, this guy is better than every single other candidate
06:25:58 <elliott> who the fuck are you gonna vote for that isn't this guy
06:26:11 <pikhq> elliott: I am strongly considering it now.
06:27:04 <elliott> controversial us election 2012 prediction: everyone votes for obama in a desperate attempt to keep the republican out, america gets another 4 mediocre years
06:27:26 <pikhq> Sounds about right.
06:27:43 <pikhq> Mediocre > leaping 100 years back
06:28:45 <oklopol> why not just give the gays their own state so people could finally pray in peace
06:29:45 <pikhq> oklopol: I vote we just form Jesusland.
06:30:01 <quintopia> well, i think that obama has done a lot of good things. it's just that none of them were "miraculously heal the world economy"
06:30:05 <elliott> `addquote <oklopol> why not just give the gays their own state so people could finally pray in peace
06:30:11 <HackEgo> 749) <oklopol> why not just give the gays their own state so people could finally pray in peace
06:30:17 <quintopia> if he did that everyone would totes vote for him again
06:30:30 -!- sebbu2 has joined.
06:30:31 -!- sebbu2 has quit (Changing host).
06:30:31 -!- sebbu2 has joined.
06:30:32 <pikhq> quintopia: Well, yes, I wouldn't call Obama some terrible guy. He's just been, well. Mediocre.
06:30:53 * elliott can definitively say that his assessment of Obama is entirely unrelated to his not miraculously healing the world economy.
06:31:00 <quintopia> do you tend to lean towards voting for democrats pikhq
06:31:21 <pikhq> Yes, though I tend to think the lot of 'em have come to be the "less conservative" party.
06:31:35 <quintopia> they have always been that silly
06:31:44 <quintopia> and have always been criticized for it
06:32:02 <quintopia> democrats tend to always find their presidents to be mediocre
06:32:11 <quintopia> and not progressive enough
06:32:20 <pikhq> And now the GOP is not merely the "more conservative" party but rather the "y'know, medieval era Europe was tots awesome" party.
06:32:36 <pikhq> s/tots/totes/? Colloquialisms are hard to spell.
06:32:37 <quintopia> republicans on the other hand...they tend to stay behind their man
06:32:45 -!- sebbu has quit (Ping timeout: 255 seconds).
06:32:48 <elliott> quintopia: if only the US had a half-reasonable voting system so that progressives had actual options!
06:32:52 <oklopol> totes
06:33:05 <quintopia> this is why democrats were so meh about fdr during his presidency
06:33:16 <quintopia> even though they love him now
06:33:28 <pikhq> Even though FDR was probably the most progressive President we've had, like, ever?
06:33:31 <pikhq> Huh.
06:34:01 <quintopia> yeah theres a good article on the phenomenon
06:34:06 <quintopia> lemme see if i can find it
06:37:13 <quintopia> can't
06:40:49 <quintopia> this may be interesting though http://www.salon.com/2011/08/05/obama_fdr_debt_ceiling/
06:40:52 * quintopia reads
06:42:42 <elliott> wtf is up with his ears
06:43:17 <oklopol> so what's randall's opinion on slave monkeys?
06:43:46 <oklopol> or does "gay" include them?
06:45:25 <oklopol> elliott: are you alluding to his early congressional majorities?
06:45:45 <elliott> no i mean his actual ears in that picture
06:46:56 <oklopol> i read your comment just before reading that, then didn't sleep all night, then read the article, and actually wondered if "early" is a fancy buzzword i don't know.
06:47:07 <oklopol> or a typo of "yearly"
06:48:05 <oklopol> but actually google claims it's pretty common
06:48:19 <oklopol> it means like occurring beforehandtime
06:48:36 <oklopol> which really makes no sense but that's english for you.
06:49:03 <quintopia> oklopol is a balloon
06:49:09 <quintopia> filled with brain farts
06:49:14 <quintopia> someone catch him
06:49:29 <quintopia> put him to bed
06:50:42 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:52:03 <elliott> oklopol: hi
06:52:13 <oklopol> hi i guess
06:52:29 <oklopol> i should go to work............ oh my god i have to sleep...........................
06:54:09 <elliott> oklopol: sleep dude sleep
06:54:27 <oklopol> no
06:54:30 <oklopol> neav
06:57:43 <elliott> oklopol: :(
07:03:26 <oklopol> i'm so leaving now
07:05:45 <elliott> oklopol turned into a flea
07:12:54 <Sgeo> Data, sleep
07:13:24 -!- zzo38 has quit (Remote host closed the connection).
07:25:16 -!- quintopia has quit (Ping timeout: 244 seconds).
07:28:55 -!- quintopia has joined.
07:28:55 -!- quintopia has quit (Changing host).
07:28:55 -!- quintopia has joined.
07:31:12 <elliott> quintopia: 74.117.159.204
07:36:55 <quintopia> yeah i know
07:36:59 <quintopia> i'll fix it later
07:38:07 <elliott> holy shit, my topatoco package shipped
07:38:18 <elliott> how many fucking signatures can one guy sign in like a few days
07:38:19 <quintopia> oh shit!
07:38:27 <elliott> quintopia: yeah i bought a bomb
07:38:29 <elliott> rip me :'(
07:38:34 <elliott> i was hoping it'd get lost in shipping but no
07:38:42 <elliott> it is my doom
07:38:47 <quintopia> goodbye elliott
07:38:52 <elliott> goodbye
07:38:53 <quintopia> your gamble f€iled
07:39:03 <elliott> f€iled
07:39:45 <quintopia> you forget finagle's law: if you didnt want it, you get it. should have put an invaluable diamond bracelet in the same package. then it would have not been delivered to you. the bomb would be a dud and someone else would get it.
07:40:36 <elliott> quintopia: oh. because, i didn't actually but a bomb, i bought desirable merchandise
07:40:39 <elliott> does this mean i won't get it
07:40:59 <elliott> (don't worry i'm sure the merchandise is explosive)
07:41:22 <quintopia> it means either you wont get it, or it will be damaged when you do
07:41:29 <quintopia> or that you paid too much for it.
07:41:34 <elliott> definitely (c)
07:41:35 <quintopia> did you pay too much for it?
07:41:38 <elliott> (i just lettered them for you)
07:41:43 <elliott> (lettering is like numbering but with letters)
07:41:44 <quintopia> oh okay
07:42:00 <quintopia> if you paid too much, it'll all be okay
07:43:29 <elliott> but like, i know there were over a thousand signed orders before it sold out, and i only bought it 5 days ago.............
07:43:44 <elliott> eh i caught it like two hours after it came out so i guess he just did them chronologically
07:43:46 <elliott> ~mysteries solved~
07:43:50 <elliott> ALSO
07:43:58 <elliott> can someone write @ for me
07:43:58 <elliott> i'm getting sick of linux again
07:43:59 <quintopia> what was the package dude
07:44:06 <elliott> a signed bomb
07:44:20 <fizzie> I had written the "A" of "a signed bomb" already. :/
07:44:21 <quintopia> um
07:44:28 <elliott> from the inventor of the bomb himself
07:44:30 <quintopia> what is a signed bomb
07:44:32 <elliott> alfred "sex bomb" nobel
07:44:38 <elliott> fizzie: :D
07:45:01 <quintopia> can you not lie for a second please?
07:45:12 <elliott> quintopia: but that's so boring, all i do is lie
07:45:30 <quintopia> yes okay. you can go back to lying afterwards
07:45:41 <quintopia> i'll write @ if you tell the truth about this thing
07:45:45 <elliott> what was even the question, i'm kinda sleep deprived
07:45:51 <elliott> wow don't you want my firstborn too
07:45:54 <elliott> you can have my firstborn if you do that
07:45:55 <quintopia> what is in the package
07:46:26 <elliott> well the signed things were the two mspa books that just came out... i don't actually remember why i got them signed
07:46:32 <elliott> RESALE VALUE
07:47:03 <quintopia> hehe
07:47:17 <quintopia> thx
07:47:25 <elliott> quintopia: how's @ coming along
07:47:25 <quintopia> here you go: @
07:47:31 <quintopia> i just wrote it
07:47:41 <elliott> fizzie: kick quintopia
07:47:42 <elliott> for
07:47:44 <elliott> misleading
07:47:45 <quintopia> i wrote it on paper too
07:47:46 <elliott> & upsetting
07:47:49 <quintopia> for proof
07:47:50 <elliott> statements
07:49:33 <elliott> fizzie: oh yeah i had a question forf you!!!!!
07:49:34 <elliott> yes
07:49:35 <elliott> forf you
07:49:50 <fizzie> No, forf YOU.
07:49:59 <elliott> :'(
07:50:31 <fizzie> fungot: You answer his forf'n question.
07:50:31 <fungot> fizzie: is a 98% reduction in the waterpark intensity, right, so i'd imagine!
07:50:37 <elliott> :D
07:50:41 <elliott> `addquote <fungot> fizzie: is a 98% reduction in the waterpark intensity, right, so i'd imagine!
07:50:42 <fungot> elliott: honey, i shrunk to the same but mean different things, people would always ( eventually) have to do with all these raised expectations, he just changed them for his birthday. try remembering that sleep. how could a cave, they find! then the cars of olden times, remember and teach entire languages with which to do the talking here
07:50:44 <HackEgo> 750) <fungot> fizzie: is a 98% reduction in the waterpark intensity, right, so i'd imagine!
07:50:53 <elliott> fungot: oh my god
07:50:53 <fungot> elliott: hey, i wanted to talk to a t-rex... nostalgia. it's a new feeling for a new song repeatedly over each 3-month period, and you're not allowed to be bid in my auction, and i'm not a man to like you
07:50:55 <elliott> ^style
07:50:56 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz* sms speeches ss wp youtube
07:51:01 <elliott> oh that's why it's so amazing
07:51:05 <elliott> fungot: <3
07:51:05 <fungot> elliott: never!! this is going to be a surprise him, it may be common across a way, our last, i will grapple with thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at thee! from hell's heart, i stab at th
07:51:08 <elliott> :DDD
07:51:27 <elliott> fizzie: OK but as I was saying: Is xmonad any good (I am in the market for WMs).
07:52:49 <fizzie> Weeeelll they just released 0.10, so there's progress. I like it, but my window management needs are pretty nonexistent.
07:53:08 <elliott> I know they just released 0.10, that doesn't tell me much :P
07:53:47 <elliott> fizzie: I presume it's flexible enough to arrange for something like, e.g. each program to go on its own dynamically-created workspace by default, right?
07:54:27 <fizzie> That sort of thing sounds doable, though I don't think there's a contrib blob for that yet.
07:54:41 <elliott> I can code Haskell, though :P
07:55:09 <elliott> I still have a few misgivings about tiling window managers *sigh*
07:55:42 <elliott> Mostly because, e.g. I keep my XChat window smallish; I'd want it on its own workspace, but that would force it to take up the entire screen, producing hugely over-long lines.
07:56:13 <fizzie> XMonad.Actions.DynamicWorkspaces gives you addWorkspace/removeWorkspace actions, the rest would probably be mostly glue.
07:57:16 <elliott> (Also there are a few things in the xmonad source that I don't like, but if I'm choosing WM based on code quality xmonad would surely win so it's kind of silly.)
07:57:40 <elliott> fizzie: I suppose you just deal with the long lines? :p
07:59:09 <fizzie> Yes, but I guess you could equally well make the xchat workspace have a layout that's not the size of the full screen. (Or just make a real silly-wide channel-switcher on left and userlist on right to make the text area narrow.)
08:00:01 <elliott> fizzie: What would that produce? XChat ridiculously-tall-and-skinny in a corner and a bunch of greyness filling the rest of the screen?
08:03:35 <fizzie> I was envisaging it centered, but sure, you'd see whatever's on your root window. Or maybe you could figure out some use for the borders. I don't know what. I used to run xchat and Pidgin on the same workspace (since they're sort-of conceptually related, and my IM conversations are really short, so most of the time Pidgin was just the contact list) but the xchat userlist and Pidgin contact list right next to each other were confusing.
08:05:09 <elliott> fizzie: Centred would work, but makes me rather wonder why I would even hide the windows "behind" it. :p
08:05:19 <elliott> fizzie: I don't use a userlist, so pidgin on the same workspace would work, but...
08:05:26 <elliott> I can't think of any decent layout for that.
08:07:52 <fizzie> I should probably just build bitlbee with my libpurple patch so I wouldn't need a Pidgin.
08:08:39 <elliott> I don't like Bitlbee. :/
08:09:39 <fizzie> I don't like it much either, but I like having everything in the same window, and it's more pleasant than trying to use Pidgin for IRC.
08:10:24 <elliott> fizzie: Can I mumble something about @? :p
08:10:52 <fizzie> It's a free node.
08:11:10 <elliott> -- fizzie, #esoteric fascist
08:13:33 <elliott> All I want is an operating system that doesn't constrain every piece of data into black boxes with bad and inconsistent user-interfaces and no programmability. :/
08:16:22 <elliott> fizzie: Can you make one of them for me?
08:18:31 <pikhq> elliott: Start with UNIX. Delete everything.
08:18:33 <pikhq> :P
08:19:20 <elliott> pikhq: That's the "abandon computers and do something worthwhile with my life" option. It looms omnipresent, but involves, like, getting off my ass and shit, so it's less appealing than whining about @'s lack of existence.
08:39:29 -!- elliott has quit (Ping timeout: 240 seconds).
09:12:25 -!- monqy has quit (Quit: hello).
09:25:47 -!- hagb4rd2 has joined.
09:27:01 -!- GreaseMonkey has quit (Quit: The Other Game).
09:27:53 -!- hagb4rd has quit (Ping timeout: 252 seconds).
09:50:14 -!- sebbu3 has joined.
09:50:15 -!- sebbu3 has quit (Changing host).
09:50:15 -!- sebbu3 has joined.
09:51:33 -!- sebbu2 has quit (Ping timeout: 252 seconds).
10:49:15 -!- Patashu has quit (Ping timeout: 255 seconds).
11:01:11 -!- Ngevd has joined.
11:04:19 <Ngevd> Hello
11:29:54 -!- Phantom_Hoover has joined.
12:21:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:33:19 -!- Phantom_Hoover has joined.
12:34:34 <Phantom_Hoover> fungot!
12:34:34 <fungot> Phantom_Hoover: that you all for them, i have come up with a " i have lots, probably! if not, we can make the cutest cards ever for a series of puns. interestingly enough, it was favored by early art photographers, as they already needed their subjects to stay motionless for minutes at a party and i can cry if i want to!
12:38:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:43:07 -!- cheater has quit (Read error: Connection reset by peer).
12:44:35 -!- ais523 has joined.
12:45:23 <fizzie> http://goo.gl/enNbw "Try evaluating this program using a considerably larger `n' like `8nat(1,0,0,0,0)'. Does your preprocessor run out of memory? If so, ask your preprocessor vendor why it happens."
12:45:32 <fizzie> chaos-pp examples have the best exercises.
12:45:54 <fizzie> (It's the "compile-time Fibonacci in Order" example.)
12:50:42 -!- Phantom_Hoover has joined.
12:52:57 -!- Taneb has joined.
12:53:26 <fizzie> "This example is a simple Order function, named `8exp_delay(n)', whose time complexity is $\Omega(2^n)$. After expending an exponential amount of time, `8exp_delay(n)' simply evaluates to nothing. `8exp_delay' might become handy when recompiles are too fast to take a coffee break...\footnote{This example is rather theoretical compared to the other examples.}"
12:53:31 <fizzie> And best examples overall.
12:54:15 <fizzie> "Does your preprocessor run out of memory while expanding this example? If so, then, for extra credit, write a formal proof and send it to your preprocessor vendor."
12:54:17 <Phantom_Hoover> What are you quoting this from?
12:54:34 <fizzie> <fizzie> http://goo.gl/enNbw "Try evaluating this program using a considerably larger `n' like `8nat(1,0,0,0,0)'. Does your preprocessor run out of memory? If so, ask your preprocessor vendor why it happens."
12:54:34 <fizzie> <fizzie> chaos-pp examples have the best exercises.
12:54:34 <fizzie> <fizzie> (It's the "compile-time Fibonacci in Order" example.)
12:54:42 <fizzie> That's the totality of what you missed.
12:54:51 <Phantom_Hoover> Ah.
12:55:23 <fizzie> Preprocessor vendors must hate it. (Though for some reason I don't think very many people are completing the examples.)
12:57:05 -!- Ngevd has quit (Ping timeout: 244 seconds).
12:58:07 -!- ais523 has quit (Read error: Connection reset by peer).
12:58:18 -!- ais523 has joined.
12:59:14 -!- Ngevd has joined.
13:03:20 -!- Taneb has quit (Ping timeout: 248 seconds).
13:14:26 -!- cheater has joined.
13:19:20 -!- oerjan has joined.
14:00:14 -!- Taneb has joined.
14:03:06 -!- Ngevd has quit (Ping timeout: 244 seconds).
14:16:19 -!- boily has joined.
14:26:39 -!- Taneb|Hovercraft has joined.
14:30:29 -!- Taneb has quit (Ping timeout: 244 seconds).
14:36:14 -!- sebbu3 has changed nick to sebbu.
14:40:23 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
15:02:05 -!- ais523 has quit (Ping timeout: 252 seconds).
15:02:25 -!- ais523 has joined.
15:02:34 -!- augur has quit (Remote host closed the connection).
15:03:00 -!- augur has joined.
15:07:10 -!- augur has quit (Ping timeout: 240 seconds).
15:08:00 -!- ais523 has quit (Read error: Operation timed out).
15:09:37 -!- ais523 has joined.
15:12:16 <oerjan> :t readPrec
15:12:19 <lambdabot> Not in scope: `readPrec'
15:12:30 <oerjan> @hoogle readPrec
15:12:31 <lambdabot> Text.ParserCombinators.ReadPrec data ReadPrec a
15:12:31 <lambdabot> Text.Read readPrec :: Read a => ReadPrec a
15:12:31 <lambdabot> Text.ParserCombinators.ReadPrec readPrec_to_P :: ReadPrec a -> (Int -> ReadP a)
15:19:59 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:23:29 -!- sebbu2 has joined.
15:23:30 -!- sebbu2 has quit (Changing host).
15:23:30 -!- sebbu2 has joined.
15:25:13 -!- sebbu has quit (Ping timeout: 268 seconds).
15:45:04 -!- calamari has joined.
15:45:42 -!- Klisz has joined.
15:46:36 -!- copumpkin has joined.
15:47:05 -!- Vorpal has joined.
15:57:20 -!- sebbu2 has quit (Read error: Connection reset by peer).
15:58:08 -!- sebbu has joined.
15:58:08 -!- sebbu has quit (Changing host).
15:58:08 -!- sebbu has joined.
15:59:42 -!- ais523 has quit (Ping timeout: 252 seconds).
16:04:36 -!- KingOfKarlsruhe has joined.
16:09:32 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0.1/20111120135848]).
16:15:46 -!- oerjan has quit (Quit: leaving).
17:11:09 -!- ais523 has joined.
17:37:55 -!- sebbu2 has joined.
17:37:55 -!- sebbu2 has quit (Changing host).
17:37:55 -!- sebbu2 has joined.
17:40:10 -!- sebbu has quit (Ping timeout: 252 seconds).
17:42:08 -!- sebbu3 has joined.
17:45:28 -!- sebbu2 has quit (Ping timeout: 252 seconds).
17:48:00 <Gregor> Things that shouldn't segfault: exit(2)
17:48:11 <Gregor> Err, exit(3) rather.
17:51:48 <Gregor> __fpending (fp=0x0)
17:51:54 <Gregor> Exit: Why did you call __fpending with NULL?
17:54:36 -!- elliott has joined.
17:55:20 <Gregor> elliott: WHY WOULD EXIT CALL __fpending WITH NULL???
17:55:28 <Gregor> Hm, I properly decapped __fpending but not exit.
17:55:29 <Gregor> Weird.
17:55:51 <elliott> Gregor: I didn't even know what __fpending is until I checked :P
17:56:09 <elliott> Gregor: Wild guess: 0 = stdout???
17:56:19 <Gregor> elliott: Not as far as I can tell.
17:56:28 <Gregor> (Same story for stdin/stderr)
17:56:44 <elliott> Gregor: Good, because it takes a (FILE *) :P
17:57:24 <Gregor> ... duh?
17:58:48 <elliott> Gregor: Well, passing 0/1/2 for standard file descriptors to something taking a pointer would be wack...
17:59:10 <Gregor> Yes ... yes it would ... but stdin, stdout and stderr (symbols) are FILE * :p
18:00:09 <elliott> <Gregor> elliott: WHY WOULD EXIT CALL __fpending WITH NULL???
18:00:09 <elliott> <elliott> Gregor: Wild guess: 0 = stdout???
18:00:11 <elliott> NULL = 0
18:00:12 <elliott> 0 = stdout
18:00:22 <elliott> __fpending(NULL) = __fpending(stdout) because Linux
18:00:26 <elliott> It was just a theory :P
18:01:40 <Gregor> OHHHHHH now I see what you mean, not that stdout had gotten set to NULL, but because it was magic in the first place.
18:02:11 <elliott> It is not a serious theory :P
18:02:48 <elliott> "We will shift our strategy to improving profitability from pursuing market share blindly with cheap and unprofitable products" --actual Acer CEO quote
18:03:04 <elliott> Is it even Acer if they don't sell crap???
18:04:42 <elliott> Imagine a world where Bash supports JSON. (qaa.ath.cx)
18:04:43 <elliott> Why do this to me, reddit?
18:13:13 <Vorpal> Gregor: what did you do to cause that __fpending(NULL)?
18:13:22 <Gregor> Vorpal: gelfload :P
18:13:26 <Vorpal> Gregor: ah
18:13:40 <ais523> what does __fpending do anyway?
18:13:56 <Vorpal> The __fpending() function returns the number of bytes in the output buffer. For wide-oriented streams the unit is wide characters.
18:13:56 <Vorpal> This function is undefined on buffers in reading mode, or opened read-only.
18:14:02 <Vorpal> says the man page
18:14:46 <Gregor> lol, date still segfaults X_X
18:14:53 <Gregor> Even gelfloading native date on libc6.
18:17:17 <Gregor> Works now 8-D
18:17:21 <Gregor> Being able to gdb helps :P
18:17:53 <Phantom_Hoover> Gelfload?
18:17:57 <Phantom_Hoover> You're doing that again?
18:18:42 <Gregor> You know how I am with my random projects.
18:18:51 <Gregor> Something nonsense triggers me, then I hack at it for a bit.
18:30:40 <elliott> \/ qwerty \/
18:30:49 <elliott> /\ azerty /\
18:32:56 <Gregor> OK, my stdio layer is insufficiently broken to cause most libc6 things to crash now :P
18:33:12 <Gregor> Alternately, it's sufficiently working to cause most libc6 things not to crash now.
18:33:34 <quintopia> i searched the android market for unicode and the first thing to come up is an app david madore wrote
18:33:37 <quintopia> had no idea
18:34:45 <elliott> quintopia: Wait 'til you look up gay elf erotica!
18:34:51 <elliott> (Android has a book market right.)
18:35:19 <elliott> (One day Madore is going to come here and we are all going to shuffle around awkwardly while Gregor quickly redacts the logs.)
18:35:43 <Gregor> NO CENSORSHIP
18:35:43 <quintopia> lol
18:36:13 <elliott> Gregor: Actually, the logs you have are already censored.
18:36:22 <Gregor> FILTHY LIES
18:36:29 * quintopia searches market for gay elf erotica
18:36:33 <quintopia> "no results found"
18:36:41 <Gregor> quintopia: EVIL CENSORSHIP
18:37:00 <quintopia> gregor: i'm sorry they deleted your book :/
18:37:11 <Gregor> It took a lot of work, too!
18:37:12 <elliott> Gregor: One secondamo.
18:37:18 <Gregor> And they were just like "Not appropriate DELETE"
18:37:25 <Gregor> And I was like "Awwwwwwwwwwwwww you guys are mean"
18:38:18 <elliott> 2004-02-08.txt:21:57:25: <fizzie> what is this "hcf" thing? some kind of fairy godmother? someone needs a funge98 spec and then it joins out of the blue and gives an url. hm, lessee. "I lack a nice laptop." hmm? nothing happens...
18:39:08 <elliott> Gregor: http://codu.org/logs/log/_esoteric/2003-03-14
18:39:14 <elliott> Gregor: I refer to this as the Unforgivable Incident.
18:39:57 <Gregor> elliott: Well piff, if it's not MY censhorship then what am I to do :P
18:40:04 <elliott> Gregor: GO BACK IN TIME AND FIX THINGS
18:40:08 <Gregor> Anyway it also ignores any lines that start with !glogbot_ignore
18:40:13 <Gregor> !glogbot_ignore SEKRITS
18:40:16 <elliott> ...why?
18:40:24 <elliott> < 1323369613 846167 :Gregor!foobar@codu.org PRIVMSG #esoteric :!glogbot_ignore SEKRITS
18:40:25 <Gregor> !glogbot_ignore elliott BECAUSE OF SEKRITS
18:40:34 <elliott> 18:40:13: <Gregor> !glogbot_ignore SEKRITS
18:40:35 <Gregor> elliott: Dammit, why you gotta ruin my fun :P
18:40:38 <elliott> :P
18:40:45 <elliott> I actually believed you for one TERRIBLE SECOND
18:40:57 <Gregor> Worst second of your life I'm sure.
18:41:15 <elliott> I literally died.
18:41:20 <Gregor> Wow
18:41:29 <elliott> But I got better.
18:41:57 <elliott> Gregor: CUNIONFS KERNEL MODULE PLEASE
18:42:06 <Gregor> elliott: Don' wanna :(
18:42:19 <elliott> Gregor: WHAT NONSENSE DO I HAVE TO DO TO SPRING YOU INTO ACTION
18:42:23 -!- sebbu has joined.
18:42:29 <elliott> I want to get Kitten booting dammit :P
18:43:00 <Gregor> Why can't you write the awesomest union filesystem for yourself :P
18:43:09 <ais523> !addinterp glogbot_ignore bf ,[.,]
18:43:10 <EgoBot> ​Interpreter glogbot_ignore installed.
18:43:18 <ais523> !glogbot_ignore test
18:43:19 <EgoBot> test
18:43:22 <ais523> there we go
18:43:23 <ais523> no secrets any more
18:43:24 <Gregor> lol
18:43:59 <elliott> Gregor: 'Cuz I know even less about kernel modules than you do.
18:44:13 <Gregor> That's virtually impossible.
18:44:36 <elliott> ais523: haha, the best thing is that if glogbot actually did ignore lines starting like that (as freenode policy recommends), it would be perfectly OK to have EgoBot do that
18:44:38 -!- sebbu3 has quit (Ping timeout: 240 seconds).
18:44:50 <elliott> although I suppose the obligation to provide a way to opt out of logging is the /channel's/, not the bots...
18:45:12 <ais523> you opt out of public logging by using /msg or /query, right?
18:45:30 <elliott> heh
18:45:39 <Gregor> glogbot logs /msgs to /it/ :P
18:45:50 <elliott> well, nobody ever claimed freenode policy is reasonable
18:48:04 <olsner> policy is never reasonable
18:48:16 <quintopia> freenode is never reasonable
18:48:50 <Gregor> FREENODE IS FASCISM
18:49:02 <quintopia> oh
18:49:35 -!- zzo38 has joined.
18:49:47 <ais523> `? welcome
18:49:50 <elliott> Oh no, GHC is suffering speed-wise from its use of ILP64 :(
18:49:52 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:50:00 <elliott> `welcome ais523
18:50:03 <HackEgo> ais523: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:50:40 <quintopia> should that not say "hubcap"?
18:50:43 <elliott> no
18:50:44 <quintopia> hubcaps are better
18:50:52 <elliott> hubcaps aren't 2005 references
18:51:08 <itidus20> `log hubcap
18:51:14 <quintopia> "welcome to the international hub for esoteric hubcap design and deployment"
18:51:29 <quintopia> see how much better that reads
18:51:34 <HackEgo> 2009-07-24.txt:01:54:53: <ehird> The engine was running still and I could feel the vibrations running through as if she was panting in heat. In heat for me Her rear end was slightly lower than normal-her wheels had sunk up to the hubcaps. Now I did not need to stand on tip toe to screw her tailpipe- she wanted me that much that she had lowered it down for me. I had to bend my knees slightly to reach though. First I
18:52:03 <itidus20> lordy
18:52:07 <quintopia> wow
18:52:14 <elliott> X-D
18:52:28 <ais523> elliott: please tell me that that was a quote
18:52:31 <ais523> not something you came up with yourself
18:52:33 <elliott> it was
18:52:43 <elliott> I think that's possibly the best response HackEgo could have possibly given to that query.
18:52:47 <elliott> I also think we should remove `log now :P
18:52:54 <ais523> nah, `log is great
18:53:28 <ais523> `log roundabout
18:53:31 <itidus20> i basically use `log to feign relevance
18:53:37 <HackEgo> 2011-11-15.txt:07:56:22: <pikhq> I really, really wish roundabouts were more prevalent. Traffic lights *suck*.
18:53:48 <ais523> `log apocalypse
18:53:54 <HackEgo> 2010-02-14.txt:05:32:20: <pikhq> An unfriendly singularity is apocalypse. A friendly singularity is utopia.
18:54:09 <ais523> `log discontinuity
18:54:14 <HackEgo> 2011-03-29.txt:08:35:19: <Vorpal> elliott, sure the learning curve is not so much a curve as a non-derivable discontinuity in the graph but once you get past that, it is awesome
18:54:38 <Vorpal> ais523: I assume that last one was about dwarf fortress
18:54:49 <quintopia> `log fingered
18:54:53 <itidus20> either that or buddhism
18:54:55 <HackEgo> 2011-11-13.txt:00:08:39: <CakeProphet> elliott: oops. oh well, at least I'm not a condescending shitfingered cunt. :D :D :D
18:54:56 <Vorpal> ais523: how did you chose those words?
18:55:09 <Vorpal> itidus20: /pretty/ sure it was about dwarf fortress actually :P
18:55:26 <quintopia> `log platypus
18:55:31 <HackEgo> 2005-05-12.txt:20:55:13: <fizzie> Perhaps a platypus.
18:55:36 <Vorpal> perhaps indeed
18:55:45 <Vorpal> `log aardvark
18:55:49 <itidus20> i was arguing about someone about buddhist nirvana and he used disconuity to help explain why it simply cannot be spelled out
18:55:50 <elliott> `log aphorism
18:55:50 <HackEgo> 2010-10-13.txt:20:30:13: <Gregor> Aardvarklike Aardvark
18:55:52 <quintopia> `log mulish
18:55:56 <HackEgo> 2009-10-20.txt:02:52:43: <HackEgo> how much does wolfram alpha cost \ \ Input interpretation: \ \ If you have to ask... \ Result: \ \ ...you can' t afford it. \ according to the common aphorism \ \ Generated by Wolfram|Alpha (www.wolframalpha.com) on October 19, 2009 from Champaign, IL. © Wolfram Alpha LLC—A Wolfram Research Company \ \ 1 \ \ .
18:55:57 <HackEgo> 2011-12-08.txt:18:55:52: <quintopia> `log mulish
18:56:07 <quintopia> ha
18:56:13 <Vorpal> yes that happens
18:56:21 <quintopia> `log footloose
18:56:26 <HackEgo> 2011-12-08.txt:18:56:21: <quintopia> `log footloose
18:56:29 <Vorpal> `log jasdfkjasdhfsdfj
18:56:32 <itidus20> he was like "hmm... so you like structured thought, boy"
18:56:34 <HackEgo> 2011-12-08.txt:18:56:29: <Vorpal> `log jasdfkjasdhfsdfj
18:56:40 <quintopia> `log pancreas
18:56:46 <HackEgo> 2011-10-07.txt:18:41:18: <fungot> elliott: table 4? 35. (/ naturalist on/ amazons,' 1863, p. 18). therefore :( i arose" " judges v. 7),/ females would have been short and broken with/ inspirations prolonged; and this is/ case with/ many little bladders filled with water, sixty-one leaves were tried with/ glycerine extract :) pancreas with a negative result. nor is it easy to measure/ strength :)/ stimulus from/ friction
18:56:50 <zzo38> I saw what someone did before is you can do like this to avoid your query being found
18:56:58 <Vorpal> quintopia: that it finds your query doesn't mean it is the only match. Kind of annoying that
18:57:04 <zzo38> `log [a]bcdefghijklmnopqrstuvwxyz
18:57:09 <HackEgo> 2008-08-16.txt:01:51:43: <fungot> ............................. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ...
18:57:34 <olsner> "<elliott> Oh no, GHC is suffering speed-wise from its use of ILP64 :(" :(
18:57:40 <itidus20> zzo38: brackets around the first character?
18:57:51 <olsner> but isn't that very easy to fix by just making ghc use different data sizes?
18:57:56 <quintopia> `log log log
18:57:56 <zzo38> itidus20: Or any character, it doesn't matter which one.
18:58:02 <HackEgo> 2011-06-08.txt:19:37:51: <elliott> the best complexity is O(log log log log log log n)
18:58:11 <zzo38> It is regular expression
18:58:13 <quintopia> indeed elliott
18:58:18 <elliott> olsner: well i don't know if ghc can handle Int not being pointer-sized
18:58:21 <quintopia> that is the best complexity
18:58:25 <elliott> quintopia: yes.
18:58:30 <elliott> even faster than O(1)
18:58:40 <itidus20> zzo38: just had a quick game idea. tetris with ascii characters.
18:58:57 <quintopia> is inverse ackermann asymptotically faster than sixlogs?
18:59:01 <zzo38> itidus20: Describe more please.
18:59:03 <ais523> itidus20: telnet nethack.eu? there's a curses tetris online there
18:59:05 <itidus20> on thinking about how to describe the '['
18:59:06 <elliott> quintopia: no. sixlogs is fastest
18:59:16 <quintopia> elliott: serious answer
18:59:24 <itidus20> well.. each ascii character is a 5x8 block or something
18:59:28 <elliott> quintopia: i am sure inverse ackermann is faster than sixlogs. but you knew that
18:59:41 <ais523> itidus20: oh, you mean using the characters themselves
18:59:43 <olsner> elliott: really? sounds bad to rely on that - at least they could use a pointer-sized-int type for where they actually want that
18:59:44 <itidus20> yup
18:59:45 <ais523> they don't nest well
18:59:58 <ais523> I once programmed a tetris-but-with-pentominos, it's pretty difficult
19:00:00 <itidus20> ais523: you could fill in the blanks.. but why would you..
19:00:06 <quintopia> `log spew
19:00:11 <HackEgo> 2010-03-24.txt:04:25:30: <pikhq> Every time he returns he spews out a massive chunk of replies for an hour.
19:00:16 <quintopia> `log askew
19:00:22 <HackEgo> 2011-08-11.txt:14:56:25: <itidus20> should I feel bad for not understanding combinatory logic? it just seems that when it's entire system can be formally expressed in a few lines then something is askew
19:00:29 <ais523> `log unto
19:00:31 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
19:00:35 <HackEgo> 2010-11-17.txt:00:26:36: <pikhq> PRAISE BE UNTO ELLIOTT, GOD OF ALL
19:00:45 <quintopia> good one
19:00:47 <elliott> ++
19:00:49 <ais523> yep, indeed
19:01:03 <quintopia> `log ferret
19:01:08 <HackEgo> 2011-07-19.txt:21:43:23: <Sgeo> <flyingferret> My dice bag is not that big.
19:01:13 <elliott> `log stochastically
19:01:18 <HackEgo> 2011-12-08.txt:19:01:13: <elliott> `log stochastically
19:01:25 <elliott> `log [^]]stochastically
19:01:31 <HackEgo> 2011-12-08.txt:19:01:13: <elliott> `log stochastically
19:01:36 <ais523> beautifully inevitable
19:01:43 <ais523> `log automagic
19:01:44 <elliott> lol
19:01:49 <HackEgo> 2010-09-02.txt:19:31:12: <Vorpal> alise, while the OS won't actually allocate your pages until you try to access them, it won't automagically unallocate zeroed out pages.
19:02:18 <quintopia> someone concoct me a regular expression that searches for x in a line not beginning `log
19:02:22 <elliott> `log more magic
19:02:25 <elliott> quintopia: you want [^]]
19:02:26 -!- Vorpal has joined.
19:02:28 <HackEgo> 2009-05-02.txt:19:50:18: <oerjan> !c system("more magic")
19:02:30 <elliott> it's not the same, but close enough
19:02:49 <itidus20> ok next random tetris idea is.. multiplayer tetris sharing the same table using physics so you can attack the other persons piece like "sideswipping"
19:02:56 <quintopia> elliott: what is ] there
19:03:05 <quintopia> what does that have to do with anything
19:03:13 <itidus20> so 2 falling pieces bumping into each other as if 'racing' down the screen
19:03:13 <elliott> quintopia: [^]] = [^\]]
19:03:25 <quintopia> yes i get that
19:03:25 <elliott> if you can't figure out why that stops the line itself matching, then you haven't thought hard enough
19:03:33 <elliott> [^]]foo
19:03:37 <elliott> matches a foo not preceded by ]
19:03:38 <quintopia> :(
19:03:44 <elliott> hopefully it is obvious now
19:03:44 <quintopia> oh
19:03:51 <quintopia> you're being stupid
19:03:57 <quintopia> should have known
19:03:57 <elliott> no i'm not
19:04:01 <elliott> that's... the standard method
19:04:14 <elliott> obviously it fails if someone's `log'd that before but most terms haven't been `log'd before
19:04:19 <zzo38> itidus20: I have the game tetris with pong, in my computer. You can move the mouse to move the pallet up/down and if the ball falls off then the blocks go up to add a line.
19:04:23 <ais523> `log ^[^`].*something
19:04:30 <HackEgo> 2011-02-12.txt:18:07:47: <nescience> each [ pairs with a specific ]; all you need is to tie them together. so you track depth when pre parsing and have a list of pointers or something like that. you can store the depth in the same way you store loop counts, and it will indicate which item in the list to go to
19:04:35 <elliott> ais523: that ignores /all/ hackego lines
19:04:38 <ais523> indeed
19:04:40 <elliott> quintopia: why am i being stupid again?
19:04:48 <ais523> I can make it ignore `log specifically, but that would be rather more complex for minimal gain
19:05:18 <ais523> `log ^([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*something
19:05:24 <HackEgo> 2005-05-22.txt:01:38:48: <GregorR> Anybody mind giving me an account somewhere so I can set something up as a test?
19:05:32 <ais523> (is this perl regexes? if so, that can be abbreviated)
19:05:37 <zzo38> But another idea of tetris with balls, that I have thought of, is to make a pinball game (probably flipperless) that there are blocks that set themself according to tetris game, and the ball can knock them down and bounce off of them, and then you can nudge the table to affect it
19:05:43 <elliott> ais523: no, egrep
19:05:48 <ais523> in that case, it probably can't be
19:06:09 <itidus20> zzo38: i downloaded some tetris game for nintendo-ds emulator.. but i didn't play it very long since i'm not much of a tetris fan really
19:06:10 <ais523> `log ^([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:06:14 <HackEgo> 2011-12-08.txt:19:06:10: <ais523> `log ^([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:06:22 <elliott> your thing sucks
19:06:26 <ais523> bleh, screwed it up, forgot to allow for the nick
19:06:31 <elliott> :P
19:06:32 <elliott> ais523: and date
19:06:35 <ais523> right
19:06:45 <ais523> `log ^[^>]+>([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:06:50 <HackEgo> 2011-12-08.txt:19:06:10: <ais523> `log ^([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:06:55 <ais523> :(
19:07:03 <ais523> is > a metacharacter in egrep somehow?
19:07:06 <zzo38> There is a tetris game called Lockjaw which runs on GameBoy Advance, Windows, Linux, and Nintendo DS. And it has a lot of options.
19:07:16 <ais523> `log ^[^>]+> ([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:07:21 <ais523> oh right, missed the space
19:07:23 <HackEgo> 2011-12-08.txt:19:06:50: <HackEgo> 2011-12-08.txt:19:06:10: <ais523> `log ^([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before
19:07:30 <ais523> there we go ;)
19:07:30 <itidus20> zzo38: well this one played out retro nes games as you progressed through the level
19:07:45 <ais523> `log ^[^>]+> ([^`]|`[^l]|`l[^o]|`lo[^g]|`log[^ ]).*this line has never been spoken in #esoteric before either
19:07:52 <HackEgo> No output.
19:08:29 <zzo38> There is also "Tetanus on Drugs" which is for GameBoy Advance only, and source-codes is available. The picture will get stretched and turn around and everything to make it hard to view
19:08:39 <elliott> ais523: I can make it use grep -P if you want :P
19:09:38 <ais523> thanks, that'd help
19:09:46 <ais523> I just checked that grep -P implements the construct I want
19:09:55 <elliott> `run grep -r egrep bin
19:09:58 <HackEgo> bin/log: egrep -i -- "$1" ????-??-??.txt | shuf -n 1 \ bin/pastelog: lines=$(egrep -i -- "$1" ????-??-??.txt | head -n 301) \ bin/pastelogs: lines=$(egrep -i -- "$1" ????-??-??.txt | head -n 301) \ bin/quote: egrep -i -- "$1" \ bin/quotes: egrep -i -- "$1"
19:10:01 <itidus20> with tetris blocks based on ascii characters the rules would need to change.. but i think it could potentially be fun
19:10:20 <elliott> `run find bin -exec sed -i 's/egrep/grep -P/g' '{}' \;
19:10:22 <zzo38> itidus20: Yes there is an idea
19:10:24 <elliott> ais523: njoy
19:10:34 <HackEgo> sed: couldn't edit bin: not a regular file
19:10:39 <itidus20> hmm... you could feed it a text file :)
19:10:39 <elliott> fuck
19:10:43 <elliott> `run find bin -type f -exec sed -i 's/egrep/grep -P/g' '{}' \;
19:10:58 <HackEgo> No output.
19:10:59 <ais523> `log ^[^>]+> (?!`log )asodjaosdjoasijdoisajd
19:11:06 <HackEgo> No output.
19:11:20 <ais523> `log ^[^>]+> (?!`log ).* njoy
19:11:30 <HackEgo> 2011-12-08.txt:19:10:24: <elliott> ais523: njoy
19:11:42 <ais523> that's much more readable
19:11:47 <elliott> ais523: one suspects that (?!`log ).* njoy would do just as well.
19:11:49 <ais523> `log ^[^>]+> (?!`log ).* does this work with a dot-star too
19:12:00 <HackEgo> No output.
19:12:02 <elliott> without the /^[^>]+> /
19:12:05 <ais523> elliott: nope, ?!`log matches anywhere that doesn't say `log
19:12:09 <ais523> that is, (?!`log)
19:12:17 <ais523> there are any number of positions in that line that don't say `log
19:12:18 <elliott> ais523: yes, so?
19:12:20 <elliott> ais523: it's close enough :P
19:12:20 <ais523> in fact, it fails because of this
19:12:24 <itidus20> zzo38: ok another idea emerges.. a mapping of text files onto the set of tetris pieces.. so that you can load a text file to play a deterministic tetris level
19:12:25 <elliott> well, hmm, okay
19:12:39 <itidus20> and then people could figure out which texts are the most fun
19:12:50 <ais523> `log ^[^>]+> (?!`log).* abcooas > abcooas
19:13:00 <ais523> `log ^[^>]+> (?!`log).*abcooas
19:13:01 <HackEgo> No output.
19:13:07 -!- monqy has joined.
19:13:10 <HackEgo> No output.
19:13:13 <zzo38> itidus20: O, OK. Try that way.
19:13:16 <ais523> oh, it's oK
19:13:17 <ais523> *OK
19:13:24 <ais523> the ^> requires the first > to be taken
19:13:28 <ais523> so it does only check just there
19:14:03 <itidus20> zzo38: so like .. abcd = L piece.. efgh = J piece.. ijkl = I piece ... etc
19:14:49 <zzo38> O, like that.
19:15:05 <itidus20> yeah.. im jumping from idea to idea
19:15:06 <zzo38> You could just use binary format and use the bits to select one
19:15:51 <itidus20> i guess... that would enable a wider variety of input files
19:16:28 -!- azaq23 has joined.
19:18:52 <itidus20> what i find dissatisfying about such things is that there is generally a semantic gap between the input and the output
19:23:56 <itidus20> like .. a blue painting would beat an orange painting since water beats fire
19:23:59 -!- kallisti has joined.
19:24:00 -!- kallisti has quit (Changing host).
19:24:00 -!- kallisti has joined.
19:29:32 <zzo38> Is this good? instance Extend (Barrier f b) where { duplicate (Unit x) = Unit $ Unit x; duplicate (Fail x) = Fail x; duplicate (Barrier a c) = Barrier a $ duplicate2 [a] . c where { duplicate2 :: [f] -> Barrier f b t -> Barrier f b (Barrier f b t); duplicate2 z (Unit x) = Unit (x <$ uncollect z); duplicate2 _ (Fail x) = Fail x; duplicate2 z (Barrier a c) = Barrier a $ duplicate2 (z ++ [a]) . c; }; };
19:35:04 -!- Phantom_Hoover has left ("Leaving").
19:35:09 -!- Phantom_Hoover has joined.
19:46:03 <elliott> Cycle in class declarations (via superclasses):
19:46:04 <elliott> :-(
19:48:22 <Gregor> As I understand it, your only option at this point is suicide.
19:48:59 <Gregor> Harsh, these static type systems.
19:52:50 <elliott> Gregor: And as we all know, dynamically-typed languages magically make programs with type errors work by ignoring them :P
19:59:46 <Vorpal> Trine 2 is excellent btw. Still until beginning of next year until it comes to Linux :(
20:00:48 <Gregor> elliott: YES
20:01:03 <Gregor> elliott: So glad you've finally seen that.
20:09:17 <monqy> Vorpal: so less than a month?
20:10:12 <elliott> indexOfTheOnlyBit :: Nat -> Int
20:10:12 <elliott> {-# INLINE indexOfTheOnlyBit #-}
20:10:12 <elliott> indexOfTheOnlyBit bit =
20:10:12 <elliott> I# (lsbArray `indexInt8OffAddr#` unboxInt (intFromNat ((bit * magic) `shiftRL` offset)))
20:10:12 <elliott> where unboxInt (I# i) = i
20:10:13 <elliott> #if WORD_SIZE_IN_BITS==32
20:10:15 <elliott> magic = 0x077CB531
20:10:17 <elliott> offset = 27
20:10:19 <elliott> !lsbArray = "\0\1\28\2\29\14\24\3\30\22\20\15\25\17\4\8\31\27\13\23\21\19\16\7\26\12\18\6\11\5\10\9"#
20:10:22 <elliott> #else
20:10:24 <elliott> magic = 0x07EDD5E59A4E28C2
20:10:26 <elliott> offset = 58
20:10:28 <elliott> !lsbArray = "\63\0\58\1\59\47\53\2\60\39\48\27\54\33\42\3\61\51\37\40\49\18\28\20\55\30\34\11\43\14\22\4\62\57\46\52\38\26\32\41\50\36\17\19\29\10\13\21\56\45\25\31\35\16\9\12\44\24\15\8\23\7\6\5"#
20:10:31 <elliott> #endif
20:10:33 <elliott> Gregor: See, static types give us high-level declarative expressivity.
20:10:39 <monqy> what did you DO........
20:11:32 <elliott> monqy: not me thank god
20:11:43 <monqy> who did what
20:12:03 <monqy> WHO did what / who DID what / who did WHAT
20:12:10 <elliott> https://github.com/haskell/containers/blob/e076b33f4cee3f657b5bdc5bf6f5a4c9e249d00c/Data/IntSet.hs#L1166
20:12:21 <monqy> yikes
20:13:15 <elliott> @pl \s -> f (g (Left s)) (runFoo . k) $ unwrap s
20:13:15 <lambdabot> ap (flip f (runFoo . k) . g . Left) unwrap
20:14:43 <zzo38> Is this good designs to you? http://zzo38computer.cjb.net/powerxy/images/Game_Control.png http://zzo38computer.cjb.net/powerxy/images/Remote_Control.png
20:15:50 <monqy> the remote has too much buttons
20:16:18 <zzo38> Really it looks like too much to you?
20:16:47 <zzo38> What is your suggestion, then?
20:16:51 <monqy> less buttons
20:17:01 <monqy> and space them out a bit?
20:17:25 <monqy> probably a bit clumsy to hold it too
20:17:31 <monqy> unless it's supposed to be something like a keypad
20:17:34 <elliott> the selection has too many prices and vaules
20:17:38 <monqy> in which case just go nuts
20:17:38 <zzo38> The picture does not show the actual product. So, the actual size, fonts, spacing, is not shown here.
20:17:57 <monqy> so that's just what buttons you want to put on it?
20:18:00 <zzo38> The numbers on the right and top are not part of the remote control; they indicate the computer codes for each button.
20:18:33 <zzo38> monqy: Yes, that is just what buttons to put on it. And probably layout in a grid like that too, but not necessarily having those sizes, shapes, scales, spacing, etc.
20:19:10 <monqy> maybe it is okay then
20:19:28 <monqy> but I still do not understand some of these buttons
20:19:49 <zzo38> Describe more precisely what you do not understand?
20:19:56 <monqy> like L R A B C
20:20:03 <monqy> SELECT START
20:20:22 <monqy> and what do TOP MENU and SUB MENU do
20:20:42 <zzo38> Those are just duplicates of the buttons on the game controller so that some software that might use them in the same way.
20:20:59 <monqy> but why would you use a remote for that......
20:21:05 <zzo38> The TOP MENU and SUB MENU can be used for DVD videos (although, like all buttons on the remote, can have any purpose depending on the software)
20:22:30 <monqy> imo omit the game controller buttons from the physical remote but give them codes in the specification and then make the controller itself send those codes so the controller can be used
20:23:14 <monqy> by game controller buttons I mean the ones that don't really have a purpose on a remote
20:23:35 <zzo38> That is a possible idea. Thanks for suggestions.
20:24:01 <monqy> also is the game controller picture supposed to be the layout?
20:24:28 <zzo38> monqy: Yes it is just a layout, it is not necessarily to scale.
20:24:31 <monqy> it might be a bit hardpainful to do anything with the analog stick but i do not physically possess your controller so i cannot say for sure
20:25:09 <zzo38> Nor are they necessarily even in the positions given; positions are only approximate.
20:25:17 <monqy> but still
20:25:20 <monqy> it's in the centre
20:25:28 <monqy> thumbreaching isn't fun
20:25:38 <monqy> especially with all that square in the way
20:25:57 <fizzie> `quote third hand
20:26:00 <HackEgo> 647) <fizzie> I prefer the N64 controller, it's the only one that has place for my third hand.
20:26:56 <zzo38> Well, yes, all of this is possible to be changed.
20:27:25 <zzo38> And full protocol specifications will be published too.
20:27:56 <monqy> then I can make my own controller with the analog where it feels good
20:29:34 <zzo38> Yes, you can. However still consider that these plans might changes so it might not be necessary to do that; it might be good where the new plan has it. However, even if it doesn't, you will still be able to make your own with the analog where it feels good.
20:50:11 <zzo38> My idea is the game controller uses a cable that is connected at both ends, and uses a synchronous serial protocol with 33 bits in each direction per packet (32 data bits + 1 synchronization bit). (Synchronization bit is high for synchronization packets which have all data bits low, and synchronization bit is low for data packets.)
20:54:23 <itidus20> shigeru miyamoto retirement
20:55:26 <elliott> "Shigeru Miyamoto rumors of retirement not true, says Nintendo"
20:55:29 <elliott> http://www.cbsnews.com/8301-501465_162-57339320-501465/shigeru-miyamoto-rumors-of-retirement-not-true-says-nintendo-updated/
20:55:35 <itidus20> ahhh
20:55:44 <elliott> That stood up to all of one googling.
20:56:15 -!- oerjan has joined.
21:04:07 <olsner> elliott: that's just lies nintendo wants you to believe?
21:04:27 <elliott> im a lie nintendo wants me to believe
21:04:33 -!- augur has joined.
21:06:19 <zzo38> Example of "sillygism": (1) All men are mortal. (2) All accounts of logic use the same stupid examples. (3) Therefore, at least you won't have to listen to them forever.
21:07:51 <monqy> how silly.
21:09:00 <Phantom_Hoover> SHATNER IS CANADIAN???????????????/
21:11:21 <elliott> Phantom_Hoover: wHAT
21:11:34 <elliott> help ?
21:11:45 <Phantom_Hoover> IT'S LIKE EVERYTHING I KNEW IS WRONG
21:15:14 <oerjan> <Gregor> Things that shouldn't segfault: exit(2) <-- you can check out any time you want, but you can never leave
21:15:32 <oerjan> *like
21:17:06 -!- GreaseMonkey has joined.
21:18:31 <oerjan> <elliott> (One day Madore is going to come here and we are all going to shuffle around awkwardly while Gregor quickly redacts the logs.)
21:18:37 <oerjan> nah augur will be all over him
21:18:41 <elliott> X-D
21:18:54 <elliott> oerjan: How is that different to how augur acts towards everyone
21:19:10 <oerjan> indeed. add Slereah_ to that as well, then.
21:19:18 <oerjan> he's even french
21:19:27 <elliott> is he an elf
21:19:37 <oerjan> i have no proof that he isn't.
21:20:16 <oerjan> i don't even have proof he isn't madore
21:20:50 <augur> whos madore
21:21:00 <oerjan> unlambda inventor
21:21:05 <augur> is he hot?
21:21:23 <Phantom_Hoover> augur, are gay elf fetishists your thing?
21:21:30 * oerjan shuffles around awkwardly
21:21:32 <augur> possibly
21:22:11 <elliott> http://perso.telecom-paristech.fr/~madore/
21:22:12 <Phantom_Hoover> augur, are you a gay elf.
21:22:20 <elliott> this could be the start of a BEAUTIFUL FRIENDSHIP
21:22:35 <augur> Phantom_Hoover: no
21:22:45 <augur> hes not hot at all
21:23:04 <Phantom_Hoover> WTF does that have to do with you being a gay elf.
21:23:38 <augur> nothing
21:32:59 <oerjan> `log ^[^`].* i dinnae think this method woiks
21:33:12 <HackEgo> 2011-12-08.txt:21:32:59: <oerjan> `log ^[^`].* i dinnae think this method woiks
21:33:21 -!- boily has quit (Quit: WeeChat 0.3.6).
21:34:12 <oerjan> in fact getting a regex for the beginning of what's actually _said_ seems somewhat awkward.
21:34:49 <elliott> oerjan: um [^>]+
21:34:57 <ais523> elliott: [^>]+>
21:35:05 <elliott> erm, right
21:35:12 <elliott> /[^>]+> /
21:35:14 <elliott> to be precise :)
21:35:28 <oerjan> i suppose. although that also removes ACTIONS and the like
21:35:56 <elliott> oerjan: well it's just a date, then either <[^ ]+ or \* [^ ]+
21:36:01 <oerjan> i guess i didn't really specify
21:37:10 <itidus20> ok i finally fixed my spacebar properly
21:37:19 <itidus20> turns out i put the spring back in the wrong place
21:38:35 <kallisti> !perl print qr/test/
21:38:38 <EgoBot> ​(?-xism:test)
21:38:44 <kallisti> hm..
21:40:21 <ais523> `log xism
21:40:26 <HackEgo> 2011-04-21.txt:00:58:25: <elliott> METASEXISM: You assumed the first speaker was MALE
21:40:30 <ais523> `log xism
21:40:36 <HackEgo> 2006-11-22.txt:01:31:18: <RodgerTheGreat> the problem is that they tend to get away with sexism a bit more easily than men.
21:40:50 <elliott> `log -xism
21:40:55 <HackEgo> 2011-12-08.txt:21:38:38: <EgoBot> ​(?-xism:test)
21:41:30 <ais523> `log x-ism
21:41:36 <HackEgo> 2010-12-24.txt:22:47:45: <Vorpal> elliott, btw I made the backend code very easy to replace for different systems. Should be just two functions to rewrite (plus maybe some POSIX-isms) to port it to windows. If anyone wants to
21:41:45 <ais523> yay, I so thought I'd get my own line back then
21:42:44 <Phantom_Hoover> `log RodgerTheGreat>.*hello
21:42:51 <HackEgo> 2007-11-13.txt:05:08:00: <RodgerTheGreat> so, is that huge mass of binary data just a hello world, or is that libraries and stuff as well?
21:43:26 <oerjan> x-or-c-ism
21:43:53 <ais523> !perl print qr/test/x
21:43:54 <EgoBot> ​(?x-ism:test)
21:43:56 <Phantom_Hoover> `log RodgerTheGreat>.*Hello
21:44:03 <HackEgo> 2006-08-10.txt:14:46:05: <RodgerTheGreat> hello
21:44:57 <kallisti> !perl %x = (qr/test/ => 1); for(keys %x) { print "test" =~ $_ }
21:44:58 <EgoBot> 1
21:45:32 <ais523> kallisti: in perl 5, I think regex quotations /are/ strings
21:45:40 <ais523> at least, it roundtrips perfectly
21:45:52 <ais523> that's what the -xism bit's for, to give context
21:45:58 <kallisti> I was just wondering how it behaved in a string context like that.
21:46:15 <kallisti> so cool.
21:49:09 <ais523> !perl print qr/test/xism
21:49:10 -!- elliott has quit (Read error: Connection reset by peer).
21:49:10 <EgoBot> ​(?msix:test)
21:49:18 <ais523> hey, it reordered the xism!
21:49:38 -!- elliott has joined.
21:53:43 <fizzie> Inverse order compared to how the negative flags were.
22:00:39 <ais523> yep, indeed
22:03:54 <oerjan> !perl print qr/test/smxi
22:03:55 <EgoBot> ​(?msix:test)
22:05:08 <elliott> Gregor: I know what I'll do, I'll find a way in which cunionfs_kern will make gelfload work soo much easier and better
22:05:11 <elliott> MWAHAHA
22:05:18 <ais523> I guess it just adds the letters x/i/s/m in that order to before or after the hyphen
22:06:21 <elliott> I suspect it optimises before converting into a string, so it's not a bijection from the regexp source.
22:06:26 <elliott> !print qr/ test /m
22:06:32 <elliott> !perl print qr/ test /m
22:06:33 <EgoBot> ​(?m-xis: test )
22:06:36 <elliott> Huh.
22:06:44 <elliott> !perl print qr/ test (?:(a)) aa* /m
22:06:45 <EgoBot> ​(?m-xis: test (?:(a)) aa* )
22:06:51 <elliott> Guess I'm wrong.
22:08:40 <oerjan> !perl print qr/test/
22:08:41 <EgoBot> ​(?-xism:test)
22:09:08 <oerjan> apparently the order is msix-xism
22:09:30 <kallisti> killall perl
22:09:31 <kallisti> ...oops
22:09:40 <elliott> oerjan: aka msix and msix reversed
22:09:52 <oerjan> elliott: I NEVER
22:15:28 <oerjan> > let poq (p:ps) o qs = p : p_q ps o (p:qs); p_q [] o qs = o:qs in poq "msix" "-" ""
22:15:29 <lambdabot> Couldn't match expected type `GHC.Types.Char'
22:15:29 <lambdabot> against inferred type...
22:15:33 <oerjan> oops
22:15:38 <oerjan> > let poq (p:ps) o qs = p : p_q ps o (p:qs); p_q [] o qs = o:qs in poq "msix" '-' ""
22:15:39 <lambdabot> "m*Exception: <interactive>:3:43-60: Non-exhaustive patterns in function p_q
22:15:49 <oerjan> oops
22:15:53 <oerjan> > let poq (p:ps) o qs = p : p_q ps o (p:qs); poq [] o qs = o:qs in poq "msix" '-' ""
22:15:55 <lambdabot> Not in scope: `p_q'
22:16:00 <oerjan> fancy
22:16:08 <oerjan> > let poq (p:ps) o qs = p : poq ps o (p:qs); poq [] o qs = o:qs in poq "msix" '-' ""
22:16:09 <lambdabot> "msix-xism"
22:17:02 <ais523> hmm, I wonder if that's been on anagolf yet?
22:17:13 <ais523> I fear the best solution would be rather uncreative, though
22:18:09 <zzo38> However, there are many programming languages available so the best solution might be uncreative in some programming languages but not in others
22:20:11 <kallisti> print "a b c" =~ /(wrong) (wrong)/
22:20:36 <kallisti> !perl @hi = "a b c" =~ /(wrong) (wrong)/; print $#hi
22:20:38 <EgoBot> ​-1
22:21:02 <oerjan> how surprisinh
22:21:05 <oerjan> *g
22:21:08 <kallisti> indeed
22:24:17 <Gregor> <elliott> Gregor: I know what I'll do, I'll find a way in which cunionfs_kern will make gelfload work soo much easier and better // by the time you do I will be bored with gelfload again :)
22:24:40 <elliott> :t runStateT
22:24:41 <lambdabot> forall s (m :: * -> *) a. StateT s m a -> s -> m (a, s)
22:24:50 <elliott> Gregor: Yes, so you'll be interested in cunionfs :)
22:27:22 <kallisti> !perl @a = (1,2,3,4); print $a{1}
22:27:59 <kallisti> ...the things I must do to avoid warnings.
22:29:14 <Phantom_Hoover> Help I think I hate left handed people?
22:29:29 <kallisti> Phantom_Hoover: quit that.
22:29:30 <oerjan> that cannot be right.
22:29:40 <Phantom_Hoover> kallisti, are you left handed.
22:30:12 <kallisti> no.
22:30:16 <elliott> Phantom_Hoover: what.
22:30:26 <oerjan> he has no hands left.
22:30:36 <kallisti> elliott: I'm guessing he talked to a stupid left handed person on reddit.
22:30:40 * kallisti guesses
22:31:44 <Phantom_Hoover> I read http://www.reddit.com/r/askscience/comments/n5ah8/if_i_started_out_naturally_lefthanded_as_a_kid/, does that count?
22:32:07 <Phantom_Hoover> But I've always had a certain malaise towards the left handed.
22:32:23 <elliott> Why can't the three-body problem be solved? (self.askscience)
22:32:27 <elliott> BECAUSE GOD HATES AII
22:35:35 <elliott> "I don't have a proof of this statement, but it seems clearly true"
22:35:39 <elliott> --actual /r/askscience comment
22:35:57 <ais523> This statement is unprovable.
22:36:28 <elliott> Phantom_Hoover: If you want to arguew ith someone try and explain to ccampo how infinities and probabilities and shit work: http://www.reddit.com/r/askscience/comments/n4ygs/why_cant_the_threebody_problem_be_solved/c36abbq
22:36:31 <elliott> *argue with
22:37:20 <elliott> "Agreed, which is why the original statement is meaningless to me. Saying most DEs are unsolvable is like saying that infinity is more than infinity."
22:37:24 <elliott> COME ON DUDE THIS IS EMBARRASSING
22:37:48 <olsner> proof by truthiness
22:37:57 <monqy> :(
22:38:01 <Phantom_Hoover> :D
22:38:23 <Phantom_Hoover> elliott, it'd go wrong because I'm not actually sure how measure theory works.
22:38:32 <elliott> Phantom_Hoover: Um dude when has that EVER stopped you.
22:39:52 -!- Patashu has joined.
22:49:07 <kallisti> aside from the massive use of package-scoped variables, I kind of feel as though I'm writing this IRC bot in a functional style.
22:49:13 <kallisti> also state.
22:50:17 <elliott> So, not functional at all
22:50:24 <kallisti> yeah yeah whatever.
22:50:38 <kallisti> I think functional style counts as a lighter claim than functional programming.
22:50:54 <elliott> which is not the same thing as meaning nothing
22:51:03 <kallisti> correct.
22:53:15 <kallisti> hmmm I should pass these coderefs a reference to themselves incase they want to recurse or something.
22:55:39 <zzo38> Now I made the Graphics.DVI to be able to typeset text to a DVI file. However, the optimization of the DVI file is not yet perfect.
22:56:20 <elliott> ais523: So what's the scapegoat model of the week?
22:59:41 -!- Jafet has quit (Quit: Leaving.).
22:59:59 <ais523> haven't been thinking much about it
23:07:22 <kallisti> elliott: use a mandelbrot set
23:10:15 <Phantom_Hoover> Use a Sierpiński gasket.
23:15:17 <oerjan> nah, use an alexander horned sphere
23:15:59 -!- pikhq_ has joined.
23:16:21 -!- pikhq has quit (Ping timeout: 268 seconds).
23:21:37 -!- Ngevd has joined.
23:21:42 <Phantom_Hoover> oerjan, please can we not play fractal hipsters.
23:21:51 <Ngevd> Hello
23:21:59 <oerjan> TOO LATE
23:22:06 <Ngevd> Apparently the SNP want to be norse
23:22:16 <oerjan> snp?
23:22:24 <Ngevd> Scottish National Party
23:23:07 <Phantom_Hoover> There are so few interesting fractals.
23:23:13 <Phantom_Hoover> Most of them are just pretty.
23:24:33 <Ngevd> BBC: "Horns feature prominently in the iconography of both sides (NB real Viking helmets did not normally have horns)"
23:24:56 <Phantom_Hoover> Alexander horned helmet.
23:26:58 <olsner> oh noes, my faith in viking helmets has been destroyed
23:27:34 <olsner> oh well, I guess I was right in misplacing half the horns on my helmet then
23:31:27 <Phantom_Hoover> You fool!
23:31:41 <Phantom_Hoover> It doesn't retain its interesting properties if you do that!
23:31:55 <Phantom_Hoover> Oh, wait, yes it does.
23:32:49 <olsner> yeah, it still has that napkin taped to it that says VIKING
23:32:57 * Phantom_Hoover → sleep
23:33:11 <Phantom_Hoover> olsner, ah, but if you run a loop of string around it can you always pull it tight?
23:33:12 -!- Phantom_Hoover has quit (Quit: Leaving).
23:33:29 <olsner> no, it is fixed size, not adjustable in any way
23:34:09 -!- derdon has joined.
23:34:18 <oerjan> all vikings had standard skull sizes
23:34:29 <zzo38> The DVI format has some commands and features that TeX doesn't use.
23:37:01 -!- ais523 has quit (Remote host closed the connection).
23:38:27 -!- calamari has quit (Quit: Leaving).
23:43:14 <Gregor> Combining diaeresis mark = instant upright smileys
23:43:20 <zzo38> optimizePage :: [Font] -> [PageCommand] -> [PageCommand]; applyMoveReg :: [PageCommand] -> [PageCommand];
23:43:50 <zzo38> Gregor: Yes, that is one way, that works
23:44:37 <zzo38> Gregor: I think some people have used that even in TeX
23:44:54 <Gregor> It's probably easier and looks better more consistently in TeX :P
23:46:03 <zzo38> You are probably correct. Plain TeX works the same way everywhere so all documents are compatible with all computers.
23:53:45 <elliott> :t runStateT
23:53:46 <lambdabot> forall s (m :: * -> *) a. StateT s m a -> s -> m (a, s)
23:58:17 <elliott> oerjan: how does one learn how to solve problems
23:59:24 <zzo38> Does it make a comonad if "s" is monoid and "m" is comonad?
2011-12-09
00:00:31 <kallisti> elliott: to solve a problem you must solve the problem of learning how to solve problems.
00:00:38 <kallisti> elliott: once you've done this, you will have learned how to solve problems.
00:00:39 * kallisti zen
00:02:58 -!- PiRSquared17 has joined.
00:05:51 <zzo38> Maybe like this? extract = fst . extract . ($ mempty) . runStateT; And then it needs to make duplicate as well
00:11:06 <PiRSquared17> What is http://esolangs.org/w/index.php?title=Excela&curid=1863&action=history ?
00:11:52 <elliott> PiRSquared17: vandalism
00:12:14 <elliott> by bots, to be precise
00:12:24 -!- cheater has quit (Remote host closed the connection).
00:12:32 <elliott> hmm, I wonder if they'd go away if we blanked the page
00:12:51 -!- cheater has joined.
00:13:43 <PiRSquared17> What if you moved it to excela/content and transcluded it?
00:14:05 <elliott> dunno about that... might work, but better wait for ais' approval
00:16:48 <PiRSquared17> Do you have AbuseFilter?
00:17:23 <elliott> no. ais wants it but the mediawiki version is too old
00:18:50 -!- GreaseMonkey has quit (Quit: The Other Game).
00:22:25 -!- Ngevd has quit (Quit: 'night).
00:22:42 <oerjan> <elliott> oerjan: how does one learn how to solve problems <-- i think the general 10000 hour rule applies
00:23:05 <elliott> oerjan: then I'm 15 years overdue
00:24:32 <oerjan> elliott: also i hear pólya's "how to solve it" is supposed to be good
00:26:01 <oerjan> > 10000/24/365.2425
00:26:02 <lambdabot> 1.1407945862452116
00:26:51 <oerjan> elliott: it's not 10000 hours of _living_, but 10000 hours of actually training on solving problems, hth.
00:27:26 <elliott> oerjan: well... I've been doing things that involve problem-solving much longer than that
00:27:44 <elliott> oerjan: i think you may be interpreting my question in too much of a practical sense
00:27:48 <oerjan> O KAY
00:27:53 <elliott> it was intended in the existential despair sense :)
00:29:21 <oerjan> <elliott> hmm, I wonder if they'd go away if we blanked the page <-- i am not convinced they actually _look_ at the page. they're always reverting to a really old version, after all.
00:29:32 <elliott> oerjan: oh, they are? I thought they were babelfishing it
00:29:48 <oerjan> er
00:29:58 <oerjan> i may have been assuming there
00:30:00 <oerjan> ->
00:30:18 <elliott> :t (&&&)
00:30:20 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c')
00:30:28 <elliott> :t (***)
00:30:30 <lambdabot> forall (a :: * -> * -> *) b c b' c'. (Arrow a) => a b c -> a b' c' -> a (b, b') (c, c')
00:32:35 <Gregor> zzo38: So, NeXT had Display Postscript, and Apple continued with Display PDF. Display DVI? Display TeX? Best ideas ever?
00:33:07 <Gregor> (I of course am not referring to Digital Video Interface, but TeX's DVI)
00:35:36 <oerjan> elliott: no, i was remembering correctly; the spammed page is identical to the _first_ page version, except for the spam link.
00:35:58 <oerjan> it's just that the page creator didn't have very good english :P
00:35:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:38:36 <elliott> oerjan: ok :P
00:38:45 <elliott> Gregor: :D
00:39:06 <PiRSquared17> Why not semi-protect it?
00:39:21 <elliott> PiRSquared17: because if protected, the spambots move to another page
00:39:25 <elliott> the last time we had them
00:42:51 -!- azaq23 has quit (Quit: Leaving.).
00:42:54 <pikhq_> I wonder that nobody's attempted a Bayesian filter for wiki edits.
00:43:34 <Gregor> I bet that somebody has.
00:44:21 <elliott> pikhq_: There is like 0% nobody has done that.
00:44:23 <elliott> *chance
00:44:49 <pikhq_> elliott: Then why isn't it in MediaWiki, anyways?
00:45:04 <elliott> It probably is, as an extension.
00:45:12 <elliott> pikhq_: Anyway, that wouldn't stop these Excela bora.
00:45:13 <elliott> *bots.
00:45:21 <elliott> bora, n. plural of bots.
00:45:25 <elliott> ...
00:45:27 <pikhq_> Why wouldn't it?
00:45:27 <elliott> Plural of bot.
00:45:28 <elliott> botses.
00:45:33 <elliott> pikhq_: Because they're just reverting.
00:45:53 <pikhq_> To any particular edit?
00:46:09 <elliott> The first.
00:46:15 -!- tiffany has joined.
00:46:26 <pikhq_> That's actually Bayesianable.
00:46:28 * tiffany wrote a brainfuck interpreter
00:46:36 <pikhq_> And naive-filterable, for that matter.
00:47:08 <elliott> pikhq_: Yes, if you want every edit sufficiently like the first revision to be flagged as spam.
00:47:17 <elliott> Like, say... the current, very similar version of the article.
00:47:42 <elliott> Bayesian filters work best for immutable "send-based" things IMO
00:48:14 <Vorpal> terrible weather here
00:48:21 <Vorpal> snow storm pretty much
00:48:28 <pikhq_> I'd probably have the Bayesian filter be keyed to the patch on the new article...
00:48:44 <pikhq_> As well as feeding it the revision message, and as much metadata as makes sense.
00:48:58 <pikhq_> Still dunno how well it'd work; I'd imagine "pretty well", but I'd have to give it a shot.
00:51:12 <oerjan> if these bots really use rejection to decide when to move on to the next article, the best would be to silently ignore these edits, pretending they went through...
00:53:19 <PiRSquared17> tiffany: hello
00:53:23 <tiffany> hai
01:01:22 -!- copumpkin has joined.
01:28:12 <zzo38> Gregor: Screen display should probably just be the pixels. TeX is good for printout. Other than for print preview, you don't need PostScript, PDF, or DVI, to display on the screen.
01:28:39 <augur> http://www.superlinguo.com/post/13909266605/this-is-the-presentation-on-lolcats-and-lolspeak
01:29:07 <elliott> im not clicking that
01:30:20 <augur> its an actual academic talk
01:30:23 <augur> on lolcatese
01:30:59 <elliott> no
01:35:23 <pikhq_> augur: Wow.
01:35:30 <augur> pikhq_: :D
01:36:45 <augur> this lolcat bible has a lot of examples of what i would consider absolutely horrible lolcatese
01:40:37 <Gregor> "The __ctype_b_loc() function shall return a pointer into an array of characters" -- "const unsigned short * * __ctype_b_loc (void);
01:40:37 <Gregor> "
01:40:39 <Gregor> This function
01:40:45 <Gregor> It does not return a pointer into an array of characters.
01:41:09 <elliott> Gregor: They're unsigned short characters.
01:41:26 <Gregor> elliott: They're unsigned short POINTERS
01:41:37 <elliott> Gregor: Uhh, pointer to an array = ** :P
01:42:32 <Gregor> ... ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhofcoursethat'sjustretardedthough.
01:45:21 <tswett> HUSSIEEEEEEEE!!!!!!!!
01:45:23 <tswett> That should be sufficient.
01:46:10 -!- derdon has quit (Remote host closed the connection).
01:46:18 <tswett> So, ** doesn't really look like a pointer to an array to me.
01:46:51 <tswett> I mean, I'd expect you to say that short is a short, and short* is a pointer to a short or array of shorts, so short** is a pointer to a pointer to a short or array of shorts.
01:47:41 <Gregor> The thing is, it says it's a pointer INTO an array.
01:47:43 <Gregor> That's what confused me.
01:48:28 <elliott> Gregor: Well, it might point into the middle of an array?
01:48:33 <tswett> Yeah, and it seems like a pointer into an array of shorts would be a short*.
01:48:53 <tswett> Unless "pointer into an array of things" doesn't mean the same thing as "pointer to a thing".
01:49:55 <Gregor> That description left something to be lacking on many fronts :P
01:54:33 -!- cheater has quit (Ping timeout: 248 seconds).
01:55:10 <Gregor> http://sprunge.us/WKaP <-- all the symbols not defined for bin/cp
01:55:13 <Gregor> And yet, it works :P
02:00:24 <tswett> Well, who needs freading, anyway? I've never used it.
02:01:29 <Gregor> Apparently neither does cp
02:02:19 <zzo38> Astrological ages don't work. Instead, say what you mean.
02:02:54 <elliott> `addquote <zzo38> Astrological ages don't work. Instead, say what you mean.
02:02:57 <HackEgo> 751) <zzo38> Astrological ages don't work. Instead, say what you mean.
02:03:18 <Gregor> Fffffffffffffffffffff
02:03:30 <Gregor> I essentially just have to implement scandir myself.
02:03:35 <Gregor> Or ... steal it from newlib?
02:04:05 <tswett> zzo38: this may be a spoiler, but... Capricorn.
02:04:26 <zzo38> tswett: What about Capricorn?
02:04:51 <tswett> It is not what it seems.
02:05:59 <zzo38> Capricorn is the astrological sign for 270 degrees up to 300 degrees. The 270 degrees (start of Capricorn) corresponds to the winter solstice and to the sun declination at the tropic of Capricorn.
02:06:31 <zzo38> (It is named after the constellation Capricornus but has nothing to do with that constellation)
02:13:32 <elliott> oerjan: gah
02:13:34 <elliott> oerjan: they do not just revert back
02:13:36 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Excela&curid=1863&diff=25903&oldid=25900
02:13:38 <elliott> they change a link to spam
02:13:47 <oerjan> i said that duh
02:14:49 <tswett> The astrological signs have nothing to do with the constellations? I thought that they corresponded roughly to the times that... come to think of it, none of the classical planets appear to move in a circle once per Earth year, do they.
02:15:25 <oerjan> actually, precisely one of them does.
02:15:37 <tswett> Actually, the Sun does, if you ignore the rotation of the celestial sphere.
02:16:05 -!- tiffany has quit (Quit: nyu~).
02:16:21 <tswett> So yeah, I would expect the astrological signs to have something to do with the movement of the Sun across the celestial sphere.
02:17:41 <pikhq_> They've also ceased to have what little correspondance they once did.
02:21:18 <zzo38> Well, yes at one time they did approximately correspond to the constellations of the ecliptic they are named after, so yes the Sun will since it is also on the ecliptic. Some people still want to use that it is called sidereal zodiac, but even then, it is not quite corresponding to the constellations. Anyways, there are thirteen constellations on the ecliptic.
02:23:44 <zzo38> And two of the constellations the signs are named after do not have exactly the same name as those signs.
02:24:39 <zzo38> If this is confusing you can just measure directly in degrees (using degrees directly also allows you to do subtraction more easily)
02:27:56 <Sgeo> elliott, tswett, kallisti, if you missed it, update. Sorry I'm delayed.
02:32:19 -!- Vorpal has quit (Ping timeout: 240 seconds).
02:32:34 <Sgeo> Oh, tswett already saw it
02:36:28 <zzo38> This is what someone wrote about monad: "My first thought was that a monad is what a man may only have one of after an accident."
02:37:16 <tswett> zzo38: TOO SOON
02:37:39 <elliott> tswett: u monad bro? :trollface.jpg: augh I want to kill myself
02:37:42 <tswett> Sgeo: I request laughter, so as to indicate to the channel that my joke was funny.
02:38:15 <oerjan> tswett: oh come on, hitler has been dead for 66 years
02:39:05 -!- elliott has quit (Remote host closed the connection).
02:39:18 <oerjan> ^ha
02:40:53 <Sgeo> tswett, my conclusion that you saw it already was not based on reading #esoteric
02:41:41 <tswett> oerjan: well, it's not about Hitler. You know the thing about Capricorn?
02:42:23 <tswett> It's like the thing about Capricorn, except inverted, and instead of Capricorn, it's the conjugate of spades.
02:42:36 <oerjan> ^ul ((ha)(ha))(~:^:(. )*S( )~**a~^a~!*~:^):^
02:42:36 <fungot> ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ha. ...too much output!
02:42:41 <oerjan> oops
02:42:42 <tswett> You know. The card suit.
02:42:45 <tswett> Does that clear it up?
02:43:02 <Sgeo> tswett, I'm trying to get it, but I can only imagine a vague link between the things I think you're talking about. Except for when you started talking about spades, now I have no idea what you're talking about
02:43:05 <oerjan> tswett: i'm not aware of any capricorn monads.
02:43:09 <Sgeo> At least in relation to recent events
02:43:17 <tswett> Now, I wonder which ha is which...
02:43:26 <tswett> ^ul ((HoNk)(hOnK))(~:^:(. )*S( )~**a~^a~!*~:^):^
02:43:27 <fungot> hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. hOnK. ...too much output!
02:43:30 -!- elliott has joined.
02:43:35 <tswett> The first ha apparently does nothing.
02:43:37 <zzo38> Are you talking about card games?
02:43:43 <tswett> Yep, definitely.
02:43:47 <oerjan> tswett: it was buggy, duh
02:44:46 <Gregor> Woooh ls
02:45:18 <Sgeo> Gregor should read Homestuck.
02:45:26 <Gregor> NEVER
02:45:41 <Sgeo> Clearly, if two artists are friends, and someone is a fan of one, they should be a fan of the other. Known fact.
02:45:46 <oerjan> ^ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^
02:45:47 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
02:45:55 <oerjan> there you go.
02:46:00 <oerjan> ^def ha ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^
02:46:00 <fungot> Defined.
02:46:13 <Sgeo> Gregor, you do know that Hussie and North interact, right?
02:46:47 <Sgeo> Gregor, http://www.mspaintadventures.com/?s=ryanquest
02:48:44 <kallisti> Sgeo: but see, I like Homestuck but not Dinosaur Comics.
02:49:05 <kallisti> I think your rule is broken
02:50:14 <quintopia> fibonacci has eh
02:50:17 <quintopia> sound good
02:50:20 <Sgeo> IMPOSSIBLE
02:50:40 <kallisti> fibonacci is a pretty cool guy. eh has sequence and doesn't afraid of anything.
03:05:01 -!- Nisstyre has quit (Ping timeout: 252 seconds).
03:12:17 <oerjan> yay science http://www.newscientist.com/blogs/shortsharpscience/2011/12/biggest-telescope-starts-obser.html
03:15:10 <elliott> yay science
03:20:39 <quintopia> is that about the radio array in chile?
03:20:50 <oerjan> no.
03:20:53 <quintopia> oh
03:29:37 -!- oerjan has quit (Quit: Good night).
03:39:57 <Gregor> I can run all of linux-gnu-libc6 coreutils on Mac OS X :)
03:42:32 <pikhq_> How?
03:45:48 <elliott> pikhq_: gelfload
04:06:46 <Gregor> Awww, can't run urxvt :(
04:39:17 <Gregor> (Yet!)
04:43:01 -!- Nisstyre has joined.
04:50:20 <Sgeo> kallisti, elliott update
04:50:24 <Sgeo> tswett, you too
05:00:02 -!- PiRSquared17 has left.
05:01:09 -!- PiRSquared17 has joined.
05:02:33 -!- MDude has changed nick to MSleep.
05:03:28 -!- PiRSquared17 has left.
05:08:25 <zzo38> I was thinking, what would be the seasons between the tropics? The seasons are supposed to be reversed for the southern hemisphere but are they different between the tropics (including the equator, which is neither northern nor southern)?
05:19:37 -!- DCliche has joined.
05:23:10 -!- Klisz has quit (Ping timeout: 240 seconds).
05:46:46 -!- elliott has quit (Remote host closed the connection).
05:47:55 -!- elliott has joined.
06:05:46 -!- Darth_Cliche has joined.
06:08:53 -!- DCliche has quit (Ping timeout: 244 seconds).
06:35:33 -!- elliott has quit (Quit: Leaving).
06:57:47 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
07:16:33 -!- elliott has joined.
07:17:16 <elliott> Sgeo: Update.
07:17:18 <elliott> HA
07:17:19 <elliott> HAH
07:17:19 <elliott> HA
07:17:20 -!- elliott has quit (Client Quit).
07:23:43 -!- elliott has joined.
07:24:39 <monqy> ha
07:27:40 * Sgeo puts a red X on top of monqy
07:28:19 <zzo38> How do you know what the geographic elevation is for a specific floor of a specific building?
07:29:14 <elliott> monqy is broken image
07:29:25 <elliott> broken monqy
07:29:27 <elliott> broken life
07:29:58 <fizzie> Maybe there's an elevation table in the building's manual. (I suppose buildings come with a manual? I mean, they're expensive and all.)
07:30:07 <monqy> Sgeo: hi
07:30:07 <monqy> elliott: hi
07:30:16 <elliott> hi monqy
07:30:18 <zzo38> I am using this in Free Geek Vancouver, so I can put it in a shell script that calls swetest (the Swiss Ephemeris test command-line program). The program has no option for using the current time, but the shell script I wrote will include the current date and time (using the date command)
07:30:18 <monqy> hi
07:30:21 <elliott> hi
07:30:28 <elliott> tswetest
07:30:39 <elliott> fizzie: I need to think of something to bug you abouts ince you talked?
07:30:58 <elliott> it is rules
07:31:05 <fizzie> It is a silly rule. :/
07:31:37 <elliott> fizzie: Only because it exists solely to inconvenience you!!!
07:31:50 -!- Nisstyre has quit (Ping timeout: 240 seconds).
07:31:50 <elliott> It's like atheism.
07:32:33 <fizzie> I don't think atheism's sole reason is to inconvenience me.
07:33:06 <elliott> fizzie: UM, its sole purpose is to inconvenience GOD.
07:33:13 <elliott> Hello? These situations are analogous?
07:33:40 <fizzie> Oh, "like" like that, like.
07:34:17 <elliott> fizzie: Well, maybe it also exists solely to inconvenience you? The only conclusion one could draw from that is that you are god are you god fizzie.
07:35:36 <fizzie> I'm no god; I don't dare, otherwise oerjan would have a punch in the face for me.
07:36:00 <elliott> fizzie: You made that sound profound somehow.
07:37:34 <fizzie> I mean I'd "totes" be a god except for the punch thing.
07:37:37 <pikhq_> Funny, I wouldn't even think that it'd inconvenience god. Not possessing existence could inconvenience a deity, sure, but simply having people not think it exists shouldn't.
07:38:05 <fizzie> Gods run on belief, so...
07:38:17 <fizzie> (Source: Pratchett.)
07:39:22 <pikhq_> Yeah, well, fuck 'em.
07:39:41 <elliott> pikhq_: Excuse me god has feelings too?
07:39:59 <pikhq_> elliott: And smiting.
07:40:02 <elliott> I quote GOD HIMSELF on the matter, "I just want atheists to love me. :'("
07:40:12 <elliott> QUOTE (C)(TM)(R) GOD HIMSELF
07:40:36 * Sgeo is reminded of something that happened in #jesus recently
07:40:39 <pikhq_> I suggest he smite evil for a bit; that'd at least help.
07:47:32 <zzo38> If seasons are flipped in the south hemisphere, then what season is it on the equator?
07:48:43 <fizzie> It's the +nan.0 season.
07:51:03 <pikhq_> zzo38: "Equator"
07:52:34 <fizzie> The Wispumn.
08:19:27 <elliott> hi
08:23:03 <zzo38> What should it be called if I make a Haskell library with some comonads for some of the monad transformers and some similar things?
08:23:13 <elliott> zzo38: monad transformers from which library?
08:23:17 <elliott> transformers, mtl, monads-tf?
08:24:10 <zzo38> transformers
08:24:39 <elliott> transformers-comonads :P
08:24:47 <zzo38> OK
08:25:23 <zzo38> Obviously not all of them can make comonads, and some require additional constraints (although some of the constraints required to make monads do not apply in some cases to make comonads)
08:28:20 <Sgeo> elliott, update
08:28:21 <Sgeo> =P
08:31:06 <Sgeo> kallisti
08:33:05 <monqy> thanks
08:34:04 <elliott> monqy is kallisti
08:39:10 -!- zzo38 has quit (Remote host closed the connection).
08:58:37 -!- monqy has quit (Quit: hello).
09:28:30 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
09:30:32 -!- Zuu has quit (Ping timeout: 252 seconds).
09:43:26 -!- cheater has joined.
09:57:02 -!- Jafet has joined.
09:58:57 <Jafet> Axe umlaut stream
10:01:09 <elliott> hi
10:38:50 -!- elliott has quit (Read error: Connection reset by peer).
10:39:28 -!- elliott has joined.
10:57:46 -!- Ulysses_ has joined.
11:00:09 <Ulysses_> has anyone tried coding up the Black-Scholes options pricing formula in an esolang? Espen Haug lists versions of it in "multiple languages" at http://www.espenhaug.com/black_scholes.html but Malbolge, Piet, Homespring and the like are sadly missing
11:02:07 <elliott> seems a pretty arbitrary thing to code :P
11:02:10 <elliott> I doubt anyone has done so
11:02:13 <elliott> you get to be the first!
11:02:50 <elliott> Ulysses_: looks like it involves lots of floats and whatnot
11:03:00 <elliott> malbolge and homespring are out at least, that's way too difficult
11:03:06 <elliott> dunno how piet would be like
11:03:13 <elliott> glass or something is probably the most realistic option
11:04:38 <Ulysses_> thanks Elliott: I'm barely a programmer, but have begun wondering about working with my children on a simple language. Thus, I've begun to wonder whether I could code B-S up in Kid's Ruby (or even Storytelling Alice).
11:05:02 <Ulysses_> The next thought, though, was why stop with children's programming languages. Why not full esolangs?
11:05:12 <Ulysses_> I mean, if finance is to be reformed...
11:05:21 <elliott> Ulysses_: Well, there's a Haskell implementation on that page :-)
11:06:42 <Ulysses_> Ah - you detect my lack of programming ability: I'd not appreciated that that was an esolang (it's not on the esolang wiki's list of languages). I may have missed others as well
11:07:19 <elliott> hehe, Haskell isn't actually an esolang -- it's just unconventional enough to be :)
11:08:03 <elliott> ...and also well-liked by many people here; whether that's a coincidence or not is for you to decide
11:12:12 <Ulysses_> I've never tried to talk to the esolang community before (or even consciously used an IRC channel). Is this the best way to suggest what might be a fun project to it?
11:12:48 <elliott> most likely; the wiki (http://esoteric.voxelperfect.net/wiki/Main_Page) is also a pretty good place for this stuff
11:13:08 <elliott> but if it gains any traction people will hear about it, this isn't a big place :)
11:17:06 <Ulysses_> would it be OTT for me to suggest this on the wiki as well? If not, should I add B-S to the list of ideas? There is something nice about the idea of BS in BF
11:18:18 <elliott> well the list of ideas is just for language ideas -- actually the best place is probably the forum: http://esolangs.org/forum/
11:18:24 <elliott> although it's quite inundated with spam these days
11:20:24 <Ulysses_> it's kind of you to distinguish my correspondence from spam. In any case, understood: I'll see if there's any traction here. Otherwise, what would you regard as the easiest esolang to set up and code in if I wanted to take a break from Kid's Ruby and Alice?
11:22:05 <elliott> Ulysses_: no setup required -- our IRC bots can run esolangs :p (some of them are written in them) -- they respond to private queries too so no need to worry of clogging the channel or anything
11:22:10 <elliott> ^ul (hello)S
11:22:10 <fungot> hello
11:22:29 <elliott> as for easiest, well, that's subjective :) brainfuck is obviously the most popular esolang by a wide margin
11:25:35 <Ulysses_> thanks. Please forgive any newbie question: if I wanted to use a BF superset or variant with a name that I wouldn't be worried about around my 3 - 8 year olds, what would you suggest?
11:25:44 <Ulysses_> "any" = "another"
11:26:17 <elliott> well, there's Ook!, but that's rather harder to read :-P
11:26:39 <elliott> a lot of people just call brainfuck "BF", pronouncing that is left as an exercise to the reader...
11:29:01 <kallisti> you could also use Befunge because it's awesome, though a bit more difficult to understand.
11:29:29 -!- elliott has left ("busy elsewhere...").
11:32:16 -!- copumpkin has quit (Ping timeout: 252 seconds).
11:32:43 -!- copumpkin has joined.
11:32:56 <Ulysses_> thank you kalisti. I think that I'll stick to BF. If I wanted to get a small version of it onto either a Linux or a Win 7 machine (ideally abbreviating brainfuck to BF), where should I start?
11:45:43 -!- Phantom_Hoover has joined.
11:45:59 <cheater> "Extreme Programming didn't lift off" - Carl Friedrich Gauss
11:57:55 <kallisti> Ulysses_: check out the wiki, there are plenty of implementations out there. You could even write your own easily.
12:01:16 -!- derdon has joined.
12:01:32 <Phantom_Hoover> Of what?
12:01:33 <lambdabot> Phantom_Hoover: You have 16 new messages. '/msg lambdabot @messages' to read them.
12:01:37 <Phantom_Hoover> ...
12:01:44 <Phantom_Hoover> @tell elliott FFS the threshold is like 9.
12:01:45 <lambdabot> Consider it noted.
12:01:46 <Sgeo> @tell Phantom_Hoover Hi.
12:01:47 <lambdabot> Consider it noted.
12:01:47 <Ulysses_> thanks kallisti - I'm a very novice programmer, so usually have trouble hello worlding without a reference manual nearby. I'll look through the wiki's links, but wondered if any of the implementationw were particularly easy to set up and use
12:04:32 -!- aloril has quit (Ping timeout: 252 seconds).
12:09:09 -!- elliott has joined.
12:35:55 -!- derdon has quit (Remote host closed the connection).
13:00:37 -!- derrik has joined.
13:03:07 <kallisti> awww yeah taking intro to advanced math next semester
13:03:11 <kallisti> should be good
13:10:36 <elliott> are they going to teach you addition
13:10:37 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
13:10:41 <elliott> help
13:13:41 <kallisti> elliott: no I'm guessing like.... proofs?
13:13:47 <kallisti> though we might actually do some abstract algebra.
13:14:01 <kallisti> so yes, maybe they'll teach me addition!
13:14:01 <elliott> proofs "advanced mat"
13:14:13 <kallisti> elliott: an intro to advanced math, yes.
13:14:28 <kallisti> elliott: anyway I'm basically taking it because it's required for topology.
13:15:32 <kallisti> hmmm, I'm going pretty far into the upper-level math courses.
13:15:35 * kallisti considers a minor.
13:15:52 <kallisti> also wtf why is there no algorithm analysis class this semester.
13:17:54 <fizzie> All the algorithms have already been analysed, perhaps.
13:19:43 <kallisti> not by me!
13:20:11 <kallisti> wooo I get to take databases now. so excited to learn absolutely nothing.
13:20:13 -!- oerjan has joined.
13:20:17 <Phantom_Hoover> http://en.wikipedia.org/wiki/Isle_of_Arran http://en.wikipedia.org/wiki/Aran_Islands
13:20:22 <Phantom_Hoover> Most confusingly-named things.
13:21:26 <elliott> Phantom_Hoover: That first one looks pretty.
13:21:33 <kallisti> I don't really think that's very confusing...
13:21:35 <elliott> It occurs to me that I have really low standards for prettiness in landscapes.
13:21:40 <oerjan> obviously arranged
13:21:56 <kallisti> elliott: that's because you live in a city, I imagine.
13:21:59 <Phantom_Hoover> elliott, it is quite pretty, although I suspect that Minecraft has lowered your standards.
13:22:02 <Phantom_Hoover> kallisti, aaaaaahahahahaha
13:22:03 <elliott> kallisti: "...".
13:22:13 <elliott> Hexham: big city for big people.
13:22:14 <Phantom_Hoover> Do you even know what a city is.
13:22:18 <Phantom_Hoover> Do you have cities in Georgia.
13:22:22 <kallisti> yes
13:22:36 <elliott> Phantom_Hoover: In Georgia a "city" is anywhere with more than 3 people and a tree.
13:22:55 <Phantom_Hoover> elliott, even then, Hexham only has two people, and no trees.
13:22:59 <kallisti> oh hexham isn't a city, okay.
13:23:03 <elliott> Phantom_Hoover: Yes, but also an abbey!
13:23:10 <elliott> That counts for like 2 1/2 trees.
13:23:37 <Phantom_Hoover> (I suspect I may have actually passed through Hexham by train on Tuesday, but I have no evidence.
13:23:38 <Phantom_Hoover> *
13:23:41 <Phantom_Hoover> **)
13:23:49 <kallisti> Hexham is nearly THREE TIMES LARGER than my town in Georgia
13:23:52 <elliott> Phantom_Hoover: It... isn't that hard to determine.
13:23:56 <kallisti> in fact, Wikipedia even refers to it as "the city of Jasper"
13:23:59 <Phantom_Hoover> elliott, it is at night.
13:24:03 <kallisti> whereas Hexham is a lowly "market town"
13:24:11 <elliott> Phantom_Hoover: Where was your starting point, where was your destination.
13:24:32 <elliott> http://www.cozy-cabin.us/templates/uploaded_files/JaspeCityGuider.jpg
13:24:34 <Phantom_Hoover> York, Edinburgh.
13:24:41 <elliott> I'm going to go out on a limb and say Hexham is more densely-populated than this.
13:24:44 <kallisti> It is named after General Andrew Pickens, a Revolutionary War hero who fought the Cherokee in 1760 and 1782.
13:24:51 * kallisti has so much pride for his county.
13:24:58 <kallisti> he killed the injuns.
13:25:37 <elliott> Phantom_Hoover: You... probably did.
13:25:43 <elliott> Phantom_Hoover: What are you _sure_ you passed through?
13:25:52 <oerjan> <Phantom_Hoover> elliott, even then, Hexham only has two people, and no trees. <-- nah i figure there are four: elliott, ngevd, elliott facekicker and elliott's mother.
13:26:04 <elliott> Anything between various points A and B passes through the Hexham area because there's nothing else to pas through.
13:26:15 <elliott> oerjan: um do you have any evidence facekicker elliott isn't my mother
13:26:19 <Phantom_Hoover> Berwick, Newcastle.
13:26:25 <oerjan> elliott: darn you're right
13:26:26 <Phantom_Hoover> elliott, facekicker moved out.
13:26:36 <elliott> Phantom_Hoover: OK you passed through Hexham.
13:26:41 <elliott> Phantom_Hoover: Why... why didn't you visit ;__;
13:26:46 <Phantom_Hoover> I'm amazed it didn't explode.
13:26:58 <Phantom_Hoover> Also the train didn't stop and the doors are infuriatingly hard to open while it's moving.
13:27:28 <Phantom_Hoover> "The Old Gaol, behind the Moot Hall on Hallgates, was one of the first purpose built jails in England." Hexham, always at the cutting edge of progress.
13:27:48 <elliott> Phantom_Hoover: Now we just build GRAVES.
13:27:52 <elliott> For old people to die in.
13:27:53 <fizzie> Wow, the stupidest: W|A can't tell about the land area of Hexham or Lieksa. (It only knows population counts and location and current weather and such -- http://www.wolframalpha.com/input/?i=Hexham+Lieksa -- even manually asking for "population density" or "area" gives just "data not available".)
13:28:07 <elliott> (In England it is customary to move into your grave up to three months before you actually die.)
13:28:09 <Phantom_Hoover> "1,111 women employed as Sewers."
13:28:24 <elliott> Phantom_Hoover: Yes the sewage system of Hexham is based entirely around women.
13:28:32 <elliott> Have you ever seen The Human Centipede it's basically like that.
13:28:32 <Phantom_Hoover> elliott, most places just use pipes...
13:28:44 <Phantom_Hoover> I...
13:29:09 <elliott> Phantom_Hoover: Yes but we like our water to have the unique taste that only all-female sewage systems can provide.
13:29:25 <oerjan> ...
13:29:26 <elliott> What am I doing with my life.
13:30:19 <kallisti> lol
13:31:16 <Phantom_Hoover> And just like that, nobody talked to elliott any more.
13:31:46 * kallisti still talks to elliott.
13:31:52 <elliott> He said nobody.
13:31:56 <elliott> You're nobody.
13:31:59 <kallisti> :(
13:32:14 <kallisti> but each person is a beautiful unique snowflake. Everyone is valuable.
13:32:55 * oerjan checks if kallisti is melting
13:33:04 <oerjan> i hear it's hot in georgia
13:33:18 <kallisti> !sanetemp 36
13:33:21 <EgoBot> 2.2
13:33:27 <kallisti> current temp in heathen degrees.
13:33:45 <oerjan> ok that's not so hot, but still too much for a snowflake.
13:34:02 <Phantom_Hoover> oerjan, not necessarily, doesn't water start being weird below 4°?
13:34:10 <elliott> Apparently it's only 3 C in Hexham, I am sceptical?
13:34:13 <elliott> There is sun outside and all that.
13:34:41 <oerjan> Phantom_Hoover: it starts expanding when cooling, but i don't think that affects melting.
13:35:03 <Phantom_Hoover> elliott, there's sun in the Antarctic too.
13:35:30 <oerjan> the sun here is just about setting, and there's snow on the ground.
13:35:40 <elliott> Phantom_Hoover: I'm not warm in the Antarctic though ALSO are you trying to school me about Antarctica that is a VERY DANGEROUS PATH BOY
13:36:03 <oerjan> elliott: sheesh have you never heard of global warming and how it'll melt antarctica
13:36:06 <Phantom_Hoover> elliott, are you a master of knowing things about Antarctica.
13:36:09 <elliott> It's apparently -32.6 C at the South Pole right now.
13:36:21 <elliott> BUT 16.4 in Ernest Shackleton which is apaprently in Antarctica?
13:36:27 <elliott> Antarctica: WARMER THAN HEXHAM.
13:36:30 <elliott> Phantom_Hoover: Yes.
13:36:41 <elliott> Phantom_Hoover: You're still being dragged there some day.
13:36:53 <oerjan> elliott: well it _is_ almost midsummer there
13:37:05 <kallisti> elliott: are you sure Ernest Shackleton isn't just a person in antarctica and that's just his body temperature?
13:37:05 <Phantom_Hoover> elliott, how many penguins are there in Antarctica.
13:37:23 <elliott> kallisti: FOR TWELVE YEARS YOU HAVE BEEN ASKING WHO IS ERNEST SHACKLETON
13:37:24 <fizzie> oerjan: "For example, if the ground humidity is only about 20% (very rare, because if there is precipitation, the atmosphere is generally wet!) then it could snow at 8°C (or 46°F for English users)." -- http://www.sciencebits.com/SnowAboveFreezing
13:37:35 <elliott> Phantom_Hoover: Exactly 4.
13:37:40 <Phantom_Hoover> The current temperature in Edinburgh Airport is apparently 3°C.
13:37:46 <oerjan> fizzie: o kay
13:37:55 <Phantom_Hoover> OMG Libertine has a °C ligature.
13:37:57 <elliott> Phantom_Hoover: (There used to be 5, but he got lost and is currently in the Arctic.)
13:38:07 <elliott> http://lrs.ed.uiuc.edu/students/downey/project/chinstrap.jpg <-- pic of lost penguin
13:38:10 <Phantom_Hoover> elliott, what about the ones in Edinburgh.
13:38:12 <kallisti> fizzie: it snowed above freezing just a few days ago here.
13:38:20 <elliott> Phantom_Hoover: They're very, very lost.
13:38:23 <elliott> Phantom_Hoover: Please give them a map.
13:38:32 <fizzie> Current temperature at Otaniemi: 0.12 °C -- oh, outside.hut.fi now says "This service is permanently experimental & now twice as unreliable" in place of just "experimental & unreliable" it used to for quite many years.
13:38:58 <Phantom_Hoover> elliott, OK, I'll throw them one when I go to glower at the pandas.
13:39:01 <kallisti> wow weather is difficult.
13:39:06 <kallisti> dude what if
13:39:12 <kallisti> we genetically engineered snow pandas
13:39:20 <kallisti> that can eat, uh...
13:39:20 <elliott> Phantom_Hoover: The pandas love you even if you are terrible.
13:39:22 <kallisti> polar bears.
13:39:23 <kallisti> yes.
13:39:26 <Phantom_Hoover> http://www.youtube.com/watch?v=ZQ12DDe4ag0
13:39:28 <fizzie> There's supposed to be quite a snowstorm going on in Finland today, that's what they predicted.
13:39:37 <Phantom_Hoover> I am basically going to do this but with pandas.
13:40:33 <kallisti> Phantom_Hoover: lol slides
13:40:39 <oerjan> elliott: no the one in the arctic got eaten by garfield http://images.ucomics.com/comics/ga/1996/ga960113.gif
13:41:03 <fizzie> Ooh, 17000 people without electricity up there.
13:41:17 <fizzie> And 29 m/s winds at times.
13:41:28 <kallisti> Phantom_Hoover: "it's because we can do these things that makes us better than animals" I lol'd
13:41:37 <fizzie> There *was* some flickering of lights here half an hour ago.
13:41:59 <Phantom_Hoover> kallisti, it is because we have Armando Iannuci that makes Scotland better than everywhere else.
13:45:26 <Phantom_Hoover> http://www.youtube.com/watch?v=G_l72q9K3Fw&feature=related
13:45:37 <Phantom_Hoover> Oh god I can't stop laughing.
13:47:04 <kallisti> Phantom_Hoover: I think scotlanders are basically jerks.
13:47:28 * kallisti (total number of scottish known: 2)
13:47:45 <kallisti> Phantom_Hoover and now Armando Iannuci.
13:48:03 <kallisti> both verified jerks.
13:49:11 <elliott> Phantom_Hoover: TIME SPENT LOOKING AT RABBITS
13:49:12 <elliott> IS NEVER
13:49:13 <elliott> EVER
13:49:15 <elliott> WASTED
13:49:39 <Phantom_Hoover> noooo, it's not on 4oD
13:51:48 <elliott> Phantom_Hoover: http://www.youtube.com/watch?v=ceEzpehDeDc how does one deal with the intense awkwardness in this i cant bear
13:52:17 <elliott> fax paper that cries :D
13:52:22 <Phantom_Hoover> Not sure I've seen that one.
13:53:04 <elliott> That piano thing is the greatest thing I've ever heard in my life.
13:53:33 <Phantom_Hoover> I would pay £1000 for a seat on a 2-inch cruise liner.
13:55:38 <Phantom_Hoover> http://www.youtube.com/watch?v=7lZykBa_Fnw&feature=related
13:55:38 <Phantom_Hoover> I really hope this is how the Singularity goes.
14:02:06 -!- derrik has quit (Quit: gone).
14:15:13 -!- aloril has joined.
14:17:22 <Ulysses_> about to unplug, but hoped that one last commercial message wouldn't be inappropriate: I think that it would be a lot of fun to add esolang implementations of the Black-Scholes options pricing formula to Espen Haug's "multiple languages" list
14:17:30 <Ulysses_> Thanks to all who discussed this with me earlier!
14:17:45 <Ulysses_> off to meet Circe
14:21:15 -!- elliott has left ("Leaving").
14:22:33 -!- Ulysses_ has quit (Ping timeout: 265 seconds).
14:25:33 -!- hagb4rd has joined.
15:00:51 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
15:12:05 -!- cheater has quit (Ping timeout: 255 seconds).
15:18:25 -!- Phantom_Hoover has joined.
15:19:28 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:22:32 -!- oerjan has quit (Quit: leaving).
15:34:44 -!- MSleep has changed nick to MDude.
15:42:31 -!- elliott has quit (Ping timeout: 240 seconds).
15:43:02 -!- copumpkin has joined.
16:03:14 <Phantom_Hoover> It's 0°C outside, I can't find the key to the wood shed and the radiators are off.
16:03:32 -!- Vorpal has joined.
16:46:23 <fizzie> Phantom_Hoover: Have you considered arson?
16:49:32 <kallisti> Phantom_Hoover: do you own a car
16:49:40 <kallisti> those have radiators.
16:49:45 <Phantom_Hoover> kallisti, of course I don't own a car.
16:50:07 <kallisti> oh well look at you, mister prideful carless person.
16:50:32 <itidus20> why is the wood shed of value?
16:50:40 <itidus20> oh... is it a shed which contains firewood?
16:50:52 <Phantom_Hoover> Yes.
16:51:25 <kallisti> ...lol
16:51:29 <itidus20> how long ago have you last seen the key to the woodshed?
16:51:43 <Phantom_Hoover> I can't remember.
16:51:52 <itidus20> hmm
16:52:34 <itidus20> one option is to consider breaking and entering your own woodshed .. after calculating how much it would cost to repair the break-in
16:52:44 <itidus20> and whether access to the wood is worth that
16:54:20 <kallisti> Phantom_Hoover: do you own any animals?
16:54:34 <kallisti> slaughter them and festoon your body with their carcasses.
16:54:46 <Phantom_Hoover> That's not really going to make me much warmer?
16:54:55 <kallisti> it will for a little while
16:55:00 <kallisti> blood is very warm
16:55:30 <kallisti> Phantom_Hoover: man you suck at life or death situations.
16:56:07 <Phantom_Hoover> kallisti, but why not just leave the animal alive so it generates more heat?
16:57:02 <itidus20> if it was life or death you would certainly break into the woodshed :P
16:57:13 <itidus20> failing that the textbooks would go in the fire
16:57:33 <kallisti> Phantom_Hoover: because it's not EXTREME enough.
16:57:49 <kallisti> okay well you can cut it open and soak yourself in its blood
16:58:07 <kallisti> and then cradle it gently between your arms for added warmth
16:58:56 <itidus20> and keep on your guard while working out which of your companions is a psychopath
17:03:52 <kallisti> Phantom_Hoover: also if you have an aluminum can, a knife, a lighter, and some isopropyl alcohol you can make a convenient stove.
17:08:23 <kallisti> As soda was marketed as a miracle cure, it was often considered a substance that required oversight and control like alcohol, another controlled substance that could not be served or purchased on Sundays in many conservative areas.
17:09:26 <kallisti> apparently this is one story for the origin of the ice cream sundae, because they couldn't sell ice cream sodas on sunday
17:09:29 <kallisti> how. fucking. stupid.
17:10:28 <kallisti> you know what's even more stupid.
17:10:44 <kallisti> Georgia is /just now/ considering a bill to overturn the ban of alcohol sale on Sundays.
17:11:18 <kallisti> and probably only because it's an extra source of revenue.
17:11:21 <kallisti> <3 Georgia
17:18:27 -!- Nisstyre has joined.
17:30:08 <quintopia> just now considering? it has been considered and passed... now it's up to the individual counties.
17:30:20 <quintopia> my county is already selling on sunday
17:38:52 <kallisti> I love perl scripts that are almost entirely bash.
17:39:09 <kallisti> because it lets me program with bash commands without having to use its terrible control constructs.
17:39:23 <quintopia> i love bash scripts that are almost entirely perl
17:39:55 <kallisti> eh, that direction is a bit more clumsy
17:42:27 <kallisti> but still useful, because perl's command line options can do a lot of convenient stuff for file processing
18:03:59 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
18:12:15 <Gregor> core.c:1:0: error: ISO C forbids an empty translation unit [-Werror=edantic]
18:12:16 <Gregor> Haw
18:13:46 <fizzie> How edantic.
18:16:36 <Gregor> "struct core {int core;};" <-- this is now my file
18:30:32 -!- monqy has joined.
18:33:17 <fizzie> Gregor: Is this some sort of a "put a core in your core" joke?
18:34:05 <Gregor> No, this is some sort of "force it to compile with -pedantic without actually having any content" non-joke.
18:38:29 <fizzie> That's not very funny at all.
18:42:53 <Gregor> Hence it being a non-joke.
18:46:05 -!- zzo38 has joined.
18:50:04 <pikhq_> Gregor: You could actually just make it "struct core;"
18:50:17 <itidus20> lol
18:50:35 <itidus20> Gregor: that just gave me a funny idea
18:51:18 <itidus20> struct core { core a; } core_tag;
18:53:33 <Gregor> pikhq_: Now why didn't I think of that ...
18:54:22 <itidus20> ... i think you guys know what i mean even if i typed it bad
18:54:46 <Gregor> Doesn't compile. Not even in C++ where it's vaguely meaningful. So nya :P
18:55:41 <itidus20> . o O ( typedef int int; )
18:55:52 -!- derrik has joined.
19:00:26 -!- Klisz has joined.
19:02:12 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:02:31 -!- derrik has joined.
19:05:31 -!- Nisstyre has quit (Ping timeout: 240 seconds).
19:06:46 -!- derrik has quit (Client Quit).
19:07:01 -!- derrik has joined.
19:07:37 -!- derrik has quit (Client Quit).
19:08:10 -!- derrik has joined.
19:12:11 <Gregor> Can you hardlink a UNIX domain socket ...
19:13:16 <kallisti> Gregor: I bet you can.
19:13:24 <kallisti> well..
19:13:46 <kallisti> I redact that to a tentative "maybe"
19:14:11 <Gregor> Doesn't seem to be working, but there are other issues at hand too.
19:14:29 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:17:50 -!- sebbu2 has joined.
19:17:51 -!- sebbu2 has quit (Changing host).
19:17:51 -!- sebbu2 has joined.
19:19:40 <Gregor> Argh, looks like I'll have to set up a BSD sockets translation layer :(
19:19:44 <Gregor> Was hoping I'd luck out with that one.
19:21:30 -!- sebbu has quit (Ping timeout: 248 seconds).
19:28:18 <Gregor> Oh gelfload
19:28:22 <Gregor> What are you doing?
19:28:28 <Gregor> urxvt THINKS it's running.
19:28:31 <Gregor> But where's my urxvt???
19:28:46 <coppro> Gregor: daemonized
19:29:04 <kallisti> is there a way to get find to put quotes around files?
19:29:18 <kallisti> or to otherwise make them readable by grep without spaces messing up things?
19:29:46 <monqy> don't have spaces
19:29:52 <kallisti> monqy: thanks
19:29:56 <kallisti> but no really
19:30:12 <kallisti> monqy: you must exist in one of those perfect worlds you have full control of every problem you encounter.
19:30:31 <kallisti> s/ you/ where you/
19:31:31 -!- Slereah has joined.
19:31:41 <coppro> kallisti: change ifs by removing the space
19:32:26 -!- Slereah_ has quit (Ping timeout: 268 seconds).
19:32:29 <kallisti> ...SO TERRIBLE SURELY THERE'S A BETTER WAY.
19:32:45 <coppro> kallisti: alternatively, stop using `find` and use find -exec grep
19:32:50 <kallisti> oh...
19:32:51 <kallisti> yes.
19:33:00 <kallisti> I forget about find's seven billion options sometimes.
19:33:12 <coppro> you're off by several orders of magnitude
19:33:19 <coppro> it has seventy trillion at least
19:33:47 <itidus20> thats what happens when you insist on using your memory instead of context menus
19:34:33 <kallisti> aaaaah bash quote hell
19:34:44 <monqy> good hell
19:34:44 <kallisti> itidus20: don't forget bash quote hell
19:34:50 <kallisti> monqy: wrong kind of bash quote
19:35:01 <monqy> try another
19:35:12 <itidus20> i guess even windows programs have options ...........
19:35:21 <itidus20> ^command line options
19:38:04 -!- derrik has joined.
19:38:07 -!- sebbu2 has changed nick to sebbu.
19:38:21 <kallisti> coppro: this was a good idea until quoting became involved
19:38:31 <kallisti> any recommendations? I can't get bash to be happy
19:38:41 <kallisti> find: missing argument to `-exec'
19:40:32 <kallisti> nevermind I got it.
19:43:21 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
19:54:27 <coppro> kallisti: find is a weird one
19:56:47 -!- Nisstyre has joined.
19:57:06 -!- derrik has joined.
19:58:26 -!- derrik has quit (Client Quit).
20:02:12 <fizzie> "find spaces -print0 | xargs -0 grep foobar" is one alternative.
20:02:34 <fizzie> (Where 'spaces' is a location with spaceful files.)
20:02:59 <fizzie> I suppose having find execute grep directly is feasible too.
20:03:29 -!- derrik has joined.
20:19:44 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
20:19:56 -!- derrik has joined.
20:23:48 -!- ais523 has joined.
20:25:21 -!- derrik has quit (Quit: quitter).
20:53:30 <zzo38> The Swiss Ephemeris header file has a comment for two functions /* the following are secret, for Victor Reijs' */
20:58:57 -!- oerjan has joined.
21:06:48 <zzo38> Secret?
21:29:40 <kallisti> anyone know how to send a null character via a gnome-terminal?
21:30:31 <oerjan> you can only send gnull characters
21:30:54 <kallisti> no this is important damnit
21:31:24 <kallisti> !help exec
21:31:25 <EgoBot> ​Sorry, I have no help for exec!
21:32:40 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:33:24 <kallisti> hello
21:33:31 <kallisti> hello
21:33:34 <kallisti> okay good
21:33:43 <kallisti> except that I think irssi eats my null character
21:36:09 <oerjan> it is quite possibly censored by the channel
21:36:24 <oerjan> ^bf .
21:36:34 <oerjan> ^bf +.
21:36:34 <fungot> <CTCP>
21:36:48 <oerjan> i guess fungot censors by itself
21:36:48 <fungot> oerjan: the world of space, or maybe even most cases things are independent. the results of the previous roll has no bearing on the current roll! it's brilliant! oh, i wasn't talking about you here, i have and now god's in on it too, utahraptor
21:37:04 <oerjan> > text [chr 0]
21:37:17 <oerjan> > text [chr 0, 'a']
21:37:18 <lambdabot> a
21:37:57 <kallisti> oerjan: it doesn't seem to appear on this server or on any other.
21:38:01 <kallisti> er network sorry.
21:38:11 <Sgeo> > text [chr 1]
21:38:18 <Sgeo> > text [chr 1, 'a']
21:38:19 <lambdabot> a
21:39:24 <kallisti> //div[1]
21:39:35 <kallisti> so I /think/ this should select the 2nd div on a page.
21:39:40 <kallisti> but xpath still kind of baffles me.
21:40:53 <oerjan> !c putchar(0);
21:41:19 <oerjan> !c putchar(0); putchar('a');
21:41:49 <oerjan> !c printf("Is this even the right command?\n");
21:41:52 <EgoBot> Is this even the right command?
21:42:03 <oerjan> !c putchar('b'); putchar(0); putchar('a');
21:42:06 <EgoBot> b
21:44:21 <zzo38> I think the IRC server cancels the null characters
21:44:21 <fizzie> NUL, CR and LF are the octets that are not legal in a parameter, according to RFC2812.
21:44:44 <fizzie> 2) The NUL (%x00) character is not special in message framing, and
21:44:45 <fizzie> basically could end up inside a parameter, but it would cause
21:44:45 <fizzie> extra complexities in normal C string handling. Therefore, NUL
21:44:45 <fizzie> is not allowed within messages.
21:44:53 <kallisti> oerjan: it not only cancels it but omits everything afterwards
21:44:58 <kallisti> ALMOST LIKE A C-STYLE STRING WOW
21:45:12 <zzo38> kallisti: Yes, it does that.
21:45:29 <zzo38> I tried sending message to myself with null character that is what it does. I think it must be because of C.
21:45:52 <kallisti> let's pause and take a moment to reflect on C's really dumb string representation.
21:46:49 <fizzie> Yes, they should use befunge-style 0gnirts, where the string is backwards in memory, the pointer points to the last character, and there's a 0x00 in front to terminate it.
21:46:51 <zzo38> I don't think it is dumb.
21:49:27 <Sgeo> !c putchar(1);
21:49:30 <EgoBot> ​.
21:49:31 <Sgeo> Hmm
21:49:36 -!- Phantom_Hoover has joined.
21:49:48 <fizzie> The NUL-terminated strings have been called "The Most Expensive One-byte Mistake" in widely pasted-in-IRC-and-everywhere http://queue.acm.org/detail.cfm?id=2010365 (disclaimer: this does not constitute endorsement of the aforementioned article)
21:50:10 <kallisti> fizzie: nice IRC lawyer move
21:50:20 <Sgeo> What expensive mistakes are there? NUL-terminate strings, null, what else?
21:50:30 <fizzie> The . for putchar(1) is client-side, though; I keep postponing implementing that in fungot.
21:50:31 <fungot> fizzie: don't people say that there's only one person you can have a low moral fibre. you can only have poor ethical training, t-rex. somebody's eaten my food, damn, guy, you shoulda realized when the utahraptor was so wrong! teamwork."
21:51:15 <myndzi> yes @ irc eats nuls
21:53:06 <fizzie> IRC eats NULs and shits... what? (There's a saying in Finnish -- it might be copied from Swedish, a lot of things here are -- about "eats iron, shits chain". I'm not sure what it exactly means, except a "tough guy" or some-such.)
21:53:21 <fizzie> It sounds a lot better in Finnish somehow.
21:53:21 <myndzi> shits errors
21:53:22 <myndzi> :P
21:53:30 <myndzi> where do you think read errors come from?
21:53:40 <myndzi> every time you nul-terminate a string, a baby loses its irc connection
21:54:14 <myndzi> also that's a great expression
21:54:35 <myndzi> you know how it's all sexy when a girl ties a knot in a cherry stem with her tongue? maybe they have a thing for guys who can tie knots in iron in their bowels
21:55:01 <quintopia> that sounds like a metaphor for blue balls
21:55:06 <oerjan> O KAY
21:55:09 <kallisti> lol
21:55:23 <kallisti> #esoteric -- international hub of bad humor
21:56:01 <kallisti> > text "\b"
21:56:07 <kallisti> hmm
21:56:13 <kallisti> > "\b"
21:56:15 <lambdabot> "\b"
21:56:19 <kallisti> bah
21:56:28 <fizzie> Courtesy of Google, lyrics for an awful-sounding Finnish-band song: "Here we had built our cottages and saunas / From the swamp we have shovelled our fields / Nobody can take it away from us / Not for free, and that's for sure / We eat iron, we shit the chain / We never let them live"
21:56:34 -!- oerjan has set topic: is a second-generation, outside–in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters. | International hub of bad humor | Everyone in #esoteric is ẌTREME | http://codu.org/logs/_esoteric/.
21:57:05 <kallisti> !c putChar('\b');
21:57:08 <EgoBot> Does not compile.
21:57:10 <fizzie> "Korpiklaani (Finnish: Wilderness Clan) is a folk metal band from Finland who were formerly known as Shaman." I guess they're... famous enough to have a Wikipedia article. (That's a particularly low bar.)
21:57:12 <kallisti> lol
21:57:17 <kallisti> I am leet C hacker
21:57:26 <kallisti> !c putchar('\b');
21:57:29 <EgoBot> ​.
21:57:37 <kallisti> oh right
21:58:01 <oerjan> !c Does not compile.
21:58:03 <EgoBot> Does not compile.
21:59:28 <kallisti> oerjan: nice quine
22:00:00 <kallisti> > blah blqh bj
22:00:01 <lambdabot> Not in scope: `blah'Not in scope: `blqh'Not in scope: `bj'
22:00:23 <kallisti> > blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
22:00:24 <lambdabot> Not in scope: `blah'Not in scope: `blah'Not in scope: `blah'Not in scope: `...
22:00:41 <kallisti> > Not in scope: `hi'
22:00:42 <lambdabot> <no location info>: parse error on input `in'
22:00:53 <oerjan> > <no location info>: parse error on input `in'
22:00:54 <lambdabot> <no location info>: parse error on input `<'
22:00:56 <kallisti> > <no location info>: parse error on input
22:00:57 <lambdabot> <no location info>: parse error on input `<'
22:00:59 <kallisti> > <no location info>: parse error on input `<'
22:01:00 <lambdabot> <no location info>: parse error on input `<'
22:01:05 <oerjan> yay
22:01:43 <oerjan> !perl aaogh ohgrøaf
22:01:44 <EgoBot> Unrecognized character \xC3 in column 11 at /tmp/input.7980 line 1.
22:01:53 <oerjan> !perl Unrecognized character \xC3 in column 11 at /tmp/input.7980 line 1.
22:01:54 <EgoBot> Number found where operator expected at /tmp/input.8034 line 1, near "column 11"
22:02:04 <kallisti> http://www.perlmonks.org/bare/?node_id=119526
22:02:12 <oerjan> argh dcc
22:02:16 <kallisti> !perl Illegal division by zero at blah line 1.
22:02:17 <EgoBot> Number found where operator expected at /tmp/input.8108 line 1, near "line 1."
22:02:28 <kallisti> er
22:02:46 <kallisti> can't do a newline though
22:03:11 <oerjan> kallisti: you know i expect the filename containing /'s is essential :P
22:03:21 <kallisti> yes.
22:03:30 <oerjan> !perl Illegal division by zero at /tmp/input.8108 line 1.
22:03:32 <EgoBot> Bareword found where operator expected at /tmp/input.8241 line 1, near "8108 line"
22:03:44 <oerjan> eek
22:03:58 <kallisti> !perl seek DATA, 0, 0; print while <DATA>;
22:04:06 <kallisti> >_>
22:04:15 <kallisti> oh
22:04:17 <kallisti> nevermind
22:04:19 <oerjan> hm i guess !perl might add -w, or something.
22:04:20 <kallisti> need a newline for that too
22:04:28 <kallisti> !perl seek DATA, 0, 0; print while <DATA>;__DATA__
22:04:30 <EgoBot> seek DATA, 0, 0; print while <DATA>;__DATA__
22:05:09 <kallisti> !perl open 0; print <0> #classic
22:05:11 <EgoBot> open 0; print <0> #classic
22:06:35 <oerjan> those are not kimian quines though
22:06:44 <kallisti> a python error-quine would be the worst.
22:06:47 <oerjan> (kimian quines being those that use error messages)
22:07:18 <oerjan> ^ul Um
22:07:18 <fungot> ...bad insn!
22:07:27 <oerjan> ^ul ...bad insn!
22:07:27 <fungot> ...bad insn!
22:07:27 <kallisti> ^ul ...bad insn!
22:07:27 <fungot> ...bad insn!
22:07:29 <kallisti> ewoirowjer
22:07:34 <oerjan> wat
22:07:34 <kallisti> oerjan: bad insn!
22:07:50 -!- derdon has joined.
22:07:55 <oerjan> ^bf ]
22:07:55 <fungot> Mismatched [].
22:08:01 <kallisti> lol
22:08:02 <oerjan> :(
22:08:10 <kallisti> KIMIAN QUINE NOT POSSIBLE IN BRAINFUCK
22:08:18 <kallisti> well
22:08:20 <kallisti> in that implementation
22:08:26 <oerjan> !bf ]
22:08:34 <kallisti> ^bf [
22:08:35 <fungot> Mismatched [].
22:08:48 <oerjan> !bf +++++++++++++++++++++++++++++++++++++++++++++++++.]
22:08:54 <kallisti> ^bf [].
22:08:57 <oerjan> !bf +++++++++++++++++++++++++++++++++++++++++++++++++.
22:08:58 <EgoBot> 1
22:09:04 <kallisti> !bf
22:09:08 <kallisti> oerjan: there
22:09:11 <kallisti> null quine.
22:09:12 <kallisti> we win.
22:09:17 <oerjan> not an error.
22:09:22 <kallisti> FINE WHATEVER
22:09:26 <zzo38> Null quines usually don't count.
22:09:39 <kallisti> `frisk iwehhsdfuhw
22:09:45 <kallisti> er
22:09:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: frisk: not found
22:09:48 <kallisti> `frink wekroijwer
22:09:52 <kallisti> `frink lol error plz
22:09:58 <kallisti> `ls bin
22:10:02 <HackEgo> ​? \ @ \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ welcome \ wl \ word \ wtf
22:10:06 <kallisti> HackEgo: lag lag la g all,l lagla
22:10:16 <HackEgo> wekroijwer (undefined symbol)
22:10:17 <oerjan> `ls fnord
22:10:18 <HackEgo> Warning: undefined symbol "error". \ Warning: undefined symbol "lol". \ Warning: undefined symbol "plz". \ error (undefined symbol) lol (undefined symbol) plz (undefined symbol)
22:10:21 <HackEgo> ls: cannot access fnord: No such file or directory
22:10:31 <kallisti> `frink foo (undefined symbol)
22:10:37 <oerjan> `ls ls: cannot access ls: No such file or directory
22:10:41 <HackEgo> ls: cannot access ls: cannot access ls: No such file or directory: No such file or directory
22:10:47 <oerjan> oops
22:10:49 <HackEgo> Warning: undefined symbol "foo". \ Warning: undefined symbol "symbol". \ Warning: undefined symbol "undefined". \ foo (undefined symbol) symbol (undefined symbol) undefined (undefined symbol)
22:10:55 <oerjan> `run ls ls: cannot access ls: No such file or directory
22:10:58 <HackEgo> ls: cannot access ls:: No such file or directory \ ls: cannot access cannot: No such file or directory \ ls: cannot access access: No such file or directory \ ls: cannot access ls:: No such file or directory \ ls: cannot access No: No such file or directory \ ls: cannot access such: No such file or directory \ ls: cannot access file: No such file or directory \ ls: cannot access or: No such file or directory \ ls:
22:11:02 <oerjan> bah
22:11:46 <zzo38> So far, what it seem is that "swe_julday" is the only Swiss Ephemeris function that I import into Haskell without IO type
22:12:28 -!- jix has quit (Ping timeout: 258 seconds).
22:12:40 <zzo38> (It converts year/month/day into Julian day numbers)
22:13:05 <oerjan> darn, and here i thought it told when swedish christmas day was
22:13:07 <fizzie> ^ul (:aSS(:^):^):aSS(:^):^ ...out of time!
22:13:08 <fungot> (:aSS(:^):^):aSS(:^):^ ...out of time!
22:13:33 <oerjan> ^ul !
22:13:33 <fungot> ...out of stack!
22:13:40 <oerjan> hmph
22:14:16 <oerjan> i guess that proves ...bad insn! is the only purely error ^ul quine
22:14:38 <fizzie> ^ul (:aS(:^)S(:^):^):^ ...out of time!
22:14:39 <fungot> (:aS(:^)S(:^):^):^ ...out of time!
22:14:45 <fizzie> I suppose that's slightly less duplicationary.
22:14:47 <fizzie> Anyhoo.
22:15:19 <fizzie> "Mismatched []." is the only error message the ^bf preprocessor can produce; the interpreter itself can print " ...out of time!" too, but not for the " ...out of time!" program.
22:15:35 <zzo38> oerjan: Is Swedish Christmas Day on a different day from Canada and United States?
22:15:51 <oerjan> zzo38: i suppose not when you put it that way
22:16:00 -!- thutubot has joined.
22:16:11 <ais523> +ul ...
22:16:14 <oerjan> someone has been inspired
22:16:28 <ais523> <thutubot> PRIVMSG #esoteric :
22:16:30 <ais523> hmm
22:16:38 <ais523> +ul abc
22:16:48 <ais523> +ul (test)S
22:16:59 <oerjan> i sense a possible lack of error checking
22:17:09 <ais523> it does have error checking, unless I'm running an old version
22:17:10 -!- thutubot has quit (Remote host closed the connection).
22:17:30 -!- thutubot has joined.
22:17:34 <ais523> +ul (test)S
22:17:34 <thutubot> test
22:17:39 <ais523> +ul (test)SS
22:17:39 <thutubot> test ...S out of stack!
22:17:44 <ais523> +ul ...
22:17:50 <ais523> +ul ...S
22:17:56 <ais523> +ul S
22:17:57 <thutubot> ...S out of stack!
22:17:58 <ais523> +ul a
22:17:59 <thutubot> ...a out of stack!
22:18:01 <ais523> +ul abc
22:18:02 <thutubot> ...a out of stack!
22:18:08 <ais523> hmm, it seems to be ignoring .
22:18:12 <oerjan> but not for illegal commands, i guess
22:18:18 <ais523> +ul (.:^).:^
22:18:26 <ais523> PRIVMSG #esoteric :
22:18:33 <ais523> +ul .(test)S
22:18:41 <oerjan> well, thutu is substitution based so it basically _has_ to fail for some strings, no?
22:18:46 <ais523> again, it sent the null string
22:18:50 <ais523> oerjan: nope, there's escaping used
22:18:54 <ais523> on the input
22:18:54 <oerjan> oh
22:19:01 <fizzie> ^ul (:aS(:^)S(****)(~:*~:^):^):^ ...too much stack!
22:19:01 <fungot> (:aS(:^)S(****)(~:*~:^):^):^ ...too much stack!
22:19:03 <oerjan> fiendish
22:19:11 <ais523> +ul (:aS(:^)S(****)(~:*~:^):^):^ ...too much stack!
22:19:34 <thutubot> (:aS(:^)S(****)(~:*~:^):^):^ ...too much memory used!
22:19:48 <ais523> +ul (:aS(:^)S(****)(~:*~:^):^):^ ...too much memory used!
22:20:11 <thutubot> (:aS(:^)S(****)(~:*~:^):^):^ ...too much memory used!
22:20:22 <ais523> +ul (:aS(:^)S(:^):^):^ ...out of time!
22:20:25 <thutubot> (:aS(:^)S(:^):^):^ ...out of time!
22:20:37 <ais523> heh, it ran out of time much faster than it ran out of memory
22:21:24 <fizzie> ^ul (:aS(:^)S(:^(foobar)!):^):^ ...too much prog!
22:21:24 <fungot> (:aS(:^)S(:^(foobar)!):^):^ ...too much prog!
22:22:04 <ais523> +ul (:aS(:^)S(:^(foobar)!):^):^ ...too much prog!
22:22:27 <ais523> fizzie: does that even need the ! after (foobar)?
22:22:37 <thutubot> (:aS(:^)S(:^(foobar)!):^):^ ...too much memory used!
22:22:47 <ais523> ^ul (:aS(:^)S(:^(foobar)):^):^ ...too much prog!
22:22:48 <fungot> (:aS(:^)S(:^(foobar)):^):^ ...too much prog!
22:22:51 <ais523> nope
22:23:52 <fizzie> ais523: No, it's never executed; I just thought it'd be somehow cleaner.
22:24:00 <ais523> heh
22:24:07 <ais523> ^ul (:aS(:^)S(:^foobar):^):^ ...too much prog!
22:24:08 <fungot> (:aS(:^)S(:^foobar):^):^ ...too much prog!
22:24:12 <ais523> I /thought/ it was never executed
22:24:27 <ais523> I suppose it could be in a hypothetical lazy Underload
22:24:36 <ais523> but, hmm, "lazy Underload" makes my head hurt slightly
22:24:58 -!- pikhq_ has quit (Read error: Operation timed out).
22:24:59 <fizzie> Someone else can figure out how to get a quine with the error message
22:25:00 <fizzie> ^ul (
22:25:01 <fungot> ...unterminated (!
22:25:16 <fizzie> ...in it; the unterminated ( makes it... slightly tricky.
22:26:07 -!- pikhq has joined.
22:28:09 <fizzie> ^ul (:aS(:^)S(.)(~:S~:^):^):^.............................................................................................................................................................................................................................................................................................................. ...too much output!
22:28:10 <fungot> (:aS(:^)S(.)(~:S~:^):^):^........................................................................................................................................................................................................................................................................................................... ...too much output!
22:28:14 <fizzie> That one's slightly silly.
22:28:28 -!- jix has joined.
22:28:35 <fizzie> I think that was all the error messages it has.
22:29:36 <fizzie> Also I really don't know why (.)(~:S~:^):^ as opposed to ((.)S:^):^.
22:30:08 <oerjan> ^ul ...unterminated (!
22:30:08 <fungot> ...bad insn!
22:30:37 <oerjan> ^ul )
22:30:37 <fungot> ...bad insn!
22:31:19 <kallisti> !perl $_ = "" print /[\A]/
22:31:21 <EgoBot> syntax error at /tmp/input.11945 line 1, near """ print"
22:31:31 <kallisti> !perl $_ = "hi"; print /[\A]h/
22:31:35 <fizzie> ^ul (:aS(:^)S):^( ...unterminated (! -- now you just need to add code to print a single '(' at the right spot, then you're done. Easy-peasy.
22:31:35 <fungot> (:aS(:^)S):^ ...unterminated (!
22:31:36 <kallisti> !perl $_ = "hi"; print /\Ah/
22:31:37 <EgoBot> 1
22:32:05 <oerjan> fizzie: funny guy
22:32:40 <ais523> +ul (
22:32:41 <thutubot> ...out of time!
22:32:46 <ais523> hmm, interesting
22:32:52 -!- MDude has quit (Ping timeout: 248 seconds).
22:33:38 <oerjan> ^bf <
22:33:45 <oerjan> hmph
22:34:28 <oerjan> !unlambda Unknown command
22:34:29 <EgoBot> ​./interps/unlambda/unlambda.bin: file /tmp/input.12291: parse error
22:34:33 <oerjan> bah
22:34:39 <Gregor> Wow, somebody bought a copy of my elementary cellular automaton rule 110 tie :P
22:34:49 <kallisti> ..
22:34:52 <oerjan> U RICH
22:35:02 -!- Ngevd has joined.
22:35:18 <oerjan> !yodawg Unknown command
22:35:19 <EgoBot> Unknown function: U
22:35:24 <Ngevd> Hello!
22:35:26 <oerjan> !yodawg Unknown function: U
22:35:28 <EgoBot> Unknown function: U
22:36:04 <oerjan> Olé!
22:38:34 -!- Jafet has quit (Quit: Leaving.).
22:43:23 <Gregor> I don't even know how you'd FIND my ECE rule 110 tie :P
22:43:45 <Gregor> Maybe somebody as nerdy as me was going "I wonder if somebody's already put cellular automaton on a tie ... THEY HAVE!"
22:45:04 -!- Taneb has joined.
22:45:25 <Taneb> Phantom_Hoover, you didn't pass through Hexham
22:45:34 <Taneb> Unless you changed at Carlisle
22:45:40 <Taneb> Yeah, I log read now
22:47:40 <Taneb> You probably took the East Coast line which doesn't go via Hexham
22:47:57 <Taneb> If you want Hexham you either need the Tyne Valley line or...
22:48:03 <Phantom_Hoover> Aww.
22:48:19 <Taneb> Glasgow South Western Line
22:48:26 <Phantom_Hoover> What's your comment on Hexham's sewer system?
22:48:32 -!- Ngevd has quit (Ping timeout: 244 seconds).
22:48:38 <Gregor> It's sewerrific?
22:48:44 <Taneb> The women keep slacking and making my street flood
22:48:48 -!- Taneb has changed nick to Ngevd.
22:50:25 <oerjan> once a month, the sewers flood, right
22:51:47 <Gregor> Dinosaur Comics asks: How would YOU pronounce queu?
22:51:59 <oerjan> que?
22:52:01 <Ngevd> Roughly, yeah
22:52:01 <Ngevd> @ping
22:52:02 <lambdabot> pong
22:52:02 <thutubot> pong
22:52:08 <Ngevd> kwayooh
22:52:17 <oerjan> oh right.
22:52:30 <fizzie> ^bf ,[.>,] <[<]<++++++[>+++++++++<-]>[->.[-]<[->+<]>] +[] ...out of time! ,[.>,] <[<]<++++++[>+++++++++<-]>[->.[-]<[->+<]>] +[] ...out of time!
22:52:35 <fungot> ,[.>,] <[<]<++++++[>+++++++++<-]>[->.[-]<[->+<]>] +[] ...out of time! ,[.>,] <[<]<++++++[>+++++++++<-]>[->.[-]<[->+<]>] +[] ...out of time!
22:52:36 <fizzie> That is *such* a cheat.
22:52:42 <fizzie> And obviously senseless.
22:53:43 -!- Taneb has joined.
22:55:40 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:56:36 <Taneb> Did anyone see http://i1239.photobucket.com/albums/ff508/Taneb/ohno.png
22:56:48 -!- Ngevd has quit (Ping timeout: 252 seconds).
22:57:15 <monqy> is it because of the spam bots
22:57:34 <monqy> nice %i %j %t too
22:57:47 <zzo38> What is Tru-View and why does it have those %i %j %t codes there
22:58:01 <Gregor> Dinosaur comics contends: q(ue)*u? is pronounced the same as 'queue'
22:58:01 <Taneb> It's...
22:58:04 <Taneb> I have no idea
22:58:14 <Taneb> But that picture was taken in school
22:58:20 <Taneb> Hence the choice of browser
22:59:07 <zzo38> Call that telephone number and insist on using the teacher's telephone to do so
22:59:14 <oerjan> presumably it's some net nanny
22:59:59 <monqy> good thing nothing happens on the wiki anyway
23:00:05 <oerjan> and presumably those codes are part of a format string, and were supposed to have been replaced with actual reasons.
23:00:15 <monqy> even the spambots have been boring
23:00:18 <zzo38> oerjan: That is what I thought, so it seem wrong like that
23:00:30 <zzo38> Call them and tell them to fix it
23:01:42 <zzo38> Can any other protocols be accessed? I know when I was at school I could still telnet out. However, some people were accessing webpages that were blocked (but at least they were not keyword-based blocking). They had multiple proxies it seemed. In some cases you could use the IP address instead of the domain name to access it anyways (I once helped someone with this)
23:02:04 <Taneb> I have no idea, zzo38
23:02:05 <fizzie> Gregor: I don't know, doesn't the comic itself only say that the finite set of q(u(e(ue?)?)?)? is pronounced the same?
23:02:12 <Taneb> I wasn't bored enough to try
23:02:43 <ais523> hmm, I almost completed Dungeons of Dredmor today
23:02:46 <ais523> I died on Dredmor himself
23:03:03 <Taneb> Good for you!
23:03:08 <Taneb> I'm not too good at it
23:03:13 <oerjan> > drop 2 . inits $ 'q' : cycle "ue"
23:03:15 <lambdabot> ["qu","que","queu","queue","queueu","queueue","queueueu","queueueue","queue...
23:03:15 <thutubot> ["qu","que","queu","queue","queueu","queueue","queueueu","queueueue","queue...
23:03:21 <Taneb> I generally don't make it past the second floor
23:04:26 <Taneb> I AM CALLING THE NUMBER
23:05:31 <Taneb> Oh no they've gone to bed
23:07:20 <Sgeo> Is there a function to only take every nth element from a list?
23:08:05 <Sgeo> Hoogle doesn't sound helpful here, considering all the other functions with similar signatures
23:08:12 <Sgeo> @hoogle Int -> [a] -> [a]
23:08:13 <lambdabot> Prelude drop :: Int -> [a] -> [a]
23:08:13 <thutubot> Prelude drop :: Int -> [a] -> [a]
23:08:13 <lambdabot> Data.List drop :: Int -> [a] -> [a]
23:08:13 <lambdabot> Prelude take :: Int -> [a] -> [a]
23:08:13 <thutubot> Data.List drop :: Int -> [a] -> [a]
23:08:13 <thutubot> Prelude take :: Int -> [a] -> [a]
23:08:29 -!- Phantom_Hoover has joined.
23:08:35 <Sgeo> Or, it could suggest that I check Data.List for it
23:08:36 <Sgeo> Derp
23:08:49 <oerjan> :t map head . iterate (drop ?n)
23:08:51 <lambdabot> forall a. (?n::Int) => [a] -> [a]
23:08:51 <thutubot> forall a. (?n::Int) => [a] -> [a]
23:08:59 <kallisti> anyone have a website I can point my script to that always redirects?
23:09:24 <kallisti> !perl print LWP::Simple; print get("wikipedia.com")
23:09:25 <EgoBot> Undefined subroutine &main::get called at /tmp/input.16020 line 1.
23:09:40 <kallisti> !perl print LWP::Simple 'get'; print get("wikipedia.com")
23:09:41 <EgoBot> Undefined subroutine &main::get called at /tmp/input.16205 line 1.
23:09:45 <kallisti> ugh
23:09:46 <Sgeo> oerjan, I still don't entirely get the whole implicit parameters thing
23:09:51 <kallisti> !perl print LWP::Simple 'get'; print LWP::Simple::get("wikipedia.com")
23:09:52 <EgoBot> Undefined subroutine &LWP::Simple::get called at /tmp/input.16339 line 1.
23:10:00 <kallisti> !perl print LWP::Simple; print LWP::Simple::get("wikipedia.com")
23:10:01 <EgoBot> Undefined subroutine &LWP::Simple::get called at /tmp/input.16462 line 1.
23:10:01 <kallisti> ...
23:10:03 -!- espero has joined.
23:10:18 <kallisti> what the hell
23:10:53 <oerjan> `welcome espero
23:10:56 <HackEgo> espero: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:11:48 <Sgeo> En la mondon
23:12:17 <Sgeo> En la mondon venis nova sento, tra la mondo iras forta voko.
23:14:16 <espero> Thank you oerjan. sorry for delayed reply: newbie, on Android
23:16:06 <Taneb> espero, you like esoteric programming?
23:18:29 <espero> I was on the channel 10 or so hours ago as Ulysses_ (apols to the real one), trying to drum up support for coding Black-Scholes in esolangs. don't know how to view history after left yet
23:21:37 -!- Jafet has joined.
23:21:47 <Taneb> Hmm
23:23:31 -!- ais523 has quit (Remote host closed the connection).
23:23:32 -!- thutubot has quit (Remote host closed the connection).
23:25:18 <Taneb> espero, if you want an easy programming language to teach your kids (not esoteric), check out scratch.mit.edu
23:27:09 <Jafet> Eros!
23:27:29 <Taneb> I'm more of a Xenia fan
23:27:34 <oerjan> espero: the channel logs link is in the topic, http://codu.org/logs/_esoteric/
23:28:30 <espero> Thanks Taneb. We've played a bit w scratch. here, though, I just thought would be cool to code up finance's version of "hello world" in an esolang
23:28:59 <espero> Thanks oerjan. looking now
23:30:25 <quintopia> what is the param for grep to print context
23:31:27 <Jafet> --context
23:32:08 <kallisti> also -C
23:32:15 <fizzie> Just plain numbers work too, as long as the same amount of before/after context is okay.
23:32:27 <kallisti> quintopia: did you know that man pages have a /find/ command?
23:32:53 <fizzie> kallisti: A pedant would say something about man page viewers here.
23:33:01 <kallisti> fuck pedants
23:33:04 <quintopia> kallisti: i do now
23:33:16 <kallisti> I find the "search backward" command kind of annoying
23:33:19 <quintopia> it's a special instance of less i think?
23:33:29 <Jafet> Man, pages!
23:33:33 <quintopia> never pay attention to these details...
23:33:33 <kallisti> quintopia: something like that.
23:33:40 <kallisti> it's similar in any case.
23:33:54 <kallisti> yes it's less.
23:34:00 <kallisti> the help says "SUMMARY OF LESS COMMANDS"
23:34:08 -!- espero has quit (Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org).
23:34:41 <Jafet> man -P tac
23:35:09 -!- Ngevd has joined.
23:36:14 <kallisti> Jafet: heh
23:36:23 <kallisti> Jafet: is there a way to combine tac with less?
23:36:37 <shachaf> less tact
23:36:54 <Gregor> kallisti: Surely you jest ... ever heard of ... y'know ... pipes?
23:37:04 <Jafet> How tactless.
23:37:05 <kallisti> Gregor: as an option to man?
23:37:08 <kallisti> Gregor: if you say so.
23:37:26 -!- Taneb has quit (Ping timeout: 252 seconds).
23:37:37 <Sgeo> tac?
23:37:38 <Sgeo> Oh
23:37:48 <shachaf> man man | tac | less
23:37:49 <kallisti> Gregor: though man man | tac | less works fine apparently
23:37:50 <kallisti> yes
23:37:55 <Gregor> Yup
23:37:56 -!- Klisz has quit (Quit: You are now graced with my absence.).
23:38:02 <kallisti> Gregor: how does it magically know now to less itself?
23:38:04 <Gregor> I don't know why you'd want to read a man page in reverse ...
23:38:11 <Gregor> kallisti: istty
23:38:16 <Gregor> *isatty
23:38:32 <kallisti> ah okay.
23:38:44 <Gregor> Try man isatty | tac | shuf | grep -v int | less
23:38:45 <Gregor> :P
23:38:56 <kallisti> I was wondering how programs seemed to magically know I wanted an interface or just raw stream output.
23:39:01 <Gregor> DESCRIPTION
23:39:01 <Gregor> bugs,
23:39:51 -!- Ngevd has quit (Ping timeout: 240 seconds).
23:40:11 <kallisti> grep -v int?
23:41:18 <Gregor> OHHHH UNIX noobs
23:41:21 <Gregor> :P
23:41:23 <fizzie> "man -H elinks foo" is an interesting approach too. (Or any other browser.)
23:41:44 <fizzie> Oh, it doesn't even work.
23:43:12 <kallisti> Gregor: is there like a "everything you need to know about Unix to be cool on IRC" book that everyone has read except me?
23:43:16 <fizzie> Right, it wants it as "man -Helinks foo". Anyhow.
23:44:41 <fizzie> Does Gregor's ... | tac | shuf | ... pipeline win the coveted-by-contrarians "useless use of tac" award?
23:46:25 <Gregor> fizzie: It'd better.
23:46:28 * kallisti thinks bash should replace | with >>=
23:46:38 <fizzie> tac|tac # the strict cat
23:46:42 <Gregor> kallisti: Yes, you haven't read it *snicker8
23:46:47 <Gregor> s/8/*/
23:47:19 <Gregor> I can't run linux-gnu-libc6 rxvt on Mac OS X and I don't know why :(
23:47:55 <kallisti> Gregor: or do I just have to boot with some barebones linux distro for 6 months to obtain leet unix cred?
23:48:24 <Gregor> kallisti: Technically speaking if you wanted leet /UNIX/ cred, Linux is not the way to go.
23:48:37 <kallisti> leet unix-like cred.
23:48:40 <fizzie> Watching shit scroll by for hours makes me a Linux expert overnight. -- funroll-loops, via fallible puny human memory.
23:48:42 <kallisti> is that even a thing?
23:48:49 <Gregor> I mean, I don't know shit about pax.
23:48:50 <kallisti> leet unix-like cred doesn't sound very cool.
23:48:51 <Gregor> Because fuck pax.
23:49:30 <Gregor> You gain UNIX skills by osmosis.
23:49:40 <Gregor> People mock you on IRC, but every time they mock you, you learn something.
23:49:45 <Gregor> Eventually, you start mocking others.
23:49:51 <kallisti> so "wasting lots of time doing nothing" then?
23:49:56 <Gregor> And the cycle of mocking^Wcaring continues.
23:50:20 <kallisti> but I don't mock people for not knowing things
23:50:26 <kallisti> I just... teach them.
23:50:52 <Gregor> That's what I do when I'm on the clock.
23:50:57 <Gregor> Off the clock, it's more fun to mock.
23:50:59 <kallisti> because... seriously what kind of person can mock someone for not knowing something?
23:51:00 <Gregor> Also rhyme.
23:51:07 <Gregor> <--
23:51:39 <kallisti> s/can/has the right to/
23:52:03 <Gregor> Lesse what /whois has to say about that ...
23:52:17 <Gregor> OK, I don't know where you are :P
23:52:30 <kallisti> hm?
23:52:35 <Gregor> But I assume it's somewhere that subscribes to the UN Universal Declaration of Human Rights.
23:52:40 <Gregor> And as a result, the answer is "everyone"
23:52:45 <kallisti> I'm in antarctica.
23:52:49 <Phantom_Hoover> I thought the US didn't?
23:53:25 <Gregor> Phantom_Hoover: For the purposes of the above declaration, the US Constitution's bill of rights is quite sufficient.
23:53:36 <kallisti> s/has the right to/is within reason to/
23:54:02 <Gregor> kallisti: As I described above, mocking is caring.
23:54:15 <kallisti> no it's not.
23:54:28 <kallisti> it's just someone feeling smug because they know some trivial detail.
23:54:36 <kallisti> the learning effect is secondary.
23:55:11 <Gregor> And? Relevance? Learning is achieved, both parties come away with something they didn't have before; one knowledge, the other a smug but wonderful feeling of superiority.
23:55:41 <Gregor> Phantom_Hoover: I'm so bad at trolling because I fail to choose the right moment to lose interest. Doesn't help when there's no other participants either.
23:56:16 -!- oerjan has quit (Remote host closed the connection).
23:56:25 -!- oerjan has joined.
23:57:05 <kallisti> Gregor: I think developing a false sense of superiority is a bad character trait.
23:57:26 <Gregor> False?
23:57:34 <kallisti> and also one of the virtues of a programmer, according to Larry Wall. (Hubris)
23:57:38 <Gregor> Seriously, why doesn't Unicode have a TROLLFACE character.
23:58:23 <kallisti> Gregor: because then you're not really trolling.
23:58:26 <kallisti> also: it's >:)
23:58:37 <kallisti> or >:P if you're extra snarky
23:59:40 <kallisti> :> can work in some situations. And is equivalent to: http://chanarchive.org/content/61_tv/12738425/1288212726683.jpg
2011-12-10
00:00:32 <Gregor> Ǔ̈
00:00:39 <Gregor> Feh, they don't combine right in this font.
00:12:53 -!- oerjan has quit (Remote host closed the connection).
00:13:56 -!- oerjan has joined.
00:17:45 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:28:36 -!- MSleep has joined.
00:31:41 -!- elliott has joined.
00:32:58 <elliott> 16:56:07: <Phantom_Hoover> kallisti, but why not just leave the animal alive so it generates more heat?
00:33:06 <elliott> Phantom_Hoover: Um excuse me the obvious thing to do is to cuddle a rabbit?
00:33:14 <Phantom_Hoover> elliott, I don't have a rabbit :(
00:33:19 <Phantom_Hoover> And my cat has fleas.
00:33:20 <elliott> Phantom_Hoover: :(
00:33:42 <elliott> HP announces that they will open source WebOS! (hp.com)
00:33:52 <elliott> FINALLY A MEDIOCRE OPEN-SOURCE LINUX-BASED MOBILE PHONE OPERATING SYSTEM!
00:33:55 <elliott> JUST WHAT I'VE ALWAYS WANTED
00:34:20 <elliott> 18:12:15: <Gregor> core.c:1:0: error: ISO C forbids an empty translation unit [-Werror=edantic]
00:34:24 <elliott> Gregor: E...dantic?
00:35:00 <elliott> 19:29:04: <kallisti> is there a way to get find to put quotes around files?
00:35:00 <elliott> 19:29:18: <kallisti> or to otherwise make them readable by grep without spaces messing up things?
00:35:09 <elliott> kallisti: -exec or -print0 + xargs -0
00:35:42 <elliott> 19:29:46: <monqy> don't have spaces
00:36:05 <elliott> monqy: I would revoke your @ Club membership but spaces in filenames are pretty much hell in Unix.
00:37:42 <monqy> i was jokeing.................
00:37:59 <elliott> monqy: monqy....i know........
00:38:05 <monqy> elliott: .................................
00:38:28 <elliott> MegaUpload is currently being portrayed by the MPAA and RIAA as one of the world’s leading rogue sites. But top music stars including P Diddy, Will.i.am, Alicia Keys, Snoop Dogg and Kanye West disagree and are giving the site their full support in a brand new song. (torrentfreak.com)
00:38:32 <elliott> FINALLY A SONG ABOUT MEGAUPLOAD
00:38:50 <elliott> THANK YOU TOP MUSIC STARS INCLUDING P DIDDY, WILL.I.AM, ALICIA KEYS, SNOOP DOGG AND KANYE WEST!!!!
00:39:28 <monqy> i must hear this
00:40:04 <elliott> "this isn't a song it's a fucking commercial." cry
00:40:09 <elliott> but uh
00:40:09 <elliott> http://torrentfreak.com/riaa-label-artists-a-list-stars-endorse-megaupload-in-new-song-111209/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Torrentfreak+%28Torrentfreak%29
00:40:30 <monqy> mega song
00:40:32 <elliott> http://torrentfreak.com/images/megaartist2.jpg
00:40:38 <elliott> i cant
00:40:42 <elliott> comprehend this
00:40:47 <elliott> Kanye West, signed to Universal-owned Def Jam, likes to use Megaupload “…because it’s the fastest and safest way to send files – period.”
00:40:56 <elliott> thisi is beautiful
00:41:05 <elliott> i want to live in a world where top music stars tweet about their favourite upload sites
00:41:15 <monqy> and theyre all megaupload
00:41:19 <elliott> Snoop Dogg, signed to EMI-owned Priority, uses it “…because it keeps the kids off the street,”
00:41:27 <elliott> actual quote
00:41:48 <monqy> wow this songe............
00:42:17 <elliott> http://torrentfreak.com/images/megastats1.jpg i don't quite understand this, i've always thought megaupload was like one of the least professional looking upload site
00:42:17 <elliott> s
00:42:40 <elliott> “It works like an ad blocker but instead of blocking ads we show ads coming from Megaclick, our ad network,” says Kim. “This way we will generate enough ad revenue to provide free premium services and licensed content so that our users can have it for free.”
00:42:47 <elliott> it works like an ad blocker but instead of blocking ads it shows ads
00:42:54 <hagb4rd> what a crap
00:42:59 <elliott> heh that's actually quite clever though
00:43:05 <elliott> replace other people's ads with your ads and give them free shit for it
00:43:10 <elliott> i mean
00:43:17 -!- copumpkin has joined.
00:43:19 <elliott> if you don't block ads and they're not annoying flash crap you havent' got much to lose from that
00:43:22 <elliott> unless the software is scummy
00:43:24 <elliott> which it will be
00:44:01 <elliott> new pixley release :D
00:44:12 <hagb4rd> at least the lyrics are fine
00:44:35 <monqy> are we listening to the same song
00:44:47 <elliott> he's listening to the premium version
00:44:47 <hagb4rd> :p
00:44:55 <elliott> http://torrentfreak.com/images/megastats2.jpg
00:44:58 <elliott> 8 times the population of atlanta
00:45:05 <elliott> oh my god
00:45:05 <elliott> Update: Universal Music has removed the video from YouTube on copyright grounds.
00:45:11 <hagb4rd> lol
00:45:18 <monqy> is that for real
00:45:56 <monqy> great
00:46:08 <hagb4rd> what is the difference between a duck?
00:48:28 <Slereah> One of them isn't
00:48:51 * Phantom_Hoover → sleep
00:48:53 -!- Phantom_Hoover has quit (Quit: Leaving).
00:55:36 <elliott> monqy: http://en.wikipedia.org/wiki/Kim_Schmitz megaupload guy sure is legit
00:56:06 <monqy> great
00:57:14 <elliott> "Am I the only one who suspects there's kickbacks being thrown around? The "song" seemed more like an advertising jingle to me."
00:57:20 <elliott> monqy: reddit finds out.....the HIDDEN TRUTH
00:57:35 <elliott> we so gullible :(
00:58:23 <monqy> :(
01:20:49 <elliott> 21:49:48: <fizzie> The NUL-terminated strings have been called "The Most Expensive One-byte Mistake" in widely pasted-in-IRC-and-everywhere http://queue.acm.org/detail.cfm?id=2010365 (disclaimer: this does not constitute endorsement of the aforementioned article)
01:20:57 <elliott> fizzie: Whereas null is the most expensive four-byte mistake.
01:21:01 <elliott> Or was it two in those days?
01:21:10 <elliott> 21:50:20: <Sgeo> What expensive mistakes are there? NUL-terminate strings, null, what else?
01:21:29 <elliott> Sgeo: Computers. Capitalism. Civilisation. Life. The universe. Everything.
01:21:34 <elliott> HTH
01:22:01 <Sgeo> I just thought of something
01:22:21 <Sgeo> Could Haskell strings be thought of as null-terminated strings, even if that's not what they are physically?
01:22:32 <Sgeo> After all, they're terminated by a sentinel value
01:22:47 -!- oerjan has quit (Quit: MADNESS!).
01:22:48 <Sgeo> Well, hmm, not quite the right way to describe it
01:23:39 <Sgeo> Issues of run-time complexity should crop up identically. Issues of inability to deal with what should be a valid character don't.
01:23:47 <elliott> Sgeo: Not really, since [] is in the tail position, not the head position
01:24:17 <Sgeo> Uh...?
01:24:30 <Sgeo> In what way do NUL-terminated strings have a sentinel at the head?
01:25:13 <elliott> (:) 'a' ((:) 'b' ((:) 'c' ((:) '\0' ...)))
01:25:32 <elliott> Note how NUL occurs as first argument to (:), not second
01:26:42 <elliott> 22:06:44: <kallisti> a python error-quine would be the worst.
01:26:43 <elliott> kallisti: been done
01:27:05 -!- oerjan has joined.
01:27:06 <elliott> 22:09:04: <kallisti> !bf
01:27:06 <elliott> 22:09:08: <kallisti> oerjan: there
01:27:06 <elliott> 22:09:11: <kallisti> null quine.
01:27:06 <elliott> 22:09:12: <kallisti> we win.
01:27:13 <elliott> kallisti: nope, EgoBot didn't respond with a 0-byte message
01:27:33 <elliott> actually if the logs' lack of space after "bf" is accurate then it'd have to be a -1-byte message
01:27:35 <Sgeo> elliott, that sounds like a fancy way of saying that unlike Haskell lists, \0 is actually a value just like other characters
01:27:57 <Sgeo> It doesn't solve run-time time-complexity issues
01:27:57 <elliott> Sgeo: Nah, you could have Maybe Char instead
01:28:01 <elliott> And make NUL be Nothing
01:28:08 <elliott> I'm not trying to solve any "issues".
01:28:17 <elliott> I'm just making a point that [] is fundamentally different from a sentinel.
01:28:21 <Sgeo> Ah
01:28:47 <Sgeo> I guess the big problem with NUL-terminated strings is that it's a sentinel, rather than the time it takes to deal with them?
01:28:50 <elliott> data Stream a = Cons a (Stream a); abc :: Stream (Maybe Char); abc = Cons (Just 'a') . Cons (Just 'b') . Cons (Just 'c') . Cons Nothing $ undefined
01:28:54 <elliott> That's more like C strings.
01:28:59 <elliott> Where undefined represents your program segfaulting :P
01:29:13 <zzo38> In Haskell of course you do not need things like '\0' at the end since you can just find the end of the list.
01:29:19 <elliott> Sgeo: Well, length being O(n) sucks too
01:29:23 <elliott> But it allows laziness
01:29:56 <zzo38> Yes, which memory encoding of strings you use is best really depend on purposes
01:30:39 <Sgeo> Laziness without lazy I/O is not as much fun as lazy I/O, I think
01:31:24 <elliott> Guess I hate fun, then
01:32:07 -!- MSleep has changed nick to MDude.
01:33:43 <Sgeo> elliott, what are some nice uses of string laziness?
01:34:06 <elliott> It's just list laziness...
01:34:28 <elliott> If you're asking me to explain to you why laziness is beneficial for algorithms in general, uhh, I'm not qualified to teach such a fundamental thing.
01:38:28 <Gregor> <elliott> Gregor: E...dantic? <-- apparently -pedantic enables the somewhat lexically confused -Werror=edantic
01:38:37 <elliott> Wow :P
01:38:41 <elliott> -Wedanti
01:38:42 <elliott> c
01:38:50 <elliott> Gregor: -pedantic-errors, surely
01:39:08 <Sgeo> I'd like to know if it's known whether laziness is a net positive or a net negative. Although I'd guess (only a guess, I may be not knowledgeable enough to guess) that laziness is good for time-complexity and bad for space-complexity
01:39:19 <Gregor> elliott: Err, yes, but I had -pedantic -Werror, so equivalent.
01:39:34 <elliott> Sgeo: That's... not something that can be objectively decided.
01:39:43 <Sgeo> elliott, kallisti update
01:39:52 <elliott> Gregor: I bet it's a frontend bug; it probably does printf("[enabled by -Wall=%s]", option_name+1);.
01:39:58 <elliott> "pedantic"+1 = "edantic"
01:39:58 <Sgeo> elliott, kallisti nope, sorry
01:40:20 <elliott> Sgeo: Anyway, strictness is easier to do in a lazy language than laziness in a strict one.
01:40:24 <Gregor> -Wall -Werror -ansi -pedantic tells you nice things such as the fact that strdup isn't part of the C standard. Or POSIX until 2008.
01:40:54 <elliott> Making a lazy program strict is just putting seqs everywhere (which is trivial with sugar); making a strict programs lazy involves lots and lots of thunk creation and redefining data types and bullshit.
01:41:11 <elliott> ofc a fully-strict lazy program has overhead.
01:41:29 <elliott> Although I wouldn't be surprised if GHC can avoid building up unevaluated thunks entirely if you make everything strict.
01:41:32 <elliott> (Not that you'd want to.)
01:41:36 <elliott> Gregor:
01:41:38 <elliott> `quote strdup
01:41:39 <kallisti> and a fully strict program would be awful to write in Haskell.
01:41:41 <HackEgo> 492) <ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
01:42:21 <Gregor> Define "illegal" :P
01:42:37 <Gregor> I mean, mine have #define _SVID_SOURCE at the top. 'cuz hell yeah System V Interfaces Definition.
01:42:58 <Gregor> Also:
01:43:03 <Gregor> `@ elliott quote strdup
01:43:05 <HackEgo> elliott: 492) <ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
01:43:07 <Gregor> Heww yeah
01:43:10 <kallisti> hmm, strings can be pretty large considering that they're immutable in many languages/programs
01:43:16 <elliott> Gregor: Heww yeah what
01:43:28 <kallisti> that's a lot of copying to do.
01:43:31 <Gregor> elliott: You put "Gregor:" on a separate line in spite of the fact that you implemented `@ :P
01:43:32 <kallisti> (for large strings)
01:43:33 <elliott> kallisti: Dude, that's what sharing is for.
01:43:42 <elliott> Obviously Python doesn't do that, but it's Python.
01:43:47 <elliott> Gregor: Oh :P
01:43:56 <kallisti> elliott: what languages do sharing besides Haskell?
01:44:06 <elliott> Every... language with pointers?
01:44:15 <elliott> Python just can't share strings because it uses a flat byte-array representation.
01:44:23 <kallisti> "languages with pointers" don
01:44:29 <kallisti> don't count as "languages with immutable strings"
01:44:34 <kallisti> well...
01:44:40 <elliott> I never said they did. You are confused.
01:44:40 <kallisti> unless the strings are... immutable still. :P
01:45:20 <Jafet> Haskell doesn't do sharing
01:45:33 <elliott> Jafet: Indeed.
01:45:42 <kallisti> elliott: also perl doesn't really do sharing (I think?)
01:45:43 <elliott> "Enjoy happy hour premium with Mega Manager weekdays from 9am to 11am UTC."
01:45:45 <elliott> 2 = 1
01:45:58 <elliott> kallisti: So if I put a 1 gigabyte object in a list in Perl, it copies it?
01:46:00 <kallisti> elliott: not without explicit reference handling
01:46:10 <kallisti> elliott: well, no...
01:46:14 <Jafet> @wn sharing
01:46:15 <lambdabot> Error: connect: does not exist (Connection refused)
01:46:18 <elliott> my @foo = ($a, $a, $a, $a); # 4 copies of $a?
01:46:22 <kallisti> elliott: because an object in a list is a ref.
01:47:12 <kallisti> elliott: well, perl /might/ share strings. I honestly don't know. the semantics aren't clearly documented if that's the case.
01:47:29 <elliott> You are again confused by thinking that sharing has anything to do with whether strings are byte arrays or not.
01:47:46 <kallisti> elliott: you are confused in that you somehow think that's what I'm talking about?
01:47:58 <kallisti> when, as I recall, you are the only one who mentioned that.
01:48:02 <elliott> yawn
01:50:19 <kallisti> !perl my $a = 2; my @foo = ($a,$a,$a,$a); $a++; print @foo
01:50:20 <EgoBot> 2222
01:51:15 <kallisti> !perl my $a = "aaaaaaaaaaaaah"; my @foo = ($a,$a,$a,$a); splice $a, 0, 2; print @foo
01:51:16 <EgoBot> Type of arg 1 to splice must be array (not private variable) at /tmp/input.32432 line 1, near "2;"
01:51:28 <kallisti> oh right.
01:51:50 <kallisti> !perl my $a = "aaaaaaaaaaaaah"; my @foo = ($a,$a,$a,$a); $a =~ s/a/x/g; print @foo
01:51:51 <EgoBot> aaaaaaaaaaaaahaaaaaaaaaaaaahaaaaaaaaaaaaahaaaaaaaaaaaaah
01:51:54 <kallisti> aaah
01:52:55 <kallisti> elliott: so yes, unless perl does something fancy, there are four copies of $a.
01:53:24 <elliott> That's...
01:53:47 <elliott> No, that's a fucking idiotic test because even if it did do what you're saying it doesn't (which isn't really about sharing at all) WITHOUT doing anything fancy you'd still get those results.
01:54:19 <kallisti> elliott: please tell me what I meant to say then.
01:54:22 <kallisti> or whatever.
01:54:33 <elliott> I wish I knew.
01:54:45 <Sgeo> =~ doesn't mutate $a?
01:54:49 <kallisti> yes it does.
01:55:12 <elliott> kallisti:
01:55:19 <kallisti> if it didn't 99% of my perl programs are broken and yet magically work.
01:55:25 <elliott> !perl my $a = 0; my $b = $a; $a++; print "$b\n";
01:55:25 -!- oerjan has quit (Remote host closed the connection).
01:55:26 <EgoBot> 0
01:55:35 <kallisti> elliott: yes?
01:55:49 <elliott> OH SHIT MAYBE $a++ IS JUST SUGAR FOR $a=$a+1 AND NONE OF THIS HAS ANYTHING TO DO WITH MUTATION
01:55:55 <elliott> AND MAYBE... JUST MAYBE... =~ IS ANALOGUOUS
01:56:00 <hagb4rd> try sth like $a = 0; $foo.add($a); $a=1; $foo.add($a); and so on
01:56:05 <elliott> And maybe you don't know the difference between a variable and the value inside.
01:56:09 <Sgeo> So = copies?
01:56:12 <kallisti> elliott: I think you're confused about what I'm saying.
01:56:14 <kallisti> Sgeo: yes
01:56:17 <kallisti> that is how = works
01:56:19 <hagb4rd> then print
01:56:24 <elliott> kallisti: I'm not, but I'm also done with this idiocy.
01:56:51 <Sgeo> So, how is this not a trivially obvious result?
01:57:01 <kallisti> Sgeo: it is a trivially obvious result.
01:57:08 <kallisti> he was trying to prove some point that wasn't entirely clear.
01:57:53 <hagb4rd> if $a is reference in the list, all values in the list would be the same, right?
01:58:19 <kallisti> my claim was basically "perl makes copies of very large strings because of normal pass by value semantics"
01:58:26 <kallisti> but, it apparently has something to do with byte arrays.
01:58:42 <Sgeo> I think elliott assumed you thought it had something to do with byte arrays
01:59:03 <kallisti> perhaps elliott thinks he's me sometimes, and so he confuses things he says with things I say.
01:59:17 <elliott> Sgeo will be your human chinese whispers simulation fort he night.
01:59:19 <elliott> *for the
01:59:50 <elliott> lol, the name "chinese whispers" apparently comes from Chinese being incomprehensible to Europeans
01:59:54 <elliott> racism :')
02:00:25 <kallisti> I had to look up what that even is.
02:00:53 <kallisti> because I'm an American. If something applies to "the world" it probably doesn't apply to "the United States"
02:01:38 <elliott> I think it's only called chinese whispers over here.
02:01:54 <kallisti> elliott: racists
02:02:03 <elliott> Yep.
02:03:15 <pikhq> Here we've got the much less racist name "telephone".
02:04:20 <kallisti> you need to have a civil war involving (among other things) a slave trade followed by years of injustice followed by a peaceful reform movement followed by tension and inequality that continues into the 21st century.. in order to see the error of your ways
02:04:20 <elliott> I'll call it that in the future when I talk about it :P (which will be: never)
02:04:45 <elliott> kallisti: Yes, in the UK we have absolutely no racial tension and equality.
02:04:55 <kallisti> elliott: as I suspected
02:05:17 <elliott> That is why right-wingers are so fucking scared of immigrants.
02:05:18 <elliott> *inequality
02:05:18 <elliott> Nice slip.
02:06:01 <kallisti> elliott: especially Muslims right?
02:06:21 <kallisti> elliott: I recently learned about some conspiracy theory that people believe in Europe that /muslims are taking over Europe/ or something?
02:06:26 <kallisti> that's hilarious.
02:07:23 <Sgeo> My dad was talking about something in France, and apparently shares Gingritch's concern about Muslims taking over the US
02:07:35 <elliott> *Gingrich
02:07:39 <kallisti> elliott: it may not be lol
02:07:41 <kallisti> eritoiuertiuertiu
02:07:49 <elliott> What.
02:07:51 <kallisti> s/.*lol/lol/
02:07:51 <hagb4rd> take over?
02:07:55 <elliott> Sgeo: they are, actually.
02:08:05 <elliott> We sent them packing and they were like "alright, where can we try next".
02:08:36 <kallisti> elliott: Barack /HUSSEIN/ Obama
02:08:43 <kallisti> elliott: it's already happened apparently.
02:08:52 <elliott> I'm kind of astonished you guys elected a guy with "Hussein" in his name.
02:09:00 <kallisti> me too.
02:09:06 <kallisti> it's because he's so black. and motivational.
02:09:19 <kallisti> but also so white??
02:09:41 <kallisti> these are all things that concern us Americans
02:11:11 <kallisti> my state produces awesome politicians. see: Newt Gingrich
02:12:59 <kallisti> (in case it wasn't clear, I think Georgia is a shit state.)
02:13:04 <kallisti> (okay? good.)
02:18:11 <hagb4rd> so one of the republicans next candidates for president is black too, right?..that kind of surprised me
02:18:49 <elliott> hagb4rd: herman cain is out
02:18:53 <elliott> i believe
02:19:04 <elliott> well i don't think he's officially out yet but he's "suspended his campaign" and there's no way it's gonna continue
02:19:35 <hagb4rd> thx for update
02:20:53 -!- Vorpal has quit (Ping timeout: 244 seconds).
02:22:45 <pikhq> hagb4rd: He's fucked up in all the ways Republicans like, so eh.
02:23:57 <Sgeo> There was an Onion thing about that
02:24:07 <Gregor> Republicans will suspend racism if the candidate is sufficiently nutty.
02:24:18 <Gregor> Same reason why all their female candidates have been batshit insane.
02:24:26 <Gregor> (Well, sexism there of course)
02:25:02 -!- Vorpal has joined.
02:25:14 <Gregor> If they ever find a woman to elect to the office of President on the platform of ending women's suffrage, she'll be their nominee.
02:27:47 -!- Madoka-Kaname has quit (Quit: Hug~♪).
02:28:30 -!- Madoka-Kaname has joined.
02:28:41 <zzo38> The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
02:29:00 <hagb4rd> rofl
02:30:10 -!- derdon has quit (Remote host closed the connection).
02:30:10 <hagb4rd> pure gonzo :)
02:31:10 -!- Deathly has joined.
02:31:20 <elliott> <Gregor> Republicans will suspend racism if the candidate is sufficiently nutty.
02:31:20 <elliott> <Gregor> Same reason why all their female candidates have been batshit insane.
02:31:20 <elliott> <Gregor> (Well, sexism there of course)
02:31:26 <elliott> Gregor: For some definition of "suspend" :P
02:31:32 <Deathly> what is esoteric?
02:31:33 <Gregor> Fair 'nuff.
02:31:39 <elliott> `welcome Deathly
02:31:42 <HackEgo> Deathly: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
02:31:48 <pikhq> If they find a black gay atheist woman to elect to the office of President on the platform of ending suffrage for all of the above, there won't be any other nominees.
02:32:10 <Gregor> !bf ++++++++++[>+++++++>++++++++++>+++>++++++<<<<-]>--.>+.----.+++++++++++++++++++.------------.++++.+++++++++++++.>>--.<++.<<++++++++++++++++.++++++++++++++++++++.+.>------.>.<<.>.>.<<----.>.----.+++++.<.>--.---------.<--.>>>------------.<----------------------.
02:32:10 <EgoBot> Deathly: This is esoteric.
02:32:21 <pikhq> Well, except Ron Paul.
02:32:31 <Gregor> X-D
02:32:39 <Deathly> i herd u liek mudkipz
02:32:53 <pikhq> Who, of course, runs on the platform of "the federal government should do nothing!"
02:33:10 <elliott> Deathly: You just forfeited your privilege to be treat nicely by me with that :(
02:33:16 <Deathly> O:
02:33:18 <Deathly> but why
02:33:44 <elliott> because i'm a bad person :'(
02:33:53 <Gregor> pikhq: And of course Rick Perry, saying that there's something wrong with a country where gays can serve in the military but we don't elect a douchebag as president.
02:34:03 <elliott> `addquote <Gregor> pikhq: And of course Rick Perry, saying that there's something wrong with a country where gays can serve in the military but we don't elect a douchebag as president.
02:34:06 <HackEgo> 752) <Gregor> pikhq: And of course Rick Perry, saying that there's something wrong with a country where gays can serve in the military but we don't elect a douchebag as president.
02:34:26 <Gregor> That was definitely not the most quotable quote of this conversation :P
02:34:32 <Deathly> you're the kind of person that would pass laws to protect it's government from it's own citizenship.
02:34:35 <Deathly> ):
02:34:53 <elliott> Deathly: To protect... it is government from it is own citizenship?
02:34:58 <Gregor> I'm also the kind of person that would use "its" and "it's" properly.
02:35:00 <Deathly> the first sign of corruption in government in my book.
02:35:10 <elliott> Deathly: So what Presidential candidate do you support
02:35:14 <hagb4rd> `addqote <zzo38>The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
02:35:17 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: addqote: not found
02:35:33 <pikhq> Deathly: Um? Where the heck is that coming from, anyways?
02:35:33 <Deathly> a person is an it?
02:35:41 <hagb4rd> `addquote <zzo38>The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
02:35:43 <pikhq> No, but "it's" is "it is"
02:35:44 <HackEgo> 753) <zzo38>The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
02:35:57 <Deathly> so?
02:36:08 <elliott> <elliott> Deathly: So what Presidential candidate do you support
02:36:12 <Deathly> it's ok, because it's just grammar
02:36:33 <Deathly> i support ronald reagan
02:36:41 * elliott doesn't actually care about grammar/orthography/etc. except when he's trying to be an asshole.
02:36:51 <Gregor> elliott: Same 'ere 8-D
02:37:00 <elliott> Deathly: You seem to be in 1980.
02:37:14 <elliott> Deathly: Which is great, because IRC doesn't exist and so you cannot possibly be here.
02:37:14 <pikhq> Deathly: You seem to believe in necrocracy.
02:37:17 <Deathly> i'm stuck in Commodore Basic 4.0 too
02:37:18 <Deathly> :/
02:37:23 <elliott> Man, *I* believe in necrocracy!
02:37:28 <elliott> Who couldn't believe in something with a name like that?
02:37:35 <Gregor> elliott: Uhh, excuse me, I think something is wrong with a country where gays can serve openly in the military but we can't elect a zombie president.
02:37:43 <zzo38> hagb4rd: You forgot one space, I think
02:38:17 <Deathly> 10 PRINT "RON PAUL RLOVEUTION! ";:GOTO 10
02:38:21 <Deathly> RUN
02:39:07 <Gregor> R...love...ution ... is this some kind of broken portmanteau of "revolution" and "love" ... by making part of the word almost as backwards as Ron Paul himself ... ?
02:39:07 <elliott> Gregor: "Something is wrong with a country where gays can serve openly in the military but I can't seem to find any of them in public restrooms." --Rick Perry
02:39:10 <Deathly> ?BREAK IN 10
02:39:10 -!- Patashu has joined.
02:39:11 <lambdabot> Unknown command, try @list
02:39:12 <Deathly> READY.
02:39:15 <Gregor> elliott: X-D
02:39:52 <elliott> Deathly: rloveution <-- please tell me you're serious
02:40:08 <elliott> http://www.cbsnews.com/stories/2008/01/23/politics/uwire/main3745648.shtml
02:40:08 <elliott> WHAT
02:40:10 <Deathly> Please don't tell me you're not trolling.
02:40:10 <elliott> how is this a real thing
02:40:18 <elliott> rLOVEution...............
02:40:43 <elliott> Deathly: thank you, you've helped prove to me that no matter how ridiculous I think ron paul is, he will always be way more ridiculous than that
02:41:12 <Deathly> I'm voting Ron Paul, just because I can.
02:42:26 <Deathly> does Excalibur give you agrivate monster?
02:42:54 <hagb4rd> yea blame socialism and become president..old fashioned but efficient
02:43:54 <Gregor> elliott: OMG OMG
02:44:03 <Gregor> elliott: Post found on Rick Perry's FB wall:
02:44:04 <Gregor> I am an admirer of the Confederate States of America and no doubt a substantial number of the men who fought under the Confederate Battle Flags were homosexuals, it would not surprise me either if some lesbians joined the CSA front-line military forces by disguising themselves as men. I opposed the repeal of DADT not because I supported it but because it was hugely hypocritical of Obama who as an Islamist or FT supports murdering gay and lesbian people,
02:44:04 <Gregor> to be falsely posturing himself as a friend of the LGBTI community. That said DADT was stupid and now that it is gone, it would be idiotic to reinstate it.
02:44:31 <Deathly> terrorists are everywhere, if you see them in your neighborhood, call homeland security! remember only YOU can prevent forest communis... terrorists.
02:44:41 <elliott> Gregor: What
02:44:46 <Gregor> elliott: JUST TAKE IT ALL IN
02:45:20 <Deathly> Obama is a hitlerosexual
02:45:25 <elliott> Gregor: I'm trying to reconcile the fact that this guy supports the Confederacy and thinks Obama is a muslim but also supports LGBT rights.
02:45:44 <Gregor> elliott: It's amazing, innit.
02:46:03 <Deathly> and the best part is, it's all trooo
02:46:04 <Deathly> ll
02:46:11 <Gregor> I hope so :P
02:46:47 <Gregor> As a troll though, it's a piece of art.
02:46:48 <Deathly> <Deathly> isnt doom 3 just doom 2 with an extra level?
02:46:48 <Deathly> <Deathly> or was that doom 2?
02:46:51 <Gregor> It's a masterwork.
02:47:11 <Deathly> #iodoom3 loves me now
02:47:48 <monqy> doom 2 is just doom 2 with an extra level, yes
02:50:50 <elliott> the extra level is a game where you flip a coin but it's really really big
02:51:23 <Deathly> how are you supposed to tell the difference between ice and nonice in the valkyrie quest with colors off?
02:52:12 <Sgeo> elliott, keep in mind that some supporter of idea X being an idiot implies nothing about X
02:52:19 <Sgeo> Well, hmm, not sure if it's "nothing"
02:52:29 <elliott> Sgeo: What
02:53:02 <Deathly> idiots are everywhere
02:53:13 <pikhq> elliott: Not just a Muslim, an Islamist.
02:53:20 <Deathly> or at least it seems that way when you are in the intellectual 99th percentile
02:54:16 <Deathly> <Deathly> i remember playing doom
02:54:18 <Deathly> <Deathly> that game rocked
02:54:18 <Deathly> <Deathly> it was so much better than commander keen
02:54:20 <Deathly> got me kicked
02:54:21 <Deathly> :/
02:54:53 <Deathly> they dont like talking about doom 1 or 2 i guess
02:54:56 <Deathly> only doom 3
02:56:02 <monqy> :o
02:56:23 <monqy> sometime i should play doom
02:56:55 <elliott> pikhq: Hm, there's a difference?
02:56:58 <elliott> <Deathly> idiots are everywhere
02:57:00 <elliott> <Deathly> or at least it seems that way when you are in the intellectual 99th percentile
02:57:13 <elliott> Deathly: I hope you realise just how brilliantly ironic that statement is.
02:57:23 <monqy> did someone actually say that
02:57:27 <monqy> where someone is Deathly
02:57:40 <elliott> it's right above what you said
02:57:41 <elliott> so yes
02:57:41 <hagb4rd> need to checkout the ipx emulation in dosbox..
02:58:02 <monqy> :o
02:58:11 <monqy> i didn;t notice it
02:58:16 <hagb4rd> a small deathmatch
02:58:19 <Sgeo> forall intelligence levels I: #esoteric > I
02:58:25 <monqy> thanks
02:58:29 <Deathly> i'm Deathly
02:58:32 <monqy> hi Deathly
02:58:46 <Deathly> hai
02:58:46 <monqy> i'm monqy
02:58:58 <Deathly> a pleasure to meet you sir, i'm sure.
02:59:08 * Deathly curstsies
02:59:17 <Deathly> curtsies
02:59:22 <Deathly> fuck my tyops
02:59:24 <monqy> it is always a pleasure to meet me. i am a very pleasureful person.
02:59:44 <monqy> sometimes i meet myself
02:59:47 <monqy> it fills me with joy
02:59:56 <Deathly> i'd love to meat you in real life ;)
03:00:03 <monqy> whoa now there!!
03:00:06 <monqy> whoa!!!!!!!!
03:00:11 <elliott> monqy it hink Deathly want syou to fuck his typos.........
03:00:19 <elliott> (irl)
03:00:21 <monqy> but thats grosse........
03:00:22 <monqy> ;_;
03:00:27 <elliott> yes :(
03:00:36 <Deathly> but gross is fun
03:00:40 <Deathly> don't you like dirty?
03:00:40 <elliott> leave it to taneb............
03:00:42 <elliott> he can handle it
03:00:55 <monqy> gross killed my familey............
03:01:02 <Deathly> i am trying to collect all the STD's.
03:01:12 <elliott> god why are you so boring
03:01:13 <monqy> an adventure
03:01:15 <Deathly> they are like pokemon to me, I gotta catchem all.
03:01:20 <monqy> an true adventure
03:01:34 <Deathly> with an hero to boot?
03:01:40 <monqy> whats that
03:01:46 <Deathly> an hero?
03:01:48 <Deathly> or a boot?
03:01:53 <elliott> Deathly did you like
03:01:54 <monqy> with
03:01:59 <elliott> read the entire contents of encyclopedia dramatica
03:02:00 <elliott> and think
03:02:01 <monqy> whats a with
03:02:01 <elliott> "yes.
03:02:04 <elliott> finally i am ready to interact with people on irc."
03:02:10 <Deathly> oh no
03:02:18 <Deathly> i've been making fun of channers for years
03:02:23 <elliott> making fun of
03:02:24 <elliott> aka
03:02:24 <Deathly> ever since chans started
03:02:25 <elliott> imitating
03:02:28 <Deathly> yup
03:02:33 <elliott> rly
03:02:35 <elliott> so
03:02:36 <Deathly> srsly
03:02:40 <elliott> you were mocking channers since 1999
03:02:48 <monqy> today
03:02:50 <elliott> that's quite dedicated of you!!!!!!
03:02:52 <monqy> deathly discovers
03:02:56 <Deathly> well, i didnt start IRCing until 1994
03:02:57 <monqy> he was the channers all alonge....
03:02:59 <Deathly> :/
03:03:08 <Deathly> but yes
03:03:23 <elliott> (the joke is that by "chans" deathly means "4chan & imitators")
03:03:28 <elliott> (it is not a joke i am actually just mocking him)
03:03:37 * Deathly fondly remembers the days when getting a netsplit on efnet was as simple as a pingflood from a t3
03:03:52 <Deathly> chans
03:03:54 <Deathly> channels
03:03:59 <Deathly> i see what u did thur
03:04:02 <monqy> what
03:04:07 <elliott> Deathly: no what i did there
03:04:14 <monqy> deathly
03:04:14 <elliott> is point out that 4chan wasn't the first "-chan"
03:04:16 <monqy> what did elliott do
03:04:19 <monqy> please tell me i want to know
03:04:28 <Deathly> irc channels existed with trolls all over long before *chan
03:04:32 <Deathly> channels
03:04:33 <Deathly> chan
03:04:39 <Deathly> so i lawd
03:04:42 <monqy> what
03:04:56 <elliott> how old are you Deathly
03:04:56 <Deathly> nothing, i'm a spice girl!
03:05:08 <monqy> old enough to irc in 1994
03:05:12 <monqy> too old
03:05:14 <Deathly> i'm 39
03:05:17 <monqy> too old
03:05:22 <Deathly> i used to irc from a commodore 64.
03:05:47 <elliott> here is a thing i am doing:
03:05:49 -!- kallisti has quit (Ping timeout: 252 seconds).
03:05:50 <elliott> it is doubting that statement
03:05:50 <Deathly> dialup into a unix shell, then telnet directly to the port
03:06:17 <Deathly> then USER nul nul :Deathly
03:06:22 <elliott> anyway if you're actually 39 then that's pretty sad
03:06:23 <Deathly> then Nick Deathly
03:06:27 <elliott> but you could probably make itidus20 feel better
03:06:28 <Deathly> then join #phreak
03:06:30 <elliott> Deathly: user takes four parameters
03:06:35 <zzo38> To IRC from Commodore 64 you need the character set conversion, since Commodore 64 is not standard ASCII
03:06:38 <Deathly> then PRIVMSG #phreak :Lol, I made it!
03:06:49 <elliott> but
03:06:50 <elliott> you're not 39
03:06:54 <elliott> and you've never used a commodore 64
03:06:58 <Deathly> CCGMS had a standard ascii mode terminal
03:07:02 <Deathly> don't be a noob
03:07:04 <monqy> deathly did you lie to me....................
03:07:09 <monqy> deathly...........................................
03:07:24 <elliott> you see, this way i can just believe you're a good liar
03:07:24 <Deathly> you hit F1 or something to switch between petscii and ascii
03:07:27 <hagb4rd> hehe
03:07:32 <elliott> rather than confronting as depressing at hought as you actually being 39
03:07:36 <elliott> *a thought
03:07:39 <zzo38> Deathly: Yes, I did connect to IRC like that before too, but I didn't use a Commodore 64. But now I wrote a IRC client
03:07:59 <Deathly> but i did use a c-64
03:08:06 <zzo38> OK
03:08:08 <Deathly> what would you like to know about it
03:08:21 <Deathly> i used to program in 6502 assembler
03:08:27 <monqy> rad
03:08:29 <zzo38> Nothing, you already told me what I wanted to know about it.
03:08:31 <Deathly> there was freespace above the kernel at $C000
03:08:36 <monqy> double rad
03:08:36 <Deathly> i used to put code there
03:08:39 <monqy> triple rad
03:08:45 <elliott> i am so glad we know good people who coded in 6502 for the c64
03:08:47 <elliott> so that we don't have to rely on
03:08:48 <elliott> bad people
03:08:49 <elliott> for that
03:08:53 <hagb4rd> what is the adress of the stdbackground color? :P
03:08:56 <Deathly> ikr?
03:09:06 <Deathly> background?
03:09:09 <Deathly> shit i forget
03:09:15 <Deathly> poke 53280 i think
03:09:23 <Deathly> its been years
03:09:37 <Deathly> and 53281 was border
03:09:40 <Deathly> iirc
03:09:52 <hagb4rd> :)
03:10:04 <Deathly> wow thats stretching my memory there
03:10:48 <zzo38> I should learn a few things about the Commodore 64 BASIC and the BASIC for some other computers so that I can make the computer compatible with the type-in programs from books
03:11:17 <Deathly> i know lots about 8-butt basic
03:11:22 <monqy> :o
03:11:26 <zzo38> But I am going to put Forth as well; probably the BASIC interpreter will just be a Forth program.
03:11:42 <monqy> my basic never had any butts...........................deathly what did you do to your basic
03:11:50 <Deathly> just pirate the microsoft basic from your favorite 8bit rom
03:11:52 <monqy> butts are obscene deathly
03:12:00 <Deathly> its ok
03:12:02 <Deathly> i'm gay
03:12:12 <monqy> oh
03:12:45 <Deathly> downloading gay ringtones
03:12:46 <Deathly> hold on
03:12:50 <monqy> cool
03:13:03 <zzo38> Deathly: That is no good because, not only might it be copyrighted but it is not source-codes and is meant for a different computer anyways. I need to make the one with GNU GPL and with the codes for the new computer.
03:13:09 <hagb4rd> so you lost interest in computers somehow?
03:13:35 <zzo38> Other changes would need to be, too, due to various other differences in the computer, etc
03:14:34 <Deathly> i didnt lost interest in computers
03:14:40 <Deathly> they lost interest in me
03:14:42 <Deathly> ):
03:14:51 <Deathly> it was sad
03:14:53 <Deathly> they moved on
03:14:57 <hagb4rd> i see
03:15:00 -!- Vorpal has quit (Ping timeout: 248 seconds).
03:15:02 <Deathly> said i was too old... obsolete
03:15:15 <Deathly> broke my heart
03:15:27 * Deathly sniffles
03:15:35 <zzo38> There is still emulators and some people still write NES games
03:15:55 <Deathly> i'm playing nethack to pass the time until i die
03:16:22 <zzo38> Deathly: Why don't you learn something else please?
03:16:27 <Deathly> like?
03:16:46 <hagb4rd> haskell
03:16:46 <Deathly> every time i start teaching myself another language, i get bored
03:16:49 <zzo38> Esoteric programming, is one possibility
03:16:55 <zzo38> Another is Haskell.
03:17:18 <zzo38> But, there is also other thing such as learning a computer game that I made or if someone else in this channel make up computer game, learn that one too
03:17:21 <monqy> what languages have bored you, or is it just the learning
03:17:33 <elliott> everyone learn haskell
03:17:35 <elliott> `? haskell
03:17:38 <HackEgo> Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/
03:17:44 <Deathly> java is like c++ is like c is like boring
03:17:55 <elliott> haskell "exactly like java"
03:18:01 <Deathly> i get the object orriented stuff
03:18:04 <Deathly> in theory
03:18:08 <monqy> deathly
03:18:10 <elliott> haskell "object oriented"
03:18:14 <monqy> deathly deathly deathly
03:18:25 <zzo38> Deathly: Haskell is different. Haskell is functional programming, like mathematics, including monads and endofunctors and all those kind of things
03:18:29 <Deathly> i get the gui event driven software structures of modern os design
03:18:30 <Deathly> i do
03:18:31 <elliott> monqy: can you record yourself sighing and then going "deathly. deathly, deathly deathly."
03:18:38 <elliott> it is
03:18:39 <elliott> the best sound
03:18:40 <elliott> in my head
03:18:47 <monqy> i don't have a recorder ;_;
03:19:04 <Gregor> He was going to play a little tune while also recording with his microphone.
03:19:05 <monqy> deathlyyyyyyyyy
03:19:08 <Deathly> is that like one of those plastic flute things?
03:19:12 <monqy> yes
03:19:16 <elliott> Gregor: noo you preempted
03:19:16 <elliott> me
03:19:17 <elliott> ;_;
03:19:21 <Gregor> Flutes are transverse, recorders are fipple-blown.
03:19:29 <elliott> i used to be able to play the recorder ("play")
03:19:37 <Deathly> ah
03:19:37 <Gregor> elliott: Then you took an arrow to the face?
03:19:41 <elliott> yeah
03:19:44 <Deathly> always wondered the difference
03:19:56 <monqy> I never learned recorder. I forget how.
03:19:59 <Deathly> flutes are also used to drink wine
03:20:19 <Gregor> You can probably play those too, but it'd be a pretty different sound :P
03:20:20 <Deathly> i learned song flute, which was the same key and fingerings as a recorder
03:20:24 <Deathly> so i bet i could fake it
03:20:28 <hagb4rd> only by weird anient greeks
03:21:13 <elliott> monqy: you forget how you never learned it?
03:21:17 <monqy> yes
03:21:18 <Deathly> greeks used to think it was ok to have sex with prepubescant boys
03:21:21 <Deathly> i wish i was greek
03:21:26 <monqy> everyone was all about the recorder
03:21:27 <Deathly> they make good gyros
03:21:28 <monqy> learning it and stuff
03:21:30 <monqy> yet somehow
03:21:32 <monqy> I didn't???
03:22:07 <Deathly> you people are weird
03:22:10 <Deathly> but somehow familiar
03:22:20 <monqy> we're you, deathly
03:22:35 <Deathly> I thought i left you all on efnet
03:22:36 <Deathly> D:
03:22:40 <Deathly> what are you doing here
03:22:42 <monqy> I'm the part of you that says deathly a lot and never learned recorder
03:22:46 <elliott> this is freenode
03:22:51 <Gregor> We're the chorus of conflicting thoughts which eventually meld into cohesion in your mind whenever you try to form a thought.
03:22:51 <elliott> you can distinguish it from efnet because:
03:22:53 <hagb4rd> we're friends. hired idiots
03:22:56 <Deathly> freen
03:22:58 <elliott> 1. it's not a pile of steaming trash
03:23:01 <elliott> 2.
03:23:11 <Deathly> should play ode to freen on the recorder
03:23:25 <Gregor> elliott: Go chat in #asciipr0n :P
03:23:27 <elliott> /nick freen
03:23:31 <elliott> Gregor: Is that real
03:23:36 <Gregor> elliott: SO REAL
03:23:40 <pikhq> We are the cacaphony of your thoughts
03:23:46 <elliott> Gregor: Holy fuck, it actually is.
03:23:49 <monqy> omg.,,,it is
03:23:51 <pikhq> But not the melody.
03:23:52 <elliott> Gregor: You... you have to join that now.
03:23:56 <elliott> Gregor: Or I'll look weird.
03:23:58 <Gregor> I'd prefer not to :P
03:23:59 <monqy> I didn't join
03:24:02 <elliott> Gregor: JOIN AND THEN PART
03:24:03 <elliott> someone
03:24:04 <elliott> please;
03:24:04 <monqy> I did a chanserv lookup
03:24:05 <elliott> ;_____;
03:24:07 <monqy> this is how I do things
03:24:08 <Gregor> 8-D
03:24:09 <elliott> monqy im not smart enough for that
03:24:11 <elliott> please
03:24:11 <monqy> so I don't look weird
03:24:13 <elliott> please join it.......
03:24:13 <monqy> ;_;
03:24:14 <elliott> and then
03:24:16 <elliott> part it
03:24:17 <elliott> you can even
03:24:23 <elliott> /part #asciipr0n hahaha weirdos!
03:24:24 <elliott> to avoid
03:24:25 <elliott> association
03:24:36 <zzo38> I made a few computer game
03:24:36 <monqy> but but
03:24:42 <elliott> monqy: PLEZ ;_;
03:24:43 <monqy> ascii porn shame
03:24:51 <monqy> i have ascii dignity!!!!!
03:24:51 <elliott> conservative ;__;
03:24:55 <zzo38> Including game for running in DOS computer. But some of them are other
03:24:55 <elliott> i dont
03:25:13 <elliott> monqy: it's only... ascii porn... the unicode bits stay covered
03:25:41 <Gregor> `addquote <elliott> monqy: it's only... ascii porn... the unicode bits stay covered
03:25:44 <HackEgo> 754) <elliott> monqy: it's only... ascii porn... the unicode bits stay covered
03:25:53 <Deathly> is literotica technically ascii porn?
03:26:00 <Deathly> since it's ascii
03:26:03 <Deathly> and female porn
03:26:05 <monqy> im dead
03:26:08 <monqy> - monqy
03:26:15 <monqy> from reading this
03:26:17 <elliott> Deathly: is male erotica not ascii porn
03:26:18 <Gregor> Deathly: NIFTY.ORG BEGS TO DISAGREE WITH YOUR QUALIFIER
03:26:29 <monqy> what is nifty.org
03:26:34 <elliott> Gregor's favourite website
03:26:45 <elliott> as we have previously established
03:26:46 <monqy> oh my..........
03:26:48 <zzo38> Instead of ASCII porn, buy ASCII pizza instead???????
03:26:53 <elliott> yes
03:26:54 <elliott> good idea
03:27:15 <monqy> #asciipz1za
03:27:20 <Deathly> omg
03:27:25 <Deathly> cheese pizza!
03:27:29 <elliott> * Now talking on #asciipz1za
03:27:29 <elliott> * adams.freenode.net sets mode +n #asciipz1za
03:27:29 <elliott> * adams.freenode.net sets mode +s #asciipz1za
03:27:29 <elliott> * elliott has changed the topic to: my channel! mine
03:27:29 <Deathly> asciiCP ftw
03:27:45 <monqy> i had pizza today
03:27:47 <monqy> it was not ascii
03:27:54 <monqy> real chease
03:27:56 <zzo38> What color of pizza?
03:27:59 <elliott> purple
03:28:02 <monqy> chease coloure
03:28:03 <elliott> purple non-ascii chease
03:28:04 <Deathly> #asciichildpr0n100%daddydaughtersex
03:28:08 -!- Klisz has joined.
03:28:10 <monqy> thnaks
03:28:16 <elliott> Deathly: ur
03:28:17 <elliott> so boring
03:28:22 <Deathly> sorry
03:28:28 <monqy> elliot no
03:28:28 <monqy> hes
03:28:29 <monqy> edgy
03:28:35 <monqy> B)
03:28:48 <Deathly> like a butter knife
03:28:52 <monqy> eggy
03:28:52 <Deathly> all over your pat
03:28:55 <monqy> eddy
03:29:06 <elliott> edgy people: worst people?
03:29:36 <elliott> edgiest people: murder your family wearing trollface mask, before you die, leans in, whispers "u mad bro?"
03:29:45 <elliott> funny(TM)
03:30:05 <monqy> surely you can be edgier than that..........................
03:30:38 <elliott> no thats
03:30:40 <elliott> maximum edgy
03:30:45 <monqy> :0
03:32:49 <zzo38> Try to win at the computer game I invented.
03:33:00 * elliott flips the coin
03:33:02 <elliott> it's hard to flip it
03:33:04 <elliott> it's so big...
03:33:34 <zzo38> Then call some really big guy to do that
03:33:39 <elliott> ah!!
03:33:44 <elliott> monqy: the game throws depth...
03:34:12 <monqy> double game: find a guy big enough to flip the coin, then flip him
03:34:15 <Deathly> zzo38: wat game?
03:34:37 <monqy> or her, if the guy is not him
03:34:41 <Deathly> flip it using judo
03:34:46 <Deathly> judo masters can flip anyone
03:34:59 <monqy> is judo done with thumbs
03:35:14 <Deathly> its like kung fu but less kung and more fu
03:35:24 <monqy> you need to use your thumbs!!!
03:35:28 <monqy> and only
03:35:30 <monqy> your thumbs
03:35:37 <zzo38> Deathly: I made many computer games
03:35:54 <Deathly> stick in your thumb!
03:36:02 <Deathly> pull out a "plum"!
03:36:05 <monqy> howwwwwwwwwwwwwww
03:36:12 <monqy> i have to leave now, for partys
03:36:14 <monqy> :'(
03:36:20 <Deathly> bright purple prolapse
03:36:26 <Deathly> donut go
03:36:29 <Deathly> leave your life behind
03:36:31 <Deathly> and stay awhile
03:36:41 <Deathly> stayyy foreverrrr!!!!
03:37:00 <Deathly> Impossible Mission
03:37:02 <Deathly> commodore 64
03:37:06 <Deathly> awesome game
03:38:12 <Deathly> wait, this isn't #wikipedia-en
03:38:17 <Deathly> what am i doing here
03:38:34 <elliott> #wikipedia-en must hate you
03:38:34 <zzo38> Wikipedia is the other way around please.
03:38:59 <elliott> zzo38: wat
03:40:47 <Deathly> aidepikiw
03:41:27 <zzo38> Including this game: http://zzo38computer.cjb.net/mzx1/ASCMZXTO/ascmzxto.zip But you need MegaZeux to use this file
03:41:58 <zzo38> Windows MegaZeux program download: http://zzo38computer.cjb.net/mzx1/mzx_extended/megazeux_win32.zip
03:42:02 <Deathly> 10 PRINT "WELCOME TO ASTROIDS! PRESS RETURN TO PLAY!"
03:42:05 <Deathly> 20 INPUT A$
03:42:25 <Deathly> 30 PRINT "* * * ASTROIDS! YOU LOSE! * * *"
03:42:35 <Deathly> 40 PRINT "GAME OVER"
03:42:36 <Deathly> RUN
03:42:50 <zzo38> Deathly: That doesn't seem a very good game in my opinion.
03:43:07 <Deathly> 10 PRINT "WELCOME TO ADVENTURE!"
03:43:24 <Deathly> 20 PRINT "YOU ARE IN A HOLE IN THE GROUND. WHAT DO YOU DO";
03:43:30 <Deathly> 30 INPUT A$
03:44:04 <zzo38> 40 PRINT "THAT'S IMPOSSIBLE."
03:44:05 <Deathly> 40 IF RND(1)<.05 THEN PRINT "IT WORKED! YOU GOT OUT!":END
03:44:08 <zzo38> 50 GOTO 20
03:44:17 <Deathly> 50 PRINT "THAT DID'T WORK!":GOTO 20
03:44:20 <Deathly> RUN
03:44:55 <zzo38> Deathly: Perhaps that is slightly better......but still not very good game in my opinion......
03:45:02 <Deathly> umm umm
03:45:06 <zzo38> I made a few games using QBASIC
03:45:35 <zzo38> Do you have QBASIC in your computer?
03:45:36 <Deathly> 10 INPUT "CALL HEADS OR TAILS:";A$
03:45:40 <Deathly> I don't
03:45:49 <Deathly> but i do know QBASIC
03:45:51 <Deathly> and GWBASIC
03:46:03 <zzo38> Yes, I have used GWBASIC too.
03:46:14 <zzo38> I have used a lot of programming languages.
03:46:21 <Deathly> me too
03:47:06 <Deathly> I WROTE A SCRIPT ONCE IN DBASE 2 ON AN OSBORNE CP/M MACHINE
03:47:20 <Deathly> I WROTE A VIDEO POKER GAME IN CP/M BASIC
03:47:21 <Deathly> weait
03:47:23 <Deathly> lol
03:47:34 <Deathly> thinking of BASIC makes me type in all caps for some reason
03:47:49 <zzo38> I have never used any CP/M
03:47:55 <Deathly> z80?
03:47:57 <Deathly> never?
03:48:18 <Deathly> i didnt use it until i inherited some boxen in the late 80s
03:48:22 <zzo38> I have written a GameBoy game once, it is similar to Z80 but not quite
03:48:46 <Deathly> my first computer was actually a commodore vic-20
03:48:53 <Deathly> no storage peripheral though
03:49:09 <Deathly> so it was turn it on, type it in, debug it, run it, rinse & repeat
03:49:18 <Deathly> on a 11" black and white TV
03:49:46 <Deathly> my dad was too chincy to pay $30 for a tape drive
03:50:12 <Deathly> but, on the plus side 3.5k of RAM wasnt that difficult to fill with code
03:50:51 <Deathly> it technically had 5k ram, but 1.5 was used by the kernel and interpretter
03:51:11 <Deathly> it was the only computer i ever used that had more text rows than columns
03:51:15 <Deathly> 22x23
03:51:55 <Deathly> fuck i'm getting old
03:51:58 <Deathly> someone kill me
03:56:32 * itidus20 takes out shotgun.
03:56:44 <itidus20> You have been targetted for governation.
03:57:19 <itidus20> Either you vote for me or you get killed by me. I guess it's your lucky day kid.
03:57:39 <Deathly> Yay for Obamacare
03:58:16 <zzo38> What programs do you prefer for typesetting? I think TeX is good program for typesetting by computer
03:58:23 <monqy> partys over
03:58:27 <monqy> so im back now
03:58:29 <monqy> ~hi~
03:58:46 <monqy> Deathly: cool games
03:59:27 <monqy> Deathly: waht
04:00:09 <monqy> zzo38: I have not tried enough to develop a preference
04:00:40 <monqy> Deathly: what is your real age im couriouse
04:00:53 <monqy> your lies have piqued my
04:00:57 <monqy> couriousety
04:03:18 <monqy> deathly....
04:03:20 <monqy> help
04:03:23 <monqy> ;_;
04:11:15 <Deathly> hi
04:11:33 <Deathly> i'm really 42
04:11:38 <Deathly> but on the internet i lie
04:11:42 <Deathly> and say i'm 38
04:11:50 <Deathly> i like living risky
04:12:38 <monqy> oh
04:12:50 <monqy> i dont believe you
04:13:03 <monqy> 42 is such a boring fake age
04:13:16 <monqy> it is too perfect
04:14:54 <Deathly> yeah
04:14:55 <Deathly> i'm 38
04:15:55 <monqy> i still have trouble accepting you are that old
04:17:40 <Deathly> but i am
04:17:41 <Deathly> so old
04:17:42 <Deathly> bro
04:17:45 <Deathly> sosrs
04:17:54 <Deathly> liek i'm uberold
04:18:04 <Deathly> ninjaold
04:18:06 <monqy> im crying
04:18:10 <Deathly> i know
04:18:10 <monqy> do you see my tears
04:18:18 <elliott> oerjan is older
04:18:27 <Deathly> you understand of course, that i'm a child mollester, so you're still in the running bby
04:18:34 <Deathly> <3
04:18:38 <monqy> leave
04:18:39 <elliott> yawn
04:18:42 <elliott> just go away
04:18:52 -!- Deathly has left.
04:18:55 <elliott> yay
04:18:56 <monqy> wow it worked
04:19:01 <elliott> for how long
04:26:40 -!- Deathly has joined.
04:26:49 <elliott> no
04:26:51 <elliott> leave
04:27:01 <Deathly> i'm not welcome here?
04:27:04 <Gregor> Ohhey, he's from Portland or thereabouts.
04:27:15 <Deathly> mhmm
04:27:19 <Deathly> .pdx.net
04:27:26 <elliott> Deathly: indeed
04:27:38 <Deathly> because i'm boring?
04:27:50 <elliott> and stupid
04:27:53 <elliott> and unfunny
04:28:03 <Deathly> more
04:28:04 <Deathly> give me more
04:28:20 <elliott> nope
04:28:27 <Deathly> aww
04:28:27 <Deathly> :/
04:29:00 <monqy> sometimes
04:29:07 <monqy> its hard being in the 99th percentile ;_;
04:29:21 <monqy> and nobody understands your elite humoure
04:30:43 <Deathly> i am the 1%
04:31:25 <monqy> unique like a snowflake
04:31:47 <Deathly> how do you scare a snowflake?
04:31:51 <Deathly> unique up on them
04:31:58 <elliott> Deathly: go go go go go go go
04:32:09 <monqy> see im not sophisticated enough to get that one
04:32:12 <monqy> i'll have to study
04:33:43 <zzo38> Try the computer games I made up, if you don't like it then modify it, it is public domain
04:38:28 <Deathly> make some money on them
04:40:46 <MDude> I didn't know you made comptuer games.
04:41:55 <zzo38> MDude: Then, now you learned.
04:42:52 <Deathly> where are your games zzo38
04:44:10 <zzo38> I posted one URL already. That one is MegaZeux game it works on many computers. I also made a few games that are only DOS, a few only Windows, and one GameBoy game.
04:44:49 * Sgeo is somewhat shocked at the notion of zzo38 making Windows-only games
04:44:58 <Deathly> i closed the window since you posted it
04:45:00 <Deathly> and rejoined
04:45:04 <Deathly> my logs are incomplete
04:45:11 <zzo38> Sgeo: I tried not to, but the program I used is only Windows.
04:45:29 <Deathly> does it has trojah?
04:45:30 <zzo38> However, I usually try to use DOS instead or MegaZeux or C or whatever making cross-platform.
04:45:55 <zzo38> Source-codes is available for everything so you might be able to figure out how to get it to compile on other computers
04:45:55 <Deathly> will it violate my system32?
04:46:04 <zzo38> Deathly: No.
04:46:48 <zzo38> http://zzo38computer.cjb.net/mzx1/ASCMZXTO/ascmzxto.zip http://zzo38computer.cjb.net/mzx1/mzx_extended/megazeux_win32.zip This is first is URL for my game, second is Windows executable for the game engine. You can download source-codes of MegaZeux to run on other computers too
04:46:56 <zzo38> MegaZeux is written in C
04:48:50 <zzo38> If you want the DOS game (CGA-Collection) then I can post those URLs too.
04:49:10 <zzo38> These all have source-codes available
04:51:12 -!- Klisz has quit (Quit: You are now graced with my absence.).
04:58:11 <MDude> Hmm, MegaZeux failed due to a DLL error.
04:59:16 <zzo38> Which DLL is error?
04:59:28 <MDude> SDL.dll
05:00:29 <zzo38> Yes you need SDL
05:01:27 <zzo38> Now I put that file you can download it http://zzo38computer.cjb.net/mzx1/mzx_extended/sdl.zip
05:02:19 <MDude> I already nabbed it.
05:08:56 <MDude> Ok, that's cool.
05:14:17 -!- MDude has changed nick to MSleep.
05:36:56 <Sgeo> elliott, update
05:41:25 -!- Klisz has joined.
06:01:17 -!- media-258 has joined.
06:02:49 -!- media-420 has joined.
06:03:55 <elliott> `welcome media-258
06:03:58 <elliott> `welcome media-420
06:03:59 <HackEgo> media-258: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
06:04:02 <HackEgo> media-420: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
06:22:29 -!- media-258 has quit (Read error: Connection reset by peer).
06:23:01 -!- media-420 has quit (Read error: Connection reset by peer).
06:24:12 -!- TeruFSX_ has quit (Read error: Connection reset by peer).
06:30:07 -!- kallisti has joined.
06:30:08 -!- kallisti has quit (Changing host).
06:30:08 -!- kallisti has joined.
06:31:28 <elliott> <Deathly> i closed the window since you posted it
06:31:28 <elliott> <Deathly> and rejoined
06:31:28 <elliott> <Deathly> my logs are incomplete
06:31:41 <elliott> Deathly: don't worry, everything you say in here is permanently logged at http://codu.org/logs/_esoteric/
06:34:35 -!- kallisti has quit (Ping timeout: 248 seconds).
06:37:26 <zzo38> I posted an update to the file "ascmzxto.zip"
06:37:31 <zzo38> I fixed a few mistakes
06:48:17 -!- Jafet has quit (Quit: Leaving.).
06:52:32 -!- Deathly has quit (Ping timeout: 240 seconds).
07:28:06 -!- Jafet has joined.
07:29:04 -!- Jafet has quit (Client Quit).
08:09:17 -!- zzo38 has quit (Remote host closed the connection).
09:06:52 -!- Klisz has quit (Quit: You are now graced with my absence.).
09:07:44 -!- elliott has set topic: hi | http://codu.org/logs/_esoteric/.
09:07:47 <elliott> this topic has been long due
09:14:21 -!- monqy has quit (Quit: hello).
09:28:52 -!- hagb4rd has quit (Ping timeout: 240 seconds).
09:45:02 -!- sebbu2 has joined.
09:45:02 -!- sebbu2 has quit (Changing host).
09:45:02 -!- sebbu2 has joined.
09:47:46 -!- sebbu has quit (Ping timeout: 268 seconds).
09:48:56 -!- hagb4rd has joined.
09:51:21 -!- sebbu has joined.
09:51:21 -!- sebbu has quit (Changing host).
09:51:21 -!- sebbu has joined.
09:52:42 -!- Phantom_Hoover has joined.
09:53:32 -!- sebbu2 has quit (Ping timeout: 240 seconds).
10:06:25 -!- copumpkin has quit (Ping timeout: 244 seconds).
10:06:50 -!- copumpkin has joined.
10:06:51 -!- copumpkin has quit (Changing host).
10:06:52 -!- copumpkin has joined.
10:38:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:45:26 -!- sebbu2 has joined.
10:45:27 -!- sebbu2 has quit (Changing host).
10:45:27 -!- sebbu2 has joined.
10:47:52 -!- sebbu has quit (Ping timeout: 240 seconds).
10:51:08 -!- Phantom_Hoover has joined.
11:12:23 -!- sebbu has joined.
11:12:23 -!- sebbu has quit (Changing host).
11:12:23 -!- sebbu has joined.
11:14:32 -!- sebbu2 has quit (Ping timeout: 244 seconds).
11:30:21 -!- sebbu has quit (Read error: Connection reset by peer).
11:30:44 -!- sebbu has joined.
11:30:44 -!- sebbu has quit (Changing host).
11:30:45 -!- sebbu has joined.
11:32:02 -!- coppro has set topic: bye | http://codu.org/logs/_esoteric/.
11:35:13 -!- derdon has joined.
11:35:59 -!- sebbu2 has joined.
11:35:59 -!- sebbu2 has quit (Changing host).
11:35:59 -!- sebbu2 has joined.
11:36:46 -!- elliott has quit (Remote host closed the connection).
11:37:32 -!- elliott has joined.
11:38:12 -!- sebbu has quit (Ping timeout: 240 seconds).
11:40:12 -!- sebbu2 has changed nick to sebbu.
11:45:35 -!- kallisti has joined.
11:45:36 -!- kallisti has quit (Changing host).
11:45:36 -!- kallisti has joined.
12:01:03 -!- sebbu2 has joined.
12:01:03 -!- sebbu2 has quit (Changing host).
12:01:03 -!- sebbu2 has joined.
12:03:12 -!- sebbu has quit (Ping timeout: 240 seconds).
12:13:03 -!- sebbu2 has changed nick to sebbu.
12:19:10 -!- sebbu2 has joined.
12:19:10 -!- sebbu2 has quit (Changing host).
12:19:10 -!- sebbu2 has joined.
12:19:34 -!- sebbu has quit (Ping timeout: 240 seconds).
12:20:16 -!- sebbu2 has changed nick to sebbu.
12:21:46 -!- oerjan has joined.
12:30:39 <oerjan> `quote 753
12:30:47 <HackEgo> 753) <zzo38>The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
12:31:23 <oerjan> `run sed -i '753s/>T/> T/' quotes
12:31:25 <HackEgo> No output.
12:31:28 <oerjan> `quote 753
12:31:32 <HackEgo> 753) <zzo38> The book "Science Made Stupid" ends with a list of things that might happen in the future (some already have), one of them is a woman president. Some things in the list are reasonable but a few are just funny instead.
12:31:42 <elliott> oerjan: thx
12:31:45 * oerjan swats hagb4rd -----###
12:32:24 <elliott> oerjan: i hereby absolve hagb4rd of all crimes; missing a space is not even remotely comparable to the grating horror that was Deathly
12:32:32 <oerjan> okay
12:32:45 <oerjan> i guess i shall soon know.
12:33:17 <elliott> oh was that before him
12:33:28 <oerjan> he had just arrived.
12:34:53 -!- sebbu2 has joined.
12:36:45 <oerjan> <Deathly> Please don't tell me you're not trolling. <-- i say this sentence comfirms he was one.
12:37:01 <hagb4rd> im still confused because of that missing space issue.. have i done sth wrong, or are you just kidding me?
12:37:12 -!- sebbu has quit (Ping timeout: 240 seconds).
12:37:22 <oerjan> hagb4rd: yes, you forgot a space.
12:37:29 <hagb4rd> what space?
12:37:37 <oerjan> after <zzo38>
12:38:15 -!- sebbu2 has changed nick to sebbu.
12:38:34 <hagb4rd> ah..so the syntax is quote <user> <quotetext> right?
12:38:48 <hagb4rd> i see
12:44:45 <elliott> oerjan: he wasn't a troll, just an idiot.
12:44:47 <elliott> well.
12:44:58 <elliott> perhaps he thought himself a troll, he was certainly deliberately annoying
12:45:04 <oerjan> hagb4rd: it _might_ be possible to deduce that from actually looking at the quotes.
12:45:15 <elliott> but he was too stupid to actually be annoying /intentionally/ as opposed to simply being annoying because he's him
12:45:52 <hagb4rd> you're right. now i feel really stupid.
12:46:16 <oerjan> don't worry, it will pass, until you do something even more stupid.
12:46:47 <oerjan> well or until you reminisce (sp?), so don't do that. ever.
12:47:12 <elliott> oerjan: the worst part comes when we find out deathly's age :(
12:47:16 <elliott> (spoilers)
12:48:05 <oerjan> i've seen that. in fact i saw that part first since you pinged me in it.
12:48:21 <elliott> oerjan: YOU RUINED THE CHRONOLOGY!!!!!
12:48:28 <elliott> bad oerjan
12:48:50 <oerjan> well it wasn't until i checked the pings that i decided to browse all the log, you see
12:48:56 <oerjan> *i had
12:53:12 * oerjan learns what the english word "recorder" means. he once used to play one.
12:53:29 <oerjan> really confusing name
12:55:41 -!- MSleep has changed nick to MDude.
12:55:44 <MDude> That it is.
12:55:52 <fizzie> I believe it's non-confusing in most other languages than English; it's "nokkahuilu" lit. "beak flute" in Finnish.
12:57:47 <hagb4rd> theres all these pretty (bot)commands to use round here and i'd like to know about them.. is there any chance that they were documented (or just listed) anywhere?
12:58:06 <fizzie> They may have help-like commands.
12:58:06 <oerjan> not a shrivel of hope
12:58:07 <fizzie> ^help
12:58:07 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
12:58:15 <fizzie> !help
12:58:16 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
12:58:21 <fizzie> `ls bin
12:58:24 <HackEgo> ​? \ @ \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ welcome \ wl \ word \ wtf
12:58:32 <fizzie> (HackEgo is a bit different.)
12:58:39 <oerjan> @list
12:58:40 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
12:59:11 <hagb4rd> so ` invokes a shell command?
12:59:26 <fizzie> lambdabot might be the best-documented one; by a *really curious* coincidence, it's not a native of the channel.
12:59:53 <fizzie> Well, `run invokes a shell command; ` just runs whatever you give it with the arguments, which might make a difference when it comes to non-simple commands.
13:00:08 <fizzie> `echo *
13:00:11 <HackEgo> ​*
13:00:12 <fizzie> `run echo *
13:00:15 <HackEgo> bin canary karma lib paste quotes share wisdom
13:00:18 <oerjan> ^show
13:00:18 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr ha
13:00:26 <oerjan> !help languages
13:00:27 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
13:00:34 <oerjan> !userinterps
13:00:35 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd glogbot_ignore google graph hello helloworld id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh sw
13:00:45 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:01:13 <hagb4rd> nice. thank you!
13:01:37 <oerjan> the last list is cut off btw
13:01:47 <elliott> hagb4rd: and
13:01:48 <elliott> @help quote
13:01:49 <lambdabot> quote <nick>
13:01:49 <lambdabot> remember <nick> <quote>
13:01:49 <lambdabot> Quote somebody, a random person, or save a memorable quote
13:01:53 <elliott> gives help for a single lambdabot command
13:02:03 <hagb4rd> k
13:02:33 <hagb4rd> can i use them silently? whispering or in query?
13:02:36 <oerjan> `run ls bin | tail
13:02:39 <HackEgo> toutf8 \ translate \ translatefromto \ translateto \ units \ url \ welcome \ wl \ word \ wtf
13:02:48 <oerjan> in a query, yes
13:02:54 <oerjan> all of them, afair
13:03:04 <hagb4rd> cool
13:03:19 <fizzie> Though lambdabot has some exceptions; ":t" does not work in query, but ?type or @type or @ty or such do.
13:03:27 <oerjan> lambdabot even gives longer responses when you do that
13:03:30 <oerjan> neither does :k
13:03:42 <fizzie> There's something about the colons, obvsly.
13:03:57 <fizzie> Colons are not a private matter.
13:03:58 <oerjan> presumably they're being checked at the wrong place
13:04:23 <elliott> (Whispering?)
13:04:51 <Phantom_Hoover> @quote
13:04:52 <lambdabot> shepheb says: unsafePerformIO :: IO a -> Madness
13:05:16 <fizzie> You could "PRIVATELY whisper -> ALL" in that webchat-we-pasted-the-Helsinki-VRML-into-back-then. (That's not its official name.)
13:05:33 <elliott> fizzie: That SHOULD be its official name.
13:07:00 <fizzie> Oh noes, it's been disapparated.
13:07:14 <fizzie> Not that typing in HTML has worked in a long time.
13:07:49 * oerjan wonders if someone has done carmina burana on the recorder
13:08:58 <oerjan> hm or maybe it actually contains them already
13:09:53 <Phantom_Hoover> I'm sure somebody's done Carmina Burana on the recorder, although they'd probably exceed the age at which one plays the recorder during the performance.
13:09:54 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
13:10:50 <elliott> oerjan: you mean the lounge album by Nikita Ayzikovsky?
13:11:29 <fizzie> ^show wc
13:11:29 <fungot> []
13:11:33 <fizzie> That's not a very working wc.
13:11:36 <elliott> (never completed; the artist went insane after completing only one song)
13:12:37 <oerjan> elliott: i'm just noticing that orff was involved in reviving recorders, is all
13:12:43 <oerjan> (for schools)
13:12:44 <elliott> oerjan: whoosh
13:13:12 <oerjan> elliott: definitely. erm, isn't that lament
13:13:33 <elliott> oerjan: yes, lament aka the person who made the amazing lounge version of O Fortuna :P
13:13:58 <elliott> which I, to this day, still hear upon seeing the poem
13:14:05 <elliott> which admittedly doesn't occur often
13:14:33 <oerjan> i may not be acquainted with that.
13:14:54 <Phantom_Hoover> elliott, link link link.
13:15:16 <elliott> Phantom_Hoover: I have an awful hunch that it might be lost to the sands of time; it was hosted on filebin.
13:15:21 <elliott> Of course someone here probably has a copy lying around somewhere.
13:15:39 <Phantom_Hoover> Maybe we can ask lament.
13:15:44 <elliott> But I'll loggrep to try and find it.
13:15:45 <elliott> Logrep.
13:15:45 <Phantom_Hoover> We will need to use SUBTERFUGE.
13:16:21 -!- Vonlebio has joined.
13:16:34 <olsner> hmm, the topic is more boring than ever before
13:16:53 <elliott> Vonlebio: Your hostname is showing.
13:16:58 <elliott> olsner: oh, coppro ruined it
13:16:59 <elliott> what a vile man
13:17:03 -!- elliott has set topic: hi | http://codu.org/logs/_esoteric/.
13:17:06 <elliott> restored
13:17:09 <olsner> VILE despicable coppro
13:17:13 <Vonlebio> As indeed is my real name.
13:17:20 <Vonlebio> Not my real real name, of course.
13:17:41 <elliott> Vonlebio: Right, that's what I meant.
13:17:45 <elliott> 2009-03-05.txt:05:26:06: <GregorR> I want to hear a lounge version of O Fortuna.
13:17:49 <elliott> Ah yes, Gregor is who we have to thank.
13:18:01 <elliott> (It didn't meet his expectations.)
13:18:25 <olsner> and you found a lounge version of it?
13:19:29 <elliott> olsner: <elliott> oerjan: yes, lament aka the person who made the amazing lounge version of O Fortuna :P
13:19:46 <elliott> 10:24:20: <fizzie> I think I kept one of those files at http://www.cis.hut.fi/htkallas/mp3.mp3
13:19:48 <elliott> fizzie: Good filename.
13:20:17 <fizzie> elliott: It's sort of reminiscent of extra-www.
13:20:31 <olsner> oh, an mp3 of someone speaking finnish
13:20:33 <Vonlebio> elliott, anyway it was a joke.
13:20:46 <elliott> Vonlebio: And I can't find an alive copy of ofortuna.ogg. :(
13:20:51 <elliott> Erm, *mp3
13:21:01 <Vonlebio> OK I will use SLIGHTLY MORE SUBTERFUGE
13:21:03 -!- Vonlebio has quit (Client Quit).
13:21:07 <fizzie> olsner: It seems to be a speech synthesis sample.
13:21:18 <fizzie> olsner: And the sentence is nonsensical.
13:21:26 -!- Vonlebio has joined.
13:21:37 <elliott> Vonlebio: You realise lament is offline.
13:22:01 <Vonlebio> @tell lament Can I have a copy of your lounge version of O Fortuna?
13:22:01 <lambdabot> Consider it noted.
13:22:23 <Vonlebio> Mission complete.
13:22:24 -!- Vonlebio has quit (Client Quit).
13:22:25 <fizzie> olsner: It says "Did the javelin-throwers, like the memos, cause the state of depression lose freshness" or some-such. It's a bit hard to translate due to the lack of sense.
13:23:03 <elliott> fizzie: I think they did, yes.
13:23:58 <elliott> fizzie: What do you know about Matt Henderson.
13:24:44 <Phantom_Hoover> Ah, the well-known black brotherhood of speech recognition research.
13:24:57 <elliott> Yes.
13:25:00 <fizzie> "Nahistivatko keihäänheittäjät muistioiden tavoin lamatilaa?", in case someone else wants to try a stab of translation.
13:25:18 <elliott> "Nahistivatko javelin thrower memos, like the depression space?"
13:25:19 <fizzie> And "nothing".
13:25:29 <elliott> fizzie: Ah, you are clearly in DEEP CAHOOTS with the man.
13:25:51 <elliott> "Before producing a transcription of what you said, speech recognition software often represents its results as a ‘confusion network’."
13:26:04 <elliott> The confusion network represents the algorithm's confusion as to why it's doing something so pointless as speech recognition.
13:26:16 <fizzie> "Nahistua" is sort of "to lose freshness"; "nahistaa" is therefore "cause to lose freshness"; "nahistivat" is the past-tense third-person plural from "they caused to lose freshness"; and the -ko suffix makes it a question, "did they?".
13:27:30 <fizzie> The confusion network is a special case of a lattice.
13:27:46 <fizzie> It's also sometimes called a sausage.
13:27:49 <elliott> fizzie: Yes; the special case is that most lattices don't look down on their tasks.
13:28:00 <fizzie> "A Confusion Network (CN), also known as a sausage" -- http://www.statmt.org/moses/?n=Moses.ConfusionNetworks
13:28:10 <elliott> And the thing with sausage is that you don't want to know how it's made. And in this case it's a really gross sausage, so you don't want to eat it either.
13:28:20 <elliott> What I am trying to say is, speech recognition is useless.
13:28:29 <fizzie> Yes, you've said that quite many times.
13:28:36 <elliott> Yes. Just not quite enough.
13:28:44 <oerjan> <monqy> 42 is such a boring fake age <-- in about half a year i shall be entirely fake. yay!
13:28:51 <fizzie> Maybe I should "ragepat" or something.
13:29:01 <elliott> oerjan: Man ur old.
13:29:16 <elliott> fizzie: Yes, please show signs of adequate irritation.
13:29:21 <elliott> It might even make me stop (it won't make me stop).
13:29:42 <fizzie> I would, but on the gripping hand I really don't want to give you the satisfaction.
13:30:01 <olsner> oerjan: are you really that old!?
13:30:01 <elliott> On the... gripping hand?
13:30:10 <Phantom_Hoover> oerjan, how is it possible to be that old?
13:30:13 <oerjan> really really
13:30:17 <Phantom_Hoover> I thought humans died off at like 30.
13:30:18 <elliott> Phantom_Hoover: It isn't, that's why he's going to become fake.
13:30:26 <elliott> He'll grow to an impossible age, and thus stop existing.
13:30:30 <fizzie> It's a Niven novel.
13:30:38 <elliott> fizzie: Anyway, I can assure you that the only thing that would give me satisfaction is complete annihilation of the field of speech recognition.
13:30:41 <olsner> so oerjan has been dead for 10 years, and we're his afterlife
13:30:42 <fizzie> "A crucial plot element of the book is the idiom "on the gripping hand", a three-armed variation of the idiom "on the other hand" similar in meaning to "on the third hand", but with the added sense that the third-mentioned consideration is the most important one. The saying is native to the alien Moties, who have three arms, one of which is stronger but possesses less finesse."
13:31:11 <fizzie> I sort of skipped the second hand.
13:31:11 <oerjan> <olsner> so oerjan has been dead for 10 years, and we're his afterlife <-- depressingly enough, this thought _has_ occurred to me before.
13:31:36 <fizzie> oerjan: #esoteric sure drives the "maybe you should've behaved a little better" point home, eh?
13:31:43 <elliott> oerjan: We are the absolute shittiest afterlife.
13:31:53 <oerjan> fizzie: you'd think.
13:31:54 <elliott> fizzie: hi4 (1 hi detracted for speech recognition)
13:34:46 <oerjan> elliott: well, it _would_ be even shittier without you.
13:35:05 <elliott> oerjan: I think you missed a negation or something.
13:35:18 <oerjan> i think not.
13:37:23 <elliott> oerjan: Would you be more convinced if I dissed speech recognition some more?
13:37:39 <fizzie> Ng.
13:37:56 <elliott> fizzie: Your speech recognition software is malfunctioning. That isn't a word.
13:38:03 <elliott> You should probably buy a keyboard.
13:38:10 <fizzie> Ngggg.
13:38:27 <olsner> hnng
13:38:31 <elliott> fizzie: I think your speech synthesiser is malfunctioning too? Can you hear us.
13:38:32 <oerjan> <Deathly> how do you scare a snowflake? <-- heavy breathing.
13:38:42 <fizzie> Grng.
13:38:53 <elliott> fizzie: This is why computers should never process or create speech in any form whatsoever ever.
13:39:53 <fizzie> I think I'll go cook some laundry or wash some food or something.
13:40:23 <oerjan> no, we should outlaw speech altogether. it keeps us from realizing the true reality that we are already in the afterlife. plato's cave style.
13:41:29 <elliott> fizzie: FINALLY I HAVE BEGUN TO CRACK YOUR IMPRESSIVE OUTER SHELL OF CALMNESS
13:45:10 -!- itidus20 has quit (Ping timeout: 252 seconds).
13:54:03 -!- Phantom__Hoover has joined.
13:55:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:58:26 <oerjan> i see dmm is still working on getting mentioned on every tvtropes page
14:12:03 <oerjan> ...darn i got sucked in again didn't i.
14:17:45 <olsner> dmm?
14:18:24 <elliott> david morgan mar
14:18:29 <elliott> (yeah yeah morgan-mar)
14:18:36 <elliott> irregular webcomic guy, esolanger
14:18:37 <olsner> fizzie: cooking laundry and washing food are both good things to do
14:18:55 <elliott> olsner: ha, i missed that until just now
14:25:21 <fizzie> Yes, it was totally accidental, I was just so frazzled up there. Now I'm calm as a zucchini again.
14:26:40 <elliott> fizzie: Your tone of voice makes it super-hard to believe any claims of frazzlation.
14:26:51 <elliott> OOPS I ACCIDENTALLY CONJUGATED THE BEST WORD
14:27:58 <olsner> lost in frazzlation
14:31:19 -!- derdon has quit (Remote host closed the connection).
14:40:03 <Phantom__Hoover> http://esolangs.org/wiki/Surface_Area_And_Bulk_Density_Relationship
14:40:05 <Phantom__Hoover> Best spam?
14:42:12 -!- oerjan has quit (Quit: leaving).
14:53:14 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
14:53:41 -!- MDude has quit (Ping timeout: 248 seconds).
14:54:31 -!- MDude has joined.
14:56:12 -!- Sgeo has quit (Ping timeout: 240 seconds).
14:57:16 -!- Sgeo has joined.
15:00:39 <elliott> Phantom__Hoover: Tags Hozzszlsok: 1 Regisztrlt: 18.05.11: surface area, surface area and volume relationships and bulk density, area density and bulk density relationships.. g Easy! Everything's Optim ization of Landin g page Learn the making: the buyer to convert to your browser search behavior of your landing page, create a forecast.. May 3, 2007.. Determine the density of the envelope density, bulk density, volume and density.. Surface area and
15:00:39 <elliott> porosity as a function of particle size, or area.. Between porosity and depth is a commonly used relationship is given by Athy.
15:00:57 <elliott> Phantom__Hoover: I like how the only external link it could think of is Wikipedia.
15:01:17 <elliott> http://esolangs.org/wiki/User:Mtve huh
15:03:04 -!- Vorpal has joined.
15:05:32 <Phantom__Hoover> http://www.reddit.com/r/math/comments/n6ws1/looking_for_good_online_resources_for_real/
15:05:46 <Phantom__Hoover> Bobrzaro-Weirstrass Theorem.
15:05:59 -!- azaq23 has joined.
15:06:19 <elliott> Phantom__Hoover: The best theorem?
15:07:14 <elliott> Are there still any "controversial" ideas in mathematics? (self.math)
15:07:26 <elliott> Phantom__Hoover: /r/math really needs to split into actualmath and metamath.
15:07:44 <Phantom__Hoover> Or math and mathenthusiasm
15:07:55 <Phantom__Hoover> Using the SMBC definition.
15:08:06 <elliott> "As soon as Gödel showed that there was "TRUE", "FALSE", and "CANNOT BE PROVED" the law of the excluded middle crashed and burned.
15:08:06 <elliott> Most of the world has not yet caught up with that."
15:08:21 <elliott> People like this ruin constructivism for the rest of us?
15:08:50 <Phantom__Hoover> No they don't, constructivism is already inhabited only by CONSTRUCTIVIST SCUM.
15:09:21 <elliott> Phantom__Hoover: DISPROOF BY CONTRADICTION: Russell O'Connor???
15:09:37 <elliott> CELEBRITY CONSTRUCTIVISTS -- wait dammit.
15:09:39 <elliott> Why do we have +c here.
15:09:40 <elliott> fizzie.
15:09:44 <elliott> fizzie -c please.
15:09:45 <elliott> I demand -c.
15:09:50 <elliott> Phantom__Hoover: Demand -c with me.
15:10:01 <Phantom__Hoover> Who's Russell O'Connor again?
15:10:15 <elliott> A sentient reindeer.
15:11:08 <Phantom__Hoover> WTF is it with people with Irish names and logic?
15:11:24 <Phantom__Hoover> By which I mean type theory.
15:11:27 <elliott> `addquote <Phantom__Hoover> WTF is it with people with Irish names and logic?
15:11:30 <HackEgo> 755) <Phantom__Hoover> WTF is it with people with Irish names and logic?
15:11:33 <elliott> Phantom__Hoover: Type theory is a branch of logic.
15:11:49 <Phantom__Hoover> I don't see the contradiction?
15:12:04 <elliott> Well, it seemed like you were correcting yourself.
15:31:54 <Phantom__Hoover> http://www.reddit.com/r/math/comments/n4wba/good_video_about_chaos_theory_and_the_lorenz/c36bwra
15:31:57 <Phantom__Hoover> Speak of the devil.
15:33:06 <elliott> Phantom__Hoover: Ian Stewart? I heard he LIES TO CHILDREN with UNSCIENTIFIC NOVEL PLOT DETAILS.
15:34:19 <Phantom__Hoover> :O
15:35:21 * Phantom__Hoover notes that [[Abstract simplicial complex]] opens with a picture of two things essentially captioned as "things that are not abstract simplicial complexes".
15:35:36 <Phantom__Hoover> Oh, wait, it's one thing.
15:35:42 <elliott> X-D
15:36:12 <Phantom__Hoover> Oh, wait, they're abstract simplicial complexes, but they're not actual simplicial complexes.
15:36:21 <Phantom__Hoover> http://upload.wikimedia.org/wikipedia/commons/0/09/Simplicial_complex_nonexample.png
15:36:23 <Phantom__Hoover> That filename.
15:37:14 <elliott> cow_nonexample.jpg: contains picture of sheep.
15:37:15 <Phantom__Hoover> GOOGLE YOU RUINED CHROME AS WELL????
15:37:23 <elliott> What?
15:37:45 <Phantom__Hoover> They moved the recently closed bar into a menu.
15:38:00 <elliott> Oh, right. That was aaages ago.
15:38:07 * elliott would prefer it the old way too.
15:54:41 -!- kmc has joined.
16:06:32 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:06:51 -!- Phantom__Hoover has joined.
16:06:53 -!- Phantom__Hoover has quit (Changing host).
16:06:53 -!- Phantom__Hoover has joined.
16:32:56 -!- Gregor has set topic: First to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/.
16:37:46 <elliott> :(
16:38:34 <olsner> oerjan did, that's how he died and we became his afterlife
16:48:41 -!- Deathly has joined.
16:58:32 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:59:04 <elliott> Deathly: Wrong way.
17:01:27 -!- elliott has quit (Remote host closed the connection).
17:01:52 -!- elliott has joined.
17:01:53 -!- elliott has quit (Changing host).
17:01:54 -!- elliott has joined.
17:03:23 <Deathly> are you serious?
17:03:29 <elliott> Never.
17:14:17 -!- Phantom__Hoover has joined.
17:15:25 <Phantom__Hoover> Today's xkcd is amazingly dumb.
17:16:25 <Slereah> Yeah
17:16:26 <elliott> Phantom__Hoover: Is he seriously claiming that Christmas songs = Christmas experience?
17:16:27 <Vorpal> elliott, remember we discussed why people would want Steam? I realised a reason just now: it manages updates for you. Since windows has no package manager it means Steam provides that kind of
17:16:30 <Slereah> There's a lot of that
17:16:53 <elliott> Vorpal: Ugh.
17:16:58 <Vorpal> elliott, hm?
17:17:03 <elliott> Vorpal: At that.
17:17:07 <Vorpal> elliott, well, blame microsoft for this
17:17:13 <Phantom__Hoover> elliott, no, he's claiming that Christmas songs are part of an insidious baby boomer conspiracy.
17:23:50 <Gregor> Uhhh, no.
17:23:55 <Gregor> He is claiming neither of those.
17:24:21 <Gregor> He's just pointing out that these songs which people consider so traditional and old classics are in fact just what baby boomers remember as kids.
17:24:33 <Phantom__Hoover> Perhaps the graph alone does.
17:24:39 <Phantom__Hoover> The caption makes the subtext clear.
17:24:48 <Phantom__Hoover> And the alt text clearer still.
17:25:12 <Gregor> Oh, I didn't bother to read the alt text because the comic was shit as usual :P
17:28:53 <Phantom__Hoover> I think 'comic' is too generous.
17:29:16 <Deathly> Santa Claus as we know him with his red suit and white beard didn't exist until 1931. Magazine ads for Coca-Cola featured St. Nick as a kind, jolly man in a red suit. Because magazines were so widely viewed, and because this image of Santa appeared for more than three decades, the image of Santa most people have today is largely based on this advertising.
17:29:31 <Deathly> In fact, whenever I see santa, I have a craving for a pepsi.
17:29:34 <Phantom__Hoover> That's a widespread and false myth, IIRC.
17:29:43 <Deathly> http://www.thecoca-colacompany.com/heritage/cokelore_santa.html
17:29:55 <Deathly> coca=cola disagrees
17:30:06 <Phantom__Hoover> Of course they would!
17:30:30 <Phantom__Hoover> "We *invented* Santa" is hardly something you want to dispel.
17:31:13 <Deathly> They own Santa.
17:31:19 <Deathly> He's a coke trademark.
17:31:25 <Phantom__Hoover> http://www.snopes.com/holidays/christmas/santa/cocacola.asp ∎
17:33:42 <Deathly> Well, i still like propagating the myth
17:33:52 <Deathly> because I'm into propaganda for the coke machine
17:34:10 <Deathly> diabolical as i am
17:36:34 <elliott> Deathly: shut up
17:38:50 <Deathly> elliott, are you gay?
17:40:24 -!- Phantom___Hoover has joined.
17:41:55 -!- Phantom____Hoove has joined.
17:41:57 -!- Phantom____Hoove has changed nick to Phantom_Hoover.
17:42:08 -!- Phantom_Hoover has quit (Changing host).
17:42:08 -!- Phantom_Hoover has joined.
17:42:53 -!- hagb4rd has joined.
17:43:32 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
17:44:32 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
17:49:44 <elliott> `addquote <Phantom_Hoover> The only way you could do better would be to implement Monopoly with chocolate.
17:49:47 <HackEgo> 756) <Phantom_Hoover> The only way you could do better would be to implement Monopoly with chocolate.
17:50:14 <Phantom_Hoover> And by that I mean build an analogue computer out of chocolate which plays Monopoly.
17:50:44 <elliott> It'd be a bit one-time.
17:53:35 -!- monqy has joined.
17:54:38 <Phantom_Hoover> Um no?
17:54:57 <Phantom_Hoover> Just because you can't design a reliable Monopoly machine out of chocolate doesn't mean nobody else can.
17:58:02 <elliott> Phantom_Hoover: Well, I was assuming it would be based on melting.
17:58:09 <elliott> But
17:58:11 <elliott> `addquote <Phantom_Hoover> Just because you can't design a reliable Monopoly machine out of chocolate doesn't mean nobody else can.
17:58:13 <HackEgo> 757) <Phantom_Hoover> Just because you can't design a reliable Monopoly machine out of chocolate doesn't mean nobody else can.
18:16:32 <Deathly> keeping chocolate cold would be paramount as it's tinsil strength would be less maliable and better able to withstand the moving parts required for an analog computing design
18:16:37 <monqy> hi
18:16:56 <Deathly> well hello monqy
18:16:56 <Deathly> <3
18:17:05 <monqy> ok
18:17:25 <Deathly> how old are you monqy
18:17:39 <monqy> young (thumbs up)
18:17:52 <monqy> sometimes my age is a secret but other times it is not
18:17:55 <monqy> what time is now????
18:20:35 <Deathly> right now or when you asked the question?
18:20:45 <Deathly> 10:20 AM PST is now.
18:20:51 <monqy> so it is
18:29:30 -!- Phantom__Hoover has joined.
18:32:12 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:41:37 -!- oklopol has quit (Ping timeout: 252 seconds).
19:09:18 -!- derrik has joined.
19:12:31 -!- Phantom___Hoover has joined.
19:14:32 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
19:18:47 <Gregor> What semi-sophisticated thing should I get working under gelfload?
19:24:18 -!- ais523 has joined.
19:28:31 <ais523> hmm, fun bugfix I just saw (in DCSS): s/perversion/support/
19:28:54 <elliott> wat
19:28:57 <monqy> waht
19:29:06 <elliott> Gregor: Chrome :)
19:29:12 <elliott> Gregor: KDE
19:29:24 <elliott> Um, um. What else is there.
19:29:30 <Gregor> elliott: X11 doesn't work, AFAICT it's a sockets issue, was hoping for something in between :P
19:30:32 -!- Klisz has joined.
19:30:40 <Phantom___Hoover> Gregor, nethack.
19:31:20 <elliott> PH++
19:32:11 <Phantom___Hoover> @karma PH
19:32:12 <lambdabot> PH has a karma of 1
19:38:09 <ais523> "Raw Goat Milk Yahoo Chat Room"
19:39:05 <elliott> :D
19:39:08 <elliott> the best yahoo chat room
19:39:10 <ais523> surely it's to a spambot's benefit to spam on search terms that people might potentially actually use?
19:39:27 <ais523> most of the spam names are things that look vaguely like viable, if specific, searches
19:40:09 <ais523> "July 2, 2006 2:54 (Reminder) Hey Raw goatmilk members! Recently, we asked our group and 77% of active members voted in dating hi angeleyes of allowing . "
19:40:32 <ais523> there's also a link to "horse lameness chat" on the same page
19:41:41 <elliott> :D
19:41:51 <elliott> well that's what we're all about
19:41:56 <elliott> raw goat milk, horse lameness
19:42:48 -!- kmc has quit (Quit: Leaving).
19:45:41 -!- kmc has joined.
19:58:08 -!- derdon has joined.
20:04:06 -!- kmc has quit (Quit: Leaving).
20:04:31 <tswett> Gregor: what is gelfload?
20:04:36 <tswett> Is it Gregor's ELF loader?
20:06:02 -!- zzo38 has joined.
20:06:34 <elliott> tswett: No, it's a gel floader.
20:06:39 <elliott> It floads gels.
20:09:05 <Vorpal> elliott, a gel floader!? Wow, I need to download that right now.
20:09:17 <elliott> So do we all.
20:10:03 <Vorpal> elliott, floading of gel is of course a very serious activity, ideally one should use a hard hat when when doing so.
20:10:12 <Vorpal> s/when when/when/
20:10:20 <elliott> Vorpal: it's just gel, you wuss.
20:11:02 <Vorpal> elliott, but remember what Gel did in portal 2!
20:11:05 <Vorpal> gel*
20:11:22 <Vorpal> elliott, of course you want a hard hat when floading it
20:12:35 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
20:13:06 <fizzie> "Fload: Suburban or urban male age 17-29 who frequents bars in the company of fellow floads in hopes of sexual gratification. Often identifiable by white baseball cap, clothing emblazoned with a designer's name, excessive hair product, and a misogynistic demeanor. Floads travel in herds of 3-20." -- Urban Dictionary. Well, I certainly didn't know that.
20:13:34 <elliott> fizzie: As I'm sure you can imagine, preparing gel for the use of floads is a very intensive process indeed.
20:14:43 -!- elliott has quit (Remote host closed the connection).
20:14:44 -!- oerjan has joined.
20:14:58 <fizzie> I *was* going to say that a "floader" sounds like one of the fast-loaders you used to see with software distributed on C64 floppies. Was googling if there's one called "fload". (Unsurprisingly, there's at least one.)
20:15:24 -!- elliott has joined.
20:15:34 <oerjan> i assume that the winner does not have to be the one combusting. otherwise this contest would fit badly into my world conquest plans.
20:15:54 <ais523> zzo38: did you write this Slashdot comment: http://news.slashdot.org/comments.pl?sid=2567856&cid=38326760
20:16:01 <ais523> it oddly reminds me of you, although I think it's actually someone else
20:18:55 <oerjan> `log <zzo38>.*there's
20:19:25 <HackEgo> 2009-12-06.txt:13:09:58: <zzo38> O, and there's another screen-shot: http://zzo38computer.cjb.net/prog/PHIRC/screenshot0.png
20:19:33 -!- MDude has quit (Ping timeout: 248 seconds).
20:19:46 <oerjan> hm my theory fails.
20:21:06 <oerjan> however, i somehow doubt zzo38 uses Mac Safari.
20:21:41 <oerjan> _or_ would use a "Full story: " disclaimer.
20:21:53 <ais523> indeed
20:22:08 <ais523> the main clue that it isn't zzo38, apart from a few minor wording choices, is the implied opinions about browsers
20:22:29 <fizzie> oerjan: According to my logs, you can prove your theory using the word "marshall" instead.
20:22:38 <fizzie> FSVO "prove".
20:22:42 <oerjan> heh :P
20:22:52 <ais523> fizzie: are you assuming that all Slashdot comments are copied to #esoteric?
20:23:27 <fizzie> ais523: I'm just assuming all Slashdot comments contain only words the comment-writer has previously said on #esoteric; that's a much weaker assumption.
20:23:33 <oerjan> fizzie: i do not believe that's a sufficiently common word in english for the logs to prove anything about zzo38's vocabulary wrt it
20:23:41 <ais523> fizzie: hmm
20:24:00 <ais523> `log <ais523> [^[`].*marshall
20:24:10 <HackEgo> 2011-11-28.txt:19:25:49: <ais523> so the answer is, they have to return a marshallable type, or an IO of a marshallable type
20:24:19 <fizzie> See, there.
20:24:42 <ais523> hmm, I wonder what words there are that I use, but rarely in #esoteric
20:24:43 <fizzie> (Full story: I was being frivolous.)
20:24:47 <ais523> the names of most Pokémon would probably work
20:25:05 <Sgeo> It's really only the ... style that reminds of zzo38
20:25:06 <ais523> `log <ais523> [^[`].*wyvern
20:25:14 <HackEgo> No output.
20:25:14 <olsner> hmm, I read marshmallowable type
20:25:31 <Sgeo> I'm in another channel with people who might be interested in this sort of thing
20:25:54 -!- Patashu has joined.
20:27:00 -!- kmc has joined.
20:31:16 <elliott> Gregor: http://www.h-online.com/newsticker/news/item/Processor-Whispers-About-Haskell-and-Haswell-1389507.html
20:35:07 <oerjan> TOO LITTLE HASKELL
20:35:53 <copumpkin> today is my three-year haskell anniversary!
20:36:21 * oerjan wonders what copumpkin's nick was before then
20:36:27 <copumpkin> pumpkin :P
20:36:33 <oerjan> fancy
20:36:46 <elliott> copumpkin: what, i may have actually started learning haskell before you
20:37:42 <copumpkin> well, I probably first appeared on the IRC channel a month or two before that, cause I was helping my girlfriend at the time with her homework, but I wasn't actually doing anything with it myself
20:37:49 <oerjan> copumpkin has just been deluding us into thinking he's a haskell old fart
20:37:53 <copumpkin> lol
20:37:58 <copumpkin> yeah, I'm a poser
20:38:02 <copumpkin> I was a hardcore rubyist before that
20:38:08 <copumpkin> (not even kidding)
20:38:08 <elliott> ruby "lol ruby" ruby
20:38:14 <elliott> the official elliott ruby opinion
20:38:29 <monqy> i forget when my haskell anievrsarey is....i never kept track
20:38:35 <monqy> I don't even know what year I started learning it
20:38:54 <elliott> i started learning haskell in 1986
20:39:02 <copumpkin> elliott: wow!
20:39:10 <elliott> copumpkin: ...but it took until 1990 for the first thunk to evaluate to WHNF :)
20:39:22 <copumpkin> computers were a lot slower back then
20:39:23 <oerjan> sadly, he then died, and had to be reincarnated to learn it again
20:39:36 <copumpkin> I didn't even have a computer back then
20:39:45 <elliott> I didn't even exist back then!
20:40:12 <copumpkin> I remember playing hugo's house of horros on my dad's work laptop in 93
20:40:24 <copumpkin> I think it had 20mb of hard drive space and a grayscale screen
20:40:25 <elliott> What, I didn't just imagine Hugo?
20:40:37 <elliott> Oh, hmm.
20:40:41 <Sgeo> I remember playing some Peter Pan game at some point
20:40:47 <elliott> That is a completely different Hugo to my obscure Hugo childhood computer game memory.
20:40:49 <Sgeo> "You made a mouse, with your mouse"
20:40:57 * elliott shame
20:41:06 <elliott> http://upload.wikimedia.org/wikipedia/en/9/93/Hugo%27s_House_of_Horrors_Screenshot.png
20:41:09 <elliott> Advanced MS Paint graphics.
20:41:16 <elliott> Those leaves!
20:41:26 <monqy> i played
20:41:27 <monqy> uh
20:41:29 <monqy> magic schoolbus
20:41:30 <monqy> lots of it
20:41:40 <monqy> before i was born too
20:41:45 <monqy> when was this
20:42:04 <fizzie> There was a play-by-your-phone TV game around here about a troll called Hugo. There was a two-seconds-or-so lag from the telephone keypresses to whatever happened on viewers' screens. Watching people fail playing it was quite horreeble.
20:42:05 <copumpkin> elliott: it was a good game!
20:42:36 <fizzie> "The Hugo "live one-player multi platform interactive game show" has aired in more than 40 countries[1] and spawned numerous video games and many other merchandise." I see they've been spreading it around.
20:42:47 <Deewiant> fizzie: Oh, /that/ explains why people sucked at it so much.
20:43:42 <fizzie> Deewiant: I can't give hard proof or even my reasonings from which I deduced the delay any more, I just have this impression that it had one. Maybe you could sometimes hear the DTMF tones? Can't recall.
20:43:51 <elliott> fizzie: That appears to be the one I remember.
20:43:52 <fizzie> I do remember someone at least once trying to play it with a pulse-dial phone.
20:43:56 <elliott> Except no game show.
20:44:07 <monqy> are there any good games I should have played in the psat
20:44:07 <fizzie> Yeah, they made a PC version of it too.
20:44:55 <elliott> Hugo: Wintergames
20:44:56 <elliott> Hugo: Wintergames is a series of three video games produced between 1997 and 1999 by ITE Media for the PC. In each of them, Hugo must rescue Santa Claus from Scylla, foiling her plots to ruin Christmas.
20:44:57 <elliott> That was it.
20:45:02 <elliott> It was... strange.
20:45:31 <elliott> http://www.youtube.com/watch?v=nmwmfC_iuJ8
20:45:40 <fizzie> "Herää pahvi, viimeistä viedään!" "Onko kotka kotona?" "Pitikö olla hoppu? Nyt se on leikin loppu."
20:45:45 <fizzie> The quotes were sort-of iconic.
20:45:52 <fizzie> I suppose they were non-Finnish in other countries.
20:47:43 * oerjan recalls they had a hugo game for PS2 at a restaurant he used to frequent. sometimes it got set to the wrong language.
20:48:38 <oerjan> mostly danish though, since that was the first selection in the startup menu
20:49:13 <oerjan> but at least once it was finnish.
20:53:35 <Gregor> elliott: (Re CPU) So?
20:53:44 <oerjan> <elliott> Phantom_Hoover: Well, I was assuming it would be based on melting. <-- i was assuming it would be based on eating the pieces.
20:53:50 <elliott> Gregor: It's like fizzie and speech recognition.
20:53:56 <elliott> I have to annoy you about transactional memory.
20:54:11 <Gregor> elliott: /H/TM is fine. Even good. /S/TM is terrible.
20:54:25 <oerjan> and the worst thing is that he will redo it until you confirm getting the message
20:55:14 <elliott> Gregor: Only terrible with unsustainable use of mutation >:)
20:56:32 <pikhq> Gregor: STM is only terrible in languages that make it so you can mutate the shared state outside of a transaction.
20:56:36 <pikhq> Which is most of them.
20:57:00 <pikhq> Also access...
21:00:46 <elliott> Today will forever stand in history as the day I accidentally made Phantom___Hoover upgrade to GNOME 3.
21:00:56 -!- elliott has quit (Quit: So I'm sleeping before it can get any worse.).
21:01:30 <oerjan> only Phantom___Hoover though, Phantom__Hoover is still on GNOME 2, while Phantom_Hoover somehow manages to use GNOME 1.
21:02:17 <fizzie> And PhantomHoover's using some sort of never-released "GNOME 0" alpha?
21:02:31 <oerjan> we may presume.
21:09:41 <zzo38> I have a DVD recorder, sometimes finalizing fails, but if I open the tray and then close it again, after I tried to finalize and it says it failed, then it will be finalized.
21:09:46 <Phantom___Hoover> Fortunately, there are massive package conflicts.
21:13:48 <oerjan> :t 12e10
21:13:49 <lambdabot> forall t. (Fractional t) => t
21:25:17 <Deathly> gnome is excellent
21:25:24 <monqy> hi
21:25:30 <Deathly> i love eating G %'s in nethack
21:25:32 <Deathly> yum
21:25:46 <Deathly> the mines are full of them
21:25:48 <Sgeo> Phantom___Hoover, how did elliott make you upgrade to GNOME 3?
21:26:35 <Phantom___Hoover> I was upgrading to wheezy and he didn't realise until it was too late.
21:30:28 <Sgeo> Phantom___Hoover, new ███-████ hoodies
21:32:10 <monqy> wow i love ███-████
21:32:14 <ais523> wow, edit to the wiki that a) creates a new page but is not spam, b) describes a language similar to LOLCODE but worse
21:32:29 <monqy> this i must see
21:32:38 <ais523> http://esolangs.org/wiki/Immi
21:32:41 <monqy> only possibly a joke?
21:32:52 <ais523> it's just thematic with a really bad theme
21:33:32 <monqy> oh my, designed to teach people programming, whatever that means
21:33:54 <ais523> there's no infinite loop constructs, it's primitive recursive as far as I can tell
21:35:03 <oerjan> ais523: did you notice taneb's screenshot showing that the recent changes are now so full of spam that his school computers classify it as a gambling site?
21:35:34 <ais523> heh, that's what it was? I noticed him link to an image, but didn't check what the image was
21:35:44 <oerjan> that's what it seemed like to me
21:40:38 <ais523> hmm, I was thinking about implementing Elliottcraft, and it seems pretty hard to do efficiently
21:40:51 <ais523> the problem is that it has an infinite speed of sound
21:41:19 <ais523> so I fear the implementation's going to end up as O(n^3log n), which is pretty awful
21:41:53 <ais523> perhaps I should change the semantics of the language to speed it up…
21:42:10 <ais523> (Rubicon gets round the problem by using a very small playfield, but I'd rather like a larger one)
21:42:12 <Phantom___Hoover> Remind me how it works?
21:43:45 <ais523> I don't think I've ever explained the semantics in-channel
21:44:04 <ais523> let me pastebin them; it's a little inaccurate, but not really more than usual for an informal explanation
21:44:38 <ais523> here we go; the language it's based on is called CUBE: http://sprunge.us/PLHJ
21:44:59 <ais523> and the game itself is basically that, but adding the player to the playfield and allowing them to move around, push/pull/rotate blocks, and create blocks
21:52:05 <ais523> but basically, it's a bully automaton with the following possible states for each cell: empty; inertia cube (i.e. solid ground that can survive in midair without falling); mobile cube with no other properties; mobile and immobile conveyor cubes; and factory cubes that convert cubes into other sorts of cubes
21:52:57 <ais523> conveyor cubes are the only way that cubes actually move (apart from falling), and they have a sort of band of conveyorness that goes all the way around them
21:53:17 <ais523> they can even move themselves, if they're mobile and their bottom side is moving
21:53:42 <ais523> factory cubes have one active side that only does anything when moving
21:53:45 -!- KingOfKarlsruhe has joined.
21:53:54 <ais523> if it moves forwards, it makes mobile cubes into factory cubes, and does nothing else
21:54:07 <ais523> if it moves backwards, it does nothing
21:54:33 <ais523> and if it moves sideways, it changes air -> inertia, or inertia/mobile to conveyor/mobile conveyor
21:54:53 <ais523> also, it can change the motion of conveyors in various ways
21:55:19 <ais523> and factory cubes can move into inertial cubes, swapping places with them and making them mobile
21:55:59 <ais523> it's all set up so that if you have a solid block of inertial cubes, like a cliff side, you can push a factory cube into it and it mines out a tunnel of mobile cubes all the way through the block, making a conveyor as it goes to carry them back out, and maintaining a conveyor underneath itself to keep moving itself into the block
22:00:35 <ais523> wow, someone managed to jailbreak the Kindle Touch with an mp3 file
22:00:52 <ais523> that's… pretty ridiculous in security terms, how is that even possible?
22:01:09 <ais523> (apparently it's done by putting JavaScript in one of the fields that's displayed to the user)
22:13:53 * oerjan wishes reddit would outlaw url shorteners so he could see where links go...
22:14:34 <oerjan> basically a shortener decreases the probability i visit a link by about 90%.
22:17:34 <fizzie> There are browser thingamajicks that automagically use the (shortener-specific) "safe" show-me-where-it's-going-first page. (Still won't show directly before clicking the thing, though. Unless there's a thingamajick for that too.)
22:19:22 <zzo38> There are some services that can be used as URL shortener or as dynamic DNS. Once I tried to post something on a wiki but http://zzo38computer.cjb.net/whatever didn't work, but gopher://zzo38computer.cjb.net/1whatever/whatever was acceptable
22:23:04 -!- Deathly has quit.
22:23:42 -!- warg has joined.
22:23:57 <warg> werp
22:25:49 <monqy> hi deathly
22:28:27 -!- hagb4rd has joined.
22:32:50 <oerjan> http://www.yafgc.net/?id=68
22:36:20 -!- MDude has joined.
22:39:33 -!- hagb4rd has quit (Ping timeout: 240 seconds).
22:48:24 -!- itidus21 has joined.
22:59:10 -!- TeruFSX has joined.
23:06:34 -!- itidus21 has quit (Read error: Connection timed out).
23:07:20 -!- itidus21 has joined.
23:07:35 <warg> hi
23:13:26 <Phantom___Hoover> I
23:13:36 <Phantom___Hoover> appear to have whoised coppro by accident.
23:14:10 <monqy> happens to everyone
23:14:18 <oerjan> Phantom___Hoover: how terrible
23:14:27 <oerjan> you have to do it on purpose, like me
23:14:35 <Phantom___Hoover> Like that existential crisis I had after looking up London on WP.
23:14:45 <ais523> Phantom___Hoover: wait, what?
23:14:53 <Phantom___Hoover> I was just like
23:15:14 <Phantom___Hoover> "I could have sworn it wasn't called London."
23:15:31 <oerjan> now i'm just wondering what is so strange about coppro's whois
23:16:13 <oerjan> londinium, just a little northwest of lutetia parisiorum
23:18:55 <warg> isn't that a mineral?
23:19:19 <oerjan> which one
23:19:46 <warg> londinium
23:20:44 <ais523> it's the Roman name for London
23:21:17 <oerjan> lutetium, on the other hand, is a chemical element.
23:22:19 <Phantom___Hoover> One of the ones nobody cares about, though.
23:22:24 <zzo38> Is it atomic number 71?
23:22:31 <oerjan> yes
23:23:02 -!- Jafet has joined.
23:23:55 -!- kmc has quit (Quit: Leaving).
23:24:05 <oerjan> "Because of the rarity and high price, lutetium has very few commercial uses. However, stable lutetium can be used as catalysts in petroleum cracking in refineries and can also be used in alkylation, hydrogenation, and polymerization applications."
23:25:05 <Phantom___Hoover> Use as a catalyst is a common property of most boring metals.
23:26:08 -!- itidus21 has quit (Read error: Connection timed out).
23:27:01 -!- itidus21 has joined.
23:31:38 <Phantom___Hoover> I feel that WP should have more images in the style of http://en.wikipedia.org/wiki/File:Simplicial_complex_nonexample.png
23:33:17 <oerjan> from the cruel but beautiful polygon wilderness
23:38:59 <ais523> hey, we have what's effectively a blog entry from the author of Immi: http://esoteric.voxelperfect.net/wiki/User:Star651
23:39:46 <monqy> at least it's in userspace
23:40:01 <ais523> yep, it's fine
23:40:02 -!- derrik has quit (Quit: left).
23:40:13 <ais523> just, this is the thought process behind languages like Immi, preserved for prosperity
23:40:27 <monqy> everything makes sense now
23:40:37 <ais523> also, why we have humans cleaning up spams not bots; that would have tripped pretty much any reasonable spam filter based on the recent spam
23:40:42 <ais523> but I actually started reading it before deleting it
23:42:35 <itidus21> its quite well written and friendly
23:42:45 <ais523> yep
23:42:57 <ais523> I'd imagine it's the same thing that leads to the wiki filling up with BF derivatives
23:43:09 <ais523> in fact, reading that has made my hatred for BF derivs and languages like Immi to drop a lot
23:43:15 <ais523> s/made/caused/
23:43:28 <Phantom___Hoover> I'm going to notify him that he's been flagged as a possible creator of Brainfuck derivatives and has therefore had a brick assigned.
23:43:30 * Sgeo feels like cursing at Gnumeric
23:43:36 <itidus21> " "Immi" is named for Imogen Heap, a British pop star." oh dear god..
23:43:55 <itidus21> what kind of monster has such ideas
23:43:56 <ais523> incidentally, I'm British and have never heard of her
23:44:14 <Sgeo> One of her songs is in an SNL skit
23:44:15 <ais523> Phantom___Hoover: Immi isn't a BF deriv, it's more of a LOLCODE deriv
23:44:26 <Phantom___Hoover> Yes, that's why he's just /flagged/.
23:44:55 <monqy> the impact of this userpage on me: now i feel even more like lolcode&friends shouldn't exist
23:45:15 <ais523> what we really need on Esolang is a page about how to write compilers
23:45:19 <ais523> and interpreters
23:45:30 <ais523> as I think inability to do that is what discourages people from coming up with more interesting esolangs
23:45:43 <monqy> hm
23:46:52 <monqy> also i guess my hate for bad derivatives is down a bit
23:46:59 <monqy> replaced with pity for their poor creators
23:47:02 <monqy> ;_;
23:48:07 -!- hagb4rd has joined.
23:48:27 <Phantom___Hoover> monqy, soon he will be at peace with the brick.
23:48:41 <Sgeo> Someone should point him here so he may learn.
23:48:54 <Sgeo> I was a BF derivative creator once.
23:49:05 <itidus21> "The phrase "oh my loop" comes from Star651's personal experience with sound loops." -- cool, first person writing. i love this guy
23:49:16 <itidus21> third person i mean
23:49:55 -!- Ngevd has joined.
23:50:17 <Phantom___Hoover> itidus21, that's standard format?
23:50:26 <Ngevd> HellO!
23:50:32 <monqy> hi
23:50:38 <Ngevd> Just got back from the final night of Scrooge
23:50:42 <itidus21> Phantom___Hoover: ah ok
23:51:09 * itidus21 concedes the point.
23:51:37 * itidus21 means to say that itidus21 agrees with you.
23:52:09 <itidus21> ok ok.. its just funny
23:52:19 <itidus21> the standard format is funny
23:52:21 <Phantom___Hoover> `? itidus21
23:52:24 <HackEgo> itidus21? ¯\(°_o)/¯
23:52:33 <Phantom___Hoover> `learn itidus21 just made some instant coffee.
23:52:37 <HackEgo> I knew that.
23:52:41 <itidus21> :-s
23:52:46 <itidus21> eeee
23:53:12 <itidus21> `? itidus20
23:53:15 <HackEgo> itidus20 is horny 60 year olds having cybersex in minecraft
23:53:40 <monqy> `? itidus22
23:53:43 <HackEgo> itidus22? ¯\(°_o)/¯
23:53:53 <oerjan> `? ais523
23:53:56 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
23:54:15 <itidus21> `? monqy
23:54:18 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
23:54:29 <itidus21> ............ ahahhah...
23:54:37 <Sgeo> `? Sgeo
23:54:39 <HackEgo> Sgeo invented Metaplace sex.
23:54:49 <itidus21> uhmmmm
23:54:50 * Sgeo swats that factoid
23:55:05 -!- Ngevd has quit (Ping timeout: 252 seconds).
23:55:20 <Phantom___Hoover> `? Taneb
23:55:23 <HackEgo> Taneb? ¯\(°_o)/¯
23:55:28 <Phantom___Hoover> `? Ngevd
23:55:31 <HackEgo> ​.BynCc..|S.eֲ0j,e\˕rZp$.Ը¤n)+ i:TVY[|* .;g.4H$TVVM]",r..AoGbT.T3w؝".ZpKn%.q5.....v'.۸?4<by.O8].[ABnJ.O Ɏ4/FKE%.#x.OSA<.m['22D!.6.@.d..$B..x.~m.b.-}XWYPRb.Qal!.kaPBH)<.>aD?t.4$ovA.h)sz. \ >J#.HK_vdW.屑|ȫ.ȿG!ܾ"].Y./n;U[F..͐u3`.2
23:55:36 <Sgeo> `? Hussie
23:55:39 <Phantom___Hoover> Oh, of course.
23:55:39 <HackEgo> Hussie? ¯\(°_o)/¯
23:55:43 <Phantom___Hoover> Sgeo, DON'T YOU DARE
23:55:51 <monqy>
23:56:00 <Sgeo> Don't I dare what?
23:56:09 <Phantom___Hoover> DEFINE AN ENTRY FOR HUSSIE
23:56:14 <itidus21> nervous anticipation on these queries.
23:56:42 <Sgeo> Phantom___Hoover, good idea! What should I make it?
23:57:02 <Phantom___Hoover> Sgeo, DO NOT FORGET WHO TOLD YOU TO READ HOMESTUCK
23:57:02 <oerjan> `? Phantom___Hoover
23:57:05 <HackEgo> Phantom___Hoover? ¯\(°_o)/¯
23:57:11 <oerjan> `? Phantom__Hoover
23:57:13 <HackEgo> Phantom__Hoover can't decide what an appropriate number of underscores is.
23:57:18 <Phantom___Hoover> WHAT PHANTOM___HOOVER GIVETH, PHANTOM___HOOVER TAKETH AWAY
23:57:21 <itidus21> lol
23:57:37 <monqy> `? phantom hoover
23:57:40 <HackEgo> phantom hoover? ¯\(°_o)/¯
23:57:55 <monqy> `? phantom_hoover
23:57:59 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
23:57:59 -!- Jafet has quit (Quit: Leaving.).
23:58:00 <oerjan> `learn Phantom___Hoover is inexplicably bad at ghosting himself.
23:58:04 <HackEgo> I knew that.
23:58:14 <Sgeo> 'learn Hussie is a Waste of Space
23:58:39 <oerjan> oh wait
23:58:47 <oerjan> `learn Phantom___Hoover sucks at ghosting himself.
23:58:49 <HackEgo> I knew that.
23:59:12 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
23:59:18 -!- warg has quit (Ping timeout: 244 seconds).
23:59:18 <monqy> is inexplicably bad reserved for phantom____hoover
23:59:37 <Phantom_Hoover> Phantom____Hoover exceeds the character limit.
23:59:40 <oerjan> monqy: no, i just realized i'd missed an obvious pun improvement
23:59:41 <monqy> is inexplicably bad reserved for phantom____hoove
23:59:46 <monqy> ahh
23:59:54 <monqy> hhhhhhhhhhhh
2011-12-11
00:03:17 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
00:08:03 <ais523> <Star651, via email> Is this a spambot or something? I just got a user talk page message from Phantom Hoover about the BF-inspired languages, the "brick brain brochure."
00:08:09 <ais523> Phantom_Hoover: YOUR ACTIONS HAVE CONSEQUENCES
00:08:15 <itidus21> http://www.google.com/search?q=do+a+barrell+roll
00:08:31 <Phantom_Hoover> ais523, OH NO
00:08:37 <Phantom_Hoover> QUICK SOMEONE GIVE ME A TURING TEST
00:08:59 <olsner> Phantom_Hoover: are you a robot?
00:09:32 <Phantom_Hoover> olsner, no.
00:09:43 <olsner> ok, you pass the test
00:10:08 <Phantom_Hoover> ais523, please inform Star651 of my credentials.
00:10:49 <ais523> Phantom_Hoover: I've explained that it's an inside joke
00:12:41 -!- itidus21 has quit (Read error: Operation timed out).
00:14:28 -!- itidus21 has joined.
00:17:30 <oerjan> well it's a joke until he snaps, anyway.
00:17:45 <olsner> brick brain?
00:18:07 <Phantom_Hoover> See the brochure.
00:22:25 <oerjan> i think Phantom_Hoover considers that an upgrading procedure.
00:22:31 -!- Jafet has joined.
00:24:14 <ais523> oh, Star651 also top-posts, it seems
00:24:42 * olsner always top-posts
00:24:45 <Phantom_Hoover> Huh?
00:24:54 <olsner> just to stick it to the complainers about top posts
00:24:55 * oerjan swats olsner -----###
00:25:02 <olsner> they are the problem, not top-posts
00:25:21 <kallisti> olsner: hater's gonna hate
00:26:16 <monqy> I top-post whenever everyone else is top-posting because inconsistency makes me die
00:27:00 <ais523> monqy: I edit my quote of the other person's post into one that uses wrapping and quoting correctly before answering it
00:27:36 <monqy> dedication
00:29:40 <olsner> and/or a waste of time :P
00:29:54 <ais523> it makes it easier for me to read!
00:30:38 <Sgeo> elliott dammit
00:30:45 <Sgeo> Phantom_Hoover, kallisti, UPDATE
00:31:22 <Phantom_Hoover> Dialoglog!
00:32:47 <Phantom_Hoover> What's everyone got against top-posting?
00:36:15 -!- ais523 has quit (Remote host closed the connection).
00:41:26 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:41:35 <Gregor> Phantom_Hoover: Context without back come ever you if read to hard things makes it.
00:45:20 * Phantom_Hoover → sleep
00:45:22 -!- Phantom_Hoover has quit (Quit: Leaving).
00:48:25 -!- Phantom_Hoover has joined.
00:48:45 <Phantom_Hoover> Why are crank physics theories always nuts.
00:49:10 <Phantom_Hoover> They're never fun little mathematical models which don't actually square with reality; they're invariably completely off the hook.
00:49:52 <monqy> fond memories of vortex math
00:50:09 <Phantom_Hoover> Exactly!
00:50:24 -!- Ngevd has joined.
00:50:44 <Phantom_Hoover> I thought it was going to be all vectors and stuff, not deeply misunderstood modular arithmetic!
00:51:29 <oerjan> vectors are deeply misunderstood modular arithmetic, from a certain point of view.
00:52:10 <Phantom_Hoover> oerjan if this is going to turn into some crazy group theory crap...
00:52:14 <Phantom_Hoover> Or worse, category theory.
00:52:21 * copumpkin chimes in
00:52:22 <oerjan> no no, crazy ring theory.
00:52:45 <kallisti> Phantom_Hoover: some of the alternative explanations for dark matter uses different formulas for gra[Cvitation
00:53:12 <oerjan> vector spaces are modules over a field
00:53:12 <Phantom_Hoover> copumpkin, please tell me "category theory" pings you.
00:53:28 <copumpkin> lol no
00:53:33 <Phantom_Hoover> Rings are basically groups with bits stuck on.
00:54:23 <Phantom_Hoover> Also can you produce all vector spaces from the rings associated with Z_n?
00:54:33 <Phantom_Hoover> Wait those aren't even all rings.
00:54:38 <oerjan> it is possible "module" and "modular" have the same origin, even. i'm not sure.
00:54:50 <oerjan> yes they are all rings. just not all fields.
00:55:07 <Phantom_Hoover> Ah.
00:55:37 <oerjan> only Z_p for prime p are fields, which is a rather small selection of all fields.
00:56:03 <Phantom_Hoover> They have the same cardinality!
00:56:20 <oerjan> wat
00:56:25 <monqy> i agree with oerjan
00:56:30 <Phantom_Hoover> Z_p vs. Z_n.
00:56:49 <oerjan> each Z_n has cardinality n.
00:57:13 <Phantom_Hoover> I mean {Z_p} vs. {Z_n}.
00:57:32 <oerjan> oh well. it's still a small subset of all _fields_.
00:57:52 <oerjan> of which there are uncountably many, in fact to-big-to-be-a-set many.
00:58:39 <oerjan> *too-
00:58:51 <zzo38> The swephexp.h file does not entirely agree with the documentation
00:59:14 <Phantom_Hoover> oerjan, damn you, ZFC!
00:59:20 * Phantom_Hoover → sleep
00:59:21 -!- Phantom_Hoover has quit (Quit: Leaving).
00:59:46 <oerjan> also Z_p are the prime fields of characteristic p. there is also the prime field of zero characteristic, aka the rationals.
01:02:17 <oerjan> i see by googling it's a little inconsistent whether that is included in the definition of prime field.
01:09:34 -!- Ngevd has quit (Ping timeout: 252 seconds).
01:10:29 <tswett> Huh. It turns out my keyboard can, without too much difficulty, play a note 6 octaves below middle C, or 7 octaves above.
01:11:47 <olsner> well done! my keyboard only does clicks
01:11:50 <tswett> Soooooooo useful.
01:12:13 <monqy> my keyboard does clacks. it's okay.
01:13:16 <tswett> My other keyboard just goes pitter-patter.
01:13:30 <tswett> Actually, it can also play a note 6 octaves below middle C. You just need a wristwatch to do it.
01:24:02 -!- Jafet has quit (Quit: Leaving.).
01:24:45 -!- Jafet has joined.
01:35:54 -!- derdon has quit (Remote host closed the connection).
01:53:02 -!- augur has quit (Remote host closed the connection).
01:56:53 <zzo38> Documentation for Swiss Ephemeris seems to have a lot of mistakes in it. Do you know of any other ephemeris programs with free software licenses?
01:58:17 <kallisti> so uh, in Python, does r+ truncate on write?
01:58:22 <kallisti> or is it append?
02:13:21 <olsner> it seems to be a bit useless to be able to read from a truncated file
02:15:12 <pikhq> kallisti: Neither.
02:15:45 <pikhq> As that's just a naive wrapper around ISO C fopen, "r+" opens the file for reading and writing, with the file pointer at the beginning of the file.
02:15:51 <pikhq> Erm, stream pointer.
02:15:55 <pikhq> Let's not be confusing. ;P
02:23:27 -!- Klisz has joined.
02:25:50 -!- Vorpal has quit (Ping timeout: 252 seconds).
02:30:52 <kallisti> pikhq: ah okay
02:31:07 <kallisti> so a full read of the file followed by subsequent writing will be very similar to writing in append mode.
02:31:21 <kallisti> but writing before reading will probably do horrible things.
02:33:36 <Sgeo> naive?
02:35:28 <kallisti> ?
02:40:54 <kallisti> pikhq: uh... how do I route stdout and stderr to the same file and in chronological order.
02:41:01 <kallisti> I tried > log.txt 2> log.txt
02:41:06 <kallisti> but the order is weird.
02:42:08 <kallisti> I also tried 2>&1 > log.txt but that didn't seem to work either.
02:43:01 <shachaf> >log.txt 2>&1
02:43:16 <shachaf> And learn how shell redirection works. :-)
02:43:24 <kallisti> shachaf: how does it work?
02:43:27 <kallisti> :)
02:44:07 <kallisti> also I found &> which does what I want.
02:44:15 <oerjan> magnets.
02:44:42 <shachaf> kallisti: You should still learn how shell redirection works.
02:44:46 <kallisti> shachaf: it doesn't really make any sense to me that the order of redirects would matter.
02:44:57 <shachaf> Why not? They're "executed" in order.
02:45:08 <shachaf> Otherwise how would you, say, swap stdout and stderr?
02:45:30 <kallisti> ah okay. so bash is weird and sequential and not declarative. okay got it.
02:45:41 -!- augur has joined.
02:45:48 <kallisti> redirection is assigning of file descriptors.
02:45:53 <shachaf> Yes.
02:47:21 <kallisti> shachaf: obviously you use the flip command to swap stdout and stderr
02:47:45 <kallisti> flip find . -type f -name *porn* -delete
02:47:58 <shachaf> "sequential" and "declarative" are hardly antonyms, by the way.
02:48:17 <kallisti> well sure
02:50:14 <kallisti> shachaf: um, how does that help you swap stdout and stderr? also how is that a valuable use case?
02:50:33 <shachaf> kallisti: You might need to use 3. :-)
02:51:31 <kallisti> what is 3 again.
02:53:25 <pikhq> You can use any number of file descriptors.
02:53:50 <pikhq> foo 2>&3 1>&2 3>&1
02:54:16 -!- oerjan has quit (Quit: Good night).
02:54:19 <kallisti> are they not normally taken by other things? I thought 0, 1, and 2 were special and others referred to specific files.
02:54:25 <kallisti> or, could possibly refer to those files.
02:54:52 <pikhq> 0, 1, and 2 are special and others are allocated by various system calls.
02:55:23 <kallisti> oh okay, I think I was confusing file handle with file descriptor.
02:55:45 <kallisti> each process has its own set of file descriptors
02:56:25 <pikhq> Yes. Also, each process inherits the set of file descriptors from its parent.
03:00:03 <kallisti> why do blank copies of files keep appearing in nautilus
03:00:16 <kallisti> with exactly the same name as their counterpart.
03:01:14 <kallisti> ah ls reveals that they have a ? at the end of their name, but the ? isn't displayed.
03:02:19 <pikhq> That sounds like a Nautilus bug.
03:03:07 <pikhq> Also, I'd be willing to bet that's not ? but either an invalid UTF-8 sequence or a character you don't have a font for.
03:03:33 <kallisti> possibly
03:17:27 -!- Jafet1 has joined.
03:18:28 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
03:19:10 -!- Jafet has quit (Ping timeout: 244 seconds).
03:23:48 -!- hagb4rd has joined.
03:30:55 <Gregor> The most annoying thing about YouTube's new look is that the box in the corner telling you about its new look keeps reappearing X_X
03:34:14 <kallisti> Gregor: doesn't for me. do you have an account?
03:34:22 <Gregor> Yup
03:34:27 <kallisti> it only mentioned it once for me. hm
03:35:10 <Gregor> Honestly, /everything/ about the new look is rife with awesome. I am on the new YouTube look bandwagon. I'm not one of these "oh Facebook changed I want the old one waaaah" whiners.
03:35:14 <Gregor> BUT I want that damned box gone :P
03:35:25 <kallisti> the new look is awesome, yes.
03:35:35 <kallisti> I basically now go to youtube instead of facebook when bored.
03:35:42 <kallisti> as far as homepage
03:35:53 <kallisti> before I would go to youtube if I had something specific I was looking for
03:36:02 <kallisti> but now I just subscribe to shit and await new things to appear.
03:36:07 <kallisti> +for
03:36:24 <Gregor> I have a bunch of subscriptions. The old sub-boxes were really confusing because they were sorted by most recent upload, but showed all recent uploads, so there was no single view of time.
03:38:31 <Gregor> Mind you, the fact that it now by default shows every time someone you've subbed to posts a comment, likes a video or picks their nose is really obnoxious, but that's one check-box away. Ironically, one check box that it seems to remember for me, unlike the nagbox in the corner >_>
03:55:13 -!- Jafet1 has quit (Quit: Leaving.).
04:00:46 <zzo38> Are file descriptors 0 and 1 and 2 special or are they just assigned standard meanings?
04:06:42 <shachaf> zzo38: Is that an exclusive or?
04:06:49 <shachaf> They're special because they're assigned standard meanings.
04:06:57 <shachaf> You can close them and use them for whatever you want, though.
04:09:58 <pikhq> The only special thing about them is that they are stdin, stdout, and stderr by convention.
04:10:20 <pikhq> And this is implemented by attaching the other ends of them to the terminal.
04:15:43 -!- azaq23 has quit (Quit: Leaving.).
04:21:34 <shachaf> Well, yes.
04:22:57 <zzo38> pikhq: Yes that is what I meant by my question
04:29:46 -!- itidus21 has quit (Read error: Connection reset by peer).
04:30:40 -!- itidus21 has joined.
04:48:48 -!- itidus21 has quit (Read error: Connection timed out).
04:49:31 -!- itidus21 has joined.
04:53:33 -!- Klisz has quit (Quit: You are now graced with my absence.).
04:55:59 -!- itidus21 has quit (Ping timeout: 252 seconds).
04:58:41 -!- itidus21 has joined.
05:17:05 -!- itidus21 has quit (Read error: Connection timed out).
05:38:22 -!- quintopia has quit (Ping timeout: 255 seconds).
05:45:00 <pikhq> Y'know, I think the Zimbabwe dollar has more value now than it ever did when it was an official currency.
05:45:28 <pikhq> Simply because people go "$100,000,000,000,000 bill? Sweet!"
05:45:41 -!- MDude has changed nick to MSleep.
05:45:57 -!- quintopia has joined.
05:45:58 -!- quintopia has quit (Changing host).
05:45:58 -!- quintopia has joined.
06:06:53 -!- Klisz has joined.
06:35:47 <zzo38> I didn't know that
06:36:08 <zzo38> ?thank you thanks
06:36:09 <lambdabot> Maybe you meant: thank you thanks
06:36:24 <shachaf> Hey, #esoteric, is there any language that implements conditional and/or indirect comefrom?
06:36:42 <zzo38> shachaf: I think some variant of INTERCAL have
06:37:49 <shachaf> Oh, all I needed to do was look it up.
06:37:49 <pikhq> Seems C-INTERCAL does.
06:38:34 <shachaf> So you have to use a special-purpose conditional.
06:50:14 -!- itidus21 has joined.
06:58:45 -!- itidus21 has quit (Ping timeout: 268 seconds).
07:02:18 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:12:01 -!- itidus21 has joined.
07:15:31 -!- derrik has joined.
07:31:56 -!- monqy has quit (Quit: hello).
07:58:03 -!- Ngevd has joined.
07:59:53 <zzo38> I could make "lower" and "cohoist" for a few of the transformers in the transformers library, and I could make some of them like "instance Monoid s => Extend (StateT s Identity)" and whatever but I don't know if it can make for any arbitrary comonad instead of only Identity
08:01:22 -!- Ngevd has quit (Client Quit).
08:06:29 <zzo38> Do you have any idea how?
08:44:29 -!- pikhq has quit (Read error: Operation timed out).
08:45:13 -!- pikhq has joined.
08:48:41 -!- zzo38 has quit (Quit: Did you know that you are reading this sentence?).
08:49:29 <Sgeo> kallisti, update
09:15:46 -!- sebbu2 has joined.
09:18:28 -!- fizzie has quit (Changing host).
09:18:29 -!- fizzie has joined.
09:18:29 -!- fizziew has quit (Changing host).
09:18:29 -!- fizziew has joined.
09:18:58 -!- sebbu has quit (Ping timeout: 252 seconds).
09:19:23 -!- kmc has joined.
10:00:27 -!- Vorpal has joined.
10:08:56 -!- Phantom_Hoover has joined.
10:26:31 -!- sebbu has joined.
10:26:31 -!- sebbu has quit (Changing host).
10:26:31 -!- sebbu has joined.
10:27:34 -!- sebbu2 has quit (Ping timeout: 244 seconds).
10:29:53 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:45:25 -!- Phantom_Hoover has joined.
11:38:44 -!- cheater_ has joined.
12:30:19 -!- oerjan has joined.
12:42:16 * oerjan notes that in today's square root of minus garfield, it's not clear whether the transformation applies per panel or throughout the strip, not even in the alternative version. this is because each original panel has "a" as the first vowel and "e" as the last one.
12:43:08 <oerjan> (http://www.mezzacotta.net/garfield/)
12:47:56 <kallisti> Sgeo: updootlbreet
13:05:45 <kallisti> Sgeo: GEE I WONDER WHO THE HERO OF DOOM COULD BE.
13:24:53 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:27:51 -!- Phantom_Hoover has joined.
13:38:09 -!- Ngevd has joined.
13:38:17 <Ngevd> Hello!
13:38:37 <oerjan> o hell
13:38:47 <Ngevd> Norway or Jamaica?
13:39:25 <Ngevd> s/Jamaica/Cayman Islands/
13:40:02 <oerjan> well the one in norway is less than an hour from here, so...
13:40:04 -!- derdon has joined.
13:40:09 <Ngevd> Fair 'nuff
13:40:15 <Ngevd> I had an idea for an esolang
13:40:25 <Ngevd> It's pretty eso, I need to work on the lang
13:40:35 <oerjan> Phantom_Hoover: get ready with the brick!
13:40:51 <Phantom_Hoover> I've had a brick trained on Ngevd for some time now.
13:41:17 <Ngevd> It involves a number of ants on a varying length Mbius strip
13:41:48 <Phantom_Hoover> Could still be a heavily-disguised BF derivative.
13:42:12 <Ngevd> The ants move at different speeds according to a polynomial that is associated with each ant individually
13:42:43 <Ngevd> When they meet, something happens, depending on whether they are in the same direction or "side"
13:42:48 <Ngevd> That's as much as I have
13:44:10 <Phantom_Hoover> Overly time-dependent, would not buy again.
13:44:17 <Ngevd> Maybe if I let the ants breed?
13:44:44 <Phantom_Hoover> Maybe.
13:45:02 <Ngevd> Of course, that would be horrible ant biology
13:45:12 <Ngevd> And it's still not langy enough
13:45:29 <kallisti> Ngevd: side?
13:45:33 <kallisti> mobius strip is one-sided.
13:45:38 <Ngevd> Hence "side"
13:46:29 <Ngevd> If you cut a little bit the ants are on off, that gives you sides
13:49:13 <Ngevd> So two ants can be in the same location on a physical strip, but cannot see eachother due to the tape being in the way
13:50:22 <Ngevd> I am going to write up a detailed spec shortly
14:00:23 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:03:40 -!- derdon has quit (Remote host closed the connection).
14:08:53 <kallisti> is 1/0 = Infinity in Haskell an arbitrary decision?
14:09:03 <Ngevd> Yes
14:09:10 <Ngevd> For example, compare:
14:09:14 <Ngevd> > div 1 0
14:09:15 <lambdabot> *Exception: divide by zero
14:09:27 <Ngevd> Actually wait
14:09:35 <Ngevd> It could be to do with the spec for
14:09:39 <Ngevd> Float
14:10:16 <kallisti> no it's not part of the IEEE standard
14:10:53 <Ngevd> > divMod 1 0
14:10:54 <lambdabot> *Exception: divide by zero
14:10:57 <olsner> @type div
14:10:59 <lambdabot> forall a. (Integral a) => a -> a -> a
14:11:06 <olsner> @type (/)
14:11:07 <lambdabot> forall a. (Fractional a) => a -> a -> a
14:11:09 <Ngevd> > div' 1 0
14:11:10 <lambdabot> *Exception: Ratio.%: zero denominator
14:13:34 <kallisti> I was just wondering if it had any basis in anything.
14:14:06 <kallisti> or if it was chosen.... just cuz lolz
14:14:13 <oerjan> kallisti: it's just ghc following IEEE floating point, it's not even mandated in the standard
14:14:25 <oerjan> (haskell standard)
14:14:30 <kallisti> oerjan: so how is that following IEEE floating point if it's not mandated?
14:14:32 <kallisti> oh..
14:14:33 <kallisti> okay.
14:14:40 <kallisti> okay so then.... my question remains
14:14:46 <kallisti> as I never mentioned GHC
14:14:50 <oerjan> although there _is_ a function to check if your floating point type is IEEE compatible
14:14:54 <oerjan> :t isIEEE
14:14:55 <lambdabot> forall a. (RealFloat a) => a -> Bool
14:14:59 -!- Taneb has joined.
14:15:12 <kallisti> > isEEE (1/0)
14:15:13 <lambdabot> Not in scope: `isEEE'
14:15:19 <kallisti> > isIEEE (1/0)
14:15:20 <lambdabot> True
14:15:27 <kallisti> > isIEEE (0/0)
14:15:28 <lambdabot> True
14:15:31 <kallisti> hmmm, okay.
14:15:33 -!- Ngevd has quit (Ping timeout: 240 seconds).
14:15:39 <oerjan> kallisti: i mention ghc because anyone could make a compliant haskell implementation where Double was _not_ IEEE.
14:15:58 <oerjan> > isIEEE (undefined :: Double)
14:15:58 <lambdabot> True
14:16:02 <kallisti> so... the whole infinity negative infinity thing /is/ compatible with IEEE?
14:16:04 <oerjan> it only looks at the type
14:16:19 <oerjan> kallisti: mandated by
14:16:32 * kallisti couldn't find where it was mandated in the wikipedia article
14:16:34 <oerjan> afaik
14:16:44 <itidus21> hmm
14:16:46 <kallisti> okay well... is that decision arbitrary?
14:16:53 <kallisti> the IEEE decision to make 1/0 infinity
14:17:29 <itidus21> while a mobius strip is one-sided, one can still pierce it at any point with a needle, and stick a red clump on one end of the needle and a white clump on the other end
14:18:02 <itidus21> and say, position red clump on the strip is in some relationship with position white clump
14:18:42 <itidus21> but i don't know if this is relevant
14:18:52 <Taneb> It is
14:19:05 <Taneb> I think I will use that argument in my spec
14:19:05 <oerjan> hm maybe it _isn't_ mandated then
14:19:20 <kallisti> oerjan: I can't find out because I have to PURCHASE THE STANDARD WTF
14:19:29 <oerjan> ah right.
14:19:36 <itidus21> Taneb: yay
14:20:01 <oerjan> when i become world dictator i will make all non-freely available standards illegal, have no fear.
14:20:07 <olsner> but the division you saw causing an exception instead of infinity was not a floating-point operation, why is IEEE involved in your integer divisions?
14:20:28 <kallisti> it's not
14:20:32 <kallisti> we're talking about floating point division
14:21:02 <kallisti> I'm asking "is the decision that positive/0 = infinity arbitrarily chosen by <someone> or is it grounded in some kind of sane mathematical reasoning"
14:21:40 <itidus21> is it a decision? :>
14:21:45 <kallisti> yes
14:22:08 <itidus21> ah.
14:22:11 <kallisti> > 1/0
14:22:12 <lambdabot> Infinity
14:22:15 <kallisti> someone decided that would happen.
14:22:24 <Taneb> > 0/0
14:22:25 <lambdabot> NaN
14:22:32 <Taneb> Hang on
14:22:38 <itidus21> i'm remembering now that mathematics can't just suppose things to be natural
14:22:39 <Taneb> I think it is mathematical
14:22:55 <Taneb> How many zeros do you need to add together to make 1?
14:23:02 <kallisti> I know it's based on limits.
14:23:08 <itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:15 <Taneb> You can add all your life and not get there
14:23:21 <Taneb> Therefore 1/0 is infinite
14:23:29 <kallisti> `addquote < itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:33 <kallisti> god damnit irssi
14:23:35 <kallisti> quit that shit
14:23:37 <HackEgo> 758) < itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:45 <kallisti> `delquote 758
14:23:49 <HackEgo> ​*poof* < itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:55 <kallisti> `addquote <itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:58 <HackEgo> 758) <itidus21> te most amazing thing about mathematics is that you can prove anything
14:23:59 <itidus21> yay
14:24:08 <itidus21> c'est indefatigueable
14:24:19 <oerjan> > 1/((-1)/0)
14:24:20 <lambdabot> -0.0
14:24:29 <oerjan> er
14:24:42 <itidus21> `delquote 758
14:24:46 <HackEgo> ​*poof* <itidus21> te most amazing thing about mathematics is that you can prove anything
14:24:47 <olsner> kallisti: I probably misunderstood what the disagreement was... I thought someone was arguing that 1/0 isn't infinity in haskell
14:24:50 <oerjan> > 1/(1/((-1)/0))
14:24:50 <lambdabot> -Infinity
14:24:51 <Taneb> > 1/((-1)/0) == (0 :: Float)
14:24:52 <lambdabot> True
14:24:57 <kallisti> olsner: no there's no argument
14:25:00 <kallisti> it was kind of just a question.
14:25:04 <Taneb> > (-0.0) == 0.0
14:25:05 <lambdabot> True
14:25:10 <olsner> no argument!? how boring :(
14:25:19 <Taneb> > show (-0.0)
14:25:20 <lambdabot> "-0.0"
14:25:20 <kallisti> yes, just friendly discussion. so lame!
14:25:27 <itidus21> i think kallisti is asking what is the proof that 1/0 is infinitty
14:25:36 <kallisti> well no, not really.
14:25:36 <oerjan> kallisti: when calculating division by zero, +0 is treated differently from -0.
14:25:46 <Taneb> In other news, Gregor just reached level 23
14:25:57 <Taneb> :)
14:26:00 * kallisti is asking for the rationale of the decision.
14:26:17 <oerjan> > 1(-0) -- this may not count though, hm
14:26:18 <lambdabot> 1
14:26:18 <itidus21> kallisti: just to set things straight... i know nothing about math
14:26:20 <oerjan> er
14:26:22 <kallisti> not necessarily it's mathematical truth under some algebraic structure
14:26:23 <oerjan> > 1/(-0) -- this may not count though, hm
14:26:24 <lambdabot> -Infinity
14:26:27 <Taneb> Oooooh, so did ais523
14:26:27 <oerjan> oh it does
14:26:43 <itidus21> so.. i just pretend basically
14:27:21 <kallisti> oerjan: according to wikipedia the only thing it mentions is that division by zero should return NaN under IEEE
14:27:37 <kallisti> so... I'm just wondering where and why this decision came about to allow infinity and negative infinity
14:27:42 <kallisti> the background of it, basically.
14:27:46 <itidus21> since when does IEEE dictate math :>
14:27:52 <kallisti> it doesn't.
14:28:17 <itidus21> hmm. i guess it steps in when trying to represent math with a computer
14:28:38 <kallisti> ding!
14:28:56 <itidus21> dewjdoiwejiod let's refer back to my original statement "just to set things straight... i know nothing about math" .. i can only dig my hole deeper
14:29:16 <oerjan> kallisti: where does it mention that. http://en.wikipedia.org/wiki/IEEE_754-2008 does mention infinities, barely.
14:30:09 <kallisti> oh..
14:31:24 <kallisti> I'm blind. :P
14:32:43 <kallisti> oerjan: I ask because I just got into an argument of the arbitrariness of 1/0 = infinity in Haskell
14:33:00 <kallisti> and I made things worse by saying 2 + 2 = 4 is arbitrary. :P
14:33:11 <kallisti> and they went into this whole "appeal by intuition" thing and I was just like "bluuuuuh what have I done"
14:36:15 <Taneb> Now monqy is level 23!
14:36:57 <kallisti> oerjan: oh I misinterpreted. It just specifies a division by zero exception.
14:37:07 <kallisti> apparently Haskell doesn't like exceptions.
14:37:09 <Taneb> I think that's all my Pokmon
14:37:59 <Taneb> Wait, Vorpal
14:38:30 <Taneb> Is still level 22
14:39:43 <oerjan> kallisti: i recall a discussion once where someone mentioned ghc would go haywire if you tried to change its floating point default settings
14:40:07 <oerjan> they're just too deeply assumed
14:41:04 <oerjan> for one thing, the underlying C mechanism is imperative and would conflict with haskell's purity assumptions.
14:43:00 <oerjan> well C or assembly
14:43:49 <kallisti> I do think the lack of an exception in those situations kind of undermines the assumption that division by zero is an invalid operation and should error out or something.
14:46:31 <oerjan> anyone who _assumes_ things about floating point without actually knowing gets what they deserve.
14:47:02 <kallisti> Haskell: a merciless language
14:47:11 <oerjan> this is not about haskell.
14:48:46 <kallisti> no, but it is about Haskell being merciful. :>
14:48:51 -!- oerjan has quit (Quit: Sorry, have to go kill a housemate.).
14:48:52 <kallisti> :> :: > : > : > : > :: > : > : > : :
15:06:41 -!- derrik has quit (Quit: gone for good).
15:26:51 <fizzie> Apparently my real name is henceforth "null Kallasjoki".
15:27:29 <Taneb> I once got booked into a hotel under the name of Random
15:29:08 <kallisti> derrik: we'll miss you
15:47:33 <itidus21> back
15:47:41 <Taneb> `welcome
15:47:43 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
15:47:51 <Phantom_Hoover> Were you ever front?
15:48:24 <itidus21> Taneb: just to follow up on my last statement, so if you were to stab such a needle into a regular "side" such as a chessboard, the needle would emerge somewhere else on the chessboard
15:48:29 <itidus21> rather than piercing the board
15:48:51 <Phantom_Hoover> Are you talking about Möbius strips?
15:48:55 <Taneb> Yes
15:48:59 <Taneb> And I'm Taneb
15:49:02 <Taneb> This will not do
15:49:06 -!- Taneb has changed nick to Ngevd.
15:49:10 <itidus21> oh..
15:49:13 <Phantom_Hoover> Möbius strips suck, the RPP is where it's at.
15:49:22 <itidus21> i didn't realize ngevd and taneb was the same person
15:49:37 <Ngevd> We're not
15:49:47 <Ngevd> I just use his computer sometimes
15:50:02 <itidus21> aha.
15:50:39 <itidus21> i don't have any understanding of the meaningful implications of what i'm saying outside of their immediate meaning
15:51:42 <Phantom_Hoover> Taneb is Ngevd's imaginary twin.
15:52:12 <Ngevd> No, that's elliott
15:53:25 <itidus21> i kind of wish i had a tape measure like strip of paper for experimenting on the idea
15:53:35 <Phantom_Hoover> Ngevd, he's your evil twin.
15:53:43 <itidus21> i suppose i can build 1
15:53:44 <Ngevd> Oh yeah
15:54:00 <Phantom_Hoover> (Your imaginary twin lives in Spellgammon.)
15:56:40 <Ngevd> When I was in the shower earlier today I began thinking about BytePusher
15:57:54 <Ngevd> I was thinking how I could make Hunt the Wumpus
15:58:15 <Ngevd> During that, I think I may have worked out a way to do rudimentary arithmetic
15:59:27 <Ngevd> And a PRNG
15:59:31 <Ngevd> ish
16:02:36 -!- pikhq has quit (Ping timeout: 248 seconds).
16:02:43 -!- pikhq has joined.
16:04:30 <itidus21> so the mobius strip i created has 34 cells on it numbered 1 to 34, and there are correspondances 1 - 18, 2 - 19, 3 - 20, ..., 15 - 32, 16 - 33, 17 - 34
16:05:27 <Ngevd> zipWith (\a b -> (show a) ++ '-':(show b)) [1..17] [18..34]
16:05:31 <Ngevd> > zipWith (\a b -> (show a) ++ '-':(show b)) [1..17] [18..34]
16:05:32 <lambdabot> ["1-18","2-19","3-20","4-21","5-22","6-23","7-24","8-25","9-26","10-27","11...
16:06:08 <Ngevd> So, a links to (a + 17) mod 34
16:07:40 <kallisti> informative flow chart: http://www.lolhappens.com/4520/does-it-move/
16:26:31 -!- elliott has joined.
16:44:36 <kallisti> elliott: do you know anything about nondeterministic finite automata?
16:44:48 <kallisti> the formal definition says that the transition function is Q x E -> P(Q)
16:44:53 <Ngevd> Like Befunge-93?
16:45:01 <kallisti> does that mean that it's possible for the transition function to result in an empty set on a symbol state pair?
16:45:08 <kallisti> if so, what does that mean?
16:47:06 <kallisti> based on the rules for accepted inputs I'm guessing it means that the input is rejected
16:47:09 <kallisti> if it's possible.
16:47:38 <elliott> i would presume so
16:47:40 <elliott> ask oerjan
16:47:53 <elliott> (diff) (hist) . . Language list‎; 21:42 . . (+144) . . 149.255.39.26 (Talk) (It'd be kinda like the group blog idea, but with more of a "Where in the World is Carmen Sandiego?" vibe. And who didn't love playing that? :), http://aishwaryaraiporn1.typepad.com aishwarya rai porn,)
16:47:56 <kallisti> r[i+1] ∈ Δ(r[i], a[i+1]), for i = 0, ..., n−1
16:47:57 <elliott> well that's the best idea i ever heard of
16:48:13 <kallisti> if the delta function returns {} then obviously that condition for an accepted input is false.
16:56:57 -!- kallisti_ has joined.
16:58:12 <hagb4rd> hey tetris lovers out there..if you liked the nes version you should go and try this beautigful weird retr-o-mod: http://firstpersontetris.com/
16:58:43 <hagb4rd> its kinda different..oyess
16:59:14 -!- kallisti has quit (Ping timeout: 252 seconds).
16:59:51 <elliott> this is fun but not really first person
17:00:02 <elliott> first person would be much more confusing
17:01:12 <hagb4rd> well if thats not confusing enough for you dear elliott..try night mode :)
17:01:33 <elliott> heh, that's fun
17:01:52 <elliott> but first person tetris would designate one face of one block of the piece as the "eye"
17:01:57 <elliott> and you'd actually be looking down at the rest of the board
17:02:02 <elliott> or up or whatever
17:02:54 <hagb4rd> sure..guess its part of of the joke to suggest such expectations
17:02:57 <hagb4rd> however
17:03:13 <elliott> existential crisis night mode is good
17:03:54 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:04:00 <hagb4rd> aw thats new
17:04:44 <hagb4rd> yea.. the homecinema effect
17:09:40 <hagb4rd> lol existential crisis night mode
17:10:05 -!- Phantom_Hoover has joined.
17:10:20 <kallisti_> elliott: how would you rotate the piece and still know what the fuck is going on?
17:10:26 <elliott> badly
17:10:35 <kallisti_> maybe the eye is just floating below the block
17:10:42 <kallisti_> and you can still rotate it while looking down.
17:11:12 <itidus21> the fundamental problem with the idea of a first person tetris is the lack of an avatar
17:11:20 <kallisti_> ?
17:11:21 <kallisti_> what?
17:11:27 <itidus21> i guess you become the piece in this case?
17:11:33 <kallisti_> hmmm, oh I see what you mean.
17:11:39 <kallisti_> yes.
17:11:43 <elliott> just have reflections
17:11:48 <elliott> the pieces are really shiny and semi-translucent
17:11:51 <elliott> so you can see yourself in them
17:11:52 <elliott> also the walls
17:12:01 <kallisti_> lol
17:12:05 -!- kallisti_ has changed nick to kallisti.
17:12:15 <kallisti> elliott: you've lost your game designer's license.
17:12:23 <elliott> no this would be best
17:12:47 <kallisti> there's still the problem of being unable to look down at the board
17:12:50 <kallisti> if you're looking at the wall.
17:13:03 <elliott> that's why you rotate
17:13:03 <elliott> duh
17:13:11 <kallisti> that's...
17:13:12 <kallisti> no
17:13:18 <kallisti> that makes tetris way more difficult?
17:13:21 <kallisti> have you played tetris?
17:13:27 <elliott> well that's the fucking concept of http://firstpersontetris.com/
17:13:32 <elliott> so you can't complain about /that/ part
17:13:36 <hagb4rd> you wouldnt miss them after 3 days of insomnia
17:13:40 <elliott> and the point isn't to be easy it's to be cool
17:14:14 <hagb4rd> yea
17:14:18 <kallisti> wat
17:14:21 <hagb4rd> absoulutely
17:14:21 <kallisti> that's not first person at all.
17:14:40 <hagb4rd> ok
17:14:52 <kallisti> also ONLY ONE WAY TO ROTATE WORST TETRIS EVER
17:15:01 <hagb4rd> have you noticed santaclaus is not real? sry
17:16:31 <kallisti> whut
17:16:34 * kallisti existential crisis
17:16:46 <kallisti> I managed to clear ONE ROW in existential crisis mode.
17:16:50 <kallisti> also how is this an existential crisis?
17:17:29 -!- MSleep has changed nick to MDude.
17:18:31 * kallisti tough critic
17:19:10 -!- azaq23 has joined.
17:19:24 -!- azaq23 has quit (Max SendQ exceeded).
17:19:39 <elliott> <hagb4rd> have you noticed santaclaus is not real? sry
17:19:45 <elliott> hagb4rd: excuse me i am santa.... stop spreading lies
17:19:52 -!- azaq23 has joined.
17:19:55 <hagb4rd> ! <33
17:20:02 <Ngevd> elliott, we already established that only one of us is real
17:20:09 <Ngevd> As I am clearly real, you must not be
17:20:18 <hagb4rd> finally
17:20:19 <elliott> you're obviously not real
17:20:22 <elliott> i'm santa.
17:20:25 <elliott> how can santa not be real, qed
17:20:26 <kallisti> elliott: does brainfuck have variables? discuss
17:20:34 <kallisti> I think it doesn't.
17:21:02 <elliott> yes, it has a great many of them
17:21:03 -!- Phantom__Hoover has joined.
17:21:04 <elliott> with no constant name
17:21:11 <hagb4rd> you're more then right..really.
17:21:14 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:21:19 <kallisti> elliott: doesn't the definition of a variable require a symbolic name?
17:21:34 <elliott> depends what definition you're using!
17:22:15 <kallisti> sure.
17:22:53 <Ngevd> I would argue that it has precisely two variable
17:22:53 <Ngevd> s
17:23:07 <kallisti> not in the language
17:23:12 <Ngevd> The tape, and the thingy on the tape
17:23:14 <kallisti> well...
17:23:20 <Ngevd> Pointy thing
17:23:21 <kallisti> hmmm...
17:23:28 <kallisti> tape pointer and instruction pointer
17:23:49 <kallisti> it's hard to say whether that's part of the language or part of the implementation.
17:23:50 <Ngevd> Instruction pointer isn't a variable within the language
17:24:38 <kallisti> my definition of variable requires a symbolic name.. thus "variable" is not synonymous with "location in memory"
17:25:09 <Ngevd> Mine is "thing that is able to vary"
17:25:16 <kallisti> well...
17:25:21 <Ngevd> Which is pretty loose, I'll admit
17:25:23 <kallisti> that's my non-computer-science definition. :P
17:25:48 <kallisti> I'd say Haskell's use of the term variable can be a bit of a misnomer.
17:26:24 <kallisti> > let x = 2 in x
17:26:26 <lambdabot> 2
17:26:27 <kallisti> x is a constant there.
17:26:29 <Ngevd> Haskell does not have, to my knowledge, variables as I know them
17:26:46 <fizzie> Let's ask OED! "variable, adj. and n. ... B. n. ... b. Computing. A data item that can take on more than one value during or between programs and is stored in a particular designated area of memory; the area of memory itself; (also variable name) the name referring to such an item or location."
17:26:58 <elliott> Ngevd: Sure it does.
17:26:59 <kallisti> I would say "function parameter" is the "thing that is able to vary" in Haskell
17:27:01 <elliott> f x = x+2
17:27:05 <elliott> x can vary.
17:27:09 <kallisti> yes.
17:27:12 <Ngevd> Hmm
17:27:15 <elliott> "variable" is a mathematical term, after all; in x+2, x is a variable.
17:27:23 <elliott> If your definition of "variable" excludes the mathematical use, it's not a very good one.
17:27:33 <Ngevd> Man, if I knew about those earlier, I'd probably be better at Haskell
17:28:42 <kallisti> elliott: I suppose in most contexts Haskell's variables refer to function parameters.
17:28:50 <kallisti> and thus are able to vary as well.
17:28:53 <kallisti> so variable makes sense.
17:30:34 <elliott> Ngevd: Those what?
17:30:46 <elliott> <fizzie> Let's ask OED! "variable, adj. and n. ... B. n. ... b. Computing. A data item that can take on more than one value during or between programs and is stored in a particular designated area of memory; the area of memory itself; (also variable name) the name referring to such an item or location."
17:30:51 <elliott> fizzie: That's an exceptionally bad definition.
17:31:18 <Ngevd> elliott, the variables :P
17:31:23 <Ngevd> (hint: it's a joke)
17:31:32 <elliott> Ngevd: [LAUGH TRACK]
17:32:23 -!- Phantom__Hoover has quit (Remote host closed the connection).
17:33:49 -!- Phantom_Hoover has joined.
17:36:13 -!- derrik has joined.
17:38:25 -!- Phantom_Hoover has quit (Remote host closed the connection).
17:39:15 -!- Phantom_Hoover has joined.
17:45:14 -!- hagb4rd has changed nick to h[A]gb4rd.
17:50:17 <kallisti> what's so special about the master theorem that it gets to be called the master theorem?
17:51:02 <elliott> Because it's useful, one presumes
17:51:29 <copumpkin> does one presume?
17:51:36 <elliott> No.
17:51:36 <kallisti> I don't
17:51:37 <elliott> Only two presumes.
17:51:58 * kallisti is one.
17:52:21 <elliott> http://esoteric.voxelperfect.net/wiki/User:Star651
17:52:24 <elliott> what a beautiful biography
17:52:40 -!- Phantom_Hoover has quit (Remote host closed the connection).
17:53:17 -!- Phantom_Hoover has joined.
17:56:50 <kallisti> elliott: huh, interesting, I only do server-side programming.
17:56:55 <kallisti> therefore, WE ARE NEMESIS
17:57:01 <elliott> i was not being serious
17:57:14 <kallisti> elliott: you... you weren't?
17:57:16 * kallisti shocked.
17:57:49 * kallisti is more an server-side offline tech person.
17:59:14 * kallisti hobbies: YAML programming, offline server-side ActionScript
18:04:43 <kallisti> elliott: http://esoteric.voxelperfect.net/wiki/Brainbrain
18:04:54 <kallisti> I don't really get how this any different from actual brainfuck
18:05:12 <elliott> "Every brainbrain-program is a brainfuck-program which takes the source to be compiled as input, and outputs the compiled source (as brainfuck (or brainbrain) code)."
18:05:15 <elliott> Try reading?
18:05:28 <kallisti> I did
18:05:29 <kallisti> but uh...
18:05:35 <kallisti> brainfuck can do that too.
18:05:59 <elliott> ,[.,] is not a brainfuck compielr in brainfuck.
18:06:05 <kallisti> they're the same language. Perhaps that's why the "joke language" category is relevant?
18:06:07 <elliott> It is a brainfuck compiler in brainbrain, though.
18:06:16 <elliott> kallisti: No, it isn't, you're just stupid.
18:06:34 <kallisti> does the language /interpret/ the output as brainfuck?
18:06:37 <kallisti> that would make it somewhat different.
18:07:04 <elliott> Yes, obviously.
18:07:07 <kallisti> all it says is that it outputs a brainfuck program.
18:07:11 <kallisti> any brainfuck program can do that.
18:07:14 <kallisti> all brainfuck programs do that.
18:07:16 <kallisti> well
18:07:20 <kallisti> modulo balanced []
18:07:33 <elliott> Well, it doesn't have to interpret it at all.
18:07:46 <elliott> $ echo ',[.,]' >comp.bb
18:08:00 <elliott> $ echo '+...' | brainbrain-interpreter comp.bb
18:08:04 <elliott> Compiled to sdflkjsdf.
18:08:05 -!- Ngevd has quit (Ping timeout: 252 seconds).
18:08:09 <elliott> $ file sdflkjsdf
18:08:11 <elliott> sdflkjsdf: ELF binary
18:08:14 <elliott> $ ./sdflkjsdf | cat -v
18:08:17 <elliott> whatever the code for three 1 bytes is
18:08:42 <kallisti> oh...
18:08:45 <kallisti> it outputs a /binary/
18:08:59 <elliott> I don't see why it's required to at all.
18:09:05 <elliott> sdflkjsdf could just as well be a Perl script.
18:10:08 <kallisti> I just... don't really understand what's happening that makes it different from brainfuck.
18:11:00 <elliott> Indeed not.
18:11:46 <kallisti> The simplest brainfuck compiler ever. (note that if this program is run using a brainfuck interpreter, it is a cat program)
18:11:51 <kallisti> but in brainfuck it becomes.... a brainfuck compiler?
18:12:28 <kallisti> er
18:12:30 <kallisti> brainbrain
18:14:29 <kallisti> echo $1 | brainfuck-interpreter | brainfuck-compiler
18:15:14 <kallisti> erm...
18:15:15 <kallisti> no. :P
18:17:35 <kallisti> elliott: but I'm guessing the difference is that brainbrain takes the output of your brainfuck program and compiles that into something.
18:18:06 <kallisti> which... I don't really think makes a difference at all.
18:19:05 <kallisti> elliott: wow you really have zero patience.
18:19:27 <elliott> kallisti: I have zero patience because I'm carefully being politely silent rather than telling you to stop pinging me about how you don't understand basic nesting?
18:19:59 <kallisti> elliott: so am I right or wrong about brainbrain?
18:20:32 <kallisti> I understand basic nesting, but not in the form of vaguely worded english such as "http://esoteric.voxelperfect.net/wiki/Brainbrain"
18:20:36 <kallisti> er
18:20:39 <elliott> I don't care, and I don't feel like trying to understand what you said.
18:20:43 <kallisti> "Every brainbrain-program is a brainfuck-program which takes the source to be compiled as input, and outputs the compiled source (as brainfuck (or brainbrain) code)."
18:21:09 <kallisti> this to me says "brainbrain is brainfuck"
18:21:17 <kallisti> because that describes any compiler written in brainfuck.
18:25:04 <kallisti> *any A-to-brainfuck compiler written in brainfuck
18:28:23 -!- pikhq has quit (Ping timeout: 240 seconds).
18:28:24 -!- pikhq_ has joined.
18:28:51 -!- Ngevd has joined.
18:28:59 <kallisti> pikhq_: Ngevd: hi can you explain what makes http://esoteric.voxelperfect.net/wiki/Brainbrain different from brainfuck
18:30:27 <elliott> kallisti: ,[+.,] is a brainbrain program to compile brainfuck-with-every-instruction-on-the-previous-ASCII-character.
18:30:45 <elliott> <brainfuck program to compile C to brainfuck> is a brainbrain program to compile C.
18:31:01 <elliott> What those programs compile /to/ in brainbrain is up to the brainbrain implementation.
18:31:19 <kallisti> right so then that's what I said a little while ago
18:31:52 <elliott> Whatever.
18:32:01 -!- Phantom__Hoover has joined.
18:32:27 <Ngevd> No brainbrain interpreters exist, however, numerous brainfuck interpreters exist
18:32:44 <Ngevd> What do I win?
18:33:00 <kallisti> ...it seems to me that uh...
18:33:06 <Ngevd> Wait hang onm
18:33:17 <Ngevd> The output is assumed to be code
18:33:25 <Phantom__Hoover> Ngevd, THAT SOUNDS LIKE BRICKBRAINING TALK
18:33:44 <Ngevd> kallisti started it
18:33:50 <kallisti> a brainbrain implementation would just output a bash script that plugs its input into a brainfuck interpreter that runs the brainbrain program, whose output is then the input of a brainfuck compiler.
18:33:59 <kallisti> that really doesn't sound like a different language to me.
18:34:06 <kallisti> just some... IO shenanigans.
18:34:14 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:34:14 <Phantom__Hoover> Ngevd, TOUGH
18:34:39 <Phantom__Hoover> An intercontinental ballistic brick has been launched.
18:34:46 <elliott> kallisti: Yes, but we've already well-established that you have no idea how IO interacts with the definition of a language.
18:34:47 <Ngevd> Oh good, it'll miss me
18:34:53 <Ngevd> We're on the same continent
18:35:04 <kallisti> elliott: so then brainfuck-with-PSOX is not brainfuck?
18:35:27 <kallisti> or are you just agreeing while simultaneously calling me stupid?
18:35:30 <elliott> (define (this-is-an-interpreter-for-a-language-that-is-NOT-scheme expr) (eval (eval expr (scheme-report-environment 5)) (scheme-report-environment 5)))
18:38:28 -!- derrik has quit (Quit: left).
18:38:41 <Phantom__Hoover> Ngevd, it's going to go via Asia.
18:38:49 <kallisti> elliott: yes, because it changes the rules of evaluation.
18:38:58 <kallisti> brainbrain doesn't. it just adds an IO layer.
18:38:58 <Ngevd> Magic brick
18:39:09 <elliott> kallisti: It's impossible to express how disinterested I am in talking to you about this.
18:39:42 <kallisti> cool, so I guess I'll continue thinking I'm correct about that.
18:40:09 <elliott> That's fine, I already assume you're stupid.
18:41:17 * kallisti connects the output of a brainfuck program to a socket and CREATES A DIFFERENT LANGUAGE.
18:43:02 <kallisti> I'll call it IRCfuck. you give an IRCfuck interpreter a brainfuck program and it outputs an IRC client.
18:46:40 -!- zzo38 has joined.
18:50:47 <kallisti> elliott: "I am stupid. Therefore, everything I say is wrong by default and does not need to be refuted. QED"
18:50:54 <elliott> kallisti: Yes.
18:51:02 <kallisti> I think that's moronic logic. morogic....?
18:51:11 <elliott> Do you argue with Scientologists?
18:51:58 <kallisti> Not on a regular basis. But this isn't something where I simply put faith in an idea without reason,
18:52:17 <kallisti> if you supply an explanation, I may agree with it.
18:52:37 <elliott> You may. Heck, I'm sure that after some 2 hours you would.
18:52:48 <elliott> But (a) it would be tedious and painful and (b) I don't want to.
18:55:42 <kallisti> okay, but perhaps this is because of poor explanation?
18:56:01 <kallisti> you've given me every reason in the past to believe that input and output are irrelevant to programming languages.
18:56:03 <zzo38> itidus21 wrote "while a mobius strip is one-sided, one can still pierce it at any point with a needle, and stick a red clump on one end of the needle and a white clump on the other end"
18:56:27 <zzo38> I have said before, I think a mobius strip is not one-sided; it has two sides but both sides are the same side.
18:56:47 <elliott> kallisti: Why should I care what the reason is? It wouldn't change the other facts.
18:57:58 <kallisti> elliott: I'm just saying perhaps if you were more direct instead of dragging things out it wouldn't take 2 hours?
18:58:52 <elliott> Speaking of being dragged out, this metadiscussion is.
19:00:26 <zzo38> But is it taking 2 hours?
19:00:34 <elliott> Not any more it's not!
19:03:07 <kallisti> zzo38: before it was taking 2 hours, now it is not.
19:03:36 <kallisti> he probably used feather to do that.
19:03:42 <zzo38> It that because part of the time has already elapsed? Or because of different reason?
19:04:49 <kallisti> elliott: where the double-scheme interpreter changes the semantics of the language.. brainbrain does not.
19:04:57 <elliott> kallisti: Stop pinging me.
19:05:03 <kallisti> okay
19:06:45 -!- warg has joined.
19:09:13 <kallisti> similarly, is lambdabot's Haskell a separate language from Haskell-with-all-of-lambdabot's-language-extensions simply because it handles IO differently and imports a different Prelude?
19:09:20 <kallisti> I don't think it is.
19:10:12 <warg> i thin u r los
19:10:35 <kallisti> no u r los
19:10:53 <warg> i c
19:10:59 <elliott> warg: Hi Deathly.
19:11:16 <warg> sig heil spelliot
19:11:31 <elliott> fizzie: Cough.
19:11:34 <zzo38> Is it same person or someone on the same computer/router?
19:11:45 <warg> is it a person?
19:12:25 <warg> i just ate vegitarian chili
19:12:37 <elliott> zzo38: Well, it's either Deathly or Deathly's neighbour who is just as unintelligent, has the same terrible "edgy" sense of humour, who just happened to join here after him...
19:12:45 <warg> beef is vegitarian isn't it?
19:12:52 <warg> i mean, cows eat grass
19:13:27 <warg> oh, you are typing about me again
19:13:29 <warg> how sweet
19:13:30 <warg> <3
19:13:51 -!- ais523 has joined.
19:14:19 <kallisti> Programs that are executed directly on the hardware usually run several orders of magnitude faster than those that are interpreted in software.[citation needed]
19:14:35 <kallisti> I love citation needed on obvious statements.
19:14:45 <zzo38> elliott: O, OK that might be it
19:14:49 <kallisti> (not to say it doesn't need one)
19:14:59 <warg> lol
19:15:18 <zzo38> So probably it is same as Deathly.
19:15:23 <warg> what?
19:15:34 <warg> i was amused by that as well
19:20:29 -!- Phantom___Hoover has joined.
19:21:54 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
19:27:41 -!- Klisz has joined.
19:28:17 -!- monqy has joined.
19:45:52 <warg> "Thank you for freeing me!"
19:45:55 <warg> stupid djinni
19:47:11 <monqy> hi
19:47:28 <warg> now i'm down to 1 magic lamp
19:48:00 <Ngevd> Should reuse them
19:48:16 <warg> what do you mean
19:48:44 <warg> i'd much rather have a hostile djinni than a tame one
19:48:51 <warg> at least then i can get xp
19:49:14 <zzo38> Then change them to hostile
19:49:38 <warg> i'm lawful
19:49:47 <warg> i dont want the alignment penalty either
19:49:58 <zzo38> Then too bad
19:50:06 <warg> i'll just abandon it and hope it turns hostile later
19:50:15 <Ngevd> TVTropes: "Inception is cyberpunk, except without the cyber and the punk"
19:51:40 <warg> is that a movie?
19:51:49 <Ngevd> Yes
19:51:54 <warg> never seen it
19:51:56 <warg> any good?
19:52:05 <Ngevd> It was annoyingly easy to understand, despite the hype surrounding it
19:52:36 <warg> well if it was made for americans it's easy to see why
19:52:45 <Ngevd> True
19:52:54 <warg> american movies are made for people with an IQ of 80 to enjoy
19:53:02 <Ngevd> Most of them
19:53:35 <elliott> warg: you sure are concerned about how much more intelligent than everyone else you are
19:54:09 <warg> I was in to matrix until neo became psychoelectic in real life and took out that robot
19:54:23 <warg> electric*
19:54:47 <Ngevd> Matrix 3 was confusing
19:54:54 <Ngevd> But I didn't see the second one?
19:55:03 <warg> i assumed he was in an enveloped virtual reality at that point and would migrate past it to a higher level of reality, but it never happened
19:55:39 <warg> the writers made him in to a psy-mancer
19:55:50 <Sgeo> I've only saw the sequels and the ending of the first
19:55:58 <Sgeo> Haven't seen the first in its entirety yet
19:56:14 <elliott> I...
19:56:21 <Phantom___Hoover> It's like
19:56:28 <Phantom___Hoover> anti-taste in films.
19:56:53 <warg> i suppose because he had neural implants it would be possible to create an EMP pulse with them, but the amount of energy it would have taken is beyond what his biological components could have created
19:56:54 <monqy> i only saw the beginning of the first
19:56:59 <Ngevd> I really need to see Primer
19:57:00 <warg> it ruined the movies for me
19:57:18 <warg> honestly i liked johnny numonic better
19:57:24 <MDude> When he took out the robot, was it remotely?
19:57:38 <Sgeo> Well, I think if the original Matrix could have been bought from the place where I bought the sequels, I would have bought it
19:57:48 <elliott> warg: Are you seriously saying a soft sci-fi film was ruined for you because it wasn't ~realistic~.
19:57:51 <warg> you should watch the 2nd one ngevd, without it it makes #3 confusing
19:58:05 <MDude> I only saw the first one.
19:58:12 <Ngevd> The first one was good
19:58:21 <kallisti> shadowrun is the best movie (note: not a movie)
19:58:21 <MDude> And some episodes of the cartoon.
19:58:41 <warg> i like the cyberpunk genre
19:58:52 <warg> i read gibson when i was a kid
19:59:00 <warg> i played shadowrun
19:59:00 <kallisti> warg: have you read the Difference Engine?
19:59:02 -!- derdon has joined.
19:59:03 <MDude> I would tihnk maybe it would be possible to use implats to wirelessly trick the robot into doing an EMP pulse on itself.
19:59:05 <Ngevd> I prefer Gaslamp Fantasy
19:59:11 <warg> i played neuromancer on my commodore 64
19:59:49 <Ngevd> Someone who consults nerves to tell the future?
19:59:52 <kallisti> shadowrun is cyberpunk fantasy.
20:00:22 <warg> maybe mdude, but in the movie, the pulse eminated from him, and it was partly within the visible spectrum
20:00:59 <warg> and I'm not familiar with Gaslamp
20:01:13 <elliott> warg: you realise the Matrix was intended to be allegorical?
20:01:23 <Ngevd> I say I like it, I really just read Girl Genius and look at pictures
20:01:24 <kallisti> it's like steampunk but with cyberpunk replaced with fantasy instead.
20:01:46 <kallisti> N "just looks at pictures" gevd
20:01:55 <Ngevd> And Girl Genius is closer to Clockpunk anyway
20:02:19 <warg> elliott: i'll just go back to fapping to Tank Girl then.
20:02:32 <monqy> gross
20:02:34 <monqy> dont do that
20:02:35 <monqy> do
20:02:36 <kallisti> clockpunk? that's a little new wave for me. I like magical post-nintendopunk fantasy
20:02:36 <monqy> other things
20:02:44 <kallisti> er
20:02:49 <kallisti> s/fantasy/realism/
20:03:08 <warg> If Final Fantasy was the final fantasy, why were there seven of them?
20:03:09 <monqy> other things to do: not telling us about what gross things you are doing
20:03:09 <warg> D:
20:03:24 <Phantom___Hoover> I'm a fan of quillpunk.
20:03:34 <warg> eh
20:03:45 <Ngevd> warg, Final Fantasy was so named because the company that was making it (Enix? Square?) was almost bankrupt.
20:03:50 <Ngevd> It was going to be their final game
20:04:00 <warg> monqy, 97% of post pubescent males masturbate. 3% are compulsive liars
20:04:13 <Ngevd> I'm the remaining 0%
20:04:13 <ais523> Ngevd: Square, I think
20:04:17 <itidus21> and a punk named hironobu sakaguchi decided to make some of the best video games ever to be known
20:04:28 <ais523> and there are way more than seven Final Fantasy games
20:04:36 <Ngevd> XIV at least
20:04:46 <warg> Ngevd is in the 100th percentile.
20:04:47 <monqy> warg: how many of them are annoying in a very boring way and should shut up
20:05:02 <monqy> or
20:05:06 <monqy> boring in an annoying way
20:05:06 <monqy> both?
20:05:10 <monqy> who knows, a true mystery
20:05:13 <elliott> warg: 100% of people who are warg are morons who make up statistics.
20:05:13 * kallisti faps to #esoteric logs yeaaaah
20:05:28 <monqy> ;_;
20:05:34 <warg> kallisti, can i poop in your butt baby?
20:05:41 <monqy> gross :0
20:05:46 <warg> it's really hard and consitipated
20:05:49 <kallisti> no I'm into knitting.
20:05:52 <warg> we could push it back and forth
20:05:54 <kallisti> so like, start working on a scarf.
20:05:55 <warg> BACK AND FORTH!
20:05:56 <elliott> ais523: yawn
20:06:05 <warg> oh
20:06:05 <Phantom___Hoover> I remember finding scatological jokes boring when I was 5.
20:06:15 <monqy> is it even a joke
20:06:23 <ais523> warg: I suspect you're lost, are you sure you're meant to be in this channel?
20:06:24 <Phantom___Hoover> Depends.
20:06:27 <ais523> (or this network, fwiw?)
20:06:32 <warg> i'm esoterical
20:06:38 <warg> i'm a programming language
20:06:40 <warg> so i'm here
20:06:41 <warg> ok?
20:06:51 <monqy> worst programming language
20:07:04 <warg> thats what she said
20:07:06 <elliott> Adventures in trying to come up with something coherent based on the text of `welcome: the warg story.
20:07:17 <monqy> worse than fuckfuck............
20:07:28 <ais523> what /is/ the worst programming language?
20:07:34 <kallisti> worse than poopfuck ha ha ha ha ha ha
20:07:36 <Phantom___Hoover> Is warg a Brainfuck derivative?
20:07:41 <warg> LOGO
20:07:45 <warg> hate it
20:07:51 <kallisti> logo isn't bad.
20:07:57 <ais523> nah, LOGO's quite a nice functional language, and has an output mechanism that's nice for teaching
20:08:12 <elliott> LOGO's just a perfectly good Lisp.
20:08:35 <warg> cobol gave me goosebumps
20:08:50 <Ngevd> The two best brainfuck derivatives are Ook!, which I believe was original at the time, and Bub, which has been useful for proving Muriel Turing-Complete
20:09:06 <Ngevd> That is opinion, not objective fact
20:09:10 <ais523> there are some nicely original BF derivatives; anyone remember Paintfuck?
20:09:18 * elliott does.
20:09:21 <warg> BF?
20:09:23 <warg> boyfriend?
20:09:27 <warg> bestfriend?
20:09:29 <warg> buttfuck?
20:09:30 <Ngevd> brainfuck
20:09:32 <warg> oh
20:09:41 <warg> nice
20:09:57 <warg> love them neural penetrations
20:10:00 <kallisti> warg learns about esoteric programming languages: the movie.
20:10:12 <monqy> warg actually doesn't learn about esoteric programming languages: the movie
20:10:30 <warg> warg is: the movie
20:10:40 <kallisti> monqy: no, it's a film that only ironic people understand.
20:10:41 <kallisti> ha ha.
20:10:44 <monqy> oh
20:10:45 -!- ais523 has set topic: Second to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/.
20:10:48 <ais523> there, that's a better topic
20:11:00 <kallisti> ais523: why second?
20:11:11 <ais523> because it's more interesting than first, and zeroth wouldn't make sense
20:11:14 <Ngevd> The first is too busy being on fire
20:11:18 -!- ais523 has set topic: Zeroth to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/.
20:11:28 <Klisz> yay, I win
20:11:50 <Ngevd> Have you proven spontaneuous human combustion, Klisz?
20:11:52 <warg> I like b********
20:12:00 <Klisz> Ngevd: Nope. Therefore, I am zeroth to prove it.
20:12:35 <Ngevd> Is 'a' the zeroth number?
20:12:53 <ais523> nah, *
20:13:07 <ais523> !c printf("%c",'0'-1);
20:13:13 <EgoBot> ​/
20:13:22 <ais523> err, I meant /, honest
20:13:29 <Ngevd> a is not a number. Therefore a is not the zeroth number
20:13:41 <Ngevd> Klisz has not proven spontaneous human combustion.
20:13:58 <Ngevd> Therefore Klisz is not the zeroth person to prove spontaneous human combustion.
20:14:21 <Klisz> bah, logic and reason
20:15:02 <fizzie> ^bf ,-.!0
20:15:03 <fungot> /
20:15:09 <fizzie> So short and elegurch.
20:15:23 <Ngevd> > chr (-1)
20:15:24 <lambdabot> *Exception: Prelude.chr: bad argument: (-1)
20:15:31 <Ngevd> I lose...
20:16:19 <ais523> chr (-1) is EOF, obviously
20:16:36 <warg> if you divide the number of successful attempts to prove it, which is zero, by the number of attempts to prove it, which is undefined, and multiply by 100 you will have the percentage of successful proofs.
20:16:49 <monqy> what
20:17:03 <Ngevd> 0 divided by anything is 0
20:17:06 <warg> zero divided by undefined
20:17:08 <ais523> Ngevd: except itself
20:17:17 <ais523> or a negative number
20:17:21 <ais523> wait, no, just except itself
20:17:23 <ais523> 0/-1 is 0
20:17:27 <monqy> -0
20:17:29 <warg> zero divided by infinity is zero?
20:17:36 <Ngevd> Yup
20:17:37 <monqy> infinitey isnt a number dorke
20:17:43 <monqy> B)
20:17:48 <ais523> 0/+inf = NaN in floating point arithmetic
20:17:49 <warg> its a conceptual placeholder
20:17:52 <warg> like zero
20:17:52 <kallisti> actually in the extended real numbers infinity * 0 is undefined.
20:17:59 <ais523> but it's a bit weird as arithmetics go
20:17:59 <warg> zero is not a number
20:18:18 <monqy> great
20:18:35 <Ngevd> warg, you have just put mathematics back 600 years
20:18:41 <monqy> thanks a lot
20:18:45 <kallisti> warg: you and the ancient Greeks would get along quite well.
20:18:49 <elliott> warg: congratulations, you're as stupid as the greeks, but over a thousand years later!
20:18:55 <kallisti> elliott: haha jokesteal
20:18:58 <elliott> why am i feeding him
20:18:59 <elliott> sigh
20:19:00 <ais523> I thought the ancient greeks thought 1 wasn't a number either
20:19:01 <warg> welcometh to 1411 AD
20:19:19 <monqy> I like 0
20:19:20 <monqy> 1 too
20:19:22 <kallisti> ais523: that sounds right
20:19:23 <monqy> oh and 2
20:19:26 <warg> enjoyeth thy stay thou hence
20:19:29 <monqy> 3 is kind of lame though
20:19:38 <kallisti> monqy: if I enjoy n, then I enjoy n+1
20:19:40 <kallisti> I enjoy 0
20:19:43 <ais523> hmm, what person and tense is "welcome" in "welcome to #esoteric"
20:19:56 <Ngevd> Imperative
20:20:00 <warg> (x != 0)/0 = +-inf
20:20:04 <Ngevd> Present
20:20:13 <Ngevd> Possibly passive?
20:20:14 <elliott> kallisti: what kind of lameo believes in induction
20:20:21 <warg> also 8=D(0)+8
20:20:25 <kallisti> elliott: ...induction isn't a thing anymore in math?
20:20:28 <ais523> nah, I don't think it is the imperative, that would be in a sentence like "welcome kallisti to #esoteric or else"
20:20:32 <warg> and 8=D ~ ~ ~ (0)+8
20:20:37 <elliott> kallisti: not for the cool kids!
20:20:37 <monqy> warg shut up
20:20:47 <monqy> ~please~
20:20:51 <kallisti> elliott: what do they believe in? crazy constructivist hipsters.
20:21:01 <elliott> kallisti: having a good time
20:21:05 <warg> if i shut up then i can't say ok
20:21:09 <warg> and you cant say thankyou
20:21:09 <Ngevd> In this context, "welcome" can be replaced by "be welcomed"
20:21:17 <warg> and i cant say you're welcoem
20:21:25 <warg> it would be impolite to shut up
20:21:36 <zzo38> That is because you're not welcome
20:21:40 <monqy> do you deserve thanks
20:21:51 <warg> i feel so abused
20:21:53 -!- ChanServ has set channel mode: +o ais523.
20:21:54 <zzo38> Or at least, that is what they want you to think
20:21:57 <warg> i thought you loved me
20:21:59 <warg> ):
20:22:10 <Ngevd> Don't start a line with a close bracket!
20:22:15 <elliott> stop feeding him, guys
20:22:19 <warg> :c
20:22:20 <Ngevd> That upsets the bot I am sporadically writing!
20:22:22 <elliott> oh wait, ais523 opped, feed him all you want for the next five seconds :P
20:22:33 <ais523> I was trying to op earlier to change the topic
20:22:38 <ais523> but opped myself on #ais523 by mistake
20:22:41 <ais523> it's an easy mistake to make
20:22:46 <elliott> err, you can change the topic without being op here
20:22:49 <ais523> I know :)
20:22:51 <elliott> :D
20:23:07 <warg> it's the O to the P with the dough ray mee
20:23:12 <kallisti> :Y
20:23:56 <elliott> warg: Do you seriously think it's "dough ray mee".
20:24:26 <kallisti> elliott: it does make more sense than "do"
20:24:36 <kallisti> at least in english
20:24:38 <kallisti> pronunciation
20:24:41 <elliott> kallisti: Do you seriously think it's "do ray mee".
20:24:48 <kallisti> no it's do re mi
20:25:11 <kallisti> ?
20:25:32 <elliott> "[Douglas] Adams imagined, in key of humour" --Wikipedia article [[Do-Re-Mi]]
20:25:42 <elliott> Today's performance will be in the key of humour.
20:25:53 <Ngevd> Well, my latent subconcious reality warping to a supernatural level power is coming to fruition
20:25:58 <elliott> American viewers, please go next-door, for the performance in the key of humor.
20:26:03 <elliott> *next door
20:26:06 <warg> does anyone have a b******** interpretter?
20:26:19 <kallisti> warg: I have some sources.
20:26:23 <kallisti> I can hook you up
20:26:27 <warg> sweet
20:26:30 <kallisti> it's gonna cost you though.
20:26:34 <warg> being on topic keeps me from getting banned
20:26:35 <warg> :D
20:26:52 <kallisti> that logic doesn't apply to anyone else, actually.
20:27:04 <ais523> I don't think you've been on topic yet
20:27:20 <ais523> stringing together a sequence of words related to the topic != being on topic
20:27:22 <warg> i'm not the zeroth.
20:27:48 <warg> when you find the zeroth, you will know.
20:28:16 <warg> the oracle told me you would be the one to find the zeroth, and then fed me a cookie.
20:28:17 <kallisti> ais523: turing esoteric brainfuck unlambda garbage collection imperative indirection reference counting reification thread
20:28:27 <elliott> kallisti: fungot? is that you?
20:28:27 <fungot> elliott: more so than usual, t-rex? hey batman
20:28:30 <elliott> :D
20:28:43 <warg> kallisti: COMPILE ERROR
20:28:53 <kallisti> elliott: don't you remember? I'm the second markov bot.
20:29:10 <kallisti> vastly superior to fungot.
20:29:11 <fungot> kallisti: don't i know you from somewhere? but, i mean, a male, i can be one of those people are going to think you're a pedophile, and he's on a friggin'. fragile, species can survive their electrical onslaught
20:29:28 <kallisti> okay, maybe not.
20:31:11 -!- oerjan has joined.
20:32:26 <oerjan> <kallisti> based on the rules for accepted inputs I'm guessing it means that the input is rejected
20:32:30 <oerjan> yeah
20:32:41 <kallisti> yaaay
20:33:31 <oerjan> i'm not sure that you _need_ to allow that possibility, though.
20:34:13 <kallisti> well you do if the transition function is Q x E -> P(Q)
20:34:19 <kallisti> er
20:34:20 <kallisti> no
20:34:21 <kallisti> nevermind
20:34:26 <kallisti> no it's not necessary.
20:35:28 <oerjan> but e.g. for the sophic shifts that oklopol mentioned, it's the natural way to reject things, since there is no actual _end_ to the sequence and so no final state
20:36:06 <oerjan> (sophic shifts are basically regular languages generalized to infinite sequences)
20:36:14 <kallisti> ah okay.
20:37:20 <oerjan> i think there _might_ be a restriction on which FA's are allowed for that, from what oklopol said last time
20:39:00 <oerjan> i have a book on it somewhere deep in the closet, buried by the things of those housemates i still have to kill.
20:39:37 <elliott> oerjan: are you sure you don't live alone
20:39:42 <elliott> it's weird :|
20:39:44 <oerjan> elliott: not _yet_
20:39:48 <elliott> :D
20:41:54 -!- Phantom___Hoover has quit (Ping timeout: 244 seconds).
20:42:53 <warg> forever alone.
20:43:17 <warg> what is FA?
20:43:29 <oerjan> finite state automaton
20:43:29 <warg> fat admirer?
20:43:33 <warg> oh
20:43:39 <warg> something else then
20:44:55 <oerjan> warg: quite fundamental computer science
20:45:10 <warg> http://en.wikipedia.org/wiki/File:Fa_attraction.svg
20:46:14 <warg> FA vectored
20:46:16 -!- Phantom___Hoover has joined.
20:48:56 <kallisti> warg: the sharp drop on the lower median as the BMI increases represents the poser fat admirers.
20:48:56 -!- Phantom_Hoover has joined.
20:49:57 <kallisti> also lol @ BMI being used as a valid metric for overweightness.
20:50:34 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds).
20:50:52 <oerjan> true fat admirers won't be satisfied until gravitational collapse
20:53:59 <oerjan> <Ngevd> > zipWith (\a b -> (show a) ++ '-':(show b)) [1..17] [18..34]
20:54:02 <oerjan> hm...
20:54:17 <oerjan> > zipWith (-) [1..17] [18..34::Expr]
20:54:19 <lambdabot> [1 - 18,2 - 19,3 - 20,4 - 21,5 - 22,6 - 23,7 - 24,8 - 25,9 - 26,10 - 27,11 ...
20:54:56 <kallisti> oerjan: shocking
20:55:00 <Sgeo> > x - x == 0
20:55:01 <lambdabot> False
20:55:03 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:59:48 <kallisti> Sgeo: I think a simplereflect that acts more like integers/reals would be nice. but I'm not sure how feasible it is to perform complex reductions.
21:00:08 -!- Phantom_Hoover has joined.
21:02:06 <elliott> kallisti: see: the entire field of CASes
21:02:38 <kallisti> elliott: by "feasible" I meant more like "feasible for me to implement quickly" :P
21:02:55 <elliott> then no.
21:03:53 <oerjan> <Phantom__Hoover> An intercontinental ballistic brick has been launched.
21:04:08 <oerjan> Ngevd: you're lucky Phantom_Hoover doesn't know you're on the same continent
21:04:29 <Ngevd> Read about three more lines
21:04:35 <Phantom_Hoover> Ngevd already did that one and I pointed out my counterstrategy.
21:04:36 <oerjan> NEVER
21:04:46 <kallisti> Ngevd: oerjan is actually trapped in the past
21:04:54 <kallisti> Ngevd: so he's waiting for the conversation to unfold.
21:05:11 <oerjan> kallisti: depressingly enough, that thought has appeared to me before. (sense a pattern here?)
21:07:08 <oerjan> on 21 december 2012, a stray neutrino ray will be sent through the earth and hit in a particular spot in trondheim, norway, hurtling me 14 years into the past.
21:08:22 <zzo38> Is that the 2012 year predictions?
21:08:43 <oerjan> one of them.
21:08:49 <ais523> oerjan: will you be in trondheim, norway, at the time?
21:08:52 <oerjan> except of course, it already happened.
21:08:56 <ais523> or will it just be coincidence that the ray affects you?
21:09:06 <oerjan> ais523: well i'll be wherever the ray hits, obviously.
21:09:15 <zzo38> The only prediction that I am reasonably sure of is that the Mayan calendar will advance to 13.0.0.0.0
21:09:16 <ais523> oerjan: oh, I thought it might affect people somewhere it didn't hit
21:09:24 <oerjan> Y U OP
21:09:31 -!- ais523 has set channel mode: -o ais523.
21:09:41 <ais523> oerjan: in the hope that certain people would be slightly better behaved
21:09:47 <oerjan> aha
21:11:17 <oerjan> <Phantom__Hoover> Ngevd, it's going to go via Asia.
21:11:20 <zzo38> I have instance Monoid s => Extend (StateT s Identity) but is there a way to do it for any arbitrary comonad instead of only Identity comonad?
21:11:30 <oerjan> everything gets assembled in china these days.
21:15:38 * kallisti uploads his source files to chinese servers for assembly.
21:16:00 <elliott> Sgeo: Ping
21:16:07 <Sgeo> elliott, pong
21:16:18 <elliott> Sgeo: Do you have those Worms-on-Wine instructions I wrote some months ago
21:16:26 <elliott> I'm trying to geti t working on this machine :-P
21:16:26 * oerjan downloads the official red linux version of the files
21:16:30 <Sgeo> elliott, no, sorry
21:16:37 <Sgeo> I think there's something on the wiki, if that helps
21:16:39 <elliott> :''''(
21:16:47 <elliott> And yeah, I know, that's the guide I tried before writing mine, because it doesn't work.
21:16:50 <Sgeo> Oh
21:17:01 <oerjan> *red flag
21:22:07 <oerjan> <kallisti> clockpunk? that's a little new wave for me. I like magical post-nintendopunk fantasy <-- next, flint/obsidian punk
21:22:21 <oerjan> perhaps someone already did it
21:22:45 <elliott> aka minecraftpunk
21:23:07 <oerjan> hum
21:23:40 <itidus21> whats a clockpunk?
21:23:49 <Sgeo> elliott, I'm sure you can grep the logs for it?
21:24:33 <elliott> Sgeo: That's what I'm trying now, but I'm not sure I linked it in here.
21:26:41 <Phantom_Hoover> itidus21, Spades Slick.
21:27:01 <Phantom_Hoover> Wait, I suppose the Felt fit that much better.
21:29:15 -!- aloril has quit (Ping timeout: 240 seconds).
21:30:10 <oerjan> <ais523> 0/+inf = NaN in floating point arithmetic
21:30:17 <oerjan> > 0/(1/0) -- doubt it
21:30:21 <lambdabot> 0.0
21:32:52 <oerjan> <ais523> hmm, what person and tense is "welcome" in "welcome to #esoteric" <-- i think it's an adjectival phrase without a finite verb.
21:33:19 <oerjan> the norwegian is even clearer about using a participle there
21:34:25 <oerjan> while the english could be a lot of forms, infinitive, imperative or present not 3rd person
21:34:39 <oerjan> *of other forms as well
21:35:37 -!- hiato has joined.
21:35:45 <oerjan> hi ato
21:36:00 <hiato> oerjan: hi lo
21:36:22 <oerjan> long time no see
21:36:24 <hiato> huh, this place has expanded somewhat since last I was here
21:36:44 <hiato> indeed, too long. University does horrible things to certain folks
21:37:18 <oerjan> i'm not sure the number of _active_ members has increased
21:37:26 <elliott> hi hiato!
21:37:42 <hiato> oh, heh, ah well :P
21:37:47 <Ngevd> hiato...
21:37:51 <elliott> I tried to contract that but I just ended up with "hiato".
21:37:55 <hiato> elliott: :) Hello hello
21:37:58 <elliott> Phantom_Hoover: You remember hiato right???
21:38:05 <Ngevd> That name...
21:38:06 <hiato> elliott: :P
21:38:10 <Ngevd> I have never heard before
21:38:14 <Ngevd> Hello, anyway!
21:38:19 <Phantom_Hoover> hiato!
21:38:28 <itidus21> `log hiato
21:38:29 <hiato> Ngevd: I don't believe we've met, I used to be here a while back. Greetings
21:38:47 <hiato> Phantom_Hoover: Wow, so many names of yore :]
21:38:57 <HackEgo> 2009-01-11.txt:16:09:04: <Hiato> meh, you're right..
21:39:02 <warg> Cancer eating flesh
21:39:06 <Phantom_Hoover> Phantom_Hoover OF YOURE.
21:39:10 <Phantom_Hoover> Oops.
21:39:14 <Ngevd> I am pretty much an alternate version of elliott
21:39:15 <warg> Gore being posted on /b/.
21:39:21 <elliott> `addquote <Phantom_Hoover> Phantom_Hoover OF YOURE. <Phantom_Hoover> Oops.
21:39:24 <itidus21> hi hiato.. im kind of new and im not actually a mathematician. i just sort of hang around
21:39:26 <HackEgo> 758) <Phantom_Hoover> Phantom_Hoover OF YOURE. <Phantom_Hoover> Oops.
21:39:29 <warg> Smells of rotting leaves.
21:39:32 <hiato> Ngevd: lolwut
21:39:34 <elliott> hiato: Ngevd is Taneb who you also didn't know.
21:39:47 <elliott> You know me but I might have changed my nick since way back then?
21:39:51 <Phantom_Hoover> itidus21, 'not actually a mathematician' is the best description?
21:39:53 <oerjan> warg: you know, i think you have sort of got a warning about that stuff
21:39:57 <hiato> itidus21: fancy that, I too am not a mathematician. :)
21:40:00 <oerjan> consider this a second one.
21:40:02 <warg> it was a haiku
21:40:03 <elliott> I'm elliott, and I'm not actually a human.
21:40:07 <hiato> elliott: yeah, I can scarcely recall what it was
21:40:07 <warg> be nice
21:40:10 <Phantom_Hoover> It's like the simplicial complex nonexample of introductions.
21:40:13 <hiato> elliott: scarf?
21:40:19 <elliott> hiato: scarf is ais523
21:40:25 <elliott> I'm ehird or whatever my name of the week was
21:40:25 <hiato> elliott: oh, right, my bad
21:40:40 <hiato> elliott: no, no, I remember *you* just not all your nicks
21:40:41 <hiato> :P
21:40:48 <elliott> :D
21:41:02 <elliott> i've stayed on this one ever since i got it
21:41:19 <Ngevd> Yeah, on my first? second? day here, I found out that me and elliott live in the same comparatively small town
21:41:21 <hiato> hrmm, yeah, I remember ehird, and something else (now that you mention it)
21:41:33 <Phantom_Hoover> Ngevd, don't exaggerate; you'd been here for like a week.
21:41:34 <hiato> Ngevd: what, really? Sheesh, fancy that.
21:41:45 <elliott> Ngevd: "Comparatively"?
21:41:46 <Ngevd> It was on my first or second day
21:41:46 -!- aloril has joined.
21:41:56 <elliott> Hexham is small by any measure unless you live in a village.
21:41:59 <hiato> Ngevd: first, second day
21:42:08 <Phantom_Hoover> elliott, but it has an ABBEY
21:42:14 <elliott> Ngevd: I don't think it was your first or second day.
21:42:14 <Ngevd> `pastelogs Taneb
21:42:19 <elliott> Maybe fourth day or so.
21:42:24 <fizzie> elliott: You had that thing, that one thing, that... that thing, what was that thing? 'alise'?
21:42:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.665
21:42:41 <hiato> fizzie: I seem to recall that too
21:42:53 <elliott> fizzie: I mentally read that as a rap.
21:42:58 <elliott> It was shit.
21:43:02 <fizzie> Everyone's always these five-character names.
21:43:14 <hiato> elliott: thing rhymes with thing, so it's nota ll that bad
21:43:20 -!- myndzi has quit (Read error: Connection reset by peer).
21:43:25 <elliott> fizzi: Indeed.
21:43:55 -!- myndzi has joined.
21:44:43 <itidus21> `pastelogs itidus
21:44:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7452
21:45:16 <monqy> hi
21:45:42 <itidus21> weird. my own logs seem terribly weird
21:45:57 <oerjan> shocking!
21:46:06 <itidus21> lol
21:46:48 <itidus21> im not sure if everything in my log is true, but i believed it at the time
21:46:55 <hiato> Ngevd: I must say, I rather like your Brook lang. ... and that's about my compliment quota for this fine sunday
21:47:15 <elliott> Get back to hating things!
21:47:21 <elliott> It's what we do in here. All day long.
21:47:37 <Ngevd> hiato, challenge: prove (or disprove) it turing-complete
21:47:37 <itidus21> `log piece of junk
21:47:40 <elliott> We started out hating new esolangs, but there weren't enough of them to fill the day, so we branched out to hating everything in existence.
21:47:44 <HackEgo> 2011-12-11.txt:21:47:37: <itidus21> `log piece of junk
21:47:47 <Ngevd> `quote hiato
21:47:50 <HackEgo> No output.
21:47:59 <hiato> Ok, so how about I hate on ANSI C for a while? Or the fact that K&R in my country is probably worth more than a kidney. Ehh.
21:48:00 <itidus21> `log crappy
21:48:06 <HackEgo> 2009-08-18.txt:00:09:09: <oklokok> weird, since there's tons of crappy stuff
21:48:15 <Ngevd> `quote Taneb
21:48:18 <HackEgo> 463) <Taneb> Turned out he got recursion, he just didn't get the return statement \ 469) <Taneb> Cut to February <Taneb> War were declared <Taneb> A galaxy in turmoil <Taneb> Anyway, Febuary '10 \ 470) <Taneb> I can't afford one of those! <Taneb> A grandchild, not a laser printer \ 477) <fizzie> There's that saying that the definition of insanity is doing the same thing over and over again and expecting different
21:48:20 <hiato> elliott: seems like that task may yet take some time to complete
21:48:23 <elliott> hiato: I'm down to hate C, but didn't you use /Delphi/ way back?
21:48:40 <Ngevd> `quote Ngevd
21:48:43 <HackEgo> 651) <Ngevd> Dammit, Gregor, this is not the time to fall in love \ 657) [in the context of Open University] <Ngevd> "Unlike other operating systems, Linux operating systems use Linux" \ 660) <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov \ 662) <Phantom__Hoover> Also you steal Berwick from us and then
21:48:44 <hiato> elliott: Oh. Yes. Those days. I ... I try not to think about them too much.
21:48:49 -!- kmc has quit (Quit: Leaving).
21:48:57 <Ngevd> I say a lot
21:48:58 <elliott> :D
21:49:02 <Ngevd> Of stipid things
21:49:09 <elliott> hiato: Were you around when fungot was?
21:49:10 <fungot> elliott: are you a person who uses phrases at incorrect times? but then what's more likely: that we're the only ones for cows would say, hello t-rex, what is the deal"
21:49:17 <hiato> elliott: Yessir
21:49:29 <elliott> !c printf("I got revamped\n");
21:49:32 <EgoBot> I got revamped
21:49:33 <hiato> and I was here to witness two people break it, I believe
21:49:40 <hiato> nice
21:49:43 <elliott> `run for i in 1 2 3; do echo "I'm new"; done
21:49:45 <HackEgo> I'm new \ I'm new \ I'm new
21:49:50 <hiato> but is EgoBot still in befunge9x?
21:50:07 <Ngevd> I tried to write a bot in Piet
21:50:13 <Ngevd> It got as far as joining the channel
21:50:36 <elliott> hiato: It never was.
21:50:39 <elliott> fungot is the funge one.
21:50:39 <fungot> elliott: and so: " probably not!" um i have nothing to declare that this is, like, a 50/ 50 mixture of both societal and biological self, all that gets us is a murky combination of influences, predisposition, anyways. the point is that i came, i'd have to throw away a good chunk of it for the days i've already lived.
21:50:40 <hiato> Ngevd: that is rather impressive. Did you code a custom I/O interface into the interp or redirect I/O or what?
21:50:46 <Ngevd> netcat
21:50:49 <elliott> EgoBot is the bunch-o'-esolangs one (now bunch-o'-languages in general).
21:50:57 <hiato> elliott: ah, my memory fails me then
21:51:01 <elliott> HackEgo runs arbitrary Linux commands.
21:51:04 <elliott> Oh, I forgot lambdabot!
21:51:05 <hiato> elliott: cool :D
21:51:11 <elliott> > text "I'm a very old bot but I only came here semi-recently."
21:51:12 <lambdabot> I'm a very old bot but I only came here semi-recently.
21:51:22 <elliott> (It runs Haskell, mostly.)
21:51:26 <hiato> nice :D
21:51:42 <elliott> There, now we've introduced the IMPORTANT channel members (the bots, of course).
21:51:54 <hiato> > filter (\x -> x `mod` 2 == 0) [1..10]
21:51:54 <Sgeo> Sweet Bro and Hello Jeff. Sweet Bro, and Hella Jeff. Sweet Bro and Hella Jeff. Sweet Bro and Hella Jeff.
21:51:56 <lambdabot> [2,4,6,8,10]
21:51:59 <hiato> :D
21:51:59 <monqy> Sgeo: hi
21:52:29 <elliott> hiato: So you went from Pascal to Haskell? :-)
21:52:49 <hiato> elliott: yep, made it all the way through a one letter change
21:52:55 <monqy> hascal
21:53:04 <hiato> and then through java and python to C and ASM
21:53:13 <elliott> hiato: I find your definition of "change" suspicious :P
21:53:17 <hiato> and other stuff along the way, but that's where I am now
21:53:21 <hiato> elliott: ;)
21:53:30 <elliott> Java :( Python :( C :( Assembly :(
21:53:33 <elliott> Chorus of frowns.
21:53:37 <monqy> :(
21:53:56 <hiato> whenever I tell people I like 'Haskell' they hear 'Pascal'. Curse you writherian dude (spelling pending)
21:54:06 <hiato> elliott: ASM & C are great, the rest, not so much
21:54:17 -!- oerjan has quit (Remote host closed the connection).
21:54:18 <Sgeo> hiato, same here (about people hearing 'Pascal')
21:54:26 -!- oerjan has joined.
21:54:35 <Phantom_Hoover> hiato, no, hate Curry for having such a weird first name.
21:54:37 <monqy> if you say haskell fast enough they won't have time to hear pascal
21:54:40 <elliott> hiato: x86 assembly certainly isn't great :P
21:54:48 <oerjan> bloody isp
21:54:51 <elliott> I hear ARM is quite nice though.
21:54:58 <hiato> elliott: for some definition of great, it is :P
21:55:06 <monqy> great enough
21:55:28 <hiato> Phantom_Hoover: no, I reject your proposal and distribute my hate 100:0 Curry:Writher (whatever his name was)
21:55:42 <elliott> Wirth.
21:55:47 <hiato> write
21:55:50 <hiato> *right
21:55:54 <elliott> Rong.
21:55:59 <hiato> potato potato
21:56:16 <monqy> wpotato
21:56:31 <monqy> potatoe?
21:56:52 <hiato> doesn't Writher sound so much more capricious a fellow than Wirth?
21:57:09 <hiato> I think so. Ergo, Pascal was invented by Writher.
21:57:13 <elliott> Terminally so.
21:57:51 <hiato> I can even give you a proof by picture, if you so desire
21:57:51 <itidus21> so what would be interesting is to hear what dennis ritchie has to say about haskell
21:58:09 <elliott> dude
21:58:11 <elliott> he's dead.
21:58:11 <hiato> *had
21:58:18 <itidus21> he's probably talked about it
21:58:36 <elliott> i find that very unlikely
21:58:48 <elliott> functional programming in general, sure
21:58:49 -!- oerjan has quit (Remote host closed the connection).
21:59:01 <hiato> well, he may have mentioned it in passing, but I doubt he talked specifically about haskell
21:59:30 <elliott> the opinions of most "famous" imperative programming people on functional programming tends to be uninteresting, anyway
21:59:50 <elliott> usually it comes down to "I prefer writing imperative code [+ probably 'I think people in general do']" because of inertia
21:59:56 <itidus21> elliott: but i would expect dennis ritchie to be different
22:00:12 <itidus21> but maybe it's a blind hope
22:01:09 -!- hiato has changed nick to op_4.
22:01:31 <op_4> \o/ and this nick was unregistered
22:01:40 <elliott> op_4 is a lot less pronouncable than hiato.
22:01:43 <fizzie> fi:paska == en:shit, which makes the "pascal" language the BUTT of some rather bad jokes.
22:01:47 <op_4> opfour?
22:01:59 <elliott> op_4: That misses the underscore!
22:02:02 <op_4> fizzie: :P
22:02:13 <op_4> opund er scorefour
22:02:47 <elliott> This is worse than when Taneb became Ngevd. :''(
22:02:52 * elliott weeps openly.
22:02:59 <Ngevd> That was Gregor's idea
22:03:06 <Ngevd> And I kept calling myself Taneb IRL
22:03:15 <monqy> gregor.......
22:03:18 <itidus21> digging around i discover: "Why Pascal is Not My Favorite Programming Language", Brian Kernighan's 1981 extended rant against Pascal.
22:03:19 <Ngevd> At least Ngevd is almost my actial name
22:03:22 <Phantom_Hoover> <elliott> This is worse than when Taneb became Ngevd. :''(
22:03:33 <Ngevd> *actual
22:03:33 <Phantom_Hoover> Just say it as it sounds, duh.
22:03:40 <elliott> itidus21: you want to know what Ritchie says about something but haven't even read that?
22:04:00 <elliott> Ngevd: Taneb is a better name than your actual name, you should change your name to Taneb.
22:04:02 <itidus21> yup
22:04:06 <op_4> Ngevd: what was the idea? Short of that, ssuggested pronounciation?
22:04:30 <Phantom_Hoover> elliott, I remember, that was my first exposure to Ritchie.
22:04:44 <Phantom_Hoover> (I learned Pascal first and I had this nagging sense that it was crap.)
22:04:44 <op_4> Ngevd: actual name? Wait, you have a ... life ... *and* a name?
22:05:08 <op_4> Phantom_Hoover: ditto
22:05:28 <Phantom_Hoover> Except I then learnt Python and CL within about a week.
22:05:41 <Ngevd> Ngevd is pronounced ng from thing, e from ten, ved from loved
22:06:22 <Ngevd> My initials are NGvD
22:06:31 <op_4> :S <-- that is what my face does when I try to say it
22:06:33 <op_4> it's not pretty
22:06:34 <Ngevd> I almost had an extra middle name, Elliott
22:06:40 <elliott> Phantom_Hoover: "Learnt".
22:06:48 <Ngevd> Which would make me NGEvD
22:06:55 <Ngevd> Hence Ngevd
22:07:01 <op_4> aha
22:07:06 <op_4> yet more coincidences
22:07:09 <Phantom_Hoover> elliott, perfectly cromulent.
22:07:25 <elliott> Phantom_Hoover: No, I was saying that you can't learn two languages in a week.
22:07:31 <elliott> You can't even learn one language in a week.
22:07:34 <Ngevd> My great-great grandmother was called Elliott
22:07:46 <Phantom_Hoover> Ah.
22:07:58 <op_4> I'd never considered that it could be a women's name
22:08:03 <Ngevd> No wait, one more great
22:08:07 <Ngevd> And it was a surname
22:08:11 <warg> http://images.4chan.org/b/src/1323641144829.png
22:08:30 <warg> oops wrong channel
22:08:41 <warg> was supposed to be #wikipedia-en
22:08:42 <op_4> now that makes sense
22:12:27 <elliott> op_4: A name for multiple women?
22:12:37 <itidus21> elliott: just one of these mornings for me
22:13:01 <op_4> elliott: I admit defeat to the all too subtle rules of grammar
22:13:06 <op_4> correction?
22:13:11 <itidus21> it got creepy hunting ritchie quotes pretty quickly
22:13:13 <elliott> *woman's :P
22:13:47 <op_4> aha
22:13:51 <op_4> :P
22:18:16 -!- Ngevd has quit (*.net *.split).
22:18:17 -!- ineiros has quit (*.net *.split).
22:18:17 -!- olsner has quit (*.net *.split).
22:18:17 -!- myndzi has quit (*.net *.split).
22:18:17 -!- derdon has quit (*.net *.split).
22:18:17 -!- augur has quit (*.net *.split).
22:18:17 -!- Madoka-Kaname has quit (*.net *.split).
22:18:18 -!- shachaf has quit (*.net *.split).
22:18:18 -!- rodgort has quit (*.net *.split).
22:18:19 -!- Zwaarddijk has quit (*.net *.split).
22:18:19 -!- coppro has quit (*.net *.split).
22:18:20 -!- MDude has quit (*.net *.split).
22:18:20 -!- const has quit (*.net *.split).
22:18:21 -!- Zetro has quit (*.net *.split).
22:18:21 -!- tswett has quit (*.net *.split).
22:18:22 -!- SimonRC has quit (*.net *.split).
22:18:22 -!- FireFly has quit (*.net *.split).
22:18:23 -!- aloril has quit (*.net *.split).
22:18:24 -!- TeruFSX has quit (*.net *.split).
22:18:24 -!- lambdabot has quit (*.net *.split).
22:18:25 -!- sebbu has quit (*.net *.split).
22:18:25 -!- h[A]gb4rd has quit (*.net *.split).
22:18:25 -!- Gregor has quit (*.net *.split).
22:18:25 -!- HackEgo has quit (*.net *.split).
22:18:25 -!- EgoBot has quit (*.net *.split).
22:18:25 -!- yiyus has quit (*.net *.split).
22:18:25 -!- cheater_ has quit (*.net *.split).
22:18:25 -!- copumpkin has quit (*.net *.split).
22:18:26 -!- mtve has quit (*.net *.split).
22:18:26 -!- atehwa has quit (*.net *.split).
22:18:26 -!- kallisti has quit (*.net *.split).
22:18:26 -!- jix has quit (*.net *.split).
22:18:27 -!- fungot has quit (*.net *.split).
22:18:29 -!- Phantom_Hoover has quit (*.net *.split).
22:18:29 -!- Klisz has quit (*.net *.split).
22:18:29 -!- ais523 has quit (*.net *.split).
22:18:29 -!- elliott has quit (*.net *.split).
22:18:29 -!- Sgeo has quit (*.net *.split).
22:18:30 -!- Nisstyre has quit (*.net *.split).
22:18:30 -!- clog has quit (*.net *.split).
22:18:31 -!- op_4 has quit (*.net *.split).
22:18:31 -!- azaq23 has quit (*.net *.split).
22:18:31 -!- itidus21 has quit (*.net *.split).
22:18:31 -!- Deewiant has quit (*.net *.split).
22:18:31 -!- yorick has quit (*.net *.split).
22:18:32 -!- Betawolf33 has quit (*.net *.split).
22:18:32 -!- warg has quit (*.net *.split).
22:18:33 -!- Slereah has quit (*.net *.split).
22:18:33 -!- fizziew has quit (*.net *.split).
22:18:33 -!- fizzie has quit (*.net *.split).
22:18:34 -!- twice11 has quit (*.net *.split).
22:18:34 -!- monqy has quit (*.net *.split).
22:18:34 -!- zzo38 has quit (*.net *.split).
22:18:34 -!- Vorpal has quit (*.net *.split).
22:18:34 -!- quintopia has quit (*.net *.split).
22:19:50 -!- olsner has joined.
22:19:50 -!- ineiros has joined.
22:19:50 -!- Ngevd has joined.
22:19:50 -!- Zwaarddijk has joined.
22:19:50 -!- fungot has joined.
22:19:50 -!- jix has joined.
22:19:50 -!- kallisti has joined.
22:19:50 -!- clog has joined.
22:19:50 -!- Nisstyre has joined.
22:19:50 -!- Sgeo has joined.
22:19:50 -!- elliott has joined.
22:19:50 -!- ais523 has joined.
22:19:50 -!- Klisz has joined.
22:19:50 -!- Phantom_Hoover has joined.
22:19:50 -!- tswett has joined.
22:19:50 -!- Zetro has joined.
22:19:50 -!- shachaf has joined.
22:19:50 -!- coppro has joined.
22:19:50 -!- myndzi has joined.
22:19:50 -!- aloril has joined.
22:19:50 -!- derdon has joined.
22:19:50 -!- cheater_ has joined.
22:19:50 -!- sebbu has joined.
22:19:50 -!- h[A]gb4rd has joined.
22:19:50 -!- augur has joined.
22:19:50 -!- TeruFSX has joined.
22:19:50 -!- copumpkin has joined.
22:19:50 -!- Madoka-Kaname has joined.
22:19:50 -!- mtve has joined.
22:19:50 -!- atehwa has joined.
22:19:50 -!- lambdabot has joined.
22:19:50 -!- Gregor has joined.
22:19:50 -!- HackEgo has joined.
22:19:50 -!- EgoBot has joined.
22:19:50 -!- yiyus has joined.
22:19:50 -!- FireFly has joined.
22:19:50 -!- SimonRC has joined.
22:20:03 -!- op_4 has joined.
22:20:03 -!- azaq23 has joined.
22:20:03 -!- itidus21 has joined.
22:20:03 -!- Deewiant has joined.
22:20:03 -!- yorick has joined.
22:20:03 -!- Betawolf33 has joined.
22:20:12 <itidus21> welcome back folks
22:20:49 <Ngevd> Wow, that's one big netsplite
22:20:51 -!- warg has joined.
22:20:51 -!- Slereah has joined.
22:20:51 -!- fizziew has joined.
22:20:51 -!- fizzie has joined.
22:20:51 -!- twice11 has joined.
22:20:58 <elliott> -Martinp23- [Global Notice] Hi everyone. Tonight should be our final night of upgrades of ircd-seven for the time being. The servers affected today are card, asimov, and verne. There'll be large netsplits. If you're on a server which will restart, I'll send you a message in a moment. Enjoy the ride - duration about 30 mins! :)
22:21:03 <elliott> oh hm
22:21:07 <elliott> i guess it was a real netsplit
22:21:16 <elliott> since that wasn't 30 minutes
22:21:26 <elliott> oh but the upgrades are probably being spread out
22:21:27 <elliott> so yeah
22:21:29 <itidus21> :o
22:22:19 -!- MSleep has joined.
22:23:30 <itidus21> so someone mentioned the wumpus before
22:23:37 -!- rodgort has joined.
22:23:47 <Ngevd> Possibly me?
22:24:10 -!- warg has changed nick to NCommander.
22:24:10 -!- aloril has quit (Ping timeout: 255 seconds).
22:24:27 -!- NCommander has changed nick to warg.
22:24:48 -!- variable has joined.
22:25:14 -!- variable has quit (Excess Flood).
22:25:28 -!- quintopia has joined.
22:25:34 -!- monqy has joined.
22:25:45 -!- Vorpal has joined.
22:26:42 -!- zzo38 has joined.
22:27:16 <Vorpal> hm
22:28:11 -!- itidus21 has quit (Ping timeout: 240 seconds).
22:28:24 -!- MSleep has changed nick to MDude.
22:28:39 <kallisti> monqy: bye
22:28:39 -!- itidus20 has joined.
22:28:43 <monqy> kallisti: hi
22:35:05 -!- variable has joined.
22:36:59 <op_4> 'nyway, I'm off. Cheers folks.
22:37:18 <Ngevd> Goodbye
22:37:22 <elliott> bye :)
22:37:47 -!- aloril has joined.
22:40:17 <elliott> huh where's oerjan gone
22:45:02 <itidus20> i'm afraid the netsplitter will be fully operational when your friends arrive
22:45:32 <elliott> :D
22:47:56 -!- deranged762 has joined.
22:48:07 <deranged762> hello?
22:48:25 <kallisti> deranged762: hi
22:48:46 <deranged762> hello, anyone feel like talking to me?
22:48:55 <itidus20> `welcome
22:48:58 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
22:49:24 <deranged762> ok, so ill start straight
22:49:27 <elliott> ais523: why does calloc take two parameters, again?
22:49:53 <deranged762> wait, is this about esoteric stuff or is this channel about computer language programming?
22:50:04 <kallisti> yes.
22:50:10 <deranged762> yes what
22:50:14 <itidus20> one of those .. lol
22:50:21 <deranged762> which one
22:50:27 <quintopia> the latter
22:50:30 <monqy> esoteric programming languages
22:50:35 <monqy> is that esoteric enough for you
22:50:35 <itidus20> well... you would have to be initiated to find that ou----
22:50:46 <deranged762> lol i need spiritual advise
22:50:48 <quintopia> dammit where's oerjan's pan when we need it
22:50:59 <deranged762> u should call this channel different ffs
22:50:59 * quintopia swings an empty hand at itidus
22:51:03 <elliott> deranged762: you're on the wrong network.
22:51:08 <elliott> this network is about computer stuff.
22:51:11 <elliott> the fault is your own entirely
22:51:19 <deranged762> i see that wheres the real esoteric stuff then
22:51:25 <elliott> nowhere
22:51:27 <monqy> are you calling us fake
22:51:28 <quintopia> well, we could tell you but we'd...
22:51:29 <deranged762> nowhere?
22:51:40 <elliott> there's a channel on here about it from two people that came here expecting that
22:51:40 <kallisti> elliott: I thought we had a backup channel for that?
22:51:45 <kallisti> oh.
22:51:45 <elliott> but (a) I can't remember what it's called
22:51:48 <elliott> and (b) there's only two people in it.
22:51:55 <kallisti> wasn't it like #spirituality or something ?
22:52:02 <deranged762> lol rly...
22:52:11 <zzo38> I don't know???
22:52:12 <elliott> i keep thinking it's #philosophy but I think there's a more respectable channel there
22:52:17 <monqy> #jesus
22:52:20 <elliott> lol
22:52:22 <elliott> yeah go to #jesus deranged762
22:52:23 <kallisti> deranged762: try.... quakenet or rizon or... EFNet? those are all pretty big IRC networks.
22:52:31 <zzo38> You could try a different network, it depend exactly what you wanted.
22:52:37 <elliott> kallisti: efnet's #esoteric is just one guy from that channel whose name I can't remember
22:52:42 <elliott> deranged762: the only recommendation I can have is to get better interests.
22:52:45 <elliott> *can give
22:52:55 <kallisti> like esoteric programming languages! lol yeaaaah
22:53:05 <deranged762> y the fuck would i go to a jesus channel fuck off dude
22:53:15 <quintopia> -.-
22:53:16 <kallisti> lol
22:53:18 <zzo38> deranged762: O, sorry
22:53:55 <elliott> zzo38: you didn't point deranged762 to #jesus :P
22:54:03 <quintopia> deranged762: suffice it to say, you have come to the wrong place. these are not the droids you're looking for.
22:54:09 <elliott> deranged762: btw you're unlikely to receive even cursory politeness if you're an ass to us
22:54:26 <deranged762> well i only react properly to ur harasment
22:54:29 <elliott> admittedly, you're probably going to be in this channel for another like 3 minutes maximum, so it doesn't matter much
22:54:34 <elliott> deranged762: nobody here has harrassed you.
22:54:38 <itidus20> i was a smartass
22:54:51 <elliott> we told you you were in the wrong place, I told you there was no better place we knew of, and monqy referenced an in-joke.
22:55:01 <deranged762> well u guys probably dont believe anything that cant be proved
22:55:10 <deranged762> its a fundamental matter
22:55:15 <kallisti> that's irrelevant though.
22:55:21 <kallisti> (but yes, most likely)
22:55:22 <elliott> one of our ops is a theist, I believe.
22:55:32 <kallisti> elliott: oh really?
22:55:37 <zzo38> deranged762: Not necessarily...... however some things cannot be proved how can you know anything? Some things you have to be axioms too
22:55:40 <elliott> kallisti: oerjan.
22:55:47 * kallisti am surprised
22:55:50 <quintopia> zzo38++
22:56:06 <elliott> deranged762: but yes, if you'd like some smart-ass naturalism, I'm available
22:56:31 <quintopia> you're available because no one wants you :P
22:56:39 <elliott> so true ;__;
22:56:40 <deranged762> well... yeah... nevermind, its just retarded to only believe things that can be proven
22:56:45 -!- warg has quit (Ping timeout: 252 seconds).
22:56:54 <elliott> So what do you do, only believe things that can't be proven?
22:57:03 <monqy> both, elliott
22:57:03 <elliott> That's the best position I can think of.
22:57:04 <monqy> jeez
22:57:11 <elliott> monqy: Only believe things that can and cannot be proven?
22:57:12 <quintopia> i'm not retarded. i totally believe in the teapot
22:57:16 <quintopia> it's out there, man
22:57:24 <kallisti> quintopia: dude how do you KNOW?
22:57:30 <zzo38> quintopia: Do you mean the teapot that someone threw into orbit?
22:57:30 <monqy> elliott: only believe in everything
22:57:39 <deranged762> i mean, you can stay in your paradigmas as long as it suits you, in the dark ages, they burned witches, but that was alright, and the world was flat, too, thats fine, too
22:57:40 <elliott> monqy: but that... is believing... in nothing...
22:57:51 <elliott> deranged762: we don't burn anyone
22:57:52 <quintopia> kallisti: i saw the invisible pink unicorn having tea with FSM in my pineal gland last night
22:57:54 <elliott> we just laugh at them
22:57:59 <elliott> there's a big difference
22:58:02 <monqy> emotional burning
22:58:05 <elliott> but allow me to quote one who shares your viewpoints
22:58:08 <elliott> `quote matrix of solidity
22:58:11 <HackEgo> 299) <treederwright> enjoy being locked in your matrix of solidity
22:58:22 <quintopia> ^
22:58:34 <monqy> who else was there, beedaweeda?
22:58:35 <elliott> i can assure you we enjoy it very, very much
22:58:43 <elliott> monqy: nah; I forget who though
22:58:54 <zzo38> deranged762: Well, yes, of course much depends what you are doing. Assuming God exists is not the proper way to do science. But science is not everything.
22:58:56 <itidus20> i remember the matrix of solidity being in the topic for a while
22:58:57 <elliott> deranged762: btw
22:59:02 <deranged762> well can u imagine there is a technology to propel ufos for example in a way that defys our known laws of physics?
22:59:03 <elliott> deranged762: you know who believed the world was flat?
22:59:07 <elliott> those who stuck to religion over scientific evidence
22:59:11 <kallisti> quintopia: it likely means that you that the one who must come will not actually do that and you should probably reconsider the path you're taking in your life.
22:59:15 <itidus20> `log matrix of solidity
22:59:20 <elliott> deranged762: then it was PROVED the world was round
22:59:21 <HackEgo> 2011-04-15.txt:14:54:17: <Gregor> God, it's like you lock yourSELF in a matrix of solidity.
22:59:22 <elliott> just saying!
22:59:30 <itidus20> `log matrix of solidity
22:59:35 <zzo38> But science is something. You can't ignore science.
22:59:36 <HackEgo> 2011-03-10.txt:21:17:08: <elliott> ENTER MY OCTAGON AND FACE MY MATRIX OF SOLIDITY
22:59:39 <elliott> there are of course people who believe the world is flat even today, because they discard the evidence, because they don't have a belief system based on evidence.
22:59:44 <elliott> like... like you, gosh!
22:59:52 <elliott> <deranged762> well can u imagine there is a technology to propel ufos for example in a way that defys our known laws of physics?
22:59:58 <elliott> deranged762: it is perfectly possible. do you have any evidence for it?
23:00:07 <deranged762> yes i have in my head
23:00:09 <quintopia> i read it in a sci-fi book once. that totes proves it.
23:00:27 <elliott> deranged762: Better tell us, then.
23:00:28 <zzo38> deranged762: Possibly; but we would require some better science experiment to figure out more accurate laws of physics, whether or not that is the case.
23:00:32 <deranged762> but you wont be able to believe it until youve seen it with ur own eyes
23:00:44 <elliott> deranged762: I don't trust my eyes.
23:00:46 <Phantom_Hoover> Oh my god what have I missed.
23:00:51 <kallisti> deranged762: I once had a similar experience under the effects of drugs.
23:00:53 <elliott> Plenty of people have seen things with their eyes that aren't true, it's called hallucination.
23:00:53 <deranged762> well i hope you all know that science is controlled and not free
23:00:57 -!- aloril has quit (Ping timeout: 244 seconds).
23:00:59 <elliott> But if you'd like to tell us the evidence...
23:01:09 <elliott> deranged762: I can assure you that nobody is controlling you to stop you telling us the evidence you say you have.
23:01:15 <deranged762> well i can only tell you that i saw things that are impossible so to say
23:01:18 <elliott> Except for the fact that you don't have any.
23:01:30 <Phantom_Hoover> deranged762, well of course, you don't want to have to sort whackjobs like you out from actual scientists.
23:01:44 <itidus20> deranged i can show you how to enjoy this room.. you can query the logs by using that apostrophe like thing under the tilde key and then log such as: `log and then the phrase you want to look for
23:01:48 <deranged762> you call me a whackjob?
23:01:53 <itidus20> `log whackjob
23:01:59 <HackEgo> 2011-12-11.txt:23:01:48: <deranged762> you call me a whackjob?
23:02:01 <elliott> deranged762: We are the scientific legion.
23:02:03 <itidus20> oops
23:02:09 <elliott> deranged762: We will systematically ensure your evidence never gets out.
23:02:12 <zzo38> deranged762: Yes you do need to do controlled scientific experiment, it is how it work
23:02:14 <Phantom_Hoover> deranged762, it is a reasonable accolade, yes.
23:02:18 <elliott> deranged762: Tell us now so we can suppress it or you will never see the light of day again!
23:02:39 <deranged762> tell you what please?
23:02:49 <elliott> deranged762: Operatives are on the way to near Geislingen as we speak.
23:03:04 <elliott> deranged762: Disclose your evidence!
23:03:15 <deranged762> geislingen hahaha
23:03:23 <deranged762> ok nice "tracking"
23:03:26 <zzo38> If you don't disclose your evidence then what use is it
23:03:54 <elliott> deranged762: I said near Geislingen. We can't know your actual location until we see it with our own eyes.
23:04:08 <deranged762> well its fun to see how you are jumping on me to ridicule me
23:04:13 <elliott> We've had to look at every major town in Europe so we could believe in it.
23:04:16 <elliott> It took ages.
23:04:17 <deranged762> thats the usual reaction
23:04:17 <quintopia> it's fun for us too :)
23:04:35 <deranged762> yeah coz u are kind of retarded
23:04:38 * kallisti has been pretty civil so far.
23:04:39 -!- sebbu2 has joined.
23:04:44 <elliott> deranged762: Well, if this were #convince-morons-they're-morons, we'd probably be doing something else.
23:04:46 <kallisti> so has zzo38, mad props.
23:04:50 <elliott> But you guys are just so funny.
23:05:02 <Phantom_Hoover> <deranged762> thats the usual reaction
23:05:07 <quintopia> hey i have no problems with you, deranged. you believe funny things, but i won't extrapolate from that to your intelligence.
23:05:10 <monqy> I probably haven't been civil, what with that injoke reference
23:05:10 <Phantom_Hoover> A better man than you would have learnt from this.
23:05:13 <elliott> deranged762: Also, if you were smart enough not to go looking on fucking freenode of all places, you'd again be less stupid, and we'd laugh at you less were we to come across you.
23:05:32 <zzo38> And if you wanted spiritual advise, you ought to be specific anyways.
23:05:32 <monqy> oops??
23:05:39 <elliott> Phantom_Hoover: Eh, being laughed at doesn't mean much. Being wrong is rather more important.
23:05:47 <elliott> <monqy> I probably haven't been civil, what with that injoke reference
23:05:51 <deranged762> well you can laugh about whatever retarded things you want to, fact is im here and talking to you
23:05:52 <elliott> monqy: you insulted him with the name of jesus!!!
23:06:02 <elliott> deranged762: Not for long, I don't expect.
23:06:06 <Phantom_Hoover> elliott, well, when everyone you try to convince of your ideas laughs at you...
23:06:12 -!- Jafet has joined.
23:06:25 <itidus20> `log deranged
23:06:30 <quintopia> all of elliott's ideas are in-jokes. we're laughing with, not at him
23:06:31 <HackEgo> 2011-12-11.txt:23:02:12: <zzo38> deranged762: Yes you do need to do controlled scientific experiment, it is how it work
23:06:36 <itidus20> hmm
23:06:50 <itidus20> im just not having much luck with this
23:06:56 <kallisti> `quote luck
23:06:59 <HackEgo> 335) <oklopol> haha, god made one helluva blunder there :DS <oklopol> "WHOOPS HE AIN'T DEAD YET!" <oklopol> "luckily no one will believe him because christians are such annoying retards" \ 742) <elliott> right: you didn't find out you were wrong, just right in a way we failed to consider. <elliott> if only every wrong person could be so lucky \ 747) <itidus20> if only alonzo church would have anticipated the computer
23:07:00 <deranged762> some of you guys are just prove to me of how mind control works
23:07:02 <elliott> Phantom_Hoover: It's perfectly possible to be right, and laughed at. I mean, you could dress up as a clown and try and convince people of something.
23:07:24 <Phantom_Hoover> elliott, that's not very funny?
23:07:32 <elliott> Phantom_Hoover: The laughs are laughs of HORROR.
23:07:38 <Phantom_Hoover> deranged762, well, if you want to talk about the Device, now...
23:08:01 -!- sebbu has quit (Ping timeout: 252 seconds).
23:08:03 <Phantom_Hoover> (Don't talk about the Device. Ever.)
23:08:11 <elliott> deranged762: You realise that talking about how sheep-like we are in a room where not a single person believes you or cares is basically argumentum ad masturbatum?
23:08:23 <elliott> (The best kind of masturbatum!)
23:08:53 <deranged762> do you realize how low attitude really is?
23:08:56 <Sgeo> Wait, what is deranged762 claiming?
23:08:58 <deranged762> *your
23:08:59 <Phantom_Hoover> elliott, excuse me, please show me one mind control device that works on sheep?
23:09:06 <elliott> Phantom_Hoover: IT'S A SECRET.
23:09:09 <elliott> Sgeo: UFOs, man!
23:09:12 <elliott> Sgeo: UFOs!
23:09:13 <deranged762> or how low it is trying to tell me how COOL you are
23:09:24 <itidus20> Phantom_Hoover: technically it's techniques not devices
23:09:25 <deranged762> i know that you dont know SHIT
23:09:32 <monqy> deranged762: do you know shit
23:09:36 <elliott> deranged762: I think you'll find that we've been solely focused on deprecating you, not aggrandising ourselves.
23:09:38 <monqy> deranged762: please, educate us about shit
23:09:39 <deranged762> i know some... shit
23:09:45 <elliott> And I'm a shitologist thank you very much.
23:09:48 <Sgeo> deranged762, what reasons do you have for thinking aliens exist?
23:09:56 <Phantom_Hoover> deranged762, but precious little else.
23:09:58 <Sgeo> deranged762, I mean that in the sense "How did you learn about them?"
23:09:58 <elliott> It's one rung above ufology.
23:10:00 <monqy> Sgeo: we've been over this
23:10:00 <elliott> OH SNAPPPPPPP
23:10:07 <monqy> Sgeo: he has secret evidence
23:10:07 <deranged762> ufos are not related to aliens necessarily
23:10:07 <elliott> Sgeo: are you seriously trying to engage him
23:10:21 <deranged762> what makes you think they are?
23:10:23 <kallisti> Sgeo: "aliens exist" and "aliens exist and have made contact with humans" is two totally different things, btw
23:10:29 <Phantom_Hoover> Well, at least you can expand acronyms.
23:10:30 <Sgeo> kallisti, oh, true
23:10:44 <Phantom_Hoover> Of course, once you dispense with the aliens you have nothing of any great interest whatsoever.
23:10:54 <elliott> deranged762 is actually talking about Unlawful Fucking Organisations.
23:10:58 <Phantom_Hoover> "There are these things, right? And they're flying? And we're not sure what they are."
23:11:02 <Sgeo> elliott, brothels?
23:11:05 <elliott> Sgeo: YES.
23:11:11 <elliott> I'VE SEEN THEM WITH MY OWN EYES, SGEO!!!
23:11:19 <elliott> THINGS THAT ARE *IMPOSSIBLE* TO EXPLAIN
23:11:29 <deranged762> you see its a childish reaction
23:11:37 <monqy> we're all children
23:11:38 <deranged762> thats the only way you can handle this
23:11:38 <Phantom_Hoover> Maybe if you're an English pansy.
23:11:42 <monqy> sorry deranged762
23:11:47 <elliott> deranged762: I'm actually going through an existential crisis right now.
23:11:50 <elliott> You can't see my tears but they're there.
23:11:53 <kallisti> elliott is well known for being childish. :>
23:12:01 <itidus20> `log existential
23:12:02 <elliott> kallisti: Give me a break, I'm 4 years old!
23:12:03 <Phantom_Hoover> Here in Scotland we have a rigorous and well-tested theory of brothels.
23:12:08 <HackEgo> 2006-07-25.txt:04:44:20: <ihope> And you'll have to avoid existential types involving typeclasses even more.
23:12:09 <deranged762> its ok, its simply a sign of immaturity
23:12:10 <elliott> `addquote <Phantom_Hoover> Here in Scotland we have a rigorous and well-tested theory of brothels.
23:12:13 <HackEgo> 759) <Phantom_Hoover> Here in Scotland we have a rigorous and well-tested theory of brothels.
23:12:20 <itidus20> `log existential crisis
23:12:26 <HackEgo> 2011-12-11.txt:23:12:20: <itidus20> `log existential crisis
23:12:34 <itidus20> halp
23:12:37 <Phantom_Hoover> `log existential cris
23:12:44 <HackEgo> 2011-08-16.txt:03:30:07: <coppro> itidus20: if you had an existence problem, how can you be having an existential crisis?
23:13:02 <Phantom_Hoover> Conclusion: all existential crises are in some way related to itidus20
23:13:16 <kallisti> deranged762: unfortunately I've found that elliott's lack of maturity has nothing to do with him being wrong most of the time.
23:13:22 -!- aloril has joined.
23:13:35 -!- zzo38 has quit (Remote host closed the connection).
23:13:43 <elliott> kallisti: I'm actually wrong all of the time.
23:13:46 <itidus20> `log existential crisis
23:13:52 <HackEgo> 2011-12-11.txt:23:11:47: <elliott> deranged762: I'm actually going through an existential crisis right now.
23:14:01 <itidus20> `log existential crisis
23:14:01 <kallisti> elliott: no, only when you're arguing with me, obviously.
23:14:04 <kallisti> because I'm always right. :>
23:14:07 <quintopia> elliott: could you rephrase that in a logic system that is not vulnerable to the liar paradox?
23:14:08 <HackEgo> 2009-10-22.txt:04:33:20: <Oranjer> /I feel like I would enjoy/ a movie that ends in an existential crisis, if indeed such a movie exists
23:14:12 <Phantom_Hoover> `log existential crises
23:14:18 <HackEgo> 2011-07-10.txt:19:22:05: <HackEgo> 402) <Phantom_Hoover> Yeah, I went through a whole series of existential crises when I was 8 or so.
23:14:20 <elliott> kallisti: For about one day until someone else explains in tedious detail why you're wrong.
23:14:29 <elliott> quintopia: Paraconsistent logics, man!
23:14:40 <elliott> Phantom_Hoover: You could have just `quoted that.
23:14:54 <Phantom_Hoover> But this is more SPONTANEOUS
23:15:11 <quintopia> combustion?
23:15:19 <Phantom_Hoover> I win!
23:15:42 <quintopia> nope. you're too late. you're the first.
23:16:00 <elliott> The only way anyone can become the zeroth to prove spontaneous human combustion is by the counter overflowing.
23:16:10 <elliott> But it's signed, so you'll have to go all the way back to zero again.
23:16:15 <quintopia> how many bits?
23:16:18 <deranged762> well guys, thank you for your time and your insight, i enjoyed it
23:16:22 <elliott> Me too.
23:16:25 <quintopia> bye deranged762
23:16:28 <elliott> quintopia: 762.
23:16:33 <Phantom_Hoover> elliott, can I make *other* people spontaneously combust?
23:16:34 <elliott> In honour of our friend and colleague, deranged762.
23:16:37 <deranged762> hfgl
23:16:39 <elliott> RIP 2011-2011
23:16:40 <itidus20> if i was more intelligent i wouldn't fall back on the logfile system
23:16:40 <Phantom_Hoover> Thanks, deranged762.
23:16:45 <Phantom_Hoover> Theranged762.
23:16:49 -!- deranged762 has quit (Quit: IRC webchat at http://irc2go.com/).
23:16:50 <elliott> deranged762: We love you! Godspeed.
23:16:52 <elliott> :')
23:16:59 <olsner> :)
23:17:03 <Phantom_Hoover> )
23:17:08 <quintopia>
23:17:16 <kallisti> elliott: also note that I'm still right about brainbrain not actually being a different language. :)
23:17:17 <elliott> I CAN'T BELIEVE THAT GUY USED "WE USED TO THINK THE WORLD IS FLAT" AS AN ARGUMENT AGAINST SCIENTIFIC WORLDVIEWS JESUS CHRIST AHAHAHAHA
23:17:20 <kallisti> for the record
23:17:26 <Phantom_Hoover> How is that a shortening of ')', quintopia.
23:17:47 <quintopia> Phantom_Hoover: time dilation
23:17:53 <quintopia> lorentz contraction
23:18:00 <monqy> I'd use but +c :(
23:18:02 <elliott> kallisti: Not true, because you have no idea what constitutes an "IO thing"; you would consider brainfuck the same language as "cat" because "cat | brainfuck" is a brainfuck interpreter.
23:18:19 <kallisti> not at all.
23:18:37 <Phantom_Hoover> Oh dear, not another episode of "kallisti doesn't get theoretical CS".
23:18:44 <kallisti> in fact cat | brainfuck is a brainfuck interpreter for similar reasons to brainbrain
23:19:13 <elliott> kallisti: The thing is that, when presented with something that your worldview produces a contradictory answer to, you just claim it doesn't do that at all, and continue being an idiot.
23:19:29 <kallisti> how is that contradictory to my viewpoint at all?
23:19:35 <elliott> And then you ask that.
23:19:57 <kallisti> but no really. no meta plz.
23:20:14 <elliott> The meta is an extended way of saying "shut up, argumentation with you is futile".
23:20:33 <kallisti> I'm saying brainbrain is a brainfuck interpreter connected to other processing elements in a pipeline. You are arguing in the opposite direction.
23:21:16 <elliott> kallisti: For a start you're making arguments about a language based on the fact that "you can implement it like X", which is complete bullshit.
23:21:51 <Phantom_Hoover> Matrix of solidity is quote number 299???
23:22:04 <elliott> Phantom_Hoover: Quotes have grown really quickly.
23:22:10 <elliott> And a LOT of early ones were deleted.
23:22:17 <elliott> `pastelogs matrix of solidity
23:22:20 <Phantom_Hoover> On that topic!
23:22:23 <Phantom_Hoover> `quote
23:22:23 <Phantom_Hoover> `quote
23:22:23 <Phantom_Hoover> `quote
23:22:24 <Phantom_Hoover> `quote
23:22:24 <Phantom_Hoover> `quote
23:22:30 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16559
23:22:34 <HackEgo> 711) <Phantom__Hoover> Minecraft has made me view all trees as ridiculously slender.
23:22:40 <elliott> 2011-03-10.txt:22:22:29: <HackEgo> 330) <treederwright> enjoy being locked in your matrix of solidity
23:22:42 <elliott> Original quote number.
23:22:45 <kallisti> not at all, it /is/ brainfuck. it behaves exactly the same way when executed. the difference being that the output is given special meaning to other programs that are in a pipeline with it. This is basically why PSOX does not make brainfuck a new language.
23:22:54 <HackEgo> 95) <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future
23:22:54 <HackEgo> 92) <Warrigal> A person's sex is not the same thing as their penis length.
23:22:54 <HackEgo> 373) <monqy> my most fresh dream is one where I'm at a soup contest and a chicken really wants to participate but he's disqualified so he becomes the judge. when all the soups are done and he's ready to taste them he just stares at the soup and then I become the chicken and I really want to make soup
23:22:54 <HackEgo> 421) <olsner> you should know better than making þs out of wedlock
23:23:11 <elliott> kallisti: brainfuck+PSOX is manifestly its own language considered as a single unit.
23:23:29 <elliott> kallisti: Lots and LOTS of languages are "giving the output of <another language> special meaning".
23:23:36 <elliott> To reiterate, brainfuck is just giving cat special meaning.
23:24:16 <elliott> Basically what you're saying is "bf+PSOX would be a different language iff PSOX were TC".
23:24:22 <kallisti> no.
23:24:26 <elliott> "cat | bf" vs. "bf | psox".
23:24:36 <elliott> There is no difference other than the fact that PSOX is sub-TC.
23:24:43 <elliott> (Also, PSOX changes input semantics too.)
23:24:43 <tswett> Eh, I think I'd say that Brainfuck and Brainbrain are different languages that work very, very similarly.
23:24:46 <kallisti> I was under the impression that how the output of a language is treated has nothing to do with the language.
23:24:52 <itidus20> its fine so long as it doesn't enter the courtroom
23:25:02 <elliott> kallisti: You're just hopelessly confused.
23:25:05 * elliott gives up again.
23:25:25 <itidus20> oracle owns the rights to brainfuck, google owns the rights to brainbrain
23:25:26 <itidus20> :D
23:25:45 <itidus20> let the fun begin
23:26:03 <tswett> Of course, it all depends on what you mean by "language". If by "language", you mean "function from input to output", then they're different languages, since the same input can produce different output.
23:26:17 <tswett> But if by "language" you mean... something else, then they may be the same language.
23:26:57 <elliott> kallisti: Also, you've been wrong literally every single time you've had an extended "lol I'm right about <CS thing>" in here, so you should really consider being more humble about your confusion by default.
23:27:05 <kallisti> a set of strings defined by a formal language that has associated semantics?
23:27:18 <kallisti> er
23:27:18 <elliott> It mostly just serves to rile people up who are trying to help explain why you are wrong.
23:27:19 <kallisti> formal grammar
23:27:48 <tswett> kallisti: so, the "language" is simply the set of all valid inputs, and the semantics are separate from the language?
23:27:49 <kallisti> elliott: I have in no way attempted to flaunt some perceived intellectual superiority
23:28:08 <kallisti> tswett: er, no, input isn't part of that definition.
23:28:29 <kallisti> the "set of strings" is program strings
23:28:37 <elliott> kallisti: No, but your first reaction to someone trying to explain why you're completely wrong is to attempt to debate them (mostly by reiterating your position over and over again) rather than trying to reach an understanding about why you're wrong.
23:28:38 <kallisti> [++] is part of the brainfuck set but ][ is not
23:28:58 <kallisti> elliott: it is my hope that a debate will lead to further understanding? usually it doesn't though.
23:29:07 <elliott> kallisti: Yes, that's because you go about it terribly.
23:29:12 <tswett> kallisti: okay. So are you saying that it's the set that is the language, not the behavior of the strings in the set?
23:29:27 <kallisti> tswett: the semantics are also part of the language.
23:29:33 <kallisti> brainbrain and brainfuck have /identical/ semantics.
23:29:33 <elliott> Eventually someone has to decompose every single thing underlying what you're saying and go through it step by step repeatedly until you understand, which could be greatly optimised if you weren't so stubborn.
23:29:42 <monqy> but brainbrain and brainfuck have very different semantics.....................
23:29:51 <elliott> !bf_txtgen ,[.,]
23:29:56 <EgoBot> ​56 +++++++++[>+++++>++++++++++>+><<<<-]>-.>+.<++.--.>++.>+. [560]
23:29:59 <elliott> kallisti: That brainfuck program prints out ",[.,]".
23:30:12 <elliott> kallisti: That brainbrain program outputs a program which copies stdin to stdout.
23:30:27 <elliott> brainbrain is really a family of languages, parameterised on output language.
23:30:51 <elliott> But for every brainbrain(L) where ,[.,] is not a cat program in L, that brainbrain program does something different to that brainfuck program.
23:30:53 <tswett> kallisti: I guess I fail to see how, then, since ,[.,] does one thing in Brainfuck and a different thing in Brainbrain.
23:31:06 <elliott> Similarly, the language identical to brainfuck except where "." outputs the /previous/ ASCII character is not the same language.
23:31:13 <elliott> Yes, you can implement it with a trivial postprocessing stage on top of a BF interpreter.
23:31:17 <elliott> That is completely irrelevant.
23:31:34 <tswett> kallisti: I don't know where to draw the line between semantics and post-processing.
23:31:44 <kallisti> elliott: hmmm, okay that makes sense.
23:32:09 <elliott> I think what we're learning here is just that when we thought kallisti understood why I/O isn't relevant to Turing completeness, we were wrong.
23:32:36 <kallisti> elliott: this to me suggests that IO /is/ relevant to the semantics of a language.
23:32:52 <elliott> Of course it is, since programs are generally a function from input to output.
23:33:12 <elliott> Again, what we're learning is that you didn't take the right thing away from that other tedious session.
23:33:20 <elliott> I don't feel qualified to try and re-explain it, though.
23:33:26 <kallisti> no I understand.
23:33:38 <elliott> That's what you always say.
23:34:06 <tswett> Hm, I guess I can imagine thinking of a language's semantics as being separate from its I/O capabilities. It sounds difficult, though.
23:35:14 <elliott> tswett: I think you'd essentially have to take the semantics modulo any function you could apply to input or output, which would let you say "every language has no IO facilities apart from halting/not halting".
23:35:18 <itidus20> ok an analogy has occured to me
23:35:55 <kallisti> elliott: I basically was thinking of turing completeness and language semantics in the same way with regards to IO being relevant/irrelevant to them.
23:35:58 <itidus20> i suppose that the core of the language is akin to some dusty paths.. and the I/O is akin to towns
23:36:12 <itidus20> and so.. you link the towns together with these dusty paths
23:36:15 <quintopia> i have a question about brainbrain because the wiki description is confusing me. Is every brainbrain program semantically equivalent to the same IO function?
23:36:37 <itidus20> important point is the paths are dusty and were laid pre-ashphelt
23:36:46 <itidus20> or not laid at all
23:36:53 <kallisti> itidus20: this analogy is terrible.
23:36:56 <kallisti> by the way.
23:37:57 <quintopia> elliott: is there any brainbrain program that behaves differently from the brainfuck program ,[.,]?
23:38:07 <itidus20> thats just because im not very good at abstract
23:38:08 -!- oerjan has joined.
23:38:15 <quintopia> oerjan
23:38:18 <quintopia> there you are
23:38:36 <kallisti> elliott: but basically with the argument I was making, any Turing equivalent language would be considered "the same language"
23:38:40 <elliott> quintopia: um, yes
23:38:45 <oerjan> quintopia: wow, you're right!
23:38:50 <kallisti> elliott: because they all do the same thing computationally.
23:38:51 <elliott> quintopia: +++++++++[>+++++>++++++++++>+><<<<-]>-.>+.<++.--.>++.>+. takes no input and produces a cat program
23:38:54 <elliott> (compiled)
23:39:05 <elliott> quintopia: ,[.,] takes input as a brainfuck program and produces that program (compiled)
23:39:06 <elliott> (in any language)
23:39:14 <elliott> kallisti: yes.
23:39:27 <quintopia> elliott: then i really don't understand what brainbrain is :/
23:39:28 <itidus20> Every brainbrain-program is a brainfuck-program (this could sure be taken out of context :-P )
23:39:48 <quintopia> oh
23:39:50 <elliott> quintopia: brainbrain(p, input) = compile_brainfuck_to_L(brainfuck(p, input))
23:39:52 <elliott> for some L
23:39:52 <quintopia> wait i think i see
23:40:00 <elliott> kallisti: they are all of the same computational class (as was relevant before) but not the same language. right.
23:41:22 <kallisti> elliott: I guess I accidentally took IO being irrelevant to Turing completeness to also mean that it was also irrelevant to other fundamental aspects of languages.
23:41:32 <kallisti> oops.
23:42:02 <elliott> are you saying that you were perhaps... wrong again
23:42:11 <kallisti> -gasp- yes
23:42:13 <kallisti> wow amazing.
23:42:16 <elliott> shocking.
23:42:22 <kallisti> elliott: the thing about me is that
23:42:23 -!- Patashu has joined.
23:42:26 <kallisti> I am not afraid to admit I am wrong
23:42:28 <kallisti> once I realize it.
23:42:51 <elliott> yes. you just make sure to be as dunning-kruger as possible before that happens
23:43:06 <kallisti> until then, I will be pretty stubborn I guess.
23:43:31 <kallisti> next time I'll act all humble and inferior when I talk about things, to goad someone's ego into providing a good explanation.
23:43:52 <elliott> it's definitely about ego
23:44:07 <elliott> the reason we were jerks to that moron who just came in? ego
23:46:29 <elliott> oerjan: btw i think the n-cursor zipper thing can be a _lot_ simpler
23:47:17 <kallisti> elliott: I agree.
23:47:28 <oerjan> darn i _knew_ the connection lesses previously were the universe's way of telling me not to be here.
23:47:32 <oerjan> *losses
23:47:34 <elliott> :D
23:47:39 <elliott> no i figured it out
23:47:40 <elliott> ALL
23:47:40 <elliott> BY
23:47:41 <elliott> MYSELF
23:47:43 <elliott> ur too dum to understand it
23:47:45 <oerjan> whew
23:48:06 <kallisti> elliott: I still feel that the approach I worked out would be pretty adequate.
23:48:17 <elliott> kallisti: as i recall yours didn't work at all.
23:48:17 <kallisti> and would also efficiently calculate things like subsequences between two cursors.
23:48:45 <kallisti> sure it does.
23:48:59 <kallisti> I just didn't explain it very well.
23:49:35 <kallisti> I remember providing a poor explanation for how two cursors cross paths.
23:49:47 <elliott> oerjan: i think one thing that simplifies it a lot is that the tree has the same depth everywhere...
23:49:55 <elliott> that is,
23:49:57 <elliott> *
23:49:57 <elliott> / \
23:49:57 <elliott> * *
23:49:57 <elliott> / \ / \
23:49:57 <elliott> 1 2 3 *
23:49:59 <elliott> / \
23:50:01 <elliott> 4 5
23:50:03 <elliott> isn't possible
23:50:08 <elliott> (talking about binary trees for now since quadtrees are just the same...)
23:50:21 <elliott> because the space is indexed by two 32-bit coordinates
23:50:31 <elliott> so I don't see how that would be possible (if you take it as just one 32-bit coordinate, say)
23:51:31 <elliott> oerjan: (pls validate this assumption :P)
23:51:31 <kallisti> elliott: the most inefficient thing would adding or removing cursors, but shifting and reading are fast.
23:51:57 <elliott> kallisti: you will have to present your scheme in a way that doesn't involve you proposing a completely broken one and then saying "oh just add some redirection things so it works :) :) :)"
23:52:34 <oerjan> well any 2^n * 2^n field will naturally give a full tree of depth n
23:52:40 <kallisti> well essentially each cursor works like an individual zipper on its subsequences
23:52:52 <kallisti> until one subsequence is empty
23:52:55 <kallisti> and tried to shift that direction
23:53:25 <oerjan> unless you choose a bad alignment on purpose
23:54:21 <elliott> oerjan: 2^n too, surely
23:54:23 <elliott> if you do it as a binary tree
23:54:26 <elliott> oerjan: right. so the thing is that things are simplified a _lot_ since funge-98 is based around bits :P
23:54:39 <oerjan> well yes for binary
23:54:50 <elliott> oerjan: because you never, e.g. focus a branch whose neighbouring branch is a branch itself
23:54:59 <elliott> where the neighbouring tree of 1 in Branch 1 2 is 2
23:55:02 <elliott> *whose neighbouring tree
23:55:03 * Phantom_Hoover → sleep
23:55:04 -!- Phantom_Hoover has quit (Quit: Leaving).
23:55:04 <elliott> *focus a tree
23:55:53 <kallisti> when the direction you're trying to shift is empty, you swap subsequences with the neighboring cursor.
23:56:07 <oerjan> elliott: this is sort of what the cursors with typed levels were about previously
23:56:23 <oerjan> using that restriction
23:56:30 <elliott> oerjan: well ok. i can't help but feel you overcomplicated things a little :P
23:56:39 <oerjan> NEVAR
23:56:41 <kallisti> elliott: does that make sense?
23:56:54 <elliott> kallisti: no, you haven't explained how to have out-of-order cursors
23:56:57 <kallisti> it works fine for shifting and reading and writing, but I haven't thought much about adding cursors.
23:57:13 <kallisti> elliott: out-of-order in what way?
23:57:17 <kallisti> oh
23:57:17 <kallisti> well
23:57:24 <oerjan> food ->
23:58:24 <kallisti> elliott: I guess you just associate a value with each cursor and then do a linear search... you could also use a map for that if you don't mind a some extra memory overhead.
23:58:48 <elliott> kallisti: yay, you did exactly what i said you couldn't (propose a broken solution and then just go "oh well mumble mumble redirections")
23:59:02 <kallisti> broken in what way?
23:59:37 <elliott> <elliott> kallisti: no, you haven't explained how to have out-of-order cursors
23:59:53 <kallisti> I just did.
23:59:55 <kallisti> >_>
2011-12-12
00:00:09 <elliott> yes, by patching things vaguely
00:00:21 <kallisti> by adding a map which associates orderless values to cursors.
00:00:35 <kallisti> not vague. just now a composite data structure.
00:00:51 <kallisti> more memory overhead, slower add/remove
00:01:26 <elliott> *sigh* show code
00:01:35 <kallisti> sorry too lazy.
00:02:08 <elliott> well then.
00:02:30 <kallisti> what's confusing about having symbolic values or indices associated with each cursor that are irrelevant to its ordering, which are maintaining in a Map Index Cursor?
00:02:49 <kallisti> or doing a linear search to improve memory add head + add/remove time?
00:02:55 <kallisti> er
00:02:59 <kallisti> s/add head/overhead/
00:05:20 <elliott> kallisti: the thing is that what you're saying makes nos ense.
00:05:21 <elliott> *no sense.
00:06:05 <kallisti> by "out-of-order" do you mean that you have indices associated with each cursor and you want that to be unrelated to their position in the sequence?
00:06:23 <kallisti> in other words, "get cursor 5" refers to the same cursor always?
00:07:03 <oerjan> also, simple order makes no sense for quadtrees.
00:07:36 <kallisti> I thought we were talking about zippers as in regular zippers over a linear sequence.
00:07:51 <elliott> oerjan: yes, but kallisti has always tried to do list zippers, for whatever reason.
00:07:58 <elliott> kallisti: the original zipper was a tree zipper.
00:08:08 <kallisti> oh, well, okay.
00:08:10 <elliott> so "regular" is questionable.
00:08:12 <oerjan> well yes, for list zippers an order should work
00:10:04 <oerjan> because you never have a meeting of more than two branches, all the machinery i described previously should simplify immensely to something like that.
00:10:40 <oerjan> (branches including both down and upward ones here)
00:11:08 -!- warg has joined.
00:11:40 <oerjan> moreover most of it can be transfered to binary trees as long as you never focus on an inner branch
00:11:58 <oerjan> well, maybe not directly.
00:12:03 <Sgeo> FUCK GNUMERIC
00:12:09 <oerjan> but you have an order to use then.
00:12:12 <Sgeo> FUCK IT WITH A HOT POKER ROD
00:12:12 <monqy> hi Sgeo
00:12:14 <monqy> hi Sgeo
00:12:40 <quintopia> hi monqy
00:12:44 <monqy> hi
00:13:09 <Sgeo> So, I put -1/2 into a cell
00:13:12 <Sgeo> It shows up as 1/3
00:13:14 <Sgeo> erm, 1/2
00:13:32 <Sgeo> Because I have the cells set to display as fractions with a whole number
00:13:43 <Sgeo> Since the whole part is 0, Gnumeric apparently decides there's no place to put a sign
00:13:44 <elliott> hi
00:15:17 <kallisti> elliott: I assume you're familiar with generic zippers?
00:15:20 <elliott> one thing I'm unsure about is which representation to choose for this situation: http://sprunge.us/SQAK
00:15:21 <elliott> kallisti: yes.
00:15:40 <oerjan> elliott: crazy idea, use a hilbert curve as your coordinates into funge space, turn the quadtree into a binary one :P
00:15:46 <elliott> oerjan: heh
00:18:15 <oerjan> for a value of crazy equal to: someone probably thought of something similar before
00:18:41 <elliott> oerjan: you're not going to comment on that sprunge are you :(
00:18:53 <elliott> i guess it's not really clear waht i maen by it :P
00:19:11 <kallisti> elliott: solution: implement a perl interpreter: use Perl
00:19:25 <Sgeo> Am I allowed to be ticked off at pieces of junk?
00:19:29 <kallisti> no
00:19:36 <kallisti> well, yes
00:19:38 <kallisti> technically.
00:19:40 <elliott> no
00:20:09 <kallisti> elliott: I can only assume that was a no to Sgeo and not a no to my brilliant idea.
00:20:20 <elliott> it was both
00:20:24 <oerjan> completely incomprehensible, check
00:20:25 <monqy> double no :o
00:20:36 <elliott> oerjan: oh is it really
00:20:38 -!- Jafet has quit (Quit: Leaving.).
00:20:39 <elliott> sorey
00:20:41 <kallisti> elliott: you gotta warn people when you double no like that.
00:20:49 <oerjan> _or_ i haven't had enough to eat.
00:20:54 -!- Nisstyre has quit (Ping timeout: 240 seconds).
00:20:57 <elliott> oerjan: try more ets
00:21:11 <oerjan> *munch*
00:22:24 -!- Nisstyre has joined.
00:22:30 <kallisti> elliott: tree zippers look like trees except turnways.
00:22:48 <kallisti> (this should make total sense)
00:23:06 <elliott> kallisti: no, they look like a tree threaded through a http://en.wikipedia.org/wiki/Zipper
00:23:27 <oerjan> on second thought i think the universe just wanted to keep me away from deranged762.
00:23:38 <elliott> oerjan: don't stop reading the log
00:23:39 <kallisti> elliott: yes and therefore turnways
00:23:39 <elliott> because
00:23:51 <kallisti> elliott: you know nothing about turnways
00:23:52 <elliott> oerjan: he disses the ~scientific worldview~
00:24:00 <elliott> oerjan: citing THE DARK AGES AND THE FACT THAT WE USED TO THINK THE WORLD WAS FLAT
00:24:06 <elliott> seriously
00:24:23 <oerjan> he didn't mention columbus too?
00:24:24 <elliott> the spherical earth, a well-known victory of ufology
00:24:46 <elliott> oerjan: no, but he did mention us being mind-controlled
00:24:51 <elliott> unfortunately not sheeple
00:25:09 <kallisti> elliott: I think his point was supposed to be that humans have a history of having firmly established mainstream beliefs that are wrong. however, it was executed terribly. not to mention that's not a very good argument against the majority of established scientific theory.
00:25:34 <oerjan> hm where is that asimov link
00:25:40 -!- sebbu2 has quit (Ping timeout: 255 seconds).
00:26:03 <elliott> kallisti: When arguing for faith over science, try not to cite possibly *the* most famous victory of science over faith.
00:26:07 <kallisti> elliott: because there's a fundamental difference in the way science derives knowlege from the way folklore derives knowlege.
00:26:15 <kallisti> elliott: yes.
00:26:34 <oerjan> http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
00:26:42 <elliott> oerjan: (was I wrong in referring to you as a theist, btw? I don't think so but I might as well check)
00:27:09 <oerjan> i think "theist" may be too precise.
00:27:35 <kallisti> elliott: okay so tree zippers were a little confusing at first but I think I've got it now.
00:27:49 <kallisti> well, binary tree zippers.
00:27:55 <elliott> oerjan: that would be _so_ easy to mock you with :)
00:28:05 <elliott> but OK, noted
00:28:24 <kallisti> but I'm guessing n-degree trees work similarly just with more constructor arguments or a list of subtrees instead.
00:28:47 <monqy> waht
00:29:29 <kallisti> type Loc a = (Tree a, Cxt a)
00:29:32 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:29:36 <kallisti> so here the first tuple element is the entire tree, right?
00:29:43 <elliott> no
00:29:52 <elliott> it is the focused subtree
00:29:57 <kallisti> oh okay.
00:29:59 <kallisti> the thing that's left out
00:30:00 <kallisti> by the context
00:30:19 <kallisti> which is how to build the rest of the tree from that location.
00:30:23 <oerjan> kallisti: you should know that my theory which elliott dismisses as being too overcomplicated only really picks up in complexity once you have at least 3 cursors.
00:30:23 <kallisti> is that right?
00:30:34 <kallisti> oerjan: um, okay, noted.
00:30:35 <kallisti> :P
00:31:03 <elliott> oerjan: um it is too complicated because it involves something like 10 GADTs, a supporting data type requiring unsafeCoerce to implement, and you haven't told me how to implement even a single function.
00:31:05 <oerjan> kallisti: that, by the way, is a warning not to assume you can easily generalize from the 1 and 2 cases.
00:31:12 <elliott> oh, I see
00:31:24 <elliott> I thought you meant your final structure only picks up in complexity at that point
00:31:33 <kallisti> elliott: oerjan is not actually a programer.
00:31:44 <kallisti> this is probably the mistake you're making.
00:31:55 <oerjan> kallisti: I SUPPORT THAT IDEA
00:32:00 <elliott> kallisti: um he is certainly proficient enough _to_ program.
00:32:04 <monqy> whats program
00:32:07 <elliott> so I'm not sure what your point is
00:32:16 <kallisti> elliott: my point is TOTAL SERIOUSNESS
00:32:48 <oerjan> i assume since there were no comments that you've all read that asimov link before :P
00:33:08 <elliott> oerjan: no comments because i'm busy reading it
00:33:11 <oerjan> ah
00:33:26 <kallisti> aha, this makes way more sense now.
00:33:57 <elliott> kallisti: a zipper of a type is just that data type with a hole in a recursive position
00:34:10 <kallisti> well, yes, but that doesn't really help you understand the implementation
00:34:14 <elliott> (you can generalise it beyond that, but that definition is most elegant because you can derive it by taking the _derivative_ of the type by the standard derivative laws)
00:34:14 <kallisti> which is all I'm trying to do right now
00:34:18 <kallisti> I understand the /concept/
00:34:28 <kallisti> or the basic one
00:34:32 <kallisti> not the derivative stuff.
00:34:51 <elliott> you can quite literally derive the implementation for the one-hole case. that's the key to understanding
00:36:14 <pikhq_> What's this about oerjan and theism?
00:36:15 <kallisti> elliott: but my idea for an n-cursor list is satisfactory right? or did I not explain it well enough?
00:36:20 <elliott> kallisti: no
00:36:23 <elliott> well, probably for lists
00:36:26 <elliott> I don't care about lists
00:36:40 <elliott> pikhq_: oerjan is completely atheistic and holds absolutely non-naturalistic viewpoints.
00:37:07 <pikhq_> elliott: I think you a word
00:37:15 <elliott> *absolutely no, of course.
00:37:18 <kallisti> elliott: it has the added bonus that you can FIND SUBSEQUENCES BETWEEN ADJACENT CURSORS
00:37:22 <kallisti> this is probably useful for something I imagine.
00:37:33 <pikhq_> elliott: Ah, what I actually *thought* was the case re: oerjan.
00:37:38 <elliott> pikhq_: Yes.
00:38:45 <kallisti> elliott: oh, huh, you know... I just realized my n-cursor list is probably equivalent to a 2D list. :P
00:38:55 <kallisti> or a 2D sequence or whatever.
00:39:13 <kallisti> yes it is.
00:40:18 <kallisti> a cursor can be visualized as a point between two subsequences
00:40:39 <Vorpal> <oerjan> i assume since there were no comments that you've all read that asimov link before :P <-- no, just finished reading it. Interesting.
00:41:14 <pikhq_> Yeah, I'd read it before.
00:41:37 <kallisti> elliott: why are you focusing so much effort on n-cursor zippers when you only need the quadtree case?
00:41:47 <elliott> ...
00:41:47 <pikhq_> Also, you don't need to be a programmer by profession to be a programmer. To be a programmer, you just need to be able to program.
00:41:49 <elliott> kallisti: what
00:41:52 <pikhq_> And oerjan sure as heck can do that.
00:42:01 <warg> jah
00:42:06 <kallisti> elliott: oh.... nevermind.
00:42:14 <elliott> kallisti: quadtree =/= 4 cursors
00:42:16 <kallisti> elliott: right
00:42:23 <kallisti> elliott: no I didn't think that I just got briefly confused
00:42:29 <kallisti> perhaps from lack of food or something.
00:42:52 * kallisti wouldn't want you to think I'm /always/ this confused. :P
00:42:59 <Vorpal> how many cursors do you end up with in the quad tree case?
00:43:03 <kallisti> n
00:43:07 <Vorpal> oh
00:43:10 <kallisti> it varies
00:43:20 <Vorpal> yeah, makes sense when I think about it
00:43:20 <kallisti> they're instruction pointers in a fungespace, I believe.
00:43:30 <Vorpal> quad tree funge space? heh
00:43:43 <Vorpal> I believe fizzie tried that at some point with rather mediocre results
00:44:00 <elliott> Vorpal: It's not going to be a quad-tree.
00:44:00 <Vorpal> forgot what the implementation was called
00:44:24 <elliott> Vorpal: It's just that a quad-tree n-cursor zipper is a lot easier to implement as a prototype than a k-d tree n-cursor zipper.
00:44:28 <Vorpal> elliott, btw I recently learned enough maths to actually understand the CCBI2 funge space.
00:44:35 <Vorpal> it is a really nice way to do it
00:44:36 <elliott> There's maths involved?
00:45:00 <Vorpal> elliott, well, compsci/math/whatever
00:45:11 <elliott> It's... not exactly complicated.
00:45:19 <monqy> wjat is it
00:45:29 <elliott> Anyway my plan is to implement the fungespace Deewiant wants but couldn't be arsed to write.
00:45:41 <Vorpal> elliott, what is that funge space?
00:45:45 <ais523> hmm, so I've decided that I will have to write a linker
00:45:51 <ais523> for my hardware compiler
00:46:04 <Vorpal> ais523, hm. compiling to vhdl or verilog?
00:46:08 <ais523> Vorpal: VHDL
00:46:17 <Vorpal> ais523, why would you need a linker?
00:46:22 <kallisti> ais523: if you think about it a trash compactor is a kind of hardware compilre.
00:46:27 <ais523> to do libraries properly
00:46:31 <Vorpal> hm
00:46:41 <elliott> Vorpal: A k-d tree; I believe he specifically wants a bucket PR-CIF k-d tree or something.
00:46:46 <elliott> I forget the exact one he wanted.
00:46:53 <monqy> kallisti: glue: a hardware linker
00:46:56 <Vorpal> elliott, ah, yeah k-d trees are nice
00:47:02 <elliott> ais523: Do you need separate compilation? :p
00:47:09 <ais523> yes, that's the hard part
00:47:17 <ais523> well, actually, the hard part is just the object file format
00:47:26 <ais523> I can work out what entities I need in the VHDL
00:47:34 <ais523> but what I need in the object file is "VHDL with a tiny amount of metadata"
00:47:42 <elliott> ais523: why do you need separate compilation :'(
00:47:45 <ais523> I suppose I could use specially-formatted comments or something
00:47:45 -!- PiRSquared17 has joined.
00:47:52 <ais523> elliott: to prove that it's possible
00:47:55 <elliott> heh
00:48:04 <elliott> ais523: I'd just make a simple file format on top of VHDL
00:48:14 <PiRSquared17> warg: "oerjan is completely atheistic and holds absolutely non-naturalistic viewpoints"
00:48:18 <Vorpal> elliott, what is the name of the type of tree that is like k-d tree but need not be axis aligned now again?
00:48:19 <PiRSquared17> What?
00:48:22 <elliott> ais523: say, "key: value" lines with a blank line to terminate, after which the VHDL starts
00:48:27 <elliott> PiRSquared17: warg didn't say that?
00:48:29 <ais523> hmm, seems reasonable
00:48:32 <elliott> Vorpal: Dunno.
00:48:34 <PiRSquared17> Yes
00:48:35 <ais523> I think I'll make it -- key: value
00:48:39 <PiRSquared17> In #wikipedia-en
00:48:42 <ais523> so that the file can be run through a VHDL compiler unchanged
00:48:52 <elliott> PiRSquared17: hmm, warg is randomly quoting this channel in #wikipedia-en?
00:49:02 <elliott> for what reason?
00:49:16 <monqy> warg................................
00:49:17 <PiRSquared17> "oops wrong window"
00:49:17 <elliott> Because I was the one who said that, in here.
00:49:42 <elliott> PiRSquared17: For it to be the wrong window, he would have to be about to completely parrot something I say in here...
00:49:51 <elliott> or else be quoting it to somebody in private I suppose
00:50:21 <Vorpal> elliott, oh I think it is more general BSP trees I'm thinking about
00:50:22 <Vorpal> perhaps
00:50:32 <elliott> ais523: you might want to add start and end comments so that adding comments doesn't break things, then
00:50:54 <ais523> well, if it's always at the start of the file, it should be obvious to not add anything before it
00:50:58 <elliott> fair enough
00:50:59 <ais523> VHDL comments /are/ --, right?
00:51:02 <ais523> err, yes, i think so
00:51:04 <elliott> yes
00:51:06 <elliott> warg: Well?
00:52:03 <warg> I dunno, I can only get two fingers in her, maybe I should wait until she's five.
00:52:08 <warg> Ooops, wrong window.
00:52:19 <monqy> oops
00:52:49 <elliott> ais523: ^
00:52:53 <Vorpal> ......
00:52:58 <elliott> get rid of him already...
00:53:06 <warg> ...
00:53:07 <Vorpal> report to the police?
00:53:12 <warg> report what?
00:53:14 <elliott> Vorpal: obvious trolling
00:53:21 <Vorpal> elliott, I hope so
00:53:36 <monqy> reported for being an idiot on the internet
00:53:43 <monqy> jails sentence: so many years
00:53:47 <warg> the cyberpolice are backtracing my emails
00:53:51 <warg> oh noes
00:56:06 <elliott> ais523: ping
00:56:26 <kallisti> oerjan: YOU HAVE THE POWAH
00:57:39 -!- derdon has quit (Remote host closed the connection).
01:00:42 <kallisti> elliott: LOL DUDE3
01:00:49 <kallisti> elliott: an n-cursor zipper is liek
01:00:53 <kallisti> elliott: LIST OF ZIPPERS.
01:00:56 <kallisti> ..
01:01:00 <elliott> no
01:01:04 <Sgeo> I think I'm going to bite the bullet and install Libreoffice Calc
01:01:40 -!- ChanServ has set channel mode: +o oerjan.
01:01:43 <kallisti> elliott: you have to admit that it would be a possible implementation...
01:01:48 <elliott> kallisti: no, it would not
01:01:52 -!- oerjan has set channel mode: +b *!*warg@*.pdx.net.
01:01:52 -!- oerjan has kicked warg _Too_ obvious..
01:01:59 <elliott> oerjan: um that is a rather suboptimal ban
01:02:03 <elliott> seeing as this is his second alias
01:02:17 <oerjan> elliott: it's the one irssi does automatically.
01:02:20 <elliott> ah
01:02:23 <elliott> thanks, anyway
01:02:47 <elliott> I wonder why he quoted me in the first place.
01:02:50 <PiRSquared17> What is his first alias?
01:02:53 <elliott> PiRSquared17: Deathly
01:02:57 <Sgeo> o.O
01:03:00 <Sgeo> Deathly == warg?
01:03:06 <elliott> yes
01:03:14 <kallisti> elliott: why does a list of zippers not work?
01:03:27 <elliott> kallisti: you zip (1/\2)/\(3/\4) at the 1, and take another zipper at the 4
01:03:31 <elliott> you change the 1 to a 20
01:03:40 <elliott> the zipper at the 4 still sees a 1
01:03:41 -!- oerjan has set channel mode: -o oerjan.
01:03:42 <elliott> q.e.d.
01:03:48 <kallisti> ah you can't share the data, right.
01:03:58 <kallisti> UNLESS
01:04:02 <kallisti> YOU CAN SHARE THE DATA.
01:06:37 <kallisti> use IORefs and unsafeCoerce
01:06:39 <kallisti> problem solved
01:06:40 <kallisti> :)
01:07:50 <elliott> oerjan: finally i have shifted the complexity from the types to the algorithms :P
01:08:16 <kallisti> that's good. more time. less memory.
01:08:37 <oerjan> elliott: well assuming your types work, that is.
01:09:19 <elliott> oerjan: snarky :P
01:09:49 <oerjan> elliott: i don't quite see where you are supporting more than 1 cursor.
01:09:58 <elliott> data Tree a = Tip a | Branch (Tree a) (Tree a) deriving (Show)
01:09:58 <elliott> data Dir = L | R deriving (Show)
01:09:58 <elliott> data Ctx a = Top | Fork Dir (Tree a) (Ctx a) deriving (Show)
01:09:58 <elliott> type Zipper a = (a, Zipper a)
01:09:58 <elliott> data NCtx a = Connect Dir | NFork Dir (Tree a) (NCtx a) deriving (Show)
01:09:59 <elliott> type NZipper a = (a, NCtx a)
01:10:01 <elliott> data ZipNode a = Subtree (Tree a) | Zipper (NZipper a) deriving (Show)
01:10:03 <elliott> type NZippers a = Zipper (ZipNode a)
01:10:05 <elliott> that might help, it's the full thing
01:10:08 <elliott> focus :: [Dir] -> Tree a -> NZippers a
01:10:16 <elliott> moveCurrentZipper :: Dir -> NZippers a -> NZippers a, etc.
01:10:31 <elliott> moveToNextZipper :: NZippers a -> NZippers a, and so on
01:10:47 <elliott> well this _does_ force zippers to be arranged in space order internally, but even yours did that
01:10:58 <elliott> and the overhead of maintaining a list of paths to each zipper should be small
01:11:13 <oerjan> elliott: type Zipper a = (a, Zipper a) ? ;P
01:11:35 <elliott> oerjan: THAT'S WHERE THE POWER COMES FROM!!!
01:11:39 <elliott> fixed :P
01:13:10 <oerjan> well what was that supposed to be, it's rather essential
01:13:25 <kallisti> s/Zipper/NCtx/
01:13:26 <elliott> oerjan: (a, Ctx a)
01:13:30 <elliott> kallisti: no!
01:13:34 <kallisti> the second one
01:13:36 <kallisti> I meant
01:13:41 <elliott> <elliott> type NZipper a = (a, NCtx a)
01:13:42 <kallisti> ambigiuous blah
01:13:43 <elliott> that one was already fixed.
01:13:48 <elliott> kallisti: not the second one.
01:13:50 <elliott> you are wrong
01:13:51 <kallisti> oh okay.
01:14:35 <Sgeo> I hate Libreoffice why am I installing it just because the alternative sucks more
01:15:00 <kallisti> because the alternatives suck more.
01:15:16 <kallisti> also because
01:15:19 <kallisti> there are no other reasons.
01:16:32 * kallisti nobel prise
01:16:41 <kallisti> s/nobel/noble/
01:17:09 <oerjan> ...
01:17:13 <elliott> oerjan: actually focusN :: Tree a -> NZippers a
01:17:17 <elliott> the whole thing starts as one big Subtree
01:17:18 <elliott> node
01:17:23 <elliott> = 0 zippers
01:17:38 -!- calamari has joined.
01:18:29 <kallisti> oerjan: it's important that I misspell correctly.
01:18:52 <elliott> oerjan: now to write addZipper :: [Dir] -> NZippers a -> NZippers a...
01:19:04 <oerjan> elliott: good luck
01:19:28 <elliott> oerjan: hey, at least i already know what a 2-zipper case of a simple tree looks like...
01:19:56 <elliott> hm i think the NCtx thing is unnecessary, the direction can always be inferred
01:20:08 <elliott> it's the last path element you need to get to the tree in the metatree
01:20:22 -!- sebbu has joined.
01:20:23 -!- sebbu has quit (Changing host).
01:20:23 -!- sebbu has joined.
01:21:17 <oerjan> which means that Ctx ~ NCtx
01:21:40 <kallisti> elliott: SUCKER
01:21:47 <elliott> oerjan: yes, that's the point :)
01:22:06 <elliott> oerjan: you can jut look at the Fork in the metatree, basically
01:22:32 <kallisti> the great tree beyond...
01:25:13 <kallisti> why does tartar have so many different meanings...
01:25:16 <elliott> oerjan: i have a feeling a lot of complexity is added by the final step
01:25:20 <kallisti> that are COMPLETELY IRRELEVANT to one another.
01:25:21 <elliott> oerjan: i.e. zipperising the tree of zippers
01:25:42 <elliott> oerjan: and actually I'm not sure it helps much; the order zippers are traversed in isn't the spatial order
01:25:59 <elliott> so i have a feeling that moving to the next zipper requires as much rejiggling as just going from the top each time, especially since zippers should be relatively few
01:26:19 <elliott> the nicest thing would be to somehow zipperise it in a different order, but I don't think that's possible
01:26:21 -!- sebbu has quit (Ping timeout: 248 seconds).
01:26:26 <elliott> still, I worry for my performance with thousands of IPs
01:28:04 <oerjan> a titanic task
01:29:26 <elliott> idgi
01:29:52 <elliott> oerjan: if it helps you understand, going from the initial Tip (Subtree t) case to one zipper turns it into Tip (Zipper <whole-tree-zipper>)
01:30:37 <oerjan> elliott: i'm just saying there might be more than a Tip on that iceberg
01:30:48 <elliott> oerjan: that... is the worst pun ever
01:31:10 <monqy> good pun
01:31:30 <oerjan> yay
01:31:54 <elliott> oerjan: DID THAT HELP YOU UNDERSTAND
01:32:02 <kallisti> elliott: I bet oerjan will come up with a worser pun in the future.
01:32:19 <kallisti> it's his gift to the world.
01:32:38 <oerjan> it's not the gift i wanted, but it's the gift i have
01:33:09 <Sgeo> And Libreoffice doesn't know how to open .gnumeric files.
01:33:10 <Sgeo> Lovely
01:33:47 -!- sebbu has joined.
01:34:36 <Sgeo> Let's try data interchange format
01:34:38 <Sgeo> Whatever that is
01:35:20 <Sgeo> Nope. The formulas are gone.
01:35:29 <Sgeo> FUCK GNUMERIC WITH A RUSTY PICK-AXE-POKER
01:36:06 <kallisti> poker? I 'ardly -- NO STOP AAAAAAH
01:37:55 <kallisti> I think zeroth person to prove something refers to the person who proved something before the historically accepted proof
01:38:09 <kallisti> so, if someone becomes well known as the "first person to prove spontaneous human combusion"
01:38:14 <kallisti> then the zeroth would be the one before that.
01:39:31 <elliott> Sgeo: i am sure gnumeric can save in the openoffice format
01:39:37 <elliott> since it's a standard and everything.
01:40:10 <kallisti> standards schmandards
01:40:47 <Sgeo> elliott, o.O I just needed to scroll down in the list of formats
01:40:52 <elliott> Sgeo: CLAP
01:40:53 <elliott> CLAP
01:40:54 <elliott> CLAP
01:40:54 <elliott> CLAP
01:41:37 <quintopia> no slow clap for you today
01:42:54 <kallisti> 99 + i problems but a bitch ain't one.
01:42:56 <oerjan> ^ul (CL)(~(A)*:(P )*S~:^):^
01:42:56 <fungot> CLAP CLAAP CLAAAP CLAAAAP CLAAAAAP CLAAAAAAP CLAAAAAAAP CLAAAAAAAAP CLAAAAAAAAAP CLAAAAAAAAAAP CLAAAAAAAAAAAP CLAAAAAAAAAAAAP CLAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAAAAAP CLAAAAAAAAAAAAAAAAAAAAAP CLAAAAAAA ...too much output!
01:43:18 <elliott> oerjan:
01:43:19 <elliott> addZipper :: [Dir] -> NZippers a -> NZippers a
01:43:19 <elliott> addZipper ps (Tip (Subtree t)) = Tip (Zipper (focus ps t))
01:43:19 <elliott> addZipper ps (Tip (Zipper z)) = tricky
01:43:19 <elliott> addZipper (L:ps) (Branch a b) = Branch (addZipper ps a) b
01:43:19 <elliott> addZipper (R:ps) (Branch a b) = Branch a (addZipper ps b)
01:43:21 <elliott> progress :P
01:43:42 <oerjan> i see there's a tricky part.
01:43:51 <elliott> well it _would_ be simple
01:44:00 <elliott> if it always looked like Branch (Tip (Zipper a)) (Tip (Zipper b)) afterwards
01:44:12 <elliott> but I _think_ you might end up needing to split out a piece into a Subtree
01:44:19 -!- Klisz has joined.
01:44:30 <elliott> for the part that neither zipper focuses on
01:44:43 <Sgeo> At least LibreOffice Calc doesn't display -1/2 as 1/2
01:45:20 <elliott> thanks for continually specifying the 'calc" part
01:45:27 <elliott> i thought you were referring to the word processor
01:45:27 <elliott> *"
01:46:20 <kallisti> elliott: http://wiki.teamliquid.net/starcraft2/Mining_Minerals STARCRAFT MATH
01:47:43 <elliott> fsvo math
01:47:54 <elliott> people do more mathematics about minecraft
01:48:21 <kallisti> there are other maths in starcraft.
01:49:18 <elliott> /home/elliott/Code/ntree/ntree.hs:23:33: Not in scope: `tricky'
01:49:19 <elliott> oerjan: he;lp
01:50:09 <oerjan> elliott: maybe you should try the newfangled SOS signal
01:52:27 -!- Jafet has joined.
01:54:01 -!- TeruFSX has quit (Remote host closed the connection).
01:54:11 <quintopia> kallisti: that formula is stupid. why would they write it -I_f*d/(I_i-I_f) when I_f*d/(I_f-I_i) doesn't make you go "WHY ARE WE PUTTING A NEGATIVE AND PURPOSEFULLY SUBTRACTING THE BIGGER THING FROM THE SMALLER THING?'
01:54:57 -!- Vorpal has quit (Ping timeout: 252 seconds).
01:55:40 <elliott> quintopia: more MATHS.
01:56:51 <quintopia> good answer
01:57:21 <oerjan> you should always use a double negation to spite the constructivists
01:57:48 <elliott> split [] _ = error "whoooops!!!"
01:57:48 <elliott> split (L:ps) (Fork R t up) = \x -> (focus ps t, (x, up))
01:57:48 <elliott> split (R:ps) (Fork L t up) = \x -> ((x, up), focus ps t)
01:57:48 <elliott> split (L:ps) (Fork L t up) = help
01:57:48 <elliott> split (R:ps) (Fork R t up) = help!!!
01:57:51 <elliott> oerjan: im a genus
01:58:16 <Jafet> My kingdom for a genus
01:58:23 <kallisti> $ runHaskell saveworld.hs
01:58:29 <kallisti> whoooops!!!
01:58:39 <elliott> that case is actually impossible though
01:58:40 <elliott> also
01:58:41 <elliott> it's runhaskell
01:58:42 <elliott> little h
01:58:52 <kallisti> SO DEMANDING OF MY JOKES
01:59:33 <oerjan> elliott: you realize if you used undefined or error you could at least get it typechecked?
01:59:36 <elliott> well it's not impossible but
01:59:39 <elliott> you shouldn't do it
01:59:53 -!- azaq23 has quit (Max SendQ exceeded).
01:59:58 <elliott> oerjan: um yes but I need to figure these cases out :P
02:00:07 <elliott> I'm filling them out now :P
02:01:33 <oerjan> i predict this will technically work but turn out to traverse the entire tree every time you change something ;P
02:01:55 <kallisti> quintopia: my guess is that starcraft players aren't very good at math, and that's just how they worked it out.
02:02:28 -!- azaq23 has joined.
02:02:34 <elliott> split [] _ _ = error "whoooops!!!"
02:02:35 <elliott> split (L:ps) (Fork R t up) x = Branch (Tip (Zipper (focus ps t))) (Tip (Zipper (x, up)))
02:02:35 <elliott> split (R:ps) (Fork L t up) x = Branch (Tip (Zipper (x, up))) (Tip (Zipper (focus ps t)))
02:02:35 <elliott> split (L:ps) (Fork L t up) x = Branch (split ps up x) (Tip (Subtree t))
02:02:35 <elliott> split (R:ps) (Fork R t up) x = Branch (Tip (Subtree t)) (split ps up x)
02:02:38 <elliott> there we go, had to change the type a little
02:02:39 -!- azaq23 has quit (Max SendQ exceeded).
02:02:41 <elliott> oerjan: this is just for adding a _new_ zipper
02:02:50 <elliott> oerjan: zipper-local modifications don't have to move anywhere at all
02:02:56 <oerjan> O KAY
02:03:01 -!- azaq23 has joined.
02:03:11 <elliott> oerjan: and moving a zipper is about as fast as moving a zipper normally
02:03:15 <elliott> so SHUT YOUR MOUTH >:(
02:03:25 <elliott> you're just bitter that it's simpler >:)
02:03:44 <oerjan> i'm not bitter, i just like to kick puppies
02:04:43 <elliott> addZipper :: [Dir] -> NZippers a -> NZippers a
02:04:44 <elliott> addZipper ps (Tip (Subtree t)) = Tip (Zipper (focus ps t))
02:04:44 <elliott> addZipper ps (Tip (Zipper z)) = split ps z
02:04:44 <elliott> addZipper (L:ps) (Branch a b) = Branch (addZipper ps a) b
02:04:44 <elliott> addZipper (R:ps) (Branch a b) = Branch a (addZipper ps b)
02:04:44 <elliott> split :: [Dir] -> Zipper a -> NZippers a
02:04:46 <elliott> split [] _ = error "whoooops!!!"
02:04:48 <elliott> split (L:ps) (x, Fork R t up) = Branch (Tip (Zipper (focus ps t))) (Tip (Zipper (x, up)))
02:04:50 <elliott> split (R:ps) (x, Fork L t up) = Branch (Tip (Zipper (x, up))) (Tip (Zipper (focus ps t)))
02:04:52 <elliott> split (L:ps) (x, Fork L t up) = Branch (split ps (x, up)) (Tip (Subtree t))
02:04:54 <elliott> split (R:ps) (x, Fork R t up) = Branch (Tip (Subtree t)) (split ps (x, up))
02:04:56 <elliott> easy
02:04:58 <elliott> (it actually is pretty simple if you ignore the constructor cruft in split :P)
02:07:14 <elliott> *Main> addZipper [L,R,L] . addZipper [L,L,L] . focusN $ test
02:07:14 <elliott> Branch (Branch (Tip (Zipper (1,Fork L (Tip 2) Top))) (Tip (Zipper (3,Fork L (Tip 4) Top)))) (Tip (Subtree (Branch (Branch (Tip 5) (Tip 6)) (Branch (Tip 7) (Tip 8)))))
02:07:18 <elliott> oerjan: MEET YOUR NEW GOD!!!
02:10:15 <oerjan> O KAY
02:11:10 <elliott> oerjan: :(
02:11:17 <elliott> oerjan: I AM TRYING TO MAKE YOU FEEL BAD FOR OVERCOMPLICATING THINGS
02:11:26 <elliott> (even though i quite likely will re-add some of the type safety stuff :P)
02:17:15 <elliott> oerjan: ok now for move. the best function.
02:19:49 <oerjan> make your move, elliott
02:19:57 <elliott> yes.
02:22:33 <elliott> oerjan: when did you discover your pun calling
02:22:37 <elliott> like that one moment
02:22:40 <elliott> where you were like
02:22:41 <elliott> yes
02:22:42 <elliott> this is what i must do
02:22:51 <elliott> this is my purpose in life.
02:23:06 <kallisti> same day he became a theist
02:23:24 <elliott> kallisti: he's already said he disagreed with that label, sheesh
02:24:20 <kallisti> I can go to whatever past label I want.
02:24:24 <kallisti> >_>
02:25:09 -!- warg has joined.
02:25:23 -!- ChanServ has set channel mode: +o oerjan.
02:25:33 <warg> you seriously registered my name?
02:25:37 <warg> lol
02:25:46 -!- oerjan has set channel mode: +b *!*@*.pdx.net.
02:25:50 -!- oerjan has kicked warg warg.
02:26:15 -!- oerjan has set channel mode: -b *!*warg@*.pdx.net.
02:26:32 -!- oerjan has set channel mode: -b *!*lament@184.71.170.*.
02:26:53 -!- oerjan has set channel mode: -o oerjan.
02:27:38 <elliott> oerjan: hey, that's going against another op's decision!
02:27:38 <kallisti> registered his name?
02:27:40 <elliott> without discussion!
02:28:11 <PiRSquared17> ?
02:28:15 <elliott> lament banned himself :)
02:28:23 * elliott considers joining #wikipedia-en and seeing wtf warg is doing there.
02:28:54 <PiRSquared17> http://pastebin.com/ShGiLDDP
02:28:56 <kallisti> elliott: use a different name to disguys yoreself
02:29:05 <PiRSquared17> Banned?
02:29:33 <kallisti> lol wow
02:29:34 <elliott> lament? yes
02:29:40 <elliott> he is perhaps not the biggest fan of this channel :p
02:29:44 <kallisti> click link
02:29:49 <kallisti> elliott: click it
02:29:53 <elliott> the pastebin one?
02:29:54 <elliott> I did
02:29:59 <PiRSquared17> That's warg
02:30:02 -!- ChanServ has set channel mode: +o oerjan.
02:30:03 <elliott> yeah :P
02:30:15 <elliott> smart guy.
02:30:22 <PiRSquared17> except for the "...", which was someone else
02:31:10 <elliott> oerjan: wat
02:31:41 <kallisti> elliott: casting magic spells
02:31:44 <kallisti> it takes a while.
02:32:00 <elliott> oerjan: waht are you doign i ACCUSE YOU OF SUSPICIOUS!!nes
02:32:01 <elliott> s
02:32:40 <oerjan> i am trying to /ban *!*@069-064-236-*.pdx.net but it's not working
02:33:27 <oerjan> maybe it's because of overlap
02:33:41 <kallisti> try *!*@*
02:33:44 -!- oerjan has set channel mode: -b *!*@*.pdx.net.
02:33:48 -!- oerjan has set channel mode: +b *!*@069-064-236-*.pdx.net.
02:33:53 <oerjan> ah so it was
02:34:00 <PiRSquared17> You banned *!*@* ???
02:34:05 <kallisti> obviously
02:34:14 -!- oerjan has set channel mode: -o oerjan.
02:35:15 <kallisti> elliott: I wonder why lament did ban himself
02:35:43 <elliott> kallisti: someone else joined here yelling some nonsense, lament followed him
02:35:54 <elliott> and said that he had asked him (lament) to ban everyone in here, and asked who he should start with
02:36:00 <elliott> so i said the other guy and lament
02:36:03 <elliott> so he opped himself
02:36:04 <elliott> banned the other guy
02:36:06 <elliott> banned himself
02:36:09 <elliott> and kicked both
02:36:10 <kallisti> no I know the story
02:36:13 <kallisti> but that doesn't explain why.
02:36:14 <elliott> oh.
02:36:20 <elliott> because i told him to and he hates this channel?
02:36:28 <kallisti> that makes no sense.
02:36:33 <kallisti> maybeh e was druhnk
02:36:34 <elliott> I have no idea how it came up in whatever other channel that happened in (I think #not-math or something)
02:36:38 <elliott> kallisti: why does it make no sense
02:36:40 <elliott> it's very simple
02:36:46 <elliott> if you hate a channel, you don't care about whether or not you're banned in it
02:36:55 <kallisti> sure
02:37:13 <kallisti> but it sounds like he wanted to CAUSE trouble.
02:37:20 <kallisti> also he could just not join
02:37:23 <kallisti> instead of that.
02:37:43 <elliott> there was obviously some sort of flamewar or something going on
02:37:51 <elliott> anyway
02:38:01 <elliott> you are basically saying "it is really weird that lament is kind of an asshole"
02:38:04 <elliott> which is
02:38:05 <kallisti> NO
02:38:07 <elliott> hello! have you ever talked to lament
02:38:28 <kallisti> more like "it's really weird that lament would join a channel threatening to ban people and then ban himself when told to do so"
02:38:44 <elliott> it wasn't "threatening", he was obviously trying to piss the other guy off
02:39:23 <kallisti> if you say so.
02:40:03 <kallisti> perhaps it's more obvious in the lowgs
02:43:39 <elliott> I should write something in ATS sometime.
02:43:49 <kallisti> eeeeeys
02:44:33 <kallisti> `word 25
02:44:38 <HackEgo> jli rocrismaropjohlen inappelchth lowelons gamuto cara drondaed chon deremg hunmanstiontelfydeardemetarvapt licca luch eruins hannge prayacift besberstargeightsant deileikoshamen gallornan cass ilvan bestonsidesse fyismingentattationos rectiontuayeity inamits tapopfgran
02:44:55 <elliott> i wish english was `word
02:45:04 <kallisti> me too.
02:46:36 -!- calamari has quit (Quit: Leaving).
02:49:22 <elliott> oerjan: help i can't write a simple function :(
02:49:47 <elliott> the worst part is it's a function on regular zippers :D
02:49:52 <kallisti> elliott: write a complex one instead.
02:50:14 <kallisti> seem to be pretty good at those.
02:50:16 <oerjan> yeah that's the ticket
02:50:43 <oerjan> if nothing else works, convert via XML.
02:51:27 <kallisti> elliott: I bet I can write thefu nction
02:52:09 <elliott> kallisti: move :: Dir -> Zipper a -> Maybe (Zipper a); moves in that direction (treating the underlying tree as 1-dimensional space as quadtrees do for 2-dimensional space)
02:52:12 <elliott> data Tree a = Tip a | Branch (Tree a) (Tree a) deriving (Show)
02:52:12 <elliott> data Dir = L | R deriving (Show)
02:52:12 <elliott> data Ctx a = Top | Fork Dir (Tree a) (Ctx a) deriving (Show)
02:52:12 <elliott> type Zipper a = (a, Ctx a)
02:52:13 <elliott> enjoy
02:53:16 <kallisti> move R (a,Fork R ... FUCK THIS
02:53:19 -!- GreaseMonkey has joined.
02:56:31 <kallisti> elliott: is that somehow different from a regular zipper move?
02:56:41 <kallisti> I don't really understand the "treated as 1-dimensional space" part.
02:57:42 <elliott> kallisti: well you might have to ascend an arbitrary amount...
02:57:52 <elliott> the space thing is obvious
02:57:57 <elliott> you divide it into halves, forever
02:58:06 <elliott> think cantor set
02:58:17 <elliott> except obviously a finite number of halvings because the space is finite
02:58:37 <elliott> pikhq_: Ping
02:58:46 <kallisti> okay so basically sometimes moving right or left makes you move up?
02:59:04 <elliott> kallisti: always, in fact. since zippers are always on a laef
02:59:05 <elliott> leaf
02:59:12 <elliott> so they at least have to ascend one to go down to the neighbour
02:59:18 <kallisti> oh, didn't know that.
02:59:48 <elliott> <elliott> type Zipper a = (a, Ctx a)
02:59:50 <elliott> these zippers are
03:00:02 -!- Klisz has quit (Quit: You are now graced with my absence.).
03:00:10 <oerjan> move L (t, Fork R t' ctx) = Just (t', Fork L t ctx)
03:00:30 <oerjan> that's the easy one
03:00:39 <pikhq_> elliott: Gnip
03:00:54 <elliott> pikhq_: magnet:?xt=urn:btih:8837dd230bf2fbaf49a4ec45b9c3334ad74eeb7e
03:01:14 <elliott> oerjan: yeah
03:01:16 <elliott> same for R/L
03:01:24 <elliott> um no
03:01:29 <elliott> oerjan: you read the definition of Zipper wrong
03:01:36 <elliott> you need to match t' against (Tip x)
03:01:38 <elliott> (which it always will be)
03:01:40 <pikhq_> elliott: Care to tell me why I care?
03:01:52 <elliott> (since the tree is balanced like that, etc.)
03:01:58 <elliott> pikhq_: It's DHT, man! It's MAGICAL.
03:02:00 <oerjan> oh hm
03:02:14 <pikhq_> 0 peers YAY
03:02:26 <elliott> NOT FOR LONG!!!!!
03:02:27 <elliott> Or maybe for long, depending on how MAGICAL the DHT is feeling this time of year.
03:02:43 <elliott> But I'm connected to a very well-seeded torrent that I WON'T DISCLOSE SINCE GOING VIA A KNOWN INTERMEDIATE IS TOTALLY CHEATING.
03:03:08 <elliott> But I think like half the internet are on this one, so it can't take THAT long.
03:04:02 <oerjan> move' :: Dir -> Tree a -> Ctx a -> Maybe (Tree a, Ctx a)
03:04:33 <oerjan> for moving at higher levels
03:04:52 <elliott> pikhq_: Hmmm, I have this huge hunch that Transmission just fails at DHT seeding somehow.
03:04:58 <elliott> oerjan: right
03:05:32 <elliott> Hey! I've talked to one of the inventors of the DHT BitTorrent uses. And I never even knew.
03:05:45 <pikhq_> elliott: Could be.
03:05:56 <elliott> I'M TOTALLY FAMOUS?
03:07:13 <elliott> pikhq_: It would probably work if you downloaded ubuntu-11.10-desktop-i386.iso, but that's cheating :'(
03:07:26 <elliott> (I was connected to OVER 500 PEERS before! OVER 500 PEERS!)
03:07:29 <pikhq_> elliott: I actually did for a few minutes.
03:07:38 <elliott> Dammit, how did you guess :P
03:07:53 -!- h[A]gb4rd has changed nick to hagb4rd.
03:07:55 <pikhq_> Popular torrent that's trivial to find.
03:08:09 <elliott> I guess Transmission just can't do it for some reason, then.
03:08:38 * elliott considers implementing Kademlia.
03:08:49 <elliott> It looks really cool.
03:09:28 <oerjan> move' L (t, Fork L t' ctx) = do (Branch u u', ctx') <- move L (Branch t t', ctx); return (u', Fork R u ctx')
03:10:02 <elliott> oerjan: I wish Haskell had better support for point-free with multiple return values :-(
03:10:32 <oerjan> elliott: that and its mirror should be the hardest case, i think
03:10:43 <oerjan> er, s/move /move' /
03:10:49 <elliott> oerjan: exercise to the reader, eh :P
03:10:53 <elliott> *for
03:11:24 <elliott> oerjan: well i can tell your implementation is wrong.
03:11:29 <elliott> because it doesn't type.
03:11:40 <oerjan> elliott: i changed the type a bit
03:11:46 <elliott> ok :P
03:12:12 <oerjan> actually that's not necessary
03:12:34 <oerjan> move' L t (Fork L t' ctx) = do (Branch u u', ctx') <- move L (Branch t t') ctx; return (u', Fork R u ctx')
03:12:48 <oerjan> s/move /move' / again
03:15:31 <elliott> move' L t (Fork L t' ctx) = do (Branch u u', ctx') <- move L (Branch t t') ctx; return (u', Fork R u ctx')
03:15:31 <elliott> move' R t (Fork R t' ctx) = do (Branch u u', ctx') <- move R (Branch t t') ctx; return (Fork R u ctx', u')
03:15:32 <elliott> right?
03:18:16 <oerjan> elliott: s/move /move' / i said ;P
03:18:28 <elliott> oerjan: yes yes
03:18:32 <elliott> but did i flip anything around ;_;
03:18:34 <elliott> oh i must have
03:18:41 <elliott> because its return tuple isn't homogeneous
03:18:51 <elliott> and I forgot to s/R/L/
03:18:58 <elliott> move' L t (Fork L t' ctx) = do (Branch u u', ctx') <- move L (Branch t t') ctx; return (u', Fork R u ctx')
03:18:58 <elliott> move' R t (Fork R t' ctx) = do (Branch u u', ctx') <- move R (Branch t t') ctx; return (u', Fork L u ctx')
03:19:00 <oerjan> you flipped the wrong things :P
03:19:01 <elliott> help am i right...........
03:19:09 <oerjan> elliott: FIX THE DAMN moves
03:19:12 <elliott> ok done
03:19:13 <elliott> :P
03:20:17 <oerjan> and no the last one isn't right
03:21:08 <oerjan> move' R t (Fork R t' ctx) = do (Branch u u', ctx') <- move' R (Branch t' t) ctx; return (u, Fork L u' ctx')
03:21:22 <elliott> oh, right
03:21:35 -!- hagb4rd2 has joined.
03:21:38 <oerjan> i should have called the branches something with l/r in them
03:21:47 <oerjan> er subtrees
03:21:49 <elliott> i agree :P
03:21:54 -!- hagb4rd has quit (Disconnected by services).
03:22:05 -!- hagb4rd2 has changed nick to hagb4rd.
03:24:09 <oerjan> also i think the distinction between move and move' will disappear if you make it type safe in the same way as in one of our previous discussions.
03:24:42 <elliott> oerjan: I agree.
03:24:58 <elliott> oerjan: but I'd like to get this done /first/ so that (a) I know what it'll look like, and (b) I can revert if it gets too messy
03:27:59 <oerjan> because this is essentially one of the go/select/moveLeft/Right functions that was written back then
03:28:42 <oerjan> well, two of them
03:29:36 <elliott> right
03:34:36 <elliott> oerjan: actually i think i will move back to a zipper-tree-of-zip-nodes solution, it seems to have benefits...
03:34:57 <elliott> and the worst case is the best case of the tree-of-zip-nodes option :P
03:35:29 <oerjan> as long as the process converges
03:36:11 <elliott> oerjan: are you suggesting that i might end up with a zipper-of-zipper-of-... :P
03:36:52 <oerjan> IT'S ZIPPERS ALL THE WAY DOWN
03:37:33 <Jafet> Pull your zippers all the way down.
03:41:05 -!- zzo38 has joined.
03:42:17 <zzo38> I have connected the DVD recorder's output to a digital video stabilizer (which is not turned on; it has no power source) and then the digital video stabilizer's output to the DVD recorder's input. What happens is that the menu is cancelled, it remains visible but becomes increasingly blurry and then fades away.
03:42:49 <zzo38> (I connected the RF out to the TV set)
03:46:25 <zzo38> What do you think of such things as this????
03:46:42 <elliott> yes
03:48:22 <monqy> me too
03:48:27 <zzo38> I suppose it is like composite video feedback?
03:51:48 <zzo38> What is this monad transformer m (x, m x)
03:55:54 -!- PiRSquared17 has quit (Read error: Connection reset by peer).
03:57:03 <Jafet> @mtl m (x, m x)
03:57:04 <lambdabot> Maybe you meant: ft map msg pl unmtl url
03:57:25 <Jafet> @unmtl ReaderT
03:57:25 <lambdabot> Plugin `unmtl' failed with: `ReaderT' is not applied to enough arguments, giving `/\A B C. A -> B C'
03:57:45 <Jafet> Most helpful error message ever
03:58:06 <elliott> are you being sarcastic?
03:58:15 <elliott> it IS helpful!
03:58:47 <elliott> Jafet: anyway itym writer
03:58:59 <Jafet> Indeed. It was as good as if I had used @unmtl correctly
03:59:13 <Jafet> Because it gave the type at the end
03:59:20 <Jafet> @unmtl WriterT
03:59:20 <lambdabot> Plugin `unmtl' failed with: `WriterT' is not applied to enough arguments, giving `/\A B C. B (C, A)'
03:59:37 <Jafet> @unmtl WriterT (m x) m x
03:59:37 <lambdabot> m (x, m x)
03:59:37 <elliott> not type
03:59:40 <elliott> definition
04:00:08 <Jafet> Type definition
04:00:25 <elliott> Jafet: that relies on Monoid (m a), anyway
04:00:46 -!- Jafet has quit (Quit: Leaving.).
04:07:59 <oerjan> you could define mappend = (>>), mempty is a little awkward.
04:08:13 <zzo38> I think I have managed to define the monad and comonad transformers for the type I have given
04:08:39 <zzo38> oerjan: Any Alternative or MonadPlus instance is a monoid (or, at least, should be a monoid, although some aren't)
04:09:38 <oerjan> hm i guess getting x >> mempty = x is difficult
04:11:12 <zzo38> oerjan: Yes..... If the type inside is monoid, then you can make applicative monoid by: mempty = pure mempty; mappend = liftA2 mappend;
04:11:14 <kallisti> aka (>>) = const
04:12:27 <oerjan> kallisti: um it's supposed to old only for mempty
04:12:40 <oerjan> but for all x of the same type
04:13:05 <oerjan> *hold
04:14:14 <kallisti> ah right
04:15:41 <zzo38> As far as I know, the only way is Alternative/MonadPlus and the other way I specified
04:16:13 <oerjan> and it basically doesn't work because of the derivable law fmap f x >> y = x >> y
04:17:03 <oerjan> which means if y = mempty, fmap f x = x for all f of the right type
04:17:42 <zzo38> So it is a constant functor, then
04:17:46 <oerjan> or put differently, >> never preserves the return value of its first argument.
04:18:42 <oerjan> it can work for m (), but not much else
04:18:53 <oerjan> (ignoring undefined)
04:19:24 <zzo38> oerjan: Yes it works with m () I did not think of that at first but yes
04:21:23 <zzo38> But this way is going to work as long as return type is monoids (and it works for any Applicative; it doesn't necessarily have to be Monad): mempty = pure mempty; mappend = liftA2 mappend;
04:22:12 <zzo38> At least, I think it is!
04:22:46 -!- cheater_ has quit (Ping timeout: 240 seconds).
04:22:56 <oerjan> yes i think so. basically you can do the same with any algebraic structure instead of Monoid.
04:24:21 <oerjan> like lambdabot does with Num and ->
04:24:39 <oerjan> > (2 + id) 5
04:24:41 <lambdabot> 7
04:24:55 <elliott> *Conal
04:25:01 <elliott> it imports Conal's module to do that
04:25:05 <oerjan> ok
04:25:10 <monqy> which conal moduel
04:25:28 <elliott> http://hackage.haskell.org/package/NumInstances
04:26:30 <Sgeo> I like how looking at the Haddock page is completely useless
04:26:53 <zzo38> Sgeo: They have source codes views, too, though.
04:27:09 <Sgeo> True
04:27:39 <elliott> lift2 :: (a->u) -> (b->v) -> (a,b) -> (u,v)
04:27:39 <elliott> liftA2 :: (a->b->u) -> (c->a) -> (c->b) -> (c->u)
04:27:45 <elliott> it feels like there must be a way to relate these two
04:28:03 <elliott> or at least
04:28:21 <elliott> foo :: (a->b->c) -> (a,a) -> (b,b) -> (c,c)
04:28:32 <monqy> lift2 looks familiar
04:28:39 <monqy> (***)?
04:28:43 <zzo38> I have made proper Eq and Ord and Show instance for some functions.
04:28:49 <Sgeo> Yes, accoridng to the soirce
04:28:52 <Sgeo> Tyop
04:29:02 -!- oerjan has quit (Quit: Good night).
04:29:20 <elliott> NO IWAS GOING
04:29:21 <elliott> TO ASK YOU
04:29:22 <elliott> ;_;
04:29:28 -!- Jafet has joined.
04:30:12 <zzo38> At first I made a AllValues class, and then I made instance (Eq y, AllValues x) => Eq (x -> y) instance (AllValues x, AllValues y) => AllValues (x -> y) instance (AllValues x, AllValues y) => Ord (x -> y) instance (AllValues x, AllValues y) => Enum (x -> y) instance (AllValues x, AllValues y) => Bounded (x -> y) instance (AllValues x, Show x, AllValues y, Show y) => Show (x -> y)
04:30:40 <monqy> what is AllValues
04:31:10 <zzo38> class Eq x => AllValues x where { allValues :: [x]; }; It make a list of all values
04:32:07 <zzo38> instance AllValues Zero where { allValues = []; }; instance AllValues () where { allValues = [()]; }; instance AllValues Bool where { allValues = [False, True]; };
04:32:14 <elliott> s/AllValues/Countable/ :)
04:32:40 <zzo38> instance AllValues x => AllValues (Maybe x) where { allValues = Nothing : (Just <$> allValues); }; instance (AllValues x, AllValues y) => AllValues (x, y) where { allValues = liftM2 (,) allValues allValues; }; instance (AllValues x, AllValues y) => AllValues (Either x y) where { allValues = (Left <$> allValues) ++ (Right <$> allValues); };
04:35:26 * elliott notes http://sprunge.us/LZRT to self
04:35:38 <elliott> zzo38: Do you need (Eq a)?
04:35:50 <elliott> instance (AllValues x, AllValues y) => AllValues (Either x y) where { allValues = (Left <$> allValues) ++ (Right <$> allValues); };
04:35:56 <elliott> you should probably interleave rather than (++)
04:35:57 <elliott> consider Integer
04:36:12 <monqy> i think the point is that infinite lists are criminal
04:36:17 <monqy> note Bounded instance
04:39:41 <monqy> but does the bounded instance even work
04:39:41 <zzo38> What is m (x, m x) and what is m (m () -> x)
04:40:36 <zzo38> monqy: instance (AllValues x, AllValues y) => Bounded (x -> y) where { minBound = const $ head allValues; maxBound = const $ last allValues; };
04:41:01 <elliott> ais523: how does nethack prevent save-scumming apart from permissions, again? ISTR that it deletes your gamefile under some circumstance
04:41:40 <monqy> are there any Bounded laws
04:41:56 <elliott> maxBound >= minBound, one suspects :P
04:42:37 <zzo38> Note with (Zero -> Zero) that you have allValues = [id] and meaning $0^0=1$ as well
04:44:05 <elliott> |0^0| = 1 is easy to prove, set-theory wise, I think.
04:44:16 <elliott> well you need extensional equality
04:48:02 <zzo38> It is all using extensional equality.
04:53:06 <elliott> no, I don't mean your instance, I mean in type theory
04:53:36 <elliott> where = denotes actual equality (i.e. only refl : x = x, extensionality being an additional, optional axiom), so you can't just define an instance of it, you have to prove things :)
04:54:38 <zzo38> Extensionality is probably useful with a lot of things in Haskell, though
04:54:53 -!- PiRSquared has joined.
04:57:40 * kallisti thinks for his second skyrim character he'll focus on stealth and illusion.
04:58:41 <kallisti> oh and conjuration I guess.
04:59:03 <kallisti> also vampire because they works well with stealth and illusion
04:59:28 <kallisti> you can literally sneak around dungeons, frenzying enemies and conjuring things without actually killing a single thing.
05:06:47 -!- PiRSquared has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0.1/20111120135848]).
05:07:05 -!- azaq23 has quit (Read error: Connection reset by peer).
05:08:34 <elliott> kallisti: write my code. wait, no, you'll fuck it up
05:10:47 <elliott> split (L:ps) (x, Fork R t up) = Branch (Tip (Zipper (focus ps t))) (Tip (Zipper (x, up)))
05:10:48 <elliott> split (R:ps) (x, Fork L t up) = Branch (Tip (Zipper (x, up))) (Tip (Zipper (focus ps t)))
05:10:48 <elliott> note to self: maybe make this a bit smarter? I think I can try and balance the tree between the two
05:18:10 <ais523> elliott: it deletes the savefile if it notices inconsistencies, e.g. a level file having been renamed (which would otherwise duplicate the level), or an open level file having the wrong stored PID (i.e. copied from a different game)
05:18:46 <elliott> ais523: heh
05:19:00 <elliott> ais523: I wonder why, did it not always use to be setgid?
05:19:09 <ais523> savescumming by directly copying the savefile isn't detected
05:19:16 <ais523> and it's for non-setgid setups, or people cheating using sudo, etc
05:19:23 <ais523> or Windows
05:19:35 <elliott> cheating with sudo sure is impossible now!
05:21:15 -!- pikhq_ has quit (Ping timeout: 268 seconds).
05:25:52 <zzo38> Even in UNIX some player could have their own private copy to do whatever they want to, and then keep the high scores file separate from the system score file.
05:26:00 -!- pikhq has joined.
05:26:41 <zzo38> If you have sudo then of course you can cheat by changing whatever files you want
05:28:18 <elliott> zzo38: nethack only reads from the system directories
05:28:24 <elliott> a user could, of course, compile their own version
05:28:31 <elliott> but it wouldn't be recorded in the system's high score files and so on
05:28:47 <elliott> but you can't copy out things from the data directory
05:28:51 <elliott> since users don't have read permissions on them
05:29:31 <elliott> You could determine the RNG seed by doing a huge number of RNG-reading actions at the start of the game
05:29:42 <elliott> But I doubt NetHack's RNG is insecure enough for that to be practical; ais523?
05:29:54 <ais523> elliott: heh, hahahahaha
05:29:58 <ais523> this has been discussed to death already
05:30:04 <ais523> Adeon even has a rainbow table
05:30:08 <elliott> wow
05:30:09 <zzo38> elliott: Yes, it is like I have mentioned. But if you have sudo then you can affect any file so you can easily cheat like that
05:30:14 <elliott> so it _is_ possible?
05:30:18 <elliott> only locally, one presumes
05:30:24 <ais523> in unpatched versions, yes; it just uses libc rng
05:30:28 <ais523> which only has a 32-bit keyspace
05:30:33 <elliott> heh
05:30:38 <elliott> still, not relevant for the remote-use situation
05:30:39 <elliott> unless, hmm
05:30:40 <ais523> which is small enough for rainbow tables to be practical
05:30:45 <elliott> i guess you could script nethack remotely
05:30:48 <elliott> with ptys and shit
05:30:49 <ais523> most servers have cryptoRNGs now, though
05:30:54 <elliott> same way as locally, one presumes
05:30:58 <ais523> precisely to stop that sort of shenanigans
05:30:59 <zzo38> You could use RNG that partially uses private files that users do not have access to, and adjust those files some times
05:31:01 <elliott> ais523: I'm assuming a UNIX shell account setup
05:31:04 <elliott> which just happens to have nethack
05:31:11 <elliott> that's the only setting nethack's weird security choices make sense in
05:31:14 <ais523> elliott: oh, that'd probably have libc rng, and the rainbow tables would work fine
05:31:19 <elliott> right
05:31:32 <elliott> ais523: but how big are they :P
05:31:41 <ais523> "how big"?
05:31:46 <elliott> ais523: the tables
05:32:03 <elliott> zzo38: well, that doesn't help if the RNG's output is still too small
05:32:08 <ais523> I'd guess a little over 4 GiB
05:32:12 <ais523> umm, 16 GiB
05:32:18 <elliott> ais523: right, so that wouldn't work for a shell account.
05:32:23 <ais523> need to fit 4-billion 4-byte numbers in there
05:32:30 <ais523> you can brute-force it reasonably easily, it's just much slower
05:32:35 <elliott> they usually have quotas :)
05:32:44 <elliott> ais523: well, of course you can; the question is how much slower
05:32:54 <Jafet> "nethack is turn based.
05:33:07 <Jafet> You just won't get any time records.
05:33:10 <elliott> Jafet: yes, it is
05:33:13 <ais523> 4 billion item ID generations would probably be done in a few minutes on a modern system
05:33:18 <elliott> but if you have a unix shell account on a large server
05:33:23 <elliott> and peg the CPU for a few weeks
05:33:28 <elliott> you won't have a unix shell account for much longer
05:33:30 <ais523> for a wizard, starting inventory generally gives enough entropy to determine the RNG by itself
05:33:41 <elliott> ais523: right
05:33:46 <elliott> won't at least 4 billion turns pass, though?
05:33:56 <Jafet> nice 19 ./winnethack
05:33:57 <elliott> you'd ideally want a zero-turn RNG observation
05:34:02 <elliott> Jafet: 2347892349234 weeks :P
05:34:16 <ais523> no? you look at the appearances of all the random items in your inventory, write them down, save, then put them into your bruteforce script
05:34:30 <Sgeo> elliott, kallisti, update
05:34:53 -!- itidus20 has quit (Ping timeout: 248 seconds).
05:34:54 <elliott> ais523: hmm, but surely that has fewer bits than the RNG state
05:35:11 <ais523> it has way more than 32 bitsw
05:35:12 <ais523> *bits
05:35:16 <ais523> 32 bits is not a lot of bits
05:35:19 <Jafet> You can also just look at the current time, can't you
05:35:23 <Jafet> And pid
05:35:29 <elliott> ais523: oh, right, 32-bit state
05:35:33 <ais523> Jafet: right, in an unpatched version it's seeded with current time
05:35:38 <ais523> so you don't even need to reverse the seed
05:35:47 <elliott> yeah but what if you have a patch for that but not the other thing!!! :P
05:36:24 <ais523> elliott: that was the situation on NAO for a while
05:36:28 <ais523> it's why the rainbow tables were invented
05:36:31 <elliott> heh
05:36:38 <elliott> but this is a shell account scenario! you're ruining everything
05:37:20 -!- MDude has changed nick to MSleep.
05:38:03 <ais523> wait what? how did I miss http://esoteric.voxelperfect.net/wiki/Merthese
05:38:05 <Jafet> NAO is not much different from a shell account that only lets you play nethack
05:38:13 <ais523> it needs to be added to categories and lists
05:38:21 <ais523> I'm just not sure whether regular or joke
05:38:37 <elliott> <ais523> wait what? how did I miss http://esoteric.voxelperfect.net/wiki/Merthese
05:38:39 <ais523> it's rather reminiscent of HQ9+, just less interesting
05:38:43 <elliott> ais523: under the massive, crippling delude of spam, one presumse
05:38:44 <elliott> *presumes
05:38:50 <elliott> Jafet: "only" being the key thing
05:38:56 <elliott> you can't compile a local copy of nethack
05:39:14 <ais523> compile nethack on the shell account? it's not like its source isn't available, and you probably have some cc
05:39:57 <elliott> I swear there was a reason for it at the time
05:40:48 <Sgeo> Hussie, learn2relativity
05:43:20 <monqy> thanks
05:43:29 <elliott> thanks -- monqy, 2011
05:43:35 <elliott> -- monqy's tombstone, 2012
05:43:52 <monqy> but was monqy ever alive
05:44:10 <ais523> elliott: do you think there'll be mass panic in 2013 from all the people who thought the world would end in 2012?
05:44:23 <elliott> ais523: it's december 21st, so I assume the panic will be on december 22nd.
05:44:30 <elliott> or 23rd, perhaps
05:44:39 <ais523> nah, most 2012 conspiratorist people don't care about the exact date
05:44:44 <elliott> yes, they do
05:44:50 <elliott> it's the mayan calendar date, they care about it more than anything
05:44:57 <elliott> ofc they'll find another wacky thing to believe in afterwards
05:44:57 <monqy> people actually believe?
05:45:02 <elliott> but it isn't just "2012", it's december 21st, 2012
05:45:07 <elliott> i predict: suicides
05:45:20 <elliott> which makes no sense, but it happened in Y2K
05:45:29 <elliott> *on Y2K
05:45:41 <Jafet> We should start a cult that promotes mass suicide on that day.
05:45:46 <Jafet> That would get rid of a lot of dumb people.
05:45:58 <elliott> "social darwinism" --Jafet, 2011
05:46:27 <Jafet> "applied memetics"
05:46:32 <shachaf> elliott: Isn't that just regular Darwinism?
05:46:41 -!- Ngevd has quit (Ping timeout: 252 seconds).
05:47:16 <elliott> shachaf: I don't think so.
05:47:44 <elliott> Darwinism is about natural situations; Social Darwinism is trying to "help" Darwinism along by killing people indirectly.
05:47:58 <elliott> (Well, very imprecisely.)
05:48:07 * shachaf has a very broad definition of "natural".
05:48:07 <elliott> (Social darwinism does not really have much to do with Darwinism.)
05:48:34 <elliott> shachaf: If you intentionally practice social darwinism, it means you don't believe Darwinism works by itself.
05:48:43 <shachaf> elliott: Huh? No.
05:48:53 <elliott> Sure it does.
05:49:16 <shachaf> That's like saying that thinking and making decisions is "deviating from evolution" because it's not acting on "instinct" anymore.
05:49:44 <Jafet> By the way elliott, nice racking us up to one godwin
05:49:51 <elliott> It kind of is? The "purpose" of evolution is to keep you alive and reproducing until you're 20-something.
05:50:00 <shachaf> I believe Darwinism works by itself, and sometimes it works *through* people intentionally practicing X.
05:50:01 <elliott> Jafet: Nobody's said the word Nazi yet! This is at most 0.75 Godwins.
05:50:15 <shachaf> Where X can be anything.
05:50:42 * elliott also thinks that believing Darwinism "should" work is ridiculous. Or even saying it *does* "work", theories don't work, they're just true or not.
05:50:55 <Jafet> Yes. I hope Hitler is never mentioned in this conversation.
05:51:06 <elliott> Shut up, Jafet "Hitler" Jafet.
05:51:17 <zzo38> Jafet: But you did, right now, isn't it?
05:51:50 <shachaf> elliott: That's a very narrow-minded view of the "purpose" of evolution.
05:52:31 <elliott> shachaf: I don't really see how, but hopefully I'm using enough "scare quotes" to convey that I don't think the terminology is worthwhile in the first place.
05:52:49 -!- itidus21 has joined.
05:53:03 <shachaf> Well, for example, it assumes that you're talking about humans.
05:53:34 <shachaf> Anyway, the "purpose" of evolution is whatever happens.
05:53:38 <elliott> Well, the 20-something part does, definitely.
05:53:42 <elliott> But I agree with that.
05:53:52 <elliott> Which just makes social Darwinism all the more ridiculous, are we violently agreeing?
05:54:08 <zzo38> If it is suicide cult, then you have to insist on exactly the date 13.0.0.0.0 and make the method of suicide depending on your time of birth or whatever (maybe suicide by being eaten by sharks or whatever so that at least hungry animal can survive even if people don't)
05:54:24 <elliott> zzo38: Yes, definitely.
05:54:37 <shachaf> elliott: I'm not sure what social Darwinism is anymore, so I have no idea.
05:55:42 <elliott> shachaf: I don't think its supporters know, either, but everything I've heard from them boils down to "weak people are inferior, and therefore we should not have <public service> because it'd be better if they just died instead".
05:55:52 <elliott> I wish that was an unfair caricature.
05:57:04 <pikhq> As though evolution made any sort of judgement beyond "this reproduces, this does not"
05:57:05 <shachaf> elliott: That seems, in a sense, reasonable to me.
05:57:29 <shachaf> But if you don't support social Darwinism then you should at least support eugenics.
05:57:55 <pikhq> shachaf: Perhaps if one presumes a truly perfect judge of what we "ought" to have?
05:58:16 <shachaf> "ought"? I'm not a moralist, I don't know about "ought".
05:58:17 <elliott> shachaf: I don't see how; justifying it with Darwinism certainly doesn't make any sense, and "weaker = less worthy of life" is beyond ridiculous.
05:58:24 <elliott> shachaf: And no, I don't support eugenics.
05:59:03 <shachaf> elliott: Who said anything about "worthy"?
05:59:18 <pikhq> The truly obvious fault with eugenics is that someone has to make the call on that. And inevitably, this call is going to be disliked. Some *deity* might be able to make perfect eugenic selections that everyone would agree is reasonable.
05:59:22 <pikhq> We don't have deities.
05:59:30 <shachaf> Anyway, humanity certainly embraces "different = less worthy of life".
05:59:31 <elliott> shachaf: If you think that weaker people should die, then it seems a fair assessment to say you think weaker people are less worthy of life?
05:59:49 <pikhq> We live in a world where "different" implies "undeserving of life".
05:59:50 <elliott> And maybe humanity does, but I certainly don't, and it's ridiculous to suggest that we must.
05:59:59 <shachaf> elliott: I don't think "should" is a word I would use.
06:00:21 <elliott> <shachaf> But if you don't support social Darwinism then you >>>should<<< at least support eugenics.
06:00:23 <shachaf> elliott: You don't?
06:00:27 <elliott> Q.E.D. bitches!
06:00:36 <shachaf> elliott: That was meant in a non-moral sense.
06:00:40 <elliott> It was a joke.
06:00:41 <shachaf> But, fine.
06:00:58 <elliott> shachaf: The fact that I don't embrace "different = less worthy of life" surprises you?
06:01:02 <elliott> Maybe you need to define "different".
06:01:04 <shachaf> I certainly think we must treat things that are sufficiently different, like bacteria, as less worthy of life.
06:01:36 <shachaf> Some people draw the line at "other humans"; some draw it at "seemingly conscious animals"; some draw it at "humans sufficiently similar to me".
06:01:42 <elliott> Well, that's *very* different; it's non-sentient.
06:01:45 <shachaf> I don't see one of those as all that objectively different from the others.
06:01:50 <zzo38> I don't support eugenics and I don't support "different = less worthy of life" but not having public service is a much more complicated decision to make.
06:02:27 <pikhq> shachaf: If we only deal with objective differences, we are all merely different arrangements of mass.
06:02:37 <shachaf> pikhq: Well, exactly.
06:02:38 <pikhq> This, of course, is a completely worthless viewpoint.
06:02:41 <shachaf> elliott: So are you against the killing of sentient animals?
06:02:46 <elliott> Things that aren't sentient have as much right as tables. But I essentially agree with pikhq; if you insist on complete "objectivity", then you'll never derive anything of *human* moral use.
06:03:06 <elliott> (And yeah, yeah, "not a moralist", but you're definitely making judgements.)
06:03:23 <shachaf> I think I'm being a devil's advocate more than making judgements. :-)
06:04:13 <zzo38> You shouldn't break a table for no reason either; because then it cannot be used to put stuff on there.
06:04:26 <shachaf> zzo38: You speak wise words.
06:05:33 <elliott> shachaf: Broadly, yes. Stopping sentient animals from dying is a very important thing. I admit I eat meat, and thus support the killing of sentient animals. It's hard to defend this, I admit, and some of it surely must be chalked up to my human irrationality, but I think stopping eating meat would have completely neglegible effect on the meat industry, and I don't think enough people make judgements th
06:05:33 <elliott> e way I do for it to be important, morally, for me to decide not to eat meat.
06:06:15 <shachaf> elliott: "I think voting would have a completely negligible effect on the voting industry", etc.
06:06:36 * shachaf doesn't eat meat, and is therefore obviously morally superior to you!
06:06:47 <elliott> shachaf: You missed the important part of that message.
06:06:49 <shachaf> (That's actually not a thing I say, despite not eating meat.)
06:06:56 <elliott> "and I don't think enough people make judgements the way I do for it to be important, morally"
06:07:04 <zzo38> It is OK to be vegetarian (or vegan) if you want to, or to eat meat. But, is better for the such animals dead only if you must eat instead of for other purposes such as just to use fur or whatever (but if you must eat; then you shouldn't waste the rest either. However you also shouldn't waste people)
06:07:13 <elliott> What-if-everyone-did-what-you-did only works if everyone thinks sufficiently like you.
06:08:08 <elliott> Or if you want to set an example to others, I suppose, but I don't think anyone holds me in great esteem.
06:08:29 <elliott> (I'm not sure I do believe that voting is worthwhile, but that's another matter entirely.)
06:08:31 <shachaf> That's reasonable. The actual reason I don't eat meat probably has to do with as much irrationality as your reason for doing it.
06:08:44 <shachaf> elliott: Right, but replace "voting" with something else.
06:09:09 <elliott> Yes, indeed.
06:09:11 <shachaf> There exist games of prisoner's dilemma where coöperating is worthwhile.
06:09:20 <zzo38> Voting is different. Vote or don't vote is really a matter of choice; only the vote ought to be affected in this way and how voting is supposed to work by the people voting
06:10:03 <elliott> shachaf: I do admit I generally value human life over non-human sentient life. But I'm inclined to say that this is irrationality derived from, well, being human.
06:10:16 <shachaf> elliott: I don't think that's really irrational.
06:10:24 <shachaf> Well, at least in any sense of the word "irrationality" worth considering.
06:10:34 <zzo38> I think it is good thing that some people are vegetarian and some people are not vegetarian.
06:10:37 <shachaf> Any species that valued every other species just as much as itself would probably soon go extinct.
06:10:39 -!- homo has joined.
06:11:14 <elliott> But also the position I'm coming from is more "killing humans and killing $other are both terrible" rather than "killing humans isn't any worse than killing $other", which is one of those tricky non-arithmetic distinctions.
06:11:27 <elliott> shachaf: I don't buy that.
06:11:43 <elliott> shachaf: Like you said, if you go by what's "good for evolution", then lots of things are bad.
06:12:45 <zzo38> I generally do not value human life over non-human sentient life; although it is sometimes useful to do so if they must be given unequal values; however, to kill some people or non-people, for self-defense, is still necessary, so the problem of value is not necessarily to solve. If you put in your will someone should eat you instead then maybe they should eat you instead.
06:13:03 <zzo38> And use your blood to write the note of your death, instead of using normal ink.
06:13:21 <elliott> This conversation has suddenly taken an incredibly sinister tone.
06:13:57 <zzo38> The difference in values also depends a lot on circumstances
06:14:17 <shachaf> elliott: At any rate, I think my point was, vaguely: Some people say "doctors are weakening humanity by healing people who would otherwise die, thereby perpetuating bad genes! They shouldn't do that!", and that's a silly argument, of course, because some things are more valuable than resistance-to-disease-$FOO.
06:14:28 <shachaf> Like intelligence-to-be-able-to-make-a-cure-for-$FOO.
06:14:39 <shachaf> (Genetic-resistance, I mean.)
06:15:01 <zzo38> One such circumstance (for the things I mentioned) might be the level of overpopulation/underpopulation.
06:15:46 <elliott> shachaf: I'm pretty sure my utilities work out that $PERSON-dying is much, much worse than resistance-to-disease-$FOO for almost all $PERSON and $FOO.
06:15:57 <elliott> Erm.
06:16:00 <elliott> *than not having resistance-to-
06:16:08 <shachaf> But if you keep doing this, you eventually end up with a population of terribly-weak-but-intelligent humans, who require dozens of medications for staying alive.
06:16:14 <zzo38> shachaf: Well, you use healing it can help it is really their choice. But it is good things in general. However, be careful in case it is impossible to do so or in case of the person does not want to be healed or would rather practise on themself, or write a report about the disease which is eventually dying.
06:16:43 <shachaf> So that's a bad thing. Therefore it makes sense to use all this intelligence that you've been sacrificing other things for to improve humanity by modifying genes directly, or something.
06:16:55 <elliott> shachaf: I don't buy that. Slippery slope arguments are tricky.
06:17:10 <elliott> There's far too many externalities and other noise involved to keep that from working out as simply as that.
06:17:19 <zzo38> shachaf: No! You should modify your own genes directly! But not other people.
06:17:31 <shachaf> By the way, "eugenics" doesn't refer to genetic engineering for the purpose of improving humanity?
06:17:40 <shachaf> zzo38: Sure, I'll be happy to just modify my own genes.
06:17:59 <elliott> shachaf: But it seems what you're basically saying is "assume strict utilitarianism, ergo everyone drop everything and work on saving humanity".
06:18:29 <shachaf> elliott: I think you have an irrational bias towards any individual human rather than humanity as a whole.
06:18:31 <elliott> shachaf: And I'm sure its supporters think of it like that.
06:18:42 <zzo38> And I should modify my own genes, and they should modify their own genes, and so on.
06:18:48 <elliott> shachaf: Eugenics in practice is "you need a license from the government to breed, and they reject you if you're not $attributes enough".
06:19:11 <shachaf> elliott: Oh. Well, that's not what I meant.
06:19:24 <shachaf> And hearing "1000000 humans died" doesn't actually make you 1000000 times as sad as hearing "human $X" died -- it might even make you less sad.
06:19:28 <elliott> You just mean genetic engineering.
06:19:32 <elliott> And yes, I'm aware of that particular bias.
06:19:48 <elliott> But *intellectually*, I'm pretty sure it's about 1000000 times as bad.
06:20:05 <shachaf> elliott: OK, genetic engineering, then.
06:20:10 <elliott> You can't really expect my emotions to match my moral viewpoints in scenarios the human brain basically draws a blank on.
06:20:53 <elliott> shachaf: Right, genetic engineering for the benefit of humanity, certainly, go for it. I'm not sure how well it'll work out in the short term or whatever but it has noble goals.
06:20:55 <zzo38> shachaf: What do you think I care? Unless, it is someone I happen to know about (whether I know them personally or not). Since they are *already dead*, what do you think I should care about it afterward? They aren't dead only temporarily (probably)
06:21:08 <elliott> But no, eugenics is just about controlling breeding.
06:21:18 <shachaf> But of course your moral viewpoints are pretty much "your emotions + some logic in a desperate attempt to get some self-consistency". :-)
06:21:45 <shachaf> elliott: OK, so that was the wrong word to use.
06:22:01 <elliott> shachaf: Guilty. It doesn't bother me much since I realised that trying to justify my morals to myself was one of the least productive things I could possibly do.
06:23:40 <zzo38> It is also probably better for mortals to eat immortals (regardless of human or not). Which means that immortality can also be one of the circumstances to consider?????
06:23:41 <shachaf> Anyway, I do think humanity-getting-weaker-in-the-long-run is a potential problem. And if you start "interfering" with evolution's method of doing genetic engineering, it's a good idea to figure out some substitute yourself.
06:24:01 <shachaf> Of course, talking about "interfering" with evolution is ludicrous.
06:24:07 <shachaf> Whatever you do, that's evolution.
06:24:19 <zzo38> shachaf: You think it is a potential problem, or will it be balanced by overpopulation?
06:24:22 * elliott doesn't quite agree with that.
06:24:34 <shachaf> With which that?
06:24:42 <elliott> "Whatever you do, that's evolution."
06:25:17 <shachaf> Why not?
06:25:22 <homo> hi
06:25:25 <homo> a - a blessed +5 mace (weapon in hand)
06:25:28 <homo> is this any good?
06:25:29 <shachaf> This goes together with my view of "natural" as "whatever happens". :-)
06:25:34 <hagb4rd> plus whatever it does with you
06:25:36 <homo> i'm level 3
06:25:39 <elliott> homo: You're warg.
06:25:39 <shachaf> homo: Depends on what point of the game you're in.
06:25:41 <elliott> ais523: homo's warg.
06:25:46 <shachaf> homo: Yes, pretty good.
06:25:52 <ais523> homo: wrong channel
06:25:57 <shachaf> Wait, I don't even know what game you're playing.
06:26:00 <elliott> shachaf: Feeding a ban-evading troll there.
06:26:04 <shachaf> I assumed it was NetHack.
06:26:09 <elliott> It is.
06:26:15 <shachaf> Ah.
06:26:33 <elliott> Say the Big Friendly Singularity-God From The Sky comes down and makes us all immortal and stops us reproducing ever and we all live in a happy utopia until the universe's t variable rolls over; we'll have reached a desirable state (if you don't find the scenario desirable, mentally modify it appropriately), but there'll be no reproduction or selection or any of that happening. Would you say evolution
06:26:33 <elliott> is happening, a billion years down the line?
06:27:29 <shachaf> Maybe I'm using the wrong word again.
06:27:31 <homo> Is that rhetorical?
06:27:41 <shachaf> Perhaps I should stick to "The Tao" instead of "evolution". :-)
06:28:01 <shachaf> My meaning of the word in this context also includes things that happened before there was any life, for instance.
06:28:01 <zzo38> elliott: In that case, we had better not eating or drinking anything ever.
06:28:19 <homo> I think elliott is being alegorical
06:29:20 <zzo38> Evolution of nature probably doesn't happen, but evolution of languages might still be able to happen.
06:29:33 <shachaf> elliott: By the way, have you seen my pet?
06:29:47 <elliott> shachaf: No.
06:30:31 <shachaf> elliott: My reasoning is that a maximally-happy sentient being would not have any need for doing human things like feeling "emotions" other than happiness, or doing anything, or anything like that.
06:30:35 <homo> Can evolution cease without complete stasis? Isn't any type of change, even in thought, a form of evolution?
06:30:43 <elliott> shachaf: "Your" reasoning.
06:30:43 <shachaf> And you must treat sentience extensionally, right?
06:30:49 <homo> or were you speaking strictly from a geneticist pov?
06:30:52 <shachaf> Therefore: http://slbkbs.org/pet.txt
06:31:14 <elliott> shachaf: Reminds me of 1/0.
06:31:25 <shachaf> 1/0?
06:31:48 <homo> dont try it shachaf! the universe will implode!
06:32:15 <elliott> shachaf: A comic, most of which is devoted to the characters arguing with the author and hashing out the (meta)physics of the universe. (It's better than it sounds, apart from a brief period where the author tries to argue for monotheism with the medium.)
06:32:18 <homo> dividing by zero is very dangerous.
06:32:18 <shachaf> elliott: Anyway, if you opened that in your browser, you'd better not close the tab. That would be akin to murder, and, worse, murder of a maximally-happy person.
06:32:27 <elliott> Well, *was devoted, I suppose.
06:33:19 <zzo38> homo: "Isn't any type of change, even in thought, a form of evolution?" Like, that is what I meant by my comments, such as evolution of languages and so on, possibly
06:33:34 <elliott> shachaf: I think what you're doing is assuming I'm a strict utilitarian and trying to prove me wrong, but it's really more that my moral reasoning is /broadly/ utilitarian with a bunch of fuzzing out to eliminate things I don't like :-)
06:34:15 <shachaf> elliott: No, I consider that my actual pet, and my goal is to fill the universe with copies of it that will run for as long as possible.
06:34:23 <elliott> shachaf: Also, I'm not sure the happiness of the killed being matters.
06:34:29 <homo> T_T
06:34:34 <homo> You see here an uncursed kitten corpse named Samantha.
06:34:36 <zzo38> Dividing by zero is not allowed; it is improper.
06:34:36 <hagb4rd> evolution? what we can say for sure: there is movement.. heat
06:34:42 <elliott> I don't necessarily buy that killing someone sad is way worse than killing someone happy.
06:34:54 <hagb4rd> stardust
06:35:02 <homo> nethack killed a kitten
06:35:14 <shachaf> elliott: What about killing someone who's sad and in pain etc. and wants to die?
06:35:37 <elliott> shachaf: The keyword is "wants", isn't it? :)
06:35:43 <zzo38> shachaf: I think if they want to die, even in future, then they should commit suicide, isn't it?
06:36:03 <homo> what if they don't want to die, but they don't want to live any more either.
06:36:05 -!- ChanServ has set channel mode: +o ais523.
06:36:19 -!- ais523 has set channel mode: +b *!*@ec2-50-112-122-72.us-west-2.compute.amazonaws.com.
06:36:25 -!- ais523 has kicked homo User terminated!.
06:36:33 <ais523> ban evasion is not good…
06:36:47 -!- Ngevd has joined.
06:36:49 -!- ais523 has set channel mode: -o ais523.
06:36:53 <shachaf> elliott: Given the choice of killing one of two people, one of whom is miserable and will continue to be miserable for the rest of their life, and the other one of whom is happy and will continue to be happy for the rest of their life, you wouldn't chooise to kill the unhappy one?
06:36:57 <elliott> ais523: the union of the two Deathly bans is *!*@*2*
06:37:00 <elliott> you should ban that instead :-)
06:37:05 <ais523> elliott: too much chance of a false positive :)
06:37:08 <shachaf> Given that they'll be equally productive-to-society-and-whatever-else.
06:37:11 <ais523> I have a feeling he'll be back
06:37:17 <elliott> me too
06:37:32 <shachaf> ais523: Foolproof solution: *!*@*
06:37:44 <ais523> but I think you actually have to pay Amazon money to change your IP
06:38:05 <elliott> shachaf: I dunno, but I'm really sceptical that it's relevant to states that my inevitably-self-contradictory utility function will actually be called on.
06:38:13 <elliott> Because of the "all else equal" part.
06:38:19 <ais523> oh, homo's mostly repeated what he said here in #nethack
06:38:24 <ais523> but it's not massively offtopic there like it is here
06:38:31 <elliott> ais523: hmm, word-for-word?
06:38:39 <ais523> no, same meaning but paraphrased
06:38:41 <elliott> he seems to like pasting things to other channels :)
06:38:41 <elliott> ah
06:39:17 <shachaf> elliott: Well, you're just making it more complicated by not considering the all else to be equal.
06:39:17 <zzo38> homo: In that case, let them to live unless you are required to eat them which will kill them too; or let them maybe they have some good idea to work other people might like that. But first be careful. If they are live then they can remain live or dead later (especially, if they change their mind later; please give time) but if dead it cannot be made back live again
06:39:29 <shachaf> I think it's a fair thing to consider.
06:39:35 <elliott> shachaf: Well, the point is that I'm pretty sure being really miserable makes you less productive.
06:39:45 -!- Ngevd has quit (Client Quit).
06:40:06 <ais523> also, turns out you can't kickban an IP
06:40:08 <elliott> shachaf: But yes, it's overcomplicating things, but the point is that "I could try and answer this, but why bother, if (a) it'll never come up, and (b) I can get better results by not defining the result?".
06:40:11 <ais523> the ban works but the kick doens't
06:40:21 <elliott> /kick 255.255.255.255
06:40:24 <shachaf> elliott: No, there are some excellent tortured artists.
06:40:31 <elliott> ais523: also, *doesn't
06:40:34 <zzo38> elliott: Yes probably. It is why you can learn to be less miserable.
06:40:38 <elliott> shachaf: Well, yes.
06:40:52 <elliott> I'm not convinced they wouldn't be excellent if properly untortured.
06:41:01 <shachaf> I do agree that in general taking these things to some ridiculous extreme doesn't help with reasoning much.
06:41:25 <shachaf> elliott: Oh, I think that, as far as actual practical humans go, it's sometimes necessary for producing a particular brand of excellent art.
06:41:49 <zzo38> In other words, some people don't want to be live but don't want to be dead either, leave them live to be able to make a choice. That way you are not indecisive enough yet.
06:41:50 * elliott suspects there would be a theorem to the effect of "everybody's utility function goes haywire on /some/ input", if we had better tools for reasoning formally about this stuff.
06:42:15 <elliott> shachaf: Yes, quite possibly. But what if making them really happy inspires them to create the Non-Sentient Tortured-Art-O-Matic 3000? :-)
06:42:36 <ais523> this sentence is true, but you will never believe that it is true
06:42:39 <zzo38> elliott: That is because sometimes you need to use logic involving things that you cannot figure out from logic
06:42:43 <elliott> You could also argue that as long as they'd still produce equally-good art of another variety if happy, it doesn't matter.
06:42:45 <elliott> ais523: argh
06:43:10 <ais523> I think I tried that one on Agora once
06:43:18 <elliott> shachaf: Anyway, I assume you were deliberately invoking paperclipping with the universe-of-pets thing.
06:43:26 <zzo38> What is Non-Sentient Tortured-Art-O-Matic 3000?
06:43:31 <shachaf> I'm not sure what paperclipping is.
06:43:34 <shachaf> But I probably was.
06:44:22 <elliott> shachaf: It's what fashionable Less Wrong-dwelling hipsters call an AI that decides "oh, these human people have told me that smiles are really nice, and I'm omnipotent now; guess I'll fill the universe with 'em".
06:44:52 <zzo38> Philosophy in general becomes very deep and/or confusing and/or difficult so don't expect to understand it everything perfectly please
06:45:05 <elliott> <zzo38> What is Non-Sentient Tortured-Art-O-Matic 3000?
06:45:15 <ais523> `log <zzo38>
06:45:16 <elliott> zzo38: A very non-sentient machine with a button on it that makes it produce a brilliant work of tortured art.
06:45:47 <HackEgo> 2011-09-06.txt:00:32:57: <zzo38> I still like to turn off monomorphism restriction though, since it allows making declarations by macro or Template Haskell or whatever else it is
06:46:04 <hagb4rd> guess beeing immortal and almighty and knwoing source and destination of everything must be horrible boring
06:46:14 <hagb4rd> so one decide to mess things up
06:46:21 <elliott> shachaf: Anyway, the pet thing also reminds me of the mathematical universe hypothesis.
06:46:22 <hagb4rd> spending not more than 3 lives
06:46:27 <zzo38> elliott: Well, if someone wants to make such a machine then you can do so, possibly only the plans for it, or a computer program to emulate such a machine
06:46:42 <shachaf> I like how my ltency to 8.8.8.8 is about 2.2 seconds.
06:48:03 <elliott> shachaf: Which can be justified like "it's easy to imagine an algorithm to simulate some CA-esque world that doesn't have to actually simulate parts of the world you're not looking at; and if you're inside that world, you can't distinguish this from how things normally are, and so those other parts still /exist/; so there's no reason why you should have to be observing /any/ part of the world for it to
06:48:03 <elliott> exist; therefore all mathematically possible universes exist; therefore this universe exists".
06:48:14 <shachaf> Which means that the text field I'm typing into also has a latency of ~2 seconds between keypress and effect.
06:48:27 <elliott> I kind of see that as similar to "my pet doesn't have to do anything but be happy, so it doesn't actually have to do /anything/".
06:48:46 <elliott> shachaf: Your IRC client does a DNS query for every keypress?
06:48:49 <shachaf> elliott: Hey, that's *my* pet theory!
06:48:50 <ais523> shachaf: why would you need to bounce keystrokes off a DNS server?
06:49:00 <elliott> shachaf: http://en.wikipedia.org/wiki/Mathematical_universe_hypothesis
06:49:03 <zzo38> That is mathematical existence.
06:49:04 <elliott> shachaf: Sorry to burst your bubble!
06:49:06 <shachaf> This is latency to any external server; 8.8.8.8 was just an example.
06:49:17 <elliott> shachaf: I like it too, though.
06:49:42 <elliott> shachaf: As a friend pointed out, it also makes universe simulation quite interesting: you're not actually /causing/ anything, just looking through a window.
06:50:02 <elliott> Which seems to imply that, e.g. spawning a billion simulated universes of eternal torture and pain for the sentient beings inside isn't really bad at all.
06:50:24 <shachaf> Aha, a counterargument for Pascal's Mugging.
06:50:31 <shachaf> Am I a lesswrongian hipster now?
06:50:41 <zzo38> I think it is simply a point of view. It is the point of view of mathematical existence like anything in mathematics, rather than talking about physical existence. And maybe you can think of other existences too.
06:50:44 <elliott> This is getting too Less Wrong-dwelling hipster for my tastes now. :-(
06:50:53 <elliott> But yes.
06:51:04 <ais523> <southpointingchariot> I'm not sure how you define magic <southpointingchariot> but if it is a thing, it is recursion
06:51:16 <elliott> ais523: WE CONJURE THE SPIRIT OF THE COMPUTER WITH OUR SPELLS
06:51:18 <Sgeo> I like Less Wrong. Is this bad?
06:51:24 <Sgeo> I'm reading some of the sequences now
06:51:35 <elliott> I'm contractually forbidden from answering questions involving the words "Sgeo" and "bad".
06:52:16 <elliott> shachaf: I'm not sure I agree with the counterargument though. Simulating awful things doesn't /feel/ intuitively bad, but I have a hard time believing that's not just because it's hard to relate to.
06:52:49 <elliott> I'd also like to see some analyses of partial world simulation algorithms to see whether it actually works.
06:53:01 <elliott> I know Hashlife maintains different parts of the space at different times, so it seems plausible.
06:53:06 <elliott> In-universe, everything looks normal.
06:53:12 <elliott> But that's not the same thing as never stepping them at all.
06:53:18 <Gregor> Heyyyyyyyyyyy
06:53:26 <Gregor> I've come to that conclusion philosophically myself.
06:53:27 <elliott> Of course you could just arbitrarily extend the delay before you step each piece, but that doesn't necessarily work in the limit.
06:53:29 <Gregor> (MUH)
06:53:46 <elliott> Gregor: I think people say this every time someone brings it up, anywhere :P
06:54:04 * elliott thinks it's plausible even if that particular argument doesn't work.
06:54:16 <elliott> shachaf: Anyway, even if I buy that your pet is real, it's certainly not that graph.
06:54:25 <elliott> So I've closed the tab.
06:54:33 <shachaf> :-(
06:54:39 <shachaf> At least it was a painless death.
06:54:53 <Gregor> *eh*
06:54:55 <elliott> shachaf: I was tempted to try and keep that tab open FOREVER, but I actually use this computer and it freezes a lot.
06:55:13 <elliott> shachaf: I was also tempted to cry and ask me why you gave me this horrible burden.
06:55:16 <shachaf> You could go buy a new computer.
06:55:30 <shachaf> But I guess that pet's life i worth less to you than $n.
06:55:31 <elliott> The amusement isn't worth hundreds of pounds to me.
06:55:42 <shachaf> Sorry, £n.
06:55:59 <Sgeo> What tab?
06:56:02 <elliott> But seriously, I don't think you can fix the fact that that graph is not the pet; more generally, I don't think you can make a text file a lifeform.
06:56:07 <elliott> Not in that sense, at least.
06:56:13 <ais523> elliott: hmm, let me mention my idea of client-side web hosting again
06:56:19 <elliott> Sgeo: http://slbkbs.org/pet.txt (warning: possibly a maximally-happy sentient being)
06:56:21 <ais523> the idea is that a site is hosted by all the computers currently visiting it
06:56:22 <shachaf> elliott: What if it was a machine which beeped and showed a line for "happiness"?
06:56:36 <ais523> and not centralised at all
06:56:40 <shachaf> And the line was 100% *almost* all the time, but not all the time.
06:56:43 <ais523> and, umm, I haven't figured out the details
06:56:46 <elliott> shachaf: Nah. The pet is the *abstract concept*.
06:56:52 <elliott> ais523: That just sounds like a DHT without caching or replication.
06:57:03 <elliott> shachaf: You just thought of it, and made a machine to honour it.
06:57:12 <shachaf> elliott: What if you have a human who's conscious and lying in a hospital bed and can't communicate?
06:57:14 <pikhq> Sgeo: As far as I'm aware, elliott mostly has issues with the sorts of people who read Less Wrong and go "hurr i'm more rational than everyone now the fools".
06:57:14 <ais523> elliott: DHT?
06:57:17 <shachaf> Is the human an abstract concept too?
06:57:19 <elliott> But I can't imagine that it didn't exist before you thought of it.
06:57:25 <elliott> ais523: distributed hash table
06:57:27 <pikhq> Certainly, there are interesting things on there.
06:57:30 <ais523> elliott: ah, I se
06:57:32 <ais523> *see
06:57:41 <ais523> but I mean, on actual people's browsers who aren't involved with the site, other than reading it
06:57:44 <elliott> ais523: WHICH I'VE BEEN READING ABOUT >:) >:) >:)
06:57:44 <elliott> and yes
06:57:47 <elliott> that's what DHTs do
06:57:51 <elliott> well, sort of
06:57:53 <Sgeo> That pet does not look maximally happy
06:57:56 <pikhq> And Eliezer's interesting when he's not having an ego the size of the solar system.
06:58:17 <elliott> ais523: "Some implementations (eg. Kad) do not have replication nor caching. The purpose of this is to remove old information quickly from the system. The node that is providing the file will periodically refresh the information onto the network (perform NODE-LOOKUP and STORE messages). When all of the nodes having the file go offline, nobody will be refreshing its values (sources and keywords) and the
06:58:18 <elliott> information will eventually disappear from the network."
06:58:22 <shachaf> Ooh, distributed hash tables?
06:58:26 * shachaf likes distributed hash tables.
06:58:37 <elliott> shachaf: I only brought them up because I've been reading about them a bit today. :p
06:58:42 <elliott> Also because they seem vaguely relevant!
06:58:49 <shachaf> elliott: Imagine if HTTP used content-based addressing!
06:58:54 <elliott> Anyway,
06:58:58 <shachaf> It would render things like Akami obsolete.
06:59:01 <elliott> <shachaf> elliott: What if you have a human who's conscious and lying in a hospital bed and can't communicate?
06:59:01 <pikhq> elliott: Lemme guess, for @.
06:59:09 <elliott> Sure, I'll buy it, but it's probably not maximally-happy.
06:59:15 <elliott> How do you even define maximally-happy? There's no limit to happiness.
06:59:23 <elliott> It's limited by the brain you're making happy.
06:59:27 <shachaf> elliott: OK, he's not maximally happy.
06:59:30 <elliott> And what's stopping you from extending the brain?
06:59:49 <elliott> Also, /me isn't sure he buys DHTs in general, even though they *are* very neat.
06:59:49 <shachaf> elliott: But by making him *happier*, and more consistent, he suddenly becomes an abstract concept? That's not fair.
07:00:12 <elliott> shachaf: He's already in abstract concept! He doesn't actually exist.
07:00:13 <elliott> *an
07:00:16 <pikhq> I wouldn't call "maximal happiness" a desirable target, anyways. Down that road is naught but wireheads.
07:00:21 <shachaf> elliott: Fine, not maximally happy. Just "as happy as you've ever been in your life, all the time".
07:00:34 <elliott> pikhq: That's shachaf's point, or some of it at least.
07:00:41 <elliott> shachaf: That's not all that happy, but okay.
07:00:53 <shachaf> elliott: Fine, "as happy as *I've* ever been".
07:01:04 <shachaf> elliott: Are you a tortured artist or something?
07:01:07 <elliott> That too. :p
07:01:19 <pikhq> shachaf: I'd go with "angsty teenager", except I don't see much angst.
07:01:20 <elliott> No, I'm just human, and I don't think I've ever been completely super massively mega happy or anything.
07:01:37 <shachaf> Really?
07:01:49 <elliott> shachaf: You realise I'm not going by everyday standards, because that's sort of the point here?
07:01:56 <shachaf> Not even that one time when you were happy?
07:01:57 <elliott> The problem is that you can't really objectively compare happiness.
07:02:03 <elliott> It's brain-architecture-specific.
07:03:15 <shachaf> "I'm wondering if there is a fundamental trade-off between being able to experience extremely good emotions, like energetic excitement, and being the sort of person who can weather emotional low periods. Over the course of my life I've self-modified to be much better at weathering low periods, but the frequency with which I feel energetic excitement seems to have gone down a lot." -- $PERSON_I_KNOW (who happens to be a lesswrong person)
07:04:08 * elliott doesn't really see the relevance to what I said.
07:04:30 <shachaf> I was just reminded of that.
07:04:59 <shachaf> I don't think "you can't really objectively compare happiness" is as fundamental a problem as you make it out to be.
07:05:28 <shachaf> There's at least an intuitive partial ordering I can make between some humans that seems reasonably reliable to me.
07:05:33 <elliott> Well, the point is that you're saying "what if my super-happy human was HAPPY=1?".
07:06:03 <elliott> And I'm saying "which happy=1? They're human, if you go outside human parameters for happy then you're working with a different brain architecture entirely."
07:06:14 <shachaf> It doesn't *really* matter how happy he is all that much.
07:06:18 <elliott> And yes, you can quite arguably migrate "people" to different architectures.
07:06:22 <elliott> The architecture in this case being an abstract concept.
07:06:51 <elliott> (Prediction: Everyone in the future agrees mind-uploading by writing an autobiography and committing suicide works; RIP humanity.)
07:06:51 <shachaf> elliott: At least pet.txt is more concrete than @.
07:07:10 <elliott> :-(
07:07:15 <elliott> <shachaf> There's at least an intuitive partial ordering I can make between some humans that seems reasonably reliable to me.
07:07:17 <elliott> Humans, sure.
07:07:17 <pikhq> elliott: :P
07:07:23 <elliott> I'm talking about between architecures.
07:07:46 <shachaf> OK, but I don't think it's as fundamental a problem as you make it out to be.
07:08:16 <elliott> Well, why?
07:08:37 <elliott> I think you're trying to say "just forget all that, let's say there's a being whose survival has infinite utility".
07:08:53 <shachaf> It doesn't have to be infinite, just positive.
07:09:02 <elliott> Well, /that's/ easy.
07:09:06 <elliott> Go on then.
07:09:09 <shachaf> Then you can make a trillion copies and say that, put together, they're more important than humanity.
07:09:44 <shachaf> $VERY_BIG_NUMBER has a lot in common with \infty, practically speaking.
07:09:50 <elliott> Hey! Isn't this just the Repugnant Conclusion in reverse!
07:09:52 <elliott> *reverse?
07:11:13 <shachaf> I hadn't come across that before.
07:11:24 <shachaf> Anyway, it doesn't have to be infinite, just very high.
07:11:30 <shachaf> I think you can make pet.txt closer to a human than it is.
07:11:48 <elliott> The problem is that you're assuming utility(A lives and B lives) ~>= utility(A lives) + utility(B lives).
07:12:00 <elliott> Where ~>= is like approximately-equal, but for >=.
07:12:13 <elliott> Well, that's one problem, at least.
07:12:33 <elliott> But I'm still not sure where you're actually going with this.
07:12:35 <shachaf> For example, let's say you make a happiness-measurer machine, which happens to have a front panel that looks exactly like pet.txt, and also a wire, and you attach the wire to a human lying in a hospital bed, and the front panel shows 100% constantly.
07:12:51 <shachaf> elliott: I'm not sure I was actually going anywhere...
07:12:52 -!- itidus21 has quit (Ping timeout: 252 seconds).
07:13:11 <elliott> :-D
07:13:17 <elliott> Well, I'm happy to continue ambling down this path, I suppose.
07:13:25 <elliott> shachaf: Okay. (Spoiler: I don't believe it.)
07:13:35 <shachaf> I consider myself the victim of this pointless epistemological discussion, by the way.
07:13:38 <elliott> What that's saying to me is, you're measuring an arbitrary value as 1.
07:13:43 <elliott> And calling that value "happiness".
07:13:49 <zzo38> shachaf: How can you be sure it is working accurately?
07:13:53 <elliott> Which neatly fits in to my preconception of the definition of "happiness" depending on brain architectures.
07:14:05 <shachaf> zzo38: We've tested it on other humans and it always reports them accurately.
07:14:50 <elliott> Oh, hmm.
07:14:57 <elliott> You're saying it's actually measuring, not just a fancy pet.txt displaying machine.
07:15:01 <shachaf> Right.
07:15:07 <elliott> Well then, what's the scale?
07:15:14 <elliott> Happiness the human brain architecture can support?
07:15:45 <shachaf> This human's min before hospital bed - ...max...
07:15:45 <elliott> I don't consider that different, on a universal scale, to a human that just happens to be pretty happy, so I have no problems buying that.
07:15:55 <zzo38> shachaf: I would still think it is not working accurately. Either it broke, you did not connect it correctly, or it simply cannot measure that person's happiness accurately for whatever reason (people are different; so it is possible sometimes it won't work). I would think the readout would vary at least a little bit isn't it?
07:16:07 <shachaf> But the human + machine is extensionally indistinguishable from just pet.txt!
07:16:32 <shachaf> zzo38: OK, it varies by a little bit.
07:16:47 <shachaf> Or we used some drugs to maximize the human's happiness, I don't know.
07:17:14 <zzo38> Then *maybe* it works accurately. I still don't know but with those other tests, the machine seems to be OK.
07:17:17 <elliott> shachaf: The machine isn't important.
07:17:25 <elliott> It's just evidence that the guy is really happy.
07:17:30 <elliott> You're telling me, imagine a happy dude. Okay, done.
07:17:48 <elliott> He'd still be happy without that machine (unless he likes it a lot, I guess).
07:18:21 <shachaf> elliott's humanity-bias strikes again.
07:18:31 <elliott> shachaf: Sigh.
07:18:37 <elliott> shachaf: I'm not biased towards humanity over sentient .txt files.
07:18:42 <elliott> I don't think pet.txt is sentient.
07:19:03 <shachaf> `addquote <elliott> I'm not biased towards humanity over sentient .txt files.
07:19:06 <HackEgo> 760) <elliott> I'm not biased towards humanity over sentient .txt files.
07:19:22 <shachaf> elliott: Yes, I guess it's not that.
07:19:26 <elliott> Yes yes, very good. Can I just *tell* you why I don't think pet.txt is sentient?
07:19:45 <shachaf> Can you?
07:19:50 <elliott> I believe so.
07:21:05 <shachaf> elliott: By the way, a universe full of maximally-happy humans lying in hospital beds is also distasteful to me.
07:21:43 <elliott> OK, you can imagine a really happy pet that does nothing but exist, happily, and sure, I buy that it /exists/ because I tend to believe in the mathematical universe hypothesis. But that's not the same thing as existing /in this universe/; I don't buy that you can be sentient without /computation/ (and before you propose it does some trivial computation: it has to do computation that leads to sentience,
07:21:43 <elliott> and I don't know what that is). And I don't care about other universes when considering moral issues, because they can have no effect on this one whatsoever, and we can have no effect on them.
07:22:19 <shachaf> elliott: OK, I don't know what computation that leads to sentience is either.
07:22:24 <elliott> (On the other hand, I've believed that a lookup table can be sentient at least once before, so I'm not sure how clear my "computation" view is... but in that case, it was an optimisation of a definitely-sentient computation.)
07:22:26 <shachaf> So it seems we've come to an agreement. :-)
07:22:57 -!- Ngevd has joined.
07:23:01 <shachaf> I think "computation" is an easy thing to consider abstractly, as in something a big complicated computer does.
07:23:01 <Ngevd> Hello!
07:23:10 <elliott> Hmm, I think the answer is that pet.txt is not an optimisation of any sentient process.
07:23:25 <elliott> It seems weird that the facts would reverse-engineer everything to decide whether it's sentient or not, though.
07:23:40 <elliott> And that the existence of an algorithm could change the sentience of something running on another algorithm.
07:23:46 <shachaf> But if you consider a human moving little tokens around to end up with a pile of red tokens in the left side, and sentience arising out of *that*, it seems less obvious.
07:23:48 <Ngevd> Bye
07:23:50 -!- Ngevd has quit (Client Quit).
07:24:13 <elliott> Ngevd.
07:24:13 <shachaf> elliott: pet.txt is exactly an optimization of a sentient process!
07:24:15 <elliott> That was like 3 seconds.
07:24:22 <shachaf> Namely, our human+machine.
07:24:23 <zzo38> It also depends how you have to exactly define sentience?
07:24:45 <elliott> shachaf: Wow, this suddenly sounds like the Chinese Room argument.
07:25:00 <shachaf> Did you just pull a Searle-Godwin?
07:25:24 <zzo38> elliott: O, yes. I know how that works too.
07:25:33 <elliott> shachaf: On /myself/.
07:25:37 <shachaf> What I was saying *was* along the lines of the Chinese Room argument, of course.
07:25:38 <elliott> I'm arguing the room can't understand Chinese.
07:25:45 <elliott> And I didn't realise it until now; why didn't I realise it until now?
07:25:59 * shachaf considers mission accomplished.
07:26:15 <elliott> shachaf: Is it accomplished if you've just confused me about my own beliefs? :/
07:26:15 <shachaf> The mission was apparently to bamboozle elliott.
07:26:21 <elliott> What do *you* think about pet.txt, then?
07:26:44 <shachaf> Whoa, whoa, I don't have opinions, I just argue with other people about theirs.
07:27:08 <shachaf> I "think" pet.txt is not sentient, of course.
07:27:13 <elliott> BUT I NEED COMFORTING OPINIONS!!!!
07:27:54 <shachaf> But it's an interesting example of something I *do* believe in taken to an extreme. I don't know "where to draw the line", if there is a line to draw.
07:28:00 <ais523> yay, I think I just won Agora again
07:28:30 <elliott> ais523: pfft, I heard about it seconds before you announced it
07:28:36 <elliott> #esoteric is behind the times.
07:28:40 <ais523> heh, via email?
07:28:42 <ais523> what do you think?
07:28:45 <shachaf> elliott: Don't worry -- humans, unlike pet.txt, have the "right causal powers to produce intensionality".
07:28:51 <elliott> ais523: nope, IRC
07:28:58 <ais523> who told you?
07:29:06 <shachaf> What's Agora?
07:29:07 <elliott> shachaf: I hate you.
07:29:09 <shachaf> Other than a currency.
07:29:12 <ais523> I was talking about it in ##nomic on Slashnet, but you aren't there
07:29:14 <elliott> shachaf: A nomic, 1993-present.
07:29:19 <elliott> ais523: don't you mean #nomic?
07:29:24 <ais523> err, yes
07:29:30 <elliott> shachaf: anyway, comex
07:29:35 <elliott> <comex> oh hey, ais523 just won
07:29:35 <elliott> <comex> well, not really
07:29:35 <elliott> <elliott> That immediately made me think ais523 discovered spontaneous human combustion and I was really confused for a second. :/
07:29:35 <elliott> <elliott> * Topic for #esoteric is: Zeroth to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/
07:29:35 <elliott> <elliott> * Topic for #esoteric set by ais523!~ais523@unaffiliated/ais523 at Sun Dec 11 20:11:10 2011
07:29:40 <ais523> sorry, the slashnet and freenode channels have similar names and I get them muddled
07:29:58 <ais523> hmm, I wonder if comex considers the win genuine?
07:30:09 <shachaf> elliott: What channel is that in?
07:30:12 <shachaf> And what's a comex?
07:30:13 <elliott> ais523: <comex> well, not really
07:30:19 <ais523> the fun thing is, that the victory rule's designed to be pragmatic, but somehow manages to be platonic in this case
07:30:23 <elliott> shachaf: It's the comex channel, and he's this guy who works for Apple.
07:30:44 <ais523> elliott: I thought he more worked against Apple
07:30:49 <shachaf> Oh, that comex.
07:30:53 <shachaf> copumpkin's friend.
07:31:00 <copumpkin> ?
07:31:05 <shachaf> copumpkin: Wasn't he?
07:31:05 <elliott> ais523: he did, past tense
07:31:08 <copumpkin> yeah
07:31:12 <copumpkin> he is
07:31:16 <copumpkin> wasn't he in here for a while?
07:31:17 <ais523> hmm, copumpkin's bound to be recruited for a scam by comex and coppro at some point
07:31:20 <elliott> copumpkin: for years
07:31:24 <elliott> he's too famous for us now :'(
07:31:26 <copumpkin> comex is pretty legit
07:31:32 <elliott> ais523: coppro knows copumpkin?
07:31:33 <ais523> they recruited a meatpuppet called costanza at one point just so the name of all the scamsters would start with co
07:31:39 <elliott> haha
07:31:41 <copumpkin> I don't know who coppro is
07:31:49 <elliott> nomic player, #esoteric member
07:31:59 <copumpkin> yeah, I mean beyond seeing the nick in here
07:32:04 <copumpkin> oh
07:32:11 <copumpkin> I know coppro under a different name
07:32:17 <ais523> scshunt?
07:32:19 <elliott> Stop knowing everybody.
07:32:21 <copumpkin> yeah
07:32:25 <elliott> shachaf: WHY ISN'T PET.TXT SENTIENT
07:32:36 <shachaf> elliott: MURDERER
07:32:41 * copumpkin is listening to some nice bolero
07:33:09 <shachaf> copumpkin: elliott is murderer
07:33:19 <elliott> shachaf: Anyway, I'm pretty sure I never thought killing wireheads was all that bad.
07:33:27 <elliott> I find them to be of dubious sentience.
07:33:28 <copumpkin> I am getting frustrated with agda
07:33:35 <shachaf> copumpkin: Too limiting?
07:33:53 <copumpkin> I'm trying to construct iteratees that aren't shitty (unlike all the usual ones) and prove things about them
07:33:57 <shachaf> elliott: Oh, "wirehead", that's what it's called.
07:33:59 <copumpkin> but it's remarkably difficult
07:34:05 <elliott> shachaf: The term has only come up like ten times, dude.
07:34:10 <elliott> copumpkin: What do non-shitty iteratees look like?
07:34:18 <copumpkin> elliott: they're contravariant in the input type
07:34:25 <copumpkin> and don't have a crapload of special nasty cases
07:34:30 <elliott> copumpkin: Aren't all iteratees?
07:34:34 <copumpkin> not at all
07:34:48 <shachaf> elliott: My /last counts one...
07:34:52 <copumpkin> the fact that they carry "leftover" data in the done case prevents them from being contravariant
07:34:53 <pikhq> shachaf: Not a Niven fan I take it?
07:34:57 <elliott> shachaf: 1 ~ 10
07:35:00 <elliott> copumpkin: Oh, right.
07:35:03 <copumpkin> the leftover data is also messy, cause you can lie in it
07:35:08 <copumpkin> and stick shit that was never input into it
07:35:11 <copumpkin> or rearrange input
07:35:18 <copumpkin> it's a huge mess
07:35:23 <copumpkin> also, enumeratees are fucked up
07:35:26 <zzo38> What should it be called a transformer f (x, f x) and what should call f (f () -> x) do they have any names?
07:35:30 <shachaf> pikhq: Haven't read anything by him.
07:35:41 <pikhq> shachaf: Shame, he's quite enjoyable.
07:35:49 <elliott> copumpkin: My favourite flavour of iteratees is iterIO, which doesn't have the enumeratee/enumerator/blah blah blah distinction.
07:35:55 <elliott> But yes, the leftover stuff is ugly.
07:35:57 <shachaf> elliott: Anyway, you only consider people to be worthwhile if they're miserable occasionally, eh?
07:36:03 <pikhq> Presuming you like hard sci-fi, of course.
07:36:09 <elliott> copumpkin: But "what do they look like" was a more concrete question than you're interpreting it as :)
07:36:15 <copumpkin> elliott: yeah, some of us are trying to come up with something that actually breaks out of the shitty mold oleg constructed
07:36:22 <shachaf> pikhq: I have _A Mote in God's Eye_ somewhere in this room.
07:36:26 -!- comex has joined.
07:36:29 <elliott> copumpkin: I think saying that is illegal in at least 40 FP states.
07:36:29 <copumpkin> elliott: they all feel _almost_ elegant
07:36:38 <elliott> comex: Sorry, we've moved on from talking about you.
07:36:42 <copumpkin> but there's something shitty about each of them
07:36:44 <comex> baw
07:36:50 <copumpkin> and it all stems from the shitty underlying idea
07:36:55 <pikhq> shachaf: I highly recommend that one in particular.
07:37:00 <comex> what's the shitty underlying idea?
07:37:02 <elliott> shachaf: I don't think for(;;){happy();} is sentient; its happiness level doesn't matter much.
07:37:03 <copumpkin> which is not fundamentally shitty, but its execution is
07:37:05 <copumpkin> comex: iteratees
07:37:59 <comex> hmm
07:37:59 <comex> https://john-millikin.com/articles/understanding-iteratees/
07:38:01 <shachaf> elliott: But, in theory, that's what a human is trying to do. At what point does it stop being sentient?
07:38:05 <copumpkin> comex: those are the ones
07:38:17 <comex> they look pretty similar to python's iterat_ors_
07:38:30 <copumpkin> an iteratee is a consumer of data
07:38:36 <elliott> Everything looks like $trivial_imperative_concept to a trivial imperative programmer OHHH
07:38:37 <elliott> BUUUUUURN
07:38:40 <elliott> Ahem.
07:38:45 * copumpkin slaps elliott
07:38:46 <comex> iterators can consume data
07:38:47 <elliott> shachaf: I don't really think that's what a human is trying to do.
07:38:57 <copumpkin> comex: I mean, it's all they do
07:39:07 <shachaf> elliott: Maximize its utility function?
07:39:22 * shachaf will take care of that by redefining "trying".
07:39:30 <elliott> shachaf: Utility functions like that are broken, IMO.
07:39:38 <shachaf> You're probably right.
07:39:44 <elliott> I don't know how to un-broken them, although I'm sure some aforementioned hipsters will tell you they know how.
07:39:47 <comex> the difference is that iterators must receive all the data at once
07:39:50 <copumpkin> comex: I thought python iterators provided an interface for asking for data
07:40:01 <shachaf> elliott: By the way, $SOMETHING_ABOUT_@.
07:40:03 <comex> iirc it's something = (yield)
07:40:08 <elliott> shachaf: Cry.
07:40:09 <comex> and then iterator.send(data)
07:40:25 <elliott> That's that opposite of consuming data.
07:40:27 <ais523> shachaf: oh no, the eventual log search/replace may well end up putting a space in that keyword, if @ ends up expanding to a multi-word name
07:40:28 <copumpkin> comex: so if I have an iterator called x, I can ask x for its next data item
07:40:43 <elliott> ais523: it'll be too smart for that!
07:40:51 <shachaf> ais523: @ will just end up being called ellioxx or something.
07:40:52 <ais523> oh, the expansion?
07:40:54 <copumpkin> comex: an iteratee produces exactly one value and accepts data
07:40:57 <shachaf> And it'll be a UNIX just like everything else.
07:41:08 <comex> oh, only one value
07:41:13 <elliott> ais523: It won't have a space in the name.
07:41:19 <copumpkin> comex: yeah, then oleg went insane and started creating portmanteaus
07:41:24 <ais523> elliott: wow, decided that already?
07:41:25 <pikhq> I doubt elliott could make himself do another UNIX.
07:41:26 <elliott> copumpkin: comex: And it doesn't send that value back to the data source.
07:41:27 <comex> okay, fair enough
07:41:31 <elliott> like foo.send() does.
07:41:40 <ais523> "Microsoft Windows" and "Mac OS X" both do
07:41:42 <copumpkin> comex: so then he came up with an enumerator that corresponds roughly to the python iterator, and then he went bonkers and made an enumeratee
07:41:45 <fizzie> (Ehux.)
07:41:51 <elliott> ais523: it's just "Windows"
07:41:52 <ais523> "Microsoft Windows" and "Mac OS X" both do
07:41:55 <copumpkin> portmanteaux?
07:41:55 <copumpkin> :P
07:42:00 <pikhq> I'd be a little bit surprised if he did what I consider to be a "UNIX-family" OS (examples of this include Windows and Plan 9).
07:42:01 <ais523> *(It's not "Windows" because that's too generic to be trademarked)
07:42:03 <copumpkin> that feels like it should be the correct plural
07:42:10 <elliott> ais523: http://upload.wikimedia.org/wikipedia/en/b/b7/Windows_logo.svg
07:42:14 <ais523> (note: it is very easy to typo a line as a copy of a previous line in Konversation)
07:42:24 <elliott> I don't care what the trademark is.
07:42:25 <comex> this is also reminiscent of a type of unix program
07:42:35 <shachaf> Microsoft® Windows® XP® Professional® Edition®
07:42:38 <elliott> comex: a unix program has the same input and output types
07:42:42 <comex> that accepts data via a pipe (reading input data as it is provided), then finally spits out a result
07:42:44 <elliott> it's enumeratees that are like pipelines
07:42:45 <copumpkin> comex: yeah, basically I'd have called them consumer, producer, and transducer
07:42:53 <zzo38> I know how yield and that stuff works in Python and JavaScript.
07:42:58 <copumpkin> comex: although those types aren't fundamentally different
07:43:01 <comex> aw, I don't know anything about transducers except their applications on Solaria
07:43:11 <elliott> copumpkin: (In iterIO, there's just consumers and transducers.)
07:43:24 <copumpkin> elliott: HOW CAN I PRODUCE SHIT!!!
07:43:27 <shachaf> Python's iterators always make me sad because they're not real coroutines.
07:43:30 <copumpkin> I AM A PRODUCER, NOT A CONSUMER
07:43:39 <elliott> copumpkin: Producers are special-cases with input type () that are fed EOF. (I think it should be input type Void.)
07:43:41 <comex> shachaf: how so?
07:43:46 <copumpkin> elliott: ick
07:43:56 <elliott> copumpkin: Well, I don't see what's wrong with taking Void as input.
07:44:00 <elliott> They must receive EOF.
07:44:03 <elliott> So it all works out.
07:44:06 <elliott> Starts to feel like arrows, though.
07:44:10 <fizzie> ais523: "Oracle Solaris" has a space in the name now too.
07:44:15 <copumpkin> that's what I want it to feel like
07:44:19 <shachaf> comex: How which?
07:44:25 <elliott> copumpkin: That's a shame.
07:44:27 <comex> shachaf: iterators not being coroutines
07:45:04 <shachaf> Let me see.
07:45:09 <shachaf> Only a top-level thing can yield.
07:45:46 <comex> I believe python 3 has a "yield from" keyword that lets you pass that down
07:46:01 <elliott> Python's solution to everything is to add more keyword plasters.
07:46:13 <comex> of course, you could always just do "for i in some_subiterator(): yield i", or some more fanciness to support .send
07:46:15 <zzo38> Pass what down?
07:46:16 <comex> of course it's a horrible hack
07:46:24 <elliott> (Like Python.)
07:46:35 <shachaf> Hmm, you still need to mark it explicitly in that case.
07:46:47 <elliott> shachaf: Just Greenspun it and make every function work like that.
07:46:50 <shachaf> Though I suppose that as a Haskell person maybe I shouldn't complain about that...
07:47:07 <ais523> <ais523> I intend, without objection, to transfer rule 2166 from the Lost and Found department to myself.
07:47:15 <ais523> I should really reread the ruleset more often
07:47:22 <ais523> that isn't a scam, I'm just amused that it's possible
07:47:34 <comex> I don't think it is possible.
07:47:42 <zzo38> Like "for i in some_subiterator(): yield i" I suppose that the barrier monads I made up, you can use the monadic join operation to do something like that.
07:47:43 <comex> although I do like that kind of thing
07:47:47 <ais523> comex: rules meet the definition of assets
07:47:54 <comex> they are not "defined as such"
07:47:57 <ais523> with rule 2141 as the backing document
07:48:04 <comex> I believe I made it possible (or protoed making it possible) at some point in B
07:48:04 <ais523> oh, missed that bit
07:48:16 <ais523> they meet the /rest/ of the definition of assets, though
07:48:20 <comex> or it was possible and I protoed something similar
07:48:20 * shachaf has no idea about this Agora thing and isn't sure he wants to have one.
07:48:28 <ais523> and rule ownership doesn't do anything, so nothing secures the transfer
07:48:31 <elliott> shachaf: http://agoranomic.org/
07:49:02 <elliott> Tierced palewise sable, argent, and sable, charged with a quill and an axe in saltire, proper, and in the chief a capital letter A, gules.
07:49:10 <elliott> (I don't care if we repealed the Arms, I like them.)
07:49:19 <ais523> they're still around, they just aren't a rule
07:49:25 <zzo38> Was that, that oerjan posted the horoscope for the first speaker's message?
07:49:29 <elliott> zzo38: yes
07:49:48 <elliott> shachaf: I believe Agora is the longest-running nomic ever.
07:50:05 <elliott> shachaf: At least, that people actually play. I'm sure there's a billion pet.txt nomics humming along happily in the background.
07:50:06 <ais523> elliott: FRC?
07:50:13 <comex> ais523: reminds me of whoever joined the Bayes contract, because we didn't explicitly forbid it
07:50:19 <ais523> OK, it's only very slightly a nomic
07:50:22 <ais523> comex: heh, I remember that
07:50:26 <elliott> ais523: Canada is hundreds of years old.
07:50:33 <shachaf> elliott: pet.txt's H(t) just went down to 99% briefly from being used as an adjective.
07:50:35 <comex> or when you terminated my mousetrap as obsolete
07:50:42 <comex> elliott: not really
07:50:52 <elliott> shachaf: Good! It's not a wirehead now, so I value its rights.
07:50:58 <elliott> comex: It's older than FRC, at least.
07:51:04 <comex> "This widening autonomy was highlighted by the Statute of Westminster 1931 and culminated in the Canada Act 1982, which severed the vestiges of legal dependence on the British parliament."
07:51:05 <elliott> Neither's much of a nomic.
07:51:18 <elliott> comex: I don't think that Canada started existing in 1982.
07:51:29 <shachaf> You can't implement threads reasonably on top of Python's yield, can you?
07:51:34 <elliott> And 80 years is hundreds.
07:51:44 <comex> shachaf: not unless you're insane
07:51:49 <elliott> shachaf: Sure, you just have to greenspun it by turning everything into an iterator.
07:51:58 <comex> I think I like Stackless
07:52:07 <shachaf> elliott: Which is the Haskell solution to it, of course.
07:52:18 <elliott> shachaf: FSVO Haskell solution.
07:52:24 <shachaf> elliott: With s/iterator/monadic function/
07:52:29 <elliott> shachaf: Anyway, Agora is fun, you should play.
07:52:40 <elliott> Apart from when it's boring, which it looks like it's stopping being.
07:52:48 <ais523> elliott: it's coming out of a slump
07:53:01 <elliott> ais523: Just like B.
07:53:16 <ais523> elliott: B is not currently showing signs of coming out of a slump
07:53:25 <elliott> ais523: Yes it is, that's a universal law.
07:53:30 <zzo38> shachaf: What about monadic function?
07:53:40 <ais523> elliott: nope; that universal law turned out to never have been enacted after all
07:53:46 <elliott> ais523: ;_;
07:53:58 <shachaf> zzo38: Well, you have to write mapM, not just map.
07:54:14 <shachaf> Similarly you have to write map_yield(), not just map().
07:54:33 <shachaf> Coroutines are good fun to implement threads on top of.
07:54:59 <zzo38> shachaf: For what purpose do you need to write mapM and map_yield() and whatever? I do not understand completely
07:55:25 <shachaf> zzo38: Are you asking why mapM exists in Haskell, in addition to map?
07:55:53 <shachaf> mapM contains more strictly more information than map, by the way; someone should do a thing where non-monadic versions of functions are autoderived from monadic versions.
07:56:13 <zzo38> shachaf: No, I am asking for the reason to do it in your circumstances.
07:56:42 <zzo38> I don't know what map_yield() is.
07:56:46 <shachaf> Well, you have the function map() in Python, which calls a function. And then you need an additional one that "yields from" the function.
07:56:47 <elliott> shachaf: It's almost as if someone already did that and you showed #haskell and #esoteric.
07:57:09 <elliott> The problem with mapM is that it's overspecified; evaluation order, etc.
07:57:21 <zzo38> What do you mean "yields from" the function?
07:57:41 <shachaf> elliott: What?
07:57:45 <shachaf> elliott: Who did that?
07:57:53 <elliott> Um, that language you linked?
07:58:00 <shachaf> Oh, monad-embed?
07:58:05 <shachaf> That doesn't really do what I want.
07:58:23 <shachaf> elliott: Evaluation order isn't specified if you run it in Identity, is it?
07:58:27 <shachaf> It's just execution order.
07:58:52 <ais523> ^style agora
07:58:52 <fungot> Selected style: agora (a large selection of Agora rules, both current and historical)
07:59:00 <ais523> fungot: you were involved in agora once, weren't you?
07:59:00 <fungot> ais523: whenever a cfj to have been sent to the
07:59:15 <elliott> shachaf: The point is that you can "peek into" mapM and find out what evaluation order it's using.
07:59:29 <elliott> shachaf: So it's not as opaque as map, and so it's not as nicely-defined.
07:59:42 <shachaf> elliott: Execution order, not evaluation order?
07:59:46 <elliott> Yes, yes.
07:59:50 <shachaf> Well, yes.
08:00:04 <shachaf> But if you write mapM and then extract map from it, you can't "peek into" the extracted map.
08:00:18 <zzo38> I think the monadic join with barrier monads allows to run a function that can yield and then it yield the same one itself
08:00:21 <elliott> Well, sure.
08:00:32 <shachaf> Given that people write both map and mapM *anyway*, you might as well have that done automatically for you so you have to write half as much code.
08:00:46 <elliott> I bet you could do it with a trivial bit of TH.
08:00:59 <shachaf> I don't think it's *so* trivial.
08:01:00 <shachaf> Well, maybe.
08:01:04 <ais523> and ofc CFJ 2623 was awesome
08:01:13 <shachaf> At any rate, writing *M involves more thought than writing *.
08:01:14 <elliott> shachaf: Sure it is, wherever Identity occurs in argument position, compose Identity.
08:01:19 <elliott> Whenever it occurs in result position, compose runIdentity.
08:01:25 <elliott> *it is;
08:01:26 <shachaf> There might be multiple ways to make the same function monadic.
08:01:42 <shachaf> elliott: Oh, I thought you meant figure out the type of foo from the type of fooM.
08:01:53 <elliott> That *does* do that.
08:02:01 <elliott> As long as it's fully polymorphic on a single m.
08:02:31 <elliott> Instantiate m = Identity498573495345, turn (Identity498573495345 a) into a for all a.
08:02:35 <elliott> With the number so that it doesn't clash with
08:02:42 <elliott> fooM :: (Monad m) => Identity a -> m a
08:02:43 <elliott> or similar.
08:02:52 <shachaf> Well, I suppose.
08:02:56 <elliott> ...i.e. just turn (m a) into a everywhere. :p
08:03:06 <shachaf> Anyway, monad-embed is different. It doesn't really let you specify evaluation order at all.
08:03:19 <elliott> Doesn't "flip" let you.
08:03:22 <elliott> f x y vs. flip f x y.
08:03:35 <elliott> But yes, it's the reverse; I misread your statement.
08:03:52 <shachaf> elliott: Right, it does.
08:04:29 <shachaf> If I understand correctly, "f x y" "executes" f, then x, then (f x), then y, the (f x y).
08:04:43 <elliott> Right.
08:05:01 <shachaf> Where "executes" means, kind of, "if it has a monadic type, execute it, and then shadow the result with the original name for the remainder of this sentence". :-)
08:05:15 <elliott> It always has a monadic type in monad-embed, no?
08:05:31 <shachaf> Oh, I guess?
08:05:34 * shachaf doesn't recall.
08:05:41 <elliott> "Flavours" and all.
08:05:41 <shachaf> elliott: OK, now do one that autoderives monads from their monad transformers. :-)
08:05:48 <elliott> shachaf: = FooT Identity
08:05:50 <shachaf> I guess mtl does that anyway these days, except manually.
08:05:55 <shachaf> Right.
08:06:04 <elliott> That's how you should do it anyway.
08:06:15 <comex> ha, I forgot about 2623!
08:06:57 <shachaf> elliott: Actually, I don't like monad transformers at all.
08:07:02 <elliott> I know.
08:07:08 <shachaf> I've said this before?
08:07:12 <elliott> Repeatedly.
08:07:18 <zzo38> "if it has a monadic type, execute it...." Execute what?
08:07:23 <shachaf> It.
08:07:32 <zzo38> Execute f?
08:07:51 <shachaf> Right.
08:07:55 <comex> oh hey, http://agora-notary.wikidot.com/ still exists
08:08:07 <shachaf> If f :: m (a -> b -> c).
08:08:13 <shachaf> Which, as elliott pointed out, it always is.
08:08:52 <ais523> comex: indeed
08:08:57 <ais523> it's still a useful historical refernce
08:08:58 <ais523> *reference
08:09:21 <zzo38> O, that is what f is. How exactly can you "execute it"? As far as I know you can use <*> with such a type?
08:09:37 <comex> On this the whole head appeared,
08:09:37 <comex> and then turned to the table to measure herself by it, and on it
08:09:37 <comex> except a tiny golden key, and Alice's elbow was pressed so closely
08:09:37 <comex> against her foot, that there was no more to come, so she set the
08:09:37 <comex> little door was shut again, and put it to be assigned as judge of
08:09:38 <comex> the posting of the CotC.
08:10:07 <elliott> comex: remember the equity case?
08:10:09 <zzo38> Haskell is a functional programming, you cannot execute anything?
08:10:28 <comex> other than 2623?
08:10:36 -!- kmc has joined.
08:10:38 <shachaf> zzo38: Sure you can.
08:10:52 <ais523> elliott: I referenced the fungot equity case already
08:10:53 <fungot> ais523: land bureau. if a registered player, or
08:10:56 <comex> did that amendment thingy ever get used?
08:11:04 <elliott> ais523: fungot only judged it, right?
08:11:04 <fungot> elliott: ( a) an office, with the
08:11:16 <ais523> elliott: it was about a contract fungot created
08:11:17 <fungot> ais523: a rebellious player) are a class d frankenstein monster fails to comply with the player
08:11:19 <shachaf> kmc!
08:11:20 <elliott> not fungot
08:11:20 <shachaf> @ohai kmc
08:11:21 <fungot> elliott: a blot change is made only to assessor. the
08:11:21 <lambdabot> welcome to #esoteric, kmc!
08:11:21 <elliott> or was it
08:11:24 <ais523> it was fungot
08:11:24 <fungot> ais523: a criminal case has a budget containing the maximum deck diversity, which have been judged undecided. the herald
08:11:31 <elliott> ais523: nah, fungot is all lowercase
08:11:31 <fungot> elliott: e may be
08:11:33 <ais523> well, maybe Bayes
08:11:34 <elliott> it was an online markov generator
08:11:48 <ais523> fungot provided arguments towards the judgement, but they made the judge's head hurt
08:11:49 <fungot> ais523: speaker-elect. if the speaker publicly announces within a week, that
08:11:50 <elliott> feeded the ruleset + alice in wonderland excerpt + I forget
08:12:34 <shachaf> elliott: By the way: <http://oneoverzero.comicgenesis.com/>?
08:12:54 <elliott> shachaf: I read it via http://www.undefined.net/1/0/. It's less crufty.
08:13:06 <elliott> It's "only" 1000 comics, to the dot.
08:13:23 <shachaf> elliott: *Now* you tell me.
08:13:55 <elliott> Also it takes ages to actually get into the interesting stuff rather than just messing around, but it doesn't make any sense if you skip there.
08:13:56 <elliott> LIFE IS HARD.
08:16:43 <shachaf> I thought it was "life is tough".
08:17:07 <elliott> It's that too.
08:17:13 -!- itidus21 has joined.
08:19:54 <shachaf> elliott: I'll have you know that pretty much my entire time-to-be-productive got wasted on that silly discussion, by the way.
08:19:59 <zzo38> Do you have idea what the types I have specified would be called?
08:20:01 <shachaf> I hope you're pleased with yourself.
08:20:54 <zzo38> shachaf: Oops! Too bad! Sorry.
08:21:04 <shachaf> zzo38: ?
08:21:22 <shachaf> zzo38: I was not objecting to anythig you said.
08:21:27 * shachaf has long ceased doing that.
08:21:28 -!- itidus21 has quit (Ping timeout: 248 seconds).
08:21:33 <shachaf> zzo38: What are the types that you specified?
08:21:43 <zzo38> f (x, f x)
08:21:46 <zzo38> f (f () -> x)
08:22:04 -!- itidus21 has joined.
08:22:29 <elliott> shachaf: Yay!
08:22:40 <zzo38> (Where f is a functor and x is a return type of a functor)
08:23:08 <shachaf> zzo38: You mean an argument to a functor?
08:23:15 <zzo38> shachaf: Yes
08:23:16 <shachaf> Well, no. It's just a type.
08:23:24 <shachaf> Anyway, I have no idea.
08:24:55 <zzo38> I put it on paper already. But I cannot put it into the computer very well withouts their name?
08:26:28 <elliott> FsdfkfsdT and QqqqkdkT.
08:27:01 <shachaf> elliott has a point.
08:29:02 -!- itidus21 has quit (Read error: Operation timed out).
08:29:58 -!- itidus21 has joined.
08:30:40 <zzo38> OK, and then I could change their name later if there is better name, I suppose. Because these names seem very worse.
08:31:59 -!- zzo38 has quit (Remote host closed the connection).
08:32:45 <elliott> copumpkin: You should do it in Epigram 2 instead.
08:33:02 <elliott> The perfect iteratees for the perfect language!
08:36:44 <ais523> Epigram 2 is a perfect language?
08:36:51 <ais523> elliott: I think we've found what @lang should be based on
08:37:21 <elliott> It's similarly vapourous.
08:37:31 <ais523> oh, I didn't realise
08:37:40 <ais523> perl 6 is in an interesting state
08:37:49 <ais523> it's not really solidified yet, but it's not vaporware either
08:37:54 <ais523> liquidware?
08:37:57 <shachaf> Ooh, base @lang on Perl 6!
08:38:08 <elliott> :D
08:38:19 <shachaf> By the way, is "@lang" its own macro?
08:38:43 <shachaf> Or will the language be called "@" ++ "lang"
08:38:44 <ais523> hmm, I'm not sure
08:39:01 <ais523> the language might even be called "@lang"; it's a good name for a language even if "@" is a bad name for an OS
08:39:09 <ais523> (the quotes block macro expansion, right?)
08:40:31 <shachaf> Oh, they do?
08:41:26 <elliott> of course not
08:41:35 <elliott> the text inside quotes is English
08:41:41 <elliott> and we're replacing @ with the name, in English
08:41:52 <elliott> try making "@" be in Spanish, instead
08:42:14 <elliott> <q lang="es">@</q>
08:43:13 <elliott> ais523: actually, calling Epigram 2 "similarly vapourous" to @ is unfair to it; it's produced thousands of lines of code and more than a few papers
08:43:20 <elliott> which is thousands and more than a few more than I have
08:44:07 <elliott> hmm, I want to write a really fast grep for some reason
08:45:21 <shachaf> Can you make it O(1/log n)?
08:48:50 <elliott> shachaf: O(0)
08:53:57 <elliott> hmm, does GNU grep even search in parallel?
08:53:58 <elliott> I suspect not
08:54:11 <elliott> that seems like a massive flaw
08:54:29 <shachaf> elliott: Why?
08:54:47 <elliott> shachaf: Well, it's a fairly obvious large speedup.
08:54:53 <shachaf> Is it?
08:55:02 <elliott> By fairly I mean completely.
08:55:12 <elliott> shachaf: The segments of the file can be scanned completely independently, so... yes?
08:55:18 <elliott> It scales linearly.
08:55:19 <shachaf> Well, grep is presumably I/O-bound.
08:55:38 <elliott> shachaf: Not in /tmp, it's not :)
08:55:44 <shachaf> So it's not that obvious in general.
08:55:50 <shachaf> Well, sure, if you're reading from a ramdisk.
08:56:00 <elliott> Although it might be syscall-overhead-bound then. :/
08:56:07 <elliott> This is where I mumble @.
08:56:12 <shachaf> Maybe. But as a default "optimization" it seems like it might have significant overhead.
08:56:25 <elliott> shachaf: Anyway, I doubt grep is always IO-bound.
08:56:27 <elliott> Or perhaps even usually.
08:56:45 <elliott> This was sparked by me reading that GNU grep used to be two thousand times slower in UTF-8 locales.
08:57:01 <elliott> Even post-fix, it's 2-4x slower.
08:57:10 <elliott> That seems rather massive for something that /should/ be IO-bound.
08:57:20 <olsner> but I read in a blog post that gnu grep was really really fast!
08:57:26 <shachaf> Well, I suppose it depends.
08:57:34 <Sgeo> Night
08:58:10 <shachaf> elliott: They were probably not benchmarking it on an I/O-bound case.
08:58:18 <elliott> olsner: I read that one too!
08:58:20 <elliott> shachaf: Um?
08:58:23 <shachaf> Actually, I can't find that post anymore, but didn't they say it was doing something like ~30KB/s?
08:58:25 <elliott> shachaf: It was just a large gob of data.
08:58:31 <elliott> Yes. But then also http://rg03.wordpress.com/2009/09/09/gnu-grep-is-slow-on-utf-8/.
08:58:40 <elliott> /usr/share/dict/words is not IO bound.
08:58:44 <elliott> But that big file they tested should be.
08:58:56 <elliott> "done" is not a complicated regular expression.
08:59:02 <elliott> http://dtrace.org/blogs/brendan/2011/12/08/2000x-performance-win/ is the link.
08:59:04 <olsner> the possible speed should depend a lot on whether it can do a simple substring search using a good algorithm or if it has to do regexp matching, and if so how complex the regexp is
08:59:23 <elliott> olsner: it doesn't do the former unless you call it fgrep
08:59:31 <elliott> but no regexp engine should find "done" tough :)
08:59:42 <shachaf> elliott: Well, the file was probably in the cache when they tested it.
09:00:10 <elliott> shachaf: Well, things are in cache a lot of the time.
09:00:16 <shachaf> True.
09:00:17 <olsner> hmm, some things that KMP and smart algorithms do should be generalizable to regexps
09:00:37 <elliott> shachaf: Also, I'd be surprised if GNU grep is the fastest it could possibly be with its IO.
09:00:42 <elliott> Although Unix limits it in that area.
09:00:50 <elliott> olsner: Yeah, yeah, grep has done that for decades :P
09:01:13 <elliott> olsner: Well, fgrep at least.
09:01:20 <olsner> how can this be? the creators of grep were at least as clever as me!?
09:01:52 <olsner> fgrep? but I want a normal grep to do the best thing possible with the regexp I give it
09:02:03 <shachaf> The best possible thing!
09:02:16 <elliott> It should just use an Oracle.
09:02:22 <elliott> grep (C) Larry Ellison
09:02:29 <olsner> error: this is not the string you're looking for
09:04:55 <elliott> shachaf: Ideally, the kernel would grep for us.
09:04:58 <elliott> That would avoid all the IO overhead.
09:05:05 <elliott> Erm, the IO overhead that isn't the actual IO, that is.
09:05:14 <shachaf> Ideally, we would already know the answer.
09:05:26 <elliott> Deep.
09:05:31 <elliott> Neutrinos, man.
09:05:34 <olsner> anyway, at least I want a single command to be able to tell when I give it a simple string that isn't a regexp
09:05:37 <olsner> or to use a regexp engine that is smart enough to make a simple regexp as efficient as a string search
09:07:06 <elliott> olsner: You obviously want it to be smarter than just "pass it off to fgrep if I can"; consider "foo.bar".
09:07:26 <elliott> You can do "foo" and "bar" as fixed-string matches.
09:07:50 <elliott> In fact, do them both at the same time, independently; when two hit at the right position offsets, you're done.
09:08:39 <shachaf> Every searching program should use only Rabin-Karp.
09:09:35 <elliott> shachaf: More like: Rabin-Crap.
09:10:21 <shachaf> Oh, you showed that substring search algorithm who's who!
09:14:44 -!- Vorpal has joined.
09:23:24 -!- GreaseMonkey has quit (Quit: The Other Game).
09:27:06 -!- monqy has quit (Quit: hello).
09:38:54 <Sgeo> elliott, updoot
09:39:00 <Sgeo> I should be sleeping, not updooting you
09:50:47 <elliott> shachaf: So what's The Best DHT???
09:51:12 <shachaf> elliott: Are we talking about drugs?
09:51:17 <elliott> Obviously.
09:51:37 <shachaf> Oh, no, I'm thinking of DMT.
09:51:43 <elliott> SAME THING.
09:51:49 <shachaf> elliott: I've never used any DHT.
09:51:51 <shachaf> Well, maybe I have.
09:51:57 <elliott> BUT YOU SAID YOU LIKED THEM ;__;
09:51:57 <shachaf> Maybe git counts!
09:52:01 <elliott> pet.txt is so sad right now.
09:52:03 <shachaf> elliott: Don't you like them?
09:52:11 <elliott> Well, maybe.
09:52:19 <shachaf> I like them in principle.
09:52:25 * shachaf does everything in principle.
09:52:31 <shachaf> Practice is for other people.
09:52:45 <elliott> My problem with them is that distribution of data is basically unrelated to who /cares/ about that content.
09:52:54 <shachaf> What do you mean?
09:53:16 * shachaf would like to add that he knows pretty much nothing about DHTs.
09:53:25 <elliott> As in, I have to store a bunch of data I don't care about, in return for being able to store data I care about somewhere else, maybe somewhere slow or unreliable.
09:53:47 <elliott> Sure, you can mitigate that, but on the other hand, it seems better to store the data with who cares about it in the first place.
09:53:47 <shachaf> Everything I know about them is a result of saying "wouldn't it be neat if X existed? Oh, look, there's something vaguely similar to X described on Wikipedia. It must be exactly the thing I'm thinking of."
09:53:55 <shachaf> Oh, I see.
09:54:03 <shachaf> Well, in the sense I was thinking of it, you would do that.
09:54:11 <elliott> Then how do you do routing?
09:54:19 <shachaf> You'd have something like a URL, dht:host/hash
09:54:30 <shachaf> Or maybe a collection of hosts that you could ask for any particular hash.
09:54:37 <elliott> shachaf: So you reinvented IP, and then layered content-addressed HTTP on top of it?
09:54:44 <elliott> Okay, but that's definitely not a DHT.
09:54:51 <shachaf> ...Yes.
09:54:56 <shachaf> OK, that's not the only thing I want.
09:55:26 <shachaf> But I want that too.
09:59:14 <shachaf> elliott: So when you find out what the Best DHT is, tell me.
09:59:26 <elliott> shachaf: Okay, but it won't look like that.
09:59:43 <shachaf> elliott: Yes, I just read about DHTs.
09:59:51 <elliott> Okay.
10:00:02 <shachaf> Today I learned about DHTs and eugenics!
10:00:04 <shachaf> A productive day.
10:00:24 <elliott> Eugenics: Not actually genetic engineering. DHTs: Not actually content-addressed HTTP.
10:00:26 <elliott> A DAY OF DISCOVERY.
10:01:04 <elliott> I feel like stating the incredibly obvious: The problem with content-based addressing is that when your content changes, your addresses do too.
10:01:08 <shachaf> What's "membase" doing on the DHT Wikipedia page?
10:01:25 <shachaf> elliott: That's not really a huge problem for a lot of content.
10:01:32 <elliott> shachaf: "distributed object storage system"?
10:01:34 <elliott> Sounds DHTy to me.
10:01:54 <elliott> Have I mentioned that the Storm botnet is really cool?
10:02:03 <elliott> I just wish it wasn't used for such boring things.
10:03:17 <shachaf> elliott: Membase is like memcached on more than one machine.
10:03:30 <shachaf> (And also persistence.)
10:03:36 <elliott> shachaf: memcached is a hash table, yes?
10:03:46 <elliott> So membase is a distributed hash table.
10:03:50 <elliott> I don't see the issue here.
10:04:05 <shachaf> I suppose, technically, maybe.
10:04:44 <shachaf> It's "distributed" in a local sense, I think.
10:05:02 <shachaf> Also the person who added it to the wiki page works at the company that makes it.
10:05:05 <elliott> shachaf: Sure, but DHTs work with even a small number of nodes.
10:05:14 <shachaf> Also I work at competitor. So I might just be biased.
10:05:22 <elliott> I had started to suspect some personal bias. :p
10:05:54 <elliott> shachaf: I think the problem your company might have is that it's competing against a company offering a DHT but its employees don't know what a DHT is.
10:05:56 <elliott> OHHHH SNAP
10:05:59 * elliott works at a eugenics company.
10:06:19 <shachaf> elliott: I prefer the term "key-value" store.
10:06:44 <shachaf> Also, move that right quotation mark a word over to the right.
10:07:10 <elliott> shachaf: I don't have a derogatory name for those, but I need to come up with one, because I don't like them. (Well, in some situations they're good, but I can prove why each of those situations is caused by bad design elsewhere!)
10:08:15 <shachaf> elliott: You can call it "NoSQL" and it has built-in derogatory overtones for the right people.
10:08:27 <elliott> shachaf: But I like SQL even less.
10:08:45 <shachaf> elliott: Do you also hate Data.Map?
10:09:03 <elliott> Data.Map is quite nice, although the implementation is pretty slow.
10:09:17 <elliott> (Data.HashMap is nicer, but lacks some nice functions that Data.Map has.)
10:10:19 * elliott waits for the point.
10:10:38 <shachaf> elliott: You like SQL even less than than you like people who say "NoSQL"?
10:10:48 <elliott> Than than.
10:11:00 <shachaf> elliott: The point was that Data.Map stores keys and values?
10:11:34 <elliott> shachaf: Well, OK, but "key-value stores" almost always use bytestrings as keys, and either bytestrings as values, or (bytestring,bytestring)s.
10:12:24 <shachaf> Sometimes they use ASCII-strings-without-newlines-or-NULs-or-spaces as keys!
10:12:48 <elliott> shachaf: So much better!
10:13:01 <elliott> But no, maps are fine, maps with /those/ types are not.
10:13:26 <shachaf> Anyway, Data.Map internally stores N-BYTE POINTERS TO ITS VALUES!
10:13:43 <elliott> The pointers are composed of BYTES?
10:13:46 <elliott> Gasp!!!
10:13:54 <elliott> Not really, they're bits.
10:14:03 <elliott> The byte boundaries aren't relevant.
10:14:15 <shachaf> byte=8 bits
10:14:21 <elliott> If you're telling me things are composed of bits, then thanks, Shannon! Thannon.
10:14:31 <elliott> Similarly the CPU executes machine code, so we write in machine code, etc.
10:14:32 <shachaf> So what's your point?
10:14:48 <shachaf> You store bytestrings in the values and then you fetch them and give them meaning.
10:14:51 <elliott> Specifically we write in x86-64 machine code because that's what our CPUs do and so it clearly must be the One True etc. etc. etc. who gives a damn what the CPUs do.
10:15:46 <elliott> shachaf: I dislike parsing intensely.
10:16:04 <elliott> Rather, I *strongly* dislike serialisation/deserialisation as a regular part of the computing cycle.
10:16:18 <shachaf> Well, so what would you rather do?
10:16:32 <elliott> It breaks types, it wastes cycles (yeah, yeah, it's what the CPU does, but it's still /time/), [...]
10:16:43 <elliott> shachaf: It sounds like you're asking me to mumble about @. :)
10:17:06 <shachaf> So your answer is "I have no practical answer but I hate it anyway"?
10:17:14 <shachaf> Fair enough. I say that to most everything.
10:17:17 <elliott> shachaf: No, I'm saying "do you want me to mumble about my practical answer"?
10:17:20 <elliott> *?"
10:17:28 <shachaf> Is @ your practical answer?
10:17:37 <elliott> @ contains my practical answer to that particular question.
10:17:59 <shachaf> "practical" means "can be used by any of the things that use databases that actually exist today".
10:18:21 <elliott> That's a rubbish definition. Key-value stores didn't exist until $t$.
10:18:31 <elliott> Did that stop them being a practical idea?
10:18:51 <elliott> I mean, I kind of am planning to write this @ thing.
10:19:33 <shachaf> I'll be delighted to use it once you do!
10:20:10 <elliott> shachaf: I take it you're not interested in its solution to this problem. :p
10:20:34 <shachaf> elliott: I'm trying to decide whether to listen to your solution or go to sleep, given that I need to be awake in some smallish number of hours.
10:20:40 <shachaf> Eh, fine. What's your solution?
10:21:08 <elliott> Okay.
10:21:39 <shachaf> (Get ready to quake in your boots, membase! The end is nigh!)
10:21:42 <shachaf> (Ahem. Sorry.)
10:21:54 <elliott> (Will your company implement @ for me?)
10:22:22 <shachaf> That depends on what @ is.
10:24:35 * shachaf wonders if he's waiting for a response right now.
10:24:38 <elliott> Yes.
10:24:42 <elliott> I am typing it. :p
10:26:48 <elliott> shachaf: Well, objects (term used outside of the context of OOP) certainly must be stored in RAM, and on disk, and they certainly must be transferred over the network, and all these things have to work with bytes. What @ changes is to turn this into a service of the system; certainly the bytes used to represent an object in a certain context must be tailored to that object in many circumstances -- you
10:26:49 <elliott> probably want to store and transfer a lot of images as PNGs, for instance, while operating in memory works better with a less compressed approach -- but this can be controlled by the implementation of the types in question without changing the basic model. The interface to a key-value-store-done-right must be *typed* -- you can imagine something like the vault API (http://hackage.haskell.org/packages/a
10:26:49 <elliott> rchive/vault/0.1.0.0/doc/html/Data-Vault.html). All algorithms for replication, blah blah blah, are already written without actually caring what the bytes are, or what they mean, so they can just as well be polymorphic instead. The serialisation/deserialisation to bytes, when necessary, is taken care of by the system when boundaries like memory/disk and memory/network are traversed. And to tie it all t
10:26:54 <elliott> ogether, @ also provides, as a system service, a "metaprotocol" which allows distributed programming to be done without sacrificing types: the system ensures everything is well-typed, and the programmer doesn't have to, doesn't want to, and shouldn't care about how erasure of this is handled.
10:27:16 <elliott> (Not when writing a store, at least; it certainly makes sense to care about it when, for example, implementing custom serialisation code.)
10:27:25 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html, since that link got split.
10:27:53 <coppro> copumpkin: regrettably, I am not a ppro with my arrows reversed
10:28:11 <elliott> coppro: Instead you're just pooppy.
10:28:35 <coppro> it's true ^_^
10:28:48 <shachaf> elliott: Makes sense.
10:28:54 <elliott> coppro: Good to see you're finally embracing your identity!
10:29:08 <elliott> shachaf: membase will be out of business in a week!
10:29:13 <coppro> all your poop are belong to us
10:29:17 * elliott considers purchasing products from membase.
10:29:24 <shachaf> elliott: It's true.
10:29:47 <shachaf> elliott: By the way, have considered writing all these things about @ in a place that isn't your IRC text entry prompt?
10:29:52 <shachaf> I may have brought this up before.
10:30:30 <elliott> shachaf: Anyway, the degree to which I can be concrete ends at what "distributed-ready" code would look like, and thus what the "metaprotocol" would look like. I've found what I've read about Reactive-Demand Programming quite compelling, but I'm not sure it's The Path.
10:30:36 <elliott> shachaf: And yes, I have.
10:30:49 <shachaf> You have?
10:30:50 <elliott> shachaf: The problem is that I rarely get the motivation to write so in-depth about it until someone mocks it. :-)
10:30:54 <shachaf> Oh, have considered.
10:31:07 <elliott> But I probably will set up such a thing sometime soon.
10:31:17 <shachaf> elliott: OK, so we need to mock you at regular intervals.
10:31:24 <elliott> Yes.
10:31:33 <shachaf> elliott: Can we mock an outline out of you, and then mock each segment of it?
10:31:49 <elliott> Wow, membase is expensive.
10:32:04 <elliott> I don't know if I can afford $2,499.00/node just to annoy shachaf.
10:32:11 <elliott> Maybe I'll get a thousandth of a node.
10:32:19 <coppro> elliott: you should call each bit an apocralypse
10:32:27 <elliott> Wait, that's like £3.
10:32:36 <coppro> in refeence to both perl 6 and discworld
10:32:46 <elliott> shachaf: How much do *you* guys charge per node???
10:33:06 <shachaf> elliott: If you have to ask, you can't afford it.
10:33:19 <elliott> shachaf: Maybe I don't have to ask. Maybe I just want to.
10:33:49 <shachaf> Oh, well, the clustered version isn't actually released yet.
10:34:22 <elliott> So... is it possible to give you money?
10:35:05 <shachaf> ...The "give us money" bit of the website is "currently under maintenance".
10:35:31 <elliott> Ah! One of those post-business-model companies. I've heard about them.
10:35:33 <shachaf> But you can download a free single-machine no-replication version.
10:35:40 * elliott was just waiting for an opportunity to say that.
10:35:47 <elliott> shachaf: I CAN'T WAIT.
10:35:55 <elliott> How can I be web-scale???
10:36:02 <elliott> I MUST KNOW.
10:36:18 <elliott> I'm not even THINKING about giving money to membase any more.
10:36:30 <shachaf> Good to hear.
10:36:42 <shachaf> * elliott fights mockery with mockery.
10:37:07 <elliott> shachaf: Hey, maybe I just really want to be web-scale.
10:37:11 <elliott> Maybe I'll make the next big thing.
10:37:22 <elliott> Maybe Y Combinator -- no, PAUL GRAHAM HIMSELF -- will fund me.
10:37:32 -!- kmc has quit (Quit: Leaving).
10:37:33 <elliott> Maybe I'll buy EVERY SINGLE COPY YOU HAVE and you won't be able to sell your software any more?
10:37:50 <elliott> Maybe you'll be fired because I'll be RICH and giving money to MEMBASE instead!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10:37:54 * shachaf wonders whether to mention that the company he works at is funded by Y Combinator.
10:38:05 <shachaf> Mockery will undoubtedly ensue.
10:38:07 <elliott> I already said it was post-business-model!
10:38:17 * shachaf sighs.
10:38:45 * elliott abandons his dreams of scaling. To the web.
10:38:50 <elliott> Wait, I haven't said cloud yet.
10:39:13 <shachaf> You just did.
10:39:23 <elliott> Not when I said that, I didn't!
10:40:00 <shachaf> By the time you'd said it, you'd already said it.
10:40:23 <elliott> Agoran precedent clearly states that one of the temporal orderings to things like that applies, I just can't remember what it is.
10:40:28 <elliott> It came up recently when I failed to register.
10:41:13 * elliott looks at vault's implementation again.
10:41:19 <elliott> I remember these unsafeCoerces.
10:41:23 <elliott> where f' = unsafeCoerce . f . unsafeCoerce
10:41:34 <elliott> shachaf: The best composition, no?
10:42:18 <shachaf> I must admit it has a certain charm to it.
10:42:29 * shachaf looks at Agora's rules.
10:42:43 <elliott> That's, um, possibly not the best introduction to Agora?
10:42:50 <elliott> Well, it is if you get all the way through.
10:42:50 <shachaf> Ugh. These are the sorts of rules that have paragraphs that start with WHEREAS.
10:42:54 <elliott> shachaf: No.
10:42:56 <elliott> Only one of them.
10:43:00 <elliott> R101 is Special.
10:43:15 <elliott> Rule 104 is the most important one, read that first.
10:43:34 <elliott> It's existed in its original form for 18 years, and has had absolutely no effect for approximately 18 years.
10:44:02 <shachaf> What do the slashes mean?
10:44:12 <elliott> Revision number.
10:44:15 <elliott> It's like CVS.
10:44:25 <elliott> In fact, the rules are kept under RCS!
10:44:31 <elliott> Or at least were, until a few years ago, at least.
10:44:32 <shachaf> "A person SHOULD NOT violate a rule."
10:44:51 <elliott> They also SHALL NOT, but SHOULD NOT means something else entirely.
10:44:58 <elliott> (See rule 2152.)
10:45:15 <shachaf> So does the game end when someone wins?
10:45:37 <elliott> No.
10:45:42 <elliott> Hundreds of people have won.
10:45:47 <shachaf> Have you won?
10:46:01 <elliott> Um, once or twice, I think. By teaming up with others, mostly.
10:46:04 <elliott> By mostly, I mean entirely.
10:46:11 <shachaf> Have I won?
10:46:37 <shachaf> Someone should make a rule where everyone wins.
10:46:39 <elliott> No.
10:47:43 <elliott> http://sprunge.us/jGYX
10:47:43 <elliott> http://sprunge.us/RFhK
10:47:48 <shachaf> Are these people attempting to use Spivak pronouns?
10:47:52 <elliott> I'm not sure why I sprunged that, but I did.
10:47:54 <elliott> shachaf: "Attempting"?
10:48:02 <elliott> Spivak is the universal standard.
10:48:08 <elliott> On the lists, too.
10:48:11 <elliott> Although Norrish doesn't like it.
10:48:22 <shachaf> Oh, apparently there's more than one variety.
10:48:24 <elliott> But he posts like, once every two years, so who cares.
10:48:31 * shachaf had only encountered "Elverson".
10:48:33 <elliott> s/sprunged that/sprunged those/
10:48:39 <elliott> shachaf: You mean the "ey" ones?
10:48:41 <elliott> I can't stand the "ey" ones.
10:48:46 <shachaf> Aye, those.
10:49:01 <elliott> I just keep hearing "eyyyyyyyyyyyyy" whenever anyone uses a pronoun.
10:49:39 <elliott> shachaf: Have I mentioned oerjan used to play Agora?
10:49:51 <elliott> Before I was born. :-/
10:49:54 <shachaf> You are apparently a plagiarist and a scamster.
10:50:02 <elliott> (Although after that too.)
10:50:18 <elliott> shachaf: I completely forget what the former was, and why I got the latter.
10:50:23 <shachaf> Nonsense, the world came into existence when you were born.
10:50:41 <elliott> Heh, the PerlNomic Partnership is in the Scroll.
10:50:46 <shachaf> So why is it "e" but "eir"?
10:50:55 <elliott> shachaf: Why not?
10:51:30 <elliott> I suspect it derives from the LambdaMOO use, since the original nomic was played on a MUD.
10:51:32 <elliott> But that's just a hunch.
10:51:33 <elliott> Erm.
10:51:35 <elliott> *original online nomic
10:51:50 <shachaf> Are you, in fact, a penguinofthegods?
10:51:59 <elliott> Although, NomicWorld was only like one year after LambdaMOO spivak, apparently...
10:52:03 <elliott> shachaf: No, I'm actually a turtle.
10:52:42 <shachaf> And apparently you are a "goon".
10:53:03 <shachaf> Or were, before you were banned.
10:53:14 <elliott> Stop googling me.
10:53:23 -!- elliott has quit (Remote host closed the connection).
10:53:37 <shachaf> @tell elliott OK.
10:53:37 <lambdabot> Consider it noted.
11:57:21 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:14:46 -!- Slereah_ has joined.
12:15:22 -!- Slereah has quit (Ping timeout: 252 seconds).
12:58:10 -!- derdon has joined.
13:12:49 -!- kmc has joined.
13:24:54 -!- ais523 has quit (Remote host closed the connection).
14:28:34 -!- derdon has quit (Remote host closed the connection).
15:19:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:48:05 -!- copumpkin has joined.
15:53:14 -!- kmc has quit (Quit: Leaving).
15:56:02 -!- Phantom_Hoover has joined.
15:57:33 <Phantom_Hoover> Hello lambdabot.
15:57:33 <lambdabot> Phantom_Hoover: You have 8 new messages. '/msg lambdabot @messages' to read them.
16:01:55 -!- MSleep has changed nick to MDude.
16:18:16 -!- atehwa has quit (Ping timeout: 240 seconds).
16:19:04 -!- copumpkin has changed nick to BTCopumpkin.
16:19:24 -!- atehwa has joined.
16:20:03 -!- BTCopumpkin has changed nick to btcopumpkin.
16:21:38 -!- btcopumpkin has changed nick to copumpkin.
16:22:28 -!- Phantom__Hoover has joined.
16:23:11 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
16:26:15 -!- sebbu2 has joined.
16:26:15 -!- sebbu2 has quit (Changing host).
16:26:15 -!- sebbu2 has joined.
16:27:46 -!- sebbu has quit (Ping timeout: 240 seconds).
16:28:04 -!- sebbu2 has changed nick to sebbu.
16:30:25 -!- kmc has joined.
16:31:28 -!- zzo38 has joined.
16:33:55 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:34:31 -!- Phantom__Hoover has joined.
16:42:37 <itidus21> `log
16:42:43 <HackEgo> 2003-05-08.txt:22:13:31: -!- Aardappel has joined #esoteric.
16:42:53 <itidus21> `log
16:42:56 <HackEgo> 2007-06-06.txt:19:07:03: <oerjan> !bf +++++++++++++[>+++++>++++++>+++++++++>++<<<<-]+.>.++.>++++++.<++++++.++++++.-.<.>>>>++++++.<-.<+++++++++++++++++.>-.+.-.
16:42:59 <itidus21> `log
16:43:02 <HackEgo> 2006-03-22.txt:20:55:02: <ihope> !daemon pager bf +[,>,<[->++++++++ ++++++++ ++++++++ ++++++++<]>.<[-]+]
16:43:12 <itidus21> hehe hehe
16:45:47 <Gregor> !bf +++++++++++++[>+++++>++++++>+++++++++>++<<<<-]+.>.++.>++++++.<++++++.++++++.-.<.>>>>++++++.<-.<+++++++++++++++++.>-.+.-.
16:45:50 <EgoBot> ​.ACTION. tests
16:46:01 <Gregor> That would've worked in 2007 :P
16:46:15 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:48:00 <itidus21> log seems even more fun when no specific query is made
16:48:39 <itidus21> `log
16:48:41 <HackEgo> 2006-08-02.txt:08:09:22: <Arrogant> 3 am.
16:50:56 <itidus21> for some reason this 3 am thing brings me back to memories of a board game about "big rigs" which was essentially about driving large trucks great distances
17:00:44 -!- kmc has quit (Quit: Leaving).
17:06:50 -!- Phantom__Hoover has joined.
17:06:55 -!- Phantom__Hoover has quit (Changing host).
17:06:55 -!- Phantom__Hoover has joined.
17:43:28 -!- Klisz has joined.
18:16:42 -!- monqy has joined.
18:18:01 -!- zzo38 has quit (Remote host closed the connection).
18:28:46 -!- kmc has joined.
18:28:57 <Gregor> <itidus21> for some reason this 3 am thing brings me back to memories of a board game about "big rigs" which was essentially about driving large trucks great distances // that sounds almost as exciting as 1835: The game of railroad unification in Germany.
18:49:16 <Phantom__Hoover> That sounds a little less boring than Transport Tycoon Deluxe.
18:49:32 <Phantom__Hoover> (OH SNA— oh wait nobody except fizzie will care.)
18:49:48 <Phantom__Hoover> (Insert speech recognition snipe.)
18:51:40 <itidus21> i am bored enough to care
18:52:11 <itidus21> simulating railway history with a boardgame is more important than anything else
18:56:54 <Gregor> itidus21: WELL THEN HAVE I GOT GOOD NEWS FOR YOU!
18:57:03 <Gregor> itidus21: There's a whole SLEW of 18XX railroad unification board games!
19:14:53 <kallisti> @tell elliott http://www.3rdshiftthoughts.com/2008/11/thank-less-culture.html
19:14:54 <lambdabot> Consider it noted.
19:15:50 <monqy> this is a joke right
19:16:27 <kallisti> monqy: I don't think so.
19:16:33 <monqy> i................
19:16:57 <kallisti> dude read the panel on the right it's hilarious
19:17:35 <kallisti> and also fucked up
19:18:17 <monqy> please be a joke
19:18:22 <itidus21> the bright side of abortions
19:19:17 <kallisti> "abortions"
19:19:52 <Gregor> "Satan is tempting and effortlessly distracting people from anything tree and right and good to that which pleases themselves." <-- this typo adds so many layers of lols.
19:20:00 <Gregor> Satan is distracting us from Christmas trees you guys.
19:20:04 <Gregor> They're the true meaning of Christmas.
19:21:29 <kallisti> I like how people don't think twice about accidentally killing an animal on a highway, but.. one human cell is a big deal (and also is waiting for them in heaven)
19:21:38 <kallisti> I wonder if they'll be able to find their unborn daughters. they're pretty small.
19:21:43 <kallisti> is that how heaven works?
19:21:45 <kallisti> help
19:22:13 <Phantom__Hoover> http://www.cracked.com/blog/31-inspirational-tumblr-photos-adjusted-honesty/
19:22:18 <Phantom__Hoover> I find this strangely hilarious.
19:23:37 <Gregor> kallisti: "There has never been any evidence presented that the soul can enter the body at any time later than conception." Conservapedia
19:23:40 <Gregor> You can't make this shit up.
19:24:07 <monqy> wow good job conservapedia
19:24:32 <Phantom__Hoover> Gregor, there's a moderately high chance that someone did indeed make that shit up.
19:25:01 <Gregor> Fair point.
19:25:17 <Gregor> But /I/ can't make this shit up, and /you/ cant make this shit up, because we're smarter than turnips :P
19:25:25 <Gregor> (No offense to the humble turnip)
19:25:47 <Phantom__Hoover> Ah, but we /could/ make that shit up if we were trying to mock the kind of people who say it.
19:25:55 <Gregor> I don't think I could.
19:26:05 <Gregor> I'm not capable of the sheer convolution of stupidity required.
19:28:50 <Phantom__Hoover> There are bits of the Conservative Bible Project which would be glaringly obvious parody were it not for the fact that the diffs clearly show that Schlafly wrote them.
19:29:06 <kallisti> I was wondering why I felt so tired, and then I realized
19:29:09 <kallisti> I have no caffeine in me.
19:29:27 <Phantom__Hoover> Like when it says that Jesus telling the disciples to cast their nets on the right of the boat clearly showed his endorsement of conservatism.
19:29:41 <kallisti> lol
19:32:04 <Gregor> That ...
19:32:09 <Gregor> See, I couldn't make that shit up.
19:32:31 <Gregor> I wonder if maybe Schlafly is just the greatest troll on Earth.
19:51:41 <Slereah_> I think at that level of effort, it stops being a troll and blooms into a problem
19:58:57 -!- variable has changed nick to const.
20:13:52 -!- oerjan has joined.
20:40:42 <kallisti> so I think next time I get paid I'm gonna buy a computer.
20:45:27 <olsner> kallisti: you don't have a computer!?
20:49:28 <oerjan> he's just using telepathy
20:49:38 <oerjan> or would that be telekinesis
20:56:28 -!- GreaseMonkey has joined.
21:14:06 <kallisti> oerjan: telemagnetism
21:16:26 <oerjan> ah.
21:17:40 <kallisti> olsner: but yes, obviously wanting to buy a computer implies I don't have one.
21:18:04 <Phantom__Hoover> Telemagnetism!
21:18:23 <Phantom__Hoover> Telectromagnetism.
21:19:23 <kallisti> more accurately, I suppose.
21:24:54 -!- boily has joined.
21:34:04 -!- boily has quit (Ping timeout: 240 seconds).
21:46:53 -!- Jafet has quit (Quit: Leaving.).
21:51:58 -!- Ngevd has joined.
21:52:14 <Ngevd> Well, I've got my todo list for this down to one thing.
21:52:23 <Ngevd> Write an actual todo list
21:52:26 <Ngevd> Also, hello!
21:52:52 <oerjan> i was thinking you had got it down to "hello!"
21:53:12 <Ngevd> Nah, "hello!" is absent from this todo list
21:53:22 <oerjan> shocking
21:53:44 <Phantom__Hoover> Damn telectromagnetism.
21:54:23 <oerjan> Telectromagnetism: The shocking story
21:55:56 <oerjan> Telekinesis: The story of a movement
21:56:09 <Ngevd> When I get the todo list empty, you'll be able to critisize my Haskell programming again!
21:56:13 <Ngevd> Everyone loves that!
21:56:53 <oerjan> > unwords $ repeat "Yay!"
21:56:54 <lambdabot> "Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay! Yay!...
21:58:24 <monqy> yay!...
21:59:37 <Ngevd> How do you make IRC tell you when someone comes online?
22:02:24 <olsner> you just need to watch it constantly
22:02:30 <Ngevd> Okay
22:02:49 <Ngevd> Even if it's a particular person I'm looking for?
22:03:10 <monqy> depends on the client??
22:03:19 <kallisti> it occurs to me that a tree zipper can be used quite trivially with the State monad, however
22:03:37 <kallisti> I don't really think it's very useful because the zipper abstraction pretty much hides the state.
22:04:02 -!- derdon has joined.
22:04:25 <kallisti> Ngevd: perhaps you could set up a hilight that matches their join message (is that even a thing you can do?)
22:04:46 <kallisti> or maybe, in irssi, a perl script that outputs a notification to the main window
22:04:52 <Ngevd> I've added them to my friends list?
22:05:05 <kallisti> friends. list? IRC?
22:05:23 <Ngevd> On XChat, somehow
22:05:25 <kallisti> THERE ARE NO FRIENDS ON IRC ONLY ENEMIES.
22:05:30 <Ngevd> Or maybe it was Facebook...
22:06:04 -!- Patashu has joined.
22:06:25 -!- kallisti has changed nick to xxDarkAbyssxx.
22:06:40 <xxDarkAbyssxx> so this is going to be my new nick from now on.
22:06:57 <Ngevd> I preferred CakeProphet
22:07:35 -!- xxDarkAbyssxx has changed nick to xxDarkProphetxx.
22:07:37 <xxDarkProphetxx> there we go.
22:12:19 <oerjan> the prophet of the chocolate cake
22:14:19 <pikhq> http://i.imgur.com/4mQLU.jpg Jesus. Fuck China.
22:14:31 <pikhq> (that's *smog*)
22:15:36 <Ngevd> Ha! They are a good fifty years behind London's scientists in smog making techniques!
22:16:14 <pikhq> London's got fog problems. You're not literally looking at the sun through miles of soot.
22:16:28 <Ngevd> Fifty years ago, however...
22:16:38 <Ngevd> Or was it 100?
22:17:02 <pikhq> Still probably not that bad.
22:17:18 <Ngevd> http://en.wikipedia.org/wiki/Great_Smog_of_1952
22:17:35 <pikhq> That was a picture of a normal day.
22:18:00 <Ngevd> Fair nuff
22:18:51 <Ngevd> London was, to my knowledge, the first place to have air pollution laws
22:19:52 <Ngevd> In 1306
22:20:00 <Ngevd> Silly southeners
22:22:14 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
22:22:52 <Ngevd> Hmm
22:23:06 -!- elliott has joined.
22:23:07 -!- elliott has quit (Client Quit).
22:23:20 <Ngevd> If I used Either StdGen Int instead of (StdGen, Bool) it would make things easier
22:23:34 <Ngevd> No it wouldn't
22:23:37 <Ngevd> :(
22:23:43 <Ngevd> ...IDEA!
22:23:45 -!- elliott has joined.
22:23:46 <Ngevd> :D
22:23:48 <elliott> 22:14:19: <pikhq> http://i.imgur.com/4mQLU.jpg Jesus. Fuck China.
22:23:48 <lambdabot> elliott: You have 4 new messages. '/msg lambdabot @messages' to read them.
22:23:51 <elliott> pikhq: this is pretty
22:24:12 <pikhq> elliott: Your lungs disagree.
22:26:19 -!- Jafet has joined.
22:27:59 <copumpkin> could that just be a foggy day?
22:28:18 <Ngevd> I remember going to London as a chil
22:28:19 <Ngevd> d
22:29:10 <Ngevd> Seeing as at that point I'd lived mainly in the remote town of Hexham, and had poor weak lungs, I coped badly
22:29:21 -!- TeruFSX has joined.
22:30:45 <Ngevd> Why does
22:30:51 <Ngevd> > init . init [1..10]
22:30:51 <lambdabot> No instances for (GHC.Num.Num [a], GHC.Enum.Enum [a])
22:30:52 <lambdabot> arising from a use...
22:30:57 <Ngevd> not work
22:31:06 <Ngevd> but > (.) init init [1..10]
22:31:09 <Ngevd> Wait
22:31:10 <Deewiant> ?unpl init . init [1..10]
22:31:10 <lambdabot> (\ c -> init (init [1 .. 10] c))
22:31:21 <Ngevd> > (.) init init [1..10]
22:31:23 <lambdabot> [1,2,3,4,5,6,7,8]
22:31:32 <Ngevd> Ah
22:31:35 <Ngevd> Thanks Deewiant
22:31:39 <pikhq> copumpkin: Theoretically it could be, but it genuinely isn't. Beijing just has constant pollution.
22:31:45 <Ngevd> (.) confuses me a lto
22:31:55 <Deewiant> > init . init $ [1..10]
22:31:56 <lambdabot> [1,2,3,4,5,6,7,8]
22:31:58 <Deewiant> > (init . init) [1..10]
22:32:00 <lambdabot> [1,2,3,4,5,6,7,8]
22:32:17 <Ngevd> > init $ init [1..10]
22:32:18 <lambdabot> [1,2,3,4,5,6,7,8]
22:32:47 <elliott> Hey Deewiant I figured out roughly how Shiro's fungespace works, GET TREMBLING
22:33:20 <oerjan> ah i can hear they've started selling new year fireworks
22:33:32 <Deewiant> Yeah I saw something about it some 22 hours ago
22:33:33 <oerjan> (which means _someone_ has to try them out now)
22:33:38 <Deewiant> Hope it works out
22:34:33 <copumpkin> pikhq: ah
22:35:58 <elliott> Deewiant: Weeeell technically that's only the prototype fungespace :)
22:36:13 <elliott> Deewiant: I need to figure out what the zipper of a k-d tree is to get the real thing
22:36:31 <oerjan> Ngevd: you just have to remember that function application has higher precedence than all operators, so you cannot just add an argument to apply an expression with an operator in it
22:36:35 <Deewiant> Quadtree might be good enough
22:36:55 <Deewiant> But, sleep -->
22:37:24 <elliott> Deewiant: Uhh, no
22:37:28 <elliott> Deewiant: That won't handle slowdown
22:38:00 <elliott> I'm not releasing until I'm faster than CCBI on all the programs I can find that don't run in less than half a millisecond :P
22:39:21 <oerjan> vaporware by design
22:39:34 <Ngevd> I'm not going to stop until I can search through the logs for me saying "I may" and can say, "I did!"
22:39:38 <Ngevd> Honestly
22:39:53 <Ngevd> Stop what, do I hear you ask?
22:40:04 <oerjan> `log Ngevd> .*I may
22:40:06 <elliott> Saying "I may"?
22:40:10 <elliott> oerjan: Taneb too
22:40:18 <HackEgo> 2011-12-11.txt:15:58:15: <Ngevd> During that, I think I may have worked out a way to do rudimentary arithmetic
22:40:21 <oerjan> `log Taneb> .*I may
22:40:27 <HackEgo> 2011-07-11.txt:15:27:10: <Taneb> I may make an esolang based on football (soccer)
22:40:46 <Ngevd> The first one was in my fervent bytepusher dream
22:40:55 <Ngevd> Which was... yesterday
22:41:08 <Ngevd> The second one, I don't remember
22:41:12 <Ngevd> But was in...
22:41:18 <Ngevd> July!?
22:41:20 <elliott> I can't believe you have to scan a document with a phone number to contribute to tup.
22:50:01 <Ngevd> Well, my awful code is almost ready to be posted in here for...
22:50:06 <Ngevd> Help
22:50:27 <monqy> hi
22:50:32 <Ngevd> I just need to save it and see if it works
22:50:35 <Ngevd> Hi, monqy
22:51:04 <Ngevd> In other news, tiffany is now my strongest Pokmon
22:51:29 <Ngevd> After she defeated the Mauville and Lavaridge gym leaders singlehandedly
22:51:40 <Phantom__Hoover> And just like that, tiffany's existence was given some justification.
22:52:51 <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales.
22:52:58 <tswett> He lives in Detroit.
22:53:18 <Ngevd> `log Ngevd> .*I may
22:53:23 <HackEgo> 2011-12-12.txt:22:40:04: <oerjan> `log Ngevd> .*I may
22:53:28 <Ngevd> `log Ngevd> .*I may
22:53:34 <HackEgo> 2011-10-04.txt:20:37:46: <Ngevd> I may try to write a Fibonacci numbers thing in Brook
22:53:42 <elliott> `addquote <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. <tswett> He lives in Detroit.
22:53:45 <HackEgo> 761) <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. <tswett> He lives in Detroit.
22:53:46 <Ngevd> Okay, I did try to do that
22:53:47 <tswett> I... think we might have found the wrong one.
22:53:50 <Ngevd> Didn't get very far
22:53:54 <elliott> `delquote 761
22:53:57 <HackEgo> ​*poof* <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. <tswett> He lives in Detroit.
22:54:00 <elliott> `addquote <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. <tswett> He lives in Detroit. <tswett> I... think we might have found the wrong one.
22:54:02 <HackEgo> 761) <tswett> Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. <tswett> He lives in Detroit. <tswett> I... think we might have found the wrong one.
22:54:28 <tswett> And, of course, it says "To see all of Gregor Richards's personal information » Click Here".
22:54:37 <tswett> I just love how everyone's personal information is up for sale now.
22:56:03 <oerjan> nah Gregor cannot be black, he looks nothing like Michael Jackson.
22:57:49 <Jafet> Are you saying all black people look alike? Michael Jackson looks nothing like Eminem.
22:58:15 <oerjan> well, just the skin color, of course
22:58:38 <tswett> I'm beginning to doubt that everything in this channel is completely true and unmisleading.
22:58:54 <monqy> :o
22:59:08 <oerjan> tswett: well we do occasionally get trolls, like that guy earlier
22:59:24 -!- pikhq has quit (Ping timeout: 240 seconds).
22:59:36 -!- pikhq has joined.
23:04:46 -!- Ngevd has quit (Ping timeout: 276 seconds).
23:13:54 * Phantom__Hoover → sleep
23:13:56 -!- Phantom__Hoover has quit (Quit: Leaving).
23:19:24 <elliott> Gregor: I like how your hostname is still "foobar".
23:19:27 <elliott> *username
23:25:21 -!- hagb4rd has joined.
23:26:22 <Gregor> elliott: It's a good'n.
23:34:28 <hagb4rd> listen and enjoy.. berlin! http://homepage.alice.de/hagbard/stadtkind_(barbara_morgenstern_remix).mp3
23:38:57 -!- pikhq has quit (Ping timeout: 245 seconds).
23:39:02 -!- pikhq has joined.
23:48:03 -!- zzo38 has joined.
23:54:57 <zzo38> If the DVD recorder is connected to itself, it allows to record a Macrovisioned VHS tape to DVD.
2011-12-13
00:07:28 -!- elliott has quit (Quit: doop).
00:14:16 -!- kmc has quit (Quit: Leaving).
00:19:00 -!- pikhq_ has joined.
00:19:15 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:19:16 -!- pikhq has quit (Ping timeout: 248 seconds).
00:27:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:29:25 -!- pikhq has joined.
00:29:48 -!- pikhq_ has quit (Ping timeout: 252 seconds).
00:37:11 <quintopia> finish this analogy
00:37:24 <quintopia> Christianity:Windows::Wicca:?
00:40:52 <Jafet> Christianity has many distros
00:42:18 -!- DCliche has joined.
00:45:54 -!- Klisz has quit (Ping timeout: 252 seconds).
00:46:27 -!- DCliche has changed nick to Klisz.
00:51:33 -!- copumpkin has joined.
00:52:34 -!- calamari has joined.
00:53:50 -!- hagb4rd has joined.
00:57:57 <quintopia> Jafet: yes, true, but ignore that for now. is has the property that (a) the majority of religion-users in the western world use it and (b) it is very much targeted at the lowest common denominator, although there is latent potential for power users as well.
01:04:16 <pikhq> Shame you didn't go with Scientology.
01:04:21 <pikhq> Then I could finish it so easily.
01:04:39 <pikhq> ::Scientology:LoseThos
01:05:54 <quintopia> i want to know which OS is so esoteric and obscure that only paganism suits it
01:06:18 <pikhq> I'm inclined to go with OS/2.
01:06:32 <pikhq> Or perhaps FreeDOS.
01:07:16 <oerjan> but but, it needs to be an os which claims to be the modern revival of an os which windows brutally crushed
01:07:45 <Jafet> An OS/2 remake?
01:07:55 <pikhq> OS/2 is still maintained.
01:08:57 <Jafet> Modern Christianity has as many pagan elements as Christian elements
01:09:28 -!- Jafet has quit (Quit: Leaving.).
01:18:13 <oerjan> eek, reddit won't load, i haven't seen that in a while
01:36:25 <fizzie> How about that BeOS remake?
01:38:56 <fizzie> Not that BeOS really counts as "brutally crushed" in the "existed earlier but then" sense, more in the "tried to get going but then" one.
01:39:58 <zzo38> Jafet: Yes, I can understand. The religions are based on older traditions so that includes Christian as well as pagan (for various reasons; you might learn on Wikipedia)
01:40:36 <zzo38> I use FreeDOS at a Roman Catholic education center.
01:47:35 -!- elliott has joined.
01:47:51 <elliott> 01:05:54: <quintopia> i want to know which OS is so esoteric and obscure that only paganism suits it
01:47:54 <elliott> paganism is "so esoteric and obscure"?
01:48:35 <quintopia> IT TOTALLY IS
01:49:24 <elliott> 01:06:18: <pikhq> I'm inclined to go with OS/2.
01:49:31 <elliott> pikhq: For some reason I want to say that OS/2 is Zoroastrianism.
01:49:34 <elliott> I know little about both.
01:49:54 <elliott> 01:36:25: <fizzie> How about that BeOS remake?
01:50:15 <elliott> fizzie: It's called Haiku, dude, there's pretty much no chance it's not Buddhism?
01:55:32 <MDude> A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft.
01:56:42 <MDude> That agrees with what I know from that Scoobie Doo movie with the wiccans in it.
01:56:50 <elliott> `addquoet <MDude> A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. <MDude> That agrees with what I know from that Scoobie Doo movie with the wiccans in it.
01:56:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: addquoet: not found
01:56:56 <elliott> `addquote <MDude> A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. <MDude> That agrees with what I know from that Scoobie Doo movie with the wiccans in it.
01:56:58 <HackEgo> 762) <MDude> A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. <MDude> That agrees with what I know from that Scoobie Doo movie with the wiccans in it.
01:57:05 <fizzie> Haiku - "I can't believe it's not but.. Buddha".
01:57:12 <elliott> MDude: You should write a book and call it Everything I Know About Wicca I Learned From Scooby Doo.
01:58:04 -!- cheater has joined.
01:59:23 <MDude> Is there any operating system connected to to some earlier system that was hunted down in a manner similar to a witch hunt?
02:00:04 <elliott> MDude: All I can think of is if SCO suceeded in DESTROYING LINUX and then someone started developing it again decades later.
02:00:10 <elliott> That didn't happen though. (YET?)
02:00:21 <MDude> Also, I heard about wiccans form other places, but figured it was mostly generic pagan stuff.
02:00:28 <elliott> I don't think operating systems are hunted a lot.
02:00:45 <MDude> Though I guess I thought a lot of pagan stuff was connected to witches.
02:00:50 <elliott> They're too boring, and there's a huge barrier to entry so obviously illegal stuff doesn't tend to happen.
02:01:05 <elliott> MDude: Isn't "witch" just generic pagan stuff these days? :p
02:01:36 <MDude> I don't really know, it's not the kind of tihng I keep up with.
02:01:49 <MDude> There is actually a witchcraft-themed linix, though.
02:02:50 <MDude> I found it by looking up "Linux grimoire".
02:03:54 <elliott> That just brings up Source Mage for me.
02:04:00 <elliott> I suppose that counts as "witchcraft-themed".
02:04:04 -!- thatmentat has joined.
02:04:14 <thatmentat> Greetings friends.
02:04:28 <elliott> `welcome thatmentat
02:04:31 <HackEgo> thatmentat: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
02:04:43 <oerjan> i should point out that in some muslim states you can _still_ get executed for presumed witchcraft, i saw one mention from saudi arabia in a paper today
02:04:45 * elliott is a `welcoming machine of ruthless efficiency
02:05:05 <elliott> oerjan: We sure are unifying the two definitions of esoteric here.
02:05:05 <MDude> Well it doens't seem like it's themed after ancient Persian scholars.
02:05:19 <zzo38> oerjan: And apparently in Canada it is illegal to charge money for "witchcraft" stuff or something like that.....
02:05:53 <zzo38> elliott: In that case, you can probably unify a lot of stuff in certain ways for certain purposes
02:05:55 <thatmentat> This is a chat room for programming languages?
02:05:55 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034 one of our spambots just tweaked the colours it's using
02:06:03 <elliott> "naw, i think red is better here"
02:06:06 <oerjan> zzo38: wrt that i read in britain (until recently?) it was not illegal to _be_ a witch but it was illegal to _pretend_ to be one
02:06:12 <elliott> thatmentat: Yes. Even if it doesn't seem like it right now.
02:06:16 <elliott> (Are you here for that, or the other kind of esoteric?)
02:06:19 <oerjan> *-that
02:06:25 <oerjan> er
02:06:28 <oerjan> *-*-that
02:06:31 <elliott> oerjan: well they might burn someone by mistake
02:06:45 <zzo38> thatmentat: Yes, it is a chat room for esoteric programming but we discuss a lot of things here anyways
02:06:45 <thatmentat> I came for the second. I haven't the patience to learn programming.
02:06:59 <elliott> thatmentat: you probably won't find it on freenode, then
02:07:02 <elliott> it's mostly technology-oriented
02:07:52 <thatmentat> What is mostly tech oriented?
02:07:58 <elliott> freenode, the IRC network you are on
02:08:07 -!- cheater has quit (Ping timeout: 245 seconds).
02:08:23 <zzo38> But if you have a specific question (regardless of topic), you might ask. And then quit if you do not get an answer (unless it is a question about esoteric programming in which case stay)
02:09:17 <oerjan> thatmentat: alas we have never learned of a good irc channel to recommend for those who come here expecting the other interpretation of esoteric
02:09:44 <elliott> oerjan: we should just make one and let them all trickle in, it'll be more active than this place within a year :P
02:09:52 <quintopia> that
02:09:52 <oerjan> heh
02:09:54 <quintopia> do that thing
02:10:01 <thatmentat> I could use recommendations of other irc places though, even if not specifically esoterical.
02:10:07 <zzo38> I realized that if you define a monad transformer and/or comonad transformer then you can easily define return and extract as well the definition will always the be same: return = lift . return; extract = extract . lower;
02:10:16 <oerjan> elliott: well those guys who started #philosophy tried to do that, didn't they? how is it working?
02:10:23 <thatmentat> send people to irc.dal.net #esoteric
02:10:26 <thatmentat> ^
02:10:29 <elliott> it's not #philosophy, is it?
02:10:33 <elliott> thatmentat: Oh, is that active?
02:10:41 <quintopia> it was a year ago i think
02:10:44 <oerjan> elliott: i thought it was _something_ like that...
02:10:45 <thatmentat> more than not existing
02:10:53 <elliott> * Users on #Esoteric: elliott thatmentat QueenAqua @^roshi marduk666 @Venus666 VenusSatanas_ Trollfood ami- Cocytus hippl^
02:10:55 <elliott> Cocytus again!
02:11:03 <elliott> did that guy just join #esoteric on every server everywhere
02:11:16 -!- derdon has quit (Remote host closed the connection).
02:11:22 <oerjan> elliott: that list looks promising, at least :P
02:11:23 <zzo38> I have an IRC server too, however it has no channels what you want probably and hardly anyone is in there
02:11:29 <elliott> thatmentat: well, glad you've found somewhere
02:11:36 <elliott> oerjan: <^roshi> thing is there are several streams of alchemy
02:11:38 <elliott> oerjan: looks good :P
02:11:52 * elliott lurks.
02:12:08 <zzo38> What about alchemy?
02:12:10 <quintopia> let us know if anything above and beyond the usual pale of ridiculousness falls out
02:13:10 <elliott> quintopia: thatmentat is still here, you know! :P
02:13:47 <zzo38> What are you talking about alchemy?
02:14:21 <quintopia> elliott: what's your point?
02:14:44 -!- oerjan has set topic: Zeroth to prove spontaneous human combustion wins | This is a programming channel; if you are looking for the other kind of esoteric you might try #esoteric on irc.dal.net | Logs: http://codu.org/logs/_esoteric/.
02:15:05 <elliott> oerjan: hey i was going to _ask_ them first
02:15:14 -!- elliott has set topic: Zeroth to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/.
02:15:15 <oerjan> elliott: well we can remove it again
02:15:33 <zzo38> oerjan: OK that is good. But still we discuss a various a lot of things in here.
02:15:52 <thatmentat> I just joined ones that looked like they had people in them.
02:15:55 <zzo38> So, figure out, should that message be there or not? Maybe it makes too long? Or other reason?
02:16:07 * elliott asks them
02:16:08 <thatmentat> I was curious.
02:17:05 <thatmentat> Interesting response. I didn't think he would reject the idea elliott.
02:17:19 <elliott> yeah that was out of left field :P
02:17:20 <zzo38> But note, once someone accessed this channel, and then quit, and then I had something about astrology and then they could not have their question answered because they missed it. But still, notice that we have more mathematical points of view so they might not have understood the answer anyways (maybe).
02:17:47 <oerjan> <zzo38> What are you talking about alchemy? <-- elliott was quoting an example message from the other #esoteric channel at dalnet
02:18:25 <quintopia> they refused?
02:18:33 <elliott> quintopia: no, the guy misunderstood what i said
02:18:35 <quintopia> oh
02:18:57 <zzo38> What does "several streams of alchemy" mean anyways? Alchemy is what they did before they had proper science, they could do it like that they did not know things better or have better equipment to know better. Now we have chemistry
02:19:35 <thatmentat> The idea is that there are several basic models for Alchemy I believe.
02:20:07 <thatmentat> Alchemy as was being discussed goes beyond simply trying to manipulate materials.
02:21:01 <elliott> `run echo "This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net." >wisdom/esoteric
02:21:03 <HackEgo> No output.
02:21:07 <elliott> `? esoteric
02:21:10 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net.
02:21:44 <zzo38> elliott: Yes that way might be good idea instead of topic message, I supppose.
02:22:04 <zzo38> And then you can make a shortcut for those kinds of informations message.
02:22:12 <elliott> the only thing that can successfully survive our constant topic changes is the log link :P
02:22:32 <oerjan> zzo38: as i understand, alchemy sometimes has a strong spiritual component aside from the chemistry - basically you are supposed to transform yourself at the same time as you are learning how to transform materials
02:23:10 <oerjan> when put like that, it sounds like you could possibly even make a modern version based on actual chemistry
02:23:21 <elliott> oerjan: i'm afraid not: "It must never be supposed that the practice of alchemy consists only in the exercise of the mind, will, and imagination, or that the products obtained are imaginary and intangible or invisible to mortal eyes."
02:23:31 <elliott> from a link posted in #esoteric while i was there :P
02:23:42 <elliott> apparently you still need the physical materials, though.
02:23:57 <oerjan> elliott: "only" does not mean that it doesn't also involve that
02:24:02 <zzo38> oerjan: Yes, sometimes they did do spiritual things based on some ideas of alchemy.
02:24:06 <elliott> oh, wait
02:24:08 <elliott> must never be supposed
02:24:14 <elliott> i completely negated that meaning
02:24:19 <zzo38> But I think it is "spiritual alchemy" instead of real alchemy.
02:24:55 <xxDarkProphetxx> hi gaiz
02:25:13 <xxDarkProphetxx> oh right.
02:25:15 -!- xxDarkProphetxx has changed nick to kallisti.
02:25:39 <zzo38> Now we have science so we don't need alchemy (except for the purpose of making up new alloys, sometimes, at least according to some opinions).
02:25:40 <kallisti> (that's /too/ much irony. I can't handle it)
02:27:11 <kallisti> zzo38: okay so I'm working on an IRC bot that is intended to assist tabletop RPGing over IRC.
02:27:12 <zzo38> Whatever the discussion in here, it often involves some scientific and mathematical stuff, sometimes. Because this is how the people in this channel are, in general.
02:27:33 <zzo38> kallisti: Yes I was doing so, too. I think one IRC server has a GS command to do that too
02:27:57 <kallisti> zzo38: should I use my native WoD terminology for concepts, or should I use D&D, or is there some standard terminology that isn't D&D?
02:28:13 <kallisti> most people say "gamemaster" and "campaign" where I would say "storyteller" and "chronicle" I think.
02:28:25 <zzo38> kallisti: I say "referee" in my opinion, at least.
02:28:36 <oerjan> D&D uses dungeon master sometimes, doesn't it?
02:28:38 <kallisti> that... no I don't like that. :P
02:28:38 <zzo38> For dice, just use 1d6+2 or whatever.
02:28:39 <kallisti> oerjan: yes
02:28:50 <kallisti> oerjan: game or dungeon master works. I think gamemaster is typically preferred.
02:29:00 <zzo38> oerjan: D&D usually calls "dungeon master" but you could use different terms. I prefer "referee" but use whatever you prefer.
02:29:01 <kallisti> but I honestly don't know much about D&D culture
02:29:13 <kallisti> because I don't play that game.
02:29:24 * kallisti likes "storyteller"
02:29:25 -!- thatmentat has left.
02:30:04 <zzo38> kallisti: Read the D&D recordings I wrote and learn about how I play the game, at least.
02:30:11 <kallisti> with a single game being a story, and a set of stories with recurring characters and themes being a chronicle.
02:31:02 <zzo38> kallisti: Yes, that is a sensible view. I consider the game (story) consisting of several sessions, which have both session breaks and chapter breaks, which might or might not coincide.
02:31:23 <zzo38> I think some IRC server, if you use the command "GS ROLL 1d6" for 1d6 roll dice, and so on. You can optionally include a channel afterward to copy the results to the named channel
02:31:39 * kallisti plans to incorporate a little bit more than a simple dice roller, since he already has that.
02:31:54 <kallisti> I plan on implementing dice rollers for each system, perhaps with the ability to track stats.
02:32:43 <kallisti> so that you can say: !roll Dexterity+Acrobatics+2 diff 6
02:32:44 <oerjan> @dice 3d6 + 1d20
02:32:44 <lambdabot> 3d6 + 1d20 => 27
02:32:45 <kallisti> for example
02:33:04 <zzo38> O, lambdabot already has
02:33:21 <kallisti> that doesn't work well with shadowrun and WoD systems
02:33:27 <kallisti> where you roll a large number of dice against a target number
02:33:37 <oerjan> @dice 1000d6
02:33:38 <lambdabot> 1000d6 => 3527
02:34:37 <zzo38> I have thought of a different system: referee rolls all the dice by hand; players don't, however some common text adventure abbreviations should be understood by the referee
02:34:56 <kallisti> zzo38: well yes I was planning to have options to allow the referee to roll everything
02:35:12 <kallisti> !roll with <character> <roll>
02:35:13 <kallisti> for example
02:35:30 <kallisti> I don't know if the complexity is warranted though, for the average tabletop gamer.
02:35:31 <zzo38> kallisti: No, I mean by hand. Like, not on the IRC.
02:35:58 <elliott> @dice 8d8
02:35:58 <lambdabot> 8d8 => 28
02:36:12 <zzo38> Do it slightly similar to a text adventure game. (Text adventure game are the closest kind of computer games to a role playing games, in my opinion)
02:37:10 <kallisti> zzo38: oh yes, I play that way as well.
02:42:31 <zzo38> Have a program that runs on the referee's computer, with a separate window and the IRC as well; it is connected to the IRC server so that someone can use PRIVMSG whatever :HELP and so on, and make file transfer of the data if wanted, in the computer data format, and then possibly to DVI to print as well
02:43:16 <zzo38> (Commands other than HELP and STATUS would not be accepted if you are not currently in a game session, I guess)
02:44:01 <zzo38> And everyone makes synchronized local copy of game data, with the main data on the referee's computer
02:44:19 <zzo38> While private data does not have to go into the program at all
02:45:57 <zzo38> I do have a channel in my IRC server for RPG sessions, and I might be able to add server scripts for a few of things you do in there, if I want to do so.
02:47:41 <kallisti> zzo38: I was going to make the entire thing public, but with access restrictions.
02:48:00 <kallisti> of course rolls can be done in private via privmsg
02:48:07 <kallisti> also entering stats
02:48:19 <kallisti> but a storyteller for a certain chronicle would have full access to every characters information.
02:49:00 <zzo38> Just do all commands by private; results can be copied to the channel if the game is in session. And then have data files access
02:49:05 * kallisti would also need to implement an authentication system to make sure that nicks are identified.
02:49:15 <kallisti> I haven't figured out how to do that with the bot framework I'm using in Perl.
02:49:21 <zzo38> kallisti: That is, for IRC servers that have that.
02:49:23 <kallisti> so I might have to rewrite the low-level bits.
02:49:58 <zzo38> And there are some differences between servers too.
02:50:44 * kallisti wishes he was still coding for that WoD MUD
02:50:50 <kallisti> I was going to do so many awesome things with their dice roller.
02:51:33 <kallisti> like having a huge weapon table to automatically handle damage rolls on firearms and melee weapons
02:52:09 <zzo38> The server scripting language for my IRC is called "Cthulhu.194" and this is an example file: http://sprunge.us/SNPD
02:52:11 <kallisti> you'd basically have to know even less about the system than you already did in order to play.
02:52:22 <kallisti> oh god what is this. lol
02:53:33 <Sgeo> I assume it's called Cthulhu for a reason
02:53:51 <zzo38> (The WEBIRC command was originally built in to the server program. I removed that feature and then added a script to implement it instead. A script can have multiple command names to access it; this is defined in the configuration file)
02:53:56 <kallisti> I... can't tell if it's postfix or prefix.
02:53:58 <kallisti> it seems to change.
02:54:27 <zzo38> Sgeo: Yes, it is because I implemented the SUMMON command that no other IRC has. And then someone in this channel mentioned SUMMON CTHULHU and they don't like that or whatever, so I called it that.
02:56:29 <zzo38> kallisti: Actually it is all prefix, although a few things act like they are postfix.
03:00:15 <zzo38> Here is another script (currently active in my server; however you do not have permission to access it): http://sprunge.us/RAjB
03:00:20 <Sgeo> The memory manager I wrote for class has O(n) access time :(
03:01:13 <elliott> pro
03:03:59 <kallisti> at first I thought creating a weapons table for a dice roller would be a huge pain, BUT
03:04:27 <kallisti> now that I've got a little better at scraping stuff with perl, I can just steal something online and convert it into a desired format.
03:05:16 <kallisti> instead of manually writing "Colt Anaconda difficulty 6, damage 6, rate 2, clip 6, range 35, Colt Detective Special difficulty 6, damage 4, rate 4, ..."
03:05:24 <kallisti> and then eventually killing myself
03:05:54 <zzo38> Just write the numbers separated by commas and a semicolon at the end of each record, is another way
03:05:58 <kallisti> as I go through common models of revolvers, shotguns, semi-automatic pistols, machine guns, machine pistols, rifles, assault rifles, battle rifles, ...
03:08:00 <kallisti> there's even weapon data on fun stuff like jackhammers, industrial drills, war hammers, tridents, chainsaws, and crossbows
03:08:15 <kallisti> because.. I'm totally going to bring a trident to a gun fight. that's my character's preference.
03:08:36 <zzo38> kallisti: O, OK. But then it is not a proper gun fight, isn't it?
03:08:41 <kallisti> guess not.
03:09:06 <kallisti> actually, if you're playing as vampires, the rules actually make melee weapons feasible, as bullets are nowhere near as effective against vampires.
03:10:35 <kallisti> so, vampire+chainsaw could be a viable option against a squishy mortal + small pistol
03:11:28 <Sgeo> Attention self: It is NOT ok for the starting address of each partition to be the number of the partition
03:11:58 <kallisti> ..
03:13:46 <Madoka-Kaname> Sgeo, why did you
03:14:17 <zzo38> Read the character data that I recorded for D&D games if you want to see some information about it in case it helps you to write a program to store these kind of data (mine is D&D 3.5 edition; but make the program acceptable for many systems including but not limited to this one)
03:14:19 <Sgeo> Madoka-Kaname, I didn't deliberately. It's a bug that I somehow didn't notice when testing yesterday
03:14:29 <zzo38> And if you have other questions about the system you can ask that too
03:14:53 <hagb4rd> zzo38!
03:15:13 <zzo38> hagb4rd: ?
03:15:18 <kallisti> zzo38: I'm going to work on shadowrun and world of darkness first as these are the systems I primarily enjoy, though it's difficult to find anyone who has an interest in those things.
03:15:20 <hagb4rd> what kind of "information"?
03:15:59 <kallisti> zzo38: basically each system will have mostly unique rules so I'm not going to generalize anything. Each dice roller will use its own special syntax.
03:16:20 <kallisti> each system will have different kinds of data in character tables, etc
03:16:30 <zzo38> kallisti: OK, do that first, then. But see what I have afterward, you might be able to make a more generalized system if necessary. I can also give a little bit of information about the Icosahedral RPG system since it uses a few special requirements for character data storage
03:16:33 <Sgeo> I had .Count() instead of .Sum()
03:16:53 <hagb4rd> hey may i see your ad&d work zzo38?
03:16:57 <kallisti> zzo38: well some of the library code will be generalized.
03:17:07 <zzo38> kallisti: Yes, that is what I was about to suggest.
03:17:17 <kallisti> zzo38: to avoid tedium. The idea is that you could specify what a character sheet contains and the "create character" command would just refer to that in order to generate a blank sheet.
03:17:41 <zzo38> hagb4rd: http://zzo38computer.cjb.net/dnd/recording/level20.tex
03:17:41 <kallisti> zzo38: and since it's all Perl I just let dynamic typing do its thing.
03:17:53 <hagb4rd> thank you
03:18:25 <zzo38> hagb4rd: It is a game story. If you want spells/feats/whatever I invented, I can show you those things too
03:18:57 <zzo38> kallisti: That was my idea with the Icochash program I wrote; however, I abandoned that and might later rewrite it, but not in PHP next time! Same thing with Icoruma, I might rewrite it in a faster programming language than PHP next time.
03:19:11 <kallisti> zzo38: why would you even consider PHP
03:19:23 <hagb4rd> yea.. actally yes.. i'm planning to write a irc-bot as a supporting device for pen & paper games over the net
03:19:23 <kallisti> zzo38: also why is performance important?
03:19:29 <kallisti> ...lol
03:19:35 <kallisti> SO MUCH CODE DUPLICATION
03:20:06 <hagb4rd> but the idea is you still need a game master and a story teller
03:20:12 <hagb4rd> and real roleplaying
03:20:14 <zzo38> kallisti: PHP is not very good but I have used it before. Next time I will use C or Haskell. And performance is good because when there are a large number of files it becomes slow
03:20:37 <kallisti> not if you just load everything into memory.
03:21:01 <hagb4rd> but zzo38 your link doesnt resolve in chrome
03:21:03 <zzo38> kallisti: Even if loading everything into memory, it is slow because it still has to load the files and parse them.
03:21:29 <hagb4rd> is tex like text in (la)tex?
03:21:30 <kallisti> at startup sure. or is this a web thing?
03:21:33 <zzo38> hagb4rd: Try adding "view-source:" to the front; that might work (I know it works in Mozilla; I don't know whether Chrome does or not)
03:21:48 <zzo38> kallisti: No, it is a standalone program, actually.
03:22:07 <kallisti> oh, well then parsing only adds to startup overhead.
03:22:11 <kallisti> and then everything is fine?
03:22:11 <hagb4rd> k lets do it that way then.. one need them all these days..*dumidum
03:22:12 <zzo38> hagb4rd: LaTeX is a format for TeX; this file is Plain TeX.
03:22:17 <hagb4rd> k
03:22:19 <kallisti> hagb4rd: what language do you want to use?
03:22:24 <Sgeo> kallisti, elliott update
03:22:38 <zzo38> kallisti: Yes but it must reload every time you modify the input files in order to recompile them, and that makes it very slow
03:22:51 <hagb4rd> php or c# or sth in betwenn.. maybe all.. -> web services
03:22:53 -!- Nisstyre has quit (Ping timeout: 244 seconds).
03:22:53 <hagb4rd> dunno
03:22:56 <kallisti> Sgeo: I feel this intermission is a bit rushed, but nonetheless awesome to read.
03:23:13 <kallisti> hagb4rd: I thought it was an IRC bot and not a web-thing?
03:23:27 <hagb4rd> irc just as endpoint
03:23:33 <hagb4rd> to players
03:23:48 <kallisti> hagb4rd: oh, okay.
03:23:54 <kallisti> that's not a bad approach actually.
03:24:16 <kallisti> I'm used to MUDs though so I have absolutely no problems with a marginally complicated command interface.
03:24:20 <kallisti> a web interface would be convenient though.
03:24:37 <hagb4rd> im really not that far into how to implement things..and implementation will be trivial at all
03:24:48 <zzo38> I think it should not be a web interface; it should be MUD. But possibly add a Java web interface as an alternative.
03:24:50 <kallisti> +not (?)
03:24:59 <zzo38> (Some systems, such as FICS, do this)
03:25:14 <hagb4rd> its kind of operation research
03:25:25 -!- Vorpal has quit (Ping timeout: 276 seconds).
03:25:27 <kallisti> commands simplify things for the implementation. Normal people will be scared though because OH MY GOD I HAVE TO LEARN SYNTAX.
03:25:54 -!- Nisstyre has joined.
03:26:06 <hagb4rd> it would be nice if players could extend the world its actors actions and stuff by writing some kind of easy readable xmlcode
03:26:08 <zzo38> kallisti: Then do what I specified; use MUD and then make a Java frontend as an alternative interface to use?
03:26:20 <zzo38> hagb4rd: It doesn't have to be XML, necessarily.
03:26:28 <hagb4rd> no it doesnt
03:26:32 <hagb4rd> as i mentioned
03:26:55 <kallisti> hagb4rd: are you familiar with MOO?
03:27:07 * Sgeo goes to make random access in his memory manager O(1)
03:27:23 <hagb4rd> im into designing the game itself.. + try to invent something revolutionary new and motivational
03:27:24 <zzo38> hagb4rd: Do you like the document I posted, now? Can you read it now? (You could just download it and open in a text editor, if necessary)
03:27:25 <kallisti> Sgeo: isn't that kind of redundant?
03:27:33 <kallisti> random access typically implies O(1) I thought.
03:27:34 <hagb4rd> yes exactly
03:27:35 <hagb4rd> :)
03:27:41 <kallisti> if it's O(n) or anything like that it's no longer random access.
03:28:08 <zzo38> I had the idea Icosahedral RPG too, is the new game; however, it is not a computer game.
03:28:45 * kallisti wishes MUDs were not quickly dying out
03:28:55 <kallisti> they are a good medium for multiplayer roleplaying games I feel.
03:29:17 <zzo38> Here are two examples of Icoruma input files: http://zzo38computer.cjb.net/icosahedral/icoruma/intro.irm http://zzo38computer.cjb.net/icosahedral/icoruma/spells.irm
03:29:21 <kallisti> I definitely think they could use a modern interface, while still retaining the text-based medium.
03:29:24 <calamari> there was a mud years ago which I believe still exists.. it had a huge map of middle earth and various towns and quests
03:29:29 <kallisti> but incorporating some mixed media.
03:29:41 <zzo38> kallisti: Then use MUDs if you like that way. I think just use the same protocol as the old way
03:29:52 <monqy> http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034
03:30:03 <kallisti> zzo38: I'm kind of talking about a separate project
03:30:06 <zzo38> You don't need to incorporate some mixed media, I think.
03:30:07 <calamari> anyways I almost got banned because I made a program that gave me a graphical map and could automatically navigate between towns
03:30:09 <kallisti> zzo38: my IRC bot is much simpler than a MUD
03:30:27 <monqy> oh already bene noted
03:30:29 <monqy> ;_;
03:30:37 <kallisti> calamari: those are fairly common in MUD clients. You don't even need to make one.
03:30:47 <calamari> kallisti: this was a long time ago
03:30:53 <zzo38> kallisti: OK. Still, I think a MUD should be made the same way as the old way, possibly support alternative front-ends if they would help but allow any MUD client to continue working
03:30:59 <kallisti> calamari: also it's generally impossible to detect if you put a reasonable delay between moves.
03:31:06 <zzo38> Even a simple dumb MUD client should be acceptable.
03:31:19 <calamari> kallisti: that's what I did lol
03:31:29 <hagb4rd> yes zzo38 at least i can grab it..will examine things later..im far behind tired
03:31:32 <kallisti> zzo38: I was thinking from the perspective of refreshing the community with new people.
03:31:33 <hagb4rd> need to sleep
03:31:57 <zzo38> kallisti: Well, add on new signals that are turned on when the client indicates support
03:32:00 <hagb4rd> far beyond
03:32:04 <kallisti> zzo38: though even with interface improvements most people are so attached to their big budget graphical games that they probably wouldn't adjust well to the text-based format.
03:32:10 <calamari> kallisti: it added features too, where I could have virtual parties that existed.. the game didn't handle them, but we could track each other on the map via special private messages
03:32:16 <kallisti> zzo38: yes that's generally how it would work.
03:32:24 <calamari> kallisti: was a lot of fun
03:33:00 <kallisti> zzo38: plenty of existing custom MUD clients are implemented over telnet and allow general clients.
03:33:04 <zzo38> But a dumb client supporting no signals other than text receive and command send, should still be acceptable. But also make the new clients with many new options and so on
03:33:42 <kallisti> one occasionaly problem is that many MUD clients are not actually legitimate telnet clients
03:33:54 <calamari> I implemented this as a modem program actually... had to dial up to my unix shell account in order to telnet
03:34:15 <calamari> in ms-dos of course, lol
03:34:17 <kallisti> but it's not a huge problem. You just send them something telnety and if they don't respond with something telnety then you just treat them like a basic socket and dump text (maybe with ANSI codes if the option is turned on since most clients support those)
03:34:48 <calamari> so it was actually layers of hacks.. oh well.. it worked and it was fun
03:34:49 <zzo38> kallisti: Well, yes, if it is a telnet then you should handle backspacing and those things at the server too.
03:34:55 -!- GreaseMonkey has quit (Quit: The Other Game).
03:34:57 <kallisti> zzo38: there are actually some "mud protocols" that exist that allow mixed media and the like, but they're generally bad and not well supported.
03:35:04 <zzo38> But if it is a dumb linemode client, then use that.
03:35:41 <calamari> kallisti: I remember back in the day that some bbses supported extra codes where if you had the right client you'd get a graphical gui
03:35:51 <calamari> it was lame overall tho
03:36:16 <calamari> just made it slower and didn't really add much since it was just showing the same info
03:36:52 <calamari> well let's see how xfce compares against lxde.. bbl
03:37:22 -!- calamari has quit (Quit: Leaving).
03:45:27 -!- calamari has joined.
03:52:43 <kallisti> I have two lists of words
03:53:16 <kallisti> A and B, split by newlines. what's the fastest way in bash to display the words in A that aren't in B?
03:57:27 <Sgeo> My memory manager is demented! Yay!
03:57:37 <Sgeo> Probably due to the hastily conceived "random access" idea
03:57:43 * kallisti found the solution to his problem as well: use perl instead of bash
03:57:51 <Sgeo> Or, well, poor implementation thereof
03:57:53 <quintopia> was gonna say that :p
03:58:11 <kallisti> quintopia: sometimes I wonder why I even try to use bash.
03:58:24 <kallisti> I get the misguided notion that I'm going to be faster with it if I get the hang of it.
03:58:27 <kallisti> but I'M NEVER GOING TO UNDERSTAND BASH
03:58:53 <oerjan> kallisti: probably bad elliott influence ;P
03:59:09 <elliott> wat
03:59:10 <hagb4rd> faster to write? or faster computed?
03:59:13 <kallisti> to write.
03:59:29 <kallisti> yeah I'm all about the BREAKNECK SPEED of my simple automated tasks.
03:59:55 <kallisti> I want them to be UNNOTICEABLE FRACTIONS OF SECONDS FASTER
04:00:09 <zzo38> Icoruma has a few features I would like to see in other programming languages, such as wildcard includes. I don't know of other programming languages that have that.
04:00:23 <hagb4rd> show
04:00:31 <elliott> oerjan: wat
04:01:53 <oerjan> elliott: see: certain HackEgo commands i rewrote
04:02:42 <elliott> >_>
04:03:58 <zzo38> The idea of what exactly a "mana" is in Icosahedral RPG could also be used in other games too if you want to.
04:06:59 <zzo38> (Among other things, it is a commutative monoid, with five primes.)
04:14:29 <zzo38> I think, in the XOR monoid, True is prime. Is it?
04:18:39 <Sgeo> .... I think, my professor's default fixed partition memory manager allocates an unneeded partition
04:33:27 <Sgeo> elliott, kallisti, update
04:33:46 <elliott> oh.
04:35:53 -!- calamari has quit (Quit: Leaving).
04:47:40 -!- Jafet has joined.
05:12:38 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
05:13:06 -!- oerjan has quit (Quit: Good night).
05:14:25 -!- pikhq_ has joined.
05:15:01 -!- pikhq has quit (Ping timeout: 268 seconds).
05:33:10 <zzo38> What is the property of applicatives for which this applies: () <$ x = pure () for any x of this applicative type
05:34:24 <elliott> zzo38: sounds like the equivalent of commutative monads
05:34:40 <elliott> possibly equivalent to (f <$> a <*> b) = (flip f <$> b <*> a), I think
05:37:02 <zzo38> O, is that what commutative monads means? Your condition seems to me like commutative applicative?
05:37:46 -!- Jafet has quit (Quit: Leaving.).
05:38:05 <elliott> something like that, yes :P
05:38:15 <elliott> commutative monad is stronger i think
05:38:22 <elliott> a >>= \x -> b >>= \y -> f x y = b >>= \y -> a >>= \x -> f x y
05:38:23 <elliott> apparently
05:38:31 <elliott> oh
05:38:35 <elliott> do { a <- mb; b <- mb; f a b }
05:38:35 <elliott> =
05:38:39 <elliott> do { b <- mb; a <- ma; f a b }
05:38:43 <elliott> that's easier to read :P
05:41:08 <zzo38> Is that similar but after join?
05:43:03 <elliott> right
05:53:57 <kallisti> `style
05:54:00 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: style: not found
05:54:01 <kallisti> ^style
05:54:01 <fungot> Available: agora* alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
05:54:04 <kallisti> ^celebrate
05:54:04 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
05:54:05 <myndzi> | | | `\o/´ | | | `\o/´ | | |
05:54:05 <myndzi> |\ /| /| | |\ /`\ /| | /< >\ /'\
05:54:05 <myndzi> (_|¯´¯|_) /´\
05:54:05 <myndzi> (_| |_)
06:50:51 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:59:09 <itidus21> so can a single string draw the edge of a mobius strip?
06:59:19 <itidus21> it seems kind of wild to imagine
06:59:44 <itidus21> i guess it just has to float in space a bit
07:00:42 <Sgeo> elliott, did you intend to do mb twice in your first part of the equation?
07:00:56 <elliott> no
07:01:11 <elliott> x <- mx was the intent
07:01:11 <elliott> for all x
07:01:33 <Sgeo> I should go food
07:02:16 -!- MDude has changed nick to MSleep.
07:05:42 -!- sebbu2 has joined.
07:05:42 -!- sebbu2 has quit (Changing host).
07:05:42 -!- sebbu2 has joined.
07:06:36 -!- sebbu has quit (Ping timeout: 240 seconds).
07:08:37 <itidus21> disregard
07:08:53 <itidus21> especially you, over-zealous log-reader
07:09:00 <elliott> hi
07:09:51 <itidus21> i watched the tintin movie today
07:17:58 <zzo38> Is this a proper monad? newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; lift = ReadthisT . const; fmap f = ReadthisT . (fmap f .) . runReadthisT; join (ReadthisT x) = ReadthisT (\y -> x y >>= ($ (() <$ (y >> x y))) . runReadthisT);
07:31:58 -!- zzo38 has quit (Remote host closed the connection).
07:38:41 <kallisti> > let collatz = takeWhile (/=1) . iterate c; c n = if even n then n `div` 2 else 3*n+1 in collatz 150
07:38:42 <lambdabot> [150,75,226,113,340,170,85,256,128,64,32,16,8,4,2]
07:40:11 <copumpkin> > map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show
07:40:16 <lambdabot> mueval-core: Time limit exceeded
07:40:22 <copumpkin> > take 5 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show
07:40:25 <lambdabot> [2,4,8,16,32]
07:40:32 <kallisti> congrats
07:40:37 <copumpkin> thank you
07:40:55 <copumpkin> I do think it's the best way to compute the powers of 2
07:41:10 <kallisti> no obviously my powerset construction is the best. :P
07:41:18 <kallisti> lengths of powersets.
07:41:34 <kallisti> though really that's probably way better because there's a fix and I have no clue what it's doing as a result.
07:41:42 <kallisti> because fix still kind of baffles me sometimes.
07:41:49 <copumpkin> yeah, I'm fixing show
07:41:53 <copumpkin> :P
07:42:07 <kallisti> so infinite string of... something.
07:42:11 <copumpkin> > fix show
07:42:12 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
07:42:15 <kallisti> ah right
07:42:16 <copumpkin> :P
07:42:17 <kallisti> quotes
07:45:36 <kallisti> > let twood = length . filterM (const [True, False]) . flip replicate undefined in map twood [1..10]
07:45:37 <lambdabot> [2,4,8,16,32,64,128,256,512,1024]
07:46:39 <kallisti> copumpkin: you can't deny its elegance.
07:46:51 <copumpkin> :)
07:47:00 <copumpkin> yeah, but look how much faster yours is than mine
07:47:09 <kallisti> an added benefit!
07:47:13 <copumpkin> I can't even get up to 10
07:47:14 <elliott> avoid speed at all costs
07:47:18 <elliott> haskell motto
07:47:19 <copumpkin> before lambdabot craps out on me
07:47:22 <copumpkin> elliott: exactly
07:47:33 <elliott> copumpkin: well what can we expect from an agda programmer like you
07:47:36 <elliott> OHHHHHHHHHHHHHHHHHHHHHHHHHBURGNRJKGNR
07:47:46 <copumpkin> you want a geometric series? you can't expect it to be fast
07:47:51 <elliott> once this agda guy tried to burn me
07:47:52 <elliott> but
07:47:58 <kallisti> copumpkin: what's the runtime on mine... O(2^n)???
07:48:02 * copumpkin burns elliott
07:48:02 <kallisti> I think that's forgetting something
07:48:04 <elliott> his irc client froze up calculating the natural number representing his irc line
07:48:14 <elliott> because he tried to type more than 10 characters
07:48:14 <copumpkin> kallisti: nah, that should be it
07:48:15 <elliott> the joke is
07:48:15 <elliott> haha
07:48:16 <elliott> agda is slow
07:48:25 <copumpkin> orly?
07:48:26 <kallisti> copumpkin: see look the runtime is the same as the function. how elegant.
07:48:50 <copumpkin> > take 10 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show
07:48:51 <lambdabot> [2,4,8,16,32,64,128,256,512,1024]
07:48:55 <copumpkin> oh I can get to 10
07:49:00 <copumpkin> they're probably the same time complexity actually
07:49:46 <kallisti> > let f = length . flip replicate undefined in map f [1..]
07:49:48 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
07:49:59 <kallisti> oh look! a linear function that runs in linear time
07:50:00 <kallisti> YESSSSSSS
07:50:41 <elliott> i like functions that describe their own complexity
07:50:42 <elliott> like fib
07:50:58 <kallisti> I think that may be a characteristic of any function that uses the list representation of natural numbers?
07:51:05 <copumpkin> unary
07:52:15 <kallisti> no nevermind what am I saying.
07:53:00 <elliott> wat
07:53:02 <elliott> oops
07:53:03 <elliott> wrong window
07:54:54 <Sgeo> o.O
07:55:00 <elliott> what
07:55:11 <Sgeo> The thing where numbers came out of fix show
07:55:12 <monqy> hi
07:55:19 <elliott> > fix show
07:55:20 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
07:55:21 <elliott> numbers
07:55:55 <monqy> 1 3 7 15
07:57:36 <Sgeo> I didn't see the > fix show, just copumpkin's take 10 . map etc thing
07:59:36 <Sgeo> Why am I still reading Station V3
08:00:03 <kallisti> because you have a history of reading things that are terrible
08:00:06 <monqy> whats that is it good hi sgeo
08:00:10 <kallisti> like that cliparty universe
08:00:18 <monqy> i love clip art
08:00:19 <Sgeo> monqy, even I think it's stale.
08:00:27 <Sgeo> (not the cliparty universe. Station V3)
08:00:48 <elliott> http://www.stationv3.com/comics/20111213sv3.gif
08:00:49 <elliott> hilarious
08:01:20 <kallisti> ..
08:01:24 <monqy> i dont
08:01:25 <monqy> get it
08:01:40 <monqy> i vaguely see how it might be gotten
08:01:41 <monqy> but
08:01:42 <monqy> nope
08:01:47 <elliott> http://www.stationv3.com/comics/20111212sv3.gif
08:01:49 <elliott> hilarious
08:01:58 <elliott> http://www.stationv3.com/comics/20111211sv3.gif
08:01:59 <elliott> hilarious
08:02:11 <kallisti> ......................
08:02:23 <elliott> these might be the least funny gifs i have viewed with my eyes in like
08:02:24 <elliott> years
08:02:24 <monqy> huh
08:02:28 <elliott> it's like
08:02:32 <elliott> a picture of wooden flooring
08:02:38 <elliott> it elicits absolutely no reaction
08:02:39 <elliott> at all
08:02:55 <Sgeo> There are some funny ones
08:02:56 * kallisti actually laughed because of how terribly impossibly bad it was.
08:03:01 <Sgeo> They're all in the past
08:03:07 <monqy> i laughed, possibly for the same reason as kallisti
08:03:41 <elliott> Sgeo: whats the worst webcomic
08:03:42 <elliott> in your
08:03:43 <elliott> opinion
08:03:52 <monqy> oh man there are so many bad webcomics i dont even know about
08:04:04 <monqy> excitement
08:04:15 <Sgeo> elliott, is it allowed to be in the Station V3 family?
08:04:21 <elliott> there's a family
08:04:27 <Sgeo> Yes, there is a family.
08:04:31 <elliott> why
08:05:03 <monqy> is it a happy family
08:05:09 <monqy> are they frends
08:05:21 <Sgeo> http://silenceinthedarknessonq16.comicostrich.com/
08:05:34 <monqy> this is a good comic
08:05:50 <elliott> silence in the darkness on q16
08:05:57 <Sgeo> Start at the beginning, it's actually not that bad
08:05:58 <elliott> http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20111211
08:05:59 <elliott> wow
08:06:00 <elliott> this is
08:06:03 <elliott> are they all like this
08:06:11 <monqy> this is amazing
08:06:16 <elliott> Sgeo: i went to the beginning
08:06:18 <elliott> it's still bad
08:06:22 <elliott> please advise
08:06:38 <elliott> Sgeo: how old is
08:06:39 <elliott> the author of this
08:06:43 <elliott> they've spent uh
08:06:47 <elliott> 8 years
08:06:47 <monqy> http://z7.comicostrich.com/
08:06:48 <elliott> of their life
08:06:49 <elliott> writing these things
08:06:57 <elliott> so they must be like
08:07:05 <elliott> i don't even know
08:07:12 <Sgeo> Linton (on V3) is humorous
08:07:31 <monqy> sorry sgeo i do not trust your opinions
08:07:48 <monqy> you read v3
08:07:54 <elliott> http://forum.comicostrich.com/viewtopic.php?t=418&sid=ceaf354a4066a147d94ca3c93d76ce27
08:08:00 <elliott> i dont know what htis is but why does it have 21 pages
08:08:14 <Sgeo> http://www.stationv3.com/d/20030616.html
08:08:23 * elliott reads
08:08:23 <kallisti> elliott: what would happen if randall munroe and andrew hussie met
08:08:25 <elliott> today's dinosaur comic
08:08:26 <elliott> it is therapy
08:08:30 <elliott> for reading station v3
08:08:31 <elliott> you are all
08:08:33 <elliott> welcome to join me
08:08:39 <kallisti> dinosaur comic is bad too
08:08:42 <Sgeo> The rumormongers are the blue things
08:08:43 <Sgeo> Usually
08:08:47 <monqy> kallisti....................
08:08:49 <elliott> monqy: look at kallisti's wrong opinions
08:08:52 <elliott> look at him just
08:08:53 <elliott> casually having them
08:09:18 <kallisti> elliott: I think dinosaur comics is too fast-paced. The scenery changes too rapidly.
08:09:34 <kallisti> it's hard to tell what's going on.
08:09:35 <elliott> your jokes cannot
08:09:36 <elliott> make you a good person
08:10:04 <monqy> beyond redemption
08:10:10 <monqy> the kallisti way of life
08:10:25 <Sgeo> http://www.stationv3.com/d/20050319.html
08:10:30 <Sgeo> That one's almost good
08:10:39 <Sgeo> Actually, I'm laughing at these. I'm finding them funny
08:10:43 <elliott> n
08:10:43 <elliott> o
08:10:45 <monqy> no sgeo ni
08:10:45 <elliott> its not
08:10:46 <elliott> almost good
08:10:48 <monqy> no, I mean
08:10:48 <elliott> its not even
08:10:59 <elliott> Sgeo
08:11:00 <elliott> its not
08:11:01 <elliott> healthy
08:11:03 <monqy> not even remotely anywhere near something resembling good
08:11:03 <elliott> to laugh at this stuff
08:11:09 <elliott> i accept
08:11:10 <elliott> that tastes
08:11:11 <elliott> are subjective
08:11:15 <elliott> but i think you are permanently
08:11:17 <elliott> damaging
08:11:19 <elliott> your soul
08:11:35 <Sgeo> It gave me a soul?!?
08:11:36 <Sgeo> Yay!
08:11:40 <monqy> yay
08:11:44 <elliott> n;o
08:11:53 <kallisti> elliott: though in its defense dinosaur comics makes excellent use of foreshadowing
08:12:07 <kallisti> that moment when you realize the previous panel hinted at the events of the next
08:12:09 <elliott> I wonder if T-Rex canonically crushes a new house every single day.
08:12:14 <kallisti> somewhat rewarding.
08:12:51 <monqy> the many joys of dinosaur comics
08:12:52 <monqy> the many joys of life
08:13:04 <Sgeo> http://www.stationv3.com/d/20050328.html
08:13:42 <monqy> actually
08:13:47 <monqy> these comics remind me of you, sgeo
08:13:55 <Sgeo> o.O
08:14:06 <kallisti> elliott: well, it's either that or it continually goes back in time
08:14:08 <monqy> they have your personality
08:14:10 <kallisti> or it's a glimpse of different universes.
08:14:10 <monqy> or perhaps
08:14:12 <monqy> you have theirs
08:14:29 <monqy> have you considered you and stationv3 may be soulmates
08:14:44 <elliott> kallisti: there's chronology
08:14:54 <elliott> monqy: yeah these comics are very Sgeo
08:15:05 <kallisti> elliott: so then... he has to crush a house every time.
08:15:11 <kallisti> CONSISTENCY
08:15:21 <elliott> kallisti: well there's no conclusive PROOF he crushes the house
08:15:28 <kallisti> true.
08:15:38 <elliott> http://www.qwantz.com/index.php?comic=1
08:15:43 <elliott> here we see that he doesn't stomp on the girl at least in comic 1
08:15:43 <elliott> so
08:15:47 <kallisti> elliott: WHY DON'T YOU SAY THAT TO PAST ELLIOT INSTEAD ASSHOLE
08:15:53 <Sgeo> http://www.stationv3.com/d/20050415.html
08:15:58 <elliott> *TT
08:16:32 <elliott> Sgeo: thats
08:16:33 <elliott> not funny
08:16:40 <elliott> i am TRYING to laugh
08:17:28 <kallisti> is there even a joke with these?
08:17:30 <kallisti> I can't tell.
08:17:40 <monqy> i think that one was supposed to have a joke, at least
08:17:47 <kallisti> can you explain it to me?
08:17:51 <elliott> Sgeo: was there a station v2
08:17:52 <elliott> kallisti: the station
08:17:53 <elliott> isn't safe
08:17:54 <elliott> that's the joke
08:18:01 <kallisti> ..what?
08:18:04 <monqy> yes
08:18:14 <elliott> http://www.stationv3.com/d/20030506.html
08:18:16 <elliott> station v3
08:18:17 <elliott> comic 1
08:18:37 <elliott> http://www.stationv3.com/links.html
08:18:40 <elliott> list of comics to avoid reading
08:18:44 <elliott> http://ebb.comicostrich.com/
08:18:45 <monqy> not even comic 1
08:18:49 <Sgeo> Is that not like judging Homestuck by 1901?
08:18:50 <elliott> OH YES ANOTHER SPINOFF FUCK YES GOD YES!
08:18:52 <monqy> unless it is
08:19:11 <kallisti> elliott: dude you're going to have to explain all of the jokes to all of these.
08:19:27 <Sgeo> There's plot.
08:19:28 <elliott> Sgeo: yes, if homestuck was a terrible gag-a-day strip with a dozen spinoffs and also no because we've also looked at like fifty other ones by now and they are all equally bad
08:19:28 * kallisti iIT IS YOUR DUTY
08:19:30 <Sgeo> It's plotlines
08:19:42 <elliott> oh Sgeo's using dots at the end of sentences i think we're disliking station v3 a little too intensely
08:19:49 <monqy> gripping station v3 plotlines
08:20:00 <monqy> with enchanting station v3 characters
08:20:01 <elliott> station v3 plotline one: station... v4???
08:20:05 <Sgeo> Two characters who were previously mute become able to talk
08:20:14 <monqy> enchanting
08:20:16 <Sgeo> Because all of reality changed.
08:20:17 <monqy> gripping
08:20:19 <elliott> i'm ehcanthed
08:20:23 <monqy> are you gripped
08:20:26 <elliott> im
08:20:28 <monqy> i'm GRIPPED
08:20:31 <elliott> so gripped i dont think ill ever be able to be ungripped
08:20:33 <elliott> permanent grippeling
08:20:34 <kallisti> YES IT GRIPED ME
08:20:39 <monqy> gripe
08:20:41 <elliott> we are all
08:20:44 <elliott> gripped together
08:20:51 <kallisti> monqy: gripe with me
08:20:51 <elliott> http://forum.comicostrich.com/viewtopic.php?t=11&sid=ceaf354a4066a147d94ca3c93d76ce27
08:20:55 <monqy> station v3 frendship
08:21:15 <kallisti> monqy: not the only ship in station v3
08:21:19 <kallisti> -punchline-
08:21:29 <elliott> why are these forums active!!!
08:21:34 <elliott> why
08:21:40 <Sgeo> Who's Prentice?
08:21:47 <Sgeo> *Prentis
08:22:00 <elliott> are
08:22:03 <elliott> you expecting me to know the answer to this
08:22:58 <monqy> elliott resident station v3 expert
08:23:05 <monqy> in mere minutes he has surpassed even sgeo
08:23:11 <elliott> the robot guy
08:23:12 <elliott> is called floyed
08:23:17 <Sgeo> Floyd
08:23:21 <elliott> floyde
08:23:25 <monqy> I think there are two goerges???
08:23:35 <Sgeo> Linton is the idiot security officer
08:23:40 <Sgeo> And same species as the pirates
08:23:41 <monqy> oh
08:23:43 <elliott> is there nonidiots
08:23:43 <monqy> that makes sense
08:23:49 <elliott> goerg
08:24:21 <monqy> "station v3" -- georg
08:24:25 -!- Ngevd has joined.
08:24:28 <Sgeo> The blue things on the planet are called rumormongers, and for some reason XChat thinks that rumormongers is spelled correctly.
08:24:37 <monqy> hi
08:24:39 <Ngevd> Hello!
08:24:41 <Sgeo> I do not recall adding rumormongers to the dictionary
08:24:56 <elliott> you realise
08:25:00 <elliott> that rumormonger
08:25:01 <elliott> is a word
08:25:05 <elliott> outside of this incredibly shitty comic
08:25:15 <Sgeo> Now I do (seconds before you told me)
08:25:32 <monqy> knowledge is power
08:25:41 <elliott> -keanu reves
08:25:48 <Sgeo> France is a meme.
08:25:55 <monqy> hysterical
08:28:33 * Sgeo looks for good Linton comics
08:28:38 <monqy> good luck
08:29:26 <Sgeo> http://stationv3.com/d/20071009.html
08:29:47 <monqy> oh I see
08:29:50 <monqy> it's funny because
08:29:51 <monqy> he
08:29:53 <monqy> uh
08:30:16 <monqy> sgeo i think you got the wrong comic
08:30:17 <monqy> this isn't good
08:30:18 <monqy> this is crap
08:30:27 <shachaf> People in this channel really enjoy things that they don't enjoy, don't they.
08:30:36 <monqy> yes
08:30:39 <monqy> at least I do
08:30:48 * Sgeo is laughing insanely right now
08:31:38 <Sgeo> Hmm, this (not what I linked) was a good arc
08:34:25 <elliott> no
08:34:26 <elliott> it wasn't
08:34:51 -!- elliott has quit (Quit: i cant handle any more station v3).
08:34:55 <monqy> rip
08:35:52 <itidus21> yeah thats a pretty awful comic strip
08:36:04 <itidus21> i mean that particular one... 2007 10 09
08:36:10 <itidus21> i dont mean they're all necessarily bad
08:36:33 <monqy> incidentally, they are
08:37:19 <itidus21> http://www.stationv3.com/d/20071011.html
08:38:26 <itidus21> thats really devastatingly bad..
08:38:35 <monqy> station v3 quality
08:38:39 <itidus21> i am not sure if it's just the mood i'm in
08:39:39 <Sgeo> http://www.stationv3.com/d/20080901.html
08:40:12 <monqy> thanks
08:40:34 <itidus21> maybe they make sense if you read a whole bunch of them.. like very context-dependant
08:40:58 <Sgeo> They do, I think
08:41:27 <Sgeo> The plot gets repetitive though. How many times can you destroy the universe and have it be restored from backup?
08:41:42 <monqy> (canned laughter)
08:42:23 <Sgeo> http://www.stationv3.com/d/20080908.html
08:44:39 <kallisti> NO. MORE.
08:44:42 <kallisti> MUST NOT CLICK
08:44:47 <monqy> no it's great
08:44:56 -!- Ngevd has quit (Ping timeout: 240 seconds).
08:45:04 <monqy> rip
08:45:22 <itidus21> it has a way about it
08:45:39 <monqy> how many more of us will it kill
08:45:57 <itidus21> I heard a rumor that it won't kill any more of us.
08:46:14 <monqy> have you considered you may already be dead
08:46:29 <itidus21> Not until you asked.
08:47:28 <itidus21> I mean, actually, yes... i have been led into some superstitious beliefs on that subject
08:50:50 <Sgeo> http://stationv3.com/d/20050809.html
08:51:21 <monqy> great
08:52:05 <Sgeo> http://stationv3.com/d/20040709.html
08:52:24 <monqy> how are you finding these
08:52:53 <Sgeo> OhNoRobot
08:53:50 <Sgeo> http://stationv3.com/d/20040402.html
08:54:40 <monqy> why are you finding these
08:54:45 -!- elliott has joined.
08:54:59 <elliott> pikhq_: OK, I have a really stupid build system idea, you get to tell me why it doesn't work.
08:55:05 <monqy> hi
08:55:33 * Sgeo failed to see elliott's quit message until now
08:55:44 <Sgeo> So, what you missed: More Station V3
08:55:51 <elliott> awesome.
08:56:00 <monqy> it was great stuff
08:56:22 <Sgeo> Maybe I'm choosing badly, and just selecting random ones will have higher probability of good comics
08:56:54 <Sgeo> :t randomR
08:56:56 <lambdabot> forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
08:56:57 <elliott> Sgeo
08:56:59 <elliott> there is no possible way
08:57:01 <elliott> this comic could be salvaged
08:57:27 <Sgeo> Homestuck might suck if someone tried to present random panels at you
08:57:52 <Sgeo> Who am I kidding. The reason I brought up Station V3 in the first place is that I had no idea why I kept it in my rss reader
08:57:53 <elliott> not this badly Sgeo
08:57:55 <elliott> not this badly
08:58:20 <Sgeo> It used to be good
08:58:23 <elliott> like homestuck's first 100 panels over and over again would be about six billion times better than a single station v3 strip
08:58:28 <kallisti> something to clense your mind from station v3http://www.fanfiction.net/s/5937032/1/Grab_a_boob_day
08:58:30 <elliott> ok i will
08:58:32 <elliott> take back my opinions Sgeo
08:58:36 <elliott> if you can link me one (1) good strip
08:58:59 <Sgeo> monqy, do the Linton strips I linked count as good?
08:59:29 <monqy> no
08:59:36 <itidus21> Sgeo: i have decided i like them.
08:59:47 <elliott> oh
08:59:50 <elliott> um
08:59:51 <elliott> why
09:02:54 <elliott> why itidus21 ;_;
09:03:35 <monqy> station v3, the worst existential crisis yet
09:03:36 <itidus21> i suppose i could like any graphic which is non-static combined with any grammatical piece of text
09:04:13 <elliott> but
09:04:14 <elliott> they're static
09:04:17 <elliott> theyre not animated....
09:04:21 <itidus21> i mean uhh
09:04:45 <itidus21> any graphic which is a non-random signal
09:04:46 <monqy> it's hard to tell with a comic as alive, endearing, enthralling, graipping, enchanting, as station v3
09:04:57 <elliott> so garipping
09:05:12 <shachaf> Ugh, I want to set a breakpoint in gdb for an address that doesn't exist until some point in runtime.
09:05:14 <itidus21> i meant as in a tv-static
09:05:22 <shachaf> How am I do that.
09:05:35 <elliott> 08:41:42: <monqy> (canned laughter)
09:05:37 <itidus21> i don't even know what static means in relation to a tv channel with an unrecognized signal
09:05:39 <elliott> monqy: god i wish i could can laughter
09:05:39 <shachaf> elliott: Aren't you a gdb expert?
09:05:54 <elliott> shachaf: My gdb knowledge is set args ... \n start \n cont \n bt \n quit
09:06:11 <shachaf> elliott: Did you know gdb --args ./foo bar baz?
09:06:20 <elliott> Yes, because Deewiant told me, but then I forgot it again./
09:06:41 * shachaf is trying to debug hs-plugins code.
09:07:04 <shachaf> At least gdb disables ASLR.
09:07:26 <Sgeo> http://www.stationv3.com/d/20060204.html
09:07:33 <shachaf> So the address is deterministic (or seems to be), but I can't set a breakpoint at it straight away, because the code is not loaded yet.
09:07:57 <elliott> http://www.stationv3.com/d/20040710.html
09:07:58 <elliott> hilarious
09:08:09 <elliott> Sgeo: is this you trying to link a good one
09:08:49 <Sgeo> All the comic's I've linked are attempts to find a good one
09:08:52 <Sgeo> comics
09:08:53 <elliott> wow
09:08:54 <elliott> uh
09:08:56 <elliott> good
09:08:57 <elliott> good work
09:09:23 <monqy> two thumbs up
09:09:31 <Sgeo> Maybe I suck at finding
09:09:34 <monqy> I'd give you more, but two is all I have.
09:10:56 <monqy> speaking of thumbs and comics, I made a comic a real long time ago
09:11:25 <elliott> is it better than station v3
09:11:30 <monqy> i think so, yes
09:11:30 <elliott> i could use a better comic than station v3 right now
09:11:59 <monqy> http://dl.dropbox.com/u/13786158/diner.png
09:12:16 <elliott> better than station v3
09:12:18 <elliott> i like the peppers
09:12:18 <Sgeo> elliott, Station Z7?
09:12:27 <elliott> Sgeo: :(
09:13:22 <elliott> monqy: are they peppers in panel 1 and 2 and you just can't see them
09:13:28 <elliott> or did he become ppeppeperp
09:13:30 <elliott> or is that smily
09:13:31 <elliott> unrelated
09:13:32 <monqy> everything is pepper
09:13:33 <elliott> to other characters
09:13:34 <elliott> ok
09:13:38 * Sgeo looks at the Station V3 encyclopedia
09:13:49 <monqy> is there a
09:13:50 <monqy> is that
09:13:51 <monqy> a
09:13:51 <monqy> thing
09:14:03 <Sgeo> http://www.stationv3.com/wiki/index.php?title=Main_Page
09:14:06 <Sgeo> Not much of a thing
09:14:14 <elliott> it's not spammed
09:14:16 <elliott> why is our wiki spammed
09:14:18 <elliott> instead of this
09:14:27 <Sgeo> http://www.stationv3.com/wiki/index.php?title=Special:Allpages
09:14:27 <elliott> why are there edits this month
09:15:32 <Sgeo> elliott, SBAHJ apparently updated
09:15:48 <monqy> wonderful
09:16:08 <elliott> better than station v3
09:16:36 <monqy> "phhpppbbbbbthb" - better than station v3
09:16:49 <monqy> ":'(" - station v3
09:17:20 <monqy> "not sorry" - better than station v3
09:17:56 <monqy> sgeo are nay of these station v3 wiki pages good
09:18:01 <Sgeo> I don
09:18:10 <monqy> there are so many choices I don't know which to pick
09:18:11 <Sgeo> I don't know, I didn't even know there was a wiki until now
09:18:34 <elliott> http://www.stationv3.com/wiki/index.php?title=Station_V3_%28comic_strip%29
09:18:52 <elliott> http://www.stationv3.com/wiki/index.php?title=Tom_Truszkowski
09:18:58 <elliott> oh, he's a programmer
09:19:00 <elliott> That Explains Things
09:19:24 <kallisti> elliott: I thought all webcomic authors could program.
09:19:39 <kallisti> it's like a requirement.
09:19:53 <elliott> Station Q16 is the main station in the comic strip Silence in the Darkness on Q16 The station has had a power failure sometime before the first strip and is still in the dark. This may be because the station only exists within a rumormongers mind.
09:19:54 <monqy> if he has disabilitys, is it bad to make fun of stations v3.....
09:20:12 <elliott> his disability: writing station v3
09:20:19 <monqy> :'(
09:21:53 <elliott> monqy what does the reverse text say
09:21:54 <elliott> in your comic
09:21:55 <elliott> im too lazy
09:22:11 <monqy> doug's "dougalicious" diner
09:22:12 <itidus21> doug's dougilicious
09:22:14 <monqy> "it's dougalicious"
09:22:48 <elliott> it's dougalicious in my heart
09:23:07 <itidus21> im worse at writing dialogue than tom t.
09:23:27 <monqy> :(
09:23:38 <itidus21> snickers
09:26:11 <itidus21> . o O ( "hello snail" "hello tree" "how are you doing today?" "oh just fine. what about you, how are you doing?" "i am also fine" "i frankly harbor apathetic feelings towards your current state of well being" "is that so?" "it is so" "well ok then" "good" )
09:26:27 <elliott> better than station v3
09:26:44 <itidus21> harbor -- tree -- arbor is an accidental pun
09:30:26 <monqy> im inspired
09:38:59 <Sgeo> Station V3 + SBaHJ?
09:39:13 <monqy> hi
09:39:52 <elliott> hi
09:42:48 <Sgeo> Night
09:42:51 <elliott> hi
09:42:54 <monqy> hi
09:43:05 <Sgeo> Station Zzz...
09:43:11 <monqy> no
09:45:09 <elliott> station bad
09:50:50 -!- monqy has quit (Quit: hello).
10:08:44 -!- kmc has joined.
10:18:00 -!- Jafet has joined.
10:51:18 -!- Jafet has quit (Quit: Leaving.).
10:55:40 -!- ais523 has joined.
11:18:39 <ais523> md5 is sufficient for avoiding random collisions on non-malicious input, right?
11:19:14 <ais523> also, and relatedly, are VHDL identifiers allowed to be long enough to fit an entire md5 hash inside them?
11:21:49 <elliott> ais523: yes, but why not go for SHA-1?
11:22:01 <elliott> 'tis only 32 more bits
11:22:13 <ais523> md5's in the OCaml standard libraries, SHA1 isn't
11:22:31 <elliott> :/
11:22:34 <elliott> get a better standard library
11:23:02 <elliott> ais523: googling doesn't show up any obvious limits on identifier name
11:23:05 <elliott> s
11:23:23 <ais523> good
11:23:26 <elliott> ais523: you can pack it into base 62, at least
11:23:50 <elliott> so it'll be 28 at most (27 + 1 byte prefix to avoid digit as first character)
11:24:13 <elliott> ais523: wtf, you're not allowed two underlines in a row in a vhdl identifier
11:24:14 <ais523> yep, but I don't really want to if there's no reason
11:24:18 <elliott> and they can't end with underlines
11:24:26 <elliott> (or start, for that matter)
11:24:28 <ais523> seriously? that is an important limitation for my project
11:24:28 <elliott> err
11:24:31 <elliott> s/underline/underscore/g
11:24:33 <ais523> I'll have to escape them, in that case
11:24:41 <elliott> ais523: it is? wtf are you doing
11:24:46 <elliott> also "But VHDL also supports extended identifiers, enclosed by backslashes, which can contain any graphic ISO Latin-1 character (including backslashes if doubled)."
11:25:07 <ais523> /Latin-1/?
11:25:12 <ais523> that's, umm, I don't get it
11:25:17 <elliott> ais523: "any byte"
11:25:26 <elliott> there, I got it for you :)
11:25:29 <elliott> i.e.
11:25:36 <ais523> nope, 32 of the possible values of a byte aren't graphic in Latin-1
11:25:39 <elliott> if (identc == '\\') append(identifier, getchar())
11:25:41 <elliott> ais523: oh, hmm
11:25:43 <elliott> extended_indentifier ::= \graphic_character { graphic_character } \
11:25:49 <elliott> I guess VHDL is just defined in terms of Latin-1 because old
11:26:02 <elliott> and they presumably think control characters in identifiers is ridiculous
11:26:18 <ais523> well, it is ridiculous
11:26:28 <ais523> but then, so is much of VHDL, I guess
11:26:54 <ais523> anyway, what I'm trying to do, is to translate variable names from a source program into variable names in the resulting VHDL, whilst mangling them as little as possible
11:27:01 <ais523> so it's easy to see which corresponds to which
11:27:26 <ais523> and the source language doesn't have any arbitrary rules about double underscores
11:27:38 <elliott> ais523: have you considered implementing your module layer in not vhdl...
11:27:55 <elliott> define some intermediate language, and have the linker translate it to vhdl
11:28:00 <elliott> all at once
11:28:03 <fizzie> ais523: 65 of possible values of byte aren't graphic in Latin-1; 0..31 and 127..159.
11:28:16 <ais523> fizzie: oh right, I forgot 127
11:28:24 <ais523> also, screwed up multiplying 32 by 2
11:28:26 <elliott> oh, wait, this is for name mangling from a source language
11:28:30 <elliott> I thought this was for adding module prefixes
11:28:31 <elliott> or something
11:28:41 <ais523> yep, name mangling from a source language
11:29:02 <ais523> the module prefixes are where the md5 stuff comes in
11:29:18 <ais523> VHDL has namespacing, but I need to make sure that the namespaces don't have the same names as each other, or it'd just be a huge mess
11:29:20 <elliott> ais523: I suggest just mangling everything other than [a-zA-Z0-9] into _xNN_
11:29:22 <elliott> where NN is the byte value
11:29:25 <elliott> assuming there's no Unicode involved
11:29:35 <elliott> and I think OCaml is dark-ages enough for it presumably not to be
11:29:58 <ais523> elliott: the source language isn't OCaml
11:30:04 <elliott> ais523: I didn't say it was.
11:30:18 <ais523> at the moment, it uses the same identifier rules as pre-Unicode-era C
11:30:29 <ais523> without the length restrictions
11:30:30 <elliott> ais523: I'm saying that I'm very sceptical OCaml does Unicode in anything vaguely approximating out of the box.
11:30:36 <ais523> ah, I see
11:32:57 <ais523> bleh, is it wrong to want to write the project in OCaml+Perl?
11:33:15 <ais523> it's quite a nice mix of languages, as their strengths complement each other nicely
11:34:19 <elliott> ais523: Complaining about your language lock-in will only cause me to mock OCaml more :)
11:34:28 <ais523> I'm not sure if I have a language lockin
11:34:42 <ais523> I'd rewrite the whole thing in Anarchy if it wasn't vaporware
11:34:44 <elliott> ais523: If your alternative is OCaml+Perl, you have no alternative.
11:36:04 <ais523> what do you dislike about OCaml, by the way?
11:36:13 <ais523> I'm trying to mentally work out what its bad points are
11:36:22 <ais523> because it definitely has some, but I have trouble putting a finger on them
11:36:50 <elliott> ais523: For one, it's essentially stuck in 2002
11:37:01 <ais523> hmm, that may well be valid
11:37:16 <ais523> oh right: it doesn't really have typeclasses
11:37:17 <elliott> It has a reputation for speed, but that's mostly in single-threaded tight loops, it doesn't really have a concurrency story at all, which is ridiculous
11:37:41 <elliott> Its standard library is weirdly inconsistent and incomplete (the fact that a library exists just to add all the things you forgot to the standard library is telling...).
11:37:44 <ais523> in particular, you can't add "methods" to other classes
11:37:50 <ais523> heh, which one's that?
11:37:52 <elliott> Yes, lack of typeclasses or something similarly useful is painful.
11:37:57 <elliott> ais523: Batteries (Included)
11:38:13 -!- kallisti has quit (Ping timeout: 252 seconds).
11:38:14 <ais523> I actually think that Pervasives seems a little too large
11:38:19 <ais523> in particular, I don't get why it has I/O in
11:38:44 <elliott> I also don't like the syntax much (Standard ML's is nicer), and the fact that it has multiple sort-of-object-systems is just ridiculous design.
11:39:08 <ais523> heh, I just saw exception Exit looking at the Pervasives docs
11:39:13 <elliott> The type system could also do with doing a bit less weak.
11:39:14 <ais523> it's an exception provided for user use, and not used by the library
11:39:24 <elliott> And more subjectively: I'd rather it be pure and lazy, but, uh, the language I want OCaml to be already exists.
11:39:30 <ais523> except, the user can (and frequently does) trivially define exception types
11:39:35 <ais523> elliott: heh
11:39:42 <elliott> ais523: sounds like a relic from before you could do that to me :P
11:39:47 <ais523> perhaps
11:39:54 <ais523> although, Exit can't carry a payload
11:39:57 <elliott> ais523: Oh! Another thing I don't like about OCaml: THEY IMPLEMENTED PRINTF IN THE COMPILER
11:40:01 <ais523> which would make it reasonably useless for that purpose
11:40:03 <elliott> PRINTF LITERALLY HAS SPECIAL COMPILER SUPPORT
11:40:05 <elliott> IN THE TYPE SYSTEM
11:40:18 <ais523> really? that's ridiculous
11:41:06 <elliott> ais523: yes
11:41:23 <elliott> ais523: you can't type printf in OCaml even with the dynamically-typed way Haskell does it, since that relies on overloading
11:41:39 <elliott> ais523: check out the type of printf, basically the "string literal" format you give to it?
11:41:41 <elliott> that's not a string literal at all
11:41:47 <elliott> that's a type-carrying format value
11:41:55 <elliott> (printf <string literal>) is just special-cased
11:42:03 <elliott> and I don't think you can pass a variable format at all, that's the only way you can call it
11:42:11 <ais523> crazy and heretical way to do printf: make it take all its arguments as strings
11:42:30 <elliott> ais523: that doesn't help, it's variadic
11:42:34 <elliott> you need it to take a list of strings
11:42:38 <ais523> yep, that's what I meant
11:42:39 <elliott> at which point it becomes a really weird syntax for concat
11:42:40 <elliott> :P
11:43:00 <ais523> elliott: no, I meant it'd parse the strings back into the original arguments
11:43:23 <elliott> ais523: wat
11:43:29 <ais523> you'd do printf "%2.3g" ["0.0000142"]
11:43:43 <ais523> or whatever
11:43:51 <elliott> heh
11:44:22 <elliott> ais523: oh, another ocaml complaint: bignums are awkward (although i never used them myself, admittedly)
11:44:25 <ais523> another thing that gets me about OCaml's standard library is its naming
11:44:33 <ais523> List.hd, List.tl, List.rev, List.length
11:44:47 <elliott> (but they have their own operator set (of course) and you can't use integer literals with them, so I'm pretty sure I'm right)
11:44:54 <elliott> ais523: yeah, ew
11:45:08 <ais523> and List.append is also Pervasives.(@)
11:45:14 <elliott> ais523: oh, Exit is to exit the program, I think
11:45:17 <ais523> which I didn't know about for ages because I was looking in the wrong module
11:45:20 <elliott> I bet it has a top-level handler that just exit(0)s
11:45:25 <ais523> heh
11:45:29 <ais523> even that's a two-line wrapper
11:45:50 <ais523> try … with Exit -> ()
11:46:29 <ais523> val incr : int ref -> unit
11:46:31 <ais523> Increment the integer contained in the given reference. Equivalent to fun r -> r := succ !r.
11:46:41 <elliott> ais523: this is making me feel so much better about how crufty the Prelude is
11:46:44 <ais523> why is that even in the standard library?
11:47:19 <ais523> I mean, it's not an entirely useless operation, but it's reasonably uncommon, and it's almost as short to write r := !r + 1, and you could define it yourself trivially if you needed to
11:47:30 <elliott> ais523: oh yeah, strings are their own type and not an instantiation of some sequence type too
11:47:34 <elliott> that makes so much sense!!
11:48:05 <ais523> that does make sense, in a way; the internal representation is completely different
11:48:15 <elliott> ais523: "of some sequence type"
11:48:24 <elliott> strings are certainly an instantiation of a more general sequence type
11:48:28 <elliott> in OCaml's case, probably unboxed arrays
11:48:32 <elliott> with a list interface
11:48:43 <ais523> nah, not quite, unboxed null-terminated arrays
11:48:56 <elliott> (admittedly haskell ByteString has this flaw too, but there's an effort to define ByteString as Vector Word8s)
11:49:00 <elliott> ais523: what?!
11:49:07 <elliott> ais523: OCaml uses null-terminated strings?
11:49:15 <ais523> elliott: it stores the length too
11:49:18 <elliott> >_<
11:49:28 <ais523> the null terminator's there so that they can be passed to C functions unchanged, or something
11:49:50 <elliott> ais523: and to make them useless for storing binary data!
11:49:54 <ais523> also, the defining feature of OCaml strings is that you can't change their length
11:50:19 <elliott> ais523: even in an impure language I can't think of a decent argument for making strings mutable
11:50:23 <elliott> even /Python/ has immutable strings
11:50:28 <ais523> here: earlier towakeperiod I was trying to write a handler that stored every character read
11:50:49 <elliott> ais523: let me quote to you the types involved in ocaml printf
11:50:51 <elliott> type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6
11:50:51 <elliott> Format strings have a general and highly polymorphic type ('a, 'b, 'c, 'd, 'e, 'f) format6. Type format6 is built in. The two simplified types, format and format4 below are included for backward compatibility with earlier releases of Objective Caml. 'a is the type of the parameters of the format, 'b is the type of the first argument given to %a and %t printing functions, 'c is the type of the argument transmitted to the first argument of "kprintf"
11:50:51 <elliott> -style functions, 'd is the result type for the "scanf"-style functions, 'e is the type of the receiver function for the "scanf"-style functions, 'f is the result type for the "printf"-style function.
11:50:52 <elliott> type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4
11:50:54 <elliott> val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string
11:50:56 <elliott> Converts a format string into a string.
11:50:58 <elliott> val format_of_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6
11:51:00 <elliott> format_of_string s returns a format string read from the string literal s.
11:51:02 <elliott> val (^^) : ('a, 'b, 'c, 'd, 'e, 'f) format6 ->
11:51:03 <ais523> basically, suppose you're doing getc in a loop, and you want to store the entire file read
11:51:04 <elliott> ('f, 'b, 'c, 'e, 'g, 'h) format6 -> ('a, 'b, 'c, 'd, 'g, 'h) format6
11:51:06 <elliott> f1 ^^ f2 catenates formats f1 and f2. The result is a format that accepts arguments from f1, then arguments from f2.
11:51:21 <ais523> elliott: I have the page open in w3m right now, no real reason to quote it
11:52:11 <ais523> also, I wanted it to be O(n), not O(n^2)
11:52:18 <ais523> out of interest, how do you do that in Haskell?
11:52:34 <ais523> I suspect it wouldn't be the same as how I eventually did it in OCaml; the result was slightly lower-level than C
11:52:40 <ais523> because OCaml doesn't have a realloc equivalent
11:53:05 <ais523> so I had to do what was effectively malloc + memmove (luckily no explicit free required as it's GCed)
11:53:23 <ais523> /then/, I had to allocate another string when I was finished, in order to trim it down to size
11:56:03 -!- sebbu has joined.
11:56:03 -!- sebbu has quit (Changing host).
11:56:04 -!- sebbu has joined.
11:56:28 * ais523 suddenly wonders what the top Google result is for "search engine optimization"
11:57:56 -!- sebbu2 has quit (Ping timeout: 240 seconds).
11:58:16 <ais523> hmm, the top paid result is from www.seoconsult.com; the first nonpaid result is Wikipedia, and the second www.searchengineoptimisation.org, followed by www.searchengineoptimisation.co.uk
11:58:45 <ais523> I suppose the lesson is, that if you really want to win an SEO war against people who are as cutthroat as you are, make the domain name match the search query exactly
11:59:49 <ais523> haha, indeed; I changed the query to "search optimisation engine", and now the winning non-Wikipedia nonpaid result is on the site www.searchengineoptimising.com
12:00:05 -!- ais523 has set topic: Search optimisation engine | http://codu.org/logs/_esoteric/.
12:01:19 <elliott> ais523: oh, you asked a question
12:01:32 <elliott> <ais523> basically, suppose you're doing getc in a loop, and you want to store the entire file read
12:01:32 <elliott> <ais523> also, I wanted it to be O(n), not O(n^2)
12:01:32 <elliott> <ais523> out of interest, how do you do that in Haskell?
12:02:03 <elliott> slurp :: Handle -> IO String; slurp h = do { eof <- hIsEOF h; if eof then return "" else (:) <$> getChar <*> slurp h }
12:02:30 -!- cheater has joined.
12:03:06 <elliott> ais523: that's for linked-list strings, though
12:03:23 <elliott> ais523: I presume youw ant it for flat-byte-array type things?
12:03:25 <elliott> *you want
12:08:18 <elliott> oops, s/getChar/hGetChar h/
12:08:31 <elliott> ais523: in which case, an obvious strategy is just s/hGetChar h/B.hGet h 8192/ and then apply B.concat to the result of it all
12:09:10 <elliott> the actual implementation of B.hGetContents says:
12:09:18 <elliott> "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case."
12:09:54 <elliott> readFile is clever; it just asks the OS how big the file is, then does one big B.hGet of that size
12:16:05 <elliott> ais523: :(
12:44:13 -!- cheater has quit (Ping timeout: 240 seconds).
12:53:28 -!- Phantom_Hoover has joined.
12:53:39 <Phantom_Hoover> lambdabot!
12:53:39 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
13:01:30 <elliott> helo Phantom_Hoover
13:01:42 <Phantom_Hoover> Hamlo.
13:01:45 <elliott> hamlo
13:02:27 <elliott> Gregor: Is there a shorter way to write {struct foo *bar = malloc(sizeof(struct foo)); memcpy(bar, &foo, sizeof(struct foo));}
13:05:45 <fizzie> "struct foo *bar = malloc(sizeof *bar);" is a classical way to write the malloc sorta-type-safely; "*bar = foo" is a shorter way to write the memcpy, if you don't mind letting the compiler decide how to do it, and that some padding bytes may not get moved if it doesn't want to.
13:08:18 <fizzie> struct foo *bar = g_memdup(&foo, sizeof foo); if you want to be all glib about it. :p
13:10:09 <elliott> fizzie: glib is the relevant scenario since it's mcmap :P
13:10:17 <elliott> But I just rewrote it as a malloc plus assignments, so oh well.
13:10:48 <elliott> fizzie: Do you mind much if I make a directory for map code? It's just that map_flat.c and map_surface.c and map_cross.c and map_iso.c seems a bit ridiculous.
13:11:12 <fizzie> Feel free to.
13:11:38 <elliott> Most excellente.
13:18:43 <ais523> elliott: I was at a seminar, I'm back now
13:18:58 <ais523> you'd probably have understood it better than most of the people there; I managed to follow it eventually
13:19:16 <elliott> heh; what was it about?
13:19:49 <ais523> containers and comonads
13:20:16 <ais523> in particular, it defined an extra structure on containers, then showed that containers with that structure were all comonads, and all containers that were also comonads had that structure
13:20:26 <elliott> what definition of container?
13:20:32 <ais523> we ended up concluding that List actually worked more naturally as a comonad than as a monad
13:20:42 <elliott> lists aren't comonadic
13:20:47 <elliott> you don't have [a] -> a
13:20:52 <elliott> nonempty lists are though
13:20:53 <ais523> err, nonempty lists
13:21:01 <elliott> right
13:21:27 <ais523> the definition's that containers have a set of shapes, each shape has its own set of positions
13:21:55 <ais523> I suspect that the fact that List is a comonad isn't too useful for actual programming, though
13:23:29 <elliott> ais523: well, (=>>) is \xs f -> map f (tails xs)
13:23:37 <elliott> which seems useful, in theory
13:23:42 <elliott> you can implement (a very slow) scanl with it
13:24:27 <ais523> it was defined in terms of unreturn and unflatten
13:24:45 <ais523> but that (=>>) looks like a reasonable definition on that basis
13:24:56 <elliott> ais523: *extract and duplicate
13:25:09 <elliott> (=>>) is just flip extend, it's the analogy of (>>=)
13:25:15 <elliott> where extend f = fmap f . duplicate
13:25:27 <elliott> duplicate is like join, extend is like flip (>>=)
13:26:03 <ais523> hmm, the thing about general definitions like monads and comonads is that there are all sorts of plausible names for the operations
13:26:24 <ais523> <elliott> "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case." <-- my OCaml code did that but manually
13:26:46 <ais523> come to think of it, it'd have been simpler to read everything into memory first, then parse from memory
13:26:50 <elliott> ais523: nah, the problem is that there's no plausible name for return
13:26:58 <elliott> return doesn't make any sense, it's just trying to look vaguely like C
13:27:09 <elliott> pure sort of makes sense but not really
13:27:29 <elliott> point is meaningful but really bland and unevocative
13:27:30 <ais523> rather than parse from disk and hook the parser with a hook that builds up a copy of what it parsed in memory
13:27:37 <ais523> "wrap"?
13:27:46 <elliott> ais523: wrap's worse than any of those
13:27:57 <elliott> promotes the container view (fallacy) of monads
13:28:09 <elliott> (whereas pure promotes the computation view (fallacy) :/)
13:28:34 <ais523> the computation view is pretty much a special case
13:28:53 <elliott> no
13:28:58 <elliott> lots of containers are monads
13:29:04 <elliott> lots of computations are monads
13:29:11 <elliott> but describing monads as either is very wrong and misleading
13:29:20 <elliott> it's not a "special case" any more than Maybe is a special case of Monad
13:29:24 <ais523> yep, but I meant that computations all fit into a subset of monads
13:29:24 <elliott> it's not, it just has an instance
13:29:32 <ais523> that have something in common
13:29:39 <ais523> and it's a little hard to say what
13:29:40 <elliott> ais523: well, OK; "computation" isn't used as something with a precise definition here
13:29:45 <ais523> ah, I see
13:29:48 <elliott> but instead something people analogise to to try and understand monads
13:29:52 <elliott> which doesn't work
13:30:01 <elliott> e.g. State and IO fit into that
13:30:08 <elliott> but [] doesn't
13:30:17 <elliott> (well, [] is nondeterministic computation :P)
13:30:21 <ais523> elliott: I actually have a reasonably computationy view of List
13:30:27 <ais523> and Maybe, fwiw
13:30:33 <elliott> yeah, I just cba to think of a better example off the top of my head
13:30:38 <elliott> the computation view isn't as bad as the container view
13:30:38 <ais523> hmm, which view would you say Identity falls into?
13:30:42 <elliott> which insists that an (m a) /contains/ an a
13:30:47 <ais523> it's a genuinely useful monad
13:30:54 <elliott> and talks about (>>=) "unwrapping" the value
13:30:59 <elliott> which is just Not Even Wrong
13:31:05 <elliott> ais523: it is?
13:31:08 <elliott> only as the base of a transformer stack
13:31:14 <ais523> elliott: nope, it handles taint
13:31:36 <elliott> ais523: well, OK
13:31:42 <elliott> ais523: I doubt the monad part is that useful
13:31:55 <elliott> Applicative seems as far as you'd want to go with taint most of the time
13:32:18 <ais523> you definitely need lift for tainting, but Applicative has that, right?
13:32:30 <ais523> I can never quite remember what Applicative has, and what it doesn't have
13:33:57 <elliott> ais523: Applicative is Functor, pure, and (<*>)
13:34:06 <elliott> although Functor isn't necessary
13:34:11 <elliott> fmap f x = pure f <*> x
13:34:13 <ais523> what do monads have over that?
13:34:16 <elliott> join
13:34:25 <elliott> pure :: a -> f a, (<*>) :: f (a -> b) -> f a -> f b
13:34:29 <elliott> join :: m (m a) -> m a
13:34:40 <elliott> basically, join lets the /structure/ of a computation depend on the /result/ of another
13:34:54 <elliott> Applicatives have static control structure, Monads have dynamic control structure
13:34:57 <ais523> and in the case of Identity, you can't really tell whether it exists or not, because it's trivial
13:35:05 <ais523> there is only the one structure
13:35:11 <elliott> whether it exists or not? huh?
13:35:12 <ais523> so join is trivial to define but doesn't do anything
13:35:20 <elliott> sure join does something
13:35:22 <ais523> elliott: err, hmm
13:35:24 <elliott> I'm not denying Identity is a Monad
13:35:38 <elliott> I'm just saying that I might not agree with "Identity is a useful monad"
13:35:48 <ais523> ah, OK
13:35:54 <elliott> although do notation is certainly useful for taint, I think you'd usually express computations that can be expressed with Applicative with it
13:36:00 <ais523> I think what I'm saying makes sense in my own mind, but is not an elliott-approved concept
13:36:11 <elliott> heh
13:36:49 <elliott> ais523: I actually don't know what you mean, though :P
13:37:47 <ais523> I think, umm, if there's only one possible definition of something (as in, you can get the definition just from the types), it's impossible to tell whether that definition's being used or not
13:37:50 <ais523> well, obviously it /is/
13:38:22 <ais523> note that I almost passed out on the bus this morning, I may not be in a particularly sane state of mind
13:38:30 <elliott> try not passing out on the bus
13:38:34 * elliott advice
13:38:52 <ais523> I did; I even succeeded
13:38:57 <ais523> but it was pretty close for a while
13:39:00 <elliott> congratulations! now try not almost passing out on the bus
13:39:03 <ais523> it was lucky that today was so incredibly windy
13:39:04 <elliott> (advanced stage)
13:39:21 <ais523> it helped keep me alert, wind does that
13:39:35 -!- Vorpal has joined.
13:39:45 <ais523> oh, something I read in the paper this morning; you know how non-tech press normally calls all malware viruses?
13:40:13 <ais523> well, I saw a variation this time, along the lines of "even if you don't enter any personal information, the malicious pages can still fill your computer with bugs"
13:40:31 <ais523> and I was trying to work out what definition of "bugs" they meant, and if it was a reasonable metaphor or not
13:41:18 <elliott> heh
13:41:34 <fizzie> There's the "covert listening device" definition of bug.
13:41:42 <ais523> fizzie: indeed, I was wondering if they meant that
13:41:57 <ais523> I think it's a more accurate description than the typical newspaper one; also, more vague and more confusing
13:42:05 <elliott> I think most broadly all a computer user cares about is "it doesn't do what I want"
13:42:09 <elliott> and you could call all those bugs
13:42:15 <elliott> if you want to be weird :P
13:42:26 <ais523> hmm, I don't consider misfeatures to be bugs
13:43:19 <fizzie> elliott: Incidentally, the "listening device" definition of a bug is used in what I believe (from glancing perusal of the earlier discussion) is nowadays your favourite comicky strip ever, the Silence in the Darkness on Q16.
13:43:51 <elliott> fizzie: Please tell me you learned this from that discussion and you're not like some super Silence in the Darkness on Q16 fan.
13:44:30 <fizzie> Well, I learned it from the discussion in the sense that post-discussion I click-througed quite a number of black squares; one of the few non-black ones was http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20070512 which uses it.
13:44:47 <fizzie> (Hadn't heard of SitDoQ16 before today at all.)
13:44:58 <fizzie> (I suppose it abbreviates like that?)
13:45:03 <elliott> Yes, that assurance was all I needed.
13:49:18 <ais523> anyway, I'm reasonably happy with my object file format
13:49:40 <ais523> it's a bunch of VHDL comments which contain key/context/value triples, followed by something arbitrary, which could well be VHDL
13:49:48 <elliott> hmm, what's context?
13:51:11 <ais523> things like what variable the key applies to
13:51:19 <ais523> whereas there are finitely many keys
13:51:28 <elliott> that sounds like part of the value to me
13:52:06 <ais523> elliott: err, what?
13:52:18 <elliott> oh, hmm
13:52:19 <elliott> right :)
13:52:32 <ais523> you could consider it part of the key, I guess
13:52:41 * elliott would probably go straight to key = list of strings and no fixed keys
13:52:50 <elliott> you should probably ignore unrecognised keys, anyway, for future extensibility
13:52:50 <ais523> but the whole thing's more flexible than just keys and just values, and doesn't really follow a pattern
13:52:59 <ais523> and indeed, that seems reasonable
13:58:00 <elliott> ais523: anyway, you have to hear my ridiculous build system idea since nobody else will:
13:59:31 <ais523> go on; one of the most important purposes of this channel is finding people to bounce ridiculous ideas off
13:59:47 <elliott> ais523: set up a FUSE filesystem that has all the output files existing already; they can be opened fine, but read and stat will block until the files exist for real; then, start every single command that needs to be run in parallel (note: the FUSE filesystem doesn't pretend the output file exists for the process trying to write it, i.e. it knows which file not to fake for each process)
13:59:58 <elliott> this achieves maximum parallelism thanks to the operating system
14:00:18 <elliott> reads of yet-to-be-built input files succeed as soon as possible
14:00:33 <ais523> elliott: that's awesome, I'm just upset that many compilers will fail on that sort of thing due to being badly designed
14:00:45 <elliott> ais523: I'm not sure they would, actually
14:00:52 <elliott> most compilers don't break on really slow filesystems
14:01:05 <ais523> what if they seek around in the file that they're writing?
14:01:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:01:15 <ais523> it wouldn't at all surprise me if an ar/tar variant did that
14:01:18 <elliott> ais523: that works fine; the output file is "normal" for each command
14:01:23 <elliott> it's every other output that's faked
14:01:36 <elliott> i.e. the file to be created doesn't exist in the filesystem each command runs in
14:01:44 <ais523> elliott: oh, do you only remove the block on the read when the file is actually closed?
14:01:45 <elliott> just every other output of the build process
14:02:02 <elliott> ais523: when the command completes successfully, yes; I suppose that would work as an optimisation, too
14:02:02 <ais523> I thought you meant it only blocked until the relevant portion of the file had been written
14:02:16 <elliott> heh, that's even better, but most compilers stat
14:02:19 <elliott> well, some of them anyway
14:02:28 <elliott> and the vast majority buffer their output fully
14:02:32 <elliott> so that wouldn't actually help much
14:02:33 <ais523> yep, but stat wouldn't break it, just read-after-write-barrier it
14:02:49 <elliott> ais523: well, I mean
14:02:54 <elliott> you'd have to wait for the whole thing to finish
14:02:57 <elliott> for them to get the correct stat result
14:03:06 <ais523> yep, that's what I meant by a read-after-write barrier
14:03:08 <elliott> right
14:03:11 <elliott> so the advantage is negated
14:03:21 <ais523> you know what we need? lazy languages
14:03:31 <elliott> ais523: thankfully, I fear this scheme won't work very well
14:03:36 <ais523> so that you could have stat return before its results were available
14:03:40 <elliott> because I suspect the overhead of setting up every process is too great
14:03:51 <elliott> and the scheduler will hate you
14:04:07 <elliott> ais523: heh
14:04:12 <elliott> ais523: that's just unsafeInterleaveIO
14:04:23 <ais523> oh, is that what that does?
14:04:33 <ais523> (what's unsafe about it, btw?)
14:04:33 <elliott> ais523: it's just (return . unsafePerformIO), essentially
14:04:37 <elliott> so the IO only gets executed when you force the action
14:04:39 <elliott> weeeeeell
14:04:42 <elliott> some people argue it isn't unsafe
14:04:46 <elliott> but they're wrong
14:04:51 <elliott> it exposes evaluation order as IO
14:04:53 <elliott> i.e.
14:05:03 <elliott> whenever some /pure/ code forces the value you get out of an unsafeInterleaveIO action
14:05:06 <elliott> the IO occurs
14:05:21 <ais523> oh right, it lets you tell things apart that should be indistinguishable
14:05:21 <elliott> you can justify this as still being inside the IO monad -- it doesn't break purity in a strict sense
14:05:25 <elliott> but it's eurgh
14:05:26 <elliott> ais523: not rtue
14:05:27 <elliott> true
14:05:29 <elliott> _|_ lets you do that
14:05:36 <elliott> to determine evaluation order
14:05:39 <elliott> but... it's icky
14:05:49 <elliott> getContents uses that, it returns all of stdin as a lazy string
14:05:49 <ais523> well, you can code to protect your code from _|_ in particular
14:05:54 <elliott> ais523: err, what?
14:05:58 <ais523> using seq or whatever
14:06:07 <elliott> you're confused, unsafeInterleaveIO doesn't let you tell things apart that should be distinguishable at all
14:06:18 <elliott> wow, they're making a film out of Battleship
14:06:33 <elliott> as in, the game
14:06:34 <ais523> hmm… I suppose unsafeInterleaveIO could be implemented in terms of exceptions and an unthrow operation that went back to where the exception was thrown from
14:06:46 <ais523> elliott: it'd just be a generic war film, right?
14:07:12 <elliott> ais523: "In the Hawaiian Islands, an international naval fleet at Pearl Harbor engage in a very dynamic and intense battle against an alien race known as "The Regents". The aliens come to planet Earth, on a mission to build a power source in the ocean. Upon their visit, they come in contact with the navy fleet. The film is also purported to show both sides of the story, from the aliens' perspective, as well as the humans' so the audience knows exa
14:07:12 <elliott> ctly where the opponent's ships are.[4]"
14:07:15 -!- Ngevd has joined.
14:07:27 <elliott> my games of Battleship usually aren't against aliens...
14:07:35 <Ngevd> Hello...
14:07:36 <Ngevd> Ill
14:07:42 <elliott> have they made a film out of Monopoly yet?
14:07:49 <elliott> that would be THE WORST THING EVER AND SO SHIT AND EVERYONE WHO WOULD ENJOY IT SHOULD DIE
14:07:54 <elliott> IN A DEATHLY MANNER
14:07:56 <elliott> ahem
14:07:57 <elliott> hi Ngevd
14:08:16 <fizzie> There are quite a few movie trailers for Tetris: The Movie, but I don't think anyone's made it for reals. :/
14:08:27 <ais523> the thing is, that with games that are simplifications (often huge ones) of reality, then complicating them into a film just makes it look like it's a film based on reality
14:08:32 <ais523> fizzie: I know; some of them are quite good
14:08:41 <ais523> but I doubt there'd be enough plot in it to carry a full-length movie
14:08:51 <fizzie> ais523: Like a Tetris movie would just be a documentary on the construction of high-rise buildings.
14:09:12 <ais523> also, pretty much all non-computer attempts to simulate Tetris that I've seen don't allow for the removal of lines to work correctly
14:09:13 <elliott> fizzie: Well, there's Complete History of the Soviet Union.
14:09:21 <ais523> I saw a Tetris board game once; it didn't really work
14:09:22 <elliott> It has plot and everything!
14:09:44 <ais523> if you completed a line you were meant to put a peg next to it to mean "this line's completed, ignore it"
14:09:49 <elliott> ais523: haha
14:09:56 <elliott> I think I've seen that, too
14:10:02 <ais523> but you couldn't physically stretch the pieces across it because they were made of rigid plastic
14:10:52 * elliott is still feeling let down by that "first person" Tetris.
14:11:05 <elliott> It could have been my favourite game!
14:11:33 <ais523> there's no obvious reason why that would necessarily be awful
14:11:34 <elliott> fizzie: (Admittedly it's not so much as a Tetris film as a film with Tetris jammed into the side of it.)
14:11:34 -!- hagb4rd has joined.
14:11:36 <ais523> was it just implemented badly?
14:11:39 <elliott> ais523: it wasn't first person
14:11:44 <elliott> it just rotated the screen as you rotated the piece, that's all
14:11:47 <elliott> otherwise it was standard tetris
14:12:14 <ais523> hmm, it meets one of the necessary conditions to be first person, but is also missing at least one
14:12:15 <hagb4rd> ah here we are.. hello esofriends :}
14:12:24 <ais523> hi hagb4rd
14:12:52 <elliott> ais523: by the way, we found a place to send the lost people
14:12:54 <elliott> `? esoteric
14:13:01 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net.
14:13:05 <ais523> elliott: yay
14:13:15 <ais523> that will make a lot of people happier, I think
14:13:34 <ais523> I see no reason why esoterica shouldn't be discussed; just it's awkward to put two mostly unrelated subjects in one channel
14:13:45 <elliott> We can still mock them before sending them off, right? :(
14:13:46 <hagb4rd> how are things goin..look like a rainy day..and this cold winds comin from the northern sea
14:13:51 <fizzie> Regarding Tetris, I think they never got the Chernobyl control center simulator they were building for Altparty 2011 to work. There were people fiddling with it at all times of day during the whole weekend, with multimeters and soldering irons and whatnot, but from what I hear it never quite worked out wrong the right way.
14:14:09 <elliott> fizzie: In, um, Tetris?
14:14:32 <fizzie> No, no, just, you know, associating. Tetris -> Soviet Union + game -> that thing.
14:14:49 <elliott> Simulating that in Tetris would be impressive.
14:14:59 <ais523> I've heard a rumour that in nuclear power plants, the alarms sound continuously except when there's a problem, when they stop, because it's more noticeable that way or something
14:15:02 <ais523> I suspect it's false, though
14:15:11 <elliott> that seems dubious
14:15:16 <elliott> it's easy to notice persistent sounds stopping
14:16:03 <ais523> agreed; but it seems like a bizarre decision to make
14:16:12 <ais523> when the other way round would presumably work too
14:16:42 <Ngevd> Hunt the errors: http://hpaste.org/55219
14:16:58 <Ngevd> And the little things that are just /wrong/
14:17:32 <fizzie> And the wumpus.
14:17:33 <ais523> elliott: anyway, I've concluded that reducing problems to problems that have already been solved is a fast way to do software development, but tends to lead to subquality programs
14:18:26 <ais523> also, I did probably the most bizarre optimization I've done ever this morning
14:18:47 <ais523> it was to a function that calculated strongly connected subsets of graphs
14:19:00 <elliott> ais523: I reject that because it contradicts one of my core principles :P
14:19:02 <ais523> the graph was (and still is) represented as a list of pairs
14:19:03 * elliott rational.
14:19:13 <elliott> ais523: you optimised before getting a better graph representation?
14:19:15 <ais523> and the order is arbitrary
14:19:39 <ais523> elliott: that representation comes naturally out of the problem; optimising the representation would involve writing a conversion function
14:19:48 <ais523> and it was profile-guided optimisation, looking for the slowest part and speeding it up
14:19:55 <ais523> anyway, I sped the program up by a factor of 6 simply by reversing the list
14:20:03 <elliott> haha
14:20:43 <elliott> Ngevd: What do you think interact does?
14:20:44 <hagb4rd> what have zou optimized..the calculating or the drawing part
14:20:48 <ais523> my theory in this respect is that the list happens to be sorted, and it's quite plausible that sorted lists happen to hit the worst case of whatever algorithm I'm using (I got it from Wikipedia)
14:21:01 <elliott> Ngevd: Also, you don't want an Array.
14:21:02 <ais523> and reversing it gets rid of that worst-casiness in the case of the algorithm in question
14:21:10 <elliott> hagb4rd: drawing?
14:21:36 <Ngevd> elliott, I have no idea what interact is, and I have no idea why I would want an array
14:21:47 <ais523> elliott: what is an array in Haskell?
14:21:50 <elliott> Ngevd: Then why did you type "interact $"?
14:22:02 <Ngevd> Because the type signature seemed right!
14:22:08 <elliott> Ngevd: What are you trying to do?
14:22:17 <hagb4rd> i wonder how one could imprve the speed of calculating maths without changing the architecture of your hardware
14:22:17 <elliott> ais523: Can I have a standard response for "your question is unanswerable without you clarifying it"?
14:22:36 <ais523> elliott: hmm
14:22:44 <elliott> Because $that.
14:22:47 <Ngevd> elliott, really, I want to learn my latin vocab
14:22:48 <ais523> normally, you're in a better position to clarify the questions than I am
14:23:01 <ais523> because my typical reply is "indeed, I'm not quite sure of what I'm asking, but asked because I want to know what I should be asking"
14:23:09 <elliott> Ngevd: That's a bit more general than I was intending my question to be answered in.
14:23:18 <ais523> why don't we just assume the response/reply and save time?
14:23:23 <Ngevd> It's what the entire program is for
14:23:23 <elliott> ais523: OK, let me rephrase what I said: Rephrase what you said, or I can't answer it.
14:23:32 <elliott> Ngevd: What are you trying to achieve by applying interact?
14:24:04 <ais523> elliott: what operations does a value of type Array x y support in Haskell, and is there anything particularly notable about their performance behaviour?
14:24:12 <Ngevd> By the fact that I don't actually know, I'd guess I should rewrite it
14:24:27 <ais523> :t interact
14:24:28 <lambdabot> (String -> String) -> IO ()
14:24:34 <ais523> right, indeed
14:24:40 <elliott> ais523: it's (Array i a), where i is the index type, and a is the element type
14:24:47 <elliott> and it's just a boxed, lazy array
14:24:58 <elliott> that is, a contiguous region of memory containing pointers to thunks
14:25:12 <ais523> I could almost remember what interact did, just not the details
14:25:17 <elliott> and the API is crappy and everyone uses Vector instead but Ngevd doesn't want Vector here either I don't think
14:25:26 <elliott> ais523: interact happens to use lazy IO (-> unsafeInterleaveIO).
14:25:32 <elliott> Cue sad track (is that a thing?)
14:25:35 <ais523> elliott: hmm, so it supports operations like copy but with one element changed?
14:25:57 <elliott> ais523: There are mutable and immutable versions; the immutable version is stuff like that, yes.
14:26:00 <ais523> that's what I'd expect an array to do in a pure functional language
14:26:15 <elliott> There's also unboxed arrays, but that's not the type being used here.
14:26:21 <elliott> And also the API is horrible and everyone uses Vector instead.
14:26:22 <ais523> and it's the sort of thing that can reasonably easily be optimised by the compiler into mutation behind the scenes, in cases where the optimisation is obviously correct (which are common)
14:26:26 <elliott> Have I said that enough?
14:26:30 <elliott> ais523: that's not reasonably easy at all
14:26:48 <elliott> I think GHC does do it, but it's not something I'd want to rely on
14:27:10 -!- kallisti has joined.
14:27:11 -!- kallisti has quit (Changing host).
14:27:11 -!- kallisti has joined.
14:27:56 <elliott> Ngevd: anyway, I think you should use an explicit pattern match instead of either there
14:28:09 <elliott> Ngevd: you can tell that you're using interact wrong, because
14:28:15 <ais523> elliott: the most obvious case is if there's only possibly one reference to the input array, and it goes out of scope upon the copy-replace operation
14:28:16 <elliott> do { ... IO stuff ... } :: IO a (for some a)
14:28:21 <elliott> in (interact f), f must :: String -> String
14:28:26 <elliott> IO a =/= (String -> String)
14:28:35 <elliott> ais523: yes, sufficiently smart compilers are really easy to explain
14:28:38 <ais523> and I find that's reasonably common in functional languages
14:28:44 <ais523> elliott: gcc can implement that
14:28:46 <elliott> and take decades to implement
14:28:53 <elliott> ais523: gcc doesn't implement Haskell
14:29:04 <ais523> I'd imagine that most compilers that even vaguely do optimisations do that, actually
14:29:27 <ais523> the problem is that you'd need a stupidly smart compiler if the array operation was written in Haskell, rather than hardcoded into the compiler
14:29:48 <elliott> ghc implements array operations as fairly thin wrappers over primitives
14:29:58 <elliott> but anyway, I think you're vastly oversimplifying things
14:30:36 <ais523> well, let's see, there are two properties we need to check; "only reference" and "dies here"
14:30:55 <ais523> "dies here" is trivial to check; in most compilers that go via SSA you need to actively throw away information to not track that
14:31:12 <elliott> ais523: i am disagreeing with your assessment of the situation
14:31:17 <elliott> I don't feel like debating it right now though
14:31:23 <ais523> "only reference" is rather harder, but the common case where you just created the reference and haven't passed it to anything else yet can be optimised
14:31:39 <ais523> elliott: OK, what about this for an argument: I actually implemented that optimisation for Underload in derlo
14:31:55 <ais523> except at runtime
14:31:57 <elliott> ais523: I am glad we live in that special world where Underload is Haskell
14:32:13 <ais523> elliott: why do you think that Haskell is somehow magically special when it comes to this?
14:32:20 <elliott> indeed, Underload shares many properties that make this kind of mutating optimisation tricky in Haskell, such as full laziness!
14:32:22 <elliott> oh, wait, hmm.
14:32:24 <elliott> no it doesn't
14:32:33 <ais523> oh right, I forgot about laziness
14:32:50 <ais523> the world needs a strict version of Haskell
14:32:57 <elliott> no, it really doesn't
14:33:05 <ais523> not necessarily because it'd be better, but because it would make it much easier to compare it with things
14:33:12 <elliott> heh
14:33:15 <elliott> well, there's DDC.
14:33:26 <ais523> Haskell has lots of innovations that have nothing to do with laziness, and the laziness gets in the way when you'd like to evaluate them on their own
14:33:44 <elliott> ais523: haskell is for people who want to write programs, not for people who want to debate languages :P
14:35:18 <ais523> wait, does Ngevd's Haskell program seriously say "interact $ do"?
14:35:30 <elliott> yes.
14:35:30 <ais523> no wonder it jumped out at elliott
14:35:46 <elliott> trivial type errors are quite easy to spot :P
14:36:28 <ais523> elliott: well, String = [Char] and thus is a monad action type, technically speaking…
14:36:47 <ais523> err, no
14:36:53 <ais523> wait, yes
14:36:57 <elliott> ais523: yep, but that's irrelevant
14:37:01 <elliott> the head is (->) here
14:37:04 <elliott> it's the reader monad
14:37:16 <ais523> oh, right, that's what I first thought
14:37:19 <ais523> then I forgot about the $
14:37:20 <elliott> but, err, getStdGen rather ruins that theory
14:37:25 <elliott> ais523: ?
14:37:28 <elliott> the $ is irrelevant
14:37:31 <elliott> it's just (interact (do ...))
14:37:39 <ais523> err, hmm
14:37:46 <ais523> yep
14:38:07 <ais523> no, it is relevant
14:38:18 <ais523> imagine if it had been (interact $ (do …) "abc")
14:38:22 <elliott> well, OK
14:38:25 <elliott> but it isn't
14:38:33 <ais523> err, that doesn't make sense either
14:38:46 <elliott> fizzie: When did map.h start including world.h? :/
14:38:47 <ais523> elliott: it'll explain a lot if I explain that I don't find Haskell intuitive
14:38:56 <elliott> ais523: you've said that
14:39:13 <ais523> I can write in it, but I often make crazy type mistakes or whatever due to not grasping it
14:39:23 <ais523> whereas in OCaml, pretty much all the type errors I make are typos
14:39:38 <elliott> that's because OCaml's type system is too shallow to catch any real type errors :)
14:39:43 <ais523> haha
14:39:44 <elliott> BRUUUUUN
14:39:48 <ais523> just wait until Anarchy comes around
14:40:04 <elliott> no language called Anarchy is allowed to have a type system
14:40:30 <ais523> the idea is that it's statically typed with a really expressive type system, that's also massively complex but it doesn't matter because the types aren't user-visible
14:40:45 <ais523> I have problems just coming up with a notation to write the types down
14:40:48 <ais523> in general
14:40:55 <fizzie> elliott: $ git blame map.h | grep world.h
14:40:55 <fizzie> 3105a3b3 (Elliott Hird 2011-07-23 10:00:04 +0100 5) #include "world.h"
14:40:58 <fizzie> elliott: Better ask yourself that.
14:41:02 <elliott> fizzie: :-(
14:41:06 <ais523> but it doesn't matter because it just makes sure that the program types for the specific uses of the functions you're using
14:41:11 <elliott> ais523: scapegoat won't have blame, right?
14:41:14 * elliott rimshot
14:41:29 <ais523> elliott: it'd be hard not to ;)
14:41:38 <ais523> why do you think it's called scapegoat in the first place?
14:41:42 <elliott> dude
14:41:43 <elliott> i already
14:41:43 <elliott> did
14:41:44 <elliott> the rimshot
14:41:49 <elliott> you don't have to point it out :'(
14:41:52 <hagb4rd> <ais523>just wait until Anarchy comes around <== isn't that how everything started?
14:42:03 <ais523> hagb4rd: nah, Anarchy's an esolang
14:42:07 <hagb4rd> ah
14:42:07 <ais523> or will be, once I work it out
14:42:09 <hagb4rd> k
14:42:17 <fizzie> I suppose I should've used "git annotate", it's less bitchy.
14:42:22 <ais523> it is slightly more implemented than most completely vaporware esolangs, because it has a parser, which also actually works
14:42:36 <ais523> (this puts it in a different category from Cyclexa, which has only a parser but it doesn't work)
14:43:06 <ais523> actually, hmm, Cyclexa : Anarchy :: UNIX : @, but less so
14:43:22 <ais523> or, hmm, a better analogy
14:43:27 <ais523> Cyclexa : Anarchy :: bash : Powershell
14:43:32 <elliott> ais523: hey, add some more spaces around those colons, or those words will start fighting
14:43:32 <ais523> but more so
14:43:45 <ais523> ?
14:43:54 <elliott> ais523: UNIX and @
14:43:58 <ais523> I see
14:44:11 <ais523> that was something like the third interpretation I tried
14:44:45 <ais523> incidentally, it seems that the next big thing in JavaScript implementation is type inference
14:45:02 <ais523> not as part of the language, but getting the compilers to infer types so that they don't have to put type checks in at runtime
14:45:20 <elliott> the next big thing?
14:45:24 <elliott> you mean the previous big thing
14:45:35 <elliott> at least, they've been doing that, or at least talking about doing that, for years
14:45:35 <ais523> oh, have they managed it now? they were starting on it last I looked
14:45:43 <elliott> oh, well it may be that they're only just now succeeding :)
14:46:08 <ais523> incidentally, in Anarchy tuples and lists are special cases of the same thing
14:46:25 <ais523> which is probably obvious, but they use the same type constructor, (,)
14:46:50 <elliott> ais523: are you sure anarchy isn't just dynamically typed :)
14:47:03 <ais523> I suppose the defining feature of Anarchy is just picking up a convenient type constructor from somewhere and not worrying about if it already means something else
14:47:13 <ais523> elliott: it's aptly named
14:47:55 <ais523> I suppose you could call it an instance of the whole sufficiently smart compiler thing, with respect to "a sufficiently smart compiler should just magically figure out all the types I'm using even if they make no sense"
14:48:01 <ais523> except I think it's practical
14:48:50 <ais523> hmm, I'm not really sure what to do about polymorphic recursion
14:48:58 <ais523> it's obviously allowed, and also obviously not allowed in general
14:49:04 <ais523> but I can't figure out what the restrictions are
14:50:25 <ais523> the simplest way would just be to put an arbitrary limit on the number of different type constructors that can be used in any given type (whether or not they have the same names; or perhaps only if they have the same names, as only a finite number of type constructor names can be used in any given program)
14:50:57 <elliott> ais523: just take the fixed-point
14:51:21 <ais523> elliott: indeed; the problem is, I'm not yet convinced it's computable to determine if there is a fixed-point
14:51:42 <ais523> hopefully it'll turn out that there's always one, so its computability is not in question
14:51:49 <hagb4rd> y isnt just restricted by avaiable memory?
14:52:16 <hagb4rd> ]that
14:52:22 <ais523> hagb4rd: the limit's to detect infinite loops in the traditional crude way of "well, it hasn't finished yet, it's probably infinite"
14:52:37 <hagb4rd> elliott saz
14:52:44 <elliott> what
14:52:46 <hagb4rd> says its limited
14:53:02 <hagb4rd> the number of constructors
14:53:05 <elliott> Says what's limited?
14:53:10 <elliott> ais523 is the one who said that.
14:53:12 <elliott> And he just said "finite".
14:53:18 <elliott> Programs are finite, usually...
14:53:50 <ais523> hagb4rd: if you can write a program containing infinitely many different names for type constructors, good on you, but don't expect me to be able to compile it, or even yourself to be able to fit it in a pastebin
14:53:53 <hagb4rd> no it was ais: as only a finite number of type constructor names can be used in any given program
14:54:10 <elliott> finitely many, not a fixed amount
14:54:13 <ais523> hagb4rd: well, you can't exactly generate them at runtime
14:54:16 <hagb4rd> i was just curious
14:54:23 <ais523> it might be anarchic, but it isn't Perl
14:54:28 <elliott> also, limited by memory = a finite limit :)
14:54:35 <elliott> hagb4rd: i was just answering your curiosity
14:55:11 <hagb4rd> ok.. so everything works out fine
14:57:03 <elliott> ais523: Ban fizzie please. :/
14:57:35 <fizzie> For the offense of not inventing names for you?
14:57:47 <elliott> Yes.
14:57:54 <elliott> I'm very upset.
14:58:05 <ais523> wait, of course it's decidable
14:58:58 <ais523> also, the same issue is why Haskell and OCaml's error messages for type errors are less helpful than usual when recursion is involved
14:59:24 <ais523> :t fix id
14:59:25 <lambdabot> forall a. a
14:59:42 <elliott> they are?
14:59:47 <elliott> not if you specify a type signature, at least
14:59:57 <ais523> right, I mean in the case of inference only
15:00:29 <ais523> typically what they end up complaining about is nonobvious because it's based on a bunch of assumptions that you hadn't meant to be correct
15:01:33 <ais523> elliott: is "even-length list" a type expressible in Haskell?
15:01:49 <elliott> ais523: yes, extremely trivially
15:01:54 <elliott> I'll let you think for a second to figure out how
15:02:06 <ais523> elliott: but not in a way that's a special case of [], right?
15:02:47 <ais523> I mean, I can define EvenList a = Nil | ConsEven a (OddList a) and OddList a = ConsOdd a (EvenList a)
15:02:54 <elliott> no: to do that would require subtyping, which wreaks hell on inference; I suspect you would accept something that could be constructed like (Foo [1,2,3,4]), in which case I will complain that you're giving list literal syntax undue weight :)
15:03:13 <elliott> ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a)
15:03:25 <ais523> but not EvenList = Nil | Cons a (OddList a) and OddList = Cons a (EvenList a)
15:03:32 <ais523> elliott: hmm
15:03:36 <ais523> but then you can't get the tail with a pattern-match
15:04:05 <ais523> wait, yes you can, just put the element back manually
15:04:39 <ais523> anyway, the definition which uses Cons in both places rather than ConsEven and ConsOdd is what you'd use in Anarchy, if you could specify types at all rather than having them inferred
15:04:45 <ais523> and it desugars into ConsEven and ConsOdd
15:05:10 <ais523> although probably with less meaningful names
15:07:40 <Phantom_Hoover> Aha I have found the hipsterest metal.
15:15:25 <ais523> hmm, recent discovery: YouTube's making people give them their cellphone number to uncap accounts and allow them to upload videos longer than 15 minutes
15:15:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:15:37 <ais523> I'm not entirely sure I can explain that away in any way /but/ being evil
15:24:59 -!- MSleep has quit (Ping timeout: 276 seconds).
15:25:47 -!- MSleep has joined.
15:27:42 <elliott> ais523: to avoid bots clogging the servers?
15:28:06 <ais523> elliott: it's not the only requirement
15:32:47 -!- MSleep has quit (Ping timeout: 276 seconds).
15:32:57 -!- MSleep has joined.
15:34:03 -!- MSleep has quit (Read error: Connection reset by peer).
15:34:22 -!- MSleep has joined.
15:39:45 -!- copumpkin has joined.
15:42:44 <coppro> I got a Japanese ditto last night :D
15:43:14 <ais523> coppro: err, context?
15:43:19 <ais523> it could be Pokémon, but I'm not sure it is
15:43:22 <coppro> ais523: yes
15:43:37 <ais523> flawless speed and HP stat?
15:43:41 <coppro> nah, just japanese
15:44:11 <coppro> I should really get a quebecois game and do shenanigans if I ever decide to try to breed pokes for combat
15:46:25 <ais523> don't, the international bonus effectively works out to a 13% decrease in the length of time it takes to train them up to level 50/100, which is not really noticeable
15:46:35 <ais523> there's no impact on the actual eventual stats
15:48:26 -!- Ngevd has quit (Quit: Goodbye).
15:50:50 -!- Ngevd has joined.
15:55:47 <coppro> ais523: oh, I wasn't talking about that
15:55:58 <coppro> also I don't think quebecois would count as international
15:56:08 <coppro> it's shininess that I'm going for
15:56:28 <ais523> it would; the cartridges for games in a particular language are identical
15:56:47 <coppro> But I would register it as having the same location
15:56:49 <coppro> since it's my location
15:56:50 <ais523> so it can't distinguish US/France from England/France from English Canadian/French Canadian
15:57:06 <ais523> registered location is ignored, I think, because it's so easily faked
15:57:15 <coppro> ah
15:58:10 <ais523> hmm, TIL that detonating a nuclear bomb was only banned in 1998
15:58:13 <ais523> in the UK
15:58:34 <ais523> (it was a consequence of the comprehensive test ban treaty; typically, detonating a nuclear bomb before then would typically violate some other law indirectly)
16:12:19 <fizzie> How about just possessing a nuclear bomb, that legal?
16:22:44 -!- Taneb has joined.
16:24:21 <fizzie> Best ISP-given workaround ever. Paraphrasing here: "We've switched some mobile data connections to use NAT; connecting mobile devices will randomly get either a public IP or a NATted one. [What do I do if a service I'm using requires a public IP?] In this case, you must try establishing the connection again until you get a public IP. Use [link] to check your current IP."
16:24:27 <fizzie> The most helpful.
16:25:04 -!- Ngevd has quit (Ping timeout: 248 seconds).
16:26:14 <fizzie> Official justification is the predicted sparsity of v4 addresses.
16:26:44 <Gregor> So give 'em IPv6 addresses. They'll do just fine.
16:26:58 <fizzie> That would be too futuristic.
16:32:45 <kallisti> I'm kind of surprised at how slowly IPv6 is being adopted.
16:33:47 <Taneb> People don't like change changing
16:34:28 <kallisti> I think NAT probably has slowed down the change as well?
16:35:02 <kallisti> since it lets everyone procrastinate the looming address exhaustion apocalypse
16:35:20 <elliott> There's no real reason you can't just NAT further and further.
16:35:38 <kallisti> but...
16:35:39 <kallisti> but
16:35:42 <kallisti> so ugly. ;_;
16:36:21 <elliott> I didn't say it was a good idea.
16:37:07 <kallisti> ""[...] it is possible that its [NAT's] widespread use will significantly delay the need to deploy IPv6. [...] It is probably safe to say that networks would be better off without NAT [...]" -- "Some"
16:37:32 <kallisti> This is what Some[6] say, according to Wikipedia
16:44:42 <Gregor> Yeah, the Some Institute of Somersville.
17:00:13 -!- MSleep has changed nick to MDude.
17:02:44 -!- ais523 has quit (Remote host closed the connection).
17:09:57 -!- Taneb has quit (Quit: Goodbye).
17:24:10 <itidus21> i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B
17:24:40 <itidus21> as for the characters they would all look perfectly at home in commander keen
17:28:12 <itidus21> ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position
17:28:36 <itidus21> thus giving the illusion that lots of stuff was all miraculously invented at once
17:30:00 <itidus21> kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip,
17:35:40 <kallisti> the invention of people.
17:35:56 <kallisti> the invention of money
17:36:14 <itidus21> life too
17:36:22 <itidus21> eyes
17:36:23 <itidus21> hands
17:36:33 <itidus21> light
17:36:59 <itidus21> hmm
17:37:24 <itidus21> its te same effect when you encounter a webcomic for the first time
17:37:46 <itidus21> it can seem like theres endless pages until you catch up
17:38:14 <itidus21> but then, to be fair, theres endless webcomics out there
17:44:40 <quintopia> did itidus get incremented? o_0
17:45:42 <itidus21> `pastelogs itidus21
17:46:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17205
17:47:10 <itidus21> itidus21 from 23rd july
17:47:16 <itidus21> `pastelogs itidus20
17:47:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29013
17:47:57 <itidus21> itidus20 from 16th july .. it seems to vary back and forth
17:48:33 <quintopia> this is a phenomenon which requires explanation
17:48:58 <itidus21> it's my alt nick i guess
17:49:26 <itidus21> since i am not used to irc, i havent made provisions to use underscores
17:52:24 <quintopia> oh
18:01:21 -!- oklopol has joined.
18:37:13 <Gregor> When did freshmeat.net change to freecode.com???
18:38:47 <kallisti> ___---_-----------------------_______
18:39:07 <Deewiant> Gregor: 2011-10-29
18:39:30 <Gregor> Man, I would have noticed that if it hadn't become so irrelevant.
18:39:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:42:21 <kallisti> Gregor: you're irrelevant.
18:43:05 <quintopia> kallisti: you're a relephant
18:47:01 -!- Klisz has joined.
18:55:58 -!- Phantom_Hoover has joined.
18:59:31 -!- DCliche has joined.
19:03:00 -!- Klisz has quit (Ping timeout: 252 seconds).
19:17:57 -!- kallisti has quit (Read error: Connection reset by peer).
19:21:01 -!- kallisti has joined.
19:21:01 -!- kallisti has quit (Changing host).
19:21:01 -!- kallisti has joined.
19:21:50 <kallisti> my computer just overheated on my bed.
19:21:53 <kallisti> perhaps I need to clean the fan.
19:23:47 <oklopol> did it catch on fire
19:24:40 -!- zzo38 has joined.
19:25:48 -!- derrik has joined.
19:27:12 <kallisti> oklopol: no
19:27:21 <quintopia> presumably it turned itself off
19:27:33 <quintopia> which is not nearly as cool as spontaneous combustion
19:28:02 <oklopol> insert heat joke
19:28:03 -!- sebbu2 has joined.
19:28:03 -!- sebbu2 has quit (Changing host).
19:28:03 -!- sebbu2 has joined.
19:30:57 -!- sebbu has quit (Ping timeout: 240 seconds).
19:39:23 <kallisti> `run cat lol &| echo
19:39:26 <HackEgo> bash: -c: line 0: syntax error near unexpected token `|' \ bash: -c: line 0: `cat lol &| echo'
19:39:29 <kallisti> `run cat lol | echo
19:39:32 <HackEgo> ​\ cat: lol: No such file or directory
19:39:38 <kallisti> hmm
19:39:47 <kallisti> what was that thing that's like 2>&1 |
19:40:00 <kallisti> `run cat lol |& echo
19:40:03 <HackEgo> No output.
19:40:43 <kallisti> `run cat lol | echo
19:40:45 <HackEgo> ​\ cat: lol: No such file or directory
19:45:34 -!- sebbu2 has changed nick to sebbu.
19:48:24 <kallisti> head -c 200 | head -n 2
19:48:34 <kallisti> can this be combined into a single head command?
19:49:06 <quintopia> have you tried the obvious yet?
19:49:14 <kallisti> obviously not. :P
19:49:25 <quintopia> well
19:49:28 <quintopia> let me know
19:49:36 <kallisti> oh wait I think I did try it a while ago.
19:49:47 <kallisti> but I will try again because I don't remember
19:50:35 <kallisti> it's ambiguous without an explicit ordering though so I don't think it would work.
19:51:25 <kallisti> yeah using -c with -n just ignores -n
19:58:13 -!- nys has joined.
20:08:29 -!- GreaseMonkey has joined.
20:09:23 <kallisti> > 9**9**9
20:09:24 <lambdabot> Infinity
20:12:04 <Gregor> Close enough.
20:17:28 -!- oerjan has joined.
20:25:13 <kallisti> !perl @a = qw(a b c); print splice @a, 0, 5
20:25:16 <EgoBot> abc
20:25:41 -!- azaq23 has joined.
20:25:49 -!- azaq23 has quit (Max SendQ exceeded).
20:25:53 <kallisti> !perl @a = qw(a b c); map {print "ha" if undefined } splice @a, 0, 5
20:25:54 <EgoBot> hahaha
20:26:10 <kallisti> !perl @a = qw(a b c); map {print "ha" if !defined } splice @a, 0, 5
20:26:23 <kallisti> sanity. check.
20:33:11 <fizzie> > 9^9^9
20:33:16 <lambdabot> mueval: ExitFailure 1
20:33:16 <lambdabot> mueval: Prelude.undefined
20:33:20 <fizzie> (Just checking.)
20:33:30 <fizzie> I guess "Infinity" was closer.
20:40:24 <oerjan> > 9^9
20:40:25 <lambdabot> 387420489
20:40:41 <kallisti> !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:40:41 <EgoBot> Can't declare null operation in "my" at /tmp/input.23478 line 1, near ") ="
20:40:48 -!- calamari has joined.
20:40:53 <kallisti> NOOOOOO
20:41:00 <kallisti> my completely beautiful code is ruined.
20:41:07 <kallisti> I have to use /multiple lines/
20:41:58 <oerjan> i'd sort of think the point of my is that it's lexically scoped at compile-time
20:42:38 <kallisti> !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:42:38 <EgoBot> Can't declare null operation in "my" at /tmp/input.23726 line 1, near ") ="
20:42:52 <kallisti> !perl sub test(\$) { my ($s) = @_; return (defined wantarray? undef : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:42:52 <EgoBot> Modification of a read-only value attempted at /tmp/input.23799 line 1.
20:43:13 <kallisti> !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:43:14 <EgoBot> Assignment to both a list and a scalar at /tmp/input.23860 line 1, near "2;"
20:43:38 <kallisti> !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : ($$s)) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:43:38 <EgoBot> 22
20:43:45 <kallisti> lol
20:44:39 <kallisti> okay maybe there's a better way to write that in one line.
20:44:54 <kallisti> !perl sub test(\$) { my ($s) = @_; return (defined wantarray? $_ : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:44:54 <EgoBot> 22
20:45:18 <kallisti> !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s
20:45:19 <EgoBot> 22
20:45:31 <kallisti> it's more confusing without the parens I think.
20:46:19 <kallisti> !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print
20:46:20 <EgoBot> 222
20:46:26 <kallisti> also it overwrites $_
20:46:34 <kallisti> !perl sub test(\$) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print
20:46:34 <EgoBot> 22
20:46:37 <kallisti> there we go.
20:47:50 <kallisti> return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap);
20:47:56 <kallisti> this is my opus magnus.
20:48:46 <kallisti> I could also write my (undef)
20:49:01 <kallisti> er wait no that wouldn't work
20:49:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:50:10 <kallisti> !perl sub test(\_) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print
20:50:11 <EgoBot> Malformed prototype for main::test: \_ at /tmp/input.24632 line 1.
20:50:21 <kallisti> hmmm, I would think \_ could be a valid prototype
20:50:36 <kallisti> it looks like a nice comfy chair (without legs)
20:51:06 <fizzie> What'd it mean? I mean, _'s not a sigil.
20:51:23 <kallisti> _ means to use $_ if no argument is supplied.
20:51:29 <zzo38> I think the multimana semiring (from Icosahedral RPG) is like (Cont Natural Five) because, a mana can be (Five -> Natural) to tell you how many copies of a prime factor, and a mana -> Natural tells you what integer multiple of that mana is added together. It won't work to read the amount of your mana in Haskell, because the set of manas is infinite.
20:51:30 <kallisti> it's otherwise treated as $
20:52:01 <fizzie> Yes, but: "Any backslashed prototype character represents an actual argument that absolutely must start with that character." That's not going to work for a \_.
20:52:14 <kallisti> that's a dumb rule. :P
20:52:29 * kallisti is talking about what should be.
20:52:52 <kallisti> hmmm
20:53:05 <fizzie> So you'd like to get a scalarref to $_ if the argument is missing?
20:53:06 <kallisti> plenty of perl operators mutate $_ in place
20:53:11 <kallisti> yes.
20:53:40 <kallisti> I don't actually need it right now
20:53:46 <kallisti> it's just something I could see being useful to have.
20:53:52 <zzo38> Does that make a semiring if the result type (r) of a continuation is a semiring?
20:53:53 <kallisti> when emulating perl operators.
20:55:33 <kallisti> fizzie: but I'm pretty sure you can just do that with manual hacks.
20:55:41 <kallisti> since $_ can be modified in-place anywhere
20:56:28 <kallisti> just make the argument optional. if it's missing, modify a non-lexically bound $_
20:56:29 <zzo38> (Of course to implement in Haskell requires additional constraints)
20:58:38 <fizzie> !perl sub foo (;\$) { my $ref = shift // \$_; $$ref = "ha"; } $_ = "x"; foo; my $bar = "y"; foo $bar; print "$_ $bar";
20:58:38 <EgoBot> ha ha
20:58:41 <kallisti> fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5.
20:59:54 <kallisti> fizzie: hm
21:00:26 <kallisti> oh I misread. yes that's basically what I was suggesting.
21:00:56 <fizzie> It doesn't even arguably look that bad, since it's just a //\$_ piece of line-noise.
21:01:12 <kallisti> ($ref? $$ref : $_) = "ha";
21:01:14 <kallisti> works as well.
21:01:28 <kallisti> fizzie: I am immune to perl line noise..
21:01:31 <kallisti> it doesn't bother me.
21:01:33 <fizzie> /\/\/ do the wave.
21:02:21 <kallisti> I look at perl and see a beautiful language. :)
21:02:48 <olsner> kallisti: ocular adjustment required
21:03:02 <kallisti> NOPE I SEE WITH MY BRAIN.
21:03:10 <kallisti> I see beauty with my brain anyway.
21:03:19 <kallisti> probably other things too!
21:04:16 <kallisti> oh hey I just found a great way to grab two elements at a time.
21:04:44 <kallisti> while( my ($x,$y) = splice @array, 0, 2 ) { ... }
21:04:53 -!- monqy has joined.
21:04:56 <kallisti> @array needs to be something you don't mind throwing away.
21:04:57 <lambdabot> Arrr!
21:04:57 <oerjan> @tell ais523 <ais523> elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language
21:04:57 <lambdabot> Consider it noted.
21:06:01 -!- Phantom_Hoover has joined.
21:06:32 <kallisti> return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap);
21:06:35 <kallisti> monqy: look at this
21:06:47 <monqy> is that perle
21:06:50 <kallisti> yes
21:07:14 <fizzie> kallisti: Isn't there a module for that?-) (Grabbing two elements from a list at a time.)
21:07:23 <kallisti> fizzie: List::MoreUtils
21:07:36 <fizzie> Right, the well-named "natatime".
21:07:57 <fizzie> It's natatime! Let's all nata the nat up.
21:08:00 <kallisti> it's not standard though. splice is built-in and arguably takes less code.
21:08:10 <fizzie> But is it FAST.
21:08:12 <kallisti> since natatime uses an iterator object so you need a line before the loop to create it.
21:08:28 <kallisti> fizzie: probably not as fast no.
21:08:39 <kallisti> because it deletes and resizes the array.
21:09:01 <kallisti> fizzie: but yes that's always my first question when talking about something in perl.
21:12:19 <kallisti> for(my $x; $x+1 != $#array; ++$x)
21:12:27 <kallisti> fizzie: fastest natatime
21:13:28 <kallisti> my ($a,$b) = @array[$x,++$x]
21:13:34 <oerjan> <elliott> ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye
21:14:02 <fizzie> kallisti: Also the most scientific benchmark ever:
21:14:03 <fizzie> $ perl -e 'use Time::HiRes qw(time); use List::MoreUtils qw(natatime); { my @a; $#a = 10000000; $t1s = time; while (my ($x, $y) = splice @a, 0, 2) {} $t1e = time; } { my @a; $#a = 10000000; $t2s = time; for (my $it = natatime 2, @a; my ($x, $y) = $it->(); ) {} $t2e = time; } print $t1e-$t1s, " ", $t2e-$t2s, "\n";'
21:14:03 <fizzie> 1.51157808303833 2.85868787765503
21:14:19 <fizzie> Splice is them victorious.
21:14:24 <kallisti> oh wow.
21:14:29 <kallisti> I wouldn't expect that.
21:15:33 <kallisti> perhaps perl has a way to efficient remove elements from the front of a list or something?
21:15:37 <kallisti> *efficiently
21:15:49 <fizzie> I might have done something "worng", like my ADSL router configuration interface puts it. But anyhow.
21:16:12 <kallisti> also I guess natatime is written in perl whereas splice is in C, but that's still only constant factors so...
21:16:21 <kallisti> maybe at higher inputs natatime beats splice?
21:17:50 <fizzie> Added a zero (well, technically, two zeros), but ran out of memory. :/
21:18:05 <fizzie> Doubling goes to 3.05185985565186 5.66645216941833, that looks quite O(n) that far.
21:18:16 <kallisti> huh
21:18:17 <Phantom_Hoover> There's a Cave Story+??
21:18:29 <kallisti> so yeah I guess splice can just do efficient deletes at the front (and maybe the end) of arrays.
21:19:36 <oerjan> <kallisti> my computer just overheated on my bed. <-- you are not supposed to use it for that, sheesh
21:19:53 <kallisti> fizzie: perl works hard to maintain its position of just slightly slower than most scripting languages.
21:21:41 <fizzie> Well, you know the old adage, you have to run hard in order to run a still. Or something like that, anyway. (I think it's talking about outrunning the cops.)
21:21:53 <kallisti> yes.
21:22:06 <Deewiant> Phantom_Hoover: Has been for a while. (Though it's rather new for PC.)
21:22:08 <kallisti> prohibition era fuck yeaaaah
21:22:21 <Phantom_Hoover> OMG the bundle has Gratuitous Space Battles.
21:22:44 <Phantom_Hoover> This is definitely worth the 70p I plan to pay for it.
21:23:08 <Deewiant> You'll get neither CS+ nor GSB for 70p
21:24:23 <Phantom_Hoover> Oh FFS.
21:24:34 <Phantom_Hoover> Why are people so infuriatingly ethical.
21:25:10 <Deewiant> I already owned them both and I still paid well above the average, so... sorry, I guess?
21:25:20 <Phantom_Hoover> I hate you so much.
21:25:50 <Deewiant> In fact, only 3 new games out of 7, it appears
21:26:00 <Phantom_Hoover> Henceforth, the part of Finland Deewiant lives in is officially in Sweden.
21:26:13 <kallisti> in a C program where are static variables allocated?
21:26:21 <Deewiant> I'll have to check with the local authorities; I doubt it
21:26:33 <Phantom_Hoover> Pah, what do they know.
21:28:25 <fizzie> That's not really a C question but a compiler question, but generally I'd expect them to end up in either the .data, .rodata or .bss section of the executable, depending on constness and zeroinitiality.
21:30:42 <kallisti> fizzie: yeah I knew it wasn't a language question. I just wanted a general idea of what happens there regardless of compiler.
21:31:11 <kallisti> I often ask about a "language" when I really mean "what generally happens in many implementations"
21:33:02 <Deewiant> You totally lack proper DS9K attitude
21:33:20 <fizzie> I vaguely recall a comp.lang.c thread about whether the standard says anything about the value of a local (in-function) static variable before the function has been executed for the first time.
21:33:36 <fizzie> It's slightly hard to test for that empirically.
21:33:51 * kallisti hates language lawyery answers to such implementation-related questions.
21:34:29 <Deewiant> The correct answer to a randomly chosen C question is usually "it's undefined; if you're feeling lucky, read the documentation for your environment, they might tell you"
21:34:34 <kallisti> it doesn't have to be in the standard. I just want a general idea of what you can typically expect, if anything.
21:34:46 <kallisti> Deewiant: yes that happens a lot. :P
21:35:10 <Deewiant> Unfortunately, implementors aren't typically dickish enough for such answers to be realistic
21:36:37 <kallisti> so as it turns out
21:36:42 <kallisti> Perl is a good language to write IRC bots in.
21:37:04 <monqy> oh?
21:37:36 <kallisti> fizzie: do you know of a way to "delay" interpolation. Basically to have a string with $ variables in it and then fill those variables in later.
21:37:47 <fizzie> Eval. :p
21:37:52 <kallisti> oh... yes.
21:38:02 <kallisti> I always forget the eval hacks.
21:38:35 <kallisti> just have to make sure I don't expose anything to IRC.
21:38:38 <oerjan> kallisti: substitution?
21:38:47 <kallisti> oerjan: yes I use that currently for one thing.
21:38:49 * kallisti vague.
21:38:52 <fizzie> Probably would end up with quoting-related issues.
21:39:21 <fizzie> I guess with no strict refs a single s///e might be able to do it too.
21:39:46 <oerjan> !perl for ($x = 1; x < 5; x++) { s/.*/$x/; print; }
21:39:46 <kallisti> a... single one?
21:39:46 <EgoBot> Can't modify constant item in postincrement (++) at /tmp/input.29417 line 1, near "x++"
21:39:52 <oerjan> oops
21:39:59 <oerjan> !perl for ($x = 1; $x < 5; $x++) { s/.*/$x/; print; }
21:40:00 <EgoBot> 1234
21:40:56 <fizzie> s/\$(\w+)/${$1}/ge or something like that? I don't really know. IIRC you can use a string as a scalarref with no strict refs.
21:41:12 <kallisti> yes that's correct
21:41:31 <Vorpal> the "lifetime warranty" nonsense just reached new heights. I saw an advert for a GPU having "double lifetime warranty"
21:41:36 <Vorpal> I have no clue what that means
21:42:03 <calamari> double rainbow?
21:42:14 <oerjan> Vorpal: clearly it means for the lifetime of your heir.
21:42:15 <Vorpal> heh
21:42:20 <kallisti> also if I expose that feature to IRC then it would prevent things like @{[`find / -type f -delete`]}
21:42:24 <Vorpal> oerjan, right
21:42:55 <kallisti> that would be possible with a basic eval.
21:44:03 <fizzie> !perl $a = 1; $b = 2; sub foo { my $s = shift; my ($a, $b) = (42, 69); $s =~ s/\$(\w+)/${$1}/eg; return $s; } print foo('a$a, b$b');
21:44:03 <EgoBot> a1, b2
21:44:20 <fizzie> Apparently won't go with lexical scope there, unsurprisingly.
21:44:32 * oerjan wonders what's wrong with his suggestion.
21:45:33 <Vorpal> new humble bundle btw
21:46:53 <fizzie> oerjan: I'm not sure what your suggestion was. The !perl snippet seemed somewhat unrelated for turning a string '$foo $bar' (received from somewhere) into the string '[current value of $foo] [current value of $bar]'.
21:47:00 <kallisti> fizzie: what I'll probably end up doing is using a hash so s/\$(\w+)/$vars{$1}//$$1"
21:47:03 <kallisti> er
21:47:06 <kallisti> accidentally hit enter.
21:47:40 <kallisti> fizzie: what I'll probably end up doing is using a hash so s(\$(\w+))($vars{$1}//'$'.$1)e
21:48:31 <fizzie> I've done a substitute-with-keys-from-a-hash-with-s///e too, though I think I used %foo% or some-such for the placeholders, since it's clearly not "real" variable interpolation.
21:49:09 <fizzie> Also so DOS-batch-file-retroistic. If I recall them right.
21:49:20 <fizzie> %s were involved anyway.
21:50:28 <kallisti> Python has a modified printf where you can pass in a dictionary and %(name)s will interpolate to d['name']. it's pretty handy.
21:51:02 <fizzie> %var%, but %N for positional params? There was some unsymmetry like that.
21:53:19 * kallisti might learn Ruby one of these days.
21:54:30 -!- derrik has quit (Quit: gone).
21:55:35 <kallisti> but... perl is so comfy as my scripting language. feels nice.
22:05:26 -!- Patashu has joined.
22:08:10 -!- derdon has joined.
22:15:56 <kallisti> fizzie: why would I want to use autoloader?
22:18:07 -!- Darth_Cliche has joined.
22:21:04 -!- Darth_Cliche has changed nick to Klisz.
22:21:47 -!- DCliche has quit (Ping timeout: 268 seconds).
22:23:10 -!- Jafet has joined.
22:46:00 -!- MDude has quit (Read error: Connection reset by peer).
22:47:08 -!- Nisstyre has quit (Read error: Connection reset by peer).
22:52:17 -!- MDude has joined.
22:53:00 -!- MSleep has joined.
22:53:36 -!- MSleep has quit (Read error: Connection reset by peer).
22:53:59 -!- MSleep has joined.
22:57:23 -!- MDude has quit (Ping timeout: 276 seconds).
22:58:37 <kallisti> aha. so that's why I kept having problems when I didn't qualify all of my imported subroutines.
22:58:49 <kallisti> I put my package declaration /after/ my imports.
22:59:12 <kallisti> so the names were going into the main specify, and then I switched over to my package namespace, which didn't have those names.
22:59:46 <kallisti> s/specify/namespace (?#....?)/
23:01:37 <kallisti> fizzie: http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END
23:01:45 <kallisti> this is my favorite example program in all the docs.
23:01:58 <kallisti> "The begincheck program makes it all clear, eventually"
23:02:59 <zzo38> I know how DOS batch files work; it is %var% for environment variables and %1 for parameter 1 and so on.
23:03:46 <zzo38> Do you know if there is any such things as continuation semiring?
23:04:05 <kallisti> wow "Note that END code blocks are not executed at the end of a string eval(): if any END code blocks are created in a string eval(), they will be executed just as any other END code block of that package in LIFO order just before the interpreter is being exited."
23:07:02 <kallisti> I wonder if anyone actually uses UNITCHECK, CHECK, or INIT
23:07:59 <kallisti> I guess UNITCHECK could be useful.
23:08:17 -!- MSleep has quit (Quit: later chat).
23:11:26 <kallisti> " Because the old-fashioned syntax is still supported for backwards compatibility, if you try to use a string like "This is $owner's house" , you'll be accessing $owner::s ; that is, the $s variable in package owner , which is probably not what you meant. "
23:11:33 <kallisti> wow, that's a nice little gotcha
23:11:54 -!- Nisstyre has joined.
23:12:17 <kallisti> !perl use LWP'Simple 'get'; print get("http://www.google.com/");
23:12:18 <EgoBot> Can't locate LWP/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.6122 line 1.
23:12:31 <kallisti> heh.
23:12:36 * kallisti is going to use ' instead of :: now :P
23:15:00 <kallisti> If you have a package called m, s, or y, then you can't use the qualified form of an identifier because it would be instead interpreted as a pattern match, a substitution, or a transliteration.
23:15:04 <kallisti> bahahahaha
23:15:17 * kallisti names his Perl web app framework m
23:18:15 <kallisti> it doesn't define an import method
23:18:33 <kallisti> so you have no way of accessing anything.
23:20:58 <kallisti> well you could use %m:: and access the symbol table
23:25:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:28:13 <zzo38> Can you make this kind of commutative applicative: a *> z = z <* a
23:28:31 <zzo38> And what is a communist functor/applicative/monad?
23:29:23 <kallisti> zzo38: functor/applicative/monads that believe in a class-less Haskell. (I have no idea)
23:29:48 -!- Nisstyre has quit (Ping timeout: 240 seconds).
23:31:51 -!- Nisstyre has joined.
23:32:15 -!- calamari has quit (Quit: Leaving).
23:34:40 <kallisti> > [1,2,3] *> [4,5,6]
23:34:41 <lambdabot> [4,5,6,4,5,6,4,5,6]
23:35:03 <kallisti> > [4,5,6] <* [1,2,3]
23:35:03 <lambdabot> [4,4,4,5,5,5,6,6,6]
23:35:16 -!- Nisstyre has quit (Max SendQ exceeded).
23:36:49 -!- Nisstyre has joined.
23:37:27 <kallisti> zzo38: you'd want flip (liftA2 const) = liftA2 (const id)
23:37:28 <zzo38> kallisti: It doesn't apply to list, it is not commutative
23:40:01 * Phantom_Hoover → sleep
23:40:02 -!- Phantom_Hoover has quit (Quit: Leaving).
23:40:59 <kallisti> zzo38: what do you want to be commutative again?
23:41:32 <zzo38> kallisti: I mean, some applicatives are commutative
23:41:54 <kallisti> yes
23:42:26 <kallisti> zzo38: it sounded like you were asking if such a thing existed.
23:42:45 <zzo38> By writing like f <$> x <*> y = flip f <$> y <*> x
23:43:13 <zzo38> Apparently commutative monad is the same but with join.
23:43:13 <oerjan> :t (*>)
23:43:14 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
23:43:19 <oerjan> :t (<*)
23:43:19 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a
23:44:03 <oerjan> zzo38: Maybe and Reader are commutative, iirc
23:44:17 <kallisti> maybe is, yes.
23:44:24 <zzo38> I know Maybe is commutative
23:44:39 <kallisti> then what was your question?
23:44:51 <kallisti> << zzo38> Can you make this kind of commutative applicative: a *> z = z <* a
23:45:10 <oerjan> any applicative commutative in the usual sense should fulfil that
23:45:23 <zzo38> My question is to do a *> z = z <* a rather than f <$> x <*> y = flip f <$> y <*> x are there a difference?
23:45:29 <kallisti> no
23:45:38 <kallisti> well
23:45:42 <oerjan> erm there _might_ be
23:45:55 <kallisti> for *>, f = const id
23:46:02 <zzo38> And is there a different between commutative applicative and commutative monad? Commutative applicative makes more sense to me
23:46:03 <kallisti> for <*, f = const
23:46:34 <kallisti> :t flip const
23:46:35 <lambdabot> forall b a. a -> b -> b
23:46:37 <kallisti> :t flip (const id)
23:46:38 <lambdabot> forall a b. a -> b -> a
23:46:45 <oerjan> zzo38: i think i showed the other day that they are the same thing, you just apply an extra join to get the monad version
23:47:07 <oerjan> or an extra return to get the applicative one
23:47:23 <zzo38> oerjan: Yes, I think elliott wrote the code for the commutative monads and it seem to me, it is the same thing but with join.
23:47:44 <oerjan> do x <- mx; y <- my; f x y = join $ liftM2 f x y
23:48:37 <oerjan> er
23:48:37 <zzo38> oerjan: Yes, that was the code they showed to me and I realized it is same as your code
23:48:44 <oerjan> * do x <- mx; y <- my; f x y = join $ liftM2 f mx my
23:48:53 <zzo38> Yes that is better
23:49:20 <kallisti> oerjan: is there an applicative that isn't a monad?
23:49:34 <oerjan> liftM2 f mx my = do x <- mx; y <- my; (\x y -> return (f x y)) x y
23:50:27 <oerjan> kallisti: a free applicative defined with a GADT, for example
23:50:37 <kallisti> "free"?
23:51:24 <oerjan> data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b
23:51:28 <oerjan> i think
23:51:32 <kallisti> oh that kind of free.
23:51:48 * kallisti didn't know that had a name.
23:52:28 <oerjan> um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations
23:53:17 <oerjan> that thing above is probably too simple
23:54:34 <oerjan> it keeps getting discussed how to make an Applicative which isn't a Monad and i keep forgetting the examples
23:55:37 <kallisti> is co-applicative a thing?
23:56:11 <oerjan> heh
23:56:22 <oerjan> i don't know
23:56:37 <kallisti> impure :: FreeA a -> a
23:57:59 <kallisti> s/FreeA/g/
23:58:45 <kallisti> but what would (>*<) be?
23:59:12 -!- copumpkin has joined.
2011-12-14
00:02:13 -!- pikhq has joined.
00:02:14 -!- pikhq_ has quit (Ping timeout: 252 seconds).
00:04:32 <kallisti> oerjan: does applicative have any category theoretic definition?
00:11:40 <oerjan> "technically, a strong lax monoidal functor"
00:12:31 <kallisti> ..
00:12:39 <oerjan> also i rethought my definition of a free applicative
00:13:17 <oerjan> data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b
00:13:51 <oerjan> you then have some data constructor t providing you with your fundamental actions
00:14:50 <kallisti> help how do I define a function that constructs a value with type FreeA t a
00:15:40 <oerjan> well, Pure :: a -> FreeA t a would be one...
00:16:20 <oerjan> another would be (Pure id :<*>) :: t a -> FreeA t a
00:16:55 <oerjan> the latter is how you would normally convert a value of type t a
00:17:35 <kallisti> ah right I was confusing something with something else.
00:18:15 <oerjan> oops
00:18:19 -!- oerjan has quit (Quit: Needs reboot).
00:18:25 -!- MDude has joined.
00:22:02 -!- Nisstyre has quit (Quit: Leaving).
00:25:00 -!- Nisstyre has joined.
00:27:53 * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
00:31:11 -!- cheater has joined.
00:33:57 -!- elliott has quit (Ping timeout: 240 seconds).
00:36:34 -!- oerjan has joined.
00:38:50 <oerjan> * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
00:39:10 <oerjan> please don't do that.
00:40:01 <oerjan> i feel freaked out like ais523 when people say "damn you" to him
00:43:29 <oerjan> i don't think you could have possibly timed it worse, either.
00:44:54 <oerjan> dammit you're even afk, aren't you.
00:50:45 -!- oerjan has quit (Quit: Damn you.).
00:52:05 -!- PiRSquared17|afk has joined.
00:53:43 <PiRSquared17|afk> revert http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045 plz
00:57:46 <PiRSquared17|afk> ...please undo/rollback?
00:59:16 -!- oerjan has joined.
00:59:59 <PiRSquared17|afk> oerjan: http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045
01:00:17 <PiRSquared17|afk> rollback/undo it
01:00:38 <oerjan> PiRSquared17|afk: i'm not an admin so i cannot rollback, anyone can undo it though...
01:00:47 <PiRSquared17|afk> OK
01:01:11 <PiRSquared17|afk> I know what undo is BTW
01:01:19 <PiRSquared17|afk> I thought you were an admin
01:03:08 <oerjan> elliott certainly keeps joking about it
01:03:15 <oerjan> well, maybe not lately
01:04:00 <PiRSquared17|afk> How is http://esoteric.voxelperfect.net/wiki/Special:Listgrouprights an error?
01:04:29 -!- MDude has quit (Read error: Connection reset by peer).
01:04:54 <oerjan> well it says no such special page exists...
01:05:53 <PiRSquared17|afk> Like http://www.mediawiki.org/wiki/Special:ListGroupRights ...
01:06:04 <PiRSquared17|afk> It must be really old MediaWiki then
01:06:08 <oerjan> yes it is
01:06:51 -!- Jafet has quit (Quit: Leaving.).
01:07:30 -!- Jafet has joined.
01:10:59 -!- nys has quit (Quit: quit).
01:13:37 -!- MDude has joined.
01:14:34 -!- PiRSquared17|afk has changed nick to PiQuad.
01:19:17 <oerjan> instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa :<*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
01:20:04 <oerjan> oh wait
01:20:46 <oerjan> *instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
01:21:08 <Vorpal> Who came up with the idea of a bulky transformer right in the plug? Those things block more than one slot...
01:22:18 -!- Jafet has quit (Ping timeout: 240 seconds).
01:24:46 <oerjan> :t ($ ($ ($ ?x)))
01:24:47 <lambdabot> forall b b1 a b2. (?x::a) => (((((a -> b2) -> b2) -> b1) -> b1) -> b) -> b
01:30:48 -!- PiQuad has changed nick to PiRSquared17.
01:38:08 -!- derdon has quit (Remote host closed the connection).
01:44:17 -!- Jafet has joined.
01:58:50 -!- Jafet has quit (Ping timeout: 252 seconds).
02:02:43 -!- Jafet has joined.
02:17:24 <oerjan> `? mad
02:17:27 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
02:27:01 -!- MDude has quit (Quit: later chat).
02:27:15 -!- MSleep has joined.
02:43:52 <Sgeo> kallisti, update
02:50:36 -!- itidus20 has joined.
02:53:39 -!- itidus21 has quit (Ping timeout: 252 seconds).
02:55:19 <zzo38> oerjan: Do you know if there is such thing as continuation semiring?
02:56:19 <oerjan> no idea
02:56:58 <oerjan> i cannot say i recall ever seeing those two concepts in the same context
03:07:32 <zzo38> Well, I was thinking of the semiring of multimanas in Icosahedral RPG and see maybe it is like ((Five -> Natural) -> Natural) because you have a function that, for each prime mana, tells how many copies of that multiplied together, and then how many of each mana is added together.
03:07:34 -!- itidus20 has left ("Leaving").
03:08:55 -!- itidus20 has joined.
03:09:18 -!- itidus20 has left.
03:11:16 -!- itidus20 has joined.
03:11:57 <zzo38> Does this seem anything to you?
03:12:08 -!- itidus20 has quit (Client Quit).
03:12:42 -!- itidus20 has joined.
03:14:40 <oerjan> isn't that just summing a map over the list of all Five's?
03:15:00 <zzo38> In ((a -> r) -> r) like what I have above, I notice that the (r) I have is semiring and the (a) is a bounded type (so you can check all of them).
03:15:07 -!- itidus22 has joined.
03:15:34 <zzo38> oerjan: Yes, I suppose so. But I noticed the similarity to type of continuation monads
03:17:17 -!- itidus20 has quit (Ping timeout: 248 seconds).
03:19:17 <oerjan> > sum $ map (ord * ord + ord) ['a'..'e']
03:19:18 <lambdabot> 49510
03:19:33 <oerjan> something like that?
03:20:04 <zzo38> oerjan: I don't think so?
03:20:09 <oerjan> that's just using lambdabot's Num n => a -> n instances
03:20:17 <zzo38> I know that
03:20:48 <zzo38> But that isn't what I was trying to say
03:20:52 <oerjan> i don't see how else you'd want to treat it as a semiring
03:21:37 -!- itidus22 has changed nick to itidus21.
03:22:12 -!- itidus21 has quit (Quit: Leaving).
03:22:14 <zzo38> I can try to explain better. Manas make a monoid, you multiply manas together and it is commutative. There are five prime manas (named 'w', 'u', 'b', 'r', and 'g'). For example, (w), (1), (wwwb), (wubrg) are manas.
03:23:00 <zzo38> And then the sum of zero or more manas is called multimana. For example, (2w+1), (3ggr+5b+uu), etc
03:23:07 <zzo38> Now do you understand?
03:24:26 <oerjan> well ok i don't really think ((Five -> Natural) -> Natural) is the type of multimana
03:24:30 <zzo38> (These are the manas in Icosahedral RPG; they are different from manas in Magic: the Gathering.)
03:25:00 <oerjan> hm or...
03:25:35 <zzo38> oerjan: OK. I understand how that type cannot be used to check how much mana you have and stuff, but it still seems mathematically valid to me. Explain what you think it is?
03:25:51 <oerjan> is the Five -> Natural type supposed to be some number assignment to each prime mana, which you then substitute into the expression? that could work i guess.
03:26:44 <oerjan> it would be a semiring homomorphism from your expressions to such functions
03:27:05 <zzo38> oerjan: Yes, that is what I mean; (Five -> Natural) tell you how many of each prime mana you have multiplied together. And it is commutative multiplication.
03:27:17 <oerjan> ...no that is not what i mean...
03:27:41 <zzo38> oerjan: Well, it is what I mean, though.
03:28:10 <oerjan> so, Five -> Natural represents a mana then.
03:28:18 <zzo38> oerjan: Yes.
03:29:36 <oerjan> hm ok, i guess that sort of works... except that there are an infinite number of manas, so you cannot really calculate anything useful that involves more than finitely many of them.
03:30:00 -!- DCliche has joined.
03:30:05 <zzo38> oerjan: Yes, that is what I was saying too
03:30:27 <oerjan> basically ((Five -> Natural) -> Natural) doesn't tell you which arguments you need to check
03:33:26 -!- Klisz has quit (Ping timeout: 252 seconds).
03:36:06 -!- itidus21 has joined.
03:36:25 <zzo38> Yes; you cannot actually figure out the manas you have with that. But it should still be mathematically valid to have, I think? You could still have infinite sums, but supernatural numbers do too (except that supernatural numbers can have a prime number to the power of infinity)
03:37:11 <oerjan> sure, it would be as mathematically valid as set theory functions
03:39:57 -!- itidus21 has left ("Leaving").
03:40:50 <zzo38> And continuations are also using a type like that, I think?
03:41:40 <oerjan> well yes. it's Cont Natural Five
03:43:13 -!- itidus21 has joined.
03:44:05 <zzo38> oerjan: Yes. Like that. I think, for (Cont r a) in general it will be (Bounded a, Eq r, Semiring r) and in this case the types have that? I don't really know though, about other cases with these constraints, or without, or whatever, but something seem to me
03:44:10 <oerjan> i'm not sure that there is any interesting connection in semantics, though
03:45:12 -!- itidus20 has joined.
03:45:19 <oerjan> i'm not convinced you can actually compute the product of two ((Five -> Natural) -> Natural) elements
03:45:31 <oerjan> and have it halt
03:45:41 <oerjan> oh hm well
03:45:50 <oerjan> actually i guess you can
03:46:38 <oerjan> since given a Five -> Natural function, there are only finitely many pairs that sum to it
03:47:46 -!- itidus21 has quit (Ping timeout: 255 seconds).
03:48:50 -!- copumpkin has quit (Ping timeout: 252 seconds).
03:49:12 <oerjan> it's a kind of convolution
03:49:15 -!- copumpkin has joined.
03:49:34 -!- itidus20 has quit (Ping timeout: 255 seconds).
03:54:02 -!- MSleep has quit (Read error: Connection reset by peer).
03:55:08 -!- MSleep has joined.
03:57:08 <zzo38> Yes, I think so
04:01:36 -!- Vorpal has quit (Ping timeout: 248 seconds).
04:02:01 -!- itidus22 has joined.
04:02:24 -!- itidus22 has changed nick to itidus21.
04:03:45 -!- MDude has joined.
04:06:06 -!- MSleep has quit (Ping timeout: 240 seconds).
04:10:15 -!- MDude has quit (Read error: Connection reset by peer).
04:10:30 -!- MSleep has joined.
04:11:04 -!- MSleep has quit (Read error: Connection reset by peer).
04:11:40 -!- MSleep has joined.
04:12:57 -!- MDude has joined.
04:15:03 -!- MDude has quit (Read error: Connection reset by peer).
04:15:22 -!- MDude has joined.
04:16:26 -!- MSleep has quit (Ping timeout: 240 seconds).
04:19:44 <kallisti> bouncy
04:20:03 <oerjan> he's alive!
04:21:05 <kallisti> did I miss something?
04:21:26 <oerjan> no, absolutely nothing. don't you dare to read backscroll.
04:21:46 -!- copumpkin has quit (Ping timeout: 240 seconds).
04:22:10 -!- copumpkin has joined.
04:23:10 <oerjan> ok, there was this: instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
04:24:16 <oerjan> and someone said something about an update.
04:25:54 * kallisti squints his eyes to read all the funny symbols.
04:26:08 <kallisti> seriously need to get VISION AIDING THINGS.
04:26:26 <oerjan> with x-rays!
04:26:42 <kallisti> okay yes... all of these things make sense.
04:26:44 <kallisti> >_>
04:27:51 <oerjan> as a reminder, data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b
04:28:31 <kallisti> yes
04:28:43 <oerjan> oh and some infixl 4 :<*> to get the syntax to fit
04:28:56 <kallisti> I don't really understand the purpose of the t though
04:29:20 <oerjan> the t is the data type providing your primitive actions
04:29:26 <oerjan> other than Pure
04:30:18 <oerjan> basically every element looks like Pure f :<*> ta :<*> tb :<*> ... :<*> tz
04:30:39 <kallisti> ah okay it just makes it... type correctly.
04:31:05 -!- elliott has joined.
04:31:07 -!- Jafet1 has joined.
04:31:23 <elliott> oerjan: hi
04:31:26 <oerjan> hello
04:31:27 <kallisti> Jafet1: hi
04:31:43 <elliott> i must say i have never tried this 17:00-04:31 sleep pattern before.
04:32:09 <oerjan> i may have.
04:32:15 <kallisti> psh, that's 7 months ago for me.
04:32:19 <kallisti> *that's so
04:32:20 <oerjan> not very often, though.
04:32:44 <elliott> it could be worse; i've woken up well-rested not all that long before dawn
04:33:08 <kallisti> elliott: you couldn't possibly match my insane-sleep-patterns hipster cred.
04:33:19 -!- Jafet has quit (Disconnected by services).
04:33:22 -!- Jafet1 has changed nick to Jafet.
04:33:31 <elliott> kallisti: dude, "sleeping every other day" is my /standard/ pattern
04:33:44 <Jafet> Hi, I'm totally not impersonating Jafet.
04:33:56 <oerjan> Jafet: good, good
04:33:58 <elliott> hi not Jafet
04:33:58 <kallisti> Jafet: WHY SO UNAFFILIATED
04:34:12 <elliott> kallisti: there is no way you have had crazier sleep patterns than me
04:34:40 <elliott> 17:24:10: <itidus21> i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B
04:34:41 <elliott> 17:24:40: <itidus21> as for the characters they would all look perfectly at home in commander keen
04:34:41 <elliott> 17:28:12: <itidus21> ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position
04:34:41 <elliott> 17:28:36: <itidus21> thus giving the illusion that lots of stuff was all miraculously invented at once
04:34:41 <elliott> 17:30:00: <itidus21> kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip,
04:34:44 <elliott> 17:35:40: <kallisti> the invention of people.
04:34:46 <elliott> 17:35:56: <kallisti> the invention of money
04:34:48 <elliott> 17:36:14: <itidus21> life too
04:34:50 <elliott> 17:36:22: <itidus21> eyes
04:34:52 <elliott> 17:36:23: <itidus21> hands
04:34:54 <elliott> 17:36:33: <itidus21> light
04:34:56 <elliott> 17:36:59: <itidus21> hmm
04:34:58 <elliott> this is beautiful
04:35:04 <elliott> oh, it was even better when i read those two kallisti lines as itidus21
04:35:29 <kallisti> I apparently have the most chameleon name.
04:35:37 <kallisti> blending in with everyones nicks.
04:35:42 <oerjan> kamellisti
04:35:47 <elliott> 18:37:13: <Gregor> When did freshmeat.net change to freecode.com???
04:35:50 <elliott> Gregor: Woooooow.
04:36:10 <elliott> kallisti: well it's the same length :P
04:36:15 <elliott> and has i and t
04:36:52 <elliott> Oh great, another Humble Bundle.
04:36:52 <kallisti> elliott: well I certainly don't skip days when I have no reason to, but often it happens that I need to be awake at a certain hour and not sleeping is the way to do it. But as I've said I've more or less maintaining any kind of daily interval of sleep you could imagine.
04:37:01 <kallisti> elliott: dunno I think it's happened a few times with other nicks as well.
04:37:02 <elliott> I'm starting to DREAD them.
04:37:26 <itidus21> its the dragon ball z effect... when dragonball z starts all the dragon ball characters and backstories have been established
04:37:30 <oerjan> creepy bundles
04:37:39 <elliott> kallisti: What I mean is: When I don't do anything to control my sleep schedule, I either sleep an hour or two later every early morning, or sleep once every other day.
04:37:46 <itidus21> leaving everyone just to beat the proverbial snot out of each other
04:37:58 <elliott> itidus21: :D
04:38:30 <elliott> NightSky is an atmospheric, 2D physics puzzle platformer. The player uses acceleration, gravity, and motion to navigate a glowing sphere through over 130 unique and picturesque levels.
04:38:30 <elliott> hmm, this looks nice, and Idon't have Super Meat Boy
04:38:33 * oerjan flings some proverbial snot at itidus21
04:38:37 <kallisti> itidus21: nah man dbz is all about humor and nuanced character development and plot twists.
04:38:38 <elliott> or Cave Story+
04:38:43 -!- PiRSquared17 has changed nick to Guest1234.
04:38:46 <elliott> even though I doubt I could bring myself to play it over the original translation
04:38:47 -!- Guest1234 has changed nick to Guest12345.
04:38:56 -!- Guest12345 has left.
04:39:02 <elliott> so i... guess i'll buy it sometime
04:39:07 <shachaf> What's Cave Story?
04:39:19 <itidus21> cave story is made by pixel
04:39:31 <kallisti> cave story is made by pixels
04:39:37 <elliott> shachaf: An indie platforming game released in 2004 made by a single Japanese guy.
04:39:39 <itidus21> which, in the wrong context, really doesn't add much
04:40:53 <shachaf> elliott: According to an interview, he's married.
04:41:03 <itidus21> lol.
04:41:08 <elliott> shachaf: i see wut u did ther!!!!!!!!!!!11111111124
04:41:14 * shachaf wonders whether he will ever tire of the "purposely misinterpret people" game.
04:42:25 <itidus21> its a base form of humor, but it is humor
04:42:35 <shachaf> It's the highest form of humour.
04:42:59 <itidus21> technically being in australia i should spell it with a u
04:43:07 <elliott> shachaf: Drugs are bad.
04:43:12 <elliott> (See, I deliberately misinterpreted you!)
04:43:14 <elliott> (HAHAHAHAA;]
04:43:16 <elliott> ;
04:44:59 <elliott> oerjan: an Agora quote, from the thread "On dummy player records in the CotC DB": <Goethe> These are the known unknowns, how are you labeling the unknown unknowns? <Murphy> "ehird", mostly.
04:45:17 <oerjan> elliott: good show
04:45:19 <shachaf> AGORA NOM!
04:45:23 <kallisti> Tommy is a programmer, probably the best programmer ever. He is the one and only programmer for Super Meat Boy. He travels the world searching for other programmers to kill and absorb their powers
04:45:24 <shachaf> MY FAVOURITE GAME!
04:45:26 <elliott> (*G., technically.)
04:45:33 <kallisti> this is a good bio entry.
04:45:37 <elliott> (But oerjan is too OLD for that.)
04:45:43 <itidus21> kallisti: yes.... that's good
04:45:49 <oerjan> shachaf is converted already?
04:45:51 <elliott> (He remembers the philosopher post-redesign.)
04:45:52 <elliott> *pre-
04:46:23 <elliott> oerjan: did the lists prepend "DIS:"/"BUS:"/"OFF:" prefixes in your days???
04:46:49 <elliott> ehhh, the eff have been replaced by red cross in the humble bundle?
04:46:51 <shachaf> oerjan: TOTALLY. AGORA NOM NOM NOM.
04:47:01 <kallisti> elliott: http://www.youtube.com/watch?v=W-NG4f7O1vQ
04:47:03 <kallisti> listen to this guys voice.
04:47:18 <kallisti> I don't know how I feel about it. Sometimes it's annoying, other times it's funny.
04:47:27 <kallisti> other times it sounds normal.
04:47:42 <oerjan> elliott: yes they did
04:47:54 <oerjan> well, possibly not DIS:
04:48:03 <elliott> hmph, now I have to try and remember whether or not Red Cross are worth giving money to or not
04:48:25 <elliott> oerjan: hmm, but every forum was public back In The Day, right? I guess I don't actually know when tue came along
04:49:13 <oerjan> elliott: depends how far back, discussion was explicitly made non-public so people didn't have to read it
04:49:39 <elliott> oerjan: haha, well, you'd have a hard time playing without reading a-d these days
04:49:51 <oerjan> eek
04:50:00 <elliott> oerjan: well, not really
04:50:15 <elliott> oerjan: but you'd force everyone to cfj to let you know something you did failed :P
04:50:21 <elliott> rather than just pointing it out, for one
04:50:36 <oerjan> heh
04:51:37 <elliott> WHY IST HAT MEGAUPLOD SONG STUCK IN MY HEAD
04:54:39 <shachaf> Punishment for reading the Internet.
04:55:00 <shachaf> So doun't read the Internet. That'll soulve everything.
04:55:08 * elliott logs on to the @ternet.
04:55:24 <shachaf> elliott: Enjoy your time in fantasy-land.
04:55:44 <shachaf> Also, I'm told by an unreliable source that drugs are bad.
04:56:01 -!- elliott has quit (Quit: SURFIN' THE @TERNET WAAAVES, MAAAN).
04:57:21 <oerjan> the afternet
04:58:01 -!- elliott has joined.
04:58:06 <kallisti> "In 1954, Olds and Milner found that rats with metal electrodes implanted into their nucleus accumbens as well as their septal nuclei repeatedly pressed a lever activating this region, and did so in preference to eating and drinking, eventually dying of exhaustion."
04:58:12 <kallisti> levers: the ultimate high
04:58:36 <elliott> 20:58:41: <kallisti> fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5.
04:59:01 <elliott> kallisti: You sure do complain about Perl 6 a lot without actually providing any complaints other than a lack of some kind of "Perl essence".
04:59:16 <kallisti> elliott: dude, you don't know about the Perl essence?
04:59:19 -!- oerjan has quit (Quit: Good night).
04:59:29 <elliott> RIGHT AS I WAS ABOUT TO RESPOND TO OERJAN
05:00:03 <elliott> 21:04:57: <oerjan> @tell ais523 <ais523> elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language
05:00:03 <elliott> well if you /enforce/ it with uniqueness typing it works just fine of courser, but the most comfortable notation to use that is something like do notation... so you might as well just use the equivalent ST :P
05:00:07 <elliott> *course,
05:00:27 <elliott> 21:13:34: <oerjan> <elliott> ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye
05:00:28 <elliott> Yes, yes.
05:00:37 <elliott> I thought of that but decided to be more explicit.
05:00:57 <kallisti> elliott: my main complaint is that it doesn't feel very coherent.
05:01:24 <elliott> kallisti: I'm going to go out on a limb here and suggest that you've spent about 1% of the effort you have learning Perl 5 on learning Perl 6.
05:01:33 -!- Jafet has quit (Quit: Leaving.).
05:01:55 <kallisti> elliott: I'm offended that you would say such a thing.
05:02:24 <elliott> As someone who's spend 200% of the effort I have learning Perl 5 on learning Perl 6, I can say that Perl 6 definitely seems coherent to me.
05:03:04 <shachaf> I'm technically a committer to Perl 6!
05:03:12 <shachaf> I had the commit bit forced onto me.
05:04:04 <elliott> shachaf: Perl 6 has a repository?
05:04:15 <shachaf> github.com/perl6
05:04:36 <elliott> That's, like, 50 repositories.
05:04:55 <shachaf> FVO 50 ET 24
05:05:10 <shachaf> And apparently I have commit access to all of them?
05:05:57 <elliott> shachaf: Quick, destroy Perl 6!
05:06:25 <elliott> 23:51:24: <oerjan> data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b
05:06:25 <elliott> 23:52:28: <oerjan> um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations
05:06:26 <elliott> 23:53:17: <oerjan> that thing above is probably too simple
05:06:28 <elliott> I think that's fine.
05:06:35 <shachaf> elliott: Better: I will sneak in insidious commits that will slow their development pace to a crawl, forever keeping Perl 6 in the realm of vapourware.
05:06:38 <shachaf> ...Wait.
05:06:54 <elliott> eval p _ (Pure a) = a; eval p a (f :<*> x) = a (eval p a f) (eval p a x)
05:07:01 <elliott> shachaf: Dun dun DUNNNNNN
05:07:58 <elliott> 00:38:50: <oerjan> * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
05:07:58 <elliott> 00:39:10: <oerjan> please don't do that.
05:07:58 <elliott> 00:40:01: <oerjan> i feel freaked out like ais523 when people say "damn you" to him
05:07:59 <elliott> 00:43:29: <oerjan> i don't think you could have possibly timed it worse, either.
05:08:00 <elliott> 00:44:54: <oerjan> dammit you're even afk, aren't you.00:50:45: -!- oerjan has quit (Quit: Damn you.).
05:08:16 <elliott> @tell oerjan You realise you just guaranteed that PH will say something like that to you sometime.
05:08:16 <lambdabot> Consider it noted.
05:10:17 <elliott> 04:21:05: <kallisti> did I miss something?
05:10:17 <elliott> 04:21:26: <oerjan> no, absolutely nothing. don't you dare to read backscroll.
05:10:18 <elliott> whoops
05:10:21 <elliott> kallisti: don't look a few lines up
05:11:16 <kallisti> elliott: I have no clue what I did.
05:11:31 <elliott> Hey, I told you not to look a few lines up.
05:12:12 <kallisti> but I did! Damn you.
05:12:32 <elliott> I'm not sure what you mean by "I have no clue what I did", anyway.
05:13:13 <kallisti> elliott: you're correct that I haven't spent as much time learning perl 6, however, I /have/ actually read the spec.
05:13:38 <kallisti> I certainly can't fault it for some interesting language design ideas.
05:14:03 <kallisti> but I feel it suffers from... syntactic overload.
05:15:02 <elliott> unlike Perl 5.
05:15:49 <kallisti> indeed.
05:16:04 <elliott> it was sarcasm.
05:16:04 <kallisti> perl 5 is well-balanced compared to perl 6.
05:16:08 <kallisti> yes I know.
05:16:17 * elliott disagrees.
05:16:23 <kallisti> I did that thing where I counter your sarcasm by taking it seriously.
05:16:26 <kallisti> you know that thing.
05:16:30 <elliott> Perl 5 has a ton of syntactic space devoted to useless things.
05:16:41 <elliott> Perl 6 has a ton of syntactic space devoted to useful things like higher-order operations.
05:16:56 <kallisti> perl 6 has a ton of syntactic space devoted to fixing weird issues.
05:17:16 <kallisti> the whitespace significance in particular.
05:17:37 * elliott shrugs; this is not goign to be productive.
05:17:39 <elliott> *going
05:17:41 <shachaf> Let's split the difference and all use Perl 5.5.
05:19:37 <kallisti> The spec basically reads: "in Perl 6 whitespace is more or less optional... (next section) now here is how perl 6 is highly dependent on whitespace when parsing."
05:20:50 <elliott> "In general, whitespace is optional in Perl 6 except where it is needed to separate constructs that would be misconstrued as a single token or other syntactic unit. (In other words, Perl 6 follows the standard longest-token principle, or in the cases of large constructs, a prefer shifting to reducing principle. See "Grammatical Categories" below for more on how a Perl program is analyzed into tokens.)"
05:20:52 <elliott> Not quite the same thing.
05:21:28 <shachaf> WHITESPACE IS STUPID LOL
05:21:57 <kallisti> elliott: by "next section" I was referring to the next section and not the same paragraph.
05:22:08 <kallisti> where it goes into the gory details of operator parsing and whitespace
05:22:15 <elliott> kallisti: I was saying that it does not say "in Perl 6 whitespace is more or less optional".
05:22:29 <elliott> It says "it's optional except where it is needed to separate constructs", which is exactly what the next section explains.
05:23:23 <kallisti> mmk. I'll remember the exact wording next time to avoid English-lawyering.
05:23:53 <elliott> It's awesome when you can dismiss proving your statements unreasonable as lawyering.
05:23:56 <elliott> It's so convenient!
05:24:45 <kallisti> except they weren't unreasonable I just used a wording which is slightly different but more or less (uh oh) means the same thing.
05:25:17 <elliott> *sigh*
05:25:44 <elliott> You seem to dismiss all disagreements of meaning as syntactic lawyering.
05:26:22 <kallisti> okay.
05:28:19 <kallisti> I'm not even going to attempt to refute what I seem to do.
05:31:31 <shachaf> elliott: Stop arguing about semantics. We're talking about the important stuff here.
05:31:45 <elliott> shachaf: Yes, the lexical syntax of comments.
05:32:02 <kallisti> comments?
05:32:10 <elliott> http://www.haskell.org/haskellwiki/Wadlers_Law
05:32:15 <elliott> *http://www.haskell.org/haskellwiki/Wadler%27s_Law
05:32:17 <kallisti> oh right that.
05:44:09 <kallisti> obviously syntax isn't important at all.
05:45:07 <kallisti> I'm sure if Haskell were exactly the same semantically except every lexeme were a ROT13'd counterpart, it would be just as expressive and intuitive.
05:45:23 <kallisti> er not rot13
05:45:31 <kallisti> the other one, with the bigger number.
05:45:33 <kallisti> :P
05:48:10 <zzo38> Well, Haskell does support layout and non-layout mode, and literate programs can use > or \begin{code} and in both of these cases you can mix them in a single program. (I prefer non-layout mode with > for literate programs, but they are good that they support the other way too)
05:50:17 <zzo38> Unattributed quotation is: "A good programmer can write FORTRAN in any language; a great one could write Haskell."
05:50:29 <Sgeo> elliott, kallisti update
05:51:32 <kallisti> writing X in Y is usually a bad idea.
05:54:13 <elliott> Can 3*t ever be negative where t is a positive two's-complement 32-bit integer? Can 3*t ever be positive where t is a negative two's-complement 32-bit integer?
05:55:29 <elliott> (And where 3*t is treated as a positive two's-complement 32-bit integer, of course.)
06:00:28 -!- augur has quit (Remote host closed the connection).
06:12:34 -!- hagb4rd has quit (Ping timeout: 252 seconds).
06:16:40 -!- hagb4rd has joined.
06:23:09 <olsner> elliott: I think so
06:23:21 <olsner> but I won't bother figuring it out properly
06:23:30 <elliott> Woot
06:25:24 <Sgeo> elliott, tumblrupdate
06:25:37 <olsner> hmm, positive->negative is trivial, just choose a positive number larger than 0x80000000/3
06:30:38 * elliott has restored to Stack Overflow to answer a question :-(
06:32:08 <Deewiant> !c int main(){for(char t=-128;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:32:13 <EgoBot> ​-85
06:32:41 <elliott> Deewiant: THAT'S JUST CHARS, YOU CAN'T PROVE ANYTHING
06:33:07 <Deewiant> !c int main(){for(int t=INT_MIN;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:33:08 <EgoBot> Does not compile.
06:33:30 <olsner> Deewiant: haha, does not even compile!
06:33:30 <Deewiant> !c int main(){for(int t=-2147483648;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:33:33 <EgoBot> ​-2147483648
06:33:40 <Deewiant> !c int main(){for(int t=-2147483648;;++t)if(t<0&&3*t>=0)return printf("%d\n",t);}
06:34:06 <EgoBot> ​-1431655765
06:34:16 <elliott> Deewiant: ;__;
06:34:21 <elliott> im cry
06:35:21 -!- augur has joined.
07:01:57 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:04:09 <quintopia> i could have answered that question without the program. it is VERY OBVIOUS
07:04:34 <zzo38> I made a "ReadthisT" monad transformer
07:10:30 <elliott> Hmm, Stack Overflow was... surprisingly helpful.
07:11:29 <quintopia> what is sgeo talking about every time he says update? homestuck?
07:12:08 <zzo38> quintopia: I wondered about that too
07:12:28 <elliott> quintopia: He's talking about the updates...
07:12:32 <elliott> of life.
07:12:37 <elliott> auuuuuuuuuum
07:12:40 <elliott> kallisti: Right?
07:19:14 -!- const has quit (Ping timeout: 245 seconds).
07:24:52 -!- variable has joined.
07:31:09 <elliott> map_surface.c:17:2: error: missing sentinel in function call [-Werror=format]
07:31:16 <elliott> 2011 :')
07:31:39 -!- MDude has quit (Read error: Connection reset by peer).
07:33:02 <elliott> WTF
07:33:12 <elliott> Deewiant: WHY IS "int *foo = foo;" LEGAL
07:33:22 <elliott> AND NON-WARNING-PRODUCING
07:37:48 <fizzie> $ echo 'void f(void) { int *foo = foo; }' | gcc -xc - -o test.o -c -Wuninitialized -Winit-self
07:37:48 <fizzie> <stdin>: In function ‘f’:
07:37:48 <fizzie> <stdin>:1: warning: ‘foo’ is used uninitialized in this function
07:38:03 <fizzie> Rather weird that -Winit-self isn't enabled by -Wall/-Wextra like plain -Wuninitialized is.
07:38:33 <elliott> fizzie: Guess what's going into the mcmap Makefile
07:38:39 <fizzie> Can't immediately invent any real use cases for self-initialization.
07:38:50 <elliott> It's always UB, isn't it
07:38:53 <elliott> Oh
07:38:55 <elliott> Not for static variables
07:38:59 <elliott> But for locals
07:39:18 <elliott> I suppose int *foo = bar(&foo) might SOMETIMES by useful?
07:40:01 <zzo38> Yes it might sometimes be useful like that.
07:40:02 <fizzie> I... guess, but that wouldn't cause a warning anyway, since the &foo expression is not using the uninitialized value.
07:40:24 <elliott> Welp
07:40:44 <elliott> By the by, is it legal to cast a pointer to a struct to a pointer to a prefix of it?
07:40:46 <elliott> And then use that.
07:40:57 <elliott> Where prefix = prefix of the members, same type and all
07:41:08 <elliott> e.g. {int a,b,c;unsigned d;} vs. {int a,b,c;unsigned d;char *foo;}
07:41:37 <fizzie> Only if the structs are part of a single union declaration somewhere (anywhere) in the code. :p
07:41:51 <elliott> fizzie: Seriously?
07:41:54 <zzo38> Should that kind of prefixing be allowed in LLVM?
07:41:55 <fizzie> At least ISTR that the "initial common subsequence" rule was only valid for structs in a union.
07:42:07 <elliott> fizzie: OK, but surely it has to be a union value for that to be OK...
07:42:15 <fizzie> No, I don't think it has to be.
07:42:21 <elliott> fizzie: What. What.
07:42:22 <fizzie> The structures just need to be in an union somewhere.
07:42:24 <elliott> fizzie: But...
07:42:26 <elliott> But why.
07:42:30 <elliott> fizzie: OK, better question:
07:42:35 <fizzie> That's the impression I've gotten, anyway; I'd have to check if it's actually like that.
07:42:38 <elliott> struct bar {struct foo foo; ...}
07:42:46 <elliott> Can I cast (struct bar *) to (struct foo *) and do the obvious?
07:42:52 <fizzie> Yes, that you can do.
07:42:59 <elliott> OK, good :P
07:43:05 <fizzie> Because casting to the first member is legal.
07:43:40 <fizzie> (And back.)
07:43:54 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
07:44:00 <elliott> (The context is that 5 out of 8 functions in struct map_mode are shared between all flat maps, but flat_mode is duplicating the other 3, and it's ugly, so I'm going to invert me some controls.)
07:45:06 <fizzie> See, if we were writing C++, you'd just inherit it.
07:45:30 <elliott> fizzie: And this is composition instead, so ha
07:45:34 <elliott> C: More OO than C++
07:51:49 <fizzie> Okay, the "common initial sequence" rule in C99 in fact does mention "the union object". And even if the wording is a bit unclear (it has some fluff about "common initial part of any of them anywhere that a declaration of the completed type of the union is visible"), the intent is clearly just to allow the usual union event { struct { int type; } anyevent; struct { int type; int blurb; } blarbevent; ... }; ... switch(u.anyevent.type) { case BLARB: frob(
07:51:49 <fizzie> u.blarbevent.blurb); } sort of thing.
07:53:26 <elliott> Right.
07:56:05 <fizzie> I suppose some people have just then reasoned from that that since the compiler can't layout 'struct blarbevent' differently within the union object than it does elsewhere, it's still legal for any 'struct blarbevent' to access 'type' via a struct anyevent * as long as the union declaration exists somewhere.
07:56:14 <fizzie> But that's called LOGIC, and there's no place for THAT in C.
07:56:39 <elliott> fizzie: It can't?
07:56:44 <elliott> Why can't it lay it out specially there.
07:58:10 <fizzie> Because void foo(struct blarbevent *p) { ... } can't know whether it should use the special union layout or not, for the calls in struct blarbevent justblarb; union event eww; foo(&justblarb); foo(&eww.blarbevent);
07:58:21 <pikhq> Because there's two conceptions of what "C" is: what ISO C permits, and what you can get away with on common compilers.
07:58:26 <elliott> fizzie: It could pass a flag! But okay :P
07:59:55 <fizzie> Also obviously on non-DS9K the initial sequence rule works everywhere. But I guess it's generally speaking better if you just cast to the first member, since that's kosher.
08:00:04 <pikhq> I'm of the opinion that the ISO C spec is written by madmen, incidentally.
08:02:49 <fizzie> Also weirdly, the ISO webstore was made up to look like C1x was out already, even though from what I've managed to gather it's not, at least the WG14 page doesn't say anything in the 'news' section, nor the wikipedia article.
08:03:18 <fizzie> It's just that http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853 "ISO/IEC 9899:2011 .. Stage: 60.60 (2011-12-08) .. 60.60: International Standard published"
08:03:25 <fizzie> I guess it might be out?
08:03:31 <fizzie> 2011-12-08 is kinda recent.
08:03:59 <elliott> fizzie: Weird.
08:04:09 <elliott> fizzie: It's not been on proggit or anything.
08:04:20 <elliott> (The DISPENSERS OF SUPREME TRUTH.)
08:06:05 <fizzie> Yes, or ~anywhere else that I could find, which is what is confusing me.
08:07:53 <elliott> fizzie: Maybe they just finalised it but haven't actually super-duper-officially ratified it yet, and it's /published/ but not finalised?
08:08:05 <elliott> i.e. They're publishing it in preparation for saying "it's finalised, everyone buy it now!".
08:10:19 <fizzie> I suppose it might be something like that, though the stage codes don't go any further than 60.60 (except for periodical-review and withdrawal paths). And it passed some sort of a national-body "final review" in October. But I guess they'd want it available before and not after the official "okay, here it is" announcement.
08:11:57 <elliott> fizzie: Well, I'm not saying it's anything "official", I'm just saying that getting things into the system, division of work, etc. etc. means that their online store could perfectly well think it's Done(tm) before they actually ratify it.
08:17:04 <fizzie> All in all, it's also an indicator that it's probably going to be out soon. Maybe we'll even get a C11 instead of a C12, depending on how they date these things.
08:17:13 <fizzie> "ACTION
08:17:14 <fizzie>
08:17:14 <fizzie> Convener
08:17:14 <fizzie> forward
08:17:14 <fizzie> the
08:17:14 <fizzie> WP
08:17:16 <fizzie> as
08:17:18 <fizzie> revised
08:17:20 <fizzie> in
08:17:22 -!- fizzie has left ("Leaving").
08:17:36 <fizziew> Best paste ever.
08:17:43 <fizziew> Every word on one line.
08:18:08 <elliott> :D
08:18:10 <elliott> fizziew: Haven't you heard of /flushq, NOOB???
08:18:26 <fizziew> Thank you; I was just about to ask about that.
08:18:32 -!- fizzie has joined.
08:18:38 <elliott> :D
08:20:46 -!- zzo38 has quit (Remote host closed the connection).
08:20:48 <fizzie> Anyway, "DONE: ISO/IEC DIS 9899 was submitted to ITTF, and approved with no comments. The DIS will be forwarded to ITTF for final publication per ISO/IEC rules." -- from the WG14 Dec 7th meeting minutes. So I suppose it's coming.
08:21:31 <elliott> No comments?
08:21:33 <elliott> How boring.
08:21:56 <fizzie> Everyone wants a C11 and not a C12, mayhaps.
08:22:12 <elliott> So what's the standard amoutn of time you have to wait before complaining that your bug is being ignored?
08:22:22 <elliott> I commented 5 days ago and the guy went silent. :(
08:22:31 <fizzie> The silence of shame.
08:25:01 <fizzie> I submitted a libpurple patch two months ago, and someone promptly actioned on the item by setting the milestone of the trac ticket to "Patches Needing Review" the very next day. (After that, nothing has happened, but I guess it still counts as a response.)
08:27:58 <elliott> fizzie: They're still trying to figure out how to apply it with Monotone.
09:10:30 -!- Jafet has joined.
09:16:11 -!- Jafet1 has joined.
09:18:39 -!- Jafet has quit (Ping timeout: 252 seconds).
09:20:17 -!- Jafet1 has changed nick to Jafet.
09:20:24 <Jafet> I'm still Jafet.
09:20:40 <elliott> Jafet: I'm not.
09:20:58 <Jafet> That's a shame. The world needs more Jafets.
09:21:58 * elliott becomes Jafet.
09:34:19 <elliott> fizzie: And just to check: *(struct foo *)ptr_to_bar = foostruct; is OK, right?
09:34:26 <elliott> Er, hmm, it's actually
09:34:32 <elliott> *(*struct foo**)ptr_to_bar = ptr_to_foo;
09:34:34 <elliott> Argh
09:34:36 <elliott> *(struct foo**)ptr_to_bar = ptr_to_foo;
09:34:38 <elliott> where bar is like
09:34:45 <elliott> struct bar { struct foo *etc; ... }
09:39:51 <fizzie> I... think there was something about all structure pointers having to have the same size and representation. But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo;
09:42:43 <fizzie> (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.)
09:42:53 -!- Vorpal has joined.
09:46:03 <fizzie> Incidentally, earlier when you had "struct bar { struct foo foo; ... }", even though "struct bar *pb; ... struct foo *pf = (struct foo *)pb;" is legal, it might be slightly more self-documenting to just "struct foo *pf = &pb->foo;" instead. It'd also have the "doesn't need to be first member benefit", except that it doesn't if you're then later casting that struct foo * back to the struct bar *.
09:49:45 <elliott> fizzie: I can't do that, though, because there's no one "struct bar".
09:49:49 <elliott> It's ~generic~. :p
09:49:56 -!- Vorpal_ has joined.
09:50:00 -!- Vorpal has quit (Ping timeout: 268 seconds).
09:51:33 <elliott> "But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo;:
09:51:45 <elliott> <fizzie> (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.)
09:51:53 <elliott> fizzie: Um, I think you've misread what I asked./
09:52:02 <elliott> struct quux { struct argh *etc; ... more members ... }
09:52:08 <elliott> I have a struct quux *eh.
09:52:14 <elliott> And a struct argh qqq.
09:52:15 <elliott> erm
09:52:17 <elliott> And a struct argh *qqq.
09:52:19 <elliott> I want to do
09:52:29 <elliott> *(struct argh **)eh = qqq;
09:52:31 <elliott> Is that allowed?
09:53:17 <fizzie> I don't think that makes any sense. *(struct argh **)&eh = qqq; might.
09:53:56 <fizzie> But it's not really any different that eh = (struct quux *)qqq; except it's a "reinterpret the pointer" thing instead of a "cast the pointer" thing.
09:54:21 <elliott> fizzie: Uh, what?
09:54:39 <fizzie> Ohhh, there's a *pointer* at the start.
09:54:42 <fizzie> Not a member.
09:54:51 <elliott> fizzie: I'm just asking whether I can assign to the first member of a struct (which is a pointer) by casting it to the type pointer-to-[member].
09:55:11 <fizzie> Right, right, right; I kept reading that as struct quux { struct argh etc; ... more members ... } instead.
09:56:16 <fizzie> Yes, given struct quux { struct argh *etc; ... }, you can cast a struct quux * into a struct argh **; it's still a pointer to the first member.
09:56:45 <fizzie> Though with just this little context it's not entirely clear why not just eh->etc = qqq then.
09:56:59 <elliott> <elliott> fizzie: I can't do that, though, because there's no one "struct bar".
09:56:59 <elliott> <elliott> It's ~generic~. :p
09:57:13 <elliott> It's actually a void *eh, that just points to a struct with a (struct argh *)-typed first member.
09:57:20 <elliott> Any struct, rather.
10:10:20 <fizzie> Hrm. At least it will work. I'm trying to figure out if DS9K can make it not work, due to involving a void * in there. The standard's wording for the conversion rule is: "A pointer to a structure object, suitably converted, points to its initial member, and vice versa." So it's mostly about whether "struct foo { anytype x; ... }; struct foo f; void *pg = &g; anytype *x = pg;" is "suitably converted".
10:11:28 <fizzie> Or whether you actually only legally can "struct foo f; anytype *x = (anytype *)&f;" where the compiler knows it's converting from the structure-pointer to the first-member pointer.
10:11:57 <elliott> fizzie: Ugh.
10:12:17 <fizzie> There can't be any padding at a beginning of a struct, so it's somewhat hard to figure out a way to make it not work. Except maybe by having a really weird 'void *'.
10:12:20 <elliott> Aaaa I am mere hours into my Stack Overflow experience and already have 48 reputation and an accepted answer.
10:12:29 <elliott> Must... escape...
10:13:15 <fizzie> E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong.
10:13:36 <elliott> fizzie: Surely that's not legal.
10:14:29 <fizzie> Well, it fulfills the main rule for void *, which is "A pointer to any object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer."
10:15:35 <elliott> fizzie: :(
10:17:44 -!- hagb4rd has joined.
10:17:54 -!- Ngevd has joined.
10:18:34 <fizzie> If all structure pointers are alike, you could "struct foo { anytype x; ... }; struct foo f; void *pg = &f; anytype *px = (anytype *)(struct { anytype x; }*)pg;", but that's the most ridiculous thing ever.
10:19:25 <elliott> fizzie: Weeeell, yes, but surely there's some sort of in-between condition you can rely on?
10:20:08 <elliott> <fizzie> E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong.
10:20:17 <elliott> fizzie: I should probably note that both pointers involved here are to structs.
10:21:17 <fizzie> Well, no, if the first member is a pointer to struct, then pointer-to-the-first-member is a pointer to pointer to struct, which might have a completely different representation than pointer to struct.
10:21:53 <elliott> Fair enough.
10:22:05 <elliott> I'm changing it to be just an included struct so that everything will work out fine. :p
10:22:10 <elliott> Also less indirection overhead!!
10:25:37 <fizzie> I'm still not entirely sure a messed-up void * like that is legal; there's one rule that says "pointer to an object type may be converted to a pointer to a different object type [, and if resulting pointer is "correctly aligned" for the referenced type,] when converted back again, the result shall compare equal to the original pointer."
10:26:03 <fizzie> And void * is a pointer to an (incomplete) object type, and must have no alignment restrictions.
10:26:10 <elliott> fizzie: Weeell, it works. :p
10:26:33 <elliott> I'll care more about fixing it if someone comes up with a way to avoid it, or machines that break it actually start existing.
10:26:52 <elliott> (struct foo *) -> (void *) -> (firstmember *) is notw hat I would call a terribly controversial conversion.
10:28:37 <fizzie> Well, no. And anyway (struct foo *) -> (char *) -> (firstmember *) is required to work, so it'd take a really perverse (if even legal) implementation to make the version with void * not work. (There may not be padding at start of a structure, and converted char * always points "to the lowest addressed byte of the object".)
10:29:04 <fizzie> I don't think you should turn it into a char * though. :p
10:29:23 <elliott> *not what
10:29:30 <elliott> fizzie: I should just remove all the data structure and use (char *) instead.
10:29:35 <elliott> It'll be like Tcl, but it's C, so it'll be FAST.
10:30:00 <fizzie> You could then implement "types" with some sort of macros that operate on char *s.
10:31:09 <fizzie> #define PLAYER_Y(p) (((p)[2] << 8) | (p)[5])
10:31:27 <fizzie> (That was supposed to be bytes 2 and 3, but it's even better like that.)
10:33:18 <hagb4rd> mozart indeed sounds like bubblegum.. dunno one of my favourite comp. is musorgsky: powerful. epic drama spending some creeps from time to time.. |ve heard this one before (one of few nice classic themes used as bgmusic in froniert elite II :P i love it --> http://www.youtube.com/watch?v=eILjzkiTSbE&fmt=18 ..gregor knowing that you|re into classic..may i ask which is your favourite one, if there is?
10:33:48 <elliott> fizzie: Macros???
10:33:53 <elliott> fizzie: Uh, THOSE AREN'T STRINGS.
10:34:05 <elliott> char *PLAYER_Y = "(p) -> (((p)[2] << 8) | (p)[5])";
10:35:10 <hagb4rd> gregor: chopin_
10:37:03 <elliott> hagb4rd: Pachelbel is Gregor's favourite composer.
10:37:35 <elliott> RIGHT GREGOR?
10:40:18 <hagb4rd> elliott:ok thx .. but i|ve made plans to somehow start a conversation with gregor :P all my plans lyin on the ground now
10:40:32 <elliott> hagb4rd: But I was lying.
10:40:34 <elliott> You still can!!!
10:40:39 <elliott> Gregor actually hates Pachelbel.
10:41:02 <hagb4rd> hehe..im joking..half joking
10:47:54 * elliott buys Yet Another Humble Bundle
11:00:07 -!- monqy has quit (Quit: hello).
11:29:52 <hagb4rd> Vindum, vindum vef darraðar, þars er vé vaða vígra manna!
11:29:52 <hagb4rd> Látum eigi líf hans farask; eigu valkyrjur vals of kosti.
11:32:22 <hagb4rd> Wind we, wind swiftly
11:32:22 <hagb4rd> Our warwinning woof.
11:32:22 <hagb4rd> sword-bearing rovers
11:32:22 <hagb4rd> To banners rush on,
11:32:22 <hagb4rd> Mind, maidens, we spare not
11:32:22 <hagb4rd> One life in the fray!
11:32:22 <hagb4rd> We corse-choosing sisters
11:34:33 <hagb4rd> its from the islandic njal saga.. (used also by wagner in his ride of the valkz
11:36:15 <hagb4rd> which i definitivly have not read yet.. do you know it? http://omacl.org/Njal/1part.html
11:39:46 <hagb4rd> ynuff spam for today..the resonance is outragious <>
11:45:46 -!- GreaseMonkey has quit (Quit: The Other Game).
12:07:13 <hagb4rd> http://www.youtube.com/watch?v=LudzD5EAOlo&fmt=18 //cu!
12:07:16 -!- hagb4rd has left.
12:09:14 -!- Taneb has joined.
12:09:20 <elliott> hagb4rd: Brabenite!
12:13:00 -!- Ngevd has quit (Ping timeout: 276 seconds).
13:43:33 <Taneb> I like today's Gunnerkrigg Court
14:07:02 <Sgeo> Completely random, but elliott, have you seen Puella Magi Madoka Magica?
14:07:25 <Sgeo> I vaguely wonder if I asked this before
14:08:40 <elliott> No.
14:09:18 <Sgeo> Unrelatedly, tumblr update
14:10:38 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:40:35 -!- boily has joined.
15:10:59 -!- Klisz has joined.
15:21:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:24:38 -!- Klisz has quit (Read error: Operation timed out).
15:30:09 -!- Klisz has joined.
15:43:56 -!- pikhq_ has joined.
15:44:38 -!- copumpkin has joined.
15:44:54 -!- pikhq has quit (Ping timeout: 276 seconds).
15:52:23 -!- Phantom_Hoover has joined.
15:53:19 <Phantom_Hoover> Oh dear lambdabot/
15:53:19 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
15:53:30 -!- pumpkin has joined.
15:53:37 <elliott> lambdabot is frend
15:55:18 -!- copumpkin has quit (Ping timeout: 240 seconds).
15:56:09 <Phantom_Hoover> Friendship bot.
15:56:56 <elliott> yes.
15:57:13 <Phantom_Hoover> news-ham :(
15:57:42 <Taneb> Oh my god what has happened?
15:57:55 <Phantom_Hoover> Poor news-ham
16:22:27 -!- pumpkin has changed nick to copumpkin.
16:45:31 -!- kmc has quit (Quit: Leaving).
16:51:18 -!- DCliche has joined.
16:51:37 -!- Klisz has quit (Ping timeout: 248 seconds).
16:53:41 <Gregor> hagb4rd: You're not here now.
16:54:00 <Gregor> @tell hagb4rd My favorite composer is anyone who's asleep at 5:30AM in my timezone.
16:54:00 <lambdabot> Consider it noted.
16:54:45 <elliott> Gregor: So... Pachelbel?
16:56:16 <Gregor> @tell elliott DAAA DADADAAA DADA DADADADADADADADA DAAA DADADAAA DADA DADADADADADADADA
16:56:16 <lambdabot> Consider it noted.
16:56:34 <elliott> Katamari Damacyyyyyy
16:56:34 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
16:56:59 <Gregor> ... damn, I can't remember the Katamari Damacy song well enough to know if it matches that :P
16:57:03 <elliott> My running gag is that I pretend every piece of word-music is Katamari Damacy :P
16:57:13 <Gregor> Ah :P
16:57:16 <elliott> Thankfully word-music is so fucking hopelessly vague that it can never be disproven.
16:57:35 <Gregor> Yup
16:58:25 -!- zzo38 has joined.
16:58:45 <elliott> Alternatively,
16:58:54 <elliott> Pachelbel: Katamari Damacy's composer?
16:58:59 <elliott> Sources say YES.
17:00:44 <elliott> Gregor: Aww man, we missed Pachelbel's 358th birthday
17:09:34 <Gregor> NOOOOOO
17:11:35 <elliott> Gregor: (He'll only stop having birthdays when people stop liking his music.)
17:11:43 <elliott> (Now there's a challenge for you!!!)
17:30:21 <Phantom_Hoover> Gregor, have you watched the Pachalbel rant.
17:30:32 <Gregor> Phantom_Hoover: ... ... ... probably?
17:30:46 <elliott> Phantom_Hoover: It's "Pachelbel" you uncultured fuck.
17:31:27 -!- Taneb has quit (Quit: Goodbye).
17:42:03 <Gregor> Also, to be fair, I don't hate Pachelbel, I hate Pachelbel's Canon. But since that's the only piece people know him by, WHOOPS.
17:45:32 <elliott> Gregor: In the future people will complain about that goddamn Gregor's op. 47 that's in every fucking song.
17:45:37 <elliott> *Richards'
17:45:44 <elliott> Actually we should use first names.
17:45:55 <Gregor> 8-D
17:46:01 <elliott> We could just talk about classical composer Johann and lose no precision of value.
17:46:12 <elliott> (That is, no precision which is to be valued.)
17:48:34 <elliott> Why does -Wall -Wextra miss a ton of shit :(
17:48:38 <Gregor> Hm, there's J.S. Bach and a few other J.x. Bachs for some value of 'x' name Johann, and there's Johann Strauss Jr (HACK), and ... I can't off the top of my head think of any other Johanns. Johanneses, sure.
17:48:47 <Gregor> *named Johann
17:48:53 <elliott> Gregor: Pachelbel
17:48:58 <elliott> Pachelbel = Bach!
17:49:04 <elliott> Pachelbach.
17:49:09 <Gregor> PACHELBEL DOES NOT COUNT
17:53:34 <Phantom_Hoover> Gregor, remind me why you hate Pachelbel's Canon, I recall it being entertaining.
17:54:25 <coppro> http://www.youtube.com/watch?v=JdxkVQy7QLM
17:55:10 <Gregor> Phantom_Hoover: Because I used to play the viola.
17:57:53 <Phantom_Hoover> Gregor, hahahaha
17:57:58 <Phantom_Hoover> (The joke is the viola.)
17:58:14 <Phantom_Hoover> I, um
17:58:26 <Phantom_Hoover> Why is the Pachelbel rant playing at 4x.
17:58:29 <elliott> NOBODY TOLD ME STACK OVERFLOW WAS THIS ADDICTIVE
17:58:37 <elliott> Phantom_Hoover: Wait that thing's sped up?
17:58:40 <Gregor> elliott, Phantom_Hoover: You guys, I can't have two simultaneous different conversations on two channels >_<
17:58:44 <Phantom_Hoover> No?
17:58:55 <elliott> Phantom_Hoover: Oh, you meant the player is literally speeding it up.
17:58:58 <elliott> Gregor: Um, so you're inferior?
17:59:08 <Phantom_Hoover> elliott, what how
17:59:12 <elliott> Gregor: We could interleave them in this channel if that would be more convenient for you.
17:59:15 <elliott> Phantom_Hoover: WHAT ARE YOU TALKING ABOUT
17:59:16 <Phantom_Hoover> make it, stop
17:59:17 <elliott> <Phantom_Hoover> Why is the Pachelbel rant playing at 4x.
17:59:29 <Gregor> elliott: PLEASE DO
17:59:31 <Phantom_Hoover> I don't know, but when I watch it it's sped up a lot.
17:59:32 <elliott> HOW DO I HAVE 193 REPUTATION ALREADY!! WHY!! I AM NOT REPUTABLE!
17:59:49 <Phantom_Hoover> And it's _just_ that video
18:00:32 <Phantom_Hoover> And _just_ on that page.
18:00:33 <elliott> AAAAAAAAAAAH NO 208 REPUTATION WHY
18:00:38 <elliott> Phantom_Hoover: Maybe the video is just fast, dude.
18:00:42 <Phantom_Hoover> No, it's not.
18:00:50 <Phantom_Hoover> If I watch it through paravonian's channel it's fine.
18:02:39 <kallisti> elliott: yes
18:02:45 <elliott> kallisti: waht
18:03:53 <kallisti> auuuuuum
18:26:08 -!- TaneblWii has joined.
18:26:18 <elliott> taneblwii
18:26:27 <kallisti> Phantom_Hoover: bieberpunk is way better than clockpunk, btw.
18:26:48 <Phantom_Hoover> What about rockpunk?
18:26:55 <Phantom_Hoover> (This is set on Cardassia, obviously.)
18:27:19 <TaneblWii> Hello
18:27:35 <elliott> Phantom_Hoover: Quick! What's faster than a ninja?
18:27:46 <Phantom_Hoover> A ninja on speed!
18:27:55 <elliott> Phantom_Hoover: Quick! What's faster than a ninja that isn't a ninja?
18:28:11 <Phantom_Hoover> An ex-ninja on speed!
18:28:42 <elliott> Phantom_Hoover: Quick! What's faster than a ninja that never was a ninja?
18:29:09 <Phantom_Hoover> Superman.
18:29:44 <TaneblWii> This is awful; I will play table tennis instead
18:29:48 <Gregor> Welp, I've just seen the word "bieberpunk"
18:29:50 <Gregor> Time to kill myself.
18:30:09 <elliott> I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk.
18:30:17 <kallisti> elliott: because your premise is a logical contradiction it means that all responses are true. Therefore: I fucked your mom, yo.
18:30:20 * kallisti logic
18:30:24 <elliott> Phantom_Hoover:
18:30:33 <elliott> I'd go with photon but I'd have to abbreviate it as ph and I hate you.
18:30:41 <Phantom_Hoover> Yes do that.
18:30:50 <Phantom_Hoover> (I'm way faster than a ninja anyway.)
18:30:53 <elliott> Nooo "ph" sucks to type on QWERTY.
18:31:01 <elliott> Maybe I'll call it hoover.
18:31:18 <Phantom_Hoover> Yes.
18:31:22 <Phantom_Hoover> What are you even naming.
18:31:27 <elliott> God.
18:31:41 <kallisti> elliott: you know what's cool about my awesome typing style?
18:31:42 <Gregor> Love of Jesus Photons
18:31:45 <kallisti> ph is not awkward to type at all
18:31:55 <Phantom_Hoover> Phantom_Hoover is truly the name of God.
18:31:58 <Gregor> They travel through space, spreading the Love of Jesus at just OVER the speed of light ('cuz fuck science, that's why)
18:34:23 -!- TaneblWii has quit (Ping timeout: 258 seconds).
18:35:58 <kallisti> > 2 ++ 2
18:35:59 <lambdabot> Ambiguous type variable `a' in the constraints:
18:35:59 <lambdabot> `Data.Monoid.Monoid a'
18:36:00 <lambdabot> ...
18:36:02 <kallisti> WHAT I AM SHOCK
18:36:32 <zzo38> Did they make ++ to mappend?
18:36:42 <elliott> Cale did.
18:37:09 <kallisti> > Product 2 ++ Product 3
18:37:10 <lambdabot> Product {getProduct = 6}
18:37:26 <kallisti> most useful instance in Haskell.
18:37:32 <elliott> :t (endo succ ++ endo pred) (++)
18:37:33 <lambdabot> Not in scope: `endo'
18:37:33 <lambdabot> Not in scope: `endo'
18:37:37 <elliott> :t (Endo succ ++ Endo pred) (++)
18:37:38 <lambdabot> Couldn't match expected type `t1 -> t'
18:37:38 <lambdabot> against inferred type `Endo a'
18:37:38 <lambdabot> In the expression: (Endo succ ++ Endo pred) (++)
18:37:44 <elliott> :t runEndo (Endo succ ++ Endo pred) (++)
18:37:44 <lambdabot> Not in scope: `runEndo'
18:37:46 <elliott> :t unEndo (Endo succ ++ Endo pred) (++)
18:37:46 <lambdabot> Not in scope: `unEndo'
18:37:50 <elliott> :t appEndo (Endo succ ++ Endo pred) (++)
18:37:51 <lambdabot> forall m. (Enum (m -> m -> m), Monoid m) => m -> m -> m
18:38:04 <elliott> :t appEndo (Endo (+) ++ Endo (-))
18:38:04 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
18:38:05 <lambdabot> Probable cause: `+' is applied to too few arguments
18:38:05 <lambdabot> In the first argument of `Endo', namely `(+)'
18:38:07 <elliott> :-(
18:38:13 * kallisti had a dream that he went to an awesome party and then his car got towed in the morning and so he was homeless in a parking deck with homeless people for a day.
18:38:18 <elliott> :t appEndo (Endo (1+) ++ Endo (1-))
18:38:19 <lambdabot> forall t. (Num t) => t -> t
18:38:28 <elliott> :t appEndo (Endo (+1) ++ Endo (subtract 1)) succ
18:38:29 <lambdabot> forall a. (Num a, Enum a) => a -> a
18:38:31 <elliott> The best.
18:38:59 <kallisti> helo what does endod o
18:39:26 <zzo38> I think it makes the monoid of endomorphisms?
18:40:07 <kallisti> :t Endo
18:40:07 <lambdabot> forall a. (a -> a) -> Endo a
18:40:15 <kallisti> oh
18:40:17 <kallisti> okay.
18:40:50 <kallisti> > Endo (+)
18:40:51 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
18:41:02 <kallisti> > Endo (+1)
18:41:03 <lambdabot> No instance for (GHC.Show.Show (Data.Monoid.Endo a))
18:41:03 <lambdabot> arising from a use ...
18:41:14 <kallisti> @hoogle Endo a -> a
18:41:14 <lambdabot> Data.Monoid appEndo :: Endo a -> a -> a
18:41:15 <lambdabot> Prelude id :: a -> a
18:41:15 <lambdabot> Data.Function id :: a -> a
18:41:19 <kallisti> ah okay.
18:43:14 <kallisti> so ++ is like . then?
18:43:24 <kallisti> but with restricted type
18:44:19 <elliott> What's a fast hash for comparing files
18:44:26 <elliott> I guess the answer is probably just SHA1
18:45:31 <kallisti> elliott: i-number :P
18:45:41 <elliott> What
18:45:45 <kallisti> inode number
18:46:06 <elliott> Hmm
18:46:11 <elliott> That won't work
18:46:14 <elliott> inodes aren't immutable
18:46:14 <kallisti> (that wouldn't -- yes)
18:46:15 -!- GreaseMonkey has joined.
18:46:15 -!- GreaseMonkey has quit (Changing host).
18:46:15 -!- GreaseMonkey has joined.
18:46:22 <kallisti> elliott: HA HA GOOD ONE RIGHT?
18:46:26 <elliott> Yes, hilarious.
18:46:27 -!- kmc has joined.
18:47:39 <kallisti> elliott: I hate people on IRC with those scripts that tell everyone every single detail about the song they're listening to
18:47:50 <kallisti> including like... the song progress and bitrate.
18:47:57 <kallisti> as though anyone cared.
18:48:13 <Gregor> I hate people on IRC with those scripts that tell everyone /any/ detail about the song they're listening to.
18:48:58 <kallisti> NP: Shakira -- Hips Don't Lie
18:49:08 * elliott is listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps]
18:49:13 -!- calamari has joined.
18:49:46 * elliott is still listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps]
18:50:52 * kallisti googled for: Pachelbel Canon D Minor by Toucans
18:51:08 <calamari> I'm putting together the source tree for a new project (git) and I'm wondering if you guys know of some projects with a good layout that I could base mine on?
18:51:24 <kallisti> linux kernel.
18:51:32 <kallisti> >:)
18:51:44 <elliott> calamari: If you don't want to put everything in the root, then src/ and include/ directories?
18:51:48 <elliott> It really depends on the language.
18:52:01 <calamari> c
18:52:35 * elliott usually doesn't separate header files and C files, since they're both source files.
18:52:53 <zzo38> Listening to: C:\MZX\HONOR1\ZIN.MOD "zine 8 music" 02:35/10:42 MOD (Protracker), 4 channels; 119956 bytes; Reverb; Surround; Graphics Equalizer; Loop Song; High quality resampling
18:52:59 <elliott> mcmap just has everything in the root directory which... works.
18:53:15 <zzo38> That is how you write a large number of details.
18:53:16 <elliott> zzo38: Thank god, now I know it's 119956 bytes!
18:53:27 <elliott> My quality of life is enhanced immeasurably.
18:53:30 <calamari> alright thanks
18:53:53 <kallisti> elliott: words has everything in one file. best layout
18:53:59 <kallisti> also my IRC bot currently does the same.
18:54:16 <Deewiant> "zine8.mod" in the mod archive
18:54:20 <elliott> kallisti: mcmap would be a very long 4442-line C file.
18:54:35 <kallisti> yeah rolebot is only 490-ish lines.
18:54:44 * Gregor is listening to: The sound of air vents and graduate students breathing.
18:54:45 <elliott> kallisti: Also some of that is generated code.
18:55:06 <kallisti> `run wc -l bin/words
18:55:13 <HackEgo> wc: bin/words: No such file or directory
18:55:24 <kallisti> ah
18:55:26 <kallisti> always forget
18:55:28 <kallisti> `run wc -l bin/word
18:55:30 <HackEgo> 19353 bin/word
18:55:40 <kallisti> that's pretty much all generated code. :P
18:56:23 <Gregor> `url bin/word
18:56:25 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/word
18:56:32 <kallisti> if you measure productivity in linecount I am an absolute god. :P
18:56:38 <kallisti> linecount / hour
18:56:39 <Gregor> `word
18:56:42 <HackEgo> botumbindins
18:56:46 <Gregor> Seems legit.
18:57:25 <kallisti> `word 10
18:57:27 <HackEgo> lum sucte cats das croclacroceess dae athcris fughtni bara zie
18:57:34 <kallisti> cats...
18:57:47 <Gregor> Cats das croclacroceess!
18:59:04 <kallisti> the best word to date is schth
19:00:24 <kallisti> it's an onomatopoeia
19:00:37 <kallisti> for the sound schth.
19:01:05 <Gregor> I seem to recall elliott complaining about a thousand-or-so line C function I had.
19:01:18 <Gregor> `log elliott.*1000.*c.*function
19:01:30 <HackEgo> 2011-01-20.txt:19:01:26: <elliott> any language but my own";) and used the CAL-1000 to develop the more robust CAL-1001, entirely in English. The CAL-1001, in turn, was used to produce the more capable CAL-1002, again in English, and so forth, all the way up to the fully functional CAL-3037, which we released as a commercial product. It's successor, the CAL-3040, is currently in testing.]]]
19:01:37 <Gregor> Piff
19:01:40 <Gregor> `pastelogs elliott.*1000.*c.*function
19:01:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12772
19:02:02 <Gregor> Oh well
19:02:12 <Gregor> Oh, he was probably ehird then anyway ...
19:02:36 <kallisti> `log .*1000 lines
19:02:44 <elliott> Gregor: Not if it was cfythe.
19:02:46 <kallisti> the .* is necessary
19:02:47 <HackEgo> 2008-03-17.txt:20:24:09: <AnMaster> ais523, so your program must be shorter than 1000 lines?
19:03:15 * kallisti gives up.
19:03:18 * kallisti quitter
19:03:21 <Gregor> elliott: cfythe has no such functions, it was Plof 3.
19:04:11 <elliott> Gregor: Fair enough :P
19:06:15 -!- kallisti has changed nick to BigIndian.
19:06:33 -!- BigIndian has changed nick to xxBigIndianxx.
19:07:13 * xxBigIndianxx is experimenting with new names
19:07:22 -!- xxBigIndianxx has changed nick to kallisti.
19:07:25 <kallisti> not hardcore enough.
19:08:01 <elliott> 2011-12-14 19:07:49 (841 MB/s)
19:08:02 <elliott> Yessss
19:08:19 <kallisti> ..
19:08:23 -!- monqy has joined.
19:08:29 <kallisti> monqy: bye
19:09:14 <kallisti> Okay! See you later!
19:09:41 <Gregor> elliott: ...?
19:10:51 <monqy> hi
19:11:07 <kallisti> monqy: NOOOO
19:11:15 <kallisti> you ruined my reversed conversation
19:11:18 <Vorpal_> <Gregor> I seem to recall elliott complaining about a thousand-or-so line C function I had. <-- generated or hand written?
19:11:28 <monqy> kallisti: hi
19:11:48 <quintopia> kallisti: i'm on a boat
19:11:50 <Gregor> Vorpal_: Errr, somewhere in between? Very macro-y, but hand-written.
19:12:01 -!- Vorpal_ has changed nick to Vorpal.
19:12:17 <Vorpal> Gregor, hm, was that 1000 lines before or after cpp then?
19:12:24 <Gregor> Before.
19:12:34 <Vorpal> hm, sounds a bit on the large side yes.
19:12:41 <Vorpal> Gregor, what did it do?
19:12:52 <Gregor> It was the main interpreter loop.
19:12:54 <kallisti> quintopia: and, it's going fast and, you've got a nautical themed Pashmina Afghan?
19:13:04 <Vorpal> Gregor, well, that is excusable then.
19:13:14 <Gregor> Of course it is, elliott was just being a jerk :P
19:14:37 -!- kmc has quit (Quit: Leaving).
19:15:03 <quintopia> kallisti: ah, not yet. later.
19:15:44 <Gregor> Hahah, "1000 or so"
19:15:49 <Gregor> Make that 2,151
19:16:12 <Vorpal> heh
19:16:49 <kallisti> wow I'm kind of amazed at how much code is in Bot::BasicBot
19:17:02 <kallisti> it'll take a while to remove that dependency I think.
19:17:28 <Vorpal> Gregor, I would definitely consider splitting the case statements/blocks-after-label/whatever out into separate files then and generating a file with lots of #includes there
19:17:38 <Gregor> Vorpal: That's what I did.
19:17:54 <Vorpal> ah, good
19:18:09 <Gregor> August 2009, "Split up the obscenely-long interpPSL function into separate (#include'd) implementation files.", woooh :P
19:18:14 <Gregor> Then, later, I abandoned that codebase!
19:18:16 <Gregor> Wooooh!
19:22:42 <Vorpal> Gregor, why?
19:23:00 <kallisti> hmmm
19:23:11 <kallisti> I /could/ talk to the current maintainer and see if they would accept some patches.
19:23:19 <pikhq_> Vorpal: Gregor does rewrites periodically.
19:23:21 <pikhq_> :)
19:23:27 <kallisti> instead of basically copypasting most of the code and rewriting parts of it.
19:25:42 <Vorpal> heh
19:26:45 <kallisti> huh, so ACTION requires ctcp?
19:26:52 <kallisti> that's what it looks like, based on this code.
19:27:55 <Vorpal> kallisti, /me (ACTION) is a ctcp
19:27:58 <Vorpal> didn't you know?
19:28:22 <kallisti> not at all.
19:28:27 <elliott> "In C++0x the term "sequence point" is being replaced by the term "an operation A being sequenced before an operation B, or being un-sequenced""
19:28:30 * kallisti thinks that's stupid. :P
19:28:40 <fizzie> ^bf +.,[.,]+.!ACTION thinks that's what ACTION is.
19:28:40 * fungot thinks that's what ACTION is.
19:28:52 <elliott> kallisti: yeah, [1 byte]ACTION ... [1 byte] is such a complex format
19:28:55 <elliott> down with ctcp requiremenst
19:28:59 <elliott> requirements
19:29:02 <Vorpal> fizzie, what? Seriously?
19:29:16 <fizzie> Vorpal: Seriously what?
19:29:27 <Vorpal> fizzie, the sequence point thingy
19:29:28 <kallisti> elliott: well, no, it's not complex. but now it makes me do extra work within this high-level library. :P
19:29:36 <fizzie> Vorpal: That wasn't me.
19:29:43 <elliott> fizzie: Don't let ... whatever the P staffer guy was ... see you do that.
19:29:45 <Vorpal> fizzie, well, is it true?
19:30:01 <fizzie> I think I recall something like that being mentioned.
19:30:04 <elliott> I like how I've caused Vorpal to bother fizzie for no reason.
19:30:15 <Vorpal> elliott, I misread somehow
19:30:23 <Vorpal> elliott, I blame that I'm on a phone
19:30:50 <elliott> And it's going fast and you've got a telephony-themed pashmina afghan?
19:30:51 <Vorpal> elliott, so is it true?
19:30:51 <kallisti> sub pocoirc { my $self = shift; return $self->{IRCOBJ};
19:30:56 <kallisti> }
19:30:58 <kallisti> what the hell
19:30:59 <kallisti> is this.
19:31:01 <elliott> Vorpal: http://blogs.msdn.com/b/vcblog/archive/2007/06/04/update-on-the-c-0x-language-standard.aspx
19:31:20 <monqy> kallisti: pocoirc
19:31:27 <kallisti> Takes no arguments. Returns the underlying
19:31:27 <kallisti> L<POE::Component::IRC::State|POE::Component::IRC::State> object used by
19:31:28 <kallisti> Bot::BasicBot.
19:31:29 <elliott> "One unintentional side-effect of this feature is that it makes the following well formed:
19:31:29 <elliott>
19:31:30 <elliott> class<typename… Types>
19:31:30 <elliott> struct X {
19:31:30 <elliott> void f(Types......);
19:31:30 <elliott> };
19:31:31 <kallisti> ah yes, of course.
19:31:32 <elliott>
19:31:34 <elliott> Yes – that is six ‘.’ in a row J."
19:31:43 <elliott> Types.....
19:31:47 <elliott> .
19:32:17 <kallisti> this POE thing seems awfully crufty.
19:32:21 <kallisti> I wonder what benefits I'm getting.
19:32:27 <Vorpal> elliott, well that is stupid. Sequence point is a perfectly sensible terminology in the context of an unsafe imperative language standard.
19:32:39 <elliott> What relevant does unsafeness have
19:33:00 <Vorpal> hm, actually it doesn't, never mind
19:34:14 <kallisti> POE is a big wad of potential waiting for your kinetic. It's a mirror reflecting your ideas in code. It's the dingdong in shamalamadingdong. It's the hoho in hohoho, and at least one Po in PoCo. It's the freak in fries. It's a floor topping and a dessert wax. It's all these things and more, even Europa, and you may attempt a landing there.
19:34:19 <kallisti> wow I'm impressed.
19:36:30 -!- Lisa_ has joined.
19:36:39 <elliott> `welcome Lisa_
19:36:41 <HackEgo> Lisa_: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:37:08 <Lisa_> hey
19:37:33 <elliott> hi
19:39:06 <Vorpal> varadic templates seem kind of useless to me, at least unless there is some way to make a for loop generate code for each one or such inside the template definition.
19:39:16 <Vorpal> well, foreach rather
19:39:57 <elliott> Vorpal: tuples
19:39:59 <elliott> for one thing
19:40:01 <Vorpal> hm the examples seem to use MI
19:40:18 <elliott> also generalised Either (i.e. tagged type-safe union)
19:40:27 <Vorpal> elliott, sure, but I'm not sure how you would add in the n members for the n types.
19:40:55 <elliott> Vorpal: simple
19:40:57 <elliott> Vorpal: recursion
19:41:02 <elliott> you have a 0-argument base-case
19:41:07 <Vorpal> sure
19:41:10 <Vorpal> hm
19:41:14 <elliott> and the 1+ argument case either inherits from the smaller case
19:41:17 <elliott> or includes it as an element
19:41:34 <elliott> unfortunately I think my fun code for this is lost
19:41:36 <Vorpal> elliott, would you access all the members in the top level when accessing from the outside still?
19:41:46 <elliott> Vorpal: well you'd wrap it with methods...
19:41:51 <Vorpal> well okay
19:41:59 <Vorpal> still this seems kind of awkward
19:42:08 <elliott> it's C++
19:42:52 <kallisti> oh wait this is object oriented.
19:42:54 <Vorpal> elliott, also they forgot that a classical C struct basically does the job of a tuple just fine
19:42:57 <kallisti> I can just override a bunch of methods.
19:43:23 <elliott> Vorpal: uh
19:43:45 <elliott> Vorpal: if you think declaring a struct for each damn function that just happens to have more than one return value is practical
19:43:47 <elliott> then you're an idiot
19:43:59 <Vorpal> elliott, sure: struct intCharTuple { int firstmember; chat secondmember; } ;)
19:44:04 <Vorpal> char*
19:44:18 <elliott> much better than tuple<int, char*>
19:44:19 <Vorpal> elliott, (of course I'm joking)
19:44:47 <Vorpal> elliott, anyway you can do an unnamed struct in C. Not sure if that works for return values though
19:44:51 <Vorpal> probably doesn't
19:45:20 <elliott> i think it does.
19:45:42 <Vorpal> how would you actually store the return value in a local variable then?
19:46:06 <Vorpal> I guess you could access one by doing foo().bar
19:46:12 <Vorpal> but if you want both bar and quux?
19:46:59 <Vorpal> elliott, anyway there is also the traditional C solution: foo(int *retval1, char *retval2)
19:47:13 <elliott> the traditional terrible solution
19:47:19 <Vorpal> well yes
19:48:11 <elliott> C would be about 0.75x better if it just had tuples
19:48:34 <elliott> i think (T,T',...) is unambiguous for more than one T in every situation a type can occur in
19:48:36 <pikhq_> *(compatible_struct_pointer*)&foo()?
19:48:37 <elliott> although casting that is a bit ugly
19:48:46 <elliott> (int, char *) foo(void);
19:48:51 <elliott> hmm wait
19:48:59 <Vorpal> pikhq_, :P
19:49:00 <elliott> that gives no obvious syntax for the literals
19:49:06 <elliott> hmm, would [foo, bar] be ambiguous as a type or literal?
19:49:34 <Gregor> <Vorpal> Gregor, why? <pikhq_> Vorpal: Gregor does rewrites periodically. // It's more like I redesign the language from scratch periodically, which requires a rewrite of the whole engine too :P
19:49:43 <Gregor> Plof 3 lasted me a long while, I'm hoping Fythe will too.
19:49:56 <Vorpal> Gregor, no plof 4?
19:49:56 <pikhq_> Well, it *would* look something like an entirely valid array index.
19:50:14 <pikhq_> But I doubt that it would be ambiguous in contexts where you're doing a type or literal.
19:50:29 <pikhq_> Vorpal: Plof 4 will be written using Fythe, hopefully.
19:50:37 <Vorpal> heh
19:50:43 <pikhq_> Fythe is just the low-ish level VM.
19:50:59 <Gregor> Plof 4 is already partially implemented (in Fythe)
19:51:00 <Vorpal> heh
19:51:02 <Gregor> But very, very partially :P
19:51:04 <Gregor> Haven't found the time.
19:51:42 <pikhq_> I seem to recall the main reason for scrapping Plof 3 was that it was hellishly slow.
19:52:08 <Vorpal> hm
19:52:27 <Vorpal> pikhq_, the language or the implementation?
19:52:30 <pikhq_> Yes.
19:52:36 <Vorpal> both? okay
19:52:51 <pikhq_> It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation.
19:53:03 <pikhq_> Also, Boehm GC.
19:53:17 <Vorpal> well, surely boehm gc could have been replaced
19:53:23 <pikhq_> Indeed.
19:53:37 <pikhq_> And Fythe now uses G^5C
19:53:43 <pikhq_> (is it ^5?)
19:54:31 <Vorpal> right
19:56:33 <Vorpal> hm, someone should make a piece of software with the version number in the middle of the name and then get it popular enough to make debian include it. I wonder how they would solve that
19:56:56 <pikhq_> Debian is not above using its own versioning scheme.
19:57:02 <elliott> Vorpal: the same way they do interacl
19:57:04 <elliott> intercal
19:57:49 <Vorpal> elliott, well, lets say that the version number made up most of the name. Like G^5C (not exactly version number, more like complete redesign, I know). You couldn't really call it just GC-5
19:58:07 <Vorpal> that would be too generic
19:58:19 <elliott> Vorpal: Debian append their own versions to packages.
19:58:20 <pikhq_> They'd probably go with GGC-5
19:58:26 <Vorpal> heh
19:58:32 <elliott> Vorpal: They'll just not have an upstream version.
19:58:35 <elliott> Or they'll reject your package.
19:58:43 <pikhq_> Also, yeah, Debian also has their own package versioning.
19:58:47 <Vorpal> oh well
19:59:02 <pikhq_> Debian handles a lot of weird policies.
19:59:13 <pikhq_> Erm, packages.
19:59:23 <Vorpal> hm I wonder how they deal with erlang. I have version R14B03 here.
20:00:09 <Vorpal> 1:14.b.3
20:00:11 <Vorpal> hm okay
20:01:32 * Gregor reappears.
20:01:43 <Gregor> <pikhq_> It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation. <--- yup
20:01:48 <Gregor> <pikhq_> And Fythe now uses G^5C <-- GGGGC
20:03:00 <Gregor> GGGGGC would be the followup to GGGGC if I need one :P
20:03:10 <Vorpal> Gregor, not enough G
20:03:17 <Vorpal> Gregor, but what does GGGGC stand for?
20:03:33 <pikhq_> Gregor's G G Garbage Collector
20:03:36 <pikhq_> :P
20:04:43 <Gregor> Gregor's Generalpurpose Generational Garbage Collector
20:07:53 <elliott> Gregor: *Great
20:09:21 <elliott> OK, I think I'm going to Actually Switch to xmonad in the coming days...
20:09:49 <Vorpal> elliott, why?
20:10:04 <elliott> Vorpal: Why "why?"?
20:10:30 <Vorpal> elliott, why xmonad?
20:11:19 <elliott> Vorpal: wmii doesn't gel with me, dwm is too inflexible, awesome involves writing Lua.
20:11:26 <Vorpal> elliott, xfce?
20:11:36 <elliott> That is what I am currently using.
20:11:42 <Vorpal> what is wrong with it?
20:12:56 <elliott> Most everything. Window management is even klunkier than GNOME 2 (and that's saying something), window switching with the task bar is awkward because drag-to-rearrange just fails to register most of the time, the menu is even more useless for launching programs than GNOME 2...
20:16:02 <pikhq_> Jeeze. Firefox has stopped being able to build on 32-bit systems. The linker needs more address space.
20:18:24 <elliott> :D
20:19:58 <pikhq_> Apparently Chrome hit the same thing previously on Windows.
20:21:30 <elliott> Gregor: Tell us about building Chrome!
20:22:42 <elliott> Vorpal: Does that answer your qusetion?
20:22:44 <elliott> *question
20:28:14 <Vorpal> back
20:28:24 <Vorpal> elliott, yeah
20:28:45 <elliott> Especially the one thing that makes the window management almost unusable for me is the fact that scrolling a background window focuses and raises it.
20:28:59 <elliott> Which is a feature so stupid, only xfwm4 has it.
20:30:21 <kallisti> elliott: that's very stupid
20:38:10 <kallisti> !perl package Test; @T = keys %Test::; my ($a,$b,$c); print @T;
20:38:12 <EgoBot> T
20:38:43 -!- oerjan has joined.
20:38:55 <kallisti> !perl package Test; @T = keys %Test::; our ($a,$b,$c); print @T;
20:38:56 <EgoBot> caTb
20:39:27 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @T;
20:39:35 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @EXPORT;
20:39:36 <EgoBot> cabISAisaBEGINEXPORT
20:39:47 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); $,=' '; print @EXPORT;
20:39:48 <EgoBot> c a b ISA isa BEGIN EXPORT
20:40:15 <kallisti> huh, BEGIN is in the symbol table. that's interesting.
20:40:30 <oerjan> 05:06:26: <elliott> 23:53:17: <oerjan> that thing above is probably too simple
20:40:30 <oerjan> 05:06:28: <elliott> I think that's fine.
20:40:30 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:40:53 <oerjan> no, it wouldn't fulfil the Applicative laws. i guess you saw my later adjustment.
20:42:36 <oerjan> @tell elliott AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
20:42:37 <lambdabot> Consider it noted.
20:42:43 <elliott> hi
20:42:43 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
20:44:31 <kallisti> !perl $x = 2; $y = *x; print $y
20:44:31 <EgoBot> ​*main::x
20:44:40 <kallisti> !perl $x = 2; $y = $*x; print $y
20:44:40 <EgoBot> ​$* is no longer supported at /tmp/input.3450 line 1.
20:44:44 <kallisti> NOOOOOOOO
20:44:49 <kallisti> !perl $x = 2; $y = *x->{SCALAR}; print $y
20:44:58 <kallisti> oh right
20:45:02 <kallisti> !perl $x = 2; $y = *x{SCALAR}; print $y
20:45:03 <EgoBot> SCALAR(0x7f7cb8f56a70)
20:49:30 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
20:49:53 -!- azaq23 has joined.
20:54:38 -!- copumpkin has changed nick to dynamicfish.
20:55:56 <Gregor> <elliott> Gregor: Tell us about building Chrome! // I've never built Chrome, but I can tell you that WebKit has at least ten build systems (fewer than the last time I reported it)
20:57:56 <elliott> Gregor: They have a meta-build-system! I know that much.
20:58:17 <Gregor> Sounds about right.
20:58:27 <elliott> And I just submitted a patch to a build system that exists solely because of Chrome, that that meta-build-system (GYP) can generate!
20:58:32 <elliott> CIRCLE OF LIFE
20:58:59 -!- dynamicfish has changed nick to copumpkin.
21:12:24 <kallisti> !perl package Test; sub A { print caller;}; A
21:12:24 <EgoBot> Test/tmp/input.64541
21:12:37 <elliott> wat
21:12:44 <elliott> oh it'll be a list
21:12:58 -!- copumpkin has changed nick to classtype-typeda.
21:13:16 <kallisti> !perl package Test; sub A { print scalar caller;}; A
21:13:17 <EgoBot> Test
21:13:39 <kallisti> !perl package Test; sub A { local $, = ' '; print caller;}; A
21:13:39 <EgoBot> Test /tmp/input.6631 1
21:14:08 -!- classtype-typeda has changed nick to copumpkin.
21:19:06 -!- boily has quit (Read error: Operation timed out).
21:24:33 <kallisti> !perl print $0
21:24:34 <EgoBot> ​/tmp/input.7617
21:27:46 <oerjan> <elliott> We could just talk about classical composer Johann and lose no precision of value. <-- yeah, after all Bach and Strauss are indistinguishable
21:28:15 <elliott> Who gives a fucking shit about goddamn GERMANS
21:28:23 <elliott> --Albert Einstein
21:28:27 <Gregor> More to the point, Johann Strauss is a hack.
21:28:30 <Gregor> He deserves neither of those names.
21:28:31 <oerjan> if jew say so
21:28:47 <elliott> Gregor: Counterpoint: YOU'RE a hack.
21:29:08 <Gregor> elliott: Counter-counterpoint: HACK HACK COUGH SPUTTER
21:29:10 <elliott> Oh, he's the guy responsible for Blue Danube.
21:29:11 <oerjan> while Bach hacked at counterpoint
21:29:24 <elliott> Gregor: I can join you in whole-hearted agreement of hackery.
21:30:21 <Gregor> elliott: Also Bach is a better Johann and Richard Strauss is a better Strauss, so he deserves neither name.
21:34:10 <pikhq_> Gregor: And Johann Strauss goes out and changes his name to Johann Sebastian Bach just to be more pitiful.
21:35:10 <oerjan> <elliott> I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk. <-- logically it designates a world which lacks our modern technology but has an equally powerful substitute fueled by justin bieber. hth.
21:35:30 <elliott> oerjan: Not gonna lie, I would read that novel.
21:36:13 <oerjan> *at least equally powerful
21:36:14 <elliott> I'm just imagining a highway with like a thousand cars all constantly going "BABY, BABY, BABY OOH".
21:36:18 <elliott> SO BEAUTIFUL.
21:36:31 <oerjan> that girl genius steampunk is obviously far beyond us
21:36:44 <oerjan> sorry, gaslamp fantasy
21:38:49 -!- pikhq has joined.
21:40:16 -!- pikhq_ has quit (Ping timeout: 244 seconds).
21:43:31 -!- oerjan has quit (Remote host closed the connection).
21:48:31 <kallisti> !perl print -d
21:48:35 <kallisti> !perl print -d "lol"
21:48:41 <kallisti> !perl print defined(-d "lol")
21:49:00 <kallisti> !perl print undef . "lol"
21:49:01 <EgoBot> Warning: Use of "undef" without parentheses is ambiguous at /tmp/input.10215 line 1.
21:49:10 <kallisti> !perl print (undef) . "lol"
21:51:41 <fizzie> !perl print undef() . "lol"
21:51:41 <EgoBot> lol
21:58:07 -!- Jafet has quit (Read error: Connection reset by peer).
21:58:38 <zzo38> How do I copy a PAL VHS to NTSC DVD?
22:11:38 <kallisti> fizzie: I prefer to make operators look like haskell functions wherever possible. :P
22:22:33 -!- oerjan has joined.
22:28:25 <elliott> heloerjan
22:28:30 <elliott> fizzie: Busy being BUSY, are we?
22:28:35 <oerjan> helliott
22:35:31 -!- Lisa_ has changed nick to KingOfKarlsruhe.
22:35:39 <calamari> zzo38: capture as PAL, encode to 720x480?
22:35:52 * kallisti found a use for local in perl.
22:37:04 <kallisti> the module File::chdir creates a special tied scalar called $CWD which works well with local.
22:37:48 <zzo38> I don't have a PAL VCR.
22:37:51 <kallisti> push @CWD and pop @CWD can be used similarly for pushdir and popdir-like behavior.
22:42:09 <pikhq> calamari: Framerate conversion is hellish.
22:44:02 -!- oerjan has quit (Remote host closed the connection).
22:47:18 -!- Patashu has joined.
22:49:31 <calamari> pikhq: mencoder should be able to handle it
22:50:05 <pikhq> calamari: Not really. The mplayer stack's handling of framerates is bloody well moronic.
22:50:39 <calamari> seems like it doesn't matter anyways since he can't play the tape
22:50:44 <pikhq> It's pushing the thing just to do inverse telecine on clean 24p-in-30i content.
22:50:45 <olsner> kallisti: looks like you've been doing perl. why?
22:51:39 <calamari> pikhq: there are like 5 different options for doing that
22:51:52 <kallisti> olsner: IRC bot
22:52:25 <pikhq> calamari: Yes. And?
22:52:55 <calamari> pikhq: and I'm not sure why you're complaining.. usually one or more of them works out fine
22:53:10 <pikhq> Yes, and that's the *limit* of its handling of framerates.
22:53:15 <pikhq> Try doing inverse telecine on something that's only partly telecined sometime. Watch it break hardcore. :)
22:53:44 <pikhq> And framerate conversion otherwise? Its only conception of that is dropping or doubling frames.
22:54:05 <calamari> is ffmpeg better?
22:54:21 <pikhq> Not particularly.
22:54:29 <pikhq> Video software sucks.
22:54:51 <calamari> I've had some luck putting inpal dvds and playing them on my ntsc player
22:55:02 <calamari> I assume the player is not doing anything very fancy
22:55:05 <pikhq> Variable framerate video is essentially not handled...
22:56:10 <pikhq> They make the *strange* assumption that 720x480 video is meant to be displayed at 4:3, when it's supposed to be displayed at a pixel aspect ratio of 10:11...
22:56:23 <calamari> ?
22:56:32 <calamari> on mine it stretches it to 853x480
22:57:07 -!- elliott has quit (Quit: Leaving).
22:57:14 <Phantom_Hoover> ???
22:57:20 <Phantom_Hoover> @tell elliott ???
22:57:21 <lambdabot> Consider it noted.
22:57:22 <calamari> unless it was full screen
22:57:45 <pikhq> That would be 16:9, and 720x480 video shouldn't be displayed at 16:9, either, it should have pixel aspect ratio of 40:33 for wide-screen.
22:58:06 <calamari> pikhq: maybe your tv is different but mine are either 4x3 or 16x9
22:58:23 <pikhq> The issue is that 720x480 is including the horizontal blanking interval.
22:59:00 <pikhq> The portion of the signal that is active should be displayed at ~4:3 or ~16:9.
22:59:11 <calamari> well you could do a -vf crop
22:59:31 <pikhq> Because 480i signals are generally coming from analog sources.
23:00:17 <calamari> when I play these star trek dvd's, I'm pretty sure the entire window is filled with picture info
23:00:41 <pikhq> I'm seeing the HBI.
23:01:11 <calamari> well let me grab one nd verify.. I know they're interlaced tho
23:01:21 <pikhq> Yes, and they're partially telecined.
23:01:24 <calamari> and fullscreen
23:01:44 <pikhq> Which mplayer and ffmpeg do the wrong thing on.
23:02:37 <calamari> I usually use vlc but it's not too great at deinterlacing
23:02:59 <pikhq> Anyways: for digitised 480i video, it is *never* the right thing to go "aspect ratio 4:3" or "aspect ratio 16:9". If it's 704x480, this will do the right thing.
23:03:04 <pikhq> If it's 720x480, this will be Wrong.
23:03:17 <pikhq> Subtly so, but nevertheless Wrong.
23:03:53 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
23:04:24 <calamari> so you'd recommend cropping to 704x480?
23:04:43 <pikhq> No. It's impossible to get the crop right in the general case.
23:05:32 <pikhq> From analog sources, the active picture will be in something *near* 704x480, and the black bars on the side will vary in size...
23:05:56 <calamari> how about going the other direction? 16x9 to dvd
23:06:32 <pikhq> So, you have pristine 16:9 video, and want to encode to DVD?
23:06:36 <calamari> like something I recorded on my phone in 720p
23:06:47 <pikhq> Scale to 704x480.
23:06:54 <calamari> I see
23:07:13 <pikhq> The DVD player will, if outputting NTSC, add the HBI as needed.
23:07:14 <calamari> oh well, guess I did some movies wrong in the past :)
23:07:37 <pikhq> You're not alone in that... Some official transfers are broken in that way.
23:08:22 <pikhq> The algorithm that video software (unfortunately) needs to do anymore is if 720x480, check for HBI, if it exists then use the correct pixel aspect ratio, otherwise display as 4:3 or 16:9.
23:08:43 <pikhq> I have yet to find a program that does this.
23:09:15 <pikhq> Or even acknowledges that 720x480 video isn't intended to be displayed at 4:3 or 16:9.
23:10:00 <calamari> it is intended to be displayed at 4x3 or 16x9
23:10:08 <pikhq> The active portion of the picture is.
23:11:23 <pikhq> 720x480 contains non-active portions.
23:12:42 <calamari> well I see a couple black pixels on the edges of this ds9 dvd but no 8 for sure
23:14:05 <pikhq> It will likely vary throughout the video.
23:14:22 <calamari> pikhq: I know what you're talking about btw.. I've used that when programming on the atari 5200.. and 2600 especially :)
23:14:26 <pikhq> Particularly seeing as some scenes are telecine, some are video, and some are a composite of the two.
23:15:07 <kallisti> OH GOD SO MANY NEW THINGS.
23:15:40 <pikhq> TNG makes a good stress test of deinterlacing/inverse telecine software, BTW.
23:16:01 <calamari> pikhq: yeah I noticed .. they seem to have broken interlacing
23:16:27 <pikhq> If it works right you get variable framerate video, with only a bit of oddity from some special effects shots which *should* end up getting just normally deinterlaced.
23:16:43 <pikhq> If it works poorly, you get 30p juddering or 24p strangeness.
23:16:51 <Phantom_Hoover> http://en.wikipedia.org/wiki/Wolf_359
23:16:51 <pikhq> (yay, frame drop!)
23:16:56 <Phantom_Hoover> Wow, a star with water in it.
23:17:26 -!- oerjan has joined.
23:17:34 <kallisti> Phantom_Hoover: is it water plasma?
23:17:39 <kallisti> is water plasma a thing?
23:18:28 <Phantom_Hoover> No; plasmas don't have actual atoms.
23:18:52 <oerjan> hm, plasma means ionization, which would fuck up what keeps molecules together, i think
23:18:59 <Phantom_Hoover> Yeah.
23:19:16 <kallisti> ah okay.
23:20:01 <Phantom_Hoover> Wait, its photosphere is only 2800K.
23:20:11 <Phantom_Hoover> There are plenty of metals that are *solid* at that temperaute.
23:20:14 <Phantom_Hoover> *temperature
23:21:00 <oerjan> `? welcome
23:21:03 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:21:07 <oerjan> `? esoteric
23:21:10 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net.
23:21:37 <Phantom_Hoover> So disappointed that dalnet isn't a real network.
23:21:37 <oerjan> i think it would be more efficient to include the latter in the former - although maybe we don't want that efficiency.
23:21:55 <oerjan> Phantom_Hoover: wat
23:22:15 <Phantom_Hoover> * Looking up irc.dalnet.net
23:22:16 <Phantom_Hoover> * Unknown host. Maybe you misspelled it?
23:22:26 <pikhq> Video is hard.
23:22:45 <monqy> dal.net isn't it
23:22:56 <oerjan> Phantom_Hoover: irssi server list claims it's irc.dal.net
23:23:44 <oerjan> `run sed -i wisdom/esoteric s/dalnet/dal/
23:23:46 <HackEgo> sed: couldn't open file isdom/esoteric: No such file or directory
23:23:51 <oerjan> oops
23:23:59 <oerjan> `run sed -iwisdom/esoteric s/dalnet/dal/
23:24:02 <HackEgo> sed: no input files
23:24:14 <oerjan> wtf now
23:24:18 <oerjan> oh
23:24:30 <oerjan> `run sed -i s/dalnet/dal/ wisdom/esoteric
23:24:32 <HackEgo> No output.
23:24:36 <oerjan> `? esoteric
23:24:38 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
23:25:46 -!- PiRSquared17 has joined.
23:26:06 <oerjan> PiRSquared17: LIAR, PI R ROUND
23:28:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:35:36 <pikhq> `run echo No output.
23:35:38 <HackEgo> No output.
23:37:10 <oerjan> `run echo "#!/bin/sh" >bin/No; chmod +x bin/No
23:37:13 <HackEgo> No output.
23:37:17 <oerjan> um
23:37:25 <oerjan> `No output.
23:37:27 <HackEgo> No output.
23:37:31 <oerjan> yay
23:38:17 <Gregor> `No soup for you!
23:38:19 <HackEgo> No output.
23:38:41 <oerjan> `wtf soup
23:38:43 <HackEgo> why soup is like wtf
23:40:36 <pikhq> `run cat bin/wtf
23:40:38 <HackEgo> ​#!/bin/sh \ echo "why $1 is like wtf"
23:40:55 * Phantom_Hoover → sleep
23:40:57 -!- Phantom_Hoover has quit (Quit: Leaving).
23:52:00 -!- copumpkin has joined.
23:53:05 <kallisti> !perl $x = "hi" *x = undef; print $x;
23:53:06 <EgoBot> Operator or semicolon missing before *x at /tmp/input.25244 line 1.
23:53:12 <kallisti> !perl $x = "hi"; *x = undef; print $x;
23:53:12 <EgoBot> hi
23:55:27 <kallisti> !perl $x = "hi"; undef *x; print $x;
23:55:57 <kallisti> !perl $x = "hi"; $y = \*x; undef *$y; print $x;
2011-12-15
00:08:15 <kallisti> !perl %h = (1,2); print ref \($h{1})
00:08:15 <EgoBot> SCALAR
00:08:44 <kallisti> !perl sub test { 1 } %h = (1,\test); print ref \($h{1})
00:08:45 <EgoBot> REF
00:10:03 <kallisti> !perl sub test { 1 } %h = (1,\test); undef ${\$h{1}}; print $h{1}
00:10:09 <kallisti> whew. sanity.
00:11:25 <kallisti> perl voodoo is tiring. :P
00:12:25 <kallisti> uh oh, I'm using a nested loop. I better rewrite it with gotos and labels.
00:34:42 <oerjan> kallisti: clearly you mean comefroms. hth.
00:38:11 -!- calamari has quit (Quit: Leaving).
00:55:14 <kallisti> !perl @a = (1,2,3,4); $b = \@a; @c = @$b; $d = \($c[$#c]); $$d = 3; print @$b
00:55:15 <EgoBot> 1234
00:55:27 <kallisti> tricky. tricky.
01:20:32 <zzo38> When a DVD is recording and a VHS is playing at the same time, without using the copying feature, the on-screen display is different and component video out doesn't work and a few other differences.
01:21:25 <zzo38> (It also supports recording on VHS and play DVD at the same time, and recording on VHS or DVD and playing a file on SD card or USB. But you cannot record on two drives at the same time.)
01:37:07 <oerjan> `frink 8 million km/h -> c
01:37:18 <HackEgo> Conformance error \ Left side is: 1.2073523605465162560e+43 m^-1 s kg^-1 (unknown unit type) \ Right side is: 299792458 m s^-1 (velocity) \ Suggestion: multiply left side by energy \ \ For help, type: units[energy] \ to list known units with these dimensions.
01:38:05 <oerjan> `frink 8000000 km/h -> c
01:38:14 <HackEgo> Conformance error \ Left side is: 1.2073523605465162560e+43 m^-1 s kg^-1 (unknown unit type) \ Right side is: 299792458 m s^-1 (velocity) \ Suggestion: multiply left side by energy \ \ For help, type: units[energy] \ to list known units with these dimensions.
01:38:28 <oerjan> `frink 8 million km/hr -> c
01:38:37 <HackEgo> 10000000/1349066061 (approx. 0.007412535448847823)
01:38:50 <oerjan> tsk tsk
01:42:55 <itidus21> zzo38: my brother is setting up lounge room as entertainment area.. my only fear is he will abscond with things from my room.
01:43:00 <itidus21> ill keep you posted :-D
01:51:45 <zzo38> itidus21: Then lock your room.
01:52:06 <itidus21> zzo38: oh, thats the problem.
01:52:26 <itidus21> i am such a person that can't say no to anyone who is prepared to use intimidation
01:52:41 <monqy> intimidation?
01:52:57 <itidus21> if you extrapolate this idea sufficiently into all areas of my life, you will realize why i live in my moms basement without any friends or lovers or money :D
01:53:12 <itidus21> its not all that bad
01:54:01 <monqy> what happens when your mother dies? or will you be dead too by then
01:54:15 <itidus21> i am not sure :D
01:54:22 <monqy> excitement
01:54:25 <monqy> adventure
01:55:03 <oerjan> you will then become like me and live in a small shared apartment without any friends or lovers or money.
01:55:08 <itidus21> when my mom dies my brother says "all those times i said we could share the house i was lying. now we will see if you were bluffing when you said you don't even care"
01:55:36 <itidus21> lol
01:56:00 <itidus21> basically, life ain't so hard once people stop leeching off you
01:56:13 <itidus21> it's the leeches themselves which represent the problems
01:56:28 <itidus21> they take many forms
01:57:28 <itidus21> when i was a lot younger, i figured out how my life would work out when if i poured a glass of cordial my brother would take it
01:57:40 <itidus21> and so, i learned, if i want a glass i need to pour one for everyone
01:58:07 <itidus21> but, it is all simply peoples way of responding automatically to someone who doesn't say no
01:59:13 <itidus21> its a bit like taking phrases like "sharing is caring" and just distorting them sufficiently that you can turn a profit
02:01:28 <itidus21> anyway i don't think i have anything in my room that he needs
02:06:35 <itidus21> oerjan: it's not so bad is it?
02:07:27 <itidus21> it's important to note for anyone reading my little monologue that i actually react like this towards most people, and it's not that i single my brother out
02:12:05 <oerjan> itidus21: YOU BETTER FIX YOUR PERSONALITY FLAWS OR I WILL BAN YOU
02:12:12 * oerjan whistles innocently
02:15:35 <itidus21> i used to argue inspite of his anger which he tended to take out on the plaster walls, by being a smartass which was perhaps not so wise
02:15:56 <itidus21> until one time he throw a stick at my head and i got the message then
02:16:20 <oerjan> itidus21: i think the general advice for people living with psychopats is "get the HELL out of there"
02:18:26 <itidus21> i think i just make him seem like a psychopath due to my own refusal to actually say no to anyone about anything
02:24:43 <itidus21> oerjan: no no it seems i am missing the point.. he may well be.. i would be lying if i didn't suspect him of it
02:26:47 <oerjan> well i'm getting this intuitive warning feeling which says to stop my own speculation - only you can know.
02:28:18 <itidus21> oerjan: i know how easy "get the hell out" sounds.. but it is the advice which would never be taken
02:40:47 -!- azaq23 has quit (Quit: Leaving.).
03:02:03 -!- Rachel88 has joined.
03:02:55 <Rachel88> Facebook Traffic Generation Secrets Revealed , http://fb.weightdeals.com/
03:03:10 <Gregor> oerjan: Banning secrets revealed?
03:03:17 <Rachel88> indeed lol
03:03:28 -!- ChanServ has set channel mode: +o oerjan.
03:03:33 -!- oerjan has kicked Rachel88 Rachel88.
03:03:44 <oerjan> wait what
03:03:51 -!- Rachel88 has joined.
03:03:55 <Rachel88> sorry
03:04:00 -!- oerjan has set channel mode: +b *!*prophaze@59.93.41.*.
03:04:00 -!- oerjan has kicked Rachel88 Rachel88.
03:04:02 <Gregor> oerjan: That was not a ban, that was a kick.
03:04:04 <Gregor> Better.
03:04:12 <oerjan> irssi autocompleted to the wrong command
03:04:16 <Gregor> Ah
03:04:18 -!- oerjan has set channel mode: -o oerjan.
03:04:19 <Gregor> kick instead of kickban?
03:04:22 <oerjan> yeah
03:05:23 <Gregor> Bizarre that it came back ... was there a human attached to that spam???
03:05:42 <oerjan> should we care?
03:06:00 <Gregor> No, but that doesn't mean you can't consider it a curiosity :P
03:14:30 <kallisti> oh dude did I miss something?
03:14:46 <kallisti> bahahahahaha
03:15:43 <kallisti> oerjan: the pleas for reconsideration must be the most rewarding aspect of IRC operating.
03:16:41 <oerjan> what pleas?
03:16:42 <itidus21> lol.. what the
03:17:02 <kallisti> 22:03 < Rachel88> wait
03:17:30 <oerjan> i didn't see that
03:17:52 <itidus21> this is the most exciting thing to happen in #esoteric all day? :-D
03:17:57 -!- MSleep has joined.
03:18:08 <itidus21> ^ s/day?/day
03:18:14 -!- MSleep has changed nick to MDude.
03:18:52 <oerjan> itidus21: probably
03:18:54 <kallisti> oh god I've changed so many things there's no way this is going to work first try.
03:32:34 <coppro> kallisti: I love that feeling
03:37:49 -!- PiRSquared17 has changed nick to {{stub}}.
03:38:19 -!- {{stub}} has changed nick to PiRSquared17.
03:40:42 * kallisti completely gutted his IRC bot and put in a plugin system.
03:42:27 <oerjan> now you just need slow and buggy implementations of half of common lisp and sendmail.
03:43:33 <kallisti> uuuugh why does perl require modules to return a true value
03:43:47 <oerjan> so it knows you're not lying, duh
03:44:34 <Sgeo> kallisti, oerjan update
03:44:48 <Sgeo> Because I need to ping two people, don't I?)
03:46:06 <kallisti> only in Perl is it customary to end a file with a 1;
04:08:55 <zzo38> kallisti: I don't know; maybe just in case you sometimes need it to check something instead of always success
04:10:01 <kallisti> zzo38: well yes that's the purpose.
04:19:29 -!- Jafet has joined.
04:44:23 <zzo38> What is "usefulness of uselessness"?
04:45:38 -!- PiRSquared17 has changed nick to Picommand.
04:47:08 -!- Picommand has changed nick to Pi_Quadrant.
04:49:18 -!- Pi_Quadrant has changed nick to PiRSquared17.
04:52:08 -!- oerjan has quit (Quit: Good night).
04:52:41 -!- PiRSquared17 has quit (Quit: Bye! ...).
04:59:27 -!- augur has quit (Remote host closed the connection).
05:05:45 * kallisti loves making things unecessarily flexible.
05:28:05 <Madoka-Kaname> zzo38, that's what exceptions are for.
06:12:22 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:41:17 <Sgeo> http://beust.com/weblog/2010/07/28/why-scalas-option-and-haskells-maybe-types-wont-save-you-from-null/
06:41:26 <Sgeo> This person is an idiot, but does he work on other stuff?
06:43:00 <Sgeo> TestNG
06:44:39 <copumpkin> he writes about a lot of stuff
06:44:43 <copumpkin> many people think he's an idiot
06:44:51 <copumpkin> I don't really mind him much, if I don't pay too much attention to what he says
06:49:27 -!- itidus21 has quit (Read error: Connection reset by peer).
06:49:47 <shachaf> copumpkin: That's not how you deal with people on the Internet who don't agree with you on everything.
06:49:56 <copumpkin> oh
06:50:28 * shachaf is glad to have explained the matter.
06:53:52 <kallisti> "I find that hash tables allowing null values are rare to the point where this limitation has never bothered me in fifteen years of Java."
06:53:55 <kallisti> ...........
06:54:36 <kallisti> "See what’s going on here? You avoid a NullPointerException by… testing against null, except that it's called None. What have we gained, exactly?"
06:54:50 <kallisti> compile-time error vs. runtime error (er, well... in Haskell, I don't know anything about Scala)
06:55:26 <Sgeo> Can still get the equivalent of a NullPointerException by doing fromJust
06:55:40 <Sgeo> But if you use fromJust without any sort of checking, you're a moron.
06:55:58 <Madoka-Kaname> Isn't the whole point of Option to... statically type for null types?
06:56:01 <monqy> other good things to do: unsafeCoerce, unsafePerformIO, kill yourself
06:56:47 <Sgeo> Are there valid uses of fromJust?
06:56:56 <monqy> yes
06:57:06 <monqy> there are also valid uses of unsafeCoerce, unsafePerformIO
06:57:11 <Sgeo> Although I think I've seen a recommendation that even in those cases, better to use a case where the Nothing case points to an error "Blah blah blah"
06:57:32 <kallisti> Sgeo: it's generally safe to use fromJust if you know for certain that Nothing is impossible.
06:57:49 <shachaf> kallisti: Please don't use fromJust even if you know for certain that Nothing is impossible.
06:58:02 <kallisti> it happens so infrequently that I don't have to!
06:58:06 <kallisti> :)
06:58:10 <shachaf> Even when it happens, don't use fromJust.
06:58:18 <shachaf> Use let Just x = ..., or something.
06:58:24 <kallisti> is the reason: because I may be stupid?
06:58:34 <monqy> fromjust is nice in ghci and friends at the very least
06:58:38 <kallisti> what's wrong with fromJust?
06:58:43 <kallisti> compared to pattern matching?
06:58:44 <shachaf> The reason is: If it turns out to be Nothing, the error message will be completely unhelpful.
06:58:54 <kallisti> > fromJust Nothing
06:58:54 <lambdabot> *Exception: Maybe.fromJust: Nothing
06:59:10 <shachaf> Whereas if you do let Just x =, or fromMaybe (error "something useful"), the error message will tell you something.
06:59:14 <kallisti> Haskell's runtime errors could certainly use an improvement
06:59:20 <shachaf> Remember that you don't really get stack traces in Haskell.
06:59:29 <monqy> > let Just x = Nothing
06:59:30 <lambdabot> not an expression: `let Just x = Nothing'
06:59:32 <kallisti> just a line number would be nice
06:59:38 <monqy> oh
06:59:39 <monqy> > let Just x = Nothing in 5
06:59:40 <lambdabot> 5
06:59:40 <Sgeo> > let Just x = Nothing in x
06:59:41 <lambdabot> *Exception: <interactive>:3:4-19: Irrefutable pattern failed for pattern Da...
06:59:45 <monqy> oh right haha laziness wow
06:59:54 <kallisti> monqy: haha
06:59:56 <zzo38> I think fromJust is OK, although usually it should not be used.
06:59:57 <shachaf> kallisti: That's why you use let!
07:00:11 <shachaf> Giving you a line number would be equivalent to giving you a stack trace, more or less.
07:00:22 <shachaf> Unless you mean that you want the line number of the line that fromJust is defined in.
07:00:39 <kallisti> no.
07:01:27 <shachaf> Anyway, if you know that it's never Nothing, just don't use a Maybe.
07:03:24 <kallisti> it's a hypothetical scenario. Perhaps a function that could result in Nothing doesn't when given a certain input.
07:03:33 <kallisti> I'm not saying it's common as it's probably not.
07:05:34 <Sgeo> If it's given a certain input, and you know the output, you don't need to call the function
07:05:35 <Sgeo> >.>
07:06:12 -!- MDude has changed nick to MSleep.
07:06:38 <kallisti> Sgeo: uh... I didn't say I know the output
07:06:42 <kallisti> just that I know it's not a Nothing
07:07:01 <kallisti> but yes pattern matching gives better errors, that's true.
07:09:50 -!- itidus21 has joined.
07:17:11 -!- itidus21 has quit (Read error: Operation timed out).
07:21:03 <kallisti> !perl use File::Spec
07:21:10 <kallisti> !perl use File::Spec; print %INC;
07:21:11 <EgoBot> warnings.pm/usr/share/perl/5.10/warnings.pmwarnings/register.pm/usr/share/perl/5.10/warnings/register.pmFile/Spec.pm/usr/share/perl/5.10/File/Spec.pmFile/Spec/Unix.pm/usr/share/perl/5.10/File/Spec/Unix.pmvars.pm/usr/share/perl/5.10/vars.pmstrict.pm/usr/share/perl/5.10/strict.pm
07:22:03 <kallisti> !perl use File::Spec; $INC{"/usr/share/perl/5.10/File/Spec/Unix.pm"} = undef;
07:22:07 <kallisti> yesssss
07:24:24 <kallisti> !perl print keys %INC
07:24:36 <kallisti> !perl use File::Spec; print keys %INC
07:24:37 <EgoBot> warnings.pmwarnings/register.pmFile/Spec.pmFile/Spec/Unix.pmvars.pmstrict.pm
07:24:47 <kallisti> ah
07:27:16 <fizzie> I just sent one of those... what do you call it... a facsimile, or "fux" for short. How... 1980s?
07:27:29 <kallisti> fizzie: hey! I've done that before!
07:27:39 <kallisti> recently in fact.
07:28:36 <fizzie> It had my signature on it. It's crazy how that's seen as somehow reliable and tamper-proof and whatever, but an email with a scanned bitmap is obviously completely untrustworthy. (Let alone an email with just a digital signature.)
07:31:42 <zzo38> I have a package of four monad transformers: FinderT, InbindT, ReadthisT, WithoutT.
07:33:13 <Sgeo> ReadthisT?
07:33:25 <Sgeo> Actually, what are any of them?
07:33:40 <Sgeo> ReadmeT, a monad transformer to force people to read your READMEs
07:34:01 <zzo38> ReadthisT allows a monad to access itself except for the return values.
07:35:53 <zzo38> newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x };
07:37:11 <zzo38> Now do you know what it means?
07:38:02 <Sgeo> Erm
07:38:09 <Sgeo> Not really
07:42:54 <zzo38> readself x = x >>= ($ (() <$ x)) . runReadthisT;
07:43:04 <zzo38> readfunc = ReadthisT . (pure .);
07:44:59 <zzo38> readfunc fst :: ReadthisT ((,) String) String; (using (,) monad from Data.Monoid.Plus) Now you read the so far accumulated string
07:45:49 <zzo38> Now can you understand it better?
07:47:20 -!- augur has joined.
07:49:32 <Sgeo> kallisti, update
07:55:39 -!- itidus21 has joined.
08:01:37 -!- myndzi has quit (Read error: Connection reset by peer).
08:02:02 -!- myndzi has joined.
08:35:08 -!- zzo38 has quit (Remote host closed the connection).
08:46:43 -!- monqy has quit (Quit: hello).
08:47:22 <pikhq> "You want to fuck with a mathematician? Just begin a sentence with, "Let ϵ → ∞."
08:47:28 <pikhq> *wince*
08:47:56 <Sgeo> The limit as ϵ → ∞ ?
08:52:59 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:54:03 -!- Sgeo has joined.
08:59:09 <oklopol> i can't see those characters :(
09:04:29 <Sgeo> epsilon, rightarrow, and infinity
09:04:59 <Sgeo> Wait, I don't know if that's an epsilon
09:05:11 <oklopol> it probably is
09:05:21 <oklopol> because epsilon is usually not used like that
09:05:27 <kallisti> I think it's big epsilon and not small?
09:05:35 <Sgeo> It looks more like backwards "in set" thingy
09:05:35 <kallisti> dunno. I suck at greek.
09:05:56 <Sgeo> Wait, not backwards
09:06:07 <Sgeo> It looks like the in-set thingy
09:06:15 <oklopol> argh, this thing claims to have "unicode support", should i be seeing those?
09:06:23 <kallisti> yes
09:06:26 <Sgeo> Probably
09:06:35 <oklopol> kvirc
09:07:58 <oklopol> i have 4.0.4 and 3.2.6 apparently already had unicode support
09:08:21 <Sgeo> Check the font
09:09:43 <oklopol> dfd
09:09:49 <oklopol> hnnnngh
09:10:02 <kallisti> it would be awesome to have an OS that you could ask to do things.
09:10:23 <kallisti> and it would ask questions to clarify information until it was specific enough that it would confirm if you want to do something
09:10:41 <oklopol> what fonts do you use
09:10:44 <oklopol> i had consolas
09:10:57 * kallisti imagines typing something like "get more fonts" and then it responds with "would you like to install such and such font pack?"
09:11:15 <oklopol> if it's not monospace, please just say "i don't use a font, i'm a stupid"
09:11:22 <Sgeo> Hold on
09:11:46 <Sgeo> As it turns out, it is monospace.
09:11:53 <Sgeo> Literally Monospace
09:11:56 <kallisti> oklopol: do you think monospace fonts are appropriate for all situations?
09:11:57 <oklopol> :P
09:12:01 <oklopol> kallisti: yes
09:12:12 <Sgeo> I don't know how Monospace is a font, but it is
09:12:27 <Sgeo> Unless it is codeword for "System default monospace font"
09:12:39 <fizzie> Sgeo: It's U+03F5 GREEK LUNATE EPSILON SYMBOL, aka 'straight epsilon'; as opposed to something like U+03B5 GREEK SMALL LETTER EPSILON. (TeXwise, it's \epsilon and not \varepsilon.)
09:12:55 <Sgeo> Ah
09:13:09 <oklopol> so okay just the usual epsilon
09:13:13 <Sgeo> I wonder what the Greeks would think of our use of their alphabet
09:13:21 <oklopol> my colleague is greek
09:13:26 <kallisti> Sgeo: "asshole"
09:13:28 <fizzie> They would say STOP STEALING OUR LETTERS YOU BASTURDS.
09:13:29 <kallisti> er
09:13:30 <kallisti> *assholes
09:13:38 <kallisti> yes, precisely.
09:13:58 <fizzie> They'd be all "soon we can't write at all because you've stolen all our letters".
09:14:23 <kallisti> all of their small epsilons will expand into nothingness.
09:14:28 <kallisti> as they write.
09:14:32 <oklopol> he uses them exactly like everyone else, except that he doesn't make a clear distinction between m and for instance and just pronounces each as em or mu at random
09:14:50 <oklopol> just like i don't differentiate between M, m and others in speech
09:15:39 <Sgeo> µ2
09:15:43 <Sgeo> (Sorry, I had to)
09:15:57 <kallisti> Sgeo: ahahahahahahahaihswerjwerjwejr
09:16:00 <kallisti> you should write
09:16:04 <kallisti> a webcomic bro
09:16:09 <oklopol> what was that
09:16:17 <oklopol> oh
09:16:29 <kallisti> oklopol: nothing, don't mistake my fake laughter for laughter at something interesting.
09:16:40 <Sgeo> oklopol, mu 2
09:17:14 <oklopol> yeah, that i realized
09:17:19 <oklopol> still don't know what the joke is
09:17:36 <Sgeo> There's a pokemon called Mewtwo
09:18:14 <oklopol> well yeah, true, it means something.
09:18:19 <oklopol> good one bro
09:18:27 <oklopol> :DDDDDDDDDDDDDDDDDD
09:19:25 <oklopol> was 2 the one that looked like random pixels in that one pokemon version
09:19:46 <Sgeo> No, that's Missingno
09:19:51 <oklopol> o.
09:20:36 -!- TeruFSX has quit (Read error: Connection reset by peer).
09:20:37 <Sgeo> Hmm, it might be Missingno.
09:21:19 <oklopol> i'm sure it is
09:23:32 <Sgeo> Note that none of this should be taken to imply that I know much about Pokemon.
09:26:08 -!- cswords has joined.
09:48:47 <Sgeo> `welcome cswords
09:48:54 <Sgeo> `?welcome cswords
09:48:55 <HackEgo> cswords: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:48:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found
09:49:19 <cswords> o.O
09:50:08 <Sgeo> Sorry, I have no idea if you're a regular or not
09:50:39 <cswords> Nope, new here.
09:50:51 <cswords> Grad student in PL, looking for some neat hangouts.
09:52:14 <Sgeo> Ah
09:52:45 <Sgeo> The thing is, sometimes people come in who are looking for weird spiritual stuff, "esoterica" I guess. That's not what this is about. PL stuff is what this is about
09:53:03 <Sgeo> So, just wanted to be sure. And welcome!
09:53:38 <fizzie> Isn't there a chanserv-driven automagical welcome message anyhow? Or does that sort of thing still exist?
09:53:53 <cswords> Well, thanks for the welcome! It seems liek ti'll be a good time.
09:54:08 <cswords> Hmm...
09:54:15 <cswords> Does lambdabot break if you feed it little omega?
09:54:38 <Sgeo> Hmm?
09:54:44 <Sgeo> lambdabot is a Haskell bot
09:54:49 <cswords> Yes, I know.
09:55:02 <Sgeo> Ah. I'm not sure what you mean by little omega >.>
09:55:07 <cswords> lambdabot, ((lambda (x) (x x)) (lambda (x) (x x))
09:55:11 <fizzie> It's got an evaluation time limit.
09:55:14 <cswords> Ah.
09:55:20 <cswords> The ones I've seen don't.
09:55:26 <cswords> So they hit that and die.
09:55:50 <Sgeo> > (\x -> x x) (\x -> x x)
09:55:51 <lambdabot> Occurs check: cannot construct the infinite type: t = t -> t1
09:56:12 <cswords> :D
09:56:14 <cswords> Nice.
09:56:14 <fizzie> Here's one long-running thing:
09:56:15 <fizzie> > fix id
09:56:19 <lambdabot> mueval-core: Time limit exceeded
09:56:30 * cswords doesn't know much Haskell... yet.
09:56:40 <Sgeo> :t fix
09:56:41 <lambdabot> forall a. (a -> a) -> a
09:56:42 <Sgeo> :t id
09:56:43 <lambdabot> forall a. a -> a
09:58:08 <fizzie> Whoops, there's a department christmas lunch thing-thing now. ->
09:58:24 <Sgeo> I need to go to sleep soon
10:07:25 -!- GreaseMonkey has quit (Quit: The Other Game).
10:08:19 <fizzie> ^source
10:08:19 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
10:08:27 <fizzie> There's another topical bot.
10:08:42 <fizzie> (Forgot to advertise it for a moment there.)
10:09:13 <fizzie> fungot: What do you have to say for yourself?
10:09:13 <fungot> fizzie: fnord juhannusn fnord fnord
10:09:29 <fizzie> fungot: Nice first impression there, dude.
10:09:29 <fungot> fizzie: i didn't know that. thanks catfive :) i need dynamic class support ( dynamic fnord of c modules", which means that i have
10:15:27 <Sgeo> Night
10:16:43 <fizzie> Night at noon.
11:02:16 -!- op_4 has quit (Ping timeout: 240 seconds).
11:03:12 -!- op_4 has joined.
11:14:55 -!- kmc has joined.
12:26:44 -!- cswords has quit (Read error: Connection reset by peer).
13:37:37 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:51:06 -!- elliott has joined.
13:53:54 <elliott> hi
13:53:54 <lambdabot> elliott: You have 5 new messages. '/msg lambdabot @messages' to read them.
13:54:00 <elliott> lambdabot: hi
13:54:14 <elliott> <lambdabot> Gregor said 20h 57m 45s ago: DAAA DADADAAA DADA DADADADADADADADA DAAA DADADAAA DADA DADADADADADADADA
13:54:14 <elliott> <lambdabot> oerjan said 17h 11m 25s ago: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
13:54:21 <elliott> What a beautiful collaboration.
14:02:56 -!- Ngevd has joined.
14:05:20 <Ngevd> Hello!
14:11:11 -!- derdon has joined.
14:11:48 -!- derrik has joined.
14:25:34 <elliott> hi Ngevd
14:26:41 -!- pikhq_ has joined.
14:26:50 -!- pikhq has quit (Ping timeout: 240 seconds).
14:28:40 -!- Taneb has joined.
14:28:44 <Taneb> Hello, try 2
14:29:25 <elliott> hi
14:30:44 -!- Ngevd has quit (Ping timeout: 248 seconds).
14:45:10 -!- Ngevd has joined.
14:46:10 -!- Taneb has quit (Ping timeout: 252 seconds).
15:05:27 <elliott> Aaaaaaaaaaaaaaaaa I am being sucked into the vortex
15:05:44 <Ngevd> How big a vortex?
15:06:15 <elliott> The biggest
15:06:16 <elliott> vortex
15:06:27 <Ngevd> Oh no
15:15:16 -!- MSleep has changed nick to MDude.
15:19:04 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:46:49 -!- copumpkin has joined.
15:53:21 -!- nullbytes has joined.
15:53:40 <nullbytes> Is it actually possible to write a brainhype interpreter?
15:58:24 <elliott> No.
15:58:31 <elliott> Assuming brainhype is what I recall it being.
15:58:58 <elliott> "This language is "super-Turing-complete" because it solves the halting problem for Turing machines."
15:59:06 <elliott> So, yeah, unimplementable, assuming the Church-Turing thesis is true.
15:59:14 <elliott> (That means no. :p)
15:59:45 <nullbytes> But it says "you can write a Brainhype interpreter in Scheme-omega."
16:00:17 <elliott> nullbytes: Yes, but you can't write a Scheme-omega interpreter, either.
16:00:41 <elliott> So, OK, you can write an interpreter, just not an interpreter in anything you can run :)
16:00:47 <nullbytes> :( the wiki page doesnt make that part clear
16:01:00 <elliott> The linked page does. Well, assuming you're familiar with the halting problem.
16:01:17 <elliott> Technically you can't run any Turing-complete languages either because computers have finite memory.
16:01:27 <elliott> But it's easier to fake that than it is to fake a solution to the halting problem :P
16:01:59 <nullbytes> Cant the halting problem be solved for programs with very limited memory?
16:02:14 <elliott> A Turing machine can solve the halting problem for finite state machines, yes.
16:02:23 <elliott> However brainfuck is Turing-complete, not a finite state automaton.
16:02:32 <elliott> And brainhype is brainfuck + extras.
16:03:37 <nullbytes> But what if at every instruction you record the instruction and everything in memory. If this ever repeats or you run out of memory, theres an infinite loop
16:04:12 <elliott> nullbytes: That works for finite state machines.
16:04:20 <elliott> Turing machines have infinite loops with non-repeating states.
16:04:30 <elliott> +[>+] -- this brainfuck program runs forever, but never repeats state.
16:04:56 <elliott> (The original brainfuck interpreter only had some 30k cells, but the conventional version and the one brainhype is based on has infinite memory.)
16:04:59 <nullbytes> well couldnt you limit the available memory and call every combination of bits a state?
16:06:10 <elliott> If you limit the available memory, then it's no longer Turing complete, and it's no longer brainfuck.
16:06:21 <nullbytes> ok thank you
16:06:24 -!- nullbytes has quit (Quit: Page closed).
16:06:39 <elliott> I think I broke him.
16:06:55 <elliott> Ngevd: Do you know the HORROR of the halting problem?
16:16:37 <Ngevd> elliott, I do not
16:16:47 <elliott> Ngevd: WEEP, MORTAL!!!
16:16:53 <elliott> WEEP IN HORROR
16:17:27 -!- ais523 has joined.
16:19:10 <elliott> hi ais523
16:19:17 <elliott> we just tried to prove the halting problem a couple of times
16:19:21 <elliott> erm
16:19:22 <elliott> disprove
16:19:24 <elliott> prove it possible
16:19:25 <elliott> to solve
16:19:25 <elliott> whatever
16:19:50 <ais523> hmm
16:19:50 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
16:19:59 <ais523> you were trying to write a general halt-detector?
16:20:18 <elliott> well no not _me_
16:20:22 <ais523> you-plural
16:20:32 <elliott> http://codu.org/logs/log/_esoteric/2011-12-15#155321 :p
16:20:34 <Ngevd> Not very hard
16:20:36 <elliott> ok, so it lasted all of ~30 lines
16:20:45 <ais523> I'd be very surprised if the halting theorem turned out to be incorrect; its proof is pretty simple and it's stood up for years
16:21:19 <elliott> ais523: But it'd make all those pesky problems about countable sets decidable!
16:22:08 <elliott> Someone should figure out exactly how much you can solve with a halting oracle; I'm pretty sure you can nest it to solve some statements about uncountable sets, but I don't think it can do everything.
16:22:28 <elliott> Probably somebody already has.
16:23:05 <ais523> wow, security update in bzip2
16:23:17 <ais523> that's a little surprising
16:23:31 <ais523> (temporary file related)
16:23:38 <elliott> It zipped too far.
16:23:41 <ais523> also, vague arrgh at gksudo stealing focus
16:23:45 <elliott> It was threatening the very integrity of the universe.
16:23:46 <ais523> although, I can see why it /does/
16:23:52 <elliott> ais523: err, gksudo really really should steal focus
16:24:01 <ais523> (it stealing focus and the user not expecting it is annoying, the other way round is insecure)
16:24:15 <elliott> ais523: technically, it should steal focus and then not focus the password field
16:24:35 <elliott> or a malicious program could time a gksudo to start right before you enter your email password or whatever
16:24:37 <ais523> haha, beautiful
16:24:40 <elliott> and hope that it's the same as your system password
16:24:59 <ais523> gksudo takes a while to start, it'd have to time it quite accurately
16:25:20 <elliott> it's also very noticeable, so I doubt it's a very plausible exlpoit :P
16:25:48 <elliott> actually, not focusing the password field doesn't solve that
16:25:55 <elliott> in case your email password field is in the centre of the screen
16:26:07 <elliott> it should steal focus, freeze for a second or two, and then focus the password field
16:26:10 <elliott> wow that sounds annoying
16:26:16 <elliott> i bet openbsd gksudo does that
16:26:40 <ais523> and randomize how long it freezes for
16:27:16 <ais523> with a cryptosure randomizer
16:27:23 <elliott> ais523: hmm, this means that optimising gksudo could cause a security exploit
16:27:28 <elliott> thanks to making that attack more practical
16:27:41 <elliott> *security hole
16:28:18 <elliott> aaargh, why is this so addictive
16:28:30 <ais523> why is what so addictive?
16:29:04 <elliott> Stack Overflow; I joined yesterday to ask a git question and have somehow amassed 313 reputation since
16:30:23 <Ngevd> elliott, you are good at answering other people's questions.
16:30:29 <Ngevd> Consider making a talk show
16:30:32 <ais523> elliott: hmm
16:30:32 <elliott> I've only answered 4!
16:30:43 <ais523> I actually went and uninstalled Dungeons of Dredmor, then deleted the .deb
16:30:53 <ais523> I can redownload it, but that requires effort and an Internet connection
16:30:58 <elliott> why did you do that?
16:31:31 <ais523> because it's addictive in an MMO sort of way
16:31:38 <ais523> and I noticed
16:31:49 <elliott> heh
16:31:56 <ais523> after being awake for 23 hours continuously, almost all of which were playing games
16:32:09 <elliott> ais523: incidentally, how does scapegoat handle http://stackoverflow.com/questions/8500282/git-merging-changes-after-branching-before-a-revert?
16:32:11 <ais523> it is basically a single-player MMO in terms of game design…
16:32:25 <elliott> I would say "hopefully better than git", but I don't blame git for handling a really, really stupid user imperfectly
16:32:48 <ais523> elliott: pull everything but the revert; if it can't automatically be resolved, you get a conflict
16:33:01 <elliott> ais523: hey, you're not allowed to answer based on the url
16:33:04 <elliott> it's more complex than that
16:33:07 <ais523> elliott: I'm reading the page
16:33:11 <elliott> oh :P
16:33:30 <elliott> ais523: wouldn't future merges pull in the revert too?
16:33:34 <ais523> elliott: that's an example of my "simplest thing git can't do" example
16:33:49 <elliott> since it's part of master but not restructure, and ergo should be pulled in
16:33:55 <ais523> elliott: no, you have to pull in all changes explicitly or implicitly; you can choose to not pull a dependency and then you get a conflict
16:33:58 <elliott> ais523: oh, git can definitely do what you said
16:34:10 <ais523> so you define tip as "all changes in master except change X"
16:34:13 <elliott> I even did that, with git cherry-pick
16:34:16 <ais523> actually, even darcs can do that
16:34:39 <ais523> although I think it just refuses to merge, rather than giving a conflict, if you leave out a dependency
16:34:54 <ais523> wait, you asked that question?
16:35:01 <elliott> yes
16:35:07 <elliott> is that surprising?
16:35:26 <ais523> "Yeah, I tried this before, and it does bring the right changes over to restructure, but after trying to merge things back into master (just locally, to check that the cherry-picking hadn't broken anything), everything seemed to fall apart even more than previously." -- simplest thing git can't do
16:35:33 <ais523> elliott: yes, in a way
16:35:44 <ais523> I vaguely forgot you weren't Adeon
16:36:00 <elliott> ais523: well, it didn't fall apart due to the cherry-picks, IIRC, but I don't remember exactly
16:36:02 <elliott> and who's Adeon?
16:36:12 <ais523> probably the best NetHack realtime speedrunner in the world
16:36:22 <elliott> err, that sounds... relevant?
16:36:53 <ais523> well, we once figured out it was him who got a record because he was insufficiently annoyed when the fact that his record had been broken by someone anonymous came to light
16:37:13 <elliott> haha
16:37:18 <elliott> I'm still not seeing the relevance, mind you
16:37:38 <ais523> well, it's the way you were talking about the author
16:37:50 <elliott> oh
16:37:59 <elliott> I wouldn't call someone /else/ who asked that really, really stupid
16:38:20 <elliott> that's reserved for, umm, I can't think of anything VCS-related you could do to earn that title
16:38:47 <elliott> ais523: I assumed "I joined yesterday to ask a git question" made it obvious :P
16:40:51 <elliott> hmm
16:40:59 <elliott> I should probably switch to xmonad today, or I never will
16:42:47 <ais523> why today in particular?
16:43:27 <Ngevd> Tomorrow they remove the letter "m" from the alphabet
16:43:36 <elliott> ais523: because I decided to yesterday
16:47:37 -!- Taneb has joined.
16:47:39 <elliott> ais523: (that makes sense, right?)
16:47:45 <ais523> yes, in a way
16:47:56 <ais523> no if you've ever decided to use xmonad in the past and not acted on it, though
16:48:12 <elliott> hmm, howso?
16:48:20 <ais523> wow, Montclair State University has just sued Oracle for extortion
16:48:53 <ais523> is a university large enough to successfully sue Oracle, I wonder?
16:51:38 -!- Ngevd has quit (Ping timeout: 276 seconds).
16:52:05 <elliott> !logs
16:55:17 <ais523> elliott: what's that meant to do?
16:55:24 <elliott> what it does do
16:55:40 <ais523> nothing visible in channel, at least
16:55:46 <ais523> does it do anything via PM/PN/DCC?
16:55:53 <elliott> yes
16:57:57 <elliott> "The people in #haskell channel kept tolding me things that don't go." --zzo38, in these logs i'm gepping
16:57:58 <elliott> grepping
16:58:20 <ais523> "tolding" sounds like a time travel verb
17:00:24 <Gregor> "Toading" sounds like a sexual perversion in the Mushroom Kingdom.
17:00:37 <itidus21> the unabomber should destroy both oracle and montclair
17:00:38 -!- cswords has joined.
17:01:03 <Gregor> Uh oh, somebody in Indiana.
17:01:13 <Gregor> You know what they say about people in Indiana! Not much actually.
17:01:41 <ais523> meanwhile, it seems that And Yet It Moves actually has an achievement called Gregor
17:02:02 <Gregor> ais523: Gregor is the greatest of all achievements. Many hope to achieve Gregor, few succeed.
17:02:14 <ais523> well, I achieved it reasonably easily
17:02:23 <ais523> (it's for doing five levels in limited rotations mode)
17:02:25 <Gregor> Lies
17:02:36 <cswords> o.O
17:02:36 <ais523> perhaps it's a different Gregor
17:02:37 <cswords> What?
17:03:00 <cswords> I'm a PL grad student in CS at IU Bloomington, if that gets me any street cred.
17:03:05 <ais523> `? welcome
17:03:08 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:03:11 <Gregor> cswords: Uh oh, I think we're supposed to fight now.
17:03:22 <Gregor> cswords: 'cuz I'm a PL grad student in CS at Purdue West Lafayette :P
17:03:29 <cswords> Well.
17:03:32 <ais523> meh, just do what I do when I come across someone from Manchester
17:03:40 <ais523> which is to ineffectually trade a couple of insults then get bored
17:03:45 <cswords> My school has a Dan Friedman and a Kent Dybvig. Can I harness those?
17:04:01 <Gregor> cswords: My school has RCS and ... aww fuck.
17:04:50 <cswords> You guys recently got Amal, right?
17:04:53 <cswords> She's pretty legit.
17:04:56 <ais523> hey, RCS was good for its time
17:05:34 <Gregor> ais523: I'm just making hyukjokes here :P
17:06:33 <ais523> hmm, UK media are starting to cover the US election, now
17:06:35 <ais523> what's it like over there?
17:07:00 <Gregor> ais523: The republican primaries are even more of a zoo than they usually are.
17:07:11 <ais523> what do you mean by "zoo"?
17:07:12 <Gregor> ais523: And the democrats are basically standing back going "... dafuq"
17:07:17 <cswords> That.
17:07:20 <Gregor> ais523: Where do I even begin.
17:07:25 <cswords> The republicans have chosen a bunch of crazies to run.
17:07:30 <cswords> It's like they thought
17:07:40 <Gregor> ais523: http://www.youtube.com/watch?v=0PAJNntoRgA Here's one contender
17:07:51 <cswords> "We're never going to beat Obama. Let's just run one of those people we've been promising for decades because there's never a chance he'll win."
17:07:57 <ais523> Gregor: go for it anyway, I know that the US election process probably /is/ as crazy as the UK media makes it look, but still find it hard to believe
17:08:04 <ais523> cswords: ah, I see
17:08:15 <ais523> I actually think Biden was the sanest Republican candidate there's been for a while
17:08:22 <ais523> (Palin, not so much…)
17:08:29 <cswords> Also, I lived in Texas for a long while. I would never, ever vote for Rick Perry.
17:08:48 <ais523> he actually became noticeably crazier while campaiging for the election, then back to normal after Obama won
17:08:51 <cswords> Joe Biden, the guy currentl in office as a democrat?
17:08:57 <ais523> err, not hm
17:08:59 <ais523> McCain
17:09:07 <ais523> I get confused easily between American politicans
17:09:09 <ais523> *politicians
17:09:33 <cswords> Ah.
17:09:36 <ais523> (presumably the same happens in reverse: how many Americans here know the deputy prime minister of the UK?)
17:09:43 <cswords> George McBush and Alaska Spice, you mean?
17:09:47 <Gregor> So who's still really in the running? I guess Mitt Romney and .... Mitt Romney.
17:09:53 <cswords> ais523, I can google it?
17:09:53 <Gregor> cswords: "Alaska Spice" X-D
17:10:02 <cswords> Yeah, Mitt Romney is pretty much the only sane one.
17:10:04 <cswords> And he's even crazy.
17:10:09 <ais523> cswords: indeed
17:10:12 <ais523> but that's not a case of knowing it
17:10:15 <Gregor> As republicans this year go, he's quite sane.
17:10:26 <Gregor> That doesn't make him especially sane, because it's a very biased polling group.
17:10:27 <ais523> Gregor: ooh, I've even heard of him
17:10:28 <Gregor> But y'know.
17:10:57 <cswords> I just want to beat politicians with sticks.
17:11:00 <cswords> I feel like it would be more productive.
17:11:12 <ais523> come to think of it, most UKians probably couldn't name the leader of the opposition at the moment
17:11:15 <Gregor> ais523: Herman Cain was a "major" candidate for a while. He was the CEO of a pizza chain and quoted an "anonymous poet" when he was actually quoting the theme of the Pokemon 2000 movie.
17:11:32 <ais523> Gregor: well, does Pokémon 2000 have its poet credited?
17:11:36 <ais523> if not, it's done by an anonymous poet
17:11:36 <Taneb> ais523, Ed whatshisname with the brother
17:11:42 <Taneb> Not Balls
17:11:43 <Taneb> The other one
17:11:47 <ais523> Taneb: Milliband?
17:11:53 <ais523> I know it's one of the Millibands, but can't remember which
17:11:53 <Gregor> ais523: It's not a secret, and it's not poetry, it's a piece of shitty music that's the theme to a movie :P
17:11:59 <Taneb> ais523, that one
17:12:07 <Taneb> And I know it's one of the Eds
17:12:10 <ais523> let's see… the way to remember it is that there's two Eds and two Millibands
17:12:14 <ais523> so we just take the intersection?
17:12:18 <ais523> that's a surprisingly simple mnemonic
17:12:27 <Taneb> It's not Harriet Harman
17:12:37 <itidus21> just remember it doesn't matter who wins
17:12:51 <ais523> itidus21: in the US, or the UK?
17:12:56 <ais523> in the UK it generally does matter
17:12:57 <cswords> Honestly, that pokemon thing was probably just his script writer messing with him.
17:12:57 <itidus21> hahahha.. anywhere?
17:13:08 <Gregor> Frankly I think the funniest wannabe-contender is Santorum. He honestly couldn't even get into the runnings because his name means "the frothy mix of lube and feces that is sometimes an unintended result of anal sex"
17:13:40 <ais523> itidus21: you get occasionally noticeable third-or-subsequent-party wins in the UK
17:13:44 <itidus21> ais523: i doubt that it matters in any meaningful sense
17:13:58 <ais523> and noticeable effects on the resulting policy too, especially on Europe
17:14:17 <ais523> it's even possible that Scotland will referendum about independence some time soon
17:14:23 <Gregor> cswords: You can see we talk about esoteric programming a lot here.
17:14:31 <ais523> after the results of the last election
17:14:38 <Gregor> OHHHH, CS words? Not C-Swords? Or both?
17:14:39 <ais523> Gregor: hey, can't political bribery be considered an esolang?
17:14:50 <ais523> Gregor: I was wondering that myself, I saw both expansions pretty quickly
17:14:51 <Taneb> We should make an esolang about European politics
17:14:52 <Gregor> ais523: Too mainstream :P
17:15:17 <ais523> Taneb: of the EU government in particular? or the various member states?
17:15:18 <Taneb> And I was too busy trying to figure out what "csw" meant
17:15:21 <Gregor> Whois suggests it's probably C. Swords
17:15:22 <ais523> their governments aren't that similar to each other
17:15:25 <Taneb> ais523, europe as a whole
17:15:35 <ais523> Taneb: both?
17:15:37 <Taneb> With all the minutuae
17:15:42 <cswords> Gregor, it's C. Swords.
17:15:47 <Taneb> Right down to the councillor for Hexham East
17:15:50 <cswords> Though apparently I've been mistaken for a bot who spews CS terms.
17:16:02 <ais523> Taneb: what constituency is Hexham in, btw?
17:16:02 <itidus21> hexham is full of idiots
17:16:07 <ais523> is it large enough to have one for itself?
17:16:09 <Taneb> ais523, the handily named Hexham
17:16:16 <Taneb> Not large enough, remote enough
17:16:20 <ais523> indeed, that's quite a convenient name
17:16:27 <Gregor> cswords: Haha, now we know who you are!
17:16:35 <Taneb> It's one of the largest in England
17:16:36 <ais523> oh, it's the only place of note in the entire surrounding countryside, so the constituency it's in is named after it?
17:16:42 <Taneb> Yup
17:16:46 <Gregor> cswords: Although if you get a PhD, you'll be Dr. Swords, which is almost as good as my colleague Prof. Hammer
17:16:56 <cswords> Haha.
17:17:00 <Taneb> It contains the point in the UK that is furthest from a road
17:17:01 <cswords> That's part of why I'm working on my PhD.
17:17:02 <Taneb> I think
17:17:11 <cswords> I can become a supervillain without even changing my name.
17:17:17 <Taneb> If I had a PhD, I'd sound like a supervillain almost as much
17:17:21 <Taneb> With a little keming
17:17:33 <Gregor> Dr. Richards. BORING NAME. *sobblecopter*
17:18:07 <ais523> hmm, I couldn't become a supervillain without changing my name, but not because of the name
17:18:12 <ais523> I'm just not cut out to be a supervillain :(
17:18:23 <itidus21> you're not evil enough
17:18:27 <ais523> indeed
17:18:41 <itidus21> you're the margarine of evil, the diet coke of evil
17:19:14 <Taneb> I think he's closer to the Ghandi of evil
17:19:16 <ais523> I'd probably be pretty bad even as a subvillain, to be fair
17:19:22 <Taneb> That is, not even evil
17:20:06 <Taneb> Actually, if I got a PhD, I think Marvel could have a could try at a lawsuit against me
17:20:27 <Gregor> Taneb: We don't know your surname :P
17:20:30 <itidus21> hexham in the UK?
17:20:35 <Taneb> itidus21, yes
17:20:35 <ais523> itidus21: it is
17:20:40 <Taneb> Gregor, van Doorn
17:21:08 <itidus21> i live on the roof of the forum cinema in hexham
17:21:09 <ais523> there are also three esolangers there: elliott, Taneb, and we don't know of the existence of the third but I'm claiming they exist now in order to be able to go "see? I was right" later
17:21:34 <elliott> back
17:21:37 <Taneb> itidus21, I reckon you're closer to spoon's roof
17:21:49 <elliott> oh, a new person!
17:21:50 <Gregor> ais523: Obviously itidus21
17:21:51 <elliott> hi cswords
17:22:03 <Gregor> elliott: A /legit/ new person. Not locking us in a matrix of solidity or anything.
17:22:05 <ais523> elliott: the funny thing is, I expected they'd probably been here before but `?welcomed them anyway
17:22:10 <itidus21> it sure is a small little hamlet
17:22:13 <ais523> see, my plan paid off!
17:22:32 <elliott> <ais523> err, not hm
17:22:32 <elliott> <ais523> McCain
17:22:32 <elliott> :D
17:22:44 <elliott> Biden McCain
17:22:58 <elliott> Gregor: Then who is going to lock us in our matrix of solidity? :/
17:23:10 <itidus21> I can be found in Gallowsbank Wood...
17:23:10 <Taneb> itidus21, Dilston is a hamlet. Lowgate is a hamlet. /Fellside/ is a hamlet. Hexham is a TOWN godammit!
17:23:26 <Gregor> elliott: Don't worry, we'll ALWAYS be locked in a matrix of solidity. We lock it ourselves.
17:23:55 <Gregor> cswords: BTW:
17:23:57 <Gregor> `help
17:23:58 <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/
17:24:04 -!- Vorpal has joined.
17:24:07 <elliott> <itidus21> hexham is full of idiots
17:24:09 <elliott> :'(
17:24:12 <cswords> I wsa here earlier this morning.
17:24:17 <Gregor> Because every new person has to go "huh?" and then try to hack the bot.
17:24:19 <cswords> :O
17:24:30 <ais523> Gregor: also, every old person?
17:24:32 <elliott> cswords: oh, thanks for reminding me I haven't logread yet
17:24:43 <cswords> How does it handle forkbombs?
17:24:44 * elliott will defer it until there isn't innocent newbies around.
17:24:53 <ais523> cswords: they just vanish after a while
17:24:54 <elliott> ` :() { : | :& }; :
17:24:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
17:24:57 <elliott> oops
17:25:00 <elliott> `run :() { : | :& }; :
17:25:03 <HackEgo> No output.
17:25:08 <cswords> :D
17:25:12 <elliott> ais523: they vanish a lot quicker than that; ulimits
17:25:14 <cswords> That's good.
17:25:19 <elliott> <Gregor> ais523: Herman Cain was a "major" candidate for a while. He was the CEO of a pizza chain and quoted an "anonymous poet" when he was actually quoting the theme of the Pokemon 2000 movie.
17:25:19 <elliott> <Gregor> ais523: It's not a secret, and it's not poetry, it's a piece of shitty music that's the theme to a movie :P
17:25:29 <cswords> I'm an innocent newbie?
17:25:30 <elliott> Gregor: Hey, I want to live in a world where major political candidates quote the theme to the Pokemon 2000 movie.
17:25:31 <ais523> now I'm trying to remember if I've watched Pokémon 2000
17:25:32 <cswords> I don't feel like one :/
17:25:37 <elliott> cswords: Well, maybe a guilty newbie.
17:25:39 <ais523> what was the plot about? I've watched exactly two Pokémon movies, I Think
17:25:40 <ais523> *I think
17:25:48 <Taneb> cswords, I was probably the most innocent newbie here
17:25:57 <elliott> We corrupted Taneb in, like, a day.
17:26:00 <Taneb> ais523, I've seen the first one, and the one with Celebi in it
17:26:03 <elliott> `quote poultry
17:26:06 <HackEgo> 200) <Gregor> elliott: My university has two Poultry Science buildings. <Gregor> Two! \ 297) <Phantom__Hoover> Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice.
17:26:12 <elliott> cswords: How many poultry science buildings does /your/ university have?
17:26:31 <ais523> elliott: I'm not aware that mine has any
17:26:33 <Taneb> cswords, I will now transform into my other alias!
17:26:38 -!- Taneb has changed nick to Ngevd.
17:26:39 <cswords> http://www.google.com/search?rlz=1C1_____enUS420US420&gcx=c&sourceid=chrome&ie=UTF-8&q=IU+bloomington+poultry+science Looks line none.
17:26:39 <ais523> but it has quite a lot of buildings, so it's possible I just haven't found one yet
17:26:42 <Ngevd> `? Ngevd
17:26:43 <coppro> ais523: it's the one with lugia nd the three islands
17:26:44 <HackEgo> S~v8.y[$V&.F..m*`uޱsu#͔کף.Th.U.>-.i*.5eu6*q]q.ŕmL.#y.:VjĎNPH:'.V[OK+v.Z9ɚM*ԽH.k*Q]ia/]95rFԴ.W( B..?.^}]mM
17:26:49 <Gregor> Oy vey, we go CRAZY when there are new people.
17:26:49 <coppro> one of the three I've seen
17:26:51 <Gregor> CRAAAAAAAAAAZY
17:26:53 <elliott> cswords: Vastly inferior!
17:27:01 <ais523> coppro: with the first gen legendary bird trio key to the plot?
17:27:03 <cswords> Seriously.
17:27:07 <ais523> in that case, I have watched it
17:27:08 <elliott> Gregor: Um, we haven't even introduced the other bots yet?? We can get way crazier.
17:27:11 <cswords> Gah, I have to study for this final at 5.
17:27:12 <elliott> cswords: Say hi to fungot!
17:27:12 <fungot> elliott: so i can unroll the loops it's always shorter than the other
17:27:21 <cswords> It's on type inferencing and logic programming :()
17:27:23 <elliott> It's written in Funge-98!
17:27:24 <elliott> ^source
17:27:24 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
17:27:24 <coppro> ais523: yes
17:27:32 <Ngevd> > "I can do Haskell!"
17:27:32 <ais523> cswords: ooh, type inference
17:27:33 <lambdabot> "I can do Haskell!"
17:27:51 <elliott> !c printf("And nobody loves me.\n");
17:27:56 <cswords> ais523, it's written in miniKanren...
17:27:57 <EgoBot> And nobody loves me.
17:27:59 <ais523> coppro: I always thought those diagrams which changed colour to show the balance of power between the birds would make a good board game, but never figured out how
17:28:08 <elliott> cswords: Kanren! Didn't Oleg do that?
17:28:13 -!- Phantom_Hoover has joined.
17:28:15 <cswords> Yeah, with Dan.
17:28:16 <ais523> hmm, I've never heard of Kanren
17:28:17 <Ngevd> ^ul (I have no idea if this will work)S
17:28:17 <fungot> I have no idea if this will work
17:28:20 <cswords> (Dan's teaching the class.)
17:28:23 <ais523> now, elliott will mock me for never having heard of it
17:28:31 <cswords> ais523, it's a logic programming language embedded in Scheme.
17:28:34 <Ngevd> fungot does underload and brainfuck(?), too
17:28:34 * elliott has only ever seen Kanren referenced on Oleg's site.
17:28:34 <fungot> Ngevd: what can we do it your way since it's your lang). xd.
17:28:37 <Phantom_Hoover> Hello everyone?
17:28:39 <elliott> And knows almost nothing about it.
17:28:45 <elliott> hmm, how do you continue a /me on another line?
17:28:48 <ais523> elliott: err what, that's out of character for you
17:28:55 <elliott> both /me and /msg seem inadequate
17:28:58 <ais523> Ngevd: yep, underload/bf
17:29:01 <elliott> we need a /me... or something
17:29:05 <cswords> elliott, http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=10663 Dan's teaching the class and Will is a guy I play starcraft with.
17:29:11 <ais523> elliott: definitely /msg is better than /me, although I agree it isn't perfect
17:29:14 <Ngevd> Egobot can do...
17:29:29 <Ngevd> !userinterps
17:29:29 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd glogbot_ignore google graph hello helloworld id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh sw
17:29:33 <elliott> cswords: Oh no, not another Starcraft player.
17:29:41 <elliott> That makes at least two.
17:29:46 <ais523> elliott: it's quite common
17:29:58 <Ngevd> That's almost as many as there are Hexhamites in here!
17:29:59 <cswords> I was up to platinum back in March, but my thesis and grad school have been eating my skills.
17:30:00 <ais523> !rot47 abcde
17:30:01 <EgoBot> 23456
17:30:03 <elliott> (How long until the bloody Starcraft/Homestuck #esoteric civil war of 2012 begins?)
17:30:10 <elliott> (Or the Hexham/Helsinki war, I suppose.)
17:30:15 <elliott> (It could go either way.)
17:30:19 <cswords> What's Homestuck?
17:30:23 <Ngevd> :D
17:30:24 <Gregor> elliott: That ... that is an unlikely war in the real world :P
17:30:27 <Ngevd> ::::D
17:30:30 <Vorpal> hi
17:30:35 <elliott> cswords: A very long webcomic.
17:30:42 <Ngevd> Very short, too, in a way
17:30:43 <ais523> Vorpal: this is probably a bad conversation to appear in the middle of
17:30:43 <itidus21> i wonder what properties of hexham inspire esolang
17:30:44 <elliott> Gregor: Good thing this is IRC, then!
17:30:53 <ais523> elliott: it's nowhere near as long as Mezzacotta
17:31:05 <Gregor> How 'bout Minecraft? We can get the TRIFECTA
17:31:06 <elliott> ais523: YET.
17:31:21 <elliott> Gregor: The Minecrafters seceded like a year ago, dude!
17:31:27 <cswords> What is Hexham?
17:31:34 <ais523> cswords: a town in the UK
17:31:35 <cswords> All attempts to google it end poorly.
17:31:37 <cswords> Oh.
17:31:37 <elliott> cswords: A considerably shorter webcomic in Finland.
17:31:39 <ais523> which is /just/ large enough for me to have heard of it
17:31:55 <elliott> Helsinki is a Hexham-based RTS game with population ~10k.
17:31:58 <ais523> elliott currently lives there, so does Ngevd
17:32:10 <Ngevd> It seems the two most popular places for esolangers to live are Hexham and Helsinki
17:32:29 <Ngevd> I tried to get a friend into esolanging
17:32:34 <Ngevd> But he lives in Corbridge...
17:32:39 <Ngevd> So he won't :(
17:32:57 <cswords> So, for the exam, I need to know Monads (mostly just state and reader), type inferencing, logic programming (converting to, reading and explaining output).
17:33:00 <cswords> This will be... fun.
17:33:02 * elliott will never ally with a despicable Corbdigea... Corbridigia... Corbri... I give up.
17:33:03 <Vorpal> <ais523> Vorpal: this is probably a bad conversation to appear in the middle of <-- okay, I just wanted to check for lambdabot messages really
17:33:18 <elliott> cswords: Not just type inference but type inferen/cing/?
17:33:21 <elliott> Ten times more verbed!
17:33:27 <elliott> @tell Vorpal Hi.
17:33:27 <lambdabot> Consider it noted.
17:33:29 <ais523> Vorpal: #haskell would have been safer
17:33:31 <Vorpal> elliott, ..
17:33:31 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
17:33:36 <Gregor> cswords: Dude, in #esoteric the 13-yr-olds know those. Ba-dum tish.
17:33:41 <cswords> Ah.
17:33:43 <Ngevd> elliott, you want "Corstopitan"
17:33:44 <cswords> Well, nevermind then.
17:33:48 <Gregor> :P
17:34:06 <Vorpal> ais523, really? I'm kind of busy and not about to really join into the discussion, but why is it a bad conversation to appear in the middle of?
17:34:15 <Ngevd> They use Latin when available and not stupid
17:34:16 <ais523> too much context required
17:34:26 <Ngevd> Like "Oxonian" and "Novacastrian"
17:34:47 <elliott> *Novocastrian
17:34:49 <elliott> Sez google
17:34:53 <ais523> cswords: what do you mean by "logic programming"? I'm pretty sure I know what it is, but am unsure at how to expan that name for it
17:35:07 <elliott> ais523: Prolog, surely
17:35:08 <ais523> elliott: just try with Birmingham, it doesn't work
17:35:11 <elliott> or rather, Kanren :P
17:35:13 <elliott> but Prolog-alikes, I mean
17:35:16 <ais523> elliott: ah, OK
17:35:24 <ais523> I thought that's what it meant, but it didn't seem to make sense in context
17:35:24 <Vorpal> ais523, ah.
17:35:28 <cswords> I wouldn't say Kanren is much like Prolog, to be honest.
17:35:32 <elliott> ais523: That's easy, residents of Birmingham are referred to as "bums"
17:35:37 <coppro> ais523: birminghamiltonian
17:35:40 <elliott> From the original Latin.
17:35:52 <ais523> coppro: hmm…
17:36:35 <elliott> (diff) (hist) . . Language list‎; 09:06 . . (+215) . . 149.255.39.58 (Talk) (That's fine for the House and Senate but for president, there is no way any conservative should vote for either Democrat that will be stuffed down our throats next year. The House is the grand prize.)
17:36:39 <elliott> What a good spam edit summary.
17:37:24 <coppro> dammit now I have the song from pokemon 2000 stuck in my head
17:37:36 <ais523> elliott: well, it's not like I can protect the language list
17:37:40 <ais523> I can, but it'd be pointless
17:37:45 <ais523> or rather, counterproductive
17:37:49 <Gregor> So glad I never watched a Pookieman movie.
17:37:49 <elliott> ais523: I didn't tell you to :P
17:37:54 <Gregor> Or had any of the games.
17:37:55 <coppro> Gregor: WHAT?
17:38:01 <Gregor> Or could name more than two Pookiemans.
17:38:04 <ais523> elliott: I know
17:38:04 <coppro> Gregor: Watching at least two is mandatory
17:38:08 <ais523> Gregor: which two?
17:38:14 <elliott> Gregor: Uhh, but do you not, to quote an anonymous poet, wanna be the very best, like no-one ever was?
17:38:18 <ais523> I'd expect you to have at least one in short-term memory as it was mentioned earlier
17:38:21 <Ngevd> Gregor, I named a Pokemon after you!
17:38:27 <Gregor> ais523: Pikachu and Squirtle (if I'm spelling that right)
17:38:27 <Ngevd> It's now a Kirlia!
17:38:34 <elliott> Gregor: Not even Bulbasaur?
17:38:36 <ais523> Gregor: indeed you are
17:38:46 <coppro> Gregor: The games are also awesome
17:38:49 <Gregor> elliott: I know that names one, but I couldn't associate it with the actual Pookieman.
17:38:55 <elliott> Gregor: Leaf turtle.
17:38:58 <elliott> Angry leaf turtle.
17:39:01 <ais523> you know, some day there'll be someone who says "I only know one/two Pokémon", then names a really obscure one rather than one of the starters
17:39:13 <Gregor> elliott: Then it should be Angryliefturtlemon :P
17:39:15 <ais523> elliott: hey, it doesn't get leaves until it evolves to Ivysaur
17:39:20 <ais523> Gregor: but that's /Digimon/'s naming scheme!
17:39:26 <elliott> ais523: BULBS THEN!!
17:39:27 <Gregor> *gasp*
17:39:29 <Ngevd> Tropius and Luvdisc
17:39:42 <elliott> <ais523> you know, some day there'll be someone who says "I only know one/two Pokémon", then names a really obscure one rather than one of the starters
17:39:49 <elliott> ais523: How many Pokemon games until everyone forgets the original starters?
17:39:51 <coppro> are we now having a Most Obscure Pokemon Naming Challenge?
17:39:55 <Ngevd> But yeah, I'm stuck on Petalburg gym
17:39:58 <Vorpal> hm I actually played a bit of a pokemon game, yet I can only name Pikachu and Magikarp
17:40:05 <Vorpal> I don't remember the names of any other ones
17:40:07 <ais523> elliott: infinity, they keep plowing on the original starters for marketing value even when they aren't actually in the game
17:40:12 <cswords> Well it was nice to meet you people! I'm gonna idle here, but disappear to coerce knowledge into my head.
17:40:16 <ais523> Vorpal: well, Magikarp isn't a starter
17:40:27 <Vorpal> ais523, I just remember it being bloody useless
17:40:28 <Ngevd> Imagine if it was!
17:40:30 <elliott> Ngevd: Ruby or Sapphire?
17:40:33 <Ngevd> Emerald
17:40:35 <elliott> I have prepared to war with you depending on the answer.
17:40:36 <Vorpal> ais523, anyway neither was Pikachu iirc in that game
17:40:37 <elliott> Oh.
17:40:43 <elliott> The Lib Dem option!
17:40:44 <Gregor> What other popular things do I know nothing about ...
17:40:45 <Vorpal> ais523, it was some GBA one. Don't remember which.
17:40:48 <ais523> Vorpal: Pikachu's a starter in Pokémon Yellow
17:40:59 <ais523> which was based on the plot of the anime
17:41:04 <ais523> (it's the game of the anime of the game…)
17:41:06 <Vorpal> I think it might have been emerald or something like that?
17:41:08 <elliott> cswords: try unsafeCoerce
17:41:10 <Vorpal> that I played a bit of
17:41:22 <Ngevd> elliott, I'm left wing anti-unionist. And Emerald is Green. The last Lib Dem Pokemon game was Heart Gold, and before the Gold, and before that, Yellow Pikachu Special
17:41:24 <ais523> Vorpal: well, Magikarp is not a starter in any game
17:41:27 <ais523> because it's /Magikarp/
17:41:27 <coppro> Emerald was very good
17:41:28 <Vorpal> some gem stone anyway
17:41:31 <Vorpal> ais523, indeed
17:41:39 <Vorpal> gemstone*
17:41:46 <elliott> Ngevd: Pokemon politics are so confusing.
17:41:50 <elliott> ais523: Magikarp would be the best starter.
17:41:53 <coppro> obligatory: http://www.youtube.com/watch?v=ye7b3bOQ6lY
17:41:54 <ais523> Vorpal: it'd have been Ruby/Sapphire/Emerald
17:41:56 <elliott> Pokemon Horrific Crippling Failure
17:42:10 <ais523> elliott: well, it /is/ possible to complete the game without your starter being able to deal damage
17:42:12 <Vorpal> ais523, I think the bad guys were "team magma" or something like that
17:42:15 <elliott> ais523: :D
17:42:16 <ais523> Vorpal: Sapphire
17:42:17 <Vorpal> ah
17:42:30 <coppro> I love the newest pokedex text for magikarp
17:42:34 <ais523> that was genuinely the missing piece of information, as one of the few things that varies between third-gen games
17:42:40 <Ngevd> Vorpal, or Emerald, but that had team Aqua as villains, too
17:42:44 <ais523> coppro: what is it? (and is it the same in black and white?)
17:42:58 <Vorpal> hm
17:43:08 <coppro> ais523: It's the same as one of the earlier ones. Basically "It can use Splash to jump over a mountain, but the move is still entirely useless."
17:43:08 <ais523> *in black as in white
17:43:14 <coppro> and yeah, it's the same between games
17:43:14 <ais523> coppro: right, OK
17:43:25 <Vorpal> Ngevd, how could I tell which one from a vague recollection of playing a few hours of a game I found rather repetitive.
17:43:28 <Vorpal> :P
17:43:46 <ais523> Vorpal: were you playing on someone else's completed game? or on a new game file?
17:43:46 <Vorpal> I mean sure, it was fun for the first hour or two. But then it was just more and more of the same stuff.
17:43:57 <Vorpal> ais523, I think I was playing in an emulator. And new game
17:44:10 <ais523> hmm
17:44:22 <ais523> one problem with the Pokémon games is that they've mostly gotten easier over time
17:44:24 <Ngevd> What colour was your character's headthingy band
17:44:27 <ais523> with the result that there isn't a whole lot of skill in it any more
17:44:31 <Gregor> ais523: Sort of like all other games?
17:44:45 <ais523> Ngevd: that varies between third-gen games?
17:44:47 <coppro> ais523: I always felt that RSE was the worst for difficulty
17:44:47 <elliott> Gregor: "Games are sooo easy" -- person who doesn't play any games
17:44:51 <Gregor> 8-D
17:44:54 <Vorpal> ais523, I do believe I got near some sort of temple or something with really hard guys at the very right side of the map before I got too bored and stopped playing.
17:44:55 <Ngevd> ais523, between R/S and E
17:45:07 <Gregor> elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either!
17:45:08 <Ngevd> ais523, R/S is red, E is green
17:45:08 <ais523> also, you're assuming that Vorpal was playing as Brendon rather than as May
17:45:12 <coppro> ais523: maybe I'm just bad, but the final fights in BW were a pain, and then the postgame does a massive difficulty spike
17:45:13 <elliott> `addquote <Gregor> elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either!
17:45:13 <ais523> which is probably quite a safe guess
17:45:15 <HackEgo> 763) <Gregor> elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either!
17:45:17 <Vorpal> ais523, who?
17:45:29 <ais523> Ngevd: err, I thought Brendon's headband was white?
17:45:29 <elliott> Vorpal: what answer do you expect to that question?
17:45:41 <Ngevd> ais523, his hair was, his headband wasn't?
17:45:49 <ais523> Ngevd: aha, that could have been it
17:45:49 <Vorpal> elliott, well, could you select gender or name or something? I don't remember.
17:45:56 <ais523> Vorpal: you can select gender
17:46:00 <Vorpal> ah
17:46:12 <ais523> Brendon and May are the canon names for the male and female characters that aren't just "Ruby" and "Sapphire"
17:46:14 -!- pikhq_ has quit (Ping timeout: 252 seconds).
17:46:18 -!- pikhq has joined.
17:46:44 <Vorpal> ais523, well I /probably/ played as a guy.
17:46:52 <Vorpal> <Ngevd> What colour was your character's headthingy band <-- you think I could remember that?
17:46:59 <Vorpal> no chance
17:47:10 <Ngevd> Well, if you remember a temple...
17:47:19 <Vorpal> or something like that
17:47:29 <Vorpal> might not have actually been called a temple
17:47:33 <Ngevd> Probably not the oceanic museum
17:47:45 <Ngevd> Probably not the volcano
17:47:50 <ais523> hmm, have there been /any/ temples in Pokémon?
17:47:56 <Ngevd> ais523, in Ranger
17:48:01 <ais523> Ngevd: definitely, agreed
17:48:05 <Vorpal> Ngevd, oh some sort of museum with somewhat educational signs in it sounds familiar now that you mention it
17:48:07 <itidus21> elliott: game difficulty is perhaps the greatest allure of the game... how exactly a game comes to be difficult
17:48:09 <Vorpal> I think there was such a thing
17:48:12 <elliott> oh no, I might have to abort this logread
17:48:16 <ais523> in the main games, Spear Pillar probably counts, so does that Sinjoh event place in HeartGold/SoulSilver
17:48:31 <itidus21> who can say
17:48:32 <Ngevd> And the church in one of the cities in Pearl/Diamond
17:48:40 <ais523> Ngevd: but that's a church
17:48:41 <coppro> ais523: The Regigigas temple
17:48:44 <Vorpal> <ais523> hmm, have there been /any/ temples in Pokémon? <-- I don't know what it was actually called. Final dungeon? Whatever.
17:48:44 <ais523> does that count as a temple
17:48:55 <coppro> think so
17:48:56 <ais523> coppro: right, indeed, definitely; "Snowpoint Temple", I forgot about that
17:48:57 <Vorpal> It just reminded me of a temple, that was all
17:49:05 <Ngevd> Vorpal, hmm
17:49:09 <ais523> Vorpal: the final dungeon is Victory Road in every Pokémon game so far
17:49:10 <Ngevd> Was there lava?
17:49:15 <ais523> in no game has it even vaguely resembled a temple
17:49:24 <coppro> ^
17:49:35 <coppro> BW had a great Victory Road
17:49:39 <Vorpal> Ngevd, at some point in the game yes. There was also some water at in a lake or something :P
17:49:39 <Ngevd> ais523, Leaf Green and Fire Red, it did a bit
17:49:43 <ais523> (note: it's /called/ Victory Road in each game, but is different in each)
17:49:57 <Vorpal> <ais523> in no game has it even vaguely resembled a temple <-- so my memory might be off then.
17:50:04 <ais523> coppro: hmm, all of them are pretty good
17:50:08 <Ngevd> Could it be Mt. Pyre?
17:50:14 <Vorpal> eh, no clue
17:50:20 <ais523> Ngevd: Vorpal said the bosses were to the right
17:50:23 <coppro> ais523: I found RBY's to be a bit annoying
17:50:25 <ais523> in Mt. Pyre, they're upwards
17:50:26 -!- Ngevd has quit (Quit: Goodbye).
17:50:35 <Vorpal> shurg
17:50:38 <ais523> coppro: RBY had the best puzzles
17:50:42 <coppro> ais523: true
17:50:46 <Vorpal> well we know it was sapphire or emerald I guess
17:50:48 <elliott> ais523: is Pokemon Blite/Whack worth playing?
17:50:50 <ais523> and the Victory Road puzzle is quite a good one
17:50:51 <coppro> BW's puzzles sucked
17:51:00 <Vorpal> and does it really matter which one?
17:51:05 <coppro> I was especially annoyed by the last gym
17:51:06 <ais523> elliott: it's not as good as some of the other Pokémon games, but it's still quite good
17:51:12 <coppro> which the NPCs keep talking about as if it's a real headscratcher
17:51:13 <ais523> it's extremely linear, unlike most of the others
17:51:14 <coppro> but it's not
17:51:17 <elliott> ais523: the only other one I've played is Sapphire
17:51:19 <coppro> you only have one direction to go
17:51:35 <ais523> and it's /literally/ linear, in that the accessible-before-endgame world map is literally topologically equivalent to a line
17:51:41 <coppro> yeah
17:51:48 <ais523> except Anville Town, but it's intended for competitive players and most other players don't spot it at all on their first run through
17:51:54 <coppro> HG/SS are definitely the best
17:52:00 <ais523> coppro: agreed
17:52:30 <ais523> elliott: Black/White are pretty streamlined and low on annoyances, anyway
17:52:40 <coppro> after that, probably the original G/S
17:52:56 <ais523> it has the look about it of a game in an established series that isn't trying to annoy anyone and isn't trying to do anything vastly amazing and new
17:53:00 <coppro> I really enjoyed FR/LG too, probably above B/W
17:53:00 <ais523> most of the innovations are in the graphics
17:53:12 <coppro> D/P are the worst in my opinion
17:53:17 <ais523> hmm, interesting
17:53:31 <ais523> perhaps if you ignore the battle system
17:53:34 <elliott> ais523: hmm, I might play it if DS emulation is good enough; I probably don't care enough to play it on a physical DS
17:53:41 <coppro> ais523: What would you say is the worst?
17:53:49 <ais523> elliott: Black/White have anti-emulator code, although it's probably been patched around by now
17:54:00 <ais523> coppro: well, I haven't actually played FR/LG
17:54:07 <coppro> ais523: ah
17:54:16 <Vorpal> anyway there are two major problems I have with the pokemon games: 1) to me they get repetitive after a few hours 2) Nintendo released multiple versions of the same game basically. I mean, the difference between red/green, sapphire/ruby are basically just that a different team are the bad guys. Sure it is cheaper for nintendo, but I don't think it is fair towards the buyers really
17:54:17 <ais523> they're all good in different ways
17:54:21 <coppro> true
17:54:25 <elliott> Vorpal: "fair"?
17:54:26 <ais523> R/B hasn't held up all too well with time, I think
17:54:28 <elliott> you buy one and exactly one of them
17:54:29 <coppro> I agree
17:54:37 <ais523> although all the glitches that have been discovered since make it fun just for that
17:54:38 <elliott> so the buyers end up paying... um, the exact same amount as they would
17:54:54 <coppro> RBY don't have the improvements in interface that started around 3rd gen
17:55:19 <ais523> coppro: well, HGSS wins on interface, hands down
17:55:23 <coppro> yeah
17:55:35 <coppro> it's kind of annoying to me that they didn't bring the good features back
17:55:36 <Vorpal> elliott, right, and then you miss out on content from the other game. They could just have put both stories in the same game with a selection at the start. The difference are rather small from what I understand.
17:55:41 <ais523> it's the AceHack to gold/silver
17:55:42 <elliott> Vorpal: there is no content from the other game
17:55:43 <coppro> you could play HGSS without the ABXY buttons
17:55:48 <elliott> Vorpal: apart from one pokemon and like
17:55:52 <elliott> a mirror storyline
17:55:53 <ais523> which you can trade
17:56:06 <elliott> if you have one game, you can mathematically derive the other one
17:56:07 <Vorpal> elliott, to me, story is important
17:56:15 <coppro> Vorpal: Emerald's is better anyway
17:56:15 <ais523> coppro: the explanation to that is that multiple Pokémon games are developed at once
17:56:16 <elliott> Vorpal: the stories are literally identical, you just s/word/inverse/
17:56:21 <coppro> ais523: yeah
17:56:29 <ais523> e.g. Diamond and Pearl and FireRed/LeafGreen were being developed at the same time
17:56:34 <Vorpal> elliott, and different enemy base maps and such.
17:56:36 <elliott> sapphire: team magma want to get rid of water!!! ruby: team aqua want to get rid of land!!!
17:56:39 <ais523> I don't know for a fact that that's true with HGSS/BW, but it wouldn't surprise me at all
17:56:42 <elliott> Vorpal: not to my knowledge
17:56:47 <coppro> Hopefully Gy will have the non-suck interface from HGSS
17:56:49 <ais523> Vorpal: the enemy base maps are the same
17:56:57 <coppro> What really frustrates me about BW is the inconsistency
17:57:00 <Vorpal> ais523, heh really?
17:57:06 <elliott> also, anyone who cares most about story is going to be incredibly disappointed by the pokemon games :P
17:57:16 <coppro> There are menus where you can't use the touch screen, and menus where you can't use the buttons
17:57:19 <ais523> elliott: hmm, they've actually made an effort with the story in BW
17:57:19 <Vorpal> ais523, so they have to do neutral bases then, rather than theme them after the team?
17:57:23 -!- NihilistDandy has joined.
17:57:32 <elliott> ais523: huh
17:57:42 <coppro> it's true
17:57:43 <Vorpal> hm is pokemon an RPG? I think it kind of is in that genre
17:57:46 <ais523> not only is it internally consistent, it's even vaguely plausible, and has something resembling plot
17:57:47 <ais523> Vorpal: yes
17:57:53 <elliott> Vorpal: ofc it is
17:57:59 <coppro> ais523: And, most importantly, emotional investment
17:58:02 <Vorpal> well then, how can you say story is not important
17:58:04 <coppro> I found myself feeling sorry for N by the end of it
17:58:07 <ais523> coppro: meh, I ignore that
17:58:12 <elliott> Vorpal: because it isn't?
17:58:15 <elliott> RPGs have gameplay, too
17:58:20 <ais523> you can feel sorry for N, but if you think about it, the ending treats him pretty well
17:58:38 <elliott> "His full name was revealed to be Natural Harmonia Gropius"
17:58:46 <Vorpal> elliott, sure, but story is kind of important to them. Much more so than many other genres.
17:58:47 <elliott> --bulbapedia
17:59:04 <coppro> ais523: It certainly does; that doesn't mean I can't feel sorry for his history
17:59:06 <ais523> in that his actions throughout most of the game can be interpreted as an attempt to find out the truth with respect to something in particular, and at the end, he actually discovers it
17:59:23 <elliott> ais523: ooh, it's spoiler-free spoiler communication
17:59:25 <elliott> this is always fun!
17:59:30 <ais523> elliott: indeed
17:59:32 * elliott tries to deduce the spoilers involved through pure reason
17:59:54 <ais523> well, the whole point in that communication style is that you probably can figure it out if you want to, but it takes enough mental effort that you won't do it without trying
17:59:58 <coppro> ais523: /most/ of his actions can. Initially he's not; it's encountering the player that causes him to doubt himself and seek the truth
18:00:07 <coppro> (well, and everyone else. But especially the player)
18:00:21 <ais523> coppro: hmm; that's one of the possible interpretations, I'm not sure it's the only one
18:00:29 <coppro> ... goddamit I'm having a discussion about the literary qualities of a Pokemon game
18:00:34 <Vorpal> anyway there is little variation in the battles. It is just basically the same all the time. Sure there are different pokemons and leveling them up and items and different techniques and so on. But it is all just "think a bit, select action from menu"
18:00:37 <ais523> really, if half the world's electorates were anything like N, the world would be a much better place
18:00:41 <Vorpal> I don't really enjoy that sort of combat
18:00:45 <elliott> pikhq: Mr. Emulator! How good is DeSmuME?
18:00:51 <coppro> ais523: hah, true
18:00:54 <elliott> `addquote <coppro> ... goddamit I'm having a discussion about the literary qualities of a Pokemon game
18:00:57 <HackEgo> 764) <coppro> ... goddamit I'm having a discussion about the literary qualities of a Pokemon game
18:00:58 <Vorpal> elliott, fairly okay for some games at least
18:01:21 <ais523> elliott: I think desmume is what's used for researching information in Pokémon
18:01:24 <ais523> like RNG research, etc
18:01:34 <Vorpal> elliott, I think I played two games in it. Was a while ago.
18:01:36 <ais523> Black/White have DRM that attempts to detect it
18:01:46 <elliott> ais523: well, that's promising; although it might be just because it's open source, rather than an especially good emulator
18:01:47 <Vorpal> elliott, not bsnes quality, not even zsnes quality. But okay.
18:01:51 <ais523> still, if you want to play the games, you should really buy them if you think it's worth the money
18:01:54 <elliott> which makes it possibly easier to automate
18:02:05 <ais523> elliott: well, makes it easier to implement features like rerecording
18:02:33 <Vorpal> anyway I presume that future pokemon games are going to be on the 3DS?
18:02:34 <elliott> ais523: I would buy it if Nintendo would sell me ROMs
18:02:54 <elliott> but given the information I have, I don't think it'd be worth the hassle of playing it on a physical system
18:03:13 <ais523> Vorpal: not confirmed, but it seems pretty likely
18:03:24 -!- kmc has quit (Quit: Leaving).
18:03:32 <ais523> especially considering the 3DS's sales figure; Nintendo probably want to put out a Pokémon game to persuade people to buy the console
18:03:36 <Vorpal> ais523, I wonder how they will make use of the 3D technology in a pokemon game...
18:03:51 <ais523> Vorpal: Pokémon's been based on a 3D engine since Platinum?
18:03:53 <elliott> Vorpal: they've been doing that for multiple generations by now...
18:03:56 <Vorpal> ais523, oh okay
18:04:11 <coppro> Well the overworld has been
18:04:13 <ais523> although all the sprites are 2D
18:04:14 <itidus21> ok guys we are short on vocabulary and i am not a smart guy
18:04:15 <ais523> coppro: right
18:04:20 <itidus21> so lets clarify :D
18:04:21 <elliott> oh, the 3DS isn't actually a DS
18:04:31 <coppro> I think some of the battle animations are 3D as well
18:04:33 <Vorpal> ais523, first person perspective?
18:04:35 <itidus21> regular 3d vs stereoscopic 3d
18:04:48 <coppro> elliott: 3DS is the successor platform
18:04:49 <ais523> coppro: seems plausible
18:04:51 <itidus21> even nintendo64 pokemon has regular 3d
18:04:51 <coppro> actually pretty cool
18:05:00 <ais523> elliott: and it's backwards-compatible one generation, just like most Nintendo portables
18:05:09 <coppro> ais523: Well look at ones like Surf, or the Pledges
18:05:13 <ais523> at the moment, its major problem is that it doesn't have too many good games
18:05:18 <elliott> ais523: right, I was just so used to the endless DS revisions
18:05:22 <itidus21> nintendo ds was super backwards compatible
18:05:25 <elliott> that I assumed the 3DS was still basically a DS
18:05:31 <coppro> itidus21: No, it went back one gen
18:05:33 <ais523> most of the games fans I've talked to agree that Super Mario 3D Land is very good
18:05:39 <coppro> Yeah, I need to get that
18:05:41 <coppro> Also Mario Kart 7
18:05:43 <itidus21> DS could play original gameboy games i think
18:05:44 <ais523> itidus21: it's the GBA you're thinking of, that went all the way back to the original Game Boy
18:05:49 <itidus21> oh....
18:05:54 <itidus21> maybe..
18:05:59 <itidus21> but then again
18:06:00 <ais523> coppro: whereas Mario Kart 7 is "it's a Mario Kart game; do you like those?"
18:06:05 <coppro> (Incidentally: What is with 7 that the seventh piece of software in series X gets called X 7 regardless of prior naming schemes?)
18:06:09 <coppro> ais523: True, but I do :)
18:06:15 <ais523> fair enough
18:06:17 <Vorpal> <ais523> most of the games fans I've talked to agree that Super Mario 3D Land is very good <-- well of course a mario game is going to help selling the platform
18:06:24 <ais523> reviewers have been really stuck on it
18:06:32 <elliott> <coppro> (Incidentally: What is with 7 that the seventh piece of software in series X gets called X 7 regardless of prior naming schemes?)
18:06:36 <Vorpal> I mean that is probably one of the most known game series in the world
18:06:37 <itidus21> super mario is a bit old hat
18:06:37 <elliott> coppro: dammit, now I need to find that gif again
18:06:39 <ais523> because they can't say much about it except that it's just like the others in the series
18:06:58 <coppro> The 2D mario games that Nintendo's made over the past few years have all been very good
18:07:01 <ais523> itidus21: well, some people that I respect the opinions of (but don't always agree of) call Super Mario 3D Land the best Mario game ever
18:07:04 <coppro> NSMB and NSMBW
18:07:19 <Vorpal> ais523, I assume there will be/already is some zelda game for 3DS as well?
18:07:27 <ais523> Vorpal: Ocarina of Time, didn't you hear?
18:07:28 <ais523> they ported it
18:07:31 <Vorpal> ais523, heh
18:07:34 * elliott liked NSMBW but not as much as SMG; this seemingly-irrelevant comparison is made relevant by my playing them at the same time
18:07:45 <Vorpal> ais523, upgraded the graphics I hope?
18:07:49 <pikhq> elliott: DeSmuME is imperfect, but still a decent DS emulator.
18:07:50 <coppro> SMG1 was a true work of art
18:07:51 <ais523> and it's apparently the best Ocarina of Time version ever, although a little redundant if you've played the original
18:07:53 <ais523> Vorpal: yes
18:08:01 <coppro> Yeah, they fixed a bunch of flaws
18:08:02 <ais523> coppro: SM3DL is made by the SMG people
18:08:08 <coppro> ais523: ah, cool
18:08:15 <coppro> SMG2 was exactly that, sadly
18:08:16 <elliott> coppro: I liked SMG2, even if it was a bit too similar, and I missed the hub world
18:08:26 <Vorpal> <ais523> and it's apparently the best Ocarina of Time version ever, although a little redundant if you've played the original <-- "best ever" out of 2?
18:08:32 <ais523> Vorpal: out of 3, I believe
18:08:33 <coppro> well and http://www.youtube.com/watch?v=P29JNk7945k
18:08:34 <Vorpal> oh
18:08:35 <elliott> coppro: this perception is again made relevant by my playing SMG2 like a month after SMG1
18:08:38 <Vorpal> ais523, what was the third one?
18:08:41 <ais523> Wii
18:08:42 <itidus21> :| quick, rush out and buy uh.. (googles) phantom hourglass and spirit tracks... uhh.. go. go. go.
18:08:47 <elliott> coppro: it would probably have been a disappointment if I'd waited 3 years
18:09:14 <coppro> itidus21: hourglass was meh; spirit tracks was pretty good
18:09:22 <Vorpal> ais523, anyway Ocarina of Time was a really good game.
18:09:26 <elliott> SMG2's main disappointment is that its version of Luigi's Purple Coins is really easy :'(
18:09:29 <ais523> Vorpal: right
18:09:35 <coppro> elliott: YES
18:09:40 <ais523> elliott: which of the games is The Perfect Run in?
18:09:41 <coppro> even all the green stars were fairly easy
18:09:43 <Vorpal> ais523, also I liked zelda 2. *waits for reaction*
18:09:49 <coppro> most involved just doing a triple jump + spin
18:09:52 <ais523> Vorpal: which one was that?
18:09:54 <itidus21> i emulate windwaker on my pc but it leaves me with that painful feeling that my pc is way too old
18:09:56 <coppro> once you realized this, they were simple
18:10:02 <Vorpal> ais523, the one that wasn't very much like any other zelda game
18:10:04 <elliott> ais523: SMG2
18:10:04 <Vorpal> ais523, for the NES
18:10:06 <itidus21> i wish i had economic freedom to have always up to date PC
18:10:07 <elliott> I just googled it, didn't recall the name
18:10:17 <ais523> elliott: hmm, OK, there's your Luigi's Purple Coins equivalent
18:10:24 <elliott> ais523: I forget what it is
18:10:34 <ais523> it unlocks when you've done everything else in the game, and is freakishly difficult, although mostly in the fake-difficulty sort of way
18:10:38 <Vorpal> itidus21, was windwaker the one with cell shading?
18:10:51 <coppro> ais523: are you talking about the green stars?
18:10:54 <elliott> ais523: what is it, though?
18:11:00 <elliott> oh!
18:11:03 <elliott> is it the one with all the bosses?
18:11:04 <ais523> coppro: those are one of the prerequisites
18:11:05 <itidus21> Vorpal: yeah... its a sweet game. except my pc is not built for emulating gamecube
18:11:06 <elliott> and you only have 1 heart?
18:11:08 <coppro> ais523: oh
18:11:10 <elliott> (I youtube'd it)
18:11:12 <ais523> I'm looking for a YouTube video
18:11:13 <coppro> I may have missed this then
18:11:19 <ais523> yep, it has bosses, and platformy sections, and other things too
18:11:23 <ais523> and no continues and one health point
18:11:27 <elliott> ais523: yeah, I did that
18:11:29 <itidus21> i can run it, but i have to turn down the resolution
18:11:31 <Vorpal> anyway, are nintendo still basically aiming their platforms just at kids? (I mean, as far as I know games like Battlefield and so on are basically PS3/xbox/PC)
18:11:31 <elliott> or, hmm
18:11:33 <elliott> I think I did
18:11:45 <elliott> I certainly got all the green stars, but that's not saying much
18:11:48 <elliott> since the game proper is so easy
18:11:50 <Vorpal> itidus21, is there actually a good gamecube emulator nowdays? heh
18:11:50 <itidus21> and.. also areas where there is a lot of grass in windwaker makes framerate drop for me on my old pc in meulator
18:11:52 <coppro> Vorpal: Yes and no.
18:11:55 <ais523> here, I'll link a speedrun of it, because they tend to be more fun to watch for really difficult bits than regular runs: http://www.youtube.com/watch?v=I1zValdb0y4
18:12:05 <Vorpal> itidus21, got a link?
18:12:14 <elliott> ais523: I was watching a 4 minute one but I'll watch this one instead :P
18:12:21 <itidus21> Vorpal: ill just find the name of it
18:12:26 <Vorpal> itidus21, that works too
18:12:27 <elliott> ais523: wow, 4:3
18:12:28 <elliott> that's weird
18:12:35 <elliott> ais523: anyway, if it's what I'm thinking of, it is easier than Luigi's Purple Coins by far
18:12:42 <coppro> Vorpal: The critical points are a) The Wii's graphical capabilities lag behind its competitors and b) Nintendo's approach to online play is /very/ kid-oriented
18:12:52 <Vorpal> coppro, ah
18:12:57 <ais523> elliott: hmm
18:13:08 <itidus21> its basically just caled dolphin
18:13:08 <ais523> I actually know people who say that Luigi's Purple Coins is not as hard as it's widely considered
18:13:13 <elliott> ais523: because all these sections are from previous levels
18:13:14 <ais523> my guess is that it gets easier with practice
18:13:18 <ais523> elliott: indeed, they are
18:13:18 <elliott> and SMG2 is not very difficult
18:13:21 <coppro> ais523: Yes
18:13:25 <Vorpal> coppro, what about non-online play? I just can't imagine a TES game on a nintendo platform. Ever.
18:13:29 <coppro> By the time I beat it with Mario, doing so with Luigi was easy
18:13:35 <elliott> it was easy with luigi
18:13:36 <itidus21> my personality flaws mean if i ever try to get anything nice for myself someone else will sabotage my efforts. its very frustrating
18:13:38 <elliott> ais523: Luigi's Purple Coins is really shallow difficulty
18:13:47 <elliott> you just fail in stupid ways a few hundred times and then get it without trying
18:13:50 <coppro> Vorpal: There's been Call of Duty, James Bond, etc.
18:13:54 <elliott> but it's really aggravating
18:13:56 <Vorpal> heh
18:13:56 <coppro> Vorpal: No reason it couldn't happen
18:14:02 <coppro> except system power
18:14:05 <Vorpal> also yeah I heard the Wii sucks
18:14:17 <itidus21> Vorpal: depends how you define "good".. if you cannot afford a gamecube,,, it is the only option
18:14:22 <elliott> ais523: basically, every time you play it you feel like you have to be doing something wrong
18:14:26 <elliott> at least that's what it felt like to me
18:14:26 <Vorpal> coppro, and skyrim isn't a high end game, at least not when you compare to high end PC-exclusive titles.
18:14:31 <Vorpal> coppro, like Witcher 2
18:14:35 <itidus21> and if your pc kicks ass... the dolphin emulator likewise kicks ass
18:15:07 <elliott> ais523: yeah, pretty sure I've done The Perfect Run
18:15:14 <coppro> computing power is probably the largest reason that Nintendo announced their next console first
18:15:14 <itidus21> my personality flaws mean if i ever try to get anything nice for myself (like a kickass PC) someone else will sabotage my efforts (taking my things, taking my savings, pawning my things, giving my things away as a gift to someone else). its very frustrating
18:15:20 <itidus21> blah.. venting
18:15:25 <Vorpal> itidus21, well my PC might not kick ass, but I'm sure it could propel a donkey quite a far distance if I wanted to.
18:15:39 <coppro> itidus21: how does that have to do with your personality
18:15:50 <itidus21> coppro: you would be surprised.
18:16:14 <coppro> itidus21: you're non-confrontational so people take advantage of you or something?
18:16:21 <Vorpal> btw does anyone here know about compressive sensing theory?
18:16:35 <itidus21> coppro: essentially, yes. :-)
18:16:44 <coppro> itidus21: :( You should be more confrontational
18:16:53 <Vorpal> (I /need/ to learn more on the subject, and I would like some good resources on it)
18:17:23 <itidus21> coppro: just as the rich get richer, the non-confrontational become less confrontational
18:17:33 <coppro> hmm actually I might have done grandmaster galaxy
18:17:38 <itidus21> i am starting to think it's actually systemic
18:19:07 <itidus21> it took me many years to realize that the people who take advantage of me aren't to blame for my being non-confrontational
18:19:16 <itidus21> and even now i struggle to be sure of that
18:19:25 <Vorpal> oh well
18:19:52 <itidus21> it gives me insight into third world countries
18:21:25 <coppro> itidus21: find a friend to lean on
18:21:43 <coppro> or a lawyer to sue with
18:21:52 <coppro> either works ;P
18:21:58 -!- Ngevd has joined.
18:23:35 <itidus21> its ok.. somehow.. this universe curses everyone with problems day in day out.
18:23:53 <coppro> yeah, but you shouldn't denied your own property
18:23:56 <itidus21> there is no escape
18:23:57 * elliott achieves bingo
18:23:59 <coppro> *be
18:24:05 <coppro> you can make your problems suck less though
18:24:14 <coppro> elliott: grats
18:24:23 <elliott> coppro: i couldn't have done it without your help
18:24:30 <itidus21> if applying sufficient logic, i am a colonialist
18:24:40 <itidus21> >:-)
18:25:42 <itidus21> i am not being denied "much" property
18:25:49 <itidus21> its all exaggerated in my head
18:26:05 <itidus21> its hard to explain ehehhe
18:26:13 <coppro> :/
18:26:31 <itidus21> well.. i escaped the people who really did deny me a lot
18:26:41 <coppro> that's good
18:27:02 <itidus21> my brother is a bit more weird about it
18:27:52 <itidus21> the important thing, more important than anyting else is my side of the problem
18:29:32 -!- kmc has joined.
18:29:48 <ais523> elliott: you know how Agora has trouble if every judge gets recused from a case?
18:30:00 <ais523> I think something similar may happen in SCO vs. IBM
18:30:03 <elliott> haha
18:30:20 <ais523> there are only a finite number of judges in Utah; by some calculations, there are only two left
18:31:06 <ais523> and both have reasonably obvious reasons to recuse themselves
18:31:32 <coppro> O_O
18:31:34 <coppro> link?
18:31:37 <pikhq> itidus21: I suggest you practice saying the following phrase: Fuck off.
18:32:08 <ais523> coppro: based on following it at Groklaw
18:32:15 <itidus21> this video is kind of funny in a way http://www.youtube.com/watch?NR=1&feature=endscreen&v=tZ46Ot4_lLo
18:32:18 <ais523> the latest article is http://www.groklaw.net/article.php?story=20111214164953543 but is missing most of the context
18:33:35 <ais523> coppro: aha, here's the context: http://www.groklaw.net/article.php?story=20111210010653565
18:34:34 <kallisti> wow sometimes I forget everything about interfaces.
18:34:40 * kallisti just tried to tab-complete a word in irssi
18:34:41 <ais523> kallisti: which meaning of "interface"?
18:34:46 <ais523> kallisti: oh, I do that quite a bit, too
18:34:57 <ais523> once I changed my nick to a word I was having trouble spelling, to make it easier to tab-complete
18:35:01 * kallisti tapped the tab key madly. WHY ARE YOU NOT COMPLETING MY WORD.
18:35:15 -!- GreaseMonkey has joined.
18:35:15 -!- GreaseMonkey has quit (Changing host).
18:35:15 -!- GreaseMonkey has joined.
18:35:16 <coppro> ais523: ... wow
18:36:19 <kallisti> ais523: also now I have a bad habit of typing ctrl+s when I mean ctrl+f in many programs
18:36:22 <kallisti> thanks to emacs.
18:36:35 <coppro> I use /
18:36:39 <coppro> it works in most sane program
18:36:40 <kallisti> heh
18:36:45 <kallisti> like less!
18:36:46 <coppro> s/$/s/
18:36:58 <ais523> oh no, you deleted the end of that string
18:37:01 <ais523> so now it's infinitely long
18:37:15 <ais523> elliott: hmm, I actually got the 100% ending of Braid today, complete with the waiting two hours
18:37:19 <ais523> umm, yesterday
18:37:52 <elliott> ais523: heh
18:38:22 <ais523> I think most people getting into the pretentiousness of Braid have misinterpreted
18:38:24 <ais523> *misinterpreted it
18:38:30 <ais523> by time-reversing the wrong parts of the game
18:38:50 <Vorpal> wait what, is SCO still going?
18:38:51 <Vorpal> how?
18:39:49 <ais523> Vorpal: they were given a loan, under mysterious circumstances
18:39:58 <Vorpal> ais523, by whom?
18:40:03 <ais523> then they sold off everything but the litigation to a company called unXis that nobody seems to know much about
18:40:08 <ais523> Vorpal: some of their former shareholders, IIRC
18:40:11 <Vorpal> heh
18:40:17 <Vorpal> what is the point?
18:40:25 <ais523> I said the circumstances were mysterious
18:40:45 <Vorpal> some sort of money scam to get money out of the company somehow?
18:40:54 <Vorpal> that is the only reason to keep going that I can think of
18:41:17 <ais523> Vorpal: everything that's going on makes it reasonably clear that there's at least one, probably two, scams somewhere
18:41:30 <Vorpal> ah
18:41:31 <ais523> the straightforward one seems to be being run by Ocean Park, who ended up with most of the money SCO originally had
18:41:41 <Vorpal> I see
18:41:43 <ais523> (in a completely legal manner, of course)
18:41:50 <Vorpal> right
18:41:52 <ais523> but there's something much more complicated going on too, and I'm not sure what
18:42:06 <Vorpal> what makes you think it exists then?
18:42:15 -!- augur has quit (Remote host closed the connection).
18:42:17 <Vorpal> also who are Ocean Park?
18:43:31 <Vorpal> ais523, ^
18:44:02 <ais523> SCO's bankrupcy trustee's accountants
18:44:14 <ais523> Vorpal: the actions of various people make no sense on information currently known
18:44:25 <Vorpal> ah
18:44:29 <ais523> and I'm guessing it's because there's information missing
18:44:41 <Vorpal> reasonable assumption
18:44:54 <elliott> The Santa Cruz Operation would be a good title for a heist film.
18:45:01 <ais523> elliott: indeed!
18:45:20 <elliott> let's hope there's one going on now, so it has a possibility of being made
18:46:22 <ais523> truth often makes better fiction than actual fiction
18:46:26 <coppro> Potentially the loan was granted by people who just want to see novell suffer legal costs
18:46:32 <pikhq> elliott: Oh, hey. Sometime while I wasn't paying attention, that torrent came in.
18:46:40 <pikhq> I now have a 16 MiB file called "random".
18:46:44 <elliott> pikhq: ...what.
18:46:49 <elliott> pikhq: I haven't run Transmission since I gave up the first time.
18:46:54 <elliott> Which was while I was talking to you about it.
18:46:56 <pikhq> The fuck?
18:47:02 <ais523> coppro: indeed; or even IBM
18:47:09 <Vorpal> coppro, but doesn't the loosing party have pay the legal costs?
18:47:13 <elliott> pikhq: And I never /once/ saw a peer.
18:47:17 <coppro> Vorpal: Not if they're bankrupt
18:47:21 <Vorpal> I see
18:47:24 <elliott> pikhq: And I can't upload 16 megs fast enough to not notice it while I was watching Transmission.
18:47:36 <coppro> Vorpal: Also the US generally does /not/ award costs
18:47:36 <pikhq> elliott: Well, I have the file.
18:47:47 <coppro> (one of the biggest flaws of their legal system)
18:47:52 <pikhq> md5sum f6bc78d996ade6145815ab5de9d8cf3f, right?
18:47:53 <elliott> pikhq: M...maybe someone generated the same random bits themselves later on?
18:47:57 <Vorpal> coppro, I couldn't parse that
18:47:59 <ais523> Vorpal: note that typically they have to pay the /court's/ costs, but not the other party's legal fees, which are much larger
18:48:05 <Vorpal> ah
18:48:06 <ais523> the costs of running a court aren't massively high
18:48:06 <elliott> pikhq: Correct
18:48:15 <pikhq> elliott: The hell.
18:48:22 <ais523> is that really just a file of random data?
18:48:26 <elliott> ais523: yep
18:48:31 <ais523> why torrent it?
18:48:33 <pikhq> ais523: He was just testing DHT.
18:48:41 <elliott> pikhq: Hmm, maybe you actually downloaded it from me while we were talking, and Transmission just failed at showing you?
18:48:47 <pikhq> elliott: Could be?
18:48:48 <Vorpal> pikhq, I remember elliott testing DHT like months ago
18:49:04 <elliott> Vorpal: I WAS READING ABOUT DISTRIBUTED HASH TABLES AND WANTED TO FEEL THE MAGIC
18:49:12 <Vorpal> elliott, I see
18:49:15 <coppro> Vorpal: Basically, the US fails to make the courts the ideal venue for resolution of disputes
18:49:21 <Vorpal> elliott, I find a tracker is generally more reliable :P
18:49:28 <Vorpal> coppro, yes
18:49:35 -!- boroda_ has joined.
18:49:38 <pikhq> coppro: Small claims courts are the ideal venue, though.
18:49:48 <elliott> Vorpal: DHT works fine as soon as you get a peer
18:49:52 <elliott> getting a peer is the problem
18:49:54 <coppro> pikhq: True. But not for large-scale claims
18:49:54 <elliott> `welcome boroda_
18:49:55 <ais523> pikhq: but only for claims that are actually small
18:49:55 <pikhq> This is *primarily* because your cost consists of filing fees.
18:49:56 <Vorpal> elliott, indeed
18:49:57 <HackEgo> boroda_: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:50:00 <pikhq> ais523: Well, yes.
18:50:05 <Vorpal> elliott, and I generally want stuff done quickly
18:50:15 <elliott> Vorpal: DHT is fast on popular torrents
18:50:16 <pikhq> Beyond that, the courts are the worst venue for resolution of disputes.
18:50:29 <Vorpal> elliott, yes but your test ones are not popular!
18:50:34 <pikhq> You would literally be better off going for a duel in many cases.
18:50:37 <elliott> Vorpal: my test ones aren't on trackers
18:50:45 <Vorpal> elliott, indeed
18:50:47 <ais523> pikhq: aren't courts about enforcement, not resolution?
18:50:54 <ais523> the problem is that they have to resolve it first to know what to enforce
18:50:58 <Vorpal> elliott, small + no trackers = sloooow
18:51:01 <ais523> and no, with duelling then the wrong person would lose half the time
18:51:06 <Vorpal> well, small as in not popular
18:51:14 <pikhq> ais523: US courts handle civil and criminal cases.
18:51:15 <coppro> Courts are also supposed to be about resolution
18:51:15 <ais523> probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious
18:51:23 <elliott> Vorpal: actually, if you both connect to the same popular torrent, it'll go instantly
18:51:25 <pikhq> Civil cases are about resolving disputes.
18:51:32 <elliott> two people downloading an ubuntu ISO can DHT with each other perfectly
18:51:42 <pikhq> *In practice*, people who can hire good lawyers are able to get away with almost anything.
18:51:45 <ais523> pikhq: but the main purpose they're used is that the court is (typically) capable of enforcing the result
18:52:09 <Vorpal> elliott, popular torrents are generally not DHT-only
18:52:13 <coppro> ais523: Yes, but that's because of a flawed system, not because the point isn't to resolve disputes
18:52:13 <Gregor> pikhq: And then publish a book detailing how they did it, with the title "If I did it", and laugh all the way to the bank.
18:52:15 <pikhq> At least with duels for resolving disputes, you can personally improve your ability at it. :P
18:52:24 <pikhq> Gregor: Or, in his case, to jail.
18:52:41 <coppro> In my view, courts should aim to be the ideal venue for resolving disputes; binding arbitration sucks
18:52:46 <pikhq> Gregor: OJ Simpson, complete moron, decided to commit robbery and kidnapping afterwards. He is now serving a 33 year sentence.
18:53:01 -!- Ngevd has quit (Quit: Goodbye).
18:53:03 <Gregor> pikhq: Well yeah, but he got away with the murder, he just shot too high is all :P
18:53:04 <Vorpal> Gregor, someone did that?
18:53:13 <pikhq> Vorpal: OJ Simpson.
18:53:13 <elliott> <Vorpal> elliott, popular torrents are generally not DHT-only
18:53:14 <ais523> I should probably ask who OJ Simpson is
18:53:16 <elliott> Vorpal: I never said they were
18:53:20 <Vorpal> pikhq, wow, how stupid
18:53:22 <ais523> I've heard of him, and know he's famous for being involved in a criminal trial
18:53:24 <ais523> but not much else
18:53:33 <pikhq> ais523: Some football player, mostly famous now for being acquitted for murder.
18:53:41 <elliott> ais523: he wrote a book called If I Did It
18:53:47 <elliott> ais523: saying /how/ he would have committed the crime /if/ he did it
18:53:48 <Vorpal> elliott, then how are you able to get data on it?
18:53:49 <elliott> while maintaining his innocence
18:54:10 <ais523> elliott: hmm; such behaviour wouldn't seem sensible for persuading people of your innocence
18:54:20 <elliott> ais523: it eventually got published with this cover: http://upload.wikimedia.org/wikipedia/en/4/4f/If_I_did_It_2.png
18:54:25 <pikhq> Vorpal: If you just punch in the infohash, your client will use DHT.
18:54:25 <coppro> ais523: The US's stupid double jeopardy rule
18:54:26 <elliott> (http://en.wikipedia.org/wiki/File:If_I_did_It_2.png to make ais523 happy)
18:54:41 <Vorpal> elliott, wow the small "if" there
18:54:42 <pikhq> ais523: Everyone's convinced he actually committed it, anyways.
18:55:03 <elliott> ais523: "It was originally planned that the book would be promoted via a television special featuring an interview with Simpson on Fox Broadcasting Company. Fox and HarperCollins are both owned by the News Corporation. This special had the longer title, O. J. Simpson: If I Did It, Here's How It Happened. Like the original release of the book, the special was canceled."
18:55:17 -!- boroda_ has left ("Ухожу я от вас (xchat 2.4.5 или старше)").
18:55:44 <ais523> pikhq: and he was eventually thrown in jail for something else, presumably?
18:56:02 <ais523> well, by "presumably" I mean "based on what was said slightly earlier in-channel"
18:56:18 <Gregor> Yeah, no double jeopardy. But he decided "Well if I got away with murder, I'll turn into a full-on gangster." and kidnapped and robbed and wtf dumbass.
18:59:00 <coppro> the double jeopardy rule in the US is retarded
18:59:38 <Phantom_Hoover> It just states that you can't be tried twice for the same crime, right?
19:01:16 <coppro> Yes
19:01:27 <coppro> But there are two levels of stupid in it
19:01:46 <coppro> First, due to the principle of separate sovereigns, someone can be tried twice; once by the state and once by the federal government
19:02:03 <coppro> since the federal government can't, except by law, limit the states
19:02:11 <coppro> Second, it is interpreted as being absolute
19:02:30 <pikhq> Phantom_Hoover: You can't be tried twice for the same crime in the same jurisdiction.
19:02:37 <coppro> If you are acquitted, the government can appeal only by grounds that the trial was manifestly unfair (i.e. the judge or jury was bribed, or the like)
19:02:43 <Phantom_Hoover> pikhq, not particularly stupid?
19:02:47 <coppro> The government can't appeal on any other error of law
19:02:49 <pikhq> If you commit the same crime in two states, congrats, you can be charged thrice.
19:02:57 -!- cswords_ has joined.
19:03:33 <pikhq> Also, yeah, if you get an error in law happening you're basically walking away.
19:03:52 <pikhq> And the police here *love* making those.
19:04:27 <coppro> In Canada, the government can appeal, but only errors of law since the jury is assumed to be correct in its verdict (which makes sense)
19:06:03 <pikhq> What really bothers me is that juries are instructed to only focus on strict matters of fact or law, even though in US court tradition and law, it's perfectly acceptable for juries to go "We find this law unjust; we find not guilty"...
19:06:08 -!- cswords has quit (Ping timeout: 252 seconds).
19:07:15 <coppro> pikhq: forget what the legal term for that is
19:07:26 <coppro> it has a bizarre position in Canadian law
19:07:34 <pikhq> Jury nullification.
19:07:40 <coppro> right
19:07:54 <coppro> In Canadian law it is legal, but not a right of the defendent to have the jury informed of it
19:08:01 <pikhq> It's 100% legal in US law, judges just try very hard to get a mistrial if someone dares mention it.
19:08:15 <ais523> pikhq: actually, the lawyers for the sides select for juries who haven't heard of it
19:08:22 <pikhq> Ah, yes, that too.
19:08:23 <ais523> (having lawyer-selected juries is a little insane in its own way)
19:08:45 <coppro> ais523: Don't they use the same process in the UK?
19:08:47 <pikhq> Yeah, if juries were *sane* they'd go for a random sample.
19:09:13 <ais523> coppro: 12 random people plus 1 random alternate
19:09:18 -!- kmc has quit (Quit: Leaving).
19:09:20 <ais523> who can only be objected to if obviously biased, IIRC
19:09:24 <ais523> such as being related to the defendant
19:09:29 <coppro> ais523: There's no preremptory objections?
19:09:35 <ais523> I think there might be one per side
19:09:39 <ais523> certainly nowhere as many as in the US
19:09:52 <pikhq> They're unbound in the US, IIRC.
19:10:01 <Vorpal> Sweden doesn't use juries except in a few special types of cases.
19:10:03 <pikhq> You basically have the lawyers *selecting* jurors.
19:10:10 <Phantom_Hoover> <pikhq> What really bothers me is that juries are instructed to only focus on strict matters of fact or law, even though in US court tradition and law, it's perfectly acceptable for juries to go "We find this law unjust; we find not guilty"...
19:10:17 <coppro> ais523: wikipedia tells me it was eliminated in 1988
19:10:19 <Vorpal> iirc related to right of free speech stuff, then you get a jury in Sweden
19:10:21 <Vorpal> otherwise, not
19:10:30 <Phantom_Hoover> Yes, but their *instructions* are to only focus on strict matters of fact and law.
19:10:30 <pikhq> Vorpal: The US doesn't use juries unless the defendent requests it, IIRC.
19:10:32 <ais523> coppro: that'd explain why I thought they didn't have it
19:10:41 <Vorpal> pikhq, and they usually request that?
19:10:42 <Phantom_Hoover> <coppro> ais523: Don't they use the same process in the UK?
19:10:50 <ais523> pikhq: the jury instructions are also written by the lawyers
19:10:54 <pikhq> Vorpal: Not really.
19:10:57 <Phantom_Hoover> Scots law differs significantly from English.
19:10:59 <ais523> however, they tend to disagree a lot about what they should say, for obvious reasons
19:11:10 <Vorpal> pikhq, I see
19:11:10 <ais523> Phantom_Hoover: oh right, I was talking about the England/Wales court system
19:11:15 <Phantom_Hoover> We have juries of 15, and verdicts are by majority, for instanc.
19:11:16 <ais523> I know it's diferent in Scotland
19:11:16 <pikhq> Scots law isn't even in the tradition of common law.
19:11:18 <Phantom_Hoover> *instance
19:11:31 <Phantom_Hoover> And there are 3 possible verdicts.
19:11:36 <Vorpal> 3?
19:11:37 <elliott> Phantom_Hoover: Nobody cares Mr. Phantom "Waah Scotland matters" Hoover.
19:11:45 <Phantom_Hoover> Guilty, not guilty, not proven.
19:11:50 <pikhq> Making it more distinct from English law than US law is. :P
19:11:52 <coppro> in Canada, it's 20 for high treason or murder, 12 if there is a prison term of 5 years or more on the line, and 4 otherwise
19:12:02 <Vorpal> Phantom_Hoover, what happens after "not proven"?
19:12:03 <elliott> Phantom_Hoover: hmm, shouldn't it be "innocent" if there's another "dunno" one?
19:12:18 <ais523> elliott: Hexham's near enough to Scotland for Scotland to matter to you, surely?
19:12:28 <ais523> it'd probably be at risk of invasion if the Scots ever cared to try
19:12:45 <Vorpal> anyway I find this Scottish system quite interesting
19:13:02 <Phantom_Hoover> There seems to be literally no functional difference between not proven and not guilty.
19:13:22 <elliott> `quote don't even
19:13:24 <HackEgo> No output.
19:13:27 <Phantom_Hoover> Oh, it's 'proven', not 'guilty'.
19:13:28 <elliott> `quote first!
19:13:30 <Vorpal> btw didn't some party that wanted to separate from the UK win the Scottish election? Whatever happened to that?
19:13:31 <HackEgo> 662) <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it? <Ngevd> You stole it from us first!
19:13:33 <elliott> ais523: ^
19:13:37 <elliott> that's where all the warring goes on
19:13:53 <ais523> elliott: right, indeed
19:14:04 <Vorpal> Berwick?
19:14:12 <ais523> Vorpal: it's the SNP; their problem is that they can't make Scotland independent without a referendum
19:14:26 <ais523> and all the statistics indicate that if they try a referendum, which they can do, they'll lose it
19:14:32 <Vorpal> heh
19:14:33 <ais523> so they're trying to find excuses to not do it yet
19:14:42 <Vorpal> that must be awkward for them
19:14:49 <pikhq> Why the heck would Scotland want to become independent, anyways? Near as I can tell, it's only to their benefit.
19:14:49 <Vorpal> ais523, anyway, lose by how much?
19:14:54 <elliott> they're just waiting for more english pansies to die
19:14:56 <pikhq> To the detriment of England, but hey.
19:14:57 <pikhq> :P
19:15:01 <Phantom_Hoover> pikhq, something something something oil.
19:15:09 <ais523> Vorpal: I don't know, and you could look it up as easily as I could
19:15:09 <Phantom_Hoover> Also EU.
19:15:24 <elliott> Phantom_Hoover: EU? More like EUuuuuwwwwww, that's gross!
19:15:26 <Phantom_Hoover> (I vehemently oppose the SNP because they want closer ties with Sweden.)
19:15:26 <pikhq> Phantom_Hoover: What, becoming a more proper EU member, or leaving it?
19:15:31 <Vorpal> ais523, well, I thought you might remember if it was a close thing or far from being likely.
19:15:32 <ais523> incidentally, the SNP wants Scotland to stay fully part of the Commonwealth
19:15:33 <Phantom_Hoover> pikhq, more proper.
19:15:36 <coppro> dammit thundurus, why can't you be nice like kyurem was? :(
19:15:41 <ais523> Vorpal: I think it's somewhere in between
19:15:44 <Vorpal> ah
19:15:51 <Vorpal> ais523, that is good enough for me
19:15:56 <ais523> coppro: I still haven't caught kyurem yet; I need to manipulate it to perfect stats like I did with Zekrom
19:15:56 <elliott> `addquote <Phantom_Hoover> (I vehemently oppose the SNP because they want closer ties with Sweden.)
19:15:59 <HackEgo> 765) <Phantom_Hoover> (I vehemently oppose the SNP because they want closer ties with Sweden.)
19:15:59 <pikhq> ais523: A Commonwealth country, or a Commonwealth realm?
19:16:07 <Vorpal> <Phantom_Hoover> (I vehemently oppose the SNP because they want closer ties with Sweden.) <-- they do?
19:16:08 <Vorpal> why?
19:16:08 <ais523> pikhq: I don't know the difference
19:16:08 <coppro> ais523: RNG manipulation?
19:16:11 <ais523> coppro: of course
19:16:18 <ais523> only time I've ever used a Max Repel in a no-encounter area
19:16:19 <pikhq> ais523: A Commonwealth realm has the Queen as monarch.
19:16:26 <ais523> in order to count steps
19:16:30 <pikhq> A Commonwealth country is just a country in the Commonwealth.
19:16:34 <coppro> ais523: I thought legend stats were generated in advance in modern games?
19:16:37 <ais523> pikhq: in that case, I don't know the answer
19:16:40 <Vorpal> <ais523> coppro: I still haven't caught kyurem yet; I need to manipulate it to perfect stats like I did with Zekrom <-- huh?
19:16:44 <Vorpal> pokemon?
19:16:50 <ais523> coppro: they can be, but the precise meaning of "in advance" differs from pokemon to pokemon
19:16:51 <ais523> Vorpal: yes
19:16:53 <Vorpal> ah
19:16:55 <coppro> ais523: ah
19:17:03 <ais523> in the case of Zekrom, it's generated upon talking to it
19:17:11 <coppro> ais523: by 'in advance', I meant game start
19:17:16 <ais523> no, nowhere near that early
19:17:36 <ais523> it's typically either the event where you encounter them, the event that makes them possible to encounter (i.e. adds them to the map), or beating the elite four
19:17:36 <pikhq> ais523: If they were to *just* seperate right now, then it'd end up being a realm... But it wouldn't be too hard to imagine Scotland also getting rid of its monarchy.
19:17:38 <Vorpal> it sounds almost as if they wanted people to manipulate the RNG then
19:17:51 <coppro> I might do that in a future game; in this game, I'm not doing anything like that
19:17:58 <pikhq> Vorpal: Seems like it.
19:17:58 <ais523> Vorpal: they took deliberate steps to make the RNG more complicated in fifth gen
19:18:03 <ais523> and ended up making it easier as a result
19:18:09 <pikhq> There's a lot of randomness in the games.
19:18:09 <Vorpal> heh
19:18:21 <Vorpal> ais523, I meant, why not just generate those stats on new game
19:18:25 <elliott> <Vorpal> <Phantom_Hoover> (I vehemently oppose the SNP because they want closer ties with Sweden.) <-- they do?
19:18:26 <elliott> <Vorpal> why?
19:18:29 <elliott> Vorpal: *whoosh*
19:18:38 <ais523> Vorpal: because then people would manipulate them on new game
19:18:41 <Vorpal> elliott, that was not obviously a joke
19:19:06 <ais523> seriously, trainer ID manipulation has been done on new game routinely in gen IV, because there, shiny flawless legendaries are impossible without particular trainer ID/secret ID combinations
19:19:10 <ais523> so people manipulate for those
19:19:21 <Vorpal> ais523, right, but they can just manipulate it later now, and it is easier to check the results if you don't have to play through the whole game.
19:19:38 <elliott> Vorpal: you would have got it if you read his previous line
19:19:44 <coppro> ais523: What resource do you use for the RNG?
19:19:52 <ais523> coppro: depends on which game
19:20:07 <ais523> for fifth gen, and various things that I can't otherwise handle in fourth gen, mono + RNG Reporter
19:20:14 <ais523> as it's the most complete program in that respect
19:20:31 <Vorpal> ais523, mono as in the .NET environment?!
19:20:38 <ais523> Vorpal: yes
19:20:42 <ais523> because RNG Reporter is a .NET program
19:20:44 <Vorpal> ah
19:21:00 <ais523> for fourth gen catches, I use this: http://shaym.in/apps/iv_checker
19:21:03 <ais523> which I wrote myself
19:21:29 <coppro> ais523: I mean a resource explaining the systems
19:21:48 <ais523> ah; Smogon has some guides, and there are various YouTube videos
19:22:02 <ais523> but I find it best to understand how the game works, and then do the manipulation on that basis
19:22:09 <coppro> yeah
19:22:22 <coppro> hence why I ask if you have resources explaining the mechanics
19:22:28 <Vorpal> I assume doing RNG manipulation on real hardware would be near impossible?
19:22:30 <ais523> note that the help information on the page I link explains how to use that page to do a flawless catch
19:22:38 <Vorpal> since there would be various inputs that would be hard to control
19:22:41 <ais523> Vorpal: no? it's real hardware I do it on
19:22:54 <ais523> the basic point is that you only need to control one of the inputs, and just hold everything else consistent
19:23:27 <Vorpal> ais523, what? On something like a modern handheld system with wifi it would be trivial for the system to generate new random seeds every so often
19:23:41 <Vorpal> like /dev/random on linux does
19:23:45 <ais523> Vorpal: what if someone puts it on airplane mode?
19:23:58 <ais523> (which is exactly what I do for black/white RNG control, for exactly that reason)
19:24:06 <Vorpal> ais523, hm, there are sure to be other sources of randomness. Clock drift between CPU cores?
19:24:22 <ais523> Vorpal: yes, indeed, but it only drifts between two values
19:24:27 <Vorpal> hm
19:24:30 <ais523> so you just keep retrying until you hit the one you want
19:24:36 <Vorpal> right
19:24:44 <elliott> nintendo probably don't spend thousands of dollars on preventing RNG abuse :P
19:24:58 <ais523> elliott: they do seem to have been given an order "make the RNG more complicated"
19:25:01 <ais523> because it is
19:25:06 <Vorpal> elliott, you don't exactly need to spend 1000s of dollars to do these kind of things
19:25:06 <elliott> ais523: for trading, perhaps/
19:25:07 <elliott> ?
19:25:10 <ais523> but it wasn't so hard it wasn't cracked
19:25:15 <Vorpal> anyway aren't there any good, hard to predict RNGs?
19:25:17 <elliott> Vorpal: yes you do, you need to employ someone who could think of them
19:25:25 <ais523> elliott: probably by tPCI, who don't really like RNG abuse in official tournaments but haven't found any way to ban it
19:25:31 <elliott> Vorpal: and then implement them
19:25:49 <Vorpal> elliott, there are often reference implementations available for many
19:25:50 <elliott> ais523: hmm, I assumed tournaments gave you predetermined pokemans
19:25:55 <elliott> but I guess kids wouldn't like that
19:26:00 <ais523> indeed, that'd defeat the whole point
19:26:03 <elliott> Vorpal: I'm talking about things like seeding with clock drift
19:26:09 <ais523> the tournaments are basically just advertising
19:26:09 <Vorpal> well right
19:26:23 <ais523> elliott: the seeding with clock drift seems to be a mistake
19:26:27 -!- oerjan has joined.
19:26:32 <elliott> heh
19:26:57 <ais523> in gen 4, it was seeded with the number of frames it took to dismiss the cutscene at the start of the game, which is a good entropy source (also the ones that players manipulated in practice, although it requires timing a keypress to 1/60 second)
19:26:59 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:27:00 <coppro> ais523: your page doesn't explain things like 1, J, K
19:27:08 <ais523> in gen 5, the check was at the start of the cutscene
19:27:18 <ais523> coppro: yes it does, "which RNG method should I choose?"
19:27:23 <coppro> ah
19:27:24 <Vorpal> elliott, it isn't really hard to do. Read the TSC (for x86 that is, I assume there are/could be similar things for, say, ARM) on the two CPUs several times and use the differences to generate randomness
19:27:41 <Vorpal> ais523, why don't they just re-seed it, I don
19:27:45 <Vorpal> don't* get it
19:27:56 <ais523> Vorpal: from what?
19:28:03 <elliott> Vorpal: you realise that programmers at Nintendo are probably paid enough to make a few thousand in not all that long a time, right?
19:28:27 <elliott> making the RNG seeding perfect probably comes considerably lower than "making a decent game"
19:28:31 <ais523> Vorpal: besides, if the reseed interval wasn't /very/ fast, people would just do the catch before the first reseed
19:28:49 <Vorpal> ais523, every few seconds sounds reasonable to me
19:28:54 <ais523> too slow
19:28:54 -!- augur has joined.
19:28:59 <Vorpal> ais523, really? heh
19:29:08 <coppro> ais523: it still doesn't really explain how they work though
19:29:16 <ais523> Vorpal: I would typically cause the stat generation to happen in the first second or so of poweron
19:29:21 <Vorpal> ais523, hm, if wifi is on, that is an obvious source. Also couldn't you passively listen to radio noise even in airplane mode? I thought the point of the airplane mode was to not /emit/ anything?
19:29:33 <ais523> Vorpal: not the way that the DS's antenna works, I think
19:29:39 <Vorpal> hm
19:29:43 <elliott> that would use power, wouldn't it
19:29:52 <Vorpal> elliott, well yes, but you can't have everything
19:29:59 <elliott> Vorpal: better rng <<<<<<<<<<<<<<<< decreasing battery life
19:30:02 <elliott> erm
19:30:04 <Vorpal> right
19:30:04 <ais523> coppro: it might be simplest if you just ask me, I don't think there are any good explanations around about what's actually going on that aren't terribly technical
19:30:05 <elliott> flip one of those
19:30:06 <elliott> or whatever
19:30:13 <Vorpal> well you could require wifi on in tournaments
19:30:22 <elliott> ais523: i believe that is what he was doing.
19:30:27 <elliott> Vorpal: umm, what?
19:30:28 <ais523> Vorpal: we're talking about catching Pokémon before the tournament
19:30:28 <Vorpal> that would solve it for that use case at least
19:30:29 <ais523> which is done at home
19:30:33 <Vorpal> ais523, oh I see
19:30:43 <Vorpal> ais523, then what prevents you from doing memory hacking?
19:30:50 -!- GreaseMonkey has quit (Quit: The Other Game).
19:30:59 <coppro> ais523: I'm fine with terribly technical
19:30:59 <ais523> Vorpal: they try to detect that
19:31:02 <coppro> in fact, that's preferred
19:31:21 <ais523> they aren't as good at detecting that as the people who do the RNG manipulation are, though
19:31:23 <Vorpal> ais523, hard if you just modify the stats to the best plausible levels from rng trickery?
19:31:36 <ais523> Vorpal: what if the stats are valid, but couldn't be generated by the game's RNG?
19:31:48 <ais523> the RNG can't return every possible sequence of numbers, after all
19:32:02 <ais523> (it can in Black/White, incidentally, by using two RNGs that go through seeds at different rates)
19:32:10 <Vorpal> heh
19:32:24 <Vorpal> you would have to ensure that it would be possible with the RNG
19:32:31 <Vorpal> anyway how can you time it right?
19:32:54 <pikhq> Gamers are freaks.
19:32:54 <ais523> coppro: for 4th gen, this forum thread: http://www.smogon.com/forums/showthread.php?t=52180
19:33:01 <ais523> ther's another thread in the same forum for 5th gen
19:33:28 <pikhq> Last I checked, the difference between the human speedrun and the TAS run of Super Mario Bros. was a few seconds.
19:33:36 <Vorpal> ais523, I mean if you use the current time in clock cycles or even in microseconds as part of the randomness when the value is requested you couldn't do it feasibly on non-modified hardware
19:33:48 <ais523> Vorpal: on average, how many tries do you think it takes someone who's been practicing for 10 hours to time a keypress to within 1/60th of a second, using any tools (metronomes, countdowns, etc) they want?
19:34:06 <Vorpal> ais523, 1/60th? really?
19:34:07 <ais523> note that the buttons on the DS are only read once per frame
19:34:10 <Vorpal> hm
19:34:14 <Vorpal> okay that is an issue
19:34:18 <ais523> so the timing won't be any more accurate than that
19:34:23 <Vorpal> ais523, I would have assumed they gave interrupts
19:34:30 <ais523> really? that's incredibly rare in games
19:34:35 <Vorpal> I see
19:34:38 <ais523> so why would you expect consoles to support it?
19:34:46 <Vorpal> ais523, I wasn't aware it was rare in games
19:34:48 <Vorpal> why is it rare?
19:35:06 <ais523> in fact, most PC games engine use a simple interrupt handler that makes it look like polling
19:35:13 <Vorpal> heh
19:35:26 <ais523> and basically because most games have a physics engine that can only process input once a frame; the rest of the time, it's busy calculating motion on that frame
19:35:30 <pikhq> It's much easier to do a while(1) {check_buttons(); update_state(); render();} loop than do interrupts.
19:35:41 <Vorpal> ais523, hm is the PC keyboard polled or interrupting? I would assume at least the USB case is interrupting
19:35:48 <Vorpal> not sure about the PS/2 case
19:35:57 <pikhq> Vorpal: Interrupts.
19:35:57 <Vorpal> I mean, to the OS level
19:35:58 <ais523> Vorpal: it's interrupting, but the BIOS can make it look like polled
19:36:02 <Vorpal> right
19:36:19 <ais523> and it's up to the OS whether it looks at the BIOS or whether it overrides the interrupt table to get the interrupts directly
19:36:38 <Vorpal> well, most modern OS tries to avoid using the BIOS
19:36:58 <Vorpal> also using the BIOS presents some major problems from long mode iirc
19:37:17 <pikhq> Yeah, usually an OS just handles the interrupt itself.
19:37:26 <elliott> never mind long mode, you can't use the BIOS in protected mode
19:37:46 <Vorpal> elliott, oh okay, I thought you could do virtual 8086 mode then or something
19:37:52 <Vorpal> or whatever it was called
19:37:59 <elliott> oh, maybe
19:38:02 <Vorpal> virtual 286 mode?
19:38:04 <Vorpal> something anyway
19:38:09 <elliott> sounds more painful than rewriting the bios routines though
19:38:13 <Vorpal> well yes
19:38:38 <Vorpal> virtual 8086 it is called
19:38:42 <Vorpal> iirc dosemu uses it
19:38:50 <Vorpal> won't work in long mode of course
19:39:12 <ais523> Vorpal: one of the few things in the "deliberately unsupported because I can't figure out wtf effect it would have" list in Web of Lies
19:39:38 <Vorpal> ais523, what are the other things on that list?
19:39:44 <Gregor> *Web o' Flies
19:39:48 <Vorpal> Gregor, no
19:39:57 <ais523> Vorpal: I'm trying to remember, now
19:40:01 <elliott> Vorpal: yes
19:40:40 <ais523> Vorpal: ptrace is probably the biggest one
19:40:45 <Vorpal> well right
19:40:51 <Vorpal> ais523, anything else?
19:40:56 <ais523> also, modify_ldt, personality, lookup_dcookie, and unshare
19:40:57 -!- augur has quit (Remote host closed the connection).
19:41:13 <Vorpal> I never heard of those
19:41:29 -!- augur has joined.
19:41:38 <ais523> wait, I found personality was actually being used
19:41:55 <ais523> so it's only unsupported with certain arguments (which it silently replaces with different similar arguments in the hope that the system will still work)
19:42:25 -!- augur has quit (Remote host closed the connection).
19:42:25 <Vorpal> ais523, after reading man page I'm surprised the first one even exists in user space. Wtf. And there is no EPERM or such in the ERRORS section either. What.
19:43:24 -!- augur has joined.
19:44:33 <Vorpal> ais523, I assume wol uses personality though?
19:44:44 <ais523> it does
19:44:44 <Vorpal> ais523, stuff like ADDR_NO_RANDOMIZE looks like cut out for it
19:44:48 <ais523> to turn off ASLR
19:44:52 <Vorpal> yeah
19:45:04 <ais523> so what it does in other process's calls to personality is to add ADDR_NO_RANDOMIZE to the argument list
19:45:06 <elliott> <ais523> Vorpal: ptrace is probably the biggest one
19:45:07 <ais523> whether they specified it or not
19:45:13 <elliott> ais523: but how will you calculate weboflies' eigenratio?
19:45:15 <Vorpal> ais523, ah
19:45:22 <Vorpal> elliott, :P
19:45:25 <ais523> elliott: I don't think I've even tried running it inside itself
19:45:45 <ais523> it causes valgrind to internal-error (I think even with valgrind on the outside)
19:45:45 <oerjan> 16:20:22: <ais523> you-plural <-- i hear the technical term is "all y'all". hth.
19:45:50 <ais523> which is resaonably impressive
19:45:52 <ais523> *reasonably
19:46:00 <elliott> haha, modify_ldt must be root-only, surely
19:46:10 <olsner> valgrind in wol in valgrind?
19:46:26 <Vorpal> elliott, yes that was my reaction too. Then I looked at "errors" and I was even more wtf
19:46:38 <elliott> it's probably just omitted
19:46:41 -!- derrik has quit (Quit: left).
19:46:44 <elliott> hopefully
19:46:44 <ais523> well, the LDT /is/ per-process…
19:47:00 <elliott> unsigned int read_exec_only:1;
19:47:00 <Vorpal> hm
19:47:06 <elliott> it /must/ be unsafe to let you modify that, surely
19:47:09 <elliott> unsigned long base_addr;
19:47:09 <elliott> unsigned int limit;
19:47:10 <elliott> especially these
19:47:12 <Vorpal> yes
19:47:17 <Vorpal> I believe so
19:47:20 <olsner> slightly unsafe
19:47:25 <Vorpal> unless it only permit valid values
19:47:40 <Vorpal> elliott, look at the EFAULT description
19:48:00 <ais523> Vorpal: that's if you specify the argument to modify_ldt as outside your own address space
19:48:08 <ais523> EFAULT is what you get when passing NULL pointers to the kernel, or whatever
19:48:09 <Vorpal> ais523, right
19:48:35 <elliott> hmm, actual thing I have thought: "this thing just isn't fast enough, I wish it used exec() directly rather than the shell"
19:48:51 <elliott> <ais523> EFAULT is what you get when passing NULL pointers to the kernel, or whatever
19:48:56 <elliott> ais523: there have been kernel bugs caused by failing to check this, btw
19:49:02 <elliott> guess what type of bug doesn't apply to @?
19:49:08 <Vorpal> anyway modify_ldt looks to me as if it belongs in the same category as ioperm and such. That is the category of "oh god, who thought exposing this to the user space was a good idea"
19:49:47 <ais523> elliott: heh, I have to keep remembering to check EFAULT in weboflies
19:49:57 <ais523> if I'm simulating a syscall myself
19:50:01 <Vorpal> heh
19:50:54 <Gregor> So is Web o' Flies totally non-secret now?
19:51:01 <Gregor> Or is the code still a jealously-guarded secret?
19:51:19 <Vorpal> I believe I have a copy of it somewhere. Couldn't tell where though
19:51:24 <Vorpal> never ran it, it scared me too much
19:51:32 <ais523> it's still secret
19:51:37 <Gregor> I have a copy too, I didn't bother to get it to compile.
19:51:37 <ais523> but this channel knows of its existence
19:51:40 <ais523> the source code is available on request
19:51:43 <Gregor> But still, come on.
19:51:48 <oerjan> <Ngevd> Tomorrow they remove the letter "m" from the alphabet <-- and in 9-10 days, they'll remove "l".
19:51:51 <Vorpal> it required root (for obvious reasons) and there was NO way I was going to run that sort of crazy stuff as root :P
19:51:56 <Gregor> When I write two lines of source code to do something nobody else has ever wanted to do, I release the source.
19:51:56 <ais523> apparently, it compiles fine, but on most people's kernels fails with EPERM for reasons most people don't understand
19:51:57 <elliott> Gregor: it needs to be secret otherwise the effort is wasted
19:52:01 <elliott> Vorpal: it does nothing on x86-64
19:52:10 <ais523> including me
19:52:17 <ais523> elliott: anyway, that reminds me of an idea I had
19:52:24 <Vorpal> elliott, but you can run 32-bit programs on x86-64 fine usually?
19:52:27 <ais523> instead of getting the control process to drop permissions entirely
19:52:30 <Vorpal> elliott, you say that doesn't work here?
19:52:33 <elliott> Vorpal: it fails
19:52:38 <Vorpal> elliott, where does it fail?
19:52:42 <Vorpal> and why?
19:52:42 <elliott> well, it seems to be 64-bit kernels that it fails on
19:52:44 <ais523> get it to suspend them, and then set itself back to root where it fails
19:52:46 <elliott> it fails on my x86-64 arch
19:52:48 <elliott> and works in a 32-bit arch vm
19:52:51 <elliott> Vorpal: /proc permissions
19:52:58 <Vorpal> elliott, "huh"
19:53:06 <Vorpal> elliott, that is bizarre
19:53:07 <ais523> Vorpal: yep, the permissions of /proc seem to be not what we'd expect them to be
19:53:18 <Vorpal> why would they differ between architectures!?
19:53:18 <ais523> also, whenever I attempt to debug the problem, it starts working
19:53:24 <Vorpal> wha
19:53:32 <olsner> aha, it just wants some attention
19:53:34 <ais523> anyway, I recommend using a 32-bit VM and solve all your problems that way
19:53:42 <elliott> ais523: I wonder if it works in qemu-system
19:53:48 <ais523> both the "crazy code as root" problem, and the "confuses 64-bit kernels" problem
19:53:58 <elliott> <Vorpal> why would they differ between architectures!?
19:54:06 <elliott> Vorpal: well, /proc/<pid> needs architecture-specific info...
19:54:13 <Vorpal> elliott, oh right
19:54:23 <elliott> /permissions/ changing is weird, admittedly
19:54:29 <Vorpal> yes
19:54:42 <Vorpal> I mean, sure if there was an extra file or a file was missing.
19:54:51 <Vorpal> elliott, what was the permission difference though?
19:55:04 <elliott> Vorpal: /proc/<pid>/fd failed to stop being owned by root on weboflies' complicated permissions drop
19:55:08 <ais523> Vorpal: something was owned by root that should have been owned by woluser
19:55:23 <Vorpal> I see
19:55:37 <elliott> ais523: *nobody :)
19:55:45 <Vorpal> well a quick check of /proc/self/fd indicates it is owned by the user in the normal case.
19:55:51 <elliott> Vorpal: no shit
19:55:59 <Vorpal> ais523, does wol depend on that permission being like that?
19:56:01 <Vorpal> if so why?
19:56:11 <ais523> Vorpal: because it's trying to read its own procfiles
19:56:14 <ais523> and failing because it isn't root
19:56:15 <Vorpal> ah
19:56:42 <ais523> the process was started as nonroot, by a process that wasn't root (but had been root at some point in the past)
19:56:47 <Vorpal> ais523, sounds like this might be a kernel bug in either 32-bit or 64-bit
19:56:59 <ais523> but normally, if you drop permissions and then fork a process, the resulting process can read its procfiles
19:57:01 <ais523> hmm, /me tests
19:57:06 <elliott> 64-bit if anything, definitely
19:57:08 <ais523> wait, me testing is pointless, I don't see the bug
19:57:43 <ais523> elliott: on your computer, try starting a root shell, then using su to start a shell as a regular user, then checking the /proc/self's permissions
19:57:54 <Vorpal> does it happen on a trivial test case? As in, doing the basic uid changing and forking and such but not all the other crazy stuff that wol does?
19:57:57 <elliott> ais523: sudo -s is root shell enough, yes?
19:58:08 <ais523> yep
19:58:15 <elliott> it was /fd, btw
19:58:17 <elliott> not just /proc/self
19:58:26 <ais523> right, indeed
19:58:30 <elliott> ais523: that won't work, su forks a shell
19:58:37 <elliott> well, rather, su execs a shell
19:58:38 <elliott> and is forked itself
19:58:44 -!- monqy has joined.
19:59:01 <ais523> elliott: the situation in wol is fork, drop permissions, exec
19:59:07 <ais523> isn't that what su is doing?
19:59:16 <ais523> or well, it probably doesn't need the fork
19:59:22 <ais523> but I don't see how it'd matter
19:59:38 <elliott> [root@dinky esoteric]# ls -ld /proc/self/fd
19:59:38 <elliott> dr-x------ 2 root root 0 Dec 15 19:58 /proc/self/fd
19:59:38 <elliott> [root@dinky esoteric]# su elliott
19:59:38 <elliott> [elliott@dinky esoteric]$ ls -ld /proc/self/fd
19:59:38 <elliott> dr-x------ 2 elliott users 0 Dec 15 19:58 /proc/self/fd
20:00:09 <Vorpal> $ su - arvid /bin/ls /proc/self/fd
20:00:09 <Vorpal> /bin/ls: /bin/ls: cannot execute binary file
20:00:10 <Vorpal> what
20:00:26 <Vorpal> what am I missing here
20:00:36 <Vorpal> plain /bin/ls works fine
20:00:47 <elliott> wait, where's PH?
20:00:54 <Vorpal> not here
20:00:59 <Gregor> That's not how su works, that's how sudo works.
20:01:05 <elliott> oh, pinged out half an hour ago
20:01:09 <Gregor> su - whatever -c 'command'
20:01:15 <elliott> 30 over 4, anyway :(
20:01:19 <Vorpal> Gregor, I thought that was sudo
20:01:21 <Vorpal> oh well
20:01:35 <elliott> $ sudo ls # Vorpal thinks this doesn't work
20:01:52 <Gregor> Vorpal: Arguments to su are arguments to the shell. e.g. bash /bin/ls
20:02:40 <Vorpal> ah right
20:03:41 <Vorpal> ais523, anyway an obvious way to generate randomness on a DS would be the ways you can generate randomness in wol
20:03:56 <Vorpal> busy looping
20:04:07 <ais523> Vorpal: busy looping doesn't create randomness in WOL
20:04:09 <ais523> it just crashes it
20:04:20 <elliott> Vorpal: a DS is already busylooping the /game loop/
20:04:26 <Vorpal> elliott, hm good point
20:04:47 <elliott> Vorpal: anyway, that trick only works with a preemptive scheduler
20:04:53 <elliott> which I doubt the DS uses
20:05:01 <elliott> if you do it on the other CPU, you're just measuring clock drift again
20:05:24 <Vorpal> elliott, so add a hardware clock alarm and check the instruction pointer when you get the interrupt.
20:05:30 <Vorpal> if DS has that sort of alarms
20:05:32 <Vorpal> I know PCs do
20:06:09 <elliott> Vorpal: so, interrupt the game loop more often than every 1/60 seconds?
20:06:15 <elliott> that sounds smart
20:06:37 <Vorpal> elliott, well on a PC it kind of would be hard to tell due to PCs being so fast. I guess it would be an issue on a DS though
20:06:55 <elliott> Vorpal: the point is that you're saying "please interrupt the machine more than once per frame"
20:07:11 <elliott> "and spend CPU time reseeding the RNG with it"
20:07:54 <Vorpal> elliott, interrupts on button presses would work though. Because that way you would only get those extra interrupts when the user is performing the action in question
20:08:11 <Vorpal> not on the DS sure, but for future platforms
20:08:13 <elliott> Vorpal: which is again defeated by the user timing their button press...
20:08:28 <Vorpal> elliott, you can only time up to a certain accuracy
20:08:55 <elliott> Vorpal: how accurate are you asking the clock to be, exactly?
20:08:58 <Vorpal> elliott, if this would help or not would depend on how accurately you measure the time of the interrupt
20:09:10 -!- Phantom_Hoover has joined.
20:09:16 <elliott> Vorpal: anyway, even if you can't time it to that
20:09:17 <elliott> just keep trying
20:09:19 <Vorpal> elliott, I don't know how accurate DS clocks are, but PC clocks can easily get down to microseconds
20:09:22 <elliott> the clock is limited precision
20:09:26 <Vorpal> <elliott> just keep trying <-- well yes
20:09:29 <elliott> there are a limited number of bits of noise you can look at the lower end from
20:09:37 <elliott> just spend hours tapping the button every 1/n seconds
20:09:50 <ais523> elliott: for what it's worth, Pokémon Red/Blue are famously impossible to manipulate
20:09:57 <ais523> because they care about every single keystrok
20:10:00 <ais523> *keystroke
20:10:05 <elliott> ais523: certainly, that sounds plausible
20:10:05 <Vorpal> elliott, that is like pudding farming then :P
20:10:09 <ais523> also, they're apparently annoying to manipulate even in TASes
20:10:10 <elliott> I just think Vorpal's ideas for doing it are ridiculous
20:10:23 <ais523> due to some details of the way it works
20:10:40 <Phantom_Hoover> <ais523> elliott: for what it's worth, Pokémon Red/Blue are famously impossible to manipulate
20:10:42 <Vorpal> ais523, so why haven't nintendo just doing it that way again?
20:10:51 <Phantom_Hoover> How does that make them *impossible* to manipulate.
20:10:52 <Vorpal> aren't*
20:11:07 <ais523> Phantom_Hoover: well, not actually impossible, but beyond anyone's ability
20:11:29 <oerjan> <itidus21> i wonder what properties of hexham inspire esolang <-- my guess is "intense boredom".
20:11:43 <elliott> oerjan: you live in /Trondheim/
20:12:17 <Vorpal> elliott, and he is doing esolangs
20:12:25 <Vorpal> so fits it
20:12:29 <elliott> Vorpal: so he can't diss hexham!
20:12:57 <itidus21> i wonder how boredom happens
20:13:02 <Vorpal> elliott, I don't think he was dissing it. Just trying to explain the reason for the observed data
20:13:20 <Vorpal> itidus21, I'm convinced it is generated by buses
20:13:24 <elliott> Vorpal: you didn't realise /that/ was a joke?
20:13:31 <elliott> come on, stop being hopeless
20:13:33 <Vorpal> elliott, I didn't take it as one
20:13:57 <Vorpal> itidus21, or perhaps more accurately by bus stops
20:14:07 <Vorpal> itidus21, the reason is that the only time I ever get really bored is while waiting for buses.
20:14:14 -!- Klisz has joined.
20:14:19 <itidus21> theres this effect whereby the grass is greener on the other side of the fence
20:14:26 <Vorpal> Presumably the same would apply to trains, but I rarely travel by them.
20:14:32 <itidus21> i don't know if it has a formal fallacy name
20:14:39 <itidus21> i'll check
20:14:44 <Vorpal> itidus21, how is that related to bus stops?
20:14:54 <itidus21> i'll get to that
20:16:06 <oerjan> > 173486/11446
20:16:07 <lambdabot> 15.156910711165473
20:16:07 <Vorpal> the problem is that you don't know exactly when the bus will arrive. Except for the end station and some major interconnections the time it arrives and leaves at may vary with a few minutes. As in, it won't wait if it is a minute or two too early.
20:16:37 <Vorpal> so you need to go to the bus stop like 5 minutes in advance, and then the bus may end up 5 minutes too late as well
20:16:39 <oerjan> elliott: trondheim is rather larger.
20:16:41 <Vorpal> and you have nothing to do
20:16:48 <Vorpal> thus boredom
20:16:52 <Vorpal> itidus21, ^
20:17:24 <Vorpal> oerjan, the busy metropolis of Trondheim?
20:17:39 <itidus21> on a side note, someone in a distant chatroom suggested to me that finland is very depressing and a bit of a gulag
20:17:57 <Vorpal> itidus21, "distant chatroom"? How do you measure distance between IRC channels?
20:18:09 <itidus21> who said it was irc
20:18:20 -!- Gregor has set topic: <itidus21> on a side note, [...] finland is very depressing and a bit of a gulag | http://codu.org/logs/_esoteric/.
20:18:21 <itidus21> its a bit like measuring uhh.. erdos number
20:18:24 <Vorpal> itidus21, even so, how do you measure distance between two online resources
20:18:27 <Vorpal> hm okay
20:18:58 <itidus21> or the distance to kevin spacey
20:19:30 <Vorpal> itidus21, anyway they are connected by you, means it can't be that distance from this channel
20:19:35 <itidus21> but the person in question is a troll who insists on finding fault with every country and religion
20:20:09 <coppro> ais523: turns out my kyurem is modest with 10 IV in SpA, 31 in HP, and 13 in Speed
20:20:15 <Vorpal> itidus21, well there usually /are/ faults in most things. You just have to compare the upsides to the downsides.
20:20:42 <ais523> coppro: what did you calculate that based on?
20:20:50 <ais523> and, err, modest with 10 SpA? that's not really ideal
20:21:06 <coppro> ais523: just plugged it into a calculator
20:21:11 <coppro> and no, it isn't, but it could be worse
20:21:21 <ais523> sure, it could have been Adamant
20:21:44 <itidus21> people who i have seen him harshly criticize includes: gandhi, dalai lama, des cartes, alan turing
20:22:13 <itidus21> eventually i got around to ignoring the guy, even if he does make curious points
20:23:19 <elliott> did gandhi not support hitler or sth
20:23:41 <elliott> also, "des cartes"?
20:24:13 <coppro> ais523: Missing those IVs is roughly equivalent to having a neutral nature and perfect IVs
20:24:19 * kallisti names his Starcraft II account "duh cart"
20:24:21 <olsner> des cartes, the famous german philosopher
20:24:37 <ais523> coppro: exactly, so you have all the speed loss of Modest /and/ all the special attack loss of Timid?
20:24:39 <ais523> what's not to like?
20:24:46 <coppro> haha
20:25:01 <kallisti> seriously I watch sc2 games like every day.
20:25:04 <coppro> wait, speed loss of modest? what?
20:25:14 <itidus21> hmm.. cartesian duality was his main gripe there
20:25:17 <Vorpal> elliott, obviously he meant desc artes, a from of pop art.
20:25:18 <ais523> coppro: modest isn't +speed
20:25:25 <ais523> thus, your speed isn't as high as it could be
20:25:26 <coppro> ais523: oh, I see what you mean
20:25:28 <elliott> a from of pop art
20:25:32 <coppro> yeah
20:25:46 <Vorpal> elliott, form*
20:25:48 <Vorpal> but right
20:25:52 <itidus21> anyway, i love finland :-s
20:26:01 <itidus21> even though i don't know anything about it
20:26:01 <kallisti> I've never been to finland.
20:26:08 <Vorpal> elliott, it involves making speling erorrs
20:26:14 <itidus21> i've never left australia
20:26:31 <Vorpal> elliott, I was simply triyng to get into the mood
20:26:36 <kallisti> itidus21: you're australian?
20:26:39 <kallisti> IT ALL MAKES SENSE NOW.
20:26:42 <itidus21> yup
20:27:14 <Vorpal> itidus21, anyway what was that about bus stops and grass being greener on the other side?
20:27:29 <Vorpal> itidus21, you never got around to explaining it
20:27:33 <itidus21> im looking for a wiki page about the grass being greener phenomenon
20:28:00 <Vorpal> itidus21, but how is it related to being bored due to waiting for something and having nothing to do to pass the time?
20:28:55 <itidus21> i'll get around to that eventually
20:29:04 <itidus21> but surely there is a name for this damn phenomenon
20:29:13 <Vorpal> I'm extremely seldom bored unless I'm in such a situation. I generally find something to do even if I have nothing that I need to do.
20:29:24 <itidus21> "The grass is always greener on the other side" suggests an alternate state of affairs will always seem preferable to one's own.
20:30:04 <Vorpal> itidus21, well right. Often involves jealousy of the the neighbour's lawn?
20:30:08 <Vorpal> ;P
20:30:28 <itidus21> hmm.. but i suspect it is a natural psychological illusion
20:30:33 <itidus21> i dunno the right word here
20:30:58 <Vorpal> (well I never noticed that sort of thing wrt actual lawns)
20:31:09 <itidus21> its not an optical illusion of course
20:31:19 <Vorpal> well of course
20:31:23 <itidus21> there is some level of metaphorical abstraction
20:31:24 <Vorpal> it would be weird if it was
20:32:04 <Vorpal> itidus21, anyway, yes the bus arriving is a better state of the world than the bus not arriving yet. Especially if it is very cold.
20:32:17 <Vorpal> like -15°C
20:32:20 <itidus21> well.. its like saying on some given street, home X is more of a mess inside than home X-1 and also home X is more of a mess inside than home X+1
20:32:42 <Vorpal> eh
20:32:47 <itidus21> uhm
20:33:17 <Vorpal> I never noticed that really either.
20:33:21 <Vorpal> well
20:33:21 <itidus21> i dunno
20:33:29 <itidus21> maybe your house isn't a pigsty like mine
20:33:34 <itidus21> :P
20:33:53 <Vorpal> not really. Sure there are a few unruly heaps of papers on my desk, and such
20:34:02 <itidus21> maybe the occupants of your household don't generate waste and expect someone else to clean it
20:34:30 <itidus21> as if such people could not get by day to day without paid workers
20:34:33 <Vorpal> itidus21, but apart from that I tend to keep it clean. Having it dusty is annoying. And potentially dangerous during the spring due to my pollen allergies
20:35:04 <Vorpal> (mostly birch)
20:35:15 <itidus21> what people don't realize is that social systems can break down as readily as mathematical systems
20:35:30 <itidus21> like suppose i was to remove a single term of my choosing from a haskell program
20:35:49 <itidus21> it could quite possibly have a cascading damage of the meaning of the program, right?
20:36:20 <elliott> do you even know haskell
20:36:21 <Vorpal> probably would give you something like "Not in scope: x'"
20:36:26 <itidus21> hmm
20:36:46 <itidus21> ok i wont use haskell in my analogy
20:36:48 <Sgeo> I think the most likely scenario is failure to compile.
20:36:52 <Vorpal> (actually it would quote x' I think)
20:36:53 <Vorpal> Sgeo, indeed
20:37:06 <Sgeo> But I can probably construct programs that would still compile, but would mean something else
20:37:10 <elliott> itidus21: do you mean definition or subexpression
20:37:15 <itidus21> i dont know
20:37:16 <elliott> Sgeo: i doubt it
20:37:23 <elliott> you can't shadow module functions in haskell
20:37:28 <elliott> without being explicit about it
20:37:30 <itidus21> i guess its not clear the bizzare idea i am driving at
20:37:33 <Sgeo> elliott, can a definition in a where clause shadow a definition in the main part of the file?
20:38:02 <elliott> oh, yes
20:38:03 <elliott> ok then
20:38:06 <itidus21> ok suppose i was to make a pinhole in a gas pipeline
20:38:22 <Vorpal> elliott, if you just remove a subexpression then yes. like x' = x + y transformed into x' = x
20:38:32 <itidus21> over time the gas would leak and leak until the whole house is a bomb waiting to go off
20:38:45 <Vorpal> gah lag spikes
20:38:55 <elliott> Vorpal: that's not removing a subexpression
20:39:05 <Vorpal> elliott, well okay
20:39:17 <Vorpal> elliott, it is literally removing a term though
20:39:20 <Sgeo> x' = f x turned into x' = x removes a subexpression, doesn't it?
20:39:27 <Vorpal> elliott, y there is a mathematical term
20:39:28 <elliott> Vorpal: it's not
20:39:31 <elliott> it's removing a term and an operator
20:39:35 <Vorpal> well okay
20:39:39 <itidus21> uhhh
20:39:42 <Sgeo> I mean, f is a subexpression, right?
20:39:46 <itidus21> shit heres what im trying to say
20:40:02 <Sgeo> itidus21, it's important to odorize the gas so that people will notice if there's a leak?
20:40:11 <itidus21> a highly stable system is probably more vulnerable to change
20:40:14 <Sgeo> So that more kids don't die?
20:40:25 <Vorpal> itidus21, ... no?
20:40:39 <itidus21> hmm this is gonna take a while :-D
20:40:43 <elliott> itidus21: that's the opposite of the definition of highly stable
20:40:48 <Vorpal> indeed
20:40:55 <Sgeo> http://en.wikipedia.org/wiki/New_London_School_explosion
20:41:08 <Phantom_Hoover> <itidus21> what people don't realize is that social systems can break down as readily as mathematical systems
20:41:10 <Phantom_Hoover> Nnnnno.
20:41:23 <Sgeo> A highly inter-dependent system is unlikely to be highly stable?
20:41:28 <Sgeo> Is that what itidus21 wants to say?
20:41:28 <Phantom_Hoover> At least, if you're talking about the kind of precisely engineered formal systems usually used.
20:41:44 <Vorpal> Phantom_Hoover, I think that itidus21 lives in some horrible mirror universe.
20:42:03 <itidus21> are not all living systems highly inter-dependant?
20:42:06 <elliott> Vorpal: i think that itidus21 wants to make a profound observation.
20:42:14 <Phantom_Hoover> Social systems are pretty redundant, and the complexity of the individual units gives them a lot of flexibility.
20:42:20 <Vorpal> elliott, I further think he is not managing to do so very well so far
20:42:29 <elliott> Vorpal: i was not implying otherwise.
20:42:36 <Vorpal> elliott, okay
20:42:47 <itidus21> thats easy to say unless you are one of the mortalities in the exceptions
20:42:53 <Phantom_Hoover> The death of almost any individual can be recovered from with effectively no difficulty.
20:43:06 <Sgeo> Not in Dictatorships
20:43:07 <itidus21> except from the point of view of that individual :D
20:43:14 <itidus21> that individual cannot recover
20:43:19 <Sgeo> Well, I guess that's the almost.
20:43:21 <Vorpal> itidus21, that doesn't count when looking at the whole system
20:43:22 <Phantom_Hoover> But we're talking about the entire society here.
20:44:01 <itidus21> ok now we're getting closer to my mistakes
20:44:06 <Phantom_Hoover> And even in a dictatorship the death of the dictator can frequently be recovered from.
20:44:11 <elliott> Sgeo: itidus21 was referring to gradual collapse, I believe.
20:44:18 <elliott> Sgeo: But look at North Korea.
20:44:29 <elliott> They survived the death of a dictator; it strengthened the dictatorship, even.
20:44:47 <Sgeo> A poorly designed dictatorship, then.
20:44:52 <itidus21> hmm
20:44:58 <itidus21> hmmm
20:45:05 <Sgeo> But then, any poorly designed anything might not account for the possibility of individual death
20:45:20 <elliott> Sgeo: itidus21 was talking about stable systems.
20:45:34 <itidus21> i dont quite know what i am talking about..
20:45:39 <itidus21> im pretty insane
20:45:52 <monqy> ok
20:45:56 <Phantom_Hoover> FSVO 'insane' equal to 'stupid'.
20:46:02 <monqy> :0
20:46:03 <oerjan> itidus21: finding a formal term for "the grass is greener on the other side" seems impossible
20:46:07 <Vorpal> itidus21, a /definition/ of a stable system is one that doesn't radically change due to a "small" input.
20:46:10 <Phantom_Hoover> (I feel bad now.)
20:46:14 <Vorpal> such as the death of a person
20:46:19 <Phantom_Hoover> oerjan, just call it the envy fallacy.
20:46:20 <Sgeo> Phantom_Hoover, and you should feel bad!
20:46:22 <olsner> north korea's dictator is dead? when did this happen?
20:46:30 <elliott> olsner: 1994
20:46:32 <Phantom_Hoover> olsner, the old one.
20:46:34 <Sgeo> olsner, the father of the current one is dead, I think.
20:47:00 <Vorpal> itidus21, of course a three-person system might very well fail from the death of one person, but then I would argue that is a huge input. After all 33.33....% percent of the persons in the system died.
20:47:10 <itidus21> 1) i am bad at communication. 2) i spawned 2 topics in my weird rant just now
20:47:24 <itidus21> but... uhhh
20:47:31 <itidus21> i think i can still derive value!
20:47:32 <Vorpal> But in a 100-person system say? then 1 person is 1% of the population. Not likely to fail from that.
20:47:54 <itidus21> so what do i mean by grass is greener... lets see...
20:48:01 <itidus21> ill explain carefully now why i even brought that up
20:48:11 <Sgeo> Of course, large inputs, such as a Gamma-Ray Burst, can destroy any social system
20:48:20 <oerjan> hm istr something about things collapsing in france after king louis 14 because he had made all the decisions personally
20:48:31 <Vorpal> I'm likely to disconnect. I'm moving cables.
20:48:34 <oerjan> and there was no one skilled enough to take over
20:48:50 <itidus21> suppose that someone lives in a depressing home for some reason.. i dunno what reason.. it could be the people are assholes
20:49:03 <elliott> itidus21: Is this hypothetical Based On A True Story.
20:49:10 <itidus21> no..
20:49:19 <elliott> The best hypotheticals are!
20:49:30 <itidus21> sort of...
20:49:35 <itidus21> but..
20:49:38 <Sgeo> They're all Assholes, sir!
20:49:45 <itidus21> ok uhm
20:50:05 -!- Vorpal_ has joined.
20:50:15 <Vorpal_> <oerjan> and there was no one skilled enough to take over <-- oerjan, that wasn't a stable system
20:50:16 -!- Vorpal has quit (Disconnected by services).
20:50:22 -!- Vorpal_ has changed nick to Vorpal.
20:50:29 <itidus21> if i was in africa, while they have to worry about food and drink, i have to worry about assholes
20:50:36 <elliott> yes, it is, Vorpal
20:50:42 <elliott> it's just that king louis 14 counts as a very large input
20:50:57 <Vorpal> elliott, well okay
20:51:01 <itidus21> when faced with assholes everyday it is actually not that hard to imagine that the african food and drink would win in the cost-benefit
20:51:23 <itidus21> but where this fallacy really breaks is that in africa a person is probably just as likely to meet more assholes
20:51:48 <itidus21> so living with assholes could be compounded with poor food and drink
20:52:26 <elliott> Ergo bus stops,.
20:52:45 <Vorpal> elliott, anyway I think the best example to explain what a stable and unstable system means to itidus21 would be a physical example. Take a plank. Make a hole in one end. Hang it on a horizontal rod. Now it is stable. Rotate it so it is balanced above the rod. Now it isn't stable
20:52:45 <itidus21> bus stops don't sound that bad
20:53:00 <elliott> itidus21: So you don't actually have a bus stop-related point?
20:53:09 <itidus21> what is so bad about busstops?
20:53:19 <elliott> itidus21: Well, the point is that Vorpal was talking about bus stops being boring.
20:53:20 <itidus21> i don't see how any harm can come to you on account of busstops
20:53:27 <Vorpal> I'm not sure poor food and drink would lead to boredom
20:53:27 <elliott> Then you tried to relate it to the grass is always greener on the other side.
20:53:30 * Phantom_Hoover wonders why /r/math has far more activity on "things which mathematicians do" than actual maths.
20:53:31 <Vorpal> annoyance sure
20:53:33 <itidus21> i dont see how busstops can bore a person :D
20:53:34 <Vorpal> but not boredom
20:53:46 <monqy> itidus21: what if assholes are gathered at the bus stop
20:53:50 <Vorpal> itidus21, it does when you wait for a bus that is 3 minutes late
20:53:51 <elliott> Phantom_Hoover: Because most people aren't mathematicians?
20:53:55 <Vorpal> and have nothing to do to pass the time
20:54:12 <Phantom_Hoover> <Sgeo> Of course, large inputs, such as a Gamma-Ray Burst, can destroy any social system
20:54:14 <itidus21> ahh
20:54:26 <Phantom_Hoover> Those capitals are like a stab to the eye.
20:54:39 <oerjan> <ais523> probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious <-- istr this actually being a problem in medieval iceland
20:54:43 <Vorpal> itidus21, that sort of situation, is really the only time I ever get bored
20:54:46 <Sgeo> Phantom_Hoover, Go Look At Some X-Rays.
20:54:48 <Phantom_Hoover> elliott, that's a) wrong in this context and b) doesn't even explain the content.
20:54:49 <Vorpal> itidus21, otherwise I tend to find things to do
20:54:49 <itidus21> Vorpal: so while one waits those 3 minutes, its as if one is being poisoned.. and it takes hours afterwards for that poison to dissipate?
20:54:55 <elliott> Phantom_Hoover: Gamma-Ray Burst are Sgeo's favourite metal band!
20:55:01 <Vorpal> itidus21, no? Where did I say that
20:55:09 <Phantom_Hoover> Noted for their social upheaval!
20:55:38 <elliott> Phantom_Hoover: (a) Do you really think most /r/math subscribers are mathematicians? (b) People who aren't mathematicians don't understand most mathematics.
20:55:51 <itidus21> i think i'm being way too literal about the busstop thing :-D
20:56:07 <monqy> metaphorical bus stops are the best bus stops, after all
20:56:08 <Vorpal> itidus21, you just said "<itidus21> i wonder how boredom happens"
20:56:22 <Vorpal> and my answer was "while waiting for public transport and having nothing to do to pass the time"
20:56:37 <itidus21> j,,
20:56:40 <itidus21> ^hmm
20:56:40 <Vorpal> itidus21, to me that is basically the only times when I'm really bored
20:56:50 <itidus21> but you don't live in hexham
20:56:54 <itidus21> hehehe
20:57:00 <Vorpal> no but I live in a pretty small town
20:57:15 <Vorpal> but there are always books to read, or web pages to browse or stuff to code or whatever
20:57:26 <Vorpal> except when waiting for the bus
20:57:28 <itidus21> maybe a lot of it was about growing up
20:57:35 <Phantom_Hoover> <elliott> Phantom_Hoover: (a) Do you really think most /r/math subscribers are mathematicians? (b) People who aren't mathematicians don't understand most mathematics.
20:57:36 <oerjan> with roaming duelists seeking out weak people to challenge
20:57:43 <olsner> Vorpal: sounds like your town consists of only your house
20:57:49 <elliott> <oerjan> with roaming duelists seeking out weak people to challenge
20:57:50 <elliott> *dualists
20:57:55 <Vorpal> olsner, well, 20 000 inhabitants iirc.
20:58:06 <Vorpal> olsner, still, meh. I'm an introvert.
20:58:09 <elliott> oerjan: That's the plot to Des Cartes II: Des Harder.
20:58:28 <Vorpal> elliott, sounds like a bad porn movie
20:58:37 <monqy> the best porn movie??
20:58:42 <itidus21> what i'm imagining is that if i was in finland i might find it easier to focus and concentrate for some reason
20:58:58 <itidus21> that is the grass is greener effect i actually specifically had in mind
20:59:03 <elliott> Aren't you putting des cartes before the horse???
20:59:12 <Vorpal> <elliott> <oerjan> with roaming duelists seeking out weak people to challenge <-- wait, where was the *start* of that sentence?
20:59:23 <elliott> Phantom_Hoover: hi
20:59:35 <Vorpal> or is oerjan just a extremely slow typer?
20:59:37 <Vorpal> typist*
20:59:40 <Vorpal> (maybe?)
20:59:43 <itidus21> i find that social circles tend to replicate themselves in a persons life
20:59:49 <oerjan> Vorpal: i just had an afterthought
20:59:57 <Vorpal> oerjan, what was the context for it
21:00:02 <oerjan> the first part is about a page above
21:00:04 <itidus21> its always the same kinds of people filling roles in each others lives
21:00:05 <Vorpal> oerjan, it is not on my screen
21:00:26 <Vorpal> itidus21, sure, and?
21:00:27 <itidus21> so that no matter where you go, that same social circle will form around you
21:00:27 <oerjan> <ais523> probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious <-- istr this actually being a problem in medieval iceland
21:00:40 <itidus21> so you can't escape it simply by travelling :-D
21:00:51 <Vorpal> itidus21, and why would you want to?
21:00:52 <itidus21> by crossing the fence :-s
21:00:53 <olsner> hmm, I thought for a while you actually meant dualist, imagining that as being some category of mathematician
21:01:01 <Sgeo> elliott, off-topic still, but I think you should watch Puella Magi Madoka Magica.
21:01:04 <Sgeo> >.>
21:01:07 <Vorpal> itidus21, I like my friends and family
21:01:11 <monqy> Sgeo: hi
21:01:12 <itidus21> hmm
21:01:26 <olsner> roaming around and challenging people's ideas
21:01:49 <elliott> olsner: http://en.wikipedia.org/wiki/Dualism_(philosophy_of_mind)
21:01:58 <itidus21> Vorpal: thats all you need in the world. you've won the game.
21:02:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:02:17 <Vorpal> itidus21, oh also, I'm waiting for windows to boot atm, I'm not bored because of the slow disk making it take ages. I'm annoyed however. But meanwhile I'm chatting here on my laptop
21:02:22 <itidus21> however i have this theory that a person can't in the game so easily.
21:02:36 <itidus21> so something else must be eating away at you if your social life is in order
21:02:41 <elliott> OH NOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:02:53 <olsner> elliott: oh, that's probably what I was really thinking about
21:02:53 <elliott> Guys, I'm about to suffer severe time dilation and being-ripped-apartness.
21:03:01 <elliott> I'll see you... on the other side...
21:03:04 <Vorpal> itidus21, well there was that skeleton in the cellars (true story)
21:03:04 <elliott> of the VORTEX
21:03:05 <monqy> :0
21:03:13 <oerjan> "Professional duelists used holmgangs as a form of legalized robbery; they could claim rights to land, women, or property, and then prove their claims in the duel at the expense of the legitimate owner. Many sagas describe berserks who abused holmgang in this way. In large part due to such practices, holmgangs were outlawed in Iceland in 1006, as a result of the duel between Gunnlaugr Ormstunga and Hrafn Önundarson,[2] and in Norway in 1014."
21:03:16 <olsner> elliott: vortex of fluidity?
21:03:20 <Vorpal> itidus21, It was a bird skeleton.
21:03:21 <elliott> olsner: YES.
21:03:25 <Vorpal> ;P
21:03:31 <itidus21> i mean for "me" what "I" need is to like my family and friends
21:03:35 <monqy> vortices only make me think vortex based mathematics sorry
21:03:45 <elliott> monqy: im sucked in :(
21:03:47 <elliott> fluidly
21:03:51 <monqy> :(
21:03:51 <Vorpal> oerjan, heh
21:04:03 <itidus21> elliott: you'll be back
21:04:13 <elliott> itidus21: That's what they told me yesterday.
21:04:25 <itidus21> hmmmmmmmmmmmmm
21:05:14 <itidus21> elliott: it sounds like time to consult the i ching
21:05:23 <elliott> itidus21: How can I do that from inside a vortex????
21:05:25 <elliott> There's no internet!
21:05:35 <elliott> Well, that's not true.
21:05:42 <elliott> But it only connects me to this channel and one website.
21:05:43 <ais523> elliott: tame the vortex, then use conflict to get it to engulf you anyway
21:05:45 <itidus21> don't worry.. i have the book.. it doesn't matter if i don't exist
21:05:47 <ais523> the glitch is known as Crassworm's Hotel
21:05:59 <elliott> ais523: That sounds unethical.
21:06:02 <itidus21> it doesn't matter that i don't know how to use it properly
21:06:24 -!- Phantom_Hoover has joined.
21:06:26 <Vorpal> ais523, :D
21:06:32 <itidus21> hmm
21:06:39 <itidus21> do we have a random number generator in here?
21:06:40 <Vorpal> ais523, there is a glitch there?
21:06:49 <olsner> itidus21: 7
21:06:50 <Vorpal> ais523, anyway what does that result in? getting no damage?
21:06:56 <ais523> if you take the ring of conflict off, yes
21:07:02 <Vorpal> ah
21:07:02 <ais523> the problem is, it's mostly only useful on Air
21:07:02 <itidus21> olsner: no wait.. i need it to be in the 1 - 64 range
21:07:07 <olsner> itidus21: 7 is
21:07:09 <Vorpal> ais523, useful yes
21:07:10 <itidus21> true
21:07:22 <ais523> and by the time you get there, vortices do such pitiful damage that you can heal up inside them even without using the glitch
21:07:37 <itidus21> olsner: ok a second number from 1 to 6
21:07:57 <olsner> itidus21: 7
21:08:23 <ais523> !perl print (int (rand 6) + 1)
21:08:24 <EgoBot> 2
21:08:25 <monqy> q
21:08:26 <elliott> <itidus21> do we have a random number generator in here?
21:08:29 <ais523> itidus21: there you go
21:08:30 <elliott> @dice 3d4 + 9d9
21:08:30 <lambdabot> 3d4 + 9d9 => 44
21:08:34 <itidus21> i need a pair of numbers... the first being from 1 to 64 "7" .. the second number being 2
21:08:43 <itidus21> oops
21:08:44 <elliott> 1 to 64 "7"?
21:08:45 <monqy> 7, 2
21:08:53 <itidus21> should i use 44 or 7?
21:08:58 <elliott> or 64
21:09:05 <olsner> or 7
21:09:07 <monqy> use q
21:09:07 <ais523> itidus21: does the number need to be /random/, or /arbitrary/?
21:09:12 <ais523> if random, I suggest you use an actual d64
21:09:17 <elliott> @dice 1d64
21:09:17 <lambdabot> 1d64 => 6
21:09:20 <elliott> there
21:09:22 <elliott> itidus21: 6, 2
21:09:30 <itidus21> ok
21:09:36 <elliott> hmm
21:09:37 <elliott> @dice 1d1
21:09:37 <lambdabot> 1d1 => 1
21:09:38 <elliott> @dice 1d1
21:09:38 <lambdabot> 1d1 => 1
21:09:39 <elliott> right
21:10:00 <Vorpal> <ais523> and by the time you get there, vortices do such pitiful damage that you can heal up inside them even without using the glitch <-- not if you go for low score?
21:10:16 <ais523> Vorpal: teleport them away afterwards, I guess, still doesn't cost score
21:10:18 <itidus21> elliott: so just to make this clear for me.. the number in the range of 1 to 64 is 6, and the number in the range 1 to 6 is 2, right?
21:10:22 <Vorpal> hm right
21:10:25 <elliott> itidus21: er
21:10:28 <ais523> although if you're going minscore, you're going to be doing the planes with pets and/or a tooled horn
21:10:33 <elliott> @dice 1d64
21:10:34 <lambdabot> 1d64 => 61
21:10:34 <elliott> @dice 1d6
21:10:34 <lambdabot> 1d6 => 2
21:10:36 <elliott> itidus21: there you go
21:10:37 <Vorpal> ais523, well yes
21:10:41 <elliott> itidus21: assuming those ranges are inclusive
21:10:48 <itidus21> yup inclusive
21:11:02 <itidus21> ok so 61 and 2
21:11:34 <monqy> ok
21:11:43 <itidus21> When you know what is true, you do not have to hide your own strength. You will earn the trust and admiration of others even though you have done nothing to seek it.
21:11:54 -!- Phantom_Hoover has quit (Quit: Leaving).
21:11:57 <itidus21> lol
21:12:09 -!- Phantom_Hoover has joined.
21:12:09 <itidus21> there you go
21:12:18 <itidus21> use this to de-vortex
21:12:49 <oerjan> i don't think this random selection was fair overall, as there wouldn't have been a rethrow if the first numbers hadn't been ambiguous which were which
21:12:51 <Phantom_Hoover> Oh no elliott
21:13:21 <itidus21> its a cheap shitty i ching book. i am not using it by any proper means
21:13:26 <Phantom_Hoover> rip elliott, killed by stack overflow 1995-2011
21:13:29 <elliott> Phantom_Hoover: the vortex shall consume us all
21:13:57 <Phantom_Hoover> rip us all, killed by stack overflow 1995-2011.
21:14:00 <oerjan> itidus21: sheesh, you could at least throw a coin per line :P
21:14:11 <Phantom_Hoover> except monqy he's too young to be one of us
21:14:11 <itidus21> i threw out the coins in the rubbish
21:14:22 <itidus21> during a weird phase i went through
21:14:28 <elliott> monqy is 4
21:14:29 <elliott> yearso ld
21:14:55 <itidus21> oerjan: suffice to say the chinese would love PRNG if they had one back then
21:15:06 <ais523> elliott: hmm, what distinguishes yearso from other linkers?
21:15:08 <Vorpal> <Phantom_Hoover> rip us all, killed by stack overflow 1995-2011. <-- I assume you mean the site? It tends to be quite terrible.
21:15:09 <monqy> usually im 6 or 2 but today i can make exception
21:15:12 <oerjan> itidus21: i'd be shocked, except i once threw away a die for an equally weird reason.
21:15:28 <ais523> (I would so call the linker I'm currently writing yearso if giving it a silly name were appropriate, but it isn't; at the moment, it's imaginatively named "linker")
21:15:53 <itidus21> for some reason, humans throughout the millenia have invented all manner of natural PRNGs
21:16:09 <Sgeo> Do die count as PRNGs?
21:16:10 <itidus21> maybe it's fun
21:16:15 <itidus21> yes
21:16:31 <monqy> how about really big coins
21:16:34 <itidus21> yes
21:16:39 <monqy> you can't flip it it's too big
21:16:43 <ais523> Sgeo: no, they're imperfect RNGs, but aren't pseudorandom by any sensible definition
21:16:47 <oerjan> it's debatable whether you can ever get rid of the P in our physical universe
21:16:58 <itidus21> i am agreeing with oerjan
21:17:18 <Sgeo> ais523, well, if we ignore small-scale quantum randomness...
21:17:25 <ais523> oerjan: a probably foolproof definition of "PRNG" is that it's possible to reseed it
21:17:27 <Sgeo> Which presumably does not have much of an impact on die.
21:17:31 <ais523> the physical universe can't be reseeded
21:17:34 <oerjan> and if there _is_ any truth to divination, you probably cannot.
21:17:37 <elliott> <ais523> elliott: hmm, what distinguishes yearso from other linkers?
21:17:40 <itidus21> i dont know quantum mechanics
21:17:56 <elliott> ais523: i don't have a sufficiently funny response to this, but i want to acknowledge it as a good question
21:17:56 <Vorpal> <ais523> Sgeo: no, they're imperfect RNGs, but aren't pseudorandom by any sensible definition <-- if the state of the world in the area that can affect the die is taken as seed?
21:18:03 <oerjan> ais523: well ok if the pseudo means entirely predictable rather than imperfect.
21:18:04 <elliott> ais523: and Yearso is a good name for a company
21:18:07 <ais523> it is
21:18:09 <elliott> ais523: modulo the fact that it's unclear how to pronounce it
21:18:21 <ais523> it's obvious how to pronounce it apart from the s
21:18:24 <itidus21> is nature itself a PRNG?
21:18:36 <elliott> itidus21: if anything it's a non-P RNG
21:18:45 <elliott> there's true randomness at the quantum level
21:18:59 <elliott> see e.g. HotBits, which generates true random numbers by monitoring radioactive decay
21:19:02 <oerjan> <Phantom_Hoover> rip us all, killed by stack overflow 1995-2011. <-- should i be scared? i also made my first SO comments just days ago. only 11 reputation so far, though.
21:19:20 <Sgeo> elliott, or is there? (many-worlds etc)
21:19:24 <itidus21> elliott: such talk is not conducive to escaping the vortex
21:19:31 <elliott> Sgeo: you are mistaken
21:19:34 <Sgeo> ...escaping the vortex?
21:20:04 <elliott> Sgeo: the interpretation doesn't matter, what matters is that the universe /we/ observe is truly random
21:20:11 <itidus21> the elliottonian vortex is related to the matrix of solidity
21:20:17 <elliott> i.e. even if many worlds is true, we're still /deciding/ random decisions with a true RNG
21:20:28 <Sgeo> elliott, ah
21:20:35 <Vorpal> <elliott> there's true randomness at the quantum level <-- as far as we understand the universe currently at least
21:20:37 <elliott> although, it could be that it's a PRNG with a seed with more bits than our universe
21:20:42 <elliott> and that would be indistinguishable, I think
21:20:46 <Vorpal> elliott, it could all be emulated
21:20:55 <elliott> Vorpal: (a) I believe it is generally accepted, (b) that's the point.
21:20:59 <itidus21> or could it all be a function of our collective wills?
21:21:00 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:21:06 <elliott> <itidus21> the elliottonian vortex is related to the matrix of solidity
21:21:08 <elliott> *vortex of liquidity
21:21:16 <Sgeo> itidus21, ...what?
21:21:26 <elliott> NO!! I WAS AWARDED MY FIRST SILVER BADGE!!!
21:21:28 <elliott> STOP YOU DEMONS
21:21:40 <itidus21> determinism and non-determinism are part of the universe
21:21:42 <monqy> :0
21:21:44 <Sgeo> I tried to answer on SO once
21:21:50 <itidus21> you can't just ignore them
21:21:54 <Sgeo> I didn't actually answer the question though, and my answer was deleted
21:22:03 <monqy> good job
21:22:08 <Sgeo> I should have made a comment on the question or something, I guess.
21:22:17 <monqy> I don't so. should i?
21:22:25 <Vorpal> elliott, it could be a PRNG is generating all the quantum randomness for an emulated universe
21:22:35 <elliott> Sgeo: the sgeo story
21:22:37 <itidus21> things happen because you make them happen
21:22:46 <elliott> Vorpal: not with an insufficient number of bits, I don't believe
21:22:55 <itidus21> i am also open to the idea that things are deterministic
21:22:56 <elliott> although I think it could be done by using some of the universal state /itself/
21:23:02 <elliott> e.g., sufficiently far away state
21:23:04 <elliott> I really don't know exactly
21:23:05 <itidus21> so long as i am not forced to stick to that view
21:23:06 <elliott> ask oerjan :P
21:23:10 <Vorpal> elliott, err, does anything work with an insufficiant number of bits for the task at hand?
21:23:22 <itidus21> a dice doesn't roll itself.. a human rolls it because a human wants a random number
21:23:24 <elliott> Vorpal: you are misinterpreting me
21:23:38 <oerjan> elliott: there are theorems in complexity theory that say you can make a PRNG of one complexity class that cannot be distinguished from true random by one of a lower one. P and LOGSPACE being one example, iirc.
21:23:40 <Sgeo> itidus21, unless the die is on the ground on a sufficiently windy day?
21:23:47 <elliott> Vorpal: by my very limited understanding of quantum mechanics, a "boring" PRNG is ruled out.
21:23:56 <elliott> (perhaps it counts as a hidden variable? dunno)
21:24:05 <elliott> oerjan: right
21:24:06 <Vorpal> elliott, well okay
21:24:17 <itidus21> die only rolls because of something happening in humans thoughts like "make dice" "roll dice"
21:24:19 <Vorpal> elliott, I don't know enough about quantum mechanics either
21:24:25 <Vorpal> so you may be right for all I know
21:24:27 <elliott> itidus21: isn't that just The Secret
21:24:37 <elliott> aka one of the worst books of the millennium so far
21:24:45 <monqy> what's the secret
21:24:54 <elliott> http://en.wikipedia.org/wiki/The_Secret_(book)
21:24:54 <Sgeo> elliott, I think he's either doing that or trying to get at a "What is a die" thingy?
21:25:03 <elliott> tl;dr "believe you're healthy and YOU WILL BE HEALTHY IT'S MAGIC!"
21:25:06 <elliott> "also rich! and famous!"
21:25:07 <Sgeo> monqy, OUR MINDS CONTROL REALITY OTHER THAN BY TRIVIAL WAYS
21:25:10 <itidus21> its a cube of plastic or wood...
21:25:20 <oklopol> oerjan: what's a true random sequence? not produced by an algorithm?
21:25:23 <monqy> good buk
21:25:23 <itidus21> it has ink on it
21:25:28 <elliott> Sgeo: well of course they do
21:25:33 <elliott> it controls your body, for one
21:25:41 <Sgeo> elliott, that's what I meant by trivial.
21:25:48 <elliott> to quote a person, "fsvo trivial"
21:26:11 -!- NihilistDandy has quit (Quit: http://haskell.org).
21:26:18 <itidus21> the problem of the butterfly effect is that the impact of the butterflys wings is "uncontrolled"
21:26:28 <elliott> -10 IN 2.5
21:26:34 <elliott> i am undone :(
21:26:40 <Sgeo> elliott, hm?
21:26:43 <monqy> :(
21:26:50 <elliott> Sgeo: Vortex measurements.
21:27:06 <elliott> Sgeo: the latest ones are available at http://tinyurl.com/dxuq5eo
21:27:56 <itidus21> sorry to all the mathematicians for my very unmathematical comments
21:28:00 <Vorpal> itidus21, the butterfly effect is just about the system being chaotic
21:28:08 <itidus21> the butterfly has a mind
21:28:14 <elliott> :D
21:28:14 <itidus21> it flaps its wings with its mind
21:28:19 <elliott> Vorpal: he's got a point!!
21:28:21 <Vorpal> yes but that is not what the butterfly effect is about
21:28:33 <Vorpal> the term butterfly effect has a precise meaning
21:28:38 <itidus21> im... really... fucking annoying to argue with
21:28:49 <Vorpal> not really
21:28:53 <oerjan> oklopol: erm a sequence of independent, equally distributed elements; if it's infinite then with probability 1 it cannot be produced by an algorithm since those that can are countable...
21:28:54 <Sgeo> Leaves falling don't have a mind.
21:29:02 <Vorpal> itidus21, you just described people like elliott and me there
21:29:07 <elliott> itidus21: it's not really an argument, it's more just everyone else trying to explain to you
21:29:08 <Sgeo> Elevator malfunctions don't have a mind.
21:29:12 <Sgeo> </tasteless>
21:29:15 <Vorpal> and there is that too
21:29:30 <elliott> Elevator Malfunction is Sgeo's second-favourite band.
21:29:54 <Sgeo> Someone died in an elevator malfunction recently :(
21:30:18 <itidus21> it's not for us to unravel the secrets of the will, the will-not, conciousness, transcendance, determinism, non-determinism
21:30:21 <oklopol> oerjan: so how do you run the algo, obviously no finite segment of it tells you anything about the distribution
21:30:24 <elliott> Sgeo: Thousands of people just died in <vastly more common cause> recently
21:30:34 <elliott> Sgeo: Or do you only care about the elevator malfunction ones
21:30:40 <Vorpal> <itidus21> it's not for us to unravel the secrets of the will, the will-not, conciousness, transcendance, determinism, non-determinism <-- why not?
21:30:48 <elliott> Vorpal: because itidus21 doesn't know how to
21:30:49 <Vorpal> we can always try
21:31:06 <Sgeo> elliott, elevator malfunction was just the most immediately accessible mindless cause that could be said to have a butterfly effect
21:31:15 <elliott> Sgeo: I was responding to <Sgeo> Someone died in an elevator malfunction recently :(
21:31:20 <Vorpal> elliott, to be fair, neither do I know exactly how to do do that completely. Won't stop me from giving it a try though
21:31:22 <itidus21> smarter people than us have tried.. it ends up in teaching people the virtues of not stealing
21:31:31 <itidus21> lol
21:31:35 <Sgeo> I mean, car crashes are the most accessible horrible death to me for some reason, but they're mostly ... I think mindless would be the wrong word
21:31:52 <Sgeo> elliott, well, I was explaining why elevator malfunction was so accessible to my mind
21:31:56 <elliott> Sgeo: More mindless than an elevator going wrong?
21:31:56 <oklopol> mindful.
21:32:04 <oerjan> oklopol: do _i_ look like i've read the proof?
21:32:07 <monqy> more notmindless
21:32:11 <oklopol> oerjan: yes
21:32:12 <elliott> Car crashes have thinking involved being responsible at the time of the accident.
21:32:26 <elliott> Elevator malfunctions are probably mostly due to unthought mistakes far in the past.
21:32:33 <elliott> Q.E.Z
21:32:48 <Sgeo> elliott, I was thinking of elevator malfunction as more mindless
21:32:54 <elliott> Oh.
21:33:05 <itidus21> i would say everyone should ride horses or horse-and-carts... for various good reasons.. except accelerating population leads to CBDs that everyone has to race to
21:33:18 <Vorpal> elliott, Q.E.Z.?
21:33:22 <itidus21> the evolution of the home-office may well be the devolution of the car
21:33:22 <elliott> Vorpal: Yes.
21:33:30 <elliott> You can't say Q.E.D. when oklopol's around.
21:33:30 <Vorpal> elliott, QED I know the meaning of
21:33:33 <itidus21> wouldn't it be nice if noone needed an office anymore
21:33:33 <Sgeo> itidus21, I'd say everyone should ride in computer-controlled cars.
21:33:39 <Vorpal> elliott, oh? So what does the Z stand for?
21:33:39 <oklopol> :-D
21:33:47 <Vorpal> and why can't you say QED?
21:33:50 <Sgeo> No more human drivers.
21:33:52 <itidus21> if people could re-distribute themselves across the world via the internet
21:33:57 <elliott> Vorpal: Either zemonstrandum or zarathustra.
21:34:00 <itidus21> why drive when you can tele-commute
21:34:07 <Vorpal> Sgeo, problem: driving is fun.
21:34:15 <Sgeo> Vorpal, fuck fun.
21:34:17 <oerjan> <itidus21> smarter people than us have tried.. it ends up in teaching people the virtues of not stealing <-- scientific progress means that it doesn't matter how smart the ancients were, they didn't have access to the _tools_ to solve the questions.
21:34:18 <elliott> Sgeo: Cool, it'll be like public transport but less efficient.
21:34:24 <oklopol> fuck fun :D
21:34:29 <elliott> And more expensive and polluting (fuck fun, right?).
21:34:36 <Vorpal> Sgeo, won't stop people from complaining loudly.
21:34:47 -!- Phantom_Hoover has joined.
21:35:14 <itidus21> anyway, my comment about grass is greener very much applies to interplanetary travel
21:35:29 <itidus21> we already know we'll fuck up every planet we visit if we visit them
21:35:34 <Sgeo> elliott, how would it be like public transportation?
21:35:44 <Vorpal> <elliott> Sgeo: Cool, it'll be like public transport but less efficient. <-- less boredom
21:35:56 <elliott> Sgeo: In that it's a massive investment and overhaul and people who drive currently won't like the idea of it?
21:36:04 <Vorpal> elliott, at least there is less waiting involved
21:36:06 <Vorpal> that is a good thing
21:36:20 <elliott> Vorpal: Waiting is basically a function of how much money you put into the system...
21:36:23 <Sgeo> itidus21, part of a reason to do interplanetary travel is if something happens to one planet, humanity goes on.
21:36:32 <Vorpal> elliott, for public transport? Hm.
21:36:34 <elliott> Vorpal: Anyway, good trains are way faster than even auto-driven cars could go.
21:36:46 <elliott> Although sure, the psychology is different.
21:36:56 <Sgeo> elliott, they can't go everywhere that auto-driven cars can.
21:37:05 <Sgeo> Such as into a driveway.
21:37:12 <Vorpal> elliott, certainly they are faster, but less convenient if you don't live near a train station. And yes the psychology is indeed different
21:37:15 <itidus21> "<itidus21> what i'm imagining is that if i was in finland i might find it easier to focus and concentrate for some reason" .. same thing we as a species imagine about interplanetarry travel
21:37:24 <elliott> Sgeo: So fuck fun, but don't fuck a little bit of walking every now and then?
21:37:41 <elliott> Vorpal: That's also a function of money. :p
21:38:07 <elliott> Sgeo: Anyway, the areas where public transport can't go are the areas where it would be much more difficult for auto-driven cars.
21:38:17 <Vorpal> elliott, very few can afford having a train station built right next to your house :P
21:38:19 <elliott> Due to less-defined/lower-quality roads, less mapping, etc.
21:38:42 <elliott> Vorpal: It's called public transport; the government is the one paying the money here. But yes, taxes would increase quite sharply if everyone got that.
21:38:53 <Vorpal> of course
21:39:03 <Vorpal> elliott, anyway trains are less reliable here in Sweden
21:39:06 <pikhq> elliott: Actually, the primary barrier to public transportation at least *here* is a function of population density.
21:39:19 <elliott> Vorpal: The train stations should rent out electric cars that run on tramline-type things that go to your doors. :p
21:39:24 <pikhq> You couldn't really keep a train station afloat here.
21:39:29 <elliott> You just put the coins in the slot, get in, get out, and it zips back.
21:39:29 <Vorpal> elliott, the lesson is that we as a snow-heavy land should NOT buy trains from countries that don't have much snow
21:39:41 <elliott> pikhq: Yeah, well, the solution is to live somewhere less terrible.
21:39:43 <Vorpal> it just end in tears
21:39:59 <elliott> Vorpal: TBH, for local transport I'd tend to prefer underground rail.
21:40:02 <itidus21> if people did away with skyscrapers and central business districts and did everything over the net, it would surely reduce traffic considerably
21:40:12 <elliott> Long-distance transport can have nice fast overworld lines.
21:40:15 <pikhq> Also: it wouldn't take much more to get self-driving cars common.
21:40:31 <elliott> pikhq: I am pretty sure most people would not buy self-driving cars unless they had no choice.
21:40:32 <itidus21> you could get internet connection as a tax write off
21:40:45 <elliott> /Especially/ anyone over the age of 35.
21:41:08 <Vorpal> elliott, not cost effective outside bit towns
21:41:10 <Vorpal> or cities even
21:41:18 <Vorpal> elliott, I doubt there is a Hexham metro :P
21:41:20 <pikhq> The currently extant ones require mapping of the roads.
21:41:33 <elliott> Vorpal: Do you want to bet on how much money goes into road construction and maintanence?
21:41:37 <Vorpal> big*
21:41:47 <Vorpal> elliott, quite a bit. But tunnels are expensive
21:41:48 <elliott> Not to mention the money accidents cost.
21:41:49 <Vorpal> even more so
21:41:53 <elliott> Public healthcare and all that.
21:41:59 -!- DCliche has joined.
21:42:29 <pikhq> Also, do you seriously think people drive because they want to control the vehicle?
21:42:32 <pikhq> Fuck no.
21:42:42 <pikhq> They drive because everything's too far to walk to.
21:42:51 <Vorpal> elliott, indeed
21:43:13 <Sgeo> I think itidus21 may have said this before, which makes me feel weird, but: Just _one_ accident with an auto-driven car, and we can say bye-bye to the dream, probably.
21:43:18 <Vorpal> pikhq, there are those who find driving fun. Why else would there be driving and racing games.
21:43:28 <elliott> pikhq: If you seriously think most people would be fine ceding driving control completely to a computer... then I really don't know what to say to you, but I invite you to go up to people on the street and ask them.
21:43:34 <pikhq> Vorpal: Yeah, but they're not a significant factor in adoption of automatic cars.
21:43:41 <Vorpal> pikhq, indeed
21:43:42 <elliott> Especially literally anyone who sees driving as a competition.
21:44:41 -!- Klisz has quit (Ping timeout: 240 seconds).
21:46:07 <pikhq> elliott: You're talking about people who do shit like put on makeup while driving.
21:46:22 <elliott> pikhq: That... does not even remotely come close to being a rebuttal.
21:47:55 <pikhq> What I'm saying is: given driving habits here, it's basically inevitable that people will have automatic cars and use them pretty much of the time, just so that they can do something during their half-hour commutes.
21:48:52 <pikhq> Given that they already risk their lives *dramatically* just to do that...
21:49:25 <Vorpal> anyway I wouldn't trust a computer to handle everything when driving. For large roads sure. But when parking on a uneven non-surfaced (I mean, grass) parking place out in the middle of the woods?
21:49:32 <Vorpal> I done that
21:49:42 <Vorpal> when going to stuff like tourist attractions
21:49:44 <itidus21> `log automatic car
21:49:58 <pikhq> Vorpal: Fairly small case, though.
21:50:00 <Vorpal> or during bad winter weather
21:50:06 <Phantom_Hoover> Vorpal, have I not previously expressed my scepticism that you still don't understand the pluperfect.
21:50:10 <Vorpal> pikhq, not in Sweden. We don't put asphalt everywhere.
21:50:13 <HackEgo> 2008-09-13.txt:21:08:08: <oerjan> "hygienic" macros which take automatic care of naming conflicts
21:50:21 <itidus21> oops
21:50:26 <itidus21> `pastelogs automatic car
21:50:29 <pikhq> Vorpal: It's still a fairly small case. I mean, how often do you park?
21:50:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32433
21:50:41 <Vorpal> pikhq, well, every time I drive into the garage?
21:50:46 <pikhq> Well, yes. :P
21:50:53 <itidus21> 2011-05-14.txt:00:42:11: <pikhq_> The safety concerns of an automatic car need to be compared against human drivers.
21:51:01 <Vorpal> pikhq, I probably park several times per day
21:51:04 <elliott> pikhq: Wait, you want automatic cars /with manual override/ control?
21:51:05 <pikhq> But that's, what, 2 minutes of your drive?
21:51:08 <oerjan> pikhq: hm perhaps what will happen is that cars get the ability to drive automatically or be controlled as you wish, and then gradually people will stop controlling their cars due to the convenience?
21:51:10 <elliott> *override control/?
21:51:33 <itidus21> pikhq: you discussed it 7 months ago apparently :)
21:51:34 <pikhq> elliott: It would be somewhat necessary, at least given some of the broken infrastructure around here.
21:51:45 <Vorpal> elliott, that is like a more advanced cruise control
21:51:50 <elliott> pikhq: Great, so now people will override it whenever there is, e.g. a car in front of them!
21:51:54 <Vorpal> which I'm fine with
21:52:00 <elliott> And then expect the system to continue working correctly even though they massively wrecked the parameters for whatever reason.
21:52:11 <elliott> Now it's about ten times as hard to write the software and has absolutely no safety benefits.
21:52:16 <elliott> GET IN
21:53:11 <oerjan> elliott: maybe anti-collision features could only be overruled at low speeds.
21:53:26 <pikhq> elliott: Says the man who hasn't seen a country where literally everybody drives.
21:53:26 <Vorpal> elliott, anyway the problem is it takes a HUGE amount of work to handle every situation. And if it doesn't and lacks manual override, then it is worthless
21:53:38 <elliott> oerjan: I am sceptical that the systems are so "modular".
21:53:54 <elliott> oerjan: I think a lot of it is essentially generated based on real-world driving data.
21:53:59 <elliott> At least I think Google's was quite like that.
21:54:19 <elliott> pikhq: You realise a shit ton of driving goes on in the UK, right?
21:55:02 <elliott> oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving.
21:55:08 <elliott> oerjan: You automatically swerve if you try and drive into a car?
21:55:24 <elliott> That sounds... easy to backfire.
21:56:13 <pikhq> elliott: ~90% of the population commutes via car?
21:56:34 <elliott> pikhq: Do you have sourcse for that statistic?
21:56:39 <elliott> Not sceptical, just curious.
21:57:12 <elliott> pikhq: Also, 90% of the population, or 90% of the working population?
21:57:21 <pikhq> https://encrypted.google.com/url?sa=t&rct=j&q=commuting+in+the+US&source=web&cd=4&ved=0CDcQFjAD&url=http%3A%2F%2Fwww.census.gov%2Fprod%2F2011pubs%2Facs-15.pdf&ei=F23qTuSCLpPqgAeK2_CKCQ&usg=AFQjCNEdBXyfZTDYeUlAGmNhrO7KBiBFfw
21:57:31 <pikhq> DAMMIT GOOGLE
21:57:51 <pikhq> I want the URL, not the "spew your shit on top of it" URL.
21:58:07 <pikhq> http://www.census.gov/prod/2011pubs/acs-15.pdf
21:58:34 <elliott> pikhq: Car is ~75% of commuters
21:58:39 <elliott> In UK
21:58:40 <pikhq> That's driving alone.
21:58:42 <elliott> Citation: http://www.ons.gov.uk/ons/rel/lmac/commuting-to-work/2011/commuting-to-work---2011.html
21:58:46 <pikhq> Oh. Right.
21:59:07 <pikhq> Other highlights: "Workers took an average of 25 minutes to get to work".
22:00:10 <elliott> Yes, the UK is small
22:00:36 <elliott> However if you don't think we have large, high-traffic roads with frequent jams and all that, you're crazy
22:00:55 <elliott> We just utilise road transport a bit less within cities
22:01:24 <elliott> (Especially London, but that's because road transport in London is basically impossible, from what I gather.)
22:01:25 <oklopol> small? 25 minutes is like the whole day :o
22:01:28 -!- kmc has joined.
22:01:48 <oklopol> if it took me 25 minutes to go to work, i would not go to work
22:01:51 <pikhq> oklopol: That's one way.
22:02:07 <oklopol> and i represent the majority as usual.
22:03:08 <pikhq> Also, ~2% of the population in that study had a 90 minute commute. One way.
22:03:40 <elliott> pikhq: Oh, that was a US figure?
22:03:47 <oklopol> that's like riding a bike through finland every day
22:04:13 <elliott> pikhq: Because UK figures are 1-15 min: 42%, 16-30 min: 33%
22:04:22 <elliott> So it's not like US commutes are significantly longer.
22:04:35 <pikhq> elliott: Yeah, that was a US figure.
22:04:57 <pikhq> elliott: You can also expect to drive for anything else you do.
22:04:58 <elliott> http://www.youtube.com/watch?v=YNS7AtliBFM
22:05:00 <elliott> THIS IS RIVETING
22:05:01 <pikhq> Say, groceries.
22:05:15 <elliott> Yes, pikhq, our supermarkets, too, have carparks.
22:05:30 <Vorpal> <elliott> oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving. <-- you still get unpredictable parameters, what if a suicidal pedestrian throws himself in front of a car, and the distance is too short to brake.
22:05:36 <elliott> The fact is that for the US it's "everyone" and the UK it's "a lot of/most people".
22:05:41 <Phantom_Hoover> pikhq, I live well inside the second largest city in Scotland, and almost all of the groceries in this house are brought here by car.
22:05:50 <elliott> It's not like we're some utopia of everything being in walking distance and the rest being perfect public transport.
22:06:08 <Vorpal> elliott, that would be like Monaco, (walking distance)
22:06:12 <elliott> <Vorpal> <elliott> oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving. <-- you still get unpredictable parameters, what if a suicidal pedestrian throws himself in front of a car, and the distance is too short to brake.
22:06:18 <elliott> Vorpal: You think a human operator would do well there?
22:06:24 <Vorpal> elliott, no
22:06:34 <Vorpal> elliott, but I think an automatic car would do just as badly
22:06:41 <elliott> Yes. So it doesn't matter.
22:06:47 <elliott> They're the same, so it's irrelevant.
22:07:03 <Vorpal> right
22:07:03 <elliott> (Of course more people would be upset if an automatic car did it.)
22:07:09 <Vorpal> indeed
22:07:27 -!- oerjan has quit (Quit: Reboooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo*NO CARRIER).
22:07:34 <elliott> Vorpal: Also, I doubt that's a fairly common method of suicide.
22:07:52 <Vorpal> elliott, also what would an automatic car do if it was a question of "save pedestrian" vs "save people in car"
22:07:52 <elliott> If there's a pavement, then it's probably in an area where a car banging into you would not be fast enough to kill you.
22:08:07 <Phantom_Hoover> *Reliably* kill you.
22:08:11 <elliott> Phantom_Hoover: Yes, yes.
22:08:18 <elliott> Vorpal: I very much doubt an automatic car can reason about moral situations, dude.
22:08:31 <Vorpal> elliott, like a pedestrian in front, too short distance to brake, but you could still change your course. Except this is a cliff road and there is a deep drop to the side of the road...
22:09:03 <Phantom_Hoover> <Vorpal> elliott, also what would an automatic car do if it was a question of "save pedestrian" vs "save people in car"
22:09:04 <pikhq> "[...] the largest Asda Supercentre with a nett sales floor of over 120,000sqft." "Walmart Supercenters are hypermarkets [...] with an average of about 197,000 square feet."
22:09:07 <Phantom_Hoover> What do *people* do?
22:09:15 <elliott> Vorpal: I imagine it would swerve; it's probably not very easy to detect drops like that, and obstacles are not that easy to distinguish from one another.
22:09:18 <Vorpal> Phantom_Hoover, save themselves, if they have time to think about it
22:09:24 <Phantom_Hoover> pikhq, wow, that's a difference of a whole 50%!
22:09:26 <elliott> Phantom_Hoover: Kill both :P
22:09:33 <pikhq> Phantom_Hoover: Also comparing largest with average.
22:09:36 <Vorpal> elliott, a human drive would NOT swerve in that case.
22:09:36 <elliott> pikhq: Oh shit, our supermarkets are smaller!
22:09:38 <elliott> That so matters.
22:09:40 <Vorpal> at least probably not
22:09:41 <elliott> Vorpal: Who cares?
22:09:46 <Phantom_Hoover>
22:10:04 <elliott> If humans are our benchmark for how a car should drive, we're gonna get really shitty self-driving cars.
22:10:10 <elliott> Also.
22:10:15 <Vorpal> elliott, well if there are like 3 people in the car and one pedestrian, the automatic car would have taken a worse decision.
22:10:17 <elliott> Vorpal: If this is a cliff road, where the fuck is the pedestrian coming from?
22:10:25 <elliott>
22:10:35 <Vorpal> elliott, could be a suicidal one?
22:10:48 <Vorpal> elliott, anyway that was just an example. You could construct other scenarios like that
22:10:49 <elliott> Vorpal: I don't think you understand how cliffs work?
22:11:01 <Phantom_Hoover> <Vorpal> Phantom_Hoover, save themselves, if they have time to think about it
22:11:09 <Phantom_Hoover> Also pigs would fly if they had time to think about it.
22:11:26 <elliott> Phantom_Hoover: Do pigs live busy lives, usually?
22:11:36 <Vorpal> Phantom_Hoover, well, they might swerve due to panic. Or they might be aware of the drop and not swerve
22:11:47 <elliott> I'm pretty sure most people would swerve.
22:11:57 <Phantom_Hoover> They might hit the brakes.
22:12:00 <elliott> Or that.
22:12:01 <Phantom_Hoover> Did you know that cars have brakes?
22:12:02 <Vorpal> yeah
22:12:16 <elliott> Wait, wait.
22:12:16 <Vorpal> Phantom_Hoover, anyway there is such a thing as braking distance
22:12:19 <elliott> I know what the automatic car should do.
22:12:25 <Phantom_Hoover> elliott, fly?
22:12:30 <monqy> i was thinking fly too
22:12:36 <elliott> It should swerve, but then swerve even more, so that before it actually falls down, the air propels it back on to the road going the other way.
22:12:38 <elliott> Q.E.D. motherfuckers.
22:12:39 <elliott> *Z.
22:12:46 <elliott> Phantom_Hoover: But that would be good too.
22:12:47 <Vorpal> right
22:12:57 <elliott> It'd just swerve and everyone inside would go "NOOOOO" and then the wings would come out the side and it would fly off into the sunset.
22:13:07 <Vorpal> right
22:13:09 <elliott> Orchestra plays uplifting music, etc.
22:13:16 <Vorpal> I'm still waiting for my flying car
22:13:17 <monqy> credits roll
22:13:19 <elliott> Yes.
22:13:22 <elliott> THE END appears.
22:13:29 <elliott> Actors get lots of money, Oscars.
22:13:34 <Phantom_Hoover> elliott, what uplifting music would be appropriate?
22:13:50 <elliott> Phantom_Hoover: I don't know, you know the kind of music that always plays when things go well for once in a film and it's near the end.
22:13:55 <Sgeo> It's going to be impossible to get people to see the lives saved by auto-driven cars.
22:13:59 <Vorpal> Phantom_Hoover, benny hills theme
22:14:05 <Vorpal> Phantom_Hoover, it is always appropriate
22:14:13 <Phantom_Hoover> Vorpal, not that one.
22:14:20 <Vorpal> Phantom_Hoover, are you sure?
22:14:21 <Vorpal> :/
22:14:23 <Phantom_Hoover> Yes.
22:14:23 <Sgeo> It's not like you can put in a paper "This person was almost in a crash, but thanks to being in a computer-controlled car, survived"
22:14:32 <Vorpal> Phantom_Hoover, aww
22:14:40 <elliott> Sgeo: It's funny because you think papers convince people?
22:14:42 <Sgeo> Or, well, "This person was driving drunk. Nothing of consequence happened"
22:14:44 <Phantom_Hoover> Just slap something by Two Steps From Hell over it; that's what they're there for, after all.
22:14:48 <Sgeo> elliott, news media does.
22:14:55 <monqy> moral of the story drive drunk
22:15:06 <Sgeo> Erm, not driving
22:15:08 <Vorpal> Phantom_Hoover, I'm not sure what/who that/they is/are.
22:15:12 <Sgeo> "In the driver seat of a car"
22:15:26 <Sgeo> "Nothing bad happened, because the car wasn't driven by the person, but rather, a computer."
22:15:36 <monqy> exciting
22:15:58 <Vorpal> that isn't news
22:16:05 <Sgeo> Vorpal, exactly my point
22:16:07 <Phantom_Hoover> At the age of twenty, Sgeo begins to suss out how the news works.
22:16:15 <Vorpal> Phantom_Hoover, heh
22:16:20 <Sgeo> Phantom_Hoover, I'm 22.
22:16:28 <monqy> sgeo is 22???????????????????
22:16:32 <elliott> yes.
22:16:41 <Vorpal> really?
22:16:43 <elliott> yes.
22:16:43 <Phantom_Hoover> monqy, it's amazing, and then you think about it and feel sad.
22:16:57 <Vorpal> I thought he was younger than me
22:16:58 <elliott> Sgeo: Are you saying that news media actually causes people to change their strong preconceptions.
22:16:58 <Vorpal> :/
22:17:00 <elliott> Because hahahaha.
22:17:10 <elliott> Vorpal: Bow before your elder!
22:17:22 <Vorpal> elliott, I'm equally old
22:17:31 <elliott> Sgeo: What month were you born.
22:17:36 <Sgeo> elliott, if someone hears about accident X more often than they hear about accident Y, even if accident Y is more common, they're going to be scared of X
22:17:43 <Sgeo> elliott, why?
22:17:44 <Phantom_Hoover> Sgeo being older than Vorpal is somehow odder than him being older than me, elliott or monqy.
22:17:46 <Vorpal> well okay maybe he is older
22:17:51 <elliott> Sgeo: Because what month was Vorpal born.
22:17:53 <Vorpal> Phantom_Hoover, yes
22:17:59 <Sgeo> May
22:18:00 <Vorpal> elliott, the current month
22:18:02 <Vorpal> oh well
22:18:10 <elliott> :D
22:18:12 <Vorpal> (except not this instance of it)
22:18:24 <Vorpal> (1989-12-01)
22:18:50 <Vorpal> Phantom_Hoover, I thought he was like 20 or so
22:18:57 <elliott> He was 20 two years ago.
22:19:00 <monqy> 20 is also old
22:19:05 <Vorpal> elliott, well, I meant about now
22:19:23 <monqy> I have trouble imagining sgeo not being a kid
22:19:29 <monqy> help :(
22:19:36 <elliott> So, um, how do you word a ping on a bug report this guy has been ignoring me for 6 days ;_;
22:19:37 <Vorpal> monqy, aren't you a kid too?
22:19:38 <Vorpal> iird
22:19:40 <Sgeo> I'm still treated like a kid >:(
22:19:40 <Vorpal> iirc*
22:19:44 <monqy> yeah i'm a kid oops
22:19:46 <elliott> Sgeo: That's because you still act like a kid.
22:19:47 <Phantom_Hoover> monqy, what do you know, you're 15.
22:19:49 <Vorpal> Sgeo, that is because you act like one
22:19:51 <Vorpal> elliott, snap
22:19:54 <olsner> elliott: "Ping"
22:20:01 <Phantom_Hoover> snop
22:20:04 <elliott> olsner: THAT'S IMPOLITE!!!
22:20:07 <elliott> Phantom_Hoover: splinpers
22:20:27 -!- pikhq_ has joined.
22:20:36 <olsner> elliott: a bit obnoxious maybe
22:21:09 -!- pikhq has quit (Ping timeout: 240 seconds).
22:21:44 <elliott> olsner: Well, my last comment was many paragraphs long and basically said "rather than minorly breaking API compatibility, fairly majorly break it and this works brilliantly" :P
22:22:03 <elliott> (Although "fairly majorly" is relative, since the relevant consumers of this API are like 15 lines long maximum.)
22:22:27 <olsner> oh, ok, you've moved the bug into the "wait for the perfect solution to become clear" state
22:22:34 <olsner> this state has no possible next state
22:22:36 <elliott> olsner: I made it very clear.
22:22:40 <elliott> It got into that state and then I solved it the next day :P
22:23:27 <elliott> Vorpal: Help how do I ping.
22:23:54 <Vorpal> elliott, ping what?
22:24:12 <Vorpal> elliott, anyway I believe it is net_adm:ping(atom_for_node_name)
22:24:13 <Vorpal> ;P
22:24:31 <elliott> ;__;
22:24:36 <elliott> Ping https://github.com/basvandijk/monad-control/issues/4 in particular :P
22:24:46 <Vorpal> elliott, you ask me about github? lol
22:24:51 <Vorpal> I don't use github
22:24:54 <elliott> "YOU DARE SPEAK TO ME OF GITHUB"
22:25:05 <Vorpal> elliott, not it is just that it is pointless to ask me
22:25:07 <elliott> Vorpal: I was in fact bothering everyone to tell me how to politely ping a bug report.
22:25:09 <Vorpal> because I don't use it
22:25:11 <elliott> GitHub is irrelevant :P
22:25:40 <olsner> well, no matter how well you explained the issue it's not to you but to the maintainer it needs to be clear
22:25:41 <Vorpal> elliott, "WHY ISNT THIS FIXED YET" is a favourite. Remember the caps and the missing '
22:25:55 <monqy> WHY ISN"T THIS FIXED YET
22:25:57 <monqy> good too
22:25:57 <olsner> and obviously your solution is flawed because it wasn't his idea :)
22:26:02 <elliott> olsner: Pah :P
22:26:05 <monqy> why isn;t this fixed yet. a classic.
22:27:10 <Vorpal> monqy, also WHY ISN*T THIS FIXED YET
22:27:19 <Vorpal> that works better on Swedish keyboard
22:27:27 <Vorpal> at least for me " is shift-2
22:27:42 <elliott> https://github.com/basvandijk/monad-control/issues/4#issuecomment-3170203
22:27:43 <elliott> IT IS DONE
22:27:50 <elliott> IM SO RUDE
22:29:52 <kallisti> so...
22:30:02 <monqy> rude...
22:30:03 <kallisti> ais523: undef in list context is () right?
22:30:18 <elliott> monqy: im
22:30:19 <ais523> kallisti: no, it's (undef)
22:30:19 <elliott> rudest :(
22:30:24 <kallisti> ais523: auuuuughweiurhwiuerh
22:30:25 <ais523> i.e. a list with one element, which is undefined
22:30:30 <kallisti> oh...
22:30:33 <ais523> kallisti: if you're thinking of a function return value
22:30:34 <kallisti> yes
22:30:37 <elliott> kallisti: have you considered you're doing it wrong if all these details matter to you
22:30:38 <elliott> of undef
22:30:43 <ais523> then "return" will return () in list context or undef in scalar context
22:30:46 <kallisti> elliott: no.
22:31:01 <ais523> which is the most common reason that matters (a list with one element is true, scalar undef is false, and you might be trying to return a false value)
22:31:12 <kallisti> ais523: no I'm thinking of undef as returned by an error in a block eval.
22:31:32 <kallisti> okay. so I SEE THE PROBLEM.
22:31:58 <ais523> kallisti: list context eval returns () on error, I just checked the docs
22:32:12 <ais523> so the question about "undef in list context" is irrelevant because eval doesn't return undef on failure, but false on failure
22:32:16 <kallisti> elliott: yes, insignificant details such as "values" involving other insignificant details such as "being returned from functions"
22:32:37 <kallisti> ais523: hmmm, okay.
22:33:09 <ais523> elliott: it's plausible to think "I want to use eval but don't know what it returns on error in list context, and it matters because I might get an error"
22:33:18 <ais523> in fact,I didn't know the result myself; I just looked it up
22:33:20 <ais523> s/,/, /
22:33:25 <elliott> ais523: it seems like kallisti went the extra mile and just assumed :)
22:33:54 <kallisti> elliott: no I read the docs but I must have missed that.
22:34:29 <kallisti> ais523: I have a block-eval whose result is passed to a callback, and according to perl's debugger the callbacking is receiving a 1, though I'm pretty sure the only possible return values are either () or a hash.
22:34:29 <ais523> kallisti: perldoc -f eval
22:34:37 <kallisti> it's very confusing to me.
22:34:53 <ais523> how are you passing the block-eval to the callback?
22:35:01 <kallisti> directly.
22:35:07 <kallisti> list context.
22:35:17 <ais523> as in callback (eval { ... }) ?
22:35:24 <kallisti> $callback->(eval {... })
22:35:59 <kallisti> so I'm guessing what I think I should be returning is not the case?
22:36:07 <kallisti> oh another caveat: eval returns (undef) on a syntax error
22:36:24 <kallisti> but I'm checking $@ and getting no syntax errors. that also wouldn't explain the 1
22:36:28 <ais523> no, it returns () on a syntax error in list context
22:37:01 <ais523> I have the docs open right now, they say that quite explicitly
22:37:07 -!- Patashu has joined.
22:37:13 <elliott> Phantom_Hoover: YOU SUCK
22:37:16 <kallisti> If there is a syntax error or runtime error, or a die statement is executed, eval returns undef in scalar context or an empty list--or, for syntax errors, a list containing a single undefined value--in list context
22:37:20 <kallisti> ais523: me too
22:37:22 <ais523> also, eval { syntax error = } is a compile-time error
22:37:27 <kallisti> this is 5.14 docs though.
22:37:30 <ais523> (whereas eval "syntax error = " is a run-time error, for obvious reasons
22:37:32 <ais523> )
22:37:41 <ais523> kallisti: hmm, it's changed since 5.10, then
22:37:46 <ais523> that's quite a breaking change
22:37:56 <kallisti> agreed. also it doesn't apply to me.
22:38:09 * kallisti should start using the docs on his system instead of web docs.
22:38:29 <kallisti> it later goes on to explain how people think this is a bug or something.
22:38:34 <kallisti> and should be fixed etc
22:38:45 <elliott> perl has no bugs, it implements Perl perfectly
22:38:47 <elliott> by definition
22:38:53 <kallisti> elliott: BLAH BLAH BLAH
22:39:09 <kallisti> Perl has bugs then.
22:39:09 <pikhq_> There are no bugs in perl, only documentation bugs.
22:39:23 <pikhq_> kallisti: Perl is defined as whatever perl does.
22:39:28 <kallisti> ...yes
22:39:52 <pikhq_> There cannot be bugs in a definition. Merely stupid definition.
22:40:01 <kallisti> okay fine.
22:41:41 <kallisti> oh. duh.
22:42:02 <kallisti> this is what happens when you try to program all day without eating food first.
22:42:05 <kallisti> and misread debugging output.
22:43:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:44:22 <kallisti> ais523: it would be interesting if perl had a sigil that deferred context.
22:44:37 <kallisti> that wasn't like... a coderef.
22:44:46 <kallisti> I guess it would be equivalent though, since it would have to be lazily evaluated.
22:45:10 <kallisti> in other words. my ?x = somefunc(2, 3);
22:45:13 <kallisti> doesn't enforce a context
22:45:24 -!- oerjan has joined.
22:45:26 <kallisti> until ?x is evaluated elsewhere, and the context it's evaluated in is used instead.
22:45:32 <ais523> kallisti: yes, it'd have to be lazy
22:45:38 <kallisti> basically equivalent to a subroutine I guess?
22:45:40 <ais523> why would that be interesting? it seems mostly useless
22:47:24 <kallisti> dunno. It would be useful with my current callback scheme instead of enforcing list context on the result, but it may be possible with coderefs or maybe even regular subroutines.
22:48:16 <kallisti> currently I store the callbacks result in an array, print errors as warnings, and then return the list.
22:48:38 <kallisti> hmmm, well it's basically impossible to check for warnings
22:48:54 <kallisti> without knowing the context, because can possibly change the computation drastically.
22:49:04 <kallisti> +context
22:49:16 <kallisti> dunno, it's irrelevant.
22:49:34 <elliott> hi oerjan
22:52:18 <oerjan> o hai
23:10:38 * Phantom_Hoover → sleep
23:10:39 -!- Phantom_Hoover has quit (Quit: Leaving).
23:10:59 <kallisti> I like how pretty much every freelance copywriter says "lol I have 120 WPM"
23:11:08 <kallisti> it's like, the standard lie.
23:11:27 <kallisti> well, who knows maybe every freelance copywriter ever has the exact same typing speed.
23:12:24 <kallisti> ais523: the context of all of this weirdness is that I'm writing code to dynamically load plugins for an IRC bot.
23:12:36 <kallisti> well, it's done now. may need a few tweaks in the future though.
23:13:16 <kallisti> actually the dynamically loading part has been long done. this was specifically for calling subroutines within dynamically loaded plugins.
23:13:20 <Sgeo> I should learn how ghc-api works
23:13:53 <ais523> kallisti: why not just use Module::Pluggable or the like?
23:13:58 <ais523> (I forget exactly what it's called)
23:14:07 <kallisti> ... because I didn't know it existed. :P
23:14:17 <elliott> kallisti: you assumed a piece of Perl code didn't exist on CPAN?
23:14:20 <elliott> are you /stupid/?
23:14:51 <Sgeo> Haskell's don't is inspired by a module on CPAN, right?
23:15:15 <elliott> yes, Acme::Don::t
23:16:27 <kallisti> heh
23:16:32 <kallisti> Acme::Don't should work as well
23:17:46 <elliott> Acme'Don't, too.
23:19:15 <kallisti> ais523: well, I've already written the code now so... :P
23:19:25 <kallisti> ONE LESS DEPENDENCY, YEAAAH
23:19:55 <kallisti> also it was a learning experience, etc, other things to ensure myself that the effort wasn't a waste.
23:19:59 <ais523> elliott: does Haskell's don't work by somehow redefining '?
23:20:05 <elliott> ais523: x'
23:20:05 <ais523> or in some entirely unrelated way?
23:20:13 <ais523> also, does it do do-notation?
23:20:15 <elliott> ais523: (translation: are you expecting ' to be invalid in identifiers?)
23:20:15 <Sgeo> ais523, ' is valid in identifiers
23:20:26 <ais523> elliott: ah, right, forgot
23:20:27 <elliott> http://hackage.haskell.org/packages/archive/acme-dont/1.1/doc/html/Acme-Dont.html
23:20:32 <Sgeo> Oh, it's just a function, there's no special don't notation
23:20:39 <elliott> Sgeo: "don't do"
23:20:41 <Sgeo> don't $ do { blah}
23:20:42 <elliott> what's hard to understand about that?
23:20:59 <Sgeo> elliott, nothing, except I thought maybe ais523 was expecting don't blocks
23:21:55 <kallisti> ais523: I'm kind of mystified by how Pluggable works.
23:22:12 <kallisti> ais523: it magically gives you a plugins method?
23:22:12 <ais523> so am I, to be fair
23:22:15 <Sgeo> don't do doesn't work, right?
23:22:19 <ais523> I've never tried to use it
23:22:36 <Sgeo> I think I tried passing in a do block to something once without $ and it didn't work
23:22:38 <Sgeo> I might be misremembering
23:23:14 <elliott> Sgeo: no, it doesn't
23:23:16 <ais523> you know how easy this argument is to resolve, right?
23:23:39 <Sgeo> We were arguing? Although admittedly, it's two seconds to check
23:23:42 <ais523> :t const do { interact id }
23:23:43 <lambdabot> parse error on input `do'
23:23:54 <Sgeo> > id do { return "Hi" }
23:23:54 <lambdabot> <no location info>: parse error on input `do'
23:23:59 <Sgeo> > id $ do { return "Hi" }
23:24:00 <lambdabot> No instance for (GHC.Show.Show (m [GHC.Types.Char]))
23:24:00 <lambdabot> arising from a use ...
23:24:00 <ais523> :t const $ do { interact id }
23:24:01 <lambdabot> forall b. b -> IO ()
23:24:01 <kallisti> ais523: also do fun with caller that might be difficult to reimplement with Pluggable
23:24:03 <Sgeo> ...
23:24:07 <Sgeo> UPDATE
23:24:09 <ais523> so apparently the $ is required
23:24:25 <kallisti> ais523: for example, the command subroutine, which registers new commands, uses caller to associate modules with each command, so that when a plugin is unloaded the commands are unregistered.
23:24:29 <elliott> ais523: <elliott> Sgeo: no, it doesn't
23:24:34 <elliott> it wasn't an argument, I was providing the answer
23:24:35 <ais523> elliott: oh, something I was thinking about; do you consider "let main = interact f" unsafe?
23:24:45 <elliott> ais523: it's very unsafe, since it's invalid syntaxc
23:24:47 <elliott> *syntax
23:24:53 <ais523> elliott: err, correcting for me not remembering Haskell
23:24:56 <ais523> for any safe f?
23:25:00 <elliott> ais523: it's exactly as unsafe as getContents
23:25:08 <kallisti> ais523: same with "filter" which is like command except that it uses an arbitrary regex instead of a command word (commands are implemented with filter)
23:25:11 <elliott> I don't think it's pure, personally
23:25:17 <elliott> "safe" is too much of a value judgement for me to want to comment
23:25:26 <elliott> but lazy IO has well-known subtle-but-deadly performance problems
23:25:28 <ais523> elliott: right; you'd called unsafeInterleaveIO unsafe earlier
23:25:40 <elliott> it's very easy to force too much, and space leaks are practically unavoidable.
23:25:41 <ais523> so I assumed you had some definition of "safe" in mind, and wanted to get at it
23:25:51 <elliott> ais523: well, anything starting with unsafe is unsafe :)
23:26:01 <ais523> elliott: I was going to put "unsafe" into the name of <<=
23:26:13 <elliott> x unsafe<<= y
23:26:14 <kallisti> > let unsafeId = id in unsafeId
23:26:14 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
23:26:15 <lambdabot> arising from a use of `...
23:26:18 <kallisti> > let unsafeId = id in unsafeId 2
23:26:19 <lambdabot> 2
23:26:22 <kallisti> elliott: unless kallisti defines it. ;)
23:26:28 <ais523> but decided not to, as the way it's going all Feather's predefined operations seem to be made entirely out of punctuation marks
23:26:33 <ais523> I may make an effort to change that
23:27:35 <Sgeo> Laziness even without IO also has space leaks. My understanding is that it's generally handwaved away since it's easy to make those cases stricter. But why not the same with lazy IO?
23:30:09 <kallisti> ais523: another thing I do that I'm not sure Pluggable does is I change the current working directory to the plugin directory.
23:30:20 <kallisti> and then change it back.
23:30:32 <ais523> I doubt it does that, mostly because it doesn't strike me as being a good idea
23:30:42 <elliott> Sgeo: your comparison is mistaken
23:31:01 <kallisti> sure it is. the plugins can refer to their files without having to worry about paths.
23:32:21 <elliott> kallisti: that's ridiculous
23:32:29 <elliott> normal scripts and modules can't do that, why should plugins?
23:32:39 <elliott> you should provide scripts a way to get at a filesystem storage, instead
23:32:53 <elliott> probably by passing them a path somehow
23:32:59 <elliott> *provide plugins
23:33:06 -!- cheater has quit (Ping timeout: 252 seconds).
23:33:44 <kallisti> elliott: normal scripts can't do what exactly? worry?
23:33:50 <elliott> Sgeo: for one thing, lazy IO's unpredictability has real effects
23:33:58 -!- derdon has quit (Remote host closed the connection).
23:34:01 <kallisti> plugins should because not worrying about things is better than worrying about things.
23:34:04 <elliott> Sgeo: for instance, if you writeFile something, there's no guarantee it will ever be closed (!)
23:34:09 <elliott> kallisti: can't assume they're run in a certain directory
23:35:10 <elliott> Sgeo: there is basically no way to make lazy IO work. the same is not at all true of lazy evaluation
23:38:08 <kallisti> elliott: they can't? they can usually know exactly where they're being run from.
23:38:25 <kallisti> I don't think I understand.
23:38:39 <elliott> ais523: please tell kallisti that perl programs don't usually change directory to the directory they're in
23:38:56 <kallisti> why wouldn't they?
23:38:59 <kallisti> what's the drawback?
23:39:05 <ais523> kallisti: user-specified files will make no sense
23:39:13 <ais523> without knowing what directory they're specified relative to
23:39:17 <ais523> that's a pretty common use-case
23:39:20 <elliott> <kallisti> why wouldn't they?
23:39:24 <elliott> if they do, they have to do it themselves
23:39:27 <elliott> the perl interpreter doesn't do it for them
23:39:30 <elliott> because that's a terrible idea
23:39:33 <elliott> similarly with your bot
23:39:37 <kallisti> in this case user's don't specify filepath inputs, so it's not an issue.
23:39:53 -!- cheater has joined.
23:40:28 <elliott> kallisti: also, you're ensuring that state can never be decoupled from implementation, filesystem-wise
23:40:30 <elliott> which is, you know, stupid
23:41:51 <kallisti> I'm ensuring that every plugin runs in its own bubble and doesn't have to worry about where its state is..
23:42:14 <ais523> kallisti: most obviously: what if the plugin isn't in a writable directory?
23:42:18 <elliott> kallisti: why do plugins have to store their own state, anyway?
23:42:28 <elliott> you should just let give them a persistence handle
23:42:30 <ais523> what if two people want to use the same plugin? do they have to copy/symlink it?
23:42:36 <elliott> which probably looks like a tied dictionary of some kind
23:42:46 <ais523> elliott: this is Perl, you can say "hash"
23:42:51 <kallisti> elliott: that's not a bad idea.
23:43:03 <elliott> it's a hell of a lot of a better idea than changing directory every time you invoke a plugin
23:43:13 <elliott> ais523: I'm not a filthy commoner!
23:43:21 <kallisti> elliott: it works pretty well right now actually. :P
23:43:39 <elliott> also, -30 in 0.28{3 recurring} :(
23:43:42 <kallisti> still plugins may have state associated with them that they'd like to transfer between bots.
23:43:46 <kallisti> for example, a quote database.
23:44:04 <kallisti> though I agree the persistent hash is a good idea.
23:44:09 <elliott> kallisti: why does the tied hash solution not permit that? actually, it should just be a tied object
23:44:10 <kallisti> I might end up doing that for some things.
23:44:15 <elliott> in fact, why not just persist the plugin object itself?
23:44:24 <elliott> push @self->quotes, whatever, I don't know perl;
23:44:31 <elliott> $self->karma{$user}++;
23:44:32 <elliott> etc.
23:44:37 <kallisti> elliott: "object"?
23:44:47 <elliott> I was presuming plugins are objects.
23:44:51 <kallisti> nope.
23:45:00 <kallisti> I implement things horribly.
23:45:12 <kallisti> I'm not going to explain any further because you'll hate it.
23:45:17 <elliott> Why not? This is Perl, you have very few tenable options for abstraction and you ignore the most popular one?
23:45:22 <ais523> elliott: we persist plugins in TAEB; it leads to some interesting problems sometimes
23:45:32 <ais523> although I found a nice OO way to solve them, which is also rather complicated
23:45:37 <elliott> kallisti: I probably will. Use the module ais523 told you about or I'll be nasty if you ask future questions pertaining to the code :)
23:45:48 <elliott> ais523: You know what wouldn't be a problem in @?
23:45:49 <oerjan> <ais523> elliott: I was going to put "unsafe" into the name of <<= <-- call it <<=!!! or something
23:45:52 <kallisti> elliott: I use regular hashes and hashrefs instead of objects for things that are very very simple and don't require all the OO boilerplate.
23:45:52 <ais523> it involves custom serializer hooks
23:46:02 <ais523> elliott: well, the problem is that various things need to /not/ be persisted
23:46:09 <elliott> kallisti: Man... it has state... and behaviour... and the state doesn't matter to things outside it...
23:46:15 <elliott> And it implements a common interface...
23:46:17 <ais523> (the reason being because they're full of literal pointers-converted-to-integers, which obviously couldn't happen in @)
23:46:19 <elliott> And this is a language where OOP is the common practice...
23:46:21 <kallisti> elliott: yes but it's not a perl object.
23:46:22 <elliott> NOPE, BOILERPLATE
23:46:28 <elliott> Despite that being the *definition of an object*.
23:46:29 <coppro> /w/in 52
23:46:44 <elliott> ais523: sure it could, if you ran nethack in a VM
23:46:55 <ais523> elliott: you mean TAEB?
23:46:57 <kallisti> elliott: I don't actually like perl OO. sorry.
23:47:02 <elliott> ais523: no, TAEB would control the nethack VM
23:47:07 <elliott> kallisti: use one of the alternate object systems
23:47:14 <ais523> elliott: but the literal pointers are to stuff inside TAEB
23:47:29 <elliott> ais523: wait, what?
23:47:35 <elliott> I assumed they were pointers into nethack memory
23:47:48 <ais523> elliott: no, how can it possibly work /that/ out over telnet?
23:47:57 <elliott> ais523: it's TAEB! I just assume it's insane
23:48:09 <ais523> it's because it needs to use objects as hash keys
23:48:23 <elliott> ais523: oh. well you can do that in @ no problem, naturally
23:48:30 <ais523> yep, it's a Perl problem more than anything else
23:48:37 <elliott> of course, the objects have to be immutable.
23:48:47 <elliott> though you _could_ write a dictionary with mutable keys
23:48:50 <elliott> it'd just be not very useful
23:49:08 <ais523> elliott: well, in this case, the objects /are/ mutable but the hash lookup is based on sharing
23:49:16 <ais523> as in, it's not the value of the object that matters, but the name
23:49:21 <ais523> (in the CS meaning of "name")
23:49:41 <elliott> ais523: right, you'd handle that just by overriding how they're hashed and compared for equality with an interning type or whatever
23:49:42 <elliott> ais523: what are the objects, exactly?
23:49:43 <kallisti> elliott: I still think changing the working directory makes sense in this context.
23:49:54 <elliott> kallisti: well, it's not the first thing you've been wrong about.
23:49:54 <ais523> elliott: all sorts of things; things like tiles, items, etc
23:50:06 <elliott> ais523: right
23:50:08 <elliott> ais523: why are they mutable?
23:50:14 <ais523> we could convert the tiles to coordinates, but that would require something like four property lookups for every hash lookup
23:50:23 <ais523> and because a tile object stores the known information about the tile
23:50:30 <oerjan> > let x <<=☠ y = "test" in 2 <<=☠ 4
23:50:31 <lambdabot> "test"
23:51:07 <elliott> ais523: OK, so the problem is that you're mixing what you /know/ about something with the thing itself
23:51:17 <ais523> elliott: yes, or rather the TAEB framework is doing that
23:51:31 <ais523> so I had to work around the problem when writing an AI for it
23:51:33 <elliott> ais523: "you"/"we" are perfectly valid terms for codebase
23:51:33 <elliott> s
23:51:45 <elliott> ais523: my suggestion is to not do that :)
23:51:52 <ais523> elliott: yes, but "you" directed at me when referring to a codebase that I didn't write is confusing
23:51:59 <elliott> well, OK
23:52:10 <elliott> I assume you'd made a fair amount of changes to TAEB itself
23:52:12 <elliott> *assumed
23:52:17 <ais523> also, I don't see how mutability matters there; immutable objects would have exactly the same problem
23:52:25 <ais523> elliott: yes, indeed, but I can't make huge breaking changes to every part of the API
23:52:36 <elliott> fair enough
23:53:00 <elliott> see, @ is great, because you'd give up before manging to implement the wrong way to do things :)
23:53:14 <elliott> <ais523> also, I don't see how mutability matters there; immutable objects would have exactly the same problem
23:53:19 <elliott> because you're misusing keys
23:53:22 <ais523> elliott: in Perl, I mean
23:53:24 <elliott> your real key is whatever the name of the object is
23:53:27 <elliott> but you're using the object itself
23:53:36 <elliott> where by "name", I mean anything equivalent to the name
23:53:40 <elliott> so, whatever you're interning on, basically
23:53:41 <ais523> elliott: well, I'm using the name of the object as keys
23:53:47 <elliott> ais523: erm, what I mean is
23:53:48 <ais523> that's what I am doing, using refaddr obj as the key
23:53:52 <elliott> you're /trying/ to use the object as a key
23:53:58 <elliott> and that's your workaround for not being allowed to
23:54:27 <ais523> elliott: no, I'm trying to use the object's coordinates as a key, I guess
23:54:37 <ais523> or, hmm, a unique ID referring to the object
23:54:46 <kallisti> such as a name.
23:54:52 <elliott> ais523: the problem is that you're too baffled by the design for me to explain why it's a bad idea :)
23:54:59 <elliott> ais523: how do you intern, say, items?
23:55:06 <elliott> what key do you use for the intern table?
23:55:15 <ais523> I use refaddr as the key, always
23:55:17 <ais523> even though it doesn't persist
23:55:24 <ais523> because good luck persisting general pointers
23:55:39 <elliott> ais523: you're confused
23:55:49 <elliott> ais523: you can't intern an object with the key being the address
23:55:55 <elliott> that's a good way to get an intern table of exactly one entry
23:56:05 <ais523> what does "intern" mean here?
23:56:21 <coppro> ais523: I'm currently trying to bring my team up high enough to fight the revamped Elite Four. Are there any training tips I'm missing?
23:56:27 <elliott> oh, hmm, you don't actually do interning
23:56:33 <elliott> ais523: <ais523> elliott: well, in this case, the objects /are/ mutable but the hash lookup is based on sharing
23:56:42 <ais523> coppro: there are some daily level 70 fights which are quite good
23:56:43 <elliott> ais523: either you don't understand what sharing is, or I don't know what you're talking about
23:56:53 <ais523> also, the daily fights in Big Stadium / Small Court are scaling
23:57:02 <ais523> elliott: I'm having trouble expressing myself, which is quite common
23:57:14 <ais523> coppro: also, remember to use the Lucky Egg (I think you get one without having to farm it in Black/White)
23:57:16 <elliott> ais523: OK, let me rework this
23:57:31 <ais523> you can also use Entralink Pass Powers, but it's probably not worth the effort/setup unless you happen to have some spare
23:57:36 <elliott> ais523: when you use the (address of) a tile as a hash key, what is the semantic key you are trying to use?
23:57:37 <coppro> ais523: oh, I thought they were fixed. I am using those. You do get one without having to farm but it's sort of unreliable since I can'trely on a single 'mon
23:57:42 <elliott> the location, right?
23:57:44 <elliott> i.e. coordinates
23:57:49 <ais523> coppro: you farm one 'mon at a time
23:58:00 <elliott> 'mon? seriously?
23:58:01 <coppro> ais523: I can't rely on one 'mon to fight though
23:58:07 <elliott> cut that out, both of you
23:58:09 <elliott> that's ridiculous
23:58:17 <ais523> elliott: yes, with the caveat that the coordinates might not actually be known
23:58:22 <ais523> elliott: it's common competitive abbreviation
23:58:25 <elliott> ais523: s/yes.*/no/
23:58:26 <ais523> in fact, they often leave out the apostrophe
23:58:31 <elliott> ais523: what is the key if the location isn't known?
23:58:35 <coppro> also what daily level 70 fights? My 'ns could really use those
23:58:38 <elliott> you're unable to tell me what you're actually keying on, semantically
23:58:43 <elliott> which is very worrying
23:58:44 <ais523> elliott: we're keying on (x, y, level)
23:58:48 <elliott> because it means you don't know what your program means
23:58:55 <elliott> ais523: no you're not, you said those aren't always known
23:59:01 <ais523> elliott: the level /object/ is known
23:59:03 <ais523> but its location isn't
23:59:14 <ais523> there's a mutable level object that represents the level
23:59:17 <elliott> ais523: OK, and what does the level mean?
23:59:21 <elliott> is it basically just an enum?
23:59:38 <elliott> or something like MainDungeon Int | ...
23:59:39 <elliott> or whatever
23:59:46 <ais523> if mutating the level one tile belongs to mutates the level another tile belongs to, they're on the same level
23:59:55 <ais523> and you can, from a level object, get all tiles on that level
2011-12-16
00:00:08 * elliott gives up
00:01:27 <ais523> elliott: the reason I'm describing this semantically is that the key is not well-founded
00:01:44 <ais523> let's see… I suppose the way it works in practice is that the key is (x, y, unique identifier for level)
00:01:47 <elliott> you're doing the opposite of describing it semantically; you're unable to tell me what the semantics are
00:01:56 <kallisti> awww yeah backup time.
00:02:02 <ais523> where the unique identifier is currently the level's refaddr, but semantically could be anything that uniquely identifies the level
00:02:03 <kallisti> zooooooooom rsync spam.
00:02:16 <elliott> my particular blend of zealotry tells me that you, therefore, have no idea what your program does or is meant to do, and you should just type random keys instead
00:02:30 <elliott> ais523: you haven't been able to tell me what a level is, though
00:02:38 <elliott> if it's not identified by a location, how do you know what makes any given level not another level?
00:02:43 <elliott> how is it done?
00:02:48 <ais523> elliott: badly
00:02:50 <elliott> where do level objects come from? how are they created?
00:03:03 <ais523> basically, TAEB always knows whether or not it's on the same level as it was last step
00:03:11 <ais523> if it isn't, it checks all the existing level objects to see if it matches what it sees
00:03:19 <ais523> and if it doesn't, creates a new level object and assigns all the tiles it can see to that one
00:03:53 <elliott> ais523: OK, then the closest semantics I can think of a level for a hash key is the number it was created in
00:03:58 <elliott> as in, first level created is 0, second is 1, ...
00:04:02 <elliott> you'll notice that this is terrible
00:04:07 <elliott> that's because your program is terrible :)
00:04:21 <ais523> elliott: as I said, "unique identifier for level"
00:04:35 <elliott> it takes a special kind of program to bake in how its imperative semantics run to the /behaviour/
00:04:38 <elliott> although I suppose most programs do that :(
00:05:07 <ais523> elliott: it's not imperative semantics, really
00:05:19 <ais523> or can't "arbitrary identifier for X" be used in functional programs ever?
00:06:14 <elliott> ais523: it is, because it's based on the order things are executed
00:06:17 <elliott> <ais523> basically, TAEB always knows whether or not it's on the same level as it was last step
00:06:17 <elliott> <ais523> if it isn't, it checks all the existing level objects to see if it matches what it sees
00:06:17 <elliott> <ais523> and if it doesn't, creates a new level object and assigns all the tiles it can see to that one
00:06:30 <elliott> the only thing involved here is time, basically
00:06:43 <ais523> elliott: I mean NetHack game step
00:06:47 <elliott> yes
00:06:53 <elliott> imperative programs don't care if their time is real time...
00:06:54 <elliott> it's about sequencing
00:06:56 <elliott> however, I can think of a better way to model it that behaves the same /way/
00:07:08 <ais523> elliott: what TAEB can detect is whether the level has changed or not
00:07:16 <elliott> you're basically keying on the /equivalence class/ of "close enough to X"
00:07:19 <elliott> where X is a tile pattern
00:07:26 <elliott> ("if it matches what it sees")
00:07:29 -!- Vorpal has quit (Ping timeout: 240 seconds).
00:07:54 <elliott> so your keys are just taking the setoid of maps (= 2D ASCII pictures) with the relation being however it defines "close enough"
00:07:57 <elliott> Q.E.Z.
00:08:01 <ais523> elliott: well, if a command it sends to the game leaves the level unchanged, it knows; likewise, if it changes it, it knows
00:08:30 <ais523> but it can't compare two views from different times to see if they're the same level (it has many ways to rule it out, but no way to prove it for certain)
00:08:32 <elliott> ais523: what you're saying doesn't make any sense at all, so I'm assuming you just didn't notice me swerving at some point
00:09:05 <kallisti> mmmm organic compounds.
00:09:14 <ais523> elliott: I don't see why it makes no sense
00:09:21 <elliott> oh, they're probably true statements
00:09:22 <ais523> if you like, we're trying to key on insufficient data
00:09:32 <elliott> but you seem to be implying that they're relevant responses to things I've recently said
00:09:47 <elliott> I'm saying that
00:09:51 <ais523> elliott: I'm trying to say you're wrong about what my keys are
00:09:56 <elliott> (a) the semantics you've described are terrible,
00:10:07 <elliott> (b) but there's a reasonable way to express them without changing behaviour or relying on imperative sequencing
00:10:23 <ais523> elliott: it's not relying on imperative sequencing
00:10:30 <elliott> ais523: unfortunately what I said was completely true; i.e. you could replace the keys in your program with the keys I mentioned and TAEB would work identically
00:10:33 <ais523> because the information it gets from the game has timestamps
00:10:40 <elliott> ais523: you don't understand what imperative means
00:10:53 <elliott> it is fundamentally based on order of operations, not declarative semantics, Q.E.Z.
00:11:08 <ais523> elliott: are you under the impression that I'm saying that the way TAEB does levels is fundamentally impossible to express in a functional language?
00:11:14 <ais523> because I'm not trying to argue that at all
00:11:14 <elliott> <elliott> (b) but there's a reasonable way to express them without changing behaviour or relying on imperative sequencing
00:11:20 <elliott> obviously not, because I just told you the real semantics
00:11:34 <ais523> elliott: what exactly are you taking issue with?
00:11:37 <ais523> or are you agreeing with me?
00:11:38 <elliott> i.e. the semantics you want and /really mean/, not how you reverse engineer them from the actual behaviour
00:12:02 <elliott> ais523: I'm disagreeing that your description of the semantics is reasonable, and I'm disagreeing with any implicit statement that TAEB's way of doing this is at all reasonable and that it isn't completely structurally unsound
00:12:45 <elliott> but mostly I consider my point proven, since you've had to resort to mentally simulating the software to figure out what it means :)
00:13:24 <ais523> elliott: OK, the semantics I want is to key on x-coordinate, y-coordinate, and which level the tile is belongs to; but we don't know what level the tile belongs to
00:13:51 <elliott> that's impossible, so it's not semantics
00:14:37 <elliott> <elliott> you're basically keying on the /equivalence class/ of "close enough to X"
00:14:37 <elliott> <elliott> where X is a tile pattern
00:14:37 <elliott> <elliott> ("if it matches what it sees")
00:14:37 <elliott> <elliott> so your keys are just taking the setoid of maps (= 2D ASCII pictures) with the relation being however it defines "close enough"
00:14:37 <elliott> <elliott> Q.E.Z.
00:14:47 <elliott> that's the best description of the semantics you /have/
00:14:53 <ais523> elliott: I agree that the semantics I want are impossible
00:14:55 <elliott> whether it's what you want depends on how much you like your level-matching algorithm
00:15:14 <ais523> and it's the best we have; the level-matching algorithm could do with improvement, really
00:15:30 <ais523> it works well mostly, but goes haywire if it gets half a level due to lag
00:15:31 <elliott> well, to clarify:
00:15:35 <elliott> whether it's what you want depends on how much you like the very idea of the level-matching algorithm
00:16:17 <ais523> elliott: anyway, you're missing an important point; we can match the maps either on physical appearance, or on knowledge that two maps are the same because they were on consecutive steps without a level change
00:16:20 <elliott> ais523: to unpack what I'm saying into something more like conventional programmerspeak, I'm saying that you want to want to form a new type that's identical to 2D level maps, except that all maps that match are considered equal
00:17:00 <ais523> so what we're actually doing is taking equivalence classes on (map, timestamp) pairs by quotienting them on a "look similar or have consecutive timestamps without a change" equivalence relation
00:17:12 <ais523> (in other words, I didn't need the unpacking…)
00:17:19 <ais523> (that's not what the problem was)
00:17:24 <elliott> ais523: I didn't expect you needed the unpacking
00:17:28 <elliott> ais523: I was just relating it pack to hash tables
00:17:34 <elliott> *back
00:17:42 <ais523> ah, I see
00:17:54 <elliott> actually, what I was really doing is just trying to restate it, but it happened that I ended up restating it in a more dumbed-down fashion, so I added that to the front :)
00:17:55 <ais523> elliott: anyway, the main reason these are refaddrs is so that they can be calculated quickly
00:18:00 <elliott> ais523: right
00:18:07 <elliott> ais523: well, in case it isn't clear, I think TAEB's design is terrible :)
00:18:58 <elliott> ais523: but if you designed it in @, it'd probably be perfect.
00:19:20 <ais523> elliott: how would you solve the problem, incidentally?
00:19:27 <ais523> you don't need to use the same semantics as TAEB
00:20:09 <elliott> ais523: well, if you're asking "how would I, when presented with this problem in practice, solve it", the answer would probably be to complain on #esoteric about how terrible TAEB is, and then rethink everything about the entire problem of playing nethack from scratch
00:20:25 <ais523> elliott: anyway, there's a situation where this approach leads to huge measurable problems in TAEB
00:20:32 <elliott> but on a smaller scale, I'd probably try and figure out whether you can precisely determine level
00:20:37 <elliott> rather than just relying on heuristics
00:20:39 <elliott> by logging more about what happens
00:20:42 <ais523> which is that it has trouble working out when two items are the same
00:20:45 <ais523> and even more so, of monsters
00:20:51 <kallisti> elliott: imagine you have a finite amount of time to live. Now imagine that what you're doing right now prevents you from doing other things in the sum of all events in your life.
00:20:58 <kallisti> elliott: what would you rather be doing right now?
00:21:11 <ais523> I'm sure elliott enjoys talking on IRC
00:21:12 <elliott> kallisti: "Imagine" I have a finite amount of time to live?
00:21:19 <elliott> That seems fairly likely to me.
00:21:24 <elliott> It's not terribly difficult to imagine.
00:21:44 <kallisti> that's promising.
00:21:53 <elliott> "Now imagine that what you're doing right now prevents you from doing other things in the sum of all events in your life." ;; is this not equivalent to "Now imagine that what you're doing now is not doing other things."
00:22:17 -!- pikhq has joined.
00:22:34 <elliott> anyway, my answer is nothing, because I'm feeling fairly lazy, it's after midnight, and it's winter
00:22:41 <kallisti> elliott: sure, it still interferes with the sequencing and duration of events.
00:22:49 <elliott> so there's not really a huge amount of things to do.
00:22:54 <elliott> now why are you asking?
00:23:06 <kallisti> I don't really have a reason.
00:23:13 <elliott> what would _you_ rather be doing?
00:23:24 <elliott> ais523: I'm about to do something nobody has ever done before in the history of prorgamming
00:23:27 <kallisti> skydiving in a wingsuit.
00:23:38 <ais523> elliott: has anyone attempted before?
00:23:43 <elliott> kallisti: why aren't you doing it?
00:23:46 <elliott> ais523: nobody's even considered it!
00:23:52 <ais523> OK
00:24:07 <kallisti> elliott: no it's my point, you're not allowed to steal it!
00:24:16 <elliott> kallisti: so what is your point, exactly?
00:24:26 <elliott> if you think talking about IRC on programming is pointless,
00:24:28 * elliott holds up mirror
00:24:30 <kallisti> elliott: that this conversation is silly. :P
00:24:37 <elliott> good, don't participate in it
00:24:40 <ais523> hmm, I prefer elliott's subject
00:24:41 <ais523> elliott: go on
00:24:57 <elliott> ais523: I'm going to grep for every occurrence of TODO|FIXME in a codebase, and /actually fix them/.
00:25:01 <elliott> SORRY IF YOU EXPECTED IT TO BE EXCITING
00:25:10 <ais523> elliott: haha
00:25:21 <ais523> that is actually pretty exciting, also insightful
00:25:27 <ais523> I'm sure I've at least considered it, before now
00:25:54 -!- pikhq_ has quit (Ping timeout: 248 seconds).
00:26:52 <elliott> $ egrep -r 'TODO|FIXME' *.c *.h | wc -l
00:26:52 <elliott> 26
00:27:02 <elliott> oh, that's a pleasant surprise
00:27:06 <elliott> considering I write about fifty per day
00:28:16 <elliott> ais523: anyway, why can't you decide levels exactly in TAEB?
00:28:41 <elliott> I can't think of any situation in NetHack where you would (a) end up on an unknown level and (b) not be able to determine it exactly, through e.g. the level name/identifier/whatever you call it or otherwise.
00:28:50 <ais523> elliott: suppose you go down a set of stairs on Dungones:2; you could arrive on Mines:3 or Dungeons:3
00:29:00 <ais523> and the view could look exactly the same for each
00:29:19 <elliott> ais523: OK, but you still known the dlvl number, right?
00:29:21 <ais523> (in particular, you could be in a dark area with no adjacent walls in either)
00:29:24 <ais523> yep, you know the numbre
00:29:26 <ais523> *Dungeons
00:29:29 <ais523> just not the branch
00:29:34 <elliott> ais523: why not just key on that?
00:29:36 <ais523> checking number is one of the most obvious things the level comparer does
00:29:44 <ais523> elliott: because then you'd get mines:3 and dungeons:3 muddled?
00:29:48 <elliott> "what branch it's in" is just another piece of information you haven't yet found out
00:29:54 <elliott> ais523: oh, right
00:30:08 <elliott> ais523: well, hmm
00:30:26 <elliott> ais523: I know what I'd do; I'd store tile information in a tree
00:30:36 <elliott> ais523: mines:3 and dungeons:3 would be distinguished by the path in the tree to get there, which would be spatial
00:30:46 <elliott> they'd just both be on level 3, that's all
00:30:59 <elliott> that is, I'd store tile information inside level information
00:31:02 <ais523> elliott: except that you can /also/ fall through a trapdoor on dungeons:1, and land on dungeons:3
00:31:11 <ais523> (well, possibly not with those exact numbers, but translated downwards)
00:31:17 <elliott> ais523: OK, and?
00:31:25 <ais523> now, how do you know if you're on the level reached via set-of-stairs 1, or the level reached by set-of-stairs 2?
00:31:33 <elliott> ais523: *dungeons:3/mines:3, then
00:31:45 <elliott> (presumably)
00:31:49 <ais523> what I mean is, "path to get there" isn't always known
00:31:57 <elliott> ais523: well, sure it is
00:32:01 <elliott> it's just a graph instead of a tree
00:32:03 <elliott> there's two paths
00:32:18 <ais523> elliott: OK, I'll buy that; but it's a graph where you don't know if two edges lead to the same vertex or not
00:32:21 <ais523> so it's not a /known/ graph
00:32:34 <elliott> ais523: OK, what do you think of this: "current level" should be stored separately to "known levels"
00:32:45 <elliott> and it should only become "tied" to a known level if you can decide for /sure/ that it's a known level
00:32:51 <elliott> most of the time, you can do that immediately
00:33:02 <elliott> e.g., you went down some downstairs in a non-forking place
00:33:12 <elliott> which would be one kind of proof
00:33:17 <ais523> yep
00:33:24 <ais523> one kind of proof that TAEB currently doesn't use, interestingly
00:33:26 <elliott> that /is/ based on time, but it's not in the model
00:33:35 <elliott> it's something you /give/ to the model
00:34:03 <elliott> ais523: so, the worst-case is, you fall down a trapdoor to a previously seen level, and never prove it's one or the other branch
00:34:18 <elliott> ais523: but as soon as you go up the upstairs, you'll be in an unambiguous location again
00:34:22 <elliott> because there's only one dlvl 2, or whatever
00:34:42 <elliott> ais523: or if you go down, and find minetown, you know all the levels on the way were in the mines
00:34:47 <ais523> elliott: how would the API for this information look to the AI?
00:35:30 <elliott> ais523: well, beats me, I'm thinking in terms of @, which basically involves pretending the world is as declarative as possible and you have infinite powers of abstraction available to you
00:35:32 <elliott> let me think...
00:35:58 <ais523> also, how does an AI do "route to <map location>"?
00:37:40 <elliott> one sec
00:38:30 <elliott> -- Path is a tree path (forget the graph) with the "canonical path"
00:38:30 <elliott> -- to a level, i.e. "through stairs" most of the time
00:38:30 <elliott> getKnownLevel :: Path -> M Level
00:38:30 <elliott> getCurrentLevel :: M Level
00:38:30 <elliott> unifyLevel :: Level -> Unification -> M ()
00:38:31 <elliott> -- Unification basically proves that a level is the level at
00:38:33 <elliott> -- a certain path; its exact definition would depend on all
00:38:35 <elliott> -- the ways you can prove a level is another, which is basically
00:38:37 <elliott> -- an AI issue. There is almost certainly a more general definition
00:38:39 <elliott> -- that lets you implement such ways decoupled from the definition
00:38:41 <elliott> -- of the actual data-type, but I'm not being paid enough to try
00:38:43 <elliott> -- and think of it.
00:38:51 <elliott> ais523: and the usual way, assuming you the current level is known
00:39:05 <elliott> ais523: but you can have paths from unknown levels to known ones
00:39:14 <elliott> ais523: if you're on dlvl 3, and dlvl 2 is unambiguous (i.e. there is only one), and there's an upstairs...
00:39:35 <ais523> heh at that comment
00:39:52 <ais523> and presumably, if you're on dlvl 3 and don't know where the stairs to dlvl 2 are, you tell the AI "that's your problem"
00:39:59 <elliott> yep :)
00:40:17 <elliott> ais523: just like if you're on dlvl 1 and can't see anything and want to get to the amulet
00:40:31 <ais523> indeed
00:40:46 <elliott> nbt.c:char old[3] = { data[-3], data[-2], data[-1] }; /* TODO this is horrible, HORRIBLE */
00:40:46 <ais523> I have to go home, anyway
00:40:47 <elliott> oh dear
00:40:50 <ais523> bye everyone
00:40:54 <elliott> ais523: bye
00:40:55 -!- ais523 has quit (Remote host closed the connection).
00:41:06 <elliott> wait, at /twenty to one/?
00:41:47 <elliott> kallisti: so what's the vastly-better conversation you would have rather had?
00:42:21 <kallisti> there isn't one.
00:42:43 <elliott> great!
00:42:45 <elliott> so silence then?
00:47:58 -!- kmc has quit (Quit: Leaving).
00:50:32 <oerjan> ^def test ul (::SSS)
00:50:32 <fungot> Defined.
00:50:43 <oerjan> ^test (hm? )~^
00:50:48 <oerjan> bah
00:51:26 <oerjan> ^test (hm? )S
00:53:08 <elliott> oerjan: wat
00:53:58 <oerjan> trying to see if ^def ... ul ... does anything useful with added input
00:54:46 <oerjan> ^def test ul ^
00:54:47 <fungot> Defined.
00:54:55 <elliott> oerjan: it doesn't
00:54:57 <oerjan> ^test ((hm...)S)
00:54:57 <fungot> ...out of stack!
00:55:02 <elliott> to my knowledge.
00:55:06 <oerjan> :(
00:55:10 <elliott> ^def test ul S
00:55:10 <fungot> Defined.
00:55:15 <elliott> ^test (easy way to find out)
00:55:15 <fungot> ...out of stack!
00:59:23 <oerjan> ^def test ul (You fail!)S
00:59:23 <fungot> Defined.
00:59:37 * oerjan whistles innocently
01:00:09 * kallisti considers using Persistent::Hash for his IRC bot
01:00:17 <kallisti> I notice there's no Persistent::List though.
01:00:27 <kallisti> I'd want one of those too, preferably
01:00:50 <oerjan> is there a Persistent::Nuisance?
01:01:05 <kallisti> don't think so.
01:01:05 <elliott> kallisti: um
01:01:10 <elliott> kallisti: can't you just use Dumper
01:01:12 <elliott> + tie
01:01:18 <kallisti> elliott: that's what I currently do minus the tie.
01:01:18 <elliott> wait not dumper
01:01:20 <elliott> what's the binary form
01:01:28 <kallisti> um...
01:01:29 <elliott> Storable
01:01:38 <elliott> hey look, it even does tying for you
01:01:42 <elliott> http://perldoc.perl.org/Storable.html#NAME
01:01:43 <elliott> use that.
01:02:17 <kallisti> good choice.
01:02:27 <kallisti> I keep forgetting about all of these modules
01:02:29 <kallisti> that like...
01:02:30 <kallisti> do things
01:02:33 <kallisti> that I want.
01:03:15 * kallisti thinks 'use' should just automatically install things from CPAN. :P
01:03:39 <elliott> Yes, it should.
01:03:48 <elliott> (This is a sincere statement.)
01:03:53 <kallisti> (yes no doubt)
01:04:22 <elliott> (No, it actually is.)
01:04:37 <kallisti> I could see some issues with it, but otherwise it would be very convenient.
01:04:56 <kallisti> particularly does it also /update/ old packages? because that could break things very easily.
01:05:17 <elliott> There's the security issue, but that's mitigated by proper sandboxing e.g. in a capability language, and mitigated further by a tests/rating/review system which CPAN already has.
01:05:43 <kallisti> also possible security issues if a maintainer decides he wants his package to suddenly become a virus or something. :P
01:05:44 <elliott> kallisti: I don't see why it would.
01:05:52 <elliott> <kallisti> also possible security issues if a maintainer decides he wants his package to suddenly become a virus or something. :P
01:05:53 <elliott> <elliott> There's the security issue, but that's mitigated by proper sandboxing e.g. in a capability language, and mitigated further by a tests/rating/review system which CPAN already has.
01:06:02 <elliott> It's a serious concern; without solving that it shouldn't be implemented.
01:06:07 <elliott> And Unix isn't a very tenable platform to solve it on,.
01:06:09 <elliott> *.
01:06:49 <kallisti> I presume C@AN will have these features.
01:07:12 <elliott> Crap @ Asshole Naptime.
01:07:21 <elliott> The best name for a package source, I can assure you.
01:07:54 <kallisti> hey look Storable isn't even a dependency because it's standard.
01:08:08 <pikhq> The proper sandboxing would be inherent in @.
01:08:25 <oerjan> don't i vaguely recall someone mentioning there is a package in CPAN for making use install from CPAN
01:08:50 <fizzie> You can use FreezeThaw instead if you want to introduce a non-core dependency.
01:09:02 <elliott> oerjan: that sounds familiar
01:09:20 <kallisti> fizzie: benefits?
01:10:11 <kallisti> I'm not entirely sure how you could hack use to do that though...
01:10:23 <elliott> Source filter, @INC hacking.
01:10:24 <kallisti> ah wait I know.
01:10:26 <kallisti> yes
01:10:28 <kallisti> @INC hacking.
01:10:28 <lambdabot> Unknown command, try @list
01:10:28 <elliott> Which?
01:10:30 <elliott> Right.
01:10:40 <elliott> http://search.cpan.org/~jjore/Acme-Anything-0.04/lib/Acme/Anything.pm does similar things.
01:10:46 <elliott> push @main::INC, \ &handler_of_last_resort;
01:10:46 <elliott> sub handler_of_last_resort {
01:10:46 <elliott> my $fake_source_code = '1';
01:10:46 <elliott> open my ($fh), '<', \ $fake_source_code;
01:10:46 <elliott> return $fh;
01:10:47 <elliott> };
01:10:58 <oerjan> that rings a bell
01:12:00 <elliott> That's not it, though.
01:12:09 * elliott is just going through every single Acme module.
01:12:11 <elliott> To find it.
01:12:23 <fizzie> None that I know of. Well, it's pure-Perl as opposed to Storable's C. I guess it might not break regex objects like Storable, though not sure about that.
01:12:27 <elliott> oerjan: http://search.cpan.org/~adamk/Acme-Everything-1.01/lib/Acme/Everything.pm
01:12:52 <elliott> That's close.
01:12:57 <elliott> kallisti: ^
01:13:37 <oerjan> ah that must be it
01:13:48 <kallisti> doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing.
01:14:04 <kallisti> fizzie: "pure perl" such a benefit.
01:14:34 <fizzie> Well uh maybe your religion prohibits C code in Perl modules?
01:14:37 <oerjan> fizzie: ALSO WE WANT ^def ... ul ... TO CONCATENATE COMMAND ARGUMENTS TO THE COMMAND, OKTHXBYE
01:14:38 <elliott> <kallisti> doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing.
01:14:42 <elliott> um that doesn't load from cpan.
01:14:48 <elliott> oerjan: i really don't think we do
01:14:50 <kallisti> elliott: correct
01:14:54 <elliott> that's a rather bad implementation of underload io
01:14:55 <kallisti> neither does handler_of_last_resort does it?
01:14:59 <elliott> kallisti: oh
01:15:03 <elliott> I was talking about Acme::Everything
01:15:07 <kallisti> yes I know.
01:15:13 <kallisti> I AM NOT ALWAYS TALKING ABOUT THE SAME THING YOU ARE.
01:15:18 <elliott> <kallisti> doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing.
01:15:23 <elliott> kallisti: that's why it's an Acme module...
01:15:38 <oerjan> elliott: but it's the only thing which doesn't require an ad-hoc input encoding :(
01:15:44 * kallisti is tempted to use Acme::Everything
01:15:52 <elliott> oerjan: well...
01:15:59 <fizzie> oerjan: I think ^ul input was talked about, but there were some Opinions on what sort of smunglings it should encode the input in.
01:16:05 <elliott> oerjan: surely just pushing the argument as the first element on the stack would be better than /that/
01:16:06 <kallisti> With one 'use' line, you effectively load all 20,000,000 odd lines of code in CPAN.
01:16:09 <kallisti> oh god.
01:16:24 <elliott> kallisti: it's lazy though :P
01:16:28 <kallisti> oh okay.
01:16:30 <kallisti> whew.
01:16:32 <elliott> but it shouldn't be!!!
01:16:35 <kallisti> I AGREE
01:16:42 <oerjan> elliott: um ok. i guess that's more general.
01:17:11 <elliott> oerjan: well what would yours do exactly
01:17:35 <kallisti> elliott: it would be nice if it didn't have any restrictions.
01:17:47 <kallisti> elliott: I could just put use Acme::Everything; in my source, run it once, and then remove the line.
01:17:54 <kallisti> instead of manually installing packages. :P
01:18:05 <elliott> kallisti: with Acme::Everything you don't need the use statement, though
01:18:17 <kallisti> yes but it has to be a method call.
01:18:36 <elliott> well i mean you couldn't just remove the use staetment
01:19:14 <kallisti> oh it doesn't actually install anything.
01:19:24 <elliott> ...
01:19:24 <oerjan> <fizzie> Well uh maybe your religion prohibits C code in Perl modules? <-- well i recall jewish rules forbid mixing different cloth fabrics, so why not...
01:19:33 <elliott> kallisti: no, it's just that you don't need "use" statements to use modules with it
01:19:38 <Sgeo> http://www.stationv3.com/d/20111214.html
01:19:38 <elliott> and use is normally required to use perl modules, no?
01:19:59 <kallisti> elliott: yes. that's not what I'm talking about though.
01:20:05 <monqy> hi
01:21:17 <Gregor> oerjan: That's a Christian rule.
01:21:20 <oerjan> elliott: well i considered actually running the input (preferrably first), but putting it on the stack is more flexible as long as you can still use ^ on it
01:21:25 <kallisti> "In other words, if you use Acme as the base, your class will be the summit."
01:21:27 * kallisti facepalms
01:21:37 <Gregor> Well, I mean, it's Judeochristian rule.
01:21:42 <elliott> oerjan: *preferably
01:21:53 <Gregor> Since it's from the small part of Jewish orthodoxy that made it into the Old Testament.
01:22:02 <elliott> oerjan: anyway I guess that works, but it seems weird compared to just pushing it
01:22:06 <oerjan> Gregor: you know perfectly well christians don't follow all the old testament rules
01:22:10 <elliott> oerjan: otoh that lets you push multiple stack elements. but i think that's actually a _bad_ idea
01:22:18 <elliott> as no program can process a variable number of stack elements like that
01:22:22 <elliott> so it's useless to do that
01:22:24 <Gregor> oerjan: Sure they do, when they happen to correspond to their biases.
01:22:34 <oerjan> Gregor: well naturally.
01:22:55 <elliott> Gregor: Yeah, but the Old Testament laws were specifically overturned.
01:23:09 <kallisti> elliott: are you familiar with File::chdir
01:23:16 <elliott> kallisti: why
01:23:24 <elliott> Sgeo: why did you link that
01:23:27 <kallisti> elliott: I was just recollecting on how awesome it is.
01:23:35 <kallisti> yes
01:23:37 <kallisti> recollecting.
01:23:42 <elliott> kallisti: what does it do.
01:24:17 <Sgeo> elliott, because
01:24:36 <elliott> Sgeo: it isn't funny though
01:24:56 <Sgeo> It isn't?!
01:25:06 <monqy> it isn't funny
01:25:09 <monqy> sorry sgeo
01:25:17 <kallisti> elliott: it gives you a $CWD as well as a @CWD that you can use to change the cwd. you can push and pop directories to @CWD and you can also use local $CWD to define a temporary cwd.
01:26:23 <kallisti> it's an interesting use for local I found.
01:26:40 <elliott> Sgeo: are you serious
01:27:07 <Sgeo> I think the author just needs to ... fix his joke structure, or something, then it would be good
01:27:12 <Sgeo> As opposed to almost good
01:27:27 <Sgeo> As it is, the jokes are a bit too predictable
01:27:29 <elliott> no
01:27:32 <elliott> it wouldn't
01:27:36 <elliott> this guy is one of the least funny people possibl
01:27:36 <elliott> e
01:27:37 <kallisti> as opposed to the opposite of good.
01:27:45 <elliott> like
01:27:48 <elliott> every human could be made funny
01:27:52 <elliott> by "restructuring" how they make jokes
01:27:54 <elliott> the structure
01:27:57 <elliott> is the difference between a funny person
01:28:00 <elliott> and an unfunny person
01:28:03 <elliott> and this person is /worse/
01:28:20 <kallisti> elliott: not me. my jokes are already perfect. Any restructuring would simply imperfect them.
01:28:47 <kallisti> or produce an equivalently perfect joke.
01:28:56 <kallisti> oerjan and I are in the this perfect joke tier together.
01:29:47 <monqy> putting jokerey to a tier structure is bad
01:29:54 <Sgeo> http://www.stationv3.com/d/20111215.html this isn't that bad
01:30:06 <elliott> yes
01:30:07 <elliott> it is
01:30:09 <monqy> yes it is
01:30:21 <elliott> http://www.stationv3.com/d/20111215.html#comment-387439621 though this person is worse
01:30:50 <kallisti> as far as I can tell stationv's "humor" is based on character traits.
01:30:59 <kallisti> the punchline is always based on implied character traits.
01:31:21 <monqy> are any of the characters anything but shallow
01:31:25 <elliott> kallisti: how much better can you do when one of your characters is literally "alternate [other character]"
01:31:26 <kallisti> "I did this thing but then IMPLIED CHARACTER TRAIT HAHAHAHAHAHAHAHAHA"
01:31:38 <elliott> i mean like
01:31:46 <elliott> i can't tell whether alternate floyd is the opposite of
01:31:49 <elliott> or entirely unrelated to floyd
01:31:52 <elliott> either way it's bad
01:32:02 <elliott> even star trek goatee alternates are similar in some ways and opposite in others
01:32:08 <elliott> and generally differently nuanced in general
01:32:13 <elliott> because star trek is not as bad as station v3
01:32:27 <kallisti> elliott: brilliant observation.
01:32:58 <elliott> quite.
01:33:17 <Sgeo> elliott, from the alternate universe
01:33:23 <elliott> yes
01:33:26 <elliott> how is that relevant
01:33:45 <elliott> how is alternate floyd distinguishable from an entirely unrelated character who just happens to be called floyd
01:33:57 <Sgeo> http://www.stationv3.com/d/20030804.html
01:34:03 <kallisti> elliott: he's from the alternate universe!
01:34:09 <kallisti> duh!
01:34:16 <Sgeo> elliott, he's the robot manager of the station in the alternate universe, presumably
01:34:19 <elliott> Sgeo: you appear to be unable to understand my simple point
01:34:26 <elliott> characters have to have attributes to make them interesting
01:34:30 <elliott> attributes and backgrounds
01:34:36 <Sgeo> Regular Floyd errors a lot
01:34:44 <elliott> alternate floyd, near as i can tell, has none of these
01:34:49 <elliott> there is no "floydianness" about his personality
01:34:53 <elliott> he just has a correspondign role
01:34:56 <elliott> and is otherwise unrelated
01:34:58 <elliott> that is not good writing.
01:34:59 <Gregor> elliott: But he's AAAAAAAAAAAAAAAAAAAAAALTERNATE
01:35:18 <elliott> basically this strip seems to be trying to be ~wacky~ by introducing random alternate universes and resetting the universe and shit
01:35:19 <Sgeo> http://www.stationv3.com/d/20030806.html
01:35:25 <elliott> now
01:35:30 <elliott> one cannot maintain a decent strip
01:35:33 <elliott> with just "wackiness"
01:35:36 <elliott> and no writing ability
01:35:37 <elliott> for 8 years
01:35:46 <Sgeo> ^^linky
01:36:04 <elliott> Sgeo: yes, I clicked it.
01:36:06 <elliott> it was irrelevant.
01:37:44 <kallisti> elliott: YOU'RE irreverent
01:37:48 <Sgeo> http://www.stationv3.com/d/20030817.html wtf
01:38:12 <elliott> Sgeo: "wtf"? the attempt at a joke is as obvious there as its falling flat
01:38:41 <kallisti> HA HA IT'S A PLANT THING IT CAN'T MOVE OR PLAY TAG HA
01:38:42 <monqy> sgeo was hide and seek deprived as a child
01:39:51 <kallisti> why do we keep talking about stationv3. is it even a popular webcomic?
01:40:32 <pikhq> elliott: Star Trek is probably sometimes worse than Station v3.
01:40:45 <pikhq> It's probably the single most inconsistent series out there.
01:40:59 <elliott> pikhq: *Maybe* TOS.
01:41:01 <elliott> And *maybe* Threshold.
01:41:07 <elliott> But even season 1 TNG is more enjoyable than this.
01:41:15 <elliott> kallisti: because Sgeo can't bring himself to accept that it's not terrible
01:41:17 <pikhq> elliott: Threshold wasn't *exceptionally* worse than other Voyager stinkers.
01:41:17 <elliott> and so keeps linking it.
01:41:25 <pikhq> It was just a little bit worse.
01:41:54 <Sgeo> elliott, did you just admit that it's not terrible and that I'm unable to accept that?
01:42:17 <elliott> Sgeo: it was an obvious typo, since you seem to have no issue accepting that it's not terrible
01:43:03 <pikhq> elliott: Also, Enterprise.
01:43:18 <elliott> pikhq: Have you /seen/ Station V3?
01:43:25 <pikhq> elliott: No, I try to avoid shit.
01:43:27 <kallisti> elliott: which P language is the best? PHP, Perl, Python, Pascal, Prolog, or... hmmm... Postscript?
01:43:42 <pikhq> Oh, wait, right, that one.
01:43:46 <monqy> are there no other p languages
01:43:49 <pikhq> I have seen it.
01:44:05 <pikhq> And I didn't read much of it because it had antihumor.
01:44:24 <pikhq> It sucked badly enough that it stole a laugh from something else.
01:44:26 <kallisti> monqy: there are.
01:44:26 <elliott> kallisti: Pail.
01:44:36 <pikhq> kallisti: Plof!
01:44:51 <kallisti> monqy: http://en.wikipedia.org/wiki/List_of_programming_languages#P
01:44:59 <kallisti> oh Piet as well
01:45:15 <kallisti> elliott: I've never heard of Pail.
01:45:22 <Sgeo> Does no one besides me think that Station V3 can be good?
01:45:28 <elliott> Sgeo: No.
01:45:41 <elliott> kallisti: http://catseye.tc/projects/pail/
01:45:41 <monqy> station v3 has fans, doesn't it
01:45:48 <kallisti> Sgeo: yes
01:46:43 -!- augur has quit (Remote host closed the connection).
01:48:13 <kallisti> > let in 5
01:48:14 <lambdabot> 5
01:48:16 <kallisti> lol
01:48:30 * kallisti learns something new everyday.
01:49:00 <oerjan> Phortran
01:49:03 <elliott> kallisti: why are you reading Pail.lhs
01:49:08 <elliott> http://catseye.tc/projects/pail/tests/Pail.falderal is the specification
01:49:19 <elliott> oh, hmm
01:49:27 <elliott> that was before he started writing specs in Falderal, I guess
01:49:47 <kallisti> > let 2 + 2 = 5 in 2 + 2
01:49:47 <lambdabot> 5
01:49:52 <kallisti> lololololol
01:50:07 <monqy> ;_;
01:50:18 <oerjan> it's like watching toddlers learn to walk
01:51:52 <elliott> :D
01:52:20 <kallisti> > let in 2 + let in 3
01:52:20 <lambdabot> 5
01:52:31 <kallisti> > do let in 2 + let in 3
01:52:31 <lambdabot> 5
01:52:53 <monqy> bad
01:54:00 <oerjan> > let in 1 - let in 2 - let in 3
01:54:01 <lambdabot> 2
01:54:11 * oerjan whistles innocently
01:54:12 <Sgeo> Falderal?
01:54:23 <monqy> falderal.
01:54:35 <kallisti> oerjan: hmmm...
01:55:06 <Sgeo> 1 - (2 - 3) = 1--1=2
01:55:08 <Sgeo> Yay
01:55:16 -!- itidus21 has quit (Ping timeout: 245 seconds).
01:55:21 <kallisti> oh it's right associative.
01:55:38 <kallisti> > 1 - 2 - 3
01:55:39 <lambdabot> -4
01:56:03 <elliott> Sgeo: http://catseye.tc/projects/falderal/
01:57:09 <elliott> ha ha oh boy
01:57:27 <elliott> i think i have a problem
01:57:43 <kallisti> heroin?
01:57:46 <elliott> yes
01:59:08 <Gregor> Heroine?
01:59:39 <elliott> yese
02:00:19 <kallisti> hairowin?
02:00:34 <monqy> harlequin?
02:00:43 <kallisti> hair o' win
02:01:17 -!- zzo38 has joined.
02:03:02 <pikhq> heirouīnn?
02:03:51 <elliott> yes
02:05:38 <Gregor> Smack?
02:07:05 <elliott> yes
02:07:12 <elliott> *yack
02:09:02 <Gregor> Uhh, in that case, heroack?
02:09:05 <kallisti> strangely enough mueval on my computer occasionally times out on very tivial inputs.
02:09:15 <kallisti> like the let 2 + 2 = 5 in 2 + 2
02:09:17 <kallisti> it timed out once
02:10:04 <kallisti> s/on my computer/when called by my IRC bot/
02:10:06 <elliott> Gregor: Yes. Heroack.
02:10:08 <elliott> You got it.
02:10:12 <elliott> kallisti: lambdabot does that too.
02:10:16 <kallisti> we're all winners!
02:10:56 <Sgeo> Oh, I see how it works
02:11:34 <monqy> how does what work
02:11:41 <Sgeo> let 2 + 2 = 5 in 2 + 2
02:12:10 <kallisti> yes it uses this function thing
02:12:14 <kallisti> it's pretty crazy magic.
02:12:55 <Sgeo> > let 2 + 2 = 5 in 2 + 1
02:12:56 <lambdabot> *Exception: <interactive>:3:4-12: Non-exhaustive patterns in function +
02:20:48 <elliott> NO!! STOP UPVOTING THAT ANSWER!!!!
02:20:59 <kallisti> > let don't = "stop believing" in don't
02:21:00 <lambdabot> "stop believing"
02:21:01 <elliott> IT HAS ENOUGH VOTES! I'M GETTING TOO MUCH REPUTATION YOU BASTARDS :(
02:21:05 <elliott> kallisti: No stop that is the worst song.
02:21:09 <kallisti> elliott: link
02:21:21 <elliott> kallisti: You can't downvote it, you'd have to register and get enough reputation and shit.
02:21:24 <kallisti> elliott: for some reason I thought ' was only valid at the end of identifiers
02:21:33 <kallisti> because that's where it's commonly placed.
02:21:39 <elliott> (I assume that's why you asked.)
02:22:01 <kallisti> elliott: no I want to see what you said/
02:22:16 <elliott> OK fine http://stackoverflow.com/questions/8524801/determining-function-behavior-from-the-type-of-the-function.
02:22:22 <elliott> (It's the top answer.)
02:22:55 -!- kmc has joined.
02:26:05 <kallisti> elliott: oh sure, you'll write an awesome explanation for some random person on the internet.
02:26:12 <kallisti> but then when I ask you a question.
02:26:16 <kallisti> NOPE. QUIT BEING STUPID.
02:26:26 <elliott> kallisti: See, the thing is, you're not giving me smack for the pain.
02:26:46 <kallisti> smack for the pain what does that even mean
02:26:52 <kallisti> DO YOU WANT DRUGS?
02:27:06 <kallisti> I don't think I will have much luck smuggling drugs internationally.
02:27:07 <elliott> Yes, I want DRUGS in return for the pain caused by having to answer your inane questions.
02:27:15 <elliott> DRUGS, MAN.
02:27:38 <kallisti> elliott is all about that smack
02:28:55 <kallisti> elliott: I found the note about polymorphism being important a good point.
02:29:06 <kallisti> I hadn't really specifically thought about that being essential.
02:29:10 <kallisti> but, of course, it makes sense.
02:29:27 <elliott> That's where the name "parametricity" comes from: parametric polymorphism.
02:30:56 <kallisti> an (a,b) -> Int could return any constant integer or any int that can be formed from a, b, (a,b), and some function or chain of functions.
02:31:20 <elliott> @free f :: (a,b) -> Int
02:31:21 <lambdabot> f = f . $map_Pair g h
02:31:27 <kallisti> a "chain of functions" also being "a function" of course.
02:31:33 <kallisti> elliott: oh? what is this?
02:31:40 <elliott> "any int that can be formed from a, b, (a,b), and some function or chain of functions."
02:31:42 <elliott> This is mistaken.
02:31:55 <elliott> There are no operations (a -> Int) or (b -> Int) that are not constant:
02:31:58 <elliott> @free f :: a -> Int
02:31:58 <lambdabot> f = f . g
02:31:59 <kallisti> well I mean
02:32:02 <elliott> @free g :: a -> Int
02:32:02 <lambdabot> g = g . f
02:32:11 <kallisti> assuming a and b are not universally quantified.
02:32:16 <elliott> Say A and B then.
02:32:21 <kallisti> they're just variables for monomorphic types .
02:32:22 <kallisti> okay.
02:32:24 <elliott> When talking about parametricity, quantification will tend to be assumed. :p
02:32:29 <elliott> Maybe $A and $B if you want to be ULTRA PRECISE.
02:32:45 <kallisti> why the $? is parametricity discussed in terms of Perl?
02:33:06 <elliott> Do you have a better character?
02:33:10 <kallisti> (notice my amazing perfect deadpan humor
02:33:11 <monqy> a
02:33:13 <kallisti> A and B work well.
02:33:14 <monqy> i mean q
02:33:16 <monqy> i typoed
02:33:49 <kallisti> elliott: I was just wondering what is more ULRA PRECISE about $A over A
02:33:55 <kallisti> ulra
02:34:08 <elliott> Because it shows that you're talking about every type A, not just some specific type A.
02:34:20 <elliott> As in, given any specific type A, ($A -> ...) follows certain rules.
02:34:32 <kallisti> is this a specific notation that is commonly accepted or?
02:35:36 <kallisti> in other words, I'm asking, if I ever use $A in this context will people cringe at me or will they be like "oh yes -beard scratch-". :P
02:35:49 <kallisti> this is important.
02:36:17 <kallisti> I want the beard to be a prominent feature of the conversation.
02:36:22 <kallisti> I want to fucking rustle that shit.
02:36:57 <cswords_> Hmmm
02:36:57 <cswords_> So
02:37:05 -!- augur has joined.
02:37:09 <cswords_> I just finished my first semester of grad schoo.
02:37:14 <cswords_> I need something to do this break.
02:37:28 <elliott> Grad schoo is the best kind of schoo.
02:37:37 <cswords_> So far, the list is read TAPL and a handful of PL papers, implement something to convert Schem to Scala. Anyone have any other suggestions?
02:37:40 <augur> cswords_: what you should do is
02:37:42 <augur> realize that itll only get harder
02:37:42 <kallisti> cswords_: drugs. elliott can probably land you some smack, if you know what I mean.
02:37:48 <pikhq> cswords_: @
02:37:54 <kallisti> cswords_: get drunk
02:37:55 <elliott> cswords_: Ignore augur, he's a linguist.
02:37:56 <kallisti> celebrate.
02:37:58 <cswords_> I did plent of drugs in my time.
02:37:59 <elliott> Ignore kallisti, he's an idiot.
02:38:07 <pikhq> Step 1, merge your mind with elliott's.
02:38:07 <cswords_> They're old news.
02:38:08 <augur> hahaha
02:38:19 <cswords_> Getting drunk is for tonight.
02:38:20 <elliott> cswords_: You've just finished grad schoo, are going to convert Scheme to Scala, and did plent of drugs in your time.
02:38:25 <elliott> I diagnose you with a hungry spacebar.
02:38:27 <cswords_> I need something fun to do.
02:38:28 <elliott> It keeps eating the previous letters.
02:38:34 <augur> cswords_: youre in grad school
02:38:37 <augur> getting drunk is for every night
02:38:45 <pikhq> elliott vejn'
02:38:50 <elliott> kallisti: They will probably have no idea what you're talking about because normal people write things out with explicit quantifiers.
02:38:59 <cswords_> augur, I have way too much work to do for that.
02:39:25 <pikhq> cswords_: You're the mythical "responsible" grad student, aren't you?
02:39:35 <augur> pikhq: first semester.
02:39:43 <kallisti> elliott: well, if I were talking with Haskell programmers, A and B are pretty reasonably assumed to be an existential quantification (not the Haskell kind, the usual kind).
02:39:44 <augur> he'll come along once hes into his second semester
02:39:45 <pikhq> augur: Ah, right.
02:39:45 <augur> no worries
02:40:05 <cswords_> No, but rt5fv/'[;..pol, kmojiu 4m;, cm, tr7m,-0kopm/,. olpoi,l. 89u0bim, 8um, -0p/. ,mvbnmj,.vgfghjkl;'tyuiop[]
02:40:14 <kallisti> elliott: because there's no type normally called A or B, and the uppercase signifies that it's not polymorphic, and anything you can say about A and B, not knowing anything about their constructors, you could reasonably say about any other type.
02:40:26 <cswords_> Er, I mean, I like getting work done.
02:40:28 <cswords_> Feels good, man.
02:40:40 <elliott> kallisti: I would assume you were talking about some arbitrary type A or B invented for the discussion.
02:40:47 <elliott> cswords_: Personally I think thsdfiojaspae, efmsdg' sd'cvb h][ erte \we't5
02:40:47 <kallisti> elliott: yes.
02:40:53 <elliott> kallisti: Which is not the case here.
02:42:26 <pikhq> Personally I think 亜↓不フぃへ久ぃ御語奴9ヴぃ御蛇ゑンこ;ン場差23位15ウ89がファ;おい;握ぇ食いだ
02:43:00 <elliott> Uhh, dude./
02:43:04 <elliott> Clearly q|";..pol, kmojiu 4m;, cm, tr7m,-0kopm/,. olpoi,l. 89u0bim, 8um, -0p/. ,mvbnmj,.vgfghjkl;'tyuiop[]
02:43:04 <elliott> <kallisti> elliott: because there's no type normally called A or B, and the uppercase signifies that it's not polymorphic, and anything you can say about A and B, not knowing anything about their constructors, you could reasonably say about any other type.
02:43:05 <elliott> <cswords_> Er, I mean, I like getting work done.
02:43:07 <elliott> <cswords_> Feels good, man.
02:43:08 <zzo38> I thought of something in Haskell, is make a class in case you want to make a type parameter have a value of a type. Such as, class ValuedType x y | y -> x where { makeTheValue :: y; accessTheValue :: y -> x; }; newtype V_errorMessage = V_errorMessage String; instance ValuedType String V_errorMessage where { makeTheValue = V_errorMessage "Error: (generic error message)."; accessTheValue (V_errorMessage x) = x; };
02:43:09 <elliott> <elliott> kallisti: I would assume you were talking about some arbitrary type A or B invented for the discussion.
02:43:12 <elliott> <elliott> cswords_: Personally I think thsdfiojaspae, efmsdg' sd'cvb h][ erte \we't5
02:43:14 <elliott> <kallisti> elliott: yes.
02:43:16 <elliott> <elliott> kallisti: Which is not the case here.
02:43:18 <elliott> <pikhq> Personally I think 亜↓不フぃへ久ぃ御語奴9ヴぃ御蛇ゑンこ;ン場差23位15ウ89がファ;おい;握ぇ食いだ
02:44:01 <Sgeo> elliott, kallisti update
02:44:11 <Sgeo> @seen Phantom_Hoover
02:44:11 <lambdabot> Unknown command, try @list
02:44:14 <Sgeo> @list
02:44:14 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
02:44:44 <Sgeo> ...Thing claims that seen exists
02:44:46 <Sgeo> @users
02:44:46 <lambdabot> Unknown command, try @list
02:45:10 <elliott> @seen hi
02:45:10 <lambdabot> Unknown command, try @list
02:45:15 <monqy> @hi
02:45:27 <oerjan> it used to
02:45:56 <oerjan> i suppose someone considered it stalking
02:46:15 <kallisti> most IRC networks have some kind of seen service anyway, so...
02:46:45 <oerjan> lambdabot's @seen told you which channels they were in, too
02:46:53 <kallisti> ah
02:46:54 <oerjan> well in common with lambdabot
02:47:04 <kallisti> well, most networks allow that also. or the ones I've been to, except freenode.
02:47:24 <oerjan> there's a flag for that, or used to be
02:47:27 <elliott> Hmm, how do you reperform a match in Perl on the rest of the line
02:47:33 <elliott> Or alternatively get all matches of a regexp on a line in list context
02:47:42 <elliott> oerjan: preflex has it, though
02:47:48 <elliott> but preflex isn't in here any more
02:48:05 <oerjan> wtf is preflex
02:48:47 <Sgeo> I should shout update when there's no MSPA update but only a Station V3 update
02:48:48 <Sgeo> >:D
02:49:27 <elliott> oerjan: mauke's bot in #haskell
02:50:15 <kallisti> elliott: mauke. that's the guy who tries to solve my XY problem when I join #perl to ask questions. :P
02:50:21 <kallisti> I never let him, of course.
02:50:28 <elliott> he's a #haskell op.
02:50:40 <elliott> and I believe you've already complained about him when you turned out to be doing something really stupid
02:51:13 <kallisti> eh, no complaints. he's doing a fine job.
02:51:31 <oerjan> elliott: \G assertion
02:51:44 <elliott> oerjan: hm how does that work, or should i just google it
02:51:58 <kallisti> google perlre ctrl+f \G
02:52:12 <elliott> kallisti: "google" haha PERLDOC MAN ahem
02:52:23 <oerjan> well i'm just looking at man perlre
02:53:03 <kallisti> elliott: I always use the web docs because typically I have a fully maximized Chrome instance in the background at all times.
02:53:16 <elliott> kallisti: but not a terminal? when /programming/?
02:53:28 <kallisti> I don't maximize terminals..
02:53:32 <kallisti> but yes I use those too.
02:53:35 <elliott> so it's not readily accessible? weird.
02:53:44 <kallisti> not at all.
02:53:48 <elliott> oerjan: ah, thanks. is there really no way to get all matches in a list context?
02:53:49 <kallisti> also habit
02:54:00 <kallisti> elliott: wait what.
02:54:11 <elliott> kallisti: i want to get all matches of a regexp on a string in a list
02:54:15 <kallisti> @matches = /.../g #like this?
02:54:15 <lambdabot> Unknown command, try @list
02:54:16 <elliott> (with one group)
02:54:18 <elliott> oh that works?
02:54:19 <elliott> neat.
02:54:21 <elliott> what's inside the list
02:54:28 <kallisti> each... match
02:54:31 <kallisti> everything you'd get
02:54:34 <kallisti> from a while loop
02:54:36 <kallisti> with the /g option
02:54:39 <elliott> kallisti: but I only want one group
02:54:44 <kallisti> oh.
02:54:46 <kallisti> well..
02:54:55 <kallisti> map {$1} /.../g #maybe?
02:55:05 <elliott> um
02:55:10 <elliott> I don't think this feature can possibly work as you describe
02:55:20 <elliott> unless match results are first class objects that somehow rebind $<num> when they are $_
02:55:49 <kallisti> ah right.
02:56:18 <kallisti> I'd just... use a while loop?
02:56:31 <kallisti> while(/.../g) { print $1; }
02:56:45 <elliott> that would work, yes.
02:56:52 <elliott> well, I'll check before saying that
02:56:58 <kallisti> it does.
02:57:06 * kallisti has used such things before.
02:57:43 <oerjan> elliott: oh wait, "In scalar context, each execution of "m//g" finds the next match, ..."
02:57:50 <elliott> oerjan: right
02:57:52 <oerjan> so \G may not be needed
02:57:55 <kallisti> !perl $_ = "a a a a a"; print map {$1} /(a)/g;
02:57:55 <elliott> next unless /^ /; print "$1\n" while /(0x[0-9a-zA-Z]+)/g
02:57:56 <elliott> there we go
02:57:57 <EgoBot> aaaaa
02:58:01 <kallisti> ...lol
02:58:02 <kallisti> not helpful
02:58:02 <elliott> (any shorter way to write that? :p)
02:58:13 <kallisti> !perl $_ = "a b c d e"; print map {$1} /(\S)/g;
02:58:13 <EgoBot> eeeee
02:58:19 <kallisti> yeah..
02:58:44 <kallisti> elliott: well if you use feature 'say' you can just type say $1
02:59:09 <kallisti> say is equivalent to print with a \n
02:59:10 <elliott> that would so shorten the code
02:59:12 <elliott> and i know what say is
02:59:22 <kallisti> elliott: assuming you need to use say a lot, yes it would.
02:59:32 <elliott> <elliott> next unless /^ /; print "$1\n" while /(0x[0-9a-zA-Z]+)/g
02:59:34 <elliott> that is the complete code
02:59:49 <kallisti> then no, that's already pretty short.
03:00:03 <kallisti> I'm guessing you're using -n?
03:00:21 <kallisti> otherwise you're nexting into nothing. :P
03:00:49 <elliott> yes
03:01:43 <kallisti> you could instead remove the parens around the regex, use -p, and replace the print ... while /.../g with /.../g
03:02:29 <kallisti> *use -p instead of -n
03:02:44 <kallisti> er, no.
03:02:52 -!- itidus21 has joined.
03:03:21 <kallisti> yes that would work I believe.
03:03:30 -!- copumpkin has joined.
03:03:40 <kallisti> elliott: since you just put parentheses around the whole regex there's no need to specifically grab the first capture group
03:04:02 <elliott> oh, indeed
03:06:47 <oerjan> except $_ doesn't contain the resulting match afterwards, so -p would print the wrong thing?
03:07:15 <kallisti> does -p print $_
03:07:19 <elliott> I'm using -n
03:07:20 <kallisti> I thought it printed the last line.
03:07:30 <kallisti> oh
03:07:30 <elliott> kallisti: it would be pretty pointless if it didn't print $_
03:07:30 <kallisti> okay.
03:07:36 <kallisti> yeah I suppose so.
03:07:45 <oerjan> it's $& which contains the whole match
03:07:57 <kallisti> not needed with /.../g though
03:08:01 <kallisti> just print /.../g
03:08:31 <kallisti> because HAHAHAHA FUNCTION ARGUMENTS ARE LIST CONTEXT
03:08:54 <oerjan> !perl $_ = "test"; print /.*/;
03:08:54 <EgoBot> 1
03:09:01 <oerjan> I DON'T THINK SO
03:09:07 <oerjan> or wait
03:09:11 <oerjan> !perl $_ = "test"; print /.*/g;
03:09:12 <EgoBot> test
03:09:40 <oerjan> it won't get \n between, though
03:10:00 <oerjan> !perl $_ = "test"; print /[^e]/g;
03:10:01 <EgoBot> tst
03:11:23 <kallisti> oh, yes.
03:11:31 <kallisti> map {print "$_\n";} /.../h
03:11:36 <kallisti> s/h/g/
03:11:42 <kallisti> or for
03:11:43 <kallisti> your preference
03:11:46 <kallisti> I like map for some reason.
03:12:00 <kallisti> so... basically the same amount of code. :P
03:12:19 <kallisti> print join('\n', /.../g) also
03:12:58 <kallisti> "\n" rather
03:13:09 <kallisti> oh, also $, = "\n"; print /.../g;
03:15:36 <elliott> also how do I loop through every line of a string like while (my $foo = <>)
03:15:42 <elliott> im bad at perle
03:15:49 <kallisti> split /\n/, $_
03:15:59 <kallisti> then loop away.
03:16:24 <kallisti> there may be some kind of fancy iterative way to do it though.
03:16:51 <elliott> foreach my $line (split /\n/, $foo) is good enough I guess
03:17:14 * kallisti pretty much never uses foreach.
03:17:29 <kallisti> since it's equivalent to for but requires more typing.
03:18:33 <kallisti> elliott: are you in a perl golfing mood? :P
03:19:05 <oerjan> i hope there will be an explanation for today's freefall...
03:20:56 <oerjan> oh wait i think i get it.
03:22:24 <kallisti> elliott: I think it would make a reasonable amount of sense that <> did the same it does for filehandles on strings.
03:23:25 <kallisti> oh look it does.
03:23:31 <kallisti> I don't think that's documented.
03:23:52 <kallisti> !perl print <"test\ntest">
03:23:53 <EgoBot> test
03:24:10 <kallisti> !perl @x = <"test\ntest">; print $x[1]
03:24:14 <kallisti> >_>
03:24:29 <kallisti> or maybe not.
03:25:15 <oerjan> !perl while (<"test\ntest">) { print $_ . "-"; }
03:25:16 <EgoBot> test
03:25:33 <oerjan> ah no, it's only one match
03:25:38 <kallisti> yeah.
03:26:05 <kallisti> !perl @x = <"test\ntest">; print $x[0]
03:26:06 <EgoBot> test
03:26:09 <kallisti> that's really weird.
03:26:50 <elliott> @pl \x y -> f (g x) (h y)
03:26:50 <lambdabot> (. h) . f . g
03:26:53 <elliott> ugh, right
03:27:08 <kallisti> oerjan: well...
03:27:14 <elliott> oerjan: is there a nice way to write that, again?
03:27:15 <kallisti> oerjan: you have to chomp as well.
03:27:32 <kallisti> elliott: maybe if you use .: ?
03:27:45 <kallisti> !perl while(<"test\ntest">) { chomp; print $_ . "-"}
03:27:46 <EgoBot> test
03:27:49 <kallisti> hmmm, nope.
03:28:27 <kallisti> !perl for($_ = <"test\ntest">) { chomp; print "$_-"}
03:28:28 <EgoBot> test
03:28:37 <kallisti> no clue why the - is still there despite chomping
03:28:52 <kallisti> *isn't
03:29:09 <kallisti> !perl for($_ = <"test\na">) { chomp; print "$_-"}
03:29:10 <EgoBot> test
03:29:17 <kallisti> !perl while($_ = <"test\na">) { chomp; print "$_-"}
03:29:18 <EgoBot> test
03:29:20 <kallisti> ?????
03:29:35 <kallisti> it should say test-
03:29:48 <kallisti> assuming sanity
03:29:58 <kallisti> maybe this is what happens when you use undocumented language features.
03:30:22 <kallisti> !perl while($_ = <"test\na">) { s/\n//; print "$_-"}
03:30:22 <EgoBot> testa-
03:30:32 <kallisti> oh...
03:30:39 <kallisti> so <> does... nothing?
03:30:42 <kallisti> on strings?
03:30:43 <kallisti> good to know.
03:30:48 <zzo38> Do you know if there is any Haskell programs similar to the ValuedType class I described earlier?
03:33:39 <kallisti> zzo38: so basically it describes a function from a -> b, and provides you with an a if you don't have one?
03:34:54 <kallisti> a derived function would be f :: b; f = accessTheValue makeTheValue
03:35:01 <zzo38> kallisti: Yes, mostly in case you need to put a value of such a type inside of a type parameter. (Although there are some other ways too)
03:35:08 <zzo38> kallisti: Yes, except that is ambiguous.
03:35:18 <kallisti> er right
03:35:23 <kallisti> insert relevant typeclass :P
03:36:05 <kallisti> but then it's still ambiguous isn't it?
03:36:30 <kallisti> oh wait fundep.
03:36:32 <oerjan> :t curry $ uncurry ?f . (?g *** ?h)
03:36:33 <lambdabot> forall a b a1 b1 c. (?f::a1 -> b1 -> c, ?g::a -> a1, ?h::b -> b1) => a -> b -> c
03:36:36 <kallisti> f :: (ValuedType a b) => b
03:36:49 <kallisti> that should work because of the fundep, yes?
03:37:50 <oerjan> zzo38: it slightly reminds me of the reflection package
03:38:05 <kallisti> zzo38: my bad. f :: (ValuedType a b) => a
03:38:08 <kallisti> based on your original definition
03:39:00 <kallisti> you could call f "accessTheValueThatWasMade"
03:39:07 <kallisti> and have possibly the worst named functions ever.
03:39:21 <zzo38> Might it need scoped typed variables to be used?
03:39:32 <kallisti> er more accurately "accessTheValueFromTheMadeValue"
03:40:12 -!- kmc has quit (Quit: Leaving).
03:40:25 <oerjan> zzo38: that is also intended to get a value into a typeclass instance
03:40:43 <kallisti> zzo38: if I understand functional depedencies correctly it should work as I wrote it?
03:40:51 <kallisti> but maybe a forall b. is needed, yes.
03:41:12 <elliott> http://esoteric.voxelperfect.net/wiki/Antimated_Chat_Rooms
03:41:15 <elliott> antimated, I tell you!!!
03:41:30 <oerjan> chat rooms go *BOOM* with gamma rays
03:42:07 <elliott> oerjan: hmm, so if Gamma-Ray Burst is Sgeo's favourite band
03:42:10 <kallisti> elliott: antimated... so like, they try to kill each other to see who wins?
03:42:15 <elliott> maybe "animated chat rooms" means his VR game things
03:42:21 <elliott> *antimated
03:42:23 <elliott> RUINED THE JOKE OOPS
03:42:24 <kallisti> elliott: or do they pair up to kill fetal chatrooms?
03:42:35 <kallisti> how does one antimate?
03:43:02 <elliott> badly
03:43:07 <zzo38> Another way could be to pass undefined of a type to a class method (some classes used that), but I maybe the way I specified allow combinations made in other way? I don't know, really
03:43:25 <oerjan> first you do the antiboogie
03:43:49 <oerjan> no wait, first you need antipasta
03:45:14 <kallisti> oerjan shares his dating secrets indirectly.
03:45:23 <kallisti> first you eat pasta, then you dance, then you fuck.
03:45:38 <kallisti> proven results.
03:46:21 <oerjan> well you have to raise the anticipation
03:47:24 <oerjan> zzo38: reflection uses the Proxy type, i think.
03:47:54 <oerjan> which is nicer than passing undefined, but alas not in base
03:48:08 <elliott> oerjan: how surprising, edwardk using his own package :P
03:48:24 <elliott> huh, it's actually
03:48:25 <elliott> class ReifiesNum s whereSource
03:48:25 <elliott> Methods
03:48:25 <elliott> reflectNum :: Num a => proxy s -> a
03:48:33 <elliott> presumably the tagged package dependency is to call them with Proxy
03:48:40 <oerjan> elliott: i'm sure i saw a relevant quote recently
03:49:02 <zzo38> Yes, I read about the Proxy type and I like that one too
03:49:14 <kallisti> elliott: help how does proxy appear from nothing.
03:49:22 <elliott> kallisti: are you fucking serious...
03:49:27 <shachaf> elliott: You know about huge pages, right?
03:49:32 <kallisti> elliott: I don't even it scoped anywhere.
03:49:36 <elliott> shachaf: You mean the x86 concept? Yes.
03:49:39 <elliott> kallisti: id :: a -> a
03:49:42 <elliott> help how does a appear from nothing
03:50:04 <kallisti> elliott: that's not particularly helpful. ghci can tell me that.
03:50:19 <elliott> oerjan: kallisti's either stupid or trolling, so kick him :P
03:50:32 <kallisti> was proxy defined somewhere and I'm missing it?
03:50:42 <shachaf> elliott: I mean why turning on *one* huge page is causing ridiculous amounts of swapping and slowing my computer down.
03:50:46 <kallisti> I just see a single-argument typeclass, with this "proxy" that magically appears with no scope.
03:50:50 <shachaf> And then turning on another one repeats the process.
03:50:57 <elliott> shachaf: How huge is it?
03:50:59 <oerjan> elliott: um did you get the capitalization right?
03:51:02 <elliott> oerjan: yes
03:51:05 <elliott> that's why I quoted it.
03:51:07 <elliott> <elliott> presumably the tagged package dependency is to call them with Proxy
03:51:09 <elliott> kallisti:
03:51:11 <shachaf> elliott: The default on amd64, which I assume is 2MB?
03:51:12 <elliott> id :: proxy -> proxy
03:51:16 <elliott> class Foo a where bar :: b -> a
03:51:19 <elliott> class Foo a where bar :: boop -> a
03:51:20 <zzo38> Reifies is the class like that I look for
03:51:29 <kallisti> elliott: oh, hmmm
03:51:45 <kallisti> elliott: right. I'm not accustomed to seeing a polymorphic variable used that way.
03:51:50 <Sgeo> I should read about that
03:51:51 <kallisti> usually it's the parameter.
03:52:00 <shachaf> elliott: Yes, the only size available in /sys is 2MB.
03:52:15 <shachaf> elliott: But turning one on seems to cause ~500MB of swapping.
03:52:47 <elliott> shachaf: I quote from the master:
03:52:47 <elliott> 11:16:00: <augur> hey oklopol
03:52:48 <elliott> 11:16:04: <augur> do you know how to respond to disk-sectors being unable to be read?
03:52:48 <elliott> 11:16:32: <oklopol> yes!
03:52:48 <elliott> 11:16:39: <oklopol> i have a perfect response
03:52:48 <elliott> 11:16:45: <oklopol> buy a new computer
03:52:49 <elliott> 11:17:07: <oklopol> be sure they install all the programs at the shop because that shit can be complicated
03:52:56 <kallisti> elliott: but what useful things can you do with a proxy s, when you know absolutely nothing about proxy? You need some function a s -> s
03:53:05 <augur> elliott: i will murder you
03:53:12 <elliott> kallisti: it's just to make the types work out.
03:53:24 <zzo38> kallisti: I think the only thing is depend on the type.
03:53:30 <kallisti> oh okay.l
03:53:31 <elliott> kallisti: because otherwise the "s" wouldn't appear in the type
03:53:39 <elliott> class Reifies s a | s -> a where
03:53:39 <elliott> reflect :: proxy s -> a
03:53:45 <elliott> and it must, because that's the rule for typeclasses
03:53:50 <kallisti> so there's no actual computation going on there other than resolving types at compile-time.
03:54:00 <elliott> augur: hi
03:54:10 <shachaf> elliott: :-(
03:54:16 <elliott> kallisti: of course there's computation, it's a constant "a" value
03:54:18 <elliott> depending on the type s
03:54:22 <kallisti> elliott: well, yes.
03:54:24 <shachaf> elliott: It's being complicated.
03:54:27 <kallisti> elliott: that's what I meant.
03:54:28 <Sgeo> elliott, can I just read the .pdf instead of this channel?
03:54:33 <elliott> shachaf: I thought the kernel automatically managed huge pages these days, anyway.
03:54:38 <elliott> Sgeo: What?
03:54:45 <kallisti> elliott: I don't typically think of a constant as being a computation, but okay, that's perfectly sensible to say.
03:54:50 <Sgeo> elliott, there's a pdf about this reflect stuff, right?
03:55:00 <elliott> kallisti: yes, for example my program that prints out pi is not a computation
03:55:01 <elliott> beacuse it's constant
03:55:03 <elliott> Sgeo: i'm sure there is
03:55:10 <elliott> the reflect stuff is irrelevant to what kallisti's talking about though
03:55:21 <shachaf> elliott: That's if you want transparent huge pages.
03:55:25 <shachaf> I don't.
03:55:29 <elliott> shachaf: Opaquity is for losers!
03:55:56 <shachaf> elliott: Look, I just want to allocate 4KB subpages inside it.
03:55:59 <kallisti> elliott: well, no, that's a computation and also constant. I was thinking of things like f a = 5. is 5 computed here?
03:56:03 <elliott> shachaf: That's immoral
03:56:05 <elliott> *!
03:56:23 <elliott> shachaf: But seriously, start spamming lkml at greater and greater frequencies yelling about how much Linux sucks because it swaps with one measly huge page.
03:56:32 <elliott> Eventually someone will get sick of you and give you the solution.
03:56:49 <elliott> kallisti: OK, so because some constants aren't computations (because you consider them too trivial), constants aren't computations in general?
03:56:55 <oerjan> > let asTypeIn :: x -> f x -> x; asTypeIn = const in 1 `asTypeIn` [1.0]
03:56:56 <lambdabot> 1.0
03:56:56 <elliott> For instance programs don't compute because some programs are trivial.
03:56:57 <kallisti> elliott: no that's not what I meant to say.
03:57:06 <oerjan> > let asTypeIn :: x -> f x -> x; asTypeIn = const in 1 `asTypeIn` Just 1.0
03:57:07 <lambdabot> 1.0
03:57:08 <shachaf> elliott: When you say "But seriously", I assume you mean "But the opposite of seriously".
03:57:14 <kallisti> elliott: it was an actual question not a point-prover.
03:57:18 <elliott> shachaf: Yes. Correct.
03:57:29 <oerjan> kallisti: ^ f is like proxy there
03:57:54 <kallisti> hm, okay.
03:58:34 <elliott> oerjan: if ScopedTypeVariables didn't exist to make this trivial, I'd think we need a family of composable functions whose implementations are const or flip const or (const .) or whatever :P
03:58:48 <elliott> to build up arbitrarily complex unifications
03:58:50 <oerjan> heh
03:59:00 <kallisti> elliott: I would think it's unlikely in this case that the constant is computed though, right? Depending on the types I guess.
03:59:14 <kallisti> elliott: I'm not really sure what reify is doing.
03:59:20 <elliott> kallisti: maybe you should read the paper
03:59:29 <kallisti> er reflect
03:59:35 <kallisti> elliott: not a bad idea.
04:00:08 <zzo38> Why would you need to read the report to understand these things? To me it is obvious.
04:00:25 <elliott> unfortunately not everyone is gifted with omniscience
04:00:40 <kallisti> zzo38: I only have the information that has appeared on this channel
04:00:42 <zzo38> Neither am I.
04:00:48 <kallisti> I've looked at nothing else. out of laziness.
04:01:17 <shachaf> elliott: Do you know about huge pages, the POWER concept?
04:01:35 <elliott> shachaf: No. Maybe?
04:01:38 <elliott> Help.
04:01:42 <shachaf> It's a lot like the x86 concept.
04:01:50 <shachaf> Except the architecture is POWER.
04:02:04 <zzo38> kallisti: But it is basically like what I wrote but with a proxy instead. data Proxy t = Proxy; Now you can make a proxy for any type. If you need proxy for other kinds I supppose you can do that too by indicating explicit kinds.
04:02:13 <shachaf> Apparently they support 16GB pages.
04:02:15 <shachaf> Now *that's* a page.
04:03:03 <kallisti> zzo38: how is t determined?
04:03:18 <zzo38> But, there should be one kind such as & to specify class/instance/constraint so you can make: data ClassProxy (t :: * -> &) = ClassProxy;
04:03:32 <zzo38> kallisti: By the type signature.
04:04:48 <kallisti> ah more fundeps
04:05:18 <kallisti> :t reflect
04:05:19 <lambdabot> forall a (m :: * -> *). (MonadLogic m) => Maybe (a, m a) -> m a
04:05:21 <kallisti> awwwww
04:05:42 <zzo38> Wrong module!
04:07:19 <elliott> zzo38: That already exists, and it's not called &.
04:07:26 <elliott> It's in GHC HEAD already to be releasd with 7.4, IIRC.
04:07:47 <kallisti> I think if I were to buy a console I'd get a ps3
04:07:54 <oerjan> kallisti: reflect and friends really compute the type _from_ the value, at runtime.
04:08:07 <kallisti> oerjan: hmmm, okay.
04:08:33 <elliott> oerjan: that talk's a bit too socially mobile for Haskell folk :P
04:08:36 <pikhq> shachaf: x86 isn't quite that hardcore.
04:08:44 * kallisti would get a ps3 for the simple reason that Demons' Souls and Dark Souls are only for ps3.
04:08:48 <oerjan> elliott: wat
04:08:51 <pikhq> "Only" up to 1 GiB pages.
04:09:07 <kallisti> but, instead, I'm going to with a gaming desktop, because... it makes way more sense.
04:09:12 <elliott> oerjan: I was referencing a McBride quip that I know forget. :/
04:09:24 <elliott> Ah, it's from http://strictlypositive.org/winging-jpgs/.
04:10:01 <kallisti> oerjan: it seems kind of determined by type. For example, reflect Proxy, using zzo38's Proxy a type.
04:11:05 <oerjan> kallisti: the idea is to take a value, encode it into a type, and then use that type to get a typeclass instance which contains the original value.
04:11:12 <zzo38> elliott: O, well, even if it exist in GHC HEAD but it is not in current version I have
04:11:47 <oerjan> this is tricky because haskell doesn't actually allow creating instances at runtime...
04:12:28 <elliott> zzo38: Yeah, but it'll be coming in a few months as Constraint.
04:13:38 <zzo38> I don't really like that name for it, for a few reasons, but, OK
04:14:20 <kallisti> oerjan: so then w is the instance you want at runtime?
04:14:29 <kallisti> in the Reifies typeclass.
04:14:33 <kallisti> er
04:14:37 <kallisti> in the reify function I mean.
04:14:47 <kallisti> ...does that statement even make sense.
04:14:51 <elliott> kallisti: rtfpaper
04:15:08 <kallisti> elliott: MAYBE I CAN GLEAN IT FROM TYPES.
04:15:10 <kallisti> INSTEAD.
04:15:21 <elliott> that would require a brGAK
04:15:44 <kallisti> what does that even mean.
04:17:37 * kallisti thinks, "maybe if I look at the source of reify I can figure it out!!"
04:17:40 * kallisti opens the source
04:17:44 <kallisti> unsafePerformIO. :(
04:18:07 <elliott> kallisti: yo in a foreach how to I skip the next line
04:18:13 <elliott> but actually, discard this line and give me the next one
04:18:16 <elliott> within nested control structures
04:18:20 <oerjan> kallisti: no, w is the value you are trying to compute, a is the type of the value you are trying to get into a type class, and s is the type encoding that value
04:18:22 <kallisti> elliott: uh what.
04:18:29 <elliott> as i expected; oerjan?
04:18:30 <kallisti> elliott: you want to skip to the next line in the outer loop right?
04:18:42 <elliott> kallisti: no
04:18:52 <elliott> example:
04:19:21 <elliott> foreach my $foo (split /\n/, $bar) { if ($foo =~ /treat_next_line_specially/) { my $quux = next_line_somehow; } else ... }
04:19:32 <kallisti> elliott: lol wat.
04:19:35 <kallisti> hold on
04:19:36 <elliott> ensuring that the line put in $quux WON'T be considered next iteration, instead it'll go on to the one after
04:19:39 <elliott> this is my replacing a while (<>) look
04:19:39 <elliott> loop
04:19:42 <elliott> with an iteration over a string
04:19:43 <elliott> so I can't do
04:19:44 <elliott> <>
04:19:46 <elliott> in the body of the loop
04:20:18 <kallisti> oh...
04:20:21 <kallisti> hmmmmmmmm
04:20:22 <kallisti> uh
04:20:36 <kallisti> there MIGHT be a way to do that? but otherwise you may want to use a C-style for loop instead.
04:21:36 <kallisti> elliott: oh hmm, there's the continue block, which is always executed before the loop condition is evaluated again.
04:21:47 <kallisti> so if you next in the loop body it'll go to the continue block.
04:21:55 <kallisti> before going back to the main loop
04:21:58 <kallisti> is that helpful?
04:22:18 <kallisti> (note that the continue is /always/ executed on each iteration, but the main body can be skipped via next)
04:22:39 <elliott> no
04:23:06 <elliott> oh well, I'll just restructure
04:23:11 <elliott> ls
04:23:12 <elliott> oops
04:23:13 <elliott> wrong window
04:24:51 <kallisti> yeah I think you just want something besides a foreach loop
04:24:52 <Sgeo> elliott, kallisti update
04:24:57 <kallisti> either that or use gross state variables.
04:25:04 <kallisti> but I dunno what you're trying to do.
04:25:10 <kallisti> so there might be an entirely easier way to do it.
04:25:11 <elliott> I love it when kallisti is updated.
04:25:14 <elliott> He gets very slightly less stupid.
04:25:27 <kallisti> lolwat
04:25:30 <kallisti> I do?
04:26:06 <elliott> Well.
04:26:07 <elliott> No.
04:26:10 <elliott> I was trying to make you feel better.
04:26:36 <kallisti> instead you just confused me.
04:26:41 <elliott> Hahaha, this guy has been around for 3 years and he only has 504 reputation, I've been around 2 days and I have 528 BOW BEFORE YOUR NEW GOD, PEON!!!!!!!!
04:26:56 <kallisti> I do not need to be made feeling better.
04:27:15 <elliott> kallisti: I guess past a certain point of stupid you just live in this kind of blizzful daze.
04:27:23 <elliott> Daze? Haze.
04:27:26 -!- Jafet has quit (Quit: Leaving.).
04:28:29 <kallisti> JOHN: last time i saw her, she looked really grim.
04:28:30 <kallisti> JOHN: and also, dark.
04:29:53 <kallisti> elliott: not quite, but lately I've just been in a completely content but meaningless state of mind.
04:29:59 <kallisti> if that makes sense.
04:30:10 <elliott> Commonly referred to as the "kallisti state".
04:30:22 <kallisti> oh no! sometimes I'm sad! even happy!
04:30:31 <kallisti> there are so many different emotions to feel.
04:30:32 <elliott> Yes, but always meaningless.
04:30:34 <kallisti> sad. neutral. happy.
04:30:52 <kallisti> elliott: life is meaningless, bro. -_;;
04:32:39 -!- oerjan has quit (Quit: Good night).
04:33:21 <kallisti> elliott: but yes you could use a state variable to signify that the next line is special.
04:33:30 <kallisti> if nothing else is nicer.
04:34:58 <elliott> That's what I love in programming: being forced to manually convert my problem to a state machine.
04:35:03 <kallisti> yep.
04:35:10 <kallisti> elliott: well a different looping construct would be nicer.
04:35:40 <elliott> I'd bet Perl is weird enough to let you implement this for foreach loops without patching the interpreter.
04:35:43 <elliott> It'd probably be slow, though.
04:35:52 <kallisti> other alternatives: implement continuation monad in perl
04:36:51 <kallisti> elliott: hmmm... maybe? I don't think so.
04:37:04 <kallisti> nothing simple would work.
04:37:20 <kallisti> you could override <> with an object but that sounds really boring and tedious.
04:37:39 <kallisti> but then you'd be switching to a while loop
04:38:13 <elliott> WHY IS NOBODY UPVOTING MY ANSWER THIS MUST BE A BAD TIME TO MAKE ANSWERS I MUST ADJUST MY SLEEP SCHEDULE FOR MEANINGLESS INTERNET POINTS
04:38:36 <kallisti> lolwat
04:38:41 <kallisti> stackoverflow: the game
04:41:21 <elliott> > (f <*> g <*> h) x
04:41:21 <lambdabot> Ambiguous type variable `a' in the constraints:
04:41:22 <lambdabot> `SimpleReflect.FromExpr ...
04:41:22 <elliott> > (f <*> g <*> h) x :: Expr
04:41:23 <lambdabot> Ambiguous type variable `a' in the constraints:
04:41:23 <lambdabot> `SimpleReflect.FromExpr ...
04:41:25 <elliott> what
04:41:27 <kallisti> while (my ($line, $str) = split(/\n/, $str, 2)) { ... }
04:41:37 <kallisti> elliott: $line is the current line, $str is the rest of the string.
04:41:41 <elliott> kallisti: help ^
04:41:50 <kallisti> oh... yeah..
04:41:56 <kallisti> you have to give one of them a specific type
04:41:57 <kallisti> I think
04:41:59 <kallisti> or something
04:42:02 <elliott> > ((f :: Expr -> Expr -> Expr) <*> g <*> h) x :: Expr
04:42:03 <lambdabot> Couldn't match expected type `a -> SimpleReflect.Expr'
04:42:03 <lambdabot> against infe...
04:42:04 <elliott> > ((f :: Expr -> Expr -> Expr) <*> g <*> h) x
04:42:05 <lambdabot> Couldn't match expected type `a -> b'
04:42:05 <lambdabot> against inferred type `Simple...
04:42:12 <elliott> > (f <*> (g :: Expr -> Expr) <*> h) x
04:42:12 <lambdabot> Ambiguous type variable `a' in the constraints:
04:42:13 <lambdabot> `SimpleReflect.FromExpr ...
04:42:15 <elliott> :t (f <*> (g :: Expr -> Expr) <*> h) x
04:42:15 <lambdabot> Ambiguous type variable `a' in the constraints:
04:42:15 <lambdabot> `SimpleReflect.FromExpr a'
04:42:16 <lambdabot> arising from a use of `h' at <interactive>:1:31
04:42:18 <elliott> > (f <*> (g :: Expr -> Expr) <*> h) x :: Expr
04:42:19 <lambdabot> Ambiguous type variable `a' in the constraints:
04:42:19 <lambdabot> `SimpleReflect.FromExpr ...
04:42:23 <kallisti> ummmm...
04:42:30 <elliott> fuck it
04:42:36 <elliott> oh wait
04:42:38 <elliott> > (f <> (g :: Expr -> Expr) <*> h) x :: Expr
04:42:39 <lambdabot> Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc'
04:42:39 <lambdabot> agains...
04:42:40 <elliott> > (f <$> (g :: Expr -> Expr) <*> h) x :: Expr
04:42:41 <lambdabot> Ambiguous type variable `a' in the constraints:
04:42:41 <lambdabot> `SimpleReflect.FromExpr ...
04:42:43 <elliott> >_<
04:42:48 <kallisti> yeah it's frustrating...
04:43:04 <kallisti> :t f
04:43:05 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
04:43:12 <elliott> > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++)) x
04:43:13 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
04:43:15 <elliott> > ((("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x
04:43:16 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
04:43:17 <elliott> fuck
04:43:24 <kallisti> :t f <*> g <*> <h> :: Expr -> Expr
04:43:25 <lambdabot> parse error on input `<'
04:43:30 <kallisti> lol
04:43:34 <kallisti> :t f <*> g <*> h :: Expr -> Expr
04:43:34 <lambdabot> Ambiguous type variable `a' in the constraints:
04:43:35 <lambdabot> `SimpleReflect.FromExpr a'
04:43:35 <lambdabot> arising from a use of `g' at <interactive>:1:6
04:43:39 <elliott> > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x
04:43:39 <lambdabot> Couldn't match expected type `a -> b'
04:43:40 <lambdabot> against inferred type `[GHC.T...
04:43:43 <elliott> :t (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x
04:43:43 <lambdabot> Couldn't match expected type `a -> b'
04:43:44 <lambdabot> against inferred type `[Char]'
04:43:44 <lambdabot> In the first argument of `(<$>)', namely `("f $ " ++)'
04:43:48 <elliott> > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) "x"
04:43:49 <lambdabot> Couldn't match expected type `a -> b'
04:43:49 <lambdabot> against inferred type `[GHC.T...
04:44:15 <elliott> > let fuck name x = "(" ++ name ++ " " ++ x ++ ")" in (("f $ " ++) <$> fuck "f" <*> fuck "g") "x"
04:44:15 <lambdabot> Couldn't match expected type `a -> b'
04:44:16 <lambdabot> against inferred type `[GHC.T...
04:44:17 <elliott> FML
04:44:21 <kallisti> lol
04:44:37 <kallisti> @unpl f <*> g <*> h
04:44:37 <lambdabot> ((f <*> g) <*> h)
04:44:39 <elliott> > ((,) <$> f <*> g) 42
04:44:39 <lambdabot> Ambiguous type variable `a' in the constraints:
04:44:40 <lambdabot> `SimpleReflect.FromExpr ...
04:44:45 <elliott> > ((,) <$> f <*> g) 42 :: (Expr,Expr)
04:44:46 <lambdabot> (f 42,g 42)
04:44:48 <elliott> FINALLY
04:45:16 <kallisti> what does that tell you?
04:45:22 <elliott> > join (liftA2 (,)) f 42 :: (Expr,ExpR)
04:45:23 <lambdabot> Not in scope: type constructor or class `ExpR'
04:45:23 <elliott> > join (liftA2 (,)) f 42 :: (Expr,Expr)
04:45:24 <lambdabot> (f 42,f 42)
04:46:07 <elliott> > (flip ($) <$> 42 <*> 43) pred
04:46:08 <lambdabot> Ambiguous type variable `a' in the constraint:
04:46:08 <lambdabot> `GHC.Enum.Enum a'
04:46:08 <lambdabot> ar...
04:46:10 <elliott> :t (flip ($) <$> 42 <*> 43)
04:46:11 <lambdabot> forall a b (f :: * -> *). (Num (f a), Applicative f, Num (f (a -> b))) => f b
04:46:11 <kallisti> elliott: is that loop construct helpful?
04:46:16 <elliott> :t (flip ($) <$> 42)
04:46:17 <lambdabot> forall a b (f :: * -> *). (Num (f a), Functor f) => f ((a -> b) -> b)
04:46:20 <kallisti> while (my ($line, $str) = split(/\n/, $str, 2)) { ... }
04:46:32 <elliott> kallisti: nope, when I said I was gonna restructure it I meant I gave up
04:46:36 <elliott> but I'll probably incorporate that next time, tahnks
04:46:37 <elliott> thanks
04:46:39 <kallisti> ah.
04:46:41 <elliott> :P
04:46:45 <elliott> :t (($) <$> 42)
04:46:45 <lambdabot> forall a b (f :: * -> *). (Num (f (a -> b)), Functor f) => f (a -> b)
04:46:57 <Sgeo> I'm looking at the ReifiesNum thingy
04:46:59 <Sgeo> I see Pred and Succ
04:47:01 <elliott> :t ((\x f -> f x) <8> 42)
04:47:02 <lambdabot> Precedence parsing error
04:47:02 <lambdabot> cannot mix `<' [infix 4] and `>' [infix 4] in the same infix expression
04:47:03 <elliott> :t ((\x f -> f x) <*> 42)
04:47:04 <lambdabot> forall t b. (Num (t -> t -> b), Applicative ((->) t)) => t -> b
04:47:09 <elliott> gah
04:47:10 <Sgeo> But ... Twice? I guess that makes it more efficient to reify some numbers?
04:47:15 <elliott> Sgeo: binary
04:47:16 <kallisti> elliott: if you wanted two lines at a time you could also do
04:47:19 <Sgeo> I still don't know what is meant by Reify
04:47:26 <kallisti> while (my ($line1, $line2, $str) = split(/\n/, $str, 3)) { ... }
04:47:28 <elliott> :t fmap (\x f -> f x)
04:47:28 <kallisti> and stuff like that.
04:47:29 <lambdabot> forall a t (f :: * -> *). (Functor f) => f a -> f ((a -> t) -> t)
04:47:31 <kallisti> but that's probably not what you want.
04:47:41 <elliott> (c -> a) -> (c -> (a -> t) -> t)
04:47:41 <elliott> hmm
04:47:58 <elliott> > fmap (flip ($)) (const 42) (+) 43
04:47:59 <lambdabot> 43
04:48:02 <elliott> aha
04:48:05 <elliott> :t liftA2 (\x f -> f x)
04:48:06 <lambdabot> forall a c (f :: * -> *). (Applicative f) => f a -> f (a -> c) -> f c
04:48:19 <kallisti> ....what the hell.
04:48:20 <elliott> ohd uh
04:48:22 <elliott> *oh duh
04:48:41 * elliott is trying to point-free: f x y z = g (h x) (h y) (h z)
04:48:45 <elliott> *free of points:
04:48:55 <kallisti> hm
04:49:21 <kallisti> sounds, difficult.
04:49:25 <elliott> it looks like the reader monad but it isn't :P
04:49:26 <kallisti> you probably won't get a good solution.
04:49:41 <elliott> i think i can, but who knows
04:50:41 <kallisti> elliott: is @pl cheating? :P
04:50:48 <elliott> good luck
04:51:06 <elliott> @pl \g h x y z -> g (h x) (h y) (h z)
04:51:06 <lambdabot> join . ((flip . ((flip . ((.) .)) .)) .) . join . ((flip . ((.) .)) .) . (.)
04:51:10 <elliott> @pl \x y z -> g (h x) (h y) (h z)
04:51:11 <lambdabot> flip flip h . ((.) .) . (. h) . g . h
04:51:13 <elliott> yeah.
04:51:17 <elliott> (flip flip h?)
04:51:17 <Sgeo> elliott, is this thing commonly used in Haskell projects? It looks cool
04:51:23 <elliott> Sgeo: What thing?
04:51:23 <elliott> :t flip flip h . ((.) .) . (. h) . g . h
04:51:24 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *) a1 a2 (f2 :: * -> *). (Functor f, SimpleReflect.FromExpr (f1 a), Functor f1, SimpleReflect.FromExpr (f a1), Show a2, Show a1, Show a, SimpleReflect.FromExpr b,
04:51:24 <lambdabot> SimpleReflect.FromExpr (f2 a2), Functor f2) => f2 (f (f1 b))
04:51:28 <elliott> :t \g h -> flip flip h . ((.) .) . (. h) . g . h
04:51:29 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> a -> a -> b) -> f a -> f (f (f b))
04:51:32 <elliott> :t \g h -> h . ((.) .) . (. h) . g . h
04:51:33 <lambdabot> Occurs check: cannot construct the infinite type:
04:51:33 <lambdabot> f = (->) (f (f1 a -> f1 b))
04:51:33 <lambdabot> Probable cause: `h' is applied to too few arguments
04:51:34 <Sgeo> elliott, "Functional Pearl: Implicit Configurations"
04:51:36 <elliott> oh
04:52:11 <elliott> Sgeo: not that commonly afaik. I think it's being used in the mpfr binding copumpkin and edwardk are working on
04:52:17 -!- Darth_Cliche has joined.
04:52:32 <copumpkin> I promised edwardk I'd get it in a working state before the end of the year
04:53:11 <Sgeo> elliott, there's no reason I shouldn't use it instead of, say, Reader, right?
04:53:22 <Sgeo> Or are they entirely separate concepts
04:53:37 <elliott> Here, copumpkin said something; he's the official representative for the reflection package.
04:53:41 <elliott> Enjoy!
04:53:52 <copumpkin> wat
04:53:54 <copumpkin> I was talking about mpfr
04:53:59 <kallisti> lol
04:54:00 <elliott> Yes, but it is too late now.
04:54:02 <elliott> Your fate is sealed.
04:54:02 <copumpkin> oh okay
04:54:07 <copumpkin> I like reflection too
04:54:13 <kallisti> elliott: this may be one of those situations
04:54:37 <kallisti> elliott: where, without additional standard higher-order functions, attempting to write a point-free function is not going to be fruitful?
04:54:53 -!- Darth_Cliche has changed nick to Klisz.
04:55:12 <kallisti> elliott: though perhaps by attempting these puzzles, you can devise combinators that would be useful for writing pointfree code?
04:55:29 -!- DCliche has quit (Ping timeout: 252 seconds).
04:55:44 <elliott> kallisti: hi.
04:55:52 <elliott> copumpkin: Good, tell Sgeo all about it and how it differs from the reader monad.
04:56:03 <copumpkin> Sgeo: like, totally, man
04:56:08 <copumpkin> duuude
04:56:40 <Sgeo> "We rely on type classes, higher-rank polymorphism, and—in ad-
04:56:40 <Sgeo> vanced cases—the foreign function interface.
04:56:40 <Sgeo> "
04:56:44 <Sgeo> o.O at ffi involvement
04:58:04 <elliott> Sgeo: It uses the FFI to store a value at a pointer, and then serialises that pointer to type-level naturals, and then deserialises it with unsafePerformIO to read the pointer.
04:58:12 <elliott> I now predict that Sgeo will never use the reflection package.
04:58:55 <Sgeo> I haven't used much Haskell libraries thus far..
04:59:44 <kallisti> elliott: didn't I make f (g x ) (g y) or something?
04:59:48 <kallisti> I don't remember what it was.
05:00:17 <elliott> Sgeo: I would also predict that you will never use the base package.
05:00:29 <kallisti> oooooh wicked burn.
05:01:15 <kallisti> elliott: surely Sgeo has imported Control.Applicative.
05:01:37 -!- azaq23 has joined.
05:01:43 <kallisti> or Data.List even/
05:01:46 <elliott> kallisti: I predict that Sgeo has never written a program not strictly intended to learn Haskell by writing a one-file program with no real use (like hello world or fizzbuzz, etc.).
05:01:47 -!- azaq23 has quit (Max SendQ exceeded).
05:01:49 <elliott> Prelude is in base too.
05:01:58 <kallisti> oh
05:02:17 -!- azaq23 has joined.
05:02:25 <Sgeo> elliott, what does my BF interpreter count as?
05:03:17 <elliott> OK, "to achieve a purpose other than rehashing a standard program skeleton to learn Haskell".
05:03:33 <kallisti> elliott: be careful. you might accidentally imply that bf has no real use.
05:03:34 <kallisti> oh okay.
05:03:37 <kallisti> you didn't
05:04:05 <Sgeo> I've never written a BF interpreter before
05:07:17 <elliott> Gee golly gosh.
05:08:13 <kallisti> Sgeo: it's okay I've never written anything substantial in Haskell and I'm still awesome. :)
05:10:33 <kallisti> elliott: find is an awesome program
05:10:38 <kallisti> now that I know how to properly use -exec
05:10:41 <elliott> It's not.
05:10:49 <kallisti> are there better alternatives?
05:11:02 <itidus21> burn
05:11:02 <elliott> Certainly; you won't be interested in any of them though.
05:11:12 <elliott> Also that's irrelevant to the question of whether it's awesome or not.
05:11:13 <kallisti> why not? what are they? go on.
05:11:32 <kallisti> elliott: it's slightly relevant. It fills a niche and that's why it's awesome.
05:11:35 <kallisti> if other things do it better
05:11:38 <elliott> It doesn't.
05:11:40 <kallisti> then it is less awesome than I initially thought.
05:11:41 <elliott> It fills about five thousand niches.
05:11:55 <elliott> It has a mini implementation of about 50 Unix commands in there and it doesn't compose well at all.
05:12:08 <elliott> Plan 9 gets along just fine without a find, for instance, mostly by disallowing pesky control characters in filenames so that line-based IO works fine.
05:12:22 <shachaf> pikhq: Can you get 1 GiB on amd64?
05:12:47 <pikhq> shachaf: Yes.
05:13:00 <kallisti> elliott: right but I use find to run commands on a whole directory tree at once. how does plan 9 do this?
05:13:17 <shachaf> Hah:
05:13:52 <shachaf> i386 | Page Size: 4KB | Huge Page Size: 4M (2M in PAE mode) | Large Page Size: 1GB
05:14:11 <elliott> kallisti: By listing the entire directory tree and piping it through e.g. grep to filter out the commands you don't want, then passing it to xargs.
05:14:20 <pikhq> shachaf: Sorry, I use "x86" to refer to x86_64 anymore, because seriously 32-bit x86 is an archaicism anymore.
05:14:49 <elliott> kallisti: To quote the Plan 9 wiki:
05:14:49 <elliott> find du -a | grep pattern
05:14:49 <elliott> grep pattern `{du -a root}
05:14:50 <elliott> -name du -a root | grep name
05:14:50 <elliott> pattern in a file grep -n pattern `{du -a root | awk '{print $2}'}
05:14:50 <elliott> -exec cp '{}' x ';' cp `{ du -a | grep pattern } x
05:14:52 <shachaf> I didn't see it listed in /sys, but I suppose that doesn't constitute trying very hard.
05:14:54 <elliott> (View in a monospaced font.)
05:15:03 <kallisti> elliott: I've done similar things with find before I realized I could use -exec
05:15:14 <elliott> kallisti: It's unsafe with Unix because filenames can contain anything apart from NUL bytes.
05:15:20 <elliott> You have to use -print0 and | xargs -0 and it's a gigantic mess.
05:15:34 <shachaf> find -print0 | xargs -0 > find -exec
05:17:32 <Sgeo> "The fourth approach to the configurations problem is to use a
05:17:32 <Sgeo> reader monad [3]. Its drawback is that any code that uses configu-
05:17:32 <Sgeo> ration data (even only indirectly, by calling other functions that do)
05:17:32 <Sgeo> must be sequenced into monadic style—even if it does not other-
05:17:32 <Sgeo> wise have to be.
05:17:32 <Sgeo> "
05:19:01 <kallisti> elliott: so your basic argument against find, despite it doing everything it needs to do to work in Unix, is a) unix filenames b) it goes against Unix philosophy
05:19:30 <elliott> kallisti: Many things work. I use find all the time. That does not mean I think it worthy of being called out as "awesome".
05:19:42 <elliott> kallisti: Have I mentioned that its calling convention is completely unlike almost all Unix software?
05:19:44 <elliott> Only dd is worse in that regard.
05:19:54 <elliott> (And that's because dd was ported from another system, IIRC.)
05:19:54 <kallisti> yes it's unique in that regard.
05:20:01 <shachaf> elliott: What's the gigantic mess exactly?
05:20:10 <elliott> shachaf: Context?
05:20:14 <shachaf> You just typed out the entire solution to the problem.
05:20:19 <shachaf> <elliott> You have to use -print0 and | xargs -0 and it's a gigantic mess.
05:20:39 <elliott> shachaf: Well, yes, but it's a gigantic mess because Unix is based around line-based IO, not \0-based.
05:20:45 <elliott> You can't really grep the result of that, etc.
05:20:54 <shachaf> UNIX is based around byte-based I/O.
05:20:55 <elliott> Yes, you don't need to because find can filter filenames itself, but that's kind of my point, it isn't modular.
05:21:11 <elliott> shachaf: If you don't think the Unix shell and its tools are line-oriented, then you're delusional...
05:21:19 -!- DCliche has joined.
05:21:32 <kallisti> elliott: whitespace-oriented, even. in some cases.
05:21:38 <shachaf> Also, the way that UNIX tools are meant to be both machine-usable and human-usable doesn't really work, as was pointed out to me recently.
05:21:56 <kallisti> "machine-usable"?
05:21:57 <elliott> Unix's design doesn't really work in general.
05:22:05 <elliott> Have I mentioned @ yet?
05:22:18 <elliott> ...but still, I'd rather a Unix system adhere to its philosophy, at least in broad strokes.
05:22:18 <kallisti> http://www.johndcook.com/blog/2010/06/30/where-the-unix-philosophy-breaks-down/
05:22:21 <kallisti> this guy hasn't heard of @
05:22:27 <elliott> A consistent crappy system beats an inconsistent crappy system.
05:23:12 <shachaf> elliott: @? What a weird name for an operating system.
05:24:10 <elliott> Hey, that's going to be replaced by the PERFECT name for an operating system in a few centuries!
05:24:14 <kallisti> shachaf: calling it a "name" would be using misfitting terminology of present-day operating systems, which no longer applies to @.
05:24:19 <elliott> DEAR FUTURE LOGREADERS: Disregard this line and my previous line.
05:24:21 <elliott> kallisti++
05:24:27 -!- Klisz has quit (Ping timeout: 252 seconds).
05:24:32 <cswords_> "Unix's design doesn't really work in general."
05:24:38 <cswords_> Except, you know, for the entire internet.
05:24:49 <shachaf> elliott: Wait, what?
05:25:00 <elliott> cswords_: It's true that Unix software functions perfectly fine. I'm hardly advocating Windows. Or VMS.
05:25:05 <elliott> That's why I said "design".
05:25:07 <shachaf> elliott: I was talking about the name that \@ is substituted by, obviously, not about \@.
05:25:13 <elliott> shachaf: There is no escaping. Sorry.
05:25:14 <shachaf> elliott: Come on.
05:25:23 <elliott> shachaf: You're just going to sound incoherent in the future.
05:25:24 <kallisti> elliott: also did you read that stupid blog entry? the guy is talking about how programs gain overlapping features over time because it becomes difficult to communicate complex data across byte streams.
05:25:31 <kallisti> elliott: something that shouldn't be a problem in @.
05:25:32 <elliott> kallisti: I read a few paragraphs and then got bored.
05:25:41 <elliott> But yes, @ is probably the answer to whatever question he has or should have.
05:26:14 <shachaf> Also, De Bruijn sequences are neat.
05:26:37 <elliott> cswords_: I mean, yes, Unix is probably a Good Thing, at least compared to what we could have had instead (although Multics was actually pretty well-designed and innovative for its time...), but it's way past its expiry date.
05:26:55 <cswords_> De Bruijn indicies...
05:27:00 <cswords_> So in my final today
05:27:02 <cswords_> We got a question
05:27:03 <cswords_> It was
05:27:11 <shachaf> cswords_: Yes, it's the same De Bruijn.
05:27:17 <elliott> De Bruijn indices++
05:27:18 <cswords_> "Go through this nested lambda expression and provide the de bruijn indicies for each one"
05:27:28 <kallisti> sounds difficult.
05:27:30 <shachaf> @quote kmc unix
05:27:30 <kallisti> >_>
05:27:31 <lambdabot> No quotes match. :(
05:27:31 <cswords_> No, it's easy.
05:27:35 <elliott> cswords_: That's impossible.
05:27:41 <cswords_> What? It's scheme.
05:27:44 <cswords_> It's easy.
05:27:48 <elliott> Yeah, Chaitin proved it in 1982.
05:27:49 <cswords_> Any free variables were to be denoted with a -1.
05:27:50 <elliott> You must have made a mistake.
05:27:55 <elliott> I think your professor was trying to catch you out.
05:28:05 <cswords_> I am sure you are trolling.
05:28:06 * elliott is trolling, but would also have used a symbol instead of -1.
05:28:07 <shachaf> WHOA, MAN, A DE BRUIJN INDEX OF -1
05:28:11 <cswords_> Anyway.
05:28:13 <shachaf> THINK OF THE POSSIBILITIES
05:28:18 <cswords_> We were supposed to use a -1 if it was a free variable
05:28:21 <cswords_> And the expression was this:
05:28:25 <elliott> shachaf: It gets the argument from one lambda IN.
05:28:28 <shachaf> IT'S, LIKE, A LAMBDA *INSIDE* A LAMBDA!
05:28:38 <elliott> If you have two nested lambdas, it turns the language into a nondeterministic one.
05:28:45 <elliott> That... that sounds pretty cool, actually.
05:28:57 <cswords_> ((lambda (a) (lambda (b) ((d c) (lambda (a) d))) (lambda (c) a)) (lambda (a) c))
05:29:02 <monqy> exciting
05:29:03 <shachaf> elliott: Well, other than how the lambda hasn't been applied yet.
05:29:10 <shachaf> elliott: Not to mention De Bruijn indices of 0.
05:29:10 <kallisti> elliott: the more non-deterministic you can make something, the cooler gets. a little known fact.
05:29:14 <elliott> cswords_: Did they write it in Scheme notation? It's awfully clunky for pure LC. :(
05:29:14 <shachaf> Wait, I just mentioned them.
05:29:28 <cswords_> LC?
05:29:30 <elliott> shachaf: Yeah, that's why it gets the value in the future, duh.
05:29:32 <elliott> cswords_: Lambda calculus.
05:29:33 <shachaf> They should've used Common Lisp.
05:29:33 <monqy> lambda calculus, cswords_
05:29:34 <cswords_> Yes, the class was in scheme.
05:29:40 -!- MDude has quit (Ping timeout: 240 seconds).
05:29:41 <monqy> wh
05:29:46 <cswords_> Aaanyway.
05:29:55 <shachaf> #'(LAMBDA (LAMBDA) (LAMBDA LAMBDA) I don't have the heart to finish it.
05:29:56 <pikhq> Lambda calculus in sexp is saddening.
05:29:56 <elliott> Well, yeah, but presumably you didn't write a De Bruijn substitutor for the entirety of Scheme :P
05:29:57 <cswords_> Someone should do the de bruijns for those real quick.
05:30:03 <elliott> Okay.
05:30:04 <cswords_> It was... unnerving.
05:30:28 <monqy> unnerving?
05:30:35 <cswords_> Each is free.
05:30:35 <monqy> sounds quite nerving to me, actually
05:30:36 <kallisti> he lost his nerves.
05:30:42 <elliott> \ \ (-1 -1) \ (-1) ... yeah, this is ridiculous.
05:30:45 <cswords_> Yeah.
05:30:55 <cswords_> Apparently the problem was randomly generated.
05:30:59 <monqy> great
05:30:59 <cswords_> I redid it like three times.
05:31:12 <shachaf> Real programmers don't use syntax, they just input the directed graph directly.
05:31:19 <shachaf> That's why it's called a Directed graph, see.
05:31:22 <monqy> directly graph
05:31:26 <elliott> Hmm, lambda calculus programs would look nice as graphs, except for the nodes.
05:31:31 <kallisti> real programmers usse@.
05:31:32 <elliott> They'd look all sad and empty.
05:31:48 <cswords_> lol
05:31:55 <monqy> edgemess
05:31:55 <cswords_> Anyway, now I"m drinking and making techno. Life is grand.
05:32:06 <elliott> Wait, just use @ symbols as the nodes.
05:32:08 <monqy> i'm sitting
05:32:14 <kallisti> cswords_: "techno"
05:32:18 <cswords_> o.O
05:32:21 <monqy> techno
05:32:21 <elliott> (Yes, use an operating system name as a node!)
05:32:23 <elliott> (Future people.)
05:32:26 <elliott> (That is what I will do.)
05:32:34 <elliott> (It's funny because injokes are funny.)
05:32:46 <kallisti> elliott: the future people don't know that @ is the name of their operating system though.
05:32:48 <monqy> every node labeled "elliott is cool"
05:32:51 <kallisti> because you renamed it to something perfect.
05:32:57 * elliott waits for cswords_ to ask what @ is.
05:33:06 <cswords_> I know what @ is.
05:33:08 <cswords_> I'm not a noob.
05:33:11 <shachaf> elliott: WHAT'S @
05:33:13 <elliott> You... do?
05:33:25 <elliott> shachaf: It's a difficult question, because @ is impossible to describe. One might ask the same about Feather. What *is* Feather? We just don't know.
05:33:28 <cswords_> I've red the page.
05:33:33 <kallisti> cswords_: techno refers to a specific style of electronic music. Is that what you're making?
05:33:36 <elliott> There's... a page... for @?
05:33:43 <cswords_> kallisti . . .
05:33:44 <monqy> at.html
05:33:55 <elliott> at.html isn't on any web servers. :(
05:34:01 <cswords_> Wait, what OS am I thinking of, then?
05:34:02 <cswords_> Hmmm.
05:34:04 <elliott> cswords_ is hacking into my computer to read my top secret @ files.
05:34:10 <kallisti> email: at@at.org
05:34:12 <cswords_> lol
05:34:14 <cswords_> You didn't know?
05:34:17 <cswords_> I rooted your box hours ago/
05:34:20 <cswords_> I was taking an "exam"
05:34:29 <elliott> Oh, so THAT'S why all this gay porn came up.
05:34:33 <elliott> I assumed I just forgot about it.
05:34:39 <pikhq> Hawt.
05:34:54 <elliott> From this extensive evidence I deduce that cswords_ is pikhq.
05:35:00 <pikhq> Alas, no.
05:35:01 <kallisti> cswords_: yes I'm one of those people who are all pretentious about their electornic genres.
05:35:02 <cswords_> -_-
05:35:12 <cswords_> kallisti, it isn't dubstep if that helps.
05:35:18 <kallisti> a little.
05:35:18 <cswords_> If I can get soundcloud to work I'll link to some.
05:35:26 <monqy> techno pretension is quite a hilarious pretension
05:35:35 <elliott> Techension.
05:35:47 <kallisti> monqy: I'm not pretentious about just techno. I'm pretentious about electronic music genres, obviously.
05:35:53 <monqy> kallisti: that's the joke
05:36:00 <kallisti> monqy: BECAUSE THEY'RE DIFFERENT? DO YOU SEE? YES?
05:36:02 <kallisti> YES.
05:36:03 <kallisti> yes
05:36:04 <monqy> nope
05:36:06 <elliott> http://esolangs.org/wiki/Everything2_Chat_Box_Archive
05:36:06 <elliott> finally!
05:36:11 <elliott> all I've wanted in life is an everything2 chat box archive
05:36:16 <elliott> thanks to spam, I can have it!
05:36:34 <monqy> we also have single fifo, animated chatrooms, bbw dating north dakota, dating program
05:36:52 <kallisti> *antimated
05:36:53 <monqy> there was a good one earlier today but I forget what it was
05:37:02 <monqy> oh yes antimated
05:37:06 <monqy> even better
05:37:18 <elliott> Well gosh darnit, I'm looking for a BBW dating program in North Dakota so that I can use a single FIFO to communicate with animated chatrooms.
05:37:22 <elliott> LOOKS LIKE I'VE GOT IT MADE.
05:37:40 <cswords_> What the fuck?
05:37:42 <monqy> I wonder what antimated chat rooms are
05:37:51 <cswords_> antimated
05:37:52 <cswords_> As in
05:37:53 <cswords_> anti
05:37:54 <cswords_> mated
05:37:54 <elliott> cswords_: We're talking about our wiki spam.
05:37:56 <monqy> How a prosperous Link Building Service Displays Profitable Results on Expenditure
05:38:00 <kallisti> elliott: I used my FIFO to communicate with your antimated BB mom.
05:38:00 <monqy> yes!!!
05:38:07 <elliott> monqy: I read that as "preposterous" first time round and it was better.
05:38:24 <cswords_> Gah
05:38:24 <monqy> i seem to have missed white wives dating black men
05:38:27 <cswords_> My internet is terrible.
05:38:37 <monqy> and secret friends sex chat ;_;
05:38:49 <kallisti> friendship sex chat.
05:38:54 <elliott> You'll never get into our secret friends sex chat now!!!
05:39:02 <monqy> ppc johnny chat
05:39:15 <kallisti> cswords_: I'm sorry that none of this makes any sense to you.
05:39:20 <cswords_> kallisti, http://soundcloud.com/kaosjester/sines-in-space
05:39:24 <monqy> fond memories of my name is johny, what the f**k
05:39:34 <cswords_> Also, http://soundcloud.com/kaosjester/saws-in-bass
05:39:41 <kallisti> cswords_: sines in space? sounds impossible.
05:40:12 <elliott> cswords_: There's no sound in space, dude.
05:40:18 <cswords_> Oh?
05:40:21 <elliott> That's as impossible as de-Bruijn numbering lambdas.
05:40:23 <cswords_> But if you had a Space ship
05:40:33 <cswords_> And you were having a disco on said space ship.
05:40:35 <elliott> By that standard sines on earth are sines in space. :(
05:40:47 <elliott> F- WOULD NOT BUY AGAIN BOOK CLAIMED TO BE ABOUT SPACE BUT WAS ACTUALLY JUST ABOUT EARTH
05:41:01 <monqy> wheres the sines
05:41:12 <elliott> monqy: THERE ARE NO SINES IN SPACE!!!
05:41:14 <elliott> Only square waves.
05:41:36 <cswords_> That must make space travel difficult.
05:41:45 <cswords_> YOU MUST MOVE UP AND DOWN RAPIDLY WHILE TRAVELING!
05:41:49 <elliott> Exactly.
05:41:52 <elliott> That's how the Earth travels.
05:41:55 <kallisti> cswords_: this is kind of like house I would say. Except there was one breakbeat part, but I guess that's okay.
05:42:04 <monqy> oh there's that effect similar to that of rapidly plugging and unplugging ears
05:42:05 <cswords_> lawl
05:42:07 <kallisti> electronic genres are strange.
05:42:09 <cswords_> The second one is housy-er.
05:42:26 <elliott> monqy: Wow, that's ... the best intuitive description ever.
05:42:34 <elliott> kallisti: You knew what he meant first time, right??
05:42:49 <kallisti> elliott: sure.
05:42:56 <cswords_> If we keep this up I will need to fetch more alcohol.
05:43:02 <monqy> blinking : strobe lights :: ear plug cycling : this thing
05:43:03 <elliott> We always operate at this level.
05:43:10 <elliott> Only the toughened few survive.
05:43:13 <elliott> monqy: :D
05:43:13 <cswords_> Hmmm. I feel like coding something. Balmer peak!
05:43:32 <elliott> The Ballmer peak is reached at the point where you can no longer spell "Ballmer".
05:43:55 <cswords_> Oh.
05:43:57 <cswords_> I've had like
05:44:02 <cswords_> A guinness and half a bottle of wine
05:44:11 <cswords_> I'm nowhere near that drunk.
05:44:13 <elliott> cswords_: Don't tell PH.
05:44:17 <cswords_> PH?
05:44:27 <elliott> Phantom_Hoover.
05:44:29 <monqy> alcohol is for old people
05:44:31 -!- GreaseMonkey has joined.
05:44:39 <cswords_> monqy is actually sixteen
05:44:42 <kallisti> monqy: you might be referring to side-chaining compression?
05:44:45 <monqy> cswords_: not yet
05:44:54 <cswords_> lawl
05:45:05 <kallisti> monqy: where everything becomes softer when the kick drum hits.
05:45:11 <kallisti> to emphasize the bass.
05:45:13 <elliott> monqy is actually 4 years old.
05:45:23 <monqy> kallisti: i don't know what you're talking about im bad at techno
05:45:50 <kallisti> monqy: it's a good thing I'm not talking about techno specifically. -more pretentiousness-
05:46:51 <cswords_> It is, in fact, side-chaining compression on the bass line.
05:47:17 <itidus21> ok, so one envies the greener grass.. in spite of the fact that the grass is not infact greener. acting on this envy (which is always a hassle), one now envies ones initial grass which is now the greener.
05:47:45 <kallisti> ..
05:47:57 <kallisti> what
05:48:09 <elliott> hi
05:48:10 <itidus21> "the grass is greener on the other side of the fence"
05:48:14 <cswords_> I live on both sides of the fence and the grass is always green.
05:48:17 <kallisti> cswords_: whatt porgrmus u use 4 soundz0xrz
05:48:27 <cswords_> Reason.
05:48:39 <elliott> I make music with PURE LOGI- wait god dammit Logic is an audio program too.
05:48:52 <elliott> DEAR AUDIO PEOPLE: Stop being so bloody pretentious you are not the epitome of rationality??
05:48:57 <itidus21> I feel like developing!
05:49:02 <elliott> oh good
05:49:04 * kallisti makes music with PURE-DA --- fuuuuuuck
05:49:12 <itidus21> `log developers
05:49:20 <elliott> That's not developing itidus21.
05:49:22 <HackEgo> 2007-10-10.txt:15:40:34: <ehird`> and you have't seen it fail because web developers have to prance around until IE accepts it
05:49:26 <itidus21> `log developers
05:49:33 <HackEgo> 2011-08-20.txt:23:22:30: <fizzie> They're (according to current plans/rumours) going to release a grand total of approximately 1.1 MeeGo devices; the N9, plus the N950 "developers only" phone, which I'm counting as 0.1 because (even though it is a MeeGo device) it's not going to actually be released.
05:50:32 <cswords_> Stupid OpenDNS.
05:50:35 <cswords_> Being all lame.
05:50:36 <kallisti> elliott: I still need to start working on The Best Signal Processing And Music Production Library Ever (in Haskell)... right after I gain more practical experience with Haskell.
05:50:49 <elliott> cswords_: 8.8.8.8 or that Verizon one that I don't recall if you believe you can escape Google's infinite clutches.
05:51:03 <elliott> kallisti: Have I mentioned that your design for that was terrible and mine was awesome?
05:51:05 <cswords_> elliott, I have long ago accepted thgat I cannot.
05:51:12 <cswords_> I just don't remember how to change my DNS settings.
05:51:14 <kallisti> elliott: yes. I have considered different designs.
05:51:15 <itidus21> i'm still not certain which type of person balmer is keen on.
05:51:16 <cswords_> And I can't google it.
05:51:19 <elliott> cswords_: vi /etc/resolv.conf
05:51:21 <kallisti> elliott: involving LAYERS OF ABSTRACTION. -gasp-
05:51:26 <cswords_> ...
05:51:38 <cswords_> So I'm using a windows computer for the music development, whereis where it needs to happne.
05:51:40 <elliott> This is the point where we laugh at cswords_ because he uses Windows.
05:51:47 <cswords_> Nope.
05:51:49 * elliott begins laughter routines.
05:51:51 <itidus21> i use windows
05:51:51 <cswords_> I have a windows box, too.
05:51:53 <monqy> laughe
05:51:58 <cswords_> I also have a mac somewhere...
05:52:04 <cswords_> er, linux
05:52:06 <cswords_> I run arch.
05:52:12 * elliott runs Arch. It's terrible.
05:52:15 <cswords_> But SC2 + Linux is not hte kinded thing.
05:52:18 <kallisti> elliott: oh right it's winter break I need to switch to Debian eventually.
05:52:20 <monqy> is anything not terribel................
05:52:21 <cswords_> gah, that spelling was terrible
05:52:22 <elliott> By the way, I hate everything.
05:52:24 <cswords_> Debian is terrible.
05:52:30 <cswords_> Not as bad as Gentoo.
05:52:34 <kallisti> cswords_: do you watch pro SC2 games?
05:52:34 <itidus21> i run winxp sp2
05:52:36 <cswords_> elliott, just switch to slackware.
05:52:37 <cswords_> it'll be fine.
05:52:39 <elliott> Debian is more terrible than, but not as obnoxious as Arch. YMMV.
05:52:40 <cswords_> kallisti, yes!
05:52:52 <kallisti> cswords_: I watch them on youtube.
05:52:55 <elliott> cswords_: If I'm switching to another existing distro it'll be NixOS.
05:52:55 <kallisti> all the time.
05:52:58 <kallisti> like. daily.
05:53:07 <elliott> kallisti is actually the abstract concept of StarCraft II.
05:53:35 <itidus21> even though i've never been a starcraft player, or a pc-game player, i will try to make more starcraft references from now on
05:53:40 <elliott> cswords_: Anyway, go find your internet connection in Control Panel, and then double click it and it's in one of those tabs.
05:53:52 <elliott> 8.8.8.8 and 8.8.4.4.
05:54:09 <cswords_> God
05:54:16 <cswords_> I was going to try to avoid doing that much work to fix it
05:54:19 <cswords_> And instead just bitch
05:54:19 <kallisti> itidus21: you can use "canon rush" to mean any kind of cheap trick that doesn't pay off in the long run.
05:54:20 <cswords_> But NO
05:54:23 <kallisti> itidus21: *cannon
05:54:24 <cswords_> You have to make it sound easy
05:54:25 <elliott> That's like three clicks.
05:54:32 <elliott> You just can't operate on our level.
05:54:52 <itidus21> hmmm.. freenode is really zerg rushing me
05:55:07 <itidus21> verily
05:55:08 <kallisti> itidus21: also "I nydus'd her main" is a popular sexual reference, for some reason.
05:55:15 <elliott> kallisti: Stop it stop it.
05:55:18 <elliott> You're encouraging him.
05:56:12 <kallisti> itidus21: cannon rush to 3gate DT rush blah blah blah
05:56:15 <itidus21> i guess battlenet references are important too
05:56:18 <kallisti> you can find endless combinations
05:56:38 <cswords_> Wow, that's way better.
05:56:52 <cswords_> elliott, I've been running linux since I'm 12. Back off!
05:57:02 <monqy> whoa!!!!!!!
05:57:04 <itidus21> fungot is running out of minerals
05:57:04 <fungot> itidus21: where is samsara?." " yeah, i see what the value of the current working directory
05:57:14 <elliott> cswords_: I've been running Linux since I was 10 or 11, I think.
05:57:18 <elliott> I am now 5 years old.
05:57:22 <elliott> That's one year older than monqy!
05:57:22 <cswords_> Sweet
05:57:27 <cswords_> You have never ran linux before.
05:57:28 <cswords_> Excellent.
05:57:38 <cswords_> Shit, there was something I needed to buy from amazon.
05:57:39 <elliott> Uh, I just ran it in the FUTURE? With FEATHER? Hello?
05:57:41 <cswords_> I don't remember what it is.
05:57:44 <elliott> You must be new here.
05:57:52 <kallisti> cswords_: for some reason husky has like completely stopped casting pro games. I don't understand.
05:58:00 <cswords_> I don't like Husky or HD.
05:58:03 <itidus21> feather sounds like some kind of protoss technology
05:58:05 <cswords_> I watch Day9 and GSL.
05:58:18 <kallisti> cswords_: I don't like HD but Husky is a pretty good caster. he's just not a very good player so his strategy stuff isn't good.
05:58:23 <kallisti> cswords_: Day9 is great.
05:58:37 <cswords_> FUCK
05:58:39 <elliott> itidus21: Stop iiiit.
05:58:46 <cswords_> I needed to buy something IMPORTANT.
05:58:53 <monqy> oops
05:59:02 <itidus21> your base is under attack
05:59:03 <cswords_> The lamest part about getting married is that you can't ask for knives.
05:59:21 <kallisti> cswords_: though I wish day9 would do just a few pro games. I like his strategy analysis but sometimes I just want to watch him cast a game.
05:59:39 <cswords_> kallisti, watch MLG?
05:59:55 <kallisti> cswords_: how? where?
05:59:57 <itidus21> elliott: its fairly safe since i really haven't played the game in any meaningful extent
06:00:08 <cswords_> When MLG happens.
06:00:12 <cswords_> Day9 always casts.
06:00:13 <cswords_> It's great.
06:00:17 <kallisti> cswords_: right but like... where do I view this?
06:00:20 <kallisti> preferably on the internet.
06:00:25 <kallisti> or is it like... a television thing?
06:01:33 <kallisti> cswords_: I remember the first time I heard day9 cast mlg, and thought he was annoying.
06:01:40 <kallisti> because I was accustomed to Husky's beautiful voice. :P
06:01:48 <cswords_> Well I can't help that your'e dumb.
06:01:50 <cswords_> :P
06:01:51 <kallisti> lol
06:01:56 <cswords_> It's on the internet.
06:02:05 <cswords_> MLG is a US-based tournament.
06:02:08 <cswords_> It happens about once a month.
06:02:12 <cswords_> They livestream the games.
06:02:14 <kallisti> cswords_: I changed my mind. The casting was kind of bad for the first game I watched.
06:02:19 <kallisti> lots of shouting. :P
06:02:34 <kallisti> but then I listened to more day9 stuff.
06:03:21 <oklopol> wow what's this here now, cswords' nick is of such a bright and morningly color
06:03:45 <oklopol> my eyes are rejoicing
06:04:27 <cswords_> WTF does that even mean?
06:04:54 <oklopol> er
06:05:06 -!- cswords_ has changed nick to cswords.
06:05:08 <oklopol> can you be more specific
06:05:18 <cswords> wow what's this here now, cswords' nick is of such a bright and morningly color
06:05:35 <oklopol> well "what's this here now" means i'm astonished about something
06:05:48 <cswords> Thanks.
06:05:50 <cswords> Thanks for that.
06:06:07 <oklopol> well i'm going to explain the rest as well, just gimme a minute
06:06:19 <oklopol> cswords' nick is your nick which i see on my screen
06:06:27 <oklopol> when you say things, i see your nick before those lines
06:06:35 <oklopol> your nick is cswords
06:06:48 <oklopol> now, your nick has a color, as is obvious from my line
06:06:55 <oklopol> it is very bright and morningly.
06:06:55 <monqy> was it bright and morningly
06:06:57 <oklopol> yes
06:06:57 <monqy> :o
06:07:02 <oklopol> it was very bright and morningly
06:07:08 <oklopol> and still is
06:07:16 <oklopol> bright means like emits lots of light
06:07:21 <cswords> Aren't.
06:07:23 <cswords> What the fuck
06:07:26 <monqy> all I see is grey; my eyes are rejoicing
06:07:30 <cswords> Aren't all the nicks the same color?
06:07:34 <cswords> Why would mine be different?
06:07:43 <monqy> different clients or extensions or w/e
06:07:47 <monqy> some people like colored names
06:07:49 <kallisti> cswords: but yeah... HD is bad.
06:07:54 <oklopol> no, none of the colors are the same.
06:07:55 <monqy> I don't care enough to do name coloring
06:08:02 <oklopol> as is very common in modern irc clients
06:08:12 <monqy> sometimes name coloring can be ugly
06:08:17 <oklopol> try always
06:08:37 <oklopol> i don't care enough to not do it. because it's done automatically
06:08:37 * kallisti just reads peoples' names.
06:08:39 <kallisti> it's amazing.
06:08:48 <monqy> one time I heard of name coloring that colored both the foreground and the background
06:08:51 <monqy> double ugly
06:08:55 <cswords> What color is mine, oklopol?
06:09:00 <elliott> bright and morningly
06:09:07 <oklopol> cswords: super bright morning green
06:09:23 <elliott> Because mornings are green in Finland!
06:09:52 <oklopol> mine colors backgrounds too
06:10:00 <monqy> eugh
06:10:07 <cswords> Ugh.
06:10:09 <cswords> WTF internet.
06:10:11 <monqy> nonblack backgrounds make me sad
06:10:16 <monqy> make my eyes sad
06:10:18 <monqy> make me sad
06:10:19 <oklopol> well it makes logreading way faster
06:10:23 <elliott> monqy: White on black makes your eyes sad.
06:10:38 <oklopol> but then again i'm sure you could do all kinds of horrible things with colors that would make it even faster
06:10:55 <monqy> elliott: I prefer it a bit dimmer than white
06:11:11 <monqy> I also have some green stuff going on
06:11:12 <elliott> monqy: Well, pure black backgrounds in general are a bad idea on LCDs. Try #333.
06:11:26 <elliott> Green on black. You're a bad person. I bet it's monospaced too.
06:11:30 <elliott> It might even be aliased.
06:11:35 <monqy> not aliased
06:11:42 <monqy> but it's a bitmap font
06:11:48 <monqy> do i lose points for that
06:11:51 <monqy> oh wait
06:11:53 <elliott> There are antialiased bitmap fonts?
06:11:54 <monqy> i mixed up
06:11:57 <monqy> aliased and antialiased
06:12:00 <monqy> woops
06:12:00 <oklopol> white on black is my favorite irc and porn style
06:12:02 <monqy> cries
06:12:09 <elliott> You've pretty much lost all the points monqy.
06:12:12 <elliott> It's been nice knowing you.
06:12:12 <monqy> :(
06:12:22 <monqy> the green is just for the
06:12:23 <monqy> uh
06:12:29 <elliott> "everything"
06:12:31 <monqy> no
06:12:36 <monqy> just for the very bottom and top
06:12:42 <elliott> That's too much green, monqy.
06:12:44 <monqy> where the topic goes and the info bar thing goes
06:12:45 <zzo38> My IRC is many colors on black with monospaced
06:12:55 <monqy> what's so bad about green
06:12:57 <monqy> green is coooool
06:13:12 <oklopol> green can be bright and morningly
06:13:14 <elliott> You're not a hacker monqy. You won't be like in those movies just because you use green to make your IRC client less boring.
06:13:23 <elliott> oklopol: Yes, I'll allow bright and morningly greens.
06:13:26 <elliott> But only for nicks.
06:13:34 <elliott> Other contexts are unworthy of the privilege of that colour.
06:13:39 <monqy> i dont want to be a hacker :( but i don't have other good colors
06:13:48 <monqy> blue is a bit too dim and red is a bit too bright
06:13:49 <monqy> green is
06:13:51 <monqy> ~just right~
06:13:53 <monqy> and also a good color
06:13:58 <elliott> There are more than three colours, monqy.
06:14:00 -!- azaq23 has quit (Remote host closed the connection).
06:14:08 <zzo38> monqy: I think, select the color of your choice; the choice of your color does not make you a hacker or not hacker
06:14:16 -!- cswords_ has joined.
06:14:16 <monqy> thanks zzo38
06:14:19 <monqy> i feel better now
06:14:22 <elliott> STOP PROMOTING EQUALITY
06:14:36 <cswords_> Ah
06:14:49 <zzo38> What equality?
06:14:55 <monqy> i could pick grey but so all the chatter is grey and making the ui grey would be boringggg
06:15:02 <elliott> Equality of green and non-green people!
06:15:05 <monqy> are there other colors
06:15:10 <elliott> monqy: Yes.
06:15:12 <monqy> :o
06:15:16 <cswords_> So
06:15:22 <cswords_> Resetting modem = good internet
06:15:23 <elliott> monqy: Haven't you upgraded to RGBOA yet?
06:15:23 <zzo38> Why should other people care what color you use on your IRC if other people do not use your computer?
06:15:28 <elliott> Red, green, blue, octarine, alpha.
06:15:40 <monqy> :o octarine
06:15:44 <oklopol> some people are way better than others
06:16:00 <monqy> alpha would be bad because my background color is black so it would all just blend in
06:16:17 <kallisti> elliott: pure (==) --promoting equality
06:16:38 <cswords_> Nobody uses any computers.
06:16:40 <elliott> :t pure (==)
06:16:41 <cswords_> That I won
06:16:41 <lambdabot> forall a (f :: * -> *). (Eq a, Applicative f) => f (a -> a -> Bool)
06:16:43 <cswords_> Except me
06:16:46 <elliott> cswords_: What.
06:17:08 -!- cswords has quit (Ping timeout: 268 seconds).
06:17:28 <oklopol> zzo38: would you not care if someone killed the whole population of norway just because you don't know any people worth knowing from there?
06:17:31 <oklopol> OOOOOPS
06:17:31 <cswords_> I don't know.
06:17:32 <cswords_> Never mind.
06:18:36 <zzo38> oklopol: That is different for at least two reasons.
06:18:39 <kallisti> elliott: why did you check the type of that...
06:18:43 <oklopol> tell me
06:18:49 <elliott> kallisti: Magic.
06:18:52 <oklopol> i need to leave soonish
06:19:07 <kallisti> elliott: "magic" is only an acceptable answer to "how" questions.
06:19:43 <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
06:19:44 <cswords_> oklopol, don't go!
06:20:16 <oklopol> i have to go do some programming
06:20:25 <kallisti> oklopol: Norway must stay. Sweden must go.
06:20:33 <oklopol> and before that, visit the uni to leave my friend's projector there
06:20:38 <elliott> oklopol: You still program? Ever?
06:20:44 <oklopol> well kind of
06:21:05 <elliott> `addquote <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
06:21:07 <HackEgo> 766) <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
06:21:14 <oklopol> what we do is that i stare at the screen and my friend programs, and when he has a bug i look at the screen and fix it, and program the few interesting ones
06:21:31 <oklopol> (staring doesn't imply looking)
06:21:40 <oklopol> erm
06:21:52 <oklopol> ones? like the few interesting bugs? i think i meant, like, things.
06:22:05 <zzo38> oklopol: Yes, that is one thing. If you hurt yourself on purpose then probably that is what you wished anyways..... But there is also, many other people might care even if one person does not care (note the qualified "just because you don't know any people worth knowing from there" as well).
06:22:33 <oklopol> well you make a waterproof point
06:22:46 <oklopol> i guess all i can say is LEAVING TIME, WOOOOOO
06:22:49 <oklopol> see you :)))))
06:23:23 <elliott> :')
06:37:04 -!- Slereah_ has quit (Ping timeout: 244 seconds).
06:42:35 -!- augur has changed nick to NOTBROSEFSTALIN.
06:42:42 -!- NOTBROSEFSTALIN has changed nick to augu.
06:42:44 -!- augu has changed nick to augur.
06:59:31 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:30:58 <pikhq> Wow.
07:31:02 <pikhq> Merge sort is older than bubble sort.
07:32:12 <pikhq> Merge sort was done in 1945 by von Neumann, bubble sort in 1956 by some grad student at Stanford.
07:33:07 <kallisti> aw, I was hoping quicksort would be older than bubblesort too
07:35:34 <fizzie> But radix sort is older still: "Radix sort dates back as far as 1887 to the work of Herman Hollerith on tabulating machines."
07:36:02 <kallisti> turns out people like to sort stuff fast!
07:37:19 <fizzie> I wouldn't be surprised if insertion sort also beat bubble-bobble, but couldn't find a reference for that, just that shell sort (as an extension of insertion sort) is from 1959.
07:37:59 <kallisti> modern cutting edge research into sorting algorithms includes: bogosort and quantum bogosort.
07:40:25 <kallisti> best case on bogo sort is even O(n)
07:40:28 <kallisti> !!!
07:42:02 <Sgeo> What was the point of bubble sort?
07:42:13 <Sgeo> Besides educational?
07:42:27 <fizzie> Non-seriously you could argue that the best case for any sort is O(1), happening when the array is already sorted and a random cosmic ray flips the instruction pointer (and related bits of memory, if any) so that the implementation glitches and jumps directly to the "okay, sorted" stage.
07:43:31 <kallisti> O(1) sorting could be possible if you maintained some kind of "sorted" bit. I'm not really sure if you could maintaining its accuracy with constant time though.
07:43:46 <kallisti> weroweroiijwer enghlish
07:44:15 <pikhq> I'm calling that bogo-best case.
07:44:37 <kallisti> but you could certainly turn on the sorted bit after you sort something, and then turn it off when you modify the sequence.
07:45:20 <pikhq> Bogo-best case for sorting is, indeed, O(1).
07:45:33 <kallisti> for appends/pushes/pops you could actually continue to maintain the sorted bit in constant time provided you also knew if it were ascending or descending order.
07:45:42 <kallisti> pikhq: oh I thought it was linear, because it has to shuffle it once.
07:46:11 <kallisti> oh
07:46:13 <kallisti> bogo-best
07:46:15 <pikhq> kallisti: "Bogo-best case" is the case where the list is already sorted and the instruction pointer randomly skips the sorting function.
07:46:17 <kallisti> not bogosort best case :P
07:46:24 <kallisti> gotcha
07:47:11 <fizzie> "Bozo sort is another sorting algorithm based on random numbers. If the list is not in order, it picks two items at random and swaps them, then checks to see if the list is sorted. The running time analysis of Bozo Sort is more difficult, but some estimates are found in H. Gruber's analysis of perversely awful randomized sorting algorithms.[1]"
07:47:15 <fizzie> "[1] Gruber, H.; Holzer, M.; Ruepp, O., "Sorting the slow way: an analysis of perversely awful randomized sorting algorithms", 4th International Conference on Fun with Algorithms, Castiglioncello, Italy, 2007."
07:47:26 <fizzie> Computer scientists having fun? How inappropriate.
07:48:14 <kallisti> a constant-time sort is possible for pointers to C arrays by swapping out the array with an already sorted array.
07:48:45 <kallisti> for example, an empty array!
07:49:34 <fizzie> "To our knowledge, the analysis of perversely awful algorithms can be tracked back at least to the seminal paper on pessimal algorithm design in 1984 [2]. -- Among other solutions, the formerly mentioned work contains a remarkably slow sorting algorithm named slowsort achieving running time Omega(n^(log n/(2+eps))) even in the best case."
07:49:42 <fizzie> These dudes certainly like their slow sorts.
07:51:17 <kallisti> bogosort and bozosort have the maximal worst time at O(infinity)
07:51:24 <kallisti> can't beat that
07:51:49 <olsner> if so, I think they would fail to count as algorithms
07:52:24 <olsner> (because an algorithm must terminate)
07:52:26 <kallisti> though isn't O(infinity) a kind of constant time?
07:52:30 <kallisti> where the constant is infinity?
07:52:41 <kallisti> it doesn't vary with the input.
07:52:42 <pikhq> The odds of them halting are 1.
07:52:49 <fizzie> olsner: Well, it's a probabilistic algorithm, and it will "almost surely" (as they say) terminate, so.
07:52:52 <pikhq> But they're not guaranteed to halt.
07:53:05 <pikhq> :P
07:53:12 <fizzie> With a bad PRNG, it might also in practice never halt.
07:53:16 <olsner> fizzie: so "almost" algorithms then? :)
07:53:47 <fizzie> Though if you say "in practice", I suppose it'll halt at heat death time, if not earlier.
07:53:49 <pikhq> Quantum bogosort is much better.
07:54:16 <pikhq> Yay, O(n).
07:54:38 <kallisti> if you're lucky
07:54:44 <kallisti> your universe only gets a few of those perfect sorts.
07:55:10 <pikhq> But by MWI and quantum immortality, I'm sure to be in the universe that gets perfect sorts!
07:55:13 <pikhq> :P
07:55:25 <kallisti> consider the universes in which a bogosort was needed to run at O(n) in order to save humanity
07:55:35 <kallisti> now consider the ones that failed to do so. tragic.
07:55:42 <pikhq> Tragic indeed.
07:55:53 <kallisti> now consider the ones that succeeded. TRIUMPH.
07:56:09 <pikhq> Should've had broken world destruction mechanisms.
07:56:16 <fizzie> I think it's funny how the "List of dates predicted for apocalyptic events" also lists heath death of the universe, at (a remarkably stetson-harrison looking number of) 10^100 years, claimed by "various scientists". (And the Sun's red-giant stage in about 5 billion years, also claimed by "various scientists".)
07:56:59 <kallisti> fizzie: the only true apocalypse is IPv4 address exhaustion.
07:57:20 <fizzie> Don't say that, someone's going to add IPv4 exhaustion predictions onto that list.
07:57:22 * kallisti needs to get a static IP to Prepare.
07:57:37 <kallisti> but maybe even that won't save me!
07:58:23 <elliott> <kallisti> for appends/pushes/pops you could actually continue to maintain the sorted bit in constant time provided you also knew if it were ascending or descending order.
07:58:36 <elliott> kallisti: the word you are looking for here to explain why this doesn't make everything O(1) is "amortised"
07:59:00 <kallisti> elliott: wow thanks I had no clue what that was.
07:59:09 <pikhq> Clearly. :P
07:59:19 <fizzie> I "have" two IP addresses, but sadly they're just assigned to me by the ISP and not actually allocated to myself, so when the Ipocalypse hits they can just terminate my contract and reclaim them. :(
07:59:33 <elliott> If only Ilari were here.
07:59:37 <elliott> fizzie: Track down Ilari for us.
07:59:40 <elliott> Bring him home.
07:59:50 <fizzie> I don't even know his last name.
08:00:06 <zzo38> ReaderT seem to make a Kleisli compose, for example you make a monoid of (ReaderT x m x) by Kleisli composition
08:00:07 <fizzie> There are quite a few of Ilaries in Finland.
08:00:41 <zzo38> mempty = ReaderT return; mappend (ReaderT x) (ReaderT y) = ReaderT (x >=> y);
08:00:46 <olsner> finland, famous for its ilaries
08:01:02 <zzo38> Because it is also like a Kleisli category
08:01:08 <kallisti> elliott: "amortized" doesn't explain in what way.
08:01:43 -!- monqy has quit (Quit: hello).
08:01:43 <fizzie> olsner: Land of a thousand Ilaries.
08:02:09 <elliott> fizzie: Unfortunately grepping produces naught.
08:02:18 <olsner> hmm, some sense of the IPv4 address exhaustion has already happened though, hasn't it?
08:02:19 <elliott> Wait, Ilari is online now.
08:02:23 <elliott> fizzie: As a Finn you must invite Ilari back.
08:02:24 <elliott> olsner: Yes.
08:02:44 <olsner> it just hasn't yet become apocalyptic
08:02:49 <fizzie> olsner: In fact, land of the 13724 Ilaries, at December 12th, according to the Population Register Centre.
08:02:57 <olsner> fizzie: wow!
08:03:32 <elliott> *Ilarien
08:04:15 <fizzie> Or the 13724 male Ilaries and "less than 15" female ones, even though it's a male name. (It doesn't give exact numbers if there are <=5 people in the particular name/gender/year-of-birth-range bucket.)
08:04:54 <fizzie> Also some of those are dead.
08:05:16 <fizzie> Of surnames it gives different living/dead counts, but of first names no. :/
08:05:25 <olsner> Det finns 206 män som har förnamnet Ilari. Av dessa har 20 namnet Ilari som tilltalsnamn.
08:05:37 <olsner> but no swedes with ilari as their surname, apparently
08:05:37 <kallisti> why do I have 20 cents in my paypal.
08:06:03 <fizzie> There are "less than 5" dead people with the surname "Ilari"; none living.
08:06:23 <olsner> no living dead people?
08:06:52 <fizzie> 10 living, 7 dead, and "less than 5" had-the-name-earlier-but-not-any-more people with my surname. It's an exclusive club.
08:07:22 -!- zzo38 has quit (Remote host closed the connection).
08:09:01 <olsner> oh, 3 people in sweden have olsner as their surname
08:10:19 <elliott> fizzie: INVITE ILARI BACK ;__;
08:10:29 <elliott> hes our bef
08:10:29 <elliott> bff
08:10:31 <elliott> fbfbf
08:10:59 <elliott> hmm, 2011-04-30 was the last day Ilari was in here
08:11:03 <elliott> <oerjan> Ilari: i am _so_ tempted to ban you for ignoring my comments...
08:11:12 <elliott> last non-join/part line mentioning Ilari before he left :P
08:11:25 <olsner> and there are 16 swedes (all men) with the name Django
08:11:34 <fizzie> I don't want to, it would be a SOCIAL INTERACTION THING, I don't do those.
08:11:43 <fizzie> olsner: It takes 16 to Django.
08:11:46 <elliott> fizzie: I KNOW YOU'RE A FINN BUT CAN'T YOU NOT BE A FINN JUST FOR A LITTLE WHILE?
08:13:32 <fizzie> <=20 Djangos in Finland; <=10 male, <= female; <=5 men born in 1980-99, <=5 women born in 1980-99, <=5 men born in 2011, <=5 women born in 2011. So during this year there's been at least one boy and girl both named Django.
08:13:46 <fizzie> Wonder if they're named after the web framework.
08:13:57 <fizzie> Also whether they're in the same family.
08:14:05 * elliott decides to name his future children after web frameworks.
08:14:16 <elliott> ASP.NET MVC is such a good baby name.
08:14:32 <fizzie> "Little Aspy", you can call him/her.
08:14:41 <fizzie> /it.
08:18:59 <cheater> fizzie: what are you using to determine those name-related statistics?
08:19:23 <olsner> the department of name-related statistics, obviously
08:22:26 <fizzie> There's a web-terface to our population registry; it can look up given names (and return a histogram-ish thing of counts per gender/birth-year-range) and surnames (counts per gender/{current name,ex-name,deceased}).
08:22:42 <fizzie> http://verkkopalvelu.vrk.fi/Nimipalvelu/default.asp?L=3
08:25:07 <pikhq> "verkkopalvelu" Oh, Finland, your non-Indoeuropeanness is so strange.
08:27:52 <fizzie> Lit. "network service".
08:28:21 <cheater> The Population Information System does not contain the surname you searched for
08:29:45 <cheater> not a big surprise.
08:30:10 <cheater> does it contain sweden too fizzie?
08:30:23 <cheater> or just finland finland
08:30:40 <olsner> different countries, man
08:31:14 <olsner> the swedish counterpart: http://www.scb.se/Pages/NameSearch____259432.aspx
08:32:08 <olsner> they actually have that in english too, but since swedish is indo-european you should have no problems understanding it
08:33:36 <elliott> fizzie: Does it contain Russia?
08:33:40 <elliott> How about France?
08:35:26 <elliott> Huh, Hitchens died.
08:52:21 <kallisti> elliott: so does infinite time technically count as a sort of constant time or does infinity not work like that.
08:52:51 <elliott> kallisti: "Infinity" is not a real number.
08:52:55 <kallisti> or do algorithms not work like that. since they must always halt.
08:52:57 <kallisti> elliott: I'm aware.
08:53:36 <elliott> Can I just say "no, it doesn't count" or will you ask why?
08:53:44 <kallisti> no that's fine.
08:54:14 <elliott> No, it doesn't count.
08:55:21 <kallisti> but why? it doesn't vary with input.
08:55:28 <kallisti> >:)
08:55:30 <pikhq> It's also a non-number.
08:55:46 <kallisti> is big O constrained to reals?
08:56:06 <elliott> kallisti: I'm not answering the "why", that's why I checked first.
08:56:07 <kallisti> I guess so, yes.
08:56:52 <pikhq> elliott: Well, there's the unexplanative answer.
08:56:57 <pikhq> "It just doesn't work that way".
08:57:02 <pikhq> I'm going with that.
08:57:09 <pikhq> And considering sleep.
08:57:42 <kallisti> I ask because Wikipedia lists bogosorts worst case complexity at O(infinity)
08:57:53 <kallisti> which I'm guess is not an actual thing but just an intuitive idea?
08:58:00 <pikhq> As far as I'm aware.
08:58:33 <elliott> Sure O(\infty) makes sense.
08:58:40 <elliott> See http://en.wikipedia.org/wiki/Big_O_notation.
09:00:52 <kallisti> so O(infinity) is O(g(x)) where g(x) = infinity
09:00:59 <kallisti> LOOKS PRETTY CONSTANT TO ME. :>
09:01:07 <kallisti> constantly infinite.
09:01:40 <pikhq> Note the bit about "reals" there.
09:01:50 <pikhq> \infty is not in R.
09:01:56 <kallisti> yeah I noticed that.
09:02:51 <kallisti> so then the O(infinity) that makes sense to elliott is not the thing that's being described here. Though maybe I'm missing some section about infinity.
09:03:39 <elliott> f(x) = O(\infty) iff there exists a positive real number M and a real number x_0 such that |f(x)\ <= M|\infty| for all x > x_0
09:03:48 <elliott> f(x) = O(\infty) iff there exists a real number x_0 such that |f(x)\ <= |\infty| for all x > x_0
09:03:53 <elliott> f(x) = O(\infty) iff there exists a real number x_0 such that |f(x)| <= \infty for all x > x_0
09:04:04 <elliott> Everything is <= \infty, blah blah blah
09:04:11 <elliott> It's about growth, \infty makes perfect sense there
09:04:19 <elliott> It means unbounded growth
09:04:47 <kallisti> ah okay. O(1) is no growth.
09:04:56 <kallisti> YES, I CAN INTUIT THIS.
09:05:17 <kallisti> but I don't grok the math much. Soon I'll be taken an algorithm analysis class though.
09:05:20 <kallisti> so maybe I'll actually learn something.
09:05:37 <elliott> It is... really not difficult, f(x) here is the number of steps f takes to complete.
09:05:44 <kallisti> no I get all of that.
09:05:47 <elliott> Machine instructions, whatever, it's all constant factors so it ends up equivalent.
09:05:50 <fizzie> Once you go Inuit, you never come out of it. (elliott: that's an isometric quote this time.)
09:06:11 <kallisti> elliott: I understand what the function represents.
09:06:35 <elliott> fizzie: Thanks for letting me know.
09:07:02 <fizzie> I'm trying to find it but I just recall that the name wasn't very related to the contents.
09:07:20 <elliott> http://isometric.sixsided.org/strips/you_dont_go_back
09:07:24 <elliott> Related enough.
09:07:27 <elliott> It's even on the front page.
09:07:30 <fizzie> Oh.
09:07:44 <fizzie> I was being too diffikult. :/
09:07:46 <elliott> This is a good comic.
09:07:47 <kallisti> elliott: oh hmmm, big O notation really isn't saying much at all.
09:07:50 <elliott> So much better than Station V3.
09:07:53 <kallisti> elliott: it basically eliminates constant factors.
09:07:59 <elliott> kallisti: You only just realised?
09:08:01 <kallisti> in the actual definition
09:08:09 <kallisti> elliott: no I knew that just not /how/
09:08:17 <kallisti> I have never actually sat down and studied the definition of big O
09:08:20 <elliott> Saying an algorithm is O(g(n)) is just saying that the number of steps it takes is g(n), modulo constant factors.
09:08:26 <kallisti> just what it means intuitively.
09:08:30 <kallisti> elliott: yes yes I know.
09:08:36 <elliott> Well, now you know twice.
09:08:43 <elliott> So that's the full battle.
09:09:12 <kallisti> elliott: I thought perhaps there was more to it than that.
09:09:22 <elliott> Come on guys, don't G.I. Joe references satisfy you?!?!?!
09:09:26 <elliott> It's FUNNY.
09:09:35 <elliott> fizzie: Tell me you got it.
09:09:43 <shachaf> elliott: I have no idea what G.I. Joe is.
09:09:51 <shachaf> The only thing I've ever seen is references.
09:09:52 <fizzie> Yes, yes, twice a half is the whole enchilada, sure.
09:09:53 <elliott> shachaf: YOU'RE JUST NOT GOOD (BAD) ENOUGH FOR US
09:09:55 <shachaf> In particular, that reference.
09:10:14 <elliott> I have actually watched *several episodes* of the animated series.
09:10:16 <kallisti> elliott: lawyer time: it doesn't /have/ to be "steps"
09:10:33 <kallisti> elliott: it could be oranges, for example. You could have an orange orchard algorithm.
09:10:36 <elliott> kallisti: Yes it does; big-O in algorithms is always referring to the time the function takes.
09:10:46 <shachaf> It does?
09:10:55 <kallisti> elliott: not space?
09:10:55 <elliott> shachaf: Well, in the kind of low-class dreck /kallisti/ will be reading.
09:11:01 <elliott> Or that, yse.
09:11:02 <elliott> yes.
09:11:04 <kallisti> lol
09:11:04 <elliott> But not oranges.
09:11:10 <kallisti> it COULD be though
09:11:16 <kallisti> there is no unit specified.
09:11:18 <shachaf> elliott: It could be "comparisons" or "swaps" or something.
09:11:30 <shachaf> I guess those count as steps.
09:11:33 <kallisti> it could be people. the rate of growth of people ignoring uh, multiplication.
09:11:42 <shachaf> In fact, if you broaden your definition of "step" enough, anything counts as a step.
09:11:48 <elliott> shachaf: That's why I clarified to "time".
09:12:11 <elliott> shachaf: But we can just fix the definition of "step" to something Turing-machiney which has O(1) integer arithmetic, and we'll b done.
09:12:11 <kallisti> in minecraft, n could be boredom.
09:12:12 <elliott> *be
09:12:19 <kallisti> constant factors could include how prone you are to boredom
09:12:26 <kallisti> but the rate of growth is always factorial for everyone.
09:12:27 <kallisti> :>
09:12:38 <shachaf> O(1) integer arithmetic?
09:13:19 <elliott> shachaf: People tend to assume that when calculating big-Os. At least in my experience.
09:13:36 <kallisti> people who actually play minecraft just have an enormously tiny constant factor, so they haven't realized they're bored yet.
09:15:14 * kallisti sound maths.
09:15:32 <shachaf> elliott: By the way, huge pages didn't magically make my thing faster. :-(
09:15:43 <elliott> shachaf: That's because it's NoSQL. Try adding some SQL and it'll be fast.
09:15:57 <shachaf> Who said anything about NoSQL?
09:16:13 <elliott> Memcache is, like, NoSQL, so you're NoSQL too, so EVERYTHING YOU TOUCH IS NOSQL.
09:16:21 <shachaf> I suppose this program doesn't have any SQL support.
09:16:39 <shachaf> Quite a lot of things are NoSQL, come to think of it.
09:16:46 <kallisti> NoSql could easily be a rip-off band copying NOFX
09:16:48 <elliott> My toothbrush is NoSQL.
09:16:53 <elliott> That's why us Brits have such bad dental hygiene.
09:17:22 * elliott is kidding; he doesn't actually have teeth.
09:17:54 <kallisti> I thought it was because you ate limes all day.
09:18:03 <kallisti> limes and tea.
09:18:19 <kallisti> 90% of the britons diet.
09:18:21 <elliott> kallisti: That was the predominant hypothesis before Newton invented science and discovered that what we needed was a good dose of SQL.
09:18:31 <kallisti> lolwat
09:20:00 <fizzie> elliott: Men, remember that it was my citrus laser which protected you from the space scurvy! (I've got that comic in my brain now, thanks to earlier.)
09:20:00 <kallisti> my plan for future success: invent time machine; travel to 90s; invest in promising startups; exploit stupid things like poor input sanitization and javascript validation
09:22:03 <kallisti> other plans: take versions of present day open source software and sell it to somebody for last sums of money (would that even work???)
09:22:11 <kallisti> s/last/vast/
09:23:06 <fizzie> You could sell the completed Hurd to Stallman in the 80s.
09:23:19 <kallisti> fizzie: no such thing
09:23:53 <kallisti> (haha hurd humor)
09:29:13 <fizzie> candide's ",english", the most useful bot-command ever: http://codepad.org/EaZo3jrm
09:29:18 <fizzie> It translates C code to English.
09:36:30 <shachaf> fizzie: What is that function?
09:36:59 <elliott> Hey shachaf, take a look at this (probably) GHC bug: http://stackoverflow.com/questions/8531997/adding-ghcis-inferred-type-signature-causes-an-error
09:37:00 <fizzie> It's a brainfuck interp; I just picked something short.
09:37:04 <Sgeo> The last line is a punchline
09:37:10 <elliott> I HEAR YOU'RE A CONNOISSEUR OF THEM.
09:37:38 <elliott> fizzie: Hey, it turns DeCSS into something legally redistributable...
09:41:27 <shachaf> elliott: Not as good as the one where it deletes your source code.
09:42:13 <Sgeo> o.O
09:43:17 <shachaf> <CTCP>ACTION �n����������n�p�@�?����U`>�1�R`>A�.���r��r��r��r��r��r��r��r�p��0s���������@s��t� �?����U`>W1�R`>A�.��Sw�Sw�Sw�Sw�Sw�Sw�Sw�Tw��t���w����������w�y��?����U`>ǰ�R`>A�.���{��{��{��{��{��{��{��{�y��0|���������@|
09:43:23 <elliott> shachaf: Hi.
09:44:11 <elliott> Sgeo: "ghc had a bug once where it deleted the source file if it had a type error. Quite sensible, I think." --augustss
09:44:14 <shachaf> I hope that random memory I just pasted didn't have anything confidential in it.
09:44:21 <elliott> Or the HIPSTER 2011 TWITTER VERSION, http://twitter.com/#!/bos31337/status/116372971509121025.
09:44:27 <elliott> shachaf: You forgot the terminating one-byte.
09:44:48 <elliott> Hey, snow.
09:45:20 <Sgeo> Unicode snow?
09:45:23 <elliott> Yes.
09:45:26 <elliott> IRL.
09:45:28 <elliott> IRL Unicode snow.
09:45:41 <shachaf> elliott: Note that the [] is apparently superfluous.
09:46:05 <shachaf> elliott: I.e., f' :: a -> F a b; f' a = f a has the same problem.
09:46:34 <elliott> shachaf: Yikes.
09:46:57 <elliott> shachaf: Can I quote you on that?
09:47:42 <shachaf> I suppose.
09:47:50 <elliott> Don't worry, I won't bother attributing it.
09:47:55 <elliott> :p
09:49:03 <shachaf> "I am never forget the day I first meet the great elliott. In one word he told me secret of success in mathematics."
09:49:28 <elliott> PRECISELY.
09:49:33 <elliott> There's REPUTATION at stake here!!!!
09:49:41 <elliott> I put it in quote marks though, so everyone knows I don't really "believe" it.
09:50:26 -!- elliott has quit (Remote host closed the connection).
09:51:44 <shachaf> Aw, elliott's gone. I was about to tell him I simplified it even further.
09:53:04 <shachaf> @tell elliott type family F a; f :: x -> F a; f = undefined; f' a = f a
09:53:04 <lambdabot> Consider it noted.
10:02:04 -!- elliott has joined.
10:02:09 <elliott> I'm back now.
10:02:09 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
10:02:12 <elliott> @messages
10:02:12 <lambdabot> shachaf said 9m 8s ago: type family F a; f :: x -> F a; f = undefined; f' a = f a
10:02:17 <elliott> And HUNGRY FOR REPUTATION.
10:02:49 <elliott> shachaf: Also, surely you need a type signature on that f' for it to fail.
10:03:02 <shachaf> elliott: I know.
10:04:09 <elliott> shachaf: Nice tip. I'll do you one better still: type family F a; x, y :: F a; x = undefined; y = x. – Daniel Wagner 1 min ago
10:04:21 <elliott> I HAVE TO REPUTE FAST AND SHACHAF TOO SLOW
10:04:51 <shachaf> elliott: While you were gone I gave my improvement to dmwit in #haskell.
10:04:58 <shachaf> So really everything here is a derivative work of me.
10:05:07 <elliott> TRAITOR!!!!
10:05:34 <elliott> shachaf: (At this point I realise that that guy is dmwit.)
10:05:43 * elliott is a clever, clever person.
10:05:54 <shachaf> elliott: It's OK, he realized that you were ehird a little while before.
10:06:17 <elliott> I think he realised I'm ehird pretty quickly, seeing as it's right there below my answer.
10:06:40 <shachaf> elliott: When I mentioned "elliott" in IRC, I mean.
10:06:57 <elliott> shachaf: I think what we can learn from this is to never rely on you for plagiarisation.
10:07:29 <elliott> @tell shachaf he's a bad person.
10:07:30 <lambdabot> Consider it noted.
10:07:36 -!- elliott has quit (Quit: DRAMATIC EXIT).
10:07:50 <shachaf> @messages
10:07:50 <lambdabot> elliott said 21s ago: he's a bad person.
10:25:28 -!- Jafet has joined.
10:49:58 -!- elliott has joined.
10:55:00 -!- MSleep has joined.
11:26:39 -!- cheater has quit (Ping timeout: 248 seconds).
11:27:59 -!- cheater has joined.
11:32:42 -!- cheater has quit (Excess Flood).
11:33:55 -!- cheater has joined.
11:36:31 -!- cheater has quit (Excess Flood).
11:36:58 -!- cheater has joined.
11:40:06 -!- Phantom_Hoover has joined.
11:40:41 <Phantom_Hoover> What,, are,,, the hap
11:40:41 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:42:26 -!- cheater has quit (Ping timeout: 244 seconds).
11:43:05 -!- cheater has joined.
11:45:00 -!- cheater has quit (Excess Flood).
11:46:11 -!- cheater has joined.
11:50:39 -!- cheater has quit (Ping timeout: 248 seconds).
11:56:22 -!- cheater has joined.
11:59:43 -!- cheater has quit (Excess Flood).
12:01:01 -!- cheater has joined.
12:04:35 -!- cheater has quit (Excess Flood).
12:31:24 <Phantom_Hoover> Hmm, Christopher Hitchens is dead.
12:31:40 <Phantom_Hoover> Was he the terrible Hitchens or the— wait both Hitchenses were terrible.
12:39:12 -!- GreaseMonkey has quit (Quit: The Other Game).
12:39:44 -!- Ngevd has joined.
12:40:15 <Ngevd> Hello!
12:44:16 <elliott> GOODBYE
12:44:17 <elliott> hi
12:58:45 <Ngevd> Well, I've started my first BytePusher project
13:01:53 <elliott> I saw.
13:02:06 <Ngevd> It will take a while
13:02:10 <Ngevd> BUT IT WILL BE EPIC
13:02:47 <Ngevd> Also, it is snowing.
13:03:06 <Ngevd> I don't know if you know this, but it is true
13:03:48 <elliott> No, I live in Finland.
13:03:51 <elliott> It never snows here.
13:04:56 <Phantom_Hoover> It's not snowing here :(
13:06:49 <Ngevd> Serves you right for not going to Edinburgh from York via Carlisle, Dumfries, and Glasgow
13:09:38 <Phantom_Hoover> I'm so sorry.
13:09:51 <Ngevd> Hang on.
13:10:00 <Ngevd> We need ais523 to tell us if that would be legal
13:10:22 <elliott> Ngevd: You could read the book yourself!
13:10:31 <Ngevd> I REFUSE
13:11:04 <elliott> "Enthusiasts using the routeing guide to identify good value travel often use the two together." BUT WHY
13:14:24 <Phantom_Hoover> http://blackboardsinporn.blogspot.com/
13:14:35 <Phantom_Hoover> a) why is this a thing; b) why is this such an amazing thing
13:15:03 <elliott> I've seen that site before! I am hipstererer than thou.
13:15:11 <elliott> (I spend my days googling for blackboards in porn.)
13:16:40 -!- derdon has joined.
13:17:35 <elliott> "Unfortunately, despite this good academic work, Dr Lagina is entirely unsuited to a career in education due to his surname. It would be no use trying to insist on a different pronunciation such as La-GHEE-na as students of any age will still make cruel remarks – it is little wonder that his detention list is so long. It is a shame that no careers officer ever tried to dissuade him from his current employment path, though he is still young enoug
13:17:35 <elliott> h to change his vocation. It is either that or change his name: even a teacher should be able to afford the £33 fee for a Deed Poll, though perhaps he has already changed it from something even more embarrassing, like Dr Lesticle, Dr Lyphilis or Nick Clegg."
13:17:36 <elliott> :D
13:20:30 * Phantom_Hoover wonders if there's a pro-SOPA subreddit.
13:21:44 <elliott> Phantom_Hoover: Does your contrarianism have no bounds??????????????//////////1111
13:22:15 <elliott> http://www.reddit.com/reddits/search?q=sopa ;; Well, there's /r/SOPACIRCLEJERK.
13:33:59 -!- sebbu2 has joined.
13:34:00 -!- sebbu2 has quit (Changing host).
13:34:00 -!- sebbu2 has joined.
13:35:59 -!- sebbu has quit (Ping timeout: 255 seconds).
13:42:17 -!- ais523 has joined.
13:42:29 -!- Betawolf33 has quit (Quit: Quick, say something cutting!).
13:42:43 -!- Vorpal has joined.
13:42:53 -!- Betawolf has joined.
13:43:00 -!- Betawolf has left.
13:50:18 <Vorpal> hi
13:50:39 <Ngevd> Hello!
13:52:42 -!- derdon has quit (Remote host closed the connection).
14:12:16 -!- Ngevd has quit (Ping timeout: 244 seconds).
14:13:50 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:14:01 -!- elliott has quit (Ping timeout: 240 seconds).
14:28:37 -!- pikhq has quit (Ping timeout: 245 seconds).
14:28:43 -!- pikhq has joined.
14:35:44 -!- cheater has joined.
14:38:06 -!- kmc has joined.
14:41:21 -!- cheater has quit (Ping timeout: 252 seconds).
14:45:40 -!- cheater has joined.
14:46:28 -!- cheater has quit (Excess Flood).
14:47:47 -!- Slereah_ has joined.
14:51:40 -!- cheater has joined.
14:51:40 -!- cheater has quit (Excess Flood).
14:52:11 -!- cheater has joined.
14:54:05 -!- cheater has quit (Excess Flood).
14:56:15 -!- cheater has joined.
14:56:23 -!- cheater has quit (Excess Flood).
15:01:16 -!- Ngevd has joined.
15:06:30 <ais523> now we need to invent an esolang called Single Fifo
15:06:54 <ais523> it's the most ontopic name a spambot's come up with yet, even if it's not as /funny/ as My name Is Johny, what the F**K???
15:14:17 -!- cheater has joined.
15:16:23 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:19:22 -!- cheater has quit (Ping timeout: 240 seconds).
15:19:22 -!- sebbu2 has changed nick to sebbu.
15:40:02 -!- copumpkin has joined.
15:44:39 -!- kmc has quit (Quit: Leaving).
15:49:02 -!- sebbu has quit (Read error: Connection reset by peer).
15:49:07 -!- kmc has joined.
15:49:27 -!- sebbu has joined.
15:49:27 -!- sebbu has quit (Changing host).
15:49:27 -!- sebbu has joined.
16:19:28 -!- Taneb has joined.
16:20:21 -!- Ngevd has quit (Ping timeout: 240 seconds).
16:20:52 <ais523> hmm, I just walked out of the office Christmas party, because I didn't understand it
16:21:03 <Phantom_Hoover> Oh god.
16:21:04 <Phantom_Hoover> Why.
16:21:16 <ais523> I, umm, just don't get it
16:21:33 <ais523> it's like everyone's just turning up and acknowledging that it's a Christmas party
16:21:37 <ais523> aren't those things meant to have some purpose?
16:23:14 <Taneb> Naw
16:24:31 <ais523> so why do they happen at all?
16:24:44 <ais523> it just seems like a huge waste of time and organisation effort for everyone involved
16:24:54 <Taneb> Pretty much
16:25:32 <ais523> that doens't explain why they hapen
16:25:33 <ais523> *happen
16:26:39 -!- KingOfKarlsruhe has joined.
16:36:29 -!- Taneb has quit (Ping timeout: 248 seconds).
16:44:25 -!- Ngevd has joined.
16:57:07 -!- MSleep has changed nick to MDude.
16:58:10 -!- Ngevd has quit (Ping timeout: 240 seconds).
16:59:49 -!- Ngevd has joined.
17:07:47 -!- derdon has joined.
17:07:49 <Gregor> ais523: EGGNOG BODY SHOTS WOOOOO
17:07:49 <Ngevd> Cobalt comes out sometime today!
17:08:14 <ais523> Gregor: I don't think it's that sort of Christmas party
17:08:29 <Gregor> ais523: Then MAKE IT that sort of Christmas party!
17:16:17 <fizzie> We just had a free lunch.
17:16:32 <fizzie> Can't say I minded that part.
17:17:07 <fizzie> Though that was for the whole "school" (~1500 employees); the departmental party was more partyish. (I.e. a free dinner instead.)
17:19:33 <fizzie> I've always assumed their main purpose is to be some sort of a collective present from the company/department/organization/whatever to the people, in that they're being given free consumables + someone pays the rent for a place where they can socialize; wasn't aware of any sort of hidden deeper purpose there.
17:20:22 <ais523> fizzie: there doesn't even seem to be socializing, though
17:20:25 <ais523> just… noting that people are there
17:21:46 <fizzie> Well, our department party had socializing. Yesterday's lunch not so much, but maybe it was the 600-or-so people who were mostly unfamiliar. On the other hand, it *was* in just the lobby of the building next door, so that one I interpreted as a free lunch coupon from the school.
17:23:45 <fizzie> (I may have a slightly phdcomics-y "free food" focus on events.)
17:23:47 <Gregor> "Yeah, we had a Christmas party. It was on the third floor of a building nearby, in some Real Estate company's office. I didn't recognize anybody there, but the food was good!"
17:24:31 <fizzie> Sadly, it wasn't especially good.
17:24:51 <fizzie> Except for the quality/price ratio, which is easy to get up by providing non-negative-quality food with zero cost.
17:25:45 <Gregor> If the quality was /precisely/ zero though then they ratio would be /NULLITY/
17:26:54 <fizzie> Sadly our food scientists are unable to obtain absolute zero (aka "the ultimate meh") in food quality yet.
17:29:03 <Phantom_Hoover> <ais523> fizzie: there doesn't even seem to be socializing, though
17:29:12 <Phantom_Hoover> So noöne is talking to anyone else.
17:30:08 <ais523> they're just leaving one at a time after realising they have no reason to be there
17:30:56 <Phantom_Hoover> The aisiest party ever.
17:31:34 <ais523> nah, a party entirely full of me and duplicates of me would go fine
17:31:41 <ais523> assuming there were actually multiple people there
17:31:49 <ais523> it wouldn't work too much like normal parties, though
17:52:47 <Sgeo> Is jedit usually considered decent?
17:56:15 <ais523> gah, there are a large number of people in the atrium wielding umbrellas
17:56:28 <ais523> I think it's connected to the Christmas party somehow, but don't want to delve too deeply into it
17:56:41 <ais523> Sgeo: it's entirely usable
18:17:50 -!- Ngevd has quit (Ping timeout: 240 seconds).
18:27:59 -!- Ngevd has joined.
18:54:27 <Ngevd> @pl \x -> length (filter (\y -> length y == 3) (nub (concat (concat (map subsequences (permutations x)))))) > 0
18:54:27 <lambdabot> (> 0) . length . filter ((3 ==) . length) . nub . join . join . map subsequences . permutations
18:58:04 <Sgeo> Hmm
18:58:15 <Sgeo> pl looks easier to read, I think
18:58:27 <Ngevd> Neither of them are what I wanted...
18:58:45 <Sgeo> Although I did trip up on the ((3 ==) . length) at first
19:00:02 <Ngevd> Some variation of map subsequences (permutations x) should be in the final
19:00:11 <Ngevd> But beyond that I just confused myself
19:04:30 <Ngevd> @pl \x -> any (15==) $ map sum $ filter ((3 ==) . length) $ nub $ concat $ map subsequences (permutations x)
19:04:30 <lambdabot> any (15 ==) . map sum . filter ((3 ==) . length) . nub . join . map subsequences . permutations
19:04:34 <Sgeo> Uh
19:04:45 <Sgeo> You ... did get a variation of map subsequences (permutations x)
19:05:01 <Ngevd> So that is what I wanted
19:05:13 <Sgeo> I have no idea what you want, but it's possible.
19:05:37 <Ngevd> Somehow, it's for my stupidly complicated naughts and crosses game
19:05:46 <Sgeo> (> 0) . length . filter ((3 ==) . length) . nub . join . join . map subsequences . permutations is the same as
19:06:19 <Sgeo> \x -> (> 0) . length . filter ((3 ==) . length) . nub . join . join $ map subsequences $ permutations x
19:06:40 <Sgeo> I think
19:09:59 <kallisti> ,,,,
19:11:24 <kallisti> you think?
19:14:05 <kallisti> that's a 4D list.
19:14:13 <kallisti> what is it for?
19:14:38 <Ngevd> Who are you asking?
19:14:44 <kallisti> relevant persons.
19:15:12 <Ngevd> The bit of code happens to be for seeing whether a game of naughts and crosses has been won
19:15:20 <kallisti> ah
19:15:58 <kallisti> so the input is two-dimensional?
19:16:08 <kallisti> :t permutations
19:16:09 <lambdabot> forall a. [a] -> [[a]]
19:16:11 <kallisti> :t map subsequences
19:16:12 <lambdabot> forall a. [[a]] -> [[[a]]]
19:16:16 <kallisti> oh no
19:16:19 <kallisti> one dimensional.
19:16:21 <kallisti> okay.
19:16:49 <kallisti> or...
19:16:53 <kallisti> SO MANY DIMENSIONS AAAAH
19:17:50 <kallisti> I'm going to guess 2D because that would make sense. :P
19:18:02 <Ngevd> The type signature is Num a => [a] -> Bool, I thin
19:18:03 <Ngevd> k
19:18:22 <kallisti> yes that's correct.
19:18:41 <kallisti> that's simply because it can work on lists of arbitrary dimension.
19:18:53 <kallisti> but it may not be relevant to what you're trying to solve.
19:20:04 <kallisti> Tic-tac-toe, also called wick wack woe (in some Asian countries) and noughts and crosses (in the UK, Australia, New Zealand, South Africa, India and the rest of the British Commonwealth countries)
19:20:09 <kallisti> I like how US-centric Wikipedia can be.
19:22:39 <Ngevd> http://en.wikipedia.org/wiki/Wikipedia:LAME#Spelling
19:27:53 <Gregor> Who was it that was asking me about "classical" composers?
19:28:01 <Gregor> But is also never on while I'm awake.
19:30:54 <kallisti> Chopin is the only clsaasical ocmpostr
19:31:14 <Gregor> ... wow.
19:31:22 <Ngevd> I was Chopin for more from you, kallisti
19:31:24 <Gregor> That statement is so bizarre on so many levels.
19:31:34 <Gregor> Ngevd: THAT IS NOT HOW CHOPIN IS PRONOUNCED.
19:32:13 <kallisti> I pronounce it "showpan"
19:32:27 <kallisti> roughly
19:32:56 <Ngevd> Showpa(french sound)
19:33:19 <Gregor> And hence, not "hopin'" with a 'c' X_X
19:33:35 <kallisti> Gregor OFFENDED
19:34:07 <kallisti> Gregor: exactly how many levels is my statement bizzare on?
19:34:15 <kallisti> three?
19:34:20 <Ngevd> I've got a whole Bach of these
19:34:40 <kallisti> ......
19:35:15 <Gregor> kallisti: 1) Not a classical composer, 2) not a pre-20th-century composer people usually think of in the top five, making "only" bizarre, 3) "clsaasical", 4) "ocmpostr"
19:35:34 <kallisti> Gregor: I grouped the misspellings into one level.
19:36:11 <Ngevd> I like Chopin
19:36:18 <kallisti> but doesn't the Romantic period count as a period of classical music?
19:36:30 <Gregor> kallisti: No, the classical period counts as a period of classical music.
19:36:30 <Ngevd> Classical and Romantic are distinct
19:36:46 <kallisti> hmmm, okay.
19:37:31 <kallisti> I think someone else would disagree though.
19:37:41 <Gregor> And they would be wrong 8-D
19:37:48 <kallisti> someone who knew what they were talking about even. As the "classical period" is not the only source of "classical music"
19:37:48 <Ngevd> Not all Classical music is classical music
19:38:23 <Gregor> When people group Mozart and Borodin into the same style of music, I respond "well, blues and indy-grunge are basically the same, so I call them both 'modern music'"
19:38:38 <kallisti> yes, that's accurate.
19:38:42 <kallisti> THE VENN DIAGRAM OF MUSIC.
19:39:09 <Ngevd> http://www.amazon.co.uk/Venn-That-Tune-Bringing-Poetry/dp/0340955678/ref=sr_1_1?ie=UTF8&qid=1324064329&sr=8-1
19:39:41 <kallisti> I think you could probably make a distinction between Western classical music and classica era music, with "classical music" meaning either the more general or the more specific depending on the context.
19:40:04 <kallisti> +l
19:40:57 <kallisti> if you're in a class about musical history, "classical music" would probably not be how you would describe Romantic period music.
19:41:33 <Gregor> The problem is that part of the reason why people are so quick to dismiss all music more than a hundred years old is that everybody else is so quick to categorize it as one huge group.
19:41:46 <kallisti> Gregor: lame.
19:41:52 <Gregor> As if Rigoletto and Bach's Air on G are one in the same.
19:42:09 <kallisti> everyone knows Bariouqe is teh only clsaasical
19:42:14 <Gregor> X-D
19:43:05 <kallisti> incidentally, I've taken a liking to a lot of "very very new" "classical" music.
19:43:37 <kallisti> I think they call it like "alt classical" or something?
19:43:41 <kallisti> something silly like that.
19:44:22 <Gregor> I've heard the terms "neo-classical" and "modern classical" (which are both weird)
19:45:32 <kallisti> I think this is even newier
19:45:41 <Gregor> How 'bout modern classical-influence neo-jazz fusion (lol I'm putting so many nonsense words here)
19:45:52 <kallisti> neo-jazz fusion? definitely not.
19:45:59 <Gregor> http://erictheallen.com/music/Contrafunktus.mp3
19:46:14 <kallisti> I think you're just genre pretentious. GOSH I fucking hate those people.
19:46:32 <kallisti> (see: electronic music genre pretentious earlier)
19:46:36 <Gregor> I'm mostly just inventing words here :P
19:47:08 <kallisti> Gregor: well no, that's not where the pretentiousness arises. It's the insistence that "classical" refers to a specific historical period in absolutely all contexts
19:47:12 <kallisti> so "modern classical" is impossible.
19:47:18 <kallisti> or something.
19:48:11 <kallisti> in much the same way that I think people use "techno" when they really mean "electronic music"
19:48:34 <kallisti> the difference being that I'm totally right. :P
19:49:55 <Gregor> I see you have no comment on my link though :P
19:50:55 <Ngevd> There's gotta be an easier way to do what I'm trying to do
19:50:56 <kallisti> oh I was too busy being right, I stopped paying attention to everyone else.
19:50:58 * kallisti clicks.
19:51:50 <kallisti> Ngevd: what kind of possible inputs do you have for your problem?
19:52:14 <Ngevd> Subsets of [1..9]
19:52:17 <kallisti> Gregor: noice
19:52:23 <Ngevd> But not that problem
19:52:33 <Ngevd> It's making that thing useful
19:52:39 <kallisti> Ngevd: so this is a theoretical problem and not part of something more practical?
19:52:46 <kallisti> oh
19:52:49 <kallisti> okay.
19:52:57 <Ngevd> Wait, OF COURSE
19:53:00 <Gregor> kallisti: That's a friend of mine whose current career is "trying desperately to be noticed in New York" :P
19:53:04 <Ngevd> Of course?
19:53:05 <Ngevd> YES
19:53:10 <kallisti> Gregor: sounds difficult.
19:53:10 <Phantom_Hoover> It's surprising just how unmoonlike the far side of the moon looks.
19:53:18 <Ngevd> I just need some sort of version of Either that has three things
19:53:31 <Ngevd> :D
19:53:33 <kallisti> Either a (Either b c) :P
19:53:44 <Ngevd> kallisti, perfect.
19:53:53 <kallisti> or you know, like, an ADT.
19:54:09 <Ngevd> Actually, even better, Maybe (Either Piece Piece)
19:54:10 <kallisti> I've read those are useful.
19:54:15 * Phantom_Hoover didn't remember if disjoint union was associative for a second there.
19:54:28 <Ngevd> Or Maybe (Either Int Int)
19:56:10 <kallisti> Gregor: "eric the allen"?
19:56:45 <Ngevd> Oh, hey, Cobalt is out
19:56:50 <Gregor> kallisti: Eric [of] the [house of] Allen :P
19:57:17 -!- zzo38 has joined.
19:57:17 <Gregor> kallisti: Which of course is ultimately just his name, with "the" in the middle because all other combinations of domain names were taken.
19:57:24 <kallisti> okay..
19:57:45 <Gregor> kallisti: It has more relevance to his name than codu.org has to mine :P
19:57:50 <kallisti> Ngevd: are you making a tic tac toe AI?
19:58:02 <Ngevd> kallisti, that would be easier
19:58:20 <kallisti> Gregor: codu is pretty catchy though it could easily be a business name
19:58:30 <Ngevd> kallisti, I'm just making a game
19:58:41 <kallisti> Ngevd: a game of tic tac toe?
19:58:49 <kallisti> Gregor: though I pronounce it as "code you"
19:58:55 <Ngevd> kallisti, NO
19:59:12 <Ngevd> Naughts and Crosses, for I is a citizen of two different commonwealth countries
19:59:28 <kallisti> uh..
19:59:33 <kallisti> chances are you don't need subsets of anything.
19:59:36 <kallisti> to code that. I would think.
20:00:24 <Ngevd> Yeah, but I'm crazyu
20:00:46 <Ngevd> @pl \xs -> lefts (filter isJust xs)
20:00:46 <lambdabot> lefts . filter isJust
20:00:52 <Ngevd> and don't really understand (.)
20:00:56 <kallisti> lol
20:01:04 <kallisti> think of it as like...
20:01:05 <Gregor> <kallisti> Gregor: though I pronounce it as "code you" // heh, I just pronounce it co-du, though code-you is better :P
20:01:08 <kallisti> function composition. :p
20:01:18 <kallisti> Gregor: less accurate though.
20:01:24 <kallisti> co-du makes way more sense.
20:01:29 <kallisti> given the spelling.
20:01:51 <Ngevd> I pronounce it Code ooh
20:01:59 <Gregor> Code! Oooooooh
20:02:02 <kallisti> lol
20:02:10 <Ngevd> @pl \xs -> has_won (lefts (filter isJust xs))
20:02:11 <lambdabot> has_won . lefts . filter isJust
20:02:20 <kallisti> Ngevd: ....really?
20:02:23 <Ngevd> Yup
20:02:52 <kallisti> Ngevd: imagine you have like.... functions
20:02:58 <kallisti> now you want the output of one to be the input of another.
20:03:12 <kallisti> and you want the result of this combination to be A NEW FUNCTION
20:03:16 <kallisti> bam! function composition!
20:03:19 <kallisti> +_+
20:03:35 <Ngevd> Hold on, Scrabble time
20:04:31 <kallisti> :t isLeft
20:04:32 <lambdabot> Not in scope: `isLeft'
20:04:40 <kallisti> @hoogle Either a b -> Bool
20:04:40 <lambdabot> Data.Graph.Inductive.Basic hasLoop :: Graph gr => gr a b -> Bool
20:04:40 <lambdabot> Data.Graph.Inductive.Query.DFS isConnected :: Graph gr => gr a b -> Bool
20:04:40 <lambdabot> Data.Graph.Inductive.Graph isEmpty :: Graph gr => gr a b -> Bool
20:04:41 <Sgeo> f x = a $ b $ c $ d x is the same as f x = a . b . c $ d x is the same as f = a . b . c . d if that helps
20:05:12 <Sgeo> Having elliott yell at me for using the first one helped me learn that >.>
20:05:13 <kallisti> :t lefts
20:05:13 <lambdabot> forall a b. [Either a b] -> [a]
20:05:38 <kallisti> Sgeo: either usage is fine, honestly. obviously you want to use function composition when writing pointfree though
20:05:54 <Phantom_Hoover> @source (.)
20:05:54 <lambdabot> (.) not available
20:06:07 <kallisti> @source Prelude..
20:06:07 <lambdabot> Prelude.. not available
20:06:13 <kallisti> oh, hm.
20:07:41 -!- Ngevd has quit (Ping timeout: 240 seconds).
20:07:46 -!- monqy has joined.
20:08:01 <kallisti> monqy: hi
20:08:09 <monqy> hi
20:08:28 <zzo38> I think it can make for other m (Either a b) -> m a (>>= either return (const mzero))
20:09:02 <Sgeo> @source .
20:09:03 <lambdabot> . not available
20:09:11 <Sgeo> @source (Prelude..)
20:09:11 <lambdabot> (Prelude..) not available
20:09:30 <Sgeo> :t f Prelude.. x
20:09:31 <lambdabot> Couldn't match expected type `a -> b' against inferred type `Expr'
20:09:31 <lambdabot> In the second argument of `(GHC.Base..)', namely `x'
20:09:31 <lambdabot> In the expression: f GHC.Base.. x
20:09:34 <Sgeo> :t f Prelude.. g
20:09:35 <kallisti> @tell Ngebd COME BACK I HAVE SOMETHING IMPORTANT TO SAY.
20:09:35 <lambdabot> Consider it noted.
20:09:35 <lambdabot> Ambiguous type variable `b' in the constraints:
20:09:35 <lambdabot> `Show b' arising from a use of `f' at <interactive>:1:0
20:09:35 <lambdabot> `SimpleReflect.FromExpr b'
20:09:42 <Sgeo> :t f . g
20:09:43 <lambdabot> forall a b (f :: * -> *). (Show a, SimpleReflect.FromExpr b, SimpleReflect.FromExpr (f a), Functor f) => f b
20:09:47 <Sgeo> Hmm, that's weird
20:09:57 <kallisti> Sgeo: . is fmap in lambdabot
20:10:07 <Sgeo> Oh
20:10:21 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:10:22 <kallisti> > f . [1..]
20:10:23 <lambdabot> Ambiguous type variable `b' in the constraints:
20:10:23 <lambdabot> `SimpleReflect.FromExpr ...
20:10:30 <kallisti> > f . [1..] :: [Expr]
20:10:32 <lambdabot> [f 1,f 2,f 3,f 4,f 5,f 6,f 7,f 8,f 9,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 1...
20:10:34 <zzo38> @unpl (.)
20:10:35 <lambdabot> (\ a b c -> a (b c))
20:11:22 <kallisti> Sgeo: though really I think it should be (.) from Category
20:12:09 <kallisti> we already have <$> for fmap and it looks quite nice.
20:12:47 <Sgeo> @tell Ngevd <Sgeo> f x = a $ b $ c $ d x is the same as f x = a . b . c $ d x is the same as f = a . b . c . d if that helps <Sgeo> Having elliott yell at me for using the first one helped me learn that >.>
20:12:47 <lambdabot> Consider it noted.
20:13:53 <zzo38> Yes <$> for fmap is better. Since you can use . for category morphism composition
20:14:18 <kallisti> also <$> has the $ which implies function application, which is how fmap is typically uses.
20:15:14 <kallisti> @tell Ngevd also lefts (filter isJust xs) isn't going to work because xs is still a list of Maybes after filtering.
20:15:14 <lambdabot> Consider it noted.
20:16:04 <kallisti> @hoogle [Maybe a] -> a
20:16:05 <lambdabot> Data.Maybe catMaybes :: [Maybe a] -> [a]
20:16:05 <lambdabot> Data.Maybe fromJust :: Maybe a -> a
20:16:05 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
20:16:15 <Sgeo> @tell Ngevd Is the same as f x = a . b . c . d $ x
20:16:15 <lambdabot> Consider it noted.
20:16:16 <kallisti> oh hmmm I thought catMaybes would return a
20:16:31 <kallisti> @tell Ngevd use catMaybes :: [Maybe a] -> [a] instead
20:16:32 <lambdabot> Consider it noted.
20:16:38 <kallisti> @teel Ngevd AAAAAAAH SO MANY MESSAGES
20:16:38 <lambdabot> Consider it noted.
20:16:57 <Sgeo> And then lambdabot crashes.
20:17:08 -!- Phantom_Hoover has joined.
20:17:18 <Sgeo> @lastspoke Phantom_Hoover
20:17:18 <lambdabot> Unknown command, try @list
20:17:43 -!- derrik has joined.
20:21:22 <zzo38> Should it be fixed to work with other monads too? Such as, instead of only list monad it can work other MonadPlus as well.
20:22:09 <kallisti> zzo38: that would make it much more inefficient for the list case I believe.
20:22:57 <kallisti> zzo38: also what are you using MonadPlus for?
20:23:21 <kallisti> you'd want Functor I think.
20:23:32 <kallisti> or...
20:23:35 <zzo38> kallisti: MonadPlus in case you need to use mzero, and you also need join
20:23:38 <kallisti> Functor and MonadPlus?
20:24:26 <kallisti> :t join
20:24:27 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
20:24:34 <kallisti> zzo38: what do you need join for
20:24:39 <zzo38> catMaybes = (>>= maybe mzero return); lefts = (>>= either return (const mzero));
20:25:02 <zzo38> Note that >>= combines join with fmap
20:25:06 <zzo38> join = (>>= id)
20:25:10 <kallisti> ah yes.
20:25:17 <kallisti> cool.
20:25:41 <kallisti> @src catMaybes
20:25:41 <lambdabot> catMaybes ls = [x | Just x <- ls]
20:26:21 -!- oerjan has joined.
20:26:22 <Sgeo> :t either
20:26:23 <lambdabot> forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
20:26:23 <kallisti> hmm, I guess that's equivalently efficient.
20:26:42 -!- sebbu2 has joined.
20:26:42 -!- sebbu2 has quit (Changing host).
20:26:42 -!- sebbu2 has joined.
20:28:31 <zzo38> fmap f = (>>= return . f)
20:28:36 <zzo38> x >>= f = join $ fmap f x
20:29:41 -!- sebbu has quit (Ping timeout: 240 seconds).
20:35:37 <oerjan> * elliott is trying to point-free: f x y z = g (h x) (h y) (h z)
20:36:01 <Sgeo> http://boards.trutv.com/showthread.php?14444-seth-gold-is-hot!!!
20:36:29 <oerjan> :t \x -> ?g (?h x) `on` ?h
20:36:30 <ais523> oerjan: with lambdabot around, why is that hard?
20:36:30 <lambdabot> forall b c a. (?h::a -> b, ?g::b -> b -> b -> c) => a -> a -> a -> c
20:36:51 <oerjan> ais523: because the @pl result looks awful
20:37:12 <oerjan> @pl lacks many of the more subtle methods
20:37:41 <ais523> :t on
20:37:42 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
20:38:05 <oerjan> what he really needs is some kind of on3
20:38:12 <ais523> yep
20:38:25 <kallisti> :t on ?h . ?g . ?h
20:38:25 <lambdabot> forall b c a. (?h::b -> b -> c, ?g::(b -> c) -> a -> b) => b -> a -> a -> c
20:38:56 <kallisti> maybe I'm missing something here...
20:39:43 <oerjan> well a flip in front of on, to start
20:39:56 <kallisti> oh
20:39:59 <kallisti> :t flip on ?h . ?g . ?h
20:40:00 <lambdabot> forall c a a1. (?h::a -> a1, ?g::a1 -> a1 -> a1 -> c) => a -> a -> a -> c
20:40:07 <kallisti> is that equivalent?
20:40:11 <kallisti> to what you just wrote?
20:40:14 <oerjan> i think so
20:40:38 <kallisti> oerjan: you and elliott should devise a pointfree library. :3
20:40:40 <kallisti> with an on3!
20:41:09 <oerjan> i vaguely think i made a recursive onN sort of thing in a previous discussion
20:41:22 -!- zzo38 has quit (Remote host closed the connection).
20:44:52 <oerjan> \x y z -> g (h x) (h y) (h z) = \x y -> g (h x) (h y) . h = \x y -> on g h x y . h
20:45:08 <oerjan> @pl \x y -> on g h x y . h
20:45:08 <lambdabot> flip flip h . ((.) .) . on g h
20:45:19 <oerjan> bah
20:47:17 <oerjan> :t \x y z -> foldl (. ?h) ?g [x,y,z]
20:47:18 <lambdabot> Occurs check: cannot construct the infinite type: a = a1 -> a
20:47:18 <lambdabot> Expected type: a
20:47:18 <lambdabot> Inferred type: a1 -> a
20:47:22 <oerjan> eek
20:47:36 <oerjan> oh well
20:50:01 <Sgeo> How about dup and swap?
20:50:13 <Sgeo> cleave
20:50:16 <Sgeo> etc
20:50:19 <Sgeo> All the Factor stuff
20:50:22 <Sgeo> Can that be done?
20:50:59 <oerjan> fsvo done
20:51:19 <oerjan> it's not like haskell naturally is about stacks
20:51:36 <oerjan> or concatenative
20:51:59 <Sgeo> I want a function f, such that (+) . f :: (Num a) => a -> a
20:52:17 <Sgeo> Why don't I say dup instead of f
20:52:18 <oerjan> :t (+) . ?f
20:52:18 <lambdabot> forall a (f :: * -> *). (Num a, ?f::f a, Functor f) => f (a -> a)
20:52:28 <Sgeo> oerjan, huh?
20:52:35 <oerjan> :t (+) Prelude.. ?f
20:52:36 <lambdabot> forall b a. (Num b, ?f::a -> b) => a -> b -> b
20:52:39 <monqy> Sgeo: join (+)
20:52:43 <monqy> or uh
20:52:45 <monqy> wait i forget ugh
20:52:57 <Sgeo> Lemme solve for the types
20:52:59 <monqy> been a long time since i did that sort of thing
20:53:10 <Sgeo> :t (.)
20:53:11 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
20:53:12 <Sgeo> oops
20:53:15 <Sgeo> :t (Prelude..)
20:53:16 <lambdabot> forall b c a. (b -> c) -> (a -> b) -> a -> c
20:53:18 <monqy> :t join (+)
20:53:18 <lambdabot> forall a. (Num a) => a -> a
20:53:25 <monqy> > join (+) 5
20:53:26 <lambdabot> 10
20:53:28 <Sgeo> monqy, that's not quote what I want, though
20:53:31 <Sgeo> quite
20:53:39 <oerjan> Sgeo: i just did, and there is no solution
20:53:45 <Sgeo> o.O
20:54:20 -!- variable has quit (Quit: I found a 1 /dev/zero).
20:54:24 <oerjan> you cannot get around the fact that (+) . f will still be a function of two arguments
20:54:35 <monqy> Sgeo: uncurry (+) . (id &&& id)
20:55:11 <monqy> > uncurry (+) . (id &&& id) $ 5
20:55:13 <lambdabot> 10
20:55:43 <oerjan> basically, (.) does _not_ access all the arguments of its first argument, only the first, so there's no way to use it to treat its first argument as taking a stack.
20:56:38 <Sgeo> :t join
20:56:38 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
20:56:58 <oerjan> :t join.($)
20:56:58 <lambdabot> forall a a1. (a1 -> a1 -> a) -> a1 -> a
20:56:59 * Sgeo whats at monqy's join example
20:57:03 <monqy> :t join :: (a -> a -> b) -> a -> b
20:57:04 <lambdabot> forall a b. (a -> a -> b) -> a -> b
20:57:38 -!- Ngevd has joined.
20:57:46 * Sgeo ducks for cover
20:57:56 <oerjan> all brace for the hello
20:58:56 <oerjan> there seems to be a malfunction
20:59:02 <ais523> `? welcome
20:59:10 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
21:00:02 * oerjan looks suspiciously at ais523
21:00:22 <Sgeo> ais523 is clearly new to this community.
21:00:37 <monqy> sgeo: what's so scary about my join example
21:01:03 <Sgeo> monqy, I guess I wasn't thinking of functions as a monad
21:01:14 <Sgeo> Although I guess they are. Still not intuitive for me though.
21:01:37 <monqy> iirc it's the same as Reader
21:02:14 <monqy> all you need to know for join is: join f = \ a -> f a a
21:03:20 <kallisti> Ngevd: hmmm apparently lambdabot is not informing you of MESSAGES?
21:03:21 <monqy> and iirc fmap f g = f . g
21:03:28 <kallisti> monqy: yes
21:03:44 <oerjan> kallisti: this _might_ be related to the fact Ngevd isn't speaking.
21:03:55 <kallisti> oerjan: oh I thought it informed people when they joined.
21:03:59 <monqy> no[e
21:04:13 <monqy> I've never had to use >>= so I've forgotten what it does intuitively :(
21:04:15 <kallisti> okY
21:04:28 <kallisti> f >>= g = f (g x) x
21:04:31 <kallisti> I believe
21:04:35 <kallisti> er
21:04:40 <kallisti> f >>= g x = f (g x) x
21:04:45 <kallisti> f >>= g $ x = f (g x) x
21:04:46 <kallisti> :P
21:04:53 <copumpkin> \x ->
21:05:03 <oerjan> ?src >>= ->
21:05:04 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
21:05:04 <kallisti> lambdas are for chumps.
21:05:08 <oerjan> ?src -> >>=
21:05:08 <lambdabot> Source not found. Take a stress pill and think things over.
21:05:13 <oerjan> ?src (->) (>>=)
21:05:14 <lambdabot> f >>= k = \ r -> k (f r) r
21:05:51 <oerjan> kallisti: WRONG!!!!!!!!!!!!!!!!!!!!111111111111111111ELEVEN
21:06:16 <kallisti> oh
21:06:17 <kallisti> indeed
21:06:27 <kallisti> I think f (g x) x is ap right?
21:06:38 <monqy> ap is whatever S is
21:06:43 <monqy> i always forget it :(
21:06:45 <oerjan> kallisti: WRONG!!!!!!!!!!!!!!!!!!!!111111111111111111ELEVEN
21:06:49 <monqy> and pure is const
21:06:52 <monqy> i.e. k
21:06:56 <kallisti> f x (g x)
21:06:57 <kallisti> is ap
21:07:21 <monqy> mhm
21:08:06 <kallisti> so >>= is like ap but turnways.
21:08:11 <monqy> wh
21:08:31 <monqy> sure
21:12:17 -!- Ngevd has quit (Read error: Connection reset by peer).
21:15:16 <kallisti> monqy: http://www.mspaintadventures.com/sweetbroandhellajeff/?cid=010.jpg
21:15:59 <monqy> yes i know
21:17:15 <kallisti> g (f x) x vs. f x (g x)
21:17:42 <kallisti> if that isn't turnways I don't EVEN know what it is.
21:18:49 -!- derrik has quit (Read error: Connection reset by peer).
21:21:41 <oerjan> :t flip ap
21:21:42 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m (a -> b) -> m b
21:22:29 <oerjan> :t flip ap . flip
21:22:30 <lambdabot> forall b (f :: * -> *) a b1. (Functor f) => f (a -> b1) -> (a -> f b1 -> b) -> a -> b
21:22:53 <oerjan> :t flip ap Prelude.. flip
21:22:54 <lambdabot> forall b (f :: * -> *) a b1. (Functor f) => f (a -> b1) -> (a -> f b1 -> b) -> a -> b
21:23:06 <oerjan> :t flip ap . Prelude.flip
21:23:06 <lambdabot> forall b a b1 c. (a -> b1 -> c) -> (b1 -> (a -> c) -> b) -> b1 -> b
21:25:05 <oerjan> \f g x -> g (f x) x = \f g x -> flip g x (f x) = \f g -> ap (flip g) f = flip (ap . flip)
21:25:11 <oerjan> :t flip (ap . flip)
21:25:12 <lambdabot> forall a b a1. (a1 -> a) -> (a -> a1 -> b) -> a1 -> b
21:25:25 <kallisti> woo
21:25:27 <oerjan> :t (>>=).($)
21:25:28 <lambdabot> forall a b a1. (a1 -> a) -> (a -> a1 -> b) -> a1 -> b
21:26:08 <oerjan> :t flip ((>>=) . flip)
21:26:09 <lambdabot> forall b (f :: * -> *) a b1. (Functor f) => (f b1 -> a -> b) -> f (a -> b1) -> a -> b
21:26:20 <kallisti> flippity floppity floo
21:26:24 -!- Klisz has joined.
21:26:25 <oerjan> :t ap.($)
21:26:25 <lambdabot> forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b
21:26:38 <oerjan> hm that's not quite right
21:26:50 <oerjan> :t flip (>>=) . flip
21:26:51 <lambdabot> forall (m :: * -> *) a b. (Monad m, Functor m) => m (a -> b) -> m a -> m b
21:27:19 <kallisti> <*>? :P
21:27:25 <oerjan> oh hm that's actually _general_ ap
21:27:51 <oerjan> given sufficient caleskell
21:27:57 <kallisti> heh
21:28:32 <oerjan> :t Prelude.flip (>>=) Prelude.. flip
21:28:33 <lambdabot> forall (m :: * -> *) a b. (Monad m, Functor m) => m (a -> b) -> m a -> m b
21:28:45 <oerjan> :t Prelude.flip (>>=) Prelude.. Prelude.flip --too little
21:28:46 <lambdabot> forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b
21:29:28 <Phantom_Hoover> http://www.guardian.co.uk/science/blog/2009/mar/02/god-particle-peter-higgs-portrait-lhc
21:29:33 <Phantom_Hoover> This is the best portrait.
21:29:34 <oerjan> :t flip . flip
21:29:34 <lambdabot> forall a b a1. (a -> a1 -> b) -> a -> a1 -> b
21:29:50 <Phantom_Hoover> I like all the blue glowy lines around his head.
21:30:11 <Phantom_Hoover> It reminds me of that bit in Fine Structure where — oh wait future elliott.
21:30:20 <oerjan> :t flip
21:30:20 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
21:31:13 <oerjan> only for functions is caleskell flip its own inverse
21:31:48 <kallisti> I'm guessing that's what the higgs boson looks like?
21:32:42 -!- augur has quit (Remote host closed the connection).
21:34:12 <oerjan> i'm guessing that's supposed to be a collision diagram from a particle accelerator
21:38:50 <oerjan> <shachaf> IT'S, LIKE, A LAMBDA *INSIDE* A LAMBDA! <-- BRUIJNCEPTION
21:39:25 <shachaf> Good old De Bruijndices.
21:44:37 <oerjan> <monqy> we also have single fifo, animated chatrooms, bbw dating north dakota, dating program <-- i suspect we are just going to give up fighting the spam and turn the wiki into a spam appreciation site.
21:48:16 -!- Ngevd has joined.
21:48:21 <Ngevd> Hello!
21:48:21 <lambdabot> Ngevd: You have 5 new messages. '/msg lambdabot @messages' to read them.
21:48:33 <Ngevd> Wow, messages, me?
21:51:52 <kallisti> Ngevd: yes you're special.
21:52:04 <Ngevd> Wow
21:52:14 <Ngevd> Also, I won at that game of Scrabble
21:52:19 <kallisti> good!
21:52:38 <Ngevd> Even low I was below 50 when the person who would eventually lose broke the hundred (he had a good start)
21:52:40 <kallisti> now you can go fix your haskell program in the way that I described. :)
21:53:04 <Ngevd> Has anyone got Cobalt?
21:53:20 <kallisti> no what's that
21:53:50 <Ngevd> A new game that's being somethinged by the company that makes Minecraft
21:54:04 <kallisti> lol
21:54:05 <kallisti> okay
21:54:58 <kallisti> oh hm, it looks pretty fun
21:56:00 -!- Klisz has quit (Quit: You are now graced with my absence.).
21:56:52 -!- Klisz has joined.
21:57:53 * kallisti wants to play a game that's a sort of mixture between Magicka and Demons' Souls.
21:58:21 <kallisti> a somewhat complex magic system. a strategic, fast-paced action RPG.
21:59:14 <Ngevd> Hold on a second
21:59:18 <Ngevd> I don't need the Maybes
22:00:23 <kallisti> Ngevd: I'm guessing the eithers represent the two different players?
22:00:27 <Ngevd> Yes
22:00:40 <kallisti> what does the inner-type represent?
22:00:42 <Ngevd> The Maybe would have represented empty squares
22:00:51 <kallisti> Sounds like you may want Maybe Bool
22:01:04 <kallisti> True = x, False = o, Nothing = empty
22:01:26 <Ngevd> Clever plan: Left n = square n is x, Right n = square n is o.
22:01:31 <Ngevd> No need for Maybe
22:02:40 <kallisti> oh okay
22:03:12 <Ngevd> What's a cool type for the internal "Sorry, that square is full, ask for another square" message?
22:03:28 <kallisti> well if you had.
22:03:34 <kallisti> Map Int (Maybe Bool)
22:03:36 <kallisti> er
22:03:38 <kallisti> Map Int Bool
22:03:39 <kallisti> I mean
22:03:51 <kallisti> then a lookup on the Map would return a Maybe Bool
22:04:03 <kallisti> so you could just test on that.
22:04:20 <kallisti> if it's Nothing, you can place a mark, if it's Just _ then you can't
22:04:30 <Ngevd> Clever idea!
22:04:40 <Ngevd> Essentially the opposite of what you just said!
22:04:46 <kallisti> a "cool type" for the error message would be String. A cool type to send an error message would be IO. :P
22:04:54 <kallisti> Ngevd: oh?
22:05:12 <Ngevd> Nothing = not good enough, try again
22:05:20 <kallisti> that doesn't make any sense.
22:05:25 <Ngevd> Just (Either Int Int) = brilliant, here's the new board
22:05:32 <kallisti> wat
22:05:42 <kallisti> I think Map Int Bool would be easier honestly.
22:05:59 <kallisti> and you could turn it into a [Either Int Int] if you needed.
22:06:50 <kallisti> but if you've got a good idea, don't let me stop you. :>
22:06:54 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
22:07:34 <kallisti> Ngevd: because the key piece of data you have is the square I assume.
22:07:41 <kallisti> Ngevd: with the list you have to search through the list
22:07:49 <kallisti> with the Map you can just lookup via the integer.
22:08:02 <Ngevd> It's a list with maximum length of 9
22:08:16 <kallisti> well yes, it's not difficult to search through.
22:08:34 <Ngevd> If searching through the list is going to be a serious problem, I recommend you get a new computer and a new Haskell compiler
22:08:46 <kallisti> I was referring to conceptual simplicity. :P
22:08:49 <Ngevd> But a Map could be really good for my other project...
22:08:52 <kallisti> not a problem of efficiency, really.
22:12:01 <kallisti> placePiece m i p = maybe (insert i p m) (const m) (lookup i m)
22:12:20 <kallisti> m is the Map Int Bool, i is the Int, p is the player (True or False)
22:12:57 <kallisti> of course you'll probably want more logic than that.
22:13:06 <kallisti> because that doesn't tell you whether or not the board changed.
22:13:16 <kallisti> it just leaves it alone if it didn't change.
22:14:11 <kallisti> you could have it return an IO (Map Int Bool) instead or something.
22:14:24 <kallisti> with the error case sending a message to the player.
22:16:24 <kallisti> is it a text-based interface?
22:16:29 <kallisti> or something more complicated?
22:16:37 <Ngevd> Haven't actually done the interface yet
22:16:46 <kallisti> what do you plan for it to be?
22:16:54 <Ngevd> Probably text
22:17:17 <oerjan> :t lookup -- the list version also exists
22:17:18 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
22:17:22 <kallisti> then yes placePiece :: Map Int Bool -> Bool -> Int would work
22:17:28 <kallisti> oerjan: indeed.
22:17:31 <kallisti> but MAPS ARE SO MUCH COOLER.
22:17:36 <kallisti> /trees/ man.
22:18:00 <oerjan> yeah but at 9 elements its quite plausible that lists are actually faster, isn't it?
22:18:06 <kallisti> > logBase 2 9
22:18:06 <lambdabot> 3.1699250014423126
22:18:11 <kallisti> oerjan: nah man never.
22:18:22 <kallisti> NEVER
22:18:24 <kallisti> NOT IN ANY CASE
22:18:28 <kallisti> THERE IS NO SCENARIO
22:18:30 <kallisti> (lies)
22:18:35 <oerjan> just like bubble sort actually wins over quicksort if the array is short enough
22:18:57 <kallisti> oerjan: but you're not thinking about scalability. Maybe Ngevd wants a 1 million square game of tic-tac toe.
22:19:03 <kallisti> eventually
22:19:07 <kallisti> THE REQUIREMENTS CHANGE.
22:19:11 <oerjan> plausible.
22:19:15 <kallisti> best to go with the one with the best growth factor.
22:19:33 <oerjan> kallisti: ah but then you need larger pointers
22:20:05 <kallisti> hm?
22:20:07 <oerjan> lest your solution runs out of them before filling the entire universe
22:20:33 <kallisti> Ngevd: if you'd rather maintain purity then you could return an Either String (Map Int Bool) instead
22:20:47 <kallisti> Ngevd: or Either String [Either Int blah blah blah dumb
22:20:49 <kallisti> :P
22:20:58 <oerjan> also, http://xkcd.com/865/
22:21:17 <Ngevd> What I really want is something like elemBy
22:21:41 <kallisti> :t any
22:21:41 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
22:21:43 <kallisti> :t all
22:21:43 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
22:21:53 <Ngevd> any is good
22:23:06 <kallisti> @hoogle Either a a -> a
22:23:07 <lambdabot> Data.Either rights :: [Either a b] -> [b]
22:23:07 <lambdabot> Data.Either lefts :: [Either a b] -> [a]
22:23:07 <lambdabot> Data.Typeable typeOf2 :: Typeable2 t => t a b -> TypeRep
22:23:33 <kallisti> ah I guess no one would need something so silly except Taneb.
22:23:38 <kallisti> >:)
22:23:56 <oerjan> Ngevd: if your elements are ((Int,Int),Bool) then lookup is perfect.
22:24:07 <kallisti> they're Either Int Int
22:24:28 <oerjan> which is isomorphic to (Int, Bool)
22:24:29 <kallisti> or (Int, Bool) equivalently
22:24:30 <kallisti> yes
22:24:35 <Ngevd> What I'm probably going to stick with is taken n = any (\x -> Left n == x || Right n == x)
22:24:41 <Ngevd> Because I am crazy
22:24:57 <kallisti> ....WHY
22:25:00 <Ngevd> And pl'ing that is crazy
22:25:10 <kallisti> map is so much easier...
22:25:13 <kallisti> *Map
22:25:15 <Ngevd> @pl \n -> any (\x -> Left n == x || Right n == x)
22:25:16 <lambdabot> any . ap (ap . ((||) .) . (==) . Left) ((==) . Right)
22:26:02 <kallisti> Ngevd: (Int, Bool) would probably be easier as well
22:26:07 <kallisti> as then you could just ignore the Bool element
22:26:09 <Ngevd> I DON'T CARE
22:26:15 <kallisti> instead of dealing with the Left and Right constructors
22:26:32 <kallisti> Ngevd: okay.
22:27:07 <oerjan> :t join either . (==)
22:27:08 <lambdabot> forall a. (Eq a) => a -> Either a a -> Bool
22:27:32 <Ngevd> That works too
22:28:04 <Ngevd> Except no
22:28:05 <kallisti> oerjan: fancy
22:29:21 <kallisti> Ngevd: the list /might/ end up being easier to work with when you have to compute a win.
22:30:21 -!- MDude has quit (Ping timeout: 240 seconds).
22:32:23 <Ngevd> There's probably thousands of different ways of doing this, each with its own merits
22:32:33 <kallisti> but not really because you just generate a list of winning configurations, and then use any (`isSubmapOf` board)
22:32:34 -!- augur has joined.
22:32:50 <Ngevd> I'm going to continue with the way I've got half a program to
22:34:43 <kallisti> (the "winning configurations" meaning the 4 different ways to win * the 2 players, not literally every possible winning configuration as that would be crazy slow)
22:38:25 <kallisti> well actually no it wouldn't be that slow.
22:38:44 <kallisti> I was confusing ending positions with possible games.
22:39:02 <kallisti> > 91 + 44
22:39:03 <lambdabot> 135
22:39:11 <kallisti> is the number of winning positions.
22:39:22 <kallisti> and 3 draws.
22:39:25 <oerjan> > 3^9
22:39:26 <lambdabot> 19683
22:39:43 <Ngevd> > product [1..9]
22:39:44 <lambdabot> 362880
22:40:00 <Ngevd> Number of possible games
22:40:12 <kallisti> not quite.
22:40:37 <Ngevd> Niave upper bound for the number of possible games
22:40:45 <kallisti> yes.
22:41:15 <Sgeo> "Naive"?
22:41:33 <kallisti> it doesn't take into account that the game /stops/ when you win.
22:41:40 <Sgeo> It's an upper bound, aren't all upper bounds of things that can in principle be calculated exactly "naive"?
22:41:52 <kallisti> some can be more naive than others.
22:42:16 <Ngevd> Positive infinity is a perfectly accurate upper bound for most things
22:43:29 <kallisti> Ngevd: how do you currently calculate wins? with the permutations thing?
22:43:36 <Ngevd> Yes
22:43:40 <Ngevd> It uses a magic square
22:44:09 <oerjan> also, 19683 is an upper bound on the number of board positions.
22:44:40 <oerjan> which means you could quite plausibly store them all.
22:44:41 <Ngevd> Gonna play Cobalt now
22:44:58 <Sgeo> Is Graham's Number naive?
22:45:08 <kallisti> in this case, yes.
22:45:23 <kallisti> well, maybe more like "dumb" :P
22:45:24 <oerjan> worst approximation to 6^H11 ever
22:45:59 <kallisti> Sgeo: oh nevermind
22:46:21 <kallisti> I thought you were asking if Graham's number was a naive upper bound to the number of possible games or something else we were talking about.
22:46:51 <oerjan> sorry, 13.
22:48:00 <Ngevd> I'm not even sure why I am doing this
22:49:04 <kallisti> Ngevd: me neither
22:49:24 <Ngevd> I could be doing something actually useful to my education and wellbeing rather than make a silly game
22:49:30 <Ngevd> Sillily
22:50:21 <Ngevd> Now, if I moved to a certain island group, I'd be the silly silly game developer of Scilly
22:53:34 <kallisti> Ngevd: I would be able to take your game more seriously if it used better data structures.
22:53:38 <Ngevd> I can't get Cobalt to run
22:53:43 <Ngevd> :~(
22:53:48 <kallisti> (is not serious, btw)
22:54:11 <kallisti> Ngevd: what platforms is it available on?
22:54:29 <Ngevd> Windows
22:54:38 <Ngevd> Coming soon for Mac and Linux
22:54:43 <Ngevd> Apparently it works in Wine?
22:55:00 <Ngevd> Got it working, maybe
22:59:48 <kallisti> !perl $x=3;$x=3**($x%10**50)for1..500;print$x
22:59:50 <EgoBot> Bareword found where operator expected at /tmp/input.15721 line 1, near ")for1"
22:59:56 <kallisti> !perl $x=3;$x=3**($x%10**50)for 1..500;print$x
22:59:57 <EgoBot> nan
23:00:18 <kallisti> !perl use integer;$x=3;$x=3**($x%10**50)for 1..500;print$x
23:00:18 <EgoBot> 1
23:00:20 <kallisti> ..
23:00:32 <kallisti> oh
23:00:40 <kallisti> !perl use integer;$x=3;$x=3**$x%10**50for 1..500;print$x
23:00:41 <EgoBot> 0
23:02:26 <oerjan> > iterate (\x -> 3^x `mod` 10^50) 3 !! 500
23:02:31 <lambdabot> mueval: ExitFailure 1
23:02:31 <lambdabot> mueval: Prelude.undefined
23:02:37 <oerjan> oops
23:02:47 <kallisti> oerjan: (^) is slow and stuff
23:03:00 <oerjan> not really
23:03:15 <kallisti> it's slower than (**) isn't it?
23:03:20 <oerjan> but the numbers get huge _before_ you mod them
23:04:06 <oerjan> ** is not exact, so obviously
23:04:11 <kallisti> > 5 ** 5000
23:04:12 <lambdabot> Infinity
23:04:21 <oerjan> > 5^5000
23:04:21 <kallisti> :P
23:04:22 <lambdabot> 707981126104817289238561515869405755294754851033943135872983022354636725918...
23:04:37 <kallisti> > 5 ** 5000 :: CReal
23:04:41 <lambdabot> 707981126104817289238561515869405755294754851033943135872983022354636725918...
23:04:50 <kallisti> SO MUCH FASTER SEE?
23:04:57 <oerjan> >_>
23:05:50 <kallisti> > x ** 4
23:05:51 <lambdabot> x**4
23:05:58 <oerjan> i assume you are trying to calculate the final digits of graham's number as described on wp
23:06:04 <kallisti> yes
23:06:25 <oerjan> i don't think it is quite as simple as that though
23:06:47 -!- ais523 has quit (Remote host closed the connection).
23:06:55 <oerjan> afair i did it myself once
23:07:08 <Phantom_Hoover> <Ngevd> Gonna play Cobalt now
23:07:10 <Phantom_Hoover> It's out?
23:07:29 -!- DCliche has joined.
23:08:17 <oerjan> > scanl (*3) 1
23:08:18 <lambdabot> Occurs check: cannot construct the infinite type: a = b -> a
23:08:28 <oerjan> > iterate (*3) 1
23:08:29 <lambdabot> [1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441,1594323,4782969,14...
23:08:37 <kallisti> `run dc -e '[3z202>xO200^|]dsxxrp'
23:08:55 <oerjan> the thing is, there isn't actually any pattern if you just do 3^x, it has to be 3^3^x
23:09:07 <oerjan> or something like that
23:09:08 <HackEgo> No output.
23:09:37 <kallisti> `run dc 0e ;dc -e '[3z202>xO200^|]dsxxrp'
23:09:42 <oerjan> > iterate (^3) 3
23:09:43 <kallisti> er
23:09:43 <lambdabot> [3,27,19683,7625597484987,443426488243037769948249630619149892803,871896424...
23:10:03 <oerjan> > map (`mod` 10^10) $ iterate (^3) 3
23:10:06 <kallisti> `run dc -e '3[3rAz^|dz202>x]dsxxAz3-^%p'
23:10:08 <lambdabot> mueval: ExitFailure 1
23:10:08 <lambdabot> mueval: Prelude.undefined
23:10:09 <HackEgo> dc: Could not open file 0e
23:10:12 <oerjan> eek
23:10:18 <oerjan> > take 10 . map (`mod` 10^10) $ iterate (^3) 3
23:10:20 <lambdabot> [3,27,19683,5597484987,9149892803,5225665627,1838846883,6369147387,94380896...
23:10:27 <oerjan> ok even that doesn't work
23:10:38 <HackEgo> No output.
23:10:54 <kallisti> anyway those programs work on my computer
23:10:57 <kallisti> they just timeout on hackego
23:11:02 -!- Klisz has quit (Ping timeout: 252 seconds).
23:11:59 <Sgeo> Why did it hit undefined?
23:12:05 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:12:28 <oerjan> Sgeo: dunno, something going wrong when it times out, i assume
23:14:42 -!- Ngevd has quit (Ping timeout: 252 seconds).
23:14:49 <kallisti> > 21*60
23:14:50 <lambdabot> 1260
23:15:48 <oerjan> oh hm it says on wp that algorithm is actually correct
23:16:43 <oerjan> > iterate (\x -> 3^x `mod` 10^50) 3 !! 50
23:16:48 <lambdabot> mueval: ExitFailure 1
23:16:49 <lambdabot> mueval: Prelude.undefined
23:16:54 <oerjan> > iterate (\x -> 3^x `mod` 10^10) 3 !! 10
23:16:59 <lambdabot> mueval: ExitFailure 1
23:16:59 <lambdabot> mueval: Prelude.undefined
23:17:04 <oerjan> darn
23:17:09 <oerjan> > iterate (\x -> 3^x `mod` 10^10) 3 !! 10
23:17:14 <lambdabot> mueval: ExitFailure 1
23:17:14 <lambdabot> mueval: Prelude.undefined
23:17:58 <oerjan> @hoogle modpow
23:17:58 <lambdabot> No results found
23:18:02 <oerjan> @hoogle powmod
23:18:02 <lambdabot> No results found
23:18:36 <kallisti> http://en.wikipedia.org/wiki/Vampire_number
23:18:43 <kallisti> I don't really get the point'
23:19:10 <Phantom_Hoover> http://www.reddit.com/r/AskReddit/comments/nepda/whats_something_you_found_so_pretentious_that_it/c38i4ay
23:19:16 <Phantom_Hoover> I wish I had taken art.
23:20:18 <kallisti> why? so you could spend lots of money on useless classes?
23:20:29 <Phantom_Hoover> No, so I could study Dr McNinja.
23:21:23 <Phantom_Hoover> Oh god now I remember that I *still* haven't read the fourth book of The Sandman, about two years after I read the first.
23:21:37 -!- PiRSquared17 has joined.
23:22:29 * kallisti has never heard of this so-called Dr. McNinja
23:22:33 * kallisti googles.
23:22:39 * kallisti awe
23:22:42 -!- Vorpal has quit (Ping timeout: 276 seconds).
23:23:25 <kallisti> oh god this is beautiful what is this.
23:24:14 <kallisti> "we'll talk once your ghastronaut buddy shows up and gets stuffed on holy knuckle cheeseburgers"
23:24:17 <kallisti> wow. what.
23:24:27 <kallisti> I feel like I should probably read this from the beginning instead of backwards.
23:24:38 <monqy> yes
23:26:47 <oerjan> !haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print . iterate m (\M x -> M 3 ^ x) $ M 3
23:26:52 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
23:27:12 <oerjan> !haskell 2+2
23:27:15 <EgoBot> 4
23:27:21 <oerjan> !haskell main = print $ 2+2
23:27:24 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
23:27:32 <oerjan> Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:28:55 <kallisti> how do you even analyze Dr. McNinja
23:29:16 <kallisti> "the author here is trying to convey that a ninja doctor riding a raptor is awesome."
23:31:00 <oerjan> Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:31:28 <kallisti> oerjan: there would be no problem if elliott hadn't deleted my hackego script..
23:31:39 <oerjan> ic
23:31:40 * kallisti pouts.
23:33:02 <kallisti> `haskell
23:33:04 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
23:33:55 <oerjan> @tell elliott you appear to have deleted kallisti's HackEgo haskell script while EgoBot's wasn't even _working_ properly. what do you have to say in defense and how would you like to be executed?
23:33:55 <lambdabot> Consider it noted.
23:34:08 <kallisti> oerjan: well.
23:34:11 <kallisti> it was working at the time
23:34:12 <kallisti> but
23:34:14 <kallisti> also at the time
23:34:17 <kallisti> egobot had been down for several days.
23:34:23 <oerjan> ic
23:34:59 <kallisti> I actually don't remember how I wrote it now...
23:35:46 <oerjan> btw i need a version which does newtype and instance declarations, of course.
23:36:22 <kallisti> can ghc run from standard input?
23:36:51 <oerjan> unless someone remembers that lambdabot has an obscure imported module which does modular powers.
23:37:12 -!- copumpkin has joined.
23:37:20 <oerjan> kallisti: for module compilation? doubt it.
23:37:25 <kallisti> oerjan: help how do I runhaskell with standard input.
23:37:30 <kallisti> HOW DID I DO THAT?
23:37:32 <kallisti> maybe I didn't.
23:37:34 <kallisti> what.
23:37:36 <kallisti> I don't know.
23:37:46 <oerjan> tmpfile? it's what EgoBot does, afaik.
23:37:53 <kallisti> I don't recall using a tempfile.
23:37:59 <kallisti> but that's an option.
23:38:07 <oerjan> maybe you just did ghc -e
23:38:14 <kallisti> oh, maybe.
23:39:21 <oerjan> that _should_ be enough with a ghc recent enough to support all declarations in ghci. but that's pretty recent, maybe even after latest platform.
23:39:37 <kallisti> `run ghc -e ' main = print (2+2)'
23:39:44 <HackEgo> ​\ <interactive>:0:6: parse error on input `='
23:40:08 <oerjan> no, ghc -e doesn't do modules. afaict it does ghci commands
23:41:29 <oerjan> `run ghc -e 'let {m = 10}; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; print . iterate m (\M x -> M 3 ^ x) $ M 3'
23:41:34 <HackEgo> ​\ <interactive>:0:13: parse error on input `;'
23:41:43 * Phantom_Hoover → sleep
23:41:45 <oerjan> fancy
23:41:48 -!- Phantom_Hoover has quit (Quit: Leaving).
23:41:54 <oerjan> `run ghc -e 'print (2+2)'
23:41:59 <HackEgo> 4
23:42:16 <oerjan> `run ghc -e 'let {m = 2}; print (m+m)'
23:42:21 <HackEgo> ​\ <interactive>:0:12: parse error on input `;'
23:42:35 <oerjan> ic :(
23:42:50 <oerjan> not quite all of ghci, i take
23:43:15 <oerjan> `run ghc -e 'putStr "test"; print (m+m)'
23:43:20 <HackEgo> ​\ <interactive>:0:14: parse error on input `;'
23:43:32 <oerjan> right, no support of multiple commands :(
23:43:38 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo '$T=mktemp; echo $1 > $T; runhaskell $T' >> haskell && chmod +x haskell
23:43:40 <HackEgo> No output.
23:43:42 <kallisti> oerjan: this is wrong isn't it.
23:44:22 <oerjan> you need .hs extension.
23:44:32 <kallisti> it's... enforced?
23:44:52 <oerjan> well, there's a flag to ignore it
23:45:14 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo '$T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell
23:45:16 <HackEgo> No output.
23:45:24 <kallisti> `haskell main = print $ 2+2
23:45:31 <kallisti> >_>
23:45:40 <kallisti> maybe I need to actually print something.
23:45:51 <Sgeo> > print $ 2+2
23:45:52 <lambdabot> <IO ()>
23:45:55 <Sgeo> boo
23:45:57 <HackEgo> ​/hackenv/bin/haskell: 2: =/tmp/tmp.yr3eUgdBhN: not found \ /hackenv/bin/haskell: 2: cannot create : Directory nonexistent
23:46:11 <kallisti> um, okay.
23:46:23 <kallisti> >_>oh
23:46:32 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell
23:46:34 <HackEgo> No output.
23:46:39 <kallisti> `haskell main = print $ 2+2
23:46:42 -!- copumpkin has changed nick to pumpmas.
23:46:44 <HackEgo> 4
23:46:47 <kallisti> bam
23:47:10 -!- pikhq has quit (Read error: Operation timed out).
23:47:25 <kallisti> oerjan: presumably runhaskell turns on said option.
23:48:02 <oerjan> `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print . iterate m (\M x -> M 3 ^ x) $ M 3
23:48:06 <kallisti> also when do temp files go away? maybe I shouldn't just create them all the time.
23:48:07 <HackEgo> ​\ /tmp/tmp.k5wpKFOHX0:1:224: \ Couldn't match expected type `a0 -> b0' with actual type `[a1]' \ In the return type of a call of `iterate' \ Probable cause: `iterate' is applied to too many arguments \ In the second argument of `(.)', namely \ `iterate m (\ M x -> M 3 ^ x)' \ In the expression: print . iterate m (\ M x -> M 3 ^ x)
23:48:08 -!- pikhq has joined.
23:48:14 <oerjan> fffffffff
23:48:35 <oerjan> kallisti: it is possible .hs is the default assumption, i guess
23:48:47 <oerjan> oh hm
23:49:07 <oerjan> `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate m (\M x -> M 3 ^ x) (M 3) !! m
23:49:12 <HackEgo> ​\ /tmp/tmp.ALDmG4ubTI:1:224: \ The function `iterate' is applied to three arguments, \ but its type `(a0 -> a0) -> a0 -> [a0]' has only two \ In the first argument of `(!!)', namely \ `iterate m (\ M x -> M 3 ^ x) (M 3)' \ In the second argument of `($)', namely \ `iterate m (\ M x -> M 3 ^ x) (M 3) !! m' \ In the expression: print $ iterate m (\ M x -> M 3 ^ x) (M 3) !! m
23:49:24 <oerjan> oops
23:49:28 <oerjan> `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\M x -> M 3 ^ x) (M 3) !! m
23:49:33 <HackEgo> ​\ /tmp/tmp.ME0aPlxkPR:1:234: \ Couldn't match expected type `t0 -> t1' with actual type `M' \ In the pattern: M \ In the first argument of `iterate', namely `(\ M x -> M 3 ^ x)' \ In the first argument of `(!!)', namely \ `iterate (\ M x -> M 3 ^ x) (M 3)'
23:51:03 <oerjan> :t iterate
23:51:04 <lambdabot> forall a. (a -> a) -> a -> [a]
23:51:08 <kallisti> explosion of tempfiles.
23:51:28 <oerjan> `ls /tmp
23:51:30 <HackEgo> No output.
23:51:34 <kallisti> oh
23:51:48 <oerjan> they're probably not put in the repository
23:53:08 -!- Klisz has joined.
23:53:32 <oerjan> oh hm
23:53:50 <oerjan> `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\M x -> M 3 ^ x) (M 3) !! fromIntegral m
23:53:55 <HackEgo> ​\ /tmp/tmp.qMSSrjhqHX:1:248: \ Couldn't match expected type `t0 -> t1' with actual type `M' \ In the pattern: M \ In the first argument of `iterate', namely `(\ M x -> M 3 ^ x)' \ In the first argument of `(!!)', namely \ `iterate (\ M x -> M 3 ^ x) (M 3)'
23:54:04 * kallisti considered actually making a script that generates hackego commands
23:54:19 <oerjan> oh duh
23:54:26 <oerjan> `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m
23:54:32 <HackEgo> M 2464195387
23:54:35 <oerjan> yay!
23:54:50 -!- pikhq_ has joined.
23:55:06 <kallisti> oerjan: the fabled mod-10 integers...
23:55:09 <oerjan> `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m
23:55:14 <HackEgo> ​\ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `+' \ In the instance declaration for `Num M' \ \ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `abs' \ In the instance declaration for `Num M' \ \ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `signum' \ In the instance declaration for `Num M'
23:55:21 <oerjan> *sigh*
23:55:34 <oerjan> it seems all those undefined's are necessary in HackEgo too
23:55:56 -!- DCliche has quit (Ping timeout: 248 seconds).
23:56:03 <oerjan> `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' | tail -1
23:56:06 <kallisti> well necessary if you want to see your output through all the warnings.
23:56:08 <HackEgo> ​\ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `+' \ In the instance declaration for `Num M' \ \ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `abs' \ In the instance declaration for `Num M' \ \ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `signum' \ In the instance declaration for `Num M'
23:56:22 <oerjan> wat
23:56:43 <kallisti> um
23:56:45 <kallisti> dunno
23:56:52 -!- pikhq has quit (Ping timeout: 248 seconds).
23:57:23 <oerjan> why in the world didn't the tail -1 work
23:57:52 <oerjan> oh wait hm
23:57:52 <kallisti> my script is too cool for it.
23:58:31 <oerjan> `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2&>/dev/null
23:58:36 <HackEgo> No output.
23:58:51 <oerjan> er hm wait
23:58:55 <oerjan> `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2>/dev/null
23:59:00 <HackEgo> M 2464195387
23:59:03 <oerjan> whew
23:59:20 <kallisti> lol
23:59:23 <oerjan> it didn't work because it only affected stdout
23:59:40 <kallisti> &> redirects everything.
23:59:59 <oerjan> i remembered
2011-12-17
00:00:32 <kallisti> oh you meant tail. gotcha.
00:00:36 <oerjan> `run haskell 'm :: Integer; m = 20; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2>/dev/null
00:00:40 <HackEgo> M 4575627262464195387
00:01:26 <oerjan> close enough to excellent.
00:04:09 -!- MSleep has joined.
00:04:14 -!- MSleep has changed nick to MDude.
00:04:39 -!- pumpmas has changed nick to copumpkin.
00:04:53 <kallisti> oerjan: and it's still a multiplicative group!
00:05:15 <oerjan> yes
00:05:39 <oerjan> which is why the ^ implementation works for this
00:06:28 <kallisti> what's the difference between a group and a multiplicative group?
00:06:47 <oerjan> well it's about where it's used, i guess
00:06:58 <kallisti> it seems to be a notational thing.
00:07:04 <oerjan> and which notation, yes
00:07:41 <oerjan> abelian groups are frequently given additively, nonabelian ones almost never
00:08:06 <kallisti> addition is for 1st grades
00:08:10 <oerjan> and of course if there is a ring involved, the notation is standard
00:08:13 <kallisti> all the cool kids are doing muliplication.
00:08:40 <oerjan> also ^ would work for any semigroup, i should think
00:08:57 * kallisti imagines an elementary school that taught group theory
00:09:23 <oerjan> except for x ^ 0 which needs a unit
00:09:43 <kallisti> a semigroup is just a group without the unit, I'm guessing?
00:09:51 <kallisti> so no identity law.
00:09:54 <oerjan> no, it's a monoid without the unit
00:10:06 <kallisti> ah okay.
00:10:19 <kallisti> and thus no identity law, but still an associative law?
00:10:25 <oerjan> yes
00:12:03 <kallisti> I think you could probably teach basic group theory to older kids.
00:12:21 -!- derdon has quit (Remote host closed the connection).
00:12:25 <kallisti> it's not even particularly difficult if you explain it in words instead of SCARY MATHS SYMBOLS
00:14:09 <kallisti> I remember the usage of tuples being kind of confusing to me when I was first reading math articles on Wikipedia.
00:14:47 <kallisti> but then it became clear that it was just a notation for grouping components together, and then later "lol product type"
00:16:43 <oerjan> tuples are just elements of the colimit of a diagram with two unconnected sets, what's the problem?
00:17:22 <oerjan> unless it's limit, i can never remember for sure which is which.
00:18:26 <kallisti> ..
00:18:28 <kallisti> k
00:18:31 <kallisti> In abstract algebra, a normal subgroup is a subgroup which is invariant under conjugation by members of the group. Normal subgroups can be used to construct quotient groups from a given group.
00:18:35 <kallisti> so this means
00:19:00 <kallisti> that if you apply one operation, and then a second operation, then reverse the first one
00:19:06 <kallisti> you're back where you started?
00:19:10 <kallisti> for any element in the group?
00:19:13 <kallisti> .....?
00:19:35 <oerjan> no, you get back to the normal subgroup
00:19:55 <kallisti> oh so you're applying operations to the subgroup.
00:20:01 <kallisti> ....?
00:20:22 <oerjan> if you're always back exactly where you started, it's called the center.
00:20:50 <oerjan> or well
00:21:05 <oerjan> aba^-1 = b means ab = ba
00:21:16 <kallisti> ƒ(x) = a^(−1)xa, for all x in G,
00:21:23 <kallisti> where a is a given fixed element of G.
00:21:33 <kallisti> that kind of sounds like what I was saying.
00:21:39 <oerjan> yes that's a conjugation.
00:22:47 <kallisti> A subgroup, N, of a group, G, is called a normal subgroup if it is invariant under conjugation; that is, for each element n in N and each g in G, the element gng−1 is still in N.
00:22:51 <kallisti> oh, okay.
00:23:17 <kallisti> got it. I should have just kept reading instead of traversing infinitely further across Wikipedia's giant directed graph. :P
00:23:59 -!- GreaseMonkey has joined.
00:24:03 <oerjan> as long as you can get back to philosophy.
00:24:38 <kallisti> a concrete example of a normal subgroup would be helpful. it doesn't seem like it applies to very many integer subgroups...
00:25:22 -!- Patashu has joined.
00:26:02 <kallisti> hmmm wait for multiplication on integers, x^(-1) violates the closure property doesn't it?
00:26:51 <kallisti> and for addition, x^(-1) is actally x*(-1) .....? am I reading that correctly?
00:27:01 <kallisti> oh wait
00:27:08 <kallisti> x^(-1) is the inverse of x.
00:27:13 <kallisti> in that group.
00:27:51 <oerjan> kallisti: every subgroup of a commutative group is normal
00:28:33 <oerjan> the rationals \ {0} are a commutative group under multiplication
00:29:08 <oerjan> and the integers are one under addition.
00:29:46 <kallisti> so wait... is multiplication over integers a group at all?
00:29:50 <oerjan> no.
00:29:55 <kallisti> because there's no inverse.
00:29:58 <oerjan> yeah
00:30:07 <kallisti> er well
00:30:12 <kallisti> no inverse for every element, rather.
00:30:19 <oerjan> only 1 and -1 have any
00:32:02 <kallisti> commutativity is boring.
00:32:07 <Gregor> <oerjan> Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // I believe elliott broke that.
00:32:10 <oerjan> one subgroup of the rational numbers is the set { 2^n | n integer }
00:33:12 -!- elliott has joined.
00:33:16 <oerjan> kallisti: if you look at permutation groups instead, and consider the permutations of a finite set, then the _even_ permutations form a normal subgroup
00:33:29 <kallisti> ....too advanced right now.
00:33:36 <oerjan> ok
00:33:44 <kallisti> I just now got "subgroups of commutative groups are normal" :P
00:34:06 <oerjan> permutation groups are very fundamental, though
00:34:09 <kallisti> because lol g^(-1)ng
00:34:31 <kallisti> because lol g^(-1)ng
00:34:33 <Gregor> ... Firefox lost its address bar.
00:34:34 <Gregor> Halp
00:34:42 <kallisti> lol g^(-1)gn
00:34:46 <kallisti> lol unit*n
00:34:49 <kallisti> lol n
00:34:53 <kallisti> lol QED
00:34:54 <elliott> 15:06:30: <ais523> now we need to invent an esolang called Single Fifo
00:34:54 <elliott> 15:06:54: <ais523> it's the most ontopic name a spambot's come up with yet, even if it's not as /funny/ as My name Is Johny, what the F**K???
00:34:54 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
00:34:59 <elliott> the problem is, how can it be TC?
00:35:04 <elliott> Gregor: Ctrl+L?
00:35:32 <elliott> <lambdabot> oerjan said 1h 1m 12s ago: you appear to have deleted kallisti's HackEgo haskell script while EgoBot's wasn't even _working_ properly. what do you have to say in defense and how would you like to be
00:35:32 <elliott> <lambdabot> executed?
00:35:33 <elliott> oerjan:
00:35:38 <elliott> `run ghc -e '2+2'
00:35:42 <Gregor> oerjan: Complain at elliott.
00:35:43 <HackEgo> 4
00:35:44 <elliott> `run ghc -e 'print 42'
00:35:49 <HackEgo> 42
00:35:51 <kallisti> elliott: not good enough
00:35:51 <elliott> Q.E.D.
00:35:59 <oerjan> elliott: i was running an example that needed a module
00:36:12 <elliott> oerjan: kallisti's didn't handle that. the one I wrote did, though
00:36:14 <oerjan> elliott: in fact that part of !haskell still works
00:36:17 <elliott> admittedly, I do not remember kallisti's at all.
00:36:26 <kallisti> neither do I.
00:36:29 <kallisti> so you're safe. :P
00:36:33 <elliott> and do not remember deleting one
00:36:37 <kallisti> YOU DID
00:36:39 <elliott> so... whatever
00:36:40 <oerjan> elliott: anyway kallisti made something which worked afterwards
00:36:42 <kallisti> CURSE YOU
00:36:55 <elliott> oerjan: well I haven't been online since yesterday if that is what you mean
00:37:10 <oerjan> elliott: this all happened tonight
00:37:17 <elliott> oerjan: then I deleted nothing
00:37:22 <elliott> and you're paranoid.
00:37:33 <elliott> oerjan: but I wrote EgoBot's new !haskell so if it's broken complain to me directly.
00:37:36 <oerjan> elliott: well except that.
00:37:48 <oerjan> !haskell main = print "Why I no work???????????????"
00:37:51 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:37:59 <elliott> It's because you used a meme.
00:38:03 <elliott> It rejects programs with memes.
00:38:04 <oerjan> ah.
00:38:15 <oerjan> !haskell main = print "What about this, then?"
00:38:18 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:38:28 <elliott> Gregor: Can you push EgoBot's hg repo to http://codu.org/projects/egobot/hg/ so I can see my own script? X-D
00:38:31 <Sgeo> !haskell --help
00:38:34 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:38:34 <elliott> Oh, wait!
00:38:37 <Gregor> elliott: lul
00:38:38 <elliott> oerjan: I remember this problem.
00:38:42 <oerjan> AHA
00:38:46 <elliott> The problem is that that is trying to use GHC 6.12.
00:38:50 <oerjan> the defendant confesses!
00:38:57 <elliott> It's Gregor's fault.
00:39:03 <elliott> Gregor: Where is HackEgo's custom GHC installed from EgoBot's perspective?
00:39:12 <elliott> `ghc --version
00:39:15 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
00:39:21 <kallisti> `haskell import System.Random; main = print `fmap` (randomIO :: IO Int)
00:39:24 <Gregor> elliott: Done
00:39:25 <HackEgo> ​\ /tmp/tmp.j7vwVntFq3:1:8: \ Could not find module `System.Random' \ Use -v to see a list of the files searched for.
00:39:26 <elliott> Good enough, even if it is a bit buggy IIRC
00:39:30 <kallisti> ..
00:39:31 <elliott> `rm bin/haskell
00:39:32 <Gregor> elliott: Inaccessibly is where.
00:39:34 <HackEgo> No output.
00:39:45 <elliott> Gregor: Can you... fix that? :P
00:40:01 <Gregor> elliott: Is there a cp -hardlink option >_>
00:40:12 <Gregor> Yes, there is!
00:40:12 * kallisti wonders why System.Random did not exist.
00:40:27 <elliott> kallisti: Probably because System.Random is in random, not base.
00:40:29 <Gregor> !sh ls /opt/ghc
00:40:30 <EgoBot> ​/bin/ls: cannot access /opt/ghc: No such file or directory
00:40:33 <Gregor> Err
00:40:43 <Gregor> Oh
00:40:52 <kallisti> elliott: base doesn't include random numbers? o_o
00:41:11 <Gregor> !sh ls /opt/ghc
00:41:11 <EgoBot> bin
00:41:20 <elliott> Yay
00:41:37 <elliott> Admittedly I should get Gregor to install the Haskell Platform libs globally for that GHC
00:41:39 <elliott> But that can wait
00:41:47 <kallisti> elliott: also why did you delete my script again?
00:41:52 <kallisti> it still has a purpose currently.
00:41:55 <elliott> Gregor: Here's yer new interps/ghc/runghc:
00:41:55 <elliott> #!/bin/bash
00:41:55 <elliott> src=$(cat $1)
00:41:55 <elliott> if ! /opt/ghc/ghc -e "$src" 2> /dev/null
00:41:55 <elliott> then
00:41:56 <elliott> /opt/ghc/runhaskell <<< $src
00:41:58 <elliott> fi
00:42:00 <elliott> Erm
00:42:02 <elliott> */opt/ghc/bin
00:42:18 <elliott> kallisti: Because it didn't run the program you made it for and is about to become obsolete :P
00:42:23 <oerjan> elliott: i should point out that kallisti's version had the advantage that it could suppress warnings. (by using `run ... 2>/dev/null, admittedly.)
00:42:36 <elliott> oerjan: Mine does not run with -Wall.
00:42:47 <Gregor> elliott: Not helpful >_>
00:42:55 <elliott> Gregor: :'(
00:43:00 <elliott> It's two path changes :P
00:43:46 <kallisti> elliott: you could at least be polite enough to wait for it to become obsolete. clearly I have some massive Haskell program I want to dump into IRC.
00:44:12 <elliott> 19:27:53: <Gregor> Who was it that was asking me about "classical" composers?
00:44:12 <elliott> 19:28:01: <Gregor> But is also never on while I'm awake.
00:44:17 <elliott> Gregor: hagb4rd
00:44:18 <kallisti> fucking deletionist scum.
00:44:52 <oerjan> kallisti: elliott will probably die if he's forced to be polite, anyway
00:45:10 <elliott> Yes. That is why banning me is immoral.
00:45:26 <oerjan> hey banning you doesn't force you to be polite
00:46:01 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell #edit war, sucker
00:46:04 <HackEgo> No output.
00:46:08 <kallisti> WHAT NOW?
00:46:25 <Sgeo> Uh, jEdit?
00:46:31 <Sgeo> I told you to indent at a width of 4.
00:46:36 <Sgeo> Why are you inserting 8 tabs?
00:46:59 <kallisti> you must have tabs set to be half of a space each
00:47:12 <Sgeo> *eight spaces
00:47:23 <kallisti> oh.
00:47:28 <kallisti> that's much more reasonable.
00:47:33 <kallisti> (but still wrong)
00:50:51 <elliott> <oerjan> hey banning you doesn't force you to be polite
00:50:57 <elliott> it forces me to not be non-polite
00:51:01 <elliott> `rm bin/haskell
00:51:03 <HackEgo> No output.
00:51:04 <elliott> terrible abuse of mktemp
00:51:10 <elliott> author does not know how runhaskell functions
00:51:11 <elliott> also
00:51:18 <elliott> fails to remove temporary file in any situation (!!!)
00:51:24 <elliott> thus disk leak
00:51:31 <elliott> Q.E.D.
00:51:46 <kallisti> runhaskell doesn't allow input from stdin
00:51:51 <oerjan> elliott: erm the /tmp file is not preserved afawct
00:52:02 <elliott> oerjan: well ok. i defer to all my other reasons
00:52:24 <kallisti> the mktemp is necessary because runhaskell doesn't allow input from stdin.
00:52:27 <elliott> [elliott@dinky ~]$ runhaskell
00:52:28 <elliott> main = putStrLn "kallisti is an idiot."
00:52:28 <elliott> ^D
00:52:28 <elliott> kallisti is an idiot.
00:52:31 <elliott> [elliott@dinky ~]$
00:52:39 <Sgeo> Is it just me, or is antialiasing a good thing?
00:52:40 <kallisti> elliott: oh, hmmm
00:52:46 <elliott> [elliott@dinky ~]$ runhaskell --version
00:52:46 <elliott> runghc 7.0.3
00:52:48 <elliott> `runhaskell --version
00:52:49 <elliott> Sgeo: what
00:52:50 <HackEgo> runghc 7.2.1
00:52:51 <kallisti> elliott: that's probably how I implemented it originally
00:52:53 <Sgeo> jEdit was hurting my eyes until I enabled subpixel antialiasing
00:53:09 <Sgeo> (Well, not literally hurting my eyes, but it was annoying to look at)
00:53:11 <pikhq_> oerjan: $TMPDIR might not be, though.
00:53:30 <elliott> 19:35:15: <Gregor> kallisti: 1) Not a classical composer, 2) not a pre-20th-century composer people usually think of in the top five, making "only" bizarre, 3) "clsaasical", 4) "ocmpostr"
00:53:33 <elliott> Gregor: classical composter
00:53:40 * elliott prefers traditional composint methods
00:53:41 <pikhq_> TMPDIR might also have a space in it, which leaves `mktemp` screwing up.
00:53:42 <elliott> composting
00:53:47 <elliott> pikhq_: Untrue
00:54:04 <pikhq_> Admittedly, this is unlikely in the case of HackEgo.
00:54:10 <elliott> pikhq_: You are mistaken about how the assignment "statement" works in sh.
00:54:15 <elliott> (POSIX & bash & all implementations)
00:54:17 -!- Sgeo|jEdit has joined.
00:54:22 <pikhq_> Oh, right, that works strangely.
00:54:28 <Sgeo|jEdit> There really isn't a good reason to use this as an IRC client.
00:54:34 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #edit war, sucker
00:54:37 <HackEgo> No output.
00:54:37 <pikhq_> OF course, the unquoted $T later will screw up.
00:54:41 <oerjan> elliott: it is possible i slightly deluded kallisti into believing runhaskell cannot use stdin *cough*
00:54:46 <elliott> `rm bin/haskell
00:54:48 <HackEgo> No output.
00:54:54 <elliott> Author does not take advantage of state-of-the-art <<< input methods
00:55:00 <elliott> oerjan: You are a true patriot
00:55:18 -!- Sgeo|jEdit has quit (Client Quit).
00:55:26 <pikhq_> elliott: Which doesn't work with #!/bin/sh (does with #!/bin/bash).
00:55:29 <kallisti> elliott: what advantage?
00:55:36 <elliott> kallisti: One fewer process
00:55:41 <elliott> They're in short supply in HackEgo!
00:55:57 <elliott> pikhq_: Exactly, he uses obsolete technologies!!!
00:56:08 <pikhq_> Also, um, echo is a shell builtin. Even in POSIX.
00:56:18 <pikhq_> Thus, no extra process.
00:56:36 <elliott> pikhq_: Nothing's STOPPING you from implementing it as an external program while still being POSIX-compliant.
00:56:44 <elliott> The builtin could spawn a /bin/echo process.
00:56:53 <pikhq_> That said, exec runhaskell <<<"$1" is clearly better.
00:56:55 <elliott> He used #!/bin/sh, so he can't rely on any implementation guarantees!
00:56:57 <kallisti> elliott: yeah fuck standards compliance!
00:57:10 <elliott> kallisti: Welcome to the 21st century.
00:57:53 <pikhq_> Which I *think* is a Korn-ism, and should work on just about any shell that's not C or very strict POSIX.
00:58:31 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker
00:58:33 <HackEgo> No output.
00:58:36 <elliott> `run rm bin/haskell # author has terrible track record; software likely to be unreliable in many respects
00:58:38 <HackEgo> No output.
00:58:46 <pikhq_> aloril: Fail.
00:58:50 <pikhq_> kallisti:
00:58:51 <pikhq_> Erm
00:58:51 <elliott> aloril: Faaaaaaail.
00:58:55 <elliott> aloril: SHAME ON YOU
00:59:00 <kallisti> pikhq_: fail where?
00:59:05 <kallisti> oh
00:59:12 <kallisti> `run cd bin && echo '#!/bin/bash' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker
00:59:14 <HackEgo> No output.
00:59:20 <pikhq_> kallisti: <<< doesn't work in more POSIX-ly shells, such as Debian Almquist.
00:59:23 <elliott> `run rm bin/haskell # author's contract with us has been terminated
00:59:25 <HackEgo> No output.
00:59:37 <pikhq_> Also, faaaail
00:59:48 <pikhq_> `run cat <<<"1"
00:59:50 <HackEgo> 1
01:00:02 <elliott> TIL kallisti can't write a two-line shell script.
01:00:06 <pikhq_> Actually, derp
01:00:12 <pikhq_> `run <<<"1"
01:00:14 <HackEgo> No output.
01:00:23 <pikhq_> ... Dammit, that working is a zsh-ism.
01:00:23 <elliott> `run is sh
01:00:25 <elliott> not bash
01:00:26 <HackEgo> bash: is: command not found
01:00:29 <elliott> `run bash -c '<<<"1"'
01:00:31 <HackEgo> No output.
01:00:32 <kallisti> elliott: I wrote a perfectly fine shell script, but then you told me to use all of these things I'm not familiar with. :P
01:00:34 <elliott> oh
01:00:43 <elliott> kallisti: Perfectly fine apart from all the bugs
01:00:54 <kallisti> such as?
01:01:02 <pikhq_> `run echo $BASH
01:01:04 <HackEgo> ​/bin/bash
01:01:09 <pikhq_> Bam, it's bash.
01:01:19 <elliott> pikhq_: It's bash invoked as sh, I thought, but maybe not
01:01:27 <pikhq_> elliott: Can't be.
01:01:27 <elliott> kallisti: For one, it failed to handle temporary directories with spaces in them.
01:01:39 <elliott> pikhq_: Hmm, I may have changed that, actually :)
01:01:56 <pikhq_> elliott: /bin/sh on the system HackEgo's using is Debian Almquist.
01:02:07 <elliott> pikhq_: Ah, indeed
01:02:19 <elliott> pikhq_: Though I believe alternatives lets you select that.
01:02:30 <pikhq_> Yeah, but who messes with that? :P
01:02:33 <kallisti> `run cd bin && echo '#!/bin/bash' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #this is the best one, okay.
01:02:36 <HackEgo> No output.
01:02:48 <pikhq_> Hmm. It's not going through the alternatives system here.
01:02:53 <pikhq_> It's just a symlink to /bin/dash
01:02:53 <elliott> `rm bin/haskell
01:02:55 <HackEgo> No output.
01:02:59 <elliott> Spawns additional runhaskell process instead of using exec
01:04:05 <pikhq_> `run cd bin && (echo '#!/bin/bash';echo 'exec runhaskell<<<"$1"')>haskell&&chmod +x haskell # Thar
01:04:07 <HackEgo> No output.
01:04:28 <kallisti> how is this different from what I wrote..
01:04:38 <kallisti> or
01:04:39 <kallisti> one of the ones I wrote
01:04:43 <kallisti> that elliott deleted.
01:05:03 <kallisti> oh
01:05:04 <kallisti> I see.
01:05:06 <kallisti> I forgot the $1
01:05:19 <pikhq_> Learn to shell kthx
01:05:34 <kallisti> pikhq_: I was under duress from elliott :P
01:06:01 <kallisti> and his fighting words;
01:06:06 <kallisti> fighting words such as "rm"
01:06:13 <kallisti> very enraging.
01:06:51 <kallisti> `haskell main = putStrLn "Hello, World!"
01:06:56 <HackEgo> Hello, World!
01:07:50 <elliott> `haskell 2+2
01:07:55 <HackEgo> ​\ /tmp/runghcXXXX276.hs:1:1: \ Parse error: naked expression at top level
01:07:56 <elliott> `rm bin/haskell
01:07:59 <HackEgo> No output.
01:08:07 <kallisti> elliott: use inferior expression-oriented evaluators for that.
01:08:21 <kallisti> elliott: `haskell is for big boys with Real IRC Programs.
01:08:22 <elliott> You realise that the script in EgoBot does everything you're trying to do and has for ages so you could just copy it in.
01:08:36 <oerjan> elliott: it doesn't _yet_
01:08:48 <elliott> oerjan: Yes it does, it would function perfectly in HackEgo's environment.
01:09:08 <pikhq_> Also, yeah, I only put that one in because maybe having something do what he *thinks* is desired would make him stop trying. :P
01:09:08 <elliott> `fetch http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc
01:09:10 <HackEgo> 2011-12-17 01:09:09 URL:http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc [91/91] -> "runghc" [1]
01:09:15 <elliott> `run mv runghc bin/haskell; chmod +x bin/haskell
01:09:18 <HackEgo> No output.
01:09:21 <pikhq_> `haskell 2+2
01:09:26 <elliott> Oh, not quite.
01:09:26 <HackEgo> cat: 2+2: No such file or directory
01:09:28 <elliott> Needs one tweak.
01:09:29 <pikhq_> :P
01:09:33 <oerjan> @_@
01:09:41 <elliott> `run sed -i 's/\$(cat \$1)/$1/' bin/haskell
01:09:44 <HackEgo> No output.
01:09:46 <pikhq_> `haskell 2+2
01:09:52 <HackEgo> 4
01:09:58 <pikhq_> `haskell main=putStrLn "Hello, world!"
01:10:04 <HackEgo> No output.
01:10:10 <elliott> o_X
01:10:11 <pikhq_> o.O'
01:10:18 <kallisti> man it would be so much easier if we like... used that other script
01:10:20 <kallisti> which works fine.
01:10:24 <elliott> `run runhaskell <<< 'main=putStrLn "Hello, world!"'
01:10:29 <HackEgo> Hello, world!
01:10:31 <pikhq_> kallisti: Except it clearly doesn't.
01:10:34 <elliott> Hmm
01:10:37 <elliott> Maybe
01:10:37 <elliott> runhaskell <<< $src
01:10:38 <kallisti> pikhq_: in what way?
01:10:41 <elliott> wasn't as safe as it seemed to be in my tests
01:10:47 <pikhq_> kallisti: `haskell 2+2 failed
01:10:55 <kallisti> that's not what `haskell does :P
01:10:55 <elliott> `run sed -i 's/<<< \$src/<<< "$src"/g' bin/haskell
01:10:57 <HackEgo> No output.
01:10:59 <elliott> `cat bin/haskell
01:11:01 <HackEgo> ​#!/bin/bash \ src=$1 \ if ! ghc -e "$src" 2> /dev/null \ then \ runhaskell <<< "$src" \ fi \
01:11:07 <elliott> `haskell main=putStrLn "Hello, world!"
01:11:12 <HackEgo> No output.
01:11:19 <elliott> What the fuck?
01:11:29 <pikhq_> What the actual fuck.
01:11:33 <elliott> [elliott@dinky ~]$ ghc -e 'main=putStrLn "Hello, world!"'
01:11:33 <elliott> <interactive>:1:5: parse error on input `='
01:11:33 <elliott> [elliott@dinky ~]$ echo $?
01:11:33 <elliott> 0
01:11:42 <elliott> Well that's not fucking idiotic.
01:11:44 <pikhq_> WHY GHC WHY
01:11:54 <kallisti> elliott: why did you expect ghc -e to do that?
01:12:04 <elliott> kallisti: It failed. Failing programs do not exit status code 1.
01:12:14 <shachaf> elliott: $ ghci\nmain=blah\n^D\necho $?
01:12:24 <elliott> shachaf: It's not ghci, it's ghc -e :P
01:12:44 <shachaf> elliott: ghc -e evaluates ghci expressions.
01:12:49 <shachaf> ghc -e ':m + Foo' -e 'blah'
01:12:51 * oerjan sidles away carefully
01:12:57 <pikhq_> kallisti: Because the First Law of Unix is failing programs return 1.
01:12:59 <elliott> shachaf: PAH
01:13:22 <kallisti> pikhq_: in any case lambdabot works fine for expressions, so does ghc -e
01:13:41 <kallisti> so just have `haskell for actual haskell programs.
01:14:44 <pikhq_> kallisti: But GHC is breaking the Law
01:14:50 <pikhq_> Not the law, but the Law.
01:14:58 <pikhq_> You do not report success on failure.
01:15:10 <kallisti> okay, how is this relevant to having a command that can run whole haskell programs?
01:15:31 <pikhq_> Because having a command that can run whole haskell programs and haskell snippets is clearly superior.
01:16:04 <kallisti> what about the intersection of programs that were intended to be whole haskell programs but have syntax errors and accidentally get interpreted as correct expression
01:16:07 <kallisti> YOU NEVER KNOW
01:16:10 <kallisti> IT MAY HAPPEN
01:16:29 <elliott> You realise that !haskell has always done this.
01:16:35 <kallisti> yes
01:16:42 <elliott> Its advantages over lambdabot include being able to do IO.
01:16:45 <kallisti> what does that have to do with my TOTALLY AWESOME POINT.
01:16:46 <kallisti> yes I know
01:16:54 <kallisti> `run ghc -e "print 2 + 2"
01:16:59 <HackEgo> ​\ <interactive>:0:11: \ No instance for (Num (IO ())) \ arising from the literal `2' \ Possible fix: add an instance declaration for (Num (IO ())) \ In the second argument of `(+)', namely `2' \ In the expression: print 2 + 2 \ In an equation for `it': it = print 2 + 2
01:17:02 <kallisti> `run ghc -e "print $ 2 + 2"
01:17:07 <HackEgo> 4
01:17:08 <kallisti> elliott: if only we had some way to do that
01:17:13 * kallisti hmmms.
01:17:23 <elliott> kallisti: "ghc -e isn't good enough" --kallisti
01:17:31 <kallisti> ..for whole programs, no.
01:17:34 <elliott> `rm bin/haskell
01:17:36 <HackEgo> No output.
01:17:42 <elliott> kallisti: runhaskell <<< '...'
01:17:49 <elliott> Basically as short, since apparently you don't mind having to quote things
01:18:23 <kallisti> we could have two different programs.
01:18:36 <kallisti> also, having both in one makes error output potentially confusing.
01:19:13 <elliott> There are easy ways to report the correct error, but it's even easier to just rm bin/haskell all the time
01:19:48 <kallisti> one day the world is going to need saving
01:19:51 <kallisti> and THE ONLY WAY TO DO IT
01:20:03 <kallisti> IS VIA THIS IRC CHANNEL, BY INPUTTING A WHOLE HASKELL PROGRAM WITHOUT STRINGS TO HACKEGO
01:20:15 <kallisti> AND YOU'RE GOING TO BE SORRY WHEN WE DON'T HAVE THE ABILITY BECAUSE YOU'RE A JERK.
01:20:18 -!- kallisti has quit (Quit: ragequit).
01:21:35 -!- pikhq has joined.
01:22:18 -!- pikhq_ has quit (Ping timeout: 276 seconds).
01:22:53 <MDude> I would try to make a combination of Forth and Fortran called Forthran, but I don't really know either lnaguage.
01:23:09 <elliott> That would be ... an interesting language.
01:23:44 <elliott> It would be stack-based, based on an threaded compiler-style loop, be heavily optimised for fast numerics, have a fixed format for lines to be in...
01:23:52 <elliott> Assuming we mean Fortran 77 or w/e
01:25:23 -!- kallisti has joined.
01:25:27 <kallisti> AAAAAARGH
01:30:35 -!- cswords__ has joined.
01:32:07 * elliott considers writing a cs-words bot in the proud tradition of news-ham.
01:33:42 <oklopol> "<kallisti> ....too advanced right now." while you may not know what even permutations are, a nice thing to remember is that if N is a subgroup of G that contains half its elements, then it's normal
01:33:56 -!- cswords_ has quit (Ping timeout: 248 seconds).
01:34:45 <oklopol> or if N contains more than a third of G:s elements, since the size of a subgroup divides the size of the group, and G itself is obviously a normal subgroup of itself.
01:35:25 <oklopol> and permutations are divided into even and odd ones, and you have the same amount of each, so evens are normal.
01:36:37 <kallisti> oklopol: I know what a permutation is. -_-
01:36:51 <kallisti> or did you mean permutation group?
01:37:11 <kallisti> what is an "even permutation"
01:39:29 <oklopol> yeah that's what i assumed you didn't get in oerjan's message
01:39:35 <oklopol> the even permutation thing
01:39:40 <oklopol> well
01:39:55 <oklopol> do you know that permutations are generated by swaps
01:39:58 <oklopol> that is
01:40:03 <elliott> Your item was processed through our JAMAICA, NY 11430 facility on December 11, 2011 at 11:38 pm. Information, if available, is updated periodically throughout the day. Please check again later.
01:40:05 <kallisti> ah okay so I have a vague idea of what a permutation group is, but I'm not clear on what the operation for a permutation group is.
01:40:06 <elliott> WHY IS MY PACKAGE IN JAMAICA
01:40:16 <oklopol> for every permutation, you can perform a sequence of permutations that just swap two elements which does the same thing
01:40:28 <oklopol> kallisti: oh it's just permuting first with one permutation then the other
01:40:30 <kallisti> oklopol: right
01:40:45 <oklopol> so anyway about these swaps
01:40:58 <oklopol> it turns out half the permutations always take an even amount of swaps
01:41:02 <oklopol> no matter how you do them
01:41:10 <oklopol> and the other half take an odd number of swaps
01:41:22 <oklopol> and the even ones form a subgroup.
01:41:57 <elliott> BANKRUPTCY EVERYONE!!!
01:42:06 <kallisti> I feel you may be using the word permutation in a different way. I usually think of a permutation as a specific set. but you said "permuting first with one permutation then the other" so then are you talking about permutation as a function?
01:42:13 -!- pikhq_ has joined.
01:42:23 -!- pikhq has quit (Ping timeout: 245 seconds).
01:42:24 <oklopol> a permutation is just a bijection from a finite set to itself, yes
01:42:28 <kallisti> oklopol: ah okay so the parity of a permutation refers to the number of swaps (is there a formal name for that?)
01:42:50 <oklopol> you can represent this with a tuple containing every element exactly once, although there are two ways you can interpret that
01:43:00 <elliott> oklopol: what about infinite set CHECKMATE!!!!
01:43:04 <kallisti> oklopol: from a finite set to itself... I thought you needed an ordered set for a permutation to make any sense.
01:43:18 <oklopol> kallisti: the number of swaps is not really well-defined
01:43:27 <oklopol> you can perform useless swaps and increase it
01:43:43 <oklopol> point is the parity stays the same (this needs a proof ofc)
01:43:52 <oklopol> kallisti: no you don't need a permutation
01:43:53 <kallisti> well sure I can see why.
01:44:09 <kallisti> a "useless swap" would be where you perform a swap on the same locations twice.
01:44:20 <oklopol> yeah but you could also do something more complicated
01:44:20 <kallisti> 2+n will always preserve the parity.
01:44:28 <kallisti> oklopol: yes.
01:44:35 <kallisti> oklopol: but I'm assuming it follows the same basic principle.
01:44:44 <elliott> happy 1:44 am everybody
01:44:57 <oklopol> well right, it's a plausible conjecture. especially as we know that it's true :P
01:45:41 <elliott> 19:53:10: <Phantom_Hoover> It's surprising just how unmoonlike the far side of the moon looks.
01:45:42 <elliott> There's no far side of the moon, really. As a matter of fact it's all far. Er, wait.
01:46:31 <oklopol> we had an 18 hour programming day
01:47:02 <kallisti> oklopol: oh nevermind I misunderstood what you mean by bijective map from a set onto itself.
01:47:36 <oklopol> it just means you move the elements around
01:47:40 <kallisti> oklopol: yes
01:47:53 <kallisti> I was thinking it was a function from a set to itself.... (id function) that didn't make any sense.
01:48:17 <oklopol> yeah the id function is the identity of the permutation group though, so it's very important
01:48:30 <kallisti> ah okay.
01:48:37 <kallisti> and then the operation is composition.
01:48:40 <oklopol> yeah
01:48:41 <kallisti> of the bijective maps.
01:48:45 <kallisti> okay.
01:49:02 <oklopol> of course we have a different permutation group for all set sizes n
01:49:07 <kallisti> so a permutation group just... moves stuff around in a sequence.
01:49:38 <kallisti> like a rubik's cube or something.
01:49:43 <oklopol> yeah. and swaps generate it and things have parity. and every other finite group can be found as a subgroup.
01:49:58 <oklopol> those are the most important things i suppose
01:50:07 <kallisti> oklopol: do the swaps have a name? it would be a permutation where only one element changes.
01:50:15 <kallisti> er, two
01:50:37 <oklopol> yeah but i couldn't remember the real term :d
01:51:33 <kallisti> so all groups have a symmetry group that's all the permutations of its set.
01:51:40 <kallisti> ??
01:51:56 <kallisti> and then the other permutation groups are subgroups of the symmetry group.
01:51:57 <oklopol> ah it's a transposition
01:52:30 <kallisti> oklopol: hmmm you could also swap things in a cycle.
01:52:43 <oklopol> well the cycles are very important too.
01:52:50 <kallisti> as in, swapping more than 2 elements at once.
01:53:05 <kallisti> but I assume you can construct that from just the 2 element transpositions?
01:53:05 <oklopol> in fact, up to order of cycles, every permutation is a composition of disjoint cycles in a unique way.
01:53:20 <oklopol> yeah you can
01:53:33 <oklopol> that's one way to prove that transpositions generate all permutations
01:53:37 <elliott> http://phplens.com/phpeverywhere/?q=node/view/254 how to do multithreading in php: make two simultaneous requests to scripts on localhost using asynchronous IO
01:53:41 <elliott> you can't make this shit up
01:54:47 <oklopol> but about groups and symmetry groups... basically if your group G has size n, then we note that in fact every element of the group "acts" bijectively on G (left multiplication is bijective from G to G), so you can think of any g in G as a permutation on an n element set
01:55:09 <oklopol> and if you take the permutation of each g in G, they form a subgroup of the permutation group of size n which is isomorphic to G
01:55:13 <oklopol> does that make sense?
01:55:13 <kallisti> oklopol: okay so then the transpositions themselves are just elementary permutations that can you can compose into all of the other permutations.
01:55:27 <kallisti> with cycles being another elementary kind of permutation that is also composed of transpositions.
01:56:04 <elliott> @src (.)
01:56:05 <lambdabot> (f . g) x = f (g x)
01:56:05 <lambdabot> NB: In lambdabot, (.) = fmap
01:56:09 <elliott> lesson: @source is not @src, guys
01:56:24 <kallisti> elliott: I was tempted to try @src but I assumed it was the same thing.
01:56:43 <elliott> 20:16:15: <Sgeo> @tell Ngevd Is the same as f x = a . b . c . d $ x
01:56:47 <elliott> is the same as f = a . b . c . d
01:57:03 <oklopol> yeah. if by "that can you can compose into all of the other permutations" you mean every other permutation can be decomposed into a product of transpositions.
01:57:07 <elliott> 20:16:31: <kallisti> @tell Ngevd use catMaybes :: [Maybe a] -> [a] instead
01:57:08 <elliott> 20:21:22: <zzo38> Should it be fixed to work with other monads too? Such as, instead of only list monad it can work other MonadPlus as well.
01:57:08 <elliott> 20:22:09: <kallisti> zzo38: that would make it much more inefficient for the list case I believe.
01:57:14 <elliott> kallisti: yes, this wild unjustified speculation is reasonable
01:57:23 <elliott> especially since you can use the SPECIALISE pragma.
01:57:34 <Sgeo> elliott, didn't I say that somewhere?
01:57:43 <elliott> Sgeo: yes, but not while Ngevd was around
01:58:34 <kallisti> elliott: I would think catMaybes uses a recursive definition rather relying on concatMap
01:58:45 <kallisti> +than
01:58:51 <elliott> kallisti: concatMap is recursive, you moron
01:58:54 <kallisti> which would be more efficient, modulo specialise pragma.
01:58:56 <elliott> also
01:58:56 <kallisti> elliott: no shit.
01:58:57 <elliott> 20:25:41: <kallisti> @src catMaybes
01:58:58 <elliott> 20:25:41: <lambdabot> catMaybes ls = [x | Just x <- ls]
01:58:59 <elliott> ~NO RECURSION~
01:59:08 <kallisti> elliott: that's not what I meant.
01:59:11 <elliott> but no, it would not be more efficient.
01:59:18 <elliott> GHC has a very aggressive inliner; you're spreading FUD
02:00:04 <elliott> 20:55:43: <oerjan> basically, (.) does _not_ access all the arguments of its first argument, only the first, so there's no way to use it to treat its first argument as taking a stack.
02:00:13 <elliott> Sgeo: oerjan: however we can model things by changing standard functions
02:00:22 <elliott> (+) :: (Num a) => (a,(a,r)) -> (a,r)
02:00:31 <elliott> then all we need is (a,r) -> (a,(a,r)) which is trivial
02:00:36 <elliott> and (.) works fine
02:00:42 <elliott> swap :: (a,(b,r)) -> (b,(a,r))
02:00:50 <elliott> swap (a,(b,r)) = (b,(a,r))
02:00:52 <kallisti> elliott: concatenations require more time than simply skipping over Nothing elements in a recursive function while building the list with :
02:00:56 <kallisti> elliott: is what I was saying
02:01:01 <kallisti> elliott: but catMaybes doesn't do that.
02:01:41 <elliott> kallisti: it is incredibly likely that the concatMap would be completely inlined away in the SPECIALISE-generated Core for zzo's version.
02:02:20 <kallisti> hmm, okay.
02:03:47 <elliott> 21:30:11: <Phantom_Hoover> It reminds me of that bit in Fine Structure where — oh wait future elliott.
02:03:48 <elliott> Arse.
02:04:04 <elliott> I like how he looks hideous in that painting.
02:06:29 <Sgeo> elliott, you still haven't read Fine Structure?
02:07:10 <elliott> I read about ~half of it but then trailed off.
02:08:03 <pikhq_> To be fair, the structure of it is sufficiently weird that it's, well, insane to follow.
02:09:00 -!- zzo38 has joined.
02:09:03 * elliott had no problems up to the point he was at.
02:09:31 <pikhq_> Maybe he reordered things?
02:09:46 <pikhq_> I read it as it released, though. Which was hella-confusing.
02:09:54 <pikhq_> Oh, right, he definitely reordered things.
02:10:07 <elliott> I got up to The Story So Far.
02:10:28 <pikhq_> Perhaps I should reread it.
02:10:30 <elliott> Maybe one or two chapters further.
02:10:31 <pikhq_> No, definitely.
02:10:42 <elliott> Maybe I should read Ra as it comes out.
02:11:12 <pikhq_> Unbelievable Scenes, for instance, was not originally the start of Fine Structure.
02:11:28 <elliott> pikhq_: That is not a change that makes it less confusing.
02:11:37 <elliott> I'm sad he removed Forgotten things in space though.
02:11:53 <pikhq_> Indeed, it was not originally in Fine Structure.
02:12:11 <pikhq_> Nor was The Astronomer's Loss.
02:12:33 <pikhq_> Neither was Crushed Underground.
02:13:31 <oklopol> what's fine structure about
02:14:14 <pikhq_> Lots of things.
02:14:24 <pikhq_> As described, "This is a story about science."
02:14:29 <pikhq_> http://qntm.org/structure
02:20:14 <Sgeo> Well, I now hate my first Hackage package.
02:20:26 <Sgeo> And now I know why lazy I/O is loathed
02:20:39 <elliott> what package
02:20:42 <Sgeo> ftphs
02:20:51 <elliott> why aer you using ftp
02:21:02 <elliott> why are you using a package that depensd on haskell98 and was last updated in early 2010
02:21:45 <Sgeo> elliott, because it's the first one I sw
02:21:46 <Sgeo> *saw
02:21:52 <elliott> clever
02:22:58 <elliott> 23:39:21: <oerjan> that _should_ be enough with a ghc recent enough to support all declarations in ghci. but that's pretty recent, maybe even after latest platform.
02:23:06 <elliott> oerjan: that's called "ghc from git"
02:23:14 <elliott> not the most popular release
02:24:44 <oerjan> pretty recent, then.
02:25:32 <elliott> oerjan: what comes next after 247, 230, 260 btw
02:26:01 <oerjan> hm...
02:26:32 <oerjan> > iterate (zipWith (-) . tail) [247,230,260]
02:26:32 <lambdabot> Couldn't match expected type `[a] -> [a]'
02:26:33 <lambdabot> against inferred type `[a]'
02:26:45 <oerjan> > iterate (join $ zipWith (-) . tail) [247,230,260]
02:26:47 <lambdabot> [[247,230,260],[-17,30],[47],[],*Exception: Prelude.tail: empty list
02:28:05 <oerjan> > scanl (+) 247 [-17,30,77]
02:28:06 <lambdabot> [247,230,260,337]
02:28:10 <oerjan> elliott: 337
02:28:18 <oerjan> scientifically proven
02:28:22 <elliott> oerjan: oh dear.
02:28:25 <elliott> oerjan: what comes after /that/?
02:28:39 <elliott> once it exceeds 500 the universe explodes
02:28:51 <oerjan> > scanl (+) 247 $ iterate (+47) (-17)
02:28:52 <lambdabot> [247,230,260,337,461,632,850,1115,1427,1786,2192,2645,3145,3692,4286,4927,5...
02:29:24 <elliott> ok. the universe has 2 more days to live.
02:29:33 <elliott> then the vortex will engulf us all
02:29:39 <oerjan> ok.
02:29:41 <shachaf> elliott: There's a section in "Mathematics Made Difficult" about "what comes next"-style questions.
02:29:52 <elliott> shachaf: Yes, yes, anything you want can come next.
02:30:01 <oerjan> Dec 19 2011. Just a little more than a year off.
02:30:03 <elliott> (I'm assuming that's the point.)
02:30:20 <Gregor> OK, I have now installed a filter that will remove the tongue smiley from every line I type in IRC and IM. I hope to stop overusing it. CAN I SURVIVE???
02:30:23 <elliott> oerjan: well the mayans weren't /that/ good at keeping track of time
02:30:33 <elliott> Gregor: What did you do to the REAL Gregor?
02:31:24 <Gregor> elliott: You'll have to become accustomed to me not sticking my tongue out every line!
02:31:25 <oklopol> ',p
02:31:31 <elliott> Gregor: :P
02:31:35 <Gregor> oklopol: OH GOD WHAT HAPPENED TO YOUR FACE?!?!?!?
02:31:57 <shachaf> elliott: Well, in particular the contents of that section.
02:32:04 <pikhq_> shachaf: Of course the best answer for that is fix (1:)
02:32:38 <oklopol> Gregor: sorry that was my other face
02:32:41 <oklopol> :P
02:32:59 <pikhq_> :P:P:P:P:P:P:P:P:P:P:P
02:33:09 <oerjan> :P
02:33:13 <elliott> :P
02:33:16 <pikhq_> OH GOD MY TONGUE HAS A FACE! WITH A TONGUE!
02:33:18 <pikhq_> AND IT NESTS!
02:33:21 <pikhq_> AAAAGH
02:33:34 <oklopol> :o
02:33:37 <elliott> pikhq_: those tongues are not getting smaller. your recursion is unsound
02:33:41 <oerjan> i never realized it was supposed to be a tongue, btw
02:33:49 <oklopol> it's finite so it's okay
02:34:01 <elliott> oerjan: seriously?
02:34:04 <pikhq_> elliott: No, my geometry is non-Euclidian.
02:34:18 <oklopol> oerjan: what did you ever realize it is?
02:34:19 <Gregor> >_> <_<
02:34:22 <oerjan> yeah i just thought it was a smiley in profile
02:34:28 <Gregor> I hope I don't just end up overusing these faces >_>
02:34:33 <elliott> oerjan: how
02:34:36 <Gregor> Or taking the time to type :þ
02:34:37 <elliott> Gregor: Filter those out too
02:34:51 -!- kallisti has quit (Ping timeout: 248 seconds).
02:34:55 <Gregor> elliott: Naw, I'm not trying to prevent myself from using smileys /at all/, just to stop overusing them.
02:35:00 <oklopol> Gregor: filter everything out
02:35:05 <Sgeo> elliott, any good FTP Haskell libraries?
02:35:06 <elliott> oerjan: I cannot see how that is a smiley in profile at all.
02:35:09 <Sgeo> I mean, there's curl, but
02:35:16 <elliott> Sgeo: http://hackage.haskell.org/packages/archive/pkg-list.html
02:35:20 <Sgeo> elliott, I looked
02:35:20 <elliott> Sgeo: Here's a solution: Don't use FTP.
02:35:22 <elliott> It's 2011.
02:35:23 <elliott> Don't use FTP.
02:35:25 <oklopol> irc would be a better place if everyone just said empty lines
02:35:33 <elliott>
02:35:34 <oklopol> you'd have a button called "say"
02:35:45 <Sgeo> Too lazy not to use FTP
02:35:53 <elliott> Sgeo: Why are you using FTP
02:35:58 <Sgeo> For class
02:36:14 <elliott> Sgeo: Can't you just call out to ftp(1)
02:36:16 <Sgeo> Too lazy to just grab the files, run the program locally, then upload the result
02:36:29 <elliott> Dude, don't they have ssh
02:36:41 <Sgeo> That's not to my professor's server
02:37:01 <elliott> Anyway, write a shell script using ftp(1)
02:37:09 <Sgeo> Don't want to use bash
02:37:13 <elliott> Tough
02:37:20 <elliott> Deal with System.Process' baroque interface then
02:37:56 <Sgeo> Or I could attempt to force the list of this thing
02:38:01 <Sgeo> That should work
02:38:09 -!- DCliche has joined.
02:38:59 <elliott> This library looks 100000x more complicated than just using ftp(1).
02:39:19 <Sgeo> I just threw in a putStrLn, and all is good
02:41:52 -!- Klisz has quit (Ping timeout: 252 seconds).
02:42:02 <Sgeo> Uh, my file got cut off
02:42:08 <Sgeo> Whatever, just a trivial bit at the end
02:42:10 <Sgeo> Weird though
02:44:23 <Sgeo> Why is my file getting cut off?
02:45:21 <elliott> I don't know, let me get out the oracle of I Haven't Seen Your Fucking Code.
02:45:37 <elliott> It says you forgot to frobnicate the beeswax.
02:45:53 <elliott> http://esoteric.voxelperfect.net/wiki/Batman_Wonder_Woman_Relationship
02:45:59 <elliott> \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 � \u00D8 \u00A1\u00D9 \"\u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 \u00AA \u00D9\u0160 \u00D9 ..
02:45:59 <elliott> \u00D9 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D9\" \u00D8 � \u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D9 \"\u00D8 � \u00D8 � \u00D9 \"\u00D8� \u00D9\" \u00D9�\u00D9 � \u00D9 � \u00D9�\u00D8 � \u00D9 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D9 ..
02:48:04 <PiRSquared17> ?
02:48:19 <elliott> the contents of that stellar spam page
02:48:38 <PiRSquared17> LOL
02:48:39 <Sgeo> Printing the result of putlines made it work
02:48:43 <Sgeo> I hate this library
02:49:02 <PiRSquared17> That bot is stupid
02:49:17 <Sgeo> Success!
02:49:42 <PiRSquared17> "Autism Mercury Chat"
02:49:45 <PiRSquared17> External links
02:49:46 <PiRSquared17> Wikipedia free odessa personals datingmegafone gay dating numberkansas gay personalsdivorce and personal growth relationshipsyahoo chat listingsthai single datingneta chatballas and bryan relationship
02:51:19 <oerjan> yeah only idiots believe in autism mercury.
02:51:48 <elliott> mercury, god of autism
02:52:08 <copumpkin> dude, my friend got vaccinated and caught autism
02:52:15 <copumpkin> never was the same after that
02:52:21 <Sgeo> Now I have to leave the world of Haskell and start writing PHP :(
02:52:23 * elliott caught autism in a light breeze.
02:52:28 <elliott> It's in the air.
02:52:30 <copumpkin> elliott: wear one of those masks
02:52:32 <copumpkin> Sgeo: aww
02:53:05 <elliott> copumpkin: It's too late now! They haven't yet found the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0.
02:58:18 <oerjan> well they can detect alzheimer from blood tests now, it can only be a matter of time
02:59:04 <oerjan> also, it think the phrase "the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0" is a sign of autism all by itself.
02:59:07 <oerjan> *i
02:59:12 <elliott> oerjan: Alzheimer's is actually a trit. The problem is flipping it to 0 instead of 3, sometimes referred to as "super Alzheimer's".
02:59:18 <elliott> Also, I think it may be a sign of a "joke".
02:59:44 <oerjan> yeah bad humor is also a sign of alzheimer. oh wait. and also, i meant autism.
03:00:00 <elliott> Perhaps even a sign of ""satirising"" the ""notion"" of ""a"" """cure""" to """"""""""autism"""""""""" "!!!!!!!"
03:00:04 <elliott> > fix show
03:00:05 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
03:00:13 <oerjan> > fix autism
03:00:14 <lambdabot> Not in scope: `autism'
03:00:54 <Sgeo> > fix pmukt
03:00:54 <lambdabot> Not in scope: `pmukt'
03:00:55 <Sgeo> erm
03:00:57 <Sgeo> > fix pmult
03:00:58 <lambdabot> Not in scope: `pmult'
03:00:59 <pikhq_> > fix ("autism":)
03:01:00 <lambdabot> ["autism","autism","autism","autism","autism","autism","autism","autism","a...
03:01:01 <Sgeo> Wait, no
03:01:08 <pikhq_> > unwords $ fix ("autism":)
03:01:09 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:16 <elliott> Too much autism!
03:01:21 <pikhq_> > unwords$fix("autism":)
03:01:22 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:23 <pikhq_> Better?
03:01:40 <oerjan> @hoogle Monoid m => [m] -> m
03:01:40 <lambdabot> Data.Monoid mconcat :: Monoid a => [a] -> a
03:01:41 <lambdabot> Prelude head :: [a] -> a
03:01:41 <lambdabot> Data.List head :: [a] -> a
03:02:03 * MDude 's head explodes from elliot claiming a trit can be set to 3
03:02:05 <oerjan> there should be a function like mconcat, except which use binary splitup
03:02:05 <elliott> oerjan: fold
03:02:10 <elliott> from Data.Foldable
03:02:20 <oerjan> i don't think that's binary.
03:02:22 <elliott> MDude: It's the brain, man. You can't explain the brain!!!
03:02:26 <oerjan> *uses
03:02:31 <elliott> oerjan: i wrote that before you said that
03:02:34 <elliott> what do you mean by binary splitup?
03:02:46 <elliott> you can certainly write a valid fold that e.g. traverses both branches of a binary tree in parallel
03:02:54 <elliott> f.e.
03:02:58 <elliott> and other similar tricks, by the monoid laws
03:03:25 <elliott> oerjan: also mconcat is a class member of Monoid, so...
03:03:31 <oerjan> elliott: well it was while i was doing modular ^ earlier
03:03:54 <oerjan> elliott: well the thing is it would be nice to be able to it with lists, and also without constructing a tree
03:04:18 <elliott> oerjan: um but you can't really split a list in two and /gain/ efficiency
03:04:26 <elliott> since you don't know where to split until you reach the end
03:04:45 <oerjan> ^ is essentially (foldMap Product .) . replicate
03:04:51 <elliott> heh
03:05:09 <oerjan> elliott: um you can collect in twos. i've written such functions before
03:05:12 <olsner> who put the derp in the herpa-derpa-derp?
03:05:22 <elliott> oerjan: then i don't know what you are trying to say
03:08:36 -!- kallisti has joined.
03:08:36 -!- kallisti has quit (Changing host).
03:08:36 -!- kallisti has joined.
03:08:55 <kallisti> hai
03:09:11 <elliott> oerjan: maybe if you gave an implementation :P
03:10:10 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..10000]
03:10:11 <lambdabot> 284625968091705451890641321211986889014805140170279923079417999427441134000...
03:10:19 <oerjan> > product [1..10000]
03:10:20 <lambdabot> 284625968091705451890641321211986889014805140170279923079417999427441134000...
03:10:23 <oerjan> > product [1..100000]
03:10:27 <lambdabot> mueval-core: Time limit exceeded
03:10:29 <oerjan> > product [1..100000]
03:10:30 <elliott> oic
03:10:33 <lambdabot> mueval-core: Time limit exceeded
03:10:36 <oerjan> oops
03:10:41 <oerjan> > product [1..50000]
03:10:45 <lambdabot> 334732050959714483691547609407148647791277322381045480773010032199016802214...
03:10:53 <oerjan> gah
03:11:07 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..50000]
03:11:08 <lambdabot> 334732050959714483691547609407148647791277322381045480773010032199016802214...
03:11:20 <oerjan> > product [1..100000]
03:11:24 <lambdabot> mueval-core: Time limit exceeded
03:11:28 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..100000]
03:11:29 <lambdabot> 282422940796034787429342157802453551847749492609122485057891808654297795090...
03:11:33 <oerjan> there it worked
03:12:10 <oerjan> hm i guess that's not exactly what ^ needs, though
03:12:46 <oerjan> that's actually a different function which could also be done generically
03:12:59 <oerjan> (and in some way is, but you need a dummy Num instance)
03:18:46 <zzo38> Some functions should be changed from Monad to Applicative, such as sequence
03:19:01 <pikhq_> zzo38: Strongly agree.
03:20:54 <elliott> there's sequenceA
03:21:26 <zzo38> There is no sequenceA in Control.Applicative
03:21:31 <elliott> Data.Traversable
03:21:39 <elliott> because it applies to all kinds of structures
03:22:08 <zzo38> I think guard should also be Alternative instead of MonadPlus, and so on
03:23:13 -!- Darth_Cliche has joined.
03:23:35 <elliott> Welp, who votes I reinstall everything
03:26:30 -!- DCliche has quit (Ping timeout: 240 seconds).
03:43:01 <Sgeo> I vote you read Fine Structure
03:43:06 <Sgeo> And watch Puella Magi Madoka Magica
03:43:12 <Sgeo> And read Homestuck... oh wait
03:44:21 <Madoka-Kaname> > take 10 $ reverse $ show $ product [1..50000]
03:44:25 <lambdabot> "0000000000"
03:44:42 <Sgeo> Madoka-Kaname, do you vote that elliott watch Puella Magi Madoka Magica?
03:44:51 <Madoka-Kaname> I dunno!
03:44:56 -!- elliott has quit (Remote host closed the connection).
03:46:14 <pikhq_> I haven't seen it, so I can't give such a suggestion.
03:52:11 -!- elliott has joined.
03:52:47 <elliott> I wonder why this connection is so unreliable lately.
03:53:48 <oerjan> mgnets.
03:54:05 <oerjan> they also stole my a.
03:54:05 <elliott> wat
03:54:27 <oerjan> i know for a fact that magnets are bad for computers.
03:54:50 <shachaf> Magnets are great for computers.
03:54:50 <elliott> "trust me, I'm a mathematician"
03:55:13 <shachaf> Who's the mathematician here?
03:55:33 <oerjan> no no, i lost nearly all the games for our first computer because of my stupid cousing playing with a magnet.
03:55:46 <oerjan> *-g
03:55:59 <shachaf> oerjan: Just imagine if magnets stopped working, though.
03:56:07 <elliott> shachaf: oerjan has a "Ph.D." in "mathematics".
03:56:08 <shachaf> oerjan: Your computer wouldn't be able to read *any* of the games!
03:56:18 <elliott> If you know what I mean.
03:56:25 <elliott> What I mean is that oerjan has a Ph.D. in mathematics.
03:56:37 <zzo38> Why is there no instance (Enum x) => Enum (Product x)
03:56:38 <shachaf> elliott: He has one, or he is one?
03:56:47 <oerjan> wow, i would never have guessed.
03:56:48 <elliott> shachaf: That's for you to decide and me to find out.
03:56:56 <shachaf> I decide that he is one.
03:57:18 <shachaf> Trust him, he's a doctor (of philosphy).
03:57:39 * elliott finds out.
03:57:40 <oerjan> zzo38: i don't think those Monoid wrappers are really intended to be used as independent data types
03:58:05 <oerjan> just for passing to Data.Monoid functions, which don't care about Enum
03:58:23 <oerjan> oh and Foldable.
03:58:36 <elliott> oerjan: well it makes sense to at least give them Functor instances
03:58:48 <elliott> Applicative too
03:59:15 <shachaf> Monad, while you're at it.
04:00:13 <elliott> shachaf: That makes... slightly less sense. Although Applicative is questionable too.
04:00:29 <elliott> Product (a -> b) is "interesting" if you don't have one of them fancy Num (->) instances.
04:00:50 <shachaf> elliott: I wasn't the one who brought up "sense".
04:06:27 -!- oerjan has quit (Remote host closed the connection).
04:07:02 -!- oerjan has joined.
04:12:05 <Gregor> <shachaf> Trust him, he's a doctor (of philosphy). // Then he IS a D.Ph., he HAS a Ph.D.
04:12:39 <oerjan> technically i have a "Ph.D", aka Dr. Scient.
04:12:42 <shachaf> Gregor: Doctor of Philosophy, abbreviated as Ph.D., PhD, D.Phil., or DPhil
04:13:33 <elliott> pikhq_: Hmm, my torrent client does indeed record a 16 meg upload of random.
04:13:46 <elliott> 5 days ago, apparently.
04:13:47 -!- salisbury has joined.
04:13:54 <shachaf> By the way, did I mention how there's currently a warrant for my arrest in Finland?
04:14:46 <elliott> `welcome salisbury
04:14:46 <elliott> shachaf: Seriously?
04:14:48 <HackEgo> salisbury: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
04:15:05 <salisbury> hey thanks
04:15:05 <shachaf> elliott: Yep.
04:15:12 <shachaf> As of Dec 15.
04:15:15 <salisbury> shachaf: I think I'm going to like this channel
04:15:18 <Gregor> shachaf: Doesn't matter, I hear Finland is very depressing and a bit of a gulag.
04:15:39 <elliott> shachaf: Did you smile.
04:15:48 <shachaf> Gregor: It's a nice place, man. Lots of lakes.
04:15:49 <elliott> You should know never to smile in Finland.
04:15:54 <Gregor> salisbury: You can thank for the welcome, but it's there to scare away people who come in looking for astral projection
04:15:56 -!- kallisti has quit (Quit: Lost terminal).
04:16:05 <elliott> Gulakes(ag).
04:16:19 <shachaf> elliott: They sent me a booklet about my exciting future as a Finnish soldier, and a bunch of the people in it were smiling!
04:16:29 <Gregor> elliott: Note: I tried to put a tongue smiley on my last line and my IRC client removed it. I'm becoming less smiley-dependent already!
04:16:30 <elliott> Yes. We have to make sure they're *determined* to stay on the path before revealing things like THAT.
04:16:44 <salisbury> astral projection?
04:16:50 <elliott> Gregor: Somehow the sentence loses nothing for it.
04:16:57 <Gregor> elliott: Exactly!
04:17:10 <monqy> salisbury: some people are confused and think esoteric means anything but programming languages and also what happens in this channel
04:17:10 <elliott> salisbury: http://en.wikipedia.org/wiki/Esotericism is relevant :p
04:17:21 <Gregor> It is NOT relevant to this channel though >_>
04:17:34 <elliott> Well, it's about as relevant as what we usually talk about.
04:17:36 <elliott> But: less interesting.
04:18:50 <elliott> shachaf: So why do they have a warrant for your arrest?
04:19:04 <elliott> Did they draft you or something? I hear Finland does that because it's very depressing and a bit of a gulag.
04:19:10 <shachaf> elliott: They did draft me.
04:19:18 <shachaf> That's because they weren't aware I was a citizen of any other countries.
04:19:23 <elliott> X-D
04:19:24 <shachaf> (Which I am. Two others.)
04:19:40 <elliott> You just need to get drafted simultaneously in those ones too.
04:19:40 <Gregor> They draft everyone. I assume you're an expatriot then? Also I thought it didn't matter, they drafted all citizens regardless.
04:19:46 <zzo38> A lot of things are in this channel. The main topic is esoteric computer programming but a lot of other things are discussed, which might, in some cases, have a small amount to do with such things. But if you have message about esoteric programming then please do so.
04:19:56 <elliott> Gregor: Expatriot :D
04:19:57 <shachaf> Gregor: They don't draft you if you're a US citizen living in the US.
04:20:23 <Gregor> elliott: I CHOOSE TO STICK WITH MY TYPO.
04:20:23 * shachaf also enjoys "expatriot".
04:20:27 <Gregor> elliott: HE IS NO LONGER A PATRIOT.
04:20:41 -!- itidus21 has quit (Read error: Connection reset by peer).
04:25:05 <salisbury> Wow, there are a lot of programming languages I had no clue about..
04:25:38 <monqy> most are bad
04:26:31 <shachaf> All are bad.
04:26:36 <salisbury> I see someone put Lisp on there under its development code-name, Parenthesis Hell.
04:27:02 <elliott> salisbury: Don't be silly, people wrote m-expressions back then.
04:27:13 <elliott> (Well, okay, they *didn't* and that's why m-exprs never took off.)
04:27:14 <monqy> bracket hell
04:27:40 <shachaf> Did you hear the theory of how the progress of computer programming involves moving parentheses further and further to the right?
04:28:12 <elliott> No, but I'm sure you're about to tell us.
04:28:21 <zzo38> The esoteric programming involves a few experimental things, or themed, or joke, or whatever. Instead of being constraint to the purpose of programming, it can be not constrainted to actual use. Some esoteric programming can even be uncomputable
04:28:33 <shachaf> elliott: If you'd said "yes", I wouldn't've.
04:28:44 <elliott> shachaf: And I wouldn't have been sure!
04:29:02 <elliott> Allow me be the first to say, "um, DUH?".
04:29:07 <elliott> *me to
04:29:16 <shachaf> The general idea goes that first you had (f x y); then that turned into f(x, y); and then with OO that turned into x.f(y).
04:29:27 <shachaf> There was more to the theory but I've forgotten it.
04:29:40 <elliott> x.f y ()
04:29:53 * elliott *slightly* suspects f(x, y) predates (f x y). :p
04:29:55 <monqy> x..............fy)(
04:30:04 <shachaf> elliott: Be quiet.
04:30:13 <monqy> )x.f.y(
04:30:14 <shachaf> Plagiarist.
04:30:19 <elliott> I'm speaking really quietly, your IRC client is just amplifying it.
04:30:26 <monqy> )(x)(f)(y)(
04:30:34 <shachaf> elliott: Too many capital letters.
04:31:18 <elliott> Maybe I should just bite the bullet and die of something-or-other poisoning; i.e. actually boot this installation non-CD.
04:32:50 <shachaf> elliott: What's non-CD about it?
04:32:58 <shachaf> Is it compact? Is it a disc?
04:33:24 <elliott> Well, it's not a disc, it's not optical, it's not all *that* compact, and it's not going into a CD drive.
04:33:52 <shachaf> elliott: Is it more compact than a CD?
04:34:02 <shachaf> Fine, it's not a disc. Is it a disk?
04:34:09 <elliott> No. And yes.
04:34:43 <monqy> disq
04:35:08 <oerjan> we must therefore invent a language in which all the parentheses are put at the end, after the rest of the code.
04:35:48 <monqy> , name it after shachaf
04:35:57 <elliott> oerjan: f g h x y z (((,),,))
04:36:04 <elliott> erm
04:36:05 <elliott> oerjan: f g h x y z (((,),))
04:36:09 <elliott> == f(g(h(x,y),z))
04:36:11 <salisbury> oh, lambdabot is in here too
04:36:15 <oerjan> elliott: sorry, no commas allowed after parentheses
04:36:27 <elliott> oerjan: ok do currying then
04:36:42 <salisbury> > putStrLn "hey, what's up man?"
04:36:43 <lambdabot> <IO ()>
04:36:46 <salisbury> ..
04:36:55 <elliott> oerjan: oh that breaks down a bit
04:36:56 <oerjan> !haskell putStrLn "hey, what's up man?"
04:36:59 <EgoBot> hey, what's up man?
04:37:00 <elliott> salisbury: lambdabot doesn't allow IO.
04:37:54 <elliott> shachaf: So apparently the GHC devs fixed that type family bug by making the type-signatureless function fail to compile.
04:37:57 <shachaf> > unsafePerformIO $ putStrLn " <IO ()>" -- You have to know how to do it.
04:37:58 <lambdabot> <IO ()>
04:38:02 <shachaf> elliott: Makes sense.
04:38:07 <elliott> shachaf: It does?
04:38:10 <oerjan> f g h x y z (((()())()))
04:38:12 <salisbury> > unsafePerformIO (putStrLn "hey, whats up man")
04:38:13 <lambdabot> <IO ()>
04:38:16 <shachaf> elliott: Yes.
04:38:20 * elliott would generally expect "f x = g x" to always work.
04:38:24 <elliott> Assuming g is a function.
04:38:28 <elliott> Which it unambiguously is, here.
04:38:40 <shachaf> elliott: Is there no way to break it with Rank-N types or something?
04:38:44 <elliott> Or, for the even simpler case, that "y = x" would always work.
04:38:47 <shachaf> salisbury: lambdabot is subtly hinting that you're trying to print the wrong thing.
04:38:51 <elliott> Where x has any type, I mean come on.
04:38:58 <elliott> I doubt you can break _that_ with rank-N types.
04:39:05 <shachaf> elliott: It's, like, linear types, man.
04:39:20 <Sgeo> > unsafePerformIO $ text "Testing"
04:39:22 <lambdabot> Testing
04:39:29 <salisbury> !!
04:39:40 <monqy> is unsafeperformio = id
04:39:53 <monqy> ??
04:40:27 <elliott> shachaf is doing this thing called ``trolling''.
04:40:33 <shachaf> elliott: No I'm not!
04:40:51 <salisbury> I'll admit, he's got me on this one
04:41:04 <oerjan> :t unsafePerformIO
04:41:05 <lambdabot> forall a. a -> a
04:41:10 <Sgeo> I shouldn't have done that, I think I gave it away
04:41:10 <elliott> @undefine
04:41:15 <salisbury> > unsafePerformIO $ text "hey, what's up hermaphrodite"
04:41:16 <lambdabot> Not in scope: `unsafePerformIO'
04:41:20 <elliott> @let unsafePerformIO = undefined
04:41:20 <lambdabot> <local>:2:0:
04:41:20 <lambdabot> Multiple declarations of `L.unsafePerformIO'
04:41:20 <lambdabot> Declared...
04:41:26 <elliott> shachaf: Oi.
04:41:26 <shachaf> Too late. :-(
04:41:48 <Sgeo> > text "Lambdabot prints Docs as you see"
04:41:49 <lambdabot> Lambdabot prints Docs as you see
04:41:49 <Sgeo> :t text
04:41:50 <lambdabot> String -> Doc
04:42:01 <salisbury> Sgeo you magic
04:42:09 <Sgeo> My unsafePerformIO was just an attempt to continue the trolling
04:42:25 <shachaf> > text "a\nb"
04:42:26 <lambdabot> a
04:42:26 <lambdabot> b
04:42:41 <shachaf> > text "\n"
04:42:42 <lambdabot> Terminated
04:42:44 <shachaf> > text "\n"
04:42:44 <lambdabot> Terminated
04:42:48 <shachaf> > text "a\n\nb"
04:42:49 <lambdabot> a
04:42:49 <lambdabot>
04:42:49 <lambdabot> b
04:42:52 <Sgeo> > text "\nbluh"
04:42:53 <lambdabot> bluh
04:43:36 <monqy> > text $ interleave (repeat 'a') (repeat '\n')
04:43:40 <lambdabot> mueval-core: Time limit exceeded
04:43:42 <monqy> :0
04:43:59 <oerjan> > var $ interleave (repeat 'a') (repeat '\n')
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:02 <lambdabot> [21 @more lines]
04:45:11 <elliott> @more
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:13 <lambdabot> [16 @more lines]
04:45:15 <elliott> @more
04:45:15 <lambdabot> a
04:45:17 <lambdabot> a
04:45:19 <lambdabot> a
04:45:19 <shachaf> How unpredictable!
04:45:21 <lambdabot> a
04:45:23 <lambdabot> a
04:45:25 <lambdabot> [11 @more lines]
04:45:27 <elliott> @more
04:45:27 <lambdabot> a
04:45:29 <lambdabot> a
04:45:31 <lambdabot> a
04:45:33 <lambdabot> a
04:45:35 <lambdabot> a
04:45:37 <lambdabot> [6 @more lines]
04:45:39 <elliott> @more
04:45:40 <lambdabot> a
04:45:41 <lambdabot> a
04:45:43 <lambdabot> a
04:45:45 <lambdabot> a
04:45:47 <lambdabot> a
04:45:48 <Sgeo> Let me guess? More 'a's?
04:45:49 <lambdabot> ...
04:45:55 <elliott> The surprising end!
04:46:11 <Sgeo> I have such perfectly bad timing
04:46:35 <elliott> oerjan: Nice trick to get an infinite Doc, though
04:46:42 <elliott> Since widths are per-unit-of-text-thing
04:47:18 <oerjan> :t var
04:47:19 <lambdabot> forall a. String -> Sym a
04:47:31 <elliott> [elliott@dinky ~]$ pacman -Qe | wc -l
04:47:31 <elliott> 218
04:47:34 <elliott> That's not many, right???
04:47:38 <elliott> oerjan: oh :P
04:47:42 <elliott> oerjan: well i think you could do it
04:47:45 <elliott> with the vertical layout operator
04:47:55 <oerjan> if you say so
04:47:55 <monqy> :t ($$)
04:47:56 <lambdabot> Doc -> Doc -> Doc
04:48:35 <monqy> > foldl1 ($$) (repeat 'a')
04:48:35 <lambdabot> Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc'
04:48:36 <lambdabot> agains...
04:48:38 <monqy> oop
04:48:51 <monqy> > foldl1 ($$) (repeat (text "a"))
04:48:56 <lambdabot> mueval-core: Time limit exceeded
04:49:04 <monqy> creys
04:49:11 <oerjan> monqy: foldl1 never is lazy
04:49:11 <elliott> crey mainframe :(
04:49:14 <monqy> oh
04:49:15 <monqy> :(
04:49:19 <elliott> oerjan: er are you sure
04:49:23 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:49:24 <elliott> > foldl1 f (repeat x)
04:49:28 <elliott> oh
04:49:28 <lambdabot> mueval-core: Time limit exceeded
04:49:28 <lambdabot> mueval-core: Time limit exceeded
04:49:29 <elliott> foldl
04:49:29 <elliott> rite
04:49:35 <oerjan> not that it helped
04:49:38 <elliott> there is an empty :: Doc, btw :P
04:49:40 <elliott> or mempty :: Doc
04:49:47 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:49:51 <lambdabot> mueval-core: Time limit exceeded
04:50:00 <oerjan> it doesn't look like it helps, anyway
04:50:38 <oerjan> > foldr1 ($$) (replicate 10 (text "a"))
04:50:39 <elliott> hmm, 188 in 19
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:43 <lambdabot> [5 @more lines]
04:50:57 <elliott> yay
04:51:01 <elliott> oh
04:51:02 <elliott> nay
04:51:03 <elliott> @more
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:11 <Sgeo> :t ($$)
04:51:14 <lambdabot> Doc -> Doc -> Doc
04:51:37 <Sgeo> elliott, update
04:51:44 <elliott> oerjan: http://www.reddit.com/r/haskell/comments/nfyvy/instance_monad_ziplist_where/
04:56:28 <elliott> I think I crushed oerjan.
04:56:44 <monqy> rip
04:56:55 <copumpkin> why?
04:57:16 <elliott> copumpkin: he's been maintaining that ZipList is a monad for ages now :)
04:57:22 <oerjan> well because i have several times claimed that ZipList _can_ be a Monad
04:57:29 <copumpkin> it is if you have constraints on the list
04:57:33 <elliott> no shit
04:57:42 <oerjan> i don't think that's needed.
04:57:56 <elliott> oerjan: http://stackoverflow.com/questions/6463058/help-on-writing-the-colist-monad-exercise-from-an-idioms-intro-paper seems to have a lot more info, including some from McBride
04:58:09 <oerjan> i'm already on that page.
04:58:12 <copumpkin> it is needed
04:58:35 <elliott> copumpkin: well afaik nobody has actually proved it, at least not publically
04:58:41 <elliott> and oerjan has a definition he think works
04:58:56 <copumpkin> pure produces an infinite list?
04:59:00 <copumpkin> I guess it already did
04:59:02 -!- augur has quit (Remote host closed the connection).
04:59:10 <elliott> copumpkin: yes, what use would ziplist be otherwise
04:59:15 <elliott> f <$> xs <*> ys
04:59:30 <copumpkin> how do you write join if you have no guarantee the intermediate list contains anything at all?
04:59:48 <elliott> i can dig up oerjan's definition if you want
04:59:49 <oerjan> `log zjoin
04:59:53 <elliott> it satisfied the easier monad laws
04:59:54 <copumpkin> oerjan: oh, I see
05:00:04 <copumpkin> cthulhu does too
05:00:08 <elliott> wat
05:00:17 <HackEgo> 2011-11-30.txt:10:01:44: <elliott> oerjan: yes, I am sure that zjoin works fine in the theory you have used to create it :P
05:00:22 <oerjan> argh
05:00:24 <elliott> zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:00:28 <elliott> copumpkin: there you go
05:00:29 <oerjan> thanks
05:00:42 <copumpkin> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:00:44 <lambdabot> Defined.
05:00:48 <copumpkin> :t zjoin
05:00:49 <lambdabot> forall a. ZipList (ZipList a) -> ZipList a
05:01:00 <elliott> TEST 1: passed
05:01:04 <oerjan> XD
05:01:12 * elliott thinks quickcheck could be useful here.
05:01:35 <copumpkin> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:01:39 <lambdabot> mueval-core: Time limit exceeded
05:01:43 <elliott> lol
05:01:46 <elliott> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:01:49 <lambdabot> mueval-core: Time limit exceeded
05:01:53 <oerjan> wat
05:02:07 <elliott> Prelude Control.Applicative> let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:02:08 <elliott> Prelude Control.Applicative> getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:02:08 <elliott> []
05:02:09 <elliott> yw
05:02:13 <elliott> bit of a hard computation
05:02:38 <shachaf> @check \x -> True
05:02:38 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
05:02:44 <elliott> :D
05:03:07 <elliott> Cale broke something when reinstalling lambdabot's dependencies, I guess
05:03:20 <oerjan> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) -- how does this manage to break lambdabot
05:03:22 <lambdabot> []
05:03:26 <oerjan> ah.
05:04:10 <elliott> @check is this fixed yet
05:04:10 <lambdabot> Not in scope: `myquickcheck'Not in scope: `is'Not in scope: `this'Not in sc...
05:04:13 <elliott> OH GOOD
05:04:14 <elliott> @check )
05:04:15 <lambdabot> Unbalanced parentheses
05:04:21 <elliott> @check ")"
05:04:21 <lambdabot> Not in scope: `myquickcheck'Not in scope: `$'
05:04:24 <elliott> X-D
05:05:29 <shachaf> @check ")" where x$y=x y
05:05:30 <lambdabot> Parse error at "where" (column 5)
05:06:01 <elliott> It probably parses your expression to check it's valid first.
05:11:05 <elliott> pikhq_: Can you dd this ISO file to my USB drive for me?
05:23:00 -!- augur has joined.
05:24:48 <oerjan> so afaiu the monad law which is in doubt is zjoin . fmap zjoin = zjoin . zjoin
05:25:13 <oerjan> *sigh*
05:27:49 <zzo38> If all lists are of same length, then you can join because it is like (->) monad
05:28:36 <elliott> oerjan: sounds difficult :P
05:28:41 <elliott> to prove, I mean
05:28:50 <salisbury> when ever I think Im getting my mind around Haskell, someone goes any types something like let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:29:42 <salisbury> and*
05:29:55 <oerjan> elliott: well i _think_ that the nth element of each of those lists only exists when the (x,y,z)'th element of the original matrix exists for all x,y,z <= m, and when it does it's of course the (m,m,m)'th element.
05:30:10 <oerjan> s/only exists/exists precisely when/
05:31:42 -!- MDude has changed nick to MSleep.
05:32:00 <oerjan> er
05:32:11 <oerjan> s/\<m\>/n/g
05:32:23 <elliott> salisbury: Don't worry, oerjan is just terrible at Haskell.
05:32:51 <oerjan> D:
05:33:09 <elliott> (By "terrible" I of course mean "amazing".)
05:33:15 <elliott> (by "amazing" I mean terrible)
05:33:18 <elliott> (it's code)
05:33:20 <elliott> (secret code)
05:33:35 <salisbury> s/terribly amazing/amazingly terrible
05:33:47 <salisbury> I don't even know what "s/something/something else" means
05:34:25 <oerjan> salisbury: it's vi substitution command
05:34:30 <salisbury> I'm guessing it is not a perl regex
05:34:35 <elliott> You forgot the last /.
05:34:45 <elliott> It has the same semantics as Perl s///, it's just fuzzier. :p
05:34:49 <elliott> oerjan: *ed
05:34:56 <oerjan> ah.
05:35:11 <Sgeo> salisbury, do you understand chains of function composition?
05:35:15 <oerjan> don't count on me using consistent regex syntax as well
05:35:20 <salisbury> yes
05:37:34 <salisbury> I just don't really understand what that particular chain is supposed to accomplish
05:38:51 <Sgeo> I haven't looked it closely enough
05:39:03 <Sgeo> I know more than most beginners, I think, but I'm no expert
05:39:44 <elliott> remember that time when you wrote cat in haskellg
05:39:46 <elliott> good times, good time
05:39:47 <elliott> s
05:39:50 <elliott>
05:40:14 <elliott>
05:40:30 <Sgeo> Let me paste my recent code
05:40:33 <elliott> pikhq_: Does C seriously not guarantee anything about float/double semantics
05:40:48 <Sgeo> Not that it's not bad
05:41:01 <Sgeo> And some of the comments are obsolete
05:41:09 <oerjan> salisbury: well the diag is taking the diagonal of a list of lists. the scanl1 (zipWith (flip const)) is to fix a problem with the monad laws for ZipList if you do it naively.
05:41:22 <oerjan> *diag function
05:41:30 <elliott> oerjan: the (>>=) in the reddit post I linked looked like the (>>=) for your zjoin
05:41:31 <elliott> but I'm not sure
05:42:13 <Sgeo> http://hpaste.org/55359
05:42:56 <Sgeo> I'm aware that one of the "Dealing with Lazy I/O" lines is probably unnecessary
05:42:59 <Sgeo> as is the return ()
05:43:58 <elliott> The "huge trick"?
05:44:01 <Sgeo> I was pretending to myself that I might show this to non-Haskellers at some point
05:44:10 <elliott> "main should always be IO ()" False.
05:44:29 <Sgeo> elliott, there's something on the wiki with a function that will read a marked comment in the source
05:44:34 <elliott> (print =<<) $ putlines ftpConn "populate.php" . lines . buildPHP $ files -- print in the hopes that it forces the entire thing to go through
05:44:37 <elliott> s/$/./
05:44:47 <elliott> Sgeo: Uhh, Haskell is a compiled language.
05:45:12 <Sgeo> Nevertheless
05:45:13 <Sgeo> http://www.haskell.org/haskellwiki/Poor_man's_here_document
05:45:15 <elliott> Sgeo: Also theg enerated code has a massive security hole.
05:45:17 <elliott> *the generated
05:45:36 <elliott> Sgeo: And that page should be deleted, it's completely unjustifiable to do that.
05:46:13 <Sgeo> elliott, hmm? Well, the page is visited once then deleted
05:46:15 <Sgeo> But what is it?
05:46:32 <elliott> insertFile file = "$query = \"INSERT INTO sg_songs (path) VALUES ('" ++ file ++ "')\";\n" ++ performQuery
05:46:40 <Sgeo> Oh
05:46:41 -!- oerjan has quit (Remote host closed the connection).
05:47:19 <elliott> http://hpaste.org/55354 ;; the difference is the difference between fmap and (=<<).
05:47:36 <Sgeo> elliott, #haskell helped me with that earlier
05:48:48 <Sgeo> elliott, in fairness wrt the SQL injection, it's a one-off script that could only have been exploited by someone knowing that I was generating the page, then visiting the generated page before I had a chance to vet it then run it
05:48:57 <Sgeo> And who had access to my FTP
05:49:09 <elliott> Sgeo: Yes, "it's not a security hole until it bites me" is a common sentiment.
05:49:10 <Sgeo> But that's how these things start, isn't it?
05:49:55 <elliott> Does anyone know a convenient way to sort a list of human file sizes?
05:49:59 <elliott> i.e. 1.9M vs. 124K.
05:50:41 <Sgeo> Is the _ <- stuff ok or bad?
05:50:53 <elliott> It's fine. You can use Control.Monad.void if you want.
05:51:08 <elliott> That also lets you reduce do { _ <- m; return () } -> void m
05:51:42 <zzo38> It could use (() <$ m) for any functors
05:55:02 <Sgeo> elliott, fun fact, that hope that the print would force the entire thing to go through, instead of cutting stuff off: It worked.
05:55:13 <Sgeo> I do not like this library.
05:55:31 <Sgeo> @hoogle a -> IO ()
05:55:33 <lambdabot> Control.Concurrent.SampleVar writeSampleVar :: SampleVar a -> a -> IO ()
05:55:33 <lambdabot> Control.Concurrent.MVar putMVar :: MVar a -> a -> IO ()
05:55:33 <lambdabot> Data.IORef writeIORef :: IORef a -> a -> IO ()
05:55:44 <Sgeo> Someone showed me a function that would do similar
05:55:48 <Sgeo> @hoogle evaluate
05:55:49 <lambdabot> Control.Exception.Base evaluate :: a -> IO a
05:55:49 <lambdabot> Control.Exception evaluate :: a -> IO a
05:55:49 <lambdabot> Control.OldException evaluate :: a -> IO a
05:58:49 <elliott> Sgeo: ITT: deepseq
06:00:00 <Sgeo> elliott, I think I'd have to combine deepseq with evaluate, otherwise the deepseqing itself won't be evaluated, I think
06:00:29 <Sgeo> Or is fully evaluated later than I want
06:00:30 <elliott> xs `deepseq` return (), but that's just the same as evaluate xs, modulo exceptions.
06:00:49 <elliott> erm
06:00:52 <elliott> *evaluate (deepseq xs)
06:00:58 <elliott> erm
06:00:59 <elliott> *evaluate (rnf xs)
06:01:01 <elliott> dur
06:01:07 <elliott> where deepseq a b = rnf a `seq` b
06:01:23 <Sgeo> evaluate (force xs)?
06:01:27 <elliott> What is force
06:01:39 <elliott> (evaluate (rnf a) is equal to (a `seq` return a) >>= return, not (a `seq` return a). If you didn't jump, you don't know Haskell yet.)
06:01:42 <elliott> Erm
06:01:46 <elliott> (evaluate (rnf a) is equal to (rnf a `seq` return a) >>= return, not (rnf a `seq` return a). If you didn't jump, you don't know Haskell yet.)
06:01:49 <elliott> Blah blah blah
06:03:03 <Sgeo> rnf returns a ()
06:03:08 <Sgeo> wow, returns is a bad word
06:03:15 <Sgeo> rnf :: a -> ()
06:03:19 <elliott> OK fine
06:03:21 <Sgeo> (ok, not quite)
06:03:30 <elliott> (evaluate (rnf a) is equal to (rnf a `seq` return ()) >>= return, not (rnf a `seq` return ()). If you didn't jump, you don't know Haskell yet.)
06:03:46 <Sgeo> "jump"?
06:03:47 <elliott> AKA evaluate (rnf a) is equal to (deepseq a (return ()) >>= return), not (deepseq a (return ())).)
06:03:52 <elliott> Sgeo: Yep.
06:04:00 <elliott> There is a very obvious, very terrible thing there, and you are completely missing it.
06:04:04 <Sgeo> If by that, you mean wondering what the difference is
06:04:13 <elliott> There is no difference; that's one of the monad laws.
06:04:17 <elliott> m >>= return = m.
06:05:04 <Sgeo> I was more confused than startled
06:07:46 <shachaf> > (undefined >>= return :: a -> b) `seq` 1
06:07:46 <lambdabot> 1
06:09:47 <Sgeo> elliott, so why is evaluate (rnf a) one but not the other of things that are equivalent?
06:10:57 <elliott> > let eval x = x `seq` return x in eval undefined `seq` ()
06:10:58 <lambdabot> Ambiguous type variable `m' in the constraint:
06:10:58 <lambdabot> `GHC.Base.Monad m'
06:10:58 <lambdabot> a...
06:11:03 <elliott> >_<
06:11:07 <elliott> > let eval :: a -> IO a; eval x = x `seq` return x in eval undefined `seq` ()
06:11:08 <lambdabot> *Exception: Prelude.undefined
06:11:13 <elliott> > let eval :: a -> IO a; eval x = (x `seq` return x) >>= return in eval undefined `seq` ()
06:11:14 <lambdabot> ()
06:11:43 <elliott> Hint: seq is the only thing that lets you distinguish (const _|_) from _|_, and in GHC, IO is implemented with a function inside.
06:13:40 <salisbury> ok, hoogle doesn't let me do _|_..
06:13:53 <Sgeo> salisbury, _|_ is another name for bottom
06:13:55 <elliott> salisbury: _|_ is any bottom value.
06:14:01 <elliott> e.g. undefined, or fix id, or error "hi".
06:14:04 <Sgeo> And you can use error or undefined as a convenient way to make bottom
06:14:22 <zzo38> I have a function (x -> Natural) for a bounded enumeration x and want to make list of all functions of the same type that their output does not exceed the output of the original function for each input.
06:14:25 <Sgeo> Does the runtime detect fix id as <<loop>>?
06:14:55 <elliott> Sgeo: I believe so.
06:15:01 <elliott> fix id
06:15:06 <elliott> let x = id x in x
06:15:12 <elliott> let x = x in x
06:15:17 <elliott> That's a pretty obvious BLACKHOLEy type thing.
06:15:22 <elliott> I don't know the actual terminology.
06:15:34 <elliott> I think the threaded runtime doesn't detect <<loop>> at all, though.
06:16:09 <salisbury> oh no.. I use that
06:16:11 <zzo38> How can I make a function to make such a list?
06:16:34 <elliott> salisbury: ?
06:16:49 <salisbury> I use the threaded runtime
06:17:08 <elliott> salisbury: You don't care about <<loop>> detection.
06:17:10 <elliott> It's just a cheap trick.
06:17:12 <Sgeo> salisbury, so you lose a minor bragging point
06:17:17 <Sgeo> over other languages
06:17:22 <Sgeo> Not a big deal, I think
06:29:36 <shachaf> elliott: It does.
06:29:42 <elliott> Oh, okay.
06:29:45 <shachaf> elliott: But only on GC, or something like that.
06:29:49 <elliott> Heh.
06:29:55 <shachaf> Whereas the non-threaded one detects it immediately.
06:29:56 <elliott> I don't think fix id allocates.
06:31:19 <shachaf> elliott: Does that matter?
06:31:27 <elliott> Well, no. But that's what we were talking about.
06:31:29 <shachaf> When the thread tries to evaluate the BLACKHOLE, it'lll get suspended.
06:33:00 <elliott> GHC GCs while not doing anything?
06:33:39 <shachaf> That's the best time to GC, obviously. :-)
06:33:56 <shachaf> kmc might know the details of this.
06:37:43 <elliott> I'm disappointed in you all for not making me boot this installation media.
06:38:50 <shachaf> elliott: I'm disappointed in y'all for saying "this ... media".
06:38:58 <shachaf> If it wasn't for this annoying grammatical nitpick I would've done it.
06:39:19 <elliott> Hmm.
06:39:34 <elliott> Installation media is a set of {installation CD, installation HD, ...}.
06:39:41 <elliott> Yes, you're right, it should be "medium".
06:39:43 <elliott> *medium
06:39:45 <shachaf> (And now for elliott to comment on "wasn't".)
06:39:54 <elliott> Not "y'all"?
06:40:05 <shachaf> No, "y'all" is an abbreviation for "you all".
06:40:10 <shachaf> It's an accepted one.
06:40:13 <elliott> I'm one person, shachaf.
06:40:15 <elliott> Usually.
06:40:23 <kmc> omfgwhat
06:40:25 <shachaf> elliott: This is where we disagree.
06:40:32 <kmc> black holes and revelations
06:40:34 <elliott> Dammit, the elliott cabal has been revealed.
06:40:44 <shachaf> elliott bourbaki
06:40:56 <elliott> kmc: hi.
06:41:02 <kmc> hi elliott
06:41:04 <kmc> helliott
06:41:11 <elliott> Hi shachaf. Hachaf.
06:41:25 -!- elliott has quit (Quit: shift change for elliott bourbaki).
06:41:26 <shachaf> Bless you, elliott. Blelliott.
06:41:29 <shachaf> That's a fun word.
06:42:33 <kmc> how come you all talk about haskell all the time
06:42:37 <kmc> is it the best esoteric language
06:42:59 <shachaf> kmc: #haskell is too full of monad jokes.
06:43:07 <kmc> what's the best language if im' drunk
06:43:09 <shachaf> This is our escape.
06:43:35 <shachaf> kmc: "I'm drunk". That would be a good keyword for gmail to look for.
06:43:59 <shachaf> WHOA, DUDE. KEYWORD ~ PASSWORD
06:44:02 <kmc> http://www.sparkfun.com/products/8880
06:44:35 <kmc> here this should help http://lusorobotica.com/index.php/topic,111.0.html
06:45:11 -!- PiRSquared17 has left.
06:45:15 <shachaf> My head just started seriously hurting. :-(
06:46:13 <kmc> sux
06:46:53 <kmc> chemical warfare, chemical warfare, chemical warfare warfare warfare
06:48:27 <salisbury> keep that up and we'll have a Stop IRC Violence Act by this time next month
06:50:06 <zzo38> Do you know what is the best way to make a function that will make a list of all function the output does not exceed the output of the original function for each input that it can be given?
06:50:53 <kmc> has anyone really been far even as decided to use even go want to do look more like?
06:52:23 <zzo38> kmc: That seems a difficult question that I don't know the answer.
06:52:47 <kmc> there's no escaping from ohio
06:53:03 -!- elliott has joined.
06:53:13 <zzo38> Look more like what?
06:55:48 -!- Ngevd has joined.
06:58:51 <elliott> wait where did oerjan go
06:59:01 <Ngevd> Hexham
06:59:08 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:59:11 <Ngevd> Where I will now go
06:59:13 -!- Ngevd has quit (Client Quit).
07:00:55 <kmc> jupiter and beyond the infinite
07:01:30 <elliott> I have this weird suspicion that kmc isn't entirely sober right now.
07:02:06 <kmc> it's illegal to be drunk on the internet
07:02:09 <kmc> we all know that
07:02:15 <elliott> Yes.
07:02:16 <elliott> Yes it is.
07:04:53 <kmc> 1 result (0.27 seconds)
07:05:27 <elliott> It's a well-guarded secret that we all know.
07:09:27 <zzo38> Jupiter is too far away, isn't it?
07:10:17 <kmc> yes
07:11:01 <salisbury> no actually, if you use the teleport monad
07:11:20 <salisbury> it's undocumented though
07:12:06 <salisbury> >>= :: :: Monad m => m a -> (a -> m b) -> Jupiter
07:12:26 <salisbury> yes, I did mean to type :: twice
07:12:50 <shachaf> The bane of kmc has reached us, even here.
07:13:52 <kmc> (::) :: Term → Type → Decl
07:14:09 -!- kmc has left ("Leaving").
07:14:13 -!- kmc has joined.
07:14:30 <kmc> shachaf, it's your fault really
07:14:48 <shachaf> It is?
07:15:00 <kmc> you summoned me here
07:15:04 <shachaf> I did?
07:15:12 <kmc> <shachaf> kmc might know the details of this.
07:15:15 <shachaf> You mean during the BLACKHOLE discussion?
07:15:16 <shachaf> Ah.
07:15:20 <shachaf> You were already in this channel.
07:15:21 <kmc> the blackest of holes
07:15:25 <kmc> yeah
07:15:28 <kmc> i forgot why
07:16:05 <shachaf> Probably to talk about @.
07:16:26 <Sgeo> kmc, loop detection in threaded runtime
07:16:38 <kmc> yeah i dunno how that shit works
07:17:08 <Sgeo> elliott, did I just talk to you in another channel?
07:17:18 <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:38 <shachaf> `addquote <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:41 <Sgeo> elliott, fun fact: I just confused you with someone else.
07:17:44 <HackEgo> 767) <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:45 <kmc> 10 parts sugar, 90 parts whiskey
07:17:52 <elliott> Sgeo: Cool.
07:18:13 <shachaf> "Hearts full of youth / Hearts full of truth / Six parts gin to one part vermouth"
07:19:09 <zzo38> (Distance from the Earth)
07:21:17 <zzo38> Distance from sun is 4.97
07:22:02 * kmc slept through all the lectures but did not cheat on the exams
07:22:34 <zzo38> Average distance from sun is 5.203
07:23:13 <zzo38> Or, at least, this is what it says on the computer.
07:23:15 <salisbury> salisbury doesn't know how to do that thing kmc just did
07:23:52 <salisbury> salisbury also is a chemical pharmacology student and wishes he did comp sci. formally......
07:24:15 <kmc> pharmacology?!?!?!?
07:24:21 <kmc> that's way the fuck better than CS
07:24:47 <salisbury> yeah, but you folks know all this amazing haskell shit
07:24:51 <shachaf> salisbury: /me ...
07:25:01 <shachaf> salisbury: You don't need to be a formal CS student for that.
07:25:04 <kmc> yeah but you can synthesize novel 5HT subtype-selective receptor agonists
07:25:17 <salisbury> yes
07:25:19 <salisbury> well,
07:25:20 <salisbury> no
07:25:21 <salisbury> but
07:25:24 <salisbury> in theory
07:25:32 <kmc> plz
07:25:49 <Sgeo> salisbury, repeat after me
07:25:55 <Sgeo> /me just learned how to /me
07:26:06 * salisbury just learned how to /me
07:26:08 <salisbury> yay
07:26:12 <elliott> elliott thinks referring to yourself in the third person is just dandy.
07:26:33 <shachaf> elliott: If first -> third, you should second -> first.
07:26:49 <elliott> Quite.
07:27:06 <elliott> But also I'm lazy.
07:27:23 <salisbury> kmc, you live in CA? look up alexander shulgin
07:27:29 <salisbury> he lives in the mountains or something
07:27:34 <kmc> i know who shulgin is ;P
07:27:36 <kmc> but i don't live in CA
07:28:01 <kmc> shulgin is basically the man
07:28:03 <kmc> in this field
07:28:06 <kmc> but he's pretty old and retired
07:28:34 <salisbury> he has a lab in his garden shed I'm fairly sure
07:28:48 <kmc> i think much of the research in this area is done by the nichols group at purdue
07:28:54 <kmc> these days
07:29:49 <shachaf> kmc: Have you considered moving to CA?
07:30:18 <kmc> shulgin has taken probably
07:30:31 <kmc> more distinct psychoactive drugs than anyone else in human history
07:30:38 <zzo38> I can compute a lot of other things about planets and sun and moon and so on, not only the distance
07:31:04 <kmc> shachaf, yes
07:31:17 <zzo38> And even a few asteroids and fixed stars, and even fictitious planets can be computed
07:31:34 <salisbury> there is no interesting research in Canada..
07:32:00 <salisbury> aaanddd.. I'm transferring into U Toronto..
07:32:01 <zzo38> salisbury: Are you sure? Have you checked?
07:32:52 <kmc> at my school the Haskell interest group and the psychedelics / research chemical interest group overlapped significantly....
07:34:49 <salisbury> I don't even know anyone else who uses Haskell
07:35:06 <zzo38> If you want these informations (including for future and past), you cantell me I can put it into the computer figure out distances and angles and azimuth and whatever else
07:36:28 <salisbury> zzo38 distance from the moon to haley's comet in 1912
07:36:47 <salisbury> in millimeters
07:37:44 <zzo38> O, no, haley's comet is not on here. And distances are only in AU
07:38:05 <zzo38> But angles can be measured in three different ways (radians isn't one of them).
07:38:21 <salisbury> just because it's not on there does not mean its 0
07:38:30 <salisbury> unknown would be more appropriate diction
07:38:55 <zzo38> I didn't say it was 0, I used the letter O not the number 0
07:39:50 <zzo38> I plan I might write a better program later, so I might be able to included haley's comet but probably not in millimeters
07:40:37 <elliott> *Halley's
07:44:44 <zzo38> I know how to figure out the Chinese New Year, do you know the Chinese New Year?
07:47:45 <kmc> "I know how to figure out the Chinese New Year" would be a bad name for a band
07:48:06 <zzo38> Then don't name your band that!
07:48:12 <kmc> i won't
07:50:25 -!- tuubow has joined.
07:52:41 <elliott> `welcome tuubow
07:52:44 <HackEgo> tuubow: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
07:59:10 <salisbury> or feel free to entertain us with stories of your voyages to other plains of existence
08:01:49 <zzo38> I have a list of 88 constellations including both English and Latin. And abbreviations.
08:02:52 <salisbury> zzo38 what, may I ask, are you doing with all this
08:04:26 <zzo38> Not much usually. The program just happens to have a lot of features. But sometimes I will want to figure out Chinese New Year, or the phase of the moon, or I might just be interested in how all this stuff works
08:04:49 <salisbury> are you just learning programming?
08:05:07 <salisbury> because .. otherwise .. google has
08:05:13 <zzo38> No, and this is not a program I wrote, either.
08:05:22 <zzo38> I have written a lot of programs in the past including computer game and other things.
08:07:45 <salisbury> how about now
08:07:49 <zzo38> Looking in Wikipedia, I can learn, what is prime vertical, what is ecliptic, what is a lunar node, what is zenith, right ascension and declination, and so on.
08:07:59 <salisbury> indeed
08:08:05 <zzo38> salisbury: What about now do you mean?
08:09:39 <salisbury> why do I feel like I'm in a turing test
08:09:58 <salisbury> what programs are you writing now?
08:10:48 <zzo38> I do write some programs now too. Even some computer game program, but other things including Haskell libraries and TeX macro packages, and some other stuff for some people who ask me for specific programs too.
08:12:13 <zzo38> Once I wrote a game for GameBoy.
08:17:37 -!- Ngevd has joined.
08:17:47 <elliott> hi Ngevd
08:17:49 <Ngevd> Hello!
08:18:18 <Ngevd> It's surprisingly not slippy outside
08:19:42 <elliott> not slippy, just dull :P
08:25:28 <elliott> coppro: How can I get clang to print out every warning option it supports
08:25:36 <elliott> They're not documented at all, and appear to be distributed throughout the codebase
08:31:55 <elliott> http://sprunge.us/jaPC
08:32:11 <elliott> This is what gcc -Wactually-literally-every-warning-that-gcc-supports (apart from -Wsystem-headers) thinks of mcmap.
08:32:37 * elliott decides that -Wtraditional and -Wc++-compat have to go :P
08:32:47 <elliott> Also -Wpadded.
08:33:42 <elliott> -Waggregate-return
08:33:42 <elliott> Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.)
08:33:44 <elliott> WHY WOULD THIS BE A WARNING
08:35:11 <elliott> I think -Wconversion just warns about... every single conversion.
08:35:16 <Sgeo> -Wsystem-headers?
08:35:34 <elliott> Sgeo: Shows you warnings about the code inside system headers you include.
08:35:38 <elliott> It's a good way to get a few thousand pages of warnings.
08:36:31 <Sgeo> What's wrong with Waggregate-return? Don't you need to avoid returning those sorts of things, and return pointers to them instead for some reason?
08:36:49 <elliott> Why? That requires a heap allocation and later free.
08:36:54 <elliott> Not only is that really slow, what's the point?
08:37:07 <Sgeo> elliott, I didn't think it was possible to aggregate return
08:37:20 <elliott> Sgeo: Yes, -Wimpossible is certainly likely to exist?
08:38:08 <Sgeo> Upon seeing -Waggregate-return, I modified from "impossible" to "bad idea"
08:38:29 <elliott> That sounds like a suspicious modification.
08:38:42 <Sgeo> BRB
08:38:55 <elliott> There's a -Wtraditional that complains about things that K&R compilers won't like, after all.
08:40:41 <Sgeo> I'm more worried about -Wc++-compat
08:41:02 <Sgeo> I'm aware that there are things you need to do in C++ that are bad in C
08:41:23 <Sgeo> Casting malloc, I thin
08:41:26 <Sgeo> think
08:52:50 -!- zzo38 has quit (Remote host closed the connection).
08:56:38 <shachaf> elliott: How do you -Wactually-literally-every-warning-that-gcc-supports?
08:57:49 <elliott> shachaf: curl http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html | sed 's/ <br><dt><code>-W\([^<]*\).*/-W\1/p; d' | grep -v -- '-Wno' >warns, manually removing the ones that end with = and nothing after them and the like, then gcc -std=c99 -pedantic $(cat warns) ...; remove the ones it complains about (not in your gcc for whatever reason, don't apply to your language, etc.) until it works.
08:58:06 <elliott> It's easier than it sounds.
08:58:13 <elliott> It's also even less useful than you're imagining.
08:58:52 <shachaf> What about -ansi?
08:59:02 <shachaf> Oh, wait.
08:59:08 <shachaf> That doesn't do what I think it does.
09:00:03 <elliott> That's just -std=c89.
09:00:16 <shachaf> -std=c90 according to my `man ghc`.
09:00:21 <elliott> Same thing.
09:00:24 <elliott> (man ghc?)
09:00:36 <elliott> -pedantic is the one that emits the warnings that the C standard tells it to (it *doesn't* try to emit warnings about non-standard constructs, despite what people think).
09:00:58 <elliott> It's pedantic because you turn it on to get pedantically-correct behaviour, since the standard mandates printing those diagnostics.
09:01:08 <shachaf> elliott: Don't forget to compiler with optimizations.
09:01:35 <elliott> shachaf: I just set EXTRACFLAGS to that nonsense; mcmap adds -O3 from the OPTCFLAGS because fizzie is mad.
09:02:12 -!- cswords has joined.
09:02:26 <shachaf> elliott: OK, but that counts as part of the -W flags.
09:02:37 <elliott> shachaf: Yeah, I know that -O2 improves warning behaviour.
09:03:26 <shachaf> elliott: Also, you can even more exciting -W options if you compile C++.
09:03:34 <shachaf> Options like -Weffc++.
09:03:40 <elliott> Quite.
09:05:00 <shachaf> C++ is an interesting language.
09:05:06 -!- cswords__ has quit (Ping timeout: 255 seconds).
09:05:07 <shachaf> I'm beginning to appreciate it.
09:05:50 <elliott> Try not to.
09:06:38 <shachaf> elliott: There's a certain elegance to it.
09:06:52 <elliott> Play C++ sudoku, it's what I do.
09:07:04 <shachaf> What's that?
09:07:36 <elliott> You have to implement a functional programming concept in C++; bonus points for using lots of templates; bonus points for using nothing but templates.
09:07:46 <elliott> Bonus points if it's something Oleg did.
09:07:51 <elliott> For instance, Maybe.
09:07:58 <elliott> You might think this is easy, but you can't just use a pointer.
09:08:01 <elliott> Because you can't have a pointer to a reference.
09:08:32 <elliott> You actually need a boolean flag, and a char array with size sizeof(T), where T is the template parameter; you have to exploit the fact that you can turn anything into a bunch of chars and back, including references.
09:08:45 <elliott> Basically it turns C++'s hideous flaws into entertaining intellectual roadblocks.
09:08:50 <elliott> It's the best game.
09:10:04 <elliott> (Even more technically, you want a *pointer* to said char array (so you have to wrap it in a templated class/struct), otherwise maybe<T> takes up as much space as T even if it's Nothing.)
09:11:45 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:12:23 <shachaf> Sounds fun.
09:16:50 <elliott> It is if you're a language lawyer.
09:17:09 * elliott used to be, but was language disbarred.
09:18:20 <Sgeo> UPDATE
09:24:12 <monqy> hi
09:24:32 * Sgeo updates monqy
09:24:38 <Sgeo> Wait, is monqy a Homestuck person?
09:24:38 <monqy> hi
09:24:49 <monqy> whats a homestuck
09:25:48 <Sgeo> Comic with some flash animations and games. http://www.mspaintadventures.com/ . Warning: Language, violence, photosensitive epilepsy
09:26:02 <Sgeo> (Erm, as in, if you're photosensitive epileptic, it may be a bad idea)
09:26:14 <Sgeo> I don't think there are any photosensitive epileptic characters.
09:26:36 <monqy> oh
09:27:08 <elliott> today monqy learned the true meaning of friendship
09:27:15 <elliott> and photosensitive epilepsy
09:27:21 <monqy> and homestuck
09:27:22 <monqy> amen
09:27:56 <elliott> homestuck is very depressing and a bit of a gulag
09:28:54 <Sgeo> monqy, it starts off a bit slow. It does not stay slow.
09:28:56 <monqy> oh no.....
09:28:59 <monqy> does zoosmell die........
09:29:38 <elliott> yes
09:29:40 <elliott> rip
09:29:42 <monqy> ;_;
09:29:49 <elliott> zoosmell page 2 - page 3
09:29:56 <elliott> "your smell will be missed"
09:31:58 <monqy> sgeo when does it sto[p being slow....
09:32:04 <monqy> when do i get to meet homestuck.......
09:32:32 <Sgeo> Hmm. elliott what do you think?
09:32:53 <elliott> monqy: Homestuck appears on page 6781.
09:32:59 <elliott> He dies on page 1271943.
09:33:15 <monqy> D:
09:33:26 <monqy> now homestuck is ruined for me
09:33:28 <monqy> very depressing
09:33:41 <elliott> Read Station V3 instead, it's better.
09:34:25 <monqy> but station v3 is bad ;_;
09:34:36 <elliott> Yes, but is it Homestuck bad??
09:34:44 <monqy> :0
09:36:38 <monqy> oh no im
09:36:41 <monqy> laughing at station v3
09:36:46 <monqy> because of how bad it is
09:37:02 <monqy> all of the characters are funny
09:37:07 <monqy> the jokes too
09:37:09 <monqy> hlep
09:37:31 <elliott> read homestuck instead it'll eliminate the funny
09:37:41 <elliott> monqy: oh god the stationv3 guy responds to every comment
09:37:45 <elliott> http://www.stationv3.com/d/20111215.html#disqus_thread
09:38:06 <monqy> i..........
09:38:45 <monqy> people tiwttered that....
09:38:56 <elliott> w h a t
09:39:03 <monqy> the Reactions section
09:39:07 <elliott> why
09:39:11 <elliott> well
09:39:16 <elliott> two of them is the author
09:39:20 <monqy> people retwetted from t.truszowkwoeskey
09:39:21 <elliott> oh god "Evening repeat" he tweets these things twice
09:39:31 <monqy> what all of them
09:39:59 <elliott> http://twitter.com/#!/Axonite
09:40:03 <elliott> Today's Station V3 is also on Reddit - http://redd.it/ndjza (Votes welcome, especially the "up" kind!)
09:40:20 <elliott> it's on reddit because
09:40:22 <elliott> he submitted it to reddit
09:40:26 <elliott> the account has the same username
09:40:43 <elliott> http://www.reddit.com/user/axonite
09:40:57 <elliott> does someone want to tell this poor sap that /r/comics has almost 10x the readers
09:43:16 <monqy> http://www.stationv3.com/art.html station v3 fanart
09:43:55 <elliott> "Art from Chris Truszkowski"
09:43:57 <elliott> is it all by his relatives
09:46:03 <monqy> wow these are amazing
09:53:02 <elliott> "In The Hitchhiker's Guide to the Galaxy, Douglas Adams mentions an extremely dull planet, inhabited by a bunch of depressed humans and a certain breed of animals with sharp teeth which communicate with the humans by biting them very hard in the thighs. This is strikingly similar to UNIX"
09:56:29 -!- Vorpal has joined.
09:59:22 -!- Ngevd has joined.
09:59:56 -!- Ngevd has changed nick to Taneb|Hovercraft.
10:04:04 <pikhq_> elliott: Yeah, yeah, yeah, Mostly Harmless.
10:04:14 <pikhq_> Also, that was an alternate Earth.
10:04:19 <pikhq_> Also, WTF UNIX?
10:04:24 <elliott> I didn't quote it for the H2G2 description alone.
10:04:30 <elliott> You will note there's a second sentence.
10:10:09 <shachaf> elliott: Have you read The UNIX-HATERS Handbook?
10:10:26 <elliott> shachaf: A large portion of it, at least. I don't know that I've ever sat down and read the whole thing from start to finish.
10:10:34 <elliott> I am also responsible for what ^style jargon does.
10:12:01 -!- Phantom_Hoover has joined.
10:12:02 <shachaf> ^style jargon
10:12:02 <fungot> Selected style: jargon (UNIX-HATERS mailing list archive)
10:12:07 -!- Phantom_Hoover has quit (Changing host).
10:12:07 -!- Phantom_Hoover has joined.
10:12:16 <shachaf> fungot: HELP HOW DO I MAKE YOU TALK
10:12:16 <fungot> shachaf: well, one helpless screaming bit at a time, the superstitious remedy doesn't work so they dreamed up their own gasoline from barrels of crude......
10:12:33 <shachaf> fungot: Well, that worked.
10:12:33 <fungot> shachaf: rucken to cause it to unix-haters. it's not unix's fault! what incredible waste! anybody who isn't a steaming pile of junk. it
10:12:41 <Phantom_Hoover> labdnambot
10:12:41 <lambdabot> Phantom_Hoover: You have 11 new messages. '/msg lambdabot @messages' to read them.
10:12:58 <elliott> shachaf sure has sent Phantom_Hoover a lot of messages!!!
10:14:23 <Phantom_Hoover> zoosmell ;_;
10:14:42 <Phantom_Hoover> It took a lot of effort to continue reading after he died.
10:25:48 <pikhq_> shachaf: Just say "fungot" in a sentence.
10:25:48 <fungot> pikhq_: webster has a return-path header is supposed to read, i can tell, would be " root" in the berkeley fast ( and in fact, it's screaming " wash me please".
10:26:14 <shachaf> > "fun" ++ "got"
10:26:15 <lambdabot> "fungot"
10:27:21 <elliott> fungot ignores bots.
10:27:21 <fungot> elliott: date: fri, 04 dec 92 04:14:03 gmt from: wa date: tue, 7 apr 1992 09:21 edt from: dm
10:27:30 <elliott> With an automatic, silent Turing test, of course.
10:28:01 <shachaf> elliott: But... I'm a bot.
10:28:19 <elliott> shachaf: Ooh, this is like The Difference, but reversed.
10:28:22 <elliott> Inversed.
10:28:23 <elliott> Conversed.
10:28:26 <elliott> (http://qntm.org/difference)
10:28:43 <shachaf> I don't read anything under the Fiction section on qntm.org.
10:29:34 <elliott> So you read... the usually-fairly-dull blog and code sections exclusively?
10:29:44 <shachaf> I don't often read those either.
10:29:50 <elliott> Or is this one of those ambiguous emissions where you actually just don't read qntm.org at all.
10:29:54 <elliott> Omissions. Oops.
10:30:07 <shachaf> Once I confused the author of qntm.org with Sam Hughes.
10:30:26 <elliott> Once you confused your correctness for confusion.
10:30:49 <shachaf> http://qntm.org/news_whosthis
10:31:43 <elliott> Riveting.
10:33:17 <shachaf> elliott: This will surely be your favourite language: http://samuelhughes.com/boof/
10:33:23 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds).
10:33:39 <elliott> Boolfuck is ancient.
10:33:50 <elliott> It predates BF derivatives becoming hopelessly, awfully tired.
10:34:20 <shachaf> elliott: Didn't that happen with the very first derivative?
10:34:26 <elliott> http://samuelhughes.com/isstring/index.html Oh good, this person is as bad as kallisti.
10:35:25 -!- elliott has quit (Quit: Leaving).
10:37:41 <Phantom_Hoover> He looks like he just things of it as a pathologically interesting thing...
10:40:42 -!- derrik has joined.
10:46:08 -!- elliott has joined.
10:54:21 -!- GreaseMonkey has quit (Quit: The Other Game).
11:10:07 <elliott> @src sequence
11:10:07 <lambdabot> sequence [] = return []
11:10:08 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
11:10:08 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
11:21:20 -!- monqy has quit (Quit: hello).
11:27:22 <Phantom_Hoover> 02:08:03: <pikhq_> To be fair, the structure of it is sufficiently weird that it's, well, insane to follow.
11:27:32 <Phantom_Hoover> One could even say that it is very.... fine.
11:27:55 <Phantom_Hoover> 02:13:31: <oklopol> what's fine structure about
11:27:57 <elliott> You can get fined for structural puns like that.
11:28:12 <Phantom_Hoover> I'm pretty sure there's time travel somewhere in there, you'd hate it.
11:54:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:59:54 -!- Ngevd has joined.
12:21:00 -!- kallisti has joined.
12:21:00 -!- kallisti has quit (Changing host).
12:21:00 -!- kallisti has joined.
12:22:19 <kallisti> elliott: I'm not familiar with the chronological relationship between Homestuck and SBaHJ; did "bone bulge" originate from the former or the latter?
12:22:47 <kallisti> SBaHJ -> Homestuck would be funnier I think.
12:23:13 <kallisti> from the perspective of Homestuck -> SBaHJ "bone bulge" sounds.. well, like an alien. :P
12:24:22 -!- elliott has quit (Quit: Leaving).
12:25:01 <kallisti> ah it was Homestuck first.
12:25:15 <kallisti> because, well, Dave makes SBaHJ
12:33:37 <kallisti> lol @ people on skyrim forums thinking that race matters at all for most builds.
12:34:31 -!- tuubow has quit (Ping timeout: 240 seconds).
12:43:45 -!- elliott has joined.
12:43:47 <elliott> @src foldl1
12:43:47 <lambdabot> foldl1 f (x:xs) = foldl f x xs
12:43:47 <lambdabot> foldl1 _ [] = undefined
12:48:24 <kallisti> the only racial benefits that are vaguely important are the passive ones. the 50 magicka bonus on high elves is insane. Breton magic resistance is good, Nord frost resist is good, dark elf fire resist is good, Orc berserk is good, breton magic resist is good.
12:49:06 <kallisti> honestly they should have gave redguard 50 stamina or something because high elf is just broken compared to every other race.
12:53:57 -!- kallisti has quit (Ping timeout: 248 seconds).
12:55:44 -!- kallisti has joined.
12:55:44 -!- kallisti has quit (Changing host).
12:55:44 -!- kallisti has joined.
12:57:11 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:07:39 -!- Ngevd has joined.
13:11:47 -!- tswett has quit (Ping timeout: 244 seconds).
13:20:16 -!- derrik has quit (Quit: bbl).
13:36:16 -!- derrik has joined.
13:41:21 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
13:43:12 -!- tswett has joined.
13:44:06 -!- lifthrasiir has joined.
13:56:31 -!- tswett has quit (Ping timeout: 240 seconds).
14:07:44 -!- sebbu3 has joined.
14:07:55 -!- sebbu2 has quit (Read error: Operation timed out).
14:08:47 <elliott> pikhq_: Why is C's const notation so ugly
14:08:54 <elliott> const char *const *sad :(
14:10:10 <elliott> Actually I can't figure out wtf I want at all
14:10:37 <elliott> How do I declare a function taking (char **) that just doesn't mutate the treated-as-two-dimensional-array at all
14:10:39 -!- tswett has joined.
14:10:47 <Ngevd> Oh yeah, I need to remove that code I commented out
14:11:31 <Ngevd> It's Taneb's bad Haskell time!
14:11:32 <Ngevd> http://hpaste.org/55371
14:12:18 <elliott> map (ap ((,) . join . intersperse " " . init) last)
14:12:30 <elliott> This is why mechanically applying @pl to everything is dumb.
14:12:34 <Ngevd> I'm not sure what that does any mo0re
14:14:23 <elliott> Ngevd: Your random numbers are stupidly broken.
14:14:28 <elliott> You're requesting the same number every single time.
14:14:36 <Ngevd> Am not!
14:14:47 <Ngevd> Well, am!
14:15:15 <elliott> Yes, you are.
14:15:43 <Ngevd> Hmm
14:15:45 <elliott> Well, not in the inner loop.
14:15:47 <Ngevd> Do I want randomR
14:15:49 <Ngevd> ?
14:16:44 <Ngevd> Possibly..
14:17:02 <elliott> Give me a second.
14:17:36 -!- Ngevd has quit (Quit: Goodbye).
14:18:48 <elliott> ...
14:18:50 <elliott> http://hpaste.org/55373, anyway.
14:22:07 <elliott> @tell Ngevd http://hpaste.org/55374
14:22:07 <lambdabot> Consider it noted.
14:31:17 <elliott> shachaf: I now know the woes of plagiarism.
15:02:14 -!- cswords_ has joined.
15:04:42 <elliott> Hmm, fizzie: Deewiant: pikhq_: const lawyer ping :P
15:04:47 <elliott> Oh, olsner too
15:04:49 <elliott> EVERYONE GETS A PING
15:05:02 -!- cswords has quit (Ping timeout: 240 seconds).
15:06:14 <olsner> char const *const *const
15:06:38 <olsner> ... to const all the things
15:07:01 <elliott> olsner: Erm, one of those must be redundant, because you don't want to /declare/ "immutable variable", just define it
15:07:08 <elliott> i.e. which one of those doesn't go through a pointer :P
15:08:23 <olsner> sure, the last const is optional, you can remove it if you want to mutate the pointer in the function (without mutating what it points to)
15:09:01 <elliott> olsner: well, I don't, but that shouldn't be part of the declaration regardless, no?
15:09:11 <elliott> since it's a purely "syntactic" thing about the implementation
15:09:15 <elliott> and not an API detail
15:09:28 <elliott> void load_colors(const char *const *lines);
15:09:28 <elliott> SO BEAUTIFUL.
15:09:39 <elliott> main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’
15:09:44 <elliott> olsner: :-/
15:10:09 <elliott> Now I have to figure out whether to change the declaration or add a cast at the use site.
15:10:11 <elliott> I hate C.
15:10:36 <olsner> not sure if it'll accept a definition with additional const if the declaration didn't have it... even though the definition is compatible
15:11:02 <elliott> OK, I think the problem here is that const doesn't mean what I think
15:11:04 <elliott> When I saw
15:11:09 <elliott> void foo(const char *const *foo);
15:11:22 <elliott> I assumed it meant "I won't modify *foo and I won't modify **foo"
15:11:28 <elliott> but it seems to actually mean
15:11:42 <elliott> "Give me a foo such that you can't modify **foo, and I won't modify *foo"
15:11:49 <elliott> because I can't pass a (char **) to it...
15:14:33 <elliott> olsner: tell me I'm not mad?
15:14:46 <olsner> (in C++,) char** doesn't implicitly convert to const char**, because it would e.g. allow putting a const char* in there that your caller might end up using as char*
15:15:17 <olsner> with more const, I think it should be ok, but I don't know the exact rules
15:15:39 <elliott> hmm, in this case it's (char **) to (const char *const *)
15:15:56 <elliott> although note that I'm pretty sure this is just a warning
15:16:11 <elliott> yeah, it is
15:16:16 <olsner> yes, in C you can pass any pointer as any other pointer anyway
15:16:29 <elliott> still, it feels like I must be doing something wrong -- I'm trying to be const-correct, I shouldn't be getting any scary warnings :P
15:17:24 <elliott> "In order to reduce the verbosity of such a bad languages, there is a way. m4. Yes, the preprocessor you use when you program in C and C++."
15:17:29 <elliott> this guy lives in some kinda alternate universe
15:17:41 <olsner> C has some retardedness with const... things like you can't even explicitly cast between constness without warnings but you have implicit conversions between completely unrelated pointer types
15:18:22 <Deewiant> Whenever you're talking about warnings in C you're talking about implementations, not the language
15:19:06 <elliott> Deewiant: Not true
15:19:25 <elliott> Deewiant: -pedantic exists solely to yell at you things that the C standard wants the compiler to
15:19:30 <elliott> Uh, restructure that.
15:19:43 <elliott> Although maybe "diagnostics" are supposed to be errors, I forget
15:19:49 <olsner> hmm, I think I meant cast *away* constness there, don't think adding const causes any warnings
15:20:06 <Deewiant> elliott: I think they're all only recommended, not required
15:20:47 <elliott> -pedantic
15:20:47 <elliott> Issue all the warnings demanded by strict ISO C and ISO C++; reject
15:20:47 <elliott> all programs that use forbidden extensions, and some other programs
15:20:47 <elliott> that do not follow ISO C and ISO C++. For ISO C, follows the
15:20:47 <elliott> version of the ISO C standard specified by any -std option used.
15:20:49 <elliott> Deewiant: Well, "demanded"
15:20:56 <elliott> Some users try to use -pedantic to check programs for strict ISO C
15:20:56 <elliott> conformance. They soon find that it does not do quite what they
15:20:56 <elliott> want: it finds some non-ISO practices, but not all---only those for
15:20:56 <elliott> which ISO C requires a diagnostic, and some others for which
15:20:58 <elliott> diagnostics have been added.
15:21:00 <elliott> "requires"
15:21:55 <olsner> hmm, is there any option to check for strict ISO C conformance then?
15:24:07 <Deewiant> elliott: By a quick search for "diagnostic" in C1X, the only required one I can find that isn't also an error is (ironically) #error
15:26:40 -!- derrik has joined.
15:26:54 <elliott> Deewiant: Ha
15:27:03 <elliott> Deewiant: But fair enough.
15:27:17 -!- derrik has quit (Client Quit).
15:27:19 <elliott> olsner: sure, -pedantic + sending a bunch of patches to gnu that add all the checks
15:27:26 <elliott> although I doubt all the criteria for validity are decidable
15:27:31 -!- Ngevd has joined.
15:27:37 <elliott> *conformance
15:27:38 <elliott> Ngevd: say hi
15:27:43 <Ngevd> hi
15:27:43 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
15:27:48 <Ngevd> @messages
15:27:49 <lambdabot> elliott said 1h 5m 42s ago: http://hpaste.org/55374
15:28:36 -!- derrik has joined.
15:28:46 <Ngevd> I got that to work independantly
15:28:52 -!- derrik has quit (Client Quit).
15:29:14 <elliott> I wasn't fixing it
15:29:17 <Ngevd> Although the prompt idea is good
15:29:19 <elliott> I was making it not terrible :P
15:29:28 <Ngevd> It's not terrible if it works
15:29:36 <elliott> I fixed the random number generation and the passing about the Map.
15:29:39 <elliott> And yeah, it really is.
15:29:45 <elliott> OK, not terrible.
15:29:49 <elliott> But not completely unterrible.
15:30:15 <Ngevd> The random number generation isn't actually a problem
15:30:23 <elliott> Well, it was definitely a bug.
15:30:29 <elliott> You used the same number for the first two iterations.
15:30:38 <Ngevd> Do I?
15:30:41 <elliott> It was also a trivially fixable bug, but I just removed the explicit StdGen threading instead since you're already in IO.
15:30:52 <elliott> Ngevd: Actually, no, wait, you used the same number for every adjacent iteration.
15:30:58 <elliott> It went a, a, b, b, c, c, ...
15:31:00 <Ngevd> Which is the point
15:31:04 <Ngevd> No wait
15:31:07 <Ngevd> It wasn't the point
15:31:07 -!- azaq23 has joined.
15:31:07 <elliott> It is?
15:31:12 <Ngevd> But that wasn't actually the problem
15:31:15 <elliott> Actually, wait, no.
15:31:19 <elliott> It went a, a, b, c, d, e, ...
15:31:23 <Ngevd> I had used "fst" instead of "snd"
15:31:31 <Ngevd> In the say_answer
15:31:41 <elliott> Ngevd: Well, you never said "fix this specific bug", you just said "here's some terrible code" and I fixed that. :p
15:31:49 -!- salisbury has quit (Quit: Leaving).
15:31:54 * elliott has no idea what the program is actually trying to do.
15:32:06 <elliott> Hmm, you said "bad", not terrible.
15:32:10 <elliott> YOU ARE LET OFF THE HOOK THIS TIME
15:34:08 <Ngevd> Version I will stick with: http://hpaste.org/55386
15:35:29 <elliott> Sorry, I was wrong, it actually *is* a, a, b, b, c, c, ...
15:35:42 <elliott> But, your code.
15:35:55 <elliott> I don't know why you do "either (const (return ()))".
15:36:06 <elliott> If you don't want to handle the failure case, just change it to "Just grid <- parseCSVFromFile ...".
15:36:09 <elliott> Erm
15:36:10 <elliott> *Right grid
15:36:18 <Ngevd> You can DO that!?
15:36:23 * elliott sigh
15:37:25 <Ngevd> Stop sighing and teach!
15:38:19 <elliott> I just did
15:38:20 <elliott> *.
15:41:08 <Ngevd> What's the best way to colour the text
15:42:57 <Ngevd> ?
15:42:57 <elliott> Ngevd: ansi-wl-pprint
15:43:10 <Ngevd> Hmm
15:44:08 <elliott> putDoc $ red (text "abcdef") <> green (text "quux")
15:47:25 <Ngevd> Brilliant...
15:51:43 <elliott> Deewiant: So do you understand C const-correctness
15:51:55 * elliott knows there is pretty much no chance the answer is no, so he has you cornered.
15:52:24 -!- salisbury has joined.
15:53:48 <Gregor> C const-correctness is "lol, const"
15:54:01 <Deewiant> I'll go with "no" if that means I don't have to answer any questions about it
15:54:13 <Gregor> The real question is do you have any comprehension of what const ever means in C++ :P
15:54:26 <Gregor> Or better yet, the brilliant "const" v "invariant" in D (must punch designers in face)
15:56:12 <Deewiant> const in C++ means "I won't modify this... you trust me, right?"
15:56:25 <Gregor> Deewiant: But what does void *const**const foo mean?
15:58:05 <Deewiant> Same thing it means in C
15:59:57 <elliott> Deewiant: If you say no, I'll ask you more questions
16:00:01 <elliott> You'll just be worse at answering them
16:00:15 <elliott> Gregor: I'm not using C++, though :P
16:00:18 <elliott> I'm in lol land.
16:00:28 <elliott> Gregor: Also, what's the difference in D?
16:00:39 <elliott> If one of them means "and all the fields/dereferencings/etc. too" then I like it
16:00:42 <Gregor> elliott: No one should use C++ ...
16:00:51 <Gregor> elliott: And the difference in D is good lord hell knows what.
16:01:05 <Gregor> Oh for fuck's sake, it has final now too.
16:01:11 <Gregor> Three fucking types of constness X_X
16:01:45 <elliott> elliott's school of const design: Everything is const, and have a "mutable" modifier.
16:02:11 <elliott> Also a const thing can't contain a mutable thing because come on that's not constant.
16:02:34 <Gregor> Gregor's school of const design: If your language is fundamentally mutable, never ever ever ever ever have "const" ever.
16:02:44 <Deewiant> I think the difference in D is const = "I can't touch this", invariant = "nobody can touch this"
16:03:00 <elliott> Deewiant: reflexivemchammer + generalisedmchammerprinciple
16:03:06 <Gregor> Deewiant: To be fair I just looked this up and it's changed since I abandoned D (when it was still under construction :P )
16:03:18 <elliott> Gregor: Good thing "fundamentally mutable" = "unmaintainable unparallelisable crapshoot"!
16:03:48 <elliott> Gregor: ANYWAY, my question is why can't I pass a (char **) to void foo(const char *const *bar).
16:04:23 <elliott> I assumed that just meant foo was promising not to modify *bar or **bar, but it's complaining (as a warning) that I'm casting to an incompatible pointer type...
16:04:33 <elliott> main.c:138:3: error: passing argument 1 of ‘load_colors’ from incompatible pointer type [-Werror]
16:04:33 <elliott> main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’
16:04:53 <Gregor> elliott: Because the type you're casting it to isn't const at the final level, so it can write a char * const in, but that char * const could then be mutated by your outside reference.
16:05:39 <elliott> Gregor: Huh? Wouldn't void foo(const char *const *const bar) just mean that it can't do "bar = x;"?
16:05:53 <elliott> That should have no semantic effect, it's just a local restriction on the /implementation/...
16:06:05 <Gregor> elliott: The leftmost const applies to 'bar' itself, every other const applies to the pointer or type immediately left of it.
16:06:28 <elliott> Um... seriously? Because (const char *) is a pointer that you can't write to.
16:06:36 <elliott> The rules somehow change when you stick more *s in?
16:06:45 <Deewiant> Just write "char const *" so everything applies to the thing immediately to the left
16:07:03 <elliott> Deewiant: That's ugly though :'( But okay maybe.
16:07:32 <Gregor> Why do I hit Ctrl+Q half the time when I want to hit Ctrl+W X_X
16:07:56 <Deewiant> Gregor: If Firefox, there's an addon that disables ctrl+q
16:08:10 <elliott> If Chrome, Ctrl+Q already does nothing :P
16:08:20 <Deewiant> ( https://addons.mozilla.org/en-US/firefox/addon/disable-ctrl-q-shortcut/ )
16:08:21 <Gregor> Deewiant: But I also use Ctrl+Q to quit intentionally
16:08:36 <Deewiant> Then you're screwed I guess
16:08:47 <elliott> Gregor: Oh noes, you have to press one more key to quit
16:08:57 <Deewiant> elliott: As for your const troubles, it seems to me like it should work.
16:09:07 <elliott> Deewiant: Well it /works/, it just warns about it.
16:09:10 <Gregor> I already explained this
16:09:21 <Gregor> Man, my life is miserable without tongue-face smiley.
16:09:21 <Jafet> Gregor: dvorak
16:09:26 <elliott> Gregor: I disputed your explanation.
16:09:34 <Gregor> Jafet: How fast do you type?
16:09:36 <Deewiant> elliott: const int** -> double* works too, it just warns about it. :-P
16:09:46 <Gregor> elliott: const char * is the same as char const *. The pointer is not const, it points to const things.
16:10:16 <Gregor> elliott: So char const *const * is a /variable/ pointer to /const/ things. If you pass in a /variable/ pointer to /variable/ things, it could write a /const/ pointer through the first level of /variable/ pointers.
16:10:17 <Jafet> On dvorak? about three wpm
16:10:44 <elliott> Gregor: OK, wait.
16:10:45 <Gregor> Jafet: OK, typically when people tell me I should switch to Dvorak I ask them how fast they type and they say something like, "Oh, I type at 85WPM wooh." I type at 120 so screw you
16:10:48 <Deewiant> Gregor: It's a pointer to const pointers. So you can't write things through the pointer.
16:10:54 <Gregor> DAMN MY LIFE SUCKS WITHOUT TONGUE SMILEY D-8
16:11:04 <elliott> What Deewiant said.
16:11:18 <Jafet> The dvorak record is something like 200WPM
16:11:29 <Gregor> Ohwait ... hahah you're right, I suck at const >_>
16:11:32 <elliott> Gregor: Alternatively: in (const char *) it's not the pointer variable that's immutable, it's what it points to; in (const char *const *lines) there's only one more place for a const to go, and it's at the wrong side to matter.
16:11:48 <Gregor> Jafet: So? I don't want to risk dropipng my already-very-good typing speed in a mostly-fruitless switch.
16:11:59 <elliott> Disappointed that Deewiant isn't advocating Colemak
16:12:00 <Gregor> elliott: Yeah, I was being dumb, ignore me!
16:12:10 <elliott> Gregor: OK, so WHY DOES IT WARN :P
16:12:11 <Deewiant> elliott: Colemak has QWFP
16:12:15 <Deewiant> !c void foo(char const* const* pp, char const* p) { *pp = p; }
16:12:18 <EgoBot> Does not compile.
16:12:22 <Deewiant> (Proof.)
16:12:40 <elliott> !c uses -Werror?
16:12:42 <EgoBot> Does not compile.
16:12:44 <Gregor> Deewiant: I don't need proof, I already said you were right X_X
16:12:56 <Deewiant> Gregor: I know, I just provided it anyway.
16:12:57 <elliott> o, ic.
16:12:59 <Gregor> elliott: !c uses -Wall -Werror -ansi -pedantic.
16:13:01 <Deewiant> elliott: That's not a warning, that's an error.
16:13:12 <elliott> Gregor: -pedantic -Werror? For /IRC/? :P
16:13:26 <Deewiant> Mostly the -Werror
16:13:33 <Gregor> elliott: Just kidding ... god I need my tongue-face smiley so much right now.
16:14:05 <Deewiant> Gregor: Is your keyboard broken or something?
16:14:14 <elliott> Gregor: This journey of self-discovery will end in "goddammit, I'm an unfunny jerk, why did nobody tell me all this time?!?!".
16:14:23 * elliott predicts.
16:14:24 <Gregor> Deewiant: I've configured my client such that I can't type a tongue-face smiley. I overuse it.
16:14:30 <Gregor> elliott: Almost certainly.
16:15:26 <elliott> Test
16:15:32 <elliott> Ha ha ha
16:15:34 <elliott> :P :P
16:15:36 <elliott> ...
16:15:39 <elliott> Dude, there were three.
16:15:42 <elliott> What is wrong with you.
16:16:12 <Deewiant> elliott: Going back to your original question: no, I do not understand C const-correctness well enough to explain why your case should/should not work. I'm not aware enough of the exact definitions of the rules governing it.
16:16:48 <elliott> Deewiant: SIGH, it's like you never went to language law school.
16:17:39 <Deewiant> This is where you berate me for not having already fully finished my DS9K C compiler, which would give you an exact section number for each appropriate diagnostic
16:18:36 <elliott> Deewiant: I'm happy your vapour isn't becoming ware; it lets me cultivate my own more perfect vapour of the same kind.
16:19:30 <elliott> (Speaking of which, Shiro 2 development will begin once I figure out how the tree splitting needs to go.)
16:32:45 -!- Phantom__Hoover has joined.
16:35:22 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:51:53 -!- lifthrasiir has quit (Ping timeout: 244 seconds).
16:56:50 -!- Phantom___Hoover has joined.
16:56:53 <Phantom___Hoover> What is this crap, Wikipedia's article on Walking in the Air doesn't mention the Irn Bru version.
16:57:06 <Phantom___Hoover> Oh, wait, it does.
16:58:02 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:59:22 <Phantom___Hoover> "Irn-Bru also drafted in one of Scotland's top choirboys from prestigious music school, St Mary's, to sing a new interpretation of Howard Blake's 'Walking in the Air'."
16:59:32 <Phantom___Hoover> He definitely wasn't at St Mary's when I knew him...
17:00:47 <Ngevd> Phantom___Hoover, that's what's [citation needed] and talk pages are for
17:00:58 <Phantom___Hoover> That's from a different article.
17:01:31 <Phantom___Hoover> Now, upon further Googling, I discover that the Daily Record ran an article about his voice breaking.
17:02:56 <Phantom___Hoover> *different, non-WP article
17:03:28 <Ngevd> Okay
17:07:40 <elliott> Phantom___Hoover: Someone's VOICE BROKE??? UNTHINKABLE
17:07:46 <Phantom___Hoover> elliott, I KNOW
17:07:51 <Phantom___Hoover> Ah, I remember that guy.
17:07:59 <Phantom___Hoover> Hentai Ben, we (I) called him.
17:08:08 <Ngevd> I remember the recording I did before MY voice broke
17:08:11 <Ngevd> God, that was weird
17:08:29 <Phantom___Hoover> Then, later, Stacy.
17:08:50 <elliott> "we (I)" is a good construction.
17:09:44 <Phantom___Hoover> I used it for disambiguation, since there's also "ruined-Homestuck-FOREVER" Ben.
17:09:59 <Phantom___Hoover> Everyone else just used his surname.
17:10:33 <Gregor> Phantom___Hoover, elliott: Should've castrated him while they had the chance.
17:10:43 <Phantom___Hoover> Should've.
17:11:17 <Phantom___Hoover> Although then there mightn't have been such entertaining rumours.
17:19:41 -!- salisbury has quit (Ping timeout: 252 seconds).
17:21:43 -!- Ngevd has quit (Ping timeout: 276 seconds).
17:25:48 <Phantom___Hoover> OK quick guys we need to organise an intervention for elliott.
17:27:04 <olsner> what are we interventing?
17:31:57 <elliott> @free (<*>)
17:31:58 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
17:32:04 <elliott> @free ap :: f (a -> b) -> f a -> f b
17:32:04 <lambdabot> Extra stuff at end of line
17:32:08 <elliott> @free ap :: F (a -> b) -> F a -> F b
17:32:08 <lambdabot> (forall h. (forall k p. g . k = p . f => h k = p) => $map_F h x = y) => $map_F g . ap x = ap y . $map_F f
17:34:30 <Gregor> Interesting use of spaces ...
17:35:01 <elliott> Gregor: Pretty sure that's alignment and lambdabot is just stripping out the newlines.
17:35:08 <Gregor> Ahhhhhhhhhhhhhh
17:35:16 <Gregor> Oh, yeah, that makes sense.
17:35:26 <elliott> Although that produces nonsense when I add newlines before the first space in a block >_>
17:35:38 <elliott> Oh, hm
17:35:42 <elliott> (forall h. (forall k p. g . k = p . f
17:35:42 <elliott> =>
17:35:42 <elliott> h k = p)
17:35:42 <elliott> =>
17:35:44 <elliott> $map_F h x = y)
17:35:46 <elliott> =>
17:35:48 <elliott> $map_F g . ap x = ap y . $map_F f
17:35:50 <elliott> It's probably something like that
17:35:50 <Gregor> lol
17:36:11 <elliott> That's some free theorem.
17:39:54 <Phantom___Hoover> olsner, his growing addiction to Stack Overflow!
17:47:53 -!- salisbury has joined.
17:48:13 <elliott> Phantom___Hoover: MY HEROIN ADDICTION *HELPS* PEOPLE!!!
17:53:18 -!- Vorpal has quit (Ping timeout: 268 seconds).
17:57:00 <Phantom___Hoover> elliott, but they are terrible people!
18:02:51 -!- zzo38 has joined.
18:36:02 -!- AnotherTest has joined.
18:37:07 <AnotherTest> Anyone knows a channel for non-esoteric language development discussion?
18:39:30 <salisbury> AnotherTest those channels are normally named after the name of the language in question
18:40:07 <AnotherTest> I mean for discussion of the development of them.
18:40:12 <salisbury> Phantom___Hoover Edinburgh?
18:40:29 <AnotherTest> It's because I need opinions about what feature people find important
18:41:09 <salisbury> ?
18:41:38 <Phantom___Hoover> Hello?
18:42:58 <zzo38> Just ask here at first if there is no other channel. And then ask other channels too, because different people have different opinion
18:45:03 <AnotherTest> Alright then. Would guys say a pure object oriented model is a good idea?
18:47:07 -!- itidus20 has joined.
18:47:24 <salisbury> Phantom___Hoover you from Edinburgh?
18:47:53 <elliott> AnotherTest: no
18:48:01 <salisbury> AnotherTest, Types and Programming Languages is a good book to read re language design
18:48:14 <elliott> AnotherTest: well, depends on what you mean by pure.
18:48:18 <salisbury> gives you a good feel for things
18:48:19 <elliott> and what the alternatives are.
18:48:41 <AnotherTest> I wouldn't either just asking and I mean as in every single thing is represented as object.
18:48:59 <itidus20> the hardest part is not obtaining the books, thank you internet, but reading them. but then again i am in the company of phd's
18:49:01 <AnotherTest> Also, salisbury, I have designed languages before; I'm not asking about how to.
18:49:06 * elliott rather thinks that nothing should be represented as an object instead.
18:49:21 <elliott> And just because you can do something doesn't mean that you can't learn more about it, of course.
18:49:55 <AnotherTest> @elliott, true. But I'm not asking you guys for knowledge, just for opinions.
18:49:55 <lambdabot> Unknown command, try @list
18:49:59 <itidus20> nice twist on the "just because you can doesn't mean you should"
18:50:14 <elliott> AnotherTest: This isn't Twitter, lambdabot will complain about your every ping.
18:50:34 <salisbury> excusez-moi
18:50:41 <AnotherTest> elliott: sorry, but I didn't know that the bot commands start here with @
18:50:50 <elliott> Well, lambdabot's in a lot of places :P
18:51:08 <AnotherTest> Usually, people prefer a longer token
18:51:26 <elliott> Anyway, you won't get very interesting opinions if you don't want to know what underlies them, and understanding an interesting opinion is liable to end up giving you knowledge.
18:51:50 * elliott sees one-character bot prefixes far more often than longer ones.
18:52:07 * AnotherTest sees bad bots more often than good ones.
18:52:10 <elliott> We have... 5 bot prefix characters in here.
18:52:24 <AnotherTest> uh
18:52:33 <elliott> Different bots, of course.
18:52:46 <itidus20> my favorite bot command is `log
18:52:51 <itidus20> `log
18:52:53 <elliott> Well, lambdabot has both @ and ?, and one of its commands starts :, and one starts "> ".
18:52:56 <elliott> But lambdabot's special.
18:52:58 <HackEgo> 2007-06-19.txt:23:38:01: <bsmntbombdood> write your own
18:53:46 <AnotherTest> So, Eliott, no object oriented design at all for you?
18:54:07 <elliott> I don't like OOP much at all, no.
18:55:13 <AnotherTest> I can understand that. Do you like languages that store all functions as "anonymous"(as in a variable), now that I'm asking?
18:55:49 <AnotherTest> I was thinking about the functionality that provides earlier, what do you think
18:56:12 <elliott> I don't quite understand the question. If you're asking whether I prefer functions be first-class objects, then yes, naturally. (Rarely do people argue that it would be really great if only <language element> were second-class...)
18:57:23 <AnotherTest> Yes
18:58:19 <AnotherTest> I do wonder if storing pieces of code that can be accessed randomly(since it would be an interpreted language to a certain level) is a good or bad idea.
18:58:44 <AnotherTest> It does certainly have some advantages?
18:58:49 <elliott> I'm not sure exactly what you mean by "randomly", but beware of designing a language around the constraints of its initial implementation.
18:59:02 <AnotherTest> randomly; at any time
18:59:31 <elliott> So... you're asking whether you want globals? :p
18:59:35 <AnotherTest> No
18:59:50 <AnotherTest> A variable can also be randomly accessed in it's scope :/
19:00:01 -!- Ngevd has joined.
19:00:17 <AnotherTest> So maybe I should have been more precise: randomly in its scope
19:00:19 <Ngevd> Hello!
19:00:32 <Ngevd> (Who's AnotherTest?)
19:00:48 <zzo38> I have bots that require no prefix, all commands must be sent privately. However it is not usually active
19:00:57 <elliott> AnotherTest: If you have random-access data, then you have random-access code; data can influence the computational structure of code (that's the point, after all), and code can influence the structure of data; if you're given random-access data you can turn it into random-access code by simply writing an interpreter, and if you're given random-access code you just need to encode your data appropriately (function that does nothing but return the r
19:00:57 <elliott> elevant data, or in more constrained scenarios, e.g. Church encoding) and you've done it the other way too.
19:01:04 <elliott> So I see no reason to worry about one and not the other.
19:01:30 -!- Klisz has joined.
19:01:58 <zzo38> JavaScript has nearly everything being objects (although there are primitives as well); it seems to works OK
19:02:21 <zzo38> I like first class functions too
19:02:24 <AnotherTest> Elliott, I do mean something like the JavaScript system indeed
19:02:39 <elliott> I don't quite see the relevance of JS here.
19:02:42 <AnotherTest> although even more
19:03:04 <elliott> What is the actual language feature that adds the ability to "store pieces of code that can be accessed randomly"?
19:03:13 <AnotherTest> Variables
19:03:21 <AnotherTest> You store the code in a variable
19:03:54 <pikhq_> Wait, like mutation?
19:04:03 <elliott> Well, right. Like I said, being able to store data in a variable is the same as being able to store code in a variable.
19:04:22 <elliott> So unless you're eliminating variables, there is no point at all to deny storing code in them.
19:04:37 <AnotherTest> In most other languages
19:05:00 <AnotherTest> you can only store data such as numbers or string in a variable or object
19:05:14 <elliott> You have a bad definition of "most".
19:05:18 <AnotherTest> The idea is to store everything
19:05:24 <elliott> Just about every modern "dynamic" language can do that.
19:05:32 <AnotherTest> Yes
19:05:36 <AnotherTest> maybe
19:05:49 <AnotherTest> but it's about storing everything in variables
19:05:58 <Phantom___Hoover> maybe
19:05:59 <AnotherTest> and make no difference between variable and function
19:06:02 <Phantom___Hoover> it's about love
19:06:05 <zzo38> In programming languages such as C you can store a pointer to a function in a variable
19:06:16 <AnotherTest> zzo38, that's not the same
19:06:21 <AnotherTest> then you still store a number
19:06:29 <AnotherTest> (an address)
19:06:32 <elliott> AnotherTest: Well, it's all very well to say you don't make a distinction between X and Y, but you have to show how you actually unify the two concepts for it to be a meaningful design concept, rather than just a nice idea.
19:06:42 <elliott> Also, pointers are *not* guaranteed to be numeric in C.
19:06:54 <elliott> There are C implementations with non-address representations of pointers.
19:07:10 <elliott> They're perfectly conformant -- well, OK, probably not, but the non-conformance doesn't lie in that area.
19:07:27 <AnotherTest> Maybe, but those are exceptions?
19:07:35 <zzo38> But you still need to be able to subtract pointers that are pointing into the same object, and add numbers to pointers to result in a pointer to another element of the same object.
19:08:00 <AnotherTest> The idea of a pointer is to point to something that holds data
19:08:04 <AnotherTest> it doesn't store the data
19:08:11 <AnotherTest> so it's not at all the same as a pointer
19:08:14 <AnotherTest> ?
19:09:00 <zzo38> In Haskell, a function is a first class value and you can have partially applied functions as well
19:09:02 <elliott> AnotherTest: Whether they're exceptions or not, a language isn't its implementation, and a certain implementation strategy being dominant doesn't mean it's a property of the language.
19:09:16 <elliott> AnotherTest: But note that languages like JavaScript where you store data "directly" are using pointers behind the scenes.
19:09:28 <AnotherTest> Elliot, yes
19:09:42 <AnotherTest> but it's about the representation of the idea, not about what really happens
19:09:43 <elliott> Sure, it's convenient that "everything" is turned into a pointer implicitly and you just treat everything as references, but there's nothing /stopping/ you from programming a language like C in this way.
19:09:50 <elliott> AnotherTest: Yes, of course.
19:10:06 <elliott> Still, the idea of making everything a reference is hardly a new one; even such conservative languages as Java apply that universally.
19:11:11 <AnotherTest> Yes; but the language that I might make isn't meant for being used
19:11:25 <AnotherTest> Just for thinking about the right way of doing things
19:11:40 <zzo38> It isn't meant for being used?
19:11:55 <AnotherTest> No, well, at least not by other people than me
19:12:29 <AnotherTest> This must probably seem pretty pointless to you, but I strongly believe it isn't.
19:13:20 <AnotherTest> (since the implementation will not be time consuming at all, it also doesn't really matter)
19:13:27 <elliott> You're in #esoteric. It sounds boringly practical.
19:13:29 <zzo38> I have made programming languages that nobody else use, even though it is public, probably because it is difficult for other people to understand, or because it is for specific domain purpose?
19:13:35 <elliott> :P
19:14:09 <AnotherTest> I'm not stating that I will hide my source code for anyone
19:14:19 <AnotherTest> just that I'm not going to support them using it
19:14:33 <AnotherTest> and I also don't expect people to
19:15:28 <zzo38> OK
19:15:52 <AnotherTest> Anyway, I think I'll just try some concepts and see which ones work and which don't
19:16:17 <Phantom___Hoover> salisbury, wait, why did you say "Phantom___Hoover edinburgh"?
19:16:18 <AnotherTest> (after thinking about them, obviously)
19:16:32 <Phantom___Hoover> Oh, right.
19:16:33 <Phantom___Hoover> Yes, I am.
19:16:35 <Phantom___Hoover> Why?
19:20:28 * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him.
19:21:28 -!- tuubow has joined.
19:22:50 <elliott> Phantom___Hoover: With public information?
19:23:05 <elliott> [[As Larry King put it when McNab appeared on the Larry King Live show on CNN: "We have Andy in shadows. He's wanted by terrorist groups."]]
19:23:06 <elliott> Gahahaha
19:23:20 <AnotherTest> Um
19:23:27 <AnotherTest> mind explaining me a bit,
19:23:29 <AnotherTest> :(
19:23:48 <elliott> Explaining what?
19:23:52 <Phantom___Hoover> Dunno, but if you did some digging (and if you wanted to kill him, you'd be up for doing that) it looks like enough.
19:24:03 <Phantom___Hoover> "McNab was born on 28 December 1959. Found abandoned on the steps of Guy's Hospital in Southwark, he was brought up in Peckham, with his adoptive family."
19:24:16 <Phantom___Hoover> Like, that alone should be enough to narrow it down to a handful of people.
19:24:17 <zzo38> (Such as, the specific domain languages FurryScript and Icoruma, that probably the document I wrote for it is not very good so that is why other people did not use it)
19:24:31 <AnotherTest> Such as, what article?
19:24:43 <elliott> * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him.
19:24:46 <AnotherTest> Isn't Andy McNab a writer or so?
19:24:48 <elliott> Presumably http://en.wikipedia.org/wiki/Andy_McNab :P
19:25:05 <AnotherTest> Well seems like I got that write
19:25:07 * elliott notes that you might be trying to tie this in to the topic of this channel, which would be inadvisable, as we're almost never on it.
19:25:08 -!- Ngevd has quit (Quit: lasagne).
19:26:07 <elliott> Phantom___Hoover: http://www.google.co.uk/search?q=andy+mcnab&um=1&ie=UTF-8&hl=en&tbm=isch&biw=1366&bih=675&sei=t-zsTqqnNYyzhAf1xvG_CA
19:26:15 <elliott> Phantom___Hoover: Well, we have absolutely no idea what he looks like.
19:26:28 <elliott> Safe as particularly safe houses.
19:26:29 <zzo38> Do you have ideas about domain languages?
19:35:51 <salisbury> Phantom___Hoover: I was at Edinburgh Uni until last year
19:36:19 <salisbury> I caught the references
19:36:21 <Phantom___Hoover> I may go to Edinburgh Uni this year.
19:36:45 <Phantom___Hoover> I have already gotten lost in King's Buildings several times.
19:36:58 <salisbury> damn, I remember trying to find Kings my first year
19:37:14 <salisbury> Walked down Nicholson/what ever it turns into
19:37:33 <salisbury> overshot by like a mile .. ended up in Morningside
19:39:14 <salisbury> Its a great uni though, just 16 000 expensive for us foreigners. Even though Canada is in the commonwealth and all, they still chose to give the free tuition to EU students
19:39:28 <Phantom___Hoover> They did??
19:39:38 <Phantom___Hoover> I thought it was only Scottish students who didn't have to pay.
19:39:47 <salisbury> yeah, and EU.
19:40:24 -!- Ngevd has joined.
19:40:25 <salisbury> I'm pretty sure its still like that. A German friend of mine still goes there, and he hasn't mentioned any changes
19:40:38 <Ngevd> Hello!
19:40:42 <Phantom___Hoover> If that's true, it's the funniest thing ever.
19:41:08 <Phantom___Hoover> Giving the French free tuition but not the English is the best fees policy.
19:41:15 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
19:41:42 <Ngevd> If I went and lived with my dad's cousins in the Netherlands, I could go to a Scottish university for free
19:41:50 <salisbury> haha, yes. The English didn't have to pay full foreign fees though, iirc
19:41:57 <salisbury> just like ~4000 depending on the course
19:42:19 <Ngevd> But here I am,about 40 miles away from the Scottish border, have to pay 9000 a year
19:42:43 <salisbury> !that much for English folks
19:43:08 <AnotherTest> Come 2 Belgium
19:43:11 <pikhq_> *sigh* Japan. Why you so stupid.
19:43:16 <AnotherTest> We have great universities
19:43:42 <elliott> AnotherTest: Yes, if only this "Belgium" actually existed.
19:43:50 <AnotherTest> Um
19:43:53 <AnotherTest> I live in it...
19:43:53 <pikhq_> INSULATE. YOUR. GOD-DAMNED. BUILDINGS.
19:44:02 <salisbury> In English? My French is super rusty, and Dutch non-existent.
19:44:09 <elliott> AnotherTest: Or so you think. Educate yourself! http://zapatopi.net/belgium/
19:44:25 <pikhq_> Freezing your ass off in the winter is called "retarded" in most developed nations.
19:44:25 <AnotherTest> haha
19:44:26 <Phantom_Hoover> Ah, Belgium.
19:44:28 <pikhq_> But not Japan.
19:44:31 <AnotherTest> This is hilarious
19:44:34 <Phantom_Hoover> The cheap ripoff of Switzerland.
19:44:41 <AnotherTest> Not really
19:44:46 <AnotherTest> we don't even have mountains
19:44:49 <zzo38> It is a strange Magic: the Gathering effect randomly generated by computer: At the beginning of your upkeep, a non-creature artifact of opponent's choice gains "Whenever ~ becomes tapped, a face-down creature of opponent's choice becomes blue until end of turn.".
19:44:49 <AnotherTest> :/
19:44:52 <elliott> He did say cheap.
19:45:06 <AnotherTest> I guess
19:45:06 <zzo38> What purpose could it have?
19:45:21 <elliott> I prefer the expensive ripoff of Switzerland, [INSERT COUNTRY NAME HERE].
19:45:23 <Phantom_Hoover> Do you have any idea what the upkeep cost for a mountain is?
19:45:30 <Phantom_Hoover> elliott, Luxembourg?
19:45:31 <Ngevd> elliott, Nepal
19:45:34 <Phantom_Hoover> Liechtenstein?
19:45:37 <elliott> Luxempal.
19:45:40 <salisbury> I once had a job offer in Switzerland. VISA -> Denied..
19:45:42 <elliott> Friendship Luxem-pal.
19:45:50 <AnotherTest> elliott
19:46:00 <AnotherTest> the inventor of Rijdael comes from belgium
19:46:05 <Ngevd> salisbury, aren't they in the EU work area thing?
19:46:06 <AnotherTest> prove that it exists?
19:46:20 <salisbury> Ngevd I'm Canadian.
19:46:31 <elliott> AnotherTest: Yeah, so you *know* there's Illuminati backdoors in AES.
19:46:42 <elliott> Helpful of them to drop in a clue like that.
19:46:46 <AnotherTest> Let me ask him
19:46:48 <Ngevd> salisbury, ah, I assumed you were from Salisbury, Wiltshire
19:47:00 <AnotherTest> whenever I see him
19:47:04 <salisbury> nope, just a made up internet-name
19:47:08 <AnotherTest> which is probably not likely to happen a lot
19:47:45 <salisbury> pikhq_ I'd love to intern in Japan. But again, me being uni-lingual, are there any opportunities
19:48:02 <salisbury> (I'm assuming they would not hire me)
19:48:04 <AnotherTest> COME TO BELGIUM
19:48:11 <Ngevd> Most people on this channel seem to speak English
19:48:13 <zzo38> Then learn Japan.
19:48:26 <salisbury> zzo38, you make it sound so easy
19:48:31 * elliott speaks a language that looks like English, but he always means the opposite of what he seems to be saying.
19:48:32 <Ngevd> A few converse only in a strangle language known as Ending
19:48:39 <elliott> Including the previous message.
19:48:42 <elliott> Also, what's Ending.
19:49:00 <AnotherTest> In Belgium, most people speak English, French, Dutch and German
19:49:02 <elliott> salisbury: He didn't say Japanese, he just said Japan. Learn the very essence of Japan.
19:49:03 <Ngevd> I'm a cruciverbalist, think about it
19:49:08 <AnotherTest> so you guys wouldn't have any problems
19:49:09 <Phantom_Hoover> Ngevd, could we get an internship here/
19:49:30 <Ngevd> Phantom_Hoover, I don't know. Which here?
19:49:36 <elliott> AnotherTest: So, English, pansy English, German, and cheap plastic imitation of German?
19:49:37 <Phantom_Hoover> #esoteric here.
19:49:44 <Ngevd> Phantom_Hoover, maybe.
19:49:54 <elliott> German is of course just macho English.
19:50:00 <AnotherTest> eliott: You're discriminating Belgiums :(
19:50:09 <elliott> What I'm saying is: Belgians, decide who you are already???
19:50:20 <AnotherTest> I'm Flemish in fact
19:50:41 <Ngevd> One of my best friends is 1/64 belgian!
19:50:51 <AnotherTest> so, whatever if Belgium doesn't exist
19:51:05 <elliott> Yeah, and where do the "Flemish" come from? Flemland?!
19:51:08 <Ngevd> But then, I can successfully argue that he doesn't exist
19:51:10 <elliott> Ridiculous.
19:51:44 <AnotherTest> we have beer dude
19:51:53 <salisbury> this is true
19:51:55 <Ngevd> AnotherTest, so? So does India
19:52:04 <AnotherTest> Yes, but we have more and better
19:52:11 <elliott> So does Liechtehteitneisntisntientisentinsetien warhol.
19:52:22 <Phantom_Hoover> You know which European country sucks completely?
19:52:28 <AnotherTest> Yes, the UK
19:52:37 <salisbury> technically that is not a country
19:52:39 <salisbury> but a kingdom
19:52:45 <Phantom_Hoover> No.
19:52:46 <AnotherTest> no no
19:52:47 <Phantom_Hoover> Sweden.
19:52:56 <AnotherTest> a kingdom is a type of government
19:52:56 <Ngevd> The UK is a country made of Countries
19:52:57 <elliott> olsner: Please escape Sweden already so we can blow it up.
19:53:01 <Ngevd> Countryception
19:53:08 <AnotherTest> it has nothing to do with country or no country
19:53:16 <elliott> salisbury: The UK is very much a country.
19:53:28 <AnotherTest> Aha
19:53:37 <Phantom_Hoover> elliott, I already did, and then I tried to blow you and Ngevd up but I also blew myself and the rest of the UK up?
19:53:38 <AnotherTest> They don't even have €, what a suckers
19:53:48 <elliott> Phantom_Hoover: DEFCON isn't real life, PH.
19:53:54 <Phantom_Hoover> It isn't???
19:53:57 <AnotherTest> and they use Inches, haha!
19:54:02 <Phantom_Hoover> I've not really been killing millions?
19:54:05 <Phantom_Hoover> AnotherTest, ahahahahahahaha
19:54:07 <elliott> Not... really?
19:54:10 <Phantom_Hoover> do
19:54:13 <elliott> We... we don't use inches.
19:54:14 <Phantom_Hoover> do you know anything about the uk
19:54:16 <Ngevd> AnotherTest, the UK is legally metric
19:54:17 <AnotherTest> Not even an SI-unit
19:54:22 <Phantom_Hoover> Heights are sometimes given in feet and inches.
19:54:24 <elliott> OK heights are usually feet and inches and disatnces are miles.
19:54:25 <Phantom_Hoover> Nothing else is.
19:54:30 <elliott> But apart from that we're completely metric.
19:54:31 <elliott> *distances
19:54:31 <AnotherTest> meter is the SI-unit
19:54:35 <Ngevd> MIlk is pint?
19:54:39 <elliott> AnotherTest: We use cm all the time, dude.
19:54:45 <AnotherTest> cm sucks
19:54:48 <elliott> Ngevd: Sure , if you still consume "liquids" like an old-timer.
19:54:51 <elliott> AnotherTest: And m.
19:54:57 <AnotherTest> Okay
19:55:02 <AnotherTest> then stop pretending you don't
19:55:09 <Ngevd> But that destroys the fun!
19:55:09 <elliott> (Do most objects in your daily life have a length of 1 m or greater?)
19:55:15 <Phantom_Hoover> <AnotherTest> cm sucks
19:55:17 <Phantom_Hoover> are you for real
19:55:22 <AnotherTest> yes
19:55:27 <Ngevd> Phantom_Hoover, he's just another test.
19:55:40 <AnotherTest> Test was already taken :/
19:55:48 <Ngevd> Emphasis on another
19:55:50 <Phantom_Hoover> are you sure
19:55:57 <AnotherTest> Guys
19:56:01 <AnotherTest> I'm a test
19:56:05 -!- ais523 has joined.
19:56:17 <AnotherTest> and testing is the most important part of development
19:56:28 <AnotherTest> so I'm the most important
19:56:38 <salisbury> TIL UK == country.
19:56:43 <salisbury> I mean, I knew
19:56:44 <salisbury> but
19:56:56 <ais523> salisbury: you're named after a UK city!
19:56:56 <AnotherTest> England != country
19:57:01 -!- monqy has joined.
19:57:12 <elliott> England is a country.
19:57:12 <Ngevd> England == country
19:57:33 <AnotherTest> It isn't
19:57:33 <elliott> England is the very concept of country.
19:57:34 <ais523> england isn't as countryey as some countries
19:57:47 <Phantom_Hoover> England is not a country, it is a PANSY
19:57:52 <ais523> "subcountry" would be a good word, along the same lines as "subset"
19:58:02 <elliott> Pansy could easily be a term like "county" and the like.
19:58:19 <elliott> The quaint German pansy of Uerrfenforden.
19:58:27 <elliott> That's... not a very German name.
19:58:29 <AnotherTest> Saukerl.
19:58:53 <Ngevd> England, Scotland, Wales, Northern Ireland are kinda like states, except not
19:58:55 <ais523> wow, I never realised how many people I knew who used Belgian ISPs
19:59:04 <elliott> ais523: They're on to you.
19:59:07 <elliott> Run before it's too late.
19:59:10 <AnotherTest> Telenet = boss.
19:59:17 <elliott> DON'T FLEE TO BELGIUM, THERE IS NOTHING THERE
19:59:28 <AnotherTest> COME TO BELGIUM
19:59:31 <AnotherTest> ITS COOL
19:59:38 <Ngevd> Norway's cooler
19:59:42 <Ngevd> In more ways than one
19:59:48 <AnotherTest> Norway has mass murderers
19:59:52 <AnotherTest> I would never go there
19:59:54 <elliott> http://en.wikipedia.org/wiki/File:Royal_Banner_of_England.svg
19:59:56 <Ngevd> So does Tasmania
19:59:57 <elliott> Why have I never seen this before.
20:00:01 <elliott> This is the most ridiculous thing.
20:00:03 <AnotherTest> Also
20:00:06 <AnotherTest> in Norway it's cold
20:00:15 <Ngevd> Cold is cooler than cool
20:00:22 <ais523> wow, Novell vs. Microsoft came out inconclusive, with 11 jurors in favour of Novell and 1 in favour of Microsoft
20:00:25 <ais523> they're going to order a retrial
20:00:29 <elliott> AnotherTest: At least in Norway you know who the murderers are.
20:00:32 <AnotherTest> Belgium has moderate temperatures, which is the best
20:00:34 <elliott> In Belgium, it could be anyone.
20:01:01 <AnotherTest> True, we had this idiot lately
20:01:04 <ais523> anyway, is AnotherTest someone else in disguise, or someone new?
20:01:06 <elliott> (I mean, accepting the existence of "Belgium" for the sake of argument.)
20:01:07 <ais523> likewise, for salisbury
20:01:21 <AnotherTest> I'm actually elliott trying to be cool.
20:01:29 <AnotherTest> But don't tell anyone.
20:01:31 <ais523> elliott: why are you using a Belgian proxy?
20:01:45 <elliott> ais523: That's impossible. Belgium doesn't exist.
20:01:49 <elliott> It must be in some other country.
20:01:49 <AnotherTest> He's using Tor
20:01:58 <AnotherTest> sorr
20:02:01 <AnotherTest> *sorry
20:02:04 <AnotherTest> I'm using Tor
20:02:08 <AnotherTest> so I can't help it
20:02:09 <Ngevd> We all know where elliott lives
20:02:09 <elliott> We're using Tor.
20:02:11 <itidus20> on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data
20:02:19 <elliott> Ngevd: Yes, the Irish pansy of Helsinki.
20:02:31 <itidus20> function pointers being a quirky exception
20:02:47 <ais523> (the case is that Novell allege that Microsoft deliberately broke WordPerfect in Windows 95)
20:02:56 <elliott> ais523: /95/?
20:03:03 <elliott> ais523: how long has this case been going?
20:03:28 <ais523> I'm not sure
20:03:42 <elliott> ais523: also, as someone who has read The Old New Thing, I feel inclined to be on Microsoft's side without further information :P
20:04:06 <ais523> elliott: heh; the claim is that Microsoft deliberately fed Novell incorrect API information
20:04:18 <ais523> giving them a version of Windows to work from that implemented that API
20:04:22 <ais523> and then changed the API for the final version
20:04:26 <ais523> that got sent to customers
20:04:30 <ais523> meaning that WordPerfect didn't work
20:04:42 <elliott> hmm... that seems a really implausible espionage hypothesis compared to just having a bug in development versions
20:05:00 <itidus20> implausible? are you playing the devil's advocate?
20:05:11 <elliott> no, I'm being sincere
20:05:37 <itidus20> well, with win95 they deliberately made many softwares work..
20:05:38 <monqy> no sincere person says "implausible"
20:05:41 <itidus20> which shouldn't work
20:05:45 <ais523> elliott: the trial itself started 8 weeks ago
20:05:51 <itidus20> so perhaps they also did the opposite
20:05:53 <ais523> but presumably the court case itself started much earlier
20:06:01 <itidus20> and made certain softwares not work which should work
20:06:03 <elliott> itidus20: that's, um, not the point
20:06:13 <elliott> "microsoft made wordperfect not work" is not implausible
20:06:31 <elliott> "microsoft did <the scenario ais described>" is less plausible than "microsoft had a bug in a dev version" which would result in the same observed events
20:06:36 <itidus20> i blame my brain
20:06:55 <ais523> elliott: well, there was no API for doing what Novell was trying to do in the final Windows 95 version, and was in the dev version
20:07:02 <ais523> no public API, I mean
20:07:07 <ais523> there was a private one that Word was using
20:07:12 <elliott> hmm
20:07:21 <elliott> what did the API do?
20:07:29 <pikhq_> ais523: That's genuinely surprising, considering Windows 95 actually does have backwards-compatibility for dev versions *of itself*.
20:07:55 <zzo38> All tyrannies oppose God. Although they may set up an idol of their own and call it 'God'. But the current idol is called 'Reason'. Of course that just disguises its true nature - in reality our rulers have made an idol of themselves - but idolatry always hides its true nature behind some lie or other. God the true God is the revealer of truth and unmasker of idols that's why no tyranny can allow him. ~~"Square Circle"
20:07:57 <pikhq_> I'm not saying it's impossible, it just seems unlikely, considering how effing seriously the Win95 team took making everything (I do mean everything) work.
20:07:58 <ais523> elliott: it was some extension API for Windows Explorer (the file manager thing)
20:08:12 <ais523> pikhq_: well, I bet they could have deliberately broken something if they were told to do so
20:08:35 <pikhq_> To the point that they've got an alternate version of malloc for SimCity, because it accesses memory after freeing it.
20:08:39 <elliott> I've always seen Microsoft's maliciousness as being more on the business side of things.
20:08:42 <AnotherTest> Why discuss about windows and microsoft? Are they even worth mentioning?
20:08:51 <elliott> I don't recall any dirty code tricks they've pulled before, but I might be wrong.
20:08:52 <ais523> elliott: anyway, it seems that Microsoft admitted withdrawing the extensions, but claimed that the reasons had nothing to do with Novell
20:08:57 <elliott> AnotherTest: well, the court case sounds interesting
20:09:03 <itidus20> pikhq_: i saw raymond chan's blog :D
20:09:22 <itidus20> oh .. its coming back to me .. _thats_ where ive heard of the old new thing
20:09:46 <elliott> ais523: heh
20:09:53 <elliott> ais523: that sounds very hard to prove/disprove
20:10:17 <ais523> elliott: indeed
20:10:29 <ais523> however, it's a court case, so they have things like access to Microsoft's (and Novell's) internal emails
20:11:00 <itidus20> http://farm4.static.flickr.com/3080/2611048465_e164d403ea.jpg
20:11:05 <elliott> ais523: I wonder if Microsoft has learned to do nasty stuff off the record by now :P
20:11:33 <ais523> if they were caught doing stuff off the record, they'd lose every court case ever ;)
20:11:41 <ais523> this is why companies are so careful to keep records
20:11:45 <elliott> that would be a record! :P
20:12:00 <elliott> you just have to meet in a dark alleyway and agree to secretly remove the API Novell is using
20:12:08 <elliott> using codenames.
20:12:22 <itidus20> memphis and chicago
20:12:46 <pikhq_> Memphis ChicagoExtPlus doubleplusbad.
20:13:05 <zzo38> How common is Kxe8!!#
20:13:13 <elliott> the most common
20:13:29 <zzo38> I doubt it
20:14:40 <ais523> elliott: well, you somehow have to inform everyone in the company who might notice
20:14:41 <pikhq_> zzo38: Beautiful.
20:14:51 <ais523> or you'll get people acting "why did X happen?" in emails
20:14:58 <itidus20> the most annoying thing about GUIs is that they encourage multitasking beyond a useful level.
20:15:05 <pikhq_> ais523: Given Microsoft's policy of segregating source access, that actually doesn't take much.
20:15:19 <elliott> ais523: build a campus in a dark alleyway
20:15:33 <Phantom_Hoover> <AnotherTest> Norway has mass murderers
20:15:40 <ais523> pikhq_: oh, right
20:15:41 <pikhq_> Remember, the typical Windows dev doesn't actually have complete source.
20:15:41 <Phantom_Hoover> oerjan always was a little shifty...
20:15:41 <elliott> ais523: Q.E.D.
20:15:51 <elliott> `@ Phantom_Hoover quote norwegian
20:15:54 <HackEgo> Phantom_Hoover: 503) <monqy> cigaretes and drunking "lame highs for lame people" <oerjan> yeah if it doesn't make you go crazy and shoot at people, it's not worth it. take it from a norwegian. \ 693) <Ngevd> I'm neither Norwegian nor Finnish <Ngevd> I don't fit in your quaint little categories \ 766) <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
20:16:11 <Phantom_Hoover> wha
20:16:23 <Phantom_Hoover> (Also don't come to Scotland, there are TOO MANY SWEDES.)
20:16:43 <elliott> Phantom_Hoover: It was 503 in particular.
20:16:46 <AnotherTest> Scotland has to much rain anyway
20:16:54 <AnotherTest> *too
20:17:11 <ais523> hmm, "Batman Wonder Woman Relationship" seems to be entirely made out of badly encoded Unicode and formatting
20:17:47 <Phantom_Hoover> AnotherTest, unfortunately, Swedes don't melt on contact with water.
20:17:51 <elliott> ais523: i commented on that
20:17:53 <elliott> by uh
20:17:54 <elliott> pasting it
20:17:56 <elliott> well
20:17:58 <elliott> one line of i
20:17:58 <elliott> t
20:18:06 <itidus20> t
20:18:07 <itidus20> h
20:18:08 <itidus20> e
20:18:11 <elliott> (diff) (hist) . . Language list‎; 19:52 . . (+365) . . 149.255.39.58 (Talk) (It makes sense about not continuing with "business as usual" � I couldn't do it, either. But I can't see ghost writing as being satisfiying for someone with as strong a voice as yours. Being an evange)
20:18:16 <itidus20> -
20:18:18 <itidus20> m
20:18:19 <itidus20> o
20:18:20 <itidus20> s
20:18:22 <itidus20> t
20:18:27 <monqy> hi
20:18:30 <AnotherTest> Phantom_Hoover: maybe you should make the rain acid
20:18:42 <itidus20> -annoying form of vertical scrolling is apparently char by char :D
20:18:48 <AnotherTest> or sour
20:18:51 <Phantom_Hoover> Scots melt on contact with acid too.
20:18:53 <AnotherTest> whatever the word is
20:20:43 <AnotherTest> Phatum_Hoover: not if you put a hydroxide on your skin
20:20:52 <ais523> Ngevd: re your edit comment question, no because the captcha is stronger than Esolang's
20:21:04 <AnotherTest> Although you might get a little salty afterwards
20:21:25 <itidus20> it occurs to me on thinking about old windows that the desktop could be designed in other ways
20:21:30 -!- oerjan has joined.
20:21:36 <elliott> hi oerjan
20:21:42 <elliott> we were just talking about norwegian mass murderers, too
20:21:47 <itidus20> for instance, when a form is in focus, the background could go black
20:21:59 <oerjan> yay!
20:22:07 <itidus20> its kind of annoying to see other icons and windows all the time
20:23:13 <itidus20> humm
20:23:51 <itidus20> also, it would be nice if windows(sorry to linux users.. my statement can apply to your OS too) could convert a graphical display into a text display
20:24:25 <itidus20> like, text mode variations of all gui elements
20:24:50 <itidus20> .. well those where its feasible..
20:25:00 <AnotherTest> um
20:25:05 <AnotherTest> Who said linux can't?
20:25:11 <ais523> hmm, that seems more like a window toolkit feature than an OS feature
20:25:12 <itidus20> i'm assuming it can't
20:25:13 <AnotherTest> Who dares stating that?
20:25:23 <AnotherTest> Linux can do everything
20:25:25 <ais523> I know that Gnome can convert normal windowed displays into HTML
20:25:28 <AnotherTest> that's the first thing you must know
20:26:05 <itidus20> as for why? because text displays can be relaxing in the same way as a waterfall landscape
20:26:10 <Ngevd> AnotherTest, Linux can't run Terraria, and that makes me sad
20:26:17 <elliott> ais523: gtk's html backend just draws the pixels to a canvas :P
20:26:33 <AnotherTest> Ngevd, are you sure?
20:26:33 <elliott> AnotherTest: Linux can't be @.
20:26:42 <ais523> elliott: seriously? how disappointing :(
20:26:46 <Ngevd> AnotherTest, fairly. I've tried, repeatedly
20:26:49 <AnotherTest> Linux can be @
20:26:53 <elliott> ais523: well, IIRC
20:26:55 <elliott> AnotherTest: really? tell me how
20:26:59 <elliott> because it would save me a _lot_ of work
20:27:06 <AnotherTest> Shape your computer into an @
20:27:10 <AnotherTest> install Linux
20:27:11 <AnotherTest> done.
20:27:15 <elliott> That's not @, that's an @-shaped Linux hell.
20:27:25 <elliott> Also, @ isn't an at sign.
20:27:28 <ais523> I see no reason why Linux couldn't run an @ VM
20:28:36 <zzo38> Midnight intombed December's naked icebound gulf. Haggard, tired, I nodded, toiling over my books. Eldritch daguerreotyped dank editions cluttered even my bed; Exhaustion reigned.
20:28:52 <AnotherTest> ^ ?
20:28:53 <Ngevd> zzo38 is the new fungot
20:28:54 <fungot> Ngevd: of course,
20:29:14 <zzo38> Notice the properly of the letters of the words.
20:29:15 <ais523> AnotherTest: it looks like a Not A Raven variant
20:29:17 <ais523> but I'm not sure which
20:29:19 <zzo38> s/properly/property/
20:29:34 <ais523> in fact, I recognise it
20:29:35 <itidus20> AnotherTest: there are indeed many things i don't know about linux.
20:29:36 <oerjan> is that from the bulwer-lytton contest or something?
20:29:40 <ais523> zzo38: have you read the book "Making the Alphabet Dance"?
20:29:46 <ais523> that's where I saw that
20:29:55 <elliott> oerjan: nah, too short
20:29:59 <AnotherTest> itidus20: do you use linux, atleast?
20:30:23 <itidus20> AnotherTest: i have an alternative topic :D
20:30:24 <oerjan> elliott: and too long for little lytton?
20:30:32 <ais523> I can't remember exactly what property that line has, though
20:30:34 <elliott> oerjan: indeed
20:30:37 <elliott> *lyttle
20:30:39 <elliott> medium lytton
20:30:48 <elliott> AnotherTest: I use Linux, at least!
20:30:49 <elliott> I hate it, though.
20:30:50 <itidus20> on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data. function pointers being a quirky exception
20:30:52 <ais523> and it's often hard to tell just by looking
20:31:08 <ais523> itidus20: you're correct; and function pointers aren't an exception
20:31:22 <ais523> because you can't dereference them, nor can you necessarily convert them to any type that can be dereferenced
20:31:32 <ais523> so you can use them to make calls via, but you can't do anything else
20:31:34 <AnotherTest> itidus20: I got to go way too soon to discuss that just now :(
20:32:31 <zzo38> ais523: I have not read book "Making the Alphabet Dance".
20:32:33 <itidus20> ho ho ho
20:32:55 <elliott> ais523: hmm, you know how nomic messes with your sleep schedule?
20:33:00 <ais523> zzo38: among other things, it has /huge/ numbers of variants of that poem, each with different linguistic properties
20:33:05 <ais523> elliott: only occasionally, but yes
20:33:12 <elliott> I think roughly the opposite is happening with me at a geologically slow pace
20:33:22 <ais523> elliott: nomic is unmessing your sleep schedule?
20:33:30 <ais523> or your sleep schedule is messing with nomic?
20:33:34 <elliott> :D
20:33:34 <ais523> or something else?
20:33:38 <elliott> let's go with the second one
20:33:40 <elliott> i like that
20:33:48 <elliott> can we make my sleep schedule a rule?
20:34:05 <ais523> well, what did you originally mean?
20:34:23 <elliott> but that's way more boring than this new idea!
20:34:42 <ais523> but I'm still interested
20:34:46 <zzo38> ais523: The book I read only had three
20:35:01 <zzo38> That wasn't its primary topic
20:35:06 <AnotherTest> Gusy
20:35:08 <AnotherTest> *guys
20:35:14 <AnotherTest> I might have to purge my connection
20:35:17 <monqy> ok
20:35:17 <ais523> it's kind-of amusing to see what the poem does instead with restrictions that ban the word "nevermore"
20:35:30 <elliott> ais523: well, I'm falling into an all-consuming vortex of horror, and it's very slowly aligning my sleep schedule with normal GMT days
20:35:43 <elliott> AnotherTest: enjoy purgatory
20:35:52 <AnotherTest> damn
20:35:53 <ais523> err, an all-consuming vortex of horror doesn't sound very nice
20:36:02 <AnotherTest> people should stop using electromagnets on wires
20:36:05 <AnotherTest> brb
20:36:07 <ais523> I suggest you wear a ring of slow digestion and eat black dragon meat
20:36:34 -!- AnotherTest has quit (Quit: Leaving.).
20:36:39 <elliott> ais523: it's too late, I'm actually accelerating into it faster than any computable function
20:36:45 -!- AnotherTest has joined.
20:36:51 <elliott> AnotherTest: that was a quick purge
20:37:01 <itidus20> the vortex of fluidity
20:37:04 <AnotherTest> back
20:37:05 <ais523> elliott: is it something you want to talk about? or something you'd prefer to keep private?
20:37:15 <elliott> the vortex is inside us all!
20:37:29 <AnotherTest> Okay
20:37:35 <AnotherTest> now my screen is dieing
20:37:47 <AnotherTest> I hate kids playing with electromagnets
20:38:07 <AnotherTest> bye
20:38:10 -!- AnotherTest has quit (Client Quit).
20:38:14 <elliott> awesome
20:38:18 <elliott> I need some of those electromagnets
20:38:22 <elliott> to wave about my computer.
20:39:21 <Ngevd> elliott, there're some in Belgium
20:42:15 <itidus20> science journalism
20:42:21 <itidus20> "That's the finding of psychologists Thomas Hills of the University of Warwick and Ralph Hertwig of the University of Basel. They have examined a number of studies, and they have come to one inescapable conclusion: there's a steep price to pay for enhanced brainpower, and it's almost certainly not a good deal from an evolutionary perspective."
20:43:07 <itidus20> " "Or if you drink coffee to make yourself more alert, the trade-off is that it is likely to increase your anxiety levels and lose your fine motor control. There are always trade-offs. In other words, there is a 'sweet spot' in terms of enhancing our mental abilities if you go beyond that spot just like in the fairy-tales you have to pay the price." "
20:43:18 <Phantom_Hoover> <AnotherTest> I hate kids playing with electromagnets
20:43:52 <Phantom_Hoover> I know, they're so much less safe than permanent magnets!
20:45:06 <itidus20> is it wrong that i want to tell these people that they're annoying prigs stating the obvious and actually producing no information of value
20:46:15 <Phantom_Hoover> itidus20, no.
20:46:24 <Phantom_Hoover> Wait, the researchers?
20:46:25 <Phantom_Hoover> Yes.
20:46:26 <Phantom_Hoover> Very.
20:47:21 <itidus20> ah ok.. i should tell the reporters
20:47:23 <itidus20> :D
20:47:26 <itidus20> i see
20:48:00 <itidus20> article was titled "Why our minds have probably evolved as far as they can go"
20:48:21 <itidus20> but then i did see a smbc comic talking about science journalism
20:50:36 <fizzie> All the point of magnets and monitors is probably gone now that screens aren't CRTs any more.
20:50:39 <elliott> itidus20: It turns out something being obvious is not scientific evidence.
20:50:54 <elliott> But how about we just sweep all the times "common wisdom" was terribly wrong under the rug...
20:51:24 <oerjan> imagine a world in which the latest research findings were always entirely correct until contradicted by a later one.
20:52:02 <Gregor> That world would have a very strange definition of "research"
20:52:06 <Gregor> It's more like development ...
20:52:06 <oerjan> like, one week carrots _will_ kill you.
20:52:28 <Gregor> You have to check the newspaper every morning before deciding whether eggs for breakfast are a good idea.
20:53:02 <elliott> Gregor: But newspapers are liquid now!
20:53:16 <itidus20> elliott: no thats the vortex decieving you
20:53:27 <Gregor> elliott: I. Uh.
20:53:37 -!- Gregor has set topic: <itidus21> on a side note, [...] finland is very depressing and a bit of a matrix of solidity | http://codu.org/logs/_esoteric/.
20:54:10 * coppro learns agda
20:54:54 <itidus20> adventure game development?
20:55:27 <Phantom_Hoover> Where the hell does the final A come from there?
20:56:11 <oerjan> you can write an adventure game in agda. you just cannot compile it before universe heat death.
20:56:11 <ais523> agda's a functional language for writing programs that are proven to match a spec
20:56:22 <fizzie> Phantom_Hoover: "deva-lopment". It's dialectal.
20:56:25 <ais523> it's notoriously slow to compile
20:56:41 <ais523> because it has to check the proof
20:56:56 <itidus20> is proof a synonym for program here?
20:57:07 <copumpkin> yeah
20:57:11 <copumpkin> everywhere
20:57:11 <Ngevd> itidus20, yes, but with different conoctations
20:57:14 <elliott> ais523: why are you spewing out a definition?
20:57:14 <itidus20> :-D
20:57:21 <elliott> (one I don't think is entirely accurate, but anyway)
20:57:33 <itidus20> i set the wheels in motion
20:57:44 <itidus20> by my own definition
20:57:45 <ais523> elliott: I thought that at least one person wasn't sure what Agda was
20:57:51 <itidus20> he has corrected it
20:57:56 <elliott> ais523: fair enough
20:58:01 -!- sebbu3 has changed nick to sebbu.
20:58:04 <ais523> well, that's obvious; there's a chance that that person is even in #esoteric
20:58:50 <Phantom_Hoover> <ais523> agda's a functional language for writing programs that are proven to match a spec
20:58:52 <shachaf> What *is* Agda?
20:58:52 <Phantom_Hoover> ahahahahaha no
20:59:09 <ais523> Phantom_Hoover: that's what it is, in effect
20:59:13 <Phantom_Hoover> Agda is effectively never used for formal verification
20:59:18 <shachaf> Agda is a bird.
20:59:29 <ais523> Phantom_Hoover: well, OK, except that I've met people who've done it
20:59:33 <shachaf> itidus20: What's wrong with Finland?
20:59:34 <oerjan> shachaf: hey you've heard of my theory too?
20:59:36 <ais523> we can both agree that they're crazy
20:59:40 <Phantom_Hoover> ais523, with toy problems, sure.
20:59:44 <ais523> indeed
20:59:49 <shachaf> oerjan: Which theory?
20:59:49 <oerjan> maybe from me, i don't recall
20:59:50 <copumpkin> Phantom_Hoover: it's an experimental language, sure
20:59:53 <Phantom_Hoover> It's not used for formally-verified programs.
20:59:55 <ais523> just because a language has a purpose, doesn't mean it's good at it
20:59:57 <itidus20> shachaf: its explained by [...] notation :-D
21:00:02 <Phantom_Hoover> It's an experimental dependently-typed language.
21:00:05 <oerjan> shachaf: that agda is named after a hen in a swedish song.
21:00:15 <itidus20> `log finland is very
21:00:19 <Phantom_Hoover> SWEEEEEEEEEDEEEEEEEEN
21:00:23 -!- zzo38 has quit (Remote host closed the connection).
21:00:29 <itidus20> the odds are low on this working
21:00:43 <elliott> <Phantom_Hoover> It's not used for formally-verified programs.
21:00:43 <HackEgo> 2011-12-15.txt:20:18:20: -!- Gregor changed the topic of #esoteric to: <itidus21> on a side note, [...] finland is very depressing and a bit of a gulag | http://codu.org/logs/_esoteric/
21:00:48 <elliott> https://github.com/larrytheliquid/Lemmachine, for one.
21:00:53 <itidus20> `pastelogs finland is very
21:00:58 <elliott> I don't know how much validation is involved there, though.
21:01:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.576
21:01:13 <elliott> There's also that Agda FRP implementation that compiled to JS.
21:01:24 <Phantom_Hoover> Hmm, OK.
21:01:31 <itidus20> shachaf "2011-12-15.txt:20:17:39: <itidus21> on a side note, someone in a distant chatroom suggested to me that finland is very depressing and a bit of a gulag"
21:01:36 <Phantom_Hoover> But I'd still say it's wrong to call that its primary purpose.
21:01:50 <fizzie> Also: depressing! You must have heard wrong.
21:01:58 <fizzie> It's very dark and wet right now, that much is true.
21:02:04 <elliott> Phantom_Hoover: Also http://www.e-pig.org/epilogue/?p=1098 is written in Agda.
21:02:17 <elliott> (As is a bunch of the stuff on Epilogue, but anyway.)
21:02:18 <itidus20> fizzie: it wasnt a finlander who said that.. rather a notorious troll
21:02:47 <ais523> itidus20: is itidus21 a troll?
21:02:55 <Gregor> Oh using [...] to intentionally misquote people.
21:02:55 <elliott> fizzie: So it is, in fact, a gulag?
21:03:09 <ais523> ah, I see
21:03:10 <itidus20> Gregor: i didn't have to say it in the first palce
21:03:12 <itidus20> ^place
21:03:24 <itidus20> i am a contaigen of the words anyway
21:03:28 <Gregor> elliott: No, it's a matrix of solidity.
21:03:39 <itidus20> ^contagion
21:03:43 <oerjan> "Queen Victoria: We are [...] amused."
21:03:56 <Ngevd> `? Ngevd
21:03:59 <HackEgo> ​7oX...p)(ѳU_Al.+W.q.hYx\Z.+ކ⏡p/.ہqͶ#..o.8.:.T2>..8: ..<➟S{tl҅xz,.d17.2HYwBw*:-t...;
21:04:01 <fizzie> elliott: "-- hence transf., any place or political system in which the oppression and punishment of dissidents is institutionalized" -- well, I... guess, arguably.
21:04:09 <Ngevd> Oh, that makes me feel so much better
21:04:14 <elliott> itidus20: See, Finland is a gulag.
21:04:24 <ais523> `? Ngevd
21:04:27 <HackEgo> x/Ԇ".7oB&<0.~!....8lc~.5ꈘ܃.0...?]@V. \ .$盏w..;wmن$.T.SYP6 .U>[َfޘu.ަ(G'4_Q.].1F0.ҁ.."ƽ \ .>}s \ `w.boJ.=.)"$.bCKGن͆{(Zjߎmk.x{%qjְɶ.3,.RFeoyԚD...@+Q4Rz`֮|. #>Z41?DO\\.h \ ԟK.PգmCIw.(X.Yȷ.}m.gL?x)gE-.N90f"hk')
21:04:34 <elliott> Truly Ngevd.
21:04:49 <Ngevd> `? Gregor
21:04:52 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
21:05:02 <Ngevd> `? fungot
21:05:02 <fungot> Ngevd: this will see the final shutdown and to allow non-unix-philiacs a review might help to keep track of all their very different from clim? " segmentation violation".
21:05:04 <HackEgo> fungot cannot be stopped by that sword alone.
21:05:12 <Ngevd> `? EgoBot
21:05:14 <HackEgo> EgoBot? ¯\(°_o)/¯
21:05:23 <elliott> `learn EgoBot is my arch-nemesis.
21:05:25 <HackEgo> I knew that.
21:05:38 <Ngevd> `? glogbot
21:05:40 <HackEgo> glogbot? ¯\(°_o)/¯
21:06:13 <Ngevd> `? lambdabot
21:06:15 <HackEgo> lambdabot? ¯\(°_o)/¯
21:06:33 <Ngevd> `? elliott
21:06:33 <oerjan> `learn glogbot is a snitch, don't trust it.
21:06:36 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
21:06:52 <HackEgo> I knew that.
21:06:53 <fizzie> Glögbot, the glogbot with a Christmas theme. ("Glögg is the term for mulled wine in the Nordic countries (sometimes misspelled as glog or glug); (in Swedish and Icelandic: Glögg, Norwegian and Danish: Gløgg, Estonian and Finnish: Glögi).")
21:07:05 <Ngevd> `? ais523
21:07:08 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
21:07:13 <itidus20> i was trolling by quoting another troll. it will pass
21:07:20 <Ngevd> `? itidus20
21:07:20 -!- lifthrasiir has joined.
21:07:22 <HackEgo> itidus20 is horny 60 year olds having cybersex in minecraft
21:07:27 <ais523> itidus20: you mean that you are itidus21?
21:07:35 <Ngevd> `? itidus21
21:07:37 <HackEgo> itidus21 just made some instant coffee.
21:07:44 <Ngevd> `? Phantom_Hoover
21:07:46 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
21:07:51 <Ngevd> `? Phantom__Hoover
21:07:54 <HackEgo> Phantom__Hoover can't decide what an appropriate number of underscores is.
21:08:00 <lifthrasiir> i finally figured out why my irc connection to freenode is blocked while other network seemed fine
21:08:03 <Ngevd> `? CakeProphet
21:08:05 <HackEgo> ​:>
21:08:09 <Phantom_Hoover> Dammit guys, that's not what hatheist means.
21:08:14 <itidus20> `log new to irc
21:08:20 <elliott> lifthrasiir: welcome back
21:08:20 <HackEgo> 2011-07-29.txt:21:10:24: <ais523> I assume you're new to IRC?
21:08:24 <itidus20> tch
21:08:24 <Ngevd> Did I break Hackego?
21:08:26 <itidus20> `log new to irc
21:08:28 <lifthrasiir> elliott: long time no see. heck.
21:08:33 <HackEgo> 2009-10-05.txt:02:11:21: <LadyT261> very new to IRC ... i don't understand why
21:08:41 <ais523> lifthrasiir: did it have anything to do with mibbit?
21:08:44 <itidus20> i distracted him
21:08:49 <ais523> if not, what was it?
21:09:02 <lifthrasiir> it turned out that port 7777 was open but 7000 was not open in some router through my machine
21:09:08 <MSleep> Doens't mean what?
21:09:14 <Gregor> lifthrasiir: Apparently this channel is now dedicated to effing with bots.
21:09:16 <oerjan> `learn lifthrasiir is shunned by the rest of his country for being no good at Starcraft.
21:09:17 -!- MSleep has changed nick to MDude.
21:09:19 <HackEgo> I knew that.
21:09:27 <elliott> I think oerjan is just making these up by now.
21:09:32 <elliott> It's just a hunch though.
21:09:36 <lifthrasiir> as 7777 (commonly used for irc+ssl) was fine i assumed that 7000 (also commonly used) was also fine
21:09:49 <oerjan> elliott: you think?
21:09:51 <MDude> Is it jsut hat heist without a space?
21:09:51 <lifthrasiir> silly me
21:09:52 <Ngevd> `learn Taneb is not actually Ngevd, no matter what you may have heard.
21:09:54 <HackEgo> I knew that.
21:10:20 <shachaf> What's the difference between Taneb and Ngevd?
21:10:27 <lifthrasiir> oerjan: oh, starcraft is now the past. lol (or so) is the new starcraft.
21:10:35 <elliott> I'm really good at lol.
21:10:39 <elliott> lol lol lol lol lol roflmao lo
21:10:40 <elliott> l
21:10:45 <elliott> Fuck, I messed up. :(
21:10:49 <itidus20> Gregor: i need to detach from this channel because although i came here with best intentions, i can't really follow anything which is on-topic
21:11:03 <itidus20> so i start focusing on bots instead
21:11:05 <Ngevd> shachaf, Ngevd is what I call myself when I start thinking of myself as Taneb
21:11:11 <lifthrasiir> elliott: you will be punished by lolcats then ;)
21:11:24 <itidus20> `pastelogs `log
21:11:25 <Ngevd> I think my brother plays lol
21:11:31 <elliott> lifthrasiir: Ah yes, the traditional cats of punishment that laugh manically while they rip your inferior limbs apart.
21:11:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13446
21:11:37 <elliott> lol is... kind of a dark game??
21:11:46 <Ngevd> I'm not much good at it
21:14:37 <oerjan> `learn lifthrasiir is shunned by the rest of his country for being no good at League of Legends.
21:14:39 <HackEgo> I knew that.
21:14:50 <oerjan> accurate updated information.
21:15:10 <itidus20> from the beginning i had a great misconception of what an esolang is. i thought it was a homebrew lang.
21:15:22 <itidus20> but no middle ground really exists
21:15:31 <elliott> is this farewell :'(
21:15:34 <itidus20> no.
21:15:38 <elliott> yay
21:15:48 <itidus20> but i should try not to actively hijack :D
21:18:31 <Ngevd> ^echo ping
21:18:32 <fungot> ping ping
21:18:37 <Ngevd> Good
21:23:44 <itidus20> it seems to me that hello world is not a good hello world for the brainfuck language
21:24:48 <itidus20> that the task of displaying the text hello world is taken arbitrarily with no regard for the complexity of the task in a given language
21:25:01 <itidus20> but it seems to provide a great milestone and benchmark
21:25:21 <itidus20> and a rosetta stone of sorts
21:27:25 <ais523> well, the idea of a hello world is that it typically contains all content required to run a program of one command
21:27:31 <ais523> but in some cases, it fails, such as BF and PHP
21:27:35 <ais523> and INTERCAL
21:32:17 <itidus20> like a boob about brainfuck would not do well to begin with hello world in the first chapter
21:32:21 <itidus20> ^book
21:36:18 <oerjan> now you've done it, sent everyone off thinking about boobs
21:39:16 <itidus20> hmm
21:39:25 <itidus20> how do i execute a bf program in here?
21:39:42 <oerjan> ^bf ,[.,]!Like so
21:39:42 <fungot> Like so
21:39:59 <itidus20> ^bf .
21:40:12 <itidus20> ^bf .!
21:40:18 <itidus20> ^bf ,!
21:40:24 <oerjan> itidus20: printing a zero doesn't show up in irc
21:40:29 <itidus20> ahhh
21:40:37 <oerjan> many small control characters are excluded
21:40:40 <itidus20> ^bf +++++.!
21:40:40 <fungot>
21:40:48 <itidus20> ^bf +++++++++++++++++++++.!
21:40:48 <fungot>
21:40:59 <itidus20> ^bf +++++++++++++++++++++++++++++++++++++++++++++++++++++.!
21:40:59 <fungot> 5
21:41:05 <itidus20> yay
21:41:14 <oerjan> itidus20: you don't need the ! part if you're not using ,
21:41:29 <oerjan> it's for the input to the program
21:41:41 <itidus20> i misinterpreted the ! as an EOF delimeter
21:41:48 <oerjan> it sort of is
21:41:54 <itidus20> ah i see
21:42:47 <pikhq_> It seperates input from the source.
21:44:02 <itidus20> ^bf ,>[,>]<.[<.]!test
21:44:02 <fungot> t
21:44:33 <itidus20> ^bf ,>[,>]<.[<.]!tesc
21:44:33 <fungot> t
21:44:43 <itidus20> hehe. ok i will let it be for now
21:44:53 <oerjan> itidus20: the first loop is never run, and the second runs off the tape
21:45:06 <fizzie> ^bf ,[>,]<[.<]!testing
21:45:06 <fungot> gnitset
21:45:42 <fizzie> ^show rev
21:45:43 <fungot> >,[>,]<[.<]
21:45:48 <itidus20> afk
21:46:32 <fizzie> fungot: Your 'rev' wins a "useless use of >" award. (Admittedly it's only useless because of a tape without a left edge.)
21:46:32 <fungot> fizzie: ohhh that editor.... oh, actually caring about the term type? can't decide if an hp attempts to lock up directly after i found the following net discussion gave me a *truly* useful core dump).
21:47:02 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:52:42 -!- elliott has quit (Ping timeout: 240 seconds).
21:54:02 <oerjan> ^bf <,[.,]!What, no left edge?
21:54:02 <fungot> What, no left edge?
22:00:11 <fizzie> Well, no right edge either.
22:00:18 <fizzie> (It's a loo.)
22:02:55 <itidus20> ,,.[,,.]!test2
22:02:59 <itidus20> oops
22:03:04 <itidus20> ^bf ,,.[,,.]!test2
22:03:05 <fungot> et
22:03:41 <fizzie> ^bf ,[>,]>+[>+>[<->[-]]<]>>[.>].!...what's here?
22:03:41 <fungot> ..what's here?
22:03:50 <fizzie> Round and round we go.
22:04:24 <itidus20> ^bf ,,.[,,.]!test2 apdhfognteyhhodmse
22:04:24 <fungot> et phonehome
22:05:50 <Ngevd> DO ^bf and !bf differ in behaviour at all?
22:06:42 <fizzie> Very probably; at least in the tape length (mine is I think a loop of 1000 cells) and timing restrictions.
22:06:55 <fizzie> Perhaps also in behaviour on "EOF".
22:07:38 <fizzie> Also I don't even know if !bf does the "input after !" thing.
22:09:52 <Gregor> !bf is EgoBF, my impl.
22:10:03 <oerjan> and !bf doesn't handle cutting of infinite output *whistles innocently*
22:10:29 <oerjan> ^bf ,[.]!a
22:10:29 <fungot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ...
22:10:48 <Gregor> !bf ,[.]!a
22:10:54 <Gregor> Yup, appears not to support !
22:11:13 <oerjan> !bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[.]
22:11:40 <Gregor> !bf ----[>+<----]>++.
22:11:40 <EgoBot> A
22:11:41 <Ngevd> What is EgoBot written in?
22:11:44 <Gregor> !bf ----[>+<----]>++[.]
22:11:48 <oerjan> !bf ,[.,]!hm...
22:12:00 <Gregor> Ngevd: http://codu.org/projects/egobot/hg/
22:13:21 <Ngevd> Mainly C, possibly some other languages?
22:14:16 <Gregor> The IRC component is in C, the bridge/scaffolding is mostly bash, and the languages are implemented in various things.
22:15:51 <Gregor> I'm not a one-language kind of lunatic 8-D
22:16:11 -!- sebbu2 has joined.
22:16:12 -!- sebbu2 has quit (Changing host).
22:16:12 -!- sebbu2 has joined.
22:16:14 <oerjan> but the other kind
22:16:43 -!- derdon has joined.
22:16:57 <Ngevd> I don't know enough languages to be any of those kinds of lunatics
22:17:04 <Ngevd> I don't know enough languages.
22:17:12 <fizzie> It's written in all the languages. All of them.
22:17:55 -!- sebbu has quit (Ping timeout: 244 seconds).
22:18:25 <Gregor> My ultimate plan is still to eventually merge all the functionality of EgoBot into HackEgo.
22:18:44 <Ngevd> And call the result HackEgoBot?
22:19:02 <Gregor> Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm probably just EgoBot.
22:19:09 <fizzie> * HackBot :No such nick/channel
22:19:12 <fizzie> That's free too.
22:20:20 <Gregor> fizzie: The code base is actually called HackBot, but I call it HackEgo on FreeNode to correspond to my ego-stroking naming convention
22:20:25 <Ngevd> EgoEgo
22:20:26 <kallisti> Gregor: I know exactly how you could do that .
22:20:54 <kallisti> Gregor: you could make a bot that allows you execute arbitrary code in a Unix-like sandbox with revision control.
22:20:57 <kallisti> +to
22:20:59 <fizzie> Gregor: You certainly know how to put the "ego" back in Gregor.
22:21:07 <Sgeo> ^bf +>[->],.!!
22:21:07 <fungot> !
22:21:20 <Ngevd> !bf +>[->],.!!
22:21:23 <Gregor> kallisti: AMAZING
22:21:28 <kallisti> yes
22:21:33 <Sgeo> I intended that to go around the entire tape
22:21:36 <Sgeo> No idea if I did that right
22:21:37 <Gregor> kallisti: I'm just too lazy to actually throw all the crap that's in EgoBot into HackEgo's env.
22:21:46 <fizzie> Sgeo: The loop will never run.
22:21:55 <Sgeo> Oh
22:21:58 <fizzie> Sgeo: After "+>", you're in a zero cell.
22:22:12 <kallisti> Gregor: so you want addinterp and friends?
22:22:15 <Ngevd> ^bf +[->],.!!
22:22:15 <fungot> !
22:22:28 <oerjan> Ngevd: only runs once
22:22:42 <Ngevd> ^bf +[->-],.!!
22:22:47 <fungot> ...out of time!
22:22:48 <Sgeo> ^bf +>-[>-],.!!
22:22:48 <fungot> !
22:22:57 <Gregor> kallisti: Well, and all the languages.
22:23:04 <kallisti> right
22:23:08 <Ngevd> !numberwang 1623
22:23:09 <EgoBot> That's numberwang!
22:23:14 <Sgeo> Did mine work as intended?
22:23:18 <Sgeo> ^bf >-[>-],.!!
22:23:22 <fungot> !
22:23:35 <oerjan> ^bf +>,[>-]>.!!
22:23:36 <fungot> !
22:23:36 <Sgeo> I'll take that as a no, I think
22:24:03 <Ngevd> I think mine did?
22:24:40 <oerjan> Ngevd: your last one didn't halt in reasonable time
22:24:55 <fizzie> oerjan: But it certainly did "go around the entire tape".
22:25:02 <Sgeo> Who says the tape is reasonably sized?
22:25:04 <oerjan> well that's true.
22:25:11 <oerjan> Sgeo: fizzie
22:25:21 <fizzie> ^source
22:25:21 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
22:25:34 <Gregor> More importantly, there are virtually no implementations in which the tape forms a loop X_X
22:25:58 <fizzie> Sgeo: See, it's aaa** cells. And executes aaaaaa***** cycles.
22:26:09 <oerjan> Sgeo: your ^bf +[->-],.!! worked i think
22:26:18 <oerjan> or wait
22:27:04 <oerjan> well in some way
22:27:41 <oerjan> Gregor: fungot's does
22:27:42 <fungot> oerjan: index: sbin/ fsck/ pass2.c 4.3bsd-reno fsck fix) date: 18 sep 90 10:46:57 pdt from: ww
22:27:53 <Gregor> oerjan: Brain asplote.
22:27:54 <oerjan> and i believe my last one proves it definitely
22:28:43 <oerjan> by actually looping around between reading and printing the character
22:29:06 <fizzie> Gregor: Certainly there are; fungot, and bfvga. And I'm pretty sure there are other low-level ones that use an 8-bit or 16-bit tape pointer which wraps around "naturally", and a correspondingly sized tape.
22:29:06 <fungot> fizzie: a crying shame too. that would explain what this note was written ( unix) the 3 a.m. sunday to:
22:31:46 <fizzie> I must've gotten the loopy-tape idea from *somewhere* when writing the fungot one.
22:31:47 <fungot> fizzie: posted as context diffs. " i don't maintain or even functional...
22:33:16 <kallisti> wow I feel like complete shit.
22:33:20 <kallisti> I wonder how that happened
22:33:44 <oerjan> probably alien abduction.
22:34:11 -!- Phantom_Hoover has joined.
22:34:57 <fizzie> "Too many fingers / have I got in my hand / I think there happened a creature / an alien creature" -- paraphrasing some Finnish song lyrics.
22:35:23 <fizzie> It doesn't really translate.
22:35:25 <oerjan> fizzie: it could also be too much vodka.
22:36:14 <oerjan> new haskell platform released
22:36:43 <fizzie> ("Liikaa sormia / ompi mulla kädessä / taisi käydä olio / avaruusolio.")
22:36:58 <oerjan> ompa pa
22:37:19 <Phantom_Hoover> Surely Finns don't drink vodka?
22:37:29 <fizzie> We even have a quasi-known brand.
22:37:42 <fizzie> http://en.wikipedia.org/wiki/Finlandia_Vodka
22:37:54 <Phantom_Hoover> But that stuff's 60% water!
22:38:07 <ais523> and 40% alcohol?
22:38:10 <fizzie> Yes.
22:38:13 <ais523> haha
22:38:27 <ais523> I've heard that drinking diluted ethanol doesn't actually give a hangover
22:38:34 <ais523> although it seems quite a pointless activity
22:38:46 <fizzie> Phantom_Hoover: There's a variant of http://en.wikipedia.org/wiki/Koskenkorva_Viina that's only 40% water.
22:38:55 <Phantom_Hoover> Better.
22:38:58 <Phantom_Hoover> ais523, um no?
22:39:01 <Phantom_Hoover> You get drunk?
22:39:44 <ais523> Phantom_Hoover: but what's the point in getting drunk if you don't even get the enjoyment of drinking alcoholic drinks in the process?
22:39:49 <ais523> I thought being drunk was a /bad/ thing
22:40:03 <Phantom_Hoover> Nnnnnnno.
22:53:05 -!- Patashu has joined.
23:04:51 * kallisti has taken a liking to porter ale.
23:05:02 <kallisti> tastes pretty good for a beer.
23:07:51 -!- salisbury has quit (Quit: Leaving).
23:20:26 -!- Ngevd has quit (Ping timeout: 244 seconds).
23:25:32 <Sgeo> If I smile at a Station V3 strip, can I link it?
23:25:40 <kallisti> no.
23:25:45 <Phantom_Hoover> No.
23:25:49 <monqy> yes
23:25:59 <Sgeo> http://www.stationv3.com/d/20111217.html
23:26:08 <kallisti> monqy: WHAT HAVE YOU DONWE
23:26:11 <Phantom_Hoover> (monqy means no, since I know you have no sense of monqy— goddamn it.)
23:26:30 <Phantom_Hoover> monqy, please don't say things near Sgeo, he is stupid.
23:27:02 <kallisti> Sgeo: "WHAT MIND CONTROL HELMET" HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
23:28:08 <Sgeo> Who says that I couldn't have guessed that monqy was joking and I just deliberately took the yes literally?
23:28:25 <monqy> remember what happened with homestuck
23:29:37 <Sgeo> Just because my monqy-detector failed once doesn't mean it always fails.
23:33:17 <olsner> http://imgur.com/37cmF :(
23:33:59 <oerjan> remember kids, if you are being sarcastic the audience has a right to choose to take you literally, with all resulting consequences.
23:34:19 <Phantom_Hoover> monqy, that little stunt accounted for more than half of my lambdabot messages this morning.
23:34:22 <Phantom_Hoover> I hope you're happy.
23:34:32 <monqy> overjoyed
23:35:16 <Sgeo> Phantom_Hoover, I sent you no @tells. Go blame elliott or something
23:35:42 <Phantom_Hoover> Yes but please consider poor lambdabot when saying stupid things while elliott's in the channel.
23:35:49 <oerjan> your puny weapons are no match for our foodstuff
23:36:52 <Phantom_Hoover> olsner, see you should move to Finland??
23:37:17 <Phantom_Hoover> Then when Sweden invades to get you back, you can all armour yourselves with bread.
23:37:18 <oerjan> Phantom_Hoover: what, so he would starve to death?????
23:37:39 <Phantom_Hoover> Also, we can nuke them and nothing of value will be lost.
23:44:06 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Fortifikation_(Migr%C3%A4ne).jpg
23:44:12 <Phantom_Hoover> I forgot how terrible this is.
23:51:19 <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
23:53:25 <itidus20> i propose a new brainfuck variant which consists of nothing but the word Chuck repeated over and over
23:53:47 <itidus20> I can see a problem with this actually..
23:53:48 <Gregor> ais523: "I don't always do advertisements. And when I do, they would have rather had Chuck Norris."
23:54:04 <ais523> itidus20: that it could only have one command?
23:54:11 <ais523> or that Phantom_Hoover would replace your brains with a brick?
23:54:21 <itidus20> yeah.. it needs a second token..
23:54:24 <Phantom_Hoover> Use 'Chuck', 'Norris', binary code.
23:54:45 <Phantom_Hoover> I dare you, motherfucker. I double dare you.
23:55:19 <itidus20> so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!'
23:55:41 <Phantom_Hoover> A logic language based on Chuck Norris facts.
23:57:36 <oerjan> i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command.
23:58:07 <itidus20> aha
23:59:54 <ais523> hmm, what might be interesting would be an evolutionary computing language
2011-12-18
00:00:06 <ais523> where it does two different things, and you tell it what was more like what you wanted
00:00:08 <ais523> and repeat
00:00:27 -!- olsner has quit (Ping timeout: 252 seconds).
00:00:36 <ais523> make it deterministic in how it makes suggestions, then a program would just be a chain of true and false, or first and second, or whatever
00:00:51 <Phantom_Hoover> Hmm, that reminds me somewhat of Clue.
00:01:29 <ais523> yep, but more extreme
00:01:44 <ais523> oklopol-Clue, that is
00:02:15 <itidus20> humm
00:03:02 <Phantom_Hoover> ocluepol.
00:03:46 <itidus20> i have no knowledge of Clue, that is to say I don't have a Clue
00:04:02 <itidus20> tintin joke..
00:04:37 <itidus20> better as: I haven't any knowledge of Clue, that is to say I don't have any Clue.
00:05:02 -!- olsner has joined.
00:05:50 <itidus20> with that said, the simplest form of this language would be the production of a binary sequence
00:06:37 <itidus20> A series of questions of the form (0, 1, End)
00:07:02 <itidus20> uhmm
00:07:10 <itidus20> hmm. no im missing something
00:08:15 <itidus20> default program might possibly be to do nothing at all, and then interpreter will say "is this acceptable, or do you want something better (?)
00:09:38 <itidus20> since it's not merely a sequence of 0s and 1s and is infact a program, i guess it would have to first run the program, show you the output, and then you could evaluate it
00:10:12 <itidus20> you can get a glimpse of the limitations of my intelligence here
00:12:31 <Phantom_Hoover> I think we've had a thorough, detailed examination of the limitations of your intelligence these past months.
00:12:41 <Phantom_Hoover> They're not actually as pressing as you think they are.
00:12:44 * Phantom_Hoover → sleep
00:12:45 -!- Phantom_Hoover has quit (Quit: Leaving).
00:12:59 <itidus20> the details of the problem is of course how to generate suggestions
00:14:03 <itidus20> which is equivalent to a new pascal programmer using borland graphics interface trying to create quake
00:17:36 -!- zzo38 has joined.
00:18:57 <zzo38> Should there be a class to indicate if you have a commutative applicative?
00:25:35 <kallisti> hm
00:25:41 <kallisti> zzo38: dunno
00:25:50 <kallisti> unrelated note: do paradoxes describe a computation that doesn't halt?
00:26:26 <zzo38> Yes I have thought of that too.
00:26:33 <zzo38> I don't know the answer
00:27:30 <ais523> wow, it seems that the most popular browser version now is Chrome 15
00:27:42 <ais523> IE has more share total, but no individual version of IE beats Chrome 15
00:28:53 <pikhq_> Also, the combination of Chrome and Firefox hits a majority share in the market.
00:29:51 <kallisti> ITT: great triumphs of internet history
00:30:02 <pikhq_> Which is, of course, awesome.
00:30:03 -!- pikhq_ has quit (Quit: Reconnecting).
00:34:57 -!- pikhq has joined.
00:36:27 <kallisti> pikhq: this means that being standards compliant is better than it was previously.
00:36:57 <kallisti> or rather, there's more incentive to be standards compliant.
00:37:13 -!- derdon has quit (Remote host closed the connection).
00:39:44 <kallisti> if more websites stopped being "IE-compliant" then even more people would switch over, realizing that IE is buggy.
00:40:10 <kallisti> imagine if google suddenly stopped working properly in IE. :P
00:40:25 <kallisti> (unlikely)
00:41:06 <zzo38> I have just use very simple HTML codes and often not HTML at all, and even gopher as well, it is simple to get it correct!!
00:41:58 <pikhq> kallisti: Modern IE is actually reasonable.
00:42:16 <pikhq> Not perfect, but its standard handling is not a complete joke.
00:42:40 <kallisti> pikhq: so I've heard.
00:42:56 <pikhq> zzo38: Personally, I prefer to go for fairly simple HTML5.
00:43:16 <pikhq> "Simple" meaning "there's a reasonable expectation of it functioning sanely in just about every web browser ever made".
00:44:37 <zzo38> pikhq: I will do the simple in slightly different way; don't use unnecessary commands. For example, if <EM> and <HR> is good enough, you can use that. If you need a video then you can put <VIDEO> but in general don't include the unnecessary things and expect not always working except for the basic HTML things
00:45:02 <zzo38> So that includes CSS might not be properly, images might not display, scripts might not run or might run incorrectly, etc.
00:45:11 <zzo38> Some fonts might not necessarily be installed.
00:46:16 <pikhq> zzo38: Well, that too is part of my notion of "simple", I just omitted it.
00:46:52 <pikhq> Things like CSS and images should make your content look better, but if someone uses links for browsing, it should "just work".
00:48:20 <Sgeo> I don't think that works well for YouTube. Videos are an essential component of its functionality
00:48:22 <zzo38> Yes I agree that even if you use CSS and images, it in general should not depend on them. (However, I have another suggestion: Make any CSS/images/scripts not take up too much memory or CPU time)
00:48:48 <zzo38> Sgeo: Well, yes, for things that necessarily need images, videos, or whatever, have them; but in general do not rely on unnecessary things.
00:51:05 <oerjan> @check True
00:51:06 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
00:51:16 <oerjan> @scheck True
00:51:16 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
00:51:26 <oerjan> oops
00:51:29 <oerjan> @list check
00:51:29 <lambdabot> check provides: check
00:56:24 <pikhq> Sgeo: The idea is "avoid pointless shit", not "avoid everything new".
01:31:00 -!- pikhq has quit (Read error: Operation timed out).
01:33:09 -!- pikhq has joined.
01:46:39 <itidus20> hmm
01:46:52 <itidus20> i have to say browsers are pro-advertiser
01:47:11 <itidus20> the browser people don't like the idea of you having absolute control over your browsing experience
01:48:11 <itidus20> disregard my last comment
01:48:23 -!- tuubow has quit (Ping timeout: 240 seconds).
01:53:02 -!- sebbu3 has joined.
01:53:02 -!- sebbu3 has quit (Changing host).
01:53:02 -!- sebbu3 has joined.
01:53:43 -!- sebbu2 has quit (Ping timeout: 240 seconds).
01:55:54 <zzo38> How many discardable commutative applicatives are there?
01:56:08 <oerjan> what's discardable
01:56:39 <zzo38> x <$ y = pure x
01:57:05 <oerjan> :t (<$)
01:57:05 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
01:58:01 <oerjan> Reader fits, but not Maybe (x <$ Nothing is Nothing)
01:58:07 <zzo38> Identity functor is, but are there others?
01:58:36 <oerjan> yes, Reader
01:58:39 <zzo38> OK
01:59:29 <zzo38> Is that all? Do you know of others?
02:00:32 <monqy> Writer (), i.e. Identity
02:00:45 <oerjan> heh
02:00:49 <oerjan> State () too, then
02:01:18 <monqy> hm
02:01:19 <oerjan> ignoring bottoms
02:01:20 <monqy> ZipList?
02:01:26 <oerjan> no, not ZipList
02:01:30 <monqy> :(
02:02:27 -!- sebbu3 has changed nick to sebbu.
02:02:28 <monqy> oh right I forgot sometimes ziplists aren't infinite
02:02:43 <zzo38> State () is isomorphic to the identity functor, isn't it? Because you have () -> (x, ()) so you can just become x removing unnecessary things
02:02:53 <oerjan> the infinite ones are isomorphic to Reader Natural
02:03:02 <oerjan> zzo38: yeah
02:03:26 <oerjan> RWS r () () as well, probably, as that should be isomorphic to Reader r
02:03:56 <oerjan> the trivial Applicative
02:06:08 <oerjan> you essentially want no outgoing side effects
02:07:12 <kallisti> :t get
02:07:13 <lambdabot> forall (m :: * -> *) s. (MonadState s m) => m s
02:08:00 <monqy> Set, if Set was a Monad?
02:08:17 <monqy> Er
02:08:19 <monqy> Applicative
02:08:52 <zzo38> It might have to be a type for only nonempty sets
02:09:03 <monqy> oh right
02:09:35 <oerjan> i don't think nonempty Set is commutative, but maybe you consider it as discardable
02:09:44 <oerjan> *can consider
02:10:09 <oerjan> or wait hm
02:10:27 <oerjan> in spirit it is commutative
02:10:42 <kallisti> nonempty. How do you take the difference of a set with itself?
02:10:51 <kallisti> is that undefined?
02:11:07 <oerjan> kallisti: difference is not an applicative operation, hth
02:11:09 <zzo38> For a type of only nonempty sets, you cannot take differences of sets.
02:11:31 <kallisti> oerjan: well sure. it was just a general question about nonempty sets. Not relevant to applicatives.
02:11:45 <oerjan> probably use a Maybe result
02:12:08 <kallisti> so "turn it into regular sets for that operation"
02:13:14 <kallisti> Maybe (NonEmpty a) ~ [a]
02:13:23 <kallisti> I assume the same applies for non-empty sets.
03:10:53 <oerjan> :t ReaderT
03:10:54 <lambdabot> forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
03:29:09 -!- tuubow has joined.
03:31:42 -!- azaq23 has quit (Quit: Leaving.).
03:34:36 <Sgeo> kallisti, update
03:55:44 <Sgeo> Also monqy I guess
03:55:50 <monqy> what
03:56:07 <monqy> hi
03:56:52 <Sgeo> I know that you know what Homestuck is, but are you actively caught up?
03:58:01 <oerjan> you cannot catch up, you can only update slower than light
03:58:09 <oerjan> hth
03:58:15 <monqy> im having trouble dealing with zoosmells death...
04:03:06 <kallisti> Sgeo: I'm glad the main characters have the ability to talk now.
04:10:53 -!- DCliche has joined.
04:12:39 -!- kallisti has changed nick to {{}}.
04:12:46 -!- {{}} has changed nick to kallisti.
04:14:45 -!- Klisz has quit (Ping timeout: 252 seconds).
04:29:37 * Sgeo 's mind is broken
04:29:58 <monqy> hi
04:30:46 <Sgeo> I was berating a library written by a co-author of Real World Haskell
04:31:12 <kallisti> oerjan: your overuse of the hth acronym is truly getting out of hand.
04:31:29 <Sgeo> I'm just going to email him
04:31:46 <oerjan> kallisti: should i ask gregor to borrow his smiley censoring code?
04:32:23 <kallisti> no.
04:32:29 <kallisti> just quit it. hth
04:32:58 <oerjan> okthxbye
04:34:35 <Gregor> oerjan: It's not code, it's just XChat's builtin text-replacement feature.
04:34:41 <Gregor> I just replace the smiley with nothing.
04:34:45 <oerjan> ok
04:34:52 <Sgeo> I feel awkward for criticising code written by a giant
04:35:05 <oerjan> Sgeo: well maybe it has bitrotted?
04:35:25 <Sgeo> Last modified 2010
04:35:36 <Sgeo> Did people know about the dangers of lazy IO before 2010?
04:35:50 <Sgeo> version 1.0.0 was released 2007
04:37:57 <kallisti> Sgeo: in Skyrim you'd take the rusk of being crushed by the giant.
04:38:05 <oerjan> well iteratees are fairly new and i think still not entirely intuitive, and before those the alternative was to do everything in IO, which some may consider worse
04:38:56 <Sgeo> At least options for strict nlst, say, vs lazy nlst might be nice
04:38:59 <oerjan> i haven't learned iteratees properly myself
04:45:13 -!- myndzi has quit (Read error: Connection reset by peer).
04:47:26 <oerjan> :t ioError
04:47:27 <lambdabot> forall a. IOError -> IO a
04:47:50 <oerjan> :t (>>= maybe (ioError $ userError "oops") return)
04:47:51 <lambdabot> forall a. IO (Maybe a) -> IO a
04:53:55 -!- MDude has changed nick to MSleep.
04:59:23 <oerjan> :t foldM
04:59:24 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
05:00:26 -!- myndzi has joined.
05:14:50 <kallisti> oh god why am I playing the world's hardest game.
05:15:06 <coppro> kallisti: what game?
05:15:56 <Gregor> I Wanna Be the Guy? 8-D
05:16:56 <kallisti> no it's a flash game called
05:17:00 <kallisti> the world's hardest game.
05:17:04 <kallisti> I played it ages ago
05:17:10 <kallisti> and decided to play it again.
05:17:15 * kallisti is currently on level 11 out of 30
05:18:20 <coppro> oh
05:18:25 <coppro> I'm currently playing 'learn agda'
05:18:27 <coppro> it's pretty hard
05:28:59 <kallisti> seriously the main reason this game is so hard is because it's really shitty.
05:29:19 <kallisti> the sensitivity and collisions are wonky.
05:33:53 <monqy> sounds fun
05:41:12 <kallisti> 16 out of 30
05:42:05 -!- tuubow has quit (Ping timeout: 276 seconds).
05:50:17 -!- tuubow has joined.
06:00:57 <kallisti> wow this one is insane.
06:01:10 <kallisti> you have to go through this tunnels while being chased by circles
06:01:23 <kallisti> all of the circles go back and forth in their own tunnel at rates slightly out of phase with each other.
06:02:08 <kallisti> sometimes the circles overlap each other and then you're just fucked.
06:02:15 <kallisti> so you have to go at the right time, and I cannot figure out the right time at all.
06:03:06 <kallisti> FINALY
06:03:16 <kallisti> next level... oh god what is this I quit.
06:05:12 <kallisti> here's someone beating all 30 levels with 0 deaths apparently.
06:05:17 <kallisti> I had like 500 by level 18.
06:09:53 <kallisti> this guy makes it look easy.
06:13:46 <kallisti> it's like watching little shapes dance together.
06:14:12 * Sgeo WTFs at PHP
06:15:16 <kallisti> heh
06:15:30 <kallisti> it's almost like the language designers have no idea what they're doing.
06:15:31 <kallisti> right?
06:15:33 <Sgeo> <php-bot> Sgeo, Want to be able to access array elements like this: function()[0]? It's called function array dereferencing, and it's coming in PHP 5.4.
06:15:44 <kallisti> yes, revolutionary.
06:16:09 <kallisti> funnily enough, perl has problems with this as well. it's possible, but it requires a lot of parentheses or else perl will complain.
06:16:39 <kallisti> !perl sub example {1..5}; print example()[0]
06:16:41 <EgoBot> syntax error at /tmp/input.4472 line 1, near ")["
06:16:45 <kallisti> !perl sub example {1..5}; print (example()[0])
06:16:46 <EgoBot> syntax error at /tmp/input.4531 line 1, near ")["
06:17:01 <monqy> !perl sub example {1..5}; print (example())[0]
06:17:02 <EgoBot> syntax error at /tmp/input.4598 line 1, near ")["
06:17:04 <Sgeo> !perl sub example {1..5}; print (example())[0]
06:17:04 <EgoBot> syntax error at /tmp/input.4658 line 1, near ")["
06:17:05 <monqy> noooooo
06:17:06 <kallisti> !perl sub example {1..5}; print ((example())[0])
06:17:07 <EgoBot> 1
06:17:11 <monqy> i
06:17:12 <kallisti> yeah, it's stupid
06:17:20 <kallisti> !perl sub example {1..5}; print ((example)[0])
06:17:20 <EgoBot> 1
06:17:21 <kallisti> works as well
06:17:52 <kallisti> I'm not really sure why it works like that, but it does. Apparently they don't give suscripts a 'precedence'?
06:18:02 <kallisti> or something?
06:19:05 <kallisti> monqy: surprisingly I don't actually need to take subscripts of non-array lists very often.
06:19:16 -!- oerjan has quit (Quit: Good night).
06:19:46 <monqy> I've forgotten enough perl not to know what that means
06:20:23 <kallisti> well an array is basically "a list stored in an @ variable" while a list is just any kind of list out in the wild.
06:20:26 <kallisti> if that makes sense.
06:20:39 <kallisti> they're subtley different from each other.
06:20:43 <kallisti> subtley
06:21:58 <kallisti> in particular an array in scalar context is its length, while a list in scalar context is kind of undefined, because lists don't exist in scalar context. the expression that would otherwise make a list is instead interpreted as scalar values.
06:22:18 <kallisti> so for example, in scalar context, the comma operator becomes the comma operator in C. 1,2,3,4 in scalar context evaluated to 4.
06:23:59 <kallisti> a side-effect of this is that there's no sane way to get the length of a list that's returned from a function, without writing your own length function or assigning it to an array first.
06:24:28 <monqy> :(
06:24:47 <kallisti> well, hmm...
06:24:59 <kallisti> I think there are some ugly workarounds.
06:25:14 <kallisti> !perl print scalar (() = (1,2,3,4))
06:25:15 <EgoBot> 4
06:25:17 <kallisti> yeah that
06:25:22 <kallisti> !perl print scalar (1,2,3,4)
06:25:23 <EgoBot> 4
06:25:24 <kallisti> er
06:25:26 <kallisti> bad example
06:25:32 <kallisti> !perl print scalar (2,3,4,5)
06:25:33 <EgoBot> 5
06:25:38 <kallisti> !perl print scalar (()=(2,3,4,5))
06:25:38 <EgoBot> 4
06:25:47 <monqy> aaahhhhhhh
06:25:50 <kallisti> lol
06:26:13 <kallisti> , in list context makes lists. , in scalar context works like , in C.
06:26:44 <kallisti> however ()=(2,3,4,5) forces list context, so now you can be assured that evaluated said list in scalar context will give you the length
06:26:47 <kallisti> I bet that makes absolutely no sense to you.
06:26:49 <kallisti> :P
06:26:57 <kallisti> *evaluating
06:27:34 <kallisti> !perl print scalar map {$_+1} 1..5
06:27:35 <EgoBot> 5
06:27:38 <kallisti> !perl print scalar map {$_+1} 2..5
06:27:39 <EgoBot> 4
06:28:07 <kallisti> depending on what the function/operator/expression returns in scalar context though, doing the ()=... stuff my bad unecessary
06:28:13 <kallisti> s/bad/be/
06:29:04 <kallisti> a lot of functions that normally return lists will instead return the list's length in scalar context.
06:29:07 <kallisti> but not all.
06:29:44 -!- kmc has quit (Quit: Leaving).
06:29:56 <kallisti> sub hi { wantarray? (@_,3,4) : "poop" } print hi 1,2
06:30:01 <kallisti> !perl sub hi { wantarray? (@_,3,4) : "poop" } print hi 1,2
06:30:02 <EgoBot> 1234
06:30:09 <kallisti> !perl sub hi { wantarray? (@_,3,4) : "poop" } print scalar hi 1,2
06:30:10 <EgoBot> poop
06:31:33 <kallisti> some functions basically do two different things, or will perform the same operation but will format the results differently depending on where you use the function.
06:32:03 <kallisti> I've seen some functions that return a result in list/scalar context, and otherwise perform an in-place operation in void context.
06:32:13 <kallisti> which is pretty convenient.
06:32:47 <kallisti> presumably if you call a function in void context you want some kind of side-effect to happen, so that's sensibly.
06:36:19 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, (scalar test,test)
06:36:19 <EgoBot> listscalarlist
06:36:37 <kallisti> hm
06:36:49 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, scalar (test,test)
06:36:50 <EgoBot> listscalar
06:36:50 <Sgeo> I say "I kind of have anti-PHP biases"
06:36:59 <Sgeo> The people in ##php say that "We all do"
06:37:10 <kallisti> looool
06:37:18 <Patashu> sounds like php to me
06:37:54 <kallisti> the designers must feel nice knowing they've created the worst language in the world, providing countless developers with plenty of daily suffering.
06:41:54 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, scalar (print(test),test)
06:41:55 <EgoBot> listlistscalar
06:41:58 <kallisti> bah
06:42:42 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; print "void";} print scalar (test,test)
06:42:43 <EgoBot> voidscalar
06:42:46 <kallisti> okay cool.
06:58:36 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:32:47 -!- kmc has joined.
07:33:15 <zzo38> I think another way to define applicative would be using (fmap), (pure ()), and (liftA2 (,)).
07:34:22 -!- op_4 has quit (Ping timeout: 244 seconds).
07:38:54 <monqy> pure a = a <$ pure () -- ?
07:39:03 <zzo38> Note that (pure) and (<*>) implies (fmap) and (>>=) implies (<*>) I think; is there a way to add one more thing to the list above to make a monad without implying any of those three things (assuming you have the other two)?
07:39:22 <zzo38> monqy: Yes, that is the applicative laws, I think.
07:39:50 <monqy> and then iirc (<*>) follows from pure,fmap,liftA2(,)
07:41:16 <zzo38> monqy: Yes. x <*> y = (\(x', y') -> x' y') <$> liftA2 (,) x y
07:45:45 -!- op_4 has joined.
07:47:46 <zzo38> I think it is possible to make a backward version of any applicative. I am not completely sure. I think it is: newtype BackwardAp f x = BackwardAp (f x); instance Applicative f => Applicative (BackwardAp f) where { pure = BackwardAp . pure; BackwardAp x <*> BackwardAp y = BackwardAp (y <**> x); };
08:16:08 -!- Lymee has joined.
08:16:09 -!- Lymee has quit (Changing host).
08:16:09 -!- Lymee has joined.
08:16:31 -!- glogbackup has quit (Ping timeout: 240 seconds).
08:16:32 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
08:16:40 -!- Lymee has changed nick to Madoka-Kaname.
08:20:45 <pikhq> So, yeah. Now I know why Fine Structure confused me: I apparently hadn't finished it.
08:21:02 <pikhq> I finished it in a single sitting today, so there we go.
08:21:35 <pikhq> Additionally, what of it I did read was in a very distinct order, and included some apocrypha, so there we go.
08:26:50 <kallisti> > ["123","abc"] >> "DEF"
08:26:51 <lambdabot> "DEFDEF"
08:27:31 <kallisti> > (++) <$> ["123","abc"] ["DEF"]
08:27:31 <lambdabot> Couldn't match expected type `t -> f a'
08:27:32 <lambdabot> against inferred type `[a1]'
08:27:35 <kallisti> > (++) <$> ["123","abc"] <*> ["DEF"]
08:27:37 <lambdabot> ["123DEF","abcDEF"]
08:29:13 <kallisti> > join ["abc", "def"]
08:29:13 <lambdabot> "abcdef"
08:29:18 <kallisti> > sequence ["abc", "def"]
08:29:19 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
08:30:23 -!- zzo38 has quit (Remote host closed the connection).
08:34:50 <Madoka-Kaname> > (\r a -> sequence r (take r $ repeat a)) 3 "abc"
08:34:51 <lambdabot> Couldn't match expected type `GHC.Types.Int'
08:34:51 <lambdabot> against inferred type ...
08:34:58 <Madoka-Kaname> > (\r a -> sequence (take r $ repeat a)) 3 "abc"
08:34:59 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
08:35:28 <Madoka-Kaname> > map ((\a r -> sequence (take r $ repeat a)) "abc") [1..]
08:35:29 <lambdabot> [["a","b","c"],["aa","ab","ac","ba","bb","bc","ca","cb","cc"],["aaa","aab",...
08:35:38 <Madoka-Kaname> > join $ map ((\a r -> sequence (take r $ repeat a)) "abc") [1..]
08:35:39 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
08:44:07 -!- op_4 has quit (Ping timeout: 244 seconds).
08:45:13 -!- kallisti has quit (Remote host closed the connection).
08:45:49 -!- op_4 has joined.
08:47:26 -!- kallisti has joined.
08:58:34 -!- kallisti has quit (Remote host closed the connection).
09:00:37 -!- kallisti has joined.
09:00:38 -!- kallisti has quit (Changing host).
09:00:38 -!- kallisti has joined.
09:03:28 <kallisti> so how do I set a memory limit for each process in limits.conf?
09:04:22 -!- Phantom_Hoover has joined.
09:59:17 <kallisti> @src sequence
09:59:17 <lambdabot> sequence [] = return []
09:59:17 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
09:59:17 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
10:02:19 -!- ais523 has quit (Remote host closed the connection).
10:10:16 -!- Ngevd has joined.
10:10:23 <Ngevd> Hello!
10:22:18 -!- Vorpal has joined.
10:35:34 <Ngevd> fungot will talk to me
10:35:34 <fungot> Ngevd: date: wed, 2 jan 91 14:47:01 -0800 from:
10:35:50 <Ngevd> Can't make that, fungot. I'm sorry.
10:35:51 <fungot> Ngevd: we have found out a file named ' feather'...). even so i got used to the actual internet protocol you can do will fix any problem; even if it resolves a symbol. but the point.
10:35:57 <Ngevd> ^style
10:35:57 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon* lovecraft nethack pa qwantz sms speeches ss wp youtube
10:36:06 <Ngevd> ^style iwcs
10:36:06 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
10:36:11 <Ngevd> fungot, what ho?
10:36:11 <fungot> Ngevd: no, a real. how come they not exist? let alone?
10:39:22 <kallisti> http://sprunge.us/DRYh
10:39:25 <kallisti> so elegant.
10:39:30 <kallisti> fibonacci in ST
10:39:46 <Ngevd> What's ST?
10:39:52 * Ngevd noob
10:40:27 <kallisti> are you familiar with IORef?
10:40:32 <Ngevd> Barely
10:41:10 <kallisti> ST is similar to IO except that ST is only capable of creating/reading/modifying mutable variables.
10:41:17 <Ngevd> Hmm
10:41:25 <kallisti> it's different in that you can get a pure result from an ST computation.
10:41:28 <kallisti> :t runST
10:41:29 <lambdabot> forall a. (forall s. ST s a) -> a
10:44:12 <kallisti> you can think of STRefs as typical imperative mutable variables.
10:44:39 <kallisti> except that you have to explicitly create/read/write them.
10:45:09 <Ngevd> But I was just getting used to Haskell not having them...
10:45:10 <Ngevd> :(
10:45:14 <kallisti> and do so via the ST monad.
10:45:16 <Sgeo> Note also the types
10:45:22 <Sgeo> STRef Int
10:45:27 <Sgeo> For a place to mutate an int
10:45:44 <Sgeo> It's not just Int as in most imperative languages
10:46:15 <Sgeo> erm, that's wrong
10:46:17 <Sgeo> STRef s Int
10:46:27 <Sgeo> I think
10:47:03 <kallisti> yes.
10:48:04 <kallisti> Ngevd: ST is rarely used, I would say.
10:48:44 <Sgeo> IORefs are basically the same thing in the IO monad
10:49:06 <kallisti> it's main benefit is that it gives you the ability to write algorithms with mutable data structure that return a pure result.
10:49:15 <kallisti> *structures
10:49:26 <kallisti> *its blah blah blah
10:50:00 <kallisti> but to what extent this is useful depends on your program.
10:50:09 <kallisti> and how clever you are. :)
10:58:21 -!- tuubow has quit (Ping timeout: 240 seconds).
11:14:12 -!- monqy has quit (Quit: hello).
11:25:55 -!- op_4 has quit (Ping timeout: 240 seconds).
11:32:26 -!- op_4 has joined.
12:08:25 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:09:30 -!- Ngevd has joined.
12:54:23 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:20:06 -!- Phantom_Hoover has joined.
13:27:22 <Ngevd> Hello!
13:27:24 <twice11> Ngevd: The main point for ST is that the lifetime and the symbol usability is confined to a certain block of code.
13:27:33 <Ngevd> Hmm
13:27:44 <twice11> So STRefs are more like local variables, while IORefs are like global variables.
13:29:07 <twice11> If you assemble a block of monadic computations in the ST monad to one computation and use runST on that assembled computation, Haskell proves for you the code is still pure.
13:29:31 <twice11> So the compound computation only writes data to the local variables depending on the parameters passed to it.
13:29:39 <twice11> No hidden state is possible.
13:30:48 <twice11> If you try to use a STRef outside the ST computation it was made in, you immediately get an type error, so this catches "dangling pointers" at comile time.
13:37:56 -!- Taneb has joined.
13:38:15 -!- Ngevd has quit (Ping timeout: 245 seconds).
13:48:02 <kallisti> 08:27 < twice11> So STRefs are more like local variables, while IORefs are like global variables.
13:48:05 <kallisti> not really
13:48:08 <kallisti> they're both like... pointers.
13:49:21 <kallisti> they're all "local" in the sense that they have to be in scope to use them. You can use them "globally" in your program by passing them as arguments.
13:49:46 <Sgeo> unsafePerformIO $ newIORef blah
13:49:55 <Sgeo> As a top-level definition
13:50:24 <Sgeo> Night
13:52:03 <Sgeo> I'm going to stay awake
13:52:32 <kallisti> yes or you can do terrible but acceptable terrible things.
13:52:37 <kallisti> and make them global.
13:52:42 <kallisti> acceptably.
13:54:53 <Sgeo> How?
13:59:30 -!- elliott has joined.
14:01:49 <kallisti> Sgeo: by the way you described.
14:01:56 <kallisti> perhaps I explained weirdly.
14:02:29 <elliott> what are you trying to explain
14:04:01 <Sgeo> kallisti was talking about IORefs and STRefs, and said something about how they're not really global, I mentioned the top-level unsafePerformIO thing, kallisti said something which made me think there was a more acceptable way to get a similar effect
14:05:19 <elliott> Try not assuming kallisti is saying meaningful things.
14:09:30 <elliott> 23:25:32: <Sgeo> If I smile at a Station V3 strip, can I link it?
14:09:30 <elliott> 23:25:40: <kallisti> no.
14:09:30 <elliott> 23:25:45: <Phantom_Hoover> No.
14:09:30 <elliott> 23:25:49: <monqy> yes
14:09:30 <elliott> 23:25:59: <Sgeo> http://www.stationv3.com/d/20111217.html
14:09:31 <elliott> 23:26:08: <kallisti> monqy: WHAT HAVE YOU DONWE
14:09:33 <elliott> 23:26:11: <Phantom_Hoover> (monqy means no, since I know you have no sense of monqy— goddamn it.)
14:09:37 <elliott> Phantom_Hoover: I can guarantee monqy meant yes
14:09:39 <elliott> *yes.
14:10:01 <elliott> 23:28:08: <Sgeo> Who says that I couldn't have guessed that monqy was joking and I just deliberately took the yes literally?
14:10:01 <elliott> 23:28:25: <monqy> remember what happened with homestuck
14:10:01 <elliott> 23:29:37: <Sgeo> Just because my monqy-detector failed once doesn't mean it always fails.
14:10:03 <elliott> Sgeo: maybe it does
14:11:14 <elliott> 23:51:19: <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
14:11:46 <elliott> @tell ais523 grinding your teeth and hoping the world collectively gets over itself
14:11:46 <lambdabot> Consider it noted.
14:13:10 <elliott> 23:57:36: <oerjan> i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command.
14:13:10 <elliott> @tell oerjan if you're going to participate in stupid faux-glorification memes at least make it about somebody who isn't a homophobic creationist who wants the bible taught in schools :P
14:13:10 <lambdabot> Consider it noted.
14:13:50 <elliott> 00:12:31: <Phantom_Hoover> I think we've had a thorough, detailed examination of the limitations of your intelligence these past months.
14:13:51 <elliott> 00:12:41: <Phantom_Hoover> They're not actually as pressing as you think they are.
14:13:51 <elliott> sure they are, per self-fulfilling prophecy
14:14:21 <Phantom_Hoover> The actual /limitations/ aren't that great.
14:32:01 <kallisti> Sgeo: no, that was the horrible acceptable alternative
14:32:06 <kallisti> Sgeo: the or was kind of misplaced
14:32:17 <kallisti> but it was an alternative to passing Refs as arguments.
14:38:38 <elliott> Anyone who thinks global variables are inherently abominable surely must refuse to use stdin and stdout and the RNG and ...
15:01:35 * Phantom_Hoover wonders why they're called variables even in languages where it makes no sense for them to vary.
15:02:17 <elliott> Phantom_Hoover: Oh come on.
15:02:25 <elliott> Phantom_Hoover: You're a mathematician, f(x) = x^2
15:02:27 <elliott> What's x?
15:03:07 <Phantom_Hoover> Well OK, that one makes sense, but global variables?
15:03:20 <elliott> Phantom_Hoover: I was talking about global mutable variables there.
15:03:47 <elliott> Anyway, you can rewrite "let x = y in z" as "(\x -> z) y", so it makes sense to refer to all bindings as variables.
15:12:59 <fizzie> According to HtDP, you can rewrite "(\x1 ... xn -> exp)" as "(let f x1 ... xn = exp in f)", so you should consider lambda a short-hand notation for a local binding. (Okay, it's written in terms of Scheme "(lambda (x-1 ... x-n) exp)" and the (nonstandard) "(local ((define (a-new-name x-1 ... x-n) exp)) a-new-name)", but anyhow.)
15:15:38 <fizzie> "Because good programmers use abstract functions and organize their programs in a tidy manner, it is not surprising that Scheme provides a short-hand for this particular, frequent use of /local/. The short-hand is called a /lambda/-expression and --" RAAAA no you fuck-ups, "Scheme" does not even have a "local". (This annoyed me to no end when going through the course that used HtDP.)
15:19:00 <elliott> fizzie: I have heard quite a lot of complaints about HtDP. :p
15:19:21 <elliott> fizzie: Well, it's Racket now for a reason.
15:19:35 <Jafet> Scheme is pretty local. It's like walking down to the docks and then suddenly, rhyming slang.
15:20:15 <elliott> "With the exception of the largest teaching language, all languages for HtDP are functional programming languages."
15:20:20 <elliott> They went and fucked it up at the last minute. :(
15:23:24 -!- Taneb has quit (Ping timeout: 240 seconds).
15:25:26 <Phantom_Hoover> http://www.reddit.com/r/IAmA/comments/ngd5e/i_am_neil_degrasse_tyson_ama/c38vr8m
15:25:37 <Phantom_Hoover> CONFIRMED: Neil deGrasse Tyson is overrated.
15:36:16 -!- Taneb has joined.
15:45:44 -!- Sgeo has quit (Ping timeout: 240 seconds).
15:46:57 -!- Sgeo has joined.
16:05:56 <Gregor> Fythe seems to work on Windows iff the calling user is an administrator >_>
16:09:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
16:10:51 <elliott> Gregor: Executable page-related stuff?
16:12:05 <Gregor> elliott: At this point I have no friggin' idea. It quits with no output, and works under gdb X_X
16:12:10 <Gregor> Can't dump core on Windows.
16:19:15 -!- elliott has quit (Quit: Leaving).
16:21:10 <twice11> kallisti: Yes, you are right, STRefs and IORefs are indeed pointers to variables allocated with newIORef or newSTRef, and, except for the unsafePerformIO hack, you need to pass the pointer around.
16:22:38 <twice11> But the STRef pointers are tied to one specific invocation of runST, so if you pass them out of this runST block (nothing prevents you), they get useless.
16:23:17 <twice11> Because using readSTRef/writeSTRef in a different runST invocation than the newSTRef is going to yield an ill-typed program.
16:23:51 <twice11> On the other hand, IORefs stay valid accross the whole program.
16:24:07 <twice11> Or between different invocations of unsafePermformIO.
16:29:04 -!- sebbu has quit (Ping timeout: 240 seconds).
16:46:31 -!- elliott has joined.
16:50:15 <kallisti> twice11: yes that's one way to look at it.
16:50:54 <fizzie> Gregor: Spend some of your ill-gotten $s on Rational® Purify® and run it under that.
16:51:14 <Deewiant> WinDbg is free
16:51:34 <fizzie> Deewiant: But doesn't have a ® in it.
16:51:41 <Deewiant> True
16:52:42 <elliott> fizzie: :-/ That copies as "Rational®" from XChat.
16:52:50 <elliott> Oh, not if I select it instead
16:53:03 <elliott> http://www-01.ibm.com/software/awdtools/purify/
16:53:09 <elliott> Ha, it really is Rational® Purify®.
16:53:16 <fizzie> That's where I copied it from. :p
16:54:03 <elliott> 16:21:10: <twice11> kallisti: Yes, you are right, STRefs and IORefs are indeed pointers to variables allocated with newIORef or newSTRef, and, except for the unsafePerformIO hack, you need to pass the pointer around.
16:54:03 <elliott> 16:22:38: <twice11> But the STRef pointers are tied to one specific invocation of runST, so if you pass them out of this runST block (nothing prevents you), they get useless.
16:54:13 <elliott> twice11: I'm not sure I like mentally modelling STRefs/IORefs as pointers.
16:54:22 <elliott> Maybe it's just the word "pointer". "Reference" seems much less objectionable.
16:55:16 <twice11> elliott: Fair enough. Especially as they are called "references"
16:55:32 <elliott> twice11: Heh, I managed to mentally block that out while saying that...
16:55:59 <fizzie> "[Purify] was originally written by Reed Hastings of Pure Software. Pure Software later merged with Atria Software to form Pure Atria Software, which in turn was later acquired by Rational Software, which in turn was acquired by IBM."
16:56:26 <elliott> Hmm, I think you can implement ST with Vault; the problem there is that you need to be in ST or IO to get a Key...
16:56:27 <Taneb> That's purely rational
16:56:53 <fizzie> IBM Rational Pure Atria Software Purify is what they should've kept calling it.
16:57:50 <Deewiant> Maybe you prefer IBM® Rational® PurifyPlus™
16:58:43 <fizzie> That sounds even better.
16:59:23 <fizzie> It's like Purify, plus they've added a trademark.
17:01:50 -!- MSleep has changed nick to MDude.
17:12:58 <Gregor> Turns out it was just a simple buffer overflow.
17:13:00 <Gregor> lol.
17:13:07 -!- Vorpal has quit (Read error: Operation timed out).
17:13:16 <Gregor> For some reason, if I gave the user admin rights, then the buffer overflow would no longer cause issue.
17:13:18 <Gregor> LOGIC.
17:13:41 <twice11> Welcome to "undefined behaviour".
17:13:46 <Taneb> AAARGH
17:13:53 <Taneb> I tried to imagine a hypertorus
17:14:06 <Taneb> Except with connected faces rotated 90 degrees
17:14:58 <Gregor> twice11: Dude, I'm a C coder, undefined behavior has been my home state for a decade.
17:15:49 -!- Vorpal has joined.
17:15:57 <Vorpal> gnh
17:15:57 <Vorpal> <Vorpal> <Gregor> Can't dump core on Windows. <-- can't you get a memory dump iirc. Or is that for the OS only?
17:16:06 <Gregor> Idonno
17:16:23 <Vorpal> Gregor, anyway worth trying under windbg or visual studio I guess.
17:16:40 <Gregor> "<Gregor> Turns out it was just a simple buffer overflow. <Gregor> lol"
17:16:42 <Vorpal> ah
17:16:55 <Vorpal> I didn't get that due to connection fucking up
17:16:58 <Vorpal> was just about to open the log
17:17:16 <Gregor> Anyway, Fythe autotests run on Mac OS X and Windows now.
17:17:19 <Gregor> So that's good.
17:17:27 <Vorpal> Gregor, 100 % branch coverage?
17:17:52 <Vorpal> (if not it isn't good enough!)
17:18:12 <Gregor> Branch coverage becomes a bit meaningless for a JIT.
17:18:24 <Vorpal> hm true
17:18:31 <elliott> Gregor: You must test EVERY SINGLE SEQUENCE OF BYTES IT CAN OUTPUT.
17:18:53 <Vorpal> Gregor, have you tested that it fails in the right way if memory allocation or IO or such fails?
17:18:58 <Vorpal> (if that applies to your case)
17:19:22 <Vorpal> elliott, indeed!
17:19:48 <Vorpal> also ensure that it doesn't crash on garbage input of course.
17:32:37 -!- MDude has quit (Ping timeout: 252 seconds).
17:46:19 -!- elliott has quit (Quit: Leaving).
17:47:04 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:48:38 -!- Nisstyre has joined.
17:55:38 -!- zzo38 has joined.
17:57:07 -!- azaq23 has joined.
17:57:09 -!- azaq23 has quit (Changing host).
17:57:09 -!- azaq23 has joined.
18:00:21 -!- Taneb has quit (Ping timeout: 240 seconds).
18:01:13 -!- elliott has joined.
18:15:57 -!- pikhq_ has joined.
18:15:57 -!- pikhq has quit (Ping timeout: 240 seconds).
18:26:00 <elliott> "Or substitute your doublethink here. Indeed, 2 + 2 ≠ 5. Haskell is not asserting that they are equal, rather, Haskell is creating a named expression, 2 + 2, that expands to the expression 5 within the let expression. By evaluating the expression 2 + 2 outside the let, the proper answer is revealed."
18:26:05 <elliott> No, dammit, stupid tutorial!
18:26:11 <elliott> Haskell is not term rewriting, this is shadowing (+).
18:26:56 <Phantom_Hoover> > let 2 + 2 = 5 in 4 + 4
18:26:57 <lambdabot> *Exception: <interactive>:3:4-12: Non-exhaustive patterns in function +
18:27:03 <Phantom_Hoover> Dammit Haskell.
18:27:13 <Phantom_Hoover> Why can't you automatically deduce a consistent arithmetic.
18:28:30 -!- AnotherTest has joined.
18:28:45 <AnotherTest> Hello
18:28:51 <Phantom_Hoover> halo
18:31:22 <AnotherTest> +10>...+0>....<>..<>.
18:31:32 <AnotherTest> Would the above be called esoteric according to you?
18:31:46 <AnotherTest> (if it were a program that could be executed)
18:32:07 <zzo38> AnotherTest: To me, I would ask what it is supposed to mean.
18:32:12 <AnotherTest> um
18:32:17 <AnotherTest> I can't really remeber :/
18:32:30 <AnotherTest> Let me try to figure out what it was supposed to do
18:32:37 <elliott> Yeah, what zzo38 said. Syntactic esotericism isn't very interesting.
18:33:35 <AnotherTest> Seems like it's supposed to display 100
18:48:12 -!- kmc has quit (Quit: Leaving).
18:54:42 -!- kmc has joined.
19:00:56 -!- Taneb has joined.
19:16:21 -!- Vorpal_ has joined.
19:16:39 -!- Vorpal has quit (Disconnected by services).
19:16:41 -!- Vorpal_ has changed nick to Vorpal.
19:19:59 <itidus20> Phantom_Hoover: 2 + 2 can't equal 5 :D
19:20:05 <AnotherTest> itidus20
19:20:07 <AnotherTest> who knows
19:20:13 <AnotherTest> in a parauniversum
19:20:21 <Phantom_Hoover> itidus20, it can when you redefine + such that it does.
19:20:30 <itidus20> you tried to redefine + such and failed
19:20:45 <AnotherTest> It can mean 2 + 1 + 2
19:20:51 <itidus20> hmm
19:20:56 <itidus20> ahh i guess
19:21:04 <fizzie> > let (+) x y = 5 in 2 + 2
19:21:04 <lambdabot> 5
19:21:43 <itidus20> fizzie: but.. uhm
19:22:00 <itidus20> what would that produce for 2 + 3 ?
19:22:08 <Vorpal> itidus20, 5 as well
19:22:13 <fizzie> 5 for everything.
19:22:18 <itidus20> oh...
19:22:20 <itidus20> hahaha...
19:22:27 <fizzie> It's not a very useful +.
19:22:28 <itidus20> cool
19:22:33 <Vorpal> itidus20, who said fizzie's + function is addition?
19:22:39 <itidus20> but it fits the requirements
19:22:43 <itidus20> that's pretty cool
19:22:50 <itidus20> I yield.
19:23:03 <AnotherTest> int operator+(int a) {
19:23:04 <AnotherTest> return 5;
19:23:04 <AnotherTest> }
19:23:09 <AnotherTest> 2+2
19:23:12 <AnotherTest> aha
19:23:54 <AnotherTest> altough that would fail
19:24:04 <AnotherTest> because I forgot an argument :(
19:24:05 <Vorpal> because C++ sucks yes
19:24:12 -!- Phantom__Hoover has joined.
19:24:24 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:24:25 <Taneb> > let (+) 2 2 = 5 in 2 + 2
19:24:26 <lambdabot> 5
19:24:28 <AnotherTest> int operator+(int a, int b) {
19:24:28 <AnotherTest> return a + b + 1;
19:24:28 <AnotherTest> }
19:24:28 <Vorpal> AnotherTest, you can't overload operators on the "primitive" types in C++
19:24:39 <itidus20> i made a claim and it was refuted. so i am back at tabula rasa
19:24:43 <AnotherTest> Vorpal, I know
19:24:46 <Phantom__Hoover> 19:20:30: <itidus20> you tried to redefine + such and failed
19:24:51 <Phantom__Hoover> Yes, because I didn't define + for the things I was using + on.
19:24:59 <AnotherTest> well, in most impementations
19:25:06 <AnotherTest> *implementations
19:25:29 <zzo38> Do you know comonad hoist?
19:26:29 <AnotherTest> Vorpal: How dare you say C++ sucks :(
19:26:36 <itidus20> in terms of eidetic reduction, i think 2 + 2 can never = 5
19:26:49 <Taneb> itidus20, what if you redefine 5?
19:26:55 <zzo38> 2+2 makes 4 by definition, isn't it?
19:27:41 <AnotherTest> Not if you had a language where 2 represented our 2.5
19:27:43 <Taneb> It's harder to make the successor of the successor of one not equal it's twice successor when added to itself
19:27:43 <itidus20> i mean.. you need more information to define a + x y whereby 2 + 2 = 5 than to define one whereby + x y .. 2 + 2 = 4
19:28:02 -!- Phantom__Hoover has quit (Client Quit).
19:28:13 <itidus20> Taneb: thank you for finding a cool way to say it
19:28:25 <Taneb> :D
19:28:29 <zzo38> You can program C++ if you want to, I happen to like plain C, with CWEB. Although even that not perfect; LLVM is designed far better than C in my opinion, but still lack of some things such as macros and whatever. If you combine features of LLVM and BLISS then you might make improvement programming language.
19:28:30 -!- Phantom_Hoover has joined.
19:29:02 <itidus20> its a bit too ptolemy to say 2+2=5
19:29:29 <Taneb> s/one/zero/
19:29:39 <AnotherTest> what
19:29:43 <AnotherTest> if we redefined =
19:29:44 <Taneb> s/it's/its/
19:29:56 <AnotherTest> = means != from now on
19:30:01 <AnotherTest> DONE
19:30:01 <Taneb> I still think the best way to do it is to redefine 5
19:30:16 <AnotherTest> or = means < is possible too
19:30:20 <Taneb> You just need to stop thinking about 5 as a number
19:30:29 <zzo38> If you made 2 + 2 makes 5 then would it still make a ring?
19:30:30 <Taneb> Think of it instead as a symbol, here representing a number
19:31:03 <AnotherTest> if it were a symbol
19:31:15 <Taneb> If we declare it, instead of representing what we understand as 5, to represent 4, job done
19:31:16 <AnotherTest> 1 byte + 1 byte != 1 byte so I'm sorry
19:31:25 -!- MSleep has joined.
19:31:30 <Taneb> "5" is very much a symbol
19:31:38 <AnotherTest> We might want to redefine the ASCII system
19:31:41 <itidus20> i cant find a quote and i am not certain on the subject, but my understanding is ptolemy made his astronomy work mathematically even when his model of the universe was wrong
19:31:58 <Phantom_Hoover> zzo38, let a +' b = a + b + 1.
19:31:58 <Phantom_Hoover> Oh, wait, that might not distribute.
19:32:00 <AnotherTest> so that 2 takes 4 bits
19:32:15 <Taneb> We can choose what it represents, but a symbol it stays
19:32:30 <AnotherTest> We just say '4' = '5'
19:32:54 <Taneb> I'm not talking about this in the context of programming,
19:33:04 <Taneb> I'm talking about this in the context of philosophy,
19:33:13 <Taneb> Where's that other #esoteric, again?
19:33:33 <itidus20> i don't know anything useful about anything, but about eidetic reduction i am thinking of how for example, a 2d vector needs 2 values
19:34:00 <itidus20> feel free to correct me on this
19:34:21 <elliott> 04:30:46: <Sgeo> I was berating a library written by a co-author of Real World Haskell
19:34:26 <itidus20> now you could of course represent a 2d vector with 10 values, but that would be fairly inefficient
19:34:28 <elliott> Sgeo: I don't like most of his libraries.
19:34:49 <Phantom_Hoover> <Taneb> If we declare it, instead of representing what we understand as 5, to represent 4, job done
19:34:49 <Phantom_Hoover> Well yeah, you can just special-case all the definitions so 4 and 5 are interchanged.
19:34:49 <Phantom_Hoover> That's boring, though.
19:35:06 <elliott> 04:34:52: <Sgeo> I feel awkward for criticising code written by a giant
19:35:06 <elliott> Quit the hero worship. Heck, one of Bryan O'Sullivan's libraries has a blatantly impure set of functions.
19:35:12 <itidus20> and, in that idea, i can't imagine any form of addition which is more efficient than one where 2 + 2 = 4
19:35:23 <AnotherTest> I stay with the change of the ASCII system
19:35:27 <Taneb> Phantom_Hoover, But we can do that and leave the rest of mathematics pretty much the same!
19:35:30 <elliott> 04:35:36: <Sgeo> Did people know about the dangers of lazy IO before 2010?
19:35:32 <elliott> Sgeo: Yes.
19:35:51 <zzo38> There certainly are some things in the ASCII system that I would have done differently.
19:35:53 <AnotherTest> Sgeo: They were just too lazy.
19:36:50 <itidus20> elliott: one day we will be able to just take a marker to the logs ticking off points which need addressing
19:37:09 <zzo38> I think the universe has Lazy I/O, causality loop, and other features which other people probably did not think it has.
19:37:17 <AnotherTest> zzo38, indeed, such as including pointless characters that are never used?
19:37:20 <Phantom_Hoover> itidus20, what about addition modulo 4.
19:37:21 <Phantom_Hoover> Or 3.
19:37:22 <Phantom_Hoover> Or 2.
19:37:25 <AnotherTest> *excluding
19:37:38 <Phantom_Hoover> (The latter is equivalent for this purpose to the first.)
19:38:16 <itidus20> perhaps if i knew more math
19:38:23 <zzo38> AnotherTest: No, a bit differently. One thing is I would put A immediately after 9, and change a few things so that bit manipulation works for delimiters like () [] {} but I would keep the property that <=> has in ASCII which is used sometimes
19:38:40 <itidus20> i am certainly attached to my gradeschool arithmetic
19:39:04 <AnotherTest> zzo38; I agree on that
19:40:36 <itidus20> Phantom_Hoover: i dunno man... i think it was a defence mechanism in response to my knowledge of addition being under threat
19:40:40 <Sgeo> elliott, I'm considering fixing the library. Is there any reason for me to try to save some of the laziness (e.g. by forcing the previous result when a new FTP command is issued) or should I abolish laziness altogether?
19:40:51 <Taneb> @ping
19:40:51 <lambdabot> pong
19:41:14 <Phantom_Hoover> itidus20, nobody's threatening your knowledge of addition, we're just substituting in a different definition for the fun of it.
19:41:26 <Sgeo> Or abolish laziness except in marked lazy functions, which get the forced treatmenet
19:41:30 <Sgeo> treatment
19:41:52 <itidus20> Phantom_Hoover: the word threat here is perhaps a bit overloaded with meanings
19:42:05 <Phantom_Hoover> I love how many of the Humble Bundle games are retro.
19:42:11 <itidus20> "challenges" might be a better term than "threatens"
19:42:14 <Phantom_Hoover> Aren't indie developers meant to be the innovative ones?
19:42:41 <itidus20> depends how you define innovation.
19:42:43 <elliott> Phantom_Hoover: I haven't played most of them, but I wouldn't call e.g. Super Meat Boy and Cave Story retro.
19:42:54 <itidus20> its a lot like esoteric languages
19:43:00 <itidus20> you go back to basics to innovate
19:43:11 <AnotherTest> Guys
19:43:18 <elliott> Cave Story has an ostensibly retro aesthetic, but that basically just translates to "there's not all that many pixels in the graphics"; they're certainly not trying to look old or anything.
19:43:32 <AnotherTest> do you think it would be possible to create a programming language with a Haiku syntax?
19:43:33 <itidus20> you produce 20,000 flash games which each took 48 hours to code that noone particularly cares about and you have fun doing it
19:43:39 <AnotherTest> I strongly believe it's hard
19:43:40 <itidus20> and drink a lot of coffee and mountain dew
19:43:53 <elliott> AnotherTest: If you can count syllables, sure.
19:43:57 <Sgeo> It feels awkward that I could make the library signficantly more usable just by deleting two function names and a $ next to it
19:44:02 <Sgeo> s/it/each/
19:44:06 <Taneb> AnotherTest, Haifu
19:44:11 <Taneb> Been done
19:44:14 <AnotherTest> elliott: don't you think Haiku's are to short?
19:44:23 <Phantom_Hoover> Well, Jamestown and Bit.Trip Runner both admit to it, and I can't speak for Shank since its website gives me no information whatsoever about it.
19:44:44 <elliott> AnotherTest: Well, the English language has a lot of words. I was assuming a program would be composed of multiple haikus, though.
19:44:47 <itidus20> it may help explain if i say..
19:45:17 <AnotherTest> elliott: I wasn't :p
19:45:36 <itidus20> imagine a 3d game with no textures, only gouraud shaded polygons.. with massively reduced polygon counts.. lets say maximum of 100 per model
19:45:51 <itidus20> no music
19:45:56 <itidus20> no sound
19:46:03 <AnotherTest> Taneb: is that multiple haikus per program?
19:46:08 <Vorpal> itidus20, augh gouraud shading hurts so badly
19:46:09 <Vorpal> :(
19:46:24 <itidus20> now, make it fun :D
19:46:43 <itidus20> and there you have innovation
19:46:47 <zzo38> Sgeo: In what library do you mean?
19:46:58 <Sgeo> zzo38, ftphs
19:48:01 <itidus20> then the next line of argument is, you can make the same game in 2d or 3d the only difference is the mode of presentation
19:48:20 <itidus20> i have not fully explored whether this is true or not
19:48:27 <zzo38> itidus20: O, I have made no game with 3D but I have made a lot of game with limitations of DOS and low-resolution CGA. And a few others. But it is idea, make a you made 20 games in one day with some restriction such as, only NES games and you are restricted to a specific mapper, or whatever
19:48:33 <zzo38> Sgeo: What is ftphs?
19:49:03 <Sgeo> zzo38, a library for FTP stuff. It has too much laziness.
19:49:31 -!- Ngevd has joined.
19:49:52 -!- derdon has joined.
19:49:56 <itidus20> zzo38: yeah i find the directx api is really awful.. but linux people can sort of avoid it
19:49:57 -!- Taneb has quit (Ping timeout: 240 seconds).
19:50:12 <Ngevd> Sorry about that
19:50:17 <AnotherTest> itidus20: Maybe, but look at OpenGL
19:50:38 <Ngevd> <AnotherTest> Taneb: is that multiple haikus per program? <-- yes
19:50:39 <itidus20> yeah opengl.. a graphics library which i could actually use on my windows xp
19:50:43 <zzo38> itidus20: I prefer SDL, it works in many systems
19:50:51 <AnotherTest> Ngevd: that's :s
19:50:58 <AnotherTest> zzo38: you say that
19:51:11 <elliott> Ngevd: Haifu programs aren't exactly haikus, are they?
19:51:15 <AnotherTest> zzo38: SDL stopped working for me when I tried to bind it to a language
19:51:15 <itidus20> im planning on upgrading my graphics card over xmas
19:51:23 <Ngevd> elliott, they are restricted to haiku format
19:51:26 <AnotherTest> zzo38: but it has a nice interface
19:51:50 <Ngevd> Haifu code consists of normal English words, arranged into haiku of three lines each. The first line of each haiku contains 5 syllables, the second line 7 syllables, and the third line 5 syllables. Any other arrangement is a syntax error. A program may contain any number of haiku, arranged sequentially. Words may not be broken across lines or haiku by hyphenation, unless the word is normally hyphenated.
19:51:57 <elliott> AnotherTest: SDL binds pretty well to other languages.
19:51:59 <elliott> It has no callbacks, for one.
19:52:06 <AnotherTest> elliott: not to your own
19:52:11 <AnotherTest> :(
19:52:20 <AnotherTest> At least, if you failed like me
19:52:48 <elliott> SDL is nice for input and window management, but annoyingly 90s as far as actual graphics go.
19:53:00 <elliott> But of course OpenGL has pretty much a monopoly on non-90s graphics.
19:53:17 <AnotherTest> Yes, but OpenGL seems just so messy
19:53:25 <itidus20> on windows xp, opengl allows you to take full control of graphics card
19:53:41 <itidus20> whereas, directx10 and directx11 only work on vista+
19:53:50 <itidus20> i know you guys aren't windows users.. just saying
19:54:09 <itidus20> well so i am told anyway @ opengl
19:54:54 <zzo38> Sgeo: What kind of things are too much laziness that causes problem, and what problem?
19:56:02 <Sgeo> zzo38, if I request, say, a list of files in the directory, the library will not actually issue the commands until I force the results. FTP doesn't particularly like if I try to use another command, such as the equivalent of cd, then try to get the list of directories after that
19:56:43 <Sgeo> There is this warning in the documentation:
19:56:44 <Sgeo> "You MUST consume all data from commands that return file data before you issue any other FTP commands."
19:57:41 <zzo38> Sgeo: Yes, it should be fixed not to use lazy I/O.
19:58:19 <elliott> AnotherTest: The programmable pipeline isn't very messy.
19:58:29 <Sgeo> zzo38, I'm thinking of either doing that or having the library itself force the previous file data returning command when the next is used
19:58:33 <Sgeo> Or both
19:58:41 <fizzie> elliott: SDL audio is callback-driven; I don't know how well that binds. (Tried to look at http://hackage.haskell.org/package/SDL Graphics.UI.SDL.Audio but it looks a bit... empty.)
19:58:53 <Sgeo> Have the functions be strict, but provide lazy versions that still are forced by the next FTP command.
19:58:55 <AnotherTest> I got to go
19:58:56 <AnotherTest> bye
19:58:58 -!- AnotherTest has left.
19:59:01 -!- sebbu has joined.
19:59:01 -!- sebbu has quit (Changing host).
19:59:01 -!- sebbu has joined.
19:59:02 -!- azaq23 has quit (Read error: Connection reset by peer).
19:59:14 <elliott> fizzie: Haskell can bind libraries with callbacks just fine, but some inferior languages can't.
19:59:44 <fizzie> elliott: Inferior binding-makers might not either. :p
20:00:26 -!- azaq23 has joined.
20:00:48 <Sgeo> Any fixing of any libraries will have to come after Tuesday.
20:00:58 <Ngevd> I want to try my hand at making a game. What's a good graphics thingy to learn first, probably with Haskell (which, despite how bad I am at it, is my best language)?
20:01:48 <elliott> Ngevd: http://hackage.haskell.org/package/gloss
20:02:04 <elliott> Ngevd: Look at http://gloss.ouroborus.net/ for examples, etc.
20:02:09 <elliott> Also pretty pictures.
20:02:25 <Ngevd> Yay friend teacher person
20:03:05 <elliott> Ngevd: Also, you should probably install it with `cabal install gloss --flags="GLFW -GLUT"`.
20:03:16 * elliott doesn't like GLUT, and also it apparently has issues with GHCi.
20:03:29 <Ngevd> It would have been nice if you had said that about four seconds earlier
20:03:38 <elliott> Hit ^C.
20:03:47 <elliott> It's probably installing some random dependency and not gloss itself.
20:04:18 <Ngevd> Okay
20:07:11 <zzo38> Maybe later, if I learn how to make network software in Haskell then I can make a library for gopher protocol access (and working with a few other protocols too). Such as having one function appending CRLF to the query string, one doesn't, and so on. And a few function parse gopher menus.
20:15:15 <zzo38> I watched a movie yesterday, after one player wanted to stop playing chess the other player still continued just by saying their moves and then they said the moves in addition to things unrelated to the game and eventually win by discovered checkmate.
20:25:40 -!- oerjan has joined.
20:25:52 <elliott> hi oerjan
20:26:01 <oerjan> hi elliott ->
20:26:01 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:26:22 <elliott> <- oerjan hi
20:26:35 <Sgeo> What's the name for <- ?
20:26:37 <Sgeo> Is there a name?
20:26:39 <elliott> Phantom_Hoover: Quick, go downwards!
20:26:40 <pikhq_> Yeah, it's utterly trivial to handle callbacks in Haskell bindings.
20:26:58 <pikhq_> Haskell has this neat thing, "exporting functions to C".
20:27:06 <Sgeo> Also, how do I pronounce (>>)?
20:27:27 <elliott> Sgeo: "then"?
20:27:27 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
20:27:30 <elliott> Who the fuck pronounces code.
20:28:20 <Phantom_Hoover> why
20:28:22 <Phantom_Hoover> whu
20:28:25 -!- monqy has joined.
20:28:27 <Ngevd> elliott, people with microphones and no keyboards
20:28:46 <elliott> Ngevd: So, iPhone users?
20:29:08 <Ngevd> elliott, yes. They have reason to pronounce code, if they have a decent speech recognition app
20:29:29 <elliott> Nobody has one of those. Right fizzie?
20:30:03 <fizzie> One of these days I'm going to RAGEPAT at you.
20:30:03 * Sgeo goes to learn MySQLi, even though it wasn't taught in class
20:30:12 <monqy> :o
20:30:22 <fizzie> (Fortunately now I am busy.)
20:30:25 <Sgeo> I will not write code vulnerable to SQL Injections just because it's easy and I know how.
20:32:00 <elliott> Sgeo: wait 'til you find out that mysqli isn't installed on the relevant machine
20:32:44 <Sgeo> elliott, I vaguely remember the professor randomly mixing in a mysqli function in with mysql stuff
20:33:09 <zzo38> I made "sqlreport" program I think it is not vulnerable to SQL injection. Simply because it offers no way to do so. But cross-scripting attacks might still be possible when output HTML files, if you are not careful.
20:34:19 <itidus20> i would like to know what speech to text feels like
20:34:50 <itidus20> it can't be good for coding
20:34:51 <zzo38> itidus20: I think someone once made a program to do that and it made the wrong words sometimes
20:35:10 <zzo38> So, in other words, I believe you it not good for coding
20:35:27 <itidus20> yeah, when we got a computer microphone years ago there was some such program to go with some word processor
20:35:45 <itidus20> just packed-in software
20:36:14 <itidus20> i think it would be best for people who think easier with their voice than with their fingers
20:37:02 <Sgeo> "Warning: mysqli_query() expects at least 2 parameters, 1 given in ------------/view.php on line 20"
20:37:07 <Sgeo> Why is that called a warning?
20:37:21 <Sgeo> Oh, I don't think it stopped the page being processed.
20:37:29 <Sgeo> Which, um, is kind of a wtf
20:38:53 <oerjan> <fizzie> One of these days I'm going to RAGEPAT at you. <-- i sense this could get ugly.
20:39:15 <elliott> oerjan: His blood temperature might even rise by about 0.03 degrees Celsius.
20:39:19 <elliott> If it gets REALLY bad.
20:39:38 <oerjan> i am mostly thinking about the patting.
20:40:44 <elliott> 00:27:30: <ais523> wow, it seems that the most popular browser version now is Chrome 15
20:40:44 <elliott> 00:27:42: <ais523> IE has more share total, but no individual version of IE beats Chrome 15
20:42:03 <elliott> @tell ais523 There's no point affixing a version number to Chrome, since every Windows, OS X and Linux user gets silent, automatic updates for it (well, Linux goes through apt or, I suspect, yum); I suppose Chromium doesn't, but many distro packages of it are well-updated, and I doubt many people at all use it outside of Linux.
20:42:03 <lambdabot> Consider it noted.
20:42:12 <fizzie> oerjan: In case you didn't happen to be around, it was a reference to 2011-12-02 -!- elliott has left #esoteric ["ragepat"] -!- elliott has joined #esoteric -!- elliott has left #esoteric ["ragepart"]
20:42:45 <elliott> My proudest moment.
20:43:28 <zzo38> Make a contest, you have 32 hours to make 30 games for NES/Famicom. It is required to be public domain.
20:43:30 <itidus20> Rumor has it that the ragepat hasn't been forgotten.
20:44:42 <elliott> oerjan: @check is broken
20:44:42 <oerjan> fizzie: aha
20:44:48 <elliott> @smallcheck True
20:44:49 <lambdabot> Unknown command, try @list
20:44:51 <elliott> huh
20:44:58 <oerjan> elliott: well i just checked if someone had fixed it overnight
20:45:05 * oerjan optimist
20:45:16 <elliott> oerjan: @tell Cale about it
20:45:23 <elliott> he reinstalled all lambdabot's dependencies when I sent that patch
20:45:27 <elliott> *all of
20:45:31 <elliott> and had to fix it for a mueval change
20:45:33 <elliott> so
20:45:51 <oerjan> @tell cale Hello there, lambdabot's @check seems to be broken
20:45:52 <lambdabot> Consider it noted.
20:46:55 <elliott> oerjan: i believe it case sensitive
20:47:01 <elliott> @tell oerJAN hi
20:47:01 <lambdabot> Consider it noted.
20:47:20 <fizzie> Now he's going to sneakily stay quiet for the rest of the eternity.
20:47:22 <fizzie> Test FOILED.
20:47:25 <elliott> 03:34:36: <Sgeo> kallisti, update
20:47:25 <elliott> 03:55:44: <Sgeo> Also monqy I guess
20:47:25 <elliott> 03:55:50: <monqy> what
20:47:25 <elliott> 03:56:07: <monqy> hi
20:47:25 <elliott> 03:56:52: <Sgeo> I know that you know what Homestuck is, but are you actively caught up?
20:47:25 <elliott> 03:58:15: <monqy> im having trouble dealing with zoosmells death...
20:47:31 <elliott> That's where I stopped reading.
20:47:35 <elliott> fizzie: Foiled again!!!!
20:47:40 <oerjan> elliott: btw i was considering if it was really necessary for zjoin to evaluate all of the rectangular elements both above and to the left, and i found an argument that it's essentially necessary
20:47:40 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:47:41 <elliott> That's what I did to Zwaarddijk.
20:47:44 <elliott> He was never the same.
20:47:51 <oerjan> @messages
20:47:51 <lambdabot> elliott said 50s ago: hi
20:48:47 <elliott> oerjan: Cale is actually talking in #haskell, or so say the logs :P
20:48:50 <elliott> the logs also think it's :17 though.
20:48:56 <elliott> clog time(TM)
20:49:06 <oerjan> well clog time has always been screwy
20:49:12 <oerjan> ok maybe not _always_
20:49:15 <oerjan> but for years
20:55:10 <Sgeo> :t atomically
20:55:11 <lambdabot> Not in scope: `atomically'
20:55:17 <zzo38> Do you know which method is used to determine the dates in the "horoscope" section of newspapers? Are they dates for the current year? Are they for the current year and next year? Current tropical year? Is there agreement on what to use? Are timezones taken into account? Do they just copy the dates from other newspapers without understanding them?
20:56:32 <elliott> :t zip3
20:56:32 <lambdabot> forall a b c. [a] -> [b] -> [c] -> [(a, b, c)]
20:56:34 <itidus20> zzo38: yes.
20:56:38 <oerjan> the newspaper i know with a horoscope just says "tomorrow" (well, in norwegian)
20:57:02 <zzo38> itidus20: Yes? There are many sentence so just "yes" is not good enough
20:57:26 <oerjan> (VG that is)
20:57:34 <zzo38> oerjan: It just says "tomorrow"? And nothing else?
20:57:49 <elliott> Yes.
20:58:01 <oerjan> zzo38: well no, it says something like "tomorrow's horoscope"
20:58:21 <itidus20> zzo38: people who care don't look at newspaper horoscopes. :D
20:58:23 <zzo38> oerjan: O. What I meant was the dates they give for each sign.
20:58:50 <itidus20> perhaps they browse them only to spite them
20:59:00 <oerjan> zzo38: um those are the dates for when you need to be born to be in that sign?
20:59:10 <itidus20> "these horoscopes are all wrong. the ignorant fools!"
20:59:36 <oerjan> zzo38: i guess those vary slightly from year to year at the edges
20:59:37 <zzo38> itidus20: I suppose that might be true, but it would probably still be improved if they got the dates accurate and included information about which year these dates are for. (I assume the current year)
20:59:49 <itidus20> lol
21:00:13 <itidus20> zzo38: it was that kind of thinking that got calvin and hobbes a full spread
21:00:30 <oerjan> zzo38: but the current year is uninteresting unless you're reading the horoscope for a baby :P
21:00:46 <zzo38> oerjan: Yes, they would be. However, if you were to be born in that sign, then it would need to be the dates for the year of your birth, and time of day needs to be taken into account as well. No method of newspaper horoscope dates would help with this.
21:00:53 <oerjan> and no other year is significantly better
21:01:32 <oerjan> zzo38: indeed. but then if you're born near the border, i think theoretically you get some influence from both signs
21:01:51 <itidus20> the border = the 'cusp'
21:01:56 <itidus20> :-D
21:02:00 <oerjan> O KAY
21:02:11 <itidus20> sorry oerjan im not one of 'them'
21:02:15 <zzo38> oerjan: Yes, exactly. If you want to know what sign you are born in, none of the stuff in the newspaper helps. And, of course, those dates are for the sun anyways (which is OK, however many people don't know they correspond to the sum)
21:02:50 <itidus20> it just turns out i was born only hours away from a border
21:03:08 <itidus20> and it turns out borders are not aligned exactly with midnight
21:03:13 <zzo38> oerjan: Well, whatever "influence" you walk about and stuff, the dates have objective meaning and ought to use a consistent method to display them. (If it is the current year, you could see when the equinoxes and solstices are, for example, in case your calendar doesn't have that information)
21:03:27 -!- ais523 has joined.
21:03:54 <zzo38> itidus20: Yes, that is true. Not aligned exactly with midnight. Looking at dates for spring equinox in Wikipedia, times are given too. That is the "cusp" of Aries (or zero degrees).
21:03:55 <elliott> hi ais523
21:04:05 <ais523> hi elliott
21:04:05 <lambdabot> ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
21:04:06 <zzo38> Since that is the definition of the zero degrees reference point.
21:05:16 <ais523> elliott: @second message, agreed, @first message, I don't know what you're talking about
21:05:34 <elliott> 14:11:14: <elliott> 23:51:19: <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
21:05:35 <elliott> 14:11:46: <elliott> @tell ais523 grinding your teeth and hoping the world collectively gets over itself
21:06:10 <itidus20> i was born just under 3 hours before the spring equinox (i didnt know this word before)
21:06:14 <elliott> or screaming, ask oerjan for effective methods of despair
21:06:36 <monqy> oh no did people do that
21:06:40 <monqy> oh no........
21:07:01 <itidus20> `log chuck chuck chuck
21:07:21 -!- MDude has joined.
21:07:36 <HackEgo> No output.
21:07:56 <oerjan> zzo38: maybe they should just give the maximal range for each sign. then at least people can see that there is a problem. but i guess that would just get the newspaper inundated with mail.
21:08:02 <itidus20> `log Chuck!
21:08:14 <HackEgo> 2011-12-17.txt:23:55:19: <itidus20> so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!'
21:08:19 <zzo38> itidus20: Then your Sun sign would be Pisces. It is probably less than one degree before 360 degrees. (But if you want it only approximate then you can say it is Aries if you want to, but that would be inexact)
21:08:46 -!- MSleep has quit (Ping timeout: 240 seconds).
21:08:53 <itidus20> correct. for a long time i thought it was aries.. but then i looked it up and was quite excited to have my sign change
21:09:07 <zzo38> Your sign won't ever change unless the definitions change.
21:09:14 <elliott> :t uncurry3
21:09:14 <lambdabot> Not in scope: `uncurry3'
21:09:18 <elliott> @hoogle uncurry3
21:09:18 <lambdabot> No results found
21:09:19 <zzo38> You were simply wrong before.
21:09:48 <zzo38> oerjan: I think they should give the dates for the current year, and post a disclaimer that tells it is for the current year, and in what timezone (if necessay).
21:10:22 <twice11> @let uncurry3 a b c f = f (a,b,c)
21:10:23 <lambdabot> Defined.
21:10:30 <twice11> :t uncurry3
21:10:30 <lambdabot> forall t t1 t2 t3. t -> t1 -> t2 -> ((t, t1, t2) -> t3) -> t3
21:10:57 -!- MSleep has joined.
21:11:25 <ais523> wow, one of the spambots is trying to catch searches about how to wire an SPST switch
21:11:39 <ais523> if anyone's searching for that, there's not really help for them
21:11:57 <elliott> http://answers.yahoo.com/question/index?qid=20081120182952AAaY0nH
21:12:35 <zzo38> If I ran a newspaper and someone wanted to add the horoscopes section, I would insist on using a consistent method for the dates and post a footnote or whatever that tells what it is (such as current year or whatever).
21:12:49 <elliott> please run a newspaper
21:13:04 <elliott> it would mean more than you can ever know to me
21:13:20 <zzo38> But I have not the resources to run a newspaper.
21:13:26 -!- MDude has quit (Read error: Operation timed out).
21:14:07 -!- MDude has joined.
21:14:13 <Phantom_Hoover> Derren Brown is gay??
21:14:57 <elliott> Gay... for MAGIC.
21:15:44 <ais523> zzo38: but I thought that horoscopes for every star sign and every day were interchangeable
21:16:13 -!- MSleep has quit (Ping timeout: 240 seconds).
21:16:31 <ais523> elliott: I once ran an experiment where I looked at all the horoscopes for the current day, for a few days, to check which were definitely incorrect and which were possibly correct
21:17:03 <ais523> the correctness/incorrectness had nothing to do with my star sign in my smallish sample
21:17:39 <itidus20> http://en.wikipedia.org/w/index.php?title=Pisces_%28astrology%29&action=historysubmit&diff=465196453&oldid=370549804
21:18:32 <oerjan> ais523: it's just your skeptical quantum field messing up the predictions. hth.
21:18:37 <ais523> itidus20: is it the deletions on the left you're trying to draw attention to?
21:18:38 <elliott> ais523: wow, you managed to make horoscopes even more accurate!
21:18:57 <elliott> ais523: 11 times more accurate, in fact
21:19:02 <itidus20> ais523: i'm just amused. nothing more than that
21:19:07 <ais523> oerjan: actually, I've put some thought into psychic activity and the like, and concluded that, if it works at all, it's likely to fail in the presence of nonbelievers
21:19:34 <elliott> isn't that a standard argument
21:19:42 <oerjan> pretty much.
21:19:54 <elliott> there's a quote that's almost literally "why would the pixies talk to you, *you* don't want to hear them!!!!1"
21:20:16 <elliott> ...the problem being that decent sceptics would _love_ to hear from pixies :)
21:20:32 <twice11> And then there is the story about Niels Bohr and the horseshoe...
21:21:36 <zzo38> ais523: The advices/predictions given for each sign may be interchangeable, but the signs themselves aren't.
21:22:08 <zzo38> The signs themselves are just a different kind of units for measuring ecliptic longitude.
21:22:13 * Sgeo commits himself to a no SQL Injection, no XSS policy for this project and all future projects.
21:22:14 <zzo38> (Rather than using degrees)
21:22:36 <ais523> Sgeo: you mean you're defending against them, or not using them on the project?
21:22:49 <Sgeo> ais523, I'm defending against them
21:23:06 <ais523> how/
21:23:20 <ais523> any answer that is not some form of parameterised queries is unacceptable
21:23:41 <Sgeo> mysqli prepared statements for the former, I'm hoping PHP has nice easy to use things to escape text that might contain HTML tags for the latter
21:23:47 <elliott> Sgeo: "We have a policy that we have no SQL injections."
21:23:56 <twice11> ais523: serve static pages ;)
21:23:56 <ais523> prepared statements count as parameterised queries
21:23:56 <elliott> (http://kottke.org/04/07/my-new-policy)
21:24:09 <zzo38> twice11: Yes I know about the story of Niels Bohr and the horseshoe
21:25:40 <Sgeo> I have a table that's not supposed to be modified. Can I consider the table trustworthy?
21:26:09 <zzo38> ais523: If you looked at the description in a horoscopes of a newspaper, and figured out some are correct and some are incorrect, that has nothing to do with the dates that are specified for each sign. So, yes, it has nothing to do with it. The signs are often called "star signs" but actually they are "sun signs" because the dates in the newspaper are according (approximately) to the sun, not to the fixed stars.
21:27:00 <twice11> Jason Kottke has a policy that he is dating Nicole Kidman *and* Gwyneth Paltrow. I guess he expects that Derren brown doesn't have a policy that includes datin him...
21:27:27 <zzo38> Can you understand it now?
21:30:50 <itidus20> ais523: i believe that the compatability system of astrology is an account of why we can't all get along
21:31:04 <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors
21:31:35 <ais523> heh
21:31:48 <itidus20> hmm
21:32:17 <itidus20> i think the world could be modelled, though not very interestingly, in a game where you are either born with rock paper or scissors attribute
21:32:45 <itidus20> a cyclic food chain
21:34:14 <itidus20> for the rock, rock would be an ally, paper would be a predator, and scissors would be prey
21:34:55 <oerjan> 10:35:34: <fungot> Ngevd: date: wed, 2 jan 91 14:47:01 -0800 from:
21:34:56 <oerjan> 10:35:50: <Ngevd> Can't make that, fungot. I'm sorry.
21:34:56 <oerjan> 10:35:51: <fungot> Ngevd: we have found out a file named ' feather'...). even so i got used to the actual internet protocol you can do will fix any problem; even if it resolves a symbol. but the point.
21:34:56 <fungot> oerjan: too many students working with howard carter when he excavated the tomb of amenhotep ii: the quickening is the sequel to the popular film, returns to help of the british time traveller i've overlooked until now. come on, forget technology. is the man i requested a ride a horse, of course./that is, of the house, so he wasn't joking i don't bolivia!
21:34:56 <fungot> oerjan: no, the boy, do i?
21:34:56 <fungot> oerjan: should you have a naked flame next time. goodbye. well, it is rocket science!" and cackle maniacally:
21:35:16 <oerjan> Ngevd: i suspect fungot is suggesting you use feather to time travel there
21:35:16 <fungot> oerjan: oh, the swamp of terror, in search of the golden citadel... we only had ter put down 10%, not nothing. this isn't the time or place, but it turns the entire ship
21:36:48 <oerjan> <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors <-- reminds me of something i read claiming people divide into three approximately equal groups: mostly altruistic, mostly selfish and mostly doing whatever everyone else is doing.
21:36:51 <itidus20> this would lead to segregation between rock paper and scissors, which could be overcome by wearing masks to hide whether they are rock or paper or scissors
21:37:35 <oerjan> the exact descriptions are _very_ vaguely recalled here
21:39:36 <itidus20> but somehow a citizen could be fairly open with a parent or lover
21:40:00 <oerjan> ^style
21:40:00 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:40:07 <oerjan> what is iwcs
21:40:12 <oerjan> ^style iwcs
21:40:12 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
21:40:15 <oerjan> oh
21:40:26 <elliott> fizzie: Where's iwca?
21:40:42 <itidus20> perhaps systemically, to bring in another analogy, a spider could raise a fly as it's child provided the parent child relationship was healthy
21:40:57 <elliott> <oerjan> <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors <-- reminds me of something i read claiming people divide into three approximately equal groups: mostly altruistic, mostly selfish and mostly doing whatever everyone else is doing.
21:41:02 <elliott> oerjan: I thought it was pigs, dogs and sheep.
21:41:36 <oerjan> i don't recall any such terms
21:41:48 <elliott> http://en.wikipedia.org/wiki/Animals_(Pink_Floyd_album) :p
21:41:52 * oerjan metal dog
21:42:13 <elliott> Is that a dog made out of metal, or a dog who likes metal?
21:42:24 <oerjan> ask the chinese astrologers.
21:42:36 <elliott> Wow, that's actually a thing.
21:43:00 <zzo38> In the Chinese, the dog is one of the Chinese zodiac signs, used for marking years, and metal is one of the five Chinese elements. So, that is what it is.
21:43:24 <pikhq_> Good album, FWIW.
21:43:25 <itidus20> my model is meant to suggest that there are no valid scapegoats
21:43:58 <fizzie> 2011-11-12 15:29:28 <elliott> The scripts are I think Good Enough to add as iwcs now, but them annotations need wurk.
21:44:31 * Sgeo finds himself typing "the security hole is minor" in a PHP comment
21:44:32 <Sgeo> :/
21:44:52 <pikhq_> elliott: Fine Structure is much less confusing when you've actually finished it, BTW. :P
21:45:02 <monqy> :/
21:45:10 <itidus20> since rock paper scissors are not a hierarchy of morals or ethics
21:45:35 <ais523> really, we need a language with a type system strong enough to do CGI/HTML/related stuff with no risk of injection holes at all
21:46:00 <ais523> it's possible to make type systems like that in most strongly-typed languages, but I'm not sure if they have libraries with all the relevant types defined
21:46:03 <itidus20> in other words, in my system it would be quite absurd to set up a paper-archy, a rock-archy or a scissors-archy
21:46:08 <Sgeo> By minor, I mean the consequences of someone exploiting it is that they get to cheat a little bit and name a song other than a randomly chosen one.
21:46:11 <elliott> fizzie: Ah.
21:46:17 <Sgeo> I don't think that that's that big a deal
21:46:28 <monqy> no it is the biggest deal
21:46:31 <monqy> sgeo you have to fix this
21:46:48 <Sgeo> The only way I can think of fixing this is to set the song ID in the session
21:47:04 <oerjan> itidus20: "BURN THE PAPERS"
21:47:23 <monqy> think better
21:47:28 <Sgeo> I don't think I'll bother
21:48:12 <monqy> but but
21:48:17 <oerjan> from which we can conclude that emperor qin shi huangdi was scissors.
21:48:31 <itidus20> that their relationship to each other is based on an equal ability to exploit each other
21:48:40 <itidus20> uh in a circle though
21:48:50 <itidus20> not a mesh of exploitation, but just a circle
21:49:46 <Sgeo> monqy, feel free to name a song of your choice without naming the randomly selected song first, if you want
21:49:51 <oerjan> itidus20: you realize that in the real world there _is_ a hierarchy, though?
21:49:57 <Sgeo> It's a terribly useful hole to exploit.
21:50:13 <monqy> no I'd feel dirty
21:50:17 <monqy> I don't like that feeling
21:50:23 <oerjan> at least certain people are definitely at the bottom
21:50:41 <itidus20> oerjan: i don't know how to arrive at that from my current idea of rock paper scissors though
21:50:59 <oerjan> it is of course possible that each hierarchical level could be arranged in such a manner.
21:51:16 <ais523> hmm, perhaps I will upgrade and then switch to KDE
21:51:39 <itidus20> oerjan: hmm.. well.. "capital" seems to be a synonym for "predatory capacity" :D
21:52:00 -!- Klisz has joined.
21:52:14 <itidus20> at least it is being used that way now
21:52:18 <ais523> based on a comparison of current Linux desktops I'm reading
21:52:26 <ais523> KDE4 wasn't fundamentally broken, just buggy, and it's almost certainly been fixed by now
21:53:10 <elliott> ais523: I have used KDE 4 after everyone started saying "all the bugs are gone now!".
21:53:16 <ais523> elliott: what happened?
21:53:19 <elliott> Turns out it was buggy /and/ terrible, and still is.
21:53:20 <itidus20> money being one form of predatory capacity
21:53:22 <elliott> Well, still terrible.
21:53:29 <elliott> It might still be buggy, but I didn't run into any when I tried it.
21:53:52 <ais523> hmm, I'd like more specific reasons why it's terrible
21:53:54 <itidus20> its too much for me to figure out all at once
21:53:58 <ais523> as I'm still using Gnome 2 at the moment
21:54:03 <itidus20> brb
21:55:22 <pikhq_> I'm on XFCE ATM, but considering going back to the world of tiled WM.
21:55:28 <elliott> ais523: It has basically no coherent design philosophy whatsoever. It feels sluggish, Dolphin just isn't a very good file manager... KDE programs used to be relatively unpolished but full of functionality and configuration options. They still have quite a lot of configuration options in KDE 4, but they don't nearly have the same "depth"; it's mostly just pointless knobs to twiddle instead of rael custo
21:55:28 <elliott> misability. They're trying to be "humane, like GNOME" but they don't really know how. The panel is bad; the stupid "widget" desktop is worse.
21:55:32 <pikhq_> I hear awesome's awesome.
21:55:50 <ais523> elliott: ah, I see
21:55:58 <elliott> Dolphin is especially bad as a file manager because Konqueror was a really good KDE3-y file manager.
21:56:00 <ais523> I remember not being able to find the config thing at all in KDE4 last I looked
21:56:07 <elliott> It was "modular", incredibly well-integrated, flexible, unified, etc.
21:56:11 <pikhq_> Yeah, KDE 3 was pretty nice. Unpolished but you could make it act exactly how you wanted it to.
21:56:11 <ais523> can't Konqueror still be used as a file manager? or Nautilus, fwiw?
21:56:12 <elliott> Dolphin is just... a file manager.
21:56:20 <elliott> ais523: Yes. (And Nautilus still is in GNOME 3.)
21:56:26 <elliott> GNOME 3 Nautilus is better than GNOME 2, I'd say.
21:56:29 <elliott> <pikhq_> I hear awesome's awesome.
21:56:30 <elliott> pikhq_: Lua.
21:56:41 <pikhq_> And, yeah, "modular" was the driving philosophy of KDE 3.
21:56:48 <ais523> elliott: well, I'm just talking about the shell
21:56:53 <pikhq_> KDE 4 has... What.
21:56:55 <elliott> ais523: Huh?
21:57:06 <pikhq_> "Bloat = good"?
21:57:09 <ais523> elliott: as in Gnome Shell
21:57:17 <elliott> ais523: You haven't said a single thing about Gnome Shell?
21:57:30 <ais523> elliott: indeed; but I'm not sure what KDE's equivalent is called
21:57:38 <ais523> and it's that that I'm trying to talk about
21:57:45 <pikhq_> elliott: What about Lua?
21:57:50 <elliott> ais523: *Where* are you trying to talk about that?
21:57:53 <ais523> I'm entirely willing to use whatever prorgams I want from whatever Gnome/KDE
21:57:58 <elliott> pikhq_: It's terrible. And awesome is configured with it.
21:58:02 <ais523> elliott: I'm talking about using KDE, but potentially using gnome apps
21:58:07 <ais523> *programs
21:58:35 <pikhq_> elliott: *shrug*
21:58:52 <elliott> ais523: Well, KDE's window manager has never been much special, and it's particularly ugly by default in KDE 4 (and I don't really know of any good KDE 4 themes because everyone jumped ship from KDE), the panel sucks, the desktop sucks... I don't see any reason to use KDE for the shell at all.
21:59:10 <elliott> ais523: Xfce's shell is almost like GNOME 2 if you can deal with its rough edges.
21:59:11 <ais523> elliott: hmm
21:59:19 <ais523> is maintaining gnome-panel the only possibility, I wonder?
21:59:25 <elliott> pikhq_: Also, awesome is C.
21:59:28 <ais523> it's still around in the Ubuntu repos, although possibly not for much longer
21:59:31 <elliott> pikhq_: So it's probably less reliable than xmonad and uses a worse language.
21:59:42 <elliott> ais523: GNOME 3's gnome-panel isn't very good.
21:59:50 <ais523> ah, OK
21:59:52 <elliott> ais523: They rewrote it (!).
22:00:20 <elliott> ais523: I suggest installing Xfce (find your distribution's "core Xfce" package, and skip the "goodies" one; the additional programs are bad imitations of GNOME stuff, mostly, and tend to be quite buggy).
22:00:27 <elliott> (And/or unpolished.)
22:00:31 <pikhq_> Always dwm. :P
22:00:47 <ais523> elliott: but xfce's a window manager, isn't it?
22:00:55 <pikhq_> ais523: XFCE is a lightweight DE.
22:00:59 <elliott> ais523: That provides basically a decent window manager, panel (bad settings by default, but it's very configurable) and file manager.
22:00:59 <ais523> ah, OK
22:01:06 <ais523> can I use Compiz with it?
22:01:12 <elliott> ais523: And a mediocre terminal.
22:01:16 <pikhq_> Yesss, but its WM already composites.
22:01:25 <elliott> (Optionally.)
22:01:29 <ais523> pikhq_: but does it do things like make windows semi-transparent?
22:01:31 <elliott> (At pikhq_.)
22:01:38 <ais523> or change their contrast level?
22:01:44 * elliott just made inactive windows completely transparent.
22:01:47 <elliott> This is disorienting.
22:01:49 <pikhq_> I dunno, I dislike X compositing.
22:02:03 <pikhq_> It's a hack and it feels like it.
22:02:06 <elliott> ais523: Anyway, you'd have a hard time writing a DE that didn't run with Compiz.
22:02:13 <ais523> yep, fair enough
22:02:13 <elliott> You'd have to bake in WM checks into every program.
22:02:27 <ais523> I'm still feeling slightly bitten from the days when I accidentally got two window managers running at once
22:02:39 <ais523> I'm not sure if it was Compiz + Metacity or two instances of Compiz, but the results weren't pretty
22:02:59 <ais523> * elliott just made inactive windows completely transparent. <-- that doesn't sound like a very good idea
22:03:24 <elliott> ais523: My main niggles with Xfce are: one, scrolling in a background window focuses and raises it; that won't happen if you run Compiz, naturally. Two, if you set the task bar window list to "don't order the bloody things and let me drag them around myself", then it lets you reorder windows (which previous versions didn't), thank god, but it seems to like to pretend you didn't do anything when you dra
22:03:24 <elliott> g them around.
22:03:36 <elliott> Often I can e.g. swap two windows by dragging one left, but not the other right.
22:03:49 <elliott> That probably won't bother most people, though; I do pretty weird things with my task bar.
22:04:00 <ais523> elliott: hmm, I always swap my taskbar entries into order
22:04:08 <ais523> if they don't fall there naturally
22:04:10 <elliott> ais523: Then you could just configure an order.
22:04:16 -!- Ngevd has quit (Ping timeout: 248 seconds).
22:04:20 <ais523> yep, I guess so
22:04:27 <ais523> but I'm not sure if the order rules are simple enough to specify
22:04:38 <elliott> ais523: Timestamp, group title and timestamp, window title, group title and window title.
22:04:40 <elliott> Those are the options.
22:04:54 <elliott> Timestamp appears to be "of opening".
22:05:07 <elliott> Yes, it is.
22:05:32 <ais523> I mean, sometimes I want to put things in a particular location but I've never used them before
22:05:34 <elliott> ais523: "Group" corresponds to "application", I think.
22:05:52 <ais523> also, there are some things I habitually put on an alternative desktop/workspace
22:05:54 <ais523> like media players
22:06:20 <ais523> I find I don't use multiple desktops massively often, except for that, but when I do they're really useful
22:06:24 <elliott> Sounds like you want http://burtonini.com/blog/computers/devilspie/.
22:08:01 <elliott> :t repeat
22:08:01 <lambdabot> forall a. a -> [a]
22:08:57 <ais523> elliott: pretty much always when I use multiple desktops, there's a terminal on each of them
22:09:33 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:12:55 <elliott> oerjan: hmm, what came after those three numbers again? I think your prediction may have been a bit off
22:15:29 -!- Phantom_Hoover has joined.
22:16:43 <oerjan> what numbers
22:16:51 <elliott> @hoogle zipWith3
22:16:51 <lambdabot> Prelude zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
22:16:51 <lambdabot> Data.List zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
22:16:51 <lambdabot> Data.Sequence zipWith3 :: (a -> b -> c -> d) -> Seq a -> Seq b -> Seq c -> Seq d
22:17:54 <oerjan> what numbers
22:20:39 <elliott> oerjan: 247, 230, 260, I believe
22:21:11 <oerjan> `log 247,230,260,
22:21:16 <HackEgo> 2011-12-17.txt:02:28:06: <lambdabot> [247,230,260,337]
22:21:38 -!- augur has quit (Remote host closed the connection).
22:21:42 <oerjan> `log 247,230,260,.*,
22:21:48 <HackEgo> 2011-12-18.txt:22:21:42: <oerjan> `log 247,230,260,.*,
22:22:03 <oerjan> `log 247,230,260,[^.]*,
22:22:09 <HackEgo> 2011-12-17.txt:02:28:52: <lambdabot> [247,230,260,337,461,632,850,1115,1427,1786,2192,2645,3145,3692,4286,4927,5...
22:23:58 <elliott> THANK GOD I ADDED `LOG EH
22:24:08 <oerjan> yay
22:24:33 <oerjan> THE POSSIBILITIES ARE ENDLESS
22:29:04 <oerjan> <itidus20> feel free to correct me on this <-- see: http://en.wikipedia.org/wiki/Space-filling_curve
22:29:39 <oerjan> (that doesn't mean what you said is not also true, in another sense)
22:31:41 <elliott> wow, Peano lived that recently?
22:32:44 <oerjan> so it appears
22:33:24 <Phantom_Hoover> You'd think somebody'd have pinned down this whole arithmetic thing before then.
22:34:44 <oerjan> fermat had a version of induction called infinite descent.
22:34:56 <elliott> I assumed he lived in like the 1700s or earlier
22:35:05 <elliott> How did calculus get invented before the Peano axioms?
22:36:17 <elliott> (OK, so /formal/ calculus was probably roughly contemporaneous.)
22:37:44 <oerjan> i imagine the elements of peano arithmetic were known earlier, just not that you could make the foundation that simple
22:38:42 <elliott> oerjan: "The need for formalism in arithmetic was not well appreciated until the work of Hermann Grassmann, who showed in the 1860s that many facts in arithmetic could be derived from more basic facts about the successor operation and induction.[1] In 1881, Charles Sanders Peirce provided an axiomatization of natural-number arithmetic.[2] In 1888, Richard Dedekind proposed a collection of axioms about
22:38:42 <elliott> the numbers, and in 1889 Peano published a more precisely formulated version of them as a collection of axioms in his book, The principles of arithmetic presented by a new method (Latin: Arithmetices principia, nova methodo exposita)."
22:38:50 <elliott> Not that much beforehand, it seems.
22:38:55 <elliott> *that long
22:39:21 <elliott> It's really pretty shocking just how young almost everything is.
22:39:26 <Phantom_Hoover> "In 2005, Kryptonite changed their locks from a tubular-key to an I-key, which stopped the ability of a BIC pen or other cylinder shaped object from defeating the locking system.[3]"
22:39:46 <elliott> Phantom_Hoover: At least they stopped Superman getting in.
22:40:12 <Phantom_Hoover> "Don't worry, our locks are perfectly secure so long as thieves can't get their hands on cylindrical objects. And I think we all know how unlikely that is!"
22:40:38 <elliott> "I can get by in Haskell, but I'd consider myself a newbie (only use the IO monad, don't understand arrows). I wrote this in part to help me understand Haskell better."
22:40:39 <elliott> *sigh*
22:40:51 <elliott> The problem with people writing Haskell tutorials to learn things is that they inflict them on other people.
22:41:20 <monqy> why do people write tutorials about things they don't know ;_;
22:42:03 <Sgeo> Isn't it possible to learn by teaching?
22:42:18 <Sgeo> Although I guess it would be better to imagine teaching a teddy bear or something
22:42:26 <Phantom_Hoover> I feel my monad tutorial quote is in some way relevant.
22:42:43 <monqy> teddy bears don't feel pain
22:43:09 <elliott> `quote monad tutorial
22:43:09 <Phantom_Hoover> Sgeo, please, the image of you teaching your teddy bears is not one I need right now.
22:43:12 <HackEgo> 445) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life.
22:43:29 <monqy> i like that image
22:45:00 -!- augur has joined.
22:47:17 <oerjan> you can put whatever you want into life, but you cannot get anything out of it, except possibly at the end.
22:47:48 <elliott> Thank god oerjan is here to make things depressing.
22:48:05 <oerjan> sowwy
22:48:21 <elliott> How about this: A life where you give birth to someone who does something can be turned into a life where you do that thing!
22:48:34 <oerjan> ooh fancy
22:48:42 <elliott> Thank god I can just breed relentlessly and enslave my children to write @, and it'll be equivalent to writing @ myself.
22:48:51 <elliott> PROBLEM 1: Breed relentlessly.
22:50:15 <monqy> you could adopt relentlessly
22:50:19 <monqy> or kidnap relentlessly
22:50:25 <oerjan> PROBLEM 2: Get someone else to handle the children while they are in that annoying baby stage.
22:50:40 <monqy> kidnap them after they grow a bit
22:50:44 <oerjan> ooh right kidnapping, that solves everything!
22:50:56 <elliott> Wait, I could just kidnap competent people instead?
22:50:59 <elliott> oerjan: Prepare yourself for a life of @.
22:52:08 -!- augur has quit (Read error: Connection reset by peer).
22:52:08 <oerjan> you seem to be confusing me with a competent person. this may lead to problems later.
22:52:18 -!- augur has joined.
22:52:46 <elliott> oerjan: Um you have a Ph.D. in @ology???
22:56:17 <Phantom_Hoover> <elliott> Wait, I could just kidnap competent people instead?
22:56:23 <Phantom_Hoover> I am not a competent person, right?
22:56:46 <elliott> Phantom_Hoover: I don't have the heart to answer that question, but you're being kidnapped to give the system that Scottish touch.
22:56:50 <elliott> (By smashing it in half.)
22:57:09 <Phantom_Hoover> Can I inspect the porridge that you feed to the prisoners.
22:58:09 <elliott> Phantom_Hoover: It's Scott's Porage Oats, misspelling and all. (This is because I hate you.)
22:58:18 <elliott> (Also shouldn't it be Scots' Porage Oats.)
22:58:48 <elliott> http://creativeroots.org/wp-content/uploads/2010/09/scotts-porage-oats.jpg I will never get over how ridiculous this guy looks.
22:58:48 <oerjan> i can inspect the gamalost and lutefisk
22:58:53 <ais523> hmm, I eat a lot of oats
22:59:10 <elliott> ais523: You will enjoy your kidnapping a lot!
22:59:26 <ais523> elliott: I, umm, don't respond well to being kidnapped
22:59:35 <monqy> I've never been kidnapped
22:59:38 <ais523> I may even respond by waking up
22:59:43 <oerjan> ais523 has a lot of experience
22:59:44 <ais523> which could be quite dangerous if I wasn't asleep at the time
22:59:52 <elliott> ais523: Well, you'll actually be adultnapped.
22:59:55 <ais523> it could well destroy the universe
22:59:58 <elliott> As will monqy, but Sgeo will be kidnapped.
23:00:01 <elliott> Wait, I don't actually need Sgeo.
23:00:23 <elliott> ais523: Um excuse me @ is CLEARLY going to be used in the war against the machines?
23:00:35 <elliott> IT'S LIKE YOU'VE NEVER EVEN SEEN THE MATRIX?
23:00:38 <ais523> elliott: I mean, me waking up when already awake
23:00:39 <oerjan> i think i could respond well to kidnapping, if it was the right kidnapping. i am afraid @ is unlikely to be involved.
23:00:53 <ais523> I rarely have a problem waking voluntarily if I know I'm asleep
23:00:55 <elliott> ais523: Now it's like you actually haven't seen The Matrix and thus are actually missing my reference.
23:01:06 <ais523> in fact, once I was in a dream, and realised it, and it was getting weird
23:01:11 <elliott> oerjan: I will get GOD HIMSELF to kidnap you into heaven, and then assign you to work on @.
23:01:23 <ais523> and I thought, this is a dream and I know where the plot's going from here, and eventually I'll get out of it by deliberately waking up
23:01:33 <ais523> so I subverted it by deliberately waking up immediately
23:01:40 <ais523> I didn't really expect it to work, but it did
23:01:50 <Sgeo> ...killjoy. More fun to fly around, I'd think
23:02:07 <Sgeo> If I have a lucid dream again, I plan on flying into the Sun
23:02:12 <Sgeo> I've been planning that for a while
23:02:24 <monqy> dying in dreams can be fun, but don't overdo it
23:02:26 <Sgeo> In response to one of the challenges on DreamViews
23:02:34 <ais523> Sgeo: it wasn't a lucid dream
23:02:46 <ais523> I probably could have made it lucid with enough effort, but I didn't want to
23:03:21 <Sgeo> ais523, hmm. I think people who often talk about lucid dreams would say that that was lucid, but with no control.
23:03:23 <Sgeo> Or something
23:03:33 <ais523> (realising you aren't lucid is a /really/ big giveaway you're in a dream; you tend to be lucid in the real world)
23:04:44 <Sgeo> I think "lucid dream" is usually used subtly differently from what one might expect from the definition of "lucid"
23:05:39 <elliott> monqy: would you die in real life...
23:05:42 <elliott> ......
23:05:43 <elliott> ........;
23:05:47 <monqy> i've never tried
23:05:51 <ais523> Sgeo: I'm referring to the definition of "lucid" as in "lucid dream"
23:05:57 <elliott> beware deth.....
23:05:59 <ais523> certainly, if you die in a dream when not lucid, you instantly wake up
23:06:05 <ais523> or else, forget the dream
23:06:16 <ais523> if you are lucid, you normally use your lucidity to reverse the death
23:06:19 <elliott> ais523: You actually die and go to the afterlife but that part is blocked out.
23:06:21 <elliott> IMPOSSIBLE TO DISPROVE.
23:06:22 <ais523> as it tends to be reasonably omnipotent
23:06:32 <monqy> I've had dream deaths where I didn't instantly wake up
23:06:49 <monqy> maybe I was lucid
23:07:04 <Sgeo> I don't think I've had many dream deaths. I think maybe one or two, and I think I woke up immediately.
23:07:18 <monqy> I think in one of them I reversed the death but then died again and kept dying until I woke up
23:07:32 <monqy> but normally I let the death set in and maybe go to dream-afterlife
23:07:40 <elliott> monqy: your lucid dreams have glitches :D
23:07:45 <monqy> that or instantly wake up
23:07:49 <elliott> have you ever clipped through the floor in a lucid dream
23:07:52 <elliott> oh dear god that sounds terrifying
23:07:54 <elliott> :(
23:08:02 <monqy> now I want to try
23:08:43 <Sgeo> I struggle to go through walls in lucid dreams sometimes
23:08:48 <Sgeo> Flying's no problem though
23:09:06 <monqy> flying sounds boring
23:09:21 <monqy> is it any good
23:09:41 <Sgeo> I didn't really fly for very long, the once or twice that I remember
23:09:44 <Sgeo> But I liked it
23:09:53 <Sgeo> Actually, I think I more floated
23:10:23 <monqy> I tried remembering the dream I had last night but instead I went back to sleep and forgot it oops
23:10:39 <elliott> in lucid dreams i can jump higehr and fall really slowly but i can't actually fly which is annoying because it makes efficient travel difficult
23:10:50 <elliott> like I can jump out of a window and just glide down but apart from that nope
23:11:19 <monqy> now i want to be dreaming ;_;
23:12:24 <elliott> try cyanide
23:12:33 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
23:13:27 <Phantom_Hoover> I've never had a lucid dream.
23:13:53 <Phantom_Hoover> I'd totally clip through the floor if I had one, though.
23:41:00 <oerjan> zzo38: your fmap, pure () and liftA2 (,) base for Applicative makes me think of yet another possibility: pure () and liftA2
23:41:53 <oerjan> because fmap f x = liftA2 (const f) x (pure ())
23:42:05 <elliott> oerjan: um
23:42:06 <oerjan> er wait
23:42:09 <elliott> how do you do (<*>)
23:42:10 <oerjan> *const . f
23:42:17 <oerjan> elliott: liftA2 ($)
23:43:00 <elliott> oh, right
23:43:07 <elliott> oerjan: btw I totally thought of the pure () thing first
23:43:17 <elliott> well actually it was (exists a. f a), but same thing
23:43:26 <elliott> it's really interesting that all pure actually tells you is that f is inhabited
23:43:38 <elliott> that's a rather weak condition!
23:43:53 <oerjan> elliott: no that's not quite the same, because you need pure to assure you have something which does no action other than returning a value
23:44:11 <elliott> oerjan: er well (pure ()) doesn't guarantee that either
23:44:18 <elliott> nor does pure, for that matter
23:44:18 <oerjan> yes it does
23:44:29 <elliott> pure a = put undefined *> normalPure a
23:44:50 <Sgeo> elliott, would that break the laws?
23:44:57 <elliott> Duh.
23:45:00 <oerjan> > undefined *> ["i think not"]
23:45:01 <lambdabot> *Exception: Prelude.undefined
23:45:24 <elliott> oerjan: put undefined, not undefined
23:45:25 <elliott> sheesh
23:45:34 <oerjan> what's this "put" you're speeking of
23:45:40 <elliott> oerjan: oh ffs
23:45:50 <elliott> data OerjanIsAMoron a = OerjanIsAMoron (Int -> (a, Int))
23:46:01 <oerjan> put undefined in State doesn't have no effect
23:46:01 <elliott> instance Applicative OerjanIsAMoron where pure a = OerjanIsAMoron (\n -> (a, n+42))
23:46:04 <Sgeo> *oerjan </troll>
23:46:11 <elliott> oerjan: of course it doesn't
23:46:14 * Phantom_Hoover → sleep
23:46:14 <elliott> oerjan: <oerjan> elliott: no that's not quite the same, because you need pure to assure you have something which does no action other than returning a value
23:46:15 -!- Phantom_Hoover has quit (Quit: Leaving).
23:46:19 <elliott> pure's type does not assure you of that at all
23:46:30 <elliott> (forall a. a -> f a) is the same as (exists a. f a), given Functor
23:46:41 <oerjan> elliott: well ok if you had _just_ put, and no way to get at the value, ok
23:46:56 <Sgeo> I think oerjan's assuming that no one's going to break the laws
23:47:00 <elliott> oerjan: . . .
23:47:02 <elliott> I AM NOT SAYING IT'S VALID
23:47:03 <oerjan> but it is not enough to have just _any_ f a value
23:47:08 <elliott> I AM SAYING THAT PURE DOES NOT GUARANTEE SHIT SDKLFHSDFHDF
23:47:15 <elliott> IT'S A SEPARATE LAW
23:47:26 <elliott> OF COURSE PURE CAN VIOLATE THE LAWS, THAT'S WHAT I'M TRYING TO TELL YOU >_<
23:47:32 <elliott> oerjan: why on earth not?
23:47:39 <elliott> pure a = a <$ foo
23:47:53 <Sgeo> :t (<$)
23:47:54 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
23:48:07 <Sgeo> :t ($>)
23:48:08 <lambdabot> Not in scope: `$>'
23:48:10 <Sgeo> ?
23:48:57 <monqy> I don't know either
23:49:17 <oerjan> elliott: i am saying that you cannot express every applicative by picking an arbitrary element instead of a pure one
23:49:40 <elliott> oerjan: are you denying that this definition of Applicative would be equivalent:
23:49:57 <elliott> class (Functor f) => Applicative f where pure :: Exists1 f; (<*>) :: f (a -> b) -> f a -> f b
23:50:05 <oerjan> yes.
23:50:06 <elliott> data Exists1 f where Yep :: f a -> Exists1 f
23:50:09 <elliott> oerjan: how
23:50:30 <oerjan> because you cannot guarantee the existence of elements p such that p *> x = x
23:50:58 <Sgeo> My password for this app will be SgeoIsAdmin
23:50:59 <elliott> oerjan: you can't with pure either
23:51:06 <elliott> <elliott> instance Applicative OerjanIsAMoron where pure a = OerjanIsAMoron (\n -> (a, n+42))
23:51:09 <elliott> no guarantee
23:51:11 <oerjan> um that's one of the Applicative laws.
23:51:22 <elliott> oerjan: so what the fuck is wrong with the law "pure *> x = x"
23:51:25 <elliott> with my efinition
23:51:28 <Sgeo> Hmm, I keep typoing it
23:51:29 <elliott> er, unpacking the Exists1
23:51:32 <Sgeo> sgeoisadmin
23:51:36 <elliott> case pure of Exists1 foo -> foo *> x = x
23:51:42 <oerjan> ...ok if you _add_ that law. ok.
23:51:55 <elliott> oerjan: ...no, you _replace_ the corresponding law for pure
23:52:07 <elliott> just define pure in terms of Exists1-pure and use the existing laws
23:52:18 <oerjan> whatev :)
23:52:46 <elliott> oerjan: all you're saying is that you lose laws if you use this pure and remove laws.
23:55:20 <Sgeo> By deliberately revealing my password to ##php, I apparently reminded someone to strip that information out of their pastes
23:55:28 <oerjan> ok. i guess what i'm saying is that there may be Applicatives where the only candidates for your pure are wrappings of ordinary ones, though.
23:55:32 <elliott> my password is 1234
23:55:48 <elliott> oerjan: well you just have to take pure ()
23:55:54 <oerjan> > on (==) runWriter (tell []) (return ())
23:55:55 <lambdabot> True
23:56:09 <oerjan> i think that's one
23:56:10 <elliott> for StateT it would be StateT ((),)
23:56:23 <elliott> oerjan: i'm not really sure what you mean by wrappings of ordinary ones :/
23:56:49 -!- derdon has quit (Remote host closed the connection).
23:57:13 <oerjan> :t Writer
23:57:13 <lambdabot> Not in scope: data constructor `Writer'
23:57:19 <oerjan> :t writer
23:57:20 <lambdabot> forall a w. (a, w) -> Writer w a
23:57:36 <oerjan> elliott: in Writer [()] say, the only elements p that fulfil p *> x = x are of the form Writer p' [], aka pure p'
23:57:40 -!- DCliche has joined.
23:57:45 <elliott> *StateT (return . ((),))
23:57:53 <oerjan> or so i believe
23:58:05 <elliott> oerjan: well sure, the point is that you can just pick one a and you're done
23:58:07 <elliott> e.g. a = ()
23:58:15 <elliott> Writer undefined [], even
23:58:20 <oerjan> okay
23:58:32 <elliott> f (forall a. a) would even work, I think
23:58:40 <elliott> well apart from necessitating _|_ :P
23:59:21 <oerjan> i think we're at the "not actually disagreeing" state.
23:59:30 <elliott> indeed
2011-12-19
00:01:13 -!- Klisz has quit (Ping timeout: 244 seconds).
00:06:20 <Sgeo> elliott, kallisti update
00:10:53 <zzo38> oerjan: Sorry, I was playing the D&D game. But yes, now I can see that.
00:11:42 <zzo38> But, yes, pure would make it have the plain value, so it is like identity, so pure x *> y = y = y <* pure x would work, I think.
00:12:36 <zzo38> That is the definition of applicative functor, I think, that pure means identity, isn't it?
00:16:39 <oerjan> well the laws listed in Control.Applicative are: pure id <*> v = v, pure (.) <*> u <*> v <*> w = u <*> (v <*> w), pure f <*> pure x = pure (f x), u <*> pure y = pure ($ y) <*> u, which are essentially the same which i baked into my FreeA instance earlier
00:17:08 <oerjan> except that the first one is made redundant by all FreeA values starting with pure
00:18:48 <elliott> :t foldl'
00:18:48 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
00:19:57 <oerjan> `log [d]ata FreeA where
00:20:04 <HackEgo> 2011-12-14.txt:04:27:51: <oerjan> as a reminder, data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b
00:20:31 <oerjan> `log instance Applicative Free[A]
00:20:37 <HackEgo> 2011-12-14.txt:01:20:46: <oerjan> *instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
00:20:46 <zzo38> Do you know if these laws allow you to make a backward version of any applicative?
00:21:02 <oerjan> zzo38: yes i'm pretty sure i've heard that mentioned before
00:21:11 <elliott> :t foldMap
00:21:12 <lambdabot> Not in scope: `foldMap'
00:21:12 <elliott> :t F.foldMap
00:21:13 <lambdabot> Couldn't find qualified module.
00:21:16 <elliott> :t Data.Foldable.foldMap
00:21:16 <lambdabot> forall a m (t :: * -> *). (Data.Foldable.Foldable t, Monoid m) => (a -> m) -> t a -> m
00:21:35 <oerjan> :t (<**>)
00:21:36 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b
00:21:48 <zzo38> oerjan: Do you know under what circumstances that the backward applicative can make a monad?
00:22:05 <oerjan> zzo38: in fact the backwards function is just flip (<**>)
00:22:23 <zzo38> oerjan: Yes; exactly. That is exactly what I was thinking of.
00:23:01 <oerjan> zzo38: not any more than i know the condition for the ordinary applicative
00:24:06 <oerjan> commutative monads/applicatives turn into themselves, i should think
00:24:18 <oerjan> so Maybe and Reader are trivial
00:24:31 <zzo38> Yes, a commutative applicative becomes itself, obviously
00:24:34 <oerjan> or wait
00:24:42 <oerjan> ignoring bottom.
00:24:59 <zzo38> Yes, you have to ignoring bottom. Always.
00:25:00 <oerjan> but i think you do that in the definition anyways.
00:26:36 <oerjan> well not _always_, i think sometimes bottom works as well
00:27:24 <oerjan> > (const True <$> undefined) undefined
00:27:25 <lambdabot> True
00:27:38 <oerjan> > (undefined <**> const True) undefined
00:27:38 <lambdabot> Couldn't match expected type `a -> b'
00:27:39 <lambdabot> against inferred type `GHC.Bo...
00:27:39 <elliott> zzo38: always?
00:27:42 <oerjan> oops
00:27:52 <oerjan> > (undefined <**> pure (const True)) undefined
00:27:53 <lambdabot> True
00:28:06 <oerjan> so Reader works with bottom
00:28:35 <oerjan> > (Just (const True) <*> undefined)
00:28:35 <lambdabot> *Exception: Prelude.undefined
00:28:43 <zzo38> elliott: Yes you always have to ignoring bottom to make it mathematically correct, as far as I can tell.
00:28:44 <oerjan> oops
00:28:46 -!- cheater has joined.
00:30:16 <oerjan> hm one might argue <*> for Maybe is not lazy enough, there
00:30:48 <oerjan> > (liftM2 id (Just (const True)) undefined)
00:30:48 <lambdabot> *Exception: Prelude.undefined
00:31:20 <oerjan> hm or wait no.
00:31:39 <oerjan> no, it obviously needs to be at least strict.
00:32:20 <oerjan> zzo38: the backwards State monad is probably exactly this for State
00:32:46 <oerjan> and for Writer i'd imagine you simply change to the Dual monoid
00:32:51 <zzo38> oerjan: Is the backward State applicative makes a monad?
00:33:13 <oerjan> zzo38: there's a backward State monad, i would guess it's the same thing
00:33:35 <oerjan> perhaps you can turn every monad backwards, hm
00:33:54 <zzo38> Yes, for Writer (or (,)) yes you change to the Dual monoid, so if it is commutative then it will also be commutative applicative
00:34:02 <elliott> oerjan: I doubt it
00:34:04 <zzo38> And commutative applicative becomes the same when backward
00:34:07 <elliott> how do you make join go backwards?
00:34:10 <zzo38> Yes, I doubt it too.
00:34:35 <oerjan> hm
00:34:37 <elliott> i mean, for a start, you can't really make (>>=) go backwards :)
00:34:49 <zzo38> I know any monad is applicative, and you can make the backward applicative, but I wouldn't think it necessarily will make a monad
00:35:24 <oerjan> i guess Reader, Maybe and Writer all have the property that the effects aren't really intertwined with the values
00:35:42 <oerjan> (much)
00:36:05 <elliott> oerjan: well... Reader lets you depend on the state but not change it, and Writer lets you change it but not depend on it
00:36:17 <elliott> i suppose the difference that State makes is that you can loop those two together
00:36:35 <oerjan> but still there _is_ a backwards State monad.
00:36:48 <kallisti> elliott: help left recursion what do?
00:36:54 <elliott> oerjan: well, yes, because of laziness
00:36:54 <zzo38> oerjan: OK, what is the backward state monad? I have not heard of it.
00:37:02 <elliott> kallisti: learn how parsers work.
00:37:11 <kallisti> kthx
00:37:12 <elliott> what do they actually _teach_ you at that university?
00:37:33 <kallisti> the only thing I've learned so far is so basic data structure stuff that I had glossed over in self-teaching myself (imagine that.)
00:37:34 <elliott> zzo38: http://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse-state-monad/
00:37:46 <elliott> zzo38: the State monad, except state propagates /back/ in time instead of forwards
00:38:06 <zzo38> elliott: Time? What does time have anything to do with it?
00:38:15 <kallisti> elliott: what do you recommend I learn about parsers. I mean, I understand why it's left recursing but not how it's possible to correct it.
00:38:25 <elliott> zzo38: well in (m >>= f) you can say that m is "before" f x, chronologically
00:38:30 <elliott> (where x is the result of m)
00:38:38 <elliott> zzo38: or more simply, each line of a "do" block is further in time
00:38:52 <elliott> then you can say that State gives you state propagating forwards in time, but RState gives you state that propagates /backwards/
00:38:55 <kallisti> maybe the terminal alternatives aren't actually being tested first due to my hackish infix operator code.
00:39:07 <elliott> kallisti: http://en.wikipedia.org/wiki/Left_recursion
00:39:30 <kallisti> elliott: I'm looking at that right now.
00:39:44 <kallisti> expr +
00:39:45 <kallisti> er
00:39:51 <elliott> kallisti: notice the long "Removing left recursion" section.
00:40:50 <zzo38> elliott: Well, OK, but I think it has not much to do with time. Simply, (m >>= f) is (join $ fmap f m). With IO monad obviously it is the order of action, in time, but other monads don't really have any time, I think.
00:41:00 <kallisti> elliott: where can I learn this notation? I'm guessing -> is a production rule and | is alternative choices and adjacent symbols are concatenated?
00:41:05 <elliott> zzo38: it's a metaphor :P
00:41:31 <elliott> kallisti: http://en.wikipedia.org/wiki/Context-free_grammar
00:41:34 <zzo38> O, it is a metaphor.
00:42:11 <elliott> kallisti: epsilon is empty string, jutaposition is concatenation, -> is production rule
00:42:48 <kallisti> elliott: right
00:44:07 <zzo38> Can it make a backward state monad transformer?
00:45:30 <kallisti> elliott: so in this notation the order of alternatives doesn't matter?
00:45:44 <oerjan> there are also extra annotations for the reruns, sort of "the making of iwc"
00:45:51 <oerjan> wrong window
00:46:00 <elliott> kallisti: it's not the "notation", it's the definition of a CFG
00:46:10 <elliott> CFGs can even have ambiguous parses
00:46:17 <kallisti> elliott: okay. same question s/notation/the definition of a CFG/
00:46:19 <elliott> i.e. valid strings which match multiple possible parse trees
00:46:57 <kallisti> so, no, the order doesn't matter
00:47:35 <kallisti> for instance, the production rule they show has the left-recursive nonterminal as the first alternatives
00:47:43 <kallisti> mine are the last alternatives.
00:49:26 <kallisti> oh I see.
00:49:39 <kallisti> partly
00:50:23 -!- augur has quit (Remote host closed the connection).
00:52:30 <zzo38> I think you could make a "Newdata" monoid to make the Writer discard old data like this: mempty = Newdata Nothing; mappend (Newdata x) (Newdata y) = Newdata (maybe x Just y);
00:52:52 <oerjan> for newbies to the subject, determining whether a CFG has any ambiguous parses is an undecidable problem (you can encode the TM halting problem into it)
00:54:30 <elliott> oerjan: i'm sure that will help kallisti's left-recursion problem immensely :D
00:54:33 <oerjan> :t First
00:54:34 <lambdabot> forall a. Maybe a -> First a
00:54:39 <kallisti> elliott: oh definitely.
00:54:54 <oerjan> or wait
00:55:22 <oerjan> :t Last
00:55:23 <lambdabot> forall a. Maybe a -> Last a
00:55:32 <oerjan> zzo38: i think that may be what Last does
00:55:49 <oerjan> > mempty :: Last Int
00:55:50 <lambdabot> Last {getLast = Nothing}
00:56:07 <zzo38> oerjan: O, yes, probably that is it. You could obviously make any monoid backward, too.
00:56:17 <kallisti> elliott: bah, that's going to make my grammar so ugly. :P
00:56:30 -!- zzo38 has quit (Remote host closed the connection).
00:56:33 <elliott> kallisti: use a parser library that optimises left-recursion, then
00:56:38 <elliott> (optimises by eliminating :P)
00:57:00 <kallisti> bleh. not enough time to do that. :P
00:57:03 <oerjan> > foldMap Last [Nothing, Just 3, Nothing, Just 5, Nothing]
00:57:04 <lambdabot> Not in scope: `foldMap'
00:57:06 <oerjan> oops
00:57:14 <oerjan> @hoogle foldMap
00:57:14 <lambdabot> Data.Foldable foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m
00:57:14 <lambdabot> Data.Traversable foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m
00:57:22 <oerjan> > Data.Foldable.foldMap Last [Nothing, Just 3, Nothing, Just 5, Nothing]
00:57:23 <lambdabot> Last {getLast = Just 5}
00:58:54 <kallisti> elliott: I may just make array subscripting an infix operator because I already have code to parse an arbitrary prefix/infix precedence table.
00:59:35 <kallisti> but I'll try the expr[expr] way
00:59:41 <elliott> kallisti: expr[expr] _is_ an infix operator.
00:59:57 <kallisti> yeah but it's got the weird dangly ]
01:00:00 <elliott> it's the infix operator [, except it's expr '[' (expr with ']')
01:00:03 <elliott> that's all
01:00:12 <kallisti> hm
01:00:21 <kallisti> I might be able to hack that into my infix code. :P
01:00:21 <elliott> i.e. (expr,']')
01:00:24 <elliott> *(expr ']')
01:00:34 <shachaf> elliott: Why is #haskell so terrible.
01:00:48 <oerjan> "expr with ']'" is a nice token for parsing the remainder of listlike things
01:00:51 <elliott> shachaf: Indeed.
01:01:06 <shachaf> It used to be good, I think.
01:01:09 <elliott> shachaf: (What's happened this time?)
01:01:15 <shachaf> Oh, it's just all these people.
01:01:20 <shachaf> Nothing in particular.
01:01:30 <elliott> It kind of got terrible when Haskell exploded in popularity and the signal/noise ratio plummeted.
01:01:33 <oerjan> you can make bf parsing LR(0) that way, i think
01:01:33 <kallisti> elliott: congratulations, you just convinced me to write an ugly hack. :P
01:01:49 <elliott> I probably won't go there much any more now that I can direct my amazingly intelligent Haskell questions to Stack Overflow.
01:02:00 <elliott> (So amazingly intelligent, nobody ever answered them!)
01:02:25 <shachaf> So amazingly intelligent that no one even understands them, no doubt.
01:02:36 * shachaf likes http://djm.cc/bignum-results.txt
01:02:45 <elliott> Well, anything that spans more than three sentences in one line is ignored in #haskell.
01:02:49 <shachaf> Of course the winning entry is the sort of thing you'd expect.
01:03:03 <oerjan> elliott: well never mind that, you'll soon have amassed enough points to smite those evil non-answerers.
01:03:03 <elliott> People prefer the lower-hanging fruit from people who don't bother reading GHC's error messages before complaining about them.
01:03:18 <shachaf> Yes.
01:03:25 <shachaf> Which only encourages that behaviouur. :-(
01:03:25 <elliott> oerjan: Yes! I will lure them into my Stack Overflow lair and remove their stacks.
01:03:40 <kallisti> elliott: write a bunch of blog articles about unsolved Haskell problems and how interesting they are, then make a Wikipedia article called "unaswered questions in Haskell" while sourcing your very notable blog and see if anyone provides answers.
01:03:41 <elliott> shachaf: Remember #haskell-in-depth?
01:03:45 <elliott> That probably lasted whole *days*!
01:04:06 <shachaf> elliott: Whoa, man, that's still around?
01:04:15 <oerjan> yesterday i got inspired to go to stackoverflow and see if there was anything i could help with, but elliott had answered everything, so there was no use.
01:04:16 <elliott> Probably not. I guess it depends on your definition of "around".
01:04:21 <shachaf> All I see in the backlog is join and quit messages and day change messages.
01:04:22 <elliott> oerjan: :D, seriously?
01:04:34 <shachaf> And quite a few day change messages for the few screenfuls of backlog that I keep, on top of that.
01:06:13 <oerjan> elliott: ok _maybe_ camccann [sp?] had done some of it.
01:07:33 * elliott is fairly tempted to make "<oerjan> yesterday i got inspired to go to stackoverflow and see if there was anything i could help with, but elliott had answered everything, so there was no use." his profile on SO.
01:07:43 <elliott> That would make my avatar expand into a shiny little card thing on mouseover!!!
01:07:47 <elliott> SO SHINY.
01:07:53 <oerjan> yay
01:08:13 <shachaf> I don't answer questions on StackOverflow.
01:08:14 <shachaf> Or ask them.
01:08:29 <shachaf> That's a form of protest for them having deleted my account once.
01:08:39 <shachaf> ...Deleted for lack of activity. But still.
01:09:45 <oerjan> well i've only answered one question, and that was a couple weeks ago.
01:10:01 <shachaf> Actually I answered a question once.
01:10:12 * elliott only joined because he had a pressing question to which #git's answer was "your workflow is broken, guess you just have to DEAL WITH IT FOREVER!".
01:10:27 <shachaf> elliott: Did StackOverflow provide a better answer? :-)
01:10:36 <elliott> shachaf: Yep.
01:10:51 <shachaf> Oh.
01:10:55 <elliott> The answer was "rewrite history in the master branch so that the thing that's causing problems never happened".
01:10:58 <elliott> It actually worked perfectly.
01:11:00 <shachaf> Well, that other channel is full of gits.
01:11:12 <shachaf> Yay, rewriting history!
01:11:15 <elliott> shachaf: It may have something to do with the fact that my problem took several paragraphs to explain.
01:11:16 * shachaf push --force
01:11:26 <elliott> That's several more than any IRC channel can be bothered with.
01:11:34 <shachaf> Not *any* IRC channel.
01:11:54 * elliott considers introducing a rootkit into an innocuous clean-up commit somewhere in the middle of history with push --force.
01:12:28 <shachaf> That's why you never push --force.
01:12:32 <elliott> oerjan: Was it something easy? Because I have a MONOPOLY on the easy questions, man.
01:12:46 <elliott> shachaf: push --force is way preferable to the problems I was having.
01:13:03 <elliott> Also I could just introduce a rootkit as the only change in a commit and nobody would notice since everyone just (git pull && make)s..
01:13:07 <elliott> s/\.\././
01:14:24 <shachaf> You're reflogging a dead horse.
01:14:35 <elliott> Which horse?
01:14:40 <elliott> Oh.
01:14:41 <elliott> I hate you.
01:14:43 <oerjan> elliott: http://stackoverflow.com/questions/8296695/is-milner-let-polymorphism-a-rank-2-feature/8433852#8433852
01:15:02 <elliott> oerjan: ah. so no, then :P
01:15:10 <elliott> i even saw that question
01:15:30 <elliott> oerjan: Ha ha, I have over 100 times your rep. MY PRECIOUS MEANINGLESS INTERNET POINTS!
01:16:34 <elliott> Hey, that guy accepted the wrong answer (the one that isn't mine). :(
01:16:46 <oerjan> fyl
01:17:35 * shachaf has 5 more reputation than Ørjan! Hah!
01:17:36 -!- Patashu has joined.
01:18:00 <elliott> oerjan: Hmm, is the type system you talked about decidable?
01:18:19 <oerjan> almost certainly not
01:18:27 <elliott> :(
01:18:36 -!- cheater has quit (Excess Flood).
01:18:43 <elliott> cheater sure does excess flood a lot.
01:18:47 <elliott> oerjan: Well, hmm, I don't see why not.
01:18:59 <oerjan> i mean, you can tell from the type whether a term is normalizable, which is essentially solving the halting problem
01:19:02 <elliott> oerjan: Checking a term has type (A /\ B) is just checking it has type A and type B.
01:19:07 <elliott> Checking a term has type omega is just const True.
01:19:09 <oerjan> s/the type/the set of types/
01:19:13 -!- cheater has joined.
01:19:21 <elliott> Hmm, I guess so.
01:19:57 <oerjan> in fact, a term reduces to \x -> x iff it has type A -> A
01:20:38 <elliott> oerjan: oh, wait, it was a type system for the entire LC
01:20:46 <oerjan> yes
01:20:52 <elliott> I was assuming it was just like Hindley-Milner, but with more stuff :)
01:20:58 <elliott> well, without the inferrence bit
01:20:59 <Sgeo> /?> does in fact act like ?> in PHP
01:21:12 <oerjan> nope. it doesn't even have polymorphism.
01:21:14 <Sgeo> erm
01:21:16 <Sgeo> //?> does in fact act like ?> in PHP
01:21:46 <Sgeo> Or hmm, maybe not
01:21:50 <oerjan> well apart from the first level of type variables.
01:22:11 <elliott> oerjan: erm neither does haskell :P
01:22:15 <elliott> by that definition
01:22:57 <oerjan> i mean, no let-polymorphism
01:23:05 <Sgeo> Soeone said that it is in fact just //?>
01:23:10 <Sgeo> Which ends PHP mode
01:23:14 <oerjan> you get to list every type you need to use a term with
01:23:39 <elliott> shachaf: "{loader.c} very big very big"
01:23:42 <elliott> What a good column.
01:23:45 <elliott> Er, row.
01:23:50 <elliott> oerjan: right
01:23:59 <shachaf> elliott: At least we all know how to compare "big" to "very big"!
01:24:00 -!- ais523 has quit (Remote host closed the connection).
01:24:11 -!- tuubow has joined.
01:24:14 <shachaf> > "very big" > "big"
01:24:15 <lambdabot> True
01:24:17 <shachaf> QED
01:24:39 <elliott> "{pete.c} and {pete-2.c} are both attempts to loop until the biggest integer
01:24:39 <elliott> is found. This cannot succeed as there is no biggest integer."
01:24:41 <elliott> Come on, Pete!
01:24:44 <elliott> You're better than this.
01:24:51 <oerjan> > "extremely small" < "small"
01:24:52 <lambdabot> True
01:24:53 <elliott> Wow, Pete submitted 8 entries.
01:24:55 <oerjan> it works!
01:24:58 <shachaf> elliott: Don't worry, that's what pete-3 through pete-7 are for.
01:25:06 <shachaf> Or maybe pete-8.
01:25:08 <elliott> shachaf: What about pete-9?
01:25:14 <elliott> *9
01:25:21 * shachaf waits.
01:25:23 <kallisti> elliott: I could also use this code to support expr(expr)
01:25:25 <Sgeo> Who are we mocking?
01:25:31 <elliott> *F[omega**omega](E(500))
01:25:34 <kallisti> elliott: you know, if I ever support first-class functions
01:25:35 <shachaf> Maybe it was a different Pete for each one!
01:25:41 <monqy> is sgeo even qualified to mock anything
01:26:02 <elliott> kallisti: I think you'll find you are implementing ``INFIX + SURROUND NOTATION''.
01:26:11 <elliott> Terminology (c) TehZ being a moron 2011-2011.
01:26:25 <monqy> tehz being a moron is 2011 only?
01:26:51 <shachaf> `addquote <elliott> I hate you.
01:26:51 <elliott> (Terminology (c) TehZ being a moron) 2011-2011.
01:26:53 <HackEgo> 768) <elliott> I hate you.
01:26:55 * elliott fixes the situation with surround notation.
01:27:40 <elliott> loader.c is beautiful.
01:27:41 <kallisti> elliott: SURROUND? sounds fancy
01:28:25 <elliott> (In theory as well as implementation.)
01:29:51 <elliott> shachaf: Hey! He's the guy who wrote that advanced optimising brainfuck compiler.
01:31:07 -!- augur has joined.
01:31:28 <shachaf> elliott: Figures.
01:31:30 <shachaf> Which one?
01:31:50 <elliott> bfdb, the only non-esotope compiler of the highest rank in http://code.google.com/p/esotope-bfc/wiki/Comparison.
01:32:22 <shachaf> Oh, the person who did the contest, not the person who wrote the winning entry.
01:33:33 <elliott> "I have not even used any preprocessor tricks to shorten the code,
01:33:33 <elliott> since I expect my entry to be already uncomparable to any other
01:33:33 <elliott> entry not using a nearly identical function scema."
01:33:33 <elliott> http://djm.cc/marxen-comments.txt
01:33:36 <elliott> So cocky, Mr. Loser!!!
01:38:31 * elliott dd if=iso of=/dev/sdb
01:38:51 * shachaf cp iso /dev/sdb
01:38:59 <shachaf> I win this round of shgolf.
01:39:24 <elliott> shachaf: I believe most cps will refuse to do that.
01:39:33 <pikhq_> <iso>/dev/sdb
01:39:45 <elliott> At least I believe GNU cp does unlink + open + write in that situation.
01:39:52 * pikhq_ wins this round of better-shell-than-you
01:40:35 <monqy> what shell is good shell
01:41:08 <shachaf> pikhq_ wins, I suppose.
01:47:01 <elliott> pikhq_: shachaf: Convince me to reboot into this installation medium and installaton it.
01:48:52 <monqy> what is it...
01:49:03 <shachaf> elliott: reboot into this installation medium and installaton it.
01:49:12 <elliott> The same thing I'm running, it's just a convenient way to clear out all this crap I have.
01:56:18 <elliott> Wow, how did ~ become 15 gigabytes?
01:57:24 <shachaf> täysjyväruisleipäshachaf@argon:~$ df -h /home
01:57:24 <shachaf> Filesystem Size Used Avail Use% Mounted on
01:57:24 <shachaf> /dev/sda7 286G 222G 50G 82% /home
01:57:44 <elliott> Please tell me that's not your real username.
01:57:54 <shachaf> Oh.
01:58:01 <elliott> No wait don't.
01:58:01 <shachaf> No, my username is jsut the last seven characters of that.
01:58:04 <elliott> I want to believe.
01:58:05 <elliott> Dammit.
01:58:11 <elliott> Change your username to that.
01:58:15 <shachaf> But täysjyväruisleipä is good too.
01:58:22 * shachaf is presently enjoying some täysjyväruisleipä.
01:58:26 <elliott> No, täysjyväruisleipäshachaf.
01:58:53 <shachaf> elliott: I don't mean «"täysjyväruisleipä" would make a good username». I mean that täysjyväruisleipä is good.
01:59:04 <elliott> I DON'T CARE.
01:59:08 -!- elliott has quit (Quit: ragepat).
02:22:03 <kallisti> perhaps the fact that my operator parser is actually non-associative is interfering with things.
02:27:26 <oerjan> in which elliott ragepats due to his seething hate of wholemeal bread.
02:36:57 -!- Nisstyre has quit (Read error: Connection reset by peer).
02:38:32 -!- Nisstyre has joined.
02:48:26 -!- pikhq_ has quit (Read error: Operation timed out).
02:50:49 -!- pikhq has joined.
03:10:24 -!- TeruFSX has joined.
03:38:34 <Sgeo> DEAR GOD I NEED CSS
03:38:47 <monqy> hi
03:39:32 <oerjan> comprehensive salvation system
03:40:13 -!- TeruFSX_ has joined.
03:40:36 <Sgeo> I'd link to the problem, but
03:40:46 <Sgeo> I'm tempted to use tables to style the page
03:40:49 <Sgeo> I really, really am
03:41:11 <Sgeo> I _know_ tables
03:41:23 <Sgeo> I don't know how to use CSS to make one thing appear next to another
03:42:16 <kallisti> "make one thing appear next to another" in what way.
03:42:23 <kallisti> there are different ways to do it.
03:42:40 <Sgeo> Like, a button to delete some text should appear next to the text, not below it
03:42:56 <Sgeo> Maybe I should just link
03:43:00 <Sgeo> Crud, forgot to stop XSS
03:43:01 <kallisti> Sgeo: I'd say tables are porbably better for your sanity.
03:43:17 -!- TeruFSX has quit (Ping timeout: 252 seconds).
03:44:46 <Sgeo> There we go, XSS blocked
03:45:10 <kallisti> Sgeo: otherwise you'd want to use CSS positioning or float.
03:45:33 <kallisti> well, I won't say you /want/ to use those. :P
03:46:32 <kallisti> but float can be used to arrange elements in a way that's similar to tables.
03:50:21 <kallisti> http://www.w3schools.com/css/tryit.asp?filename=trycss_float6
03:50:35 <kallisti> though honestly I don't know why this would be preferred to tables. I find it hard to follow from the stylesheet.
03:52:09 <Sgeo> Well, this is not what I wanted
03:52:18 <Sgeo> I put float:right on all of the Delete buttons
03:52:28 <Sgeo> I kind of want to show yo
03:52:30 <Sgeo> you
03:53:08 <Sgeo> I think I'll use a table
03:53:31 <Sgeo> Instead, I'll use tables
03:57:28 <Sgeo> I sold my soul to table.
03:57:52 <kallisti> there's... nothing wrong with tables.
03:59:15 <kallisti> I think the HTML should convey structural information, while CSS should convey aesthetic details.
04:03:42 <Sgeo> But this is an aesthetic detail!
04:03:55 -!- TeruFSX_ has changed nick to TeruFSX.
04:04:03 <kallisti> Sgeo: the structural layout of the page?
04:04:22 <oerjan> what, only 7 spam messages on the wiki since yesterday? something must be wrong.
04:04:34 -!- archelliott has joined.
04:04:39 <archelliott> sup
04:04:42 <kallisti> oerjan: the spammers are realizing no one actually pays attention
04:04:45 <oerjan> sorry, 8
04:04:46 <kallisti> archelliott: yo
04:04:52 <pikhq> archelliott: Is arch any good?
04:05:09 <oerjan> very archaic
04:05:11 <Sgeo> I should probably actually write delete.php
04:05:44 <kallisti> the most common thing I've heard about Arch from people: "bah, I haven't set this up. brb I'm going to install X"
04:06:03 <archelliott> pikhq: I've been using it for the past few months, this is just my nick for the irssi on the console while it installs :P
04:06:29 <pikhq> kallisti: I used Gentoo for several years, so setup is *unlikely* to be an issue for me.
04:06:55 <archelliott> pikhq: I would... cautiously say yes. I'm preferring it to Debian so far because it updates much, much quicker, and the low-patch, manual-configuration nature is what it is.
04:07:25 <archelliott> pikhq: There are a few really stupid things -- for instance, "python" is a link to python3, and you have to do python2 to get something that can actually run anything -- but only a few.
04:07:37 <archelliott> Also, there's no freeze cycle, which is nice. :p
04:08:41 <archelliott> pacman itself I'm not the biggest fan of; it's a fairly reasonable package manager, but seemingly a bit slow (this may just be psychological; it's certainly not a substantial difference, and I haven't compared it to apt at all), and just generally fairly bare-bones compared to aptitude. But it works fine.
04:09:20 <archelliott> The AUR has just about everything under the sun, including packages for proprietary software and even payware (you supply the tarball), so that's nice.
04:09:44 <archelliott> Something like yaourt of course provides easy access to the AUR and makes pacman a bit fancier. I've been using aurget, but I don't think I still will on this reinstall; it's a bash script and it shows.
04:09:53 <archelliott> Although, yaourt still has quite a lot of bash, I gather.
04:10:34 <archelliott> pikhq: The multilib situation isn't as good as it should be, but whose is. There's a separate multilib repo with lib32-* for just about everything, and you get to install a "gcc-multilib" package from there that replaces your normal gcc.
04:10:46 <archelliott> Beyond that it just works (you have to add the repo though; it's official but not default).
04:10:54 <pikhq> archelliott: Absolutely nothing does multilib "well" yet, though.
04:11:05 <archelliott> Well, yes.
04:11:10 <archelliott> "Wait for Kitten" and so on.
04:11:20 <pikhq> Well, actually, that's not true. Mandriva does it nicely.
04:11:30 <pikhq> You install x86 packages.
04:11:36 <pikhq> That's... Literally it.
04:11:41 <archelliott> If you're sick of Debian I'd say give it a try. There's not really all that much *to* Arch as a distro, so it doesn't take more than a week or two to figure out if you like it.
04:12:00 <kallisti> archelliott: how does one get tired of Debian?
04:12:02 <archelliott> pikhq: So people on x86 have everything in funky directories? :p
04:12:05 <pikhq> Not so much "sick of" as "have a handful of annoyances at it".
04:12:36 <pikhq> archelliott: Actually, it's generally the 64-bit stuff that has to deal with that. Remember, /lib on x86-64 is /lib64.
04:12:55 <archelliott> kallisti: By noticing how fucking old everything is, even in testing. Or by realising that the freeze is really annoying.
04:13:17 <kallisti> "the freeze"?
04:13:27 <pikhq> kallisti: testing freezes for upcoming releases.
04:13:50 <archelliott> kallisti: testing stops getting updates for quite a while before a stable release.
04:14:02 <archelliott> You could use sid, but then your system is too broken to appreciate the rolling nature.
04:14:20 <archelliott> You could use sid + every available experimental package if you want to blow up a few computers.
04:14:26 <archelliott> Debian: it gives you choices.
04:14:32 <kallisti> sid = rolling release Debian?
04:14:50 <kallisti> lol im no0b
04:15:04 <archelliott> sid = the unstable repository.
04:15:08 <pikhq> sid = "THIS WILL BREAK"
04:15:12 <archelliott> Updates flow from experimental to unstable to testing to stable.
04:15:23 <archelliott> experimental can't boot; it's not a complete system.
04:15:31 <archelliott> unstable is always called sid, 'cuz it breaks things.
04:15:32 * kallisti picks that one.
04:15:32 <pikhq> The "experimental" bit is optional, IIRC.
04:15:40 <archelliott> testing is called whatever stable will be called next.
04:15:49 <archelliott> stable is named after Toy Story characters that aren't Sid.
04:15:53 <pikhq> Normally you just submit to unstable.
04:16:02 <archelliott> pikhq: Right, I thought that might be the case
04:16:26 <pikhq> experimental is for, e.g. testing a new X feature.
04:16:36 <pikhq> IIRC Wayland is in experimental.
04:16:41 <kallisti> or quantum teleporting.
04:17:13 <archelliott> pikhq: More Arch notes: It just uses BSD init, so... yeah. rc.d scripts are tedious to write, but at least they're fairly simple. And you configure things by modifying the DAEMONS array in /etc/rc.conf (a bash script!) rather than messing around with an inittab.
04:17:48 <archelliott> pikhq: Also there's /etc/conf.d for passing arguments and stuff to things that /etc/rc.d starts, so it's not as bad as it could be.
04:18:05 <pikhq> I seem to remember BSD init just being the default there. I distinctly remember them having runit packages, for instance...
04:18:06 <coppro> kim jong-il is dead
04:18:14 <kallisti> yes
04:18:18 <archelliott> Changing "defaults" to "noatime" in fstab is how you get noatime, right?
04:18:19 <archelliott> fstab scares me.
04:18:23 <archelliott> coppro: Neat!
04:18:38 <archelliott> Wasn't the kid he was grooming for dictator-in-waiting reluctant?
04:18:53 <coppro> Dunno
04:18:59 <coppro> his third son was to be his successor
04:19:05 <coppro> there was a bunch of speculation it would be his first
04:19:07 <archelliott> pikhq: There's packages for lots of things. But running anything but bsdinit is fairly impractical.
04:19:20 <coppro> who is a stuck-up self-indulgent prick from what I've heard
04:19:23 <coppro> so people were worried
04:19:26 <archelliott> pikhq: Every package comes with rc.d scripts, the rc.conf thing only works with bsdinit, etc.
04:19:29 <archelliott> coppro: Unlike Kim Jong-Il?
04:19:58 <archelliott> pikhq: There's a moderately large repository of systemd scripts and the like for it, but it's very much the path of least resistance just to use bsdinit.
04:20:17 <coppro> archelliott: Kim Jong-Il had a good understanding of his limitations, although he would do his very best to ensure that no one knew he had any
04:20:27 <pikhq> Meh, still better than SysV init.
04:21:02 <archelliott> coppro: Gonna go out on a limb and say that the people of North Korea are going to be starving even more than they are in the near future.
04:21:07 <coppro> and he wasn't a prick from what I heard
04:21:13 <coppro> archelliott: dunno. Also, arch?
04:21:27 <archelliott> coppro: He's a dictator, it's literally impossible for him not to be a prick by definition.
04:21:32 <archelliott> coppro: What about it?
04:21:43 <archelliott> pikhq: Hmm, is "defaults,noatime" really distinct from "noatime"?
04:21:44 <coppro> archelliott: for all I know his third son might be like "wtf are we doing guises, lets appease the west and destarve our country"
04:21:55 <coppro> archelliott: why are you arch all of a sudden?
04:22:29 <archelliott> coppro: Is his third son the one that was all jet-setting about Europe?
04:22:36 <archelliott> And because I'm using irssi from the console from an installation CD.
04:22:36 <coppro> archelliott: dunno
04:22:40 <coppro> ah
04:22:41 <archelliott> I didn't want to have to type my NickServ password.
04:22:43 <archelliott> I'm lazy.
04:25:36 <pikhq> archelliott: Dunno.
04:26:32 <archelliott> pikhq: Hmm, do you use noatime or relatime
04:27:09 <pikhq> I personally use relatime, as is default on recent Linux.
04:27:46 <archelliott> Oh, is it default?
04:27:48 <archelliott> With "defaults"?
04:28:10 <pikhq> Yeah.
04:28:16 <archelliott> Looks like I don't gotta do nothin'!
04:28:28 <archelliott> If there's one thing Arch has, it's a recent kernel :P
04:28:37 <pikhq> Seems ever since 2.6.30.
04:29:00 <pikhq> strictatime is necessary if you want the POSIX behavior.
04:29:33 <archelliott> pikhq: Oh, another Arch comment: What its installer calls "GRUB" is actually GRUB Legacy (the other option is syslinux); personally I use ext2 /boot + jfs / and GRUB Legacy.
04:29:45 <archelliott> Installing GRUB 2 manually is probably not worth the hassle just to avoid a /boot.
04:30:37 <pikhq> ATM it'd be a royal freaking pain for me to avoid a /boot.
04:30:54 <archelliott> Oh, you're one of those LVM crazies.
04:30:56 <pikhq> Yeah.
04:31:16 <pikhq> Unfortunately, it's a pain to resize an LVM physical volume.
04:31:27 -!- GreaseMonkey has joined.
04:32:00 <pikhq> And I've had this partition setup since before GRUB 2 was sane.
04:32:12 <archelliott> pikhq: Another Arch comment, then: Its wiki has very good in-depth discussion of software and its configuration, primarily on Arch. You'll probably want to read the LVM wiki page for installation details.
04:32:38 <archelliott> (It basically goes like "create partitions manually, and then make sure to flip all these switches in the config files the installer dumps you in".)
04:32:51 <archelliott> It has support for booting LVM OOTB, though, just needs enabling.
04:33:12 <archelliott> Welp, looks like I have enough partitions installed to reboot
04:33:16 <archelliott> See you on the other side
04:33:19 -!- archelliott has quit (Quit: Lost terminal).
04:33:41 -!- zzo38 has joined.
04:36:06 -!- elliott has joined.
04:36:07 <elliott> Hi.
04:36:48 <monqy> hi
04:36:58 <elliott> Hi.
04:37:47 <Sgeo> DEVICE=GENERAL.MDV
04:37:52 <elliott> hi
04:38:01 <Sgeo> No idea what that means, but that text is within one of these MIDI files
04:39:10 <elliott> pikhq: More Arch Comments(tm): The distro GHC package is good, but avoid the haskell-* packages, especially from AUR; they're mostly good-quality, and the majority of the AUR ones are built with profiling and shared library support, but the ones that are out of date or lack profiling bring the whole thing down; stick to manually-installed cabal-install etc.
04:39:49 <elliott> This is relevant to me, as my next task after installing Xorg is to install xmonad.
04:40:48 <elliott> pikhq: Oh! Another important thing: You'll want to avoid the "xorg" metapackage, it brings in way too much crap. xorg-server + the driver packages you need is far better.
04:40:51 <elliott> Aaaand that's it.
04:41:04 <elliott> (It depends on every driver that X.org upstream ships.)
04:47:24 * elliott installs that bastion of temporary window managers, twm.
04:47:50 * elliott also temporarily installs xterm to remove later.
04:49:07 <elliott> Woot! Things broke since the last time I did all this.
04:52:26 <elliott> pikhq: Why isn't my mouse working in X :(
05:00:40 <elliott> Well this sucks.
05:04:28 <elliott> pikhq: ;___;
05:04:49 -!- MDude has changed nick to MSleep.
05:05:28 <pikhq> "Gingrich said that, as president, he would abolish whole courts to be rid of judges whose decisions he feels are out of step with the country."
05:05:35 <pikhq> Is he trying to be the country's first dictator?
05:05:59 <elliott> SUUUURE JUST TALK ABOUT POLITICS, MY MOUSE IS HURT PERMANENTLY
05:07:38 <shachaf> Aw, I missed Arch-Elliott.
05:08:31 <elliott> He died because my FUCING MOUSE DOESN'T WORK.
05:08:33 <kallisti> elliott: do you know any good parser generators for Python? (particularly one that supports LR)
05:08:43 <elliott> kallisti: No.
05:08:47 <elliott> Nothing in Python is good.
05:09:15 <pikhq> Among decisions he is against: stopping public-school mandated prayer, anything supporting homosexuality.
05:09:26 <elliott> pikhq: I've even installed xf86-input-mouse ;_______________;
05:09:34 <elliott> ;____________________________________________________________________________________________________________________________________________________________________________________;
05:10:11 <kallisti> elliott: there's a package called Plex that mimics GNU Lex. Is this a good thing or a bad thing?
05:10:36 <pikhq> kallisti: There is no such thing as GNU Lex.
05:10:38 <elliott> kallisti: There's no program called "GNU Lex", and lex isn't a parser generator, so no.
05:10:53 <kallisti> oh Flex
05:11:06 <elliott> Which is not a GNU project.
05:11:25 <monqy> is there a pbison
05:11:31 <elliott> Pison.
05:11:43 <elliott> oerjan: yo fix my mouse thx
05:11:50 <monqy> ya(p)cc
05:12:20 <kallisti> monqy: there's pybison
05:12:30 <monqy> close enough
05:12:33 <monqy> pyson
05:12:43 <monqy> not that I support using it
05:12:50 <monqy> just it mihgt do what you want (badly)
05:12:52 <kallisti> PyBison is a YACC (Yet Another Compiler Compiler) style parser. PyBison was written by Scott Hassan in 1997 and almost disappeared.
05:12:55 <kallisti> sounds good.
05:13:12 <monqy> are parser combinators any good in python
05:13:13 <kallisti> A completely different PyBison can be found at (version 0.1.8 as of 2006-06-22):
05:13:14 <monqy> (canned laughter)
05:13:31 <kallisti> monqy: I'm having issues with them.
05:13:42 <elliott> just write a recursive-descent parser
05:13:47 <elliott> like a real finite state automaton
05:14:00 <elliott> monqy: WH;Y DOESNT MEMY NOUSE WORK!!!!!
05:14:08 <monqy> elliott: i forget..................
05:14:11 <elliott> pikhq: HELP
05:14:15 * elliott CRY
05:14:16 * elliott CRY
05:14:16 * elliott CRY
05:14:21 <kallisti> okay this version of pybison looks to be somewhat maintained and also has LALR support.
05:14:25 <monqy> elliott: i may or may not have had that probelm in the past, and i may or may not have solved it by using methods deprecated by now
05:14:29 <pikhq> elliott: Um. Look at /var/log/Xorg.0.log?
05:14:31 <monqy> elliott: i forget these things
05:15:04 <elliott> pikhq: I did. All the evdev lines pretty much go "ah yes, you have a USB keyboard! and a laptop keyboard! and a synaptics trackpad! (that one doesn't work to move the cursor, incidentally) and a power button!" and nothing about any mice.
05:15:22 <elliott> I've installed xf86-input-mouse and xf86-input-synaptics (just in case??? it's a USB mouse).
05:15:26 <elliott> No difference.
05:15:31 <elliott> And this "just worked" with udev previously...
05:16:31 <pikhq> elliott: Seems you want evdev?
05:16:44 <elliott> pikhq: Yes, I of course have xf86-input-evdev; the Xorg server depends on it.
05:16:50 <pikhq> Didn't realise.
05:16:53 <elliott> My (USB) keyboard works, just not my mouse :/
05:17:07 <pikhq> I'm at a loss.
05:18:44 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:18:46 <elliott> I... _suppose_ I could just soldier on to install xmonad and try and fix this afterwards, but I Don't Really Want To(tm).
05:20:15 <elliott> pikhq: If it helps any, nothing in /dev/input reacts to mouse movement.
05:20:27 <elliott> So I think this is a udev-level problem, and I have no idea how to fix those; there's no udev driver packages or anything.
05:20:38 <pikhq> Or missing kernel modules.
05:20:53 <elliott> For a bog-standard Microsoft USB mouse?
05:20:54 <pikhq> (which is *unlikely*, given you have the USB HID working)
05:21:03 <elliott> Hmm.
05:21:09 <elliott> Maybe the problem is that I haven't rebooted.
05:21:09 <pikhq> Yeah, that should just be a standard HID device.
05:21:20 <elliott> It could be that it activated my keyboard because, well, you always need a keyboard.
05:21:23 <elliott> But didn't bother with the mouse?
05:21:26 <elliott> Fuck it, I'd might as well try it.
05:21:27 -!- elliott has quit (Quit: leaving).
05:21:36 <pikhq> Which is supported by the *exact same module* as your keyboard.
05:21:52 -!- Sgeo has joined.
05:22:03 <Sgeo> Grrrr
05:22:05 <Sgeo> How long was I gone form
05:22:07 <Sgeo> *for
05:22:19 <monqy> it's been so long I've forgotten
05:22:39 -!- Jafet has quit (Quit: Leaving.).
05:23:02 <Sgeo> I do not feel like starting Timidity from the beginning
05:23:38 -!- elliott has joined.
05:23:44 <elliott> I have but one question to offer the world.
05:23:49 <elliott> WHY THE FUCK DID THAT WORK
05:24:08 <pikhq> Fuck if I know.
05:24:18 <elliott> WELCOME TO LINUX, EVERYBODY!!!
05:25:02 <elliott> I think Xorg has correctly detected that I have a high-PPI display, and twm is making its window titles appropriately over-chunky, but the problem is that all I have installed are bitmap fnots, so it has a tiny little title looking ridiculous in the middle of a ginormous frame.
05:25:06 <elliott> *fonts
05:26:57 <elliott> Huh. 96x96 dots per inch.
05:27:05 <elliott> I guess twm just wanted to draw some big borders?
05:27:38 <shachaf> elliott: How's your mouse?
05:27:42 <elliott> Working.
05:27:44 <shachaf> Aw.
05:27:47 <shachaf> I was about to fix it.
05:27:54 <elliott> > fix mouse
05:27:55 <lambdabot> Not in scope: `mouse'
05:27:59 <elliott> You can't.
05:28:13 <shachaf> Your mouse isn't in my scope?
05:28:27 <elliott> Yes, precisely.
05:28:58 -!- elliott has quit (Quit: Lost terminal).
05:30:00 -!- elliott has joined.
05:30:03 -!- elliott has quit (Changing host).
05:30:03 -!- elliott has joined.
05:30:06 <elliott> pikhq: What's the Best Terminal?
05:30:33 <shachaf> elliott: urxvt
05:30:36 <shachaf> Obviously.
05:30:45 <shachaf> (Actually urxvt is just OK.)
05:31:00 <elliott> shachaf: Yes, I know a lot of just OK terminals. Such as urxvt, and gnome-terminal.
05:31:05 <elliott> I was hoping there might be something better.
05:31:34 <elliott> (My main complaints with urxvt are (a) you need extra shit just for it to recognise URLs and (b) you can't get a scrollbar with both works nicely and doesn't look awful.)
05:33:28 <shachaf> > fix (elliott's.mouse) now
05:33:29 <lambdabot> working (elliott's.mouse)
05:33:45 <shachaf> elliott: You should write a terminal TO END ALL TERMINALS.
05:33:45 <elliott> Yay!
05:33:53 <elliott> shachaf: I've considered it, like, twice.
05:34:04 <elliott> But it's one of the most boring, most difficult, and least rewarding NIHings possible.
05:34:11 <shachaf> elliott: Linux started as a terminal emulator, you know.
05:34:16 <shachaf> Your pet OS is next!
05:34:23 <elliott> shachaf: And look where that got it!
05:34:25 <elliott> A Unix clone!
05:34:32 <elliott> A *bad* Unix clone!
05:34:53 <shachaf> (*bad* Unix) clone or *bad* (Unix clone)?
05:35:04 <shachaf> elliott: Also, the fact that you can install a thing to make URL recognition work is *good*.
05:35:06 <elliott> The former is redundant.
05:35:11 <shachaf> Rather than being one monolithic package that does things.
05:35:41 <shachaf> Modularity should be encouraged. It's not a terminal emulator's job to recognitionalise URLs.
05:35:50 <elliott> shachaf: Well, perhaps. I think on the list of software I urgently desire to be modular, terminals are very low down. And modularity has a large up-front cost in complexity on Unix, so making it modular and writing an addon usually has way less payoff than just writing the code directly.
05:36:09 <elliott> I like modularity, but half of @'s schtick is that Unix is basically fundamentally non-composable, so... yeah.
05:36:17 <elliott> That's an Opinion I Hold.
05:36:32 <shachaf> elliott: urxvt uses Perl for modularity, and Perl is fundamentally un-UNIXy.
05:36:40 <shachaf> So you should be happy.
05:36:46 * shachaf is glad that @ is going to wind up like Perl.
05:37:02 <elliott> On the contrary, it's the latest in a proud Unix heritage line of being fundamentally un-UNIXy.
05:37:13 <elliott> I believe dd was in the initial Unix; or was it find?
05:37:59 <shachaf> Apparently dd was in Version 7 Unix.
05:38:00 <shachaf> Weird.
05:38:27 <Sgeo> Is there anything bad about dd other than the if= and of=?
05:38:31 <elliott> It was, like, Unix 8-10 where they started realising they had a mountain of cruft and tried to reduce it.
05:38:35 <elliott> Then they threw it all out and started again.
05:38:50 <elliott> Sgeo: Well, apart from its invocation syntax being incredibly un-UNIXy, its entire functionality is that.
05:38:55 <shachaf> Plan 9 is the ultimate OS. There's no way @ can beat Plan 9.
05:39:09 <elliott> It bundles diverse features such as character-set conversion, skipping bytes, etc. into a monolithic tool.
05:39:24 <elliott> (Note: Unix is actually fairly composable at the base level, if you're operating on streams of bytes.)
05:39:31 <elliott> (Unfortunately, most things aren't streams of bytes.)
05:39:47 <shachaf> EVERYTHING IS STREAMS OF BYTES. with newlines
05:39:51 <elliott> shachaf: I like Plan 9 a lot, but if it were true to its convictions, it wouldn't have a C compiler.
05:40:12 <elliott> After all, if everything is a file, then rc should be an incredibly expressive programming language for the environment.
05:40:18 <elliott> (Given a compiler.)
05:40:33 <elliott> And if strings are the best data structure, well... rc, man! It just has strings.
05:40:39 <elliott> Also lists of strings, but everyone makes concessions for practicality.
05:41:34 <shachaf> What about lists of lists of strings?
05:41:42 <elliott> rc doesn't have those.
05:41:52 <shachaf> What about lists of lists of lists of strings?
05:41:56 <elliott> It's like Perl; ($a $b) concatenates $a and $b.
05:41:59 <Sgeo> This song is like a rock Ode to Joy or something
05:42:01 <elliott> shachaf: Yes, of course it has those. (No.)
05:42:07 <elliott> Sgeo: That's the worst thing you've ever said.
05:42:28 <shachaf> elliott: Aw. My working hypothesis was that it had them for odd-numbered repetitions of "lists of".
05:42:39 <elliott> shachaf: Prime, actually.
05:42:45 <elliott> It's more efficient.
05:42:55 <Sgeo> http://daychilde.com/midiguy/87197438.mid
05:43:00 <shachaf> Prime numbers like 1, and unlike 2.
05:43:08 <shachaf> Maybe it's only for numbers that are ∈ {1,5}.
05:43:10 <elliott> I am so glad I can't click links right now.
05:43:16 <shachaf> What about lists of lists of lists of lists of lists of strings?
05:43:21 <elliott> Maybe that's a blessing in disguise of rxvt.
05:43:23 <elliott> shachaf: Only on Sundays.
05:43:27 <elliott> pikhq: WHAT BEST TERMINAL
05:43:30 <shachaf> elliott: By the way, I can't click links at all.
05:43:38 <shachaf> Or, rather, I don't.
05:43:46 <Sgeo> I love this
05:43:50 <shachaf> elliott: When I see a link I copy it into my browser's URL bar.
05:43:57 <elliott> shachaf: By clicking it to select it.
05:43:59 <elliott> Q.E.Z.
05:44:03 <shachaf> elliott: This is because clicking a link doesn't open it in Chrome's Incognito Mode.
05:44:21 <Sgeo> shachaf, what do you think of this .mid?
05:44:29 <shachaf> Sgeo: Can't listen to audio here.
05:44:32 <Sgeo> Aww
05:44:40 <shachaf> Nor do I want to listen to "like a rock Ode to Joy or something"
05:45:03 * elliott is going to write the best song ever and it's going to be called "Like a rock Ode to Joy or something".
05:45:08 <elliott> AND THEN SHACHAF WILL RUE THE DAY HE SAID THOSE WORDS.
05:45:45 * shachaf kangas the day.
05:46:02 <shachaf> elliott: What date was your birthday, by the way?
05:46:02 <elliott> Kangarue is not a thing, shachaf.
05:46:14 <shachaf> elliott: Kangarue is totally a thing!
05:46:17 <elliott> And instead of answering that, I'm going to install urxvt.
05:46:20 -!- elliott has quit (Quit: doop).
05:47:52 <shachaf> @tell elliott Imagine if your computer supported multitasking so you could run the "install urxvt" program at the same time as the "don't-want-to-be-overheard-hacker-talk" program.
05:47:52 <lambdabot> Consider it noted.
05:48:22 -!- elliott has joined.
05:48:34 <zzo38> Consider it noted.
05:48:38 <Sgeo> It seems to be called "End of the Century"
05:48:46 <elliott> Targets (34): atk-2.2.0-1 cairo-1.10.2-2 libdatrie-0.2.5-1 libthai-0.1.16-1 pango-1.29.4-1 libxcursor-1.1.12-1 randrproto-1.3.2-1 libxrandr-1.3.2-2 libxml2-2.7.8-1 shared-mime-info-0.91-1 libtasn1-2.9-1 nettle-2.4-1 p11-kit-0.9-1 gnutls-3.0.9-1 libdaemon-0.14-1 dbus-1.4.16-1 avahi-0.6.30-6 libcups-1.5.0-1 gtk-update-icon-cache-2.24.8-2 gtk2-2.24.8-2 dbus-glib-0.98-1
05:48:46 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
05:48:52 <elliott> nspr-.8.9-2 sqlite3--3.7.9-1 nss-3.12.11-3 alsa-lib-1.0.24.1-1 xorg-xset-1.2.2-1 xdg-utils-1.1.0rc1-3 libevent-2.0.16-1 scrnsaverproto-1.2.1-1 libxss-1.2.1-1 ttf-dejavu-2.33-1 desktop-file-utils-0.18-1 hicolor-icon-theme-0.12-1 chromium-16.0.912.63-1
05:48:53 <zzo38> Consider it noted backward by mistake.
05:48:56 <elliott> Look at these fucking dependencies.
05:48:59 <elliott> How many dependencies can one program have?!
05:49:10 <elliott> It is like THE INFINITE UNENDING DEPENDENCY CHAIN. Not hyperbolic in the slightest.
05:49:13 <elliott> Actually they're not all that bad.
05:49:19 <elliott> But it looks so long in this tiny terminal.
05:49:22 <elliott> Must be the bitmap font.
05:49:34 <elliott> @messages
05:49:35 <lambdabot> shachaf said 1m 43s ago: Imagine if your computer supported multitasking so you could run the "install urxvt" program at the same time as the "don't-want-to-be-overheard-hacker-talk" program.
05:49:37 <Sgeo> http://www.youtube.com/watch?v=JW4cNIFpBzQ
05:49:51 <elliott> shachaf: I was using the console, man! I had like 6 tasks.
05:49:55 <elliott> Max.
05:49:59 <elliott> Can't waste those buggers.
05:50:05 <shachaf> elliott: Also, did you know about xpra?
05:50:08 <elliott> You know, twm isn't really all that bad.
05:50:11 <elliott> shachaf: What's that?
05:50:16 <shachaf> Like screen for X11.
05:50:17 <elliott> I don't have a usable browser yet.
05:50:21 <shachaf> Detach/attach etc.
05:50:23 <elliott> shachaf: So, a tiling window manager?
05:50:24 <elliott> Oh.
05:50:28 <elliott> Ah, I think so, yes.
05:50:30 <elliott> If it's the one I'm thinking of.
05:50:39 <shachaf> Are you thinking of xpra?
05:50:41 <shachaf> If so, yes.
05:50:43 <elliott> I don't use remote X programs, though.
05:50:44 <shachaf> If not so, no.
05:50:46 <elliott> That way lies madness.
05:50:56 <shachaf> elliott: So what? This is also helpful if you restart your X server
05:51:13 <elliott> OK, point. Does that actually work with a reparenting window manager?
05:51:25 <elliott> Though I don't know that xmonad is actually reparenting.
05:51:55 <elliott> Also, can it be configured to just detach everything, or would I have to code up some shaky loop for the purpose? Still, I don't restart X often.
05:52:04 <elliott> X crashes a lot, but usually because of other programs misbehaving.
05:52:30 <shachaf> elliott: It works like screen. When your X session dies, the programs don't.
05:52:34 <shachaf> Then you can reättach.
05:53:40 <elliott> http://ompldr.org/vYnQ2Zg
05:53:50 * elliott is the only twm + chromium user in the universe.
05:54:00 <shachaf> elliott: Delete that screenshot. :-(
05:54:11 <shachaf> I guess you can't.
05:54:15 * shachaf doesn't like being screenshot.
05:54:28 <elliott> shachaf: I specifically picked ompldr because they last forever, unlike imgur, too.
05:54:39 <elliott> Your words are recorded FOREVER in a screenshot in some logs right after you say them.
05:54:55 <shachaf> imgur doesn't last for the ever?
05:55:19 <elliott> It used to, but then it started pushing terabytes of bandwidth per time interval.
05:55:32 <shachaf> elliott: So you're using Arch?
05:55:36 <elliott> Yes.
05:55:56 <elliott> Yes! An easy Stack Overflow question! All I need is, um, a Haskell compiler and a wnidow manager I don't loathe.
05:55:56 <shachaf> Is it good?
05:56:01 <elliott> shachaf: I just answered that at length!
05:56:10 <shachaf> I missed that.
05:56:40 <elliott> http://codu.org/logs/log/_esoteric/2011-12-19#040655archelliott
05:57:06 <shachaf> "I'm preferring it to Debian so far because it updates much, much quicker, and the low-patch, manual-configuration nature is what it is."
05:57:32 <shachaf> "updates" in the sense of "apt-get update"?
05:57:47 <shachaf> Or in the sense of upgrades? Doesn't it compile things on upgrades?
05:57:48 <elliott> In the sense of "new upstream versions being uploaded to the repositories".
05:57:54 <elliott> And no, Arch is a binary distribution.
05:57:55 <shachaf> Oh, *that* sense.
05:58:00 <shachaf> It's a binary distribution?
05:58:04 <elliott> Yes.
05:58:07 <elliott> i686 and x86-64.
05:58:10 <shachaf> Exclusively?
05:58:19 <shachaf> Didn't it use to be source-based?
05:58:23 <elliott> Well, you can download the package repos and "makepkg" and all that.
05:58:24 <elliott> shachaf: No.
05:58:31 <shachaf> Weird.
05:58:48 <pikhq> shachaf: In a sense it's source-based, in that you can use it that way if you really want.
05:59:06 <pikhq> But, this is not at all how it's meant to be used.
05:59:36 <shachaf> > comparе "Arch" "Gentoo"
05:59:38 <lambdabot> EQ
05:59:39 <shachaf> Hmm.
05:59:42 <elliott> Okay, I really need to get xmonad running, this is unbearable.
05:59:53 <elliott> I can't bear it because I am not a bear.
06:00:04 <shachaf> Maybe I'll install the Archlinux sometime.
06:00:27 <elliott> But it's still on GHC 7.0.3! Admittedly 7.2.2 is in [testing].
06:01:00 <elliott> INSTALL QUICKER YOU STUPID THING, I HAVE A STACKOVERFLOW QUESTION TO ANSWER.
06:01:05 <elliott> While learning to use a new window manager!
06:01:08 <elliott> The BEST TIME to do anything.
06:01:09 <shachaf> elliott: Didn't you hear, you can get GHC 7.5 nowadays?
06:01:16 * elliott uses GHC 8.
06:01:25 <elliott> It's like GHC 7 but I hex-edit the binary to say 8.
06:01:26 <shachaf> > round 7.5
06:01:27 <lambdabot> 8
06:01:36 * elliott uses GHC @.
06:01:45 <shachaf> elliott: You should oct-edit the binary instead of hex-editing it.
06:02:01 <elliott> shachaf: @ actually stores files in octal instead of hex form.
06:02:04 <elliott> True Fact(tm)
06:02:16 <elliott> It's one better.
06:02:17 * shachaf >>= undefined
06:02:27 <elliott> And, um, 8 less.
06:02:30 <elliott> No wait, 9.
06:02:34 <elliott> 9 less and one better.
06:02:39 <elliott> If I remember how arithmetic works today.
06:03:25 <zzo38> What... store files in octal instead of hex form? That should be a function of the hardware instead of the software isn't it? And anyway it store file in 8-bits in 1 byte form.
06:05:05 <elliott> Time to install xmonad and all its dependencies.
06:10:31 -!- elliott has quit (Quit: leaving).
06:11:15 <oerjan> :t comparе
06:11:15 <lambdabot> Not in scope: `compar'
06:11:22 <oerjan> funny guy
06:11:42 -!- elliott has joined.
06:12:03 <Sgeo> o.O
06:12:07 <Sgeo> :t id
06:12:08 <lambdabot> forall a. a -> a
06:12:11 <elliott> TODO: Get urxvt using a reasonable font, learn enough xmonad to use it well enough to write this SO question.
06:12:11 -!- Jafet has joined.
06:12:11 <Sgeo> :t compare
06:12:12 <lambdabot> forall a. (Ord a) => a -> a -> Ordering
06:12:14 <elliott> *answer.
06:12:20 <Sgeo> Oh, shenanigans>?
06:12:24 <Sgeo> :t compare
06:12:25 <lambdabot> lexical error at character '\SI'
06:12:37 * Sgeo fails at shenanigans
06:12:54 -!- elliott has quit (Client Quit).
06:16:44 <Sgeo> kallisti, monqy update
06:16:52 <monqy> sgeo........................
06:17:40 * kallisti has no idea what to do.
06:18:08 <kallisti> should I keep using this parser combinator thing and attempt to hack it to not hit max stack depth
06:18:24 -!- elliott has joined.
06:18:25 <kallisti> or should I switch to pybison which uses flex/yacc
06:18:32 <monqy> hitting max stack depth? ahahahah
06:18:36 <elliott> Okay, this is starting to get reasaonable.
06:19:01 <monqy> have you disabled the thingy that changes focus when you mouseover windows? that's the first thing to disable
06:19:03 <Sgeo> elliott, update
06:19:08 <elliott> monqy: Seriously?
06:19:11 <elliott> That's great with a tiling W<.
06:19:12 <elliott> WM.
06:19:22 <monqy> ehh, I dislike it
06:19:33 <monqy> I usually just do the keyboard thing
06:19:41 <Sgeo> monqy, should I not ping you on update?
06:20:25 <monqy> I was going to write something about the feeling of hopelessness and entrapment when sgeo calls out your name and whispers "update" but then I decided not to
06:20:41 <monqy> because kallisti had said another thing that ruined it
06:20:46 <monqy> or would have
06:20:48 <monqy> if I had written it
06:21:07 <oerjan> sweet sweet taste of despair. or is that blood.
06:21:44 <kallisti> elliott: can I interpret PEG to mean "allows left recursion"?
06:21:56 <Sgeo> monqy, monqy update regarding opinion of update
06:21:56 <kallisti> oh, no.
06:21:58 <kallisti> no I cannot.
06:22:22 <monqy> sgeo............................
06:23:35 * Sgeo should stop
06:23:49 <kallisti> http://www.seehuhn.de/pages/wisent this might be good? I can't tell if it's being maintained though.
06:24:21 <elliott> god, I hope that guy just gives me the bounty so I don't have to answer this thing
06:24:50 <Sgeo> bounty?
06:24:55 <elliott> stack overflow
06:25:04 <Sgeo> Stack Overflow has bounties?
06:25:09 <kallisti> Sgeo: elliott is playing stack overflow: the game
06:25:10 <elliott> yes
06:25:50 <kallisti> maybe I should start directing my questions to stack overflow with the hope that elliott will actally answer them that way.
06:25:57 <elliott> that would work
06:26:35 <elliott> :t do { x <- (+); return x }
06:26:36 <lambdabot> forall a. (Num a) => a -> a -> a
06:26:44 <elliott> :t do { x <- (+); y <- (-); return (x+y) }
06:26:45 <lambdabot> forall a. (Num a) => a -> a -> a
06:26:53 * shachaf return
06:27:21 * kallisti >>=
06:27:49 * oerjan traverse
06:27:57 * monqy
06:28:28 <kallisti> the fabled monqy combinator.
06:29:15 * elliott removes xev, xdpyinfo and twm to feel more hardcore.
06:29:26 <kallisti> it automatically determines the appropriate use of punctuation and case for any strings within an arbitrary function.
06:29:37 <Sgeo> > ($5) . ($5) $ do { x <- (+); y <- (-); return (x+y) }
06:29:38 <lambdabot> 10
06:30:01 <elliott> Cool, if I click on the red border of Chromium, I get
06:30:02 <elliott> [4385:4385:4059690450:ERROR:browser_main.cc(146)] Gdk: IA__gdk_window_get_events: assertion `GDK_IS_WINDOW (window)' failed
06:30:05 <elliott> [4385:4385:4059690513:ERROR:browser_main.cc(146)] GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
06:30:08 <elliott> [4385:4385:4059762607:ERROR:browser_main.cc(146)] GLib-GObject: g_object_unref: assertion `G_IS_OBJECT (object)' failed
06:30:11 <elliott> in my chromium-running terminal.
06:30:24 <kallisti> exciting
06:30:31 <monqy> the trick is to ignore the terminal or don't have one
06:30:40 <elliott> It's a temporary solution!
06:30:43 <kallisti> conclusion: the red border of Chromium is neither a window nor an object
06:30:53 <shachaf> elliott: Are you running xmonad now?
06:30:57 <elliott> monqy: Wow, tell me there's a way to get mouse events to the border of a window to go inside it.
06:31:05 <elliott> I can't shoot my mouse to the top of the window and use the scroll wheel to select tabs in Chromium.
06:31:08 <elliott> That's my *lifeline*.
06:31:20 <monqy> i don't knowww :(
06:31:45 <elliott> Major TODO: Get font rendering not looking like shit, get urxvt not looking like shit.
06:32:00 <kallisti> urxvt
06:32:15 <kallisti> sheesh, people think they can just use any combination of characters to name something.
06:32:25 <shachaf> elliott: Is this xmonad?
06:32:40 <elliott> kallisti: Our X11 virtual terminal, Unicode.
06:32:43 <elliott> shachaf: Yes.
06:32:45 <elliott> shachaf: Why?
06:33:09 <shachaf> If your Chromium window is the only one visible, you can use SmartBorders.
06:33:35 <elliott> Well, it isn't, but it will be once I get a workspace setup I like.
06:33:43 <elliott> The setup will probably involve one workspace per application, dynamically allocated.
06:33:54 <elliott> Well, for most things, anyway.
06:34:07 <kallisti> like alt-tabbing, but better.
06:34:20 <elliott> kallisti: I would use dmenu or such to switch.
06:34:23 <elliott> That's much better than alt-tab.
06:35:03 <elliott> shachaf: "I upgraded Haskell over the weekend." Is it okay to be annoyed at statements like this?
06:35:14 <elliott> It's worse because the Haskell Platform folks actively promote it.
06:35:21 <elliott> "Download Haskell", fuck you.
06:35:27 <shachaf> elliott: Not if you're Simon Peyton Jones and Haskell 2010 was released.
06:35:28 <kallisti> I have the opposite approach in that I typically don't maximize windows and instead have many small windows everywhere. So I'd probably used a lot of tiled windows (shocking)
06:35:36 <elliott> shachaf: :-D
06:35:39 <pikhq> shachaf: :)
06:35:51 <pikhq> Otherwise, "I upgraded C"
06:35:53 <pikhq> *groan*
06:36:06 <elliott> -- dmr, RIP.
06:36:20 <pikhq> :'(
06:37:07 * kallisti upgraded IRC
06:37:11 <kallisti> it's now based on XML.
06:38:11 <pikhq> And called "Jabber".
06:38:14 <zzo38> Could it be possible to make the ReadthisT transformer going backward?
06:38:56 <elliott> shachaf: You may be interested in: https://wiki.archlinux.org/index.php/Rxvt-unicode#Yankable_URLs_.28No_Mouse.29
06:39:00 <zzo38> Or any of my other transformers?
06:41:08 <kallisti> Å
06:42:05 <shachaf> elliott: I am aware of that extension's existence.
06:42:07 <zzo38> newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; lift = ReadthisT . const; fmap f = ReadthisT . (fmap f .) . runReadthisT; join (ReadthisT x) = ReadthisT (\y -> x y >>= ($ (() <$ (y >> x y))) . runReadthisT);
06:42:14 * elliott restarts X.
06:42:24 -!- elliott has quit (Quit: Lost terminal).
06:44:24 <oerjan> http://www.reddit.com/r/programming/comments/ngngc/the_haskell_platform_20114_is_now_available/c39140r
06:48:45 -!- elliott has joined.
06:48:46 -!- elliott has quit (Changing host).
06:48:46 -!- elliott has joined.
06:48:58 <elliott> Does anyone know how to get fontconfig to tell me what its configuration is?
06:49:12 <kallisti> at first I read that URL to say "the haskell platform 2014 is now available"
06:49:14 <kallisti> already?
06:49:43 <oerjan> kallisti: they're clearly merging feather into the type system.
06:50:39 <oerjan> repetition just for elliott: http://www.reddit.com/r/programming/comments/ngngc/the_haskell_platform_20114_is_now_available/c39140r
06:52:28 -!- elliott_ has joined.
06:52:31 -!- elliott_ has quit (Changing host).
06:52:31 -!- elliott_ has joined.
06:52:55 <elliott_> oerjan: What #haskell needs is an offshoot, #cale-patiently-explaining-haskell-to-morons. It's a good public service, it's just incredibly frustrating to watch :P
06:53:16 -!- elliott has quit (Ping timeout: 245 seconds).
06:53:54 <elliott_> "Do I still need a graduate degree in category theory in order to print to a log file?"
06:54:01 <elliott_> This reminds me! I should not read /r/programming.
06:54:27 <elliott_> shachaf: Do you know the horror that comes from your tab titles being subpixel-antialiased with a subtly but noticeably different algorithm from the page content?
06:54:38 <elliott_> I have failed to replicate my fontconfig rules in Xresources. :(
06:54:52 <kallisti> elliott_: don't you know that writing to log files is what Real Programmers do?
06:55:10 <kallisti> I'm writing to a log file right now. It's so legitimate.
06:56:36 <elliott_> "Trolling aside:
06:56:37 <elliott_> I'm someone who loved programming in ML (predecessor of Haskell) in college but still has the worldview that user interaction, file handling/writing/reading, UI and such stuff is hard to do in functional languages without it feeling forced/backwards.
06:56:40 <elliott_> "
06:56:43 <elliott_> It's funny because they said "trolling aside".
06:57:03 <elliott_> "Eh.
06:57:03 <elliott_> My brain tried hard at Haskell.
06:57:03 <elliott_> I did not grok it.
06:57:03 <elliott_> I also do not understand Monads. The little I understand is that they seem to describe some mystic, arcane concepts which only those within the circle understand.
06:57:05 <oerjan> <elliott_> This reminds me! I should not read /r/programming. <-- hey i only pointed you at that one subthread
06:57:06 <elliott_> "
06:57:09 <elliott_> sadfjkghl
06:57:11 <elliott_> I am closing this tab now.
06:57:26 <elliott_> You know, we should convert all our monads into arrows just so people stop fucking saying that.
06:58:28 <Sgeo> My Haskell-tainted mind made me write a PHP function differently from the way I was going to do it
06:58:35 <kallisti> :t sort
06:58:36 <lambdabot> forall a. (Ord a) => [a] -> [a]
06:58:38 <Sgeo> I returned a string instead of just echoing
06:58:38 <kallisti> @src sort
06:58:38 <lambdabot> sort = sortBy compare
06:58:43 <monqy> Sgeo: oh no
06:58:45 <elliott_> It's not the Haskell mind virus, it's the Haskell mind helper.
06:58:53 <kallisti> @src sortBy
06:58:54 <lambdabot> sortBy cmp = foldr (insertBy cmp) []
06:59:10 <kallisti> wat
06:59:31 <elliott_> Insertion sort? Nice.
06:59:33 <elliott_> Not what GHC uses, though.
06:59:42 <kallisti> I would have expected something bet-- oh
06:59:51 <elliott_> "@src" sucks bigtime.
06:59:56 <kallisti> yeah I've gathered.
06:59:59 <Sgeo> @src elliott_
06:59:59 <lambdabot> Source not found. You type like i drive.
07:00:26 <elliott_> pikhq: Hey, how do you set the cursor in X? I have an X rather than a pointer.
07:00:27 <oerjan> kallisti: ghc uses mergesort
07:00:31 <kallisti> elliott_: granted I believe it was written with the purpose of helping newbies, and not as a tool for people who want to actually know what the source code looks like in GHC.
07:00:42 <elliott_> kallisti: Well, it's not even GHC, it's just base.
07:00:44 <kallisti> oerjan: any particular reason why mergesort is preferred to quicksort?
07:00:51 <elliott_> But it's a mix of the Report, random shit, and missingness.
07:00:54 <elliott_> kallisti: Quicksort sucks on linked lists.
07:01:03 <kallisti> ah okay.
07:01:04 <elliott_> Quicksort also has terrible worst-case behaviour compared to mergesort.
07:01:10 <kallisti> that makes sense.
07:01:10 <elliott_> Also, quicksort sucks when you're not mutating.
07:01:15 <kallisti> yeah
07:01:16 <elliott_> In fact I wouldn't call it "quicksort" if it didn't mutate.
07:01:25 <kallisti> right.
07:01:35 * elliott_ has no idea why quicksort is so vastly overrated.
07:01:50 <elliott_> Maybe it's because it has "quick" in the name.
07:01:51 <Sgeo> Most languages are fine with mutation?
07:01:57 -!- zzo38 has quit (Quit: When the executioner goes to the cell, he finds out that the prisoner's brains have been replaced by silver money. So now he has no job, but at least he can still get paid by stealing the money.).
07:02:01 <kallisti> elliott_: well it does have better constant factors doesn't it?
07:02:10 <elliott_> Sgeo: Mergesort is preferable even with mutation.
07:02:14 <elliott_> kallisti: Citation needed.
07:02:29 <elliott_> I think mergesort can be slightly slower on tiny lists, but that's the most I've heard.
07:02:30 <kallisti> elliott_: does my data structures class count as a source?
07:02:43 <elliott_> No, your university sounds terrible.
07:02:44 <kallisti> maybe they Lied to me.
07:02:56 <Sgeo> Can't be worse than mine
07:03:02 <oerjan> kallisti: http://www.haskell.org/ghc/docs/latest/html/libraries/index.html is where i usually go to look up base code
07:03:33 <oerjan> hoogle also gives source links
07:03:43 <kallisti> elliott_: you can Wikipedia as well as I can.
07:03:45 <elliott_> oerjan: http://hackage.haskell.org/package/base
07:03:46 <elliott_> Get with the program.
07:04:31 <kallisti> :t insertBy
07:04:32 <lambdabot> forall a. (a -> a -> Ordering) -> a -> [a] -> [a]
07:04:47 <kallisti> :t insert
07:04:48 <lambdabot> forall a. (Ord a) => a -> [a] -> [a]
07:04:56 <kallisti> I'm guessing insert is... (<) sorted insert?
07:05:07 <kallisti> > insert 3 [1,2,4,5]
07:05:08 <elliott_> > insert 42 [1,2,3,4,999]
07:05:08 <lambdabot> [1,2,3,4,5]
07:05:09 <lambdabot> [1,2,3,4,42,999]
07:05:28 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:06:17 <kallisti> @pl (\x y -> 1)
07:06:17 <lambdabot> const (const 1)
07:06:22 <kallisti> ah, yes.
07:07:03 <elliott_> shachaf: How do I get a thing showing which workspace I'm on? Is that part of the dzen2/xmobar/so on so forth clique?
07:07:12 <kallisti> > insertBy (const (const GT)) 4 [1,6,23,6,4,7,2]
07:07:13 <lambdabot> [1,6,23,6,4,7,2,4]
07:07:51 <kallisti> that's totally a thing you'd want to do, btw.
07:08:56 <elliott_> I'm using irssi. I should stop using irssi.
07:09:16 <oerjan> NEVER
07:09:22 <elliott_> shachaf: FreeBSD? Seriously?
07:14:21 -!- elliott_ has quit (Quit: Lost terminal).
07:19:19 <shachaf> @tell elliott The server I run my IRC client on runs FreeBSD, yes.
07:19:19 <lambdabot> Consider it noted.
07:19:49 <shachaf> @tell elliott "Is that part of the dzen2/xmobar/so on so forth clique?" Yes.
07:19:50 <lambdabot> Consider it noted.
07:21:42 -!- elliott has joined.
07:21:44 -!- elliott has quit (Changing host).
07:21:44 -!- elliott has joined.
07:21:49 <elliott> dzen or xmoadbar??? CAST YOUR VOTES.
07:21:49 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
07:22:00 <shachaf> elliott: dzen
07:22:05 <elliott> WHY.
07:22:05 <fizzie> I vote for taffybar, just to be different.
07:22:15 <kallisti> > sort [1000..1]
07:22:15 <shachaf> elliott: I find xmobar strongly distasteful.
07:22:16 <lambdabot> []
07:22:16 <elliott> I ALREADY KNOW YOU USE DZEN YOU CANNOT FOOL ME FIZZIE.
07:22:20 <kallisti> oh rite
07:22:24 <kallisti> > sort [1000,999..1]
07:22:24 <elliott> shachaf: OK WHY
07:22:25 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
07:22:30 <fizzie> elliott: Sure, but it's not like I should practice what I preach.
07:22:34 <elliott> All I remember is looking at the webpage and going (a) "oh, this seems simple" (b) I wonder why it's using types like that.
07:22:39 <kallisti> > sort [10000,999..1]
07:22:39 <shachaf> elliott: Also, I used xmonad-inside-GNOME once with gnome-panel.
07:22:39 <lambdabot> [999,10000]
07:22:42 <kallisti> lol
07:22:45 <kallisti> > sort [10000,9999..1]
07:22:45 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
07:22:56 <elliott> shachaf: fizzie does that, I think.
07:23:00 <elliott> He's ``weird''.
07:23:14 <fizzie> I do that, but I've only got indicator-applets and a systray in the gnome-panel.
07:23:19 <shachaf> elliott: Anyway, everything I've seen of xmobar has made me not like it.
07:23:28 <fizzie> I have those dzen panels for workspace indicators and window title, one per monitor.
07:23:28 <shachaf> Including the name -- trying to make itself look "official" and all.
07:23:59 <elliott> shachaf: What have you seen that isn't the name?
07:24:06 <fizzie> I vaguely recall that gnome-panel's workspace switcher was all strange-looking for this dual-monitor uses-IndependentScreens setup.
07:24:09 <shachaf> Whereas dzen has many flaws but at least it's simple-ish.
07:24:33 <elliott> dzen does xft, right? Just checking.
07:24:45 <shachaf> elliott: Some of the code, problems that people have complained about in IRC, the configuration file, a couple of specific modules, and the author talking about it back when the author was around.
07:24:52 <fizzie> It does xft, though I think the version that was in Ubuntu 11.04 didn't.
07:25:05 <fizzie> Don't know about 11.10.
07:25:09 <elliott> shachaf: Hmm, what such complaints? (What about the author?)
07:25:11 <elliott> This is a SERIOUS DECISION.
07:25:14 <shachaf> There exists a version of dzen that does xft.
07:25:15 <elliott> Gotta be in possession of ALL THE FACTS.
07:25:18 <shachaf> elliott: Look, this was years ago.
07:25:22 <shachaf> I haven't run xmonad in more than a year.
07:25:26 <elliott> xmobar is years old?
07:25:31 <shachaf> Yes.
07:25:42 <elliott> Wait, so is the NEW WAVE OF FADDISH TILING WMS.
07:25:47 <elliott> I'm old.:/
07:26:02 <elliott> Oh, the maintainer has a @gnu.org address.
07:26:05 <elliott> I'll go with dzen.
07:26:07 <shachaf> You think *you're* old?
07:26:14 <shachaf> How do you think *I* feel?
07:26:23 <fizzie> The http://dzen.googlecode.com/svn/trunk version does xft.
07:26:27 <elliott> shachaf: Older.
07:26:52 <shachaf> xmobar was released no later than Jun 2007.
07:27:13 <elliott> So what are dzen's many flaws?
07:27:23 <shachaf> It's limited.
07:27:33 <shachaf> People get around this by running multiple instances and arranging them just right.
07:27:40 * elliott was mostly considering xmobar because of seeing ezyang's blog post about making it semi-transparent somewhere.
07:27:45 <elliott> Not that I want a semi-transparent bar thing.
07:27:48 <elliott> It just looked nice.
07:27:51 <shachaf> elliott: Also, XFT IS EVIL FIGHT THE ANTIALIASING CONSPIRACY USE ION3
07:27:53 <elliott> And that's, like, a celebrity endorsement.
07:28:06 <elliott> shachaf: I am totally immune to tuomov antialiasing jokes!
07:28:08 <pikhq> shachaf: Derp.
07:28:23 * shachaf , like, actually *met* ezyang a couple of months ago.
07:28:31 <elliott> shachaf: I decided I'd read the entire contents of his blog chronologically before dismissing him as an idiot, and he had too many correct opinions for me to.
07:28:35 <shachaf> It was crazy, man.
07:28:37 <elliott> (Even if he is a total asshole.)
07:28:42 <elliott> Not ezyang.
07:28:42 <elliott> tuomov.
07:29:05 <shachaf> Wait, tuomov is the celebrity here?
07:29:16 <elliott> I, um, don't think so?
07:29:32 * shachaf isn't sure what's going on anymore.
07:29:33 <pikhq> He did write Ion, though.
07:29:56 <shachaf> Anyway, nobody said tuomov was an idiot.
07:30:11 <fizzie> I tried to draw some layout indicators with dzen2 ^r(...)^ro(...)^p(-X;+Y)^r(...) style of mess, but that went nowhere fast.
07:30:15 <elliott> fizzie: So do I need to get some third-party patched dzen to get xft?
07:30:24 <elliott> shachaf: Certainly; I never implied otherwise.
07:30:32 <fizzie> elliott: <fizzie> The http://dzen.googlecode.com/svn/trunk version does xft.
07:30:36 <fizzie> That's not third-party.
07:30:40 <fizzie> That's just "new enough".
07:30:46 <shachaf> elliott: ANTIALIASING IS THE DEVIL. DON'T BE THE DEVIL. DON'T ANTIALIAS.
07:30:47 <elliott> Although "unecological penis enhancement" wrt multiple monitors is a lot funnier to mock than his Xft spiel.
07:30:51 <elliott> fizzie: Ah.
07:31:11 <fizzie> Could be one of the devils... er, what was I going to say? Oh yes, that maybe one of the releases do Xft too.
07:31:14 <elliott> fizzie: Does 0.8.5 sound new enough?
07:31:26 -!- aloril has quit (Ping timeout: 240 seconds).
07:31:27 <elliott> That's what the Arch has.
07:31:50 <fizzie> No, because that's what my work-Ubuntu has too, and it didn't do it.
07:32:08 <fizzie> It's apparently the latest actual release.
07:32:10 <elliott> Well, it is -7. Maybe there's a patch. Maybe I'll check.
07:32:18 <shachaf> @google arch dzen xft
07:32:21 <lambdabot> https://wiki.archlinux.org/index.php/Dzen
07:32:26 <shachaf> zomg
07:32:35 <elliott> Nope. :(
07:32:48 <elliott> As of revision 241 (development), dzen2 has optional support for Xft. To enable Xft, you should build dzen2 with these options: (edit config.mk)
07:32:52 <elliott> Sigh.
07:32:59 <elliott> fizzie: Tell me about taffybar!
07:33:06 <elliott> What, it uses GTK.
07:33:07 <shachaf> elliott: I recommend that you write a status bar TO END ALL STATUS BARS.
07:33:14 <fizzie> I haven't actually tried it, but I have a quote about it somewhere.
07:33:30 <elliott> shachaf: I just want a clock and workspace info! I don't even care about the window title!
07:33:47 <fizzie> <vav> taffy needs more hackers to add more widgets. Is missing some stuff most people want. Still pretty neat though so long as it keepz being developed.
07:33:48 <elliott> shachaf: And maybe a volume indicator.
07:33:56 <fizzie> There; I suppose you'll trust someone who writes "keepz".
07:33:57 <elliott> fizzie: You... save quotes that boring?
07:34:01 <elliott> Even HackEgo doesn't save quotes that boring.
07:34:02 <fizzie> No, I grepped for it.
07:34:12 <shachaf> `log <fizzie>
07:34:49 <HackEgo> 2011-12-06.txt:13:49:47: <fizzie> The mutable-integer Linux.
07:34:57 <shachaf> elliott: HackEgo saves *every* quote.
07:35:02 <elliott> True dat.
07:35:12 <shachaf> Come to think of it, that's pretty good.
07:35:15 <elliott> fizzie: I'm going to have to either have a junk window when I play Minecraft, or have a gigantic 800x800 mcmap to get it square. :(
07:35:19 <shachaf> `addquote <fizzie> The mutable-integer Linux.
07:35:23 <HackEgo> 769) <fizzie> The mutable-integer Linux.
07:35:26 <fizzie> It was the "MInt Linux", I think.
07:35:32 <shachaf> Oh.
07:35:35 <shachaf> :-(
07:35:38 <kallisti> elliott: apparently Data.List is claiming that the foldr (insertBy cmp) [] implementation of sortBy is the "quick sort" algorithm taken from HBC's QSort library.
07:35:53 <kallisti> elliott: I wonder if they're saying that it's actually quicksort or if that's just what they called it for some reason.
07:35:55 <elliott> kallisti: Well, it might be quick. But it's not quicksort.
07:36:01 <shachaf> Haskell B. Curry had a QSort library?!
07:36:03 <elliott> (It isn't quick.)
07:36:12 <elliott> kallisti: *hbc, I think.
07:36:24 <shachaf> elliott: Insertion sort is pretty quick!
07:36:53 <kallisti> elliott: hey, don't ask me, I'm just quoting the comment verbatim.
07:37:24 <fizzie> "When humans manually sort something (for example, a deck of playing cards), most use a method that is similar to insertion sort.[1]" -- ooh, I was so sure that'd be a [citation needed] fact.
07:37:36 <fizzie> It's citing Robert Sedgewick, Algorithms, Addison-Wesley 1983 (chapter 8 p. 95).
07:37:57 * elliott is an octopus, and so uses parallel sorting algorithms.
07:38:27 <shachaf> elliott: So how would you sort ~2000 books?
07:38:37 <kallisti> I find what's fast for me is not quite so fast for my computer, and vice versa.
07:38:41 <elliott> shachaf: 8 at a time.
07:38:58 <shachaf> elliott: My father and I encountered this problem a while ago.
07:39:11 <elliott> I suggest not sorting them.
07:39:12 <elliott> O(0).
07:39:50 <shachaf> And also, stop caring about which book you want to read.
07:39:52 <kallisti> elliott: the actual merge sort used in base is actually pretty cool.
07:39:55 <shachaf> So you have O(1) indexing.
07:40:07 <kallisti> the insertion sort is just used if the USE_REPORT_PRELUDE macro is defined.
07:40:32 <elliott> shachaf: I agree.
07:40:42 <elliott> Much faster.
07:41:25 <fizzie> "What do you call an accident victim octopus?" "A heptapus." NUMBER PREFIX JOKES
07:41:44 <kallisti> ..
07:43:54 <elliott> shachaf: So what can dzen do that isn't text?
07:44:04 <fizzie> It can do a RECTANGLE.
07:44:08 <elliott> Gosh.
07:44:11 <shachaf> elliott: I think it can display bitmaps?
07:44:13 <fizzie> An outline or a filled one.
07:44:20 <fizzie> It can do bitmaps too if you're a SURRENDER MONKEY.
07:44:20 <shachaf> And rectangles, too.
07:44:30 <shachaf> Who cares about things that isn't text?
07:44:37 <elliott> I should probably install xmonad-contrib.
07:44:38 <fizzie> Also BALLS.
07:44:46 <fizzie> I mean, circles.
07:44:51 <shachaf> elliott: XMONAD-CONTRIB
07:44:59 <elliott> shachaf: Hi.
07:45:13 -!- aloril has joined.
07:45:27 <shachaf> I'm, like, totally a committer to xmonad-contrib.
07:45:29 <elliott> Have I mentioned I'm kind of tempted to write an xcb binding for Haskell and port xmonad to it?
07:45:40 <elliott> shachaf: Wow, that's, like, several degrees above "monkey" in the global pecking order.
07:45:43 * elliott bows.
07:45:50 <elliott> I'm a committer to @.
07:46:07 <shachaf> elliott: Wow, that's, like, several degrees below "monkey" in the global pecking order.
07:46:19 <elliott> Exactly!
07:46:21 <shachaf> Anyway, doesn't @ use the @ version control system?
07:46:22 <fizzie> Wasn't there a binding already? I think I saw a mention when reading about xcb "the other day".
07:46:22 <elliott> That's why I'm bowing.
07:46:34 <elliott> fizzie: There seems to have been one that got lost to the Sands of Time.
07:46:40 <fizzie> Aw.
07:47:00 <shachaf> elliott: Anyway, if you committed to @, then there must be a repository you committed to.
07:47:08 <shachaf> Can I get it?
07:47:09 <elliott> Also its author was talking on the xcb list about how amazing Haskell is for this, since you can just structure every asynchronous operation with unsafeInterleaveIO and the information will only be retrieved from xcb when you forced the result.
07:47:13 <fizzie> Oh well, WAYLAND.
07:47:14 <elliott> So I don't think I'd use that one anyway.
07:47:33 <elliott> shachaf: No. It only works on @ computers.
07:47:41 <shachaf> So it doesn't work?
07:47:47 <fizzie> You can call those "atting machines".
07:47:58 * elliott has a suspicion that xmonad's extravagant claims of perfect design and stability are accomplished by putting everything useful in the significantly laxer xmonad-contrib.
07:48:03 <elliott> shachaf: It works. If you have @.
07:48:16 * shachaf would totally contribute to @.
07:48:24 <elliott> Is there something I can install to, um, click on my fancy workspace indicators to switch to them?
07:48:33 <elliott> When I'm in Web Browsing Mode(tm) I don't really like moving my hand to the keyboard.
07:48:33 <shachaf> There does not yet exist a single atting machine. elliott isn't even up to a half-atter yet.
07:48:42 <fizzie> Half-otter.
07:48:56 <fizzie> I have clickable workspace indicators, but they're sort of... hand-made.
07:49:09 <elliott> Handmade howso :P
07:49:23 <shachaf> elliott: We're just talking in #-blah about how inflexible xmonad's design is.
07:49:39 <elliott> It is?
07:49:44 <shachaf> Yes.
07:49:47 <elliott> Howso
07:50:14 <shachaf> kmc wanted to write a static tiling and it didn't lend itself to it.
07:50:27 <elliott> Only bad people want static tilings.
07:50:47 <shachaf> Like tuomov?
07:51:00 <elliott> I never said he wasn't bad.
07:51:19 <fizzie> I have ^ca(1,echo blah)...^ca() around the indicators, and then that dzen2 runner script which reads from dzen2's stdout and writes suitable events to xmonad to switch; if you do the usual thing of just spawnPipe'ing dzen2 (or something) that's not very worky.
07:51:45 <elliott> fizzie: Oh, I saw your dbus stuff.
07:51:51 <elliott> I explicitly thought, "why is this moron using dbus?".
07:51:54 <fizzie> Octobus.
07:52:22 <Sgeo> FTP also lends itself well to vomiting unsafeInterleaveIO all over your library.
07:52:26 <elliott> So can you change the background of some text depending on whether it's the current workspace or not in dzen2?
07:52:32 <fizzie> Broken pipes are the #1 reason for frozen XMonads, I think: http://www.haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#XMonad_is_frozen.21
07:52:55 <shachaf> elliott: If you want click-to-switch-to-arbitrary-workspace, you might need to install a smarter panel.
07:52:56 <elliott> Sgeo: In fairness I think the xcb thing would make the requests as soon as the action happens, and just only request the response from the xcb server when you forced it.
07:53:03 <fizzie> Certainly you can change the background of text.
07:53:05 <shachaf> elliott: Any EWM-compliant workspace switcher would do.
07:53:07 <elliott> The problem being that you could still send off requests to do things before previous ones finish.
07:53:21 <elliott> fizzie: Does the background stretch all the way to the top and bottom of the panel?
07:53:24 <shachaf> elliott: This is the announcement of xmobar: http://www.haskell.org/pipermail/xmonad/2007-June/001042.html
07:53:28 <fizzie> elliott: It does.
07:53:35 <elliott> shachaf: I don't really want a smarter panel, though; I spent a few million years trying to find a good panel and never did.
07:53:38 <elliott> fizzie: Yay.
07:53:44 <Sgeo> elliott, that sounds exactly like ftphs
07:53:47 <shachaf> elliott: gnome-panel works just fine.
07:54:20 <elliott> shachaf: That mail isn't *that* bad. Also that guy doesn't seem to maintain it anymore, but whatever.
07:54:25 <elliott> Sgeo: Well, except FTP is a synchronous protocol.
07:54:35 <elliott> shachaf: And gnome-panel does not just "work fine".
07:54:36 <Sgeo> elliott, I'm undecided whether to just make ftphs strict, or to have lazy functions but the results get forced when the next ftp thing is called. I think I'll have functions like the latter, except marked as lazy
07:54:42 <elliott> At least, gnome3-panel certainly doesn't.
07:54:55 <Sgeo> So I'm not actually that undecided
07:55:02 <elliott> Sgeo: getDirectory :: String -> IO (IO (Maybe FileEntry))
07:55:04 <shachaf> elliott: Well, it's not that mail. I haven't seen it before, I think.
07:55:21 <elliott> getAll :: IO (Maybe a) -> IO [a]
07:55:46 <elliott> getAll m = x >>= maybe (return []) (\x' -> (x':) <$> getAll m)
07:55:50 <elliott> Or something.
07:56:23 * Sgeo was planning on having the FTP connection store an IORef ()
07:56:34 <elliott> shachaf: What was taht border thing you mentioned?
07:56:36 <Sgeo> Although maybe IORef (IO ()) won't make me feel weird
07:56:46 <elliott> Sgeo: What use is an IORef ()?
07:56:57 <elliott> Oh, IORefs can contain unevaluated values.
07:57:07 <elliott> Sgeo: Just rip out the unsafeInterleaveIO. Or don't, because it's a waste of time since nobody uses FTP.
07:57:14 <elliott> Write ftp-enumerator or whatever.
07:57:50 <Sgeo> elliott, I'm going to disable the unsafeInterleaveIO except for the marked lazy functions
07:58:01 <Sgeo> And there will be no lazy functions without a strict alternative
07:58:16 -!- cheater has quit (Ping timeout: 245 seconds).
07:58:22 <elliott> Sgeo: There is no point retaining a broken interface.
07:58:37 <Sgeo> The laziness might be useful to someone grabbing a large file
07:59:18 <Sgeo> And it wouldn't be backwards compatible anyway: The lazy functions are getting lazy in front of their names
07:59:36 <elliott> Well, that's what iteratees are for. If you're going to waste time on FTP at least go all the way.
07:59:42 <elliott> (Thus <elliott> Write ftp-enumerator or whatever.)
08:00:11 <shachaf> elliott: SmartBorders?
08:00:37 <Sgeo> I should be sleeping
08:01:05 <elliott> shachaf: Yes, thanks.
08:01:14 <elliott> shachaf: Not in xmonad-contrib?
08:01:50 <shachaf> It is in xmonad contrib.
08:02:04 <elliott> shachaf: /SmartBorders/ on the Hackage page returns nothing.
08:03:01 <elliott> fizzie: https://sites.google.com/site/gotmor/dzen Well, the official site advertises "optional xft support"; would be strange if it weren't in the stable release...
08:04:20 <elliott> Hello,
08:04:20 <elliott> Congratulations -- you are one of the top new Stack Overflow users for the week of Dec 12 2011!
08:04:23 <elliott> http://stackexchange.com/leagues/week/stackoverflow/2011-12-12
08:04:25 <elliott> It's users like you who make the Stack Overflow community worth visiting in the first place.
08:04:28 <elliott> Awwww, how sweet.
08:04:29 <shachaf> elliott: Do you want me to run (ack-)grep for you? OK. :-)
08:04:30 <shachaf> Layout/NoBorders.hs
08:04:41 <elliott> shachaf: "ack-grep" is my favourite binary name ever.
08:05:20 <shachaf> elliott: I have ln -s ack ack-grep
08:08:10 -!- azaq23 has quit (Quit: Leaving.).
08:08:32 <elliott> You know, Alt is not a very good prefix for an emacs user.
08:09:04 <shachaf> elliott: You're using Alt as your modkey?
08:09:05 <shachaf> Are you crazy?
08:09:10 <shachaf> Mod4 immediately.
08:09:14 <fizzie> elliott: htkallas@pc112:~/inst/dzen2-0.8.5$ grep -i xft * # no matches
08:09:40 <fizzie> The SVN version has it as an uncommentable thing in config.mk.
08:10:09 <elliott> shachaf: Which one is mod4?
08:10:17 <shachaf> "Windows" key.
08:10:17 <elliott> fizzie: Fair enough.
08:10:29 <shachaf> Do they have "Windows" keys in the UK?
08:10:30 <elliott> shachaf: Not an option, my sole windows key is badly-placed.
08:10:42 <shachaf> elliott: Fine, bind it to caps-lock.
08:10:42 <elliott> Alt Gr is what I'm leaning towards, but I don't know what its number is.
08:10:44 <fizzie> shachaf: They don't even have "doors" in the UK, that's how poor they are.
08:10:45 <elliott> Heck no.
08:10:52 <elliott> fizzie: Says the Finn.
08:10:58 <elliott> Did they ever manage to get vodka doors working?
08:11:28 <shachaf> Oh, fizzie is Finnish.
08:11:33 <shachaf> fizzie: What's a good way to learn Finnish?
08:12:15 <fizzie> Being born here and then learning from people around you`
08:12:19 <fizzie> s/`/?/
08:12:32 <fizzie> Now I trailing-spaced a `.
08:12:34 <shachaf> fizzie: Yes, I was thinking you'd say something along those lines.
08:12:44 <fizzie> It's the only way I really have experience of.
08:13:18 <shachaf> It's apparently an unpopular language to learn.
08:13:47 <elliott> shachaf: tswett knows more Finnish than the Finns.
08:13:51 <elliott> (Not an accurate statement.)
08:14:17 <elliott> shachaf: You should try and get drafted and learn the language on the job.
08:14:28 <shachaf> fizzie: What's being drafted like?
08:14:55 <elliott> Drafty.
08:16:27 <shachaf> Maybe I should institute a policy of not answer questions that can be answered with a few seconds and the Google.
08:17:08 <fizzie> If that's draft as in compulsory military service, I did that the lazy-bum way; but from what I hear from others, it makes men out of boys. Or so they claim.
08:17:10 <elliott> Not answer?
08:17:42 <pikhq> fizzie: That sounds vaguely homoerotic.
08:17:51 -!- oerjan has quit (Quit: leaving).
08:18:13 <shachaf> fizzie: What's that way?
08:21:42 <fizzie> It's the "civil service" way. Basically you just find a place from a qualifying organization (non-profit, or part of the public sector, or whatever) and then do some sort of a job for a year with very low pay (but paid meals + rent). E.g. I did fiddle around with PageMaker for this place where they train prison guards (they also do books and such about it), and quite a lot of people just sysadmin at their university or whatnot.
08:22:35 <fizzie> Oh, and there's a one-month training thing, which from what I recall was mostly about sauna and sausages.
08:22:54 <fizzie> I suppose there were some lectures too.
08:23:30 <shachaf> fizzie: Nakki?
08:24:04 <fizzie> That's the diminutive form of sausage.
08:24:21 <shachaf> Oh. It's not a specific kind?
08:25:03 <fizzie> Well, depending on how specific "specific" means. It's the small(er) kind.
08:25:13 <shachaf> elliott: Do you know what's weird? Windows programmers.
08:25:31 <pikhq> shachaf: The "real" way to learn Finnish is to learn Japanese and get some brain damage. :P
08:25:50 <elliott> fizzie: dzen2 is reasonable with CPU usage and the like, right? This is CLEARLY WORTH WORRYING ABOUT.
08:25:53 <elliott> shachaf: ++
08:26:07 <fizzie> elliott: I haven't noticed it running, if that's what you mean.
08:26:47 <fizzie> At the moment, it seems to be using 1.2 megabytes of resident memory, and 0.0 percent of CPU time.
08:27:03 <elliott> So which modNMask is alt grrrr?
08:27:06 <shachaf> pikhq: What?
08:27:43 <fizzie> You can 'xev' for that stuff. Strange configurations may need some xmodmapping.
08:27:46 <shachaf> elliott: xev + xmodmap
08:27:52 <pikhq> shachaf: Snark about how Finnish and Japanese coincidentally have very vague, superficial similarities in how they sound.
08:27:55 <elliott> "XMonad's defaults with multiple monitors may seem confusing and chaotic until explained and illustrated."
08:28:07 <fizzie> Here according to xev it produces ISO_Level3_Shift, which seems to be mod5 according to xmodmap.
08:28:09 <shachaf> pikhq: They do? They've always sounded completely different to me.
08:28:23 <pikhq> *shrug*
08:28:37 <elliott> No, xev gives me "Alt_L" and the like. Although I guess maybe xmodmap has some kind of query mode?
08:28:42 <elliott> Oh, that's what you just implied.
08:28:50 <shachaf> elliott: Are you sure you even have AltGr enabled?
08:28:51 <fizzie> 'xmodmap' without arguments prints the modifier mapping.
08:29:01 <elliott> shachaf: It's what the key is labelled./
08:29:08 <shachaf> elliott: In the default layout I usually get in X11 the right Alt key is just mapped to Alt.
08:29:13 <shachaf> I always have to enable it myself.
08:29:17 <elliott> mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
08:29:24 <elliott> Well that's stupid. :(
08:29:50 <fizzie> Finnish layouts always "enable" AltGr, but that's because we use it for all kinds of characters, like all of @${[]}\|.
08:30:05 <fizzie> Anyway, I suppose you could xmodmap Alt_L out of mod1 into mod5.
08:30:13 <elliott> What's the Approved(tm) thing to do that?
08:30:16 <fizzie> Or Alt_R. Or whichever it is.
08:30:19 <elliott> I try to avoid remembering things about X.
08:31:16 <fizzie> xmodmap -e 'remove mod1 = Alt_R' -e 'add mod5 = Alt_R' # untested
08:31:20 <fizzie> I don't know if it does multiple -e.
08:31:42 <elliott> Isn't there a thing to load from a file?
08:32:06 <fizzie> ~/.Xmodmap is the common file for it.
08:32:16 <fizzie> Might be it's autoloaded by the X startup scripts by default.
08:32:55 <fizzie> Or I don't know about common, but it's what I seem to have had back when I needed some "keycode N = keysym" remappings for weird keys.
08:33:05 <elliott> What's the default layoutHook? SO DIFFICULT :'(
08:33:15 <shachaf> lambdabot: "layoutHook defaultLayout"
08:33:23 <shachaf> That's right, lambdabot.
08:33:27 <shachaf> Now you know.
08:33:29 <shachaf> Stupid bot.
08:33:32 <elliott> shachaf: I want to inline it to modify it. :p
08:33:48 <shachaf> elliott: Just look at Config.hs, then.
08:34:09 <shachaf> elliott: Or at the Template Config on the Wiki.
08:34:40 <shachaf> layout = tiled ||| Mirror tiled ||| Full where tiled = Tall nmaster delta ratio; nmaster = 1; ratio = 1/2; delta = 3/100
08:35:39 <elliott> Wow, that's rather involved.
08:35:55 * elliott wonders WTF delta is.
08:36:06 <shachaf> The amount it shifts by when you resize it, I think.
08:36:24 * elliott wonders whether ratio is the size of the master or the size of the secondary.
08:41:00 <elliott> shachaf: Where do I go to see errors if mod-q fails silently? :(
08:43:38 <shachaf> elliott: Install xmessage.
08:43:53 <elliott> shachaf: Ha, seriously?
08:43:54 <shachaf> elliott: Alternatively, redirect errors into ~/.xmonad-errors from whatever is starting xmonad.
08:44:10 <shachaf> elliott: Well, that's how it used to be a while ago.
08:44:30 <elliott> I like how it doesn't float the xmessage. :/
08:45:26 <shachaf> If you want to float your xmessages, you gotta do it yourself, dawg.
08:46:40 <elliott> xmonad-contrib is too big.
08:47:16 <shachaf> Yes.
08:47:19 <shachaf> It's full of junk.
08:48:12 <elliott> shachaf: So what do you use these days?
08:48:22 <shachaf> elliott: Metacity.
08:48:28 <shachaf> I never bothered to change it.
08:48:51 <shachaf> It's, like, who cares, man, you know what I'm sayin'?
08:49:11 <elliott> shachaf: Have fun when your distro gets round to GNOME 3.
08:49:32 <shachaf> elliott: That's why I'm not upgrading.
08:49:38 <elliott> At all?
08:49:49 <shachaf> Well, from Ubuntu 11.04.
08:49:57 <shachaf> I started using Ubuntu for a silly reason anyway.
08:50:04 <shachaf> I've only liked it less over the years.
08:50:10 <shachaf> I'll probably install Arch or something rather than upgrade Ubuntu.
08:51:52 <elliott> What's the silly reason? My reason for switching to Arch was that it had GHC 7.
08:52:21 <shachaf> My father was using it and wanted me to fix all his problems by encountering them myself first.
08:52:25 <shachaf> Or something along those lines.
08:52:27 <shachaf> I didn't really care.
08:55:29 <elliott> I'm so glad xmonad-contrib ahas
08:55:36 <elliott> I'm so glad xmonad-contrib has David Roundy's configuration.
08:55:45 <elliott> The one thing I want out of my utility module is the ability to be a real physicist.
08:55:49 <elliott> *package
08:56:06 <shachaf> droundy doesn't use xmonad anymore.
08:56:14 <shachaf> I think he forked the repository or something like that.
08:57:22 <elliott> Doesn't he also eschew cabal?
08:57:24 <elliott> Strange guy.
08:58:54 -!- elliott has quit (Quit: Lost terminal).
09:01:35 -!- amca has joined.
09:07:38 -!- Ngevd has joined.
09:08:00 -!- elliott has joined.
09:08:22 <elliott> Ooh, xmonad fails quite massively at floating XChat's preference windows.
09:08:57 <fizzie> They do float for me.
09:09:03 <elliott> Well, yes, but try selecting a font.
09:09:24 <elliott> Okay, I need to install a GTK theme so that this doesn't look like complete crap.
09:09:28 <fizzie> Oh, the font-select-o-tron indeed doesn't.
09:09:49 <Ngevd> Today's Gunnerkrigg Court is SO GOOD
09:10:07 <elliott> fizzie: I don't suppose you have anything for feeding libnotify type things into a dzen?
09:10:14 <elliott> I can cook something up myself, but it'd be nice if it already existed.
09:10:20 <fizzie> Nope.
09:11:05 -!- tuubow has quit (Ping timeout: 240 seconds).
09:11:29 -!- elliott has quit (Client Quit).
09:11:52 -!- elliott has joined.
09:11:54 -!- elliott has quit (Client Quit).
09:13:24 -!- elliott has joined.
09:13:34 <elliott> Okay, not only do I need a GTK theme, I need a dmenu-or-equivalent.
09:13:38 <elliott> (What do y'allz use?)
09:13:44 <elliott> *you all gentlepeople
09:13:53 <elliott> shachaf: Thanks for smartBorders btw
09:14:02 <shachaf> elliott: You're welcome.
09:14:09 <shachaf> I didn't write it or anything.
09:14:10 <Deewiant> I use dmenu
09:14:17 <shachaf> But I'll take the credit.
09:14:24 <elliott> className =? "Putty" --> doFloat,
09:14:27 <elliott> fizzie: You use _putty_?
09:14:30 <elliott> On _Linux_?
09:14:31 <shachaf> elliott: By the way, you're going to want URGENCY hooks eventually.
09:14:36 <elliott> shachaf: What do they do?
09:14:50 <shachaf> elliott: So that when a window beeps, the workspace colour in your dzen changes.
09:14:57 <elliott> Deewiant: With a billion patches, no doubt!!!!!! (I can't really run something that uses bitmap fonts, I just can't.)
09:15:03 <shachaf> "beep" being the thing that makes the taskbar item flash, or whatever it is.
09:15:15 <elliott> shachaf: But everything that beeps in a way I care about also sends libnotify events.
09:15:23 <Deewiant> elliott: I hardly ever /look/ at it.
09:15:25 <shachaf> Oh, I thought you used irssi.
09:15:29 <shachaf> I guess not.
09:15:30 <elliott> I did until ~5 seconds ago.
09:15:36 <elliott> And until ~a few hours before that.
09:15:43 <elliott> I needed something that worked from the console.
09:15:52 <shachaf> elliott: Well, you should use irssi for ever.
09:16:05 <fizzie> elliott: For nethack.alt.org; there was something Putty's CP437 did better than using konwert-to-utf8, can't recall what.
09:16:14 <fizzie> (I'm an IBMgraphics sort of a person.)
09:16:19 <shachaf> CP437!
09:16:30 <elliott> fizzie: I tried being an IBMgraphics sort of person, but the self-loathing held me back.
09:16:58 <shachaf> DECgraphics SSSSZ lyfe
09:17:04 <fizzie> But the half-integral fountains!
09:17:24 <shachaf> fizzie: Well... Yes.
09:17:36 * shachaf has never ever gotten IBMgraphics working under Linux.
09:17:42 <shachaf> Except with DOS(emu|box), I guess.
09:17:44 <elliott> konwert does it quite well.
09:17:47 <elliott> Sort of.
09:17:49 <elliott> Kinda.
09:17:58 <shachaf> Anyway, the future is neither-DEC-nor-IBMgraphics.
09:17:59 <elliott> fizzie: When reading, I found a VERY EXCITING THING.
09:18:05 <shachaf> Real NetHack players use plain old plain.
09:18:11 <elliott> fizzie: Did you know that you can tell OpenJDK you're using a non-reparenting window manager directly these days?
09:18:12 -!- olsner has quit (Ping timeout: 244 seconds).
09:18:14 <shachaf> (Also, people who want to use Interhack.)
09:18:17 <elliott> You don't have to pretend to be looking-glass 3D.
09:18:40 <fizzie> elliott: Yes, I did know that; sadly, I need to pretend at work because Matlab uses its bundled-in ass-old JDK.
09:18:43 <elliott> shachaf: Did you know DeathOnAStick doesn't use any graphics or colour or anything?
09:18:50 <elliott> Or the fancy walk command thing.
09:18:56 <shachaf> elliott: I did.
09:19:04 <shachaf> Colour is overrated.
09:19:08 * elliott knows this because he watched the end of their successful second attempt at insanity.
09:19:18 <shachaf> By everyone except DeathOnAStick. Colour is underrated by DeathOnAStick.
09:19:25 <shachaf> Wait, DOAS succeeded?
09:19:27 <shachaf> When did that happen?
09:19:33 <shachaf> That's the gem-polymorpher, right?
09:19:36 <elliott> shachaf: Yes.
09:19:40 <elliott> It was, like, a year ago by now?
09:19:48 <elliott> They just appeared again and #nethack was like "ooooooooh".
09:19:49 * shachaf tries to recall what DOAS was trying to do.
09:19:59 <elliott> And then about ten hours passed and then people went "WOW THEY DID IT"
09:20:13 <elliott> shachaf: http://nethackwiki.com/wiki/DeathOnAStick
09:20:29 <Ngevd> Today's Misfile is pretty good too
09:20:44 <elliott> http://newsgroups.derkeiler.com/Archive/Rec/rec.games.roguelike.nethack/2005-11/msg01798.html
09:21:14 <elliott> "Also, I reject the theory that he's
09:21:14 <elliott> making a picture -- he doesn't use color."
09:21:16 <elliott> THEORIES!
09:22:56 <shachaf> r.g.r.n
09:23:03 <elliott> fizzie: What's THE BEST GTK THEME?
09:23:12 <elliott> Player DeathOnAStick
09:23:13 <elliott> is not playing.
09:23:13 <elliott> has a save file, dated Wed, 30 Nov 2011, 04:03:20
09:23:18 <elliott> I wonder what they're doing this tmie.
09:23:19 <elliott> time.
09:23:25 <shachaf> elliott: REDMOND
09:23:30 <shachaf> Wait, is that a Qt theme?
09:23:31 <elliott> Maybe they're filling the entire game with pudding.
09:23:41 <shachaf> elliott: REDMOND + GTK QT ENGINE
09:23:48 <elliott> shachaf: It's gtk.
09:23:51 <shachaf> Man, I used to use Gtk Qt Engine.
09:23:57 * elliott too.
09:24:01 <elliott> Back when KDE sucked in different ways.
09:24:14 <shachaf> I also used to use Redmond.
09:24:18 <shachaf> In KDE.
09:24:19 <elliott> Why.
09:24:23 <shachaf> Because.
09:24:29 <kallisti> one of the students in my data structures class mentioned zippers once. SOMEONE WHO KNOWS HASKELL ERHAPS?
09:24:29 <elliott> Why.
09:24:37 <shachaf> Microsoft is very good at designing window decorations.
09:24:41 <shachaf> Or was.
09:24:46 <shachaf> Back in the Windows 2000 days.
09:24:49 <fizzie> elliott: HIGH CONTRAST LARGE PRINT INVERSE.
09:24:50 <shachaf> Man, those were the days.
09:25:18 <shachaf> elliott: How many of the students in *your* data structures class mentioned zippers once? Eh?
09:25:29 <elliott> fizzie: ;__;
09:25:36 <elliott> shachaf: Purple!
09:26:19 <elliott> I wish Mod-q let you know when it was done.
09:26:38 <shachaf> elliott: It does.
09:26:44 <shachaf> The borders flash, or something.
09:26:58 <shachaf> «Your Amazon.com order of "Chicago" has shipped!»
09:26:58 <elliott> No they don't.
09:27:01 <elliott> dzen2-xft-xpm-xinerama-svn 271-1
09:27:03 <shachaf> elliott: Mine do.
09:27:05 <elliott> What a horrid package name.
09:27:07 <elliott> shachaf: *did
09:27:26 <shachaf> Why did I order that?
09:28:04 <elliott> You know, all these fancy-schmancy "status bar"/"panel" things really need to be is something that starts a bunch of commands, with specified width and order, as X subwindow things.
09:28:22 <shachaf> elliott: That sounds so simple.
09:28:25 <shachaf> WRITE IT
09:28:29 <elliott> SO TEMPTED.
09:28:53 <shachaf> GIVE IN TO THE NIH SIDE
09:29:14 <elliott> You could even just use xclock(1) as the clock widget.
09:29:44 <elliott> Well... you'd need some kind of trick to reparent it, since it doesn't take a window ID.
09:29:56 -!- olsner has joined.
09:31:39 -!- kmc has quit (Quit: Leaving).
09:32:54 <shachaf> elliott: What if you had, like, a window manager INSIDE A WINDOW MANAGER?!?!
09:33:03 <shachaf> W I N D O W M A N A G E R C E P T I O N
09:33:04 <elliott> Oh, you can just use XReparentWindow.
09:33:15 <elliott> X is so lawless.
09:33:16 <shachaf> (This comment brought to you by: Reddit.)
09:36:29 <elliott> fizzie: You're so mean.
09:37:29 -!- tuubow has joined.
09:40:03 <elliott> shachaf: Can you find out what GTK theme fizzie uses so I can not use it?
09:42:10 <fizzie> I use whatever's the Ubnuttu-gnome default.
09:42:29 <elliott> So weird.
09:42:33 <elliott> shachaf: What's the best GTK theme?
09:46:20 <kallisti> elliott: human nature
09:46:34 <kallisti> the most insightful theme of all.
09:46:42 <shachaf> elliott: I told you, GTK Qt engine.
09:46:46 <monqy> whats a theme
09:46:51 <elliott> shachaf: Second-best???
09:46:53 <shachaf> elliott: This reduces the question to "what's the best Qt theme".
09:46:56 <elliott> monqy: EHWATHS HTEIH EBST IIOJGIOTJK THEME
09:46:59 <shachaf> elliott: The best Qt theme is "Qt GTK Engine"
09:47:04 <monqy> elliott: i dont theme.....................oopS?
09:47:43 <elliott> shachaf: I wonder what happens if you do that.
09:47:48 <elliott> monqy: You use... Raleigh?
09:47:50 <elliott> Really?
09:48:02 <kallisti> elliott: theme hipster
09:48:23 <monqy> whats raleigh is it that miserable default
09:48:24 <monqy> then yeah
09:48:36 <elliott> monqy: How.
09:48:41 <elliott> monqy: How do yo sleep.
09:48:43 <elliott> How do you breathe.
09:48:54 <elliott> How do you turn into an aardvark and devour the children of the night.
09:49:01 <monqy> the magic of apathy
09:49:21 <shachaf> I use Clearlooks.
09:49:24 <shachaf> Clearlooks is the future.
09:49:55 <elliott> shachaf: The future that doesn't actually work on GTK 3? :-)
09:51:13 <elliott> Hey pikhq, it's that time of year when I ask you for Grey Mist again.
09:51:46 <shachaf> More like GRAY MIST
09:52:11 <monqy> ;_;
09:52:16 <elliott> shachaf: More like GAY MIST.
09:52:33 <fizzie> More like YOUR FIST.
09:52:39 <elliott> Verily.
09:52:47 <elliott> God I hope that guy gives the bounty today, I want a day off.
09:52:55 <shachaf> What?
09:53:00 <elliott> Stack Overflow! It's my JOB now.
09:53:04 <elliott> It pays me in imaginary internet points.
09:53:07 * elliott $$$
09:53:14 <shachaf> A bounty will only makes you work harder, elliott.
09:53:25 <shachaf> elliott: Hey, did you ever play Diablo II?
09:53:26 <elliott> I've already worked for it, he just hasn't given it to me yet.
09:53:33 <elliott> And no; should I?
09:53:45 <shachaf> I have no idea if you should.
09:53:50 <elliott> Thanks.
09:53:56 <shachaf> But if you do, want a bunch of free items in -- USWest Ladder?
09:53:59 <shachaf> I guess that's a no.
09:54:01 <elliott> Totally.
09:54:38 <elliott> With smartBorders, switching from a borderless workspace to a borderful one draws it without borders for a split second before adding them. :(
09:54:45 <elliott> I can tell because the XChat window seems to jitter slightly.
09:54:57 <fizzie> Diablo II: Septic Bardiche of of Blight.
09:55:02 <shachaf> SCRAP EVERYTHING, WRITE @
09:55:33 <fizzie> For some reason always when I see an item called "Septic Anything" I re-assemble that as "Anything of Septic Tank Repair" in my head.
09:56:01 <shachaf> elliott: Diablo II got the formula of using a randomly-scheduled rewards to encourage you to do things that aren't even fun very well.
09:56:03 <elliott> fizzie! Buy a Septic Tank from me.
09:56:54 <elliott> shachaf: You can't allegorise my Stack Overflow addiction, I'm both completely aware of it and don't care in the slightest because being manipulated to help people with Creative Commons-licensed answers is like one of the least evil forms of manipulation ever.
09:57:18 <elliott> Like an MMORPG where the goal is to be really nice.
09:57:30 <shachaf> elliott: No, no, Iwasn't allegoriszsing.
09:57:41 <shachaf> It just reminded me.
09:57:46 <elliott> Allegoriszsing is the best thing to do.
09:57:48 <elliott> Looks kinda German.
09:58:12 <shachaf> In German, 'z' is pronounced 'tz' and 's' is pronounced 'z'.
09:58:27 <monqy> ztzz
09:58:42 <monqy> tzttztz
10:00:30 <shachaf> > iterate (>>= (\x -> case x of 'z' -> "tz"; 's' -> "z"; y -> [x])) "szs"
10:00:30 <lambdabot> ["szs","ztzz","tzttztz","ttztttzttz","tttzttttztttz","ttttztttttzttttz","tt...
10:00:38 <shachaf> > fix (>>= (\x -> case x of 'z' -> "tz"; 's' -> "z"; y -> [x])) "szs"
10:00:39 <lambdabot> Couldn't match expected type `[GHC.Types.Char] -> t'
10:00:39 <lambdabot> against inferr...
10:00:41 <kallisti> elliott: http://haskell.org/haskellwiki/Consultants
10:00:46 <kallisti> elliott: you should list yourself here.
10:01:01 <shachaf> elliott is a consultant? :-(
10:01:05 <kallisti> alongside Conal Elliott.
10:01:18 <kallisti> even though he's in north america
10:02:02 <fizzie> Also in Diablo II you can collect 14281868906496 El runes and upgrade them to a single Zod rune, though you also need 362799102 assorted gems. (Disclaimer: might have calculated wrong here, but it's something of that order of magnitude.)
10:02:11 <elliott> shachaf: No.
10:02:15 <shachaf> fizzie: Yes!
10:02:20 <shachaf> Good old runes.
10:02:32 <shachaf> fizzie: I'm pretty sure Jah or Ber is worth more than Zod in the trading circles these days.
10:02:40 <shachaf> If you play online.
10:02:46 <Deewiant> I'm pretty sure they almost always have been
10:02:48 <shachaf> Diablo II is pretty much a trading game nowadays.
10:03:09 <monqy> that's an awful lot of runes, assorted gems
10:03:11 <shachaf> It's an incredibly inefficient market, of course. :-)
10:03:25 <shachaf> monqy: Fortunately for you, you can cube gems into other gems.
10:03:45 <shachaf> So if you want to start from chipped gems, you actually need way more than 362799102
10:04:30 <fizzie> It's an awful lot of runes also because odds are you can actually find a Zod after collecting just 144238 El.
10:04:43 <shachaf> fizzie: What, in A1 Normal?
10:04:50 <fizzie> Well, not *there*, that's true.
10:05:00 <shachaf> So there you go.
10:05:13 <shachaf> You also won't find any flawless gems in A1 normal.
10:05:21 <shachaf> However, you will find quite a lot of gem shrines, so that helps.
10:05:40 * shachaf JahIthBer
10:05:45 <monqy> is diablo all about big numbers and funny names then
10:06:11 <fizzie> You only need 81 chipped gems for a flawless gem, though.
10:06:30 <kallisti> monqy: no
10:06:30 <shachaf> Isn't it 27?
10:06:49 <fizzie> Oh, right; I mean, for a perfect gem.
10:06:53 <monqy> kallisti: just big numbers?
10:07:11 <fizzie> And you don't need perfect for rune-upgrade.
10:07:32 <shachaf> fizzie: Do you actually still play the game?
10:07:36 <kallisti> monqy: it's about pressing buttons to strategically alter the state of a system so that it produces favorable conditions.
10:07:53 <monqy> kallisti: big numbers and lots of buttons
10:08:00 <monqy> are the buttons big too
10:08:04 <kallisti> no
10:08:13 <kallisti> well, depends on your scale.
10:08:18 <kallisti> they're larger than your fingertips.
10:08:27 <elliott> shachaf: fizzie has a mental encyclopedia.
10:08:36 <elliott> I call it a mentyclopedia for short. (Not true.)
10:08:59 <fizzie> Anyway, after collecting those 14 trillion El runes you can then socket it into the Ethereal Sash of Suckiness.
10:09:03 <kallisti> dude my sense of time is so fucked up lately.
10:09:06 <shachaf> Oh, earlier I was going to say: Bye, elliott. belliott.
10:09:21 <elliott> shachaf: You should change your name so it portmanteaus correctly.
10:09:22 <kallisti> I'll look at the clock, get distracted by something, and then look back and see that it's an hour later.
10:09:28 <shachaf> Because it sounds like "belly". As in "belly of the beast"
10:09:37 <elliott> Then I could execute superior portmanoeuvres.
10:09:37 <shachaf> fizzie: You can't socket sashes!
10:09:50 <fizzie> I was sort-of thinking that might be the case. :/
10:09:53 <shachaf> elliott++ # portmanoeuvres
10:10:02 <shachaf> fizzie: When was the last time you played?
10:10:08 <monqy> do any greetings/goodbyetings end in sh
10:10:09 <monqy> or sha
10:10:12 <monqy> or shach
10:10:15 <monqy> or shacha
10:10:16 <monqy> or shachaf
10:10:21 <Deewiant> ethereal cracked sash, use the socket quest to get a socket in it so you can zod it
10:10:32 <shachaf> Deewiant: ...You can't socket sashes.
10:10:37 <Deewiant> Shh
10:10:38 <kallisti> I think runes kind of broke D2
10:10:40 <shachaf> Only shields, helms, armor, and weapons.
10:10:52 <Deewiant> You're spoiling the joke.
10:11:09 <shachaf> I don't get the joke.
10:11:16 <fizzie> And I'm not really playing it, and I never really played it "for reals"; I just did my single single-player normal-difficulty LoD playthrough on battle.net, and consequently read a bit about how it's really meant to be played by Real Men.
10:11:17 <shachaf> Is this the "say something that's wrong" joke?
10:11:25 <monqy> I love that joke
10:11:26 <kallisti> shachaf: no
10:11:34 <kallisti> I have that (c)
10:11:45 <shachaf> fizzie: Wait, how is it really meant to be played by Real Humanoids?
10:11:45 <fizzie> To understand what all those "NNN Stones of Jordan sold" messages meant.
10:12:09 <shachaf> fizzie: Did you ever do the Übers?
10:12:18 <monqy> kallisti legendary humourist, renowned for his impeccable to say things that are wrong
10:12:26 <monqy> er
10:12:30 <monqy> kallisti legendary humourist, renowned for his impeccable ability to say things that are wrong
10:12:39 <fizzie> Certainly not. I could barely manage to slog through the game itself.
10:12:50 <shachaf> fizzie: Did you go all the way through to Hell?
10:12:53 <shachaf> Oh, just Normal.
10:12:57 <fizzie> Right.
10:13:01 <Deewiant> I never did the übers, most of my high-enough-level characters were before them and when they did appear I couldn't be bothered to run for the keys and whatnot
10:13:20 <shachaf> Even *I* did Nightmare in single-player.
10:13:20 <fizzie> Also it's slightly funny that Stone of Jordan is called an "unique" item.
10:13:28 <shachaf> (Well, half LAN half single-player.)
10:13:37 <shachaf> Deewiant: You can trade for keys pretty easily.
10:13:43 <Deewiant> I've never traded for anything.
10:13:53 <shachaf> Well, that makes things a bit more difficult. :-)
10:14:02 <shachaf> Anyway, smiters can do the Übers very easily.
10:14:09 <kallisti> stop talking about D2 and talk about SC2 instead so I can make insightful comments.
10:14:23 <shachaf> No.
10:14:31 <shachaf> I'll talk about RA2, though.
10:14:33 <kallisti> did you know that they're /removing/ the carrier from the next expansion?
10:14:47 <shachaf> How 'bout them Kirovs?
10:14:50 <monqy> is that the thing that does the thing
10:14:55 <kallisti> despite it being like a starcraft classic.
10:15:11 <fizzie> Also the character build names are ridiculous. "Hammerdin." "Javazon."
10:15:18 <kallisti> monqy: it's a big yellow alien ship that spits out smaller little robotic alien ships that shoot things with blue lasers.
10:15:21 <shachaf> fizzie: Well, yes.
10:15:22 <monqy> ah yes those things
10:15:37 <kallisti> monqy: you could mass up a few of them and unleash giant swarms of blue lasers on everything.
10:15:39 <shachaf> fizzie: On the other hand, what would you call them?
10:15:46 <monqy> and you had to press the button to make them do the thing right
10:15:50 <monqy> ahhh, the button
10:15:53 <kallisti> monqy: except in sc2 they made carriers more or less the least effective protoss air unit.
10:16:05 <monqy> cries
10:16:11 <fizzie> "Paladin specializing in the Blessed Hammer skill as his core competency", of course.
10:16:28 <monqy> how could they
10:16:45 <kallisti> it's no big deal it's probably a good idea unless they can make the carrier viable again.
10:16:58 <kallisti> but they're making this new air unit that shoots like big blue shocky orbs.
10:17:05 <shachaf> fizzie: Why didn't you do the multiplayer thing?
10:17:14 <monqy> do the big blue shocky orbs fly around and shoot more shocky orbs
10:17:18 <kallisti> monqy: no
10:17:21 <fizzie> shachaf: That would involve other people.
10:17:26 <monqy> then what will fill the void in my heart
10:17:41 <kallisti> monqy: I'm not really sure why they're giving protoss air units more anti-air-ness. They should improve the air-to-ground.
10:17:46 <kallisti> monqy: by, say, improving carriers.
10:17:52 <kallisti> monqy: void rays.
10:18:07 <monqy> sounds stylish
10:18:07 <kallisti> they shoot blue lasers.
10:18:16 <monqy> void lasers?
10:18:21 <kallisti> actually, yes.
10:18:23 <fizzie> I just played on battle.net in a game called "befunge" with a password of some randomly chosen name of a befunge example program from catseye. :p
10:18:26 <monqy> brilliant
10:18:28 <elliott> I like how this superficially resembles an equal two-party conversation.
10:18:39 <kallisti> fizzie: was it a single-player game? :P
10:18:55 <shachaf> fizzie: Right.
10:18:56 <elliott> fizzie: Online single player?
10:18:58 <kallisti> elliott: oh? it does?
10:19:00 <fizzie> elliott: Right.
10:19:05 <elliott> fizzie: Is this what being old feels like?
10:19:16 <kallisti> elliott: yes. ;_;
10:19:24 <shachaf> elliott: You know what being old feels like.
10:20:08 <kallisti> hi
10:20:46 <kallisti> monqy: also they're continuing to give terran more ridiculous shit as always.
10:20:53 <monqy> good good
10:21:26 <kallisti> such as giving their little flame-thrower-equipped land rover things the ability to become TRANSFORMERS
10:21:32 <monqy> and the zirg?
10:21:34 <kallisti> terran is like transformers: the race
10:21:42 <kallisti> except it's actually just people
10:21:45 <kallisti> with things that transform.
10:21:52 <monqy> close enough
10:21:54 <kallisti> http://starcraft.wikia.com/wiki/Battle_hellion
10:23:01 <monqy> ah, those wheels are not in good rover places
10:23:53 <kallisti> I like how changing into a walker suddenly makes them more powerful and heavier armored.
10:24:14 <monqy> does it
10:24:26 <kallisti> yes
10:25:21 <monqy> sounds likeable indeed
10:26:18 -!- Slereah_ has quit (Ping timeout: 252 seconds).
10:26:46 -!- elliott has quit (Read error: Connection reset by peer).
10:28:39 -!- elliott has joined.
10:30:04 -!- Slereah_ has joined.
10:35:53 -!- itidus22 has joined.
10:37:01 -!- GreaseMonkey has quit (Quit: The Other Game).
10:39:06 -!- itidus20 has quit (Ping timeout: 252 seconds).
10:50:54 <elliott> I bet the fizzie uses the damnu too.
11:00:35 -!- Ngevd has quit (Ping timeout: 252 seconds).
11:02:34 <Deewiant> Is there software that is actually called damnu
11:10:37 <elliott> Deewiant: Doubt it
11:10:53 <Deewiant> Shame
11:14:34 -!- monqy has quit (Quit: hello).
11:14:39 <elliott> Deewiant: But if I write a menu...
11:16:22 -!- Jafet has quit (Ping timeout: 240 seconds).
11:17:17 -!- Jafet has joined.
11:17:37 -!- amca has quit (Quit: Farewell).
11:18:56 <fizzie> elliott: But why would you write a menu application ais523 can't use?
11:19:56 <elliott> fizzie: REVENGE.
11:20:02 <elliott> Anyway, you're damning the program and/or system, not yourself.
11:20:11 <elliott> $ damnu
11:27:03 <elliott> Anyway, fizzie has done that thing where he doesn't deny my allegations, so I'll assume they're true.
11:36:14 <elliott> To-day feels like a day for either writing menus or something or writing Markov code.
11:36:19 <elliott> fizzie: Remember my adventures with Markov code?
11:38:25 -!- tuubow has quit (Ping timeout: 240 seconds).
11:52:04 -!- Jafet1 has joined.
11:52:10 -!- Jafet1 has quit (Changing host).
11:52:10 -!- Jafet1 has joined.
11:53:45 -!- Jafet has quit (Ping timeout: 240 seconds).
12:10:11 -!- Jafet has joined.
12:12:34 -!- Jafet1 has quit (Ping timeout: 240 seconds).
12:15:38 -!- Jafet has quit (Read error: Connection reset by peer).
12:19:04 -!- Jafet has joined.
12:34:02 -!- Jafet has quit (Quit: Leaving.).
12:35:10 -!- Sgeo has quit (Read error: Connection reset by peer).
12:35:45 -!- derdon has joined.
12:37:38 <elliott> Gah, terminal default colours are so bad
12:37:55 <elliott> It is impossible to select a background for which the default rxvt blue and yellow colours are both legible on
12:38:27 <Deewiant> I just change the blues
12:38:33 <Deewiant> And use black
12:38:36 <Deewiant> As the background
12:43:36 -!- myndzi\ has joined.
12:43:45 -!- shachaf_ has joined.
12:44:20 -!- Slereah has joined.
12:45:31 -!- Zetro_ has joined.
12:47:01 -!- elliott has quit (Ping timeout: 244 seconds).
12:47:01 -!- comex has quit (Ping timeout: 244 seconds).
12:47:02 -!- SimonRC has quit (Ping timeout: 244 seconds).
12:47:02 -!- kallisti has quit (Ping timeout: 244 seconds).
12:47:03 -!- FireFly has quit (Ping timeout: 244 seconds).
12:47:07 -!- elliott has joined.
12:47:13 -!- elliott has quit (Changing host).
12:47:13 -!- elliott has joined.
12:47:19 -!- Slereah_ has quit (Ping timeout: 240 seconds).
12:47:19 -!- Zetro has quit (Ping timeout: 240 seconds).
12:47:19 -!- mtve has quit (Ping timeout: 240 seconds).
12:47:20 -!- myndzi has quit (Ping timeout: 240 seconds).
12:47:20 -!- shachaf has quit (Ping timeout: 240 seconds).
12:47:21 -!- Zetro_ has changed nick to Zetro.
12:47:21 -!- SimonRC_ has joined.
12:47:37 -!- kallisti has joined.
12:47:37 -!- kallisti has quit (Changing host).
12:47:37 -!- kallisti has joined.
12:48:12 -!- comex` has joined.
12:49:14 -!- FireFly has joined.
12:51:12 -!- mtve has joined.
12:56:22 -!- Jafet has joined.
13:06:23 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:16:24 <elliott> <Deewiant> I just change the blues
13:16:25 <elliott> <Deewiant> And use black
13:16:25 <elliott> <Deewiant> As the background
13:16:32 <elliott> Deewiant: So, ~20% of the total colours
13:16:48 <elliott> Okay, actually more like 10%
13:16:56 <elliott> Assuming you count regular and intense as separate
13:18:05 <Deewiant> I change those two
13:18:25 <Deewiant> And I find it satisfactory
13:18:28 <elliott> Three
13:18:31 <elliott> Blue 1, blue 2, black
13:18:35 <elliott> Well, "background"
13:18:55 <elliott> Really what I want is a coherent theme like zenburn, but less ugly
13:19:23 <elliott> Something #111-#333ish as the background, off-white as foreground, and pleasant non-completely-saturated choices for the rest
13:19:30 <Deewiant> I just set the dark theme somehow I think
13:19:31 <elliott> But I don't know where to find such a thing with a decent number of ports.
13:33:13 -!- derdon has quit (Remote host closed the connection).
13:59:19 -!- boily has joined.
14:20:34 -!- Ngevd has joined.
14:20:51 <Ngevd> Hello!
14:20:55 <Ngevd> ...
14:21:04 -!- Ngevd has quit (Client Quit).
14:23:59 -!- Ngevd has joined.
14:24:35 -!- Ngevd has quit (Client Quit).
14:25:42 -!- Ngevd has joined.
14:32:46 <Deewiant> urxvt.background: #000000
14:32:46 <Deewiant> urxvt.foreground: #ffffff
14:32:49 <Deewiant> urxvt.color4: #0040ff
14:32:49 <Deewiant> urxvt.color12: #5c5cff
14:34:33 <Ngevd> Hello!
14:35:48 -!- MSleep has changed nick to MDude.
14:36:07 -!- itidus20 has joined.
14:36:42 <elliott> Hmm, I think I am rather unlikely to reach my target for today unless that bounty is given.
14:38:25 <Ngevd> @ping
14:38:25 <lambdabot> pong
14:38:31 <Ngevd> not good
14:38:47 -!- itidus22 has quit (Ping timeout: 240 seconds).
14:44:30 <fizzie> Deewiant: http://p.zem.fi/g8qr -- I have no idea how I've ended up with this particular list.
14:44:54 <fizzie> It's almost regular except not quite.
14:45:19 <fizzie> That one damnable out-of-place 55.
14:47:02 -!- Jafet has quit (Ping timeout: 245 seconds).
14:56:08 -!- itidus20 has quit (Read error: Connection timed out).
14:56:47 -!- itidus20 has joined.
14:57:51 <elliott> fizzie: Such ad-hocery. :(
14:58:03 <Ngevd> How are bytepusher keyboards normally mapped to QWERTY keyboards?
15:02:18 <fizzie> Bytepusher is actually used?
15:03:56 <Ngevd> @ping
15:03:56 <lambdabot> pong
15:04:08 <Ngevd> OK, that is bad
15:04:10 -!- Ngevd has quit (Quit: Goodbye).
15:04:31 -!- Ngevd has joined.
15:12:53 <tswett> I know all the Finnish.
15:13:12 <tswett> I can say words like "körsvätsiiti".
15:13:39 <tswett> And "lauskataa".
15:13:53 <tswett> Neither of which is a word any true Finn knows. Therefore, I know more Finnish than the Finns.
15:15:04 <fizzie> Ngevd: The first implementation listed has an initial first-run configuration thing where it prompts you to press the corresponding keys; then it saves those in a config file.
15:17:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:23:12 <Deewiant> tswett: I think you also need to know all the Finnish that the Finns know for that to be true.
15:27:45 <tswett> No, don't be ridikyliistä.
15:28:30 <Deewiant> I'd've gone with "ridikulöösi"
15:32:03 -!- elliott has quit (Ping timeout: 252 seconds).
15:33:35 <Ngevd> fizzie, hmmm
15:36:44 -!- Ngevd has quit (Quit: Goodbye).
15:42:49 -!- copumpkin has joined.
16:05:19 -!- Phantom_Hoover has joined.
16:06:59 <Phantom_Hoover> http://www.reddit.com/r/Minecraft/comments/nhcuf/hey_rminecraft_do_you_know_of_our_irc_channel/c398im6?context=3
16:06:59 <lambdabot> Phantom_Hoover: You have 13 new messages. '/msg lambdabot @messages' to read them.
16:07:19 <Phantom_Hoover> TkTech strikes back, and he exacts a terrible reven— wait no it's hilariously petty and largely lies.
16:08:47 -!- op_4 has quit (Ping timeout: 240 seconds).
16:09:53 -!- op_4 has joined.
16:11:19 -!- augur has quit (Remote host closed the connection).
16:12:19 -!- augur has joined.
16:16:34 -!- augur has quit (Ping timeout: 240 seconds).
16:19:39 <Phantom_Hoover> HOW HE TAKES HIS POUND OF FLESH
16:26:31 -!- op_4 has quit (Ping timeout: 244 seconds).
16:28:04 -!- op_4 has joined.
16:34:10 -!- itidus20 has quit (Quit: Leaving).
16:49:20 -!- augur has joined.
16:56:45 <Gregor> lollllllllllllllllllllllllllllllll so Cygwin's setup.exe program doesn't require administrator rights to perform an update, except that Windows 7 has a "security feature" that it simply will not allow any program with the substring "setup" in its name to be run without administrator privileges.
16:57:41 -!- kmc has joined.
17:05:32 <Phantom_Hoover> Gregor, ...
17:07:01 <Deewiant> The reason being, I guess, that programs that don't have manifest files describing whether or not they need administrator rights normally always get run without said rights, but setup programs generally need them.
17:07:42 <Gregor> Windows is such a crapchute
17:15:46 -!- itidus21 has joined.
17:37:14 <Phantom_Hoover> Oh, incidentally, biological armageddon is now a taped-up plastic tub in a skip somewhere in Edinburgh away from us.
18:19:44 -!- shachaf_ has changed nick to shachaf.
18:28:53 -!- Ngevd has joined.
18:32:06 <itidus21> "<elliott> How about this: A life where you give birth to someone who does something can be turned into a life where you do that thing!"
18:32:17 <itidus21> "<elliott> Thank god I can just breed relentlessly and enslave my children to write @, and it'll be equivalent to writing @ myself."
18:32:37 <itidus21> humm
18:33:27 <itidus21> i have another tack on this whole idea but i don't have a good way to say it.
18:34:59 <itidus21> suppose that the ultimate goal is to teach teachers.
18:36:20 <itidus21> after sufficient iterations, there will be noone who doesn't know how to teach.
18:36:34 <itidus21> unless you account for new people always being born
18:38:28 <itidus21> at this point, the ultimate goal having been brought to it's completion, what does the ultimate goal change to
18:39:28 <itidus21> ------- that one is a bit confusing.. another way i have of thinking about it is
18:41:41 <itidus21> suppose the ultimate goal is to save people from their oppressors. and then having saved them, the saved ones adopt the ultimate goal of saving others from oppressors until finally everyone has been saved from oppressors
18:42:23 <itidus21> now with everyone being saved from oppressors, the current ultimate goal becomes obsolete and so what is everyone supposed to do next?
18:44:08 <itidus21> --------- i guess in practice it doesn't work quite like that. but so applying this to the "purpose" of having more children.. so that those children will have more children
18:46:30 <itidus21> and, with offspring having offspring ad nauseum... one must inevitably ask what other end these people should be directing their energy towards
18:49:13 <itidus21> -------- so the way i see it, these situations i have described create a kind of space or level upon which other spaces or levels can be built up, analagous to the postal system only being good for delivering packages
18:49:22 <itidus21> and packages only being good for containing contents
18:53:38 <itidus21> i don't hate packaging, but i would be unlikely to pay much for a cardboard box with paint on it (unless it was like a toy)
18:54:36 <itidus21> and in the case of a bill, most of the text is there for legal purposes and the only interesting figure is the number
18:56:30 <itidus21> it's not like anyone else was talking! rant over
19:00:53 -!- zzo38 has joined.
19:01:10 -!- zzo38 has left.
19:01:13 -!- zzo38 has joined.
19:02:44 -!- kmc has quit (Quit: Leaving).
19:02:49 <zzo38> Rename the file.
19:04:15 <zzo38> The second BytePusher implementation listed has a mode where you enter the keys it tells you the SDL numbers, and then you have to make the configuration file yourself (it currently has no feature to record one itself).
19:11:12 <zzo38> The third one, I am not sure. Maybe it has built-in keyboard codes that require recompiling to change or something like that I don't know
19:13:08 <Ngevd> I started a TVTropes binge about half an hour ago
19:13:18 <Ngevd> The next thing I knew, I was on Wikiquotes
19:14:43 <zzo38> I think (ReadthisT ((,) (Last x))) is like (State x) in some ways
19:14:55 -!- zzo38 has quit (Quit: ***Terminal out of multicolor paper***).
19:17:58 <fizzie> Ngevd: Being quoted, or reading the quotes?
19:18:06 <Ngevd> The latter
19:18:11 <Ngevd> Unfortunately
19:18:24 <Ngevd> `pastequotes
19:18:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20096
19:19:53 <Ngevd> `quote 8
19:19:56 <HackEgo> 8) <SimonRC> TODO: sex life
19:20:01 <Ngevd> Who is SimonRC?
19:22:21 <Ngevd> Also, 507 isn't very funny
19:28:29 -!- op_4 has quit (Quit: "nothing so gives the illusion of intelligence as personal association with large sums").
19:28:35 <Ngevd> itidus21, did you ever figure out lambda calculus?
19:29:05 <itidus21> Ngevd: the closest i came to understanding it is that it's possible to use it without understanding it
19:29:18 <Ngevd> Okay
19:29:33 <Ngevd> B-)
19:29:36 <itidus21> that people probably use it without understanding it
19:30:04 <itidus21> just as one can use arithmetic without really knowing what secrets are hidden in the '+'
19:30:32 <Ngevd> `qoute 672
19:30:34 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: qoute: not found
19:30:36 <Ngevd> Wait
19:30:44 <Ngevd> quote isn't spelt like that
19:30:48 <Ngevd> `quote 672
19:30:51 <HackEgo> 672) <HackEgo> 678) <Ngevd> Dammit, Gregor, this is not the time to fall in love <HackEgo> 187) <alise> Gregor: You should never have got her pregnant. <Gregor> what whaaaaaaaaaaaat
19:34:10 <itidus21> there was some guys talking about a related thing
19:34:52 <itidus21> "<Phantom_Hoover> You'd think somebody'd have pinned down this whole arithmetic thing before then."
19:35:54 <itidus21> so, with that kind of topic in mind, people are able to make use of something without understanding it
19:36:13 <itidus21> another really great example is electricity.
19:36:15 <Gregor> `pastelogs Gregor> what whaaaaa
19:36:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2169
19:37:12 <itidus21> you just need to plug in a vaccuum cleaner, flick the switch at the wall thus extending the circuit, and then flick the switch on the actual vaccuum cleaner thus completing the circuit
19:37:56 <itidus21> and you can have this blackbox view of things and use the vaccuum cleaner quite proficiently without even knowing what an electron is
19:38:22 <itidus21> certainly you don't need to know that a circuit is being completed
19:38:58 <Ngevd> You can use a computer without having a clue how programs are made
19:39:16 <Gregor> I can't.
19:39:25 <Ngevd> It was a generic "you"
19:39:35 <itidus21> and, generic_you can use lambda calculus without a deep philosophical grasp of it
19:43:46 <itidus21> it is however fairly unclear to what ends a person might do so
19:44:01 <itidus21> but do i really wanna do this
19:44:47 <itidus21> my whole resistance to understanding lambda is just another way i am resistant lately to reading or understanding anything
19:45:23 <itidus21> it's elementary that someone in a lazy state of mind won't try to learn much
19:59:06 <Ngevd> Lambda calculus is like a bunch of boxes that turn boxes into boxes
20:00:20 <Phantom_Hoover> It's like birds???
20:00:43 <Ngevd> Screw this, I'm recording a vlog about lambda calculus
20:00:50 <Ngevd> TO THE YOUTUBINATOR
20:00:55 <Phantom_Hoover> Make sure you do bird sounds.
20:01:14 <Ngevd> Hey, cool, I can upload vids longer than 15 mins now
20:01:16 <itidus21> i am not typical
20:01:25 <itidus21> you don't need to explain to me
20:01:49 <itidus21> i mean, i have some very peculiar shortcomings in comprehension of things
20:02:56 <Ngevd> It's 8 PM on Monday
20:02:59 <Ngevd> That means it's University Challenge time
20:03:03 -!- Ngevd has quit (Quit: bye).
20:03:19 <Phantom_Hoover> For me, that means it's maths time.
20:03:28 <itidus21> its not really like birds or boxes :-)
20:03:34 <itidus21> except in a mary poppins sense
20:03:41 -!- kmc has joined.
20:04:06 <itidus21> i know those analogies are done with good intentions though
20:05:24 <itidus21> http://simple.wikipedia.org/wiki/Lambda_calculus heh
20:11:10 <itidus21> agh.. now trying to understand what is meant by Entscheidungsproblem is difficult too
20:12:26 <itidus21> is arithmetic a formal language, and 2+2=4 is a logical statement in that language, and the truth value of that statement is true?
20:13:03 <itidus21> 2+2=5 being another logical statement in that language whose truth value is false
20:15:21 -!- kmc has quit (Quit: Leaving).
20:16:02 -!- ais523 has joined.
20:19:59 <itidus21> wolfram alpha is more inspired "Does there exist an algorithm for deciding whether or not a specific mathematical assertion does or does not have a proof?"
20:22:13 <ais523> itidus21: this statement is not provable
20:22:48 <itidus21> hmm
20:23:09 <itidus21> is this related to the negative proof problem with things like gods?
20:23:29 <ais523> Gödel's theorem is proved by showing that "this statement is not provable in system S" is expressible in system S, for any sufficiently expressive formal system
20:23:30 <itidus21> hmm i won't say gods..
20:23:43 <itidus21> is this related to the negative proof problem with things like wood elves?
20:23:58 <ais523> this implies that a system can't always work out whether things expressed in that system are provable, because to do so would create a paradox
20:23:58 <itidus21> "although you haven't seen a wood elf in the woods you can't prove there aren't any"
20:24:59 <itidus21> or rather
20:25:11 <itidus21> "although you haven't seen a wood elf in the woods, that doesn't prove there aren't any"
20:27:38 <ais523> itidus21: hmm… if you saw a ninja in the woods, would it prove that there are no ninjas in the woods?
20:27:46 <ais523> on the basis that, if there /were/ a ninja there, you wouldn't be able to see them?
20:28:43 <itidus21> i realize that gods are not some large animals floating in space
20:29:46 <itidus21> and i didn't want to imply some kind of atheism when i am more uncertain
20:30:10 <itidus21> but about ninjas, i dunno man :D
20:31:07 <itidus21> the property of being unobservable would make a thing very difficult indeed to observe
20:32:28 -!- Ngevd has joined.
20:32:31 <Ngevd> Hello!
20:37:40 <itidus21> so i wonder what is non computable
20:37:52 <Ngevd> Halting problem
20:39:26 <Ngevd> Linux isn't turning on my webcam.
20:39:31 <Ngevd> Ideas how to fix?
20:39:34 -!- pikhq has quit (Ping timeout: 240 seconds).
20:40:20 <itidus21> is a continuous curve from the inside of a jordan curve to the outside of a jordan curve which does not intersect with the jordan curve non-computable?
20:40:32 <itidus21> or is it merely invalid/impossible :P
20:41:31 <itidus21> i guess thats a terrible example.. can be disregarded
20:41:38 <Ngevd> The Jordan curve is a continuous loop
20:41:38 <Ngevd> So invalid
20:41:54 <Ngevd> brb
20:41:56 -!- Ngevd has quit (Quit: Leaving).
20:47:00 <itidus21> ok i see that without realizing it, that the example i gave of 2+2=4 and 2+2=5 actually falls under presburger arithmetic
20:49:07 -!- Ngevd has joined.
20:49:50 <Ngevd> Hello!
20:50:23 <Gregor> CC=cl ./configure
20:50:25 <Gregor> Best idea?
20:53:16 <Ngevd> YES
20:53:26 <Ngevd> Note that I have no idea what that will do
20:53:37 <Gregor> cl is MSVC's compiler frontend.
21:11:04 <ais523> I think that configure is at least vaguely aware of cl
21:11:22 <ais523> I'm not sure how fully it supports it, though
21:11:37 <ais523> also, cl is not nearly insane as MSVC
21:11:41 <ais523> *not nearly as insane as
21:11:56 <ais523> it's pretty typical as old and vaguely cranky ccs go
21:12:15 <Gregor> Actually configure seems to support cl quite well.
21:12:19 <Gregor> Which is frankly disappointing.
21:12:26 <ais523> Gregor: it supports everything quite well, that's the point
21:12:34 <Gregor> Yup
21:12:37 <ais523> it supports compilers that are /way/ more insane than cl
21:12:46 <Gregor> But like, who uses cl from the command line, ever
21:13:00 <ais523> Gregor: I do when I'm trying to use the Microsoft compiler
21:13:05 <ais523> it saves on having to figure out MSVC
21:13:42 <Ngevd> @ping
21:13:42 <lambdabot> pong
21:15:58 <Gregor> ais523: 'struth
21:16:19 <ais523> Gregor: I've seen a computer freeze for half an hour as a result of opening MSVC
21:16:29 <ais523> apparently it was because the network switch had broken
21:16:40 <ais523> and MSVC didn't handle the resulting error condition at all sensibly
21:21:13 <ais523> apparently, it put a separate 30 second timeout waiting for each file it was trying to load to load
21:21:26 <ais523> as in, it waited 30 seconds before realizing it couldn't read the first file, another 30 seconds before the second, etc
21:21:33 <ais523> and apparently it was trying to read around 60 files
21:26:27 -!- variable has joined.
21:30:41 <Phantom_Hoover> Ngevd, you are doing Further Maths, yes?
21:32:55 <Ngevd> Yes
21:33:55 <Ngevd> Phantom_Hoover, why do you ask?
21:33:58 <itidus21> ??
21:34:45 <Phantom_Hoover> Ngevd, because I have to do STEP III which is based on Further Maths and hence contains a fair bit of stuff I haven't done and so I hate you and also all of you other English bastareds.
21:34:47 <Phantom_Hoover> Also
21:34:49 <Phantom_Hoover> bastards
21:34:59 <itidus21> is this high school stuff you guys are talking about?
21:35:32 -!- boily has quit (Read error: Operation timed out).
21:35:42 <Phantom_Hoover> Yes.
21:36:14 <itidus21> i'm so lowly
21:36:18 <Gregor> $ cygpath -w popcount.c
21:36:18 <Gregor> C:\cygwin\home\Gregor\deps\gmp-5.0.2\mpn\generic\popham.c
21:36:20 <Gregor> Really, cygpath
21:36:24 <Gregor> Really.
21:36:36 <itidus21> i'm 29, i have no excuses for being the least knowledgable
21:37:10 <Phantom_Hoover> itidus21, I didn't actually mention anything that either STEP III or Further Maths contain?
21:38:05 <itidus21> isn't further maths a relatively dumbed down class?
21:38:24 <Phantom_Hoover> Dumbed down relative to our SUPERIOR SCOTTISH CURRICULUM, yes.
21:38:41 <Ngevd> Phantom_Hoover, do you... want any help?
21:38:53 <Phantom_Hoover> But also English people are stupid so they do more school so they also do hyperbolic trig and general binomial series for some reason??
21:39:30 <itidus21> i only have trivial algebra skills...
21:40:02 <itidus21> ahem..
21:40:07 <Phantom_Hoover> So do people taking Further Maths *badum-tshh*
21:40:33 <Ngevd> ...
21:40:34 <Ngevd> Hey!
21:40:36 <itidus21> i recall in high school the smart kids took classes named maths methods and specialist maths
21:41:18 <itidus21> ^math methods maybe
21:43:52 <itidus21> in the end it's work to learn
21:54:46 -!- Patashu has joined.
21:58:00 -!- variable has quit (Quit: I found a 1 /dev/zero).
21:59:54 -!- Guest52454 has joined.
22:00:42 -!- Guest52454 has quit (Changing host).
22:00:43 -!- Guest52454 has joined.
22:00:45 -!- Guest52454 has changed nick to variable.
22:01:36 -!- variable has quit (Excess Flood).
22:02:37 -!- variable has joined.
22:02:59 -!- variable has quit (Excess Flood).
22:03:13 -!- variable has joined.
22:04:06 <ais523> hmm, Kim Jong-Il has died
22:04:11 <ais523> official story is that it's of overwork
22:05:42 <Ngevd> Well, goodnight
22:05:44 -!- Ngevd has quit (Quit: Goodbye).
22:06:43 -!- pikhq has joined.
22:07:52 -!- derdon has joined.
22:07:59 <pikhq> Power!
22:16:29 <Phantom_Hoover> pikhq has finally taken over the US.
22:16:45 <Phantom_Hoover> Death camps for all conservatives are being set up as we speak.
22:20:48 -!- Jafet has joined.
22:22:51 <twice11> Are they strong enough to keep Rick Perry inside?
22:23:58 <pikhq> No. Which is why we have estabilished his facility at the newly estabilished test facility for nuclear space travel.
22:35:20 <Phantom_Hoover> How does that work?
22:35:42 <Phantom_Hoover> I don't think I've ever seen anyone suggest Orion-style surface-to-orbit transit.
22:47:43 -!- zzo38 has joined.
22:50:27 <zzo38> Do you like this message?
22:50:34 <zzo38> Do you like this question?
22:52:02 <pikhq> Phantom_Hoover: It works... Poorly.
22:52:08 -!- monqy has joined.
22:52:39 <Phantom_Hoover> I suspected as much, given that you probably know roughly as much about rocketry as quantum physics.
22:53:10 <pikhq> Phantom_Hoover: I'm neither a rocket scientist nor a physicist, so yeah. :)
22:53:45 <pikhq> Phantom_Hoover: The main benefit of Orion-style surface-to-orbit transit is being able to make notable swaths of the Earth uninhabitable.
22:53:47 <zzo38> Do you know how to make a bomb which is powerful enough to destroy the entire Earth and break it into a million approximately equal pieces?
22:54:10 <Phantom_Hoover> zzo38, suggest you ask Sam Hughes.
22:54:27 <pikhq> Agreed.
22:54:31 <pikhq> http://qntm.org/destroy
23:04:44 -!- Sgeo has joined.
23:12:04 <kallisti> Phantom_Hoover: quantum physics!? that's like rocket science!
23:12:25 <Sgeo> Do IORefs physically store their values, or are the values stored in the RealWorld somewhere and the IORef is just an index?
23:12:37 <zzo38> Quantum physics and rocket science are different, isn't it?
23:16:13 <itidus21> "A rocket scientist? you might as well say I am a toll collector rocket scientisthow humiliating!" sheldon cooper
23:17:04 <Phantom_Hoover> zzo38, you'd need roughly 2.24*10^32J to do it, BtW.
23:18:37 <itidus21> Other, less scientifically probable ways that Earth could be destroyed #8 Destroyed by God
23:18:53 <itidus21> #jesus
23:20:10 <kallisti> I had a dream that my irc client suddenly started telling people what music I was listening to.
23:20:15 <kallisti> it was horrible.
23:21:21 <itidus21> what i am listening to can be influenced to give a false impression
23:21:52 <Phantom_Hoover> Thin strands of glass are surprisingly flexible.
23:22:10 <itidus21> but i imagine also surprisngly sharp
23:22:23 <Phantom_Hoover> The ones I made weren't actually.
23:22:44 <kallisti> wat
23:23:03 <Phantom_Hoover> Since I melted a couple of thin glass tubes together and stretched them out while they were still liquid; the edge was smooth.
23:23:12 -!- kallisti has quit (Quit: Reconnecting).
23:23:26 -!- kallisti has joined.
23:23:26 -!- kallisti has quit (Changing host).
23:23:27 -!- kallisti has joined.
23:23:33 <Phantom_Hoover> And it could be bent a surprisingly large amount without breaking.
23:24:28 <itidus21> F:\music mp3\Loituma\Loituma - Kuutamolla\Laulu Laiskana Pitävi.mp3
23:24:41 <itidus21> "The Kanteletar," a collection of traditional poetry, here advises the young women not to sing too much if they want to get on in life. -- hmm
23:25:00 <Phantom_Hoover> There's nothing I hate more in a woman than incessant singing.
23:26:14 * itidus21 vies for pro-finland brownie points.
23:28:20 <Phantom_Hoover> Whaaat, ironing clothes is an example of a glass transition.
23:30:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:40:16 * Phantom_Hoover notes that the North Korean official website's 'forum' section is in fact a blog.
23:41:07 <monqy> ahh, that website
23:41:10 <monqy> good website
23:41:40 <Phantom_Hoover> Best website?
23:41:51 <monqy> yes yes
23:41:54 <Phantom_Hoover> It doesn't care about this decadent Western 'web' crap.
23:42:17 <kallisti> too much Haskell.
23:42:37 <monqy> does it have buttons made of flash
23:42:40 -!- Klisz has joined.
23:42:41 <monqy> in places
23:42:44 <Phantom_Hoover> monqy, no.
23:42:47 <monqy> and I remember it having a quality store too
23:42:49 <Phantom_Hoover> It just mislabels its sections.
23:42:54 <Phantom_Hoover> OMG there's a store??
23:42:58 <kallisti> I asked on Python how to get a list of consecutive pairs and someone said i = iter(list); izip(i, i)
23:43:01 -!- myndzi\ has changed nick to myndzi.
23:43:06 <kallisti> and I argued that that wasn't what I wanted
23:43:14 <monqy> I remember in some parts it had flash buttons, maybe not on the main navigation thing, but some page, somewhere
23:43:28 <kallisti> forgetting about iterators being mutable. :P
23:44:36 <Phantom_Hoover> OMFG there's a gift shop I want one of those T-shirts so much.
23:45:29 -!- comex` has changed nick to comex.
23:46:04 <Phantom_Hoover> comex!
23:46:27 <Phantom_Hoover> will you buy me an official north korea t-shirt for christmas?
23:46:48 <comex> okay
23:48:03 <Phantom_Hoover> yaaaaaaaaaaaaaaaay
23:48:17 <Phantom_Hoover> friendship comex
23:48:21 <Phantom_Hoover> north korea friends
23:48:37 <monqy> http://www.korea-dpr.com/music.htm ok i found some flash buttons
23:49:09 <monqy> oh and the buttons on the top appear to be flash too
23:53:47 * Phantom_Hoover → sleep
23:53:50 -!- Phantom_Hoover has quit (Quit: Leaving).
23:55:13 -!- derdon has quit (Remote host closed the connection).
23:59:32 <Sgeo> I don't think that's an official site?
2011-12-20
00:01:46 <zzo38> I thought of an idea for class of Dungeons&Dragons game. First, decide on a date in game and a date in real time and map those together as reference points. Ensure you have ephemeris data for those dates. Make a class where effects of magic and stuff you can cast depend on the positions of planets and houses and so on.
00:03:48 <kallisti> you could call it real-estate-astronomancer
00:05:11 <kallisti> oh wait, wrong kind of house.
00:05:38 <zzo38> kallisti: Yes, wrong kind of house.
00:06:13 <zzo38> Note I mean astrological houses, not buildings. Astrological houses measure the ecliptic position of rising and setting objects, and the midheaven (highest point of an object in the sky; the same angle as the zenith but not necessarily directly overhead)
00:06:39 <kallisti> yes.
00:07:15 <kallisti> you should redivide the twelve houses into four and then name after Hogwarts' Houses.
00:07:45 <zzo38> There have been a few similar ideas, such as spellcaster features where some spells can be cast only in daytime or only in nighttime. But my idea involves many more things and stuff
00:07:46 <kallisti> you know, to simplify the game, and immerse the players.
00:08:30 <kallisti> zzo38: that's a cool, but likely difficult to use, class idea.
00:08:31 <zzo38> kallisti: I supppose redividing them into four is logical, since in most of the house system used, these four houses will be the same, even if the originals are different. However, I did not intend to simplify the game like that.
00:08:46 <zzo38> And yes, I know it can be difficult to use (especially without a computer).
00:08:58 <kallisti> zzo38: you'd probably want a few spells whose effects are relatively stable but with parameters depending on planet and house position.
00:09:16 <kallisti> and other spells whose effects vary wildly based on those.
00:10:16 <zzo38> Yes, those are ideas. My ideas were to make things chaotic and that you would require a lot of planning and other things to determine the best way to use the magic, so it cannot be used as easily as most magic in the game.
00:10:55 <kallisti> zzo38: still you could have simple magic based on simple rules.
00:11:38 <zzo38> However, I would probably keep the twelve houses, and have certain things you can use to change house system and other things sometimes, depending what you selected at level. And, of course, have restrictions on their use too.
00:11:49 <zzo38> kallisti: Yes; the rules do not have to be extremely complicated.
00:11:51 <kallisti> for example one could be based on the position of three planets, with the position of each planet determining range, damage, and effect (with a cycle of two or three different effects)
00:12:19 <kallisti> you could have a buff spell whose effect is based on the phase of the moon.
00:13:47 <zzo38> Well, that is one thing, for damaging spells. However I was not thinking of damaging spells necessarily. (In fact, playing the game, I rarely use damaging spells.) But I was also thinking of something very different. Like, have a new kind of metamagic changing which way parameters are selected, and have spells keyed to a planet, to a sign, whatever.
00:14:09 <zzo38> And then each one, they have different effects, which are related but that doesn't mean one will be a good substitution for another, necessarily!
00:15:01 <zzo38> Maybe it is advantageous to wait, or to not wait too long, or doing entirely different kind of things, or move to another location, etc
00:20:12 <ais523> now I'm confused; I just typed "lev" into Firefox's awesomebar, and then had no idea why or what it is I'd hoped to find
00:20:31 <zzo38> ais523: Then cancel it and try again.
00:20:37 <ais523> zzo38: I did
00:22:24 <kallisti> ais523: awesomebar? that sounds pretty mythical.
00:22:34 <kallisti> if I type in Haskell or perl programs will it evaluate them?
00:22:40 <ais523> kallisti: it's the name for the history search thing
00:22:50 <ais523> it's actually pretty useful
00:22:52 <zzo38> kallisti: No, but it might evaluate Javascript programs if you type them in.
00:23:00 <ais523> right, it can also evaluate JS
00:23:14 <kallisti> with a javascript URI most likely?
00:24:11 <kallisti> do you think Google would get mad if I made a web service in which you can type in queries and it will perform extra functionionality that google doesn't do, but will then otherwise defer to a Google search?
00:24:37 <kallisti> I would just redirect them to the actual google query page, so it's not like I'm stealing their stuff or anything.
00:25:02 <zzo38> kallisti: In that case I doubt they will care much to sue you or anything.
00:25:14 <zzo38> If they don't like it they will simply make a referer block.
00:26:31 <kallisti> it'd be like wikipedia + google + W|A + programming language interpreters
00:33:54 <kallisti> zzo38: but yes I was thinking you could also do something similar to what you describe, using abstract stat values that are calculating and then used to determine spell parameters.
00:40:49 <kallisti> zzo38: you might like homestuck. It has astrology themes!
00:40:55 -!- tuubow has joined.
00:44:31 -!- augur has quit (Remote host closed the connection).
00:44:49 -!- copumpkin has joined.
00:45:31 -!- augur has joined.
00:49:57 -!- augur has quit (Ping timeout: 240 seconds).
00:51:33 <kallisti> oh... you know what I just realized.
00:52:59 <kallisti> the Trollian handles are all different genetic codes.
00:53:26 <kallisti> the abbreviations I mean. CG, GC, AT, GA, etc..
00:53:33 <kallisti> dunno why I didn't notice that.
00:54:38 <kallisti> so are the kids, after John changes his handle.
00:55:25 <kallisti> I wonder if there's any significance in base pairs. I don't think so.
00:56:13 <kallisti> Feferi is paired with Jade, Sollux is paired with Tavros, Aradia is paired with Rose. Yeah I don't see a connection.
00:56:59 <zzo38> In the Dungeons&Dragons game I play in, I have only one damaging spell which is Energy Ray. It does not do a lot of damage and has chance to miss, but it is useful because you can select which energy you want, such as to light things on fire in case you don't have any other fire.
01:08:02 <kallisti> it would be interesting to have a programming language with blocks that work like ~ATH
01:08:12 <zzo38> What does ~ATH means
01:08:15 <kallisti> so basically blocks form a queue, where a } closes the first block that was opened.
01:09:40 <kallisti> http://mspaintadventures.wikia.com/wiki/~ATH
01:11:43 <zzo38> One thing I thought of, for Dungeons&Dragons game, maybe one time I will be able to mix up some bad people group entire plan simply by adding duplicate cards to one of their deck of cards, or removing a few cards. If the guards like to play solitaire or something, or people play cards to win money, that might divert a lot of things due to time and so on.
01:12:05 -!- tuubow has quit (Ping timeout: 240 seconds).
01:14:20 -!- PiRSquared has joined.
01:19:38 <kallisti> oh god they're changing Facebook more.
01:21:43 <zzo38> Well, I don't use Facebook.
01:21:59 <zzo38> But I think FreeGeek Vancouver uses Facebook for some of their things.
01:29:16 <kallisti> oh, hmmm, apparently I can download an archive of all my Facebook stuff.
01:34:52 -!- cheater has joined.
01:35:46 -!- augur has joined.
01:35:56 -!- oerjan has joined.
01:38:18 <kallisti> > Product 3 `mappend` Product 5
01:38:19 <lambdabot> Product {getProduct = 15}
01:38:24 -!- Jafet has quit (Read error: Connection reset by peer).
01:38:53 <oerjan> *cough*
01:39:19 <kallisti> oerjan: why would I use that again?
01:39:30 <kallisti> when my function is /too/ general. :P
01:39:39 <oerjan> kallisti: to pass to something that requires a Monoid?
01:39:42 -!- Jafet has joined.
01:39:48 <oerjan> e.g. Writer
01:39:50 <kallisti> oerjan: right.
01:39:55 -!- cheater has quit (Ping timeout: 252 seconds).
01:40:32 <oerjan> my subtle lambdabot ping fails for the trivial reason of there being no messages :(
01:41:31 <oerjan> admittedly, Product seems like it would be rather rarely needed for something like that. Sum at least can be used to keep a count.
01:42:12 <oerjan> > mempty :: ((),()) -- i wonder if this exists
01:42:13 <lambdabot> ((),())
01:42:15 <oerjan> yay
01:42:52 <ais523> what monad is that an instance of?
01:42:53 <oerjan> > Data.Foldable.foldMap (Product &&& Sum) [1..5]
01:42:53 <lambdabot> (Product {getProduct = 120},Sum {getSum = 15})
01:42:58 <zzo38> I used Product in the monoidplus package to make instance of MonoidPlus and Semiring and Ring.
01:42:59 <ais523> are tuples a monad?
01:43:04 <kallisti> not that I know of.
01:43:04 <oerjan> ais523: monoid
01:43:13 <ais523> ah, I see
01:43:14 <oerjan> and yes, see my test above
01:43:15 <zzo38> ais523: In monoidplus, pairs are a monad.
01:43:18 <ais523> both start with m
01:43:21 <kallisti> > () `mappend` ()
01:43:22 <lambdabot> ()
01:43:27 <ais523> so it's hard to tell which from an abbreviation
01:43:31 <kallisti> well, technically (Monoid a, Monoid b) => (a, b)
01:43:33 <kallisti> is a Monoid
01:43:40 <kallisti> but not every tuple.
01:44:05 <oerjan> it's the obvious product monoid, product here in the algebra/category sense
01:44:06 -!- Jafet has quit (Ping timeout: 240 seconds).
01:44:07 -!- Jafet1 has joined.
01:44:58 <oerjan> zzo38: the monad for pairs does not treat both parts equally though, nor could it for type reasons.
01:45:38 <kallisti> oerjan: I'm guessing the second element is the monadified part?
01:45:41 <kallisti> if that makes sense..
01:45:53 <oerjan> you could _almost_ make an applicative that worked that way, although it would need a newtype wrapper for the type reasons.
01:46:18 <oerjan> kallisti: yes, the return value type argument always must be the last one
01:46:36 <oerjan> and (a,b) is an abbreviation for (,) a b
01:47:18 <kallisti> yes
01:47:51 <kallisti> you could flip though right?
01:48:03 <kallisti> type Flip t a b = t b a
01:48:29 <kallisti> or is there an easier way? (a ,) ??????
01:48:32 <kallisti> er
01:48:34 <kallisti> (, b)
01:48:35 <kallisti> no...
01:48:37 <oerjan> nope.
01:48:38 <kallisti> that doesn't look right.
01:48:43 <oerjan> you must use something like Flip.
01:49:14 <zzo38> oerjan: I know it doesn't treat both parts equally. The left part is a monoid
01:49:35 <zzo38> It is similar to Writer monad
01:49:36 <oerjan> it's a restriction on haskell's instance resolution to make it more tractable (technically they say that the alternative would require "type lambdas" and probably be undecidable)
01:50:04 <oerjan> zzo38: yes i know
01:51:10 <oerjan> and even if not undecidable, it would probably introduce rampant ambiguity.
01:53:09 <oerjan> btw such Flipping could make sense, e.g. for Either you might want to treat the Lefts as values sometimes.
01:53:33 <oerjan> i mean, it makes sense to have a kind of bimonad
01:54:20 <oerjan> it's a bit like doing CPS with two continuations, one for ordinary continuation and one for errors
01:54:31 <oerjan> which could itself be another example, i think.
01:55:18 -!- cheater has joined.
01:55:46 -!- oerjan has set topic: <itidus21> on a side note, [...] finland is very depressing and a bit of a matrix of plasma | http://codu.org/logs/_esoteric/.
01:58:45 -!- cheater has quit (Excess Flood).
01:58:51 <zzo38> Bimonad? What? There is functor, and return, and join, and then do you need another one join or what?
01:59:13 -!- cheater has joined.
01:59:38 <oerjan> zzo38: you'd have another full monad instance, but parametrized on the second last type parameter instead (so you would need Flip to make it a genuine monad)
02:00:41 <zzo38> O, OK. Then it would just be two monads I guess. And then you could, if you want to, have a way to flip the types and then use the new fmap, return, join, bind.
02:01:33 <zzo38> When are they going to make join into a class method?
02:01:36 <oerjan> instance Monad Flip Either a b where return x = Flip (Left x); Flip (Right e) >>= f = Flip (Right e); Flip (Left x) >>= f = f x
02:02:31 <oerjan> zzo38: i'm not sure it makes much sense before they make Monad a subclass of Functor, which won't happen before they get fully working default methods for superclasses
02:03:00 <oerjan> i think they have some of that working, but i'm not sure if it's enough.
02:03:06 <zzo38> Yes, they should also make Monad a subclass of Functor too.
02:03:18 <zzo38> But any monad is also applicative too.
02:03:37 <oerjan> because you cannot make a default for >>= in terms of join unless you have fmap too
02:03:55 <oerjan> yes, they would of course include Applicative in the chain
02:03:59 -!- cheater has quit (Ping timeout: 255 seconds).
02:04:32 <oerjan> *instance Monad (Flip Either a b) where ...
02:04:38 <oerjan> er
02:04:42 <oerjan> *instance Monad (Flip Either a) where ...
02:05:19 <zzo38> oerjan: Yes; you need fmap to make >>= in terms of join. They could have the function liftM which can be used to make fmap if you define >>= like how the comonads library has liftW to define fmap in case you defined extend
02:05:23 -!- PiRSquared has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0.1/20111120135848]).
02:08:27 <zzo38> Actually I think they should also make liftPair (default: liftPair = liftA2 (,)) a method of Applicative as well, since that would be an alternate way to define them.
02:09:19 <zzo38> And then change sequence to Applicative instead of Monad, and if Applicative is a constraint for Monad then it will still work with program how it does now, too.
02:09:57 <oerjan> i think that's a bit more dubious, while it's an important way in theory due to the connection with category theory, i don't think it's simpler than just using <*>
02:10:28 -!- cheater has joined.
02:11:15 <oerjan> after all, you probably just end up putting (,) everywhere instead of application
02:12:08 <zzo38> Also remove the right zero law from the documentation for MonadPlus, and fix the existing instances to follow the left zero law and monoid law (some of the existing ones don't, such as Parsec)
02:12:46 <oerjan> i've always heard the right zero law is optional, it's just nice to have if you can make it
02:13:11 <zzo38> Which libraries have Alternative or MonadPlus instances for IO monad? I think someone told me once and copied the code but I realize it is not properly following the monoid law
02:13:19 <zzo38> oerjan: Yes, they should write that in the document.
02:13:38 -!- Jafet1 has quit (Ping timeout: 252 seconds).
02:14:25 <oerjan> not sure where that is
02:14:47 -!- cheater has quit (Excess Flood).
02:14:56 <zzo38> Do you know why the Parsec MonadPlus and Applicative are designed does not properly follow the monoid law?
02:15:09 -!- cheater has joined.
02:16:48 <zzo38> I think the MonadPlus instance someone gave for IO was something like this: mplus = catch; Well, that is wrong and does not follow the monoid law. Here is one I think is proper one: empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y;
02:16:55 <oerjan> well if they don't, i would assume it's for efficiency reasons
02:17:14 <oerjan> :t catch
02:17:15 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
02:17:18 <zzo38> Actually mplus = catch is probabily not what it was.
02:17:39 <zzo38> It must be: mplus x y = catch x $ const y;
02:17:55 <zzo38> oerjan: But then it won't be mathematically correct if they don't.
02:18:14 <oerjan> i don't recall how Parsec breaks the monoid law
02:18:52 <oerjan> @src mplus IO
02:18:52 <lambdabot> Source not found. My pet ferret can type better than you!
02:18:56 <oerjan> @src IO mplus
02:18:56 <lambdabot> m `mplus` n = m `catch` \_ -> n
02:19:42 <zzo38> Do you think my instance is mathematically correct?
02:21:05 <zzo38> What is your opinion of this? http://haskell.org/haskellwiki/User:Zzo38/Proposal_for_instance_disambiguation
02:21:51 <zzo38> I think there is no stolen syntax in this proposed extension.
02:22:51 <zzo38> I probably made a few mistakes
02:23:46 -!- cheater has quit (Excess Flood).
02:26:33 <oerjan> i think the main ghc authors don't like this kind of thing, as it makes the cross-module instances inconsistent.
02:27:17 <oerjan> and it's a design decision to consider instances to be global as much as possible.
02:28:14 <oerjan> admittedly it is sometimes annoying that you cannot hide instances, e.g. lambdabot has two conflicting Show instances for ->
02:28:20 <zzo38> oerjan: Yes, however sometimes you might want to override some existing instances in case they are no good.
02:28:31 <zzo38> Yes, and select one for your program in case there are more than one.
02:28:39 <kallisti> oerjan: at the same time instance hiding would have some pretty clumsy syntax.
02:28:43 <kallisti> I guess that's not a big deal though.
02:28:57 <zzo38> Of course it would be an extension, like incoherent instances is one extension.
02:29:02 <kallisti> still it would probably have to be different from the normal name hiding syntax.
02:29:08 <kallisti> because instance declarations can get somewhat lengthy
02:29:30 <zzo38> kallisti: Yes. I suggested some possibilities in that subpage of my userpage. If you don't like them, you can make other suggestions.
02:29:58 <kallisti> well it would be reasonable to have it in the normal hiding declaration
02:30:11 <kallisti> import Module hiding (instance (A a, B b) => T a b)
02:31:34 <kallisti> but a seperate declaration might be cleaner.
02:31:44 <zzo38> I have it that overriding instances would ordinarily not affect instances that have already been resolved in other modules, unless you specifically made a function that uses instances created in the modules importing that one. However explicit specialization could specify not to do that anyways, unless you override that too.
02:32:16 -!- Jafet has joined.
02:32:43 <oerjan> kallisti: i don't think you need the (A a, B b) => part, it is not used for resolving conflicts anyhow
02:32:51 <zzo38> kallisti: Did you read the proposal things I wrote?
02:32:57 <kallisti> zzo38: noep :?
02:33:12 <kallisti> oerjan: oh, really? that's weird. are you... sure?
02:33:15 <zzo38> oerjan: Did you read?
02:33:37 <kallisti> couldn't you have like (A a) => T a and (B a) => T a and then hiding instance T a would be ambiguous.
02:33:39 <oerjan> kallisti: quite sure. it's another design decision for tractability.
02:33:44 <kallisti> *T b
02:33:58 <oerjan> kallisti: those instances would always clash.
02:34:01 <zzo38> kallisti: If you didn't specify, I would say it hide all of them, I would think it should do.
02:35:11 <kallisti> oerjan: really? I thought it would only complain if a type had overlapping instances.
02:35:33 <kallisti> in other words (A a, B a) => a
02:35:35 <oerjan> kallisti: they _are_ considered overlapping. of course it only complains if you try to use them.
02:36:43 <kallisti> oh, okay. I thought specific types had overlapping instance.
02:37:13 <kallisti> hm, but okay that's probably a good design choice.
02:37:19 <oerjan> the T a parts are identical, so overlap unescapably.
02:37:57 <kallisti> doesn't the differing typeclass differentiate though? I mean, it doesn't, but it could.
02:38:02 <oerjan> kallisti: i think some ghc guy said something about it preventing them from having to implement a full prolog in the type checker :P
02:38:04 <zzo38> Hopefully the things I have written on that page should be able to resolve some of these things?
02:40:18 <zzo38> (Note I have not actually proven any of that so it might still be wrong)
02:40:23 -!- cheater has joined.
02:41:33 <zzo38> Here are some examples: import A () instance ();
02:41:37 <oerjan> i am basically assuming i don't understand the ghc type system well enough to know where the tricky issues are for such a thing.
02:41:58 <zzo38> import B class (AAA as ZZZ qualified as HHH); import C hiding instance (Num String, Num Bool); import D type (T as TT, U as newtype UU); import E hiding module C;
02:42:08 <zzo38> instance (instance IsString [Char] hiding) => IsString [x];
02:42:32 <zzo38> value1 :: Int; value1 = 2 + 3; value2 :: (Num x, x ~ Int) => x; value2 = ((+) :: x -> x -> x) 2 3;
02:43:21 <oerjan> but like, if one instance C A depends on another instance C B, and you hide C B, what then happens to the C A instance? their correspondence may well have already been inlined for some uses in the exported module
02:43:26 <oerjan> er,
02:43:30 <kallisti> in kallistiscript typeclass constraints can be arbitrary set operations. :>
02:43:32 <oerjan> s/C B/D A/
02:43:55 <oerjan> *exporting
02:44:18 <zzo38> oerjan: Well, for uses in the exported module, it will not override uses there. Like, in example I given, value1 will use the instance that is available to that module, while value2 uses the instance in the module that calls it.
02:44:35 <oerjan> those are the kind of tricky issues i can imagine, which means that exactly what gets hidden depends on what is inlined and optimized where - which would be a very bad thing.
02:44:40 <zzo38> And if C A depends on C B and you hide C B, the same thing.
02:45:02 <kallisti> oerjan: if it were implemented poorly, sure. :P
02:45:20 <zzo38> oerjan: Yes I know. However, there would be explicit rules to prevent that from happening. Hidden instance still *exist*, they simply would be hidden in modules that define new ones.
02:45:40 <zzo38> So, yes you would have to think of these things to make a proper implementation that does not have these problems.
02:45:59 -!- Jafet1 has joined.
02:46:59 <kallisti> oerjan: admittedly it would be kind of weird to have the exact same function doing completely different things in different modules based on instance hiding.
02:48:29 <zzo38> kallisti: In my scheme I tried to describe, they would not do different things based on instance hiding. If you write a new instance, its methods are new functions of a new instance; the other modules still use the instance available to that one instead, normally.
02:48:46 -!- Jafet has quit (Ping timeout: 240 seconds).
02:49:10 <oerjan> zzo38: it would also make the "orphan instance" problem worse - basically ghc is much less efficient at looking up instance information which is not in a module defining one of the classes or types involved
02:49:37 <oerjan> so they even have a warning flag for it
02:49:37 <zzo38> What is "orphan instance" problem?
02:49:50 -!- Jafet has joined.
02:49:55 <kallisti> zzo38: the's not very different from what I described/envisioned
02:50:27 -!- Jafet1 has quit (Ping timeout: 240 seconds).
02:52:45 <oerjan> zzo38: in haskell, an instance can be defined in any module, not just the ones defining the classes and types. if an instance _is_ defined in the same module declaring a class or type involved, ghc only has a small number of places to search for it, and doesn't need to treat it specially. but an instance which isn't is called an "orphan instance" and ghc has to trace dependencies for them separately.
02:56:41 <zzo38> oerjan: Well, the way I described, if an instance is defined in the current module or one which it imports, it uses those instances even if it is overridden in a module importing that one. But I also made up a possible way to override that for some functions.
02:58:13 <oerjan> another issue is what happens if you turn on the OverlappingInstances extension. afaiu it changes ghc from resolving instances as early as possible (since any conflict would be illegal) to as late as possible (since information in later modules could change which instance needs to be used.)
02:59:01 <zzo38> So if a function uses a specific type, instances are resolved when that module is compiled, but if it works for any type, the instances are resolved where the type is resolved.
03:01:20 <zzo38> So if a module has the value1 and value2 definition I specified (also requiring scoped type variables), then one module imports that and redefines Num Int to make everything add up to 42, then value1 will be 5 and value2 will be 42.
03:19:15 <zzo38> There is no "choking hazard" for mahjong; it is "chonking hazard".
03:30:42 -!- pikhq_ has joined.
03:31:47 <zzo38> Do you know the computer game that one level is involving, some people are trying to kill otyugh with safety pins and you have to stop them from doing so within the time limit?
03:33:05 <kallisti> no
03:33:25 <oerjan> if otyugh is what i think i remember from yafgc, that sounds messy.
03:33:30 <oerjan> *are
03:33:48 -!- pikhq has quit (Ping timeout: 253 seconds).
03:34:31 <zzo38> It is one area of a large game with many things like the Keycard Teleporters and rooms with windows that you can fall out of, and so on.
03:37:07 <oerjan> http://yafgc.net/?id=33 and the next one
03:50:52 -!- PiRSquared has joined.
03:53:03 <zzo38> Even the Spanish Inquisition is in this game.
03:53:24 <ais523> zzo38: was it unexpected?
03:53:39 <zzo38> Kind of...
03:59:06 -!- Jafet has quit (Ping timeout: 240 seconds).
04:00:10 -!- PiRSquared has quit (Read error: Connection reset by peer).
04:00:36 <oerjan> @check is this thing on?
04:00:37 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
04:00:41 <oerjan> yay
04:02:41 <oerjan> > scanl (zipWith (flip const)) [[1,2,3],[4],[5,6]]
04:02:42 <lambdabot> Overlapping instances for GHC.Show.Show ([[[t]]] -> [[[t]]])
04:02:42 <lambdabot> arising fro...
04:02:47 <oerjan> > scanl1 (zipWith (flip const)) [[1,2,3],[4],[5,6]]
04:02:48 <lambdabot> [[1,2,3],[4],[5]]
04:02:55 <oerjan> > scanl1 (zipWith (flip const)) []
04:02:56 <lambdabot> []
04:02:58 -!- Jafet has joined.
04:03:17 -!- cheater has quit (Ping timeout: 245 seconds).
04:04:00 <oerjan> @check let tjoin = concat . transpose . scanl1 (zipWith (flip const)) in \lll -> tjoin $ tjoin (lll :: [[[Int]]]) == tjoin $ map tjoin lll
04:04:01 <lambdabot> Not in scope: `myquickcheck'Not in scope: `concat'Not in scope: `transpose'...
04:04:01 -!- Jafet has quit (Read error: Connection reset by peer).
04:04:07 <oerjan> ff
04:04:15 <oerjan> *sigh*
04:05:14 <oerjan> zzo38: i thought about if there could be a monad extension of the backwards applicative of [], it looks tricky.
04:05:20 -!- Jafet has joined.
04:05:35 -!- tuubow has joined.
04:05:41 <oerjan> concat . transpose should be the join for rectangular elements, but it won't work in general.
04:06:12 <oerjan> i had one idea to check but @check isn't working :(
04:06:23 <zzo38> oerjan: O, I was thinking of the same thing too!!
04:06:45 <zzo38> Earlier
04:06:45 <oerjan> counterexample for the simple version:
04:07:21 <oerjan> > let tjoin = concat . transpose; test = [[[],[1]],[[2],[3]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:07:23 <lambdabot> ([2,1,3],[1,2,3])
04:07:49 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[],[1]],[[2],[3]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:07:51 <lambdabot> ([],[])
04:08:12 <oerjan> that particular example also works with my fix, but i'm doubtful for it in general
04:11:19 -!- Jafet1 has joined.
04:12:41 -!- Jafet has quit (Ping timeout: 255 seconds).
04:13:26 <oerjan> oh hm i think i see how it breaks
04:14:01 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[1],[2]],[[3,4],[5,6]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:14:02 <lambdabot> ([1,3,2,5],[1,3,2,5])
04:14:08 <oerjan> oh it didn't
04:14:14 -!- Jafet has joined.
04:15:11 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[1],[2],[3]],[[4,5],[6,7]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:15:13 <lambdabot> ([1,4,2,6,3],[1,4,2,6,3,5])
04:15:18 <oerjan> but that did
04:15:44 -!- Jafet1 has quit (Ping timeout: 252 seconds).
04:18:05 -!- Jafet1 has joined.
04:18:48 -!- Jafet has quit (Ping timeout: 252 seconds).
04:18:49 -!- MDude has changed nick to MSleep.
04:25:35 <Gregor> Surely you could implement a Bourne shell that used posix_spawn instead of fork/exec, and then Cygwin would suck considerably less ...
04:27:00 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[1],[2],[3]],[[4,5],[6,7],[8,9]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:27:01 <lambdabot> ([1,4,2,6,3,8],[1,4,2,6,3,8])
04:27:08 <oerjan> bah
04:27:53 -!- GreaseMonkey has joined.
04:27:53 -!- GreaseMonkey has quit (Changing host).
04:27:53 -!- GreaseMonkey has joined.
04:28:52 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[1,2],[3,4],[5,6]],[[7],[8],[9]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:28:53 <lambdabot> ([1,7,3,8,5,9,2],[1,7,3,8,5,9,2,4,6])
04:29:27 <oerjan> > let tjoin = concat . transpose . scanl1 (zipWith (flip const)); test = [[[1,2],[3,4],[5,6]],[[7],[8],[9]]] in (tjoin test, map tjoin test)
04:29:29 <lambdabot> ([[1,2],[7],[3,4],[8],[5,6],[9]],[[1,3,5,2,4,6],[7,8,9]])
04:31:36 <oerjan> > let tjoin = concat . transpose; test = [[[1,2],[3,4],[5,6]],[[7],[8],[9]]] in (tjoin $ tjoin test, tjoin $ map tjoin test)
04:31:37 <lambdabot> ([1,7,3,8,5,9,2,4,6],[1,7,3,8,5,9,2,4,6])
04:32:01 <oerjan> so that one breaks with the adjusted tjoin, but not the simple one
04:40:20 -!- augur has quit (Remote host closed the connection).
04:41:23 -!- augur has joined.
04:41:31 -!- hagb4rd has joined.
04:47:06 -!- Jafet1 has quit (Read error: Connection reset by peer).
04:47:21 -!- Jafet has joined.
04:50:26 -!- hagb4rd has quit (Ping timeout: 240 seconds).
05:01:05 -!- DCliche has joined.
05:02:20 -!- elliott has joined.
05:02:27 <elliott> God dammit!
05:02:27 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
05:03:53 <elliott> 2 hours, 47 minutes and 19 seconds off because of not finding a directory :(
05:04:00 -!- Klisz has quit (Ping timeout: 240 seconds).
05:04:04 <ais523> was the directory actually /there/?
05:04:12 <elliott> It was somewhere else.
05:05:02 * elliott sigh
05:07:37 <elliott> Hmm, now to either give up or pretend it never happened.
05:10:09 <elliott> I just realised this situation is basically identical to when oklopol gave up on life because he got a below-perfect grade once.
05:10:51 <elliott> 16:06:59: <Phantom_Hoover> http://www.reddit.com/r/Minecraft/comments/nhcuf/hey_rminecraft_do_you_know_of_our_irc_channel/c398im6?context=3
05:10:51 <elliott> 16:06:59: <lambdabot> Phantom_Hoover: You have 13 new messages. '/msg lambdabot @messages' to read them.
05:10:51 <elliott> 16:07:19: <Phantom_Hoover> TkTech strikes back, and he exacts a terrible reven— wait no it's hilariously petty and largely lies.
05:10:55 <elliott> Oh god, this will be fun.
05:11:28 <elliott> ais523: "I should remind you that using your channel (#esolang, I believe it was?) to organize/partake in delinquent behaviour is a violation of the Freenode TOS."
05:11:34 <elliott> ais523: you had better ban PH from #esolang
05:12:03 <ais523> I don't have ops on #esolang
05:12:09 <elliott> ais523: Are you sure?
05:12:17 <elliott> Oh, it actually exists.
05:12:22 <elliott> It's owned by Zuu.
05:12:27 <elliott> Zuu will have to ban PH instead.
05:12:33 <elliott> The cost of delinquency.
05:15:02 <kallisti> are organizing and partaking in delinquent behavior?
05:15:06 * kallisti not
05:18:57 -!- augur has quit (Ping timeout: 252 seconds).
05:19:15 <oerjan> > let repeatM = sequence . repeat; getNext = modify (+1) >> get in evalState (repeatM getNext) 0
05:19:16 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
05:22:07 -!- elliott has quit (Quit: Leaving).
05:22:11 -!- elliott has joined.
05:22:13 -!- elliott has quit (Changing host).
05:22:13 -!- elliott has joined.
05:22:38 <kallisti> oerjan: congrats
05:22:57 <oerjan> wat?
05:23:03 <kallisti> you made numbers with state monad and stuff
05:23:04 <kallisti> good job.
05:23:17 <ais523> elliott: replied to the Reddit thread
05:23:23 <ais523> in an attempt to mollify the situation
05:23:24 <oerjan> kallisti: i was just checking that a post in haskell-cafe was mistaken
05:23:37 <oerjan> although the next post pointed it out, anyhow
05:23:41 <kallisti> what was the mistake?
05:23:43 <elliott> ais523: I was already replying
05:23:48 <elliott> ais523: but then I clicked a link and lost all my reply FUCK!!!
05:24:03 <elliott> does anyone know a way to retrieve that? I'm using Chrome
05:24:08 <oerjan> kallisti: to claim repeatM couldn't work that way, essentially
05:24:11 <elliott> it appears to have been lost because the form is created with JS
05:24:19 <ais523> elliott: I don't
05:24:30 <ais523> IIRC, the Back button sometimes works even in that case, with Firefox
05:24:33 <kallisti> oerjan: uh, how does that even make sense. :P
05:24:37 <elliott> ais523: well, it didn't
05:24:39 <ais523> haven't figured out the rules for whether it does or not
05:24:48 <elliott> ais523: btw, your comment is just going to encourage him
05:24:55 <elliott> "you should have banned him" etc. etc. etc.
05:24:59 <oerjan> kallisti: well it claimed that you couldn't evaluate because the final state of the computation is undefined.
05:25:03 <ais523> elliott: but I wasn't there at the time
05:25:14 <ais523> and he'd stopped by the time I came online
05:25:14 <elliott> ais523: precisely?
05:25:17 <ais523> so I had a perfect argument
05:25:18 <oerjan> but this is not a problem as long as you don't evaluate the state
05:25:30 <kallisti> oerjan: therefore all infinite lists = undefined
05:25:34 <kallisti> ?
05:25:48 <ais523> elliott: anyway, just tested in Firefox, if I type some stuff in a Reddit reply box, then click a link, then click back, the stuff is still there
05:25:54 <ais523> so I guess Firefox > Chrome in this respect
05:26:21 <oerjan> kallisti: no. the mistake is assuming the State monad needs to evaluate the final state before returning anything else.
05:26:33 <kallisti> ah
05:26:54 <kallisti> oh, right, I see.
05:27:08 <kallisti> they were thinking the state would just get +1'd forever or something like that.
05:27:12 <elliott> god dammit, I think it's lost
05:27:17 <elliott> ais523: anyway, he's clearly in the wrong
05:27:20 <oerjan> its sort of reasonable because the IO monad e.g. _does_ work that way
05:27:27 <elliott> ais523: because he claimed to have found us with connections to freenode staff.
05:27:29 <elliott> and made constant vague threats
05:27:30 <oerjan> *it's
05:27:35 <elliott> and generally tried to intimidate everyone
05:27:49 <oerjan> and there is also a strict state monad.
05:30:01 <kallisti> oerjan: but state is completely pure code so there's no need for it to be inherently strict.
05:30:10 <oerjan> yep.
05:30:23 <kallisti> or well, I'm sure there are better reasons.
05:30:34 <oerjan> doesn't mean people cannot make an erroneous assumption.
05:32:41 <elliott> meh, I'll just not bother
05:32:49 <kallisti> oerjan: so wait isn't the 2-tuple monad vaguely similar to State?
05:33:28 <oerjan> kallisti: it's isomorphic to Writer
05:33:46 <zzo38> Yes, it is like Writer.
05:34:09 <zzo38> But it is similar to State when using the Last monoid and the ReadthisT transformer, at least as far as I can tell.
05:36:24 <elliott> ais523: btw, I don't really think PH is bragging; complaining about a ban you consider unfair is a rather terrible way to brag
05:36:51 <ais523> elliott: I'm not talking about the ban complaint, but the grandparent comment of that
05:36:58 <kallisti> ITT: ops can be just any regular asshole
05:37:12 <elliott> ais523: fair enough
05:38:25 <elliott> 19:19:53: <Ngevd> `quote 8
05:38:25 <elliott> 19:19:56: <HackEgo> 8) <SimonRC> TODO: sex life
05:38:25 <elliott> 19:20:01: <Ngevd> Who is SimonRC?
05:38:29 <elliott> SimonRC_.
05:38:42 <ais523> `quote
05:38:45 <ais523> `quote
05:38:46 <ais523> `quote
05:38:48 <ais523> `quote
05:38:50 <ais523> `quote
05:38:51 <HackEgo> 757) <Phantom_Hoover> Just because you can't design a reliable Monopoly machine out of chocolate doesn't mean nobody else can.
05:38:52 <HackEgo> 768) <elliott> I hate you.
05:38:52 <HackEgo> 135) <Quas_NaArt> Because you're a Mac user. <lacota> I am! and proud of it to <lacota> My mouse has *no* buttons.
05:38:52 <HackEgo> 727) <oerjan> shachaf: wait, _you_ are in northumberland? <shachaf> No. <oerjan> whew <oerjan> we don't have room for more esolangers there. <shachaf> oerjan: Wait, *you* are in Northumberland? <oerjan> no <shachaf> Whew. <shachaf> We don't have room for more esolangers there.
05:39:08 <HackEgo> 743) <elliott> fizzie: I think it's because it looks like WHERE foo > ((bar - nonsense) + lol).
05:39:30 <ais523> hmm, the elliott quotes are the weakest there
05:39:32 <ais523> elliott: opinions?
05:39:39 <monqy> 768 "a good quote" - professional
05:39:45 <elliott> Rude! Yes, they are.
05:39:48 <elliott> 743 is worst.
05:40:01 <elliott> shachaf: Did you know you're deliquent?
05:40:03 <ais523> shachaf: blame HackEgo :)
05:40:03 <shachaf> Do you need any wrath spread around here?
05:40:10 <ais523> `delquote 743
05:40:13 <HackEgo> ​*poof* <elliott> fizzie: I think it's because it looks like WHERE foo > ((bar - nonsense) + lol).
05:40:15 <ais523> elliott: I think I agree
05:40:16 <shachaf> elliott: Oh?
05:40:25 <elliott> shachaf: http://www.reddit.com/r/Minecraft/comments/nhcuf/hey_rminecraft_do_you_know_of_our_irc_channel/c398im6?context=3
05:41:19 <shachaf> elliott: Oh.
05:41:36 <oerjan> elliott: you seem to be using our channel to organize delinquent behavior on reddit. i shall have to ban you forthwith.
05:41:45 <shachaf> elliott: Are you irc_delinquent?
05:41:56 <elliott> shachaf: No, I started writing a reply and gave up because I lost it by clicking a link.
05:42:04 <oerjan> shachaf: yes he is. oh, you meant the nick?
05:42:35 <oerjan> wait, then who _is_ irc_delinquent?
05:42:44 <elliott> oerjan: That's what irc_delinquent would say!
05:42:47 <oerjan> speak up so i can ban you!
05:43:15 <ais523> <ericje> "(measured in orders of ηs)" Etaseconds?
05:43:51 <shachaf> ais523: It's this really obscure SI unit.
05:43:53 <elliott> (\x -> seconds x)
05:44:39 <elliott> 22:04:06: <ais523> hmm, Kim Jong-Il has died
05:44:39 <elliott> 22:04:11: <ais523> official story is that it's of overwork
05:44:44 <shachaf> Hmm, (\x -> (\y -> seconds x y)) === (\x -> (\y -> seconds y) x)
05:44:46 <elliott> ais523: I can always count on you to be really really late.
05:44:57 <shachaf> Coïncidence? I think not!
05:45:01 -!- hagb4rd has joined.
05:45:08 <ais523> :t seconds
05:45:09 <lambdabot> Not in scope: `seconds'
05:45:10 <elliott> 22:50:27: <zzo38> Do you like this message?
05:45:10 <elliott> 22:50:34: <zzo38> Do you like this question?
05:45:11 <elliott> zzo38: Yes.
05:45:17 -!- augur has joined.
05:45:27 <elliott> 22:53:47: <zzo38> Do you know how to make a bomb which is powerful enough to destroy the entire Earth and break it into a million approximately equal pieces?
05:45:28 <elliott> Also yes.
05:45:33 <ais523> wow, I'll have to ask "do you like this question?" in a job interview some time
05:45:37 <shachaf> elliott: That's indicative of some fundamental mathematical duality, right?
05:45:45 <elliott> 23:12:25: <Sgeo> Do IORefs physically store their values, or are the values stored in the RealWorld somewhere and the IORef is just an index?
05:45:50 <ais523> the answer would probably be quite insightful
05:45:55 <ais523> into the answerer's personality
05:46:03 <elliott> Sgeo: Your question is meaningless in the context of the semantics, and not even wrong in the context of the implementation.
05:46:08 <elliott> shachaf: Totally.
05:46:24 <shachaf> elliott: I'll just collect my Nobel Prize in Mathematics now, then.
05:47:02 <pikhq_> shachaf: There isn't one.
05:47:05 <pikhq_> Shame, too.
05:47:12 <elliott> 23:59:32: <Sgeo> I don't think that's an official site?
05:47:14 <shachaf> pikhq_: Did I say "...if it exists"?
05:47:18 <elliott> Sgeo: It is, if it's the one I'm thinking of.
05:47:23 <elliott> Yes, it is.
05:47:32 <pikhq_> shachaf: No. I'm merely making a useful observation.
05:47:40 <pikhq_> Which implies some necessary action.
05:47:53 <shachaf> pikhq_: My father always says things like "if you manage to violate the second law of thermodynamics, you'll get the Nobel prize in mathematics".
05:47:55 <pikhq_> For instance, getting a TARDIS and chatting with Alfred.
05:48:10 <oerjan> elliott: does Sgeo logread? because i doubt he's actually listening.
05:48:17 <Sgeo> Hi
05:48:24 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa
05:48:26 <Sgeo> I fell asleep, but woke up.
05:48:30 <elliott> 00:24:11: <kallisti> do you think Google would get mad if I made a web service in which you can type in queries and it will perform extra functionionality that google doesn't do, but will then otherwise defer to a Google search?
05:48:30 <elliott> 00:26:31: <kallisti> it'd be like wikipedia + google + W|A + programming language interpreters
05:48:37 <shachaf> "logread"?
05:48:42 <shachaf> That's a verb you use around here?
05:48:48 <elliott> kallisti: DuckDuckGo does the Wikipedia part, at least. But if you weren't allowed to do that then Scroogle wouldn't exist.
05:48:49 <oerjan> Sgeo: MAKING ME LOOK LUDICROUSLY WRONG IS A BANNABLE OFFENSE YOU KNOW
05:48:52 <elliott> Or, well, if Google cared enough.
05:49:53 <elliott> oerjan: Delinquent!
05:50:01 <ais523> oerjan: /are/ you ludicrously wrong? or do you just /look/ ludicrously wrong?
05:50:09 <oerjan> ais523: always!
05:50:23 <ais523> err, which question is that an answer to?
05:50:26 <elliott> 01:40:32: <oerjan> my subtle lambdabot ping fails for the trivial reason of there being no messages :(
05:50:27 <elliott> @tell oerjan hi
05:50:27 <lambdabot> Consider it noted.
05:50:34 <oerjan> ais523: darn, you got me
05:50:34 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
05:50:41 <oerjan> @messages
05:50:41 <lambdabot> elliott said 14s ago: hi
05:50:49 <elliott> 01:42:53: <oerjan> > Data.Foldable.foldMap (Product &&& Sum) [1..5]
05:50:49 <elliott> 01:42:53: <lambdabot> (Product {getProduct = 120},Sum {getSum = 15})
05:50:51 <elliott> awesome
05:51:21 <ais523> oerjan: you just need to try pings that can easily be disguised as something else
05:51:22 <ais523> `? welcome
05:51:25 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
05:51:27 <ais523> like that
05:51:40 <elliott> 01:53:09: <oerjan> btw such Flipping could make sense, e.g. for Either you might want to treat the Lefts as values sometimes.
05:51:43 <elliott> oerjan: error handling, say
05:51:49 <oerjan> <shachaf> That's a verb you use around here? <-- yes.
05:51:57 <kallisti> "Newer languages such as Java and Python have incorporated some limited versions of some of the features of Lisp, but are necessarily unable to bring the coherence and synergy of the full concepts found in Lisp." bahahaha this statement
05:52:01 <kallisti> on Wikipedia
05:52:06 <elliott> tryMethod1 >> tryMethod2 >> tryMethod3
05:52:47 <oerjan> elliott: yep.
05:54:03 <oerjan> `log [l]ogread\>
05:54:27 <elliott> ais523: hmm, could you retroactively redefine timezomes for me?
05:54:30 <HackEgo> No output.
05:54:34 <oerjan> eek
05:54:41 <oerjan> `log [l]ogreads
05:54:51 <HackEgo> 2011-04-24.txt:15:41:59: <oerjan> cheater99: i know i'm just assuming he logreads
05:55:14 <oerjan> `pastelogs [l]ogread
05:55:21 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30862
05:55:39 <monqy> too many lines, good
05:55:52 <ais523> elliott: err, I'm not sure what an if statement looks like in Feather yet
05:55:58 <kallisti> oerjan: what's with the [l]?
05:56:07 <ais523> how is if done in Smalltalk?
05:56:15 <elliott> 02:26:33: <oerjan> i think the main ghc authors don't like this kind of thing, as it makes the cross-module instances inconsistent.
05:56:18 <oerjan> kallisti: make sure the search itself doesn't get return
05:56:21 <oerjan> *ed
05:56:22 <kallisti> cond ifTrue: expr ifFalse: expr
05:56:25 <elliott> oerjan: it breaks all kinds of things if you can make two (Set Int)s with different Ords
05:56:31 <elliott> all kinds of things, such as literally everything
05:56:44 <elliott> it's basically the major restriction the typeclass system makes to get all the advantages it does
05:56:46 <kallisti> ais523: conditionals are implemented as methods ("messages") on boolean objects.
05:57:21 <ais523> kallisti: ah, obviously
05:57:46 <elliott> ais523: why do you need an if statement?
05:57:56 <elliott> oh, to avoid infinite regress
05:57:57 <ais523> elliott: I don't need it as a statement
05:58:04 <ais523> but I need some method of doing conditionals for obvious reasons
05:58:13 <elliott> ais523: hmm, a useful feather primitive is anti-compare-and-swap
05:58:14 <shachaf> I need an if-only statement to avoid infinite regrets.
05:58:20 <elliott> if (a != b) a <<= b
05:58:25 <ais523> elliott: agreed
05:58:30 <elliott> well, without the swap part
05:58:34 <elliott> but you could do that too, I think
05:58:37 <elliott> it'd just be more difficult
05:58:46 <ais523> except that a is typically going to be something hard to compare for equality with b
05:58:49 <kallisti> shachaf: oh also note in order to make it lazily evaluate the expressions it has to be enclosed in a block. cond ifTrue: [^value]
05:58:51 <elliott> as you'd have to compare against a third variable
05:58:53 <kallisti> er
05:58:55 <ais523> I think the most useful primitive is to check to see if a contains all the methods b does
05:59:03 <shachaf> No one is appreciating my pun?
05:59:04 * Sgeo will have to review the commit history of ftphs
05:59:05 <kallisti> ais523: s/shachaf/ais523/
05:59:09 <shachaf> This channel is stupid.
05:59:10 <elliott> shachaf: Har har har har har har.
05:59:12 <elliott> shachaf: I just didn't read it yet.
05:59:15 <elliott> Sheesh.
05:59:17 <elliott> Non-linear, man!
05:59:22 <shachaf> Sure, "logreader".
05:59:27 <elliott> 03:19:15: <zzo38> There is no "choking hazard" for mahjong; it is "chonking hazard".
05:59:28 <elliott> Ah.
05:59:47 <monqy> one time i chonked on a mahjong
05:59:48 * oerjan swats shachaf -----###
05:59:49 <monqy> it was bad
05:59:51 <elliott> `addquote <zzo38> Even the Spanish Inquisition is in this game. <ais523> zzo38: was it unexpected? <zzo38> Kind of...
05:59:54 <Sgeo> https://github.com/jgoerzen/ftphs/commit/83268eddfa5cf9f919a4c9a641478dcf9ff40f63
05:59:54 <HackEgo> 769) <zzo38> Even the Spanish Inquisition is in this game. <ais523> zzo38: was it unexpected? <zzo38> Kind of...
05:59:57 <Sgeo> "hilarious"
06:00:05 <kallisti> ais523: in the above syntax ^ is how you return values from a block.
06:01:08 <ais523> kallisti: what "above syntax"?
06:01:16 <ais523> I need to learn Smalltalk better
06:01:24 <kallisti> ais523: ais523 oh wait actually I think the ^ is unecessary
06:01:26 <kallisti> ais523: me too
06:01:32 <kallisti> ais523: I accidentaly pinged shachaf when explaining
06:01:33 <ais523> just because Feather's syntax is tentatively defined as "vaguely resembles Smalltalk but does the same things for unrelated reasons"
06:01:45 <ais523> ah, I see
06:02:21 <elliott> hmm, maybe I could use my delinquent powers to move it a few hours back
06:04:15 <kallisti> ais523: basically all of the control structures are implemented in this way.
06:04:52 <kallisti> methods and blocks. you can see a little bit of this influence in Ruby, which occasionally has similar control constructs.
06:06:25 <oerjan> <TkTech> [...] All ops keep 24/7 logs [...] <-- hey a directly false statement! ban him.
06:07:14 <elliott> oerjan: um he was talking about #minecraft.
06:07:17 <elliott> obviously.
06:07:21 <oerjan> ah.
06:07:32 * elliott starts worrying about oerjan's reading comprehension skills
06:07:52 <elliott> hmm, banning TkTech in case he decides to troll us again would be a good idea, except that he'd just turn it into another conspiracy theory
06:08:01 <shachaf> HEY #ESOTERIC, I JUST TROLLED ##MARMALADE SO BAD
06:08:02 <oerjan> my skills are quite comprehensive, thank you!
06:08:05 <shachaf> <shachaf> MARMALADE IS DUMB
06:08:07 <shachaf> <shachaf> ONLY DUMB PEOPLE LIKE MARMALADE
06:08:14 * kallisti starts worrying about elliott's tendency towards perfectionism.
06:08:22 <shachaf> You're all accomplices now.
06:08:44 <kallisti> I can safely say that marmalade is awesome.
06:08:47 -!- tuubow has quit (Ping timeout: 255 seconds).
06:08:50 <kallisti> and therefore am not an accomplice
06:08:50 <elliott> oerjan: BAN DELINUQNET SHACHAF!!!!!
06:08:56 <elliott> AGAINST FREENODE TOS! AGAINST FREENODE TOS!
06:09:26 <kallisti> elliott: watch Freenode actually remove this channel.
06:09:46 <elliott> kallisti: I would have so much more time.
06:09:51 <shachaf> I don't know if I've ever had marmalade.
06:09:52 <kallisti> me too
06:09:57 <shachaf> Is marmalade like jam?
06:10:01 <kallisti> sort of
06:10:03 <kallisti> but not really
06:10:19 <elliott> shachaf: Not really.
06:10:20 <kallisti> I mean, it's made the same way
06:10:29 <elliott> shachaf: "Orange jam" is... sort of a vaguely close description.
06:10:32 <kallisti> but I think it has orange peels or other fruit peels in it.
06:10:36 <elliott> But it doesn't taste like jam and the texture is different.
06:11:01 <oerjan> shachaf: you're in a jam now, i suggest you watch your words.
06:11:07 <elliott> HAHA NOW I RULE ##MARMALADE
06:11:11 <elliott> I JUST TOOK THE CHANNEL OVER
06:11:12 <elliott> BAN ME
06:11:24 <elliott> shachaf: You should try marmalade, it's nice.
06:11:26 <elliott> In fact, now I want marmalade.
06:11:27 * shachaf reports elliott to the Freenodepolice.
06:11:37 <ais523> elliott: err, calm down about this whole thing
06:11:40 <ais523> your behaviour's getting a little out of hand
06:11:43 * oerjan jams shachaf's transmission
06:11:45 <elliott> I think I will have marmalade with something when it's not 6:00.
06:11:46 <shachaf> elliott: Well, *you* should try lakka jam.
06:11:48 <kallisti> elliott: if only you had a FANCY CAR.
06:11:49 <shachaf> Mmm, lakka.
06:11:53 * kallisti drives to the store and buys some marmalade.
06:11:57 <elliott> ais523: You realise I'm not being serious.
06:11:57 * kallisti in HIS CAR
06:11:59 <shachaf> Who's Finnish in here?
06:12:00 <elliott> Also shachaf is the one at fault.
06:12:06 <elliott> He is the perpetrator of the ##marmalade scam.
06:12:42 <kallisti> shachaf: I finish a long time ago.
06:12:45 <kallisti> ha. ha. ha.
06:12:56 * oerjan swats kallisti -----###
06:13:22 <kallisti> hey it's not me. nationalities need to stop naming themselves after English words.
06:13:30 <kallisti> Turkey and Finland should form a club.
06:13:40 <shachaf> Along with Greece?
06:13:46 <kallisti> yes
06:13:48 <kallisti> well no
06:14:00 <kallisti> Greek does not resemble another English word.
06:14:04 <kallisti> Greece does though.
06:14:06 <elliott> Sure it does.
06:14:10 <elliott> It resembles the English word, "Greek".
06:14:11 <kallisti> Greece and Turkey can be in a club.
06:14:14 <shachaf> Nor does "Turkish".
06:14:14 <kallisti> elliott: ANOTHER
06:14:15 <kallisti> KEY WORD
06:14:27 <kallisti> fuck you guys. ruining my great idea.
06:14:31 <kallisti> with your... reason.
06:14:36 <shachaf> elliott: That's a no.
06:14:40 <elliott> "Chrome uses process isolation to improve stability at the cost of memory consumption" TkTech doesn't understand virtual memory.
06:14:44 <shachaf> 06:14 -!- ##marmalade You're not a channel operator
06:14:55 * elliott decides to not exhaustively figure out the list of things TkTech doesn't understand.
06:14:59 <shachaf> elliott: Oh, dno't get me started about V8.
06:15:09 <shachaf> It's just completely not thread-safe.
06:15:11 <shachaf> Because they don't care.
06:15:23 <elliott> shachaf: Well... on the one hand, I like concurrency.
06:15:36 <elliott> On the other hand, nobody should have to suffer through making C or C++ code thread-safe.
06:16:28 <shachaf> Did I ever talk about how annoying JavaScriptCore is?
06:16:39 <elliott> No.
06:16:47 -!- tuubow has joined.
06:16:49 <kallisti> shachaf: yes. just now
06:16:51 <kallisti> ha. ha. ha.
06:17:05 <kallisti> I LOVE BEING INCREDIBLY LITERAL.
06:17:15 <kallisti> instead of interpreting the meaning from context.
06:17:24 <shachaf> 06:16 -!- shachaf changed the topic of ##marmalade to: WHEN LIFE GIVES YOU MARMALS, MAKE MARMALADE
06:17:34 <shachaf> You people are missing out.
06:18:25 <shachaf> JavaScriptCore insists on garbage-collecting your thread's stack.
06:18:37 <monqy> I forget if I like marmaalde
06:18:39 <shachaf> Or, at least, where it thinks your thread's stack is.
06:18:46 <kallisti> monqy: you do
06:18:49 <monqy> ok
06:19:26 <shachaf> JavaScriptCore will also send a SIGUSR2 to every other thread that's ever touched any JSC object.
06:19:31 <kallisti> it's like jam if jam were made with orange peels. obviously it's going to be good.
06:19:32 <shachaf> When it GCs, I mean.
06:19:39 <shachaf> Then it'll garbage-collect *its* stack.
06:19:56 <elliott> monqy: Have some marmalade it is so good.
06:20:01 <monqy> one time I tried eating orange peels
06:20:04 <monqy> it wasn't too great
06:20:16 <kallisti> monqy: it's better in gelatin and sugar stuff okay.
06:20:26 <monqy> I've had marmalade
06:20:28 <monqy> I think I liked it
06:20:28 <shachaf> One time I tried eating lemon peels.
06:20:31 <shachaf> It was pretty good.
06:20:41 <shachaf> Meyer lemons, that's the secret.
06:20:52 <monqy> mayor lemons
06:21:06 <shachaf> Also, I don't usually eat gelatin.
06:21:13 <shachaf> Unless it's vegetarian.
06:21:14 <monqy> try spreading it on toast
06:21:17 <monqy> oh
06:21:46 <kallisti> shachaf: pectin is made from plants
06:21:54 <kallisti> which is what is use to make jam.
06:22:04 <monqy> no it's made from ground up bones you silly goose
06:22:21 <shachaf> monqy: I don't object to gelatin that is vegetarian.
06:22:26 <shachaf> I also don't object to pectin.
06:23:06 <kallisti> I think you mean vegan maybe? I'm not sure how vegetarianism works with gelatin.
06:23:11 <elliott> shachaf doesn't eat animals in case the animals eat him.
06:23:13 <kallisti> because milk and eggs are okay, right?
06:23:24 <kallisti> I guess if you have to kill the animal to make it.
06:23:46 <elliott> That's sort of the major difference, kallisti :P
06:23:54 <elliott> One is something aminals make, one is made out of aminals.
06:24:34 <kallisti> elliott: yes I was reremembering
06:24:44 <shachaf> Riven: The Sequel to MYST
06:24:55 <kallisti> they should name it Ryven
06:25:03 <kallisti> because they like stupid y's
06:25:08 <shachaf> Ryven: The Sequel to MIST
06:25:27 <monqy> syquyl
06:25:36 <monqy> reven, mest
06:25:49 <kallisti> `word 50
06:25:54 <HackEgo> yeraged nunzach thce red emnat saldift alt foer genis ong pinghts aldes diitieni vitasborazeinfulchth asehlvilktirf hostors oords aphoncerpers terges hotinanckerubis rot thry ant aquit ensinduteritfulna con kappled abitiong igniss ber forzarprevo lenignstergy scpreconfora ving qualictieueser tamoloarimbly aviondouruppren che tort pes sus adracity blatteracheancosianschignicethruinge ed aing ch reste fraphscalcn ped solknoyeanieggeroilins
06:25:58 <shachaf> Yyyyy: Yyy Yyyyyy yy YYYY
06:26:00 <elliott> good
06:26:10 <elliott> `macro
06:26:15 <HackEgo> WE'VE
06:26:19 <elliott> we've
06:26:19 <kallisti> elliott: the best
06:26:24 <monqy> WE'VES
06:26:30 <kallisti> macro is the best word generator. it successfully generates words.
06:26:39 <oerjan> solknoyeanieggeroilins sounds like just the thing for breakfast.
06:26:40 <kallisti> whereas mine just generates things that aren't words.
06:26:59 <monqy> hey, red is a word
06:27:05 <monqy> rot, ant
06:27:17 <kallisti> monqy: that's just the rare case that it's working correctly
06:27:17 <shachaf> `cat bin/word
06:27:19 <oerjan> tort
06:27:20 <HackEgo> ​#!/usr/bin/perl \ $VAR1 = { \ 'qz' => { \ 'e' => 1, \ 'k' => 1, \ 'a' => 1, \ ' ' => 9, \ 'i' => 1, \ 'o' => 2 \ }, \ 'sp' => { \ 'w' => 9, \ 'r' => 3173, \ 'a' => 5192, \ 'd' => 67,
06:27:28 <kallisti> shachaf: don't do it
06:27:28 <shachaf> Oh, now I see what that does.
06:27:35 <shachaf> `cat bin/macro
06:27:38 <HackEgo> ​ELF....
06:27:43 <elliott> elf....
06:27:52 <elliott> kallisti: Adracity would be a good word.
06:27:56 <elliott> Also, tort is a word.
06:28:04 <shachaf> So is "con".
06:28:09 <shachaf> And "rot" and "ant" and so on.
06:28:10 <kallisti> shachaf: the next incarnation of words, if I ever get around to finishing it, will be substantially better.
06:28:11 <monqy> im trying to paste the house but it just backspaces...help...
06:28:31 <elliott> kallisti: But it's already perfect.
06:28:32 <elliott> monqy: The house?
06:28:38 <monqy> before the ELF
06:28:41 <monqy> theres a house
06:28:44 <elliott> kallisti: "foer genis" sounds like foie gras or something.
06:29:05 <kallisti> elliott: yeah but it needs more datasets, and it's going to be a 3-order model, and it can mix datasets, and maybe the word ending code you suggested won't actually be broken, etc etc.
06:29:44 <elliott> kallisti: I'll probably finish /my/ Markov code before you do that..
06:29:48 <elliott> s/.././
06:30:03 <kallisti> probably. I'm notiriously slow at doing things.
06:30:15 <kallisti> so there's like... a perpetual backlog of things.
06:30:16 <monqy> I was going to make a words thing but then I decided not to
06:30:20 <kallisti> that are more important than that.
06:30:38 <kallisti> monqy: yes I would be totally offended. Markov word generator (c) kallisti
06:30:48 <elliott> My one won't be a word generator!
06:30:53 <kallisti> good.
06:30:56 <elliott> It'll be a $100 NOVEL GENERATOR.
06:31:05 <kallisti> elliott: good plan for rich
06:31:05 <elliott> Because it generates... NOVEL THINGS!!!
06:31:08 <monqy> i want to generate 100 dollars novels
06:31:10 <elliott> No that's how much it'll cost.
06:31:16 <elliott> Me.
06:31:17 <monqy> oh that reminds me i should finish reading that book
06:31:26 <kallisti> elliott: whut
06:31:28 <elliott> Which book
06:31:36 <monqy> I'll see if I can find it
06:33:00 <Sgeo> Total size of files: 511.1MB
06:33:05 <Sgeo> Size on Disk: 4.1GB
06:33:14 <monqy> the policemans beard is half constructed. i hope it isn't bad because that would make me sad because so far i like it.
06:33:49 <elliott> Sgeo: what about it
06:34:04 <Sgeo> Kind of distressing, is all
06:34:12 <Sgeo> Although I'm not sure how that happened
06:34:17 <elliott> "The existence of the program was revealed in 1983 in a book called The Policeman's Beard Is Half Constructed (ISBN 0-446-38051-2)"
06:34:18 <elliott> oh good
06:34:18 <zzo38> I know about that; I read some comment about it in the book called "There are two errors in the the title of this book."
06:34:22 <elliott> Sgeo: it's called filesystems
06:34:33 <elliott> and padding
06:34:34 <elliott> and overhead
06:34:39 <shachaf> elliott: It's called inefficient filesystems.
06:34:46 <shachaf> This is why you use ReiserFS or something.
06:34:58 <shachaf> @google tail packing
06:34:59 <lambdabot> http://en.wikipedia.org/wiki/Block_suballocation
06:34:59 <lambdabot> Title: Block suballocation - Wikipedia, the free encyclopedia
06:35:02 <elliott> http://www.ubu.com/historical/racter/index.html oh good
06:35:07 <elliott> shachaf: *@fs
06:35:34 <shachaf> Speaking of which, I'm sort of implementing tail packing right now, maybe.
06:36:24 <elliott> shachaf: NoSQL tail packing?
06:38:00 <elliott> Quick, what's a good colour scheme?
06:38:56 <hagb4rd> elliott: http://colorschemedesigner.com
06:38:56 <lambdabot> hagb4rd: You have 1 new message. '/msg lambdabot @messages' to read it.
06:39:21 <shachaf> elliott: Why not?
06:40:04 <shachaf> elliott: A filesystem is pretty much a key-value store, after all.
06:40:27 <elliott> shachaf: Exactly.
06:40:35 <elliott> shachaf: You're implementing a filesystem on top of a filesystem.
06:40:41 <shachaf> "on top of a filesystem"?
06:40:52 <elliott> shachaf: Your thing runs in the kernel?
06:40:59 <shachaf> No, but it runs on block devices.
06:41:10 <Sgeo> Did my professor's FTP server kick me off for uploading too much
06:41:13 <elliott> shachaf: Oh.
06:41:18 <Sgeo> Hmm, is there a way to check if I've hit a quota?
06:41:21 <elliott> shachaf: Well, that's interesting, at least.
06:41:33 <elliott> shachaf: Could you implement POSIX FS semantics on top of it, theoretically?
06:43:41 <shachaf> You could do anything, theoretically.
06:44:01 <elliott> shachaf: OK, "easily".
06:44:01 <kallisti> shachaf: can I solve the halting problem, theoretically. OH SNAP
06:45:28 <shachaf> elliott: POSIX FS semantics aren't really the goal.
06:45:31 <shachaf> ("isn't?
06:45:43 <shachaf> s/.$/"? "semantics" is the worst word.)/
06:45:48 <elliott> shachaf: Yes, obviously.
06:46:16 <elliott> shachaf: I'm just thinking that it could be interesting to layer POSIX FS semantics over it (at the "application layer"), and then get that talking to the kernel.
06:46:37 * elliott operates on the principle "you should never run more than one implementation of a filesystem at once".
06:46:40 * elliott fails at this a lot.
06:47:04 <shachaf> Silly principle.
06:47:18 <shachaf> "you should run as many implementations of a filesystem at once as possible"
06:47:35 <shachaf> elliott: I would point you to the website except that it's kind of horribly out of date.
06:48:46 <elliott> shachaf: Insert some joke about NoSQL inconsistency mumble mumble it'll be updated real soon now.
06:49:28 <oerjan> :t (<$)
06:49:29 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
06:49:30 <shachaf> "eventual consistency", please. Also "eventual durability" and "eventual atomicity".
06:49:40 * shachaf <$ (<$)
06:49:52 <elliott> shachaf: I can't diss eventual consistency too hard because RDP does it, and I like RDP!
06:50:01 <elliott> "Eventual atomicity" is a good one though.
06:50:04 <shachaf> RDP?
06:50:06 <elliott> Eventual availability.
06:50:08 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:50:11 <elliott> shachaf: Reactive Demand Programming.
06:50:24 <elliott> http://awelonblue.wordpress.com/
06:50:51 <shachaf> It's almost like some things that you like do X and some things that you dislike do X, and just talking about X being good or bad on its own without context is silly.
06:51:12 <elliott> shachaf: Counterpoint: NoSQL.
06:51:17 <shachaf> ?
06:51:40 <elliott> shachaf: X = NoSQL
06:51:58 <shachaf> You don't like any filesystems?
06:52:22 <Sgeo> elliott is anti-files.
06:52:47 <Sgeo> And I don't mean that in a joking way. Although I think it's separate from a dislike of NoSQL
06:52:57 <elliott> shachaf: Huh?
06:53:04 <elliott> shachaf: I was making a joke that NoSQL is always bad.
06:53:15 <elliott> I don't like filesystems, though.
06:53:34 <shachaf> elliott: That's just a special case of you not liking anything.
06:53:36 <shachaf> Unless it's @.
06:53:38 <elliott> Or at least, a filesystem that I'd like would be so significantly different from what most people call a filesystem that I wouldn't consider it one.
06:53:50 <elliott> shachaf: Disproof of that is in, like, my scrollback.
06:54:48 * elliott reads http://web.cs.dal.ca/~nzeh/xmonad/Navigation2D.pdf.
06:55:10 * Sgeo kicks his professor's FTP quota
06:55:19 <shachaf> elliott: Should I do a talk for the local Haskell group?
06:55:39 <elliott> shachaf: Only if it's about @.
06:55:57 <shachaf> The meeting is ~tomorrow.
06:56:29 <elliott> You can talk about @ without it existing.
06:56:31 <elliott> I do it all the time.
06:56:54 <shachaf> That's pretty much all you do, in fact.
06:56:55 <elliott> Awesome, proofs on page 3.
06:57:00 <elliott> This is how I like my window manager papers.
06:57:16 <oerjan> :t (<$ (<$))
06:57:17 <lambdabot> Ambiguous type variable `f' in the constraint:
06:57:17 <lambdabot> `Functor f' arising from a use of `<$' at <interactive>:1:4-7
06:57:17 <lambdabot> Probable fix: add a type signature that fixes these type variable(s)
06:57:57 <elliott> > () <$ (<$)
06:57:58 <lambdabot> Ambiguous type variable `f' in the constraint:
06:57:58 <lambdabot> `GHC.Base.Functor f'
06:57:58 <lambdabot> ...
06:58:04 <elliott> GHC.Base.Functor. Nice.
07:00:23 <shachaf> What's a good thing to do a talk about?
07:00:43 <shachaf> Which isn't @.
07:01:24 <oerjan> :t let x = (<$) in ((<$ x),x)
07:01:25 <lambdabot> Ambiguous type variable `f' in the constraint:
07:01:25 <lambdabot> `Functor f' arising from a use of `x' at <interactive>:1:21
07:01:26 <lambdabot> Probable fix: add a type signature that fixes these type variable(s)
07:01:30 <oerjan> oops
07:01:59 <oerjan> :t case (<$) of x -> ((<$ x),x)
07:01:59 <lambdabot> forall a (f :: * -> *) b a1. (Functor f) => (a1 -> a -> a1, a -> f b -> f a)
07:02:25 <elliott> shachaf: Super @.
07:02:43 <shachaf> elliott: I thought @ = fix Super
07:02:43 <oerjan> :t (<$ id)
07:02:44 <lambdabot> forall a b. a -> b -> a
07:02:53 <elliott> shachaf: No, @ is basically one level of super above Unix.
07:03:00 <elliott> It's just a really big super.
07:03:05 <shachaf> Super Unix?
07:04:06 <elliott> Sunix.
07:04:06 <oerjan> :t (>>= (>>=))
07:04:07 <lambdabot> forall (m :: * -> *) a b. (Monad m) => ((a -> m b) -> m a) -> (a -> m b) -> m b
07:05:01 <oerjan> fancy
07:05:40 <kallisti> oerjan: yo dawg, we heard you like binds
07:06:00 <elliott> shachaf: Do you have a tmie machine yet?
07:06:02 <elliott> oerjan: That looks nice.
07:06:20 <elliott> :t (>>= (>>=)) ($ 42)
07:06:20 <lambdabot> forall (m :: * -> *) b. (Monad m, Num b) => (b -> m b) -> m b
07:06:21 <oerjan> it's like there should almost be a way to use it for something.
07:06:43 <elliott> :t (>>= (>>=)) ($ 42) (\y -> (y+) <$> readLn)
07:06:44 <lambdabot> forall b. (Num b, Read b) => IO b
07:06:47 <elliott> yay
07:07:01 <elliott> now the problem is, doing it with a =/= b
07:07:32 <elliott> :t (>>= (>>=)) (\act -> ("hello",) <$> act 42) (\(prompt,y) -> putStrLn prompt >> (y+) <$> readLn)
07:07:32 <lambdabot> Illegal tuple section: use -XTupleSections
07:07:38 <elliott> :t (>>= (>>=)) (\act -> (,) "hello" <$> act 42) (\(prompt,y) -> putStrLn prompt >> (y+) <$> readLn)
07:07:39 <lambdabot> No instance for (Num [Char])
07:07:39 <lambdabot> arising from the literal `42' at <interactive>:1:41-42
07:07:39 <lambdabot> Possible fix: add an instance declaration for (Num [Char])
07:07:41 <elliott> :(
07:08:17 <elliott> :t (>>= (>>=)) (\act -> (,) "done" <$> act ("hello",42)) (\(prompt,y) -> putStrLn prompt >> (y+) <$> readLn)
07:08:18 <lambdabot> forall b. (Num b, Read b) => IO b
07:08:21 <elliott> oerjan: yay
07:08:41 <elliott> oerjan: I think the problem is that the (m a)'s return value is basically discarded
07:08:45 <elliott> oerjan: unless you use mfix
07:08:50 <elliott> but /that's/ above my skill
07:09:05 <elliott> (to somehow modify your return value and pass it back /in/ to the (a -> m b))
07:09:25 <elliott> oerjan: also, I'm unconvinced it's any different to ($)...
07:09:36 <elliott> shachaf: *time
07:09:40 <oerjan> um
07:10:02 <shachaf> elliott: Yes.
07:10:15 <shachaf> elliott: ASTERISKNo.
07:12:23 <oerjan> (x >>= (>>=)) y = x y >>= y
07:12:35 <Sgeo> I may have found a solution to my MIDI problem of many many years
07:12:37 <oerjan> which is not very similar to ($)
07:12:42 <Sgeo> Many of these MIDIs had names embedded in them!
07:13:04 <Sgeo> Feel free to point and laugh
07:14:08 <elliott> shachaf: :(
07:14:15 <elliott> oerjan: oh right
07:14:28 <elliott> oerjan: it does feel almost useful...
07:14:31 <shachaf> elliott: Was it my job to time machine?
07:14:34 <elliott> oerjan: maybe in the fixed-point
07:14:37 <elliott> shachaf: Yes.
07:16:21 <elliott> shachaf: So, um, is dzen good? I need more reassurance before I install this terribly-named AUR package.
07:16:31 <shachaf> elliott: dzen is OK.
07:16:39 <shachaf> It gets input on stdin and prints it.
07:16:42 <elliott> shachaf: Is there anything more OK?
07:16:42 <shachaf> s/print/show/
07:16:50 <shachaf> Depends on what you want.
07:16:54 <elliott> (Also, should I use it with i3status or does it have its own stuff for that?)
07:17:37 <shachaf> I just wrote my own shell script for that.
07:18:45 <shachaf> elliott; I know how you much of an anti-NIH person you are, though; I understand if you just want to use a prewritten package.
07:21:16 <elliott> shachaf: Totally.
07:21:36 <elliott> shachaf: Actually I mostly just don't trust a shell script to not eat CPU/battery/whatever.
07:23:39 * elliott answers a Monad Question.
07:24:03 * elliott very carefully perpetrates the "action"/"execute" terminology for IO actions while doing so, and slips in "monadic context" for good measure.
07:24:17 <kallisti> elliott: shameful
07:25:24 <shachaf> elliott: Make sure to mention how getChar is a function.
07:25:27 <shachaf> For clarity's sake.
07:25:43 <shachaf> (The Report says so, after all.)
07:26:44 <elliott> shachaf: THE REPORT IS WRONG.
07:26:48 <elliott> Haskell is internally inconsistent.
07:27:17 <ais523> elliott: ?
07:27:26 <pikhq_> :t getChar
07:27:27 <lambdabot> IO Char
07:27:30 <Sgeo> Oh, because 0-argument functions aren't functions?
07:27:31 <pikhq_> That ain't a function.
07:27:41 <zzo38> It isn't a function.
07:27:56 <zzo38> It is a value to represent I/O action resulting in Char.
07:28:03 <elliott> ais523: ?
07:28:11 <elliott> Sgeo: There is no such thing as a "0-argument function".
07:28:16 <Sgeo> I take it you wouldn't call pi a function either
07:28:16 <ais523> oh, the debate about if getChar is a function
07:28:21 <shachaf> ais523: http://www.haskell.org/onlinereport/haskell2010/haskellch7.html#x14-1450007.1
07:28:21 <elliott> Sgeo: http://conal.net/blog/posts/everything-is-a-function-in-haskell
07:28:23 <elliott> ais523: There is no debate.
07:28:32 <ais523> elliott: this actually lead to a lot of confusion in my compiler
07:28:39 <shachaf> elliott: We yield to the Report.
07:28:43 <zzo38> elliot: Except in C, in which there is 0-argument function. In Haskell there is 1-argument function, but the output might be another function.
07:28:44 <ais523> as something was meant to be a function, but was showing up as a command, and we weren't sure why
07:28:48 <elliott> At least, I've never seen anyone who actually knows Haskell disagree, apart from the Report, which is written by lame people.
07:28:55 <elliott> zzo38: Right, in Haskell.
07:28:57 <ais523> turned out that it did correctly see it as a function, but incorrectly optimized the argument out altogether
07:29:22 <shachaf> Sgeo: A "function" is a thing that has type (a -> b) for some a and b.
07:29:36 <shachaf> The "argument" of that function (singular) has type "a".
07:30:11 <ais523> anyway, seeing nonfunctions as nullary functions has a consistency to it that's nice in a compiler
07:30:14 <elliott> shachaf: It's still of course acceptable syntax to abbreviate "a function of (N+1) arguments" as "a function with result type (a function of N arguments)".
07:30:17 <ais523> just like seeing commands as 0-bit integers helps
07:30:17 <pikhq_> zzo38: Of course, Haskell "function" and C "function" are two different things.
07:30:30 <elliott> ais523: That's a property of your target architecture etc.
07:30:36 <ais523> indeed
07:30:40 <shachaf> elliott: Not if you're at the point where you ever say anything like "0-argument functions".
07:30:43 <pikhq_> A Haskell function is anything of type a->b, while a C function is a subroutine that takes 0 or more arguments.
07:30:54 * elliott thinks that most arguments based on "it's elegant/natural" to do with programming are completely based on historical precedent.
07:31:05 <zzo38> That is because a Haskell function is like a mathematical function.
07:31:08 <elliott> shachaf: I meant (N+2) and (N+1).
07:31:11 * pikhq_ nods
07:31:12 <elliott> shachaf: Sry.
07:31:28 <shachaf> elliott: ?
07:31:39 <shachaf> I'm just trying to say that Sgeo is wrong.
07:31:48 <elliott> shachaf: I agree.
07:31:58 <elliott> shachaf: I just mean that I intended to exclude that specifically in my expansion.
07:32:13 * elliott notes that map is both a function of 1 argument and a function of 2 arguments.
07:32:28 <shachaf> id is a function of INFINITY ARGUMENTS!!cos(0)
07:32:33 <elliott> Also, printf is a function of 1 argument, and printf is a function of (N+1) arguments if printf is a function of N arguments.
07:32:40 <elliott> DARE YOU INDUCT?
07:32:52 <shachaf> > id id id id id id id id id id id id id id id id 1
07:32:53 <lambdabot> 1
07:32:56 <zzo38> All functions have exactly 1 argument in Haskell. But it is just that some functions output will be another function.
07:32:59 <shachaf> > id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 1
07:33:04 <lambdabot> mueval-core: Time limit exceeded
07:33:04 <lambdabot> mueval: ExitFailure 1
07:33:08 <elliott> shachaf: id is slow, man.
07:33:24 <elliott> Oh, I was reading that thing about xmonad.
07:33:31 <Sgeo> > const () $ fix id
07:33:35 <lambdabot> mueval-core: Time limit exceeded
07:33:37 <kallisti> elliott: I would think id is completely optimized aw-- oh wait interpreter
07:33:39 <Sgeo> Uh
07:33:48 <Sgeo> Why did that time out?
07:34:03 <elliott> Sgeo: id is slow.
07:34:06 <kallisti> Sgeo: const is slow man
07:34:11 <elliott> kallisti: lambdabot compiles.
07:34:15 <Sgeo> elliott, it shouldn't even be doing id or fix id or anything!
07:34:15 <kallisti> oh okay.
07:34:17 <elliott> With optimisation.
07:34:23 <Sgeo> :t const
07:34:28 <lambdabot> forall a b. a -> b -> a
07:34:42 <Sgeo> Unless this const isn't all that lazy?
07:34:51 <Sgeo> > const () undefined
07:34:52 <lambdabot> ()
07:35:03 <Sgeo> See, that's fine
07:35:05 * Sgeo mindboggles
07:35:10 <shachaf> Sgeo: See if you can figure out the type of the first id.
07:35:14 <elliott> 04:25:35: <Gregor> Surely you could implement a Bourne shell that used posix_spawn instead of fork/exec, and then Cygwin would suck considerably less ...
07:35:27 <elliott> Gregor: I bet Cygwin is such that you can't spawn without going through the fork overhead.
07:35:43 <shachaf> Sgeo: Your ghci will also not be able to evaluate that.
07:35:48 <elliott> shachaf: That has nothing to do with <Sgeo> > const () $ fix id.
07:35:54 <elliott> That's just lambdabot being weird.
07:36:01 <shachaf> Oh.
07:36:07 <shachaf> > const () (fix id)
07:36:08 <lambdabot> ()
07:36:09 <shachaf> It's the $
07:36:12 <shachaf> $ is slow
07:36:28 <Sgeo> a->a (a->a)->(a->a) ... I was going to guess the password and ask if typechecking's taking forever
07:36:33 <Sgeo> *try to
07:36:54 <shachaf> > cоnst () $ fix id
07:36:56 <lambdabot> *Exception: TOO SLOW, MAN
07:36:59 <ais523> elliott: oh, question! for our ICA compiler, we wanted to write a program that waited for a key to be pressed
07:37:11 <Sgeo> shachaf, what did you do?
07:37:13 <ais523> and we have a function which, in Haskell notation, would be getKeyPress : Int
07:37:18 <shachaf> Sgeo: I USED $
07:37:19 <ais523> which returns an integer that's the key that was pressed
07:37:22 <elliott> Lt cоnst
07:37:23 <elliott> :t cоnst
07:37:24 <lambdabot> Expr
07:37:32 <ais523> we don't care which key was pressed; how do we ignore that?
07:37:34 <Sgeo> @undef
07:37:38 <Sgeo> :t const
07:37:39 <lambdabot> forall a b. a -> b -> a
07:37:44 <elliott> ais523: const () getKeyPress
07:37:44 <Sgeo> > const () $ fix id
07:37:45 <lambdabot> ()
07:37:48 <ais523> (ICA is lazy but impure)
07:37:52 <elliott> oh
07:37:54 <ais523> elliott: doesn't work; then it doesn't wait for the key
07:37:56 <elliott> ais523: seq getKeyPress ()
07:37:56 <shachaf> > cоnst () (((((((fix id)))))))
07:37:57 <elliott> obviously
07:37:58 <lambdabot> *Exception: TOO SLOW, MAN
07:38:03 <elliott> (you don't need pseq, just seq)
07:38:04 <ais523> elliott: agreed
07:38:13 <elliott> (you don't care if the () is evaluated first, after all)
07:38:29 <Sgeo> Was shachef trolling me making me think something was wrong with const () $ fix id?
07:38:35 <elliott> ais523: btw, that wasn't haskell notation
07:38:40 <elliott> Sgeo: shachef trolls everybody.
07:38:42 <ais523> it's just that we don't have that sort of seq handy, our only seq is seq : (com * 'a) -> 'a
07:38:45 <elliott> Then he goes bork bork bork.
07:38:46 <ais523> elliott: err, double colon?
07:38:50 <elliott> ais523: Yes.
07:38:57 <elliott> ais523: I'm dead sure you can implement seq.
07:39:01 <ais523> and 'a isn't Haskell either, but is nicer than forall
07:39:07 <elliott> ais523: But fine, seq (execute getKeyPress, ())
07:39:13 <elliott> execute : 'a -> com
07:39:19 <elliott> s/execute/evaluate/g, actually.
07:39:24 <elliott> ais523: forall?
07:39:26 <elliott> You don't need forall.
07:39:27 <ais523> well, all we actually need is evaluate getKeyPress
07:39:29 <elliott> seq :: Com -> a -> a
07:39:38 <ais523> the problem was defining evaluate
07:39:52 <ais523> in the end, we managed it as (let x := a in skip), which is ridiculous
07:40:08 <ais523> because a variable assignment's a side-effect so has to be forced
07:40:24 <elliott> What was that about forall, anyway?
07:40:38 <ais523> oh, Haskell uses forall to introduce type variables
07:40:43 <ais523> whereas OCaml uses '
07:41:07 <ais523> presumably the forall is optional
07:41:18 <elliott> ais523: Incorrect.
07:41:22 <elliott> forall is an identifier in Haskell.
07:41:26 <elliott> id :: forall -> forall
07:41:46 <ais523> hmm
07:41:47 <pikhq_> elliott: He's referring to the "forall x." thing
07:41:48 <ais523> :t id
07:41:49 <lambdabot> forall a. a -> a
07:41:53 <ais523> like that
07:42:04 <elliott> ais523:
07:42:14 <pikhq_> ais523: That is optional and a nonstandard extension.
07:42:15 <elliott> :t (.)
07:42:16 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
07:42:19 <elliott> :t flip
07:42:20 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
07:42:23 <ais523> pikhq_: ah, I see
07:42:24 <elliott> > (# (), () #)
07:42:25 <lambdabot> Illegal binding of unboxed tuple e_1 :: (# (), () #)
07:42:31 <elliott> > id runST (return ())
07:42:32 <lambdabot> Couldn't match expected type `m ()'
07:42:32 <lambdabot> against inferred type `forall s...
07:42:33 <ais523> and you can tell type variables from types because types start with capitals in Haskell?
07:42:37 <elliott> > runST (return ())
07:42:38 <lambdabot> ()
07:42:43 <ais523> > (# #)
07:42:43 <pikhq_> ais523: Right.
07:42:43 <lambdabot> No instance for (GHC.Show.Show (t -> (# t #)))
07:42:44 <lambdabot> arising from a use of `M5...
07:42:48 <elliott> ais523 discovers that lambdabot is not standard Haskell.
07:42:58 <ais523> hmm, how do you write an unboxed 0-element tuple?
07:43:03 <elliott> ais523: There is no such thing.
07:43:08 <ais523> but consistency!
07:43:10 <elliott> Alternatively, it's called ().
07:43:20 <pikhq_> ais523: "How do you write an unboxed nothing", you mean?
07:43:22 <pikhq_> ()
07:43:26 <ais523> yep
07:43:45 <ais523> > ((0,0),0) = (0,(0,0))
07:43:46 <lambdabot> <no location info>: parse error on input `='
07:43:49 <Sgeo> () is boxed isn't it?
07:43:53 <ais523> > ((0,0),0) == (0,(0,0))
07:43:54 <lambdabot> True
07:43:56 <elliott> Sgeo: There's nothing to box.
07:43:58 <ais523> ah, OK
07:44:01 <elliott> ais523: misleading
07:44:02 <ais523> I was wondering whether that would type
07:44:07 <elliott> only because of lambdabot's non-standard instances
07:44:09 <Sgeo> elliott, it can be unevaluated, can't it?
07:44:10 <elliott> that's the same as
07:44:12 <ais523> elliott: ah, OK
07:44:20 <elliott> > ((0,0),(0,0)) == ((0,0),(0,0))
07:44:21 <lambdabot> True
07:44:34 <ais523> 0 is an instance of (Int,Int)?
07:44:34 <elliott> Sgeo: Sure, but there's only one ().
07:44:59 <ais523> > (('x','x'),'x') == ('x',('x','x'))
07:45:00 <lambdabot> Couldn't match expected type `(GHC.Types.Char, GHC.Types.Char)'
07:45:00 <lambdabot> aga...
07:45:03 <ais523> there we go
07:45:07 <zzo38> ais523: Don't you mean instance Num (Int, Int)?
07:45:24 <ais523> zzo38: yes, that's a different way to think of it
07:45:44 <pikhq_> zzo38: That's not the way to phrase it.
07:45:50 <elliott> ais523: no, that's literally why it happens
07:45:55 <elliott> instance (Num a) => Num (a,a)
07:45:59 <elliott> oh, hmm
07:46:01 <Sgeo> elliott, oh, it's just the stuff inside an unboxed tuple that can't be undefined?
07:46:04 <elliott> instance (Num a, Num b) => Num (a, b)
07:46:05 <zzo38> pikhq_: O, it isn't?
07:46:07 <pikhq_> Presumably, there's an instance (Num a) => Num (a,a) ... Like that
07:46:16 <elliott> Sgeo: Well, yeah. Here, ask shachaf.
07:46:27 <pikhq_> And 0 :: (Num n) => n, of course.
07:46:28 <shachaf> What?
07:46:39 * shachaf was happily reading not-IRC.
07:46:46 <Sgeo> > (5,5) + (4,3)
07:46:47 <lambdabot> (9,8)
07:47:10 <Sgeo> > (0,0) == 0
07:47:11 <lambdabot> True
07:47:17 <Sgeo> > (0,1) == 0
07:47:17 <lambdabot> False
07:47:20 <Sgeo> > (0,1) == 1
07:47:21 <lambdabot> False
07:47:28 <elliott> Sgeo: It's a quantum superposition of 0 and 1.
07:47:30 <elliott> Don't you know anything>
07:47:31 <elliott> ?
07:47:47 <Sgeo> > (0,1) == (1,0)
07:47:48 <lambdabot> False
07:47:51 <Sgeo> > (0,1) == (0,1)
07:47:51 <lambdabot> True
07:47:54 <elliott> @let collapse (a,b) = (a/2) + (b/2)
07:47:55 <lambdabot> Defined.
07:47:57 <elliott> > collapse 1
07:47:59 <lambdabot> 1.0
07:48:00 <elliott> > collapse (0,1)
07:48:01 <lambdabot> 0.5
07:48:15 <elliott> > collapse (0,1) == collapse (2,-1)
07:48:17 <lambdabot> True
07:48:20 <Sgeo> Oh, I see how the earlier things work now
07:48:21 <shachaf> > collapse (0,1) :: (Int,Int)
07:48:21 <Sgeo> ty
07:48:22 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
07:48:22 <lambdabot> arising from a use o...
07:48:24 <ais523> elliott: quantum superpositions don't average like that
07:48:24 * Sgeo is a derp.
07:48:27 <shachaf> > collapse (0,1) :: (Double,Double)
07:48:28 <lambdabot> (0.5,0.5)
07:48:34 <elliott> ais523: They do in Haskell.
07:48:35 <ais523> anyway, doesn't the List monad do quantum superpositions just fine?
07:48:47 <elliott> No, it doesn't track probability.
07:48:49 <elliott> You can do that with a monad though.
07:48:50 <Sgeo> ais523, not if there's an infinite amount of superpositions.
07:48:53 <Sgeo> >.>
07:48:59 <ais523> elliott: oh, right
07:49:15 <zzo38> List monad doesn't do quantum superpositions, it just is a list of items in an order.
07:49:27 <ais523> yep, it's easy enough to visualise a set of (value,probability) pairs with the monad rules defined analogously to List
07:49:30 <elliott> zzo38: it's a nondeterministic choice monad, though
07:49:34 <ais523> hmm, would the probabilities be reals or complex numbers?
07:50:02 <Sgeo> I'm pretty sure I saw quantum stuff on Hackage
07:50:06 <zzo38> You can do probabilities with WriterT (Product Double) [] or whatever
07:50:26 <Sgeo> QIO doesn't sound right
07:50:30 <zzo38> elliott: What is a choice monad, exactly?
07:52:00 <ais523> elliott: anyway, I worked out how multithreading works in Feather; it's basically a case of fork existing but join not existing, and retroactive assignments only happening within the one thread
07:52:03 <ais523> I'm not sure how useful that is
07:52:11 <ais523> also, the threads can't communicate at all, not even retroactively
07:53:37 <ais523> elliott: heh at that "everything is a function" article; I particularly liked the Scala example in the comments of "1()()()" being valid Scala (and evaluating to 1)
07:54:17 <zzo38> At least, I think you can make a probability monad with WriterT (Product Double) [] and you can use different types such as exact fractions if you prefer, and so on
07:55:22 <elliott> > 1()()()
07:55:22 <oerjan> > first 1 2
07:55:23 <lambdabot> 1
07:55:23 <lambdabot> can't find file: L.hs
07:55:25 <elliott> > 1()()()
07:55:26 <lambdabot> 1
07:55:29 <Sgeo> My laptop's battery seems to be dead.
07:55:30 <elliott> (wtf at oerjan's error)
07:55:31 <ais523> elliott: hmm, the nullary function view is a /lot/ more consistent in SCC
07:55:32 <oerjan> > first 1 2
07:55:36 <lambdabot> mueval-core: Time limit exceeded
07:55:43 <oerjan> :t first 1 2
07:55:44 <lambdabot> forall c d. (Num c, Num d) => (c, d)
07:55:45 <elliott> ais523: SCC?
07:55:48 <kallisti> zzo38: probably in what way? wouldn't you need a seed for a PRNG?
07:55:49 <elliott> zzo38: [] is the monad of nondeterministic choice.
07:55:50 <Sgeo> If the computer got unplugged, even for a second, it will probably just die
07:55:51 <oerjan> > first 1 2
07:55:52 <lambdabot> (1,2)
07:55:52 <elliott> zzo38: It's like Prolog without cut.
07:56:15 <ais523> elliott: it's an intermediate type system, that requires each function its argument finitely many times in parallel with itself
07:56:20 <elliott> > let factor n = do { x <- [1..n]; y <- [1..n]; if x * y == n then return (x,y) else [] } in factor 10
07:56:21 <lambdabot> [(1,10),(2,5),(5,2),(10,1)]
07:56:29 <elliott> > let factor n = do { x <- [2..n]; y <- [2..n]; if x * y == n then return (x,y) else [] } in factor 10
07:56:30 <lambdabot> [(2,5),(5,2)]
07:56:30 <elliott> (whoops)
07:56:32 <zzo38> elliott: O, it is like Prolog. I don't know about Prolog a lot
07:56:42 <ais523> e.g. \x. x||x is allowed, but \x.fix((x||)) isn't allowed
07:56:48 <elliott> ais523: Each function its argument?
07:56:53 <kallisti> elliott: noice
07:56:57 <ais523> *each function to use its argument
07:57:09 <kallisti> elliott: isn't there like a Control.Monad function for that?
07:57:10 <kallisti> :t guard
07:57:11 <lambdabot> forall (m :: * -> *). (MonadPlus m) => Bool -> m ()
07:57:14 <ais523> also, the restriction's not just "finite" but "finite and some explicit finite integer"
07:57:17 <kallisti> hm no not quite
07:57:25 <elliott> kallisti: [] is MonadPlus, so you can do it, yes
07:57:35 <elliott> > let factor n = do { x <- [2..n]; y <- [2..n]; guard (x * y == n); return (x,y) } in factor 10
07:57:35 <lambdabot> [(2,5),(5,2)]
07:57:37 <kallisti> elliott: right, but is it already in control.monad?
07:57:41 <elliott> @hoogle guard
07:57:42 <lambdabot> Control.Monad guard :: MonadPlus m => Bool -> m ()
07:57:43 <lambdabot> Language.Haskell.TH.Syntax data Guard
07:57:43 <lambdabot> Language.Haskell.TH data Guard
07:57:44 <elliott> Yes.
07:57:46 <ais523> the interesting thing about SCC is that it's finite-state, but there are no known non-pathological finite-state ICA programs that don't type in it
07:57:54 <ais523> and the pathological ones are trivial to rewrite to be non-pathological
07:58:17 <ais523> let a = \e.e(skip) in let b = \f.f(f(skip)) in let c = \g.g(\x.g(\y.x)) in c(a); c(b)
07:58:25 <ais523> ^ a pathological program that doesn't type in SCC
07:58:33 <zzo38> kallisti: Well, yes if you want to select a random option you will need a seed. But it will make the probability of each value keeping. So, join will make a probability distributions of probability distribution into a probability distribution by multiplying the probabilities together, and return is a single item with 1 probability, fmap is map items, bind makes probability depending on input value
07:58:46 <kallisti> zzo38: ah okay I see.
07:59:08 <kallisti> elliott: all of the conditional-like functions I see return m () which is not quite what is wanted in this case.
07:59:23 <ais523> elliott: anyway, say you have something of type com→com in ICA; its type might be com^1→com in SCC, but also might be com^2→com, or com^0→com (e.g., that's the type of const skip)
07:59:38 <ais523> those compile into functions of type com→com, com→com→com, and com respectively in SCI
07:59:40 <elliott> kallisti: Yes it is.
07:59:43 <elliott> I just rewrote it with guard.
07:59:55 <ais523> except that the last isn't actually a function, but it makes sense to treat it as a nullary function so you don't have to special-case it
07:59:59 <kallisti> elliott: oh I see.
08:00:04 <elliott> ais523: Trivial to write algorithmically, or just "I haven't found one I can't yet"?
08:00:22 <elliott> > let factor n = [ (x,y) | x <- [2..n], y <_ [2..n], x*y == n ] in factor 10
08:00:22 <lambdabot> Pattern syntax in expression context: _
08:00:24 <zzo38> But to me what it looks like, is the list monad is a monad just because it follows the monad laws. Yes you can use it for many purpose like many thing can be for many purposes.
08:00:25 <elliott> > let factor n = [ (x,y) | x <- [2..n], y <- [2..n], x*y == n ] in factor 10
08:00:26 <lambdabot> [(2,5),(5,2)]
08:00:33 <elliott> kallisti: This shows how list comprehensions are like do notation.
08:00:36 <ais523> elliott: there's an algorithm that's trivial but rather wasteful, which involves inlining all the arguments to the function
08:00:37 <zzo38> But of course the list is ordered.
08:00:50 <kallisti> elliott: indeed
08:00:52 <elliott> zzo38: right, this would work with Set too :P
08:00:57 <elliott> were it a Monad
08:00:58 <ais523> and I haven't found one that can't be fixed less wastefully in practice
08:01:04 <elliott> ais523: fair enough
08:01:05 <zzo38> elliott: Yes, and then it would be not ordered.
08:01:14 <zzo38> And not duplicate values either.
08:02:07 <zzo38> There would be set monad in mathematics, there are some monad in mathematics that it doesn't make in Haskell.
08:02:27 <kallisti> elliott: how would you take only unique combinations? (no duplication of (a,b) and (b,a) )
08:02:53 <elliott> > let factor n = [ (x,y) | x <- [2..n], y <- [2..n], x*y == n ] in Set.fromList . map (\(a,b) -> if b>a then (b,a) else (a,b)) $ factor 10
08:02:54 <lambdabot> Not in scope: `Set.fromList'
08:02:58 <elliott> > let factor n = [ (x,y) | x <- [2..n], y <- [2..n], x*y == n ] in S.fromList . map (\(a,b) -> if b>a then (b,a) else (a,b)) $ factor 10
08:03:00 <lambdabot> fromList [(5,2)]
08:03:07 <kallisti> ah okay.
08:03:38 <kallisti> what's the fromList for exactly?
08:03:45 <elliott> > let factor n = [ (x,y) | x <- [2..n], y <- [2..n], x*y == n ] in map (\(a,b) -> if b>a then (b,a) else (a,b)) $ factor 10
08:03:46 <lambdabot> [(5,2),(5,2)]
08:03:49 <kallisti> oh..
08:04:35 <kallisti> I feel that could possibly be better written?
08:04:39 <kallisti> maybe with additional guards?
08:04:41 <kallisti> hm, no
08:04:43 <zzo38> I don't really like list comprehension but there it is. If they need something like that they could just use do-notation since it work the same way anyways.
08:05:15 <oerjan> > let factor n = [ (x,y) | x <- [2..n], y <- [2..x], x*y == n ]
08:05:15 <lambdabot> not an expression: `let factor n = [ (x,y) | x <- [2..n], y <- [2..x], x*y ...
08:05:23 <pikhq_> I dislike that list comprehension is insufficiently general.
08:05:27 <oerjan> > let factor n = [ (x,y) | x <- [2..n], y <- [2..x], x*y == n ] in factor 10
08:05:28 <lambdabot> [(5,2)]
08:05:28 <elliott> pikhq_: not any mor
08:05:29 <elliott> e
08:05:31 <pikhq_> I see no reason it can't be monad comprehensions.
08:05:31 <elliott> ghc 7.2 has monad comprehensions
08:05:35 <pikhq_> elliott: Oh?
08:05:36 <pikhq_> :)
08:05:50 <pikhq_> Good deal.
08:05:58 <kallisti> yeaaaah, it's like we have two do notations now!
08:07:03 <zzo38> There is monad comprehensions extension but I don't know why you need it, if you already have do notation anyways.
08:07:15 <ais523> haven't non-list monad comprehensions been repeatedly added and removed?
08:07:20 <kallisti> oerjan: madness
08:08:11 <pikhq_> zzo38: It's a mere nicety.
08:08:26 <pikhq_> ais523: Yes.
08:09:19 <elliott> zzo38: they can express more than do notation
08:09:25 <elliott> for instance it has notation for "zipping" monadic values
08:09:29 <elliott> and there's the "group by", "sort by" stuff
08:09:52 <elliott> http://hackage.haskell.org/packages/archive/base/4.4.1.0/doc/html/Control-Monad-Zip.html, http://hackage.haskell.org/packages/archive/base/4.4.1.0/doc/html/Control-Monad-Group.html
08:10:11 <elliott> ofc, all of those are extensions to list comprehensions in the first place :)
08:10:15 <zzo38> I find myself using bind operations most often with list monad in actual programs, and not as often with other monad. But sometimes with others too. Since >>= is mostly useful to combine join and fmap together.
08:11:00 <elliott> also, they're more convenient if you have a lot of guards, of course
08:11:27 <elliott> oh, there's no "sort by" stuff, disregard that :)
08:11:31 -!- Sgeo_ has joined.
08:11:32 <elliott> well
08:11:33 <elliott> there is
08:11:36 <elliott> but it's just "F by"
08:11:37 <elliott> for arbitrary f
08:11:39 <elliott> *F
08:11:49 <elliott> and doesn't require any support from the monad
08:11:50 <Sgeo_> My computer's broken battery does piss me off, why do you ask?
08:12:04 <zzo38> Most of the IO stuff in my DVI program is using <*> <* *> <$> although there is sometimes >>= and join as well.
08:12:13 <elliott> Sgeo_: it's not like we can do anything about it.
08:12:43 <Sgeo_> F by?
08:12:58 <zzo38> For guards, sometimes if a result would otherwise be error you can guard it, such as with Maybe monad you can do: x <$ guard (x > 0) and with list monad you can do: guard (condition) >> (list)
08:13:01 <elliott> -- Transform comprehensions
08:13:01 <elliott> D[ e | Q then f, R ] = f D[ Qv | Q ] >>= \Qv -> D[ e | R ]
08:13:01 <elliott> D[ e | Q then f by b, R ] = f (\Qv -> b) D[ Qv | Q ] >>= \Qv -> D[ e | R ]
08:13:12 <zzo38> That is mostly useful of guard, as far as I know.
08:13:26 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:14:43 <zzo38> At least to me, it makes more sense to think of >>= as a convenient shortcut to combine join and fmap together.
08:15:13 <elliott> (>>=) can be justified theoretically by talking about grafting trees, IIRC
08:15:15 <elliott> but I don't recall how
08:15:52 <zzo38> To me it is just that you often want to use join and fmap together.
08:16:09 <zzo38> I don't know about grafting trees or whatever but I would like to know
08:16:49 <elliott> Ask shachaf :D
08:16:59 <kallisti> > let table = [('0',"0"),('1',"1"),('2',"ABC2"),('3',"DEF3"),('4',"GHI4"),('5',"JKL5"),('6',"MNO6"),('7',"PQRS7"),('8',"TUV8"),('9',"WXYZ9"),('0',"0")] in sequence . catMaybes . map (`lookup` table) $ "911"
08:16:59 <shachaf> @slap elliott
08:16:59 * lambdabot is overcome by a sudden desire to hurt elliott
08:17:00 <lambdabot> ["W11","X11","Y11","Z11","911"]
08:17:06 <shachaf> You and I both, lambdabot.
08:17:24 <kallisti> this is apparently a somewhat common job interview question. To take a telephone number and list all of the character expansions or whatever.
08:18:38 <elliott> > let table = [('0',"0"),('1',"1"),('2',"ABC2"),('3',"DEF3"),('4',"GHI4"),('5',"JKL5"),('6',"MNO6"),('7',"PQRS7"),('8',"TUV8"),('9',"WXYZ9"),('0',"0")] in catMaybes . map (`lookup` table) $ "911"
08:18:38 <shachaf> kallisti: You forgot to include an entry for '0'.
08:18:39 <lambdabot> ["WXYZ9","1","1"]
08:18:49 <elliott> ah.
08:18:53 <kallisti> shachaf: no I didn't?
08:19:01 <elliott> > sequence ["abc","def","ghi"]
08:19:02 <lambdabot> ["adg","adh","adi","aeg","aeh","aei","afg","afh","afi","bdg","bdh","bdi","b...
08:19:03 <shachaf> Yes you did.
08:19:05 <elliott> oh, right.
08:19:09 <kallisti> elliott: sequence is awesome.
08:19:11 <kallisti> for lists.
08:19:13 <shachaf> lambdabot needs at least three entries.
08:19:17 <shachaf> Before it takes effect.
08:19:36 <kallisti> wat
08:20:03 <shachaf> let table = [('0',"0")...('0',"0")]
08:20:12 <shachaf> Not enough.
08:20:17 <kallisti> ...oh.
08:20:21 <kallisti> whatever.
08:20:38 <kallisti> it's for extra security.
08:20:47 <kallisti> in case a malicious user recompiles the source and removes the 0 entry.
08:20:55 <kallisti> they'll miss the second one for sure.
08:21:46 -!- Jafet has quit (Ping timeout: 240 seconds).
08:23:37 <elliott> I suppose I'll just install dmenu and dzen.
08:23:57 <elliott> aur/dmenu-path-c 0.1-2 (14)
08:23:57 <elliott> dmenu_path C rewrite. 2-4x faster on cache hits, 10-20x faster on cache misses
08:23:59 <elliott> FINALLY MY MENU IS SO FAST.
08:25:08 <ais523> was it noticeably slow before?
08:25:40 <shachaf> elliott: There's always XPrompt.
08:25:45 <shachaf> I don't like XPrompt much, but I used it.
08:26:53 <kallisti> elliott: the problem is that I'm actually not sure how I would program that in an actual job interview, where they are likely expecting an imperative language or pseudocode.
08:27:09 <elliott> shachaf: Does it support fuzzy matching?
08:27:14 <kallisti> I would guess: for loops. (shocking, yes?)
08:27:45 <shachaf> kallisti: You could always take inspiration from the actual implementation of sequence.
08:27:50 <shachaf> elliott: I have no idea.
08:28:10 <kallisti> shachaf: also the actual implementation of map
08:28:18 <kallisti> that will be my BIG FOR LOOP
08:28:20 <kallisti> THE OUTER ONE
08:28:23 <kallisti> yeaaaah
08:28:26 -!- amca has joined.
08:29:08 <kallisti> actually yeah I see how it would work as pseudocode I just... wouldn't want to write it down
08:30:46 -!- Jafet has joined.
08:34:10 -!- amca has quit (Quit: Farewell).
08:34:31 -!- amca has joined.
08:35:44 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); return [x,y] } in iterate (map factor) [100]
08:35:44 <lambdabot> Occurs check: cannot construct the infinite type: a = [[a]]
08:35:56 <kallisti> oh
08:36:03 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in iterate (map factor) [100]
08:36:04 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
08:36:05 -!- Jafet has quit (Read error: Connection reset by peer).
08:36:20 <kallisti> um.
08:36:23 <oerjan> concatMap
08:36:29 <kallisti> oh..
08:36:39 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in iterate (>>= factor) [100]
08:36:40 <lambdabot> [[100],[10,10,20,5,25,4,50,2],[5,2,5,2,5,4,10,2,5,5,2,2,10,5,25,2],[2,2,5,2...
08:37:00 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in iterate (nub.(>>= factor)) [100]
08:37:01 <lambdabot> [[100],[10,20,5,25,4,50,2],[5,2,4,10,25],[2,5],[],[],[],[],[],[],[],[],[],[...
08:40:02 -!- Jafet has joined.
08:40:24 <kallisti> oerjan: so you could represent each number as a set of its factors, and then multiplication could be represented with set unions, right?
08:40:38 <oerjan> multiset
08:40:50 <oerjan> and prime factors
08:40:55 <kallisti> x * y = x union y union {x,y}
08:41:08 <kallisti> oh, hmmm
08:41:09 <kallisti> yes.
08:45:11 -!- Sgeo has joined.
08:45:37 -!- Sgeo_ has quit (Read error: Connection reset by peer).
08:45:55 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in last . takeWhile (not.null) . iterate (>>= factor) [100]
08:45:56 <lambdabot> No instances for (GHC.Num.Num [a], GHC.Enum.Enum [a])
08:45:56 <lambdabot> arising from a use...
08:46:32 <kallisti> :t null
08:46:33 <lambdabot> forall a. [a] -> Bool
08:46:33 <oerjan> needs a $
08:46:42 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in last . takeWhile (not.null) . iterate (>>= factor) $ [100]
08:46:44 <lambdabot> [2,2,5,2,5,2,5,5]
08:46:46 <elliott> shachaf: I can't believe spawn takes a String. :(
08:46:55 <shachaf> elliott: spawn?
08:47:03 <shachaf> Oh, as in XPrompt. Not kmc's thing.
08:47:10 <shachaf> Well, XPrompt is horrible
08:47:21 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in map (last . takeWhile (not.null) . iterate (>>= factor)) [1..]
08:47:22 <lambdabot> No instances for (GHC.Num.Num [a], GHC.Enum.Enum [a])
08:47:22 <lambdabot> arising from a use...
08:47:26 <kallisti> lol
08:47:39 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in map (last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
08:47:41 <lambdabot> [[1],[2],[3],[2,2],[5],[3,2],[7],[2,2],[3,3],[5,2],[11],[2,2,3,2],[13],[7,2...
08:48:03 <kallisti> oerjan: is there a better way to write that?
08:49:23 <kallisti> oh hmmm those aren't unique. do I need to change y <- [2..x] to y <- [2..n] ?
08:49:56 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..n]; guard (x * y == n); [x,y] } in map (last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
08:49:57 <lambdabot> [[1],[2],[3],[2,2],[5],[2,3,3,2],[7],[2,2,2,2],[3,3],[2,5,5,2],[11],[2,3,3,...
08:50:13 <kallisti> wonderful
08:51:12 <elliott> shachaf: No, as in XMonad.Core.
08:51:23 <shachaf> elliott: Oh, *that* spawn.
08:51:31 <shachaf> elliott: Well, XMonad is horrible.
08:52:36 <kallisti> oerjan: oh hey that's really obvious why that is.
08:52:50 <oerjan> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x] } in map (last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
08:52:53 <lambdabot> [[1],[2],[3],[2],[5],[3],[7],[2],[3],[5],[11],[2,3],[13],[7],[5],[2],[17],[...
08:52:58 <oerjan> oops
08:53:29 <kallisti> oerjan: stupid irssi
08:53:37 <oerjan> what?
08:53:58 <kallisti> irssi will add a newline to my copypastes even though I SPECIFICALLY TRY TO AVOID THEM
08:54:07 <kallisti> with the result that pasting sends the message when I want to edit it instead.
08:54:08 <oerjan> i know
08:54:20 <kallisti> so... yes, that's why I said that.
08:54:34 <kallisti> oh
08:54:36 <kallisti> nevermind :P
08:54:41 <kallisti> I should like look at things with my eyes.
08:54:46 <kallisti> before I use my brainplaces
08:54:53 <oerjan> good policy
08:56:09 <kallisti> I'm kind of mystified as to why my code returns [1] for 1
08:56:16 <oerjan> this may in any case not be the optimal way to get the prime factors
08:56:17 <kallisti> when the list ranges in factor are [2..n]
08:56:28 <oerjan> kallisti: because the first iterate is []
08:56:36 <shachaf> elliott: Sgeo is calling IO actions impure in #haskell
08:56:49 <kallisti> heresy
08:56:58 <shachaf> Make Sgeo stop.
08:57:03 <shachaf> 08:56 < Sgeo> And I'm assuming everyone knows what I meant by "impure"
08:57:03 <shachaf> 08:56 < Sgeo> I was too lazy to write out the truth
08:57:07 <elliott> shachaf: Well, the actions are.
08:57:09 <elliott> Their existence isn't.
08:57:10 <oerjan> > iterate (const []) [1]
08:57:11 <lambdabot> [[1],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
08:57:12 <elliott> Rather, what the actions do is impure.
08:57:21 <elliott> And "getChar reads a character" is accurate, so "getChar is impure" is accurate.
08:57:27 <kallisti> oerjan: oh, nice.
08:57:27 <elliott> But not "Haskell is impure because getChar".
08:57:59 <Sgeo> elliott, I said stuff in which I sloppily used "impure" in a question to indicate value that looks like IO a rather than a
09:00:05 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..n]; guard (x * y == n); [x,y] } in map (length . last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
09:00:09 <lambdabot> mueval-core: Time limit exceeded
09:00:14 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..n]; guard (x * y == n); [x,y] } in map (length . last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
09:00:17 <kallisti> try harder
09:00:18 <lambdabot> mueval-core: Time limit exceeded
09:00:21 <kallisti> noooooooo
09:01:06 <oerjan> you might want a nub somewhere, still
09:01:22 <kallisti> for what?
09:01:34 <oerjan> to avoid duplicates
09:01:37 <kallisti> I wanted to uniquely identify each integer as a multiset of prime factors.
09:01:40 <kallisti> so... I did that.
09:01:57 <oerjan> well, it wasn't working, since you didn't get the right number of each previously
09:02:18 <kallisti> I didn't
09:02:19 <kallisti> ?
09:02:36 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..n]; guard (x * y == n); [x,y] } in map (last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
09:02:38 <lambdabot> [[1],[2],[3],[2,2],[5],[2,3,3,2],[7],[2,2,2,2],[3,3],[2,5,5,2],[11],[2,3,3,...
09:02:40 <kallisti> this isn't right?
09:02:46 <kallisti> it seems pretty right to me.
09:02:46 <oerjan> 6 is wrong
09:02:51 <kallisti> oh, indeed.
09:02:59 <oerjan> 8 and 10 as well
09:03:22 <Sgeo> "Your battery is charging (0%)"
09:03:23 <kallisti> hm
09:03:23 <Sgeo> Lovely
09:05:31 <kallisti> > let factor n = do { x <- [2..n]; y <- [2..x]; guard (x * y == n); [x,y] } in map (last . takeWhile (not.null) . iterate (>>= factor) . return) [1..]
09:05:33 <lambdabot> [[1],[2],[3],[2,2],[5],[3,2],[7],[2,2],[3,3],[5,2],[11],[2,2,3,2],[13],[7,2...
09:05:38 <kallisti> hmmm
09:05:45 <oerjan> 8 and 12 wrong
09:05:53 <kallisti> yes I know.
09:06:01 <kallisti> I'm figuring out where to go from here.
09:06:58 <oerjan> the thing is that you get a mishmash of (1) different factor paths reaching bottom at different speeds (2) different factorizations contributing
09:08:07 <kallisti> hm.
09:08:08 -!- oerjan has quit (Quit: Argh!).
09:09:58 -!- tuubow has quit (Ping timeout: 252 seconds).
09:11:05 -!- zzo38 has quit (Remote host closed the connection).
09:20:47 -!- Jafet has quit (Read error: Connection reset by peer).
09:21:46 <kallisti> elliott: are there any studies comparing code size of Haskell programs in the wild with other languages?
09:22:05 <elliott> probably not
09:22:21 <elliott> there are far too many variables to make such a study worthwhile, anyway
09:22:33 <elliott> not many people clone things feature-for-feature
09:22:46 <kallisti> hmmm, yeah
09:23:05 <shachaf> HASKELL IS MORE BETTER THEN OTHER LANGUAGES
09:23:09 <elliott> kallisti: xmonad core is shorter than dwm (IIRC) and quite a bit more featureful
09:23:13 <shachaf> There, that's all the study you need.
09:23:18 <elliott> (and extensible)
09:23:23 <shachaf> elliott: xmonad core is rather less featureful.
09:23:28 <elliott> shachaf: Than /dwm/?
09:23:29 <shachaf> For example, it don't include a status bar.
09:23:49 <elliott> True. But it has better layouts!
09:23:51 <elliott> And configurable layouts.
09:23:58 <shachaf> It has pretty much the same layouts, I think.
09:24:04 <shachaf> Maybe a bit more.
09:24:13 <kallisti> elliott: I was wonder because in the haskellwiki introduction there this claim:
09:24:18 <shachaf> Anyway, they pretty much gave up on the whole "make it short" thing.
09:24:19 <kallisti> Functional programs tend to be much more concise, shorter by a factor of two to ten usually, than their imperative counterparts.
09:24:26 <elliott> shachaf: Also, it can launch more than two programs or so.
09:24:30 <kallisti> and was wondering if it had any actual basis.
09:24:36 <elliott> (Patching dwm does not count, even if it's what you're meant to do.)
09:24:42 <elliott> (At least not until dwm(1) recompiles itself.)
09:24:49 <shachaf> "Haskell superior to all other programming languages", reports Haskell Wiki.
09:25:04 <elliott> kallisti: Certainly. 10x is a bit ridiculous, though.
09:25:09 <shachaf> elliott: xmonad pretty much recompiles itself.
09:25:13 <shachaf> It's a horrible thing.
09:25:18 <elliott> shachaf: Yes, but automatically.
09:25:30 <elliott> shachaf: Also not really, it doesn't recompile the xmonad library.
09:25:34 <shachaf> zomg automatic
09:25:45 <kallisti> elliott: but is there like some source I can cite to win internet arguments? this is the important part.
09:26:00 <monqy> internet arguments?
09:26:05 -!- Jafet has joined.
09:26:08 <shachaf> The way to win Internet arguments is to declare yourself the victor and ignore everyone else.
09:26:14 <shachaf> Jafet: Isn't that right?
09:26:20 <shachaf> `welcome Jafet
09:26:28 <HackEgo> Jafet: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:26:43 <elliott> kallisti: haskell.org/haskellwiki
09:26:45 <Sgeo> Because Jafet's never been here before.
09:26:53 <kallisti> elliott: harr harr
09:26:55 <elliott> Sgeo: you don't complain when ais523 does it
09:27:12 <Sgeo> I may not have noticed ais523 doing it
09:27:17 <elliott> And shachaf even _knows_ Jafet has been here before!
09:27:26 <shachaf> I do?
09:27:34 <Sgeo> Now he does, if he didn't.
09:27:42 <Sgeo> Or even if he did, well, now he does.
09:27:47 <elliott> shachaf: Well, presumably.
09:27:48 <shachaf> Maybe I confused Jafet with JaffaCakes!
09:28:00 <Sgeo> I didn't strictly need to say that second sentence.
09:28:15 <monqy> indeed, sgeo
09:28:17 <shachaf> Or the second half of the first.
09:28:22 <monqy> or anything
09:28:25 <shachaf> In fact, you didn't strictly need to say anything at all.
09:28:26 <monqy> at all / ever
09:28:29 <monqy> hi
09:28:45 <ais523> `? welcome
09:28:48 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:28:53 <monqy> hi
09:29:08 <ais523> I don't do it quite the same way Sgeo does
09:29:13 <shachaf> `welcome `welcome
09:29:16 <HackEgo> ​`welcome: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:29:21 <ais523> I just generically send a welcome to the whole channel at random now and again
09:29:44 <ais523> `log welcome
09:30:13 <HackEgo> 2011-08-30.txt:14:27:40: <Gregor> Welcome to an obsessive waste of years of your life 8-D
09:30:15 <shachaf> `log tervetuloa
09:30:26 <HackEgo> 2011-04-25.txt:18:39:52: <tswett> Tervetuloa vittu.
09:31:27 <ais523> `cat bin/log
09:31:29 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ grep -P -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi \
09:31:37 <elliott> `welcome `log
09:31:40 <HackEgo> ​`log: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
09:31:45 <elliott> we love you `log
09:31:54 <ais523> hmm, what would be useful: a `pastlog that's like `log except ignores today
09:32:07 <Sgeo> `log PSOX
09:32:08 <ais523> to see when the current topic of conversation happened previously
09:32:12 <HackEgo> 2007-08-26.txt:02:22:41: <pikhq> Sgeo: The PSOX spec is very, very nice. . .
09:32:19 <elliott> -- nobody, eve
09:32:20 <elliott> r
09:32:29 <elliott> (the joke is psox)
09:32:40 <elliott> ais523: That would be fun, but I'm too lazy to write it.
09:32:54 <ais523> you'd just have to replace ????-??-??.txt with `ls -1 ????-??-??.txt | head -n-1`
09:33:12 <ais523> making use of the date sort order
09:33:44 <Sgeo> I wonder if that was before I messed with the spec
09:34:02 <ais523> `cp bin/log bin/pastlog
09:34:04 <Sgeo> I don't think that an August copy of the spec matches the current one
09:34:04 <HackEgo> cp: missing destination file operand after `bin/log bin/pastlog' \ Try `cp --help' for more information.
09:34:04 <elliott> ais523: I'd rather factor it out so that `log optionally takes a list of filenames
09:34:10 <elliott> ais523: oh, I'll do it
09:34:16 <elliott> if only so I don't have to watch you try to remember how HackEgo works...
09:34:23 <ais523> heh, trying to do something yourself is a good way to make elliott do it
09:34:25 <elliott> `url bin/log
09:34:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/log
09:35:53 <elliott> `fetch http://sprunge.us/ZWJE
09:35:55 <HackEgo> 2011-12-20 09:35:55 URL:http://sprunge.us/ZWJE [217] -> "ZWJE" [1]
09:36:01 <elliott> `run mv ZWJE bin/log; chmod +x bin/log
09:36:02 <elliott> first check:
09:36:03 <HackEgo> No output.
09:36:05 <elliott> `log
09:36:07 <HackEgo> shift: 4: can't shift that many
09:36:09 <elliott> `log abracadabra
09:36:16 <HackEgo> 2010-10-19.txt:02:36:52: <catseye> Idea: create tarball of 1,024 files, each named "abracadabra" but with different capitalization. Distribute to friends who use case-insensitive file systems.
09:36:20 <elliott> CLOSE ENOUGH
09:36:55 <elliott> `fetch http://sprunge.us/CKIF
09:36:57 <HackEgo> 2011-12-20 09:36:57 URL:http://sprunge.us/CKIF [232] -> "CKIF" [1]
09:37:00 <elliott> `run mv CKIF bin/log; chmod +x bin/log
09:37:03 <HackEgo> No output.
09:37:04 <elliott> `log
09:37:20 * elliott thumbtwiddles.
09:37:37 <HackEgo> No output.
09:37:48 <elliott> :/
09:38:03 <ais523> `log concept
09:38:19 <ais523> just wondering if you'd screwed up one or both branches of the if
09:38:25 <elliott> gee, thanks :P
09:38:34 <HackEgo> No output.
09:38:38 <elliott> `revert a bunch
09:38:40 <HackEgo> abort: unknown revision 'a bunch'!
09:38:42 <elliott> `help
09:38:43 <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/
09:38:48 <shachaf> `revert 1
09:38:50 <HackEgo> Done.
09:38:52 <shachaf> `ls
09:38:55 <HackEgo> babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ tmp.tmp
09:38:56 <elliott> `revert 1305
09:38:59 <HackEgo> Done.
09:39:00 <shachaf> `revert 1
09:39:02 <HackEgo> Done.
09:39:02 <elliott> shachaf: fuck off
09:39:03 <elliott> `revert 1305
09:39:08 <HackEgo> Done.
09:39:09 <elliott> `run cp bin/log bin/pastlog
09:39:10 <ais523> shachaf: 1 is not a good revision
09:39:10 <shachaf> I just want to look!
09:39:13 <HackEgo> No output.
09:39:16 <elliott> shachaf: http://codu.org/projects/hackbot/fshg/
09:39:37 <ais523> I'm glad that `revert can be so easily reverted, at least
09:39:41 <elliott> ais523: hmm, does bash have any way to express "every argument after $1"?
09:39:45 <elliott> it really needs it
09:39:57 <ais523> elliott: it has shift
09:39:59 <shachaf> elliott: How do I revision 1?
09:40:02 <shachaf> `revert 0
09:40:03 <ais523> which renumbers all the arguments by 1
09:40:04 <HackEgo> Done.
09:40:05 <shachaf> `run ls -l babies
09:40:08 <HackEgo> ls: cannot access babies: No such file or directory
09:40:11 <shachaf> `ls
09:40:13 <HackEgo> babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ tmp.tmp
09:40:17 <shachaf> `cat babies
09:40:19 <HackEgo> cat: babies: Is a directory
09:40:22 <shachaf> `ls babies
09:40:23 <elliott> `revert 1305
09:40:25 <HackEgo> babies.db
09:40:44 <HackEgo> Done.
09:41:26 <elliott> shachaf: I was trying to link you, but fshg is slow.
09:41:27 <shachaf> elliott: I noticed this.
09:41:32 <ais523> I guess you could use some combination of shift and $*/$@
09:42:12 <elliott> shachaf: http://codu.org/projects/hackbot/fshg/index.cgi/rev/91b847686710
09:42:20 <elliott> ais523: that's the ugly thing :P but fiine
09:42:24 <fizzie> There was some bashy thing with positional arguments and a 'shift', except the shift actually rotated the arguments instead of throwing one out.
09:43:11 <elliott> `fetch http://codu.org/projects/hackbot/fshg/index.cgi/rev/91b847686710
09:43:12 <elliott> argh
09:43:13 <ais523> elliott: what's your favourite imperative language?
09:43:19 <elliott> `fetch http://sprunge.us/Sgeb
09:43:24 <HackEgo> 2011-12-20 09:43:24 URL:http://sprunge.us/Sgeb [104] -> "Sgeb" [1]
09:43:26 <elliott> `run mv Sgeb bin/pastlog; chmod +x bin/pastlog
09:43:29 <elliott> Sgeb, Sgeo's long-lost cousin
09:43:42 <HackEgo> mv: cannot stat `Sgeb': No such file or directory \ chmod: cannot access `bin/pastlog': No such file or directory
09:43:44 <elliott> ais523: Haskell. :p
09:43:54 <elliott> It's one of the only languages with first-class imperative programs.
09:44:00 <elliott> `run mv Sgeb bin/pastlog; chmod +x bin/pastlog
09:44:02 <shachaf> elliott: Not @?
09:44:05 <HackEgo> No output.
09:44:07 <elliott> shachaf: @ is declarative, man.
09:44:15 <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:44:24 <shachaf> You mean Haskell has better support for imperative programming than @?
09:44:38 <fizzie> Also it has such a thing already:
09:44:39 <elliott> shachaf: Like C has better support for crashing.
09:44:42 <fizzie> $ function echo2nd() { echo ${@:2}; }; echo2nd foo bar baz quux
09:44:42 <fizzie> bar baz quux
09:44:44 <fizzie> elliott^
09:44:45 <HackEgo> 2011-12-20.txt:09:44:15: <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:44:48 <elliott> fizzie: Too late, already rewrote!
09:44:55 <elliott> ais523: AS YOU CAN SEE IT WORKS PERFECTLY
09:45:00 <ais523> heh
09:45:01 <fizzie> Well, ais523^ in that case, for future.
09:45:02 <elliott> `run sed -i 's/+1/+2/g' bin/pastlog
09:45:04 <HackEgo> No output.
09:45:06 <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:45:12 <HackEgo> 2011-12-20.txt:09:44:15: <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:45:21 <elliott> fizzie: Incidentally, "elliott^" doesn't highlight me.
09:45:35 <elliott> oh wait
09:45:38 <fizzie> Yeah, I don't really know what the standard posthumous attribution syntax is.
09:45:43 <ais523> elliott: don't you mean head -n -1?
09:45:47 <elliott> `run sed -i 's/tail/head/g' bin/pastlog
09:45:50 <HackEgo> No output.
09:45:54 <elliott> ais523: I, um, don't think that does anything.
09:45:57 <elliott> err
09:45:59 <ais523> I have man head open
09:46:03 <ais523> -1 means all but the last line
09:46:07 <elliott> fair enough
09:46:15 <elliott> `run sed -i 's/head -n +1/head -n -1/g' bin/pastlog
09:46:17 <HackEgo> No output.
09:46:21 <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:46:27 <HackEgo> 2011-12-20.txt:09:46:21: <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:46:35 <elliott> `cat bin/pastlog
09:46:37 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ grep -P -i -- "$1" $(echo ????-??-??.txt | head -n +2) | shuf -n 1 \
09:46:40 <shachaf> `cat bin/pastelog
09:46:43 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ \ pasterandom() { \ if [ "$1" -gt 150 ]; then \ echo "No." \ exit \ fi \ for i in $(seq "$1"); do \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ done | paste \ } \ \ if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ pasterandom "$1" \ else \ lines=$(grep -P -i -- "$1"
09:46:44 <shachaf> `cat bin pasteelog
09:46:46 <elliott> `run sed -i 's/head -n +2/head -n -1/g' bin/pastlog
09:46:47 <HackEgo> cat: bin pasteelog: No such file or directory
09:46:49 <HackEgo> No output.
09:46:52 <elliott> ais523: The problem with Unix is that it isn't declarative. :(
09:47:01 <shachaf> `run echo run | s/run/run/
09:47:02 <elliott> One of my imperative writes clashed with the other and it failed silently!
09:47:04 <HackEgo> bash: s/run/run/: No such file or directory
09:47:05 <shachaf> `run echo run | sed s/run/run/
09:47:07 <ais523> that's a pretty declarative program
09:47:08 <HackEgo> run
09:47:12 * shachaf >>=>= sleep
09:47:16 <elliott> ais523: I was talking about my edits.
09:47:17 <elliott> <elliott> `run sed -i 's/head -n +1/head -n -1/g' bin/pastlog
09:47:21 <ais523> yes, I nkow
09:47:23 <ais523> *know
09:47:24 <elliott> This imperative edit failed because of a previous one.
09:47:34 <elliott> It could be fixed by reversing the order.
09:47:38 <ais523> but wouldn't a declarative edit just merge-conflict?
09:47:41 <elliott> That's like the definition of imperative over declarative.
09:47:45 <ais523> in that situation?
09:47:59 <elliott> ais523: Depends how you define "edit".
09:48:06 <ais523> sg definition
09:48:14 <elliott> I said, depends on how you define "edit".
09:48:21 <elliott> I wasn't asking for definitions where it is true, I can think of plenty.
09:48:31 <elliott> ais523: My point was that I was defining what to /do/ to get the file I wanted, rather than specifying what the file I wanted /was/.
09:48:37 <elliott> Anyway,
09:48:46 <elliott> `pastlog Nobody has ever said this sdiofjsodfjsdf before
09:49:16 <elliott> wow,
09:49:16 <elliott> <oerjan> addquote <Vorpal> elliott_, oh they are people known in the ruby community? <elliott_> Vorpal: Uh... you mean Hannah Montana? <Vorpal> elliott_, yeah. And Zed Shaw. Either they are that or they come from popular culture.
09:49:18 <HackEgo> No output.
09:49:19 <elliott> was 4 months ago
09:49:21 <elliott> `pastlog rabies
09:49:28 <elliott> oh, hmm
09:49:32 <elliott> ais523: you wanted the most recent occurrence, right?
09:49:33 <elliott> before today
09:49:53 <HackEgo> No output.
09:49:57 <ais523> no, random occurrence before today
09:50:01 <ais523> `pastlog INTERCAL
09:50:03 <elliott> ais523: umm
09:50:07 <elliott> ais523: that doesn't fit your stated use at all.
09:50:20 <ais523> my stated use is to find other conversations about the current topic
09:50:27 <ais523> random is better than recent as it can find more than one
09:50:32 <HackEgo> No output.
09:50:48 <ais523> pastlog doesn't seem to be outputting anything now, anyway
09:50:52 <ais523> `cat bin/pastlog
09:50:55 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ grep -P -i -- "$1" $(echo ????-??-??.txt | head -n -1) | shuf -n 1 \
09:51:00 <fizzie> Or maybe no-one has ever talked about INTERCAL before.
09:51:03 <fizzie> You never know.
09:51:40 <ais523> `ls
09:51:42 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
09:51:49 <ais523> `cmd ls | head -n -1
09:51:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: cmd: not found
09:51:56 <ais523> `run ls | head -n -1
09:51:58 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share
09:52:07 <ais523> elliott: aha, you're using echo not ls
09:52:16 <ais523> echo outputs space-separated not newline-separated
09:52:22 <ais523> so you're taking all but the last line, which is also the first line
09:52:29 <elliott> "Fix a bug in 1 minute. Win $100." this, umm, sounds too good to be true
09:52:30 <elliott> ais523: Oh
09:52:37 <elliott> `run sed -i 's/echo/ls/g' bin/lastlog
09:52:40 <HackEgo> sed: can't read bin/lastlog: No such file or directory
09:52:42 <elliott> `run sed -i 's/echo/ls/g' bin/pastlog
09:52:45 <HackEgo> No output.
09:52:46 <elliott> `pastlog death
09:53:18 <HackEgo> No output.
09:53:41 <elliott> ais523: or there's some other bug.
09:53:42 <ais523> `cat bin/pastlog
09:53:44 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ grep -P -i -- "$1" $(ls ????-??-??.txt | head -n -1) | shuf -n 1 \
09:53:51 <ais523> elliott: perhaps that's and, rather than or?
09:54:26 <ais523> `run cd /var/irclogs/_esoteric; ls ????-??-??.txt | head -n -1
09:54:29 <HackEgo> 2003-01-18.txt \ 2003-01-19.txt \ 2003-01-20.txt \ 2003-01-21.txt \ 2003-01-22.txt \ 2003-01-23.txt \ 2003-01-24.txt \ 2003-01-25.txt \ 2003-01-26.txt \ 2003-01-27.txt \ 2003-01-28.txt \ 2003-01-29.txt \ 2003-01-30.txt \ 2003-01-31.txt \ 2003-02-01.txt \ 2003-02-02.txt \ 2003-02-03.txt \ 2003-02-04.txt \ 2003-02-05.txt \ 2003-02-06.txt \ 2003-02-07.txt \ 2003-02-08.txt \ 2003-02-09.txt \ 2003-02-10.txt \ 2003-02-11.txt
09:54:41 <ais523> ah, OK, just wondering if using ls rather than echo was making it too slow
09:56:59 <elliott> ais523: And rather than or?
09:57:14 <elliott> Oh, right.
09:57:18 <elliott> Well, that's what I meant.
09:59:15 * elliott really likes http://blog.ezyang.com/2011/12/bugs-and-battleships/.
09:59:23 <elliott> Mostly because of the pretty pictures.
09:59:25 <kallisti> > let factors n=filter((==n).product)$(`replicateM`[2..n`div`2])=<<[1..n`div`2-1] in factors 10
09:59:26 <lambdabot> [[2,5],[5,2]]
09:59:31 <kallisti> > let factors n=filter((==n).product)$(`replicateM`[2..n`div`2])=<<[1..n`div`2-1] in factors 8
09:59:32 <lambdabot> [[2,4],[4,2],[2,2,2]]
09:59:44 <kallisti> so inefficient..
10:00:05 -!- Ngevd has joined.
10:00:10 <Ngevd> Hello!
10:00:43 <fizzie> `pastlog death
10:00:50 <HackEgo> 2011-04-15.txt:22:06:45: <elliott> I'd only consider immortality to be true immortality if it involved the heat death of the universe being prevented, anyway :P
10:00:54 <fizzie> I didn't even touch it or anything.
10:01:01 <elliott> Oh
10:01:06 <elliott> HackEgo race condition, I bet
10:01:11 <elliott> `pastlog Nobody has ever lskksdfkdjslfd in a sjdkl
10:01:12 <elliott> df
10:01:18 <HackEgo> No output.
10:01:37 <fizzie> Some of my friends lskksdfkdjslfd in their sjdkls all the time.
10:01:48 <elliott> fizzie: Delinquents!
10:05:43 <elliott> 01:03:47: <Sgeo> Are there current politicians saying that Islam is dangerous and needs to be destroyed?
10:05:44 <elliott> 01:03:55: <Sgeo> I think no politician would be that stupid
10:05:44 <elliott> 01:03:56: <Sgeo> I hope
10:07:56 -!- cheater has joined.
10:07:56 -!- cheater has quit (Excess Flood).
10:08:03 <fizzie> ISLAM IS THE LIGHT --Nintendo DS Baby Pals
10:09:04 <Sgeo> WTF at computer
10:09:43 <fizzie> Also why did the first result I found (when trying to check the name of the game) be a blog where the author in all seriousness writes stuff like "no-one seems to care that dolls and games are being used to propagandize American kids" and "Islam is not the light. It’s very dark darkness. As anyone with a brain knows."
10:11:07 <Sgeo> Anyone have a metaphorical light switch I can borrow?
10:11:18 <Sgeo> To turn on and off all these metaphorical lights?
10:11:27 <fizzie> Or is this "Debbie Schlussel" persona some sort of satire or what?
10:11:48 <elliott> Debbie Schlussel: About Debbie
10:11:48 <elliott> www.debbieschlussel.com/bio/
10:11:48 <elliott> DEBBIE SCHLUSSEL: Conservative political commentator, radio talk show host, columnist, and attorney. Schlussel's unique expertise on radical Islam/Islamic ...
10:11:55 <Sgeo> I've heard of her
10:11:56 <elliott> It's America, of course not.
10:12:01 <elliott> http://en.wikipedia.org/wiki/Debbie_Schlussel
10:12:11 <elliott> [[Debbie Schlussel (born April 9, 1969) is an American attorney, film critic, political commentator, and a conservative blogger who focuses particularly on Islam and American Muslims. Her writing frequently targets the largely Muslim population of the Detroit suburb of Dearborn, which she refers to as "Dearbornistan".[1] Her columns are often provocative and controversial, specifically those detailing what she considers the unsavory elements of I
10:12:12 <elliott> slam, the objectionable activities of American Muslims, illegal immigrants, as well as liberal and “faux-conservative” politicians.]]
10:12:14 <elliott> What a horrible person.
10:12:25 <Sgeo> I once wrote an UnNews article about a proof that atheists are Muslims, then someone linked a Debbie Schussel post
10:12:25 <ais523> `pastlog chronomaniac
10:12:33 <HackEgo> No output.
10:12:38 <ais523> pity, it's a great word
10:12:43 <elliott> UnNews! That might be the only thing worse than Uncyclopedia.
10:12:47 <fizzie> Dearborn is a fancy name for a place, though.
10:12:58 <elliott> http://atlasshrugs2000.typepad.com/atlas_shrugs/2009/01/first-baby-dollie-now-nintendo-game-islam-is-the-light.html
10:13:05 <elliott> atlasshrugs2000; what could go wrong with a domain name like that?
10:13:17 <elliott> Ooh, the post-American presidency.
10:13:24 <elliott> Obama declared the country Obamastan or something.
10:13:32 <Sgeo> elliott, would it please you to know that I wrote UnNews articles?
10:13:34 <elliott> "This is unbelievable ........... and of course they will tell us that we are imagining it but notice how it is always baby toys. Subliminal messages.
10:13:34 <elliott> Always baby toys."
10:13:36 <elliott> Always baby toys.
10:13:48 <elliott> Sgeo: You already said that.
10:14:14 <elliott> fizzie: So what do you use for piping into dzen?
10:14:42 <fizzie> Didn't you already take a look at my horrible dbus thing?
10:15:04 <Sgeo> Aww, my atheists are muslims article was deleted
10:15:21 <Sgeo> My others weren't though
10:15:22 <Sgeo> http://uncyclopedia.wikia.com/wiki/User:Sgeo
10:15:39 <elliott> fizzie: That's just piping dzen to xmonad, isn't it?
10:15:56 <elliott> http://sgeo.diagonalfish.net/screenshots/windeath/drivecleaner/
10:15:56 <elliott> rip
10:16:06 <monqy> "Pictures of Windows 98 in various compromising positions.." - sgeo
10:16:13 <monqy> "HOT HOT HOT Pictures of DriveCleaner 2006 EXPOSED!" - sgeo
10:16:19 <ais523> "please try not to refrain from electric heaters to reduce to risk of fire"
10:16:23 <elliott> http://images4.wikia.nocookie.net/__cb20061209215706/uncyclopedia/images/9/99/Win98-start-menu.PNG -sgeo
10:16:27 <ais523> err, what does that mean?
10:16:35 <elliott> ais523: Please try not to refrain from electric heaters to reduce to risk of fire.
10:16:43 <fizzie> elliott: No, it handles both the dzen stdin and stdout. (It gets window-title/workspace/whatever status reports from XMonad's logHook via dbus, and writes those -- properly formatted -- into dzen's stdin; and it reads dzen's stdout and sends suitable client-messages to XMonad for the workspace switching.)
10:16:52 <ais523> elliott: in terms I understand?
10:17:02 <Sgeo> elliott, IE6 fixes that somehow.
10:17:31 <elliott> ais523: Well that might be harder.
10:17:36 <elliott> fizzie: Ah.
10:17:46 <elliott> fizzie: Why dbus, for the love of all that is holy?
10:17:57 <Sgeo> http://www.debbieschlussel.com/2977/when-atheists-aka-future-muslims-attack/
10:20:09 <elliott> "raised by his hippie Jewish father and equally bizarre gentile mother as an atheist. And look how he turned out. Ditto for hippie-spawn John Walker Lindh."
10:20:16 <elliott> This isn't even funny, it's just terrible.
10:20:43 <kallisti> what would be a better solution to finding every possible factorization of a number than what I currently do?
10:21:00 <fizzie> elliott: Well, you know, it was already running; and it sort of disentangles the parts, in that things don't get confuzzled when either XMonad or the dzen2-updater goes away. Unnamed pipes started from xmonad.hs directly are a bit brittle; broken pipes are the #1 reason for a frozen XMonad.
10:21:09 <fizzie> Cf. http://www.haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#XMonad_is_frozen.21
10:21:32 <kallisti> > let factors n = filter ((==n).product) $ (`replicateM`[2..n`div`2]) =<< [1..n`div`2-1] in factors 10
10:21:33 <lambdabot> [[2,5],[5,2]]
10:22:12 <kallisti> it's very very bruteforce, O(n!) growth I believe.
10:22:14 <elliott> fizzie: You've said that #1 reason thing to me before, yesterday. :p
10:22:24 <elliott> kallisti: You realise finding prime factors is not really a fast thing.
10:22:36 <kallisti> yes
10:22:41 <kallisti> also this is any-factors
10:22:42 <elliott> fizzie: But, uh, you can easily make pipes reliable.
10:22:48 <elliott> kallisti: *all
10:22:50 <kallisti> > let factors n = filter ((==n).product) $ (`replicateM`[2..n`div`2]) =<< [1..n`div`2-1] in factors 12
10:22:52 <lambdabot> [[2,6],[3,4],[4,3],[6,2],[2,2,3],[2,3,2],[3,2,2]]
10:22:59 <elliott> fizzie: I mean, without resorting to /dbus/ of all things.
10:23:02 <Sgeo> http://mirror.uncyc.org/wiki/UnNews:All_atheists_proven_to_be_Muslims
10:23:45 <monqy> thanks
10:24:15 <elliott> Sgeo: that's the least funny thing i've ever read.
10:25:05 <Sgeo> Is http://uncyclopedia.wikia.com/wiki/UnNews:Scientists_baffled_by_missing_energy_source any better?
10:25:13 <elliott> let me check
10:25:18 <elliott> no
10:26:13 <elliott> fizzie: Also, I find the inconsistent capitalisation of xmonad distasteful. :(
10:26:37 <elliott> fizzie: What svn revision of dzen are you on?
10:26:45 <monqy> http://mirror.uncyc.org/wiki/UnNews_talk:All_atheists_proven_to_be_Muslims
10:27:02 <fizzie> 271, apparently.
10:27:45 <elliott> 7 aur/dzen2-svn 271-3 (91)
10:27:45 <elliott> X notification utility with Xinerama and XMP support, svn version
10:27:45 <elliott> 8 aur/dzen2-xft-xpm-xinerama-svn 271-1 (78)
10:27:45 <elliott> X notification utility with Xinerama, XPM, XFT and gadgets, svn version
10:27:49 <monqy> sgeo how could you do this
10:27:51 <monqy> this is awful
10:27:54 <elliott> This is so upsetting ;__; how can I install that one
10:27:57 <elliott> the package nam
10:27:58 <elliott> eis so long
10:28:09 <elliott> Comment by: system on Wed, 07 Apr 2010 16:02:51 +0000
10:28:10 <elliott> Package disowned.
10:28:11 <elliott> oh noooooooooooooooooo
10:28:21 <Sgeo> monqy, how could I do what?
10:28:27 <Sgeo> Respond to an idiot on a talk page?
10:28:29 <fizzie> It's the "I have no son" of packages.
10:28:34 <monqy> make the article
10:28:39 <monqy> the other one too
10:28:42 <elliott> oh dzen2-svn does xft
10:28:53 <Sgeo> They're based off FSTDT quotes
10:28:56 <elliott> monqy: btw i use yaourt now
10:29:01 <elliott> Sgeo: see the thing is
10:29:03 <monqy> elliott: wow me too
10:29:06 <elliott> religious people saying stupid things: maybe funny
10:29:22 <monqy> i never bothered switching at all ;_;
10:29:31 <elliott> making a bad unfunny news article that amounts to "<dumb thing religious person said>": not funny
10:30:46 <monqy> what if it was narrated by the cast of station v3
10:31:05 <monqy> they're lovable right
10:31:17 <elliott> fizzie: Eeeeeeeww, most dzen2 things update the thing every second even if you don't have a clock?
10:31:35 <fizzie> I haven't really looked at most dzen2 things.
10:31:36 <elliott> Heck, even every second is terrible; even with a clock, you should adjust the wait depending on how far off you are from the second change each time.
10:31:44 <shachaf> elliott: Just write a thing that multiplexes different events and updates it on events.
10:31:44 <elliott> Does your thing do a clock more sanerly?
10:31:50 <elliott> shachaf: FRPzen2
10:31:51 <fizzie> I don't have a clock.
10:32:01 <elliott> fizzie: THEN HOW DO YOU KNOW WHAT TIME IT IS
10:32:09 <shachaf> elliott makes a good point.
10:32:20 <elliott> shachaf: So you're sleeping now?
10:32:23 <shachaf> elliott: No, just imperazen2 with a bunch of threads or something.
10:32:30 -!- Sgeo_ has joined.
10:32:33 <shachaf> elliott: Yes.
10:32:39 <Sgeo_> The joys of not having a laptop battery
10:32:41 <Sgeo_> >:(
10:32:42 <elliott> shachaf: But that's imperative!
10:32:47 <fizzie> I literally don't have any dwigglets in the dzen2; just list of workspaces, a single layout indicator that I don't really use and am not sure why it's there, and the window title. I do know lots of people put everything and the kitchen sink in their dzens, though.
10:32:56 -!- Sgeo has quit (Read error: Connection reset by peer).
10:32:56 <fizzie> Actually it appears I do have a clock, in the gnome-panel. :p
10:32:59 <elliott> I think Sgeo might not have a laptop battery.
10:33:03 <kallisti> ais523: did you invent golfscript or did you just put it on the wiki?
10:33:13 <elliott> ais523 invented golfscript, water, and Perl.\
10:33:15 <shachaf> elliott: It's 02:32.
10:33:16 <elliott> **
10:33:20 <ais523> I didn't invent golfscript
10:33:21 <elliott> That replaced the \ with a *.
10:33:22 <elliott> *
10:33:23 <elliott> Now it's gone.
10:33:28 <kallisti> ais523: do you know who did?
10:33:30 * shachaf invented Golf.
10:33:30 <ais523> in fact, I don't even remember putting it on the wiki, but it wouldn't surprise me if I did
10:33:37 <kallisti> do they freqent this channel?
10:33:40 <ais523> kallisti: no; but it has a website, that might mention it
10:33:45 <ais523> I don't think they frequent here
10:33:52 <kallisti> not that I've found.
10:33:56 <elliott> fizzie: All I want is a clock, a workspace switcher, and maybe something that shows libnotify notifications as they come in.
10:34:05 <fizzie> DIY DIY DIY DIY
10:34:13 <elliott> fizzie: And, um... I think that might be it?
10:34:19 <elliott> fizzie: Also, are you encouraging my NIHing.
10:34:22 <monqy> workspace switcheR?
10:34:24 <ais523> zzo38 invented his own version FlogScript, which has beaten GolfScript in many golfing puzzles where people have seriously tried in both
10:34:48 <elliott> monqy: Yes, to (a) show workspaces with blinky windows and (b) let me switch when I'm in Mouse Mode.
10:35:04 <monqy> blinky windows D: / mouse mode D:
10:35:13 <elliott> monqy: Blinky windows aka "urgent windows".
10:35:16 <elliott> Aka "unread IRC messages".
10:35:29 <monqy> oh that sort of blinky windows
10:35:36 <fizzie> Yes. But are you sure you don't want a network traffic meter and a CPU fan RPM indicator and a combined weather/stock ticker and a relative humidity-o-meter and a swimming fish and a set of eyes?
10:35:39 <monqy> one time I tried learning flogscript but then gave up
10:36:00 <elliott> fizzie: I just can't be satisfied with my panel unless it changes every second!
10:36:04 <elliott> (I use minute-precision clocks.)
10:36:11 <elliott> fizzie: Does dzen2 do tooltips?
10:36:15 <elliott> I like to have the date as a tooltip of my clock.
10:36:44 <fizzie> Actually I think it doesn't. :/
10:36:47 * shachaf wonders whether elliott is joking.
10:36:54 <elliott> Oh well.
10:36:57 <elliott> shachaf: About what?
10:37:02 <shachaf> Tool tips.
10:37:09 <elliott> Nope.
10:37:14 <elliott> I'm used to it, and only need the date infrequently.
10:37:53 <shachaf> Just make your font size smaller.
10:38:13 <elliott> I have plenty of screen space, it's just ugly to have a date on it.
10:39:00 <fizzie> You could sorta-fake it with the enter/exit events (toggling the slave window visible/not, or something), except I think those are also only for the whole title (i.e. panel) window, not specifically for the clickable areas it supports.
10:39:17 <fizzie> But! You can make the clock clickable, and upon clicking, have it speech-synthesize the current date out of your speakers.
10:39:22 <elliott> Awwww yeah
10:39:29 <fizzie> Then it only takes up audible screen estate, if such were a thing.
10:40:11 <Ngevd> Could I set the speech synthesis to Christopher Lee mode?
10:40:17 <elliott> fizzie: If only speech recognition was/will ever be good enough to turn the output of that back into text.
10:40:20 <elliott> Then it might actually be useful.
10:40:42 <shachaf> Turn the output of that back into text AND DISPLAY IT IN A TOOLTIP.
10:40:54 <shachaf> elliott: Anyway, speech recognition is plenty good enough to turn a spoken date into text.
10:41:09 <fizzie> Yes, it's just a speech recognition dig. It's what elliott does.
10:41:19 <fizzie> The aim is to make my head asplode one day.
10:41:27 <fizzie> (Which will happen completely without warning.)
10:41:30 <shachaf> fizzie: Do you do speech recognition?
10:41:33 <elliott> Yes, he does.
10:41:35 <shachaf> I mean, most humans do.
10:41:36 <elliott> Isn't it hilarious?
10:41:41 <elliott> Yes, but most humans do well at it.
10:41:47 <elliott> fizzie's field is characterised by being awful at it.
10:42:19 <fizzie> Snurgle snorgle snargle snörg.
10:42:27 <shachaf> fizzie: What kind of speech recognition do you do?
10:42:49 <elliott> shachaf: Bad speech recognition.
10:43:54 <shachaf> If you only need to recognize famous speeches, like Churchill or something, it should be pretty easy.
10:44:54 <fizzie> shachaf: Noisy "unlimited" vocabulary continuous speech.
10:45:05 <elliott> (So, speech.)
10:45:06 <fizzie> Not conversational, though.
10:45:07 <elliott> Erm.
10:45:08 <elliott> (So, impossible speech.)
10:45:36 <shachaf> fizzie: Not conversational?
10:45:44 <elliott> Me and the XMonad.Hooks.DynamicLog authors have wildly differing definitions of "nice defaults".
10:45:48 <elliott> This thing is hideous.
10:46:16 <shachaf> elliott: You talkin' to me?
10:46:20 <fizzie> Well, I mean, personally I might sometimes with close friends do a little bit of ad-hoc wetware conversational speech recognition; but not with computers, no.
10:46:28 <shachaf> Wait, I didn't write that particular code.
10:46:37 <shachaf> I just wrote the URGENCY hook part of it. I think.
10:46:52 <elliott> fizzie: How hard would it be to modify your stuff to use a pipe rather than dzen2? :p
10:46:57 <elliott> Also, Finns only speak to close friends, I see.
10:47:20 <fizzie> "withUrgencyHook NoUrgencyHook" is my urgency hook.
10:47:39 <fizzie> (I just turn the workspace name backgrounds red.)
10:47:54 <shachaf> 10:47 <@elliott> freenode sucks.
10:48:03 <shachaf> Anything that starts with "<@elliott>" can't be good.
10:48:09 <fizzie> Also my stuff is pretty ugly, I'm not sure you'd want to base anything on that.
10:48:13 <shachaf> fizzie: That's the code I wrote!
10:48:14 <shachaf> I think.
10:48:17 <shachaf> I don't remember anymore.
10:48:45 <elliott> fizzie: Yeah, but if I base anything off it, I can send bug reports to you rather than having to fix my own thing.
10:49:09 <shachaf> fizzie and elliott are totally being infiltrated with my backdoorz, though. As it were.
10:49:26 <kallisti> I'm guessing zzo didn't invent Grass either, and he just added it to the wiki?
10:49:33 <fizzie> "withUrgencyHook NoUrgencyHook" and a dynamicLogString with a PP that has a ppUrgent = (++"/u"). (It gets parsed and formatted by that dzen-runner.)
10:49:49 * elliott mutters something about Unix.
10:50:04 <shachaf> fizzie: Ew. Real Programmers just run two dzens that are exactly aligned to make the transition between them seem seamless.
10:50:08 <shachaf> At least, that's what I did.
10:50:10 * kallisti went through a big list of languages ranked for golfing and was trying to find languages other than flogscript that had been invented by #esolangers
10:50:26 <shachaf> dzen2 -w 1024; dzen2 -x 1024 -w $((something - 1024))
10:50:47 <monqy> langauges ranked for golfing?
10:50:49 <monqy> a big list?
10:51:51 <kallisti> http://golf.shinh.org/lranking.rb
10:51:59 <shachaf> monqy: All languages are used for golfing.
10:52:03 <kallisti> flogscript actually has the best average score.
10:52:37 <monqy> I again want to learn flogscript but am again having trouble
10:52:41 <elliott> <shachaf> fizzie: Ew. Real Programmers just run two dzens that are exactly aligned to make the transition between them seem seamless.
10:52:41 <fizzie> shachaf: I do that too. The dzen-runner does a xinerama monitor query and spawns the N dzens at the correct positions.
10:52:43 <elliott> To achieve... what?
10:53:00 <shachaf> elliott: One dzen gets piped xmonad output, the other shows clock output etc.
10:53:11 <fizzie> Ohhh, like that, on one screen.
10:53:11 <elliott> shachaf: That's disgusting. You're disgusting.
10:53:16 <fizzie> Well, that's not something I do.
10:53:27 <shachaf> elliott: In the early days, at least, that was the Accepted Solution.
10:53:36 * shachaf ran xmonad before 0.1.
10:53:40 <elliott> shachaf: :(
10:53:44 <shachaf> Before it was cool to run xmonad, man.
10:53:51 <kallisti> shachaf: leet hipster cred, bro.
10:54:06 * elliott always avoided xmonad because it was too popular.
10:54:16 <elliott> But it's achieved critical mass now, so I don't bother.
10:54:51 <elliott> shachaf: It sounds more like the opposite?
10:55:02 <shachaf> Whatever.
10:55:08 <elliott> Deewiant: What are your blues again
10:55:27 <shachaf> elliott: Oh, man, I spent so long coming up with the optimal xmonad colouuuur scheme.
10:57:05 -!- Jafet1 has joined.
10:57:11 -!- Jafet1 has quit (Changing host).
10:57:11 -!- Jafet1 has joined.
10:57:12 <elliott> shachaf: This is for terminals
10:57:26 <kallisti> THIS IS TERMINALS. THIS IS THE REAL WORLD.
10:57:47 <elliott> I'm either going to end up rolling my own scheme for everything, as it seems to be going now, or just give up and use Solarized or zenburn.
10:58:00 -!- GreaseMonkey has quit (Quit: The Other Game).
10:58:13 <shachaf> elliott: That sounds racist to me.
10:58:28 <shachaf> Why do you have to come up with a colour scheme?
10:59:17 -!- Jafet2 has joined.
10:59:26 <elliott> shachaf: Well, let's see, my options are:
10:59:28 <elliott> 1. Come up with a colour scheme.
10:59:30 <elliott> 2. Use an existing one.
10:59:32 <elliott> Per excluded middle...
10:59:46 <shachaf> elliott: Why do you have to scheme the colors, man?
10:59:51 <ais523> I thought you didn't believe in excluded middle
11:00:06 -!- Jafet has quit (Ping timeout: 240 seconds).
11:00:24 <ais523> besides, isn't there 3. Start with an existing colour scheme and change it slightly?
11:00:26 <elliott> shachaf: Thus resulting in me using an existing one?
11:00:32 <elliott> If I don't?
11:00:34 <elliott> Sort of by definition?
11:00:43 <kallisti> > length . show . (exp 1 :: CReal)
11:00:44 <lambdabot> Couldn't match expected type `f a'
11:00:44 <lambdabot> against inferred type `Data.Numb...
11:00:53 <elliott> That isn't how (.) works.
11:00:58 <kallisti> oh...
11:00:58 <kallisti> yes
11:01:10 <kallisti> > length . show $ (exp 1 :: CReal)
11:01:12 <lambdabot> 42
11:01:13 -!- Jafet1 has quit (Ping timeout: 245 seconds).
11:02:00 <elliott> shachaf: Can we unite in agreement that Haskell's time library is total bullshit?
11:02:17 * shachaf has never disagreed with elliott on anything.
11:02:58 <elliott> :(
11:03:00 <elliott> Okay.
11:03:11 <elliott> Wait, yes we have.
11:03:12 <elliott> Marmalade.
11:03:47 -!- Jafet2 has quit (Ping timeout: 252 seconds).
11:04:09 <elliott> http://hackage.haskell.org/packages/archive/time/1.4.0.1/doc/html/Data-Time-Clock-POSIX.html OK, this makes things much better.
11:04:19 <elliott> Wait, no it doesn't.
11:04:27 <shachaf> elliott: Wait, what?
11:04:42 <shachaf> I don't recall that.
11:06:16 <elliott> shachaf: You said marmalade sucked!
11:06:46 <shachaf> I did?
11:08:00 <elliott> :(
11:09:41 -!- Ngevd has quit (Quit: Leaving).
11:11:47 <shachaf> <Sgeo_> Do there exist lambda expressions that do not close on outside values that cannot be expressed as pointfree given a fixed set of combinators for use for pointfree form?
11:12:08 <Sgeo_> What?
11:12:21 <shachaf> elliott wants to answer that.
11:12:46 * shachaf is not making fun of you, just giving elliott something back.
11:12:56 <Sgeo_> Oh, ok
11:13:42 <elliott> Sgeo_: The answer is maybe.
11:13:44 <elliott> Nobody knows.
11:15:17 <Sgeo_> So far, I have been told "I'd assume so" "No", and "Maybe"
11:15:27 <shachaf> It's equivalent to the Turing problem.
11:15:42 <shachaf> The Turing problem, as you're aware, is about playing Chess.
11:15:45 <elliott> Man, time is hard.
11:15:57 <elliott> Sgeo_: Anyway, look up the SKI calculus.
11:16:05 <shachaf> http://en.wikipedia.org/wiki/Combinatory_logic
11:16:27 <Sgeo_> shachaf mentioned S and K, but how is the answer "maybe" given the existence of S and K?
11:16:46 <elliott> It isn't.
11:16:51 * Sgeo_ is confused
11:16:52 <elliott> Whoever said maybe is an idiot and/or wrong.
11:17:05 <Sgeo_> <elliott> Sgeo_: The answer is maybe.
11:17:05 <Sgeo_> <elliott> Nobody knows.
11:17:09 <shachaf> zomg
11:17:09 <elliott> Yes.
11:17:12 <elliott> Idiot and/or wrong.
11:17:16 <shachaf> You've caught elliott in a self-contradiction!
11:17:29 <elliott> Whoever said no is a *big* idiot.
11:17:33 <elliott> And/or big wrong.
11:17:45 <Sgeo_> I may have misinterpreted shachaf as saying no
11:18:04 <Sgeo_> Or the SK thing as meaning no
11:18:15 <monqy> oops
11:18:21 -!- amca has quit (Quit: Farewell).
11:18:35 <shachaf> Sgeo_: I said yes.
11:18:45 <shachaf> Except in the case that it requires pattern-matching, or something like that.
11:19:23 <Sgeo_> Uh, I'm now wondering if one or more persons possibly including myself have mixed up what a "yes" and what a "no" means to the question.
11:19:47 <elliott> I told you nobody knows.
11:19:59 <shachaf> Sgeo_: Let's flip a coin and decide on maybe.
11:21:28 <shachaf> elliott: Guess what I'm about to do.
11:21:49 <shachaf> Hint: It starts with the letters "sleep" and ends with the letters "sleep".
11:21:56 <elliott> Is it sleepsleep?
11:22:01 <Sgeo_> sleepexceptnotsleep
11:22:19 <shachaf> Sgeo_ has got it!
11:22:26 <shachaf> Actually I was just thinking of "sleep".
11:22:34 <shachaf> Or maybe "eat marmalade".
11:22:35 <fizzie> I think it is... a COLOUR SCHEME.
11:22:49 <monqy> eat marmalade begins and ends in sleep
11:23:09 <Sgeo_> Sleep-eat marmalade-sleep. I don't think I want to know what marmalade-sleep tastes like, or why shachaf is sleep-eating
11:23:19 <monqy> unless you die before sleeping after eeting marmalade, i guess
11:23:28 <monqy> is death a sleep
11:24:41 <kallisti> `haskell import Data.List;g=getLine;s=subsequences;l=length;f x y=maximumBy(\x y->compare(l x)(l y))$union(s x)(s y);main=do{x<-g;y<-g;putStrLn$f x y}
11:24:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
11:24:47 <kallisti> !haskell import Data.List;g=getLine;s=subsequences;l=length;f x y=maximumBy(\x y->compare(l x)(l y))$union(s x)(s y);main=do{x<-g;y<-g;putStrLn$f x y}
11:24:55 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
11:24:58 <kallisti> bah
11:26:32 <monqy> is that a golf
11:27:46 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
11:41:30 <elliott> You know what's almost impossible with Haskell's time library?
11:41:36 <elliott> "Give me the number of microseconds until the next minute."
11:42:08 <shachaf> "almost impossible" is just a long way to say "possible"
11:42:18 <elliott> Possible but very difficult.
11:42:31 <elliott> It seems like if you want to handle leap seconds as the thing so prides itself on doing, you have to do it your fucking self.
11:54:05 <elliott> shachaf: This smartBorders flickering is awful. :-(
11:54:08 * elliott considers NIHing it.
11:54:13 <shachaf> DO IT
11:55:08 -!- Sgeo has joined.
11:55:25 <Sgeo> If you can guess why I got disconnected, you get no medal.
11:55:38 <elliott> Sgeo: Are you going to say that every goddamn time you get disconnected?
11:56:57 <shachaf> Sgeo: ##marmalade
11:57:41 <monqy> Sgeo: what if I can't guess
11:59:53 <Sgeo> MRMLD
12:00:20 <monqy> happens to everyone
12:00:42 <kallisti> I wonder why ghc randomly decides to consume 3 GBs of memory for some silly program.
12:00:51 <monqy> wh
12:01:49 <kallisti> I don't know. I run a program via runhaskell, I hit ctrl+c to close it, and then a few seconds later my computer grinds to a halt from 100% memory use.
12:02:02 <kallisti> with ghc taking 3 gbs
12:02:27 <elliott> That has happened to me before, I think.
12:02:45 -!- itidus20 has joined.
12:02:55 <kallisti> elliott: you probably have ulimits or something though.
12:03:00 <elliott> Why would I?
12:03:08 <kallisti> to prevent random memory leak slowdowns.
12:03:12 <elliott> Admittedly, perhaps I should. Rogue programs bring X down a lot.
12:05:16 <elliott> shachaf: I gave up on sleeping until the start of the next minute.
12:05:20 <elliott> Well, to be more precise, I asked Stack Overflow.
12:05:22 <elliott> Which is GIVING UP.
12:05:26 -!- itidus21 has quit (Ping timeout: 240 seconds).
12:07:26 -!- itidus20 has quit (Ping timeout: 255 seconds).
12:11:07 <elliott> fizzie: Oh no, I might end up using dbus myself.
12:12:25 <fizzie> I might end up doing some MOCKING, in that case.
12:13:55 <elliott> fizzie: Well, it wouldn't be for talking to dzen2.
12:14:06 <elliott> It would be for processing libnotify things to put them where most people would put a title bar.
12:14:15 <elliott> But I'd probably end up reusing your scaffolding anyway in that case.
12:14:28 <elliott> Not the rest of your program though, I'm ALREADY WRITING MY OWN.
12:14:55 <Sgeo> Fun fact: A bunch of distros package ftphs
12:16:27 <elliott> Oh no! Criminals!
12:16:28 <elliott> Arrest them!
12:16:39 <elliott> This vile... PACKAGING business.
12:17:07 <monqy> ftphs trafficking
12:17:46 <Sgeo> The thing is, it feels like a more political matter now. I think I want to make changes that get accepted, so that the fix for the nonsense actually gets used where ftphs is used, but then there are backwards compatibility issues
12:17:54 <Sgeo> And also I'd need to talk to this guy
12:17:55 <elliott> POLITICS
12:18:27 <elliott> Sgeo: Let me tell you how it will go: "Oh, I haven't touched that code since 2010. I'll appoint you the new maintainer."
12:18:37 <elliott> "ENJOY!"
12:19:00 <monqy> and then
12:19:01 <monqy> sgeo enjoyed
12:19:10 <monqy> ~happy endings~
12:19:23 <Sgeo> I don't want to be relied upon
12:19:25 <Sgeo> :/
12:19:54 <Deewiant> elliott:
12:19:55 <Deewiant> ! Bold stolen from xterm
12:19:55 <Deewiant> urxvt.color4: #0040ff
12:19:55 <Deewiant> urxvt.color12: #5c5cff
12:21:34 <elliott> Deewiant: Thanks
12:21:39 <elliott> Deewiant: (Isn't bold blue cyan, though?)
12:21:44 <elliott> I don't see what's wrong with cyan necessarily.
12:22:19 <Deewiant> Bold blue is bold dark-as-shit-blue
12:22:22 <monqy> bold blue is bold blue?? unless by blue you mean cyan
12:22:45 <elliott> Deewiant: Ah
12:23:17 <Deewiant> Apparently #0000c0
12:23:27 <Deewiant> Whereas bold cyan is a separate colour, #00f5fa
12:23:32 <elliott> Deewiant: Yes, these are nicer, thanks
12:23:38 <elliott> Although still a bit too dark on the background for my tastes
12:23:44 <elliott> But at least I can make letters out now :P
12:24:22 -!- itidus21 has joined.
12:25:00 <elliott> Sgeo: Anyway, you could just make a Whatever.Module.It.Is.Simple.
12:25:08 <elliott> With the non-incremental versions.
12:26:27 <Sgeo> Why .Simple? I might call it Network.FTP.Client.Strict (for the strict version) and Network.FTP.Client.Idontactuallyknowwhattocallit for the lazy version that's still not so lazy that FTP commands will trip over themselves
12:28:46 <elliott> Sgeo: It's simple because it's limited.
12:28:56 <elliott> I thought "Simplistic" might offend.
12:29:37 -!- ChanServ has set channel mode: +o fizzie.
12:29:39 -!- fizzie has set channel mode: -c.
12:29:40 <fizzie> IF YOU CAN READ THIS YOUR COLORS ARE TOO BRIGHT
12:29:45 -!- fizzie has set channel mode: +c.
12:29:48 -!- fizzie has set channel mode: -o fizzie.
12:30:02 <fizzie> Oh no, that was supposed to be BLUES.
12:30:12 <Sgeo> What's limited or simplistic about it?
12:30:17 <Sgeo> I need sleep
12:30:39 <monqy> it looked blues to me..
12:30:49 <fizzie> Yes, but the wording too.
12:30:49 <monqy> and i could read it D:
12:31:40 <elliott> fizzie: Um please -c again.
12:31:50 <fizzie> "Sorry, I already forgot how."
12:31:53 <elliott> Sgeo: How can you process a 100 gigabyte file stored on an FTP server incrementally with your strict interface?
12:32:25 * elliott reiterates once again that if you're going to bother doing this, do it properly and create an ftp-enumerator library.
12:32:59 <Sgeo> That would require work
12:32:59 <Sgeo> >.>
12:33:11 <Sgeo> I might do an ftp-enumerator afterwards
12:33:57 <elliott> Yeah! First have to negotiate with a maintainer (who probably doesn't care about the code any more and will want you to maintain it) and break everybody's code, *then* do it more easier and more properly and actually learn a new concept in the process.
12:34:02 <elliott> Awesome!!
12:34:06 <elliott> fizzie: Dude I need my bold.
12:34:08 <elliott> I always need my bold.
12:34:11 <elliott> But you can't tempt me like that.
12:34:30 <elliott> fizzie: I'll leave speech recognition alone for whole days.
12:34:32 <elliott> Months!
12:35:20 <fizzie> You could petition the other op-folks for a permanent -c; I might even vote for that, could make the place look less drab. Though based on a quick summary +c seems to be the norm on serious channels such as this.
12:35:56 <elliott> fizzie: I think it might have been default once-upon-a-time.
12:36:05 <elliott> Maybe it even is, although not for unregistered channels, at least (just checked).
12:36:09 <elliott> Serious channels have +t too. :p
12:36:15 <Sgeo> properly and learning new concepts I get, but what's easier about enumerators vs just slapping an IORef in to use to force when a command is issued?
12:36:23 <Sgeo> Night
12:36:30 <elliott> Sgeo: Ask a question, leave immediately!
12:36:33 <elliott> Good idea.
12:37:13 <fizzie> I guess in the interests of empirical science I could -c for an hour to evaluate the effect, assuming people currently online do not disagree too badly? (I'm thinking we'd just get some elliott rainbows and that'd be about it.)
12:37:43 <Sgeo> I'll stay up for 5 minutes or until the question is answered, whichever is sooner
12:38:35 <elliott> fizzie: I would, um, have to write a script for the rainbows... so yeah, they're practically inevitable.
12:39:37 -!- ChanServ has set channel mode: +o fizzie.
12:39:39 -!- fizzie has set channel mode: -c.
12:39:40 <Sgeo> Better yet, I'll logread. Night.
12:39:45 -!- fizzie has set channel mode: -o fizzie.
12:39:59 <fizzie> Didn't see any objections, so.
12:40:25 <fizzie> Anyway, freenode #maemo lacks +c, and it's pretty monochromatic in general.
12:40:41 <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12:40:41 <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
12:40:42 <elliott> 6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12:40:44 <monqy> hi
12:40:47 <elliott> 14,13aaaaaaaaaaaaaaaaaaa
12:40:49 <fizzie> Rrrright.
12:40:50 <elliott> Well, that's sort of a rainbow.
12:40:55 <monqy> what happened to that rainbow
12:41:02 <elliott> It... had an accident.
12:41:10 <monqy> D:
12:42:51 <elliott> It would be really annoying if I talked like this all the time.
12:42:57 <elliott> But I won't, it's too much work.
12:43:30 <elliott> fizzie: I have a feeling the serious places do it because (a) stupid mIRC users and (b) trolls and flood bots.
12:43:40 -!- Madoka-Kaname has quit (Excess Flood).
12:44:03 -!- Madoka-Kaname has joined.
12:44:04 -!- Madoka-Kaname has quit (Changing host).
12:44:04 -!- Madoka-Kaname has joined.
12:45:25 <fizzie> fungot: What's your position on colors?
12:45:26 <fungot> fizzie: what, the ability to be captured a spanish galleon! arrr!! flourishes harry, and they're real i tell my students' work on the sneaker. who?
12:45:44 <monqy> ^style
12:45:44 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
12:46:06 <Sgeo> Colors summon Spanish galleons. Spread the word.
12:46:11 <Sgeo> Night
12:46:14 <monqy> night
12:46:24 <monqy> how many times will you reappear
12:46:28 <monqy> before finaly slep
12:46:38 -!- Phantom_Hoover has joined.
12:46:42 <Sgeo> Unknown
12:46:43 <Sgeo> Night
12:46:46 <monqy> night
12:46:54 -!- tuubow has joined.
12:47:14 <Phantom_Hoover> Hellambdabot.
12:47:14 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
12:47:28 <elliott> fizzie: Add some colourful styles.
12:47:46 <elliott> Like, umm, House of Leaves. (I still need to read that thing.)
12:48:44 <fizzie> "tls_socket_write (Error in the push function.)" Oh no, the push function broke.
12:48:52 -!- AnotherTest has joined.
12:48:59 <elliott> fizzie: What did you doooooooo?
12:49:08 <fizzie> I did NOTHING it just BROKE.
12:49:11 <AnotherTest> hello
12:51:07 <elliott> fizzie: It's broken because it wants you to fix the regionfile stuff! (A factual fact.)
12:51:48 -!- monqy has quit (Quit: hello).
13:10:17 <elliott> http://ompldr.org/vYnR3eA
13:10:28 <elliott> I really need to make that dzen not terrible.
13:10:43 <elliott> And also get emacs and xchat using colours that aren't completely unlike everything else.
13:10:48 <elliott> But this is starting to become nice...
13:11:46 -!- tuubow has quit (Ping timeout: 240 seconds).
13:15:47 <kallisti> :t (\n -> [n..])
13:15:48 <lambdabot> forall t. (Enum t) => t -> [t]
13:16:27 <kallisti> > [1%1..]
13:16:28 <lambdabot> [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1,8 % 1,9 % 1,10 % 1,11 % 1,12 % 1...
13:16:42 <kallisti> how rational
13:17:14 <kallisti> B)
13:18:06 <kallisti> wouldn't it make more sense for a sequence of rationales to like... actually sequentially go through the rationals in order?
13:19:39 <AnotherTest> Why o why do you fail me, matlab?
13:20:12 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/njkhz/do_spiders_make_mistakes/
13:20:37 <elliott> No. Never.
13:20:59 <elliott> kallisti: Enum sucks.
13:22:58 <kallisti> isn't it just the instance for Ratio that sucks?
13:23:04 <kallisti> and the rest of it is fine?
13:23:24 <kallisti> honestly I can't ask much from enum
13:23:37 <elliott> kallisti: See also Float and Double which have the exact same problem.
13:23:48 <kallisti> "give me the next one. kthx" "now give me the precious one. kthx" "NOW DO THAT A BUNCH AND MAKE A LIST. kthx"
13:23:53 <kallisti> lol precious
13:23:54 <elliott> The issue is that Enum conflates the issue of constructing a range list with the issue of /enumeration/ types.
13:24:03 <kallisti> the little-known prec function
13:24:07 <elliott> i.e. types that can be fully and finitely listed, as in Int, C's enums, etc.
13:24:08 <kallisti> which preduces the precious one.
13:24:14 <elliott> Not as in Integer or the Rationals.
13:24:23 <elliott> Ix then duplicates ranges further, complicating things even more.
13:24:32 <AnotherTest> elliott: what's the problem with enumerations?
13:25:00 <AnotherTest> I find them a particularly useful language feature
13:25:43 <AnotherTest> (in C++, I mean)
13:26:26 <kallisti> elliott: is there an issue with combining those? the finitely countable ones are just Enum + Bounded
13:27:13 <kallisti> > [True, True ... True]
13:27:14 <lambdabot> Not in scope: `...'
13:27:17 <kallisti> > [True, True .. True]
13:27:18 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True...
13:27:25 <kallisti> lolwat
13:27:45 <kallisti> > [1,1..1
13:27:46 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
13:27:47 <kallisti> > [1,1..1]
13:27:48 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
13:27:55 <kallisti> I guess that makes sense actually
13:28:06 <kallisti> > [False,True..True]
13:28:07 <lambdabot> A section must be enclosed in parentheses thus: (`True..` True)Not in scope...
13:28:37 <kallisti> I give up. I'm going to sleep.
13:28:52 <elliott> AnotherTest: I didn't say anything about enumerations in C++.
13:29:10 <AnotherTest> elliott: oh okay, I wasn't following, I'm sorry
13:29:24 * elliott was talking about the Enum typeclass.
13:29:27 <elliott> in Haskell
13:36:50 <elliott> "Time is a part of the measuring system used to sequence events, to compare the durations of events and the intervals between them, and to quantify rates of change such as the motions of objects.[1] The temporal position of events with respect to the transitory present is continually changing; events happen, then are located further and further in the past. Time has been a major subject of religion, philosophy, and science, but defining it in a n
13:36:51 <elliott> on-controversial manner applicable to all fields of study has consistently eluded the greatest scholars. A simple definition states that "time is what clocks measure"."
13:36:56 <elliott> -- Wikipedia, attempting to define "time".
13:37:10 <elliott> Did you know that events happen, and then are located further and further in the past?
13:38:14 <AnotherTest> If it's a class, it's most likely going to be bad?
13:38:25 <AnotherTest> Is that what you meant?
13:38:28 <AnotherTest> :o
13:38:33 <AnotherTest> Also
13:38:42 <elliott> AnotherTest: "Typeclasses" have very little to do with the OOP concept of classes.
13:38:50 <elliott> @src Enum
13:38:50 <lambdabot> class Enum a where
13:38:51 <lambdabot> succ :: a -> a
13:38:51 <lambdabot> pred :: a -> a
13:38:51 <lambdabot> toEnum :: Int -> a
13:38:51 <lambdabot> fromEnum :: a -> Int
13:38:52 <lambdabot> [3 @more lines]
13:38:53 <AnotherTest> How can they define time without defining same at the same time?
13:39:00 <AnotherTest> *space
13:39:10 <AnotherTest> *first same = space
13:39:11 <elliott> Well, that's easy: just have one dimension and call it time.
13:39:17 <elliott> Plotting the progression of one lonely point.
13:39:20 <AnotherTest> That's wrong
13:39:38 <AnotherTest> time = space
13:40:06 <AnotherTest> Men has known that for years now
13:40:13 <AnotherTest> *have :(
13:40:23 <elliott> But women are, of course, still kept in the dark.
13:40:27 <elliott> AnotherTest: Anyway, how is that wrong?
13:40:34 <elliott> Yes, time can be modelled as a fourth spatial dimension.
13:40:48 <elliott> You can just as easily shave off the three other ones, and thus have a one-dimensional space where the only coordinate is time.
13:41:06 <AnotherTest> elliott: First of all, men refers to the human kind, in this case.
13:41:41 <AnotherTest> Second of all, we should think of space and time as the same thing, spacetime. This has little to do with dimensions.
13:41:48 <elliott> f(x,y,z,t) = 1 if x=t and y=0 and z=0, 0 otherwise -- a 3 spatial dimensions + time space with one particle starting at (0,0,0) at t=0 with velocity (1,0,0) (where we use 0/1 to denote "no particle/particle")
13:42:01 <AnotherTest> Third of all, shaving them of is not reality, it's mathematics, not physics.
13:42:09 <AnotherTest> *off
13:42:14 <elliott> f(t) = 1 if t is even, 0 if t is odd -- a 1-dimensional space consisting only of time where a particle in the single point blinks on and off every second
13:42:23 <elliott> AnotherTest: It's geometry.
13:42:29 <AnotherTest> It's physcis
13:42:45 <AnotherTest> but of course, geometry is a part of physics, a tool
13:42:46 <elliott> First you say it's mathematics, then you say it's physics?
13:42:54 <AnotherTest> I say what you do
13:42:56 <AnotherTest> is mathematics
13:43:01 <elliott> Anyway, Minkowski space is physics.
13:43:02 <AnotherTest> what time is, is physics
13:43:03 <Phantom_Hoover> Oh dear, are you trying to to maths and physics?
13:43:03 <elliott> It is also mathematics.
13:43:07 <Phantom_Hoover> This can only end badly.
13:43:18 <AnotherTest> mathematics < physcis
13:43:23 <elliott> Saying that you can't have a 1-dimensional space where the only dimension is time is "not physics, it's mathematics" is ridiculous.
13:43:27 <elliott> Physics is a branch of mathematics.
13:43:30 <AnotherTest> No
13:43:33 <elliott> All we're talking about is abstract models.
13:43:46 <AnotherTest> physics is the use of mathematics in real world situations
13:43:46 <Phantom_Hoover> Physics isn't a branch of mathematics.
13:43:48 <elliott> If you demand the-real-reality, then Newtonian mechanics isn't physics!
13:43:53 <elliott> Phantom_Hoover: Theoretical physics is.
13:43:58 <Phantom_Hoover> No, it's not.
13:44:08 <elliott> Sure it is; you're doing the same things, you're just playing by different rules.
13:44:08 <Phantom_Hoover> It's the fitting of mathematical models to observed physical situations.
13:44:09 <AnotherTest> I'm talking about the relativistic view here
13:44:14 <AnotherTest> not about the Newton view
13:44:20 <Phantom_Hoover> Theoretical physics is mathematics within these models, I suppose.
13:44:28 <elliott> AnotherTest: You're not really making any sense, anyway. Of course you can define time without defining space.
13:44:35 <AnotherTest> Newton was wrong about his way of thinking about space and time anyway
13:44:37 <elliott> Or rather, you don't have to define "space" in the way you're talking about.
13:44:43 <AnotherTest> elliott: You can, but you shouldn't
13:44:57 <Phantom_Hoover> AnotherTest, well then, a Minkowski space with one time dimension and no space is the same as a normal 1-dimensional space.
13:45:02 <elliott> AnotherTest: Also, describing space and then saying "time is one of the dimensions" is a woefully inadequate definition of time.
13:45:04 <AnotherTest> That's exactly the one point much scientists before Einstein didn't understand
13:45:09 <elliott> It's a rather special dimension.
13:45:15 <AnotherTest> No it's not
13:45:19 <elliott> Yes... it is.
13:45:19 <Phantom_Hoover> Yes, it is.
13:45:28 <AnotherTest> the is no such thing as a special dimension
13:45:38 <AnotherTest> a dimension is just another variable in a function
13:45:52 <elliott> Anyway, there's more to time than just the theoretical physics of it.
13:45:59 <elliott> There's the human and cultural perceptions of it, which are encyclopedically-relevant content.
13:46:07 <elliott> And very, very different from the other 3 dimensions.
13:46:10 <Phantom_Hoover> Distance between the origin and (x,y,z,t) squared = x^2 + y^2 + z^2 - t^2.
13:46:20 <elliott> And what Phantom_Hoover said.
13:46:23 <elliott> Time is special.
13:46:31 <AnotherTest> It's not
13:46:38 <AnotherTest> spacetime is
13:46:45 <Phantom_Hoover> And within spacetime, time is special.
13:46:50 <elliott> AnotherTest: OK, spacetime treats time specially.
13:46:53 <elliott> How can you define time without spacetime?
13:46:54 <AnotherTest> time is just a mathematical perception
13:46:58 <elliott> You've just spent 5 minutes saying you can't.
13:47:12 <AnotherTest> elliott
13:47:18 <AnotherTest> Time is not a real thing
13:47:21 <AnotherTest> spacetime is
13:47:25 <elliott> Sure it is?
13:47:30 <AnotherTest> Pretty sure
13:47:38 <elliott> No, I'm saying it is.
13:47:46 <AnotherTest> Prove?
13:47:46 <elliott> Time is a part of spacetime, Q.E.D.
13:47:53 <AnotherTest> no it's not
13:47:56 <elliott> ...Yes it is?
13:48:00 <AnotherTest> what we live in
13:48:02 <AnotherTest> is spacetime
13:48:02 <Phantom_Hoover> AnotherTest, what the *hell* do you mean by 'a real thing'?
13:48:10 <Phantom_Hoover> Is space a 'real thing' in your eyes?
13:48:15 <AnotherTest> A thing that exists in our universe
13:48:21 <AnotherTest> space is not a real thing
13:48:27 <Phantom_Hoover> And yet spacetime is?
13:48:30 <AnotherTest> yes
13:48:37 <Phantom_Hoover> What does 'exists' even mean in this context?
13:49:02 <Phantom_Hoover> Spacetime, as the name kind of implies, is a combination of space and time; its existence implies both.
13:49:10 <AnotherTest> no no
13:49:37 <AnotherTest> time and space are concepts we invented
13:49:42 * elliott thinks that AnotherTest is trying to take a philosophical position that holds physics as merely a description of the universe, which exists solely in its entirety independent of the physics underlying it.
13:49:45 <AnotherTest> spacetime is what really exists
13:49:46 <Phantom_Hoover> And spacetime *isn't*?
13:49:55 <Phantom_Hoover> You are just making naked assertions now.
13:49:58 <AnotherTest> No, spacetime isn't
13:49:59 <elliott> Unfortunately you don't seem to know enough about the subject to argue this consistently...
13:50:00 <Phantom_Hoover> Arguing with you is pointless.
13:50:22 <elliott> AnotherTest: "Spacetime" is the name of the model we created to describe the physical universe.
13:50:27 <elliott> "Space" and "time" are components of this model.
13:50:29 <AnotherTest> elliott: That's untrue, you should review some basic physics
13:50:53 <elliott> AnotherTest: What?
13:51:00 <elliott> AnotherTest: Yes, "spacetime" can also be used to refer to the entire universe.
13:51:05 <AnotherTest> Nobody is familiar with theories like general relativity here?
13:51:07 <elliott> But that's because the model is that the whole universe is made out of spacetime.
13:51:14 <elliott> I think you'll find Phantom_Hoover is quite familiar with general relativity here.
13:51:18 <Phantom_Hoover> AnotherTest, this is funny because you clearly don't actually know any physics?
13:51:19 <elliott> You seem to be suffering from the Dunning-Kruger effect.
13:51:31 <AnotherTest> Phantom
13:51:35 <Phantom_Hoover> And I'd say I know little about GR, but that's because I know enough to see just how much there is to it.
13:52:02 <AnotherTest> Explain to me why spacetime bends, separating space and time
13:52:03 <Phantom_Hoover> Protip: if you think you understand it and you don't have a degree in physics, you don't.
13:52:08 <Phantom_Hoover> AnotherTest, wat
13:52:09 <elliott> AnotherTest: BTW, try to assume your opponents aren't idiots who are below you. It's unbecoming.
13:52:45 <AnotherTest> elliott: You're doing the exact same thing as you described currently
13:52:56 <Phantom_Hoover> "Spacetime bends, separating space and time."
13:53:16 <Phantom_Hoover> This makes very, very little sense.
13:53:20 <AnotherTest> well, so you're saying that only what you call "space" changes?
13:53:24 <AnotherTest> Or only "time"?
13:53:33 <elliott> AnotherTest: "Spacetime" is an abstract model we use to describe the physical universe. In this model, the physical universe described by an abstract concept, "spacetime", whose definition involves space (such as the coordinates x, y and z) and time (such as the coordinate z). "Spacetime exists" can mean only "The universe can be accurately modelled with the concept of spacetime".
13:53:34 <elliott> It can.
13:53:35 <AnotherTest> It makes a lot sence in fact
13:53:37 <Phantom_Hoover> No, the overall geometry of spacetime changes.
13:53:39 <elliott> It can also be accurately modelled with the concepts of space and time.
13:53:55 <elliott> Yes, time is another coordinate, one of 4; but it's *treated specially* by the model of spacetime.
13:54:20 <elliott> So there is more to time than just defining space. Yes, defining Minkowski space will define both what we call "space" (3 spatial dimensions) and "time" (1 chronological).
13:54:32 <Phantom_Hoover> AnotherTest, http://en.wikipedia.org/wiki/Schwarzschild_metric#The_Schwarzschild_metric
13:54:34 <AnotherTest> We can only describe the universe
13:54:39 <elliott> But you can't just say "OK, there's a 3 dimensional universe, and also there's another coordinate, time".
13:54:42 <elliott> That does not describe time at all.
13:54:45 <Phantom_Hoover> This is an actual, well-researched example of a 'curved' spacetime.
13:54:59 <Phantom_Hoover> Note how the equation is not at all symmetric with respect to dt.
13:55:15 <elliott> AnotherTest: You seem to be saying that you cannot at all break a model into its subparts.
13:55:20 <elliott> You clearly can; that's why physics /works/.
13:55:23 <AnotherTest> I'm not
13:55:32 <elliott> It doesn't just say "the universe; the end", it says "the universe is A, B, and C, combined like D".
13:55:35 <AnotherTest> It's perfectly possible to calculate using time
13:55:44 <AnotherTest> but time does not exists because of that reason
13:55:46 <hagb4rd> afaik spacetime is a multidimenstional stucture which allows a mathematical description of space and time according to to the rules of relativity
13:55:55 <elliott> AnotherTest: OK, what exists?
13:56:02 <elliott> AnotherTest: The universe exists. Spacetime exists.
13:56:06 <elliott> AnotherTest: Space doesn't exist. Time doesn't exist.
13:56:06 <Phantom_Hoover> hagb4rd, amazingly, is largely right.
13:56:10 <elliott> Do you exist? Does my table exist? Does my chair exist?
13:56:20 <elliott> Those are all intimately tied to other things in the universe, per the laws of physics.
13:56:21 <AnotherTest> Yes, but that's matter
13:56:24 <elliott> And so cannot be completely separated from each other.
13:56:25 <AnotherTest> its of a total different form
13:56:25 <hagb4rd> *phew
13:56:29 <elliott> Just like the definitions of "space" and "time".
13:56:34 <Phantom_Hoover> If my table exists, do my tabletop and table legs exist?
13:56:39 <elliott> They are not separable, but they can be described separately.
13:56:45 <AnotherTest> Yes, but it's not the same
13:56:50 <elliott> No matter how much of a holist you are, reducing concepts is possible.
13:57:02 <elliott> AnotherTest: How? It's a clear analogy.
13:57:17 <elliott> If something exists, then so do its subparts, even if they can't be defined independently from the whole.
13:57:19 <AnotherTest> Yes, but that doesn't mean that those concepts will remain existant
13:57:26 <elliott> They're not chair legs without the chair; but the chair legs still exist.
13:57:47 <AnotherTest> You're thinking about this like it's the same as matter
13:57:55 <AnotherTest> but you can't
13:58:09 <elliott> OK, explain how you can't reason about abstract concepts this way. And _please_ define "exists".
13:59:19 <elliott> AnotherTest: BTW, how much physics do you know, then?
14:00:08 <hagb4rd> everything you can measure directly or indirectly (by measure its effects) exits
14:00:36 <elliott> hagb4rd: So the Planck length doesn't exist?
14:00:37 <AnotherTest> It's hard to define "exists", but I assume that you are familiar with the English language enough to understand the word "exists". Otherwise, I may ask you to explain "define" to me. And then you might ask me to define "explain". I am stating that the mathematical world is not the same as the real world as described by physics. Time and space are concepts that are used in mathematics to help describe the physical concept of spacetime.
14:00:57 <AnotherTest> It can be indirectly measured.
14:00:58 <hagb4rd> which planck?
14:01:10 <elliott> AnotherTest: Yes, of course it's hard to precisely define "exists", that's why you're being so unreasonable with your incredible degree of certainty in what exists or not; and if you're going by the everyday definition, then time certainly exists.
14:01:13 <AnotherTest> But still, I'm not sure if I agree with that defintion
14:01:28 <elliott> I can't figure out how your definition of "X exists" differs from "X is either 'the physical universe' or 'spacetime'".
14:01:41 <elliott> "Unless it's matter, in which case it exists."
14:02:02 <AnotherTest> spacetime is what the universe is made of, that could be a way of saying it
14:02:05 <AnotherTest> altough it's incorrect
14:02:10 <AnotherTest> *although
14:02:22 <AnotherTest> Because we just don't know very well what spacetime is
14:02:28 <AnotherTest> nobody knows it
14:02:33 <elliott> AnotherTest: Howso?
14:02:35 <AnotherTest> *knows it very well
14:02:38 <Phantom_Hoover> No, *you* don't know what you're talking about.
14:02:49 <hagb4rd> we do not even know what matter is
14:02:50 <elliott> I think we know quite a lot about spacetime.
14:02:58 <AnotherTest> quite a lot
14:03:02 <AnotherTest> is not entirely
14:03:11 <elliott> "we don't know very well" =/= "we know quite a lot indeed".
14:03:13 <AnotherTest> And we do not know what it physically means
14:03:23 <elliott> What it "physically means" is a meaningless question.
14:03:31 <elliott> The only question physics cares about is whether the model accurately describes the observations.
14:03:34 <AnotherTest> It is a meaningful question
14:03:41 <Phantom_Hoover> Everything you say is such vague, pseudo-philosophical bullshit that it effectively evades any actual discussion.
14:03:44 <elliott> If it is a meaningful question, it is a question for metaphysics.
14:03:47 <AnotherTest> it's like people that don't care about what a limit physically is
14:04:01 <elliott> And metaphysics is not a scientific discipline at all, because it basically asks "ignoring the scientific method, what **is** it?!?!?!".
14:04:24 <Phantom_Hoover> I suppose I won't be surprised if you turn out to be one of the worse class of finitists.
14:04:30 <elliott> Anyone who engages in it of course can't explain what an acceptable answer to this would be, because they're just grasping at straws to find "meaning".
14:05:10 <AnotherTest> Phatom, there are too much students in the university I'm at to verify that, unfortunately
14:05:32 <elliott> What are you studying, out of curiosity?
14:06:18 <AnotherTest> civil engineer
14:07:21 <AnotherTest> Also, second year, in case you might ask
14:07:39 <AnotherTest> Thus, bachelor
14:09:01 <Phantom_Hoover> Right.
14:10:02 <AnotherTest> Yes, it's true, we do not have a lot of physics. But still, I have read about the subject quite a lot.
14:10:22 <Phantom_Hoover> You are a year behind when someone studying physics in Cambridge would learn GR.
14:10:23 <AnotherTest> Also, since you may ask, what do you study?
14:10:59 <Phantom_Hoover> I am at school, but I actually know the limits of my knowledge, unlike you.
14:10:59 <AnotherTest> They don't teach civil engineers GR anyway
14:11:00 <elliott> Phantom_Hoover is one of them elitist mathematicians. (Disclaimer: I disclaim the contents of the previous sentence.)
14:11:27 <AnotherTest> school referring to high school?
14:11:55 <Phantom_Hoover> Yes.
14:14:21 <AnotherTest> Well then, you might say that I " do not know the limits of my knowledge". Although a reason may also be that you don't realize that I have learned much more in the last year and a bit than I have during the time that I was at high school. I do know my limits, and I do realize that I still have lots to learn.
14:14:59 <AnotherTest> But you might not, as stated.
14:15:19 <elliott> AnotherTest: You're not going to win anybody over by saying what amounts to "I'm slightly older than you, therefore my unjustified and unexplained statements are correct".
14:15:33 <elliott> Especially since, as perviously stated, they don't teach civil engineers GR.
14:15:44 <AnotherTest> elliott: I'm not attempting to.
14:15:56 <AnotherTest> Also, they don't teach us GR, but they do teach us mathematics.
14:16:07 <Phantom_Hoover> XD
14:16:17 <Phantom_Hoover> "It's all basically the same, isn't it?"
14:16:36 <AnotherTest> Whos quote was that?
14:16:58 <elliott> AnotherTest: To quote ancient Greek philosopher AnotherTest, "it's mathematics, not physics; mathematics < physcis".
14:17:16 <AnotherTest> < means something, in fact
14:17:22 <elliott> < implies =/=.
14:17:25 <AnotherTest> No
14:17:31 <elliott> Yes. Yes it does.
14:17:34 <AnotherTest> It implies Physics uses mathematics
14:17:35 <elliott> Something cannot be greater than itself.
14:17:50 <elliott> AnotherTest: That's... not what < means.
14:17:54 <AnotherTest> that was what I meant with that, I did not mean the operator
14:18:01 <AnotherTest> Also
14:18:11 <elliott> If you meant \subset or \in or whatever, the arrow is the wrong way around for that.
14:18:20 <AnotherTest> You can't ignore the fact that you need to know serious mathematics before you can understand GR
14:18:29 <elliott> Yes. You also need to know GR.
14:18:40 <AnotherTest> Yes, that's true
14:18:43 <AnotherTest> I read about GR
14:18:45 <elliott> Plenty of mathematicians are completely wrong about physics, because *they are not physicists*.
14:18:49 <AnotherTest> and I learned mathematics
14:18:58 <Phantom_Hoover> AnotherTest, ever heard of a stress-energy tensor?
14:19:25 <AnotherTest> yes?
14:19:34 <AnotherTest> again
14:19:42 <AnotherTest> It's newtonian physics
14:19:48 <AnotherTest> I was talking about GR
14:20:02 <Phantom_Hoover> You don't know shit about GR; please go away.
14:20:15 <AnotherTest> nor do you, I'm guessing
14:20:17 <elliott> To quote Greek philosopher Wikipedia, "The stress-energy tensor is the source of the gravitational field in the Einstein field equations of general relativity, just as mass is the source of such a field in Newtonian gravity."
14:20:50 <AnotherTest> and since when is wikipedia always our God of knowledge that is the only correct answer to any question?
14:21:05 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=stress-energy+tensor+general+relativity
14:21:11 <elliott> http://math.ucr.edu/home/baez/gr/stress.energy.html
14:21:17 <Phantom_Hoover> Oh, do please refer me to a source which says the stress-energy tensor is a Newtonian thing.
14:21:19 <elliott> Is John Baez a reliable enough source for you? He's kind of well-known.
14:21:27 <AnotherTest> I'm even doubting whether you understand what a momentum is, Phatum
14:21:30 <elliott> "General Relativity Tutorial - The Stress-Energy Tensor"
14:21:33 <hagb4rd> im sure everyone will enjoy your expertise in serious mathematics
14:21:39 <elliott> "Lecture 12: The Stress Tensor and the Relativistic Stress-Energy Tensor" http://people.hofstra.edu/Stefan_Waner/diff_geom/Sec12.html
14:21:58 <elliott> "ON THE VACUUM STRESS-ENERGY. TENSOR IN GENERAL RELATIVITY"
14:22:09 <elliott> "I have been trying to grasp the basics of "stress-energy tensor" and most information I have found starts above my head. I hope the basic concept can be put in English words without a ton of complicated math. It seems like more then just mass is being considered in GR when calculating the curvature of spacetime. Is that what it is all about? Links and explanations welcome."
14:22:24 <elliott> AnotherTest: Are you seriously going to deny it's relevant to GR just because I quoted Wikipedia facetiously?
14:22:31 <AnotherTest> no
14:22:40 <AnotherTest> obviously not
14:22:46 <AnotherTest> I didn't say it's unrelevant
14:22:53 <elliott> <Phantom_Hoover> AnotherTest, ever heard of a stress-energy tensor?
14:22:53 <elliott> <AnotherTest> yes?
14:22:53 <elliott> <AnotherTest> again
14:22:53 <elliott> <AnotherTest> It's newtonian physics
14:22:53 <elliott> <AnotherTest> I was talking about GR
14:23:02 <AnotherTest> Yes?
14:23:03 <elliott> That would be an unreasonable response by someone who believes that stress-energy tensors are relevant to GR.
14:23:16 <AnotherTest> I don't see how
14:23:29 <AnotherTest> anyway, I'll stop wasting my time here
14:23:39 <elliott> AnotherTest: "I'm making a cake." "Heard of sugar?" "Umm, that's chocolate, I was talking about cake."
14:23:42 <AnotherTest> I have some stuff to study
14:23:47 <elliott> "You realise cakes have sugar too?" "I never denied that!"
14:24:14 <AnotherTest> since chocolate contains sugar your argument is futile
14:24:26 -!- AnotherTest has left.
14:24:36 <elliott> Phantom_Hoover: X-D
14:24:46 -!- elliott has set topic: <AnotherTest> since chocolate contains sugar your argument is futile | http://codu.org/logs/_esoteric/.
14:24:56 -!- elliott has set topic: <AnotherTest> since chocolate contains sugar your argument is futile * AnotherTest (~Test@94-224-27-107.access.telenet.be) has left #esoteric | http://codu.org/logs/_esoteric/.
14:25:15 <Phantom_Hoover> :')
14:25:30 <elliott> That was so worth it for this laughter.
14:33:20 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:39:03 -!- derdon has joined.
14:39:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:45:50 -!- lifthras1ir has joined.
14:49:19 -!- comex` has joined.
14:50:26 -!- comex has quit (*.net *.split).
14:50:27 -!- lifthrasiir has quit (*.net *.split).
14:54:53 -!- elliott has quit (Remote host closed the connection).
14:55:10 -!- elliott has joined.
14:56:47 <elliott> fizzie: Is there a way to get the workspace focused automatically when a window tries to raise itself, e.g. Chromium opens a new tab after "chromium ..."?
14:56:57 <elliott> Right now I have to switch to that desktop manually after clicking a URL in XChat.
14:59:13 <hagb4rd> try this extension: https://chrome.google.com/extensions/detail/hjaooagfdhdhmbfchnkhggjmacjlacla
14:59:35 <hagb4rd> afaik there is no native implementation yet
15:00:25 <elliott> I like its behaviour on middle-clicking and so on; it's when other applications cause a new tab to be added by invoking the chromium command. Chromium already tries to raise the window in that situation, but xmonad doesn't heed the request by switching workspace.
15:08:19 -!- copumpkin has joined.
15:09:28 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
15:22:19 -!- Phantom_Hoover has joined.
15:23:06 <elliott> Phantom_Hoover just keeps hoovin' those phantoms.
15:26:07 -!- nooga has joined.
15:26:09 <nooga> http://www.jnode.org/node/132 THE HORROR
15:27:44 <nooga> Running JNode in qemu: "After that, the virtual machine started and after some three minutes, the jnode prompt appeared. " -- the author
15:27:52 <elliott> JNode is actually pretty cool, modulo the choice of language.
15:27:59 <nooga> that's right
15:28:06 <elliott> It's assembly VM + completely managed code.
15:28:08 <elliott> Not a single bit of C.
15:28:11 <nooga> _three minutes_
15:28:23 <elliott> nooga: You realise that qemu is really ridiculously slow without KVM?
15:28:32 * elliott bets that the Ubuntu LiveCD wouldn't boot in qemu in that time.
15:29:22 <elliott> Deewiant: ESC+arrow keys to inter-word navigation; why doesn't alt+arrow keys
15:29:30 <elliott> Deewiant: Worked in Xfce's terminal :(
15:29:35 <elliott> They just move the cursor normally instead.
15:29:35 <nooga> elliott: you're right, the idea is great and I'm amazed that it's running awt and programs like jedit
15:29:41 <nooga> but Java
15:29:44 <elliott> I've tried setting modifier: alt and meta8: true and all that.
15:29:58 <elliott> nooga: They should do it all in Clojure or something :p
15:30:09 <elliott> That would actually be really interesting; STM in the kernel.
15:32:23 <nooga> but Clojure is for JVM and hasn't got any syntax
15:34:04 <elliott> nooga: Well, I was intentionally using the JVM thing to keep in the same basic theme as JNode but with a nicer language.
15:34:08 <elliott> nooga: And sure it's got syntax, tons of it.
15:34:44 <elliott> Not only is there all this () [] "" ` ~ @ stuff, but every macro extends the abstract syntax of the language in a very real way.
15:34:55 <elliott> (I'm not a Clojure programmer, mind you, so don't take this as an outright endorsement or anything.)
15:35:54 <nooga> still looks like sexps
15:36:16 <nooga> i just brwsed through a src of some huge program written in clojure
15:36:46 <nooga> and it's not very appealing
15:36:51 <elliott> Yes, but saying "sexps -> no syntax" is a very shallow view of things.
15:37:20 -!- sebbu2 has joined.
15:37:21 -!- sebbu2 has quit (Changing host).
15:37:21 -!- sebbu2 has joined.
15:37:22 <elliott> Even if you count modifying the readtable to add new lexical syntax as cheating, syntax is about /trees/, not just characters. So macros are definitely adding syntax, because they're changing the valid forms of the language.
15:37:29 <nooga> okay, I know, it was an exaggeration
15:37:35 <elliott> I personally find Clojure's lexical syntax a bit ugly, but that doesn't mean it doesn't have any of it :P
15:37:58 <nooga> right
15:38:28 -!- sebbu has quit (Ping timeout: 240 seconds).
15:38:39 <Phantom_Hoover> raaaaaaa clojure
15:39:35 * elliott prepares for round 2 of Phantom_Hoover being really angry about languages he doesn't know shit about; subtitle: "Clojure through the lens of somebody who learned everything they know about Clojure from a post on the Loper OS blog".
15:39:45 <Phantom_Hoover> wha
15:39:47 <Phantom_Hoover> i did?
15:39:51 <Phantom_Hoover> Also I was joking?
15:40:25 <elliott> SUUUUUUUUUUUUUUUUUUURE
15:41:00 <elliott> Phantom_Hoover: Just like Hitler was "joking" when he killed all the jews?!?!?!?!
15:41:03 <elliott> Q.E.D.
15:41:15 <Phantom_Hoover> Hipster Hitler did it ironically, duh.
15:42:04 <elliott> Phantom_Hoover: Don't, that comic got old approximately 3 minutes before it was created.
15:42:24 <Phantom_Hoover> — Elliott "Hipster Hitler is the best thing" Hird.
15:42:39 <elliott> Phantom_Hoover: IT WAS THE BEST FOR ABOUT 6 MINUTES AFTER IT GOT OLD
15:42:50 <elliott> `pastlog <Phantom_Hoover> I suck\.
15:42:58 <Phantom_Hoover> — That "Was a litmus test, I despise" DS9
15:43:10 <HackEgo> No output.
15:43:19 <elliott> "— That "Was a litmus test, I despise" DS9" --Phantom_Hoover, also *you're* a litmus test.
15:43:25 <elliott> Also HOW DO YOU SLEEP UNTIL THE BEGINNING
15:43:27 <elliott> OF THE NEXT MINUTE
15:43:31 <elliott> WITH HASKELL'S FUCKING TIME LIBRARY
15:43:32 <elliott> HOW HARD
15:43:33 <elliott> CAN THIS
15:43:34 <elliott> POSSIBLY
15:43:34 <elliott> BE
15:43:34 -!- hagb4rd has quit (Read error: Operation timed out).
15:43:36 <elliott> Phantom_Hoover: You do it???
15:43:39 <Phantom_Hoover> porety
15:44:04 <elliott> Porety.
15:44:17 <elliott> I'm going to publish it, the title is "Also HOW DO YOU SLEEP UNTIL THE BEGINNING
15:44:19 <elliott> OF THE NEXT MINUTE
15:44:23 <elliott> WITH HASKELL'S FUCKING TIME LIBRARY
15:44:24 <elliott> HOW HARD
15:44:24 <elliott> CAN THIS
15:44:25 <elliott> POSSIBLY
15:44:26 <elliott> BE".
15:44:35 <elliott> I will demand the title be printed as well as the poerm.
15:44:57 <Phantom_Hoover> *porem
15:45:00 <elliott> sory
15:45:11 <Phantom_Hoover> *sroy
15:48:12 <elliott> sroy
15:59:47 <elliott> Phantom_Hoover: A new minute in UTC is a new minute in every timezone, right?
15:59:56 <elliott> Since there's no sub-minute deltas.
16:00:05 <Phantom_Hoover> I'm going to go for 'yes'.
16:00:31 <elliott> Phantom_Hoover: I was just checking there were no eddies!
16:05:23 -!- azaq23 has joined.
16:05:32 -!- azaq23 has quit (Max SendQ exceeded).
16:06:06 -!- augur has quit (Remote host closed the connection).
16:06:13 -!- azaq23 has joined.
16:06:36 <elliott> @hoogle (Real a, Real b) => a -> b
16:06:36 <lambdabot> Data.Fixed mod' :: Real a => a -> a -> a
16:06:36 <lambdabot> Prelude realToFrac :: (Real a, Fractional b) => a -> b
16:06:36 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
16:22:53 <tswett> elliott: get the amount of time until the beginning of the next minute, and then sleep for that long?
16:24:15 -!- MSleep has changed nick to MDude.
16:26:12 <elliott> tswett: Yes, that's the hard part, in the presence of leap seconds :) But apparently the time library just punts on them, so that's what I went with in the end.
16:26:25 <elliott> http://stackoverflow.com/questions/8575118/sleeping-until-the-start-of-the-next-minute
16:35:00 <elliott> @pl \(i,n) -> fmap ((,) i) n
16:35:00 <lambdabot> uncurry (fmap . (,))
16:35:55 <elliott> @hoogle \(i,w) -> (,) i <$> spawn w
16:35:56 <lambdabot> Parse error:
16:35:56 <lambdabot> \(i,w) -> (,) i <$> spawn w
16:35:56 <lambdabot> ^
16:36:03 <elliott> @pl \(i,w) -> (,) i <$> spawn w
16:36:04 <lambdabot> uncurry ((. spawn) . (<$>) . (,))
16:36:12 <elliott> @pl \(i,w) -> fmap ((,) i) $ spawn w
16:36:12 <lambdabot> uncurry ((. spawn) . fmap . (,))
16:36:17 <elliott> hmph
16:36:24 <elliott> @pl \(i,w) -> fmap ((,) i) w
16:36:24 <lambdabot> uncurry (fmap . (,))
16:38:55 <elliott> @hoogle (a, m b) -> m (a, b)
16:38:55 <lambdabot> No results found
16:39:28 <copumpkin> :t uncurry (fmap . (,))
16:39:29 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1, f a) -> f (a1, a)
16:39:49 <copumpkin> aka weakness
16:41:35 <elliott> copumpkin: oh, neat
16:41:44 <elliott> that will totally shorten my code! :P
16:41:47 <copumpkin> well, it's called strength
16:41:52 <copumpkin> in most places I've seen it
16:42:08 <copumpkin> http://en.wikipedia.org/wiki/Strong_monad
16:43:01 <elliott> We should put those diagrams in the Haddocks for Monad to scare people off even more.
16:47:46 <elliott> Hmm, it would be really nice to be able to run an IO action when a TChan is collected.
16:47:54 <elliott> (So that you could kill off the thread writing to it.)
16:47:56 <elliott> Oh, er, you can do that, I guess.
16:48:02 <elliott> The thread writing to it just has to go through a weak pointer.
16:48:04 * elliott goes to implement it.
16:49:41 -!- augur has joined.
16:59:59 -!- sadhu has joined.
17:00:22 <elliott> It occurs to me that this is probably not considered acceptable use of finalisers.
17:00:35 -!- sadhu has left ("Konversation terminated!").
17:00:42 <elliott> Hey copumpkin, is it evil to use Weak to kill the thread writing to a TChan when all its readers disappear?
17:00:48 <elliott> (A thread that runs in IO.)
17:08:40 <copumpkin> probably, but I dunno
17:08:50 <elliott> @hoogle a -> (a -> b) -> (a,b)
17:08:50 <lambdabot> Control.Monad.Writer.Class listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
17:08:50 <lambdabot> Control.Monad.Writer.Lazy listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
17:08:51 <lambdabot> Control.Monad.Writer.Strict listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)
17:08:57 <elliott> Huh, I swear there's an Arrow thing for that.
17:09:05 <elliott> @hoogle a b c -> a b (b,c)
17:09:05 <lambdabot> Control.Arrow (&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')
17:09:05 <lambdabot> Control.Monad.Trans.Maybe liftListen :: Monad m => (m (Maybe a) -> m (Maybe a, w)) -> MaybeT m a -> MaybeT m (a, w)
17:09:05 <lambdabot> Data.Graph.Inductive.Query.MaxFlow maxFlowgraph :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b)
17:09:22 <elliott> Oh, (id &&& foo) I guess.
17:11:08 <Deewiant> ?ty id &&& (+1)
17:11:08 <lambdabot> forall b. (Num b) => b -> (b, b)
17:11:09 <Deewiant> ?ty ap (,) (+1)
17:11:10 <lambdabot> forall a. (Num a) => a -> (a, a)
17:11:14 <Deewiant> Take your pick.
17:13:37 <elliott> Deewiant: It's actually (a -> m b) -> a -> m (a, b) I want :p
17:13:43 <elliott> @hoogle (a -> m b) -> a -> m (a,b)
17:13:44 <lambdabot> No results found
17:14:43 <Deewiant> ?pl \f x -> f x >>= \y -> return (x,y)
17:14:43 <lambdabot> (`ap` ((return .) . (,))) . ((>>=) .)
17:14:49 <Deewiant> elliott: There you go
17:15:29 <elliott> Deewiant: Perfect!
17:16:00 <Deewiant> ?pl \x -> f x >>= return . (,) x
17:16:01 <lambdabot> liftM2 (>>=) f ((return .) . (,))
17:16:52 <Deewiant> ?pl \f x -> fmap ((,) x) (f x)
17:16:52 <lambdabot> liftM2 fmap (,)
17:16:53 <elliott> <hiptobecubic> xmonad is nice but i certainly wouldn't describe it as "fast" <Clint> no, certainly not <Clint> such slowness does not occur under awesome <hiptobecubic> The slowness doesn't bother me, it's not like it's slower than i am <Clint> it takes up valuable brain cycles by being noticeable
17:16:55 <Deewiant> ?ty liftM2 fmap (,)
17:16:55 <elliott> Neat, #xmonad has trolls
17:16:56 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
17:17:02 <Deewiant> elliott: ?
17:17:05 <Deewiant> ^
17:17:05 <elliott> Deewiant: <elliott> <hiptobecubic> xmonad is nice but i certainly wouldn't describe it as "fast" <Clint> no, certainly not <Clint> such slowness does not occur under awesome <hiptobecubic> The slowness doesn't bother me, it's not like it's slower than i am <Clint> it takes up valuable brain cycles by being noticeable
17:17:08 <elliott> Oh
17:17:13 <elliott> Right, that would work
17:17:23 <Deewiant> ?ty liftA2 fmap
17:17:24 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Applicative f1) => f1 (a -> b) -> f1 (f a) -> f1 (f b)
17:17:36 <elliott> liftM2 fmap (,) (getNext . getSource) -- better or worse than (\i -> liftM ((,) i) . getNext . getSource $ i)?! :p
17:18:09 <Deewiant> If you used liftM in the original, use it there too: 'liftM2 liftM'
17:18:17 <elliott> :t liftM2 liftM
17:18:18 <lambdabot> forall a1 r (m :: * -> *) (m1 :: * -> *). (Monad m, Monad m1) => m1 (a1 -> r) -> m1 (m a1) -> m1 (m r)
17:18:34 <elliott> That, um.
17:18:35 <elliott> That is impressive.
17:18:45 <Deewiant> ?ty liftM3 liftM2 liftM
17:18:46 <lambdabot> forall a2 r (m :: * -> *) a1. (Monad m) => ((a1 -> r) -> m (a2 -> a1)) -> ((a1 -> r) -> m a2) -> (a1 -> r) -> m r
17:18:58 <Deewiant> ?ty liftM4 liftM3 liftM2 liftM
17:18:59 <lambdabot> forall a3 r a2. (((a2 -> r) -> a2 -> r) -> (a3 -> a2 -> r) -> a3 -> a2) -> (((a2 -> r) -> a2 -> r) -> (a3 -> a2 -> r) -> a3) -> ((a2 -> r) -> a2 -> r) -> (a3 -> a2 -> r) -> r
17:19:08 <Deewiant> The monads just keep on disappearing. :-/
17:19:24 <elliott> @ty liftM liftM2 liftM3 liftM4
17:19:24 <lambdabot> forall (m :: * -> *) (m1 :: * -> *) a1 a2 a3 a4 r (m2 :: * -> *). (Monad m, Monad m1, Monad m2) => m (m1 (a1 -> a2 -> a3 -> a4 -> r)) -> m (m1 (m2 a1)) -> m (m1 (m2 a2) -> m1 (m2 a3 -> m2 a4 -> m2 r)
17:19:25 <lambdabot> )
17:19:30 <elliott> Deewiant: FTFY
17:19:33 <elliott> :t liftM liftM2 liftM3 liftM4 liftM5
17:19:33 <lambdabot> forall (m :: * -> *) a1 a2 a3 a4 a5 r (m1 :: * -> *). (Monad m, Monad m1) => ((a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m1 a1 -> m (m1 a2)) -> (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> (m1 a1 -> m (m1 a3)) ->
17:19:33 <lambdabot> m1 a1 -> m (m1 a4) -> m (m1 a5) -> m (m1 r)
17:19:35 <elliott> :t liftM liftM2 liftM3 liftM4 liftM5 liftM6
17:19:36 <lambdabot> Not in scope: `liftM6'
17:19:40 <elliott> Okay, that's as monad as you can get.
17:19:43 <elliott> Challenge: Come up with a use for it.
17:30:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
17:47:44 <elliott> :t splitAt
17:47:45 <lambdabot> forall a. Int -> [a] -> ([a], [a])
17:57:57 <elliott> :t foldl (<*>) (pure f)
17:57:58 <lambdabot> Occurs check: cannot construct the infinite type: b = a -> b
17:57:59 <lambdabot> Expected type: f (a -> b)
17:57:59 <lambdabot> Inferred type: f b
17:58:02 <elliott> Knew it.
17:58:39 <elliott> @hoogle ([a] -> b) -> [f a] -> f [b]
17:58:39 <lambdabot> No results found
17:58:41 <elliott> :(
17:58:46 <elliott> I assign Deewiant to the case.
18:00:50 <elliott> :t let apply' f [] = pure f; apply' f (x:xs) = ($) <$> x <*> apply' f xs in apply'
18:00:51 <lambdabot> forall b (f :: * -> *). (Applicative f) => b -> [f (b -> b)] -> f b
18:01:01 <elliott> Oh, duh.
18:01:04 <elliott> :t let apply' f [] = pure f; apply' f (x:xs) = flip ($) <$> x <*> apply' f xs in apply'
18:01:05 <lambdabot> Occurs check: cannot construct the infinite type: b = a -> b
18:01:05 <lambdabot> Expected type: f (a -> b)
18:01:05 <lambdabot> Inferred type: f b
18:01:14 <elliott> Oh, duh.
18:01:43 <elliott> :t let apply' f [] = pure f; apply' f (x:xs) = (\x f' xs -> f' (x:xs)) <$> x <*> apply' f xs in apply'
18:01:44 <lambdabot> forall a t (f :: * -> *). (Applicative f) => ([a] -> t) -> [f a] -> f ([a] -> t)
18:02:22 <elliott> :t let apply' f [] = pure f; apply' f (x:xs) = (\x f' xs -> f' (x:xs)) <$> x <*> apply' f xs; apply f xs = apply' f xs <*> [] in apply
18:02:23 <lambdabot> forall a b. ([a] -> b) -> [[a]] -> [b]
18:02:41 <elliott> :t let apply' f [] = pure f; apply' f (x:xs) = (\x f' xs -> f' (x:xs)) <$> x <*> apply' f xs; apply f xs = ($ []) <$> apply' f xs in apply
18:02:42 <lambdabot> forall a b (f :: * -> *). (Applicative f) => ([a] -> b) -> [f a] -> f b
18:05:03 <elliott> Oh, hmm
18:05:06 <elliott> @type sequenceA
18:05:06 <lambdabot> Not in scope: `sequenceA'
18:05:11 <elliott> @hoogle sequenceA
18:05:11 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
18:05:11 <lambdabot> Data.Foldable sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()
18:05:14 <elliott> Of course :)
18:12:41 <elliott> Deewiant: What's "status" in Finnish; alternatively, "state" as in state of affairs (not as in nation state)
18:13:09 <Deewiant> tilanne; tila
18:14:44 <elliott> Deewiant: Hmm, there are worse names
18:15:52 <elliott> pikhq_: Pls explain the subtle differences in meaning of 状態, 様子 and 有様 kthxbai
18:16:13 * elliott 's naming algorithm first just translates the obvious purpose of the program into a bunch of languages and picks the prettiest for consideration.
18:22:34 <elliott> Wait, ISTR Deewiant knowing Japanese.
18:22:48 <Deewiant> Not that much. :-P
18:23:37 <elliott> Google Translate thinks the last one is "likeness" and lists "appearance" as the second meaning for the second (backed up by Wiktionary, although not quite the second there).
18:23:46 <elliott> So I guess the first one is the most accurate translation but EH, EH I say.
18:26:01 <Deewiant> http://tangorin.com/dictionary.php?search=state
18:26:16 <pikhq_> elliott: "jōnō", "yōsu", and "yūsu"?
18:26:24 <elliott> pikhq_: Yes. Something like that anyway.
18:26:36 <pikhq_> elliott: Those are basically synonyms.
18:26:42 <elliott> Jotai, yosu, and arisama, apparently, modulo some fucking bars over os I can't be arsed to type.
18:26:45 <pikhq_> Might be a bit of distinction in connotation, but eh.
18:26:46 <elliott> So sayeth Wiktionary.
18:26:54 <pikhq_> Oh, the *other* plausible reading.
18:27:03 <elliott> "yusu", "arisama", what's the difference!
18:27:14 <elliott> The Japanese just kind of pick one or two vowels and pronounce those.
18:27:27 <pikhq_> Kunyomi vs. onyomi is all.
18:27:55 * elliott wants to use Yosu because it's the prettiest but doesn't want to if the connotations imply "appearance". :(
18:28:06 <pikhq_> Anyways, "status" or "state of affairs" you want?
18:28:22 <pikhq_> 様子 is the one I'd go with.
18:29:25 <pikhq_> It *also* suggests "appearance", but the primary meaning is indeed status.
18:30:41 <elliott> What does that one romanise as :P
18:30:48 <pikhq_> yōsu
18:30:52 <elliott> Yaaaaaaaay
18:31:01 <pikhq_> And that's not me just guessing a plausible reading. :P
18:31:02 <Deewiant> And if you won't use the macron, that's yousu
18:31:31 <pikhq_> And if you want pikhq Romanisation, that's "yousu".
18:34:27 <pikhq_> ... Excuse me for a bit while I realise I'm a moron.
18:34:50 <pikhq_> 状態 is in no way read じょうの. No no no. That's stupid stupid stupid.
18:36:56 <pikhq_> 有様's just read weird.
18:37:15 <pikhq_> But WTF じょうのう
18:40:39 <elliott> pikhq_: wat
18:40:44 <elliott> I should probably install Japanese fonts.
18:40:50 <pikhq_> elliott: WTFing at myself is all.
18:40:54 <elliott> Deewiant: Nobody says Toukyo :P
18:40:58 <pikhq_> And probably needed coffee.
18:41:17 <Deewiant> elliott: Nobody writes that, but they do say that :-P
18:41:33 <elliott> Deewiant: WELL DON'T PRONOUNCE MY PACKAGE NAME THEN
18:41:38 <pikhq_> elliott: "Toukyou", and that's because English speakers like omitting the macrons making it impossible to figure out WTF they're talking about.
18:41:41 <Deewiant> Toukyou even, I think.
18:42:21 <pikhq_> Well, 'cept that if you can't figure out what "Tokyo" refers to you're alreadly hopeless. :P
18:45:23 <elliott> I might call it Yousu anyway, ONLY TIME WILL TELL.
18:45:51 <olsner> elliott: imagine a language where all sounds are written �
18:45:57 <elliott> olsner: :D
18:46:25 <elliott> @tell shachaf I was joking about FRPzen2, but I started writing a little ditty to output my dzen2 status line thing, and once I realised I had literally reinvented the Discrete type in the process, switched to reactive-banana.
18:46:26 <lambdabot> Consider it noted.
18:48:10 <elliott> @pl (f >=> g) $ (h >=> i) x
18:48:10 <lambdabot> f >=> g $ (h >=> i) x
18:48:14 <elliott> :-|
18:48:35 <pikhq_> elliott: You could also do the "hilarious" method of calling it ステイタス, suteitasu.
18:48:57 <pikhq_> Which appears to be the computer terminology "status".
18:49:27 <olsner> I should start spelling it stäjtas in swedish too
18:51:32 <elliott> http://blog.willdonnelly.net/2009/03/14/runtime-scheme-detection/ This is cool.
18:51:45 <elliott> (Completely portable Scheme interpreter detection, no SRFIs.)
18:59:08 <Gregor> NO RACKET? MUST SUCK.
19:01:48 -!- comex` has changed nick to comex.
19:01:58 <elliott> Gregor: "mzscheme", you moron :P
19:02:04 <elliott> It predates the name change.
19:02:29 <elliott> > mod' (14.3) 14
19:02:30 <Gregor> ... but Racket was PLT Scheme ... did it have another name change before then?
19:02:30 <lambdabot> 0.3000000000000007
19:02:38 <elliott> Gregor: MzScheme was PLT Scheme's Scheme interpreter.
19:02:46 <elliott> PLT Scheme itself was a whole suite of things, including the DrScheme IDE, etc.
19:02:50 <Gregor> Ohhhhhhh right.
19:03:03 <Gregor> I never even ran PLT Scheme until it was Racket, so I don't know these things
19:03:32 <Gregor> Effin' lack of tongue-smiley.
19:03:35 <Gregor> It's drivin' me crazy.
19:04:52 <shachaf> @messages
19:04:52 <lambdabot> elliott said 18m 27s ago: I was joking about FRPzen2, but I started writing a little ditty to output my dzen2 status line thing, and once I realised I had literally reinvented the Discrete type in
19:04:52 <lambdabot> the process, switched to reactive-banana.
19:05:12 * shachaf has never used reactive-banana or any FRP thing, really.
19:05:22 <Gregor> "Reactive-banana" is also elliott's porn name.
19:07:55 -!- Ngevd has joined.
19:09:34 <Ngevd> Hello!
19:09:50 <Ngevd> I think I use the most hated Ubuntu distribution in the past few years
19:09:55 <Ngevd> 11.04
19:10:15 <Phantom_Hoover> I note that fortune considers Dawkins offensive, but allows Solanas into the main set.
19:13:57 <elliott> shachaf: You sleep polyphasically or are insomniac; pick one.
19:14:48 <Phantom_Hoover> He's relativistically time-tilated.
19:14:50 <Phantom_Hoover> *dilated
19:14:52 <Phantom_Hoover> how
19:15:27 <elliott> shachaf: By the way, I found two uses for (>=>) at once: (compile >=> actuate) . (sequence >=> run . T.sequenceA . map widgetValue)
19:19:07 -!- zzo38 has joined.
19:23:36 <zzo38> For translate Japanese texts, I use WWWJDIC it works better.
19:24:53 <shachaf> elliott: It's morning.
19:25:07 <shachaf> elliott: ...I was awake until ~04:00.
19:26:41 <shachaf> elliott: Speaking of either sleeping polyphasically or insomnia, which one applies to you?
19:28:15 <Phantom_Hoover> elliott's like Anne Poole.
19:28:29 <Phantom_Hoover> (That's not a spoiler, to preëmpt the inevitable.)
19:29:43 <elliott> shachaf: Polyphasic sleep? That's, like, a regular schedule, man.
19:29:50 <elliott> I'm too free-thinking for that kind of thing!
19:29:57 <elliott> Wake up sleeple.
19:30:10 <shachaf> Dictator.
19:38:55 -!- GreaseMonkey has joined.
19:43:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:52:43 <elliott> shachaf: Hey, convince me to just make this a status-bar-printer and not a full status bar. Please.
19:53:00 <shachaf> elliott: Imagine how much fun writing a full status bar would be.
19:53:42 <elliott> :(
19:53:56 <fizzie> Imagine the throngs of people on the Red Square in Moscow, hailing you as the creator of the best status bar.
19:54:08 -!- tuubow has joined.
19:54:29 <shachaf> elliott: That was supposed to inspire you not to want to do it!
19:55:36 <elliott> fizzie: Hey, if I make this thing just manage a dzen2 pipe, you're legally obligated(tm) to use it. It would even work with dbus!
19:56:26 <elliott> Also clickables, I have the best solution for clickables.
19:57:05 <shachaf> elliott: Clicking?
19:57:10 <elliott> Well, yes.
19:57:15 <shachaf> I knew it.
19:57:20 <elliott> But also more than that.
20:00:44 <elliott> fizzie knows legal obligation(tm) when he sees it.
20:01:53 -!- derrik has joined.
20:05:09 -!- Phantom_Hoover has joined.
20:07:18 -!- derrik has quit (Ping timeout: 252 seconds).
20:10:42 <Phantom_Hoover> OK
20:10:43 <Phantom_Hoover> http://www.rte.ie/news/news1pm/player.html?20111220,3146924,3146924,flash,257
20:10:55 <Phantom_Hoover> Father Ted is actually a documentary, it seems.
20:26:57 -!- Ngevd has quit (Ping timeout: 276 seconds).
20:29:44 -!- monqy has joined.
20:29:57 <fizzie> Just a heads-up, we're going to be fungotless for a day; they're switching our interwebs tomorrow, and want me to plug the new VDSL2 box in already today so that when they (at some unspecified time tomorrow) connect the tubes, they can test that it works. And I really can't be bothered copying the whole 627 megabytes of fungot to some remote place to temporarily run it from. It's just a day, after all.
20:29:57 <fungot> fizzie: no, of the house, so he wasn't joking i don't bolivia! we're the last! it is!
20:30:07 <fizzie> fungot: Don't take it so hard.
20:30:07 <fungot> fizzie: to the worm he's actually right, the village, you spend the night, but this is the way, myth, god created the universe!
20:33:05 <Phantom_Hoover> Poor fungot.
20:33:05 <fungot> Phantom_Hoover: i know! i'll assemble a prize, finance minister, the new tech to build a time like a good spot of tea, then, why?
20:33:09 <elliott> fizzie: You realise we've had fungot outages of way more than a day before? :p
20:33:09 <fungot> elliott: the one copying serron is still alive! are you okay?! greedo, old general, ex machina about now the equation is j+s+k does not equal 180 degrees
20:33:23 <Phantom_Hoover> fungot, we can have a last spot of tea, yes.
20:33:23 <fungot> Phantom_Hoover: oh, there's a sign, maybe. she left a bit of a noble way of the most secure and well-guarded buildings in the world, we should at the end of the world, we should at a time like a good spot.
20:33:27 <fizzie> elliott: Yes, but they've been unplanned and therefore don't count.
20:33:38 <elliott> fizzie: Does this mean we'll be fizzieless too?
20:33:40 <Phantom_Hoover> fizzie, farewell, friend.
20:33:47 <Phantom_Hoover> By which i mean
20:33:47 <Phantom_Hoover> fungot,
20:33:48 <fungot> Phantom_Hoover: is the balrog following in the footsteps of another very special date. please, put the black! now, where's the fun! i wanted another go, in luxury in her room
20:34:01 -!- oerjan has joined.
20:34:19 <fizzie> I think I can manage to run irssi somewhere, it's less of a hassle. And then IRC up via the tellyphone. Though I suppose I'll be only disconnecting the place near sleep-time anyway.
20:35:41 <elliott> hi oerjan
20:35:50 <oerjan> hi elliott
20:35:59 <elliott> fizzie: Does your xmonad-dzen stuff have a: License(tm)?
20:36:07 <elliott> Only I'm reading it for, uh, inspiration.
20:36:30 <fizzie> "Inspiration". More like... uh.. dunspiration. (What's the opposite of inspiration?)
20:37:05 <Phantom_Hoover> Exspiration.
20:37:09 <fizzie> I don't think it has a statement yet, but maybe you could treat it as under the MIT license. (Was that a sane one? I can never remember them.)
20:37:11 <elliott> fizzie: Well, you see, I don't know dzen2 syntax. :p
20:37:15 <fizzie> Perspiration.
20:37:20 <Phantom_Hoover> Expiration, I mean.
20:37:24 <elliott> And yes, the MIT is fairly sane, although BSD2 would be more personally convenient to me.
20:37:43 <fizzie> Well, you can treat it as that too.
20:37:52 <fizzie> I'm easy like that.
20:39:04 <elliott> :t \x -> fromMaybe [x] . lookup x [('^', "^^")]
20:39:05 <lambdabot> Couldn't match expected type `Maybe [Char]'
20:39:05 <lambdabot> against inferred type `[Char]'
20:39:05 <lambdabot> In the expression: "^^"
20:39:15 <elliott> :t \x -> lookup x [('^', "^^")]
20:39:16 <lambdabot> Char -> Maybe [Char]
20:39:23 <elliott> :t \x -> fromMaybe [x] $ lookup x [('^', "^^")]
20:39:24 <lambdabot> Char -> [Char]
20:40:16 -!- augur has quit (Remote host closed the connection).
20:46:09 <elliott> @src IO mempty
20:46:09 <lambdabot> Source not found. Where did you learn to type?
20:47:29 <shachaf> "Haskell provides indexable arrays, which may be thought of as functions whose domains are isomorphic to contiguous subsets of the integers."
20:47:36 <Deewiant> Since when is IO a Monoid
20:47:38 <shachaf> Thanks, Report. Threport.
20:47:52 <shachaf> Deewiant: MONOID IN THE CATEGORY OF ENDOFUNCTORS
20:48:00 <shachaf> (Well, Monoid in Hask.)
20:48:09 <shachaf> Er, endofunctors therein.
20:49:22 -!- Ngevd has joined.
20:53:03 <oerjan> Hello!
20:53:12 <Ngevd> aaaah!
20:53:13 <Ngevd> Hello!
20:53:18 <oerjan> TOO LATE
20:53:32 <elliott> Deewiant: I was expecting a (Monoid a) => Monoid (IO a) thing.
20:53:45 <elliott> <shachaf> "Haskell provides indexable arrays, which may be thought of as functions whose domains are isomorphic to contiguous subsets of the integers."
20:53:49 <elliott> shachaf: instance Ix CReal
20:53:51 <elliott> WHAT NOW, SCIENCE???
20:54:48 <oerjan> science now laughs at your nonterminating Ix instance
20:55:23 <shachaf> elliott: I still think "CReal" ~ s/Int/Real/ "CInt" whenever I see that type.
20:55:23 <oerjan> and prepares the diagonalizer unless you repent
20:56:18 <elliott> shachaf: Me too.
20:56:40 <shachaf> What does the C stand for, anyway?
20:56:57 <shachaf> @quote copumpkin overflow
20:56:57 <lambdabot> copumpkin says: <kmc> do you have a theory where the stack overflow is coming from? <copumpkin> joel spolsky
20:57:23 <elliott> shachaf: Computable.
20:57:44 <shachaf> > let x :: CReal; x = error "WHAT NOW, SCIENCE?" in x
20:57:45 <lambdabot> *Exception: WHAT NOW, SCIENCE?
20:58:57 <shachaf> elliott: I have such a great pun saved up for some argument where I win using Proof by Type-Checker.
20:59:01 <shachaf> Sadly the occasion has not come up.
21:00:23 <elliott> shachaf: Go on.
21:00:39 <shachaf> elliott: No.
21:00:47 <shachaf> You'd better set me up an opportunity for it sometime.
21:00:54 <Phantom_Hoover> Just engineer an opportunity, duh.
21:08:37 <elliott> fizzie: How does one right-align some text with dzen2, anyway?
21:08:40 <elliott> I can't find it in the README.
21:10:09 <fizzie> You start another well-aligned dzen, shacaf-style, and give it "-ta r". :p
21:10:15 <elliott> Wait, you have to invoke a separate program to find out the length of the text in the given font, go to the right, and then step backwards from there?
21:10:16 <elliott> Seriously?
21:10:56 <elliott> This is complete bullshit. fizzie: Will your legal obligation continue if yousu just renders its own widgets rather than shelling out to d "sucks" zen?
21:11:17 <fizzie> IANAL.
21:13:30 <fizzie> There is that undocumented ^ba.
21:13:44 <elliott> Which does what?
21:14:05 <fizzie> You give it a width and an alignment (left/center/right), and it writes a block of that specified width, aligned that way.
21:14:31 <oerjan> `run ls /var/irclogs/_esoteric/????-??-??.txt | tail -1
21:14:39 <HackEgo> ​/var/irclogs/_esoteric/2011-12-20.txt
21:14:46 <oerjan> huh
21:14:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:15:07 * oerjan wonders what went wrong with elliott's experiments then
21:15:11 <elliott> fizzie: So again I have to psychically predict the length of the text >_<
21:15:27 <fizzie> Yes, well, you have to psychically predict an *upper bound* of the length.
21:15:30 <fizzie> That's so different.
21:15:51 <fizzie> I think it might also clip if it is longer.
21:15:56 <fizzie> Maybe.
21:16:02 <fizzie> I haven't tried.
21:16:09 <elliott> fizzie: Yes, but if the size is too big it'll push other widgets away, no?
21:16:17 <elliott> Otherwise you could just specify the screen width.
21:16:33 <fizzie> No, I really think it'll just overtype.
21:16:40 <fizzie> You can overtype with the absolute positioning just fine.
21:17:25 <elliott> fizzie: Well, right; the case is something like a clock, where the length is reasonably bounded, you just CBA to calculate the upper bound.
21:17:50 <fizzie> So maybe position x to 0, then "^ba(screenwidth,_RIGHT)foo^ba()" will put foo right-aligned; and it'll then just overlap if you happened to already write that far in the window.
21:17:55 <fizzie> Again, haven't tried.
21:18:04 * elliott loads http://hackage.haskell.org/package/X11.
21:18:06 <elliott> Purposefully.
21:18:29 <elliott> Although I suppose I could go with gtk too?
21:18:42 <elliott> fizzie now gets to tell me which of gtk and raw Xlib is superior.
21:18:55 <pikhq_> elliott: Perversely, GTK.
21:19:52 <pikhq_> Xlib actually abstracts X quite a deal. Poorly.
21:20:29 <elliott> I don't suppose this Graphics.X11.Xlib.Font stuff will work with Xft.
21:20:39 <elliott> Ah, http://hackage.haskell.org/package/X11-xft.
21:21:25 <elliott> I would use Gtk without thinking, it's just that I bet people like fizzie have these weird preferences where they prefer the widgets of their bar-thingy to look different to the widgets of their applications.
21:21:39 <zzo38> Can Xaw be used?
21:22:33 <pikhq_> zzo38: Technically yes.
21:22:35 <pikhq_> Really, no.
21:22:56 -!- augur has joined.
21:23:11 <zzo38> pikhq_: O, why is that, "Technically yes", "Really, no"
21:24:02 <pikhq_> zzo38: Xaw is comically terrible.
21:25:32 <zzo38> But, xdvi uses Xaw. Yes there are some problems with Xaw but I would like to use something very similar; mostly just by adding a few uses of addition mouse buttons and keyboard control to move the mouse cursor; it should still have hover focus for both windows and widgets but allow it to be adjusted by keyboard too.
21:25:58 <elliott> xdvi uses it, must be good.
21:26:42 <zzo38> (xdvi is a program for print preview; when at FreeGeek I use xdvi whenever I need to preview a document for printing.)
21:29:00 <elliott> fizzie: Are you ANAL enough to comment on whether using Gtk will eliminate your legal obligation(tm)?
21:29:05 * elliott will make all decisions like this in future.
21:29:31 <fizzie> I do not thing I'm going to comment anything about the "legal obligation(tm)" at all.
21:30:23 <elliott> fizzie: I guess I'll have to start dissing speech recognition, then!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:32:04 -!- Phantom_Hoover has joined.
21:33:00 <elliott> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:33:10 <zzo38> ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
21:33:36 <Ngevd> elliott is shocked at the sudden appearance of a ethereal vacuum cleaner
21:33:45 <Phantom_Hoover> ‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽‽
21:34:02 <Ngevd> Stop it all of you
21:34:16 -!- augur has quit (Remote host closed the connection).
21:34:30 <Phantom_Hoover> sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex sex
21:34:36 <Phantom_Hoover> (Optimised to annoy Ngevd.)
21:34:50 <Ngevd> GRAAAAAAAAAAH!
21:35:04 <elliott> `quote read the bible
21:35:07 <HackEgo> 487) <Taneb> So... God has jizzed on everything? <oklopol> have you even READ the bible?
21:35:24 <monqy> im anoy too ;_;
21:35:36 <Phantom_Hoover> Ngevd/monqy otp
21:35:41 <monqy> D:
21:35:49 <Ngevd> Ngenqy
21:35:58 <zzo38> s/sex/six/g
21:36:04 <monqy> thanks
21:36:11 <Phantom_Hoover> s/six/sex/g
21:36:14 <monqy> D:
21:36:15 <Ngevd> As pairings go, Ngenqy scores quite highly in scrabble
21:36:31 <Phantom_Hoover> monqy, you should let him down lightly
21:36:36 <zzo38> Why do you care? "SEX" and "SIX" are both worth the same points in Scrabble.
21:36:52 <monqy> I don't have any Es
21:37:02 <elliott> monqy is annoy because "sex" is so close to "six" and he hates six because that's how old he is True Facts(tm)
21:37:16 <monqy> I thought I was 4...............
21:37:16 <Phantom_Hoover> So... I made monqy sex years old?
21:37:22 <elliott> Yes.
21:37:25 <elliott> Yes you did.
21:37:37 <Phantom_Hoover> D:
21:37:38 <monqy> maybe that was just for days ago
21:38:36 <Ngevd> I will sleep now.
21:38:40 <Ngevd> Tomorrow I shall return.
21:38:44 <zzo38> Well, yes, which words to play in Scrabble, it depend what you have, what you think opponent have, what other words can be made from it, and so on. Only the letters are important; meanings of words is not used. But you also have to know which dictionary you are using (there are a few possible dictionaries used)
21:39:01 <oerjan> `addquote <shachaf> fizzie: What kind of speech recognition do you do? <shachaf> If you only need to recognize famous speeches, like Churchill or something, it should be pretty easy.
21:39:03 <HackEgo> 770) <shachaf> fizzie: What kind of speech recognition do you do? <shachaf> If you only need to recognize famous speeches, like Churchill or something, it should be pretty easy.
21:39:19 <Ngevd> My uncle once pencilled in "ezay" to his dictionary with the definition "word for John in Scrabble"
21:39:56 <elliott> monqy: what is it like being sex years old
21:40:01 <monqy> bad
21:40:13 <Ngevd> sexenteen is much better
21:40:14 <Phantom_Hoover> Cheating at Scrabble, the cornerstone of the van Doorn family fortune.
21:40:37 <Ngevd> Also, new esolang
21:40:50 <Ngevd> Looks...
21:40:53 <Ngevd> NOT ESOTERIC ENOUGH
21:40:57 <monqy> bedfellow free pics?
21:41:16 -!- pikhq_ has quit (Ping timeout: 252 seconds).
21:42:00 <monqy> this sqrt spec
21:42:13 <Ngevd> Also, SLEEP TIEM
21:42:14 -!- Ngevd has quit (Quit: Leaving).
21:42:15 <elliott> createWindow :: Display -> Window -> Position -> Position -> Dimension -> Dimension -> CInt -> CInt -> WindowClass -> Visual -> AttributeMask -> Ptr SetWindowAttributes -> IO Window
21:42:17 <elliott> aaaaaaaaaaaaaaaaa
21:42:21 <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21:42:25 <monqy> a
21:42:33 <Gregor> So, merging EgoBot into HackEgo.
21:42:59 <elliott> Gregor: No dooon't.
21:43:04 <elliott> I love both of them so much in their own special ways.
21:43:11 <elliott> You can merge the filesystems but keep my babies alive ;_;
21:43:29 <Gregor> ... dafuq
21:43:40 <Gregor> EgoBot doesn't even have a persistent filesystem
21:43:54 <elliott> Gregor: Well, why not?
21:44:03 <Gregor> Because that's HackEgo's job?
21:44:09 <elliott> You're the one who wants to merge them.
21:44:58 <Gregor> Exactly!
21:45:04 <elliott> Just put all the interpreters in /usr/local/bin/lang, and add /usr/local/bin/lang and /hackenv/bin/lang to EgoBot's $PATH instead of the usual directories.
21:45:10 <elliott> Then addinterp just has to put things in /hackenv/bin/lang.
21:45:27 <elliott> And HackEgo can call upon the interpreters if it wants to with just a lang/bf or whatever.
21:46:39 <Gregor> And then, I can get rid of EgoBot :)
21:46:52 <elliott> Gregor: >:(
21:46:56 <elliott> I will be exceedingly unhappy if you do that.
21:47:26 <elliott> Anyway, EgoBot commands are likely to clash with HackEgo commands, so the most you could do would be to have HackEgo respond to the ! commands. Which means your total savings are exactly one (1) IRC connection.
21:47:30 <zzo38> You could also just make them the same program, with only a single name but supporting both kind of commands.
21:49:14 <Gregor> Mostly I just want to integrate their chroots X-D
21:49:22 <Gregor> I'm running out of space and I have five chroots >_>
21:49:25 <elliott> Gregor: That's what I was telling you how to do... :P
21:50:02 <Gregor> That's what I'm /doing/.
21:50:20 <elliott> Gregor: That's not getting rid of EgoBot, that's merging the chroots and then getting rid of EgoBot.
21:50:24 <elliott> One is clean-up, the other is murder.
21:50:47 <Gregor> Yes, I switched to your plan because you're going to bitch if I merged them.
21:50:57 <elliott> Excellent!
21:51:04 <elliott> That's good, because my plan is the best.
21:51:23 <Gregor> Also it'll be easier to switch EgoBot to UMLBox this way.
21:52:06 <elliott> I don't see why EgoBot has to have a distinct codebase from HackEgo, really; just another IRC connection and a different $PATH. Same hg repo and all that.
21:52:33 <elliott> addinterp/delinterp want to mutate the filesystem, in HackEgo-speak they're just writing out a shebang and a program line to /hackenv/bin/lang/$foo :P
21:55:25 <elliott> Backup to self: http://sprunge.us/KdPO
21:55:29 <elliott> Now to try the Monster.
21:55:55 <elliott> Hmm, I'm totally not up for gtk yet, I'd have to compile it all.
21:56:06 <Gregor> "Backup to self" ... heard of VCS? >_>
21:58:22 <elliott> Gregor: Yes.
21:58:45 <elliott> Gregor: I don't start a repository until I'm over the "OK, how on earth am I going to structure this?" phase.
21:58:51 <elliott> Or every other commit would be "Rewrite completely".
21:59:38 <Gregor> I commit every sneeze to a VCS.
22:03:14 <zzo38> How often do your Haskell programs use Applicative stuff?
22:03:19 * elliott becomes incredibly anal about maintaining a clean and atomic VCS repository as soon as one exists.
22:03:43 <twice11> zzo38: Does using Monads count?
22:04:09 <zzo38> twice11: What I mean is using the Applicative stuff such as <* *> <*> and so on
22:04:53 <twice11> I can't remember when I used those last time...
22:05:51 <elliott> twice11: How do you lift functions?
22:06:05 <elliott> f `liftM` m1 `ap` m2 `ap` m3 -- yesssss
22:06:06 <twice11> classic liftMx
22:06:08 -!- pikhq has joined.
22:06:54 <twice11> That's the fate of people learning monads long before hearing of applicative.
22:07:31 <zzo38> In the dvi-processing package (not yet complete, although it does currently work), I found out I used <* and <*> and <$> a lot more than >>= and I used join sometimes too, and I made a new operator <>>= since I sometimes wanted to use that kind of things
22:08:01 <zzo38> x <>>= f = x >>= ap (<$) f;
22:08:23 <elliott> TBH I wish (<$>) and (<*>) had nicer names.
22:08:36 <elliott> (<*>) is just application, it should have some light name like (*.).
22:08:39 <zzo38> I think the names (<$>) and (<*>) are OK.
22:08:45 <elliott> f $. a *. b *. c
22:08:57 <elliott> They're just a bit too chunky.
22:09:03 <elliott> Although idiom brackets would solve that; (| f a b c |0.
22:09:04 <elliott> ).
22:09:20 <zzo38> Would you ever find the <>>= like I have written, to be useful to you?
22:09:51 <elliott> Not exactly what it does. But ap is just (<*>).
22:10:05 <elliott> x >>= ((<$) <*> f) -- all you need is a symbol for "f".
22:10:31 <zzo38> Yes I know ap is just <*>
22:11:21 <zzo38> Not exactly what it does? Can you elaborate on that please?
22:11:42 <pikhq> :t ap
22:11:42 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b
22:11:48 <pikhq> That.
22:12:06 <pikhq> It is the sane function of that type.
22:12:17 <zzo38> pikhq: Yes I know. It is the same as <*> except ap is for monads instead.
22:12:29 <oerjan> :t let x <>>= f = x >>= ap (<$) f in (<>>=)
22:12:30 <lambdabot> forall (m :: * -> *) a b. (Monad m, Functor m) => m a -> (a -> m b) -> m a
22:12:40 <zzo38> For monads I generally use ap or <*> depending on whether or not I need it infix.
22:13:51 <oerjan> elliott: hey that one fits with the (>>= (>>=)) from yesterday
22:13:57 <oerjan> :t (>>= (>>=))
22:13:58 <lambdabot> forall (m :: * -> *) a b. (Monad m) => ((a -> m b) -> m a) -> (a -> m b) -> m b
22:13:59 <zzo38> Example of use of <>>= operation: createDVI n m u = (\h -> docStat { pageHandle = Just h, magnification = m, dviUnits = u }) <$> (openBinaryFile n WriteMode <>>= flip hPutStr "\247\2" <>>= flip writeData u <>>= flip writeData m <>>= flip hPutStr "\7Haskell");
22:17:26 <twice11> so from type and usage, I infer: 'f <>>= x = do val <- x; f val >> return val'
22:18:11 <oerjan> wrong argument order, but yes
22:19:01 <elliott> zzo38: Oops, *not sure exactly
22:19:39 <zzo38> elliott: O, well now you should know isn't it?
22:19:45 <elliott> Yes.
22:21:42 -!- calamari has joined.
22:23:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:24:03 -!- augur has joined.
22:27:14 <oerjan> <elliott> Also HOW DO YOU SLEEP UNTIL THE BEGINNING
22:27:15 <zzo38> Would you ever use that kind of thing?
22:27:27 <oerjan> <elliott> OF THE NEXT MINUTE
22:27:44 <oerjan> you cannot, haskell uses type safety to ensure you always get your full 8 hours
22:29:28 -!- augur has quit (Remote host closed the connection).
22:30:14 -!- azaq23 has quit (Read error: Connection reset by peer).
22:30:23 -!- augur has joined.
22:30:26 -!- augur has quit (Remote host closed the connection).
22:33:27 <zzo38> In relation to the D&D game but outside of it, we were discussing something and thought, the executioner will wake up and might thought it must be "brain fairy" or whatever... because there is money in its place...
22:33:47 <zzo38> Can there make a magic poison that its antidote will be an empty potion?
22:36:43 <coppro> yes, it's called 'dilution'
22:37:22 <zzo38> No, I mean the container is completely empty. And that it is a D&D game.
22:46:10 -!- Phantom_Hoover has joined.
22:47:36 -!- nooga has quit (Ping timeout: 240 seconds).
22:50:09 -!- tuubow has quit (Ping timeout: 240 seconds).
22:51:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:52:13 -!- calamari has quit (Quit: Leaving).
22:59:29 -!- derdon has quit (Remote host closed the connection).
23:01:52 -!- fizzie has quit (Quit: Coyote finally caught me).
23:01:59 -!- NihilistDandy has joined.
23:07:47 -!- fungot has quit (Ping timeout: 252 seconds).
23:24:19 -!- cswords__ has joined.
23:26:49 -!- cswords_ has quit (Ping timeout: 240 seconds).
23:31:09 -!- coppro has quit (Read error: Operation timed out).
23:31:14 -!- coppro has joined.
23:35:00 -!- augur has joined.
23:36:30 <kallisti> oerjan: is there some kind of formula that can determine the maximum number of factors in a factorization for a given number?
23:37:27 <kallisti> an upper bound would be like floor . logBase 2 $ n I think
23:38:17 <oerjan> in a full prime factorization?
23:38:21 -!- augur has quit (Remote host closed the connection).
23:38:39 <oerjan> well then yes that's an upper bound, which also is hit for n = 2^i
23:38:49 <kallisti> oerjan: full factorization with any integer less than or equal to n/2
23:39:21 <kallisti> I'm finding every possible factorization for a number.
23:39:25 <oerjan> um by "full" i mean that each factor which isn't prime is split up, which means that it must be a prime factorization
23:39:42 <kallisti> well, no. erase "full"
23:39:45 <oerjan> also, the prime factorization is always the longest, that's obvious
23:39:46 <kallisti> a factorization.
23:39:52 <kallisti> right.
23:40:09 -!- clog has quit (Ping timeout: 240 seconds).
23:40:16 <oerjan> eek
23:40:26 <kallisti> oerjan: I'm thinking logBase 2 n is good?
23:40:42 <kallisti> because the longest factor list is going be a bunch of 2s
23:40:48 <kallisti> with some other number.
23:41:00 <kallisti> possibly.
23:41:30 <oerjan> each prime factor is >= 2, thus the length can never be more than that
23:42:03 <oerjan> given i factors, then n >= 2^i.
23:42:03 <kallisti> good, so that's a pretty big improvement to my current algorithm.
23:42:51 <oerjan> kallisti: suggestion, once you find a factor, divide by it and restart on the divisor from the same point.
23:43:29 <oerjan> er
23:43:31 <kallisti> awww but then I can't just replicateM :P
23:43:59 <oerjan> sucks
23:44:36 <oerjan> there are many tricks to improve factorization. and of course some insane top-notch algorithms.
23:45:13 <oerjan> also, it may be a good idea to stop when the quotient becomes smaller than the divisor.
23:46:03 <oerjan> (which means stop at sqrt n, although that's awkward to calculate exactly)
23:46:22 <kallisti> oerjan: does Haskell have an integer log?
23:46:26 <kallisti> or do I just need to floor?
23:48:15 <oerjan> i don't think so (and it doesn't have an integer sqrt either)
23:49:33 <oerjan> but this method isn't going to be able to factor anything big enough for that to really matter, i think
23:52:41 <kallisti> > let intLog2 :: Int -> Int; intLog2 = floor.logBase 2 . fromIntegral; factors n = nub . map (sort . filter (/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ [1 .. n `div` 2] in factors 40a
23:52:42 <lambdabot> Couldn't match expected type `SimpleReflect.Expr -> t'
23:52:42 <lambdabot> against infe...
23:52:45 <kallisti> > let intLog2 :: Int -> Int; intLog2 = floor.logBase 2 . fromIntegral; factors n = nub . map (sort . filter (/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ [1 .. n `div` 2] in factors 40
23:52:48 <lambdabot> [[2,20],[4,10],[5,8],[2,2,10],[2,4,5],[2,2,2,5]]
23:53:04 <kallisti> oerjan: it's definitely an improvement over my previous algorithm, which couldn't go beyond 14.
23:53:34 <oerjan> XD
23:53:42 <kallisti> on lambdabot, I mean.
23:53:52 <kallisti> obviously on ghci is could calculate further, but at O(n!)
23:54:19 <kallisti> I think this one is O(n * log n) ?? well except that nub and sort probably matter as well.
23:55:18 <elliott> try a set-based nub
23:55:40 -!- fizziew has changed nick to fizzie.
23:55:42 <oerjan> "replicateM (intLog2 n)" ? wtf that's expensive :P
23:55:55 <kallisti> yes that's the expensive part.
23:56:16 <kallisti> obviously the best way to find factors is to brute force list every possible sequence of numbers and then test which ones product to n
23:56:34 <oerjan> clearly.
23:57:19 <fizzie> Clearly anything at all sounds plausible when prefixed with "clearly".
23:57:33 <fizzie> Oh, it wasn't.
23:57:41 <fizzie> Arrrrrrr tricked.
23:57:48 <kallisti> oerjan: hmmm, I could find the list of the factors beforehand, and then use replicateM on those.
23:57:53 <kallisti> that's probably a better idea.
23:58:21 <kallisti> NEED MOAR SET MONAD
23:59:31 <kallisti> unions . map
23:59:34 <kallisti> oh, that was difficult.
2011-12-21
00:00:06 <kallisti> er, *S.map or *fmap
00:05:06 -!- nooga has joined.
00:05:31 <kallisti> ghc is doing that thing where it freezes again.
00:10:26 <kallisti> :t let (>>=) s f = S.unions (S.map f s) in (>>=)
00:10:27 <lambdabot> Couldn't match expected type `[S.Set a]'
00:10:27 <lambdabot> against inferred type `S.Set b'
00:10:27 <lambdabot> In the first argument of `S.unions', namely `(S.map f s)'
00:10:58 <kallisti> oh rite
00:11:09 <oerjan> :t S.unions
00:11:10 <lambdabot> forall a. (Ord a) => [S.Set a] -> S.Set a
00:11:21 <kallisti> not quite join :P
00:11:34 <oerjan> :t let (>>=) s f = S.unions (S.map f $ S.toList s) in (>>=)
00:11:35 <lambdabot> Couldn't match expected type `S.Set a' against inferred type `[a1]'
00:11:35 <lambdabot> In the second argument of `($)', namely `S.toList s'
00:11:35 <lambdabot> In the first argument of `S.unions', namely
00:11:41 <oerjan> oops
00:11:55 <oerjan> :t let (>>=) s f = S.unions (map f $ S.toList s) in (>>=)
00:11:56 <lambdabot> forall a a1. (Ord a1) => S.Set a -> (a -> S.Set a1) -> S.Set a1
00:12:13 <kallisti> that doesn't seem like it's going to be very efficient...
00:12:14 <kallisti> oh well.
00:12:34 <kallisti> I'll just use list and then fromList
00:13:15 <oerjan> i don't know about that. applying f is going to mess up the order regardless, so converting via list at that point won't really hurt
00:14:14 <oerjan> but using S.unions allows you to take advantage of the fact the element lists are already sorted
00:14:46 <oerjan> but if they're tiny it probably won't matter much, i think
00:25:17 <zzo38> What is your opinion of these D&D feats? http://zzo38computer.cjb.net/dnd/options/Take_21.f http://zzo38computer.cjb.net/dnd/options/Favored_Mercy.f http://zzo38computer.cjb.net/dnd/options/Slow_Blink_Spell.f
00:29:12 <NihilistDandy> What's the benefit of slow blink?
00:33:25 <zzo38> It is an idea. You could figure out uses of it, I suppose.
00:33:45 <zzo38> Like in case you want to cast a spell but not want it active all the time, and don't want to cast it many times either
00:34:13 -!- glogbackup has quit (Ping timeout: 252 seconds).
00:34:40 -!- nooga has quit (Read error: Connection reset by peer).
00:34:45 -!- nooga has joined.
00:39:16 -!- clog has joined.
00:42:16 <kallisti> :t let nub = S.toList.S.fromList; intLog2 :: Int -> Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];[x,y]}; factorize :: Int -> [Int]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:42:16 <lambdabot> Couldn't match expected type `Int' against inferred type `[Int]'
00:42:17 <lambdabot> Expected type: [Int]
00:42:17 <lambdabot> Inferred type: [[Int]]
00:42:27 <kallisti> hm
00:42:43 <kallisti> oh I see a problem. lol
00:43:22 <kallisti> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [Int]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:43:23 <lambdabot> Couldn't match expected type `Int' against inferred type `[Int]'
00:43:23 <lambdabot> Expected type: [Int]
00:43:23 <lambdabot> Inferred type: [[Int]]
00:45:50 <kallisti> oh
00:45:51 <kallisti> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:45:51 <kallisti> ..?
00:45:51 <oerjan> > "hm"
00:45:51 <kallisti> I broke lambdabot.
00:45:51 * oerjan swats kallisti -----###
00:45:51 <oerjan> BAD BOY
00:45:51 <lambdabot> Int -> [[Int]]
00:45:51 <lambdabot> "hm"
00:45:54 * kallisti isn't really sure what's wrong with the above code.
00:46:01 <kallisti> oh.
00:46:07 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 10
00:46:09 <lambdabot> [[2,5],[10]]
00:46:28 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 50
00:46:29 <lambdabot> [[2,5,5],[2,25],[5,10],[50]]
00:46:33 <kallisti> awww yeah
00:46:37 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 500
00:46:42 <lambdabot> mueval: ExitFailure 1
00:46:43 <kallisti> ...no
00:46:43 <lambdabot> mueval: Prelude.undefined
00:46:53 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 125
00:46:57 <lambdabot> mueval-core: Time limit exceeded
00:47:12 <kallisti> yeah..
00:47:18 -!- nooga has quit (Ping timeout: 252 seconds).
00:48:20 <kallisti> strangely my bot's mueval is complaining about the use of arithmetic sequences.
00:48:26 <kallisti> for some reason it thinks n is [Int]
00:49:17 <kallisti> or rather it expects n to be [Int] but infers Int, and also complains about a lack of an Enum instance for [Int]
00:51:07 <oerjan> strange lambdabot instance interfering?
00:54:24 <oerjan> kallisti: oh yes, it's the map (sort.filter(/=1))
00:54:34 <oerjan> the 1 there is compared with a list
00:54:49 <oerjan> or wait
00:55:01 <oerjan> that can't be right
00:55:41 <oerjan> :t map (sort.filter(/=(1::Int)) . filter ((==(n::Int)).product)
00:55:43 <lambdabot> parse error (possibly incorrect indentation)
00:55:54 <zzo38> What did you think about the other two feats?
00:56:06 <oerjan> :t map (sort.filter(/=(1::Int))) . filter ((==(n::Int)).product)
00:56:07 <lambdabot> Couldn't match expected type `Int' against inferred type `Expr'
00:56:07 <lambdabot> In the second argument of `(==)', namely `(n :: Int)'
00:56:08 <lambdabot> In the first argument of `(.)', namely `(== (n :: Int))'
00:56:17 <oerjan> :t map (sort.filter(/=(1::Int))) . filter ((==(?n::Int)).product)
00:56:17 <lambdabot> (?n::Int) => [[Int]] -> [[Int]]
00:57:23 <kallisti> oerjan: it's complaining about the 1 in [1..n]
00:57:28 <kallisti> because there's no Enum instance for [Int]
00:57:31 <kallisti> or something.
00:58:16 <oerjan> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors :: Int -> [Int]; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]} in factors
00:58:17 <lambdabot> Int -> [Int]
00:59:32 <oerjan> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors :: Int -> [Int]; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 12
00:59:33 <lambdabot> [[Int]]
00:59:37 -!- elliott has quit (Read error: Operation timed out).
00:59:50 <kallisti> my bot is inferring that factors should be [Int] -> [[Int]] or something I think.
00:59:53 <oerjan> kallisti: i don't think you can be testing the same function?
01:00:02 <oerjan> kallisti: well add a type annotation
01:00:07 <kallisti> I did
01:00:10 <kallisti> that's the error I get
01:00:20 <kallisti> expected Int, inferred [Int]
01:00:22 <oerjan> well then paste what you gave your bot
01:00:38 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors::Int->[Int];factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 125
01:00:40 <lambdabot> [[5,5,5],[5,25],[125]]
01:01:51 <zzo38> You can make a monad from Monoid (the (,) monad or Writer monad), but are there other transformers or monads that can be made from using types from other classes? I know you can make a monad transformer from a comonad is one thing too.
01:02:08 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors::Int->[Int];factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 200
01:02:12 <lambdabot> mueval-core: Time limit exceeded
01:02:15 <kallisti> nooooo
01:04:41 <kallisti> ghc --version
01:04:41 <kallisti> The Glorious Glasgow Haskell Compilation System, version 6.12.3
01:04:49 <kallisti> oerjan: weirdness in old ghc?
01:06:18 * kallisti installs newest ghc and tries.
01:06:37 <kallisti> oh god 6 minute download for the binary tarball.
01:06:41 <kallisti> 6. MINUTES.
01:07:08 <kallisti> > 109 / (6*60)
01:07:09 <lambdabot> 0.30277777777777776
01:07:22 <kallisti> my download rate is off the charts. 0.3 KB/s
01:07:26 <kallisti> er
01:07:29 <kallisti> my download rate is off the charts. 0.3 MB/s
01:15:46 <oerjan> kallisti: oh! give nub a type annotation, it may be hit by the monomorphism restriction.
01:16:18 <oerjan> which may be toggled off in lambdabot
01:20:01 <kallisti> ah
01:20:06 <kallisti> or
01:20:10 <kallisti> I could turn it on in my bot.
01:23:03 * oerjan almost missed SQRT due to all the spam
01:25:41 <oerjan> it doesn't even have a square root operation.
01:43:17 <itidus21> hm..
01:49:19 <Gregor> <kallisti> my download rate is off the charts. 0.3 KB/s // so, off the lower end of the charts then?
01:50:31 <kallisti> yes.
01:50:47 <kallisti> keen observation, Roger.
01:54:41 -!- NihilistDandy has quit (Quit: http://haskell.org).
01:55:01 <kallisti> oerjan: hello, make this look nicer while also making it more or equally efficient. http://sprunge.us/CcNT
01:59:19 <oerjan> should i make it correct at the same time?
01:59:25 <kallisti> yes.
01:59:28 <kallisti> is that not correct?
01:59:44 <oerjan> ...it doesn't even type.
02:00:20 <kallisti> oh I wrote in lambdabotese and then converted it to guards and such so there's probably a mistake
02:01:23 <kallisti> http://sprunge.us/HNDT
02:01:25 <kallisti> this one
02:01:31 <kallisti> complains about a lack of main
02:01:37 <kallisti> so I take that to mean it's absolutely correct.
02:02:55 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 30
02:02:56 <lambdabot> []
02:02:59 <oerjan> oops
02:03:13 <kallisti> ah good old divmod
02:03:28 <oerjan> oh
02:03:38 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 30
02:03:39 <lambdabot> [2,3,5]
02:03:47 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 12
02:03:48 <lambdabot> [2,2,3]
02:04:30 <oerjan> hm...
02:05:42 <kallisti> yeah this algorithm may just be broken.
02:06:00 <oerjan> erm what's wrong with it?
02:06:14 <kallisti> well those aren't all the factors of 4. I don't want only primes.
02:06:31 <oerjan> sheesh.
02:06:34 <kallisti> lol
02:07:10 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 12
02:07:11 <lambdabot> [2,2,3]
02:08:20 <kallisti> if you include both n and i in the output that works but you get a lot of duplicates
02:08:23 <kallisti> which is okay I guess.
02:08:41 <kallisti> though I feel you could probably reduce the number of steps somewhere?
02:09:27 <oerjan> > let primeFactors n = f' n 2 where f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 12
02:09:28 <lambdabot> Not in scope: `factors'
02:09:34 <kallisti> lol
02:09:38 <kallisti> NO DON'T DO IT
02:09:40 <kallisti> NO POWERSETS
02:09:45 <kallisti> eeeevil
02:09:49 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 12
02:09:51 <lambdabot> [12,4,6,2,6,2,3,1]
02:10:03 <kallisti> try it out on a big number
02:10:13 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 3600
02:10:14 <lambdabot> [3600,720,720,144,1200,240,240,48,1200,240,240,48,400,80,80,16,1800,360,360...
02:10:18 <kallisti> THAT'S NOT VERY BIG
02:10:28 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 86400
02:10:29 <lambdabot> [86400,17280,17280,3456,28800,5760,5760,1152,28800,5760,5760,1152,9600,1920...
02:10:36 <kallisti> FINE
02:10:41 <kallisti> BIG ENOUGH
02:10:56 * oerjan whistles innocently
02:12:30 <kallisti> I guess I could just construct a set.
02:12:33 <kallisti> to avoid duplicates
02:13:34 <kallisti> :t singleton
02:13:35 <lambdabot> Not in scope: `singleton'
02:15:28 <kallisti> oerjan: why fmap product?
02:15:38 <kallisti> are you a map hater?
02:16:08 <oerjan> i started with <$> and sort of converted automatically
02:16:18 <kallisti> ah
02:19:45 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 86400
02:19:47 <lambdabot> [Product {getProduct = 1},Product {getProduct = 5},Product {getProduct = 25...
02:20:06 <kallisti> is this more efficient or are you just fucking around with abstractness
02:20:08 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map getProduct . execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 86400
02:20:09 <lambdabot> [1,5,25,3,15,75,9,45,225,27,135,675,2,10,50,6,30,150,18,90,450,54,270,1350,...
02:20:26 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map getProduct . execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 60
02:20:27 <lambdabot> [1,5,3,15,2,10,6,30,4,20,12,60]
02:21:18 <oerjan> well it avoids duplication
02:21:35 <kallisti> oerjan: I just switched the code to a set.
02:22:00 <oerjan> that doesn't prevent duplicated _work_
02:22:26 <oerjan> and also, of course i'm fucking around
02:24:39 <kallisti> :t printLn
02:24:40 <lambdabot> Not in scope: `printLn'
02:25:17 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) . iterate (head g *) 1)) . group . primeFactors in factors 60
02:25:18 <lambdabot> <no location info>: parse error on input `)'
02:25:31 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) . iterate (head g *) 1) . group . primeFactors in factors 60
02:25:31 <lambdabot> No instance for (GHC.Real.Integral [a])
02:25:32 <lambdabot> arising from a use of `e_1210111...
02:25:35 <oerjan> argh
02:25:50 <kallisti> :t words
02:25:51 <lambdabot> String -> [String]
02:26:29 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) $ iterate (head g *) 1) . group . primeFactors in factors 60
02:26:30 <lambdabot> [1,5,3,15,2,10,6,30,4,20,12,60]
02:26:39 <oerjan> slightly less fucking
02:26:51 <kallisti> main = mapM print $ map (factors.read) . words <$> getContents
02:26:53 <kallisti> what's wrong with this.
02:27:04 <oerjan> first, use mapM_
02:27:13 <kallisti> okay. done.
02:27:15 <kallisti> now what?
02:27:50 <oerjan> secondly, erm
02:28:07 <kallisti> expected type: [String] inferred type: IO String
02:28:23 <oerjan> main = mapM_ (print . factors . read) . words =<< getContents
02:28:29 <kallisti> ah
02:29:09 <Sgeo> What was wrong with the former is that the stuff after the $ is IO
02:29:18 <oerjan> yes
02:29:21 <kallisti> much better
02:29:32 <kallisti> :t mapM
02:29:36 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
02:29:36 <Sgeo> I guess you could use <$> instead of $ and join the whole thing
02:29:44 <kallisti> oh right.
02:30:17 <Sgeo> Wait, not quite
02:30:22 <Sgeo> I think you'd have to return print
02:30:27 <Sgeo> n/m
02:30:39 <Sgeo> (n/m the return print I mean)
02:30:53 <Sgeo> I guess I'm trying to envision doing things I'd do in imperative languages in Haskell
02:32:23 -!- Vorpal has joined.
02:32:55 <oerjan> :t mapM print . map (?factors.read) . words =<< getContents -- more similar
02:32:56 <lambdabot> forall a a1. (Show a, ?factors::a1 -> a, Read a1) => IO [()]
02:34:47 <Vorpal> hi
02:35:42 <kallisti> oerjan: huh for some reason my code doesn't include the number itself in the list, but does include 1.
02:35:53 <kallisti> but I think it's the same thing as what you did.
02:36:37 <oerjan> something off by one :P
02:36:40 <kallisti> 50
02:36:41 <kallisti> [10,2,5,1]
02:36:41 <kallisti> 20
02:36:41 <kallisti> [10,2,5,1]
02:36:42 <kallisti> also whut
02:37:09 <kallisti> http://sprunge.us/iNOD
02:37:13 <kallisti> iNOD
02:37:27 <oerjan> kallisti: i included both, of course
02:37:43 <kallisti> yes
02:38:32 <oerjan> kallisti: um mine depends critically on primes that divide more than once appearing more than once
02:38:57 <kallisti> oh.
02:39:06 <kallisti> right
02:39:09 <kallisti> I see. that.
02:39:18 <oerjan> 50 and 20 both have the same prime factors as 10, but only 10 has them only once each
02:39:32 <kallisti> yes
02:40:13 <oerjan> that group thing and stuff was to collect the equal ones together
02:41:00 <oerjan> to avoid extra work
02:41:12 -!- nooga has joined.
02:42:01 <oerjan> e.g. if you take subsets of [2,2] and multiply you get 1,2,2,4 as factors with duplication
02:42:16 <kallisti> yes I see how it works.
02:48:19 <kallisti> I'm thinking nub might actually be a faster than toList . fromList ???
02:48:27 <kallisti> nothing rigorously tested.
02:51:50 -!- variable has quit (Excess Flood).
02:53:01 -!- Guest72104 has joined.
02:55:07 <Sgeo> kallisti, did you see update?
02:55:12 <Sgeo> I know I'm late in telling ypou
02:55:13 <Sgeo> ytoyu
02:55:14 <Sgeo> you
02:56:30 <Vorpal> god damn, opened witcher 2 again, and it just looks so awesome
02:57:41 -!- nooga has quit (Ping timeout: 252 seconds).
02:57:47 <kallisti> Sgeo: I think so
02:57:57 -!- Guest72104 has quit (Changing host).
02:57:58 -!- Guest72104 has joined.
02:58:08 <kallisti> oerjan: what's the option to output intermediate C files?
02:58:53 -!- Guest72104 has changed nick to variable.
03:05:08 <oerjan> kallisti: i dunno, look in the ghc manual
03:05:22 <oerjan> also, you don't need nub with my solution.
03:05:38 -!- NihilistDandy has joined.
03:06:00 <oerjan> and i would think anything with Sets is going to be slower on small data
03:06:52 <oerjan> nub is O(n^2) i think, while toList . fromList is O(n log n)
03:07:40 <Vorpal> :t nu b
03:07:41 <lambdabot> Not in scope: `nu'
03:07:42 <Vorpal> :t nub
03:07:43 <lambdabot> forall a. (Eq a) => [a] -> [a]
03:07:45 <Vorpal> hm
03:08:36 <monqy> I also remember some other weird way like map head . group . sort
03:09:37 <oerjan> yes, that should be O(n log n) too
03:27:18 <kallisti> $ ghc
03:27:18 <kallisti> bash: /usr/bin/ghc: No such file or directory
03:27:24 <kallisti> which ghc
03:27:24 <kallisti> /usr/local/bin/ghc
03:27:25 <kallisti> wat
03:27:41 <oerjan> fancy
03:27:48 <kallisti> apparently I need to reset my terminals or something?
03:28:39 <oerjan> i vaguely recall rehash being the command in one shell
03:29:15 <oerjan> sadly seems to be tcsh only
03:30:27 <kallisti> oerjan: can I tell ghc not to litter my directory with intermediate files?
03:30:40 <kallisti> it's rather rude.
03:30:57 <oerjan> hash -r for bash, i think
03:31:09 <oerjan> kallisti: i dunno, check the documentation
03:31:15 <kallisti> I tried. ;_;
03:31:17 <kallisti> so much stuff.
03:31:43 * oerjan rarely uses ghc from the command line. as in, possibly only once.
03:32:17 <oerjan> s/i think/it seems from help hash/
03:33:00 <oerjan> kallisti: it does use some of them for incremental compilation, i should think
03:34:21 <NihilistDandy> kallisti: It's pretty easy to tell it to litter it with *more* intermediate files, though
03:35:24 <kallisti> indeed
03:35:39 <kallisti> oerjan: still it could be courteous and remove them when it's done.
03:36:13 -!- nooga has joined.
03:36:15 <NihilistDandy> I guess you could write a little script to get rid of them when it finishes compiling and then alias ghc to that script
03:36:23 <Gregor> Ahhhhh, the reason why no Cygwin shells spawn properly is that you can't make sure to close the wrong end of the pipe thru Cygwin's rather-weak spawn function :(
03:40:35 -!- nooga has quit (Ping timeout: 248 seconds).
03:45:40 <oerjan> kallisti: erm incremental compilation means that it keeps them around so it _doesn't_ have to recompile the parts that haven't changed.
03:45:51 <kallisti> oh..
03:46:04 <kallisti> yes that makes sense for large programs.
03:46:58 <oerjan> i'd assume ghc --make depends on it
03:48:22 <pikhq> Gregor: You mean Win32 spawn, not POSIX posix_spawn?
03:58:10 <zzo38> What are laws for Arrow class?
03:58:47 <kallisti> mueval-core: GhcException "can't find a package database at /usr/lib/ghc-6.12.3/package.conf.d"
03:58:50 <kallisti> uh oh
03:59:54 <kallisti> I wonder how I fix this..
04:00:11 <kallisti> I guess mueval doesn't work with the new ghc?
04:01:34 <kallisti> how do I magically point everything to the new ghc???
04:02:48 <kallisti> Build failure ghc-7.0 (log)
04:02:48 <kallisti> ah
04:03:06 <kallisti> so I need to keep ghc6 around.
04:04:54 * Gregor reappears.
04:05:06 <Gregor> pikhq: I mean Cygwin spawn{v,vp,vpe,etc}
04:05:18 <Gregor> pikhq: Which is neither Win32 nor POSIX's spawn >_<
04:05:24 <oerjan> zzo38: there's a list in http://cdsmith.wordpress.com/2011/07/30/arrow-category-applicative-part-i/ NOTE I GOT A VIRUS WARNING SIMULTANEOSLY AS I OPENED IT
04:05:26 <Gregor> (To be fair, I'm pretty sure it predates posix_spawn)
04:05:30 <oerjan> *OUSLY
04:05:36 <pikhq> Gregor: Those are Win32.
04:06:45 <zzo38> oerjan: I turned off scripts, plugins, images, subdocument, etc in case that help
04:07:18 <oerjan> zzo38: i'm not absolutely sure that page was the culprit (i've visited it before without incident)
04:07:37 <Gregor> pikhq: Those functions exist in Win32, but these are Cygwin implementations, they do things that the Win32 ones don't (such as preserve Cygwin-specific fd state)
04:08:30 * oerjan starts a full virus scan just in case
04:13:37 -!- MDude has changed nick to MSleep.
04:14:33 <oerjan> zzo38: the virus file was .js so i think turning off scripts should do it
04:15:22 <oerjan> (note: depending on me for security advice may be unwise.)
04:19:46 <zzo38> I did turn off scripts.
04:40:00 -!- tuubow has joined.
05:00:57 <Slereah> http://esolangs.org/wiki/Big_Tits_Free_Clips_Daily
05:01:01 <Slereah> Is this an esolang?
05:01:13 <Slereah> 4 files - bigtits movies .. Daily breast, free daily trumpets, large breasts every day.
05:01:17 <NihilistDandy> Best esolang
05:01:21 <Slereah> Those seem like interesting libraries
05:01:22 <NihilistDandy> *Breast
05:03:42 <oerjan> it's where we keep abreast of new development
05:04:45 <NihilistDandy> http://instantrimshot.com/
05:05:53 <NihilistDandy> What really caught my eye were the free online breakdancing tips
05:10:09 -!- tuubow has quit (Ping timeout: 240 seconds).
05:12:07 <pikhq> Why, in awk, does "\r\n" produce the string you expect, but /\r\n/ not match the same?
05:12:19 <Sgeo> What's with the link to WIkipedia?
05:12:33 <NihilistDandy> That's where you go for the breast breasts
05:14:08 -!- augur has joined.
05:23:09 -!- tuubow has joined.
05:25:57 -!- variable has quit (Excess Flood).
05:27:31 -!- Guest33314 has joined.
05:36:45 <kallisti> so wait..
05:36:51 <kallisti> mutable unboxed arrays can't have unboxed elements?
05:37:50 <oerjan> um, yes?
05:38:02 <kallisti> oh, okay.
05:38:02 <oerjan> isn't that precisely what unboxed array means
05:38:28 <kallisti> http://hackage.haskell.org/packages/archive/array/0.1.0.0/doc/html/Data-Array-IO.html
05:38:36 <kallisti> the element type of the array. Only certain element types are supported: see Data.Array.MArray for a list of instances.
05:38:47 <kallisti> none of the types are unboxed. I'm guessing it does it automatically or something?
05:39:07 <oerjan> oh right
05:39:15 <pikhq> echo -n "GET /gnu/gcc/gcc-4.6.2/gcc-4.6.2.tar.bz2 HTTP/1.0\r\nHost: ftp.gnu.org\r\n\r\n" | nc ftp.gnu.org 80 | awk 'BEGIN {count=0;RS="\r\n";ORS="\r\n";};{if(count!=0)print};/^$/{if(count!=1)count=1}'>gcc-4.6.2.tar.bz2
05:39:20 <pikhq> Best way of downloading GCC?
05:42:02 <oerjan> kallisti: i suspect class methods cannot take unboxed types
05:42:14 <Gregor> pikhq: O_O
05:42:56 <oerjan> or mostly, i think overloaded functions cannot
05:43:04 <oerjan> or polymorphic
05:43:40 <oerjan> because each unboxed type essentially comes with its own calling convention
05:43:51 <oerjan> (for passing it)
05:44:45 <pikhq> Gregor: :)
05:47:11 <Gregor> pikhq: Here's an alternative suggestion: wget
05:48:37 <NihilistDandy> http://www.losethos.com/
05:50:04 <monqy> ahh, losethos
05:50:47 <monqy> christmas special? nice
05:53:58 <zzo38> I made a ReadthisT monad transformer to allow a monad to read itself, but is there a way to make a transformer to make a monad write itself?
05:57:46 <pikhq> Gregor: I find my solution vastly more entertaining.
05:57:58 <pikhq> Also inferior in nearly every way, but nevertheless.
05:59:11 <oerjan> zzo38: doesn't join make that sort of redundant?
05:59:53 -!- Klisz has joined.
06:00:38 <oerjan> and what about comonads, do they support either
06:02:45 <zzo38> I don't know with comonads. But the definition is newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; and you can make (ReadthisT ((,) (Last a))) similar to a state monad
06:03:03 <zzo38> I don't know if I explain it very well
06:04:06 <kallisti> oerjan: http://sprunge.us/AMae
06:04:45 <kallisti> this finds all factors with no duplicates, and runs on my machine with those test cases in 3.7 secs (optimization level 2, LLVM backend)
06:05:29 <kallisti> I wasn't actually sure if those strictness annotations are helping, but with some simple profiling via bash's time it seems to help.
06:06:10 <zzo38> But, in this case it would define: get = ReadthisT $ \(Last (Just x), _) -> (Last Nothing, x); put x = ReadthisT $ const (Last $ Just x, ());
06:06:35 <oerjan> kallisti: have you tested it with square integers?
06:06:45 <kallisti> oerjan: oh, no.
06:07:13 <oerjan> i suspect that will miss the square root
06:07:17 <zzo38> oerjan: Can you understand what I am meaning, now?
06:07:40 <kallisti> oerjan: apparently 4 is a prime number.
06:08:00 <oerjan> kallisti: thought so :P
06:08:10 <kallisti> oerjan: we should publish a paper showing our findings.
06:08:30 <kallisti> so..... i > intSqrt n maybe?
06:08:50 <oerjan> kallisti: that will probably give the square root _twice_
06:09:00 <kallisti> oh indeed
06:09:05 <kallisti> I just need to special case it then.
06:10:32 <kallisti> oerjan: what's the easiest way to add a guard "under" an existing guard.
06:10:54 <kallisti> like "if this guard is true, check these two guards"
06:11:29 <oerjan> kallisti: case, i think
06:12:07 <oerjan> case compare i (sqrtInt n) of ... might be useful here
06:12:14 <oerjan> *intSqrt
06:12:25 <kallisti> I think I just want equality.
06:12:41 <kallisti> oh hmmm
06:12:44 <kallisti> compare could be useful yes.
06:13:12 <oerjan> zzo38: i think so
06:14:36 <kallisti> so each case can have any number of guards, yes?
06:14:50 <oerjan> each case pattern, yes
06:15:00 <kallisti> right
06:15:05 <oerjan> as well as a where clause, if you like
06:17:49 -!- Vorpal has quit (Ping timeout: 240 seconds).
06:18:40 <kallisti> hmmm I think a case () of _ will be better
06:18:58 <oerjan> bah they're so ugly :P
06:19:00 <kallisti> I end up repeating myself in the EQ and LT cases.
06:19:11 <kallisti> oerjan: PETITION FOR NESTED GUARDS KTHX
06:19:25 <oerjan> kallisti: you could also define a helper function
06:19:51 <kallisti> I guess I could use a where clause to reduce the amount of repetition.
06:21:09 <kallisti> oerjan: http://sprunge.us/OKTY
06:21:14 <kallisti> this doesn't look too bad does it?
06:22:11 <kallisti> hmmm I'm up to 4 seconds now though. :(
06:22:12 <oerjan> kallisti: honestly if then else would look nicer than that
06:22:42 <zzo38> WriterT make a monad transformer from a Monoid, and there is also a way to make monad transformer from a Comonad; is there a way to make a monad transformer with other classes such as Category and so on?
06:23:20 <Sgeo> pikhq, are you unable to obtain wget?
06:23:22 <Sgeo> Or curl?
06:23:52 <kallisti> oerjan: so what happens if all the guards fail in a case?
06:23:56 <kallisti> and there's a _ case below it?
06:24:00 <kallisti> does it fall through to that?
06:24:07 <Sgeo> a _ case?
06:24:18 <Sgeo> Oh, pattern matching
06:24:22 <kallisti> case expr of {blah -> blah; _ -> blah}
06:24:33 <zzo38> Although I suppose with Category you could make the monoid of endomorphisms, but are there others?
06:24:37 <Sgeo> Oh, I see what you mean
06:24:39 <Sgeo> I think
06:24:42 <oerjan> kallisti: yes it falls through
06:24:47 <kallisti> yessss
06:25:06 <Sgeo> > case () of { () | False -> 'a'; _ -> 'b' }
06:25:07 <lambdabot> 'b'
06:25:13 <Sgeo> Like that?
06:26:04 <Sgeo> I had to stop myself from writing = instead of ->
06:27:06 <kallisti> yes
06:27:14 <kallisti> that's perfect.
06:27:42 <kallisti> awww but it's way slower now.
06:27:48 <zzo38> (I don't mean other monoids, I mean other monad transformers)
06:28:02 <kallisti> 4.7 seconds.
06:29:36 <oklopol> monoids!
06:29:42 <zzo38> It might be much faster when compiled instead of interpreted? I don't really know exactly what optimizations are done and that stuff. But an interpreted Haskell program is certainly going to be slow.
06:30:48 <kallisti> also removing the strictness annotations from the results of divMod actually increases the speed somewhat because in the vast majority of cases they're never needed.
06:31:10 <kallisti> and I'm pretty sure strictness on the accumulated list is actually slower for some reason.
06:31:36 <kallisti> but compare seems pretty slow. or maybe it's case? or maybe GHC can't optimize something now? I have no idea.
06:33:19 <kallisti> http://sprunge.us/LXMC
06:33:20 <kallisti> source
06:33:26 <kallisti> !n is probably pointless
06:35:28 <oerjan> i and n should be found by ghc's strictness analyzer
06:36:32 <kallisti> what effect would !ls have?
06:36:51 <oerjan> kallisti: erm you realize there's no reason to recurse after an EQ?
06:37:00 <kallisti> no I didn't.
06:37:11 <kallisti> but... thinking about various cases, none of them seem to have factors lower than that.
06:37:36 <oerjan> because the next step will always hit GT
06:37:50 <kallisti> oh, yes.
06:38:12 <pikhq> Sgeo: No, just enjoying myself.
06:38:21 <kallisti> YESSSS. ONE FUNCTION CALL REMOVED.
06:38:23 <kallisti> so much faster.
06:38:30 <kallisti> but yeah !ls seems to make the program marginally slower.
06:38:50 <kallisti> granted time is not a very good way to gauge these things.
06:40:04 <oerjan> btw you might consider case (compare i (intSqrt n), m == 0) of, although i don't know how it would affect performance
06:42:13 <oerjan> kallisti: !ls ought to be useless since all recursion is done with an explicit : constructor; i don't think they become thunks.
06:42:37 <oerjan> just a hunch
06:42:40 <kallisti> um my case no longer seems to work correctly.
06:42:53 <kallisti> (GT,_) -> ls
06:42:53 <kallisti> (EQ,True) -> i:ls
06:42:54 <kallisti> (_,True) -> factors' n (i+1) (i:d:ls)
06:42:55 <kallisti> (_,False) -> factors' n (i+1) (i:d:ls)
06:42:58 <kallisti> am I forgetting something?
06:43:22 <oerjan> (EQ,False)
06:43:57 <oerjan> er
06:44:07 <kallisti> that's functionally equivalent
06:44:11 <oerjan> your (_,False) is a copy of (_,True)
06:44:28 <kallisti> .....what?
06:44:38 <oerjan> the last line is wrong
06:44:42 <kallisti> oh....
06:44:42 <kallisti> lol
06:44:42 <Sgeo> kallisti, you have the same code for both
06:44:44 <kallisti> OOPS
06:45:24 <kallisti> I'm thinking the tuple unpacking is going to be marginally slower.
06:45:28 <kallisti> it seems to be almost the same.
06:45:49 <oerjan> how are you compiling this
06:45:50 <kallisti> reasoning about performance in Haskell is hard, guys.
06:46:02 <kallisti> ghc -O2 -fllvm -XBangPatterns -o factors factors.hs
06:46:10 <kallisti> bang patterns are no longer needed.
06:46:18 <Sgeo> Shouldn't -XBangPatterns be in a language pragma?
06:46:25 <oerjan> ideally
06:46:48 <kallisti> yeah maybe when I write Factors: The Hackage Module
06:46:53 <kallisti> I'll take that into consideration
06:47:12 <Sgeo> It's two seconds to go from one to the other
06:47:22 <Sgeo> And it means you don't have to remember as much of that command line
06:48:51 <kallisti> back down to 4.4 seconds with http://sprunge.us/hGdF
06:48:57 <kallisti> Sgeo: LATER
06:50:20 <oerjan> kallisti: oh hm consider putting intSqrt n in a variable outside factor'
06:50:44 <oerjan> not to mention factor' doesn't need to take n as argument
06:50:59 <oerjan> er, *factors'
06:52:07 <oerjan> the way it's written now it may have to recalculate intSqrt n all the time
06:52:14 <kallisti> oerjan: I had thought of that actually
06:52:25 <kallisti> but thought maybe GHC was smart and would catch it?
06:52:26 <kallisti> somehow?
06:52:30 <kallisti> dunno I'll try it.
06:53:01 <oerjan> kallisti: i think it's too complicated to expect ghc to notice n is the same in all calls _and_ use that to calculate intSqrt n only once
06:53:28 <kallisti> real0m3.242s
06:53:28 <kallisti> user0m3.210s
06:53:30 <kallisti> awwww yeah
06:53:57 <kallisti> that was like 1.25 seconds of just square roots apparently.
06:53:59 <oerjan> i'm slightly disappointed it didn't help even more :P
06:54:32 <kallisti> oerjan: this is what I was considering using an unboxed mutable array
06:54:38 <kallisti> you know, just to see if it had any benefits.
06:55:35 <kallisti> I think making m strict /might/ be a bit faster. because it's evaluated in the fast majority of cases.
06:55:39 <oerjan> kallisti: another thing, you are probably defaulting to Integer in all this, or even compiling an overloaded function. a type annotation with Int may make it faster.
06:55:48 <kallisti> oerjan: ah, yes.
06:56:00 <Sgeo> > maxBound :: Int + 1
06:56:01 <lambdabot> Could not deduce (GHC.Enum.Bounded
06:56:01 <lambdabot> ((+) GHC.Types.Int ...
06:56:09 <kallisti> that looks like....
06:56:11 <Sgeo> > maxBound :: Int + 1::Int
06:56:12 <lambdabot> <no location info>: parse error on input `::'
06:56:15 <kallisti> ....h
06:56:16 <kallisti> uh
06:56:22 <kallisti> Sgeo: what do you expect maxBound+1 to be
06:56:25 <Sgeo> > (maxBound::Int) + (1::Int)
06:56:26 <lambdabot> -9223372036854775808
06:56:31 <kallisti> oh, that.
06:56:32 <Sgeo> kallisti, break in an interesting way
06:56:36 <Sgeo> Not compile error
06:56:48 <kallisti> oerjan: default Num Int right?
06:56:49 <oerjan> :t ?x :: Int + 1
06:56:50 <lambdabot> Could not deduce (?x::(+) Int Unit) from the context ()
06:56:50 <lambdabot> arising from a use of implicit parameter `?x'
06:56:50 <lambdabot> at <interactive>:1:0-1
06:57:07 <kallisti> er no, what do defaults look like?
06:57:14 <Sgeo> I would _not_ expect the compiler to know that I'm adding 1 to maxBound
06:57:15 <oerjan> kallisti: no, use a type annotation on factor
06:57:24 <kallisti> oh okay that works.
06:57:34 <oerjan> otherwise it might still compile that overloaded
06:57:43 <Sgeo> > text [maxBound::Char]
06:57:43 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
06:57:47 <kallisti> oerjan: I'm going to put it on factor' because it has more stuff.
06:57:50 <oerjan> well it might specialize anyhow though
06:58:02 <Sgeo> Invalid or incomplete...?
06:58:03 <Sgeo> What?
06:58:06 <Sgeo> Don't leave me hanging
06:58:27 <kallisti> real0m1.397s
06:58:28 <kallisti> user0m1.390s
06:58:30 <kallisti> yessssssss
06:58:36 <oerjan> Sgeo: lambdabot gives longer error messages in privmsg
06:58:54 <Sgeo> oerjan, ty
06:59:03 <Sgeo> <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete multibyte or wide character)
06:59:10 <kallisti> oerjan: ah yes making n Int would force pretty much everything else to be Int too
06:59:11 <NihilistDandy> > let y = (let x = 4 in (x + y)) in (x+y)
06:59:12 <lambdabot> x + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (...
07:00:05 <kallisti> oerjan: what do you think about making m strict?
07:00:11 <oerjan> Sgeo: in your Int + 1, 1 was interpreted as a special ghc type
07:00:12 <kallisti> does that force d to be strict as well? how does divMod work?
07:00:15 <kallisti> @src divMod
07:00:15 <lambdabot> Source not found. I am sorry.
07:00:26 <NihilistDandy> @hoogle divMod
07:00:26 <lambdabot> Prelude divMod :: Integral a => a -> a -> (a, a)
07:00:26 <lambdabot> Data.Fixed divMod' :: (Real a, Integral b) => a -> a -> (b, a)
07:01:34 <NihilistDandy> Looks like it works as expected
07:01:47 <kallisti> NihilistDandy: that's not what I meant.
07:01:58 <NihilistDandy> _-_
07:02:23 <oerjan> kallisti: as you say, it's probably evaluated in the majority of cases.
07:02:52 <kallisti> oerjan: all but one, in fact.
07:02:56 <oerjan> kallisti: and i guess making d strict as well won't hurt since divMod calculates both simultaneously
07:03:14 <oerjan> or should, anyway, since that can be done more efficiently
07:03:49 <NihilistDandy> Isn't quotRem faster than divMod?
07:04:10 <oerjan> oh that may be true too, try that
07:04:11 <kallisti> so far I have just !m because I'm not sure if that forces d to be computed as well.
07:04:15 <kallisti> I think it would though
07:04:17 <oerjan> on x86 it supposedly is
07:04:52 <kallisti> but if evaluating m also forces the division operation then it doesn't matter at all that d doesn't appear in the majority cases
07:04:55 <kallisti> because m does.
07:05:53 <NihilistDandy> oerjan: I have no idea where I even heard that. I think they discussed it once in #haskell ages ago, but I've never actually had a moment to test the idea
07:07:02 <oerjan> NihilistDandy: it's because the machine code operations are like quot and rem
07:07:20 <NihilistDandy> Ah
07:08:26 <kallisti> http://sprunge.us/hcLd I think this is the best I can do without completely rewriting it with unboxed types or something.
07:09:43 <kallisti> oh wait
07:09:43 <oerjan> kallisti: you don't need n as an argument of factors', i said :P
07:09:44 <fizzie> Not bothering to read all context; but x86 only has a "div" opcode, which always computes both the quot and rem.
07:09:49 <kallisti> oerjan: oh rite.
07:10:10 <kallisti> oerjan: also rearranging the cases so that the most common one is first
07:10:15 <kallisti> will be faster.
07:11:29 <kallisti> actually that didn't seem to help much at all.
07:11:38 <kallisti> removing the n or rearranging cases.
07:12:08 <oerjan> kallisti: basic pattern matching on constructors like GT and EQ is something ghc rearranges at will, i think
07:12:47 <kallisti> oh.
07:12:48 <NihilistDandy> Using quotRem reduced time by about .3 second, but I don't know if that's significant to you, or even likely to be the case on your arch
07:13:23 <kallisti> oerjan: putting the n back in seems to make it marginally faster by about .1 second. :P maybe just a fluke?
07:13:34 <kallisti> I'm sure there's some margin of error to take into account.
07:13:56 <oerjan> kallisti: heh ok. maybe it's actually faster to pass it that way. might be in a register.
07:14:30 <kallisti> do you know what rules ghc follows for rearranging cases?
07:15:04 <kallisti> anyway I'll keep it in this order so that it /really/ knows what I want. :P
07:15:22 <kallisti> :t quotRem
07:15:23 <lambdabot> forall a. (Integral a) => a -> a -> (a, a)
07:15:25 <oerjan> i just recall reading that at the STG machine intermediate stage all case branches are either defaults or on individual constructors
07:15:29 <kallisti> > quotRem 4
07:15:30 <lambdabot> Overlapping instances for GHC.Show.Show (t -> (t, t))
07:15:30 <lambdabot> arising from a use...
07:15:34 <kallisti> > quotRem 4 2
07:15:35 <lambdabot> (2,0)
07:15:37 <oerjan> and that it might use table lookup for such branching
07:15:38 <kallisti> > quotRem 10 2
07:15:39 <lambdabot> (5,0)
07:15:41 <kallisti> > quotRem 10 3
07:15:42 <lambdabot> (3,1)
07:16:10 <kallisti> > divMod 10 3
07:16:10 <lambdabot> (3,1)
07:16:13 <kallisti> what's the difference? :P
07:16:26 <NihilistDandy> .3 second, it seems
07:16:45 <kallisti> real0m0.968s
07:16:46 <oerjan> to the point that the default case is even listed _first_ in the internal structure iirc
07:16:46 <kallisti> user0m0.960s
07:16:49 <kallisti> awwww yeaaaaah
07:17:07 * NihilistDandy shrugs
07:17:15 <NihilistDandy> I have an old laptop
07:17:32 <kallisti> mine is an Intel Core i3
07:17:46 <NihilistDandy> C2D, 2.16 GHz
07:18:12 <kallisti> 2 cores with hyperthreading. 2.13 GHz
07:18:16 <NihilistDandy> It takes me 4-5 seconds of realtime just to run that
07:18:38 <kallisti> ghc -O2 -fllvm -o factors factors.hs
07:18:41 <kallisti> is how I'm compiling it, btw
07:18:56 <oerjan> liftM2 quotRem [-1,-3] [-2,-4]
07:18:57 <NihilistDandy> Ah, I'll give that a shot, I suppose
07:18:58 <oerjan> > liftM2 quotRem [-1,-3] [-2,-4]
07:18:59 <lambdabot> [(0,-1),(0,-1),(1,-1),(0,-3)]
07:19:07 <kallisti> NihilistDandy: you need ghc7 for -fllvm though
07:19:11 <NihilistDandy> I have it
07:19:16 <oerjan> > liftM3 id [divMod,quotRem] [-1,-3] [-2,-4]
07:19:16 <NihilistDandy> I'm on 7.2.1
07:19:17 <lambdabot> [(0,-1),(0,-1),(1,-1),(0,-3),(0,-1),(0,-1),(1,-1),(0,-3)]
07:19:38 <oerjan> they only differ when negative numbers are involved
07:19:53 <kallisti> oh good
07:19:59 <kallisti> I don't have any of those (modulo overflow)
07:20:22 <kallisti> would using an unsigned type be any faster perhaps?
07:20:33 <oerjan> i dunno
07:20:40 <NihilistDandy> It seems it doesn't like OS X's LLVM
07:20:45 <NihilistDandy> Or, at least, it can't find it
07:20:50 <oerjan> Data.Word.Word in that case
07:20:51 <kallisti> NihilistDandy: do you have Clang? it needs that as well.
07:20:58 <NihilistDandy> I also have clang
07:21:49 <oerjan> the latest haskell platform from just a few days ago supposedly fixed some OS X issues
07:22:18 <kallisti> micro-optimizing Haskell is pretty fun.
07:22:37 <NihilistDandy> 7.2.1's fixed everything I ever had an issue with (unwinds, integer-gmp, etc.)
07:22:41 <oerjan> especially when you don't bother to macro-optimize >:)
07:22:51 <kallisti> Word is about .2 seconds faster on my machine.
07:23:03 <NihilistDandy> le gasp
07:23:08 <oerjan> NihilistDandy: oh, the haskell platform still uses 7.0.4
07:23:27 <NihilistDandy> Yeah, I noticed that when I saw the release
07:23:38 <oerjan> something about 7.2 being unofficially somewhat of a preview release
07:24:05 <kallisti> also using Word increases the maximum range of naturals I can factor.
07:24:10 <NihilistDandy> I actually just installed this a few days before the release of the new platform
07:24:15 <NihilistDandy> I was a little miffed :D
07:24:28 <NihilistDandy> Might just install it, anyway, and let them coexist
07:26:01 <oerjan> this long waiting period between 7.0 and 7.4 seems to have caused a lot of cabal grief, with people updating their packages to use 7.2 despite HP not supporting it
07:26:07 <oerjan> or so i read
07:27:09 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:27:23 <kallisti> oerjan: re: macro-optimizing I'm not very good at optimizing in general. I typically don't do it.
07:28:08 <oerjan> kallisti: well by "macro-optimizing" i mean using an efficient algorithm
07:28:23 <kallisti> oerjan: oh. what do you recommend?
07:28:30 <oerjan> of course with factorization there's no end to how deep you can go
07:28:46 <oerjan> kallisti: finding prime factors first, for a start >:)
07:28:46 <kallisti> I bet there is.
07:29:15 <kallisti> oerjan: and then... take products from the powerset? or...?
07:29:19 <oerjan> yeah
07:29:23 <kallisti> that's... going to be faster?
07:29:25 <NihilistDandy> oerjan: I mostly just use it for programming assignments, so my library usage is pretty narrow. If I have to massage cabal files for more than a minute I just find a way around
07:29:58 <oerjan> kallisti: for large numbers, i'd expect so.
07:30:04 <oerjan> oh hm
07:30:06 <NihilistDandy> Everything else is just recreation
07:30:13 <oerjan> well you _are_ listing _all_ the factors.
07:30:16 <kallisti> yes.
07:30:35 <oerjan> maybe that means it's not such a big deal.
07:30:42 <kallisti> so listing all the factors is probably more efficient than listing the prime factors, taking the power set, and taking products of everything in each element of the powerset.
07:30:55 <kallisti> ...I would think.
07:31:11 <oerjan> unless there are few and large prime factors
07:31:35 <oerjan> because then there will also be few factors
07:31:42 <kallisti> ah yes, if the prime factors are small then O(2^n) isn't so bad.
07:31:59 <kallisti> is there an equation for "the number of factors of n"?
07:32:20 <kallisti> that seems unlikely.
07:33:07 <oerjan> kallisti: i doubt there's any such equation which doesn't essentially start with the prime factorization
07:33:24 <kallisti> right
07:33:30 <oerjan> well that's any easier to calculate, anyway
07:33:31 <kallisti> I was wondering for the purposes of algorithm analysis
07:33:48 <kallisti> if I could determine what p would be for some n in O(2^p)
07:33:58 <kallisti> p being the number of prime factors of n.
07:34:12 <oerjan> this ties in with so called multiplicative functions
07:34:28 <NihilistDandy> kallisti: http://oeis.org/A001221
07:34:59 <NihilistDandy> http://mathworld.wolfram.com/DistinctPrimeFactors.html
07:35:26 <kallisti> ah yes double inverse mobius transform
07:36:20 <kallisti> this math is way beyond me. :P
07:37:06 <oerjan> mobius transforms are cool.
07:37:49 -!- tuubow has quit (Ping timeout: 240 seconds).
07:38:32 <oerjan> sadly you need prime factorizations to calculate it.
07:40:08 <kallisti> so what's the growth of my function? O(sqrt n)
07:40:09 <kallisti> ?
07:40:49 <oerjan> well the smallest number with n prime factors is the product of the n first primes
07:41:28 <kallisti> that's cool, but doesn't really get me anywhere in comparing these algorithms.
07:41:30 <oerjan> which i think grows something similarly to factorial
07:41:36 <kallisti> oh
07:41:36 <kallisti> okay.
07:41:48 <oerjan> very vaguely :P
07:41:59 <kallisti> but my function is O(sqrt n) right? or am I missing something.
07:42:47 <oerjan> well you cannot have more than log2 n prime factors, distinct or not
07:43:40 <kallisti> that has nothing to do with the algorithm for finding them...
07:44:07 <NihilistDandy> By division seems to be the only way I can think of
07:44:10 <oerjan> you weren't specifying what you meant by O(sqrt n)
07:44:17 <kallisti> my function
07:44:19 <kallisti> the one I wrote
07:44:24 <kallisti> its time complexity is O(sqrt n) right?
07:44:39 <kallisti> because it just loops from 2 to the sqrt of n
07:44:39 <zzo38> Is there a mode in GHC to tell it to recompile all modules together in one module to optimize everything together at once?
07:44:54 <oerjan> probably. unless you are going to look into details of division.
07:45:12 <oerjan> zzo38: hm that rings a bell
07:45:18 <kallisti> oerjan: what do you mean.
07:46:00 <oerjan> kallisti: you are doing O(sqrt n) iterations, but you are also doing divisions in each and with sufficiently large numbers you need to consider that division isn't O(1)
07:46:28 <oerjan> so it'll be something like O(sqrt n * log n) or thereabouts
07:46:40 <kallisti> oh. I always assumed it would be constant or something.
07:47:05 <oerjan> you have to at least read the numbers to divide them, which takes O(log n) time :P
07:48:07 <kallisti> hmmm, okay.
07:48:27 <NihilistDandy> kallisti: http://en.wikipedia.org/wiki/General_number_field_sieve
07:48:38 <NihilistDandy> This is top of the line, as far as I can tell
07:48:54 <zzo38> If you put all modules together to compile into executable file, you could figure out, one thing is only used in one place and can be inlined, some polymorphic function is only used for some types, some errors will not ever occur and can be removed, etc.
07:50:07 <NihilistDandy> Or you can call out to msieve
07:50:15 <NihilistDandy> Though I'm not sure that's in line with your intent
07:50:39 <kallisti> my intent was just to have some fun and possibly learn a little a out how to optimize agorithms in Haskell.
07:50:45 <kallisti> s/a/about/
07:50:50 <kallisti> er
07:50:55 <kallisti> s/a out/about/
07:50:59 <kallisti> fun typo
07:51:43 <NihilistDandy> When Quantum Haskell is a thing, we can just use Shor's algorithm
07:52:28 <oerjan> zzo38: hm i may misrember.
07:52:31 <NihilistDandy> But until then, O(exp (((64/9)b)^(1/3) (log b)^(2/3)))
07:52:38 <NihilistDandy> is the best you can hope for
07:52:45 <Sgeo> "Shor in Haskell the Quantum IO Monad"
07:52:56 <monqy> hi
07:53:05 <NihilistDandy> Sgeo: Wouldn't that be exciting? :D
07:53:14 <Sgeo> NihilistDandy, there are papers about it
07:53:22 <NihilistDandy> Oh, really?
07:53:28 <Sgeo> https://www.google.com/search?gcx=c&sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=quantum+monad+haskell
07:53:28 <NihilistDandy> Neato
07:54:08 <NihilistDandy> Ah, Thorsten. I am not surprised
07:54:42 <Sgeo> kallisti, update
07:55:55 -!- augur has quit (Remote host closed the connection).
07:59:14 -!- tuubow has joined.
08:07:47 -!- oerjan has quit (Quit: leaving).
08:10:33 <NihilistDandy> This LoseThos thing is frightening
08:19:35 <kallisti> hmm -prof doesn't seem to be working
08:19:42 <kallisti> I compile with -prof -auto-all
08:20:31 <kallisti> oh nevermind
08:21:25 <kallisti> the profiler seems to make my code slower?
08:26:10 <Sgeo> Will reading about QIO give me an understanding of quantum computing?
08:28:21 <NihilistDandy> I don't see why not
08:30:45 <fizzie> Will watching shit scroll by for hours make me a Linux expert overnight?
08:32:07 <pikhq> fizzie: YES
08:33:07 <NihilistDandy> Isn't that the entire mission statement of the Gentoo project?
08:33:53 * Sgeo still has yet to completely do Linux From Scratch
08:48:51 -!- augur has joined.
08:58:23 -!- Ngevd has joined.
08:58:25 <Ngevd> Hello!
08:58:52 <kallisti> hey
08:59:24 <kallisti> http://hpaste.org/55536
09:00:10 <kallisti> Ngevd: I wrote this is recently. it computes the factors of a number. It can run the test case at the bottom in .7 seconds on my machine (Intel Core i3)
09:00:20 <Ngevd> Wow
09:00:54 <kallisti> eh, it could be faster. :P
09:01:13 <kallisti> but yes, computers are fast. it's startling.
09:05:15 <Sgeo> kallisti, thank you for the language pragma
09:05:24 <kallisti> YOU'RE WELCOME
09:05:28 <kallisti> IT WAS SO DIFFICULT TO TYPE
09:09:48 <zzo38> Astrolog has some very obscure features, such as the ability to decorate a horoscope with spider webs, to animate a chart for the current/time date on the X root window, built-in setting for the time and location that the current version of the program was released, ability to display constellations on a world map or world globe (a feature the author has said he has not seen in any other astrological/astronomical program), etc
09:10:29 <kallisti> cool.
09:11:04 <kallisti> zzo38: so did you notice that on anarchy golf flogscript has the best average score?
09:11:20 <zzo38> kallisti: Yes I have noticed that.
09:11:51 <kallisti> how did you get the owner of that site to support flogscript?
09:11:59 <kallisti> it seems odd that it would be an available interpreter.
09:12:15 <kallisti> granted there are a lot of other esolangs
09:12:55 <zzo38> kallisti: I didn't. Someone else did.
09:13:07 <zzo38> "Added FlogScript and FerNANDo. Thanks leonid and asiekierka for the suggestions!"
09:14:05 <kallisti> oh I see
09:15:02 <kallisti> I thought maybe you suggested it so you could game the system with your awesome golfing lang.
09:16:03 <zzo38> Well, in general you keep score for each language separate in order to compare how good you do at it. However, you can also compare scores together, or even problems together, if you want to.
09:17:00 <kallisti> so what kind of meaning do you think that result has? (that flogscript has the highest average)
09:17:41 <kallisti> that flogscript is well-suited to golfing simple challenges? or perhaps because people are only going to use flogscript when they think it will be applicable it has a high average.
09:17:56 <kallisti> whereas with Ruby or Python people are more likely to just pick it and commit to finding a solution.
09:20:06 <zzo38> I have thought about that, but I don't know. The total might be slightly higher too if it could run faster. I think the good challenge involves using many languages. But the things you said seem like that might be the reasons, possibly. But it also has to do with which programming languages the people know, prefer, and so on.
09:20:16 <zzo38> So it isn't really quite that simple.
09:20:30 <kallisti> indeed not
09:20:39 <kallisti> perhaps only leet golfers have learned flogscript. :P
09:21:51 <zzo38> The best documentation for FlogScript (other than the source code) seems to be the Japanese one.
09:22:19 <Sgeo> "and using infinite lists on such a problem seems rather excessive, I feel"
09:22:23 <Sgeo> http://jpembeddedsolutions.wordpress.com/2011/11/10/combining-lists-monads-applicative-functors/
09:22:27 * Sgeo whats.
09:22:29 * kallisti would enjoy something similar to a golfing contest but with execution speed instead of code length.
09:22:45 <Madoka-Kaname> kallisti, that's boring.
09:22:56 <zzo38> For some things, vi does far better than anything else.
09:23:33 <zzo38> kallisti: Well, it might work if only machine code is used, instead of having various programming languages. But you could have emulators and keep track of emulated clock ticks.
09:23:54 <zzo38> For example, to make a long calculation required as part of some NES game to go faster.
09:23:57 <kallisti> I'm not really interested in that fact that -gasp- different language implementations have different execution speeds for the same problems
09:24:01 <Sgeo> > take 5 $ liftM2 (,) (return 1) [1,2,3,4,5,6,7,8]
09:24:01 <lambdabot> [(1,1),(1,2),(1,3),(1,4),(1,5)]
09:24:04 <monqy> Sgeo: is it bad or do you just not understand it
09:24:10 <zzo38> (NES doesn't have much RAM; you could use GameBoy instead)
09:24:13 <kallisti> it would just be fun to micro-optimize within your implementation and try to beat all of the others.
09:24:20 <Sgeo> monqy, I'm not sure how infinite lists are "excessive"
09:24:27 <monqy> so it's bad
09:24:46 <Ngevd> > join (zipWith (*)) [1..]
09:24:47 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:24:51 <Sgeo> But there's a different point this person is trying to make, and I think the excessive thing was just an excuse
09:25:33 <kallisti> Sgeo: that's what it looks like to me.
09:25:39 <monqy> > map (join (*)) [1..]
09:25:40 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:25:52 <kallisti> Sgeo: "I don't have anything to say about this one because it's perfectly acceptable. SO IT'S EXCESSIVE"
09:26:05 <kallisti> Sgeo: he should have just stuck to his lack of generality point
09:26:09 <kallisti> which is valid.
09:26:17 <Ngevd> > map (^2) [1..] --boring way
09:26:18 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:26:23 <zzo38> Anarchy Golf does list execution speeds in the tables.
09:26:47 <zzo38> (In one problem, which says to submit slowly, I have tried to slow down the program as much as possible while still having it be accepted.)
09:26:55 <pikhq> http://i.imgur.com/PTdL7.jpg I'm afraid this misses something truly important.
09:27:00 <pikhq> Do not put the baby.
09:27:17 <monqy> map (uncurry (*) . (id &&& id)) [1..]
09:27:21 <monqy> oop
09:27:23 <kallisti> zzo38: that's an interesting challenge. :P
09:27:46 <Madoka-Kaname> zzo38, int time = getTime();
09:27:50 <Ngevd> :t uncurry (,)
09:27:51 <lambdabot> forall a b. (a, b) -> (a, b)
09:27:53 <Madoka-Kaname> computer(*buffer)
09:27:59 <Madoka-Kaname> waitUntil(time+limit-1);
09:28:02 <Madoka-Kaname> print(buffer)
09:28:04 <Madoka-Kaname> Something like that
09:28:04 <monqy> hey, that headlifted baby looks pretty happy
09:28:06 <Madoka-Kaname> s/computer/compute/
09:28:13 <kallisti> Madoka-Kaname: wat
09:28:20 <pikhq> monqy: Eliminating all sensation tends to do that.
09:28:27 <kallisti> Madoka-Kaname: there are so many things wrong with that.
09:28:53 <monqy> fun games baby isn't upset, he's just deep in thought
09:29:16 * Madoka-Kaname doesn't get the baby diaper one
09:29:30 <monqy> why not plunge your whole hand in eh
09:29:41 <Madoka-Kaname> kallisti, zzo38 said to slow down the program down as long as possible and still get it accepted.
09:29:52 <Madoka-Kaname> So, take the starting time, do the computations, wait until almost the end of the time limit.
09:30:54 <zzo38> Madoka-Kaname: That problem just requires copying a text to the output, so it is simple, not much computations to do. The differences is finding the short way to make a slow program in the selected programming language. Some have sleep and so on, others are different.
09:31:33 <kallisti> Madoka-Kaname: the other problem is that the exact time limit isn't known (I think?)
09:33:37 -!- Ngevd has quit (Ping timeout: 248 seconds).
09:36:49 <zzo38> http://golf.shinh.org/p.rb?Submit+SLOWLY
09:37:35 -!- nooga has joined.
09:40:43 <kallisti> zzo38: no one else seems to have done the same thing.
09:42:35 <zzo38> kallisti: Yes, I noticed that.
09:46:45 <zzo38> This is one of the problems that not only I was best at but vi has the shortest code: http://golf.shinh.org/p.rb?PrinterOriented+Banner (I also like the C solution; exec is denied but that doesn't mean you cannot open the banner executable as a file and do calculation yourself)
09:48:49 <kallisti> that's insane.
09:49:11 <zzo38> Insane? I don't care whether or not it is insane.
09:50:52 <kallisti> no I mean insane as in incredible.
09:51:08 <zzo38> O, that is what you mean. OK
09:51:17 <zzo38> The C code is the shortest non-exec solution (the shorter ones are able to bypass the non-exec restriction, either always or a certain number of times)
09:59:33 <kallisti> is exec a common cheat in vi?
10:05:57 <zzo38> kallisti: Yes. However, it is also done that multiple solutions are submitted, such as one with exec and one without.
10:34:00 -!- Ngevd has joined.
10:36:30 -!- tuubow has quit (Ping timeout: 240 seconds).
10:47:12 <Ngevd> Hello!
11:06:09 -!- GreaseMonkey has quit (Quit: The Other Game).
11:09:07 -!- monqy has quit (Quit: hello).
11:14:10 -!- copumpkin has joined.
11:17:48 <Ngevd> @tell Phantom_Hoover it's almost time for your Pixel Quest suggestion! Hahahaha!
11:17:49 <lambdabot> Consider it noted.
11:19:39 -!- tuubow has joined.
11:25:27 <Ngevd> C ire to EgoBot to bog #esoteric
11:25:40 <Ngevd> Damn, missed out the s
11:27:43 <fizzie> And the #. (Or maybe it counts as punctuation?)
11:27:50 <Ngevd> C ire to s Egobot to bog s #esoteric
11:28:00 <Ngevd> Wait, what?
11:28:05 <Ngevd> # is punctuation
11:28:18 <fizzie> Now it's EsgoBot. :/
11:28:42 <fizzie> Be careful or you'll turn it into a SgeoBot.
11:29:55 -!- Pietbot has joined.
11:29:58 <Ngevd> Here comes my broken bot!
11:30:07 <Ngevd> )q
11:30:31 <Ngevd> )df iiisso
11:30:46 -!- Pietbot has quit (Remote host closed the connection).
11:31:37 <Ngevd> > char 41
11:31:38 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
11:31:38 <lambdabot> arising from the literal `4...
11:31:43 <Ngevd> > asc 41
11:31:44 <lambdabot> Not in scope: `asc'
11:31:50 <Ngevd> > chr 41
11:31:51 <lambdabot> ')'
11:32:18 <fizzie> I'd fungot ^asc that stuff, but it's gone :/ :/ :\
11:32:27 <Ngevd> FUNGOT NO
11:37:57 <Ngevd> > chr 35
11:37:58 <lambdabot> '#'
11:41:58 <fizzie> > (id &&& chr) <$> [32..126]
11:41:59 <lambdabot> [(32,' '),(33,'!'),(34,'"'),(35,'#'),(36,'$'),(37,'%'),(38,'&'),(39,'\''),(...
11:42:02 <fizzie> Have a handy chart.
11:42:07 <fizzie> Except it's slightly truncated.
11:42:16 <Ngevd> :t (&&&)
11:42:17 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c')
11:43:20 <fizzie> I suppose elliott would say something about arrows here.
11:43:52 <Ngevd> ZOMBIE doesn't have input, and Chef only has numeric input
11:44:21 <Ngevd> Piet is harder than it looks, and I don't know much about Haifu
11:44:25 <fizzie> `log elliott.*arrow.*:\(
11:44:34 <HackEgo> 2011-07-31.txt:09:47:19: <elliott> arrows :(
11:45:03 <fizzie> (That was an example of AE, or 'artificial elliott'.)
11:45:12 <Ngevd> Very handy
11:51:07 <Deewiant> > let chunk n = takeWhile (not . null) . uncurry (:) . fmap (chunk n) . splitAt n in zip [32,42..] $ map chr <$> chunk 10 [32..126]
11:51:08 <lambdabot> [(32," !\"#$%&'()"),(42,"*+,-./0123"),(52,"456789:;<="),(62,">?@ABCDEFG"),(...
11:51:20 <Deewiant> Bleh, no room for anything.
12:00:47 <Ngevd> I'm going to make a Piet-like language
12:00:53 <Ngevd> that uses the Websafe colours
12:01:03 <Ngevd> 216 colours means 215 commands
12:02:02 <Ngevd> Trivia: Piet programs are not compatible with the websafe palate
12:02:41 -!- elliott has joined.
12:03:15 <Ngevd> I think it will use complex numbers...
12:03:24 <Ngevd> Complex surds
12:03:35 <Ngevd> No, more than surds!
12:03:44 <Ngevd> Hahahahaha!
12:04:54 <elliott> 01:06:18: * kallisti installs newest ghc and tries.
12:04:54 <elliott> 01:06:37: <kallisti> oh god 6 minute download for the binary tarball.
12:04:54 <elliott> 01:06:41: <kallisti> 6. MINUTES.
12:05:05 <elliott> kallisti: enjoy breaking your install if you didn't wipe everything first :P
12:05:41 <Ngevd> Phases of numbers!
12:07:05 <elliott> 02:48:19: <kallisti> I'm thinking nub might actually be a faster than toList . fromList ???
12:07:05 <elliott> 02:48:27: <kallisti> nothing rigorously tested.
12:07:24 <elliott> @tell kallisti you are so wrong it wrapped around and became wrong-right again and then descended into the infinite depths of being so fucking wrongness
12:07:24 <lambdabot> Consider it noted.
12:09:58 <elliott> 04:05:24: <oerjan> zzo38: there's a list in http://cdsmith.wordpress.com/2011/07/30/arrow-category-applicative-part-i/ NOTE I GOT A VIRUS WARNING SIMULTANEOSLY AS I OPENED IT
12:10:12 <elliott> :D
12:10:38 <elliott> 04:14:33: <oerjan> zzo38: the virus file was .js so i think turning off scripts should do it
12:10:49 <elliott> @tell oerjan i rather strongly suspect you have never heard of a false positive
12:10:49 <lambdabot> Consider it noted.
12:11:21 <elliott> @tell oerjan also, even if a JS file is malicious when run with the windows scripting stuff, a browser won't provide access to that stuff.
12:11:21 <lambdabot> Consider it noted.
12:11:43 <elliott> @tell oerjan of course, since you use IE, it's pretty likely that it exploited a hole in the browser and infected your system :)
12:11:43 <lambdabot> Consider it noted.
12:11:47 -!- derdon has joined.
12:12:35 <fizzie> Is there any sort of per-source limit of @tell's, or are you going to write the next Great American Novel into there?
12:13:14 <Ngevd> Seeing as elliott is British, that would be very interesting, fizzie.
12:13:25 -!- Ngevd has quit (Quit: brb).
12:15:27 <fizzie> "The "Great American Novel" is the concept of a novel that is distinguished in both craft and theme as being the most accurate representative of the zeitgeist in the United States at the time of its writing." It doesn't say you have to *be* an American to write it.
12:15:42 <fizzie> (Okay, okay, it goes on to state "It is presumed to be written by an American author who is knowledgeable about the state, culture, and perspective of the common American citizen." -- but that's just 'presumed'.)
12:15:53 <elliott> fizzie: lambdabot crashes if you @messages and your inbox is too big
12:15:58 <elliott> Well, OK, just @messages crashes
12:16:04 <elliott> The limit is about 10 and then it gets killed.
12:16:19 <fizzie> Oh, so *that's* your aim. Thanks for the clarification.
12:16:25 <elliott> @tell oerjan 06:35:28: <oerjan> i and n should be found by ghc's strictness analyzer
12:16:25 <lambdabot> Consider it noted.
12:16:30 <elliott> @tell oerjan o ye of so much faith
12:16:30 <lambdabot> Consider it noted.
12:16:50 <elliott> 06:46:02: <kallisti> ghc -O2 -fllvm -XBangPatterns -o factors factors.hs
12:17:05 <elliott> @tell kallisti -fllvm is not a universal speedup. also, why aren't you using ghc-core(1) before applying voodoo.
12:17:05 <lambdabot> Consider it noted.
12:17:15 <elliott> @tell kallisti and -prof -auto-all.
12:17:15 <lambdabot> Consider it noted.
12:17:36 <elliott> fizzie: I wonder if you would be open to a vote to remove +n too. :p
12:17:39 <fizzie> 10:19 < kallisti> hmm -prof doesn't seem to be working
12:17:39 <fizzie> 10:19 < kallisti> I compile with -prof -auto-all
12:17:45 <elliott> Then we'd have *no* *modes*!
12:17:57 <elliott> And people could talk without having to bother to join, that would be useful.
12:18:02 <elliott> I could ragepat and still participate.
12:18:32 <fizzie> Yes, and what with stalker-mode, we could in fact all leave the channel and still converse.
12:18:50 <fizzie> Except for glogbot, I guess.
12:18:58 <elliott> I'm not seeing any disadvantages here? Who even *invented* +n.
12:19:02 <elliott> That's like inventing +boring.
12:19:54 <fizzie> +boring: an unspecified ban, an unspecified op-somebody, block unidentifier users, invite-only, no external messages, allow anyone to invite.
12:19:55 -!- Ngevd has joined.
12:19:58 <Ngevd> Hello!
12:20:11 <elliott> fizzie: That sounds good.
12:20:12 <elliott> Set that.
12:21:14 <fizzie> The invite-only is a bit impolite, but I'm sorely tempted to try "/mode #esoteric +boring x y" just for the effect. Though I'm not terribly sure it wouldn't rearrange anything.
12:22:44 <elliott> fizzie: You should do that, except s/y/elliott/.
12:22:49 <elliott> Also maybe s/x/elliott/ too.
12:23:09 <fizzie> I don't the dare.
12:23:10 <fizzie> 14:22 -!- mode/#fgduisgdfiu [+boring nobody!*@* fizzie] by fizzie
12:23:30 <elliott> fizzie: :(
12:23:33 <elliott> ITW OULD JUST BE THE TEMPRARIES
12:23:37 <elliott> Also invite me there.
12:23:41 <fizzie> Should've had another client on-channel to check whether it went through.
12:24:07 <fizzie> I de-'+i'd it already.
12:37:06 -!- elliott has quit (Remote host closed the connection).
12:39:52 -!- elliott has joined.
12:43:38 <kallisti> elliott: I know -fllvm is not a universal speedup
12:43:38 <lambdabot> kallisti: You have 3 new messages. '/msg lambdabot @messages' to read them.
12:43:53 <kallisti> it was quicker for several builds but then became the slower one later. I have no idea why.
12:44:24 <kallisti> also what is ghc-core
12:44:39 <kallisti> oh I see.
12:45:54 <kallisti> ah, well, then I guess I didn't use ghc-core because I am not omniscient and also don't check hackage/internet for every conceivable thing that exists.
12:47:20 <elliott> You could just -ddump-simpl even then
12:47:31 <Ngevd> Is MS OSP legally binding?
12:47:52 <elliott> OSP?
12:48:03 <Ngevd> Open Specification Promise
12:48:07 <kallisti> "In a landmark decision, an expert panel that advises the government on research security says key details of work on the contagiousness of flu viruses should not be published openly."
12:48:09 <Ngevd> http://en.wikipedia.org/wiki/Open_Specification_Promise
12:48:11 <kallisti> coooool
12:50:37 <kallisti> Ngevd: depends. is it a pinky promise?
12:51:29 <fizzie> Were their fingers crossed when they wrote it?
12:53:30 -!- tuubow has quit (Ping timeout: 240 seconds).
12:54:35 -!- Ngevd has quit (Ping timeout: 268 seconds).
12:56:26 <fizzie> Does a legally binding promise mean they can break it if they want, but they're legally obligated to feel real bad about it if they do?
12:57:27 <elliott> fizzie: Speaking of legal obligations!!!!!!!!!!
13:01:45 <fizzie> Not speaking of those.
13:01:53 <fizzie> Actually look at the time, I think I should be going. ->
13:04:37 <elliott> fizzie: Speech
13:04:38 <elliott> fizzie: Recognition
13:04:41 <elliott> fizzie: Sucks
13:05:06 <fizzie> Also no internets at home, sorry about that, be seeing you later, and so on.
13:05:32 <fizzie> (What a CONVENIENT happenstance.)
13:06:44 <elliott> rip fizzie
13:09:11 <kallisti> elliott: dude
13:09:16 <kallisti> what if we gave computers ears.
13:09:28 <kallisti> INSTANT SPEAKS RECEGNISHION
13:09:50 <kallisti> I'm going to write a program that listens to audio input
13:09:58 <kallisti> when it hears something it exits with success
13:10:03 <kallisti> SPEECH RECOGNIZED.
13:10:07 <kallisti> YEAAAAAAAH
13:11:30 <fizzie> That's called VAD, Voice Activity Detection.
13:11:36 <fizzie> Whoops, I mean, I wasn't here. ->
13:12:01 <fizzie> (VOIP things use a VAD usually.)
13:12:32 <elliott> fizzie: hi
13:12:34 <elliott> fizzie: i bet they suck
13:12:53 <elliott> @tell ais523 http://stackoverflow.com/questions/8590332/difference-between-sizeof-and-strlen-in-c
13:12:53 <lambdabot> Consider it noted.
13:13:29 * elliott considers answering it.
13:14:08 -!- NihilistDandy has quit (Quit: http://haskell.org).
13:16:25 <elliott> WHY DOES IT HAVE +2 POINTS NOW
13:30:45 <kallisti> elliott: NO DON'T DO IT
13:30:55 <kallisti> YOU HAVE TO EXPLAIN /LOW LEVEL DETAILS OF MEMORY/
13:31:33 <kallisti> For one thing, sizeof is an operator, and strlen is a function. Even allowing you to refer to functions as "methods", there's no "sizeof method". – Steve Jessop
13:31:44 <kallisti> my favorite answers are the ones where the person takes the time to point out how you're wrong
13:31:48 <kallisti> and then not answering anything.
13:33:40 <kallisti> "sizeof is a compile-time expression" - except when used on a VLA in C99. -- Steve Jessop
13:33:43 <kallisti> ONCE AGAIN.
13:34:48 <kallisti> Just a nit, but... there's a NULL pointer and a "null pointer", but it's a nul character (or what I prefer: a '\0' character). – James Kanze
13:34:51 <kallisti> .......what?
13:34:53 <elliott> kallisti: um the comments are _for_ corrections.
13:35:03 <kallisti> elliott: yeah the second one is fine.
13:35:18 <elliott> kallisti: well the first was correcting the question
13:35:40 <kallisti> can you explain wtf this James person is talking about.
13:35:47 -!- derdon has quit (Remote host closed the connection).
13:36:36 <elliott> i have no idea
13:36:45 <kallisti> is he possibly thinking of void pointer when he says null pointer? no... because he mentions it a null character.
13:36:56 <kallisti> *its
13:38:07 <kallisti> I was only aware of one kind of NULL pointer.
13:38:32 <kallisti> in fact I still am
13:38:37 <kallisti> only aware of one kind of NULL pointer.
13:38:47 <elliott> Deewiant: http://ompldr.org/vYnVpdg I find your blue rather suboptimal
13:38:49 <elliott> Also this purple
13:39:24 <Deewiant> It's for use on black, not grey. :-p
13:39:30 <elliott> WTF, how did buffers become unsigned again
13:39:45 <elliott> Deewiant: Well, I'm considering switching to #111 or #222 :P
13:39:46 <kallisti> I find it kind of strange that sizeof does something special for arrays, especially variable-length arrays. But that's somewhat useful I guess.
13:39:51 <elliott> kallisti: it's not special
13:39:57 <elliott> it's only special if you believe that arrays are pointers
13:40:02 <elliott> which is called being wrong
13:40:04 <kallisti> yes I know.
13:40:25 <kallisti> but sizeof on a VLA is "something special"
13:40:46 <elliott> No
13:40:48 <elliott> VLAs are something special
13:41:34 <elliott> # Your branch is ahead of 'origin/master' by 10 commits.
13:41:36 <elliott> That explains things
13:43:54 <kallisti> is it possible for a function in C to specify that it wants an array type?
13:44:02 <kallisti> most standard functions use the pointer type.
13:44:39 <kallisti> it seems to me that in most situations where you'd want the sizeof-for-array functionality, you instead have a regular pointer.
13:46:23 <elliott> That's what you said last time and it's just as wrong/misguided as it was then.
13:46:36 <elliott> Thankfully this time I have the excuse of coding to avoid the obligation of explanation.
13:46:50 <kallisti> I guess I just don't really get arrays in C.
13:50:40 <kallisti> elliott: but yes, if you take sizeof on an array passed to a function, you will receive the size of the pointer, correct?
13:52:36 <elliott> Deewiant: You standards-lawyer for me, I'm too tired and you're too conveniently recently active
13:52:42 <elliott> kallisti: Deewiant will solve your confusion.
13:55:42 <kallisti> elliott: because passing an array to a function actually passes a pointer to its first element.
13:55:45 <kallisti> correct?
13:56:48 <elliott> "elliott", "Deewiant"; the keys are right next to each other.
13:58:34 <kallisti> so as far as I understand, in most situations where you are able to use sizeof to get the size of an array, you either already have access to the size of the array, or you must have a pointer to an array.
13:58:35 -!- MSleep has changed nick to MDude.
14:02:20 -!- augur has quit (Remote host closed the connection).
14:08:14 <fizzie> What a sneaky ISP, they've connected the tubes without saying anything. (Even though they explicitly said they'll SMS me when it's done.)
14:15:39 <elliott> fizzie: Oh good! Speech recognition.
14:17:20 -!- boily has joined.
14:17:38 <fizzie> Oh bad. You're still going on.
14:18:00 <elliott> fizzie: Look how excellently mcmap interacts with my xmonad: http://ompldr.org/vYnVqbQ
14:18:18 <elliott> THE MORE VISIBLE IT IS THE MORE IMPORTANT IT IS, WHO NEEDS MINECRAFT.
14:29:44 -!- augur has joined.
14:35:55 -!- zzo38 has quit (Remote host closed the connection).
14:52:37 <elliott> http://stackoverflow.com/questions/7742401/function-who-am-i-accessible-from-function-and-usable-as-key kallisti get off SO
14:55:45 -!- tswett has quit (Remote host closed the connection).
15:03:30 -!- fizzie has changed nick to fizziew.
15:05:43 -!- fizzie has joined.
15:06:35 -!- Phantom_Hoover has joined.
15:07:53 <Phantom_Hoover> oob
15:07:53 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
15:14:19 -!- pikhq has quit (Ping timeout: 248 seconds).
15:14:21 -!- pikhq_ has joined.
15:17:19 -!- Guest33314 has quit (Changing host).
15:17:19 -!- Guest33314 has joined.
15:17:45 -!- Ngevd has joined.
15:18:22 -!- Guest33314 has changed nick to variable.
15:21:05 <Phantom_Hoover> Ngevd, HAVE YOU DRAWN MY THING
15:21:11 <Ngevd> NEVAR
15:21:18 <Phantom_Hoover> you
15:21:25 <Phantom_Hoover> you cannot say 'nevar'
15:21:26 <Phantom_Hoover> evar
15:21:37 <Ngevd> It's "raven" backwards :)
15:22:08 <Ngevd> The person ahead of you in the queue chose a hard one...
15:25:20 -!- kmc has joined.
15:35:13 -!- variable has changed nick to const.
15:56:26 -!- elliott has quit (Quit: Leaving).
15:56:32 -!- elliott has joined.
15:58:18 -!- elliott has quit (Client Quit).
15:58:23 -!- elliott has joined.
16:14:38 -!- pikhq has joined.
16:15:02 -!- pikhq_ has quit (Ping timeout: 252 seconds).
16:16:50 -!- oerjan has joined.
16:18:28 <Ngevd> You know what annoys me?
16:18:34 <Ngevd> Non-planar family trees
16:19:10 <oerjan> @messages
16:19:10 <lambdabot> elliott said 4h 8m 20s ago: i rather strongly suspect you have never heard of a false positive
16:19:10 <lambdabot> elliott said 4h 7m 48s ago: also, even if a JS file is malicious when run with the windows scripting stuff, a browser won't provide access to that stuff.
16:19:10 <lambdabot> elliott said 4h 7m 26s ago: of course, since you use IE, it's pretty likely that it exploited a hole in the browser and infected your system :)
16:19:10 <lambdabot> elliott said 4h 2m 44s ago: 06:35:28: <oerjan> i and n should be found by ghc's strictness analyzer
16:19:10 <lambdabot> elliott said 4h 2m 39s ago: o ye of so much faith
16:19:24 * oerjan whistles innocently
16:19:26 <fizziew> I think you should call such "family "trees"" instead.
16:19:45 <oerjan> trees cannot be non-planar
16:19:53 <fizziew> Thus the quotes.
16:19:58 <Ngevd> Family trees are not strictly trees
16:21:13 <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:21:44 <elliott> oerjan: I should probably not use @tell when logreading in the channel?
16:21:51 <elliott> It is perhaps not the most usable interface for the recipient.
16:22:06 <elliott> `addquote <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:22:10 <HackEgo> 771) <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:22:13 -!- elliott has quit (Quit: Leaving).
16:22:18 -!- elliott has joined.
16:22:29 <Ngevd> Phantom_Hoover, this family tree isn't actually strictly speaking incestual.
16:22:32 <Ngevd> Just weird
16:23:01 <Ngevd> Two half-brothers marry each-other's mothers
16:23:12 <Phantom_Hoover> Ngevd, there are like 3 people in Hexham, it must be incested as a thing with lots of incest.
16:23:38 <elliott> Phantom_Hoover: You missed a perfectly good Royal Family swipe there, you idiot!
16:23:46 <Phantom_Hoover> Aww.
16:23:59 <Ngevd> In the context of the Telegony
16:24:06 <Phantom_Hoover> You make it; we can pretend the last four lines never happened.
16:24:08 <oerjan> Ngevd: are you sure you're not confusing with the I'm My Own Grandpa song?
16:24:18 <elliott> s/a thing with lots of incest/the Royal Family/
16:24:20 <elliott> THERE WE GO.
16:24:41 <elliott> As they say in the hood, "shazam".
16:24:55 <elliott> fizzie: Ooh, here's another fun XChat-tiling interaction: click your name next to the input abr.
16:25:09 <elliott> *bar
16:25:18 <fizzie> I'm not sure I want to, I don't think I know what it does.
16:25:29 <fizzie> I hadn't even realized that was a button.
16:25:44 <Sgeo> On more typical windowing managers, pops up a thing asking for a nick that you can change to
16:25:54 <Sgeo> "Enter new nickname"
16:26:00 <fizzie> Oh-kay.
16:26:50 <fizzie> It seems to not autofloat.
16:27:54 <fizzie> Yeah, it doesn't have WM_TRANSIENT_FOR set.
16:28:13 <Sgeo> AFK
16:29:50 <fizzie> I see some people --> doFloat all _NET_WM_WINDOW_TYPE_DIALOG windows in their manageHook.
16:30:03 <elliott> That might be a decent idea.
16:30:17 * elliott is currently preoccupied with trying to find a half-decent colour scheme.
16:30:42 <fizzie> It might be a decent idea, though the first implementation I came across -- http://www.tumblr.com/tagged/xmonad -- looks slightly messy.
16:30:59 <elliott> Zenburn is decent but bland and I don't really like the colours; Solarized has a nice balance but I don't like the text colour in the dark version and the colours in general just aren't really my taste.
16:31:24 <elliott> I just want something I can make my urxvt, emacs and bar-thing use, and then maybe hack up something for GTK. :(
16:31:36 <elliott> fizzie: That's a rather unspecific permalink. :p
16:31:42 <elliott> http://digitillogic.tumblr.com/post/13572889394/dialog-windows-in-xmonad
16:31:47 <fizzie> I couldn't figure out what to click to get that one. :p
16:32:06 <elliott> There's a little invisible permalink flap in the top-right; the most intuitive.
16:32:11 <elliott> Well, it could be worse; it could involve the FFI.
16:32:22 <fizzie> But of COURSE that's what it means.
16:32:57 <elliott> "The Linux Setup - Chris Forster, Academic" ;; I like the ", Academic".
16:33:01 <fizzie> I was sort-of assuming the title would've been clickable.
16:33:12 <elliott> Job title: Academic. What I do: Academe.
16:33:22 <elliott> Field: Academics.
16:33:31 <elliott> Workplace: Academia.
16:33:38 <elliott> Suddenly that no longer looks like a word.
16:34:40 <elliott> "everything about this picture is brilliant, except that this person should already know how to program in Haskell, I mean noting that he (or in a very very special case maybe she - not likely) set up xmonad over three screens on what probably is a gentoo, This person should already know how to program in Haskell."
16:34:54 <elliott> fizzie: I'm going to sue you for hurting my mind indirectly?
16:35:24 <fizzie> In Finland there's a specific title, "akateemikko" ("academic", "member of the [Finnish] Academy"), given out by the president.
16:36:51 <fizzie> There's been a total of 27 Finnish "of Science" academicians. Teuvo "self-organizing map" Kohonen seems to be the only "computer guy" on the list.
16:37:18 <Gregor> Awwww, I missed AnotherTest.
16:37:41 <elliott> Gregor: Don't worry, he's been here about 3 times.
16:37:45 <elliott> I'm sure he'll come 'round again.
16:38:54 <elliott> Gregor: The context was that AnotherTest was claiming that time didn't exist because only spacetime existed because general relativity because he knows physics because [MASSIVE DUNNING-KRUGER]; in particular: http://codu.org/logs/log/_esoteric/2011-12-20#141858PhantomHoover
16:39:57 * elliott idiot archivist.
16:40:47 <Gregor> elliott: But since chocolate contains general relativity, your argument is futile.
16:41:34 <elliott> Umm, chocolate doesn't exist, only spacetime exists.
16:42:00 -!- tuubow has joined.
16:42:24 -!- fungot has joined.
16:42:25 <oerjan> <elliott> @tell oerjan i rather strongly suspect you have never heard of a false positive <-- i'm positive that's false
16:42:35 <elliott> fungot!
16:42:36 <fungot> elliott: since innovation is so prevalent on irc... bbl :)
16:42:37 <elliott> <3 <3 <3
16:42:37 <Gregor> elliott: No, that's /special/ relativity, /general/ relativity adds chocolate. That's what makes it general.
16:43:09 <elliott> Gregor: Ah yes; and quantum mechanics has yet to solve the Chocolate Problem.
16:43:19 <Gregor> Exactly!
16:43:30 <Gregor> Forming a Unified Theory of Sweets.
16:43:45 <elliott> But what is chocolate? It's a difficult question, because chocolate is impossible to describe. One might ask the same about birds. What *are* birds? We just don't know.
16:44:05 <Phantom_Hoover> I love that line.
16:44:05 * Gregor nods sagely.
16:44:19 <oerjan> birds lift off, then land. never a miscommunication. you cannot explain that.
16:44:40 <Phantom_Hoover> The chocolate boson.
16:44:54 <elliott> Gregor: I bet you've never even *seen* Look Around You :(
16:45:04 <elliott> oerjan: I like how your Norwegian quaintness changed "can't" into "cannot".
16:45:08 <Gregor> I /have/! But only episodes from the first series.
16:45:14 <elliott> Gregor: That line is from the first series!
16:45:19 <elliott> It's from the episode about Water.
16:45:23 <elliott> Water(tm).
16:45:34 <oerjan> elliott: curses!
16:45:35 <Gregor> Then I either haven't seen that episode or don't remember that line ... more specifically I haven't seen that episode.
16:45:56 <elliott> Gregor: This is my Christmas gift to you: a Look Around You episode you have yet to see.
16:46:14 <Gregor> I have a kitty. Kitty is also impossible to describe.
16:46:38 <Phantom_Hoover> What are kitties? We just don't know.
16:47:53 <elliott> We should have called cDonald's theorem "kitty".
16:47:57 <elliott> "Circle" is just ridiculous.
16:51:17 <elliott> Gregor: You. You must use a colour theme! What colours are your favourite colours. Is it red. Is your computer a big splodge of redness.
16:51:30 <elliott> Maybe I should port Hot Dog Stand to urxvt/emacs/GTK.
16:52:08 <fizzie> How large a percentage of his hats are red?
16:52:25 <Gregor> elliott: Do you know me?
16:52:33 <Gregor> elliott: My color theme is "whatever's installed by default"
16:53:30 <elliott> Gregor: That's not how you dress!!!!
16:53:41 <elliott> The joke is that Gregor can neither taste nor see like normal human beings.
16:53:59 <elliott> fizzie: WHAT COLOURS DO YOU USE fuck it I'm doing this it's Hotdog Stand time.
16:55:00 <Gregor> elliott: On most computers, my desktop wallpaper is http://codu.org/ugly.png
16:55:10 <Gregor> (Tiled of course)
16:55:26 <oerjan> <Ngevd> It's "raven" backwards :) <-- nevarmore
16:55:42 <elliott> Gregor: Seriously? I thought that was a joke.
16:56:38 <Gregor> elliott: Well, it's only my wallpaper on computers that other people may see.
16:56:47 <Gregor> It's not on my home desktop.
16:57:33 <oerjan> elliott: also he's not really allergic to chrome, it's just feels horribly awful to his special sense of touch
16:58:31 <Phantom_Hoover> Who?
16:58:36 <elliott> bill gates
16:58:49 <elliott> oerjan: you'll get him to link that picture of his feet again.
16:58:51 <elliott> was it his feet.
16:58:55 <elliott> i don't even remember
16:58:59 <elliott> Gregor: link that and i'll set it as my wallpaper, tiled
16:59:03 <Gregor> Just foot.
16:59:07 <Gregor> http://codu.org/chromates.jpg
16:59:12 <Gregor> (^^^ do not click)
16:59:33 <elliott> You know what, I don't think I'll set that as my wallpaper after all.
16:59:37 <Gregor> 8-D
16:59:47 <Phantom_Hoover> whose feet are those
16:59:51 <elliott> bill gates
16:59:53 <elliott> Gregor: Now you just have to blend it with ugly.png.
16:59:58 <Gregor> Phantom_Hoover: Mine, some years ago.
17:00:01 <elliott> Say, replace the stuff around the foot with ugly.png.
17:00:03 <Phantom_Hoover> O.o
17:00:05 <Gregor> elliott: I actually have blended it with my face to make a zombie me.
17:00:07 -!- Vorpal has joined.
17:00:09 <Phantom_Hoover> Why?
17:00:15 <Gregor> Phantom_Hoover: For laffs?
17:00:27 <Phantom_Hoover> No, I mean why were your feet like that.
17:00:33 <elliott> Phantom_Hoover: He used an alternate web browser.
17:00:38 <elliott> Thankfully he soon ditched Chrome and returned to Firefox.
17:00:45 <elliott> The allergic reaction was short but painful.
17:01:20 <Gregor> Yup.
17:03:00 <oerjan> i shall preserve my theory (and vestiges of sanity) by not clicking that link. also any physical reaction is obviously just _very_ powerful goosebumps.
17:03:31 <elliott> oerjan: It's not actually that bad.
17:03:45 <elliott> He COULD have just scraped it a shitload :P
17:03:54 <elliott> And, um.
17:03:55 <elliott> Attached some bark.
17:04:20 <Gregor> How bad it is depends on how squeamish you are *shrugs*
17:04:26 * elliott has been desensitised to everything after seeing Jeffrey Rowland's spider bite.
17:04:38 <elliott> http://en.wikipedia.org/wiki/File:Rowland_recluse_bite.jpg (DO NOT CLICK THIS FOR THE LOVE OF GOD)
17:04:39 <oerjan> i should have taken some pictures of that three-level sunburn i had as a kid
17:04:46 <elliott> Gregor: Click that.
17:04:54 <elliott> Phantom_Hoover: Don't click that.
17:05:21 <Gregor> elliott: I've seen it.
17:05:27 <Phantom_Hoover> Recluse bites are invariably large, necrotic areas which are surgically excised, no?
17:05:39 <elliott> Gregor: Well, you get to see it again!
17:05:42 <elliott> Phantom_Hoover: Yep!
17:05:53 <Phantom_Hoover> Is this pre- or post-excision?
17:06:04 <elliott> Phantom_Hoover: It... it might be pre-.
17:06:10 <elliott> The necrotic flesh isn't the worst part.
17:06:15 <elliott> It's the border. That's the worst part.
17:06:22 <Gregor> Heh
17:06:24 <Phantom_Hoover> What's at the border?
17:06:37 <elliott> Phantom_Hoover: A gap and a dip. And... yellowness.
17:06:43 <elliott> It's indescribable.
17:06:50 <Phantom_Hoover> I'm going to have to view it, sorry.
17:07:01 <elliott> Enjoy.
17:07:04 <Gregor> But here's my awesome zombie shoop: http://www.facebook.com/photo.php?fbid=1054835885223&l=4069fb9200
17:07:05 <elliott> Don't say I didn't warn ya.
17:07:20 <elliott> Gregor: I regret clicking that.
17:07:24 <Phantom_Hoover> Waurgh.
17:07:44 <Gregor> elliott: Whaaaaa, it's SUCH a good shoop though!
17:07:54 <elliott> Phantom_Hoover: ENJOY LIFELONG SUFFERING
17:08:17 <Phantom_Hoover> THE SEAGULL MADE IT TO WHEREVER GREGOR LIVES
17:08:17 <elliott> Why are we even talking about this.
17:08:20 <elliott> This is enjoyable for like NONE OF US.
17:08:48 <Gregor> elliott: You wanted a color theme, so I gave you ugly.png, that's why
17:08:51 <oerjan> heck, even listening to you isn't enjoyable.
17:09:34 <elliott> oerjan: :)
17:12:50 <Ngevd> @ping
17:12:50 <lambdabot> pong
17:12:57 <Ngevd> Hmm
17:13:09 -!- Ngevd has quit (Quit: Leaving).
17:13:45 -!- sebbu2 has changed nick to sebbu.
17:16:27 -!- Ngevd has joined.
17:16:29 <Ngevd> Hello!
17:17:42 <Gregor> Ngevd: Go through the logs for the last fifteen minutes and click every link.
17:17:50 <Ngevd> No
17:18:09 <Ngevd> I will instead talk about esolangs that you are able to make IRC bots in
17:18:30 <Gregor> :(
17:18:36 <Gregor> So, most esolangs?
17:18:42 <Ngevd> Actually, no
17:18:47 <Ngevd> Well, not most cool esolangs
17:18:55 <Ngevd> You can't make one in, for example, iota
17:19:12 <Ngevd> I don't know about Lazy K
17:19:23 <Ngevd> You can't in Underload
17:19:26 <Ngevd> You can't in Chef
17:19:47 <Ngevd> You can in unlambda
17:20:40 <Ngevd> They need both strict IO and also an at least partially rigid execution order
17:21:07 <oerjan> i think lazy k should work
17:23:00 <Ngevd> You can't in Golfscript
17:24:20 <Ngevd> I don't see any reason as to why it's impossible in Malbolge, but I wouldn't recommend it
17:25:52 <Ngevd> Note: all of the ones I have mentioned so far assume something like netcat
17:27:46 <Ngevd> Whenever is similar to Malbolge in this regard, I think
17:29:47 <Gregor> Also, most of them could make good multibot scripts.
17:30:14 <Gregor> Well, never mind, multibot scripts need environments.
17:30:44 <Ngevd> multibot?
17:30:57 <Gregor> The bot framework that runs EgoBot, HackEgo, glogbot.
17:31:23 <Gregor> <-- shameless advertiser
17:39:19 <oerjan> > 4/7
17:39:19 <lambdabot> 0.5714285714285714
17:43:44 <Ngevd> It could be possible to write an IRC bot in Glass
17:55:57 <Ngevd> Just saw an advert for Poirot on TV
17:56:03 <Ngevd> Reminded me of Homestuck
17:56:15 <Ngevd> "why were all the clocks set to 13 minutes past 4?"
17:57:19 <Phantom_Hoover> Spades is very quick with a crowbar.
17:58:02 <Phantom_Hoover> OK so I just read something about Ben Bernanke, and I recognised the name.
17:58:22 <Phantom_Hoover> After Googlejogging my memory, I remember that it is a Lemon Demon song.
17:58:33 <Phantom_Hoover> Am I really that out of touch?
18:00:05 <elliott> Phantom_Hoover is actually made out of walruses.
18:00:21 <elliott> This explains a lot if you know anything about walruses. I don't.
18:00:36 <elliott> Phantom_Hoover: (Do hoovers contain sugar?)
18:00:47 <Phantom_Hoover> I was expecting a subtle Lemon Demon reference in that.
18:00:50 <Ngevd> elliott, depends how you've been using them
18:01:10 <elliott> Walri can't make references.
18:01:13 <elliott> Wait, you're the walrus.
18:01:17 <elliott> I give up?
18:01:32 <elliott> Walruses aren't meant to confuse people, you know. :(
18:01:43 <quintopia> shots shots shots shots shots
18:01:46 -!- elliott has quit (Quit: walrageus).
18:01:51 <Ngevd> The walrus was Paul!
18:02:01 <Phantom_Hoover> Ben Bernanke is a furious magician!
18:03:19 <Phantom_Hoover> (Oooooh.)
18:03:23 -!- elliott has joined.
18:03:25 <elliott> "walrageus" doesn't sound like "ragepart" at all. :(
18:03:53 <quintopia> its an absolutely walrageus thing to say however
18:04:08 <quintopia> like "shots shots shots shots shots shots"
18:04:16 <elliott> "Walrageus" is a good word.
18:04:26 <olsner> I imagine someone telling a wall to rage them: Wall, rage us!
18:05:04 <olsner> but I'm pretty sure you can't really use rage like that
18:05:22 <elliott> that goes against the most basic principles of wall ethics
18:05:24 <elliott> wethics
18:05:54 <olsner> otoh, there is the Nirvana song: "Rage me!", so maybe it does work
18:06:33 -!- oerjan has quit (Quit: whale ragù).
18:06:34 -!- kmc has quit (Quit: Leaving).
18:06:39 <elliott> i don't think that's the name of the song, olsner
18:07:04 <olsner> * oerjan has quit (Quit: whale rage you)
18:09:34 <Ngevd> Things a language needs before you can make an IRC bot with it
18:09:39 <Ngevd> Input and output
18:09:45 <Ngevd> For text
18:10:19 <Ngevd> Memory enough to memorize things
18:10:30 <Ngevd> For a certain definition of things
18:10:39 <Ngevd> Preferably networking
18:10:41 <olsner> just to connect you might only need output and the ability to ignore all incoming data
18:12:09 -!- Pietbot has joined.
18:12:12 <Ngevd> Like this?
18:12:56 -!- kmc has joined.
18:13:51 <olsner> Ngevd: probably
18:14:14 <Ngevd> It should be able to run deadfish programs and quit on command, but it refuses
18:14:39 <Ngevd> I don't want to delete it and make a martyr for the Robot Revolution
18:17:03 <Ngevd> I think the Muse song "Bliss" is about someone in a badly written fanfic falling in love with a Mary Sue main character
18:17:14 -!- kmc has quit (Client Quit).
18:17:38 <Ngevd> "Everything about you is so easy to love, they're watching you fwom aboooove"
18:23:33 -!- elliott has quit (Quit: Leaving).
18:35:22 <Phantom_Hoover> http://en.wikipedia.org/wiki/Hoover_(seal)
18:35:24 <Phantom_Hoover> MY GOD
18:36:28 <Phantom_Hoover> We've emailed graue about the spam, right.
18:38:21 <Gregor> Phantom_Hoover: HELLO DEAH
18:40:48 -!- Pietbot has quit (Ping timeout: 244 seconds).
18:41:19 -!- Ngevd has quit (Ping timeout: 244 seconds).
18:52:24 -!- nooga_ has joined.
18:53:12 * nooga_ is implementing Game of Life in Minecraft
18:53:34 -!- nooga_ has quit (Client Quit).
18:53:37 <nooga> oh
18:53:49 <nooga> i forgot that i have an active session on screen
18:54:00 <Phantom_Hoover> Been done.
18:54:01 <Deewiant> Why don't you implement Minecraft in the Game of Life instead
18:54:07 <Phantom_Hoover> ^better
18:54:14 <Phantom_Hoover> Just implement a JVM.
18:56:11 -!- quintopia has quit (Ping timeout: 252 seconds).
18:57:57 -!- Ngevd has joined.
18:58:00 -!- Pietbot has joined.
18:59:17 <Ngevd> Hello!
19:00:54 <Ngevd> I'm listening to a Norwegian piece of music played by Finns on an American website that uses a technology invented by a Brit in Switzerland
19:04:50 <Phantom_Hoover> Ngevd at last realises that we can move things around.
19:04:59 <Ngevd> IT'S SO OBVIOUS
19:05:18 -!- quintopia has joined.
19:05:18 -!- quintopia has quit (Changing host).
19:05:18 -!- quintopia has joined.
19:10:37 -!- elliott has joined.
19:11:03 <elliott> 18:36:28: <Phantom_Hoover> We've emailed graue about the spam, right.
19:11:04 <elliott> Yes.
19:11:17 <Phantom_Hoover> What was his approximate response.
19:12:37 <elliott> Nothing yet to my knowledge.
19:12:43 <elliott> He is a busy guy.
19:14:52 <Ngevd> Was malbolge unshackled ever demonstrated Turing complete?
19:16:29 <elliott> I'm sure oerjan has half a proof sketch :P
19:16:38 <Ngevd> Hmm
19:16:49 <Ngevd> I'm trying to add citations to the Wikipedia article for Malbolge
19:20:00 <Ngevd> Because I'm bored
19:20:00 -!- pikhq_ has joined.
19:20:02 -!- pikhq has quit (Ping timeout: 240 seconds).
19:20:06 <Ngevd> And Pietbot isn't any fun
19:25:01 <itidus21> i wonder what magic would mean if defined in mathematical terms
19:25:17 <Ngevd> What sort of magic?
19:25:27 <Phantom_Hoover> itidus21, quantum field theory.
19:27:44 <itidus21> Ngevd: well i was in some other chatroom and someone said to someone else "unless you accept the fact that you believe in magic, well then yes you might get a job... "
19:27:59 <itidus21> after "wishing to have a job, does not mean it will come to you magically afterall..."
19:28:24 <itidus21> so i started to think, the main problem here is that magic isn't really defined
19:30:58 <itidus21> i think that the basic idea of magic is to have some intended change of state stated in natural language, and for that state to come about by some unknown means
19:31:38 <itidus21> maybe it's not that... i find that nearly all supernatural phenomenon that i hear about seems to occur in dreams
19:32:30 -!- Pietbot has quit (Ping timeout: 240 seconds).
19:33:12 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:33:36 <itidus21> <Ngevd> And Pietbot isn't any fun [...] * Pietbot has quit (Ping timeout: 240 seconds) * Ngevd has quit (Ping timeout: 252 seconds)
19:34:05 <olsner> neither i ngevd, apparently
19:34:29 <itidus21> ^is :P
19:34:34 <olsner> yeah
19:34:53 <itidus21> i like showing my comprehension skills through obscure typo corrections
19:36:46 <itidus21> so on this magic thing, everyone has access to electrons but not everyone has access to uranium
19:37:08 <itidus21> those who do have access to uranium gain some power through it
19:37:46 <Phantom_Hoover> ??
19:37:58 <Phantom_Hoover> WHY DO REDDITORS SUPPORT RON PAUL FOR CHRIST'S SAKE
19:38:07 -!- Ngevd has joined.
19:38:13 <Phantom_Hoover> IT MAKES NO SENSE AT ALL
19:38:16 <itidus21> so, if there is such a thing as magic, then it is possible that while everyone has access to it's basic latent elements, that they lack the skills and tools or specific resource deposits to exploit those basic elements
19:38:24 <Ngevd> Magic is the controlled manipulation of the laws of physics
19:38:35 <Ngevd> I was going to say that before I abruptly left
19:39:34 <Phantom_Hoover> So... magic is basically nomic, except the players are defined by the ruleset?
19:39:38 -!- calamari has joined.
19:39:54 <elliott> Phantom_Hoover: Players are defined by the ruleset in most nomics.
19:40:02 <Ngevd> Phantom_Hoover, yes, and the entire universe is part of the game, and it doesn't involve voting
19:40:04 <itidus21> hoover: thats the approach i'm taking here i guess
19:40:09 <elliott> Phantom_Hoover: Even in a non-literal sense, Agora has players which exist solely because Agora declared them to.
19:40:21 <elliott> (Partnerships, which were Agoran contracts given personhood.)
19:40:26 <Phantom_Hoover> I mean that they're objects defined entirely by the ruleset, not that they're external entities.
19:40:32 <elliott> <itidus21> so, if there is such a thing as magic, then it is possible that while everyone has access to it's basic latent elements, that they lack the skills and tools or specific resource deposits to exploit those basic elements
19:40:40 <elliott> I am pretty sure this is the plot of some really famous fantasy or sci-fi book.
19:40:44 <elliott> Or ten.
19:40:52 <elliott> Phantom_Hoover: Right, partnerships.
19:41:05 <elliott> Phantom_Hoover: They rely on human players in the end for life support, though.
19:41:22 <elliott> I mean, the game could continue to exist without the human players (well, in the past; partnerships are gone now), but not much would happen.
19:41:42 <Phantom_Hoover> Yes.
19:42:34 <elliott> Phantom_Hoover: Yes?
19:42:54 <Phantom_Hoover> I was going to reply, but then I noticed that you were agreeing with me so it was pointless?
19:42:56 <itidus21> ellliott: well played, sir
19:43:37 <itidus21> hoover: yeah, it would seem that for a human to fly, for example, he would have to alter the axioms by which his flight is not possible
19:44:03 <Phantom_Hoover> So basically, it's Fine Structure.
19:44:08 <itidus21> or, since axioms don't exist in some deity's office somewhere, he would have to alter the causes of those axioms
19:44:41 <itidus21> perhaps by hiring a demon to go and do it for him
19:44:47 <Phantom_Hoover> (That was originally going to be "Fine Structure: The {game,movie,book,...}", but then I realised that it was literally just Fine Structure.
19:45:14 <itidus21> but, i have not witnessed anything to suggest that magic is real
19:45:28 <itidus21> in the sense i am describing it at least
19:45:45 <Ngevd> I know someone who claims to have experienced Quantum Immortality
19:46:01 <Ngevd> He undied
19:46:10 <pikhq_> Ngevd: Quite astounding, considering that the claims of quantum immortality are a bit untestable.
19:46:32 <pikhq_> If I find myself alive in 100 years, then it'd hit plausible. :P
19:46:45 <elliott> itidus21: Are you carefully crafting your nick pings so that they fail to ping anyone?
19:47:22 <Phantom_Hoover> Also considering that quantum immortality is bullshit.
19:47:24 <elliott> pikhq_: 100? Come on, people have lived over 120, and I'm pretty sure you're younger than 26.
19:47:59 <Ngevd> pikhq_, he got hit by a car, walked it off, went home, had pizza, woke up in hospital having NOT EATEN PIZZA
19:48:01 <itidus21> hmm.. i was having lots of trouble with lag so theres 2 options i turned off.. irc_who_join and net_throttle
19:48:21 <Phantom_Hoover> You might as well say that you can't die because where would your soul go.
19:49:35 <elliott> Phantom_Hoover: I think quantum immortality can be argued fairly effectively, but the vagueness of "observer" kinda kills it.
19:50:10 <Phantom_Hoover> Exactly; it relies on some weird, human-centric interpretation of QM that I've never actually seen a scientific argument for.
19:50:11 <Ngevd> I think quantum immortality exists, but cannot apply to an individual, but only to the universe as a whole
19:50:30 <elliott> Phantom_Hoover: Well, no, it just requires that humans count as observers.
19:50:45 <Phantom_Hoover> Then... where does the immortality come from?
19:50:52 <Phantom_Hoover> You die, someone else observes your death.
19:50:59 <Phantom_Hoover> What makes you, specifically, immortal?
19:51:02 <elliott> Phantom_Hoover: Er, the point is that /you/ never observe your own death.
19:51:11 <Ngevd> elliott, it requires humans as observers AND NOTHING ELSE, I believe
19:51:14 <Phantom_Hoover> Oh, right, that thing.
19:51:47 <elliott> Phantom_Hoover: Your consciousness is an observer flitting through various possible worlds as time goes by; it can obviously never choose to move to a universe in which it doesn't exist; sort-of-Q.E.Z.
19:52:01 <Phantom_Hoover> Zemonstrandum?
19:52:05 <elliott> Ngevd: I don't see why not. If other humans can be immortal and it doesn't matter, then I don't see why a chair couldn't be.
19:52:06 <elliott> Phantom_Hoover: Yes.
19:52:27 <Ngevd> elliott, I meant the thing that would be immortal but nevermind I'm wrong
19:52:33 <Phantom_Hoover> Hmm, I think it then comes down to how you actually define continuity of consciousness.
19:52:35 <itidus21> hmm
19:52:54 <elliott> Phantom_Hoover: The problem is that even if you guarantee that, as time goes by you're more and more likely to wind up totally fucked but still alive.
19:53:05 <itidus21> im not a buddhist but i will offer some analogy from wiki
19:53:18 <elliott> Phantom_Hoover: e.g., so damaged by aging that you just sort of slip in and out of barely-consciousness forever in an almost perpetual coma or whatever.
19:53:32 <itidus21> Where does the monk who has been released reappear? The following exchange results:
19:54:01 <Phantom_Hoover> Why are you considering the properties of monks?
19:54:19 <elliott> Phantom_Hoover: All matter is made out of strings but what most people don't realise is that all strings are made out of monks.
19:54:26 <itidus21> "'Reappear,' Vaccha, doesn't apply." "In that case, Master Gotama, he does not reappear." "'Does not reappear,' Vaccha, doesn't apply."
19:54:30 <elliott> It's just that monk theory is really complicated so most people prefer not to go that far down.
19:54:30 <Phantom_Hoover> Ah.
19:54:34 <itidus21> "...both does & does not reappear." "...doesn't apply." "...neither does nor does not reappear." "...doesn't apply."
19:54:57 <elliott> Phantom_Hoover: Like, "time" starts losing meaning at a sufficiently quantum level; with monk theory, "truth" stops having meaning, so it's really hard to prove things.
19:56:04 <Phantom_Hoover> I had the thought a while ago of yet another sci-fi universe where all species are unaccountably humanoid, except that it's explicable but because of this biology is now several times harder than theoretical physics.
19:56:46 <elliott> (Once you get to the monks' eyebrows, meaning itself loses meaning; if you work anything out about that level, everything ever stops having existed retroactively.)
20:07:39 <itidus21> hm
20:08:21 <itidus21> ideas coming to me
20:10:27 <itidus21> i wish i understood lambda calculus a bit better
20:10:46 <itidus21> but i am infact too lazy
20:11:21 <itidus21> i think that lambda calculus has applications in all aspects of life with regards to any kind of machine
20:13:10 <elliott> ok
20:13:22 <itidus21> maybe i think that who knows
20:13:59 -!- Klisz has joined.
20:14:10 <itidus21> suppose you wanted to program something like a chessboard...
20:14:17 <itidus21> ^checkers board
20:14:51 <itidus21> then.. the program is really manifested by changes of state on that checkers board
20:15:19 <itidus21> and you become the computer
20:16:15 <itidus21> then i guess if you want to explain what you are doing to the checkers board to someone else.. you would communicate this in terms of lambda calculus
20:16:22 <itidus21> ^err.. rather.. you could
20:17:22 <itidus21> maybe my whole idea here is nothing more than me saying in short "i fall short in maths"
20:17:46 <elliott> Maybe that's because you devote all your time to elaborating on how bad you are at it.
20:18:29 <itidus21> would it be possible to use lambda calculus to explain the rules of checkers?
20:19:09 <itidus21> im not asking for a demonstration though.. i know some people here are too eager for such things
20:19:12 <elliott> You could write a program in the lambda calculus that turns a stream of moves from two players into the resulting checkers gamestate, yes.
20:19:36 <elliott> That would describe a mathematical function between the two.
20:19:44 <itidus21> oh yeah.. i forgot that checkers is about moves
20:20:03 <itidus21> hmm..
20:20:31 <elliott> You *forgot* that Checkers involved *moves*?
20:21:05 <itidus21> i confused it a bit with game of life in my head in my eagerness
20:21:27 <itidus21> so, can lambda calc explain game of life?
20:22:00 <Ngevd> Yes
20:22:06 <Ngevd> I wouldn't, though
20:22:31 <itidus21> hmm
20:22:46 <elliott> itidus21: What does "explain" actually mean?
20:23:06 <elliott> Of course you can write a lambda calculus program that runs a Game of Life simulation; the lambda calculus can express everything computable.
20:23:22 <itidus21> it means i'm hiding my termological errors in vague undefined terms
20:23:29 <elliott> That's because... it's Turing-complete, like brainfuck, Underload, Python, Haskell, whatever.
20:24:09 <elliott> Anyway, check out the Hurry-Coward isomorphism if you want to know how the lambda calculus relates to mathematical definitions and proofs: http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
20:24:13 <elliott> Sorry, Curry-Howard.
20:24:58 <itidus21> my behavior appears like a troll but there are genuine thoughts behind it
20:25:12 <Ngevd> elliott, was that spoonerism intentional?
20:25:46 <elliott> Ngevd: Yes.
20:26:57 <itidus21> ok so.. ignoring the idea of just using ones own brain to do a calculation directly
20:27:45 <itidus21> i guess my grand scheme is to find useful ways to perform computation using random objects in ones environment
20:28:03 <itidus21> which were not originally put together to operate as a computer
20:29:37 <itidus21> clearly a human has to have some role in it.. like once it becomes automatic computation then may as well stick with existing computers
20:31:16 <itidus21> it would seem that objects which can be used for computation are limited to that set of objects which one can manipulate
20:33:14 <Phantom_Hoover> <elliott> Anyway, check out the Hurry-Coward isomorphism if you want to know how the lambda calculus relates to mathematical definitions and proofs: http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
20:33:30 <itidus21> ok.. ill click on that link
20:33:37 <Phantom_Hoover> Strictly, the 'standard' untyped LC isn't amenable to CH, but eh.
20:33:48 <elliott> Sure it is, the logic is just inconsistent.
20:33:56 <elliott> And shallow.
20:34:06 <elliott> Alternatively it only has one proposition, U = U -> U, and it's true.
20:34:21 <elliott> So, um, consistent and shallow.
20:34:36 <Ngevd> itidus21, http://en.wikipedia.org/wiki/Unconventional_computing
20:35:03 <itidus21> whoa.. i have been initiated :P
20:35:07 <itidus21> "Billiard balls (billiard ball computer); this is an unintuitive and pedagogical example that a computer can be made out of almost anything."
20:38:42 <elliott> @tell zzo38 Here's something justifying (>>=) as something more than just a convenient abbreviation for (\f -> join . fmap f): it's the type of variable substitution. http://blog.sigfpe.com/2006/11/variable-substitution-gives.html -- this is the tree grafting I mentioned.
20:38:42 <lambdabot> Consider it noted.
20:40:04 <itidus21> hmm
20:41:10 <itidus21> I guess that when a human is part of a computer there are some basic operations he performs. The human will always access the computer by some kind of interface, and that interface will always have a state.
20:42:04 <itidus21> The process of accessing the interface state can be divided into observing the state of the interface and then interpreting it.
20:42:26 -!- monqy has joined.
20:42:33 <itidus21> He can also make changes to the interface state.
20:43:09 <Phantom_Hoover> <elliott> So, um, consistent and shallow.
20:43:22 <itidus21> my rant is going off the rails a bit no
20:43:26 <itidus21> ^now
20:44:03 <Phantom_Hoover> It doesn't define a type system; how does that work?
20:44:52 <itidus21> i guess that is the part whereby the human is "part" of the computer system,,, that he has to have an interface to it
20:45:06 <olsner> derp... got an error message from cmake - there was a cmake cache file referencing the old absolute path to this project and cmake refused to continue
20:45:10 <itidus21> that if he just leaves it to operate on its own then he isnt really part of it
20:46:42 * Phantom_Hoover actually looks up what Hofstadter looks like.
20:46:42 <Phantom_Hoover> Wha.
20:46:54 <olsner> why can't it just manage its cache itself? and who thought it would be a good idea to store full paths in it?
20:46:58 <Phantom_Hoover> (I was going for 'Whoah.', but that works too.)
20:47:42 <Ngevd> Phantom_Hoover, he does not look like I expected
20:48:06 <Phantom_Hoover> I expected his face to consist of a smaller image of his face.
20:53:06 <elliott> <Phantom_Hoover> It doesn't define a type system; how does that work?
20:53:07 <elliott> Sure it does.
20:53:22 <elliott> The "untyped" lambda calculus is a language with exactly one type.
20:53:50 <elliott> (This is not a controversial point, by the way.)
20:53:53 <elliott> Untyped = unityped.
20:54:03 <itidus21> lol
20:54:23 <Phantom_Hoover> I'm not saying that it can't have a type system, just that as it is usually defined there's no explicit built-in one.
20:54:38 <Phantom_Hoover> So it's not that great an example for C-H, although that's hardly the biggest reason.
20:54:49 <elliott> Phantom_Hoover: It's a good thing we're talking about mathematics, which doesn't care about how people present things?
20:54:53 -!- pikhq has joined.
20:55:10 <elliott> Admittedly the C-H is not the most formal statement, but it can certainly be made so.
20:55:21 -!- pikhq_ has quit (Ping timeout: 253 seconds).
20:55:27 <elliott> Nobody is impressed by a logic with exactly one proposition, though.
20:55:35 <itidus21> i am
20:55:45 <elliott> Only because you don't understand it.
20:55:53 <monqy> is it a good proposition
20:56:30 <elliott> Phantom_Hoover: I google imaged Hofstadter to see if he's changed since the last time I remember seeing his visage and the third result is a Big Bang Theory character presumably named after him; let me die I want to bleed away here.
20:56:44 <monqy> ;_;
20:56:44 * elliott no longer desires oxygen.
20:56:50 <Phantom_Hoover> elliott, oh wow you know so little about the horror
20:56:56 <itidus21> elliott: oh yeah, that actor was formerly in roseanne
20:57:02 <Ngevd> What's this C-H thing about
20:57:04 <elliott> itidus21: WHY DO YOU KNOW!!!!!!
20:57:13 <elliott> WHY DOES ANYONE DO ANYTHING BUT TRY AND KNOW AS LITTLE ABOUT THAT SHOW AS POSSIBLE
20:57:16 <elliott> Also why does caps.
20:57:29 <itidus21> because of sheldon
20:57:33 <monqy> i don't knowa nything about that show except what i have glaend form ircs
20:57:34 <Phantom_Hoover> C-H is a way of putting an equivalence between typed languages and proofs.
20:57:42 <Phantom_Hoover> s/proofs/logics/
20:57:51 <monqy> i have glaened: its bad
20:58:02 <itidus21> i always watch it to see sheldon scenes
20:58:02 <elliott> itidus21: ...your point...
20:58:50 <Phantom_Hoover> itidus21, I will tear out your spleen and explain in excruciating detail its biological function.
20:59:11 <elliott> Phantom_Hoover: Haha! You're such a SHELDON! am i doing this "being terrible" thing right.
20:59:23 * elliott practices every day.
20:59:25 <Phantom_Hoover> My life since the Big Bang Theory came out has been pockmarked with Sheldon comparisons from idiots.
20:59:37 <itidus21> hmm
20:59:45 <itidus21> i can relate to socially awkward penguin
21:01:06 <Phantom_Hoover> See, it's people like you who allowed Sheldon to become a thing and consequently ruined my life.
21:01:32 -!- KingOfKarlsruhe has joined.
21:01:58 <itidus21> maybe it will inspire a genre
21:02:34 <Phantom_Hoover> I was not kidding about the spleen.
21:02:38 <itidus21> ... maybe it will even make people who understand bizzare notations attractive to women
21:02:39 <Phantom_Hoover> Where do you live in Australia.
21:02:57 <itidus21> not this show, but other shows which might follow
21:03:14 <monqy> itidus21 do you understand bizarre notations
21:03:32 <itidus21> ... no
21:04:44 <itidus21> i don't like the vagueness of the phrase "people who are intelligent"
21:05:01 <itidus21> since it is vague and implies only one kind of intelligence
21:05:21 <Phantom_Hoover> Since The Big Bang Theory has nothing but thinly-veiled contempt for its protagonists, I doubt it somehow.
21:05:23 <monqy> bizarre notation understanding is clearly the best intelligence
21:05:30 <itidus21> yes
21:05:31 <elliott> A New Kind of Intelligence
21:05:47 <monqy> who would author it
21:05:51 <elliott> itidus21
21:06:06 <itidus21> i would teach classes on it
21:06:12 <itidus21> since i don't actually understand it
21:07:11 <elliott> The joke is that itidus21 doesn't like teachers.
21:08:28 <itidus21> Phantom_Hoover: well tv producers will want to emulate big bang theorys success
21:08:42 <itidus21> so its likely that another show like it will eventually be made
21:09:30 <elliott> itidus21: Yes, which will do absolutely nothing to further how liked "nerds" are.
21:09:33 <itidus21> no .. i am deluded ;_;
21:10:16 <elliott> And anyway it's the people who say things like "maybe it will even make people who understand bizzare notations attractive to women" who would need the help, not the people who understand said notations.
21:12:59 <itidus21> i really want a tv show in which characters discuss things directly.. like "hey chaz, can you help me optimize this integer to string conversion function for my math library?"
21:13:39 <itidus21> "dude, you're really blowing my buzz.. that function already exists in the standard library"
21:13:42 <Phantom_Hoover> do
21:13:50 -!- tuubow has quit (Ping timeout: 240 seconds).
21:13:50 <Phantom_Hoover> do you even know how integer to string conversion sowks
21:13:53 <Phantom_Hoover> *works
21:13:57 -!- augur has quit (Remote host closed the connection).
21:14:03 <itidus21> no
21:14:12 <itidus21> i mean i could do it slowly
21:14:23 <Phantom_Hoover> hint: it's really obviously O(log n)
21:14:48 <itidus21> hmm
21:14:59 <itidus21> what about a lookup table? :D
21:15:14 <monqy> cries softly
21:15:42 <Phantom_Hoover> look what you've done to poor monqy
21:16:39 -!- GreaseMonkey has joined.
21:17:12 <Ngevd> iy[u
21:17:31 <monqy> hi
21:17:48 <itidus21> i could do it i mean i know if you keep track of the position you can do some kind of multiplication by the base
21:17:59 <monqy> what
21:18:03 <itidus21> or in some bases can probably do some kind of shifting
21:18:11 <itidus21> ehh what am i saying
21:18:36 <itidus21> i mean i could write an string to int if i had to ... just not necessarily a very good one
21:18:52 <monqy> but
21:19:04 <monqy> you wanted int to string?????
21:19:17 <Ngevd> What format string?
21:19:22 <itidus21> lol
21:19:23 <Phantom_Hoover> ok
21:19:26 <Phantom_Hoover> iti
21:19:28 <itidus21> Ngevd: no..
21:19:29 <Phantom_Hoover> it consists of
21:19:39 <Phantom_Hoover> - a modulo
21:19:41 <Phantom_Hoover> - a division
21:19:46 <Phantom_Hoover> - a while loop
21:19:49 <Phantom_Hoover> is this so hard??
21:19:54 -!- hagb4rd has joined.
21:20:01 <Ngevd> That tells me nothing of the string?
21:20:30 <itidus21> this could be the show
21:20:36 <monqy> no
21:20:36 <monqy> no
21:20:37 <monqy> no
21:20:37 <monqy> no
21:20:38 <monqy> no
21:20:51 <Phantom_Hoover> DO YOU PEOPLE ACTUALLY WANT ME TO WRITE AN INT TO STRING FUNCTION RIGHT HERE IN THE CHANNEL BECAUSE SO HELP ME I WILL
21:20:59 <monqy> i dont
21:21:14 <itidus21> no
21:21:20 <itidus21> i'll be good
21:21:37 <monqy> for what value of good
21:22:16 <itidus21> any which will express my desire to appease phantom
21:22:46 <Ngevd> I can do a good one in haskell
21:22:51 <Ngevd> > show 67
21:22:52 <lambdabot> "67"
21:23:05 <Ngevd> Converted an int to a string
21:23:08 <Ngevd> No problem
21:23:16 <itidus21> can you reverse it?
21:23:25 <Ngevd> > read "67" :: Int
21:23:26 <lambdabot> 67
21:23:38 <hagb4rd> is it decimal?
21:23:43 <Ngevd> Yes
21:23:44 <itidus21> nice language
21:25:34 <elliott> while input =/= 0 { digit = input mod 10; prepend digit to result; input = input / 10 }
21:25:37 <elliott> was that so hard
21:25:48 <Ngevd> Yes
21:25:59 <elliott> are you serious
21:26:05 <Ngevd> I dunno
21:26:12 <Ngevd> I'm kinda low on sleep
21:26:36 <hagb4rd> its easy with arabic symbols
21:26:41 <itidus21> ok so is game of life turing complete?
21:27:10 <Ngevd> itidus21, the board game or the cellular automaton?
21:27:24 <itidus21> the CA
21:27:27 <Ngevd> Yes
21:27:39 <itidus21> hmm
21:29:05 <elliott> Ngevd: Only with an infinite initial (repeating pattern), I think.
21:29:09 <elliott> *(repeating) pattern
21:29:10 <elliott> Phantom_Hoover?
21:29:24 <Phantom_Hoover> Hello.
21:29:45 <Phantom_Hoover> It's definitely possible to make a finite pattern that's TC; cf. sliding-block Minsky machines.
21:31:13 -!- iconmaster has joined.
21:31:53 <iconmaster> Wow. It's been a while.
21:32:00 <Ngevd> Hello, iconmaster
21:32:05 <iconmaster> So, hi guys.
21:32:11 <Ngevd> I do not recognize your name
21:32:18 <iconmaster> What's up with all this spam on the wiki recently?
21:32:23 <Ngevd> Spam
21:32:29 <monqy> spam
21:32:30 <itidus21> asking questions is ineffiicent.... i need to study this stuff
21:32:35 <iconmaster> Ngevd: yep, it HAS been a while.
21:32:49 <Ngevd> I've been here for... almost half a year now?
21:33:05 <iconmaster> Yeah, I haven't been on in that long
21:33:09 <elliott> hi iconmaster
21:33:30 <iconmaster> i do not assume anyone remembers me, I wasn't really all that important ever anyways
21:33:40 <elliott> I do.
21:33:49 <iconmaster> Really thanks
21:33:52 <elliott> I would guess Phantom_Hoover does too.
21:33:52 <Ngevd> elliott has the memory of a memory freak person
21:33:59 <elliott> And we're the ONLY PEOPLE THAT MATTER.
21:34:04 <Phantom_Hoover> iconmaster!
21:34:06 <kallisti> iconmaster: your name looks vaguely familiar to me.
21:34:07 <Phantom_Hoover> It's been a while!
21:34:15 <iconmaster> So I had an idea for a crazy memory managment system
21:34:20 * kallisti was CakeProphet back then, most likely.
21:34:24 <iconmaster> I am calling it Bloux
21:34:25 -!- boily has quit (Ping timeout: 244 seconds).
21:34:35 <iconmaster> Oh cool hi akeProphet i remeber you kinda
21:34:47 <kallisti> same. :P
21:35:25 <Ngevd> How many esolangers live in Helsinki?
21:35:33 <iconmaster> So my idea is kinda like managing memory by putting files into 'blocks' and stackinh hem kinda like Tetris but worse
21:35:42 <kallisti> Ngevd: all of them.
21:35:52 <elliott> Ngevd: one, two, three, four... at least four or five
21:35:58 <iconmaster> AAAAAAAALL of them?
21:36:04 <monqy> even the esolangers that live in hexham live in helsinki
21:36:06 <kallisti> yes.
21:36:47 <Phantom_Hoover> iconmaster, if you have a straight line of files do they get deleted?
21:37:10 <iconmaster> No, but the fact that the computer decides where to put blocks makes it harder
21:37:29 <iconmaster> it chooses the column with the most space, regardless of wether it will fi or not
21:37:36 <iconmaster> *fit
21:38:03 <iconmaster> And you can only acsess files that are on the very top
21:39:09 <iconmaster> I'm calling the block workspace the Blockventory
21:41:45 <iconmaster> So anyone got any new projects I obviously missed in like the year I havent been here?
21:42:42 <elliott> Tons
21:42:52 <elliott> Nothing much interesting, though :P
21:43:06 <iconmaster> oh too bad
21:43:08 <Ngevd> Essentially my rise and fall in the world of esoteric programming
21:43:19 <Ngevd> And some other stuff
21:43:21 <olsner> only old projects, slowly vaporizing
21:43:45 <Ngevd> !numberwang hello
21:43:48 <EgoBot> I'm sorry, but Brazil isn't a vegetable!
21:43:58 <Ngevd> There are at least three esolangs called Numberwang
21:44:06 <iconmaster> I had that idea today and I said to myself "Why haven't I been on nymore?"
21:44:55 <iconmaster> So I came here
21:45:06 <monqy> hi
21:46:48 -!- augur has joined.
21:47:44 <hagb4rd> lol egobot has punchy arguments at last
21:49:30 <elliott> wat
21:49:39 <elliott> Ngevd: what was your fall
21:49:45 <Ngevd> I've stopped
21:49:53 <elliott> for good?
21:49:57 <elliott> it's been like
21:50:00 <elliott> two to three months since your last esolang
21:50:02 <Ngevd> Until I come up with another idea
21:50:04 <elliott> most of us haven't made one for years
21:50:17 <iconmaster> So we all kinda collectively stalled?
21:50:23 <Ngevd> Yeah
21:50:26 <iconmaster> huh
21:50:30 <elliott> no
21:50:33 <elliott> esolangs just move really slowly
21:50:42 <monqy> there are plenty of esolangs popping up
21:50:45 <monqy> but they're all bad??
21:50:55 <Ngevd> My newest esolang is Brook, made in October
21:50:55 <elliott> iconmaster: cpressey has released a bunch in the last year though
21:50:58 <elliott> and they're all good as usual
21:51:04 <elliott> (he might dispute the term esolang for some of them though)
21:51:17 <monqy> I'd language if I had good ideas
21:51:26 <iconmaster> yeah cpressy is awesome
21:51:39 <Ngevd> My first was Nandypants in July
21:51:52 <iconmaster> Oh I think I remember Nandypants
21:51:57 <iconmaster> maybe
21:52:04 * kallisti holds claim to the glorious language known as dupdog.
21:52:54 <kallisti> pioneering cutting edge DUAL INTERPRETER LANGUAGE SYSTEMS in the 21st century
21:53:00 <elliott> let's see... since september 2010, he's done eightebed, a pixley update, oozlybub and murphy, gemooy, nhohnhehr, kelxquoia, an update to oozlybub and murphy, an update to eightebed, pail, language: xoomonk, flobnar, madison, and another update to pixley
21:53:09 <elliott> that was around the time he stopped coming here, too :(
21:53:30 <monqy> :(
21:53:39 <iconmaster> :(
21:53:43 <Deewiant> :(
21:53:47 <iconmaster> :(
21:53:51 <iconmaster> ):
21:53:53 <elliott> :(
21:53:54 <elliott> you ruined it
21:53:55 <iconmaster> :(
21:53:57 <elliott> :(
21:53:58 <kallisti> :>
21:54:00 <iconmaster> :(
21:54:01 <elliott> you ruined it
21:54:02 <elliott> :(
21:54:04 <monqy> D:
21:54:05 -!- ais523 has joined.
21:54:07 <elliott> you ruined it
21:54:08 <elliott> :(
21:54:13 <iconmaster> ):
21:54:19 <elliott> ) ------- :
21:54:26 <iconmaster> )=
21:54:28 <kallisti> elliott: huh, I wonder why he stopped appearing around these parts.
21:54:30 <kallisti> :(
21:54:41 <elliott> kallisti: because we're all terrible and also it eats time
21:54:46 <Ngevd> As far as I am aware, I first appeared on this channel on the 11th of July of this year
21:55:12 <ais523> [Bulk] ****SPAM(14.0)**** Please my dearest help me!
21:55:13 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
21:55:22 <elliott> ais523: spam is at version 14.0?
21:55:35 <ais523> elliott: re that message, the URL is worrying
21:55:43 <elliott> web's versioning system : spam's versioning system :: firefox's previous versioning system : firefox's current versioning system
21:55:56 <elliott> ais523: it made me think of your students :)
21:55:56 <ais523> and I think it means some relay en route has marked it as spam with a score of 14.0
21:56:00 <monqy> I forget when I first appeared, but it was less than a year ago
21:56:07 <ais523> email relays often seem to change the subject to mark suspected spam
21:56:14 <ais523> the [Bulk] is Yahoo!'s spam marker, I think
21:56:19 <elliott> monqy: it feels like you've always been here
21:56:25 <ais523> but I'm not sure what's responsible for the other spam marker; perhaps gmail
21:56:40 <kallisti> elliott: monqy: hahaha noobs.
21:57:08 -!- nooga has quit (Ping timeout: 252 seconds).
21:57:20 <ais523> it looks like a reasonably standard 419 scam, at least
21:58:21 <elliott> kallisti: what
21:58:29 <elliott> !logs
21:58:30 <Ngevd> Heh, my first "I may" was on that first day
21:58:30 <iconmaster> Hi ais!
21:58:32 <Ngevd> I think
21:58:50 <monqy> I don't think I spoke on my first day
22:00:04 <elliott> ais523: incidentally, I think I've finally managed to figure out a mostly non-hierarchical file structure for ~
22:00:05 <hagb4rd> this is so romantic
22:00:12 <ais523> elliott: what is it?
22:00:18 * elliott twisting unix since some time in the past
22:00:21 <ais523> (I like hierarchical file structures for ~, incidentally)
22:00:46 <iconmaster> ooooh is ~ somehting new
22:00:53 <elliott> ~ is the unix notation for home directory
22:00:59 <iconmaster> oh duuh
22:01:04 -!- Ngevd has quit (Quit: Leaving).
22:01:10 <elliott> but if you'd like something new and denoted by a symbol, let me tell you about @!
22:01:17 <kallisti> ais523: eh, I prefer flat filesystems for ~
22:01:20 <iconmaster> yep I got it now, I thought you were talking about a language
22:01:33 <iconmaster> Yep I was thinking of @
22:01:48 <iconmaster> So is @ a thing yet?
22:01:56 <elliott> Well... no.
22:02:09 <ais523> elliott: err, incorrect, "@" was a symbol when it was used as a placeholder for @'s name, but \"@\" is not a symbol
22:02:17 <elliott> you can't escape @, don't even bother trying
22:02:51 <ais523> elliott: so how do you exit a program in Befunge-93?
22:03:07 <iconmaster> Smash the computer with something heavy?
22:03:14 <elliott> ais523: ~/downloads contains files generally "from elsewhere", and can be cleaned at any moment; ~/cache/<thing> is something that I didn't create, and is expected to be retrievable from elsewhere for the forseeable future, and furthermore is not so huge that doing so would be a pain (for instance, ~/cache/logs/esoteric is the rsync'd logs for this channel); ~/keep/YYYY-MM/<thing> contains things I don't want to lose, organised by order they were
22:03:14 <elliott> added there -- for instance, if I want to save a web page I expect will go away or change, it would go in there; or if I want to store a replacable but very large file
22:03:38 <ais523> hmm, interesting
22:03:40 <elliott> ~/code and ~/media/<type> are managed hierarchically for convenience
22:03:45 <ais523> I store replaceable but very large files on a different partition entirely
22:03:57 <ais523> because it's here, and I'm not using it for anything else
22:04:13 <elliott> what I was missing is ~/cache; there was no place to put things I didn't want to be able to wipe indiscriminately, but that (a) might vary significantly over time and (b) aren't irreplacable
22:04:22 <elliott> the nice thing is, I can just not back ~/cache up
22:04:45 <elliott> but I don't have to worry about redownloading e.g. large installation ISOs in the short term
22:04:56 <ais523> elliott: I have an equivalent to ~/cache
22:05:06 <ais523> but it's a second-level directory "bulky" in anything that might reasonably need that
22:05:25 <elliott> hmm, I think I could make the model more pure by symlinking things in ~/media to ~/keep
22:05:54 <elliott> (technically, I could redownload any one piece of media trivially, so they should be in ~/cache, but redownloading all of them would be prohibitively time-consuming, so ~/keep is the right place, holistically)
22:06:21 * elliott has now used holistically to describe filesystem organisation, and thus gives up his decent person card.
22:06:27 <elliott> *"holistically"
22:06:52 <kallisti> elliott: you were never a decent person.
22:06:59 <elliott> true.
22:07:23 <kallisti> elliott: example: your "slow submission" on anarchy golf
22:07:34 <pikhq> Yeah, my stance of media is generally to act like they're irreplacable not because they *are* but because they are a *pain* to replace.
22:07:38 <elliott> ais523: another thing I might add is ~/scraps/YYYY-MM, which would basically be small-ish immutable things I produce
22:07:47 <ais523> immutable?
22:07:47 <kallisti> ehird(ashamed) I lol'd
22:07:50 <elliott> ais523: e.g. if I write a program just to test something or see if it can be done
22:08:03 <pikhq> Especially when the only extant good encoding of something is self-created.
22:08:04 -!- derdon has joined.
22:08:20 <elliott> kallisti: I made that challenge
22:08:34 <kallisti> even worse.
22:08:34 <elliott> kallisti: as a response to a really stupid one immediately before it
22:08:48 <elliott> quickly submit (post mortem)
22:08:48 <elliott> Submit SLOWLY (endless)
22:08:52 <elliott> http://golf.shinh.org/p.rb?quickly+submit
22:08:56 <kallisti> and then proceeded to game the system. shame on you.
22:09:08 <elliott> ais523: sorry, *~/src, I renamed it
22:09:08 <Phantom_Hoover> I'd mock you guys for being so anal about file organisation, but I always die a little inside when I have to delve into the chaos of ~/Downloads.
22:09:15 <kallisti> anarchy golf ranking is /serious shit/
22:09:20 <Phantom_Hoover> Or ~.
22:09:24 <Phantom_Hoover> Or ~/Programs.
22:09:30 <elliott> ais523: ~/scraps is basically, I used to have ~/Code/scraps, which was one-file one-off things I did, as proofs of concept or tests or whatever
22:09:35 <pikhq> Phantom_Hoover: I try to be, I just fuck it up a lot.
22:09:42 <elliott> but there's no reason it needs to be inside the code directory
22:09:47 <kallisti> ais523: scraps would be cool, especially if it were organized by date
22:09:48 <pikhq> Phantom_Hoover: ~/downloads is Sad.
22:09:51 <kallisti> er
22:09:56 <kallisti> elliott: ^, rather
22:09:57 <elliott> kallisti: <elliott> ais523: another thing I might add is ~/scraps/YYYY-MM, which would basically be small-ish immutable things I produce
22:09:59 <elliott> note date organisation :P
22:10:02 <ais523> <hallvabo (please delete this nonsensical challenge)> print 1
22:10:03 <kallisti> elliott: yes...
22:10:07 <Phantom_Hoover> ~/Documents is getting in a state too.
22:10:08 <kallisti> elliott: I was not blind to it. :P
22:10:16 <Phantom_Hoover> So, amazingly, is ~/Pictures.
22:10:37 <kallisti> elliott: so you could go back in time and see wtf you were working on in a given day. sounds cool.
22:10:42 -!- NihilistDandy has joined.
22:10:47 <elliott> kallisti: any directory with no obvious strong hierarchical navigation and unbounded growth I pretty much index by YYYY-MM
22:10:49 <kallisti> but there's a slight overhead on maintaining the date structure.
22:10:51 <Phantom_Hoover> ~/Music and ~/Videos are organised by dint of having 1 and 2 files in them respectively.
22:10:53 <elliott> e.g. ~/keep too
22:10:57 <elliott> kallisti: note that it's only for immutable things
22:11:15 <elliott> if you work on something again and it's not like a one-off "version 2" that you can just copy and note the old one in a comment of or whatever, then it should go somewhere more permanent
22:11:40 <elliott> (probably ~/code)
22:11:58 <elliott> I don't produce much that isn't code so I don't really have good systems for long-term storage of self-produced non-code works
22:12:07 <kallisti> elliott: what if you're like me and don't create bug-free programs with all the features you want first try. :P
22:12:17 -!- pikhq_ has joined.
22:12:53 <kallisti> elliott: maybe that's an indication that I only write SERIOUS programs.
22:13:06 <elliott> kallisti: you use ~/src/<name> for programs. if you think code should go into ~/scraps by default then you have misunderstood its purpose
22:13:15 <kallisti> elliott: not by default
22:13:18 <kallisti> but small stupid things.
22:13:22 <kallisti> seems appropriate.
22:13:46 <elliott> for instance, here's something that would go into scraps: a file where I try and see if <thing> can be done in haskell's type system, or a stupid thing showing off some perverse language feature in something or whatever
22:13:55 <pikhq_> ~/scraps is very much for those "one-off script" things, near as I can tell.
22:13:57 <elliott> or a shell script I wrote to do a one-off task for a server, say
22:14:15 <elliott> anything I expect to use more than once for a reason other than looking back on old stuff for the hell of it shouldn't go in ~/scraps
22:14:21 * pikhq_ should actually organize things
22:14:25 <elliott> well, s/use/modify/
22:14:26 <Phantom_Hoover> Whose ~ are we even talking about here?
22:14:31 -!- pikhq has quit (Ping timeout: 255 seconds).
22:14:32 <elliott> Phantom_Hoover: my new system
22:14:43 <pikhq_> I'm liking many elements of elliott's system.
22:14:48 <Phantom_Hoover> Will it be the @ of ~ organisation.
22:14:53 <elliott> Replacing my old system, "everything goes directly in ~ apart from code and downloads (which I never clean up and store valuable and crap alike in)"
22:14:55 <Phantom_Hoover> Except with the actually-existing part.
22:15:05 <elliott> Phantom_Hoover: well, it's mostly non-hierarchical, so there's that?
22:15:15 <Phantom_Hoover> is it
22:15:19 <Phantom_Hoover> ORTHOGONALLY PERSISTENT
22:15:19 <elliott> pikhq_: JOIIIIN THE DAAARK SIIIIIIDE
22:15:24 <pikhq_> elliott: Ah, my current standard. :P
22:15:32 * elliott actually invented ~/keep like a year or two ago, he just only used it intermittently.
22:15:39 <elliott> I think it was called ~/Saved at first or something.
22:16:03 * pikhq_ makes a new-structure dir to do this
22:16:19 <elliott> pikhq_: I used to clean up ~ by doing mkdir crap; mv * crap
22:16:30 <elliott> I ended up with nested crap.
22:16:30 <pikhq_> elliott: Hmm. Might be a better idea, TBH.
22:16:37 <pikhq_> Except I already have nested crap.
22:16:44 <pikhq_> ~/oldhome/ :(
22:17:00 <elliott> pikhq_: mkdir -p ~/keep/2011-12/old-home; mv * ~/keep/2011-12/old-home
22:17:07 <elliott> See, that's EFHS-compliant!
22:17:13 <iconmaster> Funny thing how when I use a text-based interface a lot, my files tend to be neat, but with more grapghical stuff it gets messy...
22:17:36 <iconmaster> Do you kinda know what I mean
22:17:55 * elliott 's #1 causer of mess is the fact that browsers download things so conveniently into a single directory.
22:18:02 * iconmaster is getting in the way oif an inteligent discussion, oh my
22:18:14 <elliott> Second to that is starting a new terminal and running wget without bothering to move anywhere reasonable.
22:18:19 <iconmaster> Yeah downloads tend to pile up
22:18:22 <pikhq_> elliott: Clear solution to the first.
22:18:54 <pikhq_> Make ~/Downloads a symlink to ~/cache/downloads/YYYY-MM/
22:19:01 <elliott> Heh
22:19:11 <elliott> ~/cache should be reserved for things I'll actually care about in a month, though.
22:19:30 <elliott> I might set up a cron job to rm -rf ~/downloads/* so that I'm forced to move things into ~/cache or ~/keep if I don't want them obliterated.
22:19:38 <pikhq_> There's a thought.
22:19:43 <elliott> Come to think of it, ~/downloads should probably be ~/tmp.
22:19:47 <elliott> Or ~/tmp/downloads.
22:19:57 <elliott> And new terminals should start in ~/tmp so I can start doing things immediately without cluttering ~.
22:20:00 <elliott> Hm.
22:20:23 <elliott> Actually, not ~/tmp/downloads, just ~/tmp; since I'm liable to wget things it'll all end up mushed together anyway.
22:20:26 * elliott mv ~/downloads ~/tmp
22:20:52 <elliott> Not sure how to start new terminals in ~/tmp, though.
22:20:57 <elliott> Putting it in ~/.bashrc feels like it might break things.
22:21:21 <elliott> Meh, /me does it anyway and waits to see what, if anything, breaks.
22:22:35 <elliott> pikhq_: You're still on Xfce, right?
22:22:43 <pikhq_> elliott: Yeah.
22:23:10 <elliott> pikhq_: You should join us xmonad cool kids. :p
22:23:35 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 9.0/20111216140209]).
22:26:32 <elliott> kallisti: Re: noobs,
22:26:40 <elliott> [elliott@dinky esoteric]$ egrep 'CakeProphet|SevenInchBread' ????-??-??.txt | head -n 1
22:26:40 <elliott> 2006-08-10.txt:00:50:06: -!- CakeProphet has joined #esoteric.
22:26:40 <elliott> [elliott@dinky esoteric]$ egrep ehird ????-??-??.txt | head -n 1
22:26:40 <elliott> 2006-12-29.txt:20:42:41: -!- ehird has joined #esoteric.
22:27:03 * elliott 4 month noob.
22:27:17 <pikhq_> elliott: Lemme first fix this shit.
22:27:52 <elliott> > inits []
22:27:53 <lambdabot> [[]]
22:27:54 <elliott> > inits [0]
22:27:55 <lambdabot> [[],[0]]
22:28:28 <kallisti> elliott: that's all it takes man
22:28:40 <kallisti> elliott: my joining of esoteric marks the end of the Pro Era
22:28:46 <kallisti> in which all subsequent joins are noobs.
22:29:01 <kallisti> ask any #esoteric historian
22:29:08 <kallisti> (I am the only #esotierc historian)
22:30:04 <Phantom_Hoover> As a resident channel crazy memory guy, I can confirm that this is true if taken from your phase of #esotericery that began after I joined.
22:31:02 -!- azaq23 has joined.
22:32:44 <elliott> kallisti: Dude, I've been #esoteric archivist for years.
22:32:57 <kallisti> archivists are not historians
22:33:02 <kallisti> historians ANALYZE.
22:33:07 <kallisti> archivists just collect data.
22:33:15 <Deewiant> elliott: Why not just /tmp.
22:33:34 <kallisti> Deewiant: I don't think he wants stuff to disappear on shutdown
22:33:55 <kallisti> or even, whenever the OS feels like clearing everything in temp (can it do that?)
22:34:18 -!- nooga has joined.
22:35:44 <elliott> Deewiant: Like, directly into /tmp?
22:35:58 <elliott> I'd need a subdirectory at the very least, and I don't see why /tmp/elliott is any better than /home/elliott/tmp.
22:36:17 <elliott> Deewiant: More importantly, /tmp is in RAM.
22:36:18 <Deewiant> You get to avoid the cron job :-P
22:36:25 <elliott> I don't want to download 600 meg ISOs into RAM.
22:36:39 <elliott> Admittedly there's swap, but god knows Linux sucks at swapping.
22:36:51 <Deewiant> Does anything not?
22:36:53 <Deewiant> (Don't say @.)
22:38:40 <kallisti> I don't think swap would act as a special thing in @
22:38:48 <Deewiant> Shut up about @
22:38:58 <elliott> Deewiant: You picked a really bad time to not want me to say @, since @'s entire business with the disk is to negotiate swap as fast as possible.
22:39:12 <elliott> (And as well as possible.)
22:39:38 <kallisti> @'s filesystem is just a big swap partition right? :P
22:39:39 <lambdabot> Maybe you meant: . ? @ ask bf do ft id msg pl rc v wn
22:40:01 <Deewiant> @os
22:40:01 <lambdabot> Maybe you meant: . ? @ ask bf do docs ft id msg oeis pl rc v wn yow
22:40:12 -!- iconmaster has quit (Quit: Probably switching to Pesterchum now.).
22:40:55 <elliott> kallisti: Yes.
22:42:44 <elliott> Deewiant: Also, @ @ @ @ @ @ @.
22:43:14 <elliott> > inits []
22:43:15 <lambdabot> [[]]
22:43:26 <elliott> > inits [()]
22:43:27 <lambdabot> [[],[()]]
22:44:00 <elliott> @src inits
22:44:00 <lambdabot> inits [] = [[]]
22:44:01 <lambdabot> inits (x:xs) = [[]] ++ map (x:) (inits xs)
22:44:20 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [()]
22:44:21 <lambdabot> [[],[()]]
22:44:27 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1,2,3]
22:44:28 <lambdabot> [[],[1],[1,2],[1,2,3]]
22:44:30 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1,2]
22:44:31 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1]
22:44:32 <lambdabot> [[],[1],[1,2]]
22:44:32 <Phantom_Hoover> @yow
22:44:32 <lambdabot> Couldn't find fortune file
22:44:33 <lambdabot> [[],[1]]
22:44:33 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' []
22:44:33 <lambdabot> []
22:44:41 <Phantom_Hoover> lambdabot.......
22:46:01 <kallisti> elliott: I don't really understand why the first element is []
22:46:05 <pikhq_> elliott: Does ~/cache/src make sense? (in here goes tarballs that I expect to open more than once)
22:48:52 <ais523> heh, amidst all that spam, one edit was actually not spam
22:49:12 <elliott> pikhq_: Yep, that makes sense.
22:49:32 <pikhq_> Kay, just sanity checking.
22:49:44 <elliott> kallisti: Because you start with [] and add elements until there aren't any more.
22:49:45 <ais523> anyone have opinions on http://esolangs.org/wiki/SQRT?
22:52:23 <elliott> nope
22:53:10 <monqy> I don't understand it
22:53:32 <ais523> my mind glazes over trying to read it
22:53:38 <ais523> which is why I haven't put any categories but lang and year
22:53:50 <monqy> yes I think that is what happens to me too
22:53:56 <Phantom_Hoover> We should totally invent esomaths.
22:54:17 <Phantom_Hoover> Like, have axiom systems which are completely nuts and show them equivalent to nice things.
22:55:46 <elliott> Phantom_Hoover: that's called mathematics
22:55:49 -!- kmc has joined.
22:56:06 <elliott> Mathematics is basically what happens when you take the fixed-point of parody and thus make a field completely immune to it.
22:56:31 <Phantom_Hoover> I
22:56:39 <Phantom_Hoover> I don't think you understand what mathematics is about?
22:57:20 <elliott> Phantom_Hoover: I didn't say that was how it was *made*, I'm just saying that's what it *is*.
22:57:55 <Phantom_Hoover> Studying equivalence of axiom systems is... not the majority of maths.
22:58:01 <elliott> (If you think I'm wrong you have to produce a credible parody of mathematics that is distinguishable from the real mathematics of 50 years later.)
22:58:02 <elliott> Oh, that.
22:58:04 <elliott> That was a joke.
22:58:09 <elliott> Well, so was the parody thing.
22:58:35 <elliott> Anyway, that's just because you don't study Real Mathematics (Real Mathematics is pure logic).
22:58:39 <elliott> Q.E.Z.
22:58:55 <NihilistDandy> Quod erat zepto?
22:59:30 <elliott> NihilistDandy++
23:00:25 <monqy> how could I forget about zepto
23:00:32 <Deewiant> Quod ee zee
23:01:07 <elliott> Q.E.@.
23:01:18 <Phantom_Hoover> Wait what's zepto?
23:01:24 <NihilistDandy> http://zeptojs.com/
23:01:32 <elliott> Wait, what?
23:01:35 <elliott> I was talking about the Real Zepto.
23:01:40 <NihilistDandy> Oh, that one
23:01:46 <NihilistDandy> http://en.wikipedia.org/wiki/Zepto-
23:01:56 <elliott> NihilistDandy is trolling. :-(
23:02:13 <NihilistDandy> <3
23:02:36 <monqy> fond memories of zeptobot, news-ham
23:03:01 <NihilistDandy> http://www.mcsweeneys.net/articles/the-ipod-zepto-inconceivably-small
23:03:58 <Phantom_Hoover> news-ham ;_;
23:04:05 <elliott> monqy: I need to write cs-words sometime.
23:04:17 <elliott> I'm not exactly sure where to get a list of CS words though.
23:06:16 <elliott> Q: My iPod Zepto stopped playing and now it keeps eating flakes of dead skin that have settled on my furniture.
23:06:17 <elliott> A: That’s a dust mite. Unplug the headphones from wherever you’ve inserted them in the mite and try to locate your iPod Zepto.
23:06:19 <elliott> A+
23:06:29 <Phantom_Hoover> /r/programming :P
23:07:17 <elliott> Phantom_Hoover: I said CS!
23:07:30 <Phantom_Hoover> /r/math
23:07:36 <pikhq_> elliott: Yeah, this is a good organization system.
23:07:39 <Deewiant> /r/compsci
23:07:49 <Phantom_Hoover> /r/AskComputerScience
23:08:06 <NihilistDandy> /r/mltt
23:09:49 <elliott> pikhq_: It was either this, or not compulsively keeping all the gigabytes of crap I find on the internet.
23:09:53 <elliott> The choice was easy!
23:10:52 <pikhq_> elliott: :P
23:11:18 <pikhq_> elliott: Amusingly, I actually have some source in ~/keep/ now.
23:11:30 <pikhq_> Code for school projects that I doubt I'll touch anytime soon.
23:15:56 <elliott> pikhq_: Hmm, I've been using ~/keep/ for data created by others only, but ~/scraps doesn't sound right, since they're not really "scrappy"...
23:16:05 <itidus21> at some point the bottleneck of size would be the headphone cord
23:16:16 <elliott> Perhaps ~/scraps should instead be ~/archive, and contain non-scrappy shelved things too.
23:16:52 <itidus21> headphones really aren't the best way to listen to noise though
23:17:17 * Phantom_Hoover → sleep
23:17:18 -!- Phantom_Hoover has quit (Quit: Leaving).
23:17:38 <itidus21> they're just the most convenient since they avoid the global noise space... only occupying your local noisespace
23:18:07 <pikhq_> elliott: Hmm. So, ~/archive containing things you did you're *not* expecting to really work on?
23:18:12 <pikhq_> Seems reasonable.
23:18:49 <itidus21> organization of artifacts is challenging and genuine work
23:19:06 <itidus21> where artifacts refers to entries in the file system
23:19:30 <elliott> pikhq_: The intention was that ~/keep is basically an immutable, valuable analogue of ~/cache, so storing own-works in there doesn't really make sense (maybe for people less egoistic than me it does though :)); the problem is basically that something like ~/code + ~/scraps doesn't capture everything; you never "work on" other people's stuff, so ~/keep and ~/cache cover everything, but own-projects are essentially divided into three: non-scrappy a
23:19:31 <elliott> ctive, non-scrappy shelved, scrappy.
23:19:40 <elliott> And ~/code and ~/scraps only cover the first and last of those.
23:20:01 <itidus21> i don't like the word file though because it implies organization, whereas artifacts has more implication of the concept of a cupboard full of oddbobs and widgets
23:20:05 <pikhq_> elliott: And ~/code only covers code own-projects.
23:20:22 <elliott> Well, non-own-projects go in ~/keep or ~/cache.
23:20:31 <elliott> I suppose just putting scrappy things in ~/archive is acceptable; after all, it makes sense to move things out of archive to resurrect them, and that's certainly something you do with scraps as well as shelved code.
23:20:34 <pikhq_> Non-code own-projects go ?
23:20:47 <elliott> Argh, I keep saying ~/code.
23:20:49 <elliott> I mean ~/src.
23:20:57 <elliott> Although of course which choice of name is used is irrelevant :P
23:20:59 <elliott> But mine is called ~/src.
23:21:00 <pikhq_> Question remains. :P
23:21:06 <elliott> pikhq_: Well, depends what kind of project they are :)
23:21:14 * elliott mostly just does code, so...
23:21:22 <itidus21> things never quite fit categories
23:21:47 <elliott> But tentatively, I'd assign a new ~/<project-type>/<project> structure for active projects, and use ~/archive all shelved projects.
23:21:51 <elliott> *~/archive for all
23:21:56 <pikhq_> Seems reasonable.
23:22:48 <itidus21> even of 8 bit natural numbers.. you could categorize them into "numbers with 1 bit set", "numbers with 2 bits set", "numbers with 3 bits set".. and so the argument is "number of bits set is a low priority of categorization"
23:23:24 <itidus21> so then you have tension over which forms of categorization take priority when they contradict each other
23:23:53 <elliott> pikhq_: Incidentally, as long as your ~/.bashrc is only loaded by interactive shells, I think "cd ~/tmp" at the end of it should be harmless. Although you might want something like [[ $PWD = $HOME ]] && cd ~/tmp, if your terminal inherits directory when you open a new one, which is quite nice.
23:24:48 <pikhq_> elliott: Certainly tempting.
23:24:50 <itidus21> but if you categorize things by adding a sign into the thing itself, then the thing can have unbounded growth as the number of categories grows
23:25:03 <pikhq_> Handy for the common "random shit" usecase.
23:25:47 <itidus21> like.. you could have a number format with handy bits
23:26:23 <itidus21> i suppose that the last bit of a number indicates odd or even :-?
23:26:33 <itidus21> but you could have a prime bit
23:27:07 <pikhq_> elliott: So, "keep" is basically the catchall for "things I want from the 'net that are going to be a pain to hunt down again", right?
23:27:27 <pikhq_> That seems like a little-used category for me. :P
23:27:51 <elliott> pikhq_: Yes. Or even "things that are easy to hunt down, but I find relevant/valuable"; e.g. PDFs of information you're interested in, very large downloads that can't be classed as trivially-organisable "media", and so on.
23:28:06 <elliott> pikhq_: Well, do you ever look at anything in ~/Downloads?
23:28:09 <pikhq_> Ah. Well, that broadens it enough to be handy.
23:28:31 <pikhq_> So, the default is "move from ~/Downloads to ~/keep if you want to keep it"
23:28:41 <elliott> pikhq_: Anything from your downloads you (a) will look at more than once, and (b) will not be able to trivially replenish if you lost it, goes in ~/keep.
23:29:02 <elliott> ~/cache is things like open source software packages, public IRC logs, etc.
23:29:39 <pikhq_> i.e. shit that you are pretty much just keeping because it's big.
23:29:41 <itidus21> i think some of the best kind of files pair up with an application to represent some object like a document, a song, or a movie
23:29:45 <elliott> pikhq_: BTW, if you put http://sprunge.us/QAKd into ~/.config/user-dirs.dirs, then software will stop making annoying ~/Capitaldirs all the time.
23:29:59 <elliott> (Although you might want to change XDG_DESKTOP_DIR if you use desktop icons.)
23:30:21 <pikhq_> elliott: I've got pretty much that ATM.
23:30:39 <itidus21> i think microsoft made calculator, notepad, paint and then said fuck this
23:31:02 <itidus21> i wonder who they copied those from
23:32:11 <itidus21> clearly they don't know how to invent any interesting GUI app since then
23:35:00 <itidus21> i guess its not their job to make more such apps
23:35:39 <elliott> pikhq_: I just wrote two shell scripts to automatically make ~/{archive,keep}/YYYY-MM and move things into them, but I think I'll rewrite them in Haskell instead and put them up on GitHub...
23:35:54 <elliott> A script outgrows the shell as soon as you have "$(... "...")".
23:39:41 <elliott> Actually, cba, I'll do it later; I don't have any use for them right now, anyway.
23:39:45 <oklopol> elliott: are you in a university yet
23:39:50 <elliott> It's not really prohibitively difficult to do it manually :P
23:40:13 <itidus21> is it now safe to sell a GUI OS with overlapping windows?
23:40:13 <elliott> oklopol: Yes, I'm living under the foundations of one.
23:40:14 <elliott> It's cosy.
23:40:29 <elliott> itidus21: No, that's why Apple doesn't exist.
23:40:37 <itidus21> i mean for me
23:40:51 <oklopol> i see.
23:41:13 <itidus21> linux appears to use overlapping windows
23:41:27 <oklopol> elliott: you should go to a university
23:41:31 <itidus21> well i realize linux is just a kernal and gnu is just a bunch of things to go with kernel
23:41:38 <oklopol> have you considered doing this
23:41:42 <itidus21> but...
23:42:04 <elliott> oklopol: in a nebulous sense, yes
23:42:11 <NihilistDandy> elliott, you should go to UVM, then we can hang out~
23:42:13 <itidus21> i think my comment stands for most versions of linux
23:42:40 <elliott> NihilistDandy: your sincerity is palpable
23:42:53 <oklopol> university of turku has some awesome symbolic dynamics research
23:42:56 <elliott> itidus21: My window manager doesn't overlap the windows it manages without explicit instruction.
23:43:25 <NihilistDandy> It'd be fun. The CS department is practically tolerable, and the math department is awesome
23:44:01 <oklopol> i bet we have better symbolic dynamics than you guys
23:44:06 <itidus21> my window manager is actually a computerized simulation of filming a table with papers on it
23:45:40 <oklopol> NihilistDandy: so i hear you are in a university
23:45:56 <itidus21> its really things like that overlapping window debacle which is why humans deserve to perish in an armageddon
23:45:58 <oklopol> congratulations for not currently wasting your life
23:45:58 <NihilistDandy> Correct.
23:46:01 <NihilistDandy> lol
23:46:24 <NihilistDandy> Perhaps not my life, but certainly a great deal of money
23:46:39 <NihilistDandy> But hopefully I'll get someone to pay for grad school
23:46:50 -!- nooga has quit (Ping timeout: 240 seconds).
23:46:52 <NihilistDandy> Planning to graduate with honors
23:46:58 <oklopol> yeah i got paid a few thousand a year for doing my master's
23:47:02 <oklopol> erm
23:47:03 <oklopol> month
23:47:19 <NihilistDandy> That's what I'm hoping for :D
23:47:20 <itidus21> you'll learn to tile your windows after 10 years of study and research leads you to some patented conclusion of overlapping your windows
23:47:30 <elliott> oklopol: how old are you these days
23:47:36 <oklopol> and i'll get just as little next year :/
23:47:41 <oklopol> i'm 22.
23:47:54 <elliott> itidus21: you realise those patents were overturned
23:48:04 <elliott> oklopol: do you have your first phd yet
23:48:08 <oklopol> no :(
23:48:09 <itidus21> lol. i did not realize :P
23:48:12 <oklopol> i'm a fucking loser
23:48:24 <itidus21> this is joyous news
23:48:40 <NihilistDandy> Not really. I took a while off before I went to school, so I'm 22 and still in undergrad.
23:48:48 <NihilistDandy> Who's the loser now? :D
23:48:53 <itidus21> for all i knew it could have been patent trolls protecting each other over them
23:49:04 <elliott> itidus21: they were overturned in the 80s or 90s, aka shortly after apple sued microsoft over them, and btw it was apple who owned them not microsoft.
23:49:32 <oklopol> NihilistDandy: i don't consider people who don't get their phd before they are 22 losers. i consider myselves that cannot do that losers.
23:49:42 <NihilistDandy> lol
23:49:44 <itidus21> all my knowledge about it comes direct from wiki pages i just browsed
23:50:07 <itidus21> i was looking up windows 1.0 to try to figure out why early windows GUI apps were actually interesting
23:50:15 <elliott> specifically in 1988 apple sued microsoft for using overlapping windows in windows 2.0; 4 years later apple lost
23:50:22 <elliott> actually it was not patents, it was just a copyright infringement case.
23:50:27 <itidus21> lol
23:50:38 <oklopol> anyhow i figure if i prove a result a day, i should have a phd in a couple of years automatically
23:50:48 <elliott> oklopol: well cute, let me know when you have 3 phds or so
23:50:49 <itidus21> yeah even apple would not have the counter intuitive insight to patent overlapping windows
23:50:53 <elliott> and i might listen to anything you say
23:51:11 <oklopol> i doubt i'll get a second one
23:51:18 <elliott> oklopol: ohhh you're one of the lightweights. ok
23:51:20 <oklopol> i've realized everything except math is just gay
23:51:25 <elliott> thought you were, you know
23:51:26 <itidus21> i know technically euclid knew about overlapping windows
23:51:26 <elliott> serious
23:51:34 <elliott> oklopol: wow you think i meant in something other than mathematics?
23:51:39 <oklopol> :D
23:51:39 <itidus21> but this is besides the point when courtrooms and business is involved :P
23:51:43 <elliott> it would be insulting to myself to suggest such a thing
23:52:00 <oklopol> elliott: can't i just publish a lot of papers? i'm not sure you can have two phd's in math.
23:52:29 <oklopol> well i guess that's my problem, not yours
23:52:33 <elliott> oklopol: uh why not, let's say you move to another country, say the us, and enroll in phd shit using your master's degree
23:52:34 <elliott> and get a phd
23:52:40 <oklopol> huh.
23:52:41 <NihilistDandy> @remember <oklopol> i've realized everything except math is just gay
23:52:42 <lambdabot> I will remember.
23:52:42 <elliott> like i doubt they ask
23:52:47 <elliott> "do you already have one of these"
23:52:48 <Sgeo> If I say that I stopped looking at Common Lisp due to one function (which acted as the straw that broke the camel's back), and elliott, as he tends to do, defends whatever I criticize against my criticism
23:52:53 <elliott> NihilistDandy: bad idea, that has bold characters in it
23:53:01 <elliott> @forget <oklopol>
23:53:01 <lambdabot> Incorrect arguments to quote
23:53:06 <elliott> @forget <oklopol> i've realized everything except math is just gay
23:53:06 <lambdabot> Done.
23:53:12 <elliott> @remember <oklopol> i've realized everything except math is just gay
23:53:12 <lambdabot> Nice!
23:53:14 <elliott> Sgeo: then?
23:53:25 <oklopol> never forget
23:53:56 <NihilistDandy> And you can totally get PhDs in subsets of math
23:53:59 <Sgeo> Would that imply that I should give CL another chance?
23:54:19 <elliott> Sgeo: no, just use haskell forever
23:54:24 <elliott> i have you in the ri
23:54:26 <elliott> ght place now
23:54:34 <NihilistDandy> That's my favorite part about school. Bio and chem majors go "What do you mean '"math'? I'm not a 'science' major."
23:54:46 <NihilistDandy> *-(central ")
23:55:03 <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:14 <elliott> `addquote <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:19 <NihilistDandy> You've described my plan perfectly
23:55:23 <HackEgo> 772) <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:24 <Sgeo> Template Haskell is ugly. Well, quasiquoters are, anyway
23:55:31 <elliott> @forget <oklopol> i've realized everything except math is just gay
23:55:31 <lambdabot> Done.
23:55:34 <elliott> @remember oklopol i've realized everything except math is just gay
23:55:34 <lambdabot> It is stored.
23:56:02 -!- elliott has set topic: <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself | http://codu.org/logs/_esoteric/.
23:56:06 <elliott> i just want the world to see that quote.
23:56:09 <oklopol> why is one hackegoed and the other lambdabotten?
23:56:24 <Sgeo> "Note that append copies the top-level list structure of each of its arguments except the last. "
23:56:29 <elliott> oklopol: bot affirmative action
23:56:37 <oklopol> i see.
23:56:51 <Sgeo> But, at the time that I got frustrated with CL and ragequit due to that, I did not see "The function concatenate can perform a similar operation, but always copies all its arguments."
23:56:56 <oklopol> it's bot, botted, botten right?
23:58:02 <elliott> yes.
23:59:17 -!- PiRSquared17 has joined.
23:59:20 <NihilistDandy> bot, botted, _|_
23:59:28 <elliott> :D
23:59:33 <elliott> bottem
2011-12-22
00:00:05 <Gregor> Mao Ze Cat may be the best of all possible cat names.
00:01:42 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:01:47 -!- zzo38 has joined.
00:02:54 <PiRSquared17> The Main Page isn't semi-protected... is that for a reason?
00:03:27 <elliott> Nobody vandalises it, and it's only recently received incredibly mild spam thanks to the recent huge spam wave.
00:03:31 <elliott> Is there any reason to semi-protect it?
00:04:47 -!- Klisz has joined.
00:12:28 * itidus21 . o O ( characters which are rotations of each other: asymmetrical: qb pd symmetrical: () [] {} <> )
00:13:24 <elliott> wow this is rare, it's early night and i actually feel tired
00:15:49 <itidus21> i suppose something can also be said of characters which are made up out of other characters: :;=" ,._'
00:17:01 <ais523> itidus21: un are rotations of each other
00:17:05 <kallisti> itidus21: http://perlcabal.org/syn/S02.html#Bracketing_Characters
00:17:12 <itidus21> ais523: nice :D
00:17:41 <ais523> kallisti: oh right, Perl 6 actually uses «»
00:17:57 <ais523> but you can type them as << >>, which is useful if you don't have a « or » key on your keyboard
00:18:02 <ais523> (I do; altgr-z/altgr-x)
00:21:38 <itidus21> this could be useful in something like nintendo entertainment system when you want to minimize the overhead of each character
00:23:30 <NihilistDandy> It's the rather inconvenient Option-Shift-\ and Option-Shift-| on OS X :/
00:23:53 <ais523> itidus21: typewriters used not to have 0 or 1 keys
00:23:58 <ais523> you just typed O or I instead
00:25:54 <kallisti> wow these bracketing rules are complex.
00:27:09 <elliott> NihilistDandy: you can make your own mapping for things like that, or use an operating system with compose key support
00:27:41 <NihilistDandy> I know. I'm just talking defaults. If I were planning to use them, I'd like just remap the keys
00:27:43 <NihilistDandy> *likely
00:30:04 -!- calamari has quit (Quit: Leaving).
00:33:43 <elliott> hmm, I think I'll go to bed at 1 am
00:34:22 <oklopol> i woke up at something like 1
00:34:45 <PiRSquared17> What about w and m?
00:43:07 <ais523> PiRSquared17: those aren't rotations in the vast majority of fonts
00:44:05 <ais523> oh well, my Firefox just upgraded from 3.5 to 9
00:44:11 <ais523> that was a bit of a shock
00:44:25 <ais523> (I did let the update manager do that, and it was in -proposed not -security, but still, it's quite the jump)
00:44:50 -!- DCliche has joined.
00:45:34 <ais523> hmm, where's the setting to put the tabs back beneath the URL bar? the current location is crazy, because it's not even at the top of the screen
00:45:47 <ais523> so it's just bad in terms of Fitts' Law
00:46:25 <ais523> also, the new colour scheme for the tabs (based on window title not dialog background) is ugly
00:46:48 <elliott> chrome has tabs right at the top of the screen when maximised. i like that
00:47:01 <ais523> ah, found it, View | Tabs on Top
00:47:05 <ais523> elliott: yep, that makes /sense/
00:47:10 <ais523> whereas Firefox has the menu bar above them
00:47:28 <ais523> also, the top gnome-panel thing
00:47:43 <ais523> tabs on top make sense if I fullscreen Firefox, but I don't do that
00:48:08 <ais523> also, ugh at /having/ a status bar (for addons), but /not putting information that should be on the status bar there/
00:48:14 -!- Klisz has quit (Ping timeout: 248 seconds).
00:48:14 <ais523> that's, umm, wtf?
00:48:35 <elliott> ais523: /me likes his panels at the bottom for the same reason :p
00:49:51 <ais523> elliott: well, I have a panel at top and a panel at bottom
00:50:07 <ais523> and at least the bottom one, I use a /lot/, so it makes sense that it gets the bottom screen edge
00:50:18 <ais523> also, lock screen badly needs a corner, but I could put it in a bottom corner not top corner, I guess
00:51:21 <elliott> ais523: why a corner? it needs a keyboard shortcut
00:51:35 <ais523> really? mouse-based lock I use more often
00:51:44 <elliott> it's a single action that you want to be readily-accessible; pointing has no use there
00:51:46 <ais523> and in most of the circumstances where I'd want to quickly lock the screen, I have a hand on the mouse
00:52:08 <elliott> well, yes; obviously if your workflow is biased to one input device, then you're biased to solutions that use it, even if they're suboptimal
00:52:39 <ais523> elliott: well, sometimes what I do is keyboard-driven, sometimes it's mouse-driven
00:52:49 <ais523> but in the circumstances when I normally want to lock the screen, I'm using the mouse at the time
00:53:18 <ais523> (fwiw, the only way to shut down the system, barring killing X and shutting down from the login screen or doing sudo shutdown, etc, by hand, is the physical power button; I realised I didn't need a shutdown widget because I had that instead)
00:54:35 * elliott is the kind of person who just wants a way to say "bye" and it does the equivalent of bring up a user-switching dialogue
00:54:49 <ais523> hmm, so how do I get Firefox to not delete the http from the start of the line?
00:54:56 <elliott> turning off the display is handled by idle-out time, suspending and hibernating too
00:55:13 <elliott> for a laptop, you don't even need that on a single-user machine, it just has to react to closing the lid
00:55:17 <ais523> the inconsistency annoys me slightly; also, there's enough space on that line as it is, so removing the http isn't going to hurt anything
00:55:39 <elliott> ais523: why don't you do what anyone else would have to do to answer your question, and google it?
00:55:53 <ais523> elliott: that's what I did do
00:55:57 <elliott> it's information which is (a) trivial to search for, (b) trivial to verify the accuracy of, and (c) will be a common enough wish to be readily accessible
00:55:59 <ais523> I was just wondering if someone knew the answer offhand
00:56:07 <ais523> and it's not trivial to search for, it took me two tries
00:56:18 <elliott> maybe you should practice more
00:56:30 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=show+http+firefox+7
00:56:42 <elliott> admittedly, "7" is cheating because it came up int he suggestions
00:56:47 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=restore+http+prefix+firefox
00:56:57 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=show+http+firefox
00:57:09 <ais523> I eventually found it with "firefox http address bar"
00:57:16 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=don't+hide+http+firefox (fifth result)
00:58:10 <NihilistDandy> https://www.google.com/search?client=browser-rockmelt&channel=omnibox&gcx=c&sourceid=chrome&ie=UTF-8&q=http+firefox
00:58:18 <elliott> NihilistDandy: Rockmelt?
00:58:20 <elliott> Are you fucking serious?
00:58:22 <NihilistDandy> Fifth result again
00:58:26 <ais523> hmm, seems that the status bar thing needs an addon to fix
00:58:30 <NihilistDandy> I like to make you cry, elliott
00:58:35 <elliott> NihilistDandy: ROCKMELT?
00:58:42 <NihilistDandy> I don't actually use it. :P
00:59:13 <NihilistDandy> Now, do I have it on my computer? Yes.
00:59:20 <NihilistDandy> Did I use it for that search? Yes.
00:59:32 <monqy> I don't know anything about rockmelt is it any good
00:59:56 <NihilistDandy> Hahaha
01:00:07 <NihilistDandy> For a very bizarre interpretation of good, yes
01:00:09 <ais523> with a stupid name
01:00:50 <NihilistDandy> I'm a safari guy, myself
01:00:53 -!- DCliche has quit (Quit: You are now graced with my absence.).
01:01:23 <NihilistDandy> The Chrome UI doesn't sit well with me, and Firefox keeps pretending it has major updates
01:04:08 <elliott> anyone who can use safari for more than a day isn't human
01:05:55 -!- Sgeo has quit (Read error: Connection reset by peer).
01:06:36 <NihilistDandy> I am not human, then
01:06:42 <elliott> indeed
01:06:50 <elliott> ais523: tell me to go to bed pls, it's (a) 1 am and (b) i'm tired
01:06:57 <elliott> and i even slept yesterday
01:07:28 <NihilistDandy> I've used Chrome and FF extensively, and I just don't see much to draw me into them.
01:07:31 <ais523> elliott: you know? sleeping might actually be a good idea for once
01:07:39 <NihilistDandy> Open source is fun, I guess, but I could give a shit about browser dev
01:07:41 <monqy> all browsers are awful :'(
01:08:14 -!- Sgeo has joined.
01:08:27 <ais523> Firefox wins for me just because of superior customizability; all browsers suck, so pick the one that you at least have a fighting chance of making suck less
01:08:44 <ais523> fwiw, Opera's the only browser that's managed to offend me enough to actually uninstall it
01:08:50 <NihilistDandy> ^^
01:08:50 <monqy> im still waiting for @ to solve all of my problems ever
01:08:53 <NihilistDandy> Same
01:09:11 <ais523> (I have IE6 installed atm but not Opera; that said, I don't use IE6 for anything but compatibility testing, because it's IE6, and I do it with my network connection turned off)
01:09:18 <NihilistDandy> Christ, anyone who can use Opera for more than a day is definitely not human
01:10:27 * elliott finds that you can't actually make firefox not suck
01:10:39 <elliott> unless there's a Don't Bring My System To A Crushing Halt When I Have >200 Tabs extension
01:10:53 <NihilistDandy> There is not
01:10:58 <NihilistDandy> :(
01:11:13 <elliott> at least with chrome i rarely actually think "I'm using chrome" because it never actually pops up any annoying dialogues or UI elements to remind me I'm using chrome
01:11:17 <elliott> and it's fast
01:11:18 <elliott> so yeah
01:11:25 <elliott> also its tab bar is nicer than firefox's
01:11:50 <itidus21> its interesting that people rarely have 50 apps open at one time, but easily manage to get 50 browser tabs open at one time
01:11:58 <NihilistDandy> I prefer my tabs under my nav bar
01:12:08 <NihilistDandy> itidus21: That's a memory issue
01:12:21 <Sgeo> elliott, even on Chrome, my system slows down with too many tabs
01:12:38 <Sgeo> ais523, how did Opera offend you?
01:12:46 <NihilistDandy> And yet, strangely, I have not yet managed to hit the upper limit of tabs in Safari
01:13:01 <ais523> Sgeo: gah, don't make me remember
01:13:02 -!- marcomarco100 has joined.
01:13:03 <NihilistDandy> Occasionally I'll come back days later and find tabs I still haven't made it to :D
01:13:13 <marcomarco100> Hi
01:13:18 <ais523> the notification tray icon with the Opera logo was a pretty big offender, though, and that wasn't the only problem
01:13:20 <ais523> hi
01:13:22 <ais523> `? welcome
01:13:23 <monqy> my biggest problem with crhome is the stupid noneditable autocompletion on the address bar thingy
01:13:24 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:13:45 <elliott> Sgeo: your system is beyond terrible isn't it
01:13:53 <NihilistDandy> monqy: *nod*
01:13:58 <elliott> `welcome marcomarco100
01:13:59 <Sgeo> For some reason, Reddit loads slowly in Chrome, freezing other Reddit tabs
01:14:00 <elliott> ais523 failed to do it properly!
01:14:00 <HackEgo> marcomarco100: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:14:01 -!- marcomarco100 has left.
01:14:03 <monqy> sometimes it starts autocompleting things incorrectly and i can't fix it and ugh what i really want is just to be able to configure it :(
01:14:08 <ais523> elliott: I /always/ do it as `? welcome
01:14:11 <ais523> also, you scared him away
01:14:15 <monqy> so I can have like
01:14:18 <ais523> or her, I guess
01:14:18 <monqy> kjeyboard-bookmarks
01:14:24 <ais523> although it's an explicitly male nick
01:14:40 <NihilistDandy> I find that if I load a few Chrome tabs at once, they all freeze up until the last one finishes loading
01:14:42 <elliott> monqy: hint: if you wait a second then it usually works, or if you hit the down arrow after a second there's usually an unmodified alternative
01:14:42 <NihilistDandy> It is not amusing
01:14:45 <elliott> i only rarely run into that though
01:14:53 <elliott> NihilistDandy: I diagnose the problem as OS X
01:14:56 <NihilistDandy> And Flash opening in the background is a pain in the ass
01:15:05 <Sgeo> NihilistDandy, block the plugin
01:15:11 <Sgeo> You can selectively enable it as needed
01:15:12 <itidus21> i use flashblock with firefox
01:15:14 <monqy> elliott: but then I have to wait/pay attention
01:15:17 <NihilistDandy> I did.
01:15:27 <NihilistDandy> I just would rather it not load them till I get to the page
01:15:29 <monqy> whereas I prefer doing things quickly while looking in the other direction
01:15:37 <zzo38> One way is to simply disable (or uninstall) Flash.
01:15:37 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
01:15:44 <itidus21> i use flashblock with firefox
01:16:00 <itidus21> its really the rolls royce of dealing with flash i think
01:16:14 <zzo38> Is it possible to tell Mozilla to load the entire HTML document first before loading any images, CSS, or anything else?
01:16:16 <NihilistDandy> I don't even know how to evaluate that statement
01:16:37 <monqy> evaluate? fancy
01:16:48 <elliott> ais523: hi, kickban me so i go to bed, thank you
01:16:52 <itidus21> flashblock replaces a flash element with a simple element that if clicked on will load the flash element
01:16:58 <elliott> you can undo it after an hour or so
01:16:58 <ais523> elliott: I don't think ops are meant to be used for that
01:17:02 <ais523> you could try uninstalling your IRC client
01:17:03 <zzo38> Who is the message?
01:17:05 <NihilistDandy> I'm aware of how Flash blockers work, itidus21
01:17:09 <elliott> zzo38: ?
01:17:12 <ais523> and then cutting your Internet access wires so you can't reinstall it
01:17:12 <itidus21> NihilistDandy: if you say so
01:17:14 <elliott> ais523: but this is the first time i've been tired in months!
01:17:18 <ais523> elliott: go to bed then!
01:17:20 <zzo38> ?messages
01:17:20 <lambdabot> elliott said 4h 38m 38s ago: Here's something justifying (>>=) as something more than just a convenient abbreviation for (\f -> join . fmap f): it's the type of variable substitution. http://blog.
01:17:20 <lambdabot> sigfpe.com/2006/11/variable-substitution-gives.html -- this is the tree grafting I mentioned.
01:17:23 <elliott> ais523: bed is hard!
01:17:24 <monqy> one of my uses of flash blockers is to stop video autoplay
01:17:27 <monqy> but then html5 video and
01:17:29 <monqy> cries softly
01:17:30 <elliott> bed is difficult. why bed when irc.
01:17:40 <ais523> elliott: do you really like reading conversations /this/ boring?
01:17:46 <zzo38> Hay you ! Stop putting line breaks in the wrong place like that please
01:18:06 <elliott> ais523: glowing changing screens are more interesting than blackness!
01:18:06 <itidus21> NihilistDandy: ok i know what you mean, its like the browser doesn't want you determining which elements to display
01:18:07 <monqy> me?
01:18:22 <elliott> monqy: lambdabot i think
01:18:22 <ais523> elliott: why not just turn your computer off?
01:18:29 <monqy> oh
01:18:30 <elliott> ais523: it's got IRC on it!
01:18:31 <ais523> it's one button, or possibly two if you have a confirmation
01:18:33 <ais523> just go press it
01:18:34 <ais523> right now
01:18:38 <elliott> no, i have to hold it down for that to work
01:18:47 <elliott> and i'd realise i was getting rid of irc in the middle of it
01:18:55 <ais523> pressing the power button doesn't start a shutdown sequence?
01:18:55 <Sgeo> I could start linking to Station V3 and talking about using PSOX to improve it.
01:18:57 <monqy> try m-Q
01:18:59 <elliott> also i might lose data because of fsck things
01:19:01 <NihilistDandy> itidus21: In Safari, if I open a tab with a Flash element, it does not load until I give the tab focus, regardless of the plugins I have installed.
01:19:06 <elliott> monqy: that'll dump me at a shell prompt
01:19:07 <NihilistDandy> I'd just like to see that from other browsers
01:19:09 <elliott> ais523: nope
01:19:19 <ais523> elliott: I'm not talking about hard poweroff; I'm just shocked that soft poweroff isn't the result you get by pressing the power button
01:19:21 <monqy> elliott: then you're pretty much shut down
01:19:23 <elliott> indeed
01:19:25 <ais523> or, hmm, you could always REISUO your system
01:19:27 <monqy> elliott: just type a few words and bam
01:19:35 <elliott> ais523: or you could just kickban me!
01:19:37 <ais523> that's kind-of awkward to interrupt as soon as you hit the E
01:19:53 <elliott> hmm, I could just spam the channel
01:19:55 <ais523> and you don't lose data because of fsck things because that's what the S is for
01:20:07 <elliott> monqy: hi
01:20:13 <monqy> elliott: hi
01:20:16 <elliott> monqy: hi
01:20:19 <Sgeo> elliott, even if you were kick-banned, you might end up just reading stuff online. That's what I tend to do
01:20:29 <elliott> Sgeo: my eyes are almost closed
01:20:36 <monqy> elliott: once you're at the shell prompt it will take more work to get into irc than to shut down
01:20:39 <elliott> monqy: hi
01:20:43 <monqy> elliott: hi
01:20:47 <elliott> monqy: hi
01:20:51 <monqy> elliott: or do you secretly not want to slep....
01:21:08 <Sgeo> elliott, just put us all on ignore
01:21:12 -!- elliott has quit (Remote host closed the connection).
01:21:17 <Sgeo> Or that works too
01:22:15 <zzo38> elliott: I have actually used >>= for something similar to what that says.
01:26:22 <kallisti> Sgeo: NEXT EPISODE ON HOMESTUCK: VAMPIRES VS. CLOWNS. WHO WINS?
01:26:49 <kallisti> god this is ridiculous.
01:28:53 <zzo38> Who wins, at what game? Poker or chess?
01:29:07 <zzo38> Or is it Washizu mahjong?
01:29:45 <monqy> it's the majong.
01:30:17 <kallisti> it's the game of life
01:30:23 <kallisti> the one were the LOSER FACES DEATH
01:30:30 <kallisti> when you die in real life you die IN REAL LIFE.
01:31:22 <zzo38> When you die in Canada, you die in real life.
01:31:46 <kallisti> MY GOD. NO. WHAT HAVE I DONE.
01:31:51 * kallisti flees Canada immediately.
01:31:54 <ais523> `addquote <zzo38> When you die in Canada, you die in real life.
01:31:57 <HackEgo> 773) <zzo38> When you die in Canada, you die in real life.
01:32:10 <zzo38> When you die in not Canada, you also die in real life!
01:32:22 <kallisti> what? NO. FUCK
01:32:24 <monqy> "When you die in Canada, you die in real life." sounds eerily familiar
01:32:37 <Gregor> ... lol
01:34:08 <Sgeo> Therefore, if you die in real life, you die in Canada.
01:34:14 -!- Tritonio has joined.
01:34:20 <kallisti> if Gregor had a strife specibus, it would be hatkind.
01:34:46 <zzo38> What does that mean?
01:34:51 <kallisti> nothing.
01:34:53 <Sgeo> zzo38, Homestuck
01:34:55 <kallisti> :)
01:35:04 <zzo38> Sgeo: That is not a very good logic because not everyone Canada.
01:35:22 * Sgeo is aware of this.
01:35:45 * Sgeo is fully aware that if a then b does not imply if b then a
01:36:06 <monqy> thanks sgeo
01:36:09 <monqy> for being
01:36:11 <monqy> ~aware~
01:36:25 * Sgeo just wanted to make zzo38 aware that he is aware
01:36:25 <kallisti> Sgeo: btw, THAT IS NOT HOW IMPLICATION WORKS.
01:36:59 <Sgeo> Should I have said necessarily imply?
01:37:06 <kallisti> zzo38: quick, give this operator meaning in Haskell: >|=
01:37:14 <kallisti> zzo38: could it be a barrier monad thing? the | looks like a barrier.
01:37:24 -!- Tritonio has quit (Client Quit).
01:37:32 <kallisti> Tritonio: bye
01:37:54 <Sgeo> > kallisti: Be an Active Worlds bot.
01:38:15 <monqy> this is the worst channel
01:38:28 <kallisti> my goal in life is now to make a Haskell library with every ridiculous operator you could possibly think of.
01:38:34 <kallisti> monqy: no I bet #jesus is actually worse.
01:38:47 <kallisti> also channels that only have one person.
01:38:48 <monqy> sometimes a channel is so bad I forget worse channels exist
01:39:15 <zzo38> kallisti: OK lets me try to think of what it can be..
01:39:17 <Sgeo> monqy, am I really that horrible?
01:39:39 -!- derdon has quit (Remote host closed the connection).
01:39:46 <monqy> Sgeo: it was that single line
01:40:01 <monqy> it was amazing and i love it
01:40:09 <monqy> sometimes things are good because they are bad
01:40:42 <kallisti> my goal is now to find a way to create like 20 new operators in a Haskell library.
01:40:53 <zzo38> kallisti: Do you have ideas?
01:40:53 <monqy> what makes an operator new
01:41:04 -!- Tritonio has joined.
01:41:05 <kallisti> >|= is good
01:41:11 <kallisti> zzo38: but no I don't actually produce ideas.
01:41:15 <monqy> what does (>|=) do
01:41:26 <kallisti> dunnp/
01:41:30 <Sgeo> Template Haskell to take any function of two or more arguments and make a random operator out of it
01:41:48 -!- azaq23 has quit (Read error: Operation timed out).
01:41:53 <kallisti> so then you just have to guess what the operator is?
01:41:56 <kallisti> sounds good.
01:43:24 <Sgeo> > kallisti: Read MSPA update
01:43:41 <monqy> the activeworlds bot line had more soul to it
01:43:41 <kallisti> > Sgeo: okay
01:43:42 <lambdabot> Not in scope: data constructor `Sgeo'Not in scope: `okay'
01:45:20 <GreaseMonkey> Sgeo: the latest pic is amazing :D
01:46:43 <Tritonio> Hello. Any brainfuck news? Any breakthrough?
01:47:03 <monqy> brainfuck?
01:47:31 <Tritonio> Eh... Yes?
01:47:36 <zzo38> If you want to make a library of operators, one thing that could have is the <>>= operator that I have made. You could also have bool x y z = if z then y else x; and make a infix operator form of that possibly
01:47:39 -!- azaq23 has joined.
01:47:50 <Tritonio> For a moment I bought I was in a wrong room.
01:47:52 <zzo38> Tritonio: What about brainfuck specifically do you want to ask?
01:47:59 <itidus21> it has currently been impossible to introduce brainfuck into the junior curriculum for obvious reasons
01:48:00 <Tritonio> Thought*
01:48:26 <Sgeo> Tritonio, we used to play games based on Brainfuck
01:48:42 <zzo38> Yes, and ask if you are interested about those kind of game too.
01:48:53 <Tritonio> Zzo38 anything new. She when do you mean?
01:48:58 <monqy> itidus21: what obvious reasons
01:49:25 <itidus21> that you can't teach anything to young people containing the word fuck
01:49:27 <kallisti> monqy: it has fuck in the name. ha. ha. ha.
01:49:30 <monqy> ha
01:49:44 <zzo38> Tritonio: Look on the wiki. There isn't really much new, but if you have additional ideas, you can discuss them
01:49:47 <kallisti> Tritonio: I don't forsee any brainfuck "breakthroughs" occurring anytime soon.
01:49:59 <kallisti> let us know if you discover any.
01:51:32 <Tritonio> OK I'll check the brainfuck page she for the games. Kallisti that's bad. What would you say that we start a brainfuck golf for selected problems from project euler?
01:52:01 <Sgeo> BFJoust
01:52:02 <Tritonio> She -> sgeo
01:52:19 <Sgeo> http://esolangs.org/wiki/BF_Joust
01:52:25 <kallisti> because I'd probably kill myself before working through a project euler problem in brainfuck.
01:52:26 <Sgeo> We have (had?) a BF Joust bot in here
01:52:32 <kallisti> I already have enough trouble in non-esoteric languages.
01:52:44 <kallisti> the first few problems would be easy enough though.
01:52:53 <kallisti> !bfjoust
01:52:54 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
01:53:22 <ais523> every now and then I come up with a new BF Joust idea and get surprisingly high on the leaderboard with it
01:53:29 <kallisti> !help
01:53:30 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
01:53:31 <kallisti> `help
01:53:32 <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/
01:53:33 <kallisti> @help
01:53:33 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
01:53:35 <kallisti> fungot: help
01:53:36 <fungot> kallisti: 8 weeks of fnord in hand i've translated here and there.
01:53:42 <kallisti> we like bots.
01:53:52 <Tritonio> Also golf would give new twist to the problems since you need short code and not fast code as usually required by euler.
01:55:25 <zzo38> Mostly the ideas about brainfuck would be about compiling into brainfuck codes and compiling a brainfuck code into something else. LLVM includes an example file to compile a brainfuck code into LLVM.
01:55:34 <itidus21> it was left to the educational department to come up with a suitable alternative name and they unanimously decided on the name LearnTech
01:55:57 <kallisti> @slap itidus21
01:55:57 <lambdabot> I don't perform such side effects on command!
01:56:48 * Sgeo hits lambdabot with an unsafePerformIO
01:57:11 <Sgeo> :t (:=)
01:57:12 <lambdabot> Not in scope: data constructor `:='
01:57:16 <Sgeo> :t (=:)
01:57:17 <lambdabot> Not in scope: `=:'
01:57:26 <Sgeo> : is a capital letter.
01:57:32 <kallisti> correct.
01:58:13 <zzo38> Sgeo: No, in Haskell : is not a letter, it is a uppercase operator symbol.
01:58:50 <ais523> hmm, that's right, collision and undermine are at #8 and #10 respectively
01:58:55 <ais523> and both were top 10 the day I invented the strategy
01:59:59 <kallisti> > let (=:) = writeSTRef in runST $ newSTRef 2 >>= (\x -> x =: 4)
02:00:00 <lambdabot> ()
02:01:36 <kallisti> is there a flip (.) operator?
02:01:43 <kallisti> it would be nice to use on the right-hand side of >>=
02:02:31 <Sgeo> >>>
02:02:34 <Sgeo> In Control.Arrow
02:02:37 <kallisti> so that you can read left-to-right smoothly instead of having to go backwards on the compositions.
02:02:41 <kallisti> ah
02:02:48 <Sgeo> :t (>>>)
02:02:48 <lambdabot> forall (cat :: * -> * -> *) a b c. (Control.Category.Category cat) => cat a b -> cat b c -> cat a c
02:02:58 <Sgeo> ....Category?
02:03:05 -!- Klisz has joined.
02:03:11 <kallisti> well that would work too
02:03:16 <Sgeo> I mean, that makes more sense than restricting it to arrows, but
02:03:45 <Sgeo> Oh, it's in Control.Category too, and Control.Arrow reexports it
02:04:23 <Sgeo> (.) has different fixity from >>> and <<<
02:04:34 <Sgeo> And >>> and <<< are both infixr for some reason
02:04:45 <Sgeo> (Maybe it doesn't matter infixr vs infixl?)
02:04:52 <kallisti> fixity?
02:04:58 <kallisti> you mean associativity? or precedence?
02:04:59 <Sgeo> But still, infixr 9 . and infixr 1 >>>, <<<
02:05:02 <monqy> composition is associative
02:05:13 <Sgeo> kallisti, yes, fixity declarations specify precedence and associativity
02:05:27 <Sgeo> monqy, ah, ok
02:05:31 <NihilistDandy> kallisti: l and r give associativity, and the number is precedence
02:05:41 <kallisti> .....I was not asking a question about what those mean.
02:05:52 <NihilistDandy> :|
02:06:04 <kallisti> he said "fixity" and out of context it didn't make any sense.
02:06:12 <kallisti> because that's not what fixity normally means.
02:06:15 <NihilistDandy> Ah
02:06:36 <Vorpal> what does "fixity" normally mean?
02:06:51 <NihilistDandy> Vorpal: Fixedness
02:07:02 <Vorpal> NihilistDandy, hm okay, but "fixity" sounds weird
02:07:14 <kallisti> oh hm, apparently fixity does mean associativity
02:07:18 <NihilistDandy> Yeah. I've never actually seen it used in that sense
02:07:20 <Vorpal> fixedness is what I would use
02:07:21 <kallisti> I thought it meant infix, postfix, prefix, etc.
02:07:37 <NihilistDandy> Ah
02:07:58 <Vorpal> why would a game get black bars at the top and bottom of a fucking 16:9 monitor. That is how wide screen it gets!
02:08:20 <Sgeo> o.O Haddock can't parse (.) = (Prelude..)
02:08:40 <Vorpal> I think Prelude.. looks so silly.
02:09:59 <Sgeo> Clean uses o for composition, I think
02:13:50 -!- tuubow has joined.
02:22:41 -!- Patashu has joined.
02:26:17 <Tritonio> Goodnight everyone. Talk to you soon I hope.
02:27:49 -!- Tritonio has quit (Quit: Bye).
02:30:46 <kallisti> Sgeo: perl uses sub{f (g @_))} for composition. :)
02:37:40 -!- kmc has quit (Quit: Leaving).
02:42:10 <itidus21> Vorpal: the game simply refuses to yield it's display ratio... refuses!
02:42:19 <Vorpal> itidus21, heh
02:42:34 <Vorpal> itidus21, well apart from that it is /the/ best game I ever played.
02:42:48 <Vorpal> I guess it could be a case of aesthetics?
02:42:49 <itidus21> it is _because_ of that
02:42:58 <Vorpal> itidus21, doubtful
02:43:27 <itidus21> just put some paper matching the color of the screen over the blacked out parts
02:43:41 <Vorpal> itidus21, it is the best game ever because the story is awesome, the game mechanics are solid, the voice acting superb and the graphics the best I never seen.
02:43:49 <Vorpal> (The Witcher 2)
02:44:04 <Vorpal> s/never/ever/
02:44:20 <itidus21> try a super gameboy style border
02:44:23 <Vorpal> heh
02:44:26 <itidus21> made of paper
02:44:36 <itidus21> you don't want it distracting though
02:44:53 <itidus21> nothing too contrasting
02:44:57 <Vorpal> itidus21, I shall upload some screenshots of this game played on almost-ultra (my high end PC can't do ultra. You basically need a dual-GPU setup to do that)
02:45:25 <itidus21> like.. black and white next to each other gives a jarring contrast
02:48:03 <Vorpal> itidus21, you have to agree this looks crazy-awesome good. Unlike say skyrim. Which looks horrible. http://whotookspaz.org/~anmaster/images/witcher2/witcher2_2011-12-21_02-55-00-69.png
02:48:45 <Vorpal> Skyrim could have been a good-looking game, with more polygons and higher resolution textures
02:48:54 <Vorpal> as it is now it is obviously a console-port
02:49:06 <Vorpal> which also shows in the god damn horrible menu system
02:49:40 <Vorpal> while witcher 2 is obviously a PC-game throughout. The menu system is very suited to mouse and keyboard.
02:49:47 <Vorpal> itidus21, anyway what do you think of that screenshot.
02:49:51 <Vorpal> I could upload some more
02:50:05 <itidus21> im in a chilling out mood so not right now. but it looks good
02:50:21 <Vorpal> in a what mood?
02:51:01 <Vorpal> itidus21, the plants there, they move realistically. It is not like skyrim where you see that they are made up of some textures on large flat surfaces (that effect was even worse in oblivion)
02:52:15 <Vorpal> @tell elliott You complained about Skyrim textures. Check out the images in http://whotookspaz.org/~anmaster/images/witcher2/ then
02:52:15 <lambdabot> Consider it noted.
02:52:40 -!- kmc has joined.
02:54:41 <Vorpal> itidus21, see also http://whotookspaz.org/~anmaster/images/witcher2/witcher2_2011-12-21_02-59-54-57.png for some close-ups from a conversation.
02:54:48 <Vorpal> err for one close-up even
02:56:12 -!- oerjan has joined.
02:56:41 <Vorpal> oerjan, I haven't seen elliott for some time. Any idea if he is out of town or something?
02:56:50 <Vorpal> or if I just missed him
02:57:14 <ais523> Vorpal: you missed him
02:57:21 <Vorpal> oh okay
02:57:25 <ais523> he was here earlier, and trying to get people to kickban him so that he'd go to bed
02:57:30 <Vorpal> heh
02:57:35 <Vorpal> ais523, usually I go to bed before him
02:57:43 <Vorpal> and before you too
02:58:01 <Vorpal> though my sleeping schedule is utterly messed up currently
02:58:05 <oerjan> <elliott> I'm sure oerjan has half a proof sketch :P <-- don't be ridiculous :P
03:00:36 <oerjan> <Tritonio> Hello. Any brainfuck news? Any breakthrough? <-- wait, did no one tell him about my 3-cell TC proof :(
03:01:11 <oerjan> i don't know if he's been around since then
03:03:20 -!- kmc has quit (Quit: Leaving).
03:05:18 <pikhq_> Vorpal: elliott's sleep schedule isn't a schedule. :)
03:06:37 -!- Klisz has quit (Quit: You are now graced with my absence.).
03:07:13 <zzo38> What would be the use of the type $1+2+3+4+\cdots=-{1\over12}$ in Haskell?
03:07:26 <kallisti> wat
03:08:11 <zzo38> Obviously there are no negative or fraction cardinalities but you can still do things like this
03:08:37 <oerjan> zzo38: maybe something with zippers. they're based on using derivation on types, so why not that.
03:08:51 <oerjan> </wild guess>
03:09:21 <zzo38> oerjan: Yes that is what I was thinking of too. But I still don't know exactly what it would mean or whatever.
03:09:44 -!- Klisz has joined.
03:13:03 <Gregor> My vet sent me an email. Make sure not to feed your cat tinsel.
03:13:06 <Gregor> I'll keep that in mind.
03:13:59 <ais523> Gregor: I think there's an implication of "and don't let your cat feed itself tinsel"
03:14:21 <oerjan> rubbish, true cat owners only buy edible tinsel
03:15:03 <oerjan> next: how to decorate a tree with kebab strips
03:15:27 -!- MDude has changed nick to MSleep.
03:16:31 <Gregor> My Tinsel is Purina Dietetic Management Tinsel
03:16:48 <Vorpal> <pikhq_> Vorpal: elliott's sleep schedule isn't a schedule. :) <-- good point
03:17:23 <Vorpal> <zzo38> What would be the use of the type $1+2+3+4+\cdots=-{1\over12}$ in Haskell? <-- that is TeX not Haskell
03:19:04 <pikhq_> True cat owners use catnip Chrismas trees.
03:19:19 <Vorpal> Gregor, heh
03:19:24 <itidus21> and get visits from santa paws
03:19:33 <itidus21> oops
03:19:38 <itidus21> santa claws?
03:19:55 <itidus21> i think i'll stick with paws
03:20:32 <Vorpal> itidus21, I guess it is Santa Jaws for sharks?
03:20:43 <itidus21> yup
03:27:58 <NihilistDandy> Santa Caws for crows
03:29:07 <NihilistDandy> What an exciting time the 3-cell TC proof was :D
03:29:41 -!- pikhq_ has quit (Read error: Operation timed out).
03:29:44 <coppro> did that ever get resolved?
03:29:52 -!- pikhq has joined.
03:30:00 <coppro> welcome back
03:32:11 <Vorpal> NihilistDandy, and Sata Raws for photographers?
03:32:39 <NihilistDandy> lol
03:32:53 <NihilistDandy> coppro: What get resolved?
03:33:14 <coppro> 3-ell bf tc-ness
03:33:27 <NihilistDandy> Yeah, oerjan was successful
03:33:48 <oerjan> coppro: http://esoteric.voxelperfect.net/wiki/Collatz_function
03:34:07 <zzo38> Vorpal: I know that is TeX not Haskell. I meant it just to specify mathematically what I meant
03:35:09 <itidus21> Vorpal: my belief about realism in games etc is that the more real something is the easier it is for a human to comprehend it
03:35:22 <itidus21> ie. the value of improved graphics
03:35:51 <itidus21> the part of me that enjoyed it for what it is has gone numb years ago
03:35:55 <NihilistDandy> itidus21: You're forgetting the uncanny valley
03:36:03 <itidus21> hummmm
03:36:06 <coppro> oerjan: awesome
03:36:11 <monqy> i love uncanny valley
03:36:17 <itidus21> why do we want to build the uncanny valley?
03:36:36 <itidus21> i mean.. why do we pursue it? :D
03:36:53 <itidus21> hmmmmmmmm
03:37:02 <oerjan> itidus21: to get past it, presumably
03:37:03 <zzo38> You can make more realism in games even if you have no graphics at all. The way to do realism is by physics, not by graphics, in my opinion.
03:37:26 <NihilistDandy> Realism in games either has to be indistinguishable from reality or cartoonish enough that it doesn't make people uncomfortable
03:37:39 <itidus21> zzo38: you didn't have time to prepare your opinion of course..
03:37:41 <zzo38> (Of course, if you have graphics, you would want the graphics to correctly reflect the physics of the game)
03:38:10 <NihilistDandy> Has anyone in here used Factor, at all?
03:38:24 <zzo38> NihilistDandy: I have read about it.
03:38:35 <Vorpal> <itidus21> Vorpal: my belief about realism in games etc is that the more real something is the easier it is for a human to comprehend it <-- abstractions can help sometimes
03:38:54 <itidus21> :)
03:38:59 <itidus21> good game
03:39:07 <itidus21> you win!
03:39:09 <Vorpal> <NihilistDandy> Realism in games either has to be indistinguishable from reality or cartoonish enough that it doesn't make people uncomfortable <-- what about the two screenshots in http://whotookspaz.org/~anmaster/images/witcher2/
03:39:14 <Vorpal> you can still see it isn't real
03:39:20 <Vorpal> but I wouldn't call it uncanny
03:39:42 <itidus21> hmmmmmmm
03:39:43 <Vorpal> yet I would call the graphics superb
03:39:52 <itidus21> i had a chat with a guy once about the uncanny valley and gaming
03:40:10 <itidus21> i forget exactly what he said
03:40:19 <NihilistDandy> Vorpal: They are, but they are also obviously not real
03:40:23 <Vorpal> NihilistDandy, well yes
03:40:25 <NihilistDandy> Uncanny valley is more subtle
03:40:49 <kallisti> I think people focus too much on graphics. Sure, it can enhance storytelling by giving the game cinematic qualities, but to me the gameplay is far more important.
03:40:52 <itidus21> motion capture can quickly become uncanny
03:41:06 <zzo38> kallisti: Yes I think the gameplay is far more important
03:41:07 <kallisti> to the extent that most of my favorite games either have not amazing graphics or no graphics at all.
03:41:10 <Vorpal> NihilistDandy, also the NPCs do such things as huff on a fire after they light it. That could potentially start being in behavioural uncanny valley
03:41:15 <Vorpal> though not quite there
03:41:36 <NihilistDandy> Are there horses in that game?
03:41:37 <zzo38> kallisti: Yes, to me too
03:41:38 <Vorpal> kallisti, agreed. But the whole makes the game.
03:41:40 <Vorpal> NihilistDandy, nope
03:41:50 <NihilistDandy> And the uncanny valley is why
03:41:59 <NihilistDandy> It would ruin their entire attempt at realism
03:42:00 <Vorpal> NihilistDandy, skyrim has horses without problems
03:42:14 <Vorpal> NihilistDandy, and that is not the reason. The reason is that the distances are small.
03:42:20 <NihilistDandy> Vorpal: Right, but I'd be willing to bet their movements are unsettling
03:42:22 <kallisti> I would say horses in skyrim are actually pretty unrealistic.
03:42:26 <kallisti> they can practically climb mountains.
03:42:31 <Vorpal> NihilistDandy, and many indoor or thick wood areas
03:42:43 <kallisti> same with the dragon movement. not very convincing, though certainly an improvement overall from Oblivion.
03:43:04 <Vorpal> NihilistDandy, yes, because due to bugs they can climb up near vertical slopes. They tend to spaz out while doing so :P
03:43:07 <Vorpal> not what you meant I know
03:43:14 <Vorpal> but no, they are not uncanny otherwise
03:43:26 <NihilistDandy> ffs
03:43:44 <itidus21> Vorpal: it is possible you haven't been initiated into the concept of uncanny valley
03:43:53 <Vorpal> itidus21, it is possible I never ran into it
03:44:02 <itidus21> i just did once by chance
03:44:06 <itidus21> someone told me about it
03:44:09 <kallisti> the uncanny valley is bordered on each side by the canny mountains.
03:44:10 <NihilistDandy> http://en.wikipedia.org/wiki/Uncanny_valley
03:44:14 <Vorpal> itidus21, anyway I watched raytraced images that are like super-realistic and never found them uncanny
03:44:25 <NihilistDandy> That's not what is meant by uncanny valley
03:44:45 <Vorpal> well right, that is more to do with movements than still graphics
03:45:08 <Vorpal> NihilistDandy, anyway witcher 2 uses motion capture so there...
03:45:13 <itidus21> its when your brain gets confused about whether a thing is a _real_ human or not
03:45:18 <NihilistDandy> Photorealistic renderings are just as vulnerable
03:45:20 <kallisti> no
03:45:25 <Vorpal> NihilistDandy, couldn't you just do motion capture on horses?
03:45:27 <kallisti> (to itidus21)
03:45:28 <Vorpal> just an idea
03:45:33 <itidus21> ok
03:46:17 <NihilistDandy> Vorpal: Yes, and they have. But the brain understand more about natural motion than you think. Either it must be indistinguishable from reality, or it must be bad enough as not to be revolting
03:46:34 <Vorpal> heh
03:46:36 <NihilistDandy> *understands
03:47:03 <Vorpal> NihilistDandy, how comes no one is annoyed at the pretty realistic results you get from motion capture on humans then?
03:47:23 <NihilistDandy> Is no one annoyed?
03:47:27 <itidus21> its a subtle thing..
03:47:36 <NihilistDandy> I found LA Noire very difficult to play for long periods
03:48:05 <NihilistDandy> There was something close to real, but just off by a narrow margin
03:48:09 <NihilistDandy> It was unsettling
03:48:36 <NihilistDandy> To use an obvious example, what is your natural reaction when you see someone with a prosthetic hand?
03:48:49 <NihilistDandy> Or, more directly, if you found yourself shaking such a hand, how would you react?
03:49:09 <NihilistDandy> Very realistic facsimile, but also not the real thing
03:50:15 <Vorpal> <NihilistDandy> I found LA Noire very difficult to play for long periods <-- while I haven't played it, I watched a Let's Play of it. I didn't have any issues with that
03:50:19 <Vorpal> iirc they used face scanning
03:50:29 <Vorpal> <NihilistDandy> To use an obvious example, what is your natural reaction when you see someone with a prosthetic hand? <-- I never seen one
03:50:36 <NihilistDandy> _-_
03:50:51 <Vorpal> the only one I can remember atm is the one of Luke Skywalker, and that is a real hand actually :P
03:52:55 <Vorpal> NihilistDandy, anyway I do hope we get real time raytracing on GPUs in the future. That would be awesome. (Sure it can be done to very limited degrees currently, but I meant for something more complex than a couple of bouncing balls above a plane)
03:53:38 <Vorpal> photon mapping or MLP are so much more expensive that I don't see them coming any time soon
03:55:27 <itidus21> i don't see the point anyway
03:55:33 <itidus21> waste of computing power.. ahahhahaha
03:56:03 <Vorpal> huh?
03:56:07 <Vorpal> I don't get the joke
03:56:21 <itidus21> you don't need graphics that good
03:56:33 <itidus21> it's literally a waste of computer cycles
03:56:57 <Vorpal> itidus21, well who "needs" games anyway?
03:57:26 <Vorpal> itidus21, ?
03:57:27 <itidus21> ok which object do you first imagine when you think of photon mapping?
03:57:35 <itidus21> i am curious to compare
03:57:40 <Vorpal> itidus21, uh?
03:57:56 <itidus21> maybe i read bouncing balls.. cos i thought of a soccer or volleyball
03:57:59 <pikhq> itidus21: You live in the *wrong* timespan to be talking about a "waste of computer cycles".
03:58:06 <Vorpal> itidus21, probably I think of povray. I believe it can do that
03:58:14 <itidus21> ahh
03:58:19 <Vorpal> not completely sure though
03:58:25 <pikhq> Your computer spends oodles of time busily doing nothing at all.
03:58:26 <itidus21> i guess i was thinking of blitzball from final fantasy 10
03:58:28 <Vorpal> I know luxrender uses MLP
03:58:45 <itidus21> pikhq: and all the porn on the internet :-s
03:58:57 <Vorpal> pikhq, unless you are doing raytracing :P
03:59:07 <itidus21> the reality is that a lot of what an economy does is garbage
03:59:37 <pikhq> Vorpal: Even then unless you do it in very tightly coded assembly you're chucking away a lot of clock cyclesz.
03:59:42 <itidus21> no no thats not the reality
03:59:55 <itidus21> im just a bitter cynical anxious 29 year old
03:59:57 <Vorpal> pikhq, of course
04:00:20 <Vorpal> pikhq, I'm going to graph the CPU and GPU load when plaing witcher 2
04:00:24 <Vorpal> playing*
04:00:36 <pikhq> Vorpal: Anyways, realtime raytracing GPUs "should" just be a matter of a few more iterations of Moore's Law.
04:01:04 <Vorpal> pikhq, what about MLP and so on?
04:01:46 <pikhq> MLP = ?
04:01:53 <Vorpal> Metropolis Light Transport
04:01:58 <Vorpal> luxrender uses it iirc
04:02:08 <Vorpal> pikhq, unlike photon mapping it is unbiased
04:02:59 <pikhq> Vorpal: Exponentials are powerful shit, man.
04:03:05 <Vorpal> anyway witcher 2 did eat 100% of the GPU. And it peaked on about 35% of the CPU cores that it used. (it used all but one)
04:03:15 <Vorpal> pikhq, well yes
04:04:01 <Vorpal> hm witcher 2 ate about half the dedicated GPU memory. While iirc skyrim uses nearly all of it. And GTA IV fill sit completely. How strange
04:04:14 <Vorpal> fills it*
04:04:24 <Vorpal> because witcher 2 is definitely the game with the highest texture resolution
04:04:35 <Vorpal> maybe it is just better optimised
04:05:26 <itidus21> its just that as i age, i have to wonder just what graphics mean to me as a human
04:05:35 <itidus21> like on a philosophical level
04:05:46 <Vorpal> oh no
04:05:58 <itidus21> hmm?
04:06:32 <itidus21> why oh no?
04:06:39 <Vorpal> never mind
04:06:42 <Vorpal> NihilistDandy, btw the plants in witcher 2 actually look realistic in how they move in the wind.
04:06:49 <itidus21> you just figured out i was horribly mentally ill?
04:06:58 <Vorpal> you are?
04:06:58 <itidus21> or a problem in your cpu calculations :P
04:07:02 <itidus21> i dont know?
04:07:15 <Vorpal> "oh no, not more itidus21-philosophy" actually
04:07:37 <Vorpal> NihilistDandy, they definitely don't look like they are some partly transparent textures on a few flat planes
04:07:43 <NihilistDandy> Vorpal: Plants aren't the issue. They're not at all like people or any other living thing
04:07:43 <Vorpal> they bend in a /lot/ of places
04:07:48 <NihilistDandy> *living, moving thing
04:08:18 <NihilistDandy> If you're not going to bother learning what the uncanny valley is, I don't know how you plan to disprove it
04:08:22 <Vorpal> hm
04:08:30 <Vorpal> NihilistDandy, so it is just humans and animals?
04:08:45 <Vorpal> (otherwise, why would horses be affected)
04:09:21 <NihilistDandy> Read the article
04:09:28 <NihilistDandy> Yes, it's humans and animals
04:10:43 <Vorpal> hm
04:12:01 <Vorpal> NihilistDandy, anyway I might give LA Noir a try at some point, except it looked like a boring version of GTA :P
04:12:17 <Vorpal> well, same developer, the cover mechanics were the same as far as I could tell
04:12:32 <NihilistDandy> It's more of a story game, but the story's a bit lame
04:12:38 <Vorpal> well yes it is
04:12:49 <Vorpal> I think they had much less fluid cover mechanics than Deus Ex: Human Revolution
04:13:10 <Vorpal> (a game which looked like shit, probably becuase I played it directly after witcher 2)
04:14:34 <Vorpal> NihilistDandy, I ended up a bit spoiled by witcher 2 I think. I jumped straight from the original NWN and minecraft into witcher 2 when I got my new computer. Which means every other modern games look like shit to me. Well I heard good things about Battlefield 3, haven't played it, don't like that genre.
04:16:17 <NihilistDandy> lol
04:17:46 <Vorpal> oh and I did try rage. It look good in some places and horrible in other. Which is just jarring. Plus I'm not an FPS fan.
04:19:12 <zzo38> I made some computer game too but I generally didn't do like this; whether the graphics or whatever important depend much on the game. Some game it has no graphics.
04:19:41 <itidus21> id software lost their mojo after quake 1
04:20:00 <Vorpal> itidus21, well they definitely lost it by the time of Rage I can tell
04:20:18 <Vorpal> 25 GB installation size and it looked like shit. Wtf...
04:21:02 <itidus21> quake 2, quake 3: arena, quake wars, quake 4, doom 3, rage.. did anybody give a fuck
04:21:37 <Vorpal> I didn't give a fuck about Quake 1 either. Mostly because I don't like FPS.
04:22:06 <Vorpal> I'm okay with stealth FPS/RPG mixes
04:22:14 <NihilistDandy> If only you'd played Goldeneye~
04:22:21 <Vorpal> alas I haven't
04:22:26 <itidus21> i dont play much games at all but i know that wolf 3d, doom, doom 2, quake 1 put id right up there on the ma[
04:22:27 <Vorpal> I played Perfect Dark though
04:22:31 <itidus21> ^map
04:22:32 <Vorpal> not quite a fan of that
04:22:41 <NihilistDandy> Perfect Dark sucked but for the railgun
04:23:24 <Vorpal> NihilistDandy, but I did like Deus Ex: Human Revolution, apart from the sub-par graphics I liked it. And I did quite enjoy Fallout: New Vegas. I liked the VATS mechanics of that game
04:23:27 <itidus21> i would like to explain the problem with games but its kinda difficult
04:23:36 <Vorpal> I still prefer fantasy RPGs though
04:23:59 <Vorpal> anyway the good point about both Deus Ex and Fallout 3/NV are they are RPG/FPS mixes
04:24:04 <Vorpal> I don't enjoy pure FPS
04:24:18 <NihilistDandy> I just want to play BGII forevr
04:24:28 <Vorpal> what game is that?
04:25:07 -!- PiRSquared17 has quit (Remote host closed the connection).
04:25:33 <Vorpal> NihilistDandy, ^
04:25:49 <NihilistDandy> Baldur's Gate II
04:25:57 <Vorpal> ah right
04:26:33 <Vorpal> never played that, I do want to play Planescape Torment at some point, probably some of the Baldur's Gate games too
04:26:39 <Vorpal> the old Bioware games were /good/
04:26:56 <NihilistDandy> Planescape was awesome, too
04:27:00 <Vorpal> NihilistDandy, what would you say about a Baldur's Gate game with modern graphics?
04:27:01 <NihilistDandy> Liked BGII bette
04:27:04 <NihilistDandy> *better
04:27:09 <kallisti> apparently they're making a new planetside game.
04:27:10 <NihilistDandy> I wouldn't like it as much
04:27:13 <kallisti> the first one was pretty fun.
04:27:15 <Vorpal> NihilistDandy, oh?
04:27:17 <NihilistDandy> It's not about the graphics. It's about the story
04:27:30 <Vorpal> NihilistDandy, well, with a equally good story as the original of course
04:27:31 <NihilistDandy> The story is really deep and interesting, and the quests are fun
04:27:51 <NihilistDandy> I dunno. I like that I can play BGII on any old machine from the last 10 years
04:27:53 <NihilistDandy> It's convenient
04:28:03 <Vorpal> intel graphics?
04:28:22 <Vorpal> NihilistDandy, anyway you will just have to wait another 10 years and that will be true for the new game :P
04:28:46 <NihilistDandy> I've played BGII five times through. No other game gets that kind of attention from me
04:29:12 <Vorpal> I never played a game 5 times through
04:29:32 <Vorpal> witcher 2 I played 4 times
04:29:38 <kallisti> Vorpal: I doubt all newer computers will come with off-board graphics cards
04:29:41 <Vorpal> because there are like 4 majorly different endings
04:29:59 <Vorpal> kallisti, true.
04:30:11 <Vorpal> kallisti, so say 20 years then :P
04:30:36 <kallisti> maybe. my prophecy abilities get kind of fuzzy out there.
04:30:46 <Vorpal> same for me
04:31:12 <kallisti> so I'm pretty excited that the world's ending.
04:31:21 <Vorpal> it is?
04:31:21 <kallisti> I kind of forgot about the whole 2012 thing.
04:31:26 <Vorpal> oh right
04:31:31 <Vorpal> did it say when in 2012?
04:31:42 <kallisti> not that I'm aware. I think there may be a specific date.
04:31:51 <Vorpal> might be worth checking that
04:32:41 <Sgeo> 12/21 iirc
04:32:50 <Vorpal> so almost a year left then
04:32:53 <Vorpal> no worry
04:38:21 <Vorpal> NihilistDandy, speaking of games: I hate cut scenes not rendered using the in-game engine
04:38:31 <Vorpal> that was one major annoyance with Deus Ex: HR
04:38:49 <NihilistDandy> I dunno. They were nice in the middle Final Fantasy games
04:39:00 <Vorpal> NihilistDandy, never played any past the SNES ones
04:39:18 -!- azaq23 has quit (Quit: Leaving.).
04:39:34 <Vorpal> NihilistDandy, anyway with Deus Ex: HR they were like 720p upscaled to my much larger monitor
04:39:43 <Vorpal> which is horrible
04:40:34 <Vorpal> again I have to commend witcher 2 for that. I believe the only pre-rendered screens are the loading screens (and you only get them when loading a game and when it is loading data for the next chapter)
04:40:45 <Vorpal> and they are kind of like paintings or such
04:41:03 <Vorpal> guess I could screenshot that to show what I mean
04:41:13 <Vorpal> heck even the main menu background is rendered with the game engine!
04:44:18 <itidus21> Vorpal: i dont think nihil means the snes ones though
04:44:25 <Vorpal> I know
04:44:30 <itidus21> hmmm
04:44:42 <itidus21> well as everyone knows, snes final fantasies are the best
04:45:13 <Vorpal> itidus21, maybe, I don't know
04:45:24 <itidus21> lol
04:45:25 <Vorpal> anyway here is the loading screen for chapter 1 http://whotookspaz.org/~anmaster/images/witcher2/witcher2_2011-12-22_04-41-20-47.png
04:45:38 <itidus21> not everyone knows
04:45:42 <Vorpal> it isn't animated
04:45:47 <Vorpal> unlike the main menu background
04:46:08 <Vorpal> well obviously the progress "bar" (progress circle?) is animated
04:47:14 <oklopol> kebabbbbbbbbbbbb
04:47:23 <oklopol> want
04:48:26 <Vorpal> it seems the image viewer in windows uses directx btw, since fraps shows the frame rate in it
04:48:40 <itidus21> so has there ever been a brainfuck with numbers?
04:48:56 <Vorpal> itidus21, you mean like +4 instead of ++++?
04:49:08 <itidus21> yeah
04:49:18 <Vorpal> that is common run length encoding
04:49:22 <Vorpal> fairly common
04:49:30 <Vorpal> or >4 for >>>>
04:49:41 * Sgeo wrote BF-RLE a while ago
04:49:44 <Sgeo> >.>
04:50:00 <Sgeo> Base-something, >0 means >>> iirc
04:50:06 <Vorpal> I believe bf joust can parse that by like +*5 or such?
04:50:18 <Vorpal> Sgeo, >0 = >>> what?
04:50:38 <Vorpal> that isn't the usual way
04:50:50 <itidus21> sometimes the usual way isn't the best way
04:50:54 <Sgeo> Vorpal, it makes more sense, I think, because then you get the most bang for every digit
04:52:17 <itidus21> kebabbbbbbbbbbbbb
04:52:21 <Vorpal> Sgeo, I would just use gzip if space was an issue
04:52:31 <Vorpal> or even xz
04:52:57 <Vorpal> Sgeo, I'm not a huge fan of source code golfing btw :P
04:53:02 <itidus21> so it was reading kebabbbbbbb which made me ask that question
04:53:04 <Vorpal> it just doesn't interest me hugely
04:53:14 <Vorpal> itidus21, what question?
04:53:24 <Vorpal> oh the bf one
04:53:24 <Vorpal> right
04:53:27 <itidus21> ya
04:54:00 <Vorpal> interesting side node: .b is brainfuck and .bf is befunge-93
04:54:31 <itidus21> there is of course the question of whether doing that completely defeats the purpose of bfuk or if it introduces a new class of language
04:55:42 <pikhq> The only real reason to us BF-specific RLE is for humans, Sgeo.
04:56:01 <itidus21> hmm
04:56:14 <Sgeo> pikhq, and I take it humans don't like large bases and 0 meaning 3?
04:56:22 <itidus21> does the bf compiler convert the sequence of + into a number internally?
04:56:32 <pikhq> Sgeo: Right.
04:56:43 <pikhq> Sgeo: We humans use base 10.
04:56:44 <itidus21> oops i guess its implementation dependant
04:57:01 <Vorpal> itidus21, fast ones merge instructions yes
04:57:13 <Sgeo> zzo38 used BF-RLE
04:57:13 <Sgeo> >.>
04:57:17 <Vorpal> itidus21, like ++- into a single "add 1" or even "set memory to current + 1"
04:57:27 <pikhq> Sgeo: zzo38 may not be human.
04:57:38 <Vorpal> pikhq, snap you beat me to it
04:58:02 <Vorpal> itidus21, I find bf optimisation to be possibly the most interesting aspect of bf
04:58:22 <Vorpal> !bf_txtgen Hello World
04:58:26 <EgoBot> ​109 ++++++++++[>+++>+++++++>++++++++++>+<<<<-]>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.>. [161]
04:58:30 <pikhq> Yeah, it's actually pretty entertaining creating a moderately optimising BF compiler.
04:58:43 <pikhq> As well as generating reasonable Brainfuck.
04:58:49 <Vorpal> like turning that into a fputs("Hello World", stdout) or such
04:59:10 <Vorpal> pikhq, I was thinking utterly optimising one :P
04:59:30 <pikhq> Vorpal: Also true, but that's a bit more work. :P
04:59:35 <Vorpal> pikhq, that is one thing I do while waiting for the bus. Thinking about new ways to optimise bf
04:59:56 <Vorpal> pikhq, yes implementing them are. It is much more fun to design them than to implement them!
05:00:25 <Vorpal> this is true in general of computer software
05:00:36 <Vorpal> (oh god, am I turning into a PH?)
05:00:48 <Vorpal> brb
05:02:43 <kallisti> pikhq: what kind of techniques can you use to optimize brainfuck programs?
05:03:08 <kallisti> aside from the obvious "group one or more [+-><] into one operation"
05:05:33 <kallisti> hmmm actually they don't even need to be consecutive. if you can determine that + or - operations are performed on the same memory cell and computing their change all at once doesn't interfere with a loop
05:05:47 <kallisti> then you should be able to do that without problem.
05:06:09 <kallisti> though I doubt that happens very often, and I think the savings would be minimal in most cases.
05:06:12 <pikhq> kallisti: Another fairly easy one is folding pointer-movement operations into the other operations.
05:06:25 <kallisti> "folding" them?
05:06:39 <pikhq> For instance, mine folds ">>>++++" into Add 3 4
05:06:45 <zzo38> I have once written a program that does a few optimizations for brainfuck program. Some including brainfuck->brainfuck optimization, others can be done once compiling to something else.
05:06:52 <pikhq> 'Add 4 to p[3]", basically.
05:07:01 <kallisti> ah
05:07:17 <pikhq> Doing that is essential for just about any higher-level optimisation.
05:07:28 <kallisti> yes that's a good one, assuming that you don't have to recalculate that offset over and over.
05:08:26 <kallisti> actually I don't think that would be an issue.
05:08:38 <kallisti> it's always going to be faster than manually moving a cell pointer around
05:09:07 <kallisti> it would be nice to be able to detect swaps and the like.
05:09:32 <pikhq> Otherwise, a lot of what you do is pattern matching on common idioms.
05:10:04 <kallisti> so for example if a loop decrements its dependent cell and adds to two other cells at the same time.
05:10:21 <kallisti> you could eliminate the loop completely and copy the dependent cell into the two new cells, then 0 the dependent cell.
05:10:37 <zzo38> Some of the optimizations I have done, however, are for when you are compiling something else to brainfuck, such as macros or something else whatever. Including cancel out -+ +- <> >< and to replace [[x]] with [x] and [+] with [-] to match them easily and so on.
05:11:12 <kallisti> yeah a number of loop eliminate tricks would greatly speed up code.
05:12:20 <kallisti> I think cases like [->+>+<<] should be possible to spot in a somewhat general way.
05:13:22 <kallisti> also cases with two or more +'s can be converted into multiplication by a cell with a constant.
05:13:22 <itidus21> puzzlang looks interesting. i approve of the idea
05:14:44 <itidus21> i can't say i understand it though
05:16:53 <kallisti> hmmm, could you perhaps determine that a loop always halts when the number of >'s and <'s are even and there's a + or - at the starting location and all loops within it also halt?
05:17:15 <kallisti> s/also halt/can be determined to halt/
05:17:48 <kallisti> (also by even I mean "are equal" not literally that there sum is even)
05:19:00 <kallisti> more generally, if you count + as a +1 and - as a -1, the count of +'s and -'s on the starting location cannot equal 0
05:20:19 <kallisti> I can't think of a counterexample where these conditions are true and the loop doesn't halt.
05:21:01 -!- PiRSquaredAway has joined.
05:21:04 <PiRSquaredAway> "Wikipedia credit cards 9 months interest freecorpus christi free legal advicecreate an robot freecollege free porn videocopy playstation 2 games free softwarecomic cartoon art free xcorn free pudding recipecollage sex videos free"
05:21:10 <kallisti> really all that tells you is that you can run some loop elimination passes, and you now know that at the end of the loop the starting location will always be 0.
05:21:35 <zzo38> If a loop is known to never halt and no I/O is done, the optimizer can emit a warning, replace that part with a idle loop, and delete everything after that point.
05:21:42 <itidus21> hi pi
05:21:47 <PiRSquaredAway> Hello
05:21:52 <zzo38> (That is, within a block, if it is within a block)
05:21:59 <itidus21> pi. are you a bot?
05:22:14 <PiRSquaredAway> itidus21: no, what do you think? o.O
05:22:21 <kallisti> zzo38: heh
05:22:26 <itidus21> your initial post was just a bt weird
05:22:31 <itidus21> ^bit
05:22:41 <pikhq> kallisti: You neglected "and there's no input on the current cell"
05:22:49 <kallisti> pikhq: ah yes.
05:22:52 <PiRSquaredAway> It's the content of this wonderful spam page:
05:22:54 <PiRSquaredAway> http://esolangs.org/wiki/Content_Server_Adobe_Download_Free
05:22:56 <kallisti> pikhq: those tricky IO operations.
05:23:20 <oerjan> <kallisti> I think cases like [->+>+<<] should be possible to spot in a somewhat general way. <-- we've discussed it before, it's a bit of linear algebra, euclid's extended algorithm and modulo arithmetic (assuming wrapping cells).
05:23:48 <kallisti> pikhq: also I think the opposite (this loop never halts) can also be determined with the same rules, and of course a , on the current cell immediately makes the halting problem unknown.
05:23:52 <pikhq> Yeah, I don't *quite* get the algorithm (mostly because I've not bothered figuring it out), but I know that esotope-bfc does that.
05:24:30 <itidus21> pikhq: sorry about that. :D
05:24:36 <itidus21> i mean
05:24:39 <itidus21> pir:
05:24:46 <itidus21> PiRSquaredAway:
05:24:49 <PiRSquaredAway> ...
05:25:12 <kallisti> oerjan: what other cases does that algorithm cover?
05:25:48 <PiRSquaredAway> itidus21: I'm stalking, pi, pir, pirs, etc. All the way up to PiRSquared17
05:26:17 <oerjan> kallisti: anything with no further nested loops, i think
05:26:18 <itidus21> i forgot to put a space after "pir:"
05:26:42 <oerjan> kallisti: btw +[++] never halts on common implementations (which don't have odd sized cell ranges)
05:26:44 <itidus21> the autocomplete doesn't kick in without something after it
05:26:57 <kallisti> oerjan: ah, indeed.
05:27:18 <kallisti> oerjan: so, more generally, the number of [+-] cannot be an even number.
05:27:37 <kallisti> oh..hmmm
05:27:38 <kallisti> nevermind
05:27:41 <zzo38> If a loop known infinite even in caes of input, and that loop does have I/O, then simply remove everything after that loop that is within the same block.
05:27:46 <kallisti> you can't really apply that logic unless you know the exact value beforehand.
05:27:52 <oerjan> kallisti: um [++] without a + in front frequently halts. :P
05:28:01 <kallisti> right.
05:29:17 <oerjan> kallisti: yes. this is part of what you can determine with modulos arithmetic. basically the gcd of the initial value and the +- total on that cell must divide the cell range size, if it's wrapping.
05:29:22 <oerjan> *modulo
05:29:46 <oerjan> er wait
05:32:56 <oerjan> lessee we need i+n*t == m*r, which means... gcd t r divides i.
05:34:03 <oerjan> extended euclid algorithm is needed to find n, and thus the actual number of loop iterations.
05:35:40 <kallisti> I think you could probably reduce the amount of information you need via some special cases.
05:35:56 <kallisti> like when the +- count is 1 or -1
05:36:06 <kallisti> or (I think) odd?
05:36:07 <oerjan> yes, as then you always halt.
05:36:32 <oerjan> odd with common cell sizes, yes.
05:37:03 <oerjan> except unbounded, which is a bit different again.
05:40:20 <oerjan> you can calculate the gcd t r + n*t == m*r at compile time, and then only at most some simple division remains at runtime, i think.
05:40:46 <oerjan> since only i can vary.
05:41:46 <Vorpal> back
05:43:02 <Vorpal> zzo38, "[[x]] with [x]" <- sure, but who uses the former?
05:43:28 <Vorpal> kallisti, if no one mentioned it before, check out esotope-bfc
05:43:31 <zzo38> Vorpal: It might come out after some macro expansions have occurred and then some other things have been eliminated due to cancelling
05:43:42 <Vorpal> brainfuck doesn't have macros
05:43:46 <Vorpal> so that is irrelevant
05:43:55 <oerjan> Vorpal: he was speaking about autogenerated bf, sheesh
05:44:00 <Vorpal> right
05:44:01 <zzo38> Well, but you might compile something that has macros into it
05:44:22 <Vorpal> but then lostking.b has dead code in general
05:44:32 <Vorpal> which should have been optimised when generating it
05:49:01 <zzo38> Another thing is that if a loop comes directly after another loop, the second loop can be deleted since it will never be executed (as in ][) and that can be used even with brainfuck codes written directly since it is sometimes used to add comments at the beginning or end of a program
05:49:24 <zzo38> A loop at the beginning of a program can be eliminated for this reason, such as comment
05:49:32 <Vorpal> that is a side effect of value tracking and dead code elimination
05:49:36 <zzo38> Or a macro system generated might put [-] at the beginning possibly
05:49:39 <Vorpal> you don't need to special case it
05:49:52 <Vorpal> if you just track which cells are known to be a specific value
05:51:15 <oerjan> *sigh* now there's a troll on haskell-cafe...
05:52:06 <Vorpal> heh?
05:52:53 <oerjan> an annoying guy claiming denotational semantics and bottoms don't make sense.
05:53:09 <oklopol> haskell-cafe has just me and another guy, is he a troll
05:53:48 <oerjan> oklopol: well the other option is too horrible to contemplate.
05:54:25 <oklopol> i'm not quite sure if i'm a troll
05:54:33 <oklopol> i don't have like a baseline
05:54:46 <oerjan> but do you have a bottom?
05:55:35 <oklopol> well i have been _|_ many a time
05:55:45 <oklopol> hmm
05:55:48 <oklopol> that sounds kind of gay
05:55:55 <oklopol> i think i'll keep using my plural.
05:56:03 <oerjan> o kay
05:56:19 <oklopol> this is a reference to something we discussed earlier
05:58:24 <oerjan> oh well i guess this haskell-cafe discussion _is_ about what people would want to change in haskell if they made it from scratch.
05:58:45 <oerjan> oklopol: okay
06:00:30 <oklopol> i would add more monads
06:00:57 <oklopol> the problem with haskell is that you have too few monads
06:01:23 <oerjan> well i have been trying to make a backward list monad and failed
06:01:32 <oklopol> what does that mean
06:02:28 <oklopol> hey seriously #haskell-cafe is it?
06:02:38 <oerjan> oklopol: it's an email list
06:02:42 <zzo38> I would probably change some things including to make that Monad require Functor and join is a class method of Monad. But I would have other things changed too, such as having its own preprocessor with powerful instead of using C preprocessor
06:02:44 <oklopol> someone is throwing a tennisball or something around in the hallway
06:03:02 <oklopol> and it keeps hitting my door and i'm like omg someone coming in i'm way too naked for that
06:03:25 <oerjan> the list monad gives an Applicative automatically, like every monad. now every applicative can be turned backwards by switching <*> with <**>.
06:03:31 <zzo38> I also wouldn't have a if...then...else command, instead you can use a function that takes the boolean True/False as its third parameter
06:04:01 <oerjan> the question is, does that extend back to a monad? starting with lists, the answer seems to be no.
06:04:05 <oklopol> so you want a monad that gives the reversed applicative version of the list sure
06:04:38 <oklopol> *list monad
06:04:54 <zzo38> I know it seem not all backward applicative will be a monad even if the forward applicative is monad
06:05:16 <oerjan> it's easy to see that its join would have to be concat . transpose on _rectangular_ lists of lists.
06:05:28 <oklopol> well obviously.
06:05:50 <oerjan> but the join . join == join . fmap join law breaks. and i think it's unfixable.
06:06:12 <oklopol> yep, so it would seem.
06:06:20 <oklopol> (i have no idea what applicative is)
06:06:27 -!- ChanServ has set channel mode: +o oerjan.
06:06:31 -!- oerjan has kicked oklopol oklopol.
06:06:40 -!- oerjan has set channel mode: -o oerjan.
06:06:41 -!- oklopol has joined.
06:06:57 <oerjan> SOME PEOPLE
06:07:02 <oklopol> hey not everyone likes cs
06:07:07 <oerjan> not that i didn't suspect it
06:07:15 <oklopol> i bet you don't know what a derivative is!
06:07:23 <oklopol> see
06:07:27 <oklopol> we all have our strengths.
06:07:42 <oerjan> sure i know, it's a financial instrument responsible for much of our current crisis.
06:08:14 <oerjan> by allowing bad debt to be hidden.
06:08:18 <oklopol> no it means that a function resembles another function so much that its originality is questionable
06:09:17 <oklopol> the rest is just needless formalism
06:09:47 <oerjan> ah.
06:10:55 <oklopol> a knock on my door again
06:11:18 <oklopol> this is getting weird, they aren't throwing a ball anymore (i'm starting to doubt if they even were)
06:11:24 <oerjan> well i'll leave you to your orgy of fate ->
06:11:29 <oklopol> i should prolly go see if it's a murderer or somethign
06:11:35 <oklopol> *something
06:11:45 <oklopol> and to work also
06:19:51 -!- pikhq has quit (Ping timeout: 240 seconds).
06:19:59 -!- pikhq has joined.
06:27:31 -!- tuubow has quit (Ping timeout: 240 seconds).
06:29:21 <kallisti> What's a good operator for a substring test?
06:30:46 -!- zzo38 has quit (Quit: zzo38's Dungeons & Dragons character may not be a human. zzo38 probably is human (whether is supposed to or not??)).
06:33:57 <Sgeo> kallisti, update.
06:42:23 -!- zzo38 has joined.
06:43:27 <zzo38> IMPORTANT-NOTE: I wrote "whether is supposed to or not??" but actually I meant "Ka7xe8#??"
06:43:31 -!- zzo38 has quit (Client Quit).
06:45:10 -!- zzo38 has joined.
06:45:19 <zzo38> Or.... possibly..... maybe not.....
06:45:22 -!- zzo38 has quit (Remote host closed the connection).
06:45:23 <itidus21> @tell zzo38 welcome back
06:45:23 <lambdabot> Consider it noted.
06:46:16 <itidus21> @tell zzo38 it was funny for me at the time since you were joining and leaving at a high rate. but the joke has expired
06:46:16 <lambdabot> Consider it noted.
06:47:03 <oerjan> :t isInfixOf -- kallisti
06:47:04 <lambdabot> forall a. (Eq a) => [a] -> [a] -> Bool
06:47:17 <kallisti> oerjan: ha. ha. ha.
06:47:18 <kallisti> no
06:47:20 <oerjan> well, easy, not efficient.
06:47:34 <kallisti> this is merely a syntax choice
06:47:42 <kallisti> it has nothing to do with a specific language
06:47:54 <kallisti> I think I might go with Python's "in" operator
06:47:59 <oerjan> well in that case i recommend -<=!!-&*%
06:48:04 <kallisti> ah yes
07:01:02 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:05:16 <ais523> oerjan: that looks like a Feather operator, but I can't decode it
07:05:27 <ais523> I really must start using words for the names of things in Feather
07:05:37 <ais523> it's just /so tempting/ to make all the keywords strings of punctuation marks
07:05:50 <oerjan> !#%/!!!
07:06:37 * oerjan looks at the topic
07:06:52 <oerjan> _that's_ what i did wrong, i never did that.
07:12:16 <olsner> you didn't come back and become a drug lord and killed yourself?
07:12:17 -!- oklopol has quit (Ping timeout: 255 seconds).
07:12:31 <oerjan> i never even got to the far away part.
07:13:18 <oerjan> also, it was never come back, duh
07:16:17 <olsner> you never came back and became a drug lord and killed yourself?
07:16:28 <olsner> fixed
07:16:33 <oerjan> nope
07:17:00 <oerjan> oh hm, i see the topic is ambiguous there
07:17:23 <oerjan> fiendish.
07:18:53 * kallisti is actually getting into a good code/test rhythm.
07:19:02 <kallisti> usually I do massive amounts of coding without any testing, and then test everything all at once.
07:19:17 <kallisti> but today I'm implementing small pieces and testing before moving on to the next.
07:19:27 <kallisti> MUCH BETTER
07:19:43 <oerjan> code/test/rewrite/break/scream/tear hair
07:20:03 <olsner> when i try that I often end up code/test/code/code/code/code/code/oops
07:20:42 <kallisti> these are the words of lesser men.
07:20:47 <olsner> and then try to invent some "good" tests for the 100 completely new features from the coding part
07:20:52 * kallisti is sticking to his incremental code/test thing.
07:21:02 <kallisti> but yes I am a horrible tester actually.
07:21:09 <kallisti> mainly because it's so tedious.
07:22:02 <fizzie> test/code/test/code/test/code, so goes the TDD creed.
07:22:17 <kallisti> you test before you code?
07:22:23 <fizzie> In TDD.
07:22:28 <fizzie> *I* don't.
07:22:47 <kallisti> In test-driven development, each new feature begins with writing a test. This test must inevitably fail because it is written before the feature has been implemented.
07:22:50 <kallisti> .....wat
07:22:50 <olsner> why test? just write correct code dammit
07:22:58 <fizzie> Some people say it's the best thing ever, though.
07:23:57 <kallisti> I definitely think it will help me right now, but testing before you code seems kind of senseless to me. I guess it establishes exceptional cases or boundaries or whatever they're called
07:26:10 <Sgeo> kallisti, ARPDOT
07:26:11 <kallisti> the main benefit for me is a) I'm not coding for hours until my focus (and sanity) dissolves away b) I'm not testing for hours until my focus (and sanity) dissolves away
07:26:28 <fizzie> I would suppose it helps in ensuring test coverage if you stick to it, as well as making sure you have interfaces planned ahead. It's one of those XP things, I believe.
07:26:29 <kallisti> cycling between the two kind of refreshes my concentration.
07:29:03 <fizzie> "eXtreme Programming" always sounds like you should be typing code in while base jumping, or something.
07:29:29 <kallisti> yep.
07:29:43 <kallisti> there's a thing on facebook called "brogramming"
07:31:00 <fizzie> In "bronygramming", all your identifiers have My Little Pony-esque names. (Not a real thing.)
07:31:00 <kallisti> yes "Brogramming" is listed as one of Mark Zuckerberg's interests.
07:31:29 <kallisti> http://www.facebook.com/getwiththebrogram
07:32:07 <kallisti> I wonder if that man realizes that drinking an entire bottle of grey goose probably isn't going to help him while programming.
07:35:38 <kallisti> oh god: http://techrights.org/wp-content/uploads/2007/10/ballmer-license.png
07:35:58 <kallisti> this is what happens when you google image search "ballmer curve"
07:36:46 <itidus21> http://www.quora.com/Brogramming/How-does-a-programmer-become-a-brogrammer
07:47:10 <kallisti> too many Macs.
07:54:18 <pikhq> kallisti: Him drinking an entire bottle of grey goose may help *me* with programming, though.
07:54:22 <pikhq> He won't be touching the code.
07:54:54 <kallisti> pikhq: I find a few beers are fine.
07:56:08 <pikhq> kallisti: A bottle of a 40% BV solution of alcohol, however?
08:00:32 <olsner> I still don't understand what brogramming is
08:01:43 <kallisti> pikhq: probably not. I'm not at that level of alcoholism yet.
08:01:56 <kallisti> my stats arn't high enough.
08:02:42 <olsner> ... and I probably don't want to know, either
08:04:13 <pikhq> olsner: Does "frat" have any connotations to you?
08:05:43 <olsner> pikhq: not really... I know it's a thing they have in the us but I'm pretty sure we don't have them here
08:05:52 -!- NihilistDandy has quit (Quit: http://haskell.org).
08:06:20 <pikhq> olsner: Okay, well that's not going to help, then.
08:07:11 <olsner> no, not much...
08:07:26 <olsner> oh well, should be heading off now anyway
08:07:44 <pikhq> olsner: "Bro" in recent American parlance refers to guys who wear polo shirts, drink really cheap beer extensively, work out to "attract chicks", do protein shakes to aid with the previous, party a lot, and otherwise act like a bunch of people with significant portions of their brains missing.
08:08:12 <pikhq> Alternately: Jersey Shore.
08:08:20 <olsner> about 2h earlier than I usually get to work :> they'll think I went crazy or something
08:08:40 <olsner> haven't seen jersey shore, but I have heard about it, sounds horrible all of it
08:08:57 <olsner> so brogramming = jersey shore programming?
08:09:02 <pikhq> Approx.
08:09:21 <pikhq> Not *quite* the same, but the connotations are similar.
08:10:59 -!- oerjan has quit (Quit: Later).
08:12:17 <kallisti> pikhq: I don't know, some aspects of brogramming connotate a positive image.
08:12:34 <olsner> argh! google plus' browser sniffing breaks down again... they should know better than to look at the browser version to figure out what it supports
08:12:44 <kallisti> pikhq: like being well-rounded physically and mentally, and having fun. but otherwise it's just programmers acting "cool"
08:13:32 <pikhq> kallisti: Presumably you're coming into this with the word "bro" being neutral in connotation.
08:13:48 <kallisti> pikhq: yes.
08:14:08 <pikhq> "Brogramming" is going to have as much of a positive connotation as chavgramming in the UK.
08:14:27 -!- Ngevd has joined.
08:14:32 <kallisti> pikhq: what's wrong with bro, bro?
08:14:33 <Ngevd> Hello!
08:14:35 <pikhq> (dear god don't make that a thing)
08:16:48 <kallisti> pikhq: a "thing"?
08:16:52 <kallisti> I didn't make the word "bro" a thing.
08:17:06 <kallisti> anyway you need to chillax, brosky.
08:17:25 <olsner> I think he referred to chavgramming
08:17:28 <pikhq> Yeah.
08:17:34 <pikhq> Don't make chavgramming a thing.
08:17:50 <pikhq> Also, fuck chillax.
08:17:58 <pikhq> And not in a pleasant way.
08:18:58 <olsner> hmm, I wonder what happens if I delete my google+ "profile and added features", they'll probably mess up and delete my mail too
08:19:23 <kallisti> olsner: uh, seriously?
08:19:27 <kallisti> you think it would delete gmail?
08:19:45 <olsner> well, it happened to everyone who got blocked from g+, iirc
08:20:10 <kallisti> oh, okay
08:21:02 <coppro> No, that was different
08:21:49 <coppro> That was because people signed up for google+ and put their age in for the first time, and Google was like "hold on there,you can't be that young, I need to lock you out now"
08:22:45 <olsner> I think that was a later issue, the first one was people who used pseudonyms in google+ and then google decided they'd done goofed
08:23:18 <coppro> I could be wrong, but I'm pretty sure they didn't lock people out of gmail due to pseudonyms
08:24:00 <olsner> I'll just avoid doing anything "weird" until I have a replacement for all google services I use :P
08:24:13 <coppro> locking people out was done due to the lameness that is COPPA
08:24:37 <coppro> http://support.google.com/plus/bin/answer.py?hl=en&answer=1350409
08:25:03 <pikhq> COPPA: because children don't use the Internet.
08:25:13 <olsner> but no, I don't *really* think it's likely they'll delete my mail due to me disabling google+
08:25:28 <coppro> I don't think it's worth trying to migrate off of Google, personally
08:25:34 <coppro> just keep backups of important data
08:26:24 <coppro> (I have a mail forwarding scheme such that I get a local backup of all mail)
08:26:50 <olsner> it's not so much important data - I can probably live with losing most of the mails themselves
08:27:12 <coppro> I should probably keep backups of my docs
08:27:12 <olsner> the thing that needs migrating is stuff like setting up a new e-mail address, figure out what's connected to the old one, etc
08:27:57 <coppro> the rest I don't care about
08:28:02 <coppro> ah yeah, that part is annoying
08:28:11 <coppro> hence my forwarding scheme
08:28:13 <coppro> it's like a giant funnel
08:28:18 <coppro> it loops areound
08:28:19 <coppro> *around
08:28:27 <coppro> to ensure that everything goes to multiple destinations
08:28:56 <olsner> anyway, off I go
08:31:55 <fizzie> "Some people have reported losing access to all logged-in Google services including email, calendar, docs, even Android phone features. This seems to occur when an account is suspended for supposedly-more-serious Terms of Service violations, however, people like GrrlScientist have experienced this and have no reason to believe they violated anything other than the names policy.
08:31:55 <fizzie> This was claimed to be a “bug” and we were told that they would fix it. Here’s what Google’s VP of Product, Bradley Horowitz, said on July 25th: [strip "no, we're not doing it"] The frequency of these incidents seems to have slowed in the last week, but some accounts in this situation have not been restored, so this is still an issue."
08:32:00 <fizzie> (Source: Skud's blog.)
08:32:39 -!- Sgeo_ has joined.
08:34:51 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:42:34 <coppro> so it turns out there is an "export all docs" button
08:42:36 <coppro> fizzie: ah, ok
08:42:54 <coppro> fizzie: thanks for the correction
08:43:00 <coppro> at least that bit wasn't intentional
08:44:44 -!- tuubow has joined.
09:16:37 <kallisti> is it strange that I give my computer's female names?
09:16:49 <kallisti> everytime someone notices my comp name they comment on it and I have to explain.
09:17:07 <kallisti> I think it's similar to the practice of giving ships female names.
09:19:10 <shachaf> Is it strange that I pluralise word's with apostrophe's?
09:19:25 <monqy> ye's
09:19:58 <shachaf> But so many other peopl'e do it. It only seem's natural.
09:20:37 <shachaf> Dont yo'u agr'ee?
09:21:12 <kallisti> shachaf: shush
09:21:20 <kallisti> I'll fuck up English if I please.
09:21:36 <kallisti> I'm not writing a novel, research paper, formal proposal, news article, etc...
09:22:39 <shachaf> I never said yo'u we're writing any novel's, research paper's, formal proposal's, new's article's, etc's
09:22:53 <shachaf> @google angry flower apostrophe
09:22:54 <lambdabot> http://www.angryflower.com/aposter.html
09:22:54 <lambdabot> Title: Bob the Angry Flower
09:25:54 <kallisti> shachaf: I'm just saying there's no need to make a big deal out of it. It's unecessary. Yes, I've seen that. Yes I understand English grammar. Let it rest. kthx.
09:26:33 <shachaf> I never said I was angry!
09:26:35 <shachaf> That's just the flower.
09:26:54 <kallisti> I never said you were angry either.
09:26:57 <kallisti> but GOOD ONE.
09:27:05 <kallisti> get it? cause he's angry.
09:27:11 <kallisti> and a flower.
09:27:12 <kallisti> rich.
09:27:20 <shachaf> I don't get it.
09:30:12 <pikhq> I prefer pluralising wordś with the letter ś.
09:30:38 <pikhq> Thingś like that are wonderful, as I'm sure all you peoplé will agree.
09:30:57 <fizzie> I used to give Apple-made computers (of which we had two: two iBooks) female names.
09:32:01 * pikhq has tended to go with Tolkein names
09:34:01 <fizzie> Such as Frood, Gandlaf, and such?-)
09:46:05 -!- copumpki_ has joined.
09:46:32 -!- copumpkin has quit (Ping timeout: 244 seconds).
09:49:01 <pikhq> I before e except WHEN I SAY SO is the rule, right?
09:49:32 <Sgeo_> I before e except after c but not always like in science.
09:50:20 <pikhq> That has got to be the most pointless "rule" ever phrased about English spelling.
09:51:05 <Sgeo_> Rules? English?
09:51:34 <kallisti> pikhq: a deceitful naysaying rulehating fiend is not a friend of mine.
09:51:53 -!- Ngevd has quit (Quit: Leaving).
09:52:31 <kallisti> inb4 http://en.wikipedia.org/wiki/I_before_E_except_after_C#Exceptions
09:53:59 <pikhq> Sgeo_: English has rules, to be sure.
09:54:24 <pikhq> Those rules are something along the lines of "He who demands consistent orthography shall be shot".
09:54:46 <kallisti> pikhq: PRESCRIPTIVIST. RULES ENGLISH AM ANY NOT STRAWBREEKS.
09:55:48 <pikhq> kallisti: Þy claims are folly, good ſir. Beſides which, I am not ſure of what þeſe "ſtrawbreeks" of which þou ſpeak'ſt *are*.
09:56:18 <kallisti> English rules are just normative practices, bro. English is like... people, man. whatever people are.
09:56:53 <kallisti> `word 50
09:57:01 <HackEgo> coutacherld modwed nentichfor vensigkj sumarius re byrn nitesony hiancermezineitmasteh pitearturtoen acopois cocclick mil smunthayaggin ace tatula welle mendium neal amakiyanthenizhug libtisidsagostrangroff kailicas agillum ampelveri caft impoodoblatiterdie halfatlini sus stitsolisian sholus krovs heon ins momistumirine re prostssinstatnamurac azzel tepieniquerejlastauntiong cluselfomitnda de con apartors te vomperm
09:57:03 <kallisti> ^^^ now all of these are English words.
09:57:50 <pikhq> Are they?
09:57:53 <kallisti> yes.
09:57:54 <pikhq> `cat bin/word
09:57:56 <HackEgo> ​#!/usr/bin/perl \ $VAR1 = { \ 'qz' => { \ 'e' => 1, \ 'k' => 1, \ 'a' => 1, \ ' ' => 9, \ 'i' => 1, \ 'o' => 2 \ }, \ 'sp' => { \ 'w' => 9, \ 'r' => 3173, \ 'a' => 5192, \ 'd' => 67,
09:58:04 <kallisti> pikhq: NO. THAT'S SECRET.
09:58:22 <kallisti> `paste bin/word
09:58:25 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23162
09:58:36 <pikhq> So... It's a frequency table of letters and digraphs in English used to generate "words"?
09:58:41 <kallisti> yep
09:58:48 <kallisti> it's a Markov model.
09:59:11 <kallisti> it works surprisingly well, and will actually work better once I finish up recent improvements I've made.
09:59:13 <pikhq> Hmm, sure enough.
09:59:34 <pikhq> Yeah, Markov models are really good at creating reasonable-seeming nonsense.
09:59:51 <fizzie> fungot: Wouldn't you agree?
09:59:52 <fungot> fizzie: bitwize that's usually only a strategy for using it to learn scheme well, have fun with whenever they suffer the same problem
10:00:03 <fizzie> ^style europarl
10:00:03 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
10:00:07 <pikhq> A good 3/4ths of those seem to fit English sound-wise.
10:00:10 <kallisti> come on, you know you want smunthayaggin to be an actual word.
10:00:16 <fizzie> fungot: What is your position on the Markov model suggestion?
10:00:17 <pikhq> Though they don't really fit morphemically.
10:00:18 <fungot> fizzie: mr president, i will mention only the most important things we can deal with it not as a restriction on the use of litigation. so i believe that the current cooperation with the countries of the european dimension and the issues they have raised are ones on which parliament has had to be created and the extra conditions demanded out of the agri-environmental budget. the community programme ' europe against cancer' progr
10:00:47 <pikhq> "Byrn" I can't believe is not English.
10:00:56 <kallisti> pikhq: the next version will have around 24 datasets and will allow you to interpolate multiple datasets together.
10:01:20 <kallisti> pikhq: also (hopefully) the word ending code will be fixed so that it more closely resembles the lengths of words from its dataset.
10:01:45 <pikhq> Oh, good, "byrn" is an English surname.
10:01:56 <fizzie> "Syck byrn."
10:02:19 <kallisti> yes with short words there's higher probability of accidentally being real English, of course.
10:02:54 <pikhq> Like most languages, English seems to have filled the single syllable space pretty well.
10:02:54 <kallisti> actually I bet that probability will go up when I up to gramage by 1.
10:03:05 <kallisti> s/to/the/
10:03:29 <fizzie> The gramageddon.
10:03:37 <pikhq> Though few languages fill that space as well as the Chinese ones do. Alas.
10:03:48 <kallisti> so in the next version it will be the preceding 3 characters that determine the next one.
10:04:04 <pikhq> (in the language family, generally a syllable corresponds to a word or morpheme)
10:05:33 <kallisti> anglish is suprareor
10:06:01 <kallisti> `word 6
10:06:03 <HackEgo> can copperia th uchente fe cougerever
10:06:08 <pikhq> geafixzzwe bberegputsur
10:06:08 <kallisti> th
10:06:26 <pikhq> "Copperia" must be a country.
10:06:33 <pikhq> That is, if it isn't I shall make it so.
10:06:42 <fizzie> Copperia is famous for its copper exports.
10:06:44 <kallisti> cougerever = lol
10:07:04 <fizzie> $ file busybox
10:07:04 <fizzie> busybox: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70403, stripped
10:07:04 <fizzie> $ mips-linux-ldd busybox
10:07:04 <fizzie> busybox: not an ELF file.
10:07:04 <fizzie> "What." Okay, yes, it's statically linked, but it so is an ELF file. (mips-linux-readelf and mips-linux-objdump have no problems with it.)
10:10:52 -!- nooga has joined.
10:11:23 <fizzie> Holy holitude that was confusing; for the lulz I tried to run it, and it actually ran without problems.
10:11:50 <fizzie> Turns out someone's set this thing up so that MIPS binaries get run by /usr/bin/qemu-mips-static automagically.
10:11:55 <fizzie> Must be the qemu package.
10:19:39 -!- elliott has joined.
10:22:34 <kallisti> elliott: HI ELLIOTT HOW ARE YOU
10:22:38 <kallisti> GOOD MRONING
10:22:46 <kallisti> OR WAIT IT'S LIKE NOON OR SOMETHING?
10:22:55 <kallisti> I suck at non-American timezones.
10:23:17 <elliott> it's actually
10:23:17 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
10:23:23 <elliott> 10:23
10:23:28 <kallisti> ah GMT
10:23:31 <monqy> morning enough
10:23:33 <kallisti> how. convenient.
10:23:39 <elliott> that /is/ morning
10:23:43 <kallisti> yes indeed.
10:23:45 <elliott> i woke up at 9, after having gone to bed at 2
10:23:48 <elliott> and was /well-rested/
10:23:50 <elliott> wtf??
10:23:50 <kallisti> insane.
10:23:57 <elliott> i need 10 hours sleep at the minimum
10:24:03 <elliott> how can 7 be enough
10:24:13 <kallisti> I find that my sleep needs rapidly fluctuate.
10:24:22 <kallisti> I think 8 hours is fine normally though
10:25:17 <kallisti> well, this is perhaps one of the stranger meals I've made.
10:26:14 <monqy> good strange or bad strange
10:26:21 <kallisti> macaroni and cheese with a dab of worcestershire sauce, ritz crackers with a choice of barbecue sauce or raspberry honey mustard dip (where do I find these things), and a glass of grape juice.
10:26:29 <monqy> strange strange? strange strange.
10:26:33 <kallisti> typical american diet.
10:26:36 <kallisti> btw
10:27:16 <kallisti> Worcestershire sauce is amazing. Did I mention that?
10:28:10 <elliott> hmm, my attempt to bait apfelmus into answering my question has failed
10:28:26 <kallisti> it basically enhances the flavor of anything savory.
10:30:55 <kallisti> but then again I'm kind of biased in that I pretty much love every condiment ever made.
10:34:54 -!- Ngevd has joined.
10:36:44 <kallisti> I find the similarities between teriyaki and barbecue interesting.
10:36:52 <Ngevd> Hello!
10:37:13 <kallisti> they're simultaneously cooking methods as well as the sauce used, and originate from different cultures.
10:37:47 * kallisti googled for: barbecue teriyaki
10:37:50 <kallisti> THEY'RE MERGING.
10:43:40 <kallisti> http://en.wikipedia.org/wiki/Marmite
10:43:49 <kallisti> weirdest condiment ever. perhaps I shall try it one day.
10:45:12 <elliott> is marmite the same as vegemite, i think it is, i have had neither
10:45:21 <elliott> monqy: help, i started understanding arrow notation
10:45:28 <monqy> ive never tried
10:45:29 <monqy> is it any good
10:47:12 <elliott> monqy: i guess so??? i am reading: an frp paper
10:47:32 <monqy> :o
10:47:46 <elliott> http://stackoverflow.com/questions/2672791/is-functional-gui-programming-possible/8082179#8082179 quality stack overflow answers
10:47:50 <elliott> (tm)
10:49:08 <monqy> i
10:50:03 <Ngevd> elliott, your reputation is skyrocketing
10:50:15 <elliott> Ngevd: yes
10:50:16 <elliott> yes it is
10:50:16 <Sgeo_> elliott's awake?
10:50:22 <kallisti> no
10:50:37 <shachaf> elliott: Don't worry, your reputation will never change in my eyes.
10:51:01 <kallisti> elliott: lol wow
10:51:02 <kallisti> good answer
10:51:21 <elliott> Sgeo_: no
10:51:39 <elliott> kallisti: NOBODY BUYS SOFTWARE WRITTEN IN HASKELL, YOU DOUBLE CLICK THE .EXE AND NOTHING HAPPENS
10:51:58 <shachaf> elliott: I refuse to double-click things unless they're .LNKs.
10:52:21 <elliott> shachaf: Do you right click -> open the others?
10:52:36 <monqy> slect and return
10:52:51 <shachaf> elliott: No, I right-click -> create shortcut, and then double-click that.
10:52:54 <shachaf> What a silly question.
10:54:08 <elliott> Labels
10:54:08 <elliott> The simplest components are labels, defined as:
10:54:08 <elliott> flabel :: GUI LabelConf ()
10:54:10 <elliott> flabel
10:54:14 <elliott> flabble
10:54:20 <elliott> quality gui (tm)
10:54:32 <kallisti> flable 2 was the best game
10:55:07 <elliott> *flabel
10:55:26 <kallisti> elliott: wtf you've had an account for 9 days and you're already up with people who have been stackoverflowing for years?
10:55:27 <monqy> flbl, fbl, b
10:55:43 <Deewiant> kallisti: Not sleeping helps
10:56:22 <elliott> kallisti: Not really
10:56:34 <elliott> People who don't use it regularly, sure
10:56:49 <elliott> If you mean the http://stackexchange.com/leagues/1/week/stackoverflow/2011-12-18 ranking, that's per-week
10:56:52 <kallisti> elliott: ah
10:57:04 <kallisti> elliott: so it like, drops from inactivity? how does that work.
10:57:18 <kallisti> I don't understand these arbitrary points systems.
10:57:26 <elliott> kallisti: No, I just mean that if you've been using it for years, you'll only have less rep than me if you don't use it actively
10:57:26 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
10:57:29 <elliott> What
10:57:57 <kallisti> you apparently have 5 silver pieces and 23 copper pieces. is stackoverflow an MMO?
10:58:03 <elliott> Yes.
10:58:05 <shachaf> @messages
10:58:05 <lambdabot> elliott said 26s ago: Tachaf
10:58:24 <elliott> http://stackoverflow.com/users/1097181/ehird?tab=badges ;; my precious loot
10:58:27 <shachaf> elliott: As one person in this channel would say: What
10:58:34 <kallisti> elliott: oh nevermind I misread the thingy on the user tab to mean total reputation.
10:58:40 <elliott> @ask shachaf What
10:58:41 <lambdabot> Consider it noted.
10:58:43 <elliott> kallisti: which thingy
10:58:44 <kallisti> elliott: but the 3 years people have reputation in the hundreds of thousands.
10:58:49 <shachaf> @tell elliott Is this a question?
10:58:49 <lambdabot> Consider it noted.
10:58:52 <kallisti> elliott: when you click users at the top of the page
10:58:53 <shachaf> @messages
10:58:53 <lambdabot> elliott asked 12s ago: What
10:58:54 <elliott> kallisti: right
10:58:55 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
10:59:14 <elliott> @messages
10:59:14 <lambdabot> shachaf said 24s ago: Is this a question?
10:59:15 <Ngevd> Yay I posted my first stack overflow answer
10:59:16 <shachaf> elliott: Anyway, I'm pretty sure telliott works better than Tachaf.
10:59:19 <elliott> @ask shachaf No.
10:59:19 <lambdabot> Consider it noted.
10:59:31 <shachaf> @ask elliott I knew it.
10:59:32 <lambdabot> Consider it noted.
10:59:43 <elliott> kallisti: It's actually impossible to surpass a lot of people at the top now, since the daily reputation cap hasn't been there forever
10:59:43 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
10:59:49 <elliott> And since they're not going to stop reaching it every single day
10:59:53 <elliott> Weeell
11:00:00 <elliott> There's no cap on rep from accepted answers and bounties
11:00:09 <elliott> So I guess if you worked in a team...
11:00:13 <elliott> 24/7...
11:00:15 <shachaf> @eval Don't want lambdabot notifying me.
11:00:17 <elliott> For like a year...
11:00:21 <shachaf> @eval I guess I'd better speak like this from now on.
11:00:24 <kallisti>
11:00:25 <kallisti> @Niklas, wouldn't it still hold? I mean if last [] = [] – Magnus Kronqvist 1
11:00:26 <lambdabot> Unknown command, try @list
11:00:28 <kallisti> I lol'd
11:00:28 <elliott> Ngevd: Oh dear.
11:02:20 <Ngevd> I don't strictly speaking know any programming languages
11:02:24 <Ngevd> BUT THAT WON'T STOP ME
11:02:28 <elliott> Ngevd: You definitely shouldn't avoid <bdi>.
11:02:55 <elliott> A page remains legible even if it doesn't work, and it improves usability for people using RTL languages.
11:03:52 <shachaf> @eval RTL LANGUAGES R DUMB
11:04:15 <elliott> Although admittedly it doesn't seem like anyone implements it yet.
11:04:15 * shachaf sighs.
11:04:15 <lambdabot> shachaf: You have 1 new message. '/msg lambdabot @messages' to read it.
11:04:18 <shachaf> @messages
11:04:19 <lambdabot> elliott asked 5m ago: No.
11:04:31 <elliott> Ngevd: But it's semantically nice and has no drawbacks for a browser that doesn't support it.
11:04:39 <kallisti> Ngevd: wait what you don't know any programming languages?
11:04:59 <Ngevd> kallisti, not well enough to answer most of these questions
11:05:12 <Ngevd> I'm conversational in Haskell and Python
11:05:12 <itidus21> Ngevd: i recommend you begin with the hello world language
11:05:12 <shachaf> Ngevd: Well, you know what they say.
11:05:16 <itidus21> i think thats what its called
11:05:16 <shachaf> When life gives you marmals...
11:05:28 * kallisti could probably answer some Perl questions. Hopefully without making any mistakes.
11:05:36 <kallisti> if I take time to research a little to verify what I say.
11:05:54 <itidus21> you type a "h" as input.. and it produces "Hello world!" as output or something
11:06:15 <monqy> there are a few languyages that do that
11:06:29 <itidus21> theres also a case sensitive version which can be a quine
11:06:36 <kallisti> "a language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports"
11:06:39 <kallisti> lol thanks SO
11:06:40 <itidus21> ^insensitive
11:06:56 <monqy> kallisti: perl?
11:06:58 <kallisti> yes.
11:07:03 <kallisti> though they forgot to mention that it's also practical.
11:07:09 <kallisti> but they got the extraction and report part
11:07:11 <kallisti> also that it's a language.
11:07:12 <Ngevd> Oh dear god I have reputation
11:07:15 <monqy> D:
11:07:45 <kallisti> also "optimized" might be the wrong word. you might get the impression that it's generally going to be fast.
11:07:54 <itidus21> Ngevd: you are certainly well known in the hamlet of hexham
11:08:55 * elliott considers posting a better answer than Ngevd's, but decides he doesn't want to be recorded as answering an HTML question.
11:09:15 <shachaf> I answered an HTML question. :-(
11:09:20 <shachaf> Well, JavaScript + HTML.
11:09:36 <shachaf> And it was because someone linked to my website so I saw the question in the logs.
11:09:44 <shachaf> Ngevd: The reason you have reputation without answering any questions is that your reputation precedes you.
11:10:04 <Ngevd> shachaf, I have answered one whole question!
11:10:07 <Ngevd> Poorly
11:10:21 <itidus21> karma+ shachaf
11:10:24 <monqy> html?
11:10:27 <monqy> was it exciting
11:10:39 -!- GreaseMonkey has quit (Quit: The Other Game).
11:10:56 <itidus21> it was <exciting />
11:12:00 <Ngevd> </it><it>
11:12:04 <Ngevd> ^^^html joke
11:12:10 <monqy> D:
11:12:14 <itidus21> <exciting event="ngevd answered a question"/>
11:12:19 <monqy> ;_;
11:12:20 <elliott> <monqy>
11:12:30 <monqy> ;_;
11:12:36 <elliott> monqy is inside himself.................
11:12:36 <itidus21> </monqy>
11:12:37 <elliott> </monqy>
11:12:38 <elliott> grosse
11:12:44 <monqy> oh no
11:12:46 <elliott> oh now we're double outside monqy... help
11:12:55 <itidus21> or are we?
11:12:56 <elliott> it's an antimatter version of monqy
11:13:02 <itidus21> we're in undefined monqy space
11:13:09 <elliott> do you
11:13:12 <elliott> know what the word "undefined" even means
11:13:14 <monqy> i pfrefer defined monqy space...
11:13:57 <itidus21> elliott: well as it is <monqy> </monqy> </monqy> ... where are we !?!
11:14:04 <monqy> oh no oh no oh no
11:14:19 <itidus21> how can we close tags twice after opening once
11:14:24 <monqy> you forgot the escapes.....
11:14:30 <elliott> http://hackage.haskell.org/package/partial-lens i like the idea but don't like the duplication with data-lens :(
11:14:39 <itidus21> the browser will act like nothing is wrong ;_;
11:14:43 <elliott> itidus21: you just ... unwrapped us again :(
11:14:49 <elliott> were in
11:14:51 <elliott> yqnom space
11:15:01 <itidus21> the browser is apathetic to the grammar of tags
11:15:09 <itidus21> it is just toying with us
11:16:24 <itidus21> </<</<all is well>/>>/>
11:16:43 <monqy> dead
11:17:53 <elliott> rip
11:22:49 -!- monqy has quit (Quit: hello).
11:30:55 -!- ais523 has quit (Remote host closed the connection).
11:31:05 -!- Phantom_Hoover has joined.
11:31:28 <Phantom_Hoover> obs
11:31:28 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:34:43 <Phantom_Hoover> Facebook... seems to have exploded on me.
11:35:58 <elliott> Try not using Facebook.
11:36:02 * elliott help
11:39:21 <fizzie> http://rt.com/news/patriot-missile-seized-finland-415/ "­On board the British bulk carrier Thor Liberty, Finnish customs found 69 surface-to-air Patriot missiles and 160 tons of picrite explosives, being carried under the guise of fireworks."
11:39:30 <fizzie> Well, new year's coming... but that's quite some fireworks.
11:41:09 <Phantom_Hoover> Wait is Finland going to war?
11:41:22 <Phantom_Hoover> Please go to war please?
11:41:29 <Phantom_Hoover> With Sweden?
11:41:33 <kallisti> .......
11:41:38 <kallisti> BAH FUCK YOU STACK OVERFLOW
11:41:40 <fizzie> No, they're apparently going to South Korea.
11:41:43 <kallisti> it limits me to 2 hyperlinks
11:41:51 <kallisti> because I'm new
11:41:57 <Phantom_Hoover> Maybe they're going to war with Sweden?
11:42:01 <elliott> kallisti: I like how I am making everyone do SO?
11:42:15 <elliott> kallisti: But yeah, I had that problem with my first answer; someone else added it in and it netted me over 100 reputation.
11:42:20 <Phantom_Hoover> "reported Finnish Interior Minister Päivi Räsänen, who called the incident ‘abnormal’."
11:42:45 <Phantom_Hoover> Normally, we don't seize any explosives at all.
11:42:56 <Phantom_Hoover> elliott, AUGH IT'S BECOME VIRULENT
11:43:13 <fizzie> Also: "The logistics company moving the shipment insists the arms and explosives got on board the Thor Liberty “by mistake”."
11:44:07 <elliott> http://stackoverflow.com/users/1111591/kallisti
11:44:22 <Phantom_Hoover> "See, what happened was, we had all these missiles in case of pirates, and all these fireworks, and we mixed the two up. The pirates were surprised too."
11:47:30 <fizzie> Also in Finnish news: there's been an EARTHQUAKE. Of magnitude 2.6 on the Richter scale.
11:47:54 <kallisti> elliott: you've found me.
11:47:59 <fizzie> Apparently it's news because some people, and not just instruments, noticed.
11:48:18 <kallisti> elliott: er, actually, that's not me, that's the famous documentarian.
11:48:40 <elliott> Right.
11:49:11 <elliott> kallisti: Wow, it's even a non-terrible answer.
11:49:14 <elliott> I might even... UPVOTE It.
11:49:15 <elliott> *it
11:49:21 <kallisti> elliott: I answered the fuck out of that question.
11:49:32 <kallisti> probably answered it too much.
11:49:36 <elliott> Enjoy yr 11 reputation
11:49:36 <Phantom_Hoover> <fizzie> Apparently it's news because some people, and not just instruments, noticed.
11:49:44 <Phantom_Hoover> Some Finns are actually seismometers.
11:49:48 <kallisti> elliott: riding on the coat tails of legends.
11:49:50 <elliott> kallisti: Dude, my entire philosophy is banging out gigantic walls of text in response to simple questions.
11:49:58 <elliott> kallisti: In one sitting, without editing back much.
11:50:02 <elliott> As soon as I see the question.
11:50:02 <kallisti> elliott: I think it will be effective.
11:50:09 <fizzie> Phantom_Hoover: Actually I'm not even sure anybody noticed, the article doesn't say. But there was a 2.9 (gasp!) quake recently, which apparently was.
11:50:26 <fizzie> "Magnitude: 2.0–2.9 -- Earthquake effects: Generally not felt, but recorded."
11:50:39 <kallisti> cool so now I can add those links
11:51:37 <elliott> kallisti: No.
11:51:40 <elliott> kallisti: That requires 100 reputation.
11:51:51 <elliott> Easy to achieve on your first day, naturally.
11:52:12 <elliott> kallisti: (Accepted answers get you +15, and downvotes are rare.)
11:52:13 <kallisti> elliott: oh
11:52:27 <kallisti> elliott: I wanted to provide link for scalar and wantarray
11:52:29 <kallisti> because they're cool
11:52:39 <elliott> kallisti: Post in the comments linking to them, it's the same Markdown syntax.
11:52:43 <elliott> A good samaritan might edit them in.
11:52:56 <elliott> It might even be me (probably not, I don't want the Perl taint).
11:53:01 <kallisti> I almost went into the ()=... trick to enforce list context but decided it was probably within rambling threshold at that point.
11:53:02 <elliott> That happened with my first answer.
11:54:04 <kallisti> !perl print scalar (()=(35,26234,23))
11:54:07 <EgoBot> 3
11:54:08 <kallisti> so bad.
11:54:16 <kallisti> !perl print scalar (35,26234,23)
11:54:16 <EgoBot> 23
11:55:33 <kallisti> oh, you want to get the length of an arbitrary list? obviously that's just scalar (()=list_expr)
11:56:29 <kallisti> 2 upvotes yeaaaaah
11:57:04 <elliott> One of those was me.
11:57:05 <elliott> @pl \(x, f'), y) -> ((x, y), first f')
11:57:06 <lambdabot> (line 1, column 12):
11:57:06 <lambdabot> unexpected ")"
11:57:06 <lambdabot> expecting letter or digit, operator, ",", pattern or "->"
11:57:09 <elliott> @pl \((x, f'), y) -> ((x, y), first f')
11:57:10 <lambdabot> uncurry (uncurry ((. first) . flip . ((,) .) . (,)))
11:57:11 <elliott> Nice.
11:58:27 <kallisti> elliott: I'm aware. Do you think I can't read or something? :P
11:58:47 * kallisti has earned a badge.
11:58:53 * kallisti pins it to his fridge.
11:58:55 <kallisti> so proud.
11:59:03 <fizzie> There was a retracted proposal about a 'list' counterpart to 'scalar' -- http://www.mail-archive.com/perl6-language%40perl.org/msg03404.html
11:59:43 <kallisti> I'm actually kind of surprised that there's no way to enforce void context
11:59:52 <kallisti> though.... I know it wouldn't make any sense to do so
12:00:46 <kallisti> elliott: I can participate in meta now. That sounds scary.
12:00:51 <kallisti> I don't think I want that.
12:00:52 <Phantom_Hoover> Wow, the Apollo guidance computers were made of 4100 3-input NOR gates.
12:01:27 <elliott> That's... it?
12:01:53 <elliott> I would like to reiterate: HOW THE FUCK DID WE GET TO THE MOON
12:02:07 <Phantom_Hoover> Oh, wait, the ones they actually used on crewed flights only had 2800.
12:02:17 <Ngevd> elliott, NOBODY KNOWS
12:02:24 <fizzie> Or... DID WE?
12:02:29 <elliott> Phantom_Hoover: >_<
12:02:31 <Ngevd> We used ancient technology which has been lost in the tempest of time
12:02:39 <elliott> Stop it, 60s, you're making us look like idiots.
12:02:46 <Phantom_Hoover> What were these 'NOR gates' of the ancients?
12:02:49 <Phantom_Hoover> We may never know.
12:02:55 -!- hagb4rd2 has joined.
12:03:04 <elliott> They were shrines to the vengeful god Nor.
12:03:13 <Phantom_Hoover> They had eleven opcodes.
12:03:24 <Phantom_Hoover> Wait, no.
12:03:35 <Phantom_Hoover> Eight opcodes; some had multiple functions.
12:04:32 -!- hagb4rd has quit (Read error: Operation timed out).
12:04:39 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:06:15 <kallisti> "Why doesn't Perl compile to binary files like python"
12:06:19 <kallisti> I lol'd
12:06:39 <Ngevd> Answer it as sarcastically as you can
12:06:54 <elliott> Ngevd: That would be a dumb idea.
12:07:09 <Ngevd> Hence why I only have 11 reputation
12:07:31 <Phantom_Hoover> ARGH ALL OF YOU ARE DOING THIS
12:07:48 <elliott> Ngevd: You just answered a question from November. :p
12:08:05 <Ngevd> November was THE BEST MONTH
12:08:08 * elliott upvotes it anyway.
12:08:20 <Ngevd> Yay
12:08:28 <elliott> I don't want anyone to upvote mine though, feels like cheating.
12:08:40 <elliott> Phantom_Hoover: JOIN US
12:08:42 <elliott> JOIIIIIN UUUUS
12:08:45 <Phantom_Hoover> NOOOOOOOOOOOOOOOOOOOOOOOO
12:08:56 <Phantom_Hoover> IT'S THE SEAGULLS ISN'T IT
12:11:52 <fizzie> They're all pod people.
12:14:58 <kallisti> Ngevd: hahahaha I have 21 reputation and 1 copper piece.
12:15:00 * kallisti is winning.
12:15:05 <kallisti> I WILL SOON HAVE ALL THE COPPER PIECES
12:15:10 <Ngevd> kallisti, so do I
12:15:14 <Ngevd> http://stackoverflow.com/users/1097904/taneb
12:15:17 <kallisti> NOOOOOOOOOOOOOOOOOOO
12:15:32 <Ngevd> I've also answered more questions than you
12:15:53 <elliott> Kids. So funny.
12:15:55 <fizzie> What can you buy with the copper pieces?
12:16:06 <Ngevd> A bronze dagger
12:16:09 <elliott> Absolutely nothin'.
12:16:36 <fizzie> I think that place would be much more popular if you could buy some weapons and shoot other people's answers.
12:17:40 <kallisti> elliott: I found a glass tag expecting people to eagerly be asking questions about Glass
12:17:54 <kallisti> turns out it's something else.
12:17:56 <kallisti> shocking.
12:18:30 <kallisti> must. not. answer. java. questions.
12:31:43 <kallisti> Ngevd: this is merely an indication that my answers are of higher quality than yours.
12:37:26 <Ngevd> brb
12:37:27 -!- Ngevd has quit (Quit: Goodbye).
12:41:04 <elliott> kallisti: you just answered a question from april
12:41:34 <fizzie> Better Nate than lever.
12:41:52 <elliott> fizzie: :|
12:43:16 <kallisti> elliott: I'm going through some uncommon tags.
12:43:20 <kallisti> of various interests I have.
12:43:38 <elliott> kallisti: Well sure, I guess if you're more interested in the betterment of humanity than reputation...
12:43:46 <kallisti> lol
12:43:47 <kallisti> indeed.
12:44:11 <kallisti> fruit are awesome.
12:44:19 <elliott> *fruitses
12:44:19 <kallisti> fruits?
12:44:28 <kallisti> or apparently fruitses
12:44:50 <kallisti> I like how being delicious is a genetic adaptation.
12:45:10 <Phantom_Hoover> The plant is just toying with you.
12:45:23 <kallisti> it wants me to spread its seeds.
12:45:43 <kallisti> but instead we mass produced them for their delicious yield.
12:45:46 <kallisti> I guess that's even better.
12:46:01 <Phantom_Hoover> They're like the chickens of the plant world.
12:46:05 <kallisti> I wonder if fruits are getting more delicious.
12:46:17 <kallisti> because we selectively breed them. maybe.
12:46:39 <Phantom_Hoover> Obviously.
12:46:46 <Phantom_Hoover> Have you _seen_ a wild strawberry?
12:46:50 <Phantom_Hoover> Those things are tiny.
12:47:44 <kallisti> hmmm okay so there's ACC on Freenode and STATUS on Rizon
12:47:59 <kallisti> what are the other ways to check for authentication on IRC networks?
12:48:07 <elliott> kallisti: Dude.
12:48:15 <elliott> kallisti: Have you seen a wild banana.
12:48:15 <kallisti> I WANT ALL OF THEM OKAY.
12:48:19 <kallisti> elliott: yes.
12:48:21 <elliott> Phantom_Hoover: (Come on bananas are way more the obvious example hre.)
12:48:22 <elliott> *here
12:48:36 <Phantom_Hoover> Very few people have seen wild bananas.
12:48:43 <Phantom_Hoover> Wild strawberries are relatively common.
12:49:57 <kallisti> Wikipedia: It was considered okay behavior to simply /ignore NickServ's notices, but an operator decided to /kill NickServ and use the nickname NickServ himself, subsequently collecting all identify passwords from users and being amused by that.
12:50:02 <elliott> Phantom_Hoover: The INTERNET has!!!
12:50:14 <kallisti> "and being amused by that" good to know.
12:50:21 * kallisti is tempted to [citation needed]
12:51:02 -!- Ngevd has joined.
12:51:41 <Ngevd> Hello!
12:52:38 <kallisti> why are all nickservs not the same help IRC sucks
12:53:32 <kallisti> so having /actual/ secure administratorship for a bot will be difficult.
12:53:43 <kallisti> or, well, more difficult than I would like.
12:53:46 <kallisti> not impossible though.
12:58:41 <elliott> kallisti: with freenode authentication is in /whois.
12:58:46 <elliott> but who the fuck uses non-freenode anyway
12:59:14 <kallisti> plenty of people.
12:59:34 <kallisti> elliott: also I like nickserv's acc because it's a bit easier to check.
12:59:40 <kallisti> I don't have to wade through the other data
12:59:47 <kallisti> it just returns a status number.
13:00:35 <kallisti> on the other hand, I think a lot of networks show authentication in whois so that may be a good idea.
13:01:40 <fizzie> On freenode, you can use that cap identify-msg stuff.
13:02:45 <fizzie> Though I'm not entirely sure it's "identified with an account holding the current nick" or just "identified with some account".
13:03:24 <kallisti> elucidate me (totally incorrect usage of that word) on this "cap identify-msg" thing you speak of
13:04:11 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:04:14 <fizzie> It prefixes each message with + or - depending on whether the sending user's identified.
13:04:25 <fizzie> http://freenode.net/seven-for-hyperion-users.html -- they've recently changed the mechanism, though.
13:04:33 <fizzie> It used to be with 'capab'.
13:04:43 -!- Phantom_Hoover has joined.
13:07:45 <kallisti> oh look, an irssi script, written in perl
13:07:47 <kallisti> how convenient
13:07:52 <kallisti> since my bot is perl too
13:07:56 <elliott> kallisti: Got 1000 rep yet?
13:08:05 <kallisti> elliott: no I stopped caring
13:08:12 <fizzie> If it's actually just "identified with services" indicator, it might not be very useful.
13:08:13 <kallisti> also people keep asking tough questions. sheesh.
13:09:53 <kallisti> I basically just intend to keep track of people's identification status when they join channels, and occasionally when they speak.
13:10:53 <kallisti> actually it would probably be easier just to check identification status when needed.
13:11:10 <kallisti> I'm not sure if my bot library can do that. maybe with a thread??
13:11:11 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:11:24 <kallisti> I'm not sure how well it handles asynchronous stuff.
13:11:26 <elliott> @pad: If you're serious about multicore parallelism then you need to forget about Haskell and study how real parallel programs are written. I explained this in detail in my answer but it got downvoted into oblivion in under 9 hours! – Jon Harrop Apr 9 at 9:00
13:11:26 <lambdabot> Not enough privileges
13:11:30 <elliott> delicious jon harrop tears :')
13:11:40 <elliott> i wonder how he sleeps at night
13:11:59 <kallisti> Haskell: not really doing parallelism
13:12:30 <kallisti> or maybe
13:12:37 <kallisti> Haskell: not real programs
13:12:53 <fizzie> Haskell: not real, all in your imagination.
13:13:26 <elliott> Well it prevents the programmer from doing side effects.
13:13:33 <elliott> So there's no reason the .exe that does nothing that the user won't buy even has to exist.
13:13:45 <kallisti> indeed
13:14:53 <kallisti> elliott: well you need to know if your program has errors.
13:15:04 <kallisti> partial functions can still produce errors even without side-effects.
13:15:30 <kallisti> though I guess without a main function you have no actual order of execution.
13:16:29 -!- Ngevd has quit (Read error: Connection reset by peer).
13:16:47 <kallisti> or input.
13:17:00 -!- copumpki_ has quit (Quit: Leaving...).
13:17:14 -!- copumpkin has joined.
13:19:11 -!- Ngevd has joined.
13:21:14 <elliott> kallisti: A REPL has side-effects :)
13:21:15 -!- Taneb has joined.
13:22:45 -!- Taneb has quit (Client Quit).
13:24:27 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:25:11 <kallisti> elliott: implementation detail. like seq. :>
13:28:03 <elliott> /kickban kallisti
13:29:56 <kallisti> though, I guess in a call-by-value language seq would be completely normal. hm
13:30:06 <kallisti> s/normal/unside-effectful/
13:34:50 -!- sebbu has quit (Read error: Connection reset by peer).
13:35:22 -!- sebbu has joined.
13:35:23 -!- sebbu has quit (Changing host).
13:35:23 -!- sebbu has joined.
13:37:21 <kallisti> http://www.youtube.com/watch?NR=1&feature=endscreen&v=3lTd5LpB6Ao
13:37:25 <kallisti> oh my god this is amazing.
13:39:52 <elliott> kallisti: you know seq doesn't have side-effects, stop trolling :P
13:41:39 <elliott> hmm, perhaps I will sneak a link to my question in a feature request
13:42:43 <kallisti> elliott: I can see how it's kind of ridiculous to say that evaluating expressions is a side-effect, however I'm not entirely convinced in this case that it isn't one in this case.
13:43:00 <elliott> kallisti: no. stop. please. you're going to make yourself look like an idiot again.
13:43:10 <kallisti> no that's all I have to say about it.
13:43:20 <elliott> yes. and that was enough.
13:44:46 <kallisti> perhaps what is a side-effect depends on your evaluation model.
13:46:23 <kallisti> consider the inverse of seq in a mostly call-by-value language. It forces its first argument to be non-strict and then returns its second argument.
13:46:32 <kallisti> I think that would be a side-effect.
13:46:32 <elliott> thankfully, the definition of seq _does not depend on the evaluation model_
13:46:42 <elliott> haskell specifies only a non-strict /semantics/, there is not even a notion of time passing.
13:46:50 <elliott> i am not discussing this further because it will just be a rehash of the previous idiocy, however.
13:47:56 -!- derdon has joined.
13:47:59 <kallisti> feel free to link me to the definition of seq in relation to Haskell's semantics. I'm curious.
13:48:39 <elliott> I'm not going to encourage you by linking you to a document you can trivially find yourself.
13:48:57 <elliott> Especially when you are practically guaranteed to just try and warp it to fit your perception of things.
13:48:59 <kallisti> encourage me to learn? shame on you.
13:49:05 <kallisti> what if I associated reputation points to the act?
13:49:12 <kallisti> I'll keep a tally. currently you have 0 reputation points.
13:50:48 <elliott> kallisti: You can't learn if you start with preconceptions.
13:51:22 <kallisti> it's literally impossible to not have preconceptions. More importantly, preconceptions does not limit ones ability to learn. They're just placeholders from reasoning by intuition.
13:52:06 <kallisti> but, I can see you wish to continue thinking I have never once changed a preconceive notion. Cool.
13:52:07 <elliott> It is impossible to learn when you hold on to preconceptions about the thing you are learning.
13:52:12 <kallisti> I'm going to go to sleep now.
13:52:25 <elliott> Whether you find yourself unable to eliminate such preconceptions or not is not something I particularly care about.
13:53:22 <kallisti> Your reputation score isn't looking very promising.
13:53:32 <kallisti> Perhaps I'll post it online so you have incentive.
13:53:35 <kallisti> Good night.
13:54:13 <elliott> Ooh, you used serious mode.
13:55:12 -!- derdon has quit (Remote host closed the connection).
13:56:11 -!- tuubow has quit (Ping timeout: 240 seconds).
14:08:17 <elliott> "Is there a list of hackage packages that fail to compile with this release?" "All of them is probably a good approximation."
14:34:29 -!- PiRSquaredAway has changed nick to PiRSquared17.
14:34:39 -!- nooga has quit (Ping timeout: 252 seconds).
14:43:31 -!- oerjan has joined.
15:01:46 -!- FireFly has left.
15:03:32 -!- FireFly has joined.
15:05:19 <elliott> hi oerjan
15:06:59 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA i mean hi
15:07:34 <elliott> same.
15:08:50 <elliott> "This account is a chimera of several user accounts following a stackexchange mix-up."
15:09:54 <oerjan> reassuring.
15:10:33 <fizzie> Makes one wonder whether they've been chimerified in real life, too, following a stackexchange mix-up.
15:11:12 <fizzie> The way you're all now doing it, I suspect tomorrow a kalliottgevd will join #esoteric.
15:12:01 <Vorpal> hi
15:12:13 <Vorpal> elliott, did you see that lambdabot message?
15:13:49 <elliott> what's lambdabot
15:13:53 <elliott> fizzie: Well, the account is still active.
15:13:57 <elliott> fizzie: I wonder if they're all using it.
15:14:06 <elliott> fizzie: (Its name is "Complicated see bio".)
15:15:12 <fizzie> They're all each other's "it's complicated".
15:15:29 <elliott> Oh, I thought it was a complex marine organism.
15:17:21 <elliott> oerjan: Come on, swat me for that.
15:17:48 -!- yiyus has quit (Read error: Operation timed out).
15:18:04 -!- yiyus has joined.
15:21:28 -!- MSleep has changed nick to MDude.
15:29:20 -!- pikhq_ has joined.
15:29:50 <fizzie> "With words of pants stupid stuff." -- Saruman.
15:29:56 -!- pikhq has quit (Ping timeout: 268 seconds).
15:30:16 <Vorpal> elliott, but seriously, what did you think about those screenshots?
15:42:19 <elliott> They were made out of bits.
15:42:22 <elliott> "Paddleball is a fun game, but, as defined here, it only plays one game. Our
15:42:22 <elliott> first refinement to the game is to add a restart button that allows us to play
15:42:22 <elliott> again, as show in figure 5."
15:42:27 <elliott> Yessss, more Paddleball!
15:44:18 <fizzie> "Unfortunately sensing minimum and make peace s terminal take Thompson together." -- Saruman.
15:45:19 <elliott> fizzie: What.
15:45:53 <fizzie> Yeah, sometimes he's not very coherent.
15:46:14 <fizzie> (At least when seen through Youtube's "transcribe audio" feature.)
15:46:28 <Gregor> elliott: <elliott> "This account is a chimera of several user accounts following a stackexchange mix-up." // what account?
15:48:36 <fizzie> "Students... What do you want, dozens of gray matter? Yes... fifty-year-old sign, or perhaps it is a product to itself, along with the problems of the second thing that is the road to the following questions", muses Saruman. "Literature is irritating students. Citizens need this!" counters Gandalf.
15:51:52 <Sgeo_> Gregor, there seems to be a bunch
15:53:23 -!- kmc has joined.
15:59:40 <elliott> Gregor: "Complicated see bio". :p
16:01:17 <Gregor> elliott: Can't has URL? >_>
16:01:47 <Gregor> Holy crap, there ARE a lot of them.
16:02:02 <elliott> Gregor: Nah, there's only one.
16:02:06 <elliott> It just has accounts on multiple sites.
16:02:24 <Gregor> Oh
16:02:25 <elliott> http://meta.superuser.com/questions/3663/dark-hacking-my-account-name-got-changed-from-randolf-richardson-to-complica ;; and the main owner doesn't understand how OpenID works :P
16:02:37 <Gregor> Ohyeah,all the same number.
16:04:45 -!- Ngevd has joined.
16:05:16 <Gregor> elliott: Wow, he severely doesn't understand OpenID X_X.
16:05:22 <Ngevd> I'm thinking of calling my next esolang Salvador, in the spirit of Piet
16:05:25 <Gregor> You guys should password-protect your OpenID.
16:05:27 <Gregor> 'cuz hackers.
16:06:29 -!- derdon has joined.
16:06:59 <Gregor> However, did they seriously trust the email reported by OpenID?
16:07:02 <Gregor> 'cuz that's a legit guffaw.
16:07:11 <Ngevd> Or maybe Pollock
16:07:24 <Ngevd> Or Jackson
16:07:43 <Gregor> Pollock would be a good name for an esolang.
16:07:57 <Ngevd> It's a Piet-like language using the web-safe pallete
16:08:06 <Ngevd> With 215 functions
16:08:08 <Gregor> X-D
16:09:14 <elliott> Gregor: No, they didn't.
16:09:19 <elliott> There was some unspecified database mixup.
16:09:35 <Gregor> Ah
16:09:54 <elliott> Gregor: It would take some supremely bad thinking to design a login system based solely on OpenID from the ground up, and then key authentication based on the reported email rather than the OpenID itself :P
16:10:57 <Gregor> Indeed.
16:12:36 <Ngevd> Hmm..
16:13:19 <Ngevd> I think some of these functions are getting silly
16:13:37 <Ngevd> I have inverse hyperbolic cosecant
16:14:02 <elliott> oerjan: guess who has a haskell question :D
16:15:18 <Ngevd> I'm also making a four-letter or less short name for each function
16:15:29 <Ngevd> That probably won't be in the final spec
16:15:36 <Ngevd> "ACCH"
16:15:44 <Ngevd> "PRM?"
16:15:45 <Ngevd> "E"
16:16:50 <Ngevd> Hmm
16:16:54 <Ngevd> Is -1 prime?
16:18:06 <elliott> it's -prime
16:18:27 <Ngevd> Its only integer factors are 1 and itself
16:18:52 <oerjan> elliott: no idea
16:19:21 <elliott> oerjan: MEEEEEEEEE
16:19:31 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
16:19:39 <elliott> 75 over 7.5 :/
16:19:51 <Ngevd> 10?
16:19:52 <elliott> oerjan: :DDDDDDDDDDDDDDDDDDdddddddddddddddddddddddddd ok so
16:20:02 <elliott> say I want a function f, which can be specialised to all these types:
16:20:15 <elliott> f :: (forall a. F a b) -> b
16:20:20 <oerjan> Ngevd: -1 is a unit, like 1, and units are not primes.
16:20:28 <elliott> f :: (forall a b. F (a,b) c) -> c
16:20:35 <elliott> f :: (forall a b c. F (a,(b,c)) d) -> d
16:20:35 <elliott> or
16:20:39 <elliott> more generally basically
16:20:54 <elliott> (F x y), where x is either fully universally quantified, or a tuple of fully universally quantified variables
16:20:59 <elliott> how can I do this with a typeclass :( you can't do
16:21:04 <elliott> instance Foo (forall a. F a b)
16:22:15 <oerjan> no idea, i don't understand how universal quantification interacts with other things.
16:22:20 <PiRSquared17> ^bf ,.,[.]!:D
16:22:20 <fungot> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ...
16:22:42 <elliott> oerjan: sheesh :'(
16:24:56 <Ngevd> I've only defined 71/125 commands and I've got a self-modifying language with complex numbers and trigonometry
16:25:37 <Ngevd> And I will go now
16:25:40 -!- Ngevd has quit (Quit: Goodbye).
16:25:46 <oerjan> what about f :: (forall a b c. F ((a,b),c)) d) -> d
16:25:54 <oerjan> is that also included
16:26:22 <elliott> er if you fix the parens yes
16:27:06 <oerjan> elliott: can you define data Forall t = Forall (forall x. t x) ? that might help.
16:27:08 <elliott> basically f :: (forall {xs}. F a b) -> b iff a is zoopy, where "x is zoopy" is defined as: x is either an element of xs, or x = (y,z) where y and z are zoopy
16:27:16 <oerjan> or even newtype
16:27:20 <elliott> oerjan: yep
16:27:25 <elliott> newtype
16:27:55 <oerjan> and then you should be able to do instance Foo (Forall (F a))
16:28:18 <elliott> hmm... class Foo t where f' :: t a -> a?
16:28:47 <oerjan> Forall (F a) has kind *
16:28:51 <elliott> er right
16:28:56 <elliott> what does Foo look like, then?
16:29:08 <oerjan> i dunno you wrote it above
16:29:41 <elliott> oerjan: er well it was just an example...
16:29:53 <elliott> hmm maybe with a type family...
16:30:01 <elliott> oerjan: wait, yours is the wrong way around
16:30:03 <elliott> it needs to be Flip F
16:30:33 <oerjan> well yeah.
16:31:55 <elliott> class Foo t where
16:31:56 <elliott> type Out t :: *
16:31:56 <elliott> f' :: t -> Out t
16:31:56 <elliott> instance Foo (Forall (Flip (->) r)) where
16:31:56 <elliott> type Out (Forall (Flip (->) r)) = r
16:31:56 <elliott> f' (Forall (Flip f)) = f ()
16:31:58 <elliott> ok that works
16:32:00 <elliott> (setting F = (->))
16:32:08 <elliott> now to figure out how to generalise this to allow the tuple inputs...
16:37:27 <oerjan> hm...
16:51:31 <kallisti> elliott: I was serious the whole time, pooplord.
16:53:57 <elliott> don't make fun of poor zoosmell's death
16:57:42 -!- Phantom_Hoover has joined.
16:58:16 <elliott> oerjan: help, i like arrows. help, i like arrowised frp. i am become shadow of former self.
16:58:43 <oerjan> data ForallTree where { FABLeaf :: (forall a. f a) -> ForallTree f; FABBranch :: ForallTree (ForallTree2 f) -> ForallTree f }; newtype ForallTree2 f a = ForallTree (Curry f a); newtype Curry f a b = Curry (f (a,b))
16:59:06 <oerjan> s/FAB/FAT/g, i guess
17:00:48 <oerjan> *newtype ForallTree2 f a = ForallTree2 (ForallTree (Curry f a));
17:02:12 <oerjan> or thereabouts.
17:03:33 <elliott> oerjan: heh, nice
17:18:49 <oerjan> i'm not sure that's right, though, the branching may be too dynamic rather than static
17:19:42 <elliott> i would be more concerned that there is no way to type f _itself_ because the constructors can't be composed with it due to rank-n-nses
17:19:44 <elliott> *ness
17:21:30 <oerjan> erm i was imagining f :: ForallTree (Flip F r) -> r
17:23:46 <elliott> oerjan: yes, which isn't the type of f I wanted...
17:23:54 <oerjan> grmble
17:23:59 <elliott> so some additional mangling has to be done to get it in a form that will accept the relevant types
17:24:31 <elliott> I should note that I have rapidly convinced myself that class Unit a where unit :: a; instance Unit () where unit = (); instance (Unit a, Unit b) => Unit (a, b) where unit = (unit, unit); f :: (Unit a) => F a b -> b is equivalent :P
17:25:59 <oerjan> well if that's all the types you need to use
17:26:48 <elliott> oerjan: well there's no point using any other type, as F is necessarily agnostic to the values it's passed (modulo seq etc.)
17:26:50 <elliott> since it's function-esque
17:29:36 <oerjan> i would assume that would depend on what F is. for F = (->) i can see that class is enough.
17:30:15 <oerjan> but another F might have a different method for constructing the resulting b
17:31:25 <oerjan> i imagine.
17:32:06 -!- micahjohnston has joined.
17:33:12 <oerjan> say if you had something like newtype F a b = F ((a -> Int) -> b)
17:33:32 <oerjan> hm no that's too simple.
17:35:37 <oerjan> perhaps you really cannot make an F that requires more than just a way to construct a values.
17:37:24 <elliott> oerjan: it's an arrow F
17:37:29 <elliott> so function enough :P
17:37:45 <oerjan> hm
17:37:54 <elliott> oerjan: type families are one obvious way to create a pathological F, anyway
17:38:15 <oerjan> well ok
17:38:25 <elliott> oerjan: but constructing a value of type (forall a. F a b) becomes difficult.
17:38:28 <elliott> one might even say impossible.
17:53:14 <elliott> oerjan: How many swats are reserved for making fun of Norwegians?
17:54:06 <kallisti> FUCK SLEEP WHO NEEDS IT.
17:55:21 <oerjan> elliott: in that case, expect a swat team.
17:55:46 <elliott> oerjan: I'm fucked :'(
17:56:04 <coppro> elliott: Congratulations! Was it your first time?
17:56:07 <oerjan> it was only a matter of time.
17:56:20 <coppro> oerjan: ^5
17:56:34 <olsner> hahaha, a SWAT TEAM
17:56:37 * elliott mumbles something about oklopol and 50 pounds.
17:57:09 <Phantom_Hoover> http://www.reddit.com/r/math/comments/nm7vz/what_is_lambda_calculus/c3a9gp8
17:57:15 <Phantom_Hoover> This person is indeed no expert.
17:58:13 <coppro> hahahaha
17:58:22 <elliott> Phantom_Hoover: niiice
17:59:15 <elliott> http://www.reddit.com/r/math/comments/nm7vz/what_is_lambda_calculus/c3aaa3c
17:59:21 <elliott> The least forced thing ever.
18:00:00 * oerjan does some forced eye movements at that.
18:00:27 <elliott> "I am curious if there is a handy name for a relationship that is neither Injective nor Surjective? I understand such a messy thing is a terrible function."
18:00:50 <coppro> f(x) = x^2
18:01:01 <coppro> (: R \to R)
18:01:05 <elliott> coppro: no shit
18:03:48 <elliott> Do physicists ever stop abusing math? (self.math)
18:03:53 <elliott> Phantom_Hoover: I hate you for making me read /r/math.
18:04:26 <elliott> "Note: Sorry for the text wall, this kinda became a rant." It's... two medium-size paragraphs.
18:06:45 <olsner> functional programming (the kind they use for artificial intelligence) :D
18:07:20 <elliott> "I don't claim to understand the terms or even what I'm about to type out, but this is the "complete lagrangian of the standard model of physics" (which I assume governs kinematics, EM, whatever):
18:07:21 <elliott> http://nuclear.ucdavis.edu/~tgutierr/files/sml.pdf
18:07:21 <elliott> Can you use this to formulate consciousness? Physics runs into problems with a system of bodies n > 2."
18:07:30 <elliott> Phantom_Hoover: physics runs into problems with a system of bodies n > 2
18:07:54 <kallisti> lol
18:08:25 <elliott> Phantom_Hoover: he deleted his comment
18:08:28 <Phantom_Hoover> Augh, that Lagrangian.
18:08:30 <elliott> coward!
18:08:36 <kallisti> cemetary: an unsolved system of bodies in physics.
18:08:38 * elliott deletes his own.
18:09:03 <elliott> Phantom_Hoover: I want it on a t-shirt.
18:09:24 <Phantom_Hoover> What'd you say?
18:09:41 <elliott> Phantom_Hoover: "Wrong wrong wrong", to a first approximation.
18:16:13 -!- oerjan has quit (Quit: Good night).
18:17:17 <kallisti> `word 25
18:17:20 <HackEgo> ma hilidprotelf alcestifough fwyntornellukoa istramelbilly hen vily dendent achmermegalderood ers icruchyplau mshabom mars bisloya syarkabysconcon winffeibeclatinathudos reshb renfromentekaka apallumpsnm ingerne edefle venmel lonityolcurs zooty vcllley
18:17:34 <kallisti> `word 25
18:17:37 <HackEgo> waphintiapuppro erperissimpaiy moolluianeuified balastempticonieran bed sphing utsedge vessuntinerretia khong lant ig heepto bro gras woryle nazzawadatse asia ardech gle storigida gescumbougb hagolea burtoppivols edo vulphalt
18:17:52 <elliott> http://esoteric.voxelperfect.net/wiki/Da_Vinci_Code_For_Free
18:29:26 -!- augur has quit (Remote host closed the connection).
18:29:59 <kallisti> elliott: best esolang
18:31:09 -!- NihilistDandy has joined.
18:33:07 <elliott> 45 over 5.5. I am way more dedicated to this than kallisti and Ngevd.
18:34:06 <Phantom_Hoover> Fun fact: if you change the numbers in the first sentence, you get most of the things elliott has said to me this week.
18:36:50 <elliott> Phantom_Hoover: Excuse me, I've also said that Scotland doesn't exist?
18:36:55 <elliott> Q.E.Zepto?
18:42:19 -!- GreaseMonkey has joined.
19:09:16 -!- pikhq has joined.
19:09:32 -!- pikhq_ has quit (Ping timeout: 248 seconds).
19:16:43 <coppro> elliott: Scotland was obliterated by a burst of zepto?
19:17:21 <elliott> coppro: Yes.
19:17:24 <elliott> coppro: Obviously.
19:17:36 <elliott> Funeral services will be held last Sunday, travel by zepto.
19:17:56 <coppro> I can't make it, I parked my TARDIS next Tuesday.
19:19:17 <elliott> coppro: Just bring it back with a touch of the old Feather.
19:19:50 <coppro> elliott: That would cause a temporal line
19:19:53 <coppro> can't have those.
19:21:09 -!- tswett_ has joined.
19:21:35 <tswett_> Suomi koira limsa karkat vantas pohjoinen.
19:21:53 <elliott> coppro: Topologically equivalent to a 4-dimensional timecube, though.
19:21:57 <elliott> So it's ok.
19:22:40 <coppro> elliott: No, not a timecube!
19:22:51 <coppro> Those are unstable!
19:24:30 <tswett_> Oh, don't worry. Math is timeless, so even the unstable stays the same.
19:24:45 <coppro> tswett_: That's the danger of a timecube.
19:24:55 <tswett_> It changes mathematics?
19:25:04 <coppro> With relation to time, yes
19:35:30 -!- zzo38 has joined.
19:36:00 <zzo38> Is this good so far?
19:36:01 <lambdabot> zzo38: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:36:10 <zzo38> O, I read this messages already.
19:38:31 <elliott> Is what good so far?
19:40:09 <zzo38> Sorry, I don't know.
19:41:11 <zzo38> I forgot.
19:42:08 <kallisti> I'm food.
19:42:22 <kallisti> ;;;000-----00000ooolll;
19:42:38 <kallisti> D? F? SAturanate
19:43:53 -!- pikhq has quit (Ping timeout: 240 seconds).
19:44:07 -!- pikhq has joined.
19:45:34 -!- Ngevd has joined.
19:46:35 <Ngevd> Hello!
19:47:11 <zzo38> How much money does my Dungeons&Dragons character have? (no looking please)
19:47:26 <Ngevd> 700 and 20 pence
19:48:09 -!- PiRSquared17 has quit (Ping timeout: 276 seconds).
19:48:19 <zzo38> Ngevd: What character encoding are you using?
19:48:39 <Ngevd> I'm not entirely sure
19:48:42 <zzo38> No I mean in copper coin, silver coin, gold coin, platinum coin. Not in pence
19:48:57 <Ngevd> The first symbol was a pound symbol, btw
19:49:09 <zzo38> Yes I guessed it might have been a pound symbol
19:51:02 -!- Klisz has joined.
19:53:46 -!- copumpki_ has joined.
19:53:54 <zzo38> "but an operator decided to /kill NickServ and use the nickname NickServ himself, subsequently collecting all identify passwords" Will that work only if you send a message to NickServ, or will it also work when using NS and PASS commands?
19:54:30 -!- copumpkin has quit (Ping timeout: 268 seconds).
19:54:35 <Ngevd> I think it would work using NS and PASS commands
19:54:44 <Ngevd> It all goes through NickServ
19:54:48 <Ngevd> Where did this happen
19:55:07 <zzo38> I don't know. Someone mentioned that in this channel
19:55:47 <zzo38> However it should be proper to make NS and PASS ensure it is sending to actual services only, I would think
19:56:21 <Ngevd> How would it do that?
19:56:51 <Ngevd> NS is, I think, done by the client?
19:57:03 <zzo38> No, NS and PASS are both server commands.
19:57:59 <zzo38> (My client doesn't know what NS is and yet it still works, so it must be a server command)
19:58:32 <Ngevd> What's the easiest way to tell if a user is identified?
19:58:35 <elliott> /whois
19:58:40 <Ngevd> Okay
19:58:41 <elliott> yikes... this guy on SO has 52 questions and 4 answers
19:58:44 <Ngevd> Gonna test something
19:58:58 <Ngevd> No I'm not, nevermind
20:01:47 -!- copumpki_ has changed nick to copumpkin.
20:01:47 -!- copumpkin has quit (Changing host).
20:01:47 -!- copumpkin has joined.
20:17:55 -!- nooga has joined.
20:19:01 <kallisti> elliott: psh I can't believe only one person has upvoted my 4 paragraph textwall since yesterday.
20:19:17 <kallisti> LOOK AT ALL THOSE WORDS. IT'S GOT TO BE A GOOD ANSWER.
20:25:00 <zzo38> I do have the disassembled codes for TrivialOW.13 virus
20:33:45 <elliott> if only this improved semantic model was as convenient to work with as it is to show it's immune to several errors found in previous models
20:34:53 <fizzie> 'NICKSERV' is, I think, the server command, officially; but maybe 'NS' is an alias?
20:35:16 <fizzie> I do think at least current freenode server doesn't ever let a client connection change nick to "NickServ" anyway, even if services are offline.
20:35:39 <kallisti> fizzie: I wasn't aware services had a comman.
20:35:42 <kallisti> d
20:36:26 <fizzie> The "/msg NickServ" always makes me feel vaguely uncomfortable, so I tend to "/quote NICKSERV" instead. (The "/foo to /quote FOO" automagic also makes me feel vaguely uncomfortable.)
20:37:07 <elliott> fizzie: You should use zzo38's IRC client. No /quote required.
20:37:46 <kallisti> fizzie: you're just an uncomfortable guy aren't you?
20:38:12 -!- ais523 has joined.
20:38:20 <elliott> hi ais523
20:38:31 <ais523> hi elliott
20:38:43 <ais523> congratulations on having a better sleep schedule than mine
20:38:59 <elliott> you just woke up?
20:39:05 <ais523> yes
20:39:09 <elliott> heh
20:39:09 <ais523> well, I woke up at about 7pm
20:41:25 <zzo38> The other thing in my IRC client, is if you use PASS then it will mask the password
20:42:01 -!- NihilistDandy has quit (Quit: http://haskell.org).
20:44:53 <ais523> elliott: have the wiki styles gone wrong for you? they have for me
20:45:01 <ais523> to be precise, the sidebar starts below the bottom of the content area, on every page
20:45:37 <elliott> no
20:45:45 <elliott> try resizing browser / flushing cache / etc ?
20:45:47 <elliott> *etc.?
20:46:06 <ais523> I've tried flushing cache
20:46:09 <ais523> I'll resize the browser next
20:46:30 <ais523> doesn't help
20:46:50 <ais523> Wikipedia looks fine, although it's not surprising that it'd have been updated
20:47:03 <ais523> ah, but BlogNomic wiki doesn't
20:47:17 <ais523> so it's something about how Firefox 9 is interpreting old versions of Monobook
20:47:58 <elliott> ais523: probably "firefox 9 with my settings"
20:48:10 <ais523> elliott: possibly
20:48:21 <coppro> ais523: I solved my lucky egg problem the bruteforce way
20:48:25 <ais523> but the fact that it works on Wikipedia implies that Wikipedia's monobook has been changed to work around the problem
20:51:28 <ais523> bleh, anyone know a good tool for diffing CSS rules?
20:51:34 <elliott> diff
20:51:41 <ais523> elliott: they're in a different order in the two files
20:51:59 <ais523> hmm… what if I remove all newlines between { and }, then sort, then diff?
20:53:54 -!- NihilistDandy has joined.
20:54:54 -!- derdon has quit (Remote host closed the connection).
20:55:52 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:55:52 <ais523> bleh, no good, diff is still not matching them up correctly
21:03:17 -!- augur has joined.
21:03:23 <Ngevd> Man, I do not want to be someone who has to write a Pollock interpreter
21:09:01 <ais523> this makes no sense
21:09:07 <ais523> the relevant styles seem to be the same here and on Wikipedia
21:09:21 <ais523> (that's computed styles via Firebug, so even if it's adjusted with JS the difference should show up)
21:09:35 <ais523> the only difference is that there's a position:relative on Esolang but not Wikipedia; but removing it makes no difference
21:09:54 <elliott> ais523: you might need to do more than remove it
21:10:05 -!- monqy has joined.
21:10:08 <elliott> at least, I wouldn't bet on CSS layout code results being always-consistent like that
21:10:25 <elliott> try making a local copy of the page by Ctrl+Sing and finding the CSS file and removing that rule
21:10:25 <ais523> just as a sanity check, it renders fine on Epiphany
21:10:32 <elliott> and load it from scratch
21:10:39 <ais523> elliott: it'd have to be a with-all-dependencies local copy
21:10:49 -!- Nihilis__ has joined.
21:10:51 -!- Nihilis__ has quit (Client Quit).
21:12:03 <elliott> ais523: good thing firefox saves those by default
21:12:06 -!- nooga has quit (Ping timeout: 252 seconds).
21:12:13 <elliott> and has since, umm, before 1.0
21:12:18 <ais523> I know they exist
21:12:25 <elliott> probably /netscape/ saved pages like that by default
21:12:32 <ais523> even then, Wikipedia's style loading is crazy
21:12:41 -!- NihilistDandy has quit (Ping timeout: 244 seconds).
21:14:30 <ais523> OK, interesting: if I remove the width: on Wikipedia, it expands to fill the width as you'd expect, if I remove it on Esolang, the sidebar disappears completely
21:15:59 <Ngevd> What's music I like?
21:17:22 -!- NihilistDandy has joined.
21:17:51 <ais523> elliott: aha, found the offender: it's KHTMLFixes.css
21:17:53 <ais523> on Esolang
21:17:58 <elliott> Ngevd: wat
21:18:02 -!- zzo38 has quit (Remote host closed the connection).
21:18:05 <elliott> ais523: firefox "khtml edition"
21:18:12 <ais523> presumable cause of the problem is that Firefox is in fact not using KHTML, and that Esolang is misdetecting it
21:18:16 <Ngevd> elliott, I can't think of any music I like
21:18:25 <Ngevd> elliott, but I want to play AudioSurf
21:20:11 <Ngevd> Screw this, I've got a Stranglers CD
21:20:30 <elliott> Ngevd: the best music is /dev/urandom
21:21:12 <kallisti> nah PDF files are way better
21:21:48 <kallisti> my entire filesystem is a symphony.
21:24:19 <elliott> I need 5 reputation in 2.5 hours. :/
21:24:35 -!- Patashu has joined.
21:25:56 <Gregor> mplayer -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgb24 /dev/sda
21:26:05 <Gregor> It's the best.
21:26:16 <elliott> Gregor: ...why did I never think of doing that
21:26:54 <elliott> Targets (44): recode-3.6-6 enca-1.13-2 a52dec-0.7.4-5 libvpx-0.9.7.p1-1 libftdi-0.19-1 libirman-0.4.5-2 lirc-utils-1:0.9.0-8 x264-20111030-1 libmng-1.0.10-4
21:26:54 <elliott> libdca-0.0.5-3 aalib-1.4rc5-8 lame-3.99.3-1 libvdpau-0.4.1-2 libasyncns-0.8-3 libogg-1.3.0-1 flac-1.2.1-3 libvorbis-1.3.2-1 libsndfile-1.0.25-1
21:26:54 <elliott> json-c-0.9-1 libpulse-1.1-1 talloc-2.0.7-1 cifs-utils-4.9-3 tdb-1.2.9-1 smbclient-3.6.1-1 xvidcore-1.3.2-1 opencore-amr-0.1.2-1
21:26:54 <elliott> libsamplerate-0.1.8-1 jack-0.121.3-4 cdparanoia-10.2-3 libmad-0.15.1b-5 libtheora-1.1.1-2 libcaca-0.99.beta17-1 xf86dgaproto-2.1-2
21:26:57 <elliott> libxxf86dga-1.1.2-1 fribidi-0.19.2-2 libmp4v2-1.9.1-2 faac-1.28-3 faad2-2.7-2 orc-0.4.14-1 schroedinger-1.0.10-1 mpg123-1.13.4-1 libass-0.10.0-2
21:27:00 <elliott> libbluray-0.2.1-1 mplayer-34426-1
21:27:02 <elliott> What a dependency list >_<
21:27:08 <Gregor> mplayer? :)
21:27:10 <elliott> Now I wonder wtf mplayer is doing with JSON...
21:27:23 <elliott> Gregor: Yes.
21:27:30 -!- kallisti has quit (Ping timeout: 252 seconds).
21:27:33 -!- kallisti has joined.
21:27:33 -!- kallisti has quit (Changing host).
21:27:33 -!- kallisti has joined.
21:28:21 <ais523> elliott: JSON in a media player seems reasonable, as JSON in anything that might want to store metadata seems reasonable
21:28:54 <Sgeo_> The person guiding me through Doctor Who says that Series 2-4 is mostly bad. I don't want to believe him.
21:29:10 <elliott> Sgeo_: Fuck him, Hartnell is tha bomb.
21:29:19 -!- augur has quit (Ping timeout: 240 seconds).
21:29:59 <ais523> CSS badly needs a useragent selector
21:30:27 <ais523> so the problem is, I can fix this for Firefox, but I can't think of a way to do so without simultaneously breaking it for KHTML
21:30:33 <elliott> KHTML is dead
21:30:41 <elliott> I'm pretty sure even Konqueror uses WebKit these days
21:30:42 <ais523> well, yes
21:30:48 <ais523> but if it happens to break WebKit too…
21:31:03 <ais523> meh, I'll just do the Firefox-specific fix then test in Chromium
21:31:14 -!- tswett_ has quit (Ping timeout: 258 seconds).
21:31:17 * elliott would just rip out the hack
21:31:19 <elliott> maybe that's what you meant
21:31:24 -!- pikhq_ has joined.
21:31:29 <Sgeo_> elliott, in the ... whatchamacalling. After 2005
21:31:48 <elliott> Sgeo_: I know. Anyway, isn't that the entire Tennant years?
21:31:49 <pikhq_> elliott: Doesn't Konqueror still use KHTML?
21:31:59 <Sgeo_> elliott, I think so
21:31:59 <Ngevd> Here we go, I've found my Muse
21:32:17 <elliott> Sgeo_: The Tennant years were the absolute highpoint of the series, once they hit their stride; far superior to Eccleston, as entertaining as he was.
21:32:33 <elliott> Sgeo_: Then Moffat takes over and Matt Smith comes in and it all goes to hell.
21:32:39 <elliott> Enjoy it while it lasts.
21:32:53 <Sgeo_> elliott, this person really likes Moffat
21:33:00 <elliott> Sgeo_: The Tennant-Moffat episodes are the best, but Moffat is a terrible showrunner.
21:33:25 <elliott> He thinks ~unexplained mystery~ after unexplained mystery is an acceptable substitute for engaging plot.
21:33:45 <elliott> (I gave up on Moffat very quickly, so this is mostly second-hand knowledge, but it's backed up by more than one source.)
21:33:52 <pikhq_> Sgeo_: Moffat did some really solid episodes in the Tennant era.
21:34:08 -!- pikhq has quit (Ping timeout: 252 seconds).
21:34:14 <pikhq_> Problem is, if his episodes make up the entire series it's just bleh.
21:34:17 <elliott> s/some raelly solid/the best/
21:34:43 <elliott> Blink and Silence in the Library/Forest of the Dead are pretty much the series' highpoints.
21:35:06 <elliott> *really
21:35:34 <pikhq_> It's like taking a good pastry chef and having him do cake for every course of a meal. You may like cake but you'll fucking hate the chef pretty soon.
21:35:53 <elliott> Sgeo_: But yeah, series 2 is spotty, but series 3 and 4 are amazing.
21:36:35 <ais523> yay, fixed
21:36:43 <Ngevd> Plug in Baby is AMAZING in AudioSurf
21:36:54 <elliott> Human Nature/The Family of Blood, Blink, Utopia/The Sound of Drums/Last of the Time Lords (well, I liked it, anyway), ... blah blah blah, they're all good.
21:37:08 <ais523> so, this is ridiculous: if margin specifies four margins, the left of which is 0, it works; if margin-left is specified as 0, it doesn't work
21:37:19 <ais523> so apparently the left margin and the margin-left do different things
21:37:25 <ais523> and the page layout depends on which is specified more recently
21:38:03 <elliott> ais523: sounds like a bug
21:38:07 <Sgeo_> Well, you and he agree that Blink is good, at least.
21:38:07 -!- kallisti has quit (Read error: Operation timed out).
21:38:17 <ais523> elliott: hmm
21:38:22 <Sgeo_> I'm sure there's a Doctor Who fan somewhere who dislikes Blink.
21:38:28 <Ngevd> Me
21:38:32 <elliott> Ngevd: seriously?
21:38:36 <Ngevd> Yep
21:38:38 <elliott> why
21:38:48 <ais523> OK, looks fine in Chromium, so I guess it does affect KHTML specifically
21:38:49 <Ngevd> Is Blink the one with the Angels?
21:38:54 <elliott> yes
21:39:32 <Ngevd> While it does have some good quotes, the way the Angels worked ruined my suspension of disbelief
21:39:52 <elliott> and Doctor Who /doesn't/ normally?
21:39:57 <Ngevd> And The Empty Child was much better
21:40:00 <elliott> it's Suspension of Disbelief: The Show
21:40:15 <pikhq_> Doctor Who's premise is "Suspend your disbelief, we're going for a ride!"
21:40:37 <pikhq_> We are literally dealing with a hand-wave mechanic'd time travel show.
21:40:43 <elliott> Anyway, they're quantum or something. I think the Doctor explained it all with about 3 seconds of nonsense.
21:40:58 <Sgeo_> pikhq_, I do find that somewhat hard when space and time collapses in a nonsensical way
21:41:04 <pikhq_> Timey-wimey ball.
21:41:15 <Sgeo_> (e.g. Pandora's Box/Big Bang or Season 6 finale)
21:41:20 <Sgeo_> </spoilers?>
21:41:32 <elliott> you watched the smith series before the tennant ones? srsly?
21:42:06 -!- Phantom_Hoover has joined.
21:42:08 <Sgeo_> I did see Blink as my first Doctor Who episode, if that helps
21:42:16 <Sgeo_> Then a few others from the Smith series
21:42:21 <Sgeo_> erm, not Smith, Tennant
21:42:25 <Sgeo_> Er, no
21:42:30 <elliott> Smennant
21:42:32 <Sgeo_> Er, wait, yes
21:43:01 <Phantom_Hoover> Ngevd, do you like Doctor Who in general?
21:43:06 <elliott> (6/6) checking package integrity [############################################################] 100%
21:43:06 <elliott> (6/6) checking for file conflicts [############################################################] 100%
21:43:06 <elliott> error: failed to commit transaction (conflicting files)
21:43:06 <elliott> filesystem: /etc/mtab exists in filesystem
21:43:07 <elliott> Errors occurred, no packages were upgraded.
21:43:09 <Sgeo_> Empty Child/Doctor Dances (yes, I know not Tennant), SitL/FotD
21:43:09 <elliott> errr....
21:43:16 <Sgeo_> And then after that, just Smith, I think
21:43:34 <ais523> hmm, what the web needs: some way to specify the md5 of a script/image/whatever that's included by reference
21:43:47 <ais523> so that if it's already in cache, even from another site, then the cached version can just be used
21:43:58 <elliott> ais523: ETag
21:44:06 <ais523> I'm not surprised it exists
21:44:11 <ais523> do browsers care about it?
21:44:13 <elliott> or, hmm
21:44:15 <ais523> if not, they need to
21:44:20 <Ngevd> Phantom_Hoover, yes
21:44:23 <elliott> ais523: ETag is a header-based solution and everything uses it nowadays
21:44:30 <Phantom_Hoover> Ngevd, do you like Matt Smith's Doctore?
21:44:33 <Phantom_Hoover> *Doctore
21:44:33 <elliott> ais523: but it seems like what's /in/ the ETag is defined by the server
21:44:36 <Phantom_Hoover> *Doctor
21:44:38 <Phantom_Hoover> I...
21:44:48 <Phantom_Hoover> Ngevd, anyway.
21:44:50 <ais523> elliott: oh, that's pointless if it doesn't work cross-server
21:44:53 <Ngevd> Phantom_Hoover, I prefer him to David Tennant, but preferred Christopher Eccleston to the both
21:45:10 <Phantom_Hoover> Ngevd, your opinion is invalid, enjoy your /ignore??
21:45:15 <ais523> I mean, you'd do something like <script src="http://example.com/jquery.css" md5="whatever the md5 of jquery is" /> on example.com
21:45:18 <Ngevd> Phantom_Hoover, very well
21:45:19 <elliott> Phantom_Hoover: "DOCTORE WHO?", Being the Frivolous and Gay Adventures of a Medical Professional With a Magical Secret Throughout Time and Land
21:45:28 <ais523> and if you already had a copy of jQuery from another site, you wouldn't have to download it from example.com too
21:45:36 <ais523> yet you aren't doing any hotlinking
21:45:37 <Phantom_Hoover> elliott, would watch if Matt Smith wasn't in it.
21:45:49 <elliott> Phantom_Hoover: It's Matteuisen Smitteny.
21:45:58 <Phantom_Hoover> SOUNDS LIKE MATT SMITH
21:46:15 -!- kallisti has joined.
21:51:34 <elliott> Gregor: :/ it's just black
21:51:46 <elliott> Wait no, mplayer is just broken :P
21:51:50 <elliott> I think
21:52:43 <elliott> Gregor: Oh my god this is amazing
21:52:54 <elliott> Phantom_Hoover: mplayer -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgb24 /dev/sda
21:52:55 <elliott> Do it
21:54:10 <Phantom_Hoover> Yessir.
21:54:25 <Phantom_Hoover> File not found: '/dev/sda'
21:55:01 <elliott> X-D
21:55:03 <ais523> Phantom_Hoover: try /dev/hda instead, then
21:55:13 <ais523> elliott: I take it that needs a sudo?
21:55:13 <elliott> ais523: not unless it's 2005 or something
21:55:16 <elliott> and yes
21:55:25 <elliott> Gregor: I swear to god I can see actual images in this... like, images from my hard disk.
21:55:47 <ais523> elliott: that's not surprising, as long as the images are rgb24 and uncompressed
21:55:59 <ais523> and 640 wide (the height wouldn't matter)
21:56:04 <Phantom_Hoover> Forgive me if I'm a little leery of putting 'sudo' before anything someone told me to type on IRC with 'sda' in it.
21:56:09 <ais523> that's not a completely implausible combination
21:56:23 <ais523> Phantom_Hoover: you probably should be
21:56:33 <ais523> I mean, that command only reads the disk, but reading a raw partition while it's mounted is a dubious operation
21:56:45 <Phantom_Hoover> see ais agrees
21:57:13 <Phantom_Hoover> ais523, raw partition?
21:57:20 <ais523> or, not partition
21:57:21 <ais523> raw disk
21:58:57 <elliott> Phantom_Hoover: Gregor is the one who said it :P
21:59:39 -!- Phantom_Hoover has changed nick to Gergor.
21:59:59 <elliott> ais523: I keep wanting to put this on YouTube but then I think "what if you can read my private key from it..."
21:59:59 <Gergor> Hey elliott, shred /dev/sda is also cool.
22:00:04 * elliott shred /dev/sda
22:00:09 -!- Ngevd has quit (Quit: goodnight).
22:10:20 -!- elliott has set topic: akljsdklgdjhndrthiojeriogj.
22:10:22 <elliott> sory
22:10:25 -!- elliott has set topic: akljsdklgdjhndrthiojeriogj http://codu.org/logs/_esoteric/.
22:10:39 <elliott> ais523: oh no, i just realised what's happening to my sleep schedule
22:10:54 <ais523> revolving, like mine does?
22:12:24 <itidus21> elliott: what you need is a http://en.wikipedia.org/wiki/Matrix_of_Leadership
22:13:44 <Gregor> elliott: It's pretty great, no?
22:13:52 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
22:23:57 <elliott> ais523: nope: instead of advancing forwards each night, I'm getting tired /earlier/
22:24:17 <ais523> hmm
22:24:22 <ais523> so still revolving, but the other way
22:24:24 <ais523> I blame winter
22:24:30 <ais523> the days are too short for there to be meaningful light clues
22:25:27 <elliott> getting tired earlier is easily controllable, though; I just have to make sure I don't go to sleep significantly earlier
22:25:33 <elliott> and staying up for another hour or so is easy
22:28:05 <itidus21> The main body of the topic "akljsdklgdjhndrthiojeriogj" contains 26 characters, from an alphabet of 14 characters "akljsdkhnrtioe". The number of instances of each character in the alphabet is "12241322121121".
22:29:50 <elliott> ais523: is it "coming out of a lull" or "coming out of a slump"?
22:29:57 <ais523> slump
22:30:05 <ais523> assuming b
22:30:06 <ais523> *B
22:33:21 <itidus21> http://en.wikipedia.org/wiki/Talk:Hexham
22:33:53 <elliott> there are at least /two/ Hexham Wikipedians?
22:34:08 <elliott> where do they all /fit/?
22:34:35 <itidus21> two hexham wikipedians who care enough to say so
22:34:47 <elliott> http://en.wikipedia.org/wiki/User:Clawandfang
22:34:50 <elliott> hexham sockpuppet
22:35:04 <itidus21> ????
22:35:45 <elliott> see talk page
22:36:11 <itidus21> http://en.wikipedia.org/wiki/Special:Contributions/JenR32
22:38:41 <elliott> poor jamie graham
22:40:00 * elliott suspects Clawandfang is not the same person
22:40:09 <elliott> maybe JenR32 is a relative or whatever
22:40:23 <elliott> clawandfang seems to have edited similar articles but without vandalising
22:40:26 <elliott> SCIENCE
22:42:23 <itidus21> hmm
22:43:55 <itidus21> its all very weird...
23:01:18 -!- tuubow has joined.
23:02:00 <ais523> elliott: it's not unheard of for people to have a separate main account and vandalism account
23:02:25 <itidus21> i suspect the woman is a bit mad
23:03:07 <itidus21> it's not our business anyway
23:06:25 <itidus21> im suspecting some kind of psychopath
23:09:43 <itidus21> `welcome tuubow
23:09:46 <HackEgo> tuubow: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:13:58 <elliott> itidus21: Small-time Wikipedia vandalism --> crazy psychopath.
23:14:02 <elliott> Tell me more, Sherlock!
23:17:40 <itidus21> on second thought you're right
23:19:16 -!- micahjohnston has quit (Quit: Leaving.).
23:20:46 <pikhq_> Well, that's fun. Executions are now effectively impossible in most of the US.
23:23:03 <olsner> they'll soon be back in some anti-terrorism/national security law
23:24:21 <pikhq_> Actually, the reason for that is because the necessary agents in lethal injection are now barred from being exported from the EU, and they're only manufactured there.
23:24:30 <pikhq_> And most states don't allow other means of execution.
23:24:48 <pikhq_> Well, from the EU to any country that does executions.
23:26:49 <itidus21> lulz
23:27:16 <olsner> there's something bizarre about guarding drugs usable for executions (of people "proven" to be criminals, or at least susipicious enough to get framed) closer than we guard exported weapons
23:27:31 <pikhq_> For the same reason, general anesthesia is soon to be impossible in the US; let's let the shitstorm begin.
23:28:06 <itidus21> hmm
23:29:03 <olsner> hmm, I'll be logging out for christmas now
23:29:07 -!- olsner has quit (Quit: Leaving).
23:29:32 <elliott> pikhq_: would be a good time to outlaw capital punishment :p
23:29:54 <elliott> but i doubt there will be any shitstorm, it's not like the US will just sit around and wait until they run out of anaesthetic glue (it's made out of glue right? what isn't these days)
23:29:56 <elliott> (magnetic glue)
23:29:56 -!- NihilistDandy has quit (Quit: http://haskell.org).
23:30:32 -!- NihilistDandy has joined.
23:31:31 <itidus21> someone will eventually say "yay i won't get killed today because of some export ban"
23:31:34 <pikhq_> elliott: You need to get 37 jurisdictions to cooperate on that.
23:31:55 <itidus21> seems kind of funny
23:32:26 <pikhq_> At least one of them would have a hard time passing a bill stating "Be it forever known, America is fucking awesome."
23:32:54 <itidus21> pikhq_: all senators have guitars under their chairs
23:33:12 <itidus21> which can be drawn and played when necessary
23:37:05 <Gergor> <pikhq_> Actually, the reason for that is because the necessary agents in lethal injection are now barred from being exported from the EU, and they're only manufactured there.
23:37:18 <Gergor> Surely someone can just, you know, start a chemical plant in the US?
23:37:29 <pikhq_> Gergor: There used to be one.
23:37:36 <pikhq_> It got closed down.
23:37:41 <itidus21> Gergor: careful, someone might hear you.
23:37:53 <pikhq_> The US doesn't do things like "manufacturing" anymore.
23:38:39 <pikhq_> Also, starting a chemical plant in the US would take more time than running out of something needed for general anesthesia would.
23:39:05 <Gergor> I mean, given that one of the compounds is potassium chloride and one of them is a core medicine according the the WHO, I assume the one under an export ban is pancuronium bromide.
23:39:22 <Gergor> Wait, no, it's thiopental?
23:39:36 <pikhq_> Actually, anything used in executions is under the export ban.
23:39:42 <pikhq_> Including sodium thiopental.
23:39:53 <Gergor> Gahaha this is too funny.
23:39:57 <ais523> I can't figure out if this is a sign of the US's stupidity, or the EU's stupidity
23:40:14 <ais523> come to think of it, it doesn't hurt the EU much, so it's giving them a bunch of political leverage at basically no cost
23:40:14 <pikhq_> Which, of course, is a core medicine according to the WHO, and needed for anesthesia.
23:40:24 <Gergor> Hmm, does this mean that I can't take the sylvites in my rock collection to America?
23:40:36 <pikhq_> ais523: Actually, doesn't hurt the EU at all.
23:40:54 <ais523> pikhq_: well, it deprives them of a market for their chemicals exports
23:40:59 <pikhq_> True.
23:41:05 <pikhq_> Okay, so it hurts them a little.
23:41:11 <pikhq_> And really fucks up the US.
23:41:36 <ais523> yep
23:41:51 <ais523> doing that sort of thing, you typically need to justify politically, but the executions thing works fine for that
23:41:52 <Gergor> This is very very funny.
23:42:19 <ais523> I like the way that the EU tends to tune import duties to hurt products from swing states, whenever they get into a trade war with the US
23:42:26 <ais523> because they know that applying pressure elsewhere is pointless
23:42:52 <Gergor> Waitwaitwait, potassium chloride is used in some low-sodium salt.
23:42:59 <ais523> Gergor: indeed
23:43:08 <ais523> IIRC Burger King even served it in the UK for a while, but nobody liked eating it
23:43:10 <Gergor> That is now illegal for export from the EU to the US.
23:44:27 <Gergor> I'm still going to have to go for "rock collections must now be vetted" as the stupidest consequence.
23:46:41 <elliott> Gergor: I kept reading you as Gregor...
23:46:44 <elliott> Also you have a rock collection?
23:47:37 * elliott would approve if this would actually gain any leverage in ending capital punishment in the US which it... won't.
23:48:16 <Gergor> I don't, but if I *did*...
23:50:06 <elliott> Gergor: I would say you should start a rock collection of only things you can't cross borders with but that probably exists already.
23:50:25 <Gergor> Pitchblende.
23:50:29 <Gergor> More pitchblende.
23:50:42 <pikhq_> elliott: Actually, it probably will.
23:50:58 <Gergor> Maybe some monazite.
23:51:23 <elliott> Gergor: I really like "pitchblende" because it looks like someone just appended an "e" to it to make it sound classier.
23:51:33 <elliott> FINE ITALIAN PITCHBLENDE
23:51:51 <Gergor> I think it's because German miners called heavy rocks 'blende' for some reason.
23:52:03 <pikhq_> Many states have ended up with legal injection being the only method that's not "cruel and unusual".
23:52:15 <Gergor> *lethal
23:52:15 <elliott> pikhq_: You're saying your govt will stop executing people long-term because the EU is temporarily being silly about exports?
23:52:20 <elliott> Legal injection X-D
23:52:29 <elliott> They just mash up the constitution and inject it into your brain.
23:52:34 <pikhq_> Erm, lethal XD
23:52:37 <elliott> LIBERAL THOUGHTS CLEANSED
23:53:12 <Gergor> elliott, it will make it a fair bit more difficult to do it in the near future, though.
23:53:20 <pikhq_> elliott: Probably not "temporarily", and also I honestly don't see them getting a sodium thiopental plant up and running before we stop being able to perform surgery.
23:53:40 -!- zzo38 has joined.
23:53:50 <elliott> Gergor: Well yeah, but it's not like death row is the speediest process any time of the year.
23:54:07 -!- zzo38 has set topic: akljsdklgdjhndrthiojeriogj | http://codu.org/logs/_esoteric/.
23:54:23 <elliott> pikhq_: Dude, there is no possible way on earth the US won't manage to get more imported before "NO MORE ANAESTHESIA".
23:54:35 <pikhq_> From where?
23:54:36 <Gergor> pikhq_, you know that there are general anaesthetics which aren't thiopental, right?
23:54:59 <Gergor> WP lists three more right next to it.
23:55:16 <Gergor> In fact: "Chemically, propofol is unrelated to barbiturates and has largely replaced sodium thiopental (Pentothal) for induction of anesthesia"
23:55:25 <elliott> pikhq_: I'm pretty sure the EU would find "People will start dying en masse if you don't give us what we need to operate on people ASAP; love, one of the world's most powerful countries" quite compelling.
23:55:32 <zzo38> Some of the things in the D&D game I was playing, involving the death row; and the guards half sleep did not wake up because they already played cards
23:57:05 <pikhq_> Gergor: Well, that works just so long as propofol doesn't start being used in lethal injection.
23:57:15 <pikhq_> I strongly suspect we don't manufacture that either.
2011-12-23
00:00:51 <Gergor> pikhq_, remind me why the US doesn't consider guillotining a permissible method of execution.
00:02:02 <zzo38> Is it Phantom Hoover?
00:02:18 <Gergor> I am Phantom Hoover, yes.
00:04:14 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:04:36 <elliott> Gergor: E-petition: Instate iron maiden as preferred form of capital punishment to defend US' sovereignity from EU interventions
00:04:51 <elliott> Gergor: E-petition: Instate Iron Maiden as preferred form of capital punishment to defend US' sovereignity from EU interventions
00:05:01 <itidus21> they could just use a machine gun
00:05:02 <elliott> LET THE PUBLIC DECIDE
00:05:19 <zzo38> No. I think the individual who is getting executed should decide what method they want to be killed by.
00:05:20 <itidus21> target practice for the cia
00:05:21 <Gergor> Both count as torture devices, not methods of execution.
00:05:36 <elliott> Gergor: Um I definitely double-checked on Wikipedia and iron maidens can kill people.
00:05:50 <elliott> Also no they just keep turning up the volume until your ears burst or whatever and you die of blood loss
00:05:58 <pikhq_> Gergor: Per recent law, it is permissible for the President to order anyone tortured for any purpose to any extent.
00:06:03 <Gergor> zzo38, public execution by high-yield thermonuclear device.
00:06:28 <elliott> Inmates enter a soundproofed chamber progress through the foot-tapping stage to the headbangnig stage to the screaming stage to the writhing on the ground stage to the convulsive shaking stage to the dead stage.
00:06:33 <elliott> *chamber and
00:06:35 <itidus21> what about, don't execute them at all
00:06:36 <pikhq_> (remind me again why it's the "land of the free"?)
00:06:38 <itidus21> :-D
00:06:47 <zzo38> Gergor: Of course where would have to be restrictions.
00:06:47 <elliott> itidus21: at last yous ay something reasonable.
00:07:00 <Gergor> pikhq_, don't let's turn this into an NDAAfest.
00:07:24 <zzo38> And, also, of course, please be careful before deciding to execute anyone at all. If you do, you cannot release them afterward, unlike the other prison which can be released if it is known to be innocent.
00:07:52 <itidus21> zzo38: while this is the case, guilt is just a matter for a jury of hicks to decide
00:08:09 <itidus21> many of whom can be paid off or intimidated if necessary
00:08:13 <itidus21> or even planted
00:08:28 <pikhq_> And are intentionally selected for gullibility anyways.
00:08:46 <itidus21> because apparently thats the best we can come up with so far :D
00:08:49 <elliott> zzo38: Except... NECROMANCY?
00:09:13 <pikhq_> elliott: North Korea doesn't export their techniques.
00:09:21 <pikhq_> They prefer being the world's only necrocracy.
00:09:38 <elliott> Kim Jong-Il is actually just Kim Sung-Il in a robotic body.
00:09:56 <pikhq_> Kim Il-Sung is in all honesty the President of North Korea.
00:10:10 <itidus21> and he can control the weather
00:11:16 <ais523> itidus21: well, the Chinese government can control the weather
00:11:17 -!- incomprehensibly has joined.
00:11:21 <itidus21> yup
00:11:27 <ais523> it's massively expensive, but they do it on occasion, such as making rain avoid the Olympics
00:11:46 <itidus21> cool
00:12:49 <elliott> `welcome incomprehensibly
00:12:52 <HackEgo> incomprehensibly: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:13:03 -!- incomprehensibly has changed nick to micahjohnston.
00:13:03 <Gergor> ais523, cloud seeding?
00:13:06 <elliott> that was comprehensible, HackEgo
00:13:10 <micahjohnston> `welcome elliott
00:13:13 <HackEgo> elliott: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:13:17 <ais523> Gergor: there are two known methods for doing that, but I think cloud seeding is what was actually used at the Olympics
00:13:17 <micahjohnston> oh hahaha
00:13:18 <elliott> Gergor: No, that's using an EC2 host to upload Ubuntu.
00:13:24 <micahjohnston> elliott: funny
00:13:28 <elliott> BADUM
00:13:28 <elliott> TISH
00:13:57 <Gergor> Dammit, now I'm reading my nick as 'Gregor'.
00:13:58 <Gergor> I HAVE OUTFOXED MYSELF
00:13:58 <ais523> also, the massive screens going all the way around the top of the stadium bluescreened at one point
00:14:12 <ais523> Gergor: does your surname start with G?
00:14:44 <Gergor> No.
00:14:52 <ais523> hmm
00:15:04 <ais523> now I'm trying to understand where the first g in your usual nick comes from
00:15:39 <Gergor> Huh?
00:15:53 <Gergor> I, um.
00:16:28 -!- FireFly has quit (Changing host).
00:16:28 -!- FireFly has joined.
00:16:31 <Gergor> Did you do a whois.
00:17:39 <elliott> ais523: Roger G
00:17:46 <elliott> (G is middle name)
00:17:47 <ais523> oh, you're Phantom Hoover in disguise, not Gregor in disguise
00:17:48 <ais523> I see
00:17:50 <elliott> Roger G. Richards
00:17:50 <ais523> elliott: ah, thanks
00:18:25 <zzo38> ais523: It is obvious isn't it? Have you not see?
00:18:53 <ais523> ?
00:19:04 <elliott> Gergor: You should be Phangtom_Hoover in future now.
00:19:57 <zzo38> If it says ":Gergor!~phantomho@unaffiliated/phantom-hoover/x-3377486" then it is known
00:20:01 <Gergor> No, that's just stupid.
00:21:30 -!- MDude has quit (Ping timeout: 268 seconds).
00:23:55 <elliott> I pick Gergor to tell me to go to bed.
00:24:47 <Gergor> Sory i cnat
00:26:31 <elliott> try???
00:28:08 <shachaf> elliott: goto bed;
00:32:25 <zzo38> What is the next thing to do in D&D game? Compare handwriting? I think so.
00:34:25 <Gergor> Oh dear god, I started reading up on the Somalian Civil war and I can't stop.
00:38:33 -!- micahjohnston has quit (Quit: Leaving.).
00:42:52 -!- Gergor has quit (Ping timeout: 240 seconds).
00:45:54 <ais523> elliott: I'm not convinced that that works
00:46:06 <ais523> why don't you tell yourself to go to bed?
00:46:25 <ais523> I went to bed about two hours later than I should have done yesterday; it was a mistake
00:46:52 -!- elliott has quit (Ping timeout: 240 seconds).
00:47:50 <ais523> wow, it worked
00:48:07 <ais523> umm, Gergor quitting, that is
00:56:37 -!- NihilistDandy has quit (Quit: http://haskell.org).
00:56:51 <zzo38> What would you have done next in D&D game?
00:59:02 <zzo38> The type for ReaderT seem to be similar to the type for Kleisli category, but in a different order.
01:05:41 -!- tuubow has quit (Ping timeout: 252 seconds).
01:07:11 -!- Klisz has joined.
01:09:45 -!- ais523 has quit (Remote host closed the connection).
01:18:44 -!- kmc has quit (Read error: No route to host).
01:31:16 <Vorpal> l
01:31:21 <Vorpal> err wrong window
01:32:11 -!- kmc has joined.
01:35:15 -!- PiRSquared17 has joined.
01:35:24 <PiRSquared17> akljsdklgdjhndrthiojeriogj?
01:35:40 <monqy> no
01:35:49 <zzo38> PiRSquared17: Oops, maybe one extra letter is added by mistake
01:38:16 -!- nooga has joined.
01:41:10 -!- tuubow has joined.
01:41:35 <Gregor> There can only be one @codu.org
01:50:17 <zzo38> I think I have figured out derivative for lists. I read somewhere about derivative types making a hole, and I can see how the type I figured out can make a hole like that too
01:52:28 <zzo38> If a type is a monad, what circumstances is the derivative of that type can make a monad?
01:52:37 -!- Sgeo_ has changed nick to Sgeo.
02:01:20 -!- Klisz has quit (Read error: Connection reset by peer).
02:01:42 -!- Klisz has joined.
02:09:19 -!- kmc has quit (Quit: Leaving).
02:09:52 -!- nooga has quit (Ping timeout: 240 seconds).
02:16:59 -!- MSleep has joined.
02:23:09 -!- Vorpal has quit (Ping timeout: 248 seconds).
02:37:35 -!- kallisti has quit (Quit: Reconnecting).
02:37:45 -!- kallisti has joined.
02:37:45 -!- kallisti has quit (Changing host).
02:37:45 -!- kallisti has joined.
02:39:51 <Gregor> OH sit-coms, where a psychiatrist can be second-in-command of NASA. (Can you name that sit-com?)
02:40:53 <kallisti> no
02:40:56 <kallisti> no I can't
02:41:00 * kallisti pop culture retarded.
02:43:02 -!- oerjan has joined.
02:44:07 -!- augur has joined.
02:44:28 <zzo38> I don't know either
02:45:02 <oerjan> how ignorant!
02:49:00 <kallisti> http://www.youtube.com/watch?v=Fv53K9MnDuM&feature=related
02:49:04 <kallisti> THEY'VE DONE IT. FREE ENERGY
02:49:07 <kallisti> or something.
02:49:39 <kallisti> WITTS (World Improvement Through The Spirit Ministries) is a not-for-profit organization of World-Class Engineers/Scientists/Servants of God and Humanity, actively offering solutions to the energy crisis and the other critical issues of our troubled planet.
02:49:43 <kallisti> oh my god yesssss.
02:50:37 <kallisti> Automobiles which run totally on water and air, the only exhaust is oxygen, water, and air.
02:51:07 <kallisti> the formula looks something like: water + air -> miracles + water + air + oxygen
02:51:49 <kallisti> Anti-gravity machines that can travel as easiily through outer space as through air. These can also be built to travel through water (oceans), and even through solid earth.
02:51:52 <kallisti> This former mechanism can be built as a device that is pedal operated (like a bicycle) and is able to fly through the air with no motor, wings, or propellers.
02:51:55 <kallisti> YESSSSS
02:52:18 <kallisti> finally I can pilot an anti gravity bicycle to the center of the hollow earth.
02:52:44 <monqy> a dream come true
02:54:04 <oerjan> the only problem is you have to have enough faith. otherwise: *WHOOPS* *CRASH* *!#%/%&
02:54:12 -!- Nisstyre has quit (Ping timeout: 240 seconds).
02:54:38 <kallisti> For any confused individuals out there, We encourage to do just a little research, and you will discover THOSE LAWS ONLY APPLY TO CLOSED SYSTEMS.
02:54:41 <kallisti> And, if you research it further, you will find that closed systems are extremely rare!
02:54:52 <kallisti> ....closed systems such as.... the universe.
02:55:25 <kallisti> "So rare in fact, that many Physicists will tell you that closed systems are virtually non existent. Mostly, they are theoretical constructs."
02:55:33 <kallisti> universe doesn't exist. QED.
02:55:48 <Slereah> lawl
02:56:12 <Slereah> But kallisti, a singularity is removed from the universe!
02:56:17 <Slereah> Hence matter can get out!
02:58:20 <kallisti> lol they offer to teach you their batshit "quantum energy" technology via skype, but only if you donate.
02:58:39 <kallisti> also the AMAZING QUANTUM HEALING LIGHT
02:59:02 -!- kmc has joined.
02:59:08 <monqy> i wonder if vortex based mathematics has gotten that far
03:01:22 <kallisti> which I'm pretty sure is just a circle of LEDs
03:01:59 <itidus21> large LEDs?
03:02:03 <kallisti> "ENHANCED WIND POWER SYSTEMS For those with special need to also utilize wind power."
03:02:25 <kallisti> why do they sell ENHANCED WIND POWER SYSTEMS when they literally have limitless supplies of quantum energy.
03:02:27 <itidus21> i understand that new breed of flat screens has LEDs
03:07:48 <oerjan> kallisti: because WIND has special healing spiritual powers, duh
03:08:09 <kallisti> "Conspiracy advocates therefore claim that the scientific community has controlled and suppressed research into alternative avenues of energy production via the institutions of peer review."
03:08:13 <kallisti> looooool
03:08:30 <kallisti> peer review: oppressing the masses
03:10:34 <oerjan> `word 50
03:10:37 <HackEgo> ania irt aftal inatia med gellippicisttaings tinovers belinglmakh pecareze horimarmy mynacidithetutedium mnt nfleune razatouressixardeb prea callati finionkuropolon thussay epteegiolia moc pmas krefies uninfle res il noi pclotermles rionnnsbecomphelcaequin ber urriophocked permes jan brasdier sgri ectsultlyin corgotieus housphserreis to oxylphrier scheme um cyap en ismincione ly ie nundiver lano casserg snather
03:10:53 <Gregor> This channel is gettin' really horimarmy.
03:10:58 -!- oerjan has set topic: rionnnsbecomphelcaequin | http://codu.org/logs/_esoteric/.
03:11:37 -!- Gregor has set topic: rionnnsbecomphelcaequin | Particularly horimarmy rionnnsbecomphelcaequin, in fact | http://codu.org/logs/_esoteric/.
03:13:40 <kallisti> oh, huh. I was expecting http://en.wikipedia.org/wiki/History_of_perpetual_motion_machines to be a blank page.
03:15:25 <oerjan> perpetual money machines
03:17:50 <kallisti> oerjan: well, those probably exist.
03:17:56 <kallisti> if you have enough initial investment.
03:18:29 <kallisti> until, of course, you make all the money in the world.
03:18:48 <monqy> the solution then is to make more money
03:18:56 <oerjan> i recall scrooge mcduck did that once.
03:20:35 <oerjan> i vaguely recall this had sufficiently bad consequences that it had to be undone.
03:23:44 <oerjan> <itidus21> The main body of the topic "akljsdklgdjhndrthiojeriogj" contains 26 characters, from an alphabet of 14 characters "akljsdkhnrtioe". The number of instances of each character in the alphabet is "12241322121121".
03:23:54 <oerjan> you counted k twice hth
03:25:00 <oerjan> 22:33:53: <elliott> there are at least /two/ Hexham Wikipedians?
03:25:00 <oerjan> 22:34:08: <elliott> where do they all /fit/?
03:25:10 <oerjan> have you checked your downstairs closet?
03:25:43 <kallisti> monqy: once you own all the money, making more money just inflates its value. you've literally won the economy.
03:25:57 <kallisti> the only way to gain more wealth would be to acquire more natural resources.
03:26:23 <oerjan> kallisti: and for _that_, use your WITTS
03:26:39 <kallisti> well, you may want to hire some people to help you...
03:26:47 <monqy> but then
03:26:51 <monqy> the money
03:26:56 <monqy> how do you get it back
03:27:00 <kallisti> maybe some bodyguards to prevent everyone from robbing you.
03:27:15 <oerjan> monqy: money needs to be in circulation, duh
03:27:31 <kallisti> monqy: ice cream store.
03:27:33 <monqy> goodbye money
03:27:34 <kallisti> everyone loves ice cream.
03:27:54 <monqy> ice cream store on a truck
03:27:58 <kallisti> yes!
03:28:01 <kallisti> now you're thinking!
03:28:18 <kallisti> I don't understand the motivation for world powers to suppress information about free energy.
03:28:21 <oerjan> in fact could one not say that money only has real value in the moment it is transferred.
03:28:34 <kallisti> if free energy is discovered that literally implies that humanity can become infinitely prosperous.
03:28:45 <oerjan> since that corresponds to an exchange of service
03:28:48 <kallisti> the meager amount of wealth they have currently on the earth means nothing compared to the future wealth they could have.
03:29:15 <kallisti> so why would they hide it.
03:29:19 <kallisti> MAKES. NO. SENSE.
03:30:21 <oerjan> kallisti: change of power balance, duh
03:30:45 <oerjan> also, you can probably make some cheap horrible weapons with it.
03:31:28 <kallisti> well academia certainly has nothing to gain as they would likely be in power in that scenario
03:31:40 <oerjan> although that would be a reason for them to develop it for themselves, secretly.
03:32:59 <kallisti> in a free energy scenario people with knowlege to apply free energy would be the powerful ones.
03:33:17 <oerjan> kallisti: FINALLY, MAD SCIENTISTS
03:34:28 <kallisti> um mad, sceitnist? ah ha
03:35:02 * kallisti thinks we should mine asteroids.
03:35:46 <kallisti> some asteroids have more raw resources on them than basically everything on the earth.
03:36:24 <kallisti> sure it would be incredibly expensive, but THINK OF THE REWARDS
03:43:25 -!- calamari has joined.
03:48:31 <kallisti> @tell elliott I wonder how legit this is: http://news.softpedia.com/news/Introducing-Ubuntu-11-10-Without-Unity-228425.shtml
03:48:32 <lambdabot> Consider it noted.
03:52:08 <kallisti> also, anyone know anything about Linux Mint?
03:52:47 -!- TeruFSX has quit (Read error: Connection reset by peer).
03:53:39 <zzo38> Is this the proper way to derivative of list type? newtype List' x = List' (Either (x, List' x) [x]);
03:56:07 -!- TeruFSX has joined.
03:57:30 <calamari> kallisti: I've been running Lubuntu 11.10 and like it alright
03:58:30 * Sgeo is using Lubuntu 11.10
03:58:31 <Sgeo> >.>
03:59:02 <calamari> cool
03:59:44 <calamari> I think unity is pushing people to these alternate desktops
03:59:47 <oerjan> zzo38: seems so
04:01:02 <oerjan> strange, i thought derivatives were zippers, but that looks like a lousy zipper for lists.
04:01:51 <oerjan> as it doesn't invert the path down to the cursor
04:03:35 <Sgeo> My crappy computer pushed me to Lubuntu
04:03:55 <zzo38> oerjan: I read somewhere else that it had something to do with type with hole. It does look like type with hole, to me, though.
04:05:12 <kallisti> calamari: Lubuntu is not Linux Mint, I thought.
04:06:03 <kallisti> @tell elliott A FP vs. imperative question. Have fun http://stackoverflow.com/questions/8611211/differences-in-separation-of-static-and-stateful-code-in-different-languages
04:06:03 <lambdabot> Consider it noted.
04:07:15 <calamari> kallisti: you're right it's not.. just offering an alternative
04:15:29 <kallisti> eh I don't like LXDE
04:15:44 <Sgeo> What about .. XFCE?
04:15:47 <kallisti> nope
04:16:00 <kallisti> I'd prefer Gnome 3 with classic interface. Linux Mint looks promising because it does exactly that
04:16:06 <kallisti> with some modifications available.
04:16:22 <kallisti> otherwise I'm probably going to try Debian or something
04:16:43 <calamari> I was going to go with Debian, then I realized I lost a lot of ppa's
04:18:18 <kallisti> Sgeo: GETTING SLOPPY WTIH TEH APDELBROTS
04:19:20 <monqy> i love apdelbrots
04:19:37 <oerjan> zzo38: btw i think i have an argument that the backwards list applicative cannot possibly be a monad.
04:20:11 <monqy> backwards list applicative?
04:21:19 <oerjan> consider x = [1,2,3]; y = [4,5,6]; z = [7,8,9,10,11,12]. then bjoin . fmap bjoin $ [[x,y],[z]] involves only rectangular lists so can be directly calculated
04:22:30 <oerjan> w = fmap bjoin [[x,y],[z]] = [[1,4,2,5,3,6],[7,8,9,10,11,12]] and then bjoin w = [1,7,4,8,2,9,5,10,3,11,6,12]
04:25:42 <zzo38> Yes, it is what I thought.
04:26:08 <oerjan> monqy: if f is an applicative, then newtype BW f x = BW (f x); instance Applicative f => Applicative (BW f) where { pure = BW . pure; BW g <*> BW x = BW (flip id <$> x <*> g) } instance Functor f => Functor (BW f) where { fmap g (BW x) = BW (fmap g x) }
04:27:02 <oerjan> now, bjoin [[x,y],[z]] must be a list whose elements are among x,y,z, by parametricity.
04:29:49 <oerjan> hm i'm missing a detail here
04:30:57 -!- augur has quit (Remote host closed the connection).
04:31:29 <pikhq_> What. The Secretary of Homeland Security is exempt from all laws.
04:32:09 <calamari> http://img.ie/1ba8b.jpg
04:32:58 <oerjan> a lemma though: if ll is a list of finite lists with no empty list elements, then all elements of concat ll must appear in bjoin ll.
04:33:11 <oerjan> *finite list of
04:34:27 <pikhq_> In a "brilliant" move, in the act providing funding for the border fence, the Secretary of Homeland Security was made exempt from *any laws* that the Secretary, in the Secretary's sole discretion, determines necessary to ensure quick construction of the border fence.
04:36:48 <oerjan> because if m = foldl1' gcm (map length ll), and f l = map (replicate (m `div` length l)) l; then map f ll duplicates each element of ll to make it rectangular; so join . map bjoin $ map f ll is calculated rectangularly and so contains exactly one of every element from concat $ map f ll. but this is a superset of concat ll.
04:37:06 <oerjan> er
04:37:08 -!- Nisstyre has joined.
04:37:11 <oerjan> s/gcm/lcm/
04:38:09 <oerjan> *to make it rectangular and with all rectangles the same "area", thus the same length of their bjoin's.
04:38:46 <oerjan> this proves that all elements of concat ll appear in bjoin ll.
04:38:49 <itidus21> <oerjan> you counted k twice hth -- you're right.. i screwed up the k somehow
04:40:03 <oerjan> *from concat . concat $ map f ll
04:41:00 <oerjan> s/join/bjoin/ up there too
04:43:32 <oerjan> this means that v = bjoin [[x,y],[z]] cannot contain more than one of x,y,z each, since otherwise bjoin v would contain more than one of some subelement.
04:43:38 <oerjan> gah reboot needed
04:43:53 -!- oerjan has quit (Quit: leaving).
04:48:52 -!- Sgeo has quit (Ping timeout: 240 seconds).
04:52:15 -!- oerjan has joined.
04:52:47 <kallisti> I just realized I should be using POSIX::floor instead of int
04:54:03 -!- Sgeo has joined.
04:54:08 -!- DCliche has joined.
04:55:55 <oerjan> zzo38: i think that argument at least shows that when ll is a finite list of nonempty finite lists, bjoin ll must contain exactly one of each element of concat ll. the part i've forgotten is why this gives a contradiction.
04:57:16 -!- Klisz has quit (Ping timeout: 240 seconds).
04:59:09 <kallisti> it would be nice if no and use had block styles.
04:59:13 <kallisti> no warnings { ... }
04:59:22 <kallisti> instead of { no warnings; ... }
05:05:25 <kallisti> oerjan: is help text generally considered a success in Unix land?
05:06:09 <oerjan> i may never have heard of it, does that count? :P
05:06:18 <kallisti> ?
05:06:39 <oerjan> I HAVE NO IDEA WHAT YOU ARE ASKING
05:06:40 <kallisti> you mean you don't know what I'm talking about or you've never seen a -h option return failure?
05:06:42 <pikhq_> kallisti: Yes, puts("SPEW TEXT OF HELPFULNESS");exit(EXIT_SUCCESS); is permitted.
05:06:43 <kallisti> oh
05:06:51 <kallisti> pikhq_: okay.
05:06:55 <kallisti> that's good.
05:06:57 <pikhq_> And expected.
05:07:11 <kallisti> I like to expect sanity from things.
05:07:12 <kallisti> so that's good.
05:07:15 <oerjan> oh that kind of success
05:07:35 <oerjan> TRY TO BE MORE AMBIGUOUS NEXT TIME
05:07:36 <pikhq_> Unless, of course, that's puts("invalid option");
05:07:45 <kallisti> right
05:08:34 <kallisti> die "Couldn't compile default datafile: $@" if $@;
05:08:39 <kallisti> die "Couldn't load default datafile: $!" unless @r;
05:08:40 <kallisti> die 'Blargh!';
05:08:46 <kallisti> Perl Error Handling: Best Practices
05:09:55 <pikhq_> die unless die;
05:10:45 <kallisti> $@ and die or !@r and die or die
05:12:38 -!- augur has joined.
05:13:04 <kallisti> @loaded_data = [@r];
05:13:43 <kallisti> possibly the most dubious line of code I've ever written. I had to double check why I did that to make sure past me did the right thing.
05:17:24 <kallisti> map {
05:17:24 <kallisti> my $opt=$_;
05:17:24 <kallisti> s/(^|-)(.)/\u$2/g;
05:17:24 <kallisti> $opt, handle_dataset_opt $_
05:17:25 <kallisti> } @options
05:17:31 <kallisti> oh wait. this is worse.
05:25:52 <Sgeo> <3 This Is Gallifrey
05:26:25 <kallisti> what
05:38:50 <Sgeo> kmc has an interesting esolang idea.
05:39:39 <kallisti> would it be considered bad style to have long options with uppercase in them?
05:39:45 <kallisti> in this case: --eng-1M
05:40:19 <Sgeo> kallisti, I love the song
05:40:38 <oerjan> try to sneak in some kannada characters while you're at it.
05:49:04 <PiRSquared17> http://ka.wikipedia.org/wiki/ (warning: possibly browser crashing) is Kannada?
05:49:59 <PiRSquared17> No... is it http://kn.wikipedia.org/wiki/ (same warning) ?
05:51:39 <itidus21> both pages load for me :>
05:51:58 <itidus21> but eh.. stupid me uses firefox and has the fonts available perhaps
05:52:43 <PiRSquared17> According to http://meta.wikimedia.org/wiki/Small_wikis#Small_wikis , kn = Kannada
05:53:00 <itidus21> kannada is an indian language i think
05:53:26 <PiRSquared17> Yes
05:53:43 <itidus21> but then.. i am in the company of geeks who know everything >.<
05:54:03 <itidus21> and mostly younger than me
05:54:14 <oerjan> oh ka is georgian.
05:55:48 <oerjan> i mainly know kannada as the source for the eye characters of the look of disapproval smiley.
05:55:59 <itidus21> indian languages i can name off the top of my head with the bonus of seeing kannada just now are: kannada, pali, sanskrit, urdu(?), bengali, punjabi, oriya, marathi, hindi
05:57:55 <PiRSquared17> yuck... looks like a test page:
05:57:57 <PiRSquared17> http://kn.wikipedia.org/wiki/ಪುರಾತನ_ಕಾಲದ_ಸೂರ್ಯ_ಗ್ರಹಣಗಳ_ಪಟ್ಟಿ
05:58:37 <PiRSquared17> Unless google translate says otherwise...
05:59:19 <itidus21> i got Failed to parse (lexing error): <nowiki> as part of that page
06:00:47 <PiRSquared17> '''Thick mold' [[Contact name == ==[[Image: [[Media: Example.jpg]] <math> <nowiki> inserted into the formula here </ nowiki >--~~~~----</ math >]]]]''
06:05:44 <zzo38> kalisti: I think it is bad style to have long options at all. But, that is just my opinion anyways
06:11:43 <itidus21> `log bizarre notation
06:11:46 <kallisti> zzo38: yes it is
06:12:15 <HackEgo> No output.
06:12:32 <itidus21> `pastelogs bizarre notations
06:12:45 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8858
06:21:16 -!- tuubow has quit (Ping timeout: 240 seconds).
06:25:55 <kallisti> oerjan: fizzie: http://sprunge.us/IbRH here's my current word generator. It's currently not completely tested due to some sort of weird encoding issue in my dataset builder ("training" script or whatever).
06:25:59 <kallisti> see if you can spot any problems.
06:27:29 -!- tuubow has joined.
06:30:24 <kallisti> wait why am I flooring my random value for the random selection routine..
06:31:11 <pikhq_> Kannada script? BAH
06:31:40 <pikhq_> Tengwar!
06:31:50 <pikhq_> Sadly, not in Unicode.
06:32:59 <kallisti> since my numbers are now most likely going to be ratios in [0,1] I feel it might be a bad idea to floor that number..
06:34:02 -!- NihilistDandy has joined.
06:40:14 -!- PiRSquared17 has changed nick to PiRSquaredAway.
06:41:29 -!- calamari has quit (Quit: Leaving).
06:53:22 -!- Nisstyre has quit (Remote host closed the connection).
07:01:43 <kallisti> !perl "--eng-1M" =~ s/(^|-)(.)/\u$2/gr
07:01:44 <EgoBot> Bareword found where operator expected at /tmp/input.2909 line 1, near "s/(^|-)(.)/\u$2/gr"
07:01:47 <kallisti> gr
07:02:07 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-)(.)/\u$2/g; print;
07:02:07 <EgoBot> ​-Eng1M
07:03:44 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-)[^-]/\u$2/g; print;
07:03:45 <EgoBot> ​-ngM
07:04:34 <zzo38> If you use Zero (an uninhabited type) and Maybe to represent natural numbers in types, then you could make a type for a list with a fixed number of elements is simply (->)
07:05:06 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-)([^-])/\u$2/g; print;
07:05:07 <EgoBot> ​-Eng1M
07:08:15 <zzo38> I think a extension for Haskell to make natural number types should do like what I specified here
07:09:13 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-+)([^-])/\u$2/g; print;
07:09:13 <EgoBot> Eng1M
07:10:27 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-+)(.)/\u$2/g; print;
07:10:28 <EgoBot> ​-Eng1M
07:10:34 <kallisti> !perl my $_ = "--eng-1M"; s/(^|-+?)(.)/\u$2/g; print;
07:10:34 <EgoBot> ​-Eng1M
07:41:52 -!- oerjan has quit (Quit: eek update).
07:58:34 <Sgeo> kallisti, update
08:05:49 <kallisti> Sgeo: I'm guessing that you noticed the little nicholas cage button on the top right?
08:05:56 <Sgeo> Yes
08:06:00 <kallisti> excellent.
08:28:28 -!- Phantom_Hoover has joined.
08:29:28 <kallisti> Wide character in print at ./words.pl line 133.
08:29:31 <kallisti> WHYYYYY
08:30:14 <Deewiant> http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default
08:31:19 <kallisti> I really don't think that's my problem, since I'm doing all of the usual utf8 things.
08:40:27 <kallisti> oh duh
08:40:29 <kallisti> there was nothing wrong at all.
08:41:13 <kallisti> when making my program Unicode friendly I decided that use open qw(:encoding(UTF-8) :std) was probably unecessary. And then I forgot about it not being there when I tried to print out data during test. :P
08:42:35 <kallisti> hm, it actually works, I think.
08:45:21 <kallisti> but now the load time is abysmal.
08:45:27 <kallisti> because lolperlmodules
08:50:58 <kallisti> so uh...
08:51:15 <kallisti> what's the best way to put these files on hackego, as far as organizing them.
08:51:59 <kallisti> I have a data directory with a bunch of perl scripts and then the actual script itself.
08:54:36 <kallisti> `ls
08:54:43 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
08:54:47 <kallisti> `ls share
08:54:50 <HackEgo> units.dat
09:00:36 <Patashu> I found this video of a toad playing a video game http://www.youtube.com/watch?v=bnduwnA1jxg&feature=g-all-u&context=G2b6f33cFAAAAAAAAHAA
09:00:44 <Patashu> and was wondering what other animals have been made to play video games?
09:00:59 <Patashu> I know researchers use monkeys to control vr realities / robot arms / etc and solve tasks, for example
09:01:59 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2
09:02:10 <HackEgo> 2011-12-23 09:02:09 URL:http://dl.dropbox.com/u/16495819/Data.tar.bz2 [9307699/9307699] -> "Data.tar.bz2" [1]
09:02:12 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
09:02:29 <HackEgo> 2011-12-23 09:02:28 URL:http://dl.dropbox.com/u/16495819/words.pl [4064/4064] -> "words.pl" [1]
09:03:13 <kallisti> `run tar -xf Data.tar.bz2
09:03:23 <HackEgo> No output.
09:03:41 <kallisti> `mv chmod +x words.pl && mv words.pl bin/words
09:03:44 <HackEgo> mv: missing destination file operand after `chmod +x words.pl && mv words.pl bin/words' \ Try `mv --help' for more information.
09:03:53 <kallisti> `run chmod +x words.pl && mv words.pl bin/words
09:03:57 <HackEgo> No output.
09:04:00 <kallisti> `ls
09:04:04 <HackEgo> Data \ Data.tar.bz2 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
09:04:10 <kallisti> `mv Data share/WordData
09:04:14 <HackEgo> mv: missing destination file operand after `Data share/WordData' \ Try `mv --help' for more information.
09:04:18 <kallisti> `run mv Data share/WordData
09:04:22 <HackEgo> No output.
09:04:24 <kallisti> `words --help
09:04:29 <HackEgo> Optional module Math::Random::MT::Perl not found. \ Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options:
09:04:44 <kallisti> oh that's going to be annoying.
09:05:10 <kallisti> Gregor: plz to install Math::Random::MT::Perl kthx
09:05:39 <kallisti> `words 50
09:05:48 <kallisti> loooool so slow
09:06:09 <kallisti> it wasn't this slow on my computer though..
09:06:12 <HackEgo> Optional module Math::Random::MT::Perl not found.
09:06:17 <kallisti> uh... okay.
09:06:55 <Patashu> `words -d 50
09:06:58 <HackEgo> Optional module Math::Random::MT::Perl not found. \ Unknown option: \ Unknown option: 5 \ Unknown option: 0
09:07:04 <kallisti> `ls share
09:07:08 <HackEgo> WordData \ units.dat
09:07:12 <kallisti> `ls share/WordData
09:07:15 <HackEgo> Brazilian.pl \ Bulgarian.pl \ CanadianEnglishInsane.pl \ Catalan.pl \ Eng1M.pl \ EngAll.pl \ EngFiction.pl \ EngGb.pl \ EngUs.pl \ Finnish.pl \ French.pl \ Gaelic.pl \ German.pl \ GermanMedical.pl \ Hebrew.pl \ Irish.pl \ Italian.pl \ Manx.pl \ Ogerman.pl \ Polish.pl \ Portuguese.pl \ Russian.pl \ Spanish.pl \ Swedish.pl
09:07:52 <kallisti> Patashu: you have to use run if you have options
09:08:04 <kallisti> `run words -d 50
09:08:29 <kallisti> increeeeedibly slow
09:08:37 <HackEgo> Optional module Math::Random::MT::Perl not found.
09:09:02 <kallisti> hm
09:09:21 <kallisti> `run words -d 5 2>&1
09:09:51 <kallisti> well no, the warning is on STDERR so that's not going to help.
09:09:54 <HackEgo> Optional module Math::Random::MT::Perl not found.
09:10:31 <kallisti> echo "print $0" >> bin/test.pl
09:10:34 <kallisti> `run echo "print $0" >> bin/test.pl
09:10:37 <HackEgo> No output.
09:10:44 <kallisti> `run chmod +x bin/test.pl && perl bin/test.pl
09:10:48 <HackEgo> No output.
09:11:06 <kallisti> wat
09:11:20 <kallisti> `run echo "print $0" > bin/test.pl
09:11:23 <HackEgo> No output.
09:11:24 <kallisti> `run chmod +x bin/test.pl && perl bin/test.pl
09:11:27 <HackEgo> No output.
09:11:34 <kallisti> `run echo 'print $0' > bin/test.pl
09:11:36 <kallisti> `run chmod +x bin/test.pl && perl bin/test.pl
09:11:37 <HackEgo> No output.
09:11:40 <HackEgo> No output.
09:11:50 <kallisti> `word 4
09:11:54 <HackEgo> coliburtuta ecculekesbrudonteedosphithypurrentandacconseadbreublur planous kquing
09:11:57 <Patashu> ah, I see
09:12:03 <kallisti> what.
09:12:07 <kallisti> HELP ME.
09:12:10 <Patashu> lol
09:12:15 <Patashu> wait, that's a real word?
09:12:21 <kallisti> yes, definitely
09:12:27 <kallisti> `rm bin/test.pl
09:12:29 <HackEgo> No output.
09:12:34 <kallisti> `run perl -e 'print $0'
09:12:46 <kallisti> ...............
09:13:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
09:13:59 <kallisti> `run echo "aaaaaaaah"
09:14:01 <kallisti> `ls
09:14:02 <HackEgo> aaaaaaaah
09:14:04 <HackEgo> Data.tar.bz2 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
09:14:11 <kallisti> `perl -e 'print $0 #WHY'
09:14:14 <HackEgo> No output.
09:14:26 <kallisti> `perl -e 'print $1 #WHY' 'why'
09:14:29 <HackEgo> String found where operator expected at -e line 1, near "'print $1 #WHY' 'why'" \.(Missing operator before 'why'?) \ syntax error at -e line 1, near "'print $1 #WHY' 'why'" \ Execution of -e aborted due to compilation errors.
09:14:48 <Patashu> run?
09:15:13 <kallisti> `run perl -e 'print $1 #WHY' 'why'
09:15:16 <HackEgo> No output.
09:15:26 <kallisti> `run perl -e 'print $ARGV[1] #WHY' 'why'
09:15:29 <HackEgo> No output.
09:15:35 <kallisti> `run perl -e 'print $ARGV[0] #WHY' 'why'
09:15:39 <HackEgo> why
09:15:41 <kallisti> `run perl -e 'print $0 #WHY' 'why'
09:16:16 <kallisti> `run echo 'print $0' > test.pl
09:16:19 <HackEgo> No output.
09:16:28 <kallisti> `run perl test.pl
09:16:31 <HackEgo> test.pl
09:17:16 <kallisti> `run echo 'use Cwd; print getcwd' > bin/test.pl
09:17:19 <HackEgo> No output.
09:17:20 <kallisti> `run perl bin/test.pl
09:17:23 <HackEgo> ​/hackenv
09:17:31 <kallisti> okay...
09:17:40 <kallisti> `rm bin/test.pl test.pl
09:17:43 <HackEgo> rm: cannot remove `bin/test.pl test.pl': No such file or directory
09:17:45 <kallisti> `run rm bin/test.pl test.pla
09:17:49 <HackEgo> rm: cannot remove `test.pla': No such file or directory
09:17:50 <kallisti> `ls
09:17:53 <HackEgo> Data.tar.bz2 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ test.pl \ wisdom
09:17:59 <kallisti> lol
09:18:02 <kallisti> `rm test.pl
09:18:05 <HackEgo> No output.
09:20:31 <kallisti> `ls share/WordData/EngAll.pl
09:20:34 <HackEgo> share/WordData/EngAll.pl
09:20:55 <kallisti> ....what
09:21:26 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
09:21:29 <HackEgo> 2011-12-23 09:21:28 URL:http://dl.dropbox.com/u/16495819/words.pl [4065/4065] -> "words.pl" [1]
09:21:46 <kallisti> `run chmod +x words.pl && mv words.pl bin/words
09:21:49 <HackEgo> No output.
09:21:55 <kallisti> `words 5
09:22:21 <kallisti> ..?
09:22:28 <HackEgo> No output.
09:23:43 <kallisti> `run perl -e 'do "share/WordData/French.pl" and print "WHY" or die'
09:24:14 <kallisti> is it timing out?
09:24:16 <HackEgo> No output.
09:24:57 <kallisti> `run words --canadian 5
09:25:07 <HackEgo> vologically rocimli pred mists trinter
09:25:13 <kallisti> yes it's timing out on the larger datasets.
09:25:32 <kallisti> `run words --canadian 10
09:25:40 <kallisti> `run --help
09:25:42 <HackEgo> comimattanwat's oscio air's alities super presoxal strenzenessnes bailato conconto renaliging
09:25:44 <HackEgo> bash: --: invalid option \ Usage:.bash [GNU long option] [option] ... \.bash [GNU long option] [option] script-file ... \ GNU long options: \.--debug \.--debugger \.--dump-po-strings \.--dump-strings \.--help \.--init-file \.--login \.--noediting \.--noprofile \.--norc \.--posix \.--protected \.--rcfile \.--restricted \.--verbose \.--version
09:25:46 <kallisti> `run words --help
09:25:50 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options: \ -h, --help this help text \ -d,
09:28:57 -!- Phantom_Hoover has joined.
09:32:21 <fizzie> `run words --finnish 5
09:32:27 <HackEgo> alki aseteokseeninan ryöppyämällylty kutsempinani veromittaisemme
09:36:09 <fizzie> That's not too shabby. "veromittaisemme" is almost a real word; it's a compound of real words, anyway, even though I'm not sure what's their meaning when combined like that, if any.
09:37:13 <kallisti> `run words --canada 50
09:37:16 <HackEgo> Unknown option: canada
09:37:28 <kallisti> lol
09:37:32 <kallisti> `run words --canadia 50
09:37:39 <fizzie> The land of Canadia.
09:37:42 <HackEgo> tars moszealanders tubeamshodon socrip acae noningly destitizershing blamizedrists stermi disecheftertable disquardell unte pate ing's ironcons geness's cation gilroofness ebuy alberrein carpediss undisgrammen cologies hysingelias petroue medifies dogs kelfate seaf's taatshru electituatina hightled vr's okorta best liber's madding consion hemerositid tubble ptantim strat unic windunnate onfulfilag nebroty inface curverlier rhippoin read
09:38:09 <kallisti> ing's
09:38:18 <kallisti> I forgot to filter 's on this dataset
09:38:34 <fizzie> `run words --finnish 15
09:38:36 <kallisti> but I'm converting everything over to Storable finally so that will hopefully speed up the larger datasets.
09:38:39 <HackEgo> sit linanne madallani hyperäisimmällä nopeiltasi korjuman hoitteluillisemmio sijatussaattavalla ihmeäviilinteissani nojaksempiisi säänellaan huojaamilla kielevammiltamme momeaksentua muisillensa
09:38:54 <fizzie> Fancy.
09:38:59 <kallisti> run words --finnish --candian-english-insane 15
09:39:06 <fizzie> "nopeiltasi" = "from your fast ones".
09:39:21 <kallisti> >_>
09:39:24 <kallisti> don't time out plz
09:39:40 <fizzie> Maybe you should: rewrite it in C.
09:39:44 <kallisti> never.
09:39:50 <fizzie> Maybe you should: rewrite it in Haskell.
09:39:55 <kallisti> that's a possibility.
09:40:01 <fizzie> Maybe you should: rewrite it in COBOL.
09:40:03 <kallisti> no
09:40:09 <fizzie> Okay, that's all I've got.
09:40:19 <kallisti> the problem with that is that... I have to rewrite everything
09:40:23 <kallisti> and use a different serialization format.
09:41:04 <fizzie> I've got Perl scripts and Befunge code cooperating on fungot's babble-models; it's not such a huge job to just define something.
09:41:05 <fungot> fizzie: mr president, the liberals are not either, the only solution that can provide an alternative to the american cosmetics industry. do american fnord really have to say.
09:41:20 <shachaf> fizzie: It's not like C/Haskell/COBOL are different languages in any meaningful way.
09:41:50 <kallisti> fizzie: I don't think I can do that easily
09:41:58 <kallisti> actually serialization kind of looks difficult in Haskell, unless I use Read/Show
09:43:12 <kallisti> I guess since I'm using a faster language that would be sufficient.
09:43:12 <fizzie> Or Data.Serialize?
09:43:28 <fizzie> Or whatever, I'm sure there are billions of things.
09:43:31 <kallisti> oh wait I bet there's already typeclass instances for common data structures.
09:43:43 <kallisti> INDEED THERE IS
09:43:44 <kallisti> AMAZING
09:43:45 <fizzie> I just picked whatever elliott's "mchost" had for the low-level.
09:43:58 <kallisti> hm
09:43:59 <kallisti> this is tempting.
09:44:20 <kallisti> but maybe storable will fix everything?
09:44:31 <fizzie> It should certainly speed up the loading.
09:46:12 <kallisti> I guess I probably should have done this a while ago.
09:46:17 <kallisti> the read/write code is actually simpler now. :P
09:46:31 <fizzie> "säänellaan" -- broken vowel harmony 1, Markov assumption 0.
09:46:44 <kallisti> wat
09:46:51 <kallisti> is that not okay in finnish?
09:47:14 <fizzie> You can't have ä and a in the same word (or subword of a compound word, anyway), broadly speaking.
09:47:28 <fizzie> But of course the a's have completely forgotten about the ä's.
09:47:31 <kallisti> that's stupid. stop having a difficult language.
09:47:39 <kallisti> I'm sure words breaks plenty of English rules too, not that there are many.
09:48:30 <shachaf> boost::serialize
09:48:42 <shachaf> That's the One True Serialisation Library.
09:50:47 <kallisti> ..
09:51:10 <Deewiant> fizzie: Some foreign imports break that though, like "analysointi" or "rekrytointi"
09:51:20 <kallisti> `run perl utf-8
09:51:22 <fizzie> Deewiant: OLUMPPIALAISET.
09:51:24 <HackEgo> Can't open perl script "utf-8": No such file or directory
09:51:28 <kallisti> cool
09:51:31 <Deewiant> fizzie: Yeah, that too.
09:51:37 <fizzie> It's the ur-example.
09:52:01 <Deewiant> Evidently.
09:52:22 <kallisti> I really only do special processing on the english datasets
09:52:27 <kallisti> specifically removing 's and s'
09:52:47 <fizzie> `run words --finnish 15
09:52:53 <HackEgo> mekkaistisi myhäikäisittamallise perhemmiksenne peisteta keksesi erällensa kehittamme imeämme fiksillan harauksemmiksempi työskelumpinämmille psyvästämme minansa kärsivahtavissa estuvistollista
09:53:48 <kallisti> yeah your vowel harmony bullshit is going to get messed up a lot.
09:53:52 <kallisti> :)
09:54:02 <kallisti> NOT SO HARMONIOUS NOW
09:54:07 <fizzie> Long-distance dependencies often are.
09:54:48 <kallisti> `run words --spanish --french 20
09:55:04 <kallisti> :(
09:55:22 <kallisti> `run words --finish --ogerman 20
09:55:22 <HackEgo> No output.
09:55:28 <HackEgo> Unknown option: finish
09:55:29 <kallisti> `run words --finnish --ogerman 20
09:55:36 <HackEgo> aufführungekste loisteignallangab vag laisio-kurs brotamikromaiser metastadi ymmächeschest ertär nauraimafie länneminimmotisoll illenne kurstaltagenerilläufe milcode minte scii profferaviehun prosen spekultan hermatiintuvinast berni
09:55:37 <kallisti> ogerman = Old German
09:55:58 <fizzie> "metastadi", the concept of our capital city.
09:56:08 <kallisti> ...wat
09:56:17 <fizzie> (Helsinki is called "stadi" slangwise.)
09:56:22 <kallisti> oh
09:56:36 <kallisti> `run words --ogerman --german-medical --russian 20
09:56:42 <fizzie> "Helsinkians themselves never refer to their slang as Helsinki slang(i) but instead as stadin slangi or simply slangi. Stadi is a slang word, borrowed from the Swedish stad, "city". Literally, the name would mean "slang of the city", but stadi always means just the city of Helsinki in the slang – all other cities are unconditionally referred to by the common Finnish word for "city" ("kaupunki")."
09:57:03 <kallisti> `run words --ogerman --german-medical 20
09:57:09 <HackEgo> No output.
09:57:10 <HackEgo> tofferen ranoviereiz lindo promulgaritätigkeimab nother einkubakhäuse versorten behanisiker patorweißen stem kretecht endelisanges kugenheitestapeut gelfigusamphil tresung spersche anovokalzen fludier kommenwagenren bandlungertem
09:57:47 -!- NihilistDandy has quit (Quit: http://haskell.org).
09:57:52 <kallisti> `run words --eng-gb 10
09:58:07 <kallisti> yeah that one is going to be too big I think.
09:58:14 <kallisti> the only ones that seem to word are from /usr/share/dict
09:58:18 <kallisti> s/word/work
09:58:25 <HackEgo> No output.
10:00:09 <kallisti> `run words --gaelic --finnish 10
10:00:14 <HackEgo> vankeämme ghreittiivistaramassa suaim had phrìdeimmis h-earrattavien säile phuiliöillään thuumiar theinokkaavall
10:00:29 <kallisti> so. many. doubles.
10:00:53 <Deewiant> `run words --finnish 10
10:00:59 <HackEgo> vähän virhemmältä hallisenne hylkimällenne agenevimmilla millasiakvaa riisimmastani päämättömämmillä käyttämänänne viamäksenne
10:01:33 <fizzie> You could probably make the loading somewhat faster by special-casing @loaded_data == 1 and avoiding the "loop through the whole model" step. Don't know how much that buys.
10:02:04 <kallisti> possibly.
10:02:08 <fizzie> That's quite some real words there. "vähän", "hylkimällenne", "käyttämänänne".
10:02:30 <kallisti> are they compounds?
10:02:34 <fizzie> No.
10:02:39 <kallisti> oh, hmm, interesting.
10:02:54 <kallisti> yeah I assumed increasing the grams would make that more likely.
10:02:54 <Deewiant> "hallisenne" too, if halls can have diminutivese.
10:02:57 <Deewiant> -e
10:03:03 <fizzie> Yes, I was considering that.
10:03:14 <fizzie> It sounds vaguely derogatory.
10:03:22 <kallisti> little halls?
10:03:25 <fizzie> Like you're dissing someone's hall.
10:03:27 <kallisti> lol
10:03:33 <Deewiant> "Your hallie"
10:03:40 <Deewiant> Or something.
10:03:44 <fizzie> "No kyllähän tämä teidän... hallisenne varmaan menettelee. Ehkä."
10:04:27 <kallisti> fizzie: yeah I can skip the normalization step completely.
10:04:30 <kallisti> for 1 dataset
10:04:38 <kallisti> but I really think it's the loading time that's slowing it down the most.
10:04:46 <kallisti> but... hmmm
10:04:56 <kallisti> the previous version didn't have that problem, and used a large dataset
10:05:35 <kallisti> `run words -N 30
10:05:58 <kallisti> hmmm, well turning off normalization only prevents the summation from happening, probably not going to matter much.
10:06:08 <HackEgo> No output.
10:06:28 <kallisti> but anyway the word lengths are vastly improved, so that's a plus.
10:07:12 <fizzie> Anyway, "vähän" -> a little, "hylkimällenne" -> to/for the one you rejected, "käyttämänänne" -> I can't be really bothered to figure this one out. "käyttämänne X" -> the X you used, though.
10:07:35 <kallisti> ....wtf finnish is weird.
10:07:58 <Deewiant> "as the X you used"
10:09:55 <fizzie> "hylkiä" to reject, "X-n hylkimä" something rejected by X, "hylkimänne" something rejected by you (plural, or polite singular), "hylkimällenne" the allative "to"/"for" case of that.
10:10:34 <kallisti> ah
10:10:44 <kallisti> english is so simple..
10:10:54 <kallisti> `run words --swedish 20
10:10:55 <fizzie> You just pile on the prepositions.
10:11:00 <HackEgo> avguda föringa tätter förmigheterielöjts navans fria lyckönda nuteruts naivitören ents tyngdeå styrar begraffa baltationen nålde subtramhet sedlanden sinnen kastabelanroppskriv feja
10:11:10 <fizzie> Looks quite swedish to me.
10:11:43 <fizzie> "sinnen" is the indefinite plural form of sinne 'mind, sense'.
10:11:47 <kallisti> fizzie: oh all the fucking time we do (also we don't give a shit about subject-predicate ordering)
10:12:36 <kallisti> actually sometimes you have a choice between 2 or 3 different preposition and your sentence will mean the exact same thing.
10:12:44 <fizzie> Oh, and 'avguda' is sort of "to adore, to worship".
10:13:05 <kallisti> yeah small dataset + 4-gram = actual words sometimes
10:13:22 <kallisti> eng-all on my computer is proving to be interesting.
10:14:19 <kallisti> if (@loaded_data == 1) {
10:14:19 <kallisti> my ($data, $fdata) = @$_;
10:14:19 <kallisti> %grams = %$data;
10:14:19 <kallisti> %freqs = %$freqs
10:14:20 <kallisti> }
10:14:24 <kallisti> I think that should do it.
10:15:02 <fizzie> You could also in theory do on-the-fly interpolation of only the 'grams you need, but that'd be a bit of a hassle.
10:15:24 <kallisti> unless I rewrote it in Haskell of course. :P
10:15:47 <kallisti> I guess interpolating the whole thing is kind of immensely wasteful...
10:16:15 <fizzie> Aw, no Norwegian? oerjan's going to be so disappointed.
10:16:28 -!- tuubow has quit (Ping timeout: 252 seconds).
10:17:05 <kallisti> show me a norwegian dictionary seperated by lines and I'll show you a words.pl that can generate Norwegian-esque words
10:18:18 <fizzie> http://packages.debian.org/sid/all/wnorwegian/filelist
10:18:23 <kallisti> the way I see lazy interpolating work is: it checks the interpolated data and if an entry doesn't exist it goes to the @loaded_data and fills the gram table on the fly.
10:19:45 -!- nooga has joined.
10:19:53 <fizzie> Them Norlanders are sort of confusing with their language, what with having two different in-use written forms (Nynorsk, Bokmål) of it.
10:20:07 <kallisti> all of your languages are confusing.
10:20:16 * kallisti ignorant American.
10:21:47 <kallisti> hmmm I have to be careful with autovivification here though.
10:21:54 <kallisti> merely /checking/ a key creates it.
10:22:18 <kallisti> but I think I end up interpolating after I check and it fails the first time
10:22:22 <kallisti> so it shouldn't be a problem.
10:22:33 <kallisti> if I could somehow check twice without interpolating it could cause weird bugs.
10:26:17 <kallisti> each %{$data->{$key} // {}}
10:26:25 <kallisti> I end up writing expressions like this in Perl entirely too often. :P
10:28:18 <kallisti> question: does dereferencing in perl create a copy of the data?
10:28:42 <kallisti> I'm pretty sure it doesn't, I think.
10:32:48 -!- GreaseMonkey has quit (Quit: The Other Game).
10:40:43 <kallisti> `run words -d --finnish 5
10:40:49 <HackEgo> naurajuisuku (Target: 5) librasta (Target: 8) painivierto (Target: 8) pansaismielemme (Target: 11) aloimilleni (Target: 7)
10:42:20 <kallisti> tends to overshoot the target a little bit, which is good.
10:42:32 <kallisti> `run words -d -o 2 --finnish 5
10:42:39 <HackEgo> vieraalimentävilkaksi (Target: 15) aaksestävälinettavina (Target: 15) myönneperustanne (Target: 12) varammenttivottein (Target: 15) saanneensa (Target: 15)
10:43:27 <kallisti> -o changes the target offset, -N skips normalization, and -d shows targets (in the version I'm working on -d will show the length-target difference which is the important thing)
10:44:30 <kallisti> ideally the length-target difference should equal the offset itself (I think)
10:45:31 <kallisti> yes, because when that happens it means you matched the length from the histogram while also landing on a space to ensure a smooth word ending.
10:46:47 <kallisti> ($ftable{' '} //= 0) *= 2**($len-$target);
10:46:48 <kallisti> hmmm wait
10:47:11 <kallisti> I think I'm relying on the space grequency to always be in the interval [0,1]
10:47:13 <kallisti> which isn't always the case.
10:47:18 <kallisti> *f
10:47:58 <kallisti> or maybe it ends up being the same thing regardless.
10:48:13 <fizzie> I don't see how, given that pick does sum(@w) -- it's just a 2^(len-target) multiplier for the probability of a space.
10:48:17 <kallisti> right.
10:48:29 <kallisti> is there a better function I could use?
10:48:39 <kallisti> ...within reason
10:50:31 <fizzie> I don't really know, that sounds vaguely reasonable. At len == target it's no-adjust, and then it goes up/down quite fast.
10:51:03 <kallisti> I'm sure it's landing on good lengths I'm just not sure that it's landing on good endings.
10:51:12 -!- TeruFSX_ has joined.
10:51:16 -!- TeruFSX has quit (Ping timeout: 252 seconds).
10:51:17 <kallisti> because that function greatly distorts the space frequency.
10:52:35 <fizzie> Well. It does avoid all completely unseen word-endings, which is good.
10:53:12 <fizzie> Also anecdotically speaking the finnish words seem to have really quite reasonable endings; it almost always seems to be some common suffix, which is sort of what we do.
10:53:28 <fizzie> -mme, -ne, -na, -nsa, -ksi, and so on.
10:53:35 <kallisti> yes I noticed the common suffixes
10:54:03 <fizzie> `run words --finnish 20
10:54:10 <HackEgo> esillasi kuullemmaksen vallonmukaisiman peimuavaruistamiamme ahdostaalle tuhisteltamme huttavakaulevillä vastanne tavamme kylmällämme sopukeutumikselta välleni afroamillensa paljamiasi nottarjoisamme työvistelemaksemi soviksensa poikkeesta laavaanne säihkiostavaltani
10:54:38 <kallisti> -mme is particularly common
10:57:32 <fizzie> It's the first-person plural possessive noun case, as well as the first-person plural conjugation for the verbs in the basic (indicative) mood.
10:57:46 <fizzie> Don't know why first-person plural would be any more common than the others, though.
10:59:00 <fizzie> Though for the others the noun and verb endings differ. (Our ship = "laivamme", we speak = "puhumme"; your (pl.) ship = "laivanne", you (pl.) speak = "puhutte".)
10:59:00 <kallisti> so it's like having 's everywhere. :P
10:59:07 <kallisti> almost
10:59:11 <kallisti> not quite as perverse though.
10:59:16 <kallisti> because finnish has more rules.
10:59:36 <kallisti> instead of "lol put 's and sometimes s' at the end of things when it's possesive except for contractions"
10:59:50 <fizzie> "kylmällämme" = with our cold, in that list above.
11:00:01 <kallisti> poetic
11:00:55 <fizzie> And "laavaanne" = "into your lava".
11:01:00 <kallisti> lol
11:01:04 <kallisti> DEEP
11:01:21 <kallisti> so I /think/ I've made the code better
11:01:26 <kallisti> by doing the lazy interpolation thing.
11:01:27 <Deewiant> "vastanne" = the second half of "et vastanne" ~= "you probably won't answer"
11:01:56 <kallisti> finnish words.pl is so angsty
11:02:14 <Deewiant> Alternatively, "vastanne" = "your vasta" :-P
11:03:06 <kallisti> ##Lazily interpolate the gram table on the fly
11:03:07 <kallisti> ##then cache the results
11:03:11 <kallisti> I make it sound so fancy.
11:03:46 <fizzie> Where vasta = "A kind of whisk made of birch twigs and used in the sauna to enhance the effect of heat by beating oneself with it".
11:03:57 <kallisti> ...what
11:04:05 <Phantom_Hoover> Kinky.
11:04:07 <fizzie> It's also called "vihta".
11:04:17 <kallisti> finns are weird.
11:04:22 <Deewiant> Yes, I figured I'd leave that out since there wasn't a one-word translation for it. :-P
11:04:24 <fizzie> Vasta is the East Finnish word for it, I think.
11:04:31 <Deewiant> Yep.
11:04:48 <fizzie> ('s what we call it.)
11:05:12 <kallisti> `run words -f 10
11:05:15 <HackEgo> Unknown option: f
11:05:16 <kallisti> `run words --f 10
11:05:19 <HackEgo> Option f is ambiguous (finnish, french)
11:05:23 <kallisti> `run words --fi 10
11:05:30 <HackEgo> avoistavaa aihdoltanne kuoliittämielmiisi afroavaaksesi suosaksi jahtamiltänne säilemästä levissa innollannesi pelisemme
11:05:44 <fizzie> Again with the afros.
11:06:04 <fizzie> "pelisemme" is the diminutive of "pelimme", 'our game'.
11:06:11 <kallisti> the little games we play.
11:06:51 <kallisti> wow this is going to be so much faster.
11:08:06 <kallisti> I wonder if my special case is actually even slower than this one.
11:08:19 <kallisti> because it copies the table
11:08:32 <kallisti> whereas this one doesn't (but still does unnecessary normalization)
11:10:08 <fizzie> You could make the %grams, %freqs into $grams, $freqs hashrefs so you can just non-copy assign, I guess. (And then just initialize them to {} if there's more than one @loaded_data. Or something.)
11:10:21 <fizzie> One more level of indirect-o-tron, of course.
11:10:32 <kallisti> but I think the normalization has been rendered pretty much imperceptible
11:10:42 -!- monqy has quit (Quit: hello).
11:10:45 <kallisti> so there's no harm in removing the special case.
11:11:37 <kallisti> granted the actual hash table itself isn't very large, maybe a few hundred keys at most.
11:11:43 <kallisti> it's not a deep copy.
11:12:43 <fizzie> Maybe soon you can even get English words out of the bot.
11:13:01 <kallisti> if by soon you mean "hours from now"
11:13:06 <fizzie> fungot: Could you generate words too? Do you have it in you?
11:13:08 <kallisti> because I'm having to reconstruct all the data for the billionth time.
11:13:09 <fungot> fizzie: mr president, i was insulted and my honour was called into question and mr anastassopoulos, the vice-president and the other does not want any superfluous bureaucracy. the same applies to amendments nos 6, 8, 10, 13, 16, 20, 22, 25, 26, 28 to 30, 32, 43, 46, 47, 48, 51, 129, 52, 85 and 101. some amendments, for example, has not changed its mind since we last spoke about this with all due respect to mrs villiers and almo
11:13:10 <fungot> f~fs@unaffiliated/fizzie: madam president, the blessing given by the commission over the next two years.
11:13:14 <fizzie> Uh...
11:13:18 <fizzie> I think that's a "no".
11:13:47 <kallisti> fizzie: you could have it randomly insert words.pl stuff instead of fnord
11:13:58 <kallisti> or with fnord
11:14:01 <kallisti> I would miss fnord if you did that.
11:14:26 <kallisti> I love a good discordian reference.
11:14:29 * kallisti <----
11:15:39 <fizzie> I guess it could stick in a random word every now and then, I'd just probably need to call to an external program for that. Unless of course I do a Befunge word generation module too. (I don't think the existing babble-code is quite "functional" enough for me to re-entrantly call it recursively.)
11:15:58 <kallisti> functional befunge
11:16:09 <fizzie> Befunce.
11:16:27 <kallisti> I assume by "external program" you mean "words.pl" since it's currently the cutting edge in word generation technology.
11:17:04 <kallisti> or maybe "words.hs" once I get around to writing it.
11:17:23 <kallisti> for increased performance in your mission critical tasks.
11:17:54 <kallisti> oh right this markov model generator thing starts to eat up memory around this time
11:17:57 * kallisti closes programs.
11:19:13 <kallisti> but, yes, in retrospect perl was a poor choice for this, since it requires a marginal amount of efficiency.
11:19:41 <kallisti> but it's actually not unbearably slow, HackEgo just has a strict time limit or is on a slow server or something.
11:20:00 <kallisti> it runs pretty quickly on my computer.
11:20:07 <kallisti> "a few seconds:
11:20:09 <kallisti> "
11:37:38 <kallisti> fizzie: I shouldn't be flooring $r in the pick routine, right?
11:37:58 <kallisti> I removed floor from that algorithm, because I don't think it makes any sense with floating point numbers.
11:53:53 <kallisti> delete local is a neat construct
11:56:50 <kallisti> `words
11:57:23 <HackEgo> No output.
11:58:00 <fizzie> Yes, if they're not integers it shouldn't be floored. Though I think with non-integers there's a chance that because of roundoff errors, pick might in fact fall out of the loop. Maybe.
11:58:14 <kallisti> yes I have that case covered.
12:00:55 <fizzie> HackEgo's on a prgmr VPS, isn't it? Those aren't exactly well-known for their computational power, at least the low-memory ones. (CPU scheduling weights equal RAM amounts.)
12:01:36 <fizzie> Though who knows, maybe Gregor's paying for four gigabytes or something.
12:02:26 <fizzie> `run free
12:02:29 <HackEgo> total used free shared buffers cached \ Mem: 250760 8416 242344 0 0 2292 \ -/+ buffers/cache: 6124 244636 \ Swap: 0 0 0
12:02:34 -!- Patashu has quit (Ping timeout: 240 seconds).
12:02:34 <fizzie> (That's the silliest command.)
12:02:51 <kallisti> hmmm so, except for efficiency
12:03:24 <kallisti> !($blah =~ /.../) should be equivalent to $blah !~ /.../
12:03:32 <fizzie> `run free # young hearts
12:03:35 <HackEgo> total used free shared buffers cached \ Mem: 250984 7416 243568 0 0 2292 \ -/+ buffers/cache: 5124 245860 \ Swap: 0 0 0
12:03:40 <fizzie> Anyway.
12:04:07 <kallisti> I'm wondering which would be faster in my case.
12:04:55 <kallisti> my $filter = qr/^[\p{Alphabetic}\p{Dash_Punctuation}\p{Connector_Punctuation}']+$/;
12:06:09 <kallisti> I think the majority of cases will match.
12:06:27 <kallisti> but when they DON'T match I go to the next iteration of the loop.
12:06:31 <kallisti> thus the !~
12:07:12 <kallisti> I don't think there's a way to avoid looping through the whole string via regex.
12:07:38 <kallisti> because I need to verify that every character is correct.
12:10:44 -!- Vorpal has joined.
12:11:28 <fizzie> Let's welcome Vorpal in eir native language, shall we?
12:11:30 <fizzie> `run words --swedish 20
12:11:37 <HackEgo> kapte extreterskt distimrerna fogatalspla mistats kyparkullen brevärning allraskedjord folkningar ampulländ inistenade vifter frundaleranas omiersmäst årsrumme dalars kunskriffusk uppgrade matning orkanon
12:13:07 -!- iconmaster_ has joined.
12:15:47 <kallisti> `run words --can 20
12:15:57 <HackEgo> thairedoun apalmuds canism sept thrily guarrator blood's aceflecho cactere deoriopsis adverm aphilhorn anturstak slikeaks daubact burstruann posteachthy winghaytom dumaco absorphai
12:16:57 <kallisti> this is like an endless source of words for fantasy authors.
12:17:11 <kallisti> `run words --english-fiction 20 #too slow, I bet
12:17:15 <HackEgo> Unknown option: english-fiction
12:17:17 <kallisti> `run words --eng-fiction 20 #too slow, I bet
12:17:22 <iconmaster_> A random word geneator? Cool.
12:17:51 <HackEgo> No output.
12:17:54 <kallisti> iconmaster_: it's an improvement on an existing one that does English words... I say "improvement" but currently it runs too slow for HackEgo's tastes.
12:18:08 <iconmaster_> Ah.
12:18:12 <kallisti> but I've got a faster one that I'll be adding probably tomorrow.
12:18:16 <fizzie> It's the very special "completely broken" sort of improvement.
12:18:34 <kallisti> functionally it works fine. it's just inefficient atm.
12:18:56 <kallisti> `word 20
12:18:59 <HackEgo> luthilehedjass tican prtranichase bu compal ransuil nuchecanatige con paecclogrossl mas blumilins exce re ings fegenchmer le gehas maclaffien dolies lannebathceleablft
12:19:02 <kallisti> here's the old one.
12:19:13 <fizzie> Functionally speaking it's vastly improved, since it can now do Finnish and Swedish just fine, which are certainly an improvement over boring old English.
12:19:36 <iconmaster_> I made a generator for my graphing calculator once
12:20:06 <iconmaster_> I weighted certain letters gor each letter last.
12:20:25 <kallisti> fizzie: also it can do Swinnish or Fwedish
12:20:47 <iconmaster_> It was pretty ok, but it gave me a lot of qs for some reason.
12:20:58 <kallisti> a word generator on a calculator?
12:21:12 <iconmaster_> Ueah on my old TI89
12:21:15 <kallisti> `run word --swedish --finnish 20
12:21:18 <HackEgo> hendish
12:21:25 <fizzie> That's not 20 words.
12:21:35 <kallisti> hmmm indeed not.
12:22:03 <kallisti> maybe that's when it timed out.
12:22:07 <kallisti> yes I think so.
12:22:08 <iconmaster_> Oops looks like I gtg, cya.
12:22:11 -!- iconmaster_ has quit (Quit: Pardon me, but I have to die in NetHack again.).
12:22:12 <kallisti> bai
12:22:33 <fizzie> The Finnish-Swedish folks tend to just mix the languages on a word granularity; or sometimes with compound words with Swedish beginnings and Finnish endings.
12:22:45 <fizzie> "jättekiva" and so on.
12:23:05 <fizzie> Oh, you ran 'word'.
12:23:10 <fizzie> `run words --finnish --swedish 20
12:23:14 <kallisti> `run word -N --swedish --finnish 20
12:23:17 <HackEgo> somammands eksför tristammasse moriersi vastat sovvaggenerta omligenemalt amman kompiin tres snatorallvimma fiktattus illättän kärska geparampen kollammalteista hjä valtsaab rämassa siinhoittömina
12:23:18 <HackEgo> plesa
12:23:18 -!- elliott has joined.
12:23:41 <kallisti> elliott: did you finish your Markov thing yet?
12:24:25 <fizzie> `run words --finnish --swedish 20
12:24:31 <HackEgo> rudienseämpioisioiminnis ensatummalmarna eromatiomamas ogär balla röyhemme kiinpassandivas sönäni poängestanin söpöttstå waala olorukatsuttan säni kits fångelbani karförssioniste rikans kalleninkalisi käynnatts antustamenedus
12:24:32 <fizzie> Those are such nonsense.
12:24:43 <kallisti> are you surprised?
12:24:49 <fizzie> Well, no.
12:25:05 <kallisti> balla
12:25:08 <elliott> `words 20
12:25:08 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
12:25:09 <kallisti> balla waala
12:25:21 <kallisti> elliott: it's slightly broken (on HackEgo)
12:25:25 <elliott> Oh good.
12:25:31 <kallisti> elliott: meaning it's too slow. BUT TOMORROW IT WON'T BE (I think)
12:25:40 <HackEgo> No output.
12:25:44 <kallisti> elliott: so only the smaller datasets work currently.
12:25:52 <elliott> So it sucks. OK.
12:26:14 <elliott> <lambdabot> kallisti said 8h 36m 57s ago: I wonder how legit this is: http://news.softpedia.com/news/Introducing-Ubuntu-11-10-Without-Unity-228425.shtml
12:26:19 <elliott> kallisti: It's just GNOME 3.
12:26:24 <elliott> You can get that with an apt-get.
12:26:35 <kallisti> elliott: also I'm thinking about switching to Linux Mint since it sounds like pretty much what I want.
12:26:53 <elliott> Linux Mint is beyond terrible.
12:26:56 <elliott> Also they're scummy.
12:27:13 <kallisti> is this like.. based on things.
12:27:23 <elliott> What?
12:27:37 <kallisti> this opinion.
12:27:46 <kallisti> is it based on things.
12:27:47 <kallisti> like
12:27:48 <kallisti> informations
12:28:08 <kallisti> it's okay if it's not.
12:28:27 <elliott> As for the scumminess, here's one instance:
12:29:11 <kallisti> `words --can 25
12:29:14 <HackEgo> Unknown option: can 25
12:29:14 <elliott> Banshee the audio player, when directed to an audio store, uses a referral link that gives a tiny kickback to its developers. Canonical and the Banshee developers agreed on changing this to one that directs the revenue to Canonical, on the condition that 1/3 of the profits go to Banshee.
12:29:38 <elliott> The Linux Mint developers, upon pulling this change into their distro, changed it to a new URL which gave 100% of the profits to themselves.
12:29:43 <elliott> Without announcing it.
12:29:46 <kallisti> LOL
12:29:47 <elliott> With a misleading changelog message.
12:29:50 <kallisti> looooooool
12:29:53 <kallisti> nice.
12:30:18 <elliott> When they had to defend themselves upon it being widely reported, the guy actually said -- and I'm quoting from memory, not paraphrasing here -- "Any revenue stream in Linux Mint that does not go to us is a BUG, and if you see one, you should report it."
12:30:52 <elliott> They also just don't really give a flying fuck about free software in general, they're opportunists.
12:31:02 <kallisti> so I should hate them on ethical grounds. okay. that will make me feel slightly bad if I decide that it functions as I would like it to.
12:31:23 <elliott> It's also shit technologically, but that part's obvious.
12:31:51 <kallisti> `run words --canadian-english-insane --ogerman 25
12:32:01 <HackEgo> arschede diskrew altlos ausführer graphe computag apperstempfeinfer offmänge heit seise plättillitier idous bewraph gas montertrobusüblin grimin unfelibe cyberginne allinigne gattress's creted wattungobah strammatine diosemplymph straturansgebäude's
12:32:02 <kallisti> SO SLOW
12:32:20 <elliott> `run words --canadian-english-insane 10
12:32:22 <Phantom_Hoover> elliott, you do realise that the immediately-accessible information on a given thing is going to be written with a positive spin, right?
12:32:26 <fizzie> kallisti: You might want to do something like @ARGV = split /\s+/, $ARGV[0] if $#ARGV == 0 and $ARGV[0] =~ /\s/; or something like that so that you can `words --foo --bar 42 instead of having to remember to `run words --foo --bar 42.
12:32:30 <HackEgo> stolong und echinles rinodiacoi enkie hebbing gigasses diopagany synger sulphurre
12:32:36 <elliott> kallisti: This is worse than `word.
12:32:49 <Phantom_Hoover> So it's not at all easy to find reasons that Mint is shit technologically if you don't already know where to look.
12:33:04 <elliott> Phantom_Hoover: I tend to assume competent people are capable of doing their own research? I mean, I wasn't exactly given the divine gift of knowledge that Linux Mint is shit.
12:33:09 <elliott> But fine.
12:33:37 <fizzie> elliott: It does rather pleasant Finnish, in fact.
12:33:42 <Phantom_Hoover> elliott, of course, but 'doing your own research'?
12:33:42 <fizzie> `run words --finnish 20
12:33:48 <HackEgo> osaapuilla vaihermu hylkään ikärkeamme pärisimme aalemaksensa kallanne pystämästään imaalaamaksenne vassasitisti alkutelmän asineesi yltäni suimaksi stresseen kokeasellesi muodostani irvelaankero kärpäseni loppina
12:33:54 <fizzie> And very passable-looking Swedish for a Finn.
12:34:04 <Phantom_Hoover> Where do you look up criticism of a thing (this is an honest question; I have never been able to work this out)?
12:34:17 <fizzie> "pärisimme" = "we buzzed". (It's also a slang term for this and that.)
12:34:30 <fizzie> (And "hylkään" = "I reject".)
12:34:47 <kallisti> elliott: I've rewritten it with Storable and am also doing a lazy interpolation thing. I'm sorry you think it sucks. Maybe insane canadian english just sucks?
12:35:10 * kallisti is just waiting on the new data to finish so he can upload the changes.
12:36:08 <elliott> kallisti: Unless you are incapable of installing proprietary drivers and things like Flash in Ubuntu or Debian, Linux Mint buys you exactly nothing. It is just a stupid reskinning and rebranding with proprietary software and its own http://upload.wikimedia.org/wikipedia/commons/5/59/Mintupdate.png completely pointless http://upload.wikimedia.org/wikipedia/commons/7/75/Mint-Software-Manager.png duplicate shitty versions of software that already ex
12:36:08 <elliott> ists in its upstream distros. Also, it's not like they're offering to maintain GNOME 2; all they are doing is some shitty shell extensions that makes gnome-shell slightly more like GNOME 2, and shipping the MATE fork of GNOME 2, which is *not* Linux Mint-specific or anything, they're just packaging it. (It's already in the Arch AUR, for instance, as it's a project by (a subset of) the Arch community.)
12:36:38 <elliott> The only reason people use it is because they're the kind of people who use Ubuntu, except they hear it has Flash by default and they like the skin.
12:36:40 <fizzie> (Also "yltäni", "muodostani" and "kärpäseni" are words. Quite a high percentage that time.)
12:36:54 <kallisti> elliott: hmmm, okay.
12:37:03 <elliott> <Phantom_Hoover> Where do you look up criticism of a thing (this is an honest question; I have never been able to work this out)?
12:37:05 <elliott> Phantom_Hoover: Google "X sucks".
12:37:26 <kallisti> `run words --ogerman 25
12:37:33 <HackEgo> mark beeinblattseiträge teur sackerlicht heitellingeschichtsvorat bau gauswocherat frageerschzeitleiden übert doktagsfaktiviehuh entaubwand lobat tonne verwahlt extmarschung wegungsplander warenntlos haustralb inflanschaltwick fehlerquäle pochst laggezähnenblößer hineuwachdro kühlugließen elagt
12:37:35 <Phantom_Hoover> Not one of the results that come up first on my screen pertain to the X window system.
12:37:42 <elliott> "Ubuntu and Linux Mint adopt radically different update strategies. Ubuntu recommends its users update all packages and upgrade to newer versions using an APT-based upgrade method. Resulting problems and regressions are regarded as temporary issues that can be fixed by further updates. In comparison, Linux Mint recommends not to update packages that can affect the stability of the system and recommends the use of its Backup Tool and fresh install
12:37:43 <elliott> ations to upgrade computers to newer releases.[37]"
12:37:51 <elliott> Hahahahaha
12:37:58 <elliott> Pandering to Windows users' insecurities I see
12:38:08 <elliott> Phantom_Hoover: ...dude, X was a placeholder.
12:38:24 <kallisti> `run words --german-medical 25
12:38:24 <Phantom_Hoover> — Linux Sucks
12:38:27 <HackEgo> antin interobiets aronchinavicum vollarend abschesistersmektion neurodynaprote modarmatoms nodatiolentere antihisch neurontger heta thronchol mittentwichtungsprol l�ssentepatoreaktion desalium wundteinw�rer digemfibronal grimentratikelgebo erysmografie immungen rektorvativ tasisteomycinsultimerbe bewegene virurgischem ionen
12:38:33 <Phantom_Hoover> — Ubuntu 10.04 sucks
12:38:44 <Phantom_Hoover> — Linux Mint makes Ubuntu suck less
12:38:45 <kallisti> hmmm those characters don't show up in my font.
12:38:53 <Phantom_Hoover> — Why Linux Sucks (Less Than Before)
12:38:53 <elliott> Phantom_Hoover: What?
12:38:58 <Phantom_Hoover> — Oracle Sucks
12:39:03 <Phantom_Hoover> Are you seeing the problem here?
12:39:16 <Phantom_Hoover> Those are the top 5 results on DDG for 'linux mint sucks'.
12:39:17 <elliott> Phantom_Hoover: No, because I have no idea what you're listing, or why you think em dashes are an appropriate character to denote them with.
12:39:30 <kallisti> why the fuck is there a german medical dictionary in Ubuntu repos.
12:39:43 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=%22linux+mint+sucks%22 ;; admittedly, these aren't very good results, but they *are* about Linux Mint sucking.
12:39:48 <fizzie> kallisti: Nine out of 10 mad German scientists use Ubuntu; there's a market for it.
12:40:01 <elliott> Phantom_Hoover: Anyway, Linux Mint uses DDG by default. So clearly they've whitewashed it.
12:40:07 <elliott> Qedd.
12:40:28 <kallisti> elliott: should I maybe try Arch or will I break everything?
12:40:31 <kallisti> I bet I'll break everything.
12:40:41 <Phantom_Hoover> Wondering why I switched to DDG, struggling to come up with a good answer.
12:41:12 <elliott> kallisti: You will, yes.
12:41:30 <kallisti> elliott: but I bet there's resources on how to not break everything.
12:41:34 <elliott> kallisti: But you could use it as an opportunity to escape shitty DEs (while breaking everything).
12:41:35 <kallisti> I could LEARN STUFF YEAAAAAH
12:41:38 <elliott> And yes, there are, but you're an idiot.
12:42:03 <kallisti> I'm not completely stupid.
12:42:20 <elliott> I see.
12:42:47 <kallisti> https://wiki.archlinux.org/index.php/Official_Installation_Guide
12:42:50 <kallisti> looks promising.
12:43:15 <elliott> I'm not helping you if you fuck it up.
12:43:29 <kallisti> okay
12:43:35 <kallisti> I'll set it up on my external.
12:45:07 <elliott> Sigh, after me and another guy collectively spend paragraphs and paragraphs explaining to this guy why he doesn't want existentials, he posts again saying "hey I fixed it now, I'm gonna put it on Hackage, what do you think!!" without actually listening.
12:47:47 <kallisti> elliott: did you have any trouble with wireless?
12:47:54 <kallisti> (while installing Arch)
12:48:39 <elliott> I don't use wireless on this machine. You should plug your computer into Ethernet.
12:48:43 <elliott> At least while installing.
12:48:54 <elliott> There is no chance whatsoever the tiny livecd has any wifi drivers.
12:49:09 <kallisti> I figured.
12:49:20 <kallisti> I was going to go with core anyway, just to see if it came with wifi.
12:51:15 <elliott> kallisti: Core?
12:52:02 <fizzie> Utnubbu netinst disc didn't have drivers for my wired Ethernet; that was the strangest.
12:52:31 <elliott> People netinstall Ubuntu?
12:52:37 <kallisti> elliott: there's "net" and "core" with core supplying extra packages and net being the barebones net install.
12:53:27 <fizzie> Well I certainly wasn't going to download a DVD's worth of stuff.
12:53:31 <elliott> kallisti: Oh.
12:53:34 <elliott> kallisti: You want the netinstall.
12:53:40 <kallisti> most likely.
12:53:43 <elliott> core will just make you download everything again afterwards on the first -Syu.
12:53:52 <kallisti> I /guess/ I can walk over to an ethernet cable. sheesh. so demanding.
12:53:52 <elliott> fizzie: ...Ubuntu is a 600 meg CD ISO...
12:54:40 <kallisti> Allows you to change your editor preference. You'll have the choice between nano and vi (and pico/joe/vim if you install those in a separate console). You can skip this menu, but you will be asked again when needed.
12:54:44 <kallisti> ARCH HATES EMACS.
12:54:56 <fizzie> elliott: Well, yeah, but the 'minimal' CD is still much smaller. Anyway, the 'alternate' CD -- which is the only way to do some installations, isn't it? -- didn't have the driver either.
12:55:25 <fizzie> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/560249 -- and apparently no-one seems to be fixing it, since according to the last message 11.10 alternate CD is still lacking it.
12:55:49 <kallisti> this is a very very good installation guide.
12:56:28 <fizzie> (The "desktop" CD I think does have it, which is a bit weird.)
12:57:15 <kallisti> hmmm so I could actually just dd the image onto my external.
12:57:34 <elliott> kallisti: which would leave you unable to install it onto your external.
12:57:40 <elliott> Because the external would be being used. To install it.
12:57:52 <kallisti> right but it says the image is an Arch system
12:57:56 <kallisti> so... that would install it for me.
12:58:21 <elliott> ...
12:58:42 <elliott> kallisti: Here's my new strategy: Instead of explaining things to you, which would make me want to die, I will just say "no" whenever you should not do something for very good reasons.
12:58:46 <elliott> Here's how I start:
12:58:48 <elliott> kallisti: No.
12:59:40 <elliott> kallisti: Unless you want your system to never grow beyond ~100 megs.
12:59:49 <elliott> kallisti: And be preconfigured solely for the purpose of running an installer.
13:00:01 <elliott> And have essential system configuration not done properly because the installer does that.
13:00:04 <elliott> And ...
13:00:29 <kallisti> The images run like any regular installed Arch Linux system.
13:00:29 <kallisti> In fact, they're exactly the same, just installed to a CD or USB image instead of a hard disk.
13:00:32 <kallisti> They include the entire "base" package set, as well as various networking utilities and drivers and have the aif package installed.
13:01:25 <elliott> kallisti: Dude... stop trying to prove someone who actually runs an Arch system and has used the installer about 10 times wrong by quoting a wiki page that is intended for people trying to install the system in a normal way.
13:01:32 <elliott> Yes it is a LiveCD. Yes that's completely fucking irrelevant.
13:02:18 <elliott> The partition is a 100 megabyte CD filesystem (not anything reasonable or Linuxy), non-resizable. You will have to manually edit config files without knowing which ones you need to touch to stop it being the installation CD. It prints out "here's how to install" messages when you log in; you would have to manually remove those.
13:02:25 <elliott> There are so many fucking ways in which that is a completely terrible idea.
13:02:34 <elliott> Do it if you want but you'll be a complete idiot.
13:02:41 <kallisti> It was not so much attempting to prove you wrong as it was presenting what I saw as a discrepency.
13:04:25 <fizzie> ISO9660 filesystem, in addition to being non-resizable, is also non-writable, which might be a bit of an issue.
13:05:30 <elliott> fizzie: I thiiink it might be used to contain an image which is mounted in RAM.
13:05:41 <elliott> fizzie: At least you can install packages on it (I installed w3m and irssi to view the wiki and IRC).
13:05:47 <fizzie> Sure, if you never want to make permanent modifications to it.
13:05:56 <elliott> Right.
13:20:00 <kallisti> eng-fiction and eng-gb always finish first and then I'm stuck with eng-all, eng-1M, and eng-us for a few hours each taking about half a gig of memory.
13:23:53 <elliott> 03:30:21: <oerjan> kallisti: change of power balance, duh
13:24:01 <elliott> thank you, i wasn't sure if everyone else was as dumb as kallisti
13:24:23 -!- nooga has quit (Ping timeout: 252 seconds).
13:26:22 -!- Slereah has quit (Ping timeout: 252 seconds).
13:26:36 <elliott> 03:53:39: <zzo38> Is this the proper way to derivative of list type? newtype List' x = List' (Either (x, List' x) [x]);
13:26:57 <elliott> yes
13:27:20 <elliott> i dunno what the algorithms look like for that
13:27:35 -!- nooga has joined.
13:27:36 <elliott> but you can probably mangle it into something more traditional algebraically....
13:27:38 <elliott> *...
13:27:51 <kallisti> elliott: why would anyone seize control of power when there is /infinite amounts of energy/.. you can share it endlessly and still be infinitely prosperous.
13:27:59 <elliott> kallisti: you're an idiot
13:27:59 <elliott> also
13:28:01 <elliott> 04:15:29: <kallisti> eh I don't like LXDE
13:28:01 <elliott> 04:15:44: <Sgeo> What about .. XFCE?
13:28:02 <elliott> 04:15:47: <kallisti> nope
13:28:04 <elliott> have you even tried xfce
13:28:07 <kallisti> yes.
13:28:23 <kallisti> I believe the reasons I don't like it are the same reasons you don't.
13:28:44 <kallisti> limitations with the interface.
13:29:40 -!- Slereah_ has joined.
13:30:10 <kallisti> and I've never used LXDE but what I mean by "I don't like LXDE" is "I don't want to use LXDE on my primary computer"
13:30:52 <kallisti> because there's a good chance I won't like it.
13:31:47 -!- nooga has quit (Ping timeout: 244 seconds).
13:32:01 <elliott> lxde sucks. anyway just pacman -S cabal-install && cabal install xmonad
13:33:07 <kallisti> I'm still waiting for a day where I don't need my computer in a stable configuration and where I have lots of free time that I can devote to not having an established system.
13:33:12 <kallisti> it's taking a while.
13:33:24 <elliott> then why are you installing arch
13:33:29 <kallisti> I'm not.
13:33:31 <kallisti> yet.
13:33:42 <kallisti> I'm going to play around with it on my external and see if I like it.
13:33:47 <kallisti> later.
13:33:48 <elliott> anyway /me reinstalled and had xmonad setup basically usably within about 5 hours
13:34:10 <kallisti> that's a long time for someone who knows what they're doing.
13:36:30 <kallisti> also I'm not entirely convined I want xmonad.
13:37:03 <kallisti> but I'll likely try it out.
13:37:12 -!- sebbu2 has joined.
13:37:18 -!- sebbu2 has quit (Changing host).
13:37:18 -!- sebbu2 has joined.
13:37:54 -!- sebbu has quit (Ping timeout: 240 seconds).
13:40:56 <elliott> <kallisti> that's a long time for someone who knows what they're doing.
13:41:08 <elliott> Most of that was floundering about trying to solve a problem that was solved by a reboot.
13:41:26 <elliott> Anyway, if you don't want xmonad, don't want GNOME 3, don't want KDE, don't want Xfce, don't want LXDE, what the fuck *do* you want?
13:41:35 <kallisti> ah. reverse Windows mind virus.
13:41:55 <kallisti> well I haven't tried Gnome 3 classic, but I think that's what I want?
13:42:14 <kallisti> I guess I just got attached to Gnome 2.
13:43:22 <elliott> kallisti: GNOME 3 fallback mode is fine if you want something like GNOME 2 but worse... you know, such as Xfce.
13:43:42 <elliott> The difference being, of course, that the Xfce developers actually /care/ about their version of it, whereas GNOME's is a throwaway.
13:48:43 <kallisti> my computer is stupid hot.
13:49:18 <kallisti> the touchpad is warm. the fan vent burns a little bit.
13:50:36 -!- nooga has joined.
13:56:42 -!- Phantom__Hoover has joined.
13:57:19 <fizzie> Next: flames are shooting out of the fan vent, the keyboard keys have melted off, ...
13:57:46 <fizzie> (The technical term for that is "Extreme Computing", also called XC.)
13:57:56 <Phantom__Hoover> The case melts!
13:58:07 <Phantom__Hoover> The silicon in the components sublimes!
13:58:26 <Phantom__Hoover> The heat sinks become plasma!
13:58:53 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:59:13 -!- nooga has quit (Ping timeout: 268 seconds).
13:59:45 -!- derdon has joined.
14:14:39 <kallisti> ..
14:14:44 <kallisti> yes, all of these things are happening
14:14:46 <kallisti> and more!
14:30:12 <elliott> fizzie: The web corpus is larger than the googlebooks corpus, right?
14:30:43 <fizzie> I think it was, though not very many orders of magnitude.
14:31:49 <elliott> fizzie: 2x as big? 10x? 1000x? 4 is "not very many" :P
14:32:16 <fizzie> Well, let's check.
14:32:40 <elliott> I'm trying to decide whether to store backwards RCT data in the weird non-reversed form or not; on the one hand, it'll inflate the file by less than the 2x it would doing it the "obvious" way; on the other hand, so inconsistent! and slower to go that way.
14:32:59 <elliott> And I don't really want to have to buy a 2 terabyte external disk; do they even *exist*?
14:33:11 <elliott> Admittedly my representation will be rather more compact than PostgreSQL.
14:33:17 <elliott> So if the web corpus is ~1 terabytes there...
14:35:15 <fizzie> http://commondatastorage.googleapis.com/books/ngrams/books/googlebooks-eng-all-totalcounts-20090715.txt first field (number of unigrams read) sums up to 360717742667, that is 360 million unigrams. LDC's catalog entry says the total number of tokens for the "Web 1T" is 1,306,807,412,486. So it's about 3.6 times larger in terms of total numbers of words read in to make it.
14:35:30 <fizzie> In terms of unique tokens, the difference might be... different.
14:36:18 <elliott> fizzie: Well, "size of resulting RCT" is mostly what I care about.
14:36:33 <elliott> So "number of 5-grams" is presumably the best approximation for comparison.
14:36:39 <elliott> But yes.
14:36:51 <elliott> I guess I'll build it the big-but-fast way and measure(tm0.
14:36:52 <elliott> *tm).
14:37:21 <fizzie> Sadly, the googlebooks dataset doesn't give out a count of 5-grams.
14:37:56 <fizzie> And you can't just sum up the number of lines in those 800 cvs files, since it's got all those per-year rows.
14:38:18 <fizzie> (Plus I don't have those 800 files.)
14:43:32 -!- Ngevd has joined.
14:43:59 <Ngevd> Hello!
14:44:57 <Ngevd> fungot, hello!
14:44:58 <fungot> Ngevd: mr president, this report takes on a real and efficient internal market required that those rules already apply to average emissions from some refineries. part two of 18 and to reduce the length of the terms of the treaty, but allow me to refer to this post as ' chair' of the budget where we think it would be good to start this process.
14:45:04 <Ngevd> ^style
14:45:04 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
14:51:17 <kallisti> 09:32 < elliott> And I don't really want to have to buy a 2 terabyte external disk; do they even *exist*?
14:51:20 <kallisti> yes
14:51:28 <kallisti> (obviously etc)
14:51:49 <elliott> kallisti: Shut up, I remember 2 terabyte /internal/ disks being newfangled only a few years ago.
14:52:16 <kallisti> wow, what an old codger. get with the times, bro.
14:53:15 <kallisti> 09:24 < rottenrec> anyone here do penetration testing, copywriting, or have extensive online marketing experience ?
14:53:20 <kallisti> looooool.
14:53:26 <kallisti> I should be like "what needs penetrating
14:53:28 <kallisti> ?"
14:53:28 <lambdabot> Maybe you meant: . ? @ v
15:03:58 -!- MSleep has changed nick to MDude.
15:17:17 * Phantom__Hoover → Ireland
15:17:18 -!- Phantom__Hoover has quit (Quit: Leaving).
15:32:46 -!- incomprehensibly has joined.
15:56:34 <Gregor> elliott, kallisti: I have a 3TB internal disk :)
15:58:28 <elliott> Gregor: Enjoy bad cost:space ratio
15:58:49 <elliott> Also reduced reliability (at least ISTR hearing that the 2 terabyte disks were pretty unreliable back when they came out)
15:59:38 <Gregor> I will, thank you.
16:29:48 <Vorpal> elliott, it it cost:space efficient if you count the physical space it fills in your computer :P
16:30:22 <Vorpal> given that 2 * 1.5 TB would fill twice as much space
16:31:11 <Vorpal> also hi
16:35:24 <elliott> Hi.
16:43:25 <elliott> kallisti: ARE YOU READY
16:46:17 <fizzie> Gregor: But are you, in fact, paying for four gigabytes of prgmr?
16:47:45 <elliott> fizzie: wat
16:59:18 <elliott> fizzie is master of all wats ;_;
17:21:25 -!- oerjan has joined.
17:21:34 <Ngevd> Hello oerjan!
17:21:44 <oerjan> g'day Ngevd
17:22:40 <oerjan> <fizzie> Aw, no Norwegian? oerjan's going to be so disappointed. <-- uff da.
17:29:50 <oerjan> > let bjoin ll = case group $ map length ll of { _:_:_ -> error "Nonrectangular list"; _ -> concat $ transpose ll }; x = [[1,2],[3,4],[5,6]]; y = [[7,8],[9,10],[11,12]]; z = [[13],[14],[15],[16],[17],[18]] in [pl | pl <- permutations [x,y,z], bjoin (map bjoin pl) == bjoin (map (bjoin . map bjoin) [[x,y],[z]]]
17:29:51 <lambdabot> <no location info>: parse error on input `]'
17:30:29 <oerjan> > let bjoin ll = case group $ map length ll of { _:_:_ -> error "Nonrectangular list"; _ -> concat $ transpose ll }; x = [[1,2],[3,4],[5,6]]; y = [[7,8],[9,10],[11,12]]; z = [[13],[14],[15],[16],[17],[18]] in [pl | pl <- permutations [x,y,z], bjoin (map bjoin pl) == bjoin (map (bjoin . map bjoin) [[x,y],[z]]) ]
17:30:31 <lambdabot> *Exception: Nonrectangular list
17:30:35 <oerjan> argh
17:31:48 <oerjan> > let bjoin ll = case group $ map length ll of { _:_:_ -> error $ "Nonrectangular list " ++ show ll; _ -> concat $ transpose ll }; x = [[1,2],[3,4],[5,6]]; y = [[7,8],[9,10],[11,12]]; z = [[13],[14],[15],[16],[17],[18]] in [pl | pl <- permutations [x,y,z], bjoin (map bjoin pl) == bjoin (map (bjoin . map bjoin) [[x,y],[z]]) ]
17:31:50 <lambdabot> *Exception: Nonrectangular list [[1,7,3,9,5,11,2,8,4,10,6,12],[13,14,15,16,...
17:32:43 <oerjan> > let bjoin ll = case group $ map length ll of { _:_:_ -> error $ "Nonrectangular list " ++ show ll; _ -> concat $ transpose ll }; x = [[1,2],[3,4],[5,6]]; y = [[7,8],[9,10],[11,12]]; z = [[13],[14],[15],[16],[17],[18]] in [pl | pl <- permutations [x,y,z], bjoin (map (bjoin . map bjoin) pl) == bjoin (map (bjoin . map bjoin) [[x,y],[z]]) ]
17:32:44 <lambdabot> No instance for (GHC.Num.Num [a])
17:32:44 <lambdabot> arising from a use of `e_1123456789101...
17:32:57 <oerjan> wat
17:34:07 <Gregor> <fizzie> Gregor: But are you, in fact, paying for four gigabytes of prgmr? // 25GB
17:34:23 <Gregor> And I'm paying for the server, not the HD, although I keep running out.
17:46:38 <elliott> {-# LANGUAGE TypeOperators, Arrows, TypeFamilies, FlexibleContexts, GADTs, RankNTypes #-}
17:46:41 <elliott> Awww yeah
17:50:41 -!- PiRSquaredAway has changed nick to PiRSquared17.
18:05:33 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
18:09:36 -!- azaq23 has joined.
18:10:08 <fizzie> Gregor: I meant RAM.
18:12:03 <fizzie> <fizzie> HackEgo's on a prgmr VPS, isn't it? Those aren't exactly well-known for their computational power, at least the low-memory ones. (CPU scheduling weights equal RAM amounts.)
18:12:04 <fizzie> <fizzie> Though who knows, maybe Gregor's paying for four gigabytes or something.
18:18:45 <elliott> fizzie: They're not that bad at computational power...
18:19:04 <fizzie> Not *bad*, but not good either; I've seen benchmarks.
18:19:05 <elliott> fizzie: They're a bit slower than Linode when congestion is low, and a hell of a lot more reliable under congestion.
18:19:13 <elliott> I am basing this on an Actual Benchmark(tm) I saw once.
18:19:27 <fizzie> I've seen some benchmarks by disinterested third parties.
18:19:30 <elliott> fizzie: http://journal.uggedal.com/vps-performance-comparison/
18:19:48 <fizzie> That looks very familiar.
18:20:32 <fizzie> Anyway, first graph: Unixbench single process score, it's... somewhere a bit over 200, vs. Linode's 723.
18:20:35 * elliott is summarising the results without re-reading them, though, so the passing of time may have made his reporting shoddy.
18:21:08 <elliott> fizzie: Here's one that talks about peak-vs-whatever performance: http://journal.uggedal.com/vps-comparison-between-slicehost-and-prgmr/
18:21:11 <elliott> Just slicehost vs. prgmr, though.
18:21:19 <elliott> And slicehost are slow as shit.
18:21:28 <fizzie> Yeah, and also very variable.
18:21:44 <elliott> Hmm, that actually shows prgmr slower than slicehost during congestion :)
18:21:51 <elliott> I say: Too many variables.
18:22:25 <elliott> fizzie: Anyway, prgmr also happen to be very generous with RAM at the price-points they're at, so it's a bit of an unfair comparison.
18:23:02 <fizzie> Anyway, since prgmr CPU scheduler is weighted by ram size, if you have 256M out of a 32G server, that's one 128th of a (admittedly several-core) server if you happen to get neighbours who mine bitcoins all day.
18:23:12 <elliott> Linode 512 megs RAM, 20 gigs storage, 200 gigs traffic, $19.95/mo; prgmr 1024 megs RAM, 24 gigs storage, 160 gigs traffic, $20/mo; prgmr would have to be pretty darn slow not to come out on top there.
18:23:21 <fizzie> They're certainly very efficient if you start counting $s, that's very sure.
18:23:22 <elliott> (Or maybe you have a really easy-to-serve but massive-traffic website and those 40 gigs are everything. :p)
18:23:52 <elliott> fizzie: They don't pack their servers that much
18:23:56 <elliott> Their blog has server specs, IIRC
18:24:08 <elliott> I don't recall hearing anything about 32 gig monsters :)
18:24:35 <elliott> http://blog.prgmr.com/xenophilia/2011/05/i-am-replacing-table-tonight.html ;; this talks about RAM sizes.
18:24:51 <elliott> So more like 16 gigs than 32.
18:25:02 <elliott> And >4 cores, at least that machine is.
18:25:40 <elliott> fizzie: Also I'm not sure how acceptable mining bitcoins 24/7 would be:
18:25:41 <elliott> 9. To knowingly engage in any activities designed to harass, or that will cause a denial-of-service (e.g., synchronized number sequence attacks) to any other user whether on the prgmr.com network or on another provider's network is prohibited.
18:25:41 <elliott> 10. Using prgmr.com's Services to interfere with the use of the prgmr.com network by other customers or authorized users is prohibited.
18:25:44 <elliott> but of course these things are vague as always.
18:28:08 <elliott> fizzie: (Also a VPS sounds really suboptimal for mining bitcoins, since they don't usually have beefy GPUs. :p)
18:29:52 <elliott> 09:43:45: <fizzie> I just picked whatever elliott's "mchost" had for the low-level.
18:29:55 <elliott> fizzie: It's the cereal package.
18:30:48 <fizzie> Anyhoo, my 256M virtubox is on an Opteron 6128, apparently, so 8 cores, but I don't suppose a Xen domU can really ask the dom0 about how much physical memory the box in total has.
18:31:03 <fizzie> load average: 0.00, 0.00, 0.00 - I'm also a very polite neighbour for someone.
18:33:14 <elliott> fizzie: Who's that with, prgmr?
18:33:27 <elliott> I would check pyralspite's load, but that would require emailing prgmr saying "I lost my ssh key /again/"
18:33:27 <fizzie> Yes, the VPS provider of champions.
18:33:31 <elliott> and I think they'd start to get suspicious.
18:34:25 <fizzie> I had sort-of narrowed it down to prgmr and buyvm, and, well, http://www.doesbuyvmhavestock.com/
18:34:33 <fizzie> (The answer is always "no".)
18:34:39 <elliott> 10:45:31: <kallisti> yes, because when that happens it means you matched the length from the histogram while also landing on a space to ensure a smooth word ending.
18:34:42 <fizzie> (Also they seemed a bit weird.)
18:34:46 <elliott> kallisti: I'm glad you're finally starting to see the genius of my scheme.
18:35:08 <elliott> fizzie: Those people look a bit "fly-by-wire", to steal Gregor's terminology.
18:35:26 <elliott> Oh, OpenVZ.
18:35:31 <elliott> Why did you consider these people?
18:35:32 <fizzie> They do Xen too.
18:35:42 <fizzie> Sorry, KVM.
18:35:57 <elliott> Yes, but they're still OpenVZ people. :p
18:36:03 <elliott> THE MARK CANNOT BE ERASED.
18:36:04 <fizzie> Mmmaybe.
18:36:20 <elliott> Also they support Windows.
18:36:42 <fizzie> Apparently (in the words of someone else) they have a bit of a cult following.
18:36:49 <elliott> fizzie: I was expecting that doesbuyvmhavestock.com to be one of those single-purpose websites with a big "NO" because, um, they're a publicly traded company and people never sell their stocks or something?
18:39:18 <fizzie> The "is it friday?" infoscreen in the lobby of our CS building had been changed into an "is it christmas?" infoscreen. Seasonal.
18:47:07 <elliott> "buyvm.net borders on a cult (in a good way). They only release stock when they feel they can adequately support it, and when they announce stock is coming, people watch countdown pages and hang out on their IRC channel, salivating. Once stock is released, it’s often gone within an hour.
18:47:07 <elliott> The reason for this Apple-store-like behavior is that they are one of the best budget providers. Good plans, sterling reputation, and they participate on WHT. You won’t find the smoking performance of a 6sync or linode here, but you will find solid nodes that don’t bounce and good service (for a budget provider)."
18:47:15 <elliott> fizzie: These people wack, yo.
18:47:44 -!- Ngevd has quit (Quit: Goodbye).
18:57:16 <fizzie> That's probably where I got the "cult" from.
19:20:40 <elliott> oerjan: btw i was thinking about how you said the reflection package looked kinda inefficient to you
19:21:00 <oerjan> yes
19:21:19 <elliott> oerjan: I think it's probably not that bad, at least if what I'm imagining is its implementation strategy, because I've thought of a simplified version that seems obviously fast to me :)
19:22:28 <elliott> (a) use data Pointer x0 x1 x2 ... x63, data O, data I to represent pointers; (b) use runtime hackery to get a pointer directly to the thunk, rather than having to allocate storage for it (although ForeignPtrs don't have that much overhead to my understanding so it shouldn't matter much)
19:22:29 * Gregor reappears.
19:22:32 <Gregor> fizzie: Dood, PRGMR.
19:22:34 <Gregor> PRGMR RULES
19:22:45 <elliott> obviously that fixes you to one pointer bit-width, but while we're being this unportable...
19:23:07 <Gregor> fizzie: Anyway, HackEgo is slow because HackEgo is slow.
19:23:28 <elliott> Gregor: Transactional HackEgo wouldn't be >:) >:) >:)
19:23:34 <Gregor> elliott: WAITIN'
19:23:41 <elliott> fizzie: Hey, how do I insert "xN " for N in [0,64) in emacs, thx
19:23:49 <elliott> Gregor: YOU WANTED ME TO TEST IT MYSELF
19:24:17 <oerjan> elliott: you still have to actually construct a class dictionary encoding a bit pattern for your pointer
19:24:47 <elliott> oerjan: hmm... let me try and implement this, 'cuz maybe i'm missing something :P
19:24:55 <Gregor> elliott: WAITIN'
19:25:25 <Gregor> fizzie: Anyway, I pay $20/mo for the 1GB plan. Neither an unbelievable nor terrible deal.
19:26:02 <elliott> http://xah-forum.blogspot.com/2009/10/emacs-inserting-numbers-into-column-of.html NO XAH
19:26:03 <elliott> I'M NOT
19:26:04 <oerjan> elliott: oh and you need the pointer to be stable, obviously, or intervening gc can crash your implementation...
19:26:07 <elliott> USING YOUR FUNCTION TO ACCOMPLISH THIS SIMPLE TASK
19:26:34 <elliott> oerjan: well yes. although i can think of fun ways around that :)
19:29:18 -!- NihilistDandy has joined.
19:32:25 <elliott> oerjan: hm it occurs to me that there is no standard way to get the integer value out of a pointer
19:32:43 <elliott> oh, wait
19:32:44 <elliott> Ptrs are Storable
19:32:47 <elliott> never mind :)
19:38:22 -!- DCliche has quit (Quit: You are now graced with my absence.).
19:39:10 -!- Klisz has joined.
19:42:17 <zzo38> Do you think wii remote would be good input device for computer pinball game? That way, you can push the table at different strength and angle
19:43:05 <NihilistDandy> It seems like it would be really easy to cause a tilt
19:43:25 <NihilistDandy> The accelerometer always seems a little sensitive
19:44:23 <zzo38> NihilistDandy: Yes, it probably would be easy to cause a tilt, especially if tilting the controller would do that. You could correct sensitivity in software, possibly even add physical mass to make it harder to push if necessary, and you could do other things
19:47:23 -!- PiRSquared17 has quit (Changing host).
19:47:23 -!- PiRSquared17 has joined.
19:48:10 -!- PiRSquared17 has quit (Changing host).
19:48:10 -!- PiRSquared17 has joined.
19:48:13 <elliott> 40 over 4.21 :(
19:53:55 -!- pikhq has joined.
19:53:57 -!- pikhq_ has quit (Ping timeout: 252 seconds).
19:56:08 <elliott> oerjan: gah this type hackery is tricky
20:10:44 -!- GreaseMonkey has joined.
20:11:54 -!- oerjan has quit (Quit: Good night).
20:39:00 -!- pikhq_ has joined.
20:39:14 -!- pikhq has quit (Ping timeout: 252 seconds).
20:40:57 <zzo38> I read something about "monadish" which seems like a monad combined with a category somehow. return :: m a a x; join :: m a b (m b c x) -> m a c x; (>>=) :: m a b x -> (x -> m b c y) -> m a c y;
20:41:40 <zzo38> fmap would be the same as the ordinary fmap, so it is still an ordinary functor, I think
20:43:02 <zzo38> And then, can you make comonadish? extract :: w a a x -> x; duplicate :: w a c x -> w a b (w b c x);
20:43:42 <zzo38> Does that seem correct? I don't know.
20:44:33 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:45:30 <copumpkin> zzo38: indexed monad
20:45:59 <copumpkin> zzo38: but yeah, I think your thing would be an indexed comonad
20:46:14 <zzo38> copumpkin: O, OK, then.
20:47:22 <zzo38> How do indexed monads work?
20:47:36 <zzo38> What is there example?
20:52:17 -!- sebbu2 has changed nick to sebbu.
21:17:35 <copumpkin> a state monad whose state type can change
21:17:43 <copumpkin> or something that tracks whether a file descriptor is open or not
21:22:25 -!- incomprehensibly has quit (Quit: Leaving.).
21:22:48 <elliott> zzo38: http://personal.cis.strath.ac.uk/~conor/Kleisli.pdf
21:23:00 <elliott> is relevant.
21:23:03 <elliott> if it's the one i'm thinking of :P
21:41:05 -!- pikhq has joined.
21:43:58 -!- pikhq_ has quit (Ping timeout: 252 seconds).
22:01:24 -!- Sgeo has joined.
22:10:47 -!- monqy has joined.
22:10:47 <elliott> kallisti: My unending superiority to you continues
22:20:32 <kallisti> how's that?
22:28:09 -!- pikhq_ has joined.
22:28:57 <elliott> kallisti: I'm currently 2471 units of betterer than you.
22:29:02 -!- pikhq has quit (Ping timeout: 248 seconds).
22:34:18 <Gregor> Tell me about y'all's traditional Christmas dinners.
22:36:17 -!- Sgeo has quit (Read error: Connection reset by peer).
22:38:40 <elliott> Gregor: Is this, like, Jewish cultural studies?
22:39:04 <elliott> "YOUR ASSIGNMENT IS TO FIND OUT WTF THOSE WEIRD CHRISTIANS DO ON CHRISTMAS."
22:41:39 <kallisti> Gregor: consumerism.
22:41:47 <elliott> -- kallisti, consumerist
22:41:56 <fizzie> Gregor: Our traditional Christmas food (I think it's the third or fourth time now) is tortillas with this ground-beef/bell-pepper/red-onion/assorted-spices/salsa filling. Very seasonal and Finnish.
22:42:32 -!- Sgeo has joined.
22:43:38 <elliott> fizzie: I...
22:47:42 <elliott> http://hpaste.org/55661
22:47:44 <elliott> BEHOLD, MORTALS!!!
22:48:40 * Sgeo ponders writing a password-protected State monad
22:48:58 <elliott> BEHOLD!!! MORTALS!!!
22:49:05 * Sgeo wtfs at elliott's code
22:49:08 <monqy> beholdi--what
22:49:13 <Sgeo> I assume you wrote code that wrote that?
22:49:31 <elliott> no... well the data Txx and instance ReifyBit Txx yes
22:49:36 <elliott> but the rest is hand-written
22:49:44 <elliott> oh and the reifyBit
22:49:45 <elliott> i.e.
22:49:50 <elliott> all the ones that are just lines with numbers
22:49:53 <elliott> but everything else is me
22:49:59 <Sgeo> I can't help but think that this is an area where a Lisp-like would shine
22:50:12 <elliott> oh i could have templatehaskelled it easily
22:50:15 <elliott> perl was just easier
22:50:17 <monqy> liskell (canned laughter)
22:50:21 <elliott> anyway
22:50:28 <elliott> lisp isn't amazing enough to do the things i did /after/ the autogenerated code
22:50:36 <elliott> which is the part you're meant to wtf at dammit you're all so shallow
22:50:57 <monqy> i tried reading it but my eyes glazed over maybe i will try harder next time
22:51:05 <Sgeo> I vaguely know the reflection stuff turns values into types and types into values or something
22:51:19 <Sgeo> So, I'm guessing that this turns arbitrary data into a type?
22:51:27 <elliott> this is my own implementation of the reflection stuff
22:51:28 <elliott> with
22:51:31 <elliott> MOAR SPEED!!! theoretically
22:51:34 <elliott> which means
22:51:35 <elliott> MOAR UNSAFE!!!
22:51:54 <elliott> Sgeo: well it stuffs the value you give it into a pointer
22:51:59 <elliott> a pointer is just 8 bytes (on 64-bit machines)
22:52:05 <elliott> T00 to TFF represent a byte
22:52:10 <elliott> so it just assembles
22:52:19 <elliott> (Address a T00 T11 T22 T33 T44 T55 T66 T77)
22:52:22 <elliott> where a is the value type
22:52:27 <elliott> and the rest are the bytes of the pointer
22:52:35 <elliott> then the Reify instance does the rest
22:52:41 <elliott> i.e. turning it back into the bytes
22:52:44 <elliott> coercing them to a pointer
22:52:47 <elliott> reading it
22:52:48 <elliott> and freeing it
22:56:56 <Gregor> fizzie: Thank you for your legitimate answer that's not what elliott and kallisti answered.
22:57:08 <kallisti> I answered something?
22:57:14 <kallisti> oh
22:57:15 <kallisti> yes
22:57:16 <kallisti> I did.
22:57:22 <Gregor> elliott, kallisti: I ask because the traditional meal in the USA is very much the same as the traditional Thanksgiving meal in the USA; that is, turkey. I assume it's not that elsewhere.
22:57:52 <kallisti> I never eat turkey for christmas
22:58:08 <kallisti> in fact I don't even think we do like...a christmas dinner that's any kind of specific thing.
22:58:39 <fizzie> Gregor: Oh, if you wanted the actual traditional Finnish thing, it's the roast ham (with this mustard cover thingie), but quite often in this modern multicultural days it can be turkey too.
22:59:21 <elliott> Gregor: Well, turkey for Christmas is definitely a Thing here, yes.
23:00:11 <kallisti> loooool regex in Python
23:00:12 <kallisti> so lame.
23:00:18 <kallisti> needs moar perl codez
23:00:23 <elliott> Gregor: I suspect the Americans were unable to come up with a new meal for their new holiday, presumably on account of being fucking idiotic enough to attempt to declare Genocide: The National Holiday.
23:00:28 <elliott> So they just stole Christmas.
23:00:37 <elliott> 's traditional dinner.
23:00:48 <kallisti> at least it's not like PHP where your matches are preggo.
23:00:51 <elliott> fizzie: What about a... turkey fajita?
23:01:01 <elliott> Gregor: "Christmas dinner is the primary meal traditionally eaten on Christmas Eve or Christmas Day. Christmas dinner around the world may differ and the traditions present below can reflect the culture of the respective country it is being celebrated in. Turkey is present in a fair number of these meals."
23:01:04 <elliott> Gregor: A fair number, yo.
23:01:16 <Gregor> A fair number in-deeeed.
23:01:18 <elliott> "Christmas dinner in Australia is based on the traditional English version.[1] However due to Christmas falling in the heat of the Southern Hemisphere's summer, meats such as ham, turkey and chicken are sometimes served cold with cranberry sauce, accompanied by side salads or roast vegetables."
23:01:20 <Gregor> However, turkey is an American bird.
23:01:27 <elliott> AUSTRALIA YOU JUST CAN'T HAVE CHRISTMAS OKAY, ACCEPT IT
23:01:45 <elliott> Gregor: That's what they *want* you to think.
23:01:48 <fizzie> Then there's a set of I-think-they're-vaguely-Finnish-in-that-they're-not-exactly-the-same-things-elsewhere set of casserole-style dishes (carrot, rutabaga, I forget the third one), and this beetroot-based totally-all-red salad called "rosolli"; it's got beetroot, carrots, potatoes, apples, pickled cucumber; maybe other stuff.
23:01:48 <elliott> It actually came from Finland.
23:02:01 <fizzie> Actually why on earth am I listing them when http://en.wikipedia.org/wiki/Joulup%C3%B6yt%C3%A4 does it far more concisely?
23:02:03 <Gregor> It's sort of like how all Italian food is actually just derivative American food what with the tomatotrololol.
23:02:31 <elliott> kallisti: If you want to catch up with me better start writing AWESOME ANSWERS like http://stackoverflow.com/questions/8616861/purity-of-functions-generating-bytestring-or-any-object-with-foreignptr-compone/8616941#8616941!!!!!!!!!!!!
23:03:23 -!- iconmaster has joined.
23:03:48 -!- PiRSquared17 has quit (Quit: ChatZilla 0.9.88 [Firefox 8.0.1/20111120135848]).
23:04:04 <elliott> Gregor: "In England, the evolution of the main course into turkey did not take place for years, or even centuries. At first, in medieval England, the main course was either a peacock or a boar, the boar usually the mainstay. The turkey appeared on Christmas tables in England in the 16th century,[6] and popular history tells of King Henry VIII being first English monarch to have turkey for Christmas."
23:04:59 <iconmaster> Yeah that makes sense for Henry VIII
23:05:07 <iconmaster> And hi all
23:05:52 <fizzie> "A Christmas ham or Yule ham is a traditional ham dish associated with modern Christmas, Yule and Fennoscandian Jul. The tradition is suggested to have begun among the Germanic peoples as a tribute to Freyr, a god in Germanic Paganism associated with boars, harvest and fertility.[1] It was later popularized by the Catholic Church as a test of truthful conversion from Judaism. Backsliding Marranos would decline to eat the Christmas ham, while authentic c
23:05:52 <fizzie> onverts could enjoy the pig meat with equanimity." <- Crafty Christians.
23:07:21 <Gregor> Maaaaaaaan.
23:07:26 <Gregor> Should've made boar curry instead of turkey curry.
23:07:33 <fizzie> Bear curry.
23:07:43 <fizzie> Haskell curry.
23:08:28 <Sgeo> elliott, do you think Template Haskell is LamE?
23:08:36 <monqy> sgeo..........................
23:09:47 <Sgeo> :t Template.Haskell.TH.LamE
23:09:47 <lambdabot> Couldn't find qualified module.
23:09:53 <Sgeo> erp
23:09:58 <Sgeo> :t Language.Haskell.TH.LamE
23:09:59 <lambdabot> [Language.Haskell.TH.Syntax.Pat] -> Language.Haskell.TH.Syntax.Exp -> Language.Haskell.TH.Syntax.Exp
23:12:01 <elliott> fizzie: Did you read my code??? I WORKED HARD ON THIS YOU GUYS
23:12:27 <NihilistDandy> > curry bear
23:12:27 <lambdabot> Not in scope: `bear'
23:13:04 <kallisti> elliott: did you answer that awesome thing I linked you?
23:13:22 <elliott> kallisti: What thing?
23:13:26 <elliott> Oh.
23:13:26 <elliott> No.
23:13:32 <kallisti> do it. mad rep, dawg.
23:13:40 <elliott> Hmm, how can I avoid the whole StablePtr business...
23:18:32 <elliott> Wooo another upvote
23:18:40 <elliott> RISIN' ABOVE YOU KALLISTI
23:18:42 <elliott> RISIN' HIGHER
23:18:42 <NihilistDandy> That was me :P
23:18:58 <elliott> Awwwwwwww yeah
23:19:02 <elliott> My very own cabal
23:19:14 <NihilistDandy> I have no idea what kallisti's is
23:19:27 <elliott> I HOPE YOU UPVOTED ME ON MERIT AND NOT IDENTITY
23:19:30 <elliott> Also huh?
23:20:46 <NihilistDandy> On merit, yes
23:21:03 <NihilistDandy> The thing to which kallisti linked you
23:21:10 <NihilistDandy> I have no idea what it is
23:21:38 <kallisti> it's an opportunity to ramble about the differences between functional and imperative programming and possibly get some rep as a result.
23:21:49 <elliott> NihilistDandy: Oh. Some terrible question that was already answered.
23:22:06 <NihilistDandy> Link?
23:22:24 <NihilistDandy> I love SO because it's like c2 without all the TopMind
23:23:07 <NihilistDandy> Also, active
23:24:01 <fizzie> elliott: Also it's out of the bag now: http://www.open-std.org/jtc1/sc22/wg14/ "News 2011-12-19: New revision of ISO/IEC 9899:2011 C standard (C11) published"
23:24:40 <elliott> NihilistDandy: Ask kallisti for the link :P
23:24:45 <elliott> <lambdabot> kallisti said 8h 19m 25s ago: A FP vs. imperative question. Have fun http://stackoverflow.com/questions/8611211/differences-in-separation-of-static-and-stateful-code-in-different-languages
23:24:46 <elliott> Or that.
23:24:53 <elliott> fizzie: C11 is a cat?
23:25:33 <fizzie> You can certainly implement a cat in it.
23:26:12 <elliott> NihilistDandy: I love SO because IT'S LIKE CRACK.
23:26:15 <NihilistDandy> printf("meow")
23:26:32 <NihilistDandy> Wikipedia should implement a point system
23:27:18 <elliott> My incredibly accurate extrapolation tells me that I should have 91,688 reputation in a mere year.
23:27:30 <elliott> *accurate and scientific
23:28:12 <NihilistDandy> epeen.se
23:28:21 <kallisti> NihilistDandy: it has one. It's called "edit count"
23:28:25 <elliott> http://epeen.se/ 404 ;__;
23:28:27 <kallisti> and various subsets of that.
23:28:32 <kallisti> based on namespace
23:29:10 <kallisti> the Wiki tribes take great pride in their individal edit counts, using them as a means to structure their hierarchical society.
23:29:15 <NihilistDandy> elliott: I'll have to get on Area 51 and fix that
23:29:55 <pikhq_> GOD MOTHERFUCKING DAMMIT BUSYBOX
23:30:10 <pikhq_> THERE IS NO REASON FOR "-f" TO BE AN INVALID ARGUMENT FOR POWEROFF.
23:30:25 <pikhq_> I HAVE THE CODE RIGHT HERE. "-f" IS IMPLEMENTED. THERE ARE NO IFDEFS.
23:30:26 <pikhq_> WORK.
23:31:40 <elliott> NihilistDandy: Oh, .stackexchange :P
23:31:45 <elliott> I thought you were just Swedish or something.
23:31:56 <elliott> Maybe StackExchange should buy the .se TLD.
23:32:05 <elliott> pikhq_: You probably have a newer version of the code than you're running.
23:32:26 <NihilistDandy> :P
23:32:26 <elliott> pikhq_: Really though, BusyBox coreutils? Why?
23:32:40 <pikhq_> elliott: I'm actually looking at the tarball I just compiled this out of.
23:33:35 <elliott> I think busybox has some screwy non-ifdef config stuff too.
23:33:37 <elliott> I may be wrong.
23:33:50 <pikhq_> It's kconfig.
23:36:53 <elliott> That's ifdef.
23:37:22 <pikhq_> Yup.
23:37:57 <elliott> :t (****)
23:37:58 <lambdabot> Not in scope: `****'
23:38:04 <elliott> :t toChurch
23:38:04 <lambdabot> Not in scope: `toChurch'
23:38:08 <elliott> :t evalCont
23:38:09 <lambdabot> Not in scope: `evalCont'
23:38:10 <elliott> Right.
23:38:24 <Sgeo> @let elliott = error "Attempted to describe elliott"
23:38:25 <lambdabot> Defined.
23:38:29 <Sgeo> :t elliott
23:38:30 <lambdabot> forall a. a
23:38:43 <elliott> @undefine
23:40:55 <pikhq_> Ahah.
23:44:06 <pikhq_> Musl bug.
23:45:14 <elliott> pikhq_: In what... strcmp? :P
23:45:21 <pikhq_> elliott: reboot
23:45:44 <pikhq_> The libc call reboot is int reboot(int cmd), right?
23:46:01 <pikhq_> musl implements that as just syscall(SYS_reboot, cmd);
23:46:15 <elliott> pikhq_: The glibc call, yes.
23:46:25 <elliott> SYNOPSIS
23:46:25 <elliott> /* For libc4 and libc5 the library call and the system call
23:46:25 <elliott> are identical, and since kernel version 2.1.30 there are
23:46:25 <elliott> symbolic names LINUX_REBOOT_* for the constants and a
23:46:25 <elliott> fourth argument to the call: */
23:46:26 <elliott> #include <unistd.h>
23:46:28 <elliott> #include <linux/reboot.h>
23:46:28 <pikhq_> Problem is, the Linux syscall reboot expects a couple magic values.
23:46:30 <elliott> int reboot(int magic, int magic2, int cmd, void *arg);
23:46:32 <elliott> /* Under glibc some of the constants involved have gotten
23:46:34 <elliott> symbolic names RB_*, and the library call is a 1-argument
23:46:36 <elliott> wrapper around the 3-argument system call: */
23:46:38 <elliott> #include <unistd.h>
23:46:40 <elliott> #include <sys/reboot.h>
23:46:42 <elliott> int reboot(int cmd);
23:46:44 <elliott> pikhq_: Depending on the haeder you include.
23:46:46 <elliott> *header
23:48:21 <kallisti> hm
23:49:52 -!- Madoka-Kaname has joined.
23:50:01 <pikhq_> elliott: The LINUX_REBOOT_MAGIC stuff is just so goddamned stupid.
23:55:23 -!- Patashu has joined.
23:55:49 <elliott> pikhq_: I presume it's to avoid accidentally executing garbage which reboots the system
23:55:55 <elliott> Or something
23:55:58 <elliott> Garbage = random data bytes
23:56:59 <pikhq_> No, it's a motherfucking easteregg.
23:59:09 <pikhq_> MAGIC1 is 0xfee1dead, MAGIC2 is Linus' birth date, MAGIC2{A,B,C} are the birth dates of his kids.
23:59:39 <kallisti> oh.....
23:59:40 <kallisti> duh
23:59:41 <kallisti> wow
23:59:43 <kallisti> hahahaha
23:59:57 <kallisti> GUYS IF YOU ACCIDENTALLY LEXICALLY SCOPE SOMETHING IT'S NOT GOING TO PACKAGE SCOPE
2011-12-24
00:07:43 <elliott> pikhq_: I know the values are meaningful, but I don't think they exist just to be an easter egg.
00:10:02 <elliott> pikhq_: P.S. Admire http://hpaste.org/55661 or die.
00:11:37 <pikhq_> What.
00:12:16 <elliott> pikhq_: Yes, that's the title of the paste.
00:12:56 <elliott> pikhq_: Example usage: reify "hello" (\p -> reflect p ++ reflect p)
00:13:19 <NihilistDandy> what
00:13:33 <elliott> NihilistDandy: Yes!
00:13:45 <kallisti> elliott: I find that people often don't admire my code as much as I do.
00:14:06 <elliott> kallisti: Have you ever written anything as amazing as *that*?
00:14:08 <NihilistDandy> @hoogle Data.Proxy
00:14:09 <lambdabot> package alloy-proxy-fd
00:14:18 <kallisti> elliott: I don't really know what's going on so maybe?
00:14:21 <elliott> NihilistDandy: data Proxy s = Proxy
00:14:25 <Patashu> so
00:14:26 <Patashu> what am I looking at
00:14:29 <elliott> newtype Tagged s a = Tagged a
00:14:31 <elliott> see@
00:14:32 <elliott> see
00:14:33 <elliott> @hackage tagged
00:14:33 <lambdabot> http://hackage.haskell.org/package/tagged
00:14:38 <elliott> Patashu: the most beautiful thing ever
00:14:47 <kallisti> so you made reify more awesome somehow?
00:14:48 <Patashu> looks like something that would appear on dailywtf
00:14:53 * kallisti hasn't looked at the code at all.
00:15:03 <elliott> kallisti: i gave it MORE SPEED. click the link or die
00:15:11 <Patashu> oh
00:15:12 <Patashu> it's faster
00:15:18 <Patashu> it looks like a candidate for metaprogramming btw
00:15:20 <elliott> It's SO FAST. Well, I haven't actually measured it.
00:15:20 <kallisti> is reify a bottleneck?
00:15:22 <Patashu> write a program that generates that
00:15:24 <elliott> But I took a glance at the resulting Core!
00:15:43 <elliott> Patashu: I did, it's called a few lines of Perl commands in my shell history. But the WTF part is the part below all the repetitive stuff.
00:16:15 <Patashu> oh good
00:16:41 <Patashu> woah
00:16:45 <Patashu> is that a stacked case
00:16:48 <Sgeo> elliott, update
00:16:56 <Sgeo> From :56 my time
00:17:15 <elliott> Patashu: ZOMG a stacked case!
00:17:46 <elliott> kallisti: Anyway, I don't care whether it's a bottleneck or not, the existing version converts pointers into type-level linked list of type-level naturals and that just won't do.
00:18:42 -!- copumpkin has quit (Ping timeout: 248 seconds).
00:22:23 <NihilistDandy> That Core is not fun to read
00:24:26 -!- incomprehensibly has joined.
00:24:44 -!- incomprehensibly has changed nick to micahjohnston.
00:25:12 <elliott> NihilistDandy: Did you use -O2? You should use -O2.
00:25:15 <elliott> It adds the fast to it.
00:25:27 * elliott has not even looked at the core without -O2.
00:25:51 <NihilistDandy> I just opened it up in emacs and loaded the Tidy Core
00:26:13 <elliott> Oh, it's not all that bad without -O.
00:26:16 <elliott> NihilistDandy: cabal install ghc-core, man.
00:26:27 <NihilistDandy> Yeah, I've been using that, too
00:26:52 <NihilistDandy> Though when I was trying to explain Core to someone I had to give them an example of Ext Core just to keep them from dying
00:28:26 <elliott> What's Ext Core look like, I've only used ghc-core.
00:28:50 <NihilistDandy> use -fext-core
00:29:02 <elliott> GOD, I am so lazy, you know! Fiiine.
00:29:02 <NihilistDandy> It's all z-encoded and simple. Though GHC can't run it, anymore
00:29:45 <elliott> That's, um.... readable :P
00:30:11 <elliott> It's not that bad, really.
00:30:31 <elliott> Hmm, I should try GHC 7.3 so I can do this with the new type-level naturals.
00:30:43 <elliott> That would be a lot shorter, presumably.
00:30:54 <elliott> Since I expect they use machine words under the hood I could just pack it directly.
00:31:04 <NihilistDandy> What do you pass to ghc-core to make this work? I haven't used it much
00:31:32 <elliott> NihilistDandy: ghc-core -- -O2 foo.hs
00:31:35 <elliott> Or just ghc-core foo.hs
00:31:40 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2
00:31:42 <elliott> If you want the PANSY version.
00:31:48 -!- copumpkin has joined.
00:32:22 <kallisti> HackEgo: fetch faster
00:32:28 <kallisti> `ls
00:32:29 <NihilistDandy> elliott: I think it can be demonstrated that I do not :D
00:32:32 <HackEgo> Data.tar.bz2 \ Data.tar.bz2.1 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:32:35 <kallisti> oh
00:32:43 <elliott> kallisti: It's not finished downloading.
00:32:49 <Gregor> `run du -h Data.tar.bz2
00:32:52 <HackEgo> 8.9M.Data.tar.bz2
00:33:04 <elliott> NihilistDandy: So how likely are you to be able to answer my low-level GHC hackery internals question :P
00:33:10 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
00:33:13 <HackEgo> 2011-12-24 00:33:13 URL:http://dl.dropbox.com/u/16495819/words.pl [4313/4313] -> "words.pl" [1]
00:33:23 <elliott> kallisti: It's not finished downloading.
00:33:30 <kallisti> elliott: CONCURRENCY BRA
00:33:31 <NihilistDandy> elliott: Not especially likely, but who knows? I've been known to be vaguely insightful
00:33:40 <NihilistDandy> Or say something dumb enough that someone has a stroke of insight
00:33:47 <NihilistDandy> Potato, potato
00:33:56 <kallisti> `run chmod +x words.pl && mv words.pl bin/words
00:34:00 <HackEgo> No output.
00:34:21 <Gregor> `run du -h Data.tar.bz2
00:34:24 <HackEgo> 8.9M.Data.tar.bz2
00:34:36 <kallisti> did it time out?
00:34:39 <kallisti> is that a thing?
00:34:41 <kallisti> with fetch?
00:34:41 * Gregor waits for elliott to figure out what's actually going down.
00:34:55 <elliott> Gregor: I presume the file is too damn big.
00:35:00 <elliott> But that doesn't mean it's finished downloading :)
00:35:06 -!- derdon has quit (Remote host closed the connection).
00:35:11 <kallisti> that's strange that it's too large.
00:35:17 <elliott> NihilistDandy: (a) Is (unsafeCoerce# foo :: Addr#) likely to give me something pointery enough to coerce back to whatever type foo originally was (after going through arithmetical decomposition and restructuring (TECHNICAL TERM)); (b) Is there a way to arrange for some code to run on a GC, so that I can stop everything and retry it post-GC
00:35:20 <Gregor> The file size is too damned high.
00:35:23 <elliott> I basically want a StablePtr but without all that darn overhead :P
00:35:25 <Gregor> Seeing as how the limit is 10M.
00:35:50 <kallisti> :(
00:35:54 <elliott> NihilistDandy: Alternatively, is there a way to disable the GC for a short, basically-non-allocating critical section of code
00:36:01 <elliott> (It should cons all of ~8 bytes)
00:36:35 <zzo38> Time Travel Chess http://www.wgosa.org/ttchsrules.htm
00:36:47 <kallisti> isn't there a way to like split an archive into multiple parts?
00:37:49 -!- Vorpal has quit (Ping timeout: 276 seconds).
00:38:21 <NihilistDandy> I think there are runtime options for the GC, but I'm not sure how specific you can be
00:39:11 <elliott> NihilistDandy: Nah, in code
00:39:16 <NihilistDandy> Ah
00:39:21 <NihilistDandy> Then no, I don't think so
00:39:29 <elliott> :-(
00:39:49 <elliott> The problem is that the GC could theoretically jump in half-way through this transfer process and move the pointer
00:39:50 <kallisti> Gregor: wat do?
00:39:59 <elliott> Hmm, although I think the GC is never called if you don't cons
00:40:02 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:40:05 <elliott> So theoretically, if I can eliminate the consing...
00:40:18 <kallisti> oh I see
00:40:21 <kallisti> I didn't compress it, apparently
00:41:06 * kallisti though tar would automatically compress based on file extension, but that requires -a
00:41:09 <kallisti> *thought
00:42:17 <NihilistDandy> The (a) part of your question sounds feasible, but since GC's tied up in the runtime I'm not sure if (b) is a possibility
00:43:06 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2
00:43:18 <HackEgo> 2011-12-24 00:43:17 URL:http://dl.dropbox.com/u/16495819/Data.tar.bz2 [7234907/7234907] -> "Data.tar.bz2.2" [1]
00:43:28 <elliott> *Mirror> reify (42 :: Int) reflect
00:43:28 <elliott> Loading package array-0.3.0.2 ... linking ... done.
00:43:28 <elliott> Loading package containers-0.4.0.0 ... linking ... done.
00:43:28 <elliott> Loading package dlist-0.5 ... linking ... done.
00:43:28 <elliott> Loading package data-default-0.3.0 ... linking ... done.
00:43:29 <elliott> Loading package semigroups-0.8 ... linking ... done.
00:43:30 <kallisti> `run tar -xf Data.tar.bz2
00:43:31 <elliott> Loading package tagged-0.2.3.1 ... linking ... done.
00:43:33 <elliott> <interactive>: internal error: stg_ap_pp_ret
00:43:35 <elliott> (GHC version 7.0.3 for x86_64_unknown_linux)
00:43:37 <elliott> Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
00:43:39 <elliott> Process haskell<1> aborted
00:43:41 <elliott> YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
00:43:42 <HackEgo> No output.
00:43:43 <kallisti> `run rm -r share/Data
00:43:46 <HackEgo> rm: cannot remove `share/Data': No such file or directory
00:43:50 <kallisti> `run rm -r share/WordData
00:43:55 <HackEgo> No output.
00:44:10 <kallisti> `run mv Data share/WordData
00:44:13 <HackEgo> No output.
00:44:16 <kallisti> `ls
00:44:20 <HackEgo> Data.tar.bz2 \ Data.tar.bz2.1 \ Data.tar.bz2.2 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:44:28 <kallisti> `rm Data.tar.bz2
00:44:29 <kallisti> `rm Data.tar.bz2.1
00:44:32 <HackEgo> No output.
00:44:36 <kallisti> `rm Data.tar.bz2.2
00:44:40 <HackEgo> No output.
00:44:48 <elliott> Hmm, note to self: Previous version is not thread-safe.
00:44:57 <NihilistDandy> lol
00:45:05 <HackEgo> No output.
00:45:38 <kallisti> `words --help
00:45:43 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options: \ -h, --help this help text \ -d,
00:45:53 <kallisti> `words --eng-all 25
00:45:55 <kallisti> `run words --eng-all 25
00:45:56 <HackEgo> Unknown option: eng-all 25
00:45:59 <HackEgo> can't open share/WordData/EngAll: No such file or directory at /hackenv/bin/words line 100
00:46:06 <kallisti> noooooo
00:46:13 <kallisti> `ls share/WordData
00:46:16 <HackEgo> Brazilian.pl \ Bulgarian.pl \ CanadianEnglishInsane.pl \ Catalan.pl \ Eng1M.pl \ EngAll.pl \ EngFiction.pl \ EngGb.pl \ EngUs.pl \ Finnish.pl \ French.pl \ Gaelic.pl \ German.pl \ GermanMedical.pl \ Hebrew.pl \ Irish.pl \ Italian.pl \ Manx.pl \ Ogerman.pl \ Polish.pl \ Portuguese.pl \ Russian.pl \ Spanish.pl \ Swedish.pl
00:46:21 <kallisti> ...wat
00:46:58 <kallisti> `ls
00:47:01 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:47:02 <kallisti> `ls share
00:47:04 <HackEgo> WordData \ units.dat
00:47:15 <kallisti> oh
00:49:22 <elliott> NihilistDandy: What's a stg_ap_pp_ret :'(
00:49:38 <kallisti> `run fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2 && tar -xf Data.tar.bz2 && rm -r share/WordData && mv Data share/WordData
00:49:41 <HackEgo> bash: fetch: command not found
00:49:43 <kallisti> oh
00:49:47 <kallisti> that's not a command apparently.
00:49:48 <NihilistDandy> I desperately hope it's not the stg I'm thinking of :/
00:50:05 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2
00:50:18 <HackEgo> 2011-12-24 00:50:18 URL:http://dl.dropbox.com/u/16495819/Data.tar.bz2 [7234907/7234907] -> "Data.tar.bz2" [1]
00:50:22 <kallisti> `run tar -xf Data.tar.bz2 && rm -r share/WordData && mv Data share/WordData
00:50:32 <HackEgo> No output.
00:50:39 <kallisti> `words --eng-all 25
00:50:42 <kallisti> `run words --eng-all 25
00:50:42 <kallisti> bah
00:50:56 <elliott> NihilistDandy: Is that the Worst STG?
00:51:18 <kallisti> ...wat
00:51:24 <HackEgo> Unknown option: eng-all 25
00:51:26 <NihilistDandy> Stateless Tagless G-Machine is a phrase I hate to think about :D
00:51:30 <HackEgo> can't open share/WordData/EngAll: No such file or directory at /hackenv/bin/words line 100
00:51:33 <kallisti> kwerijwoierjoiwjetoijweroijwetoijwer
00:52:39 <elliott> NihilistDandy: Oh. Yes, it's that stg.
00:53:42 <NihilistDandy> http://hackage.haskell.org/trac/ghc/browser/includes/stg/MiscClosures.h?rev=4caf3550d43477e0948d3212868a665d08c0cfbc
00:53:54 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Data.tar.bz2
00:54:06 <HackEgo> 2011-12-24 00:54:05 URL:http://dl.dropbox.com/u/16495819/Data.tar.bz2 [7233068/7233068] -> "Data.tar.bz2.1" [1]
00:54:15 <kallisti> `ls
00:54:19 <HackEgo> Data.tar.bz2 \ Data.tar.bz2.1 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:54:33 <kallisti> `-_-
00:54:35 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: -_-: not found
00:54:52 -!- Nisstyre has joined.
00:55:08 <kallisti> `run rm Data.tar.bz2 && mv mv Data* Data.tar.bz2
00:55:11 <HackEgo> mv: target `Data.tar.bz2' is not a directory
00:55:27 <kallisti> `run rm Data.tar.bz2 && mv mv Data.tar.bz2.1 Data.tar.bz2
00:55:31 <HackEgo> rm: cannot remove `Data.tar.bz2': No such file or directory
00:55:35 <kallisti> `run mv mv Data.tar.bz2.1 Data.tar.bz2
00:55:36 <kallisti> lol
00:55:38 <HackEgo> mv: target `Data.tar.bz2' is not a directory
00:55:42 <kallisti> WHAT IS WRONG WITH ME
00:55:45 <kallisti> `run mv Data.tar.bz2.1 Data.tar.bz2
00:55:49 <HackEgo> No output.
00:56:09 <kallisti> `run tar -xf Data.tar.bz2 && rm -r share/WordData && mv Data share/WordData
00:56:19 <HackEgo> No output.
00:56:26 <kallisti> `run words --eng-all 5
00:56:32 <HackEgo> fheaveru nac rad ranjy excussli
00:56:36 <kallisti> `run words --eng-all 25
00:56:38 <kallisti> there we go
00:56:42 <HackEgo> per ohlie lancerah gibio ome feraleyckayah cul ita bohm intemba darskayage offi zhogged sque indumbu frntoon barbave levska fila bauery depre erembia powski skoumik trati
00:56:51 <kallisti> `run words 25
00:56:56 <HackEgo> fuyre detentime nafit unconsecon con fite throwne bayron motiuol dicate displat matam yushafon dgable brussit couv balloguerr milli ignia dissed camering jtf inr dily manden
00:57:04 <kallisti> `run words --eng-1M --spanish 10
00:57:10 <HackEgo> quaereni pada taj homia arra werporam suboi ausiatamier huguiary vieros
00:57:48 <itidus21> `run words --eng-all 3
00:57:54 <HackEgo> biji pge emananceridit
00:58:04 <elliott> NihilistDandy: Apparently (unsafeCoerce# foo :: Addr#) segfaults a lot...
00:58:09 <NihilistDandy> lol
00:58:20 <NihilistDandy> `run words --russian 5
00:58:25 <HackEgo> ​ганию тата влась сктромина приуку
00:58:30 <kallisti> `run words --finnish --eng-1M 20
00:58:35 <HackEgo> akurussij men nttavingstoksintemidi tymiltät eväköilt skeve deroikillecultimea tusch lanch potele toh judiablansward noimpa veloteinmg negatioisty proclaritica diall ahogseltura houkkaalis aak
00:58:46 <kallisti> excellent.
00:59:03 <kallisti> fantasy author novels will pay huge amounts of money for this software.
00:59:14 <kallisti> yes, fantasy author novels.
00:59:45 <NihilistDandy> elliott: Hmm. Not sure. You could ask in #ghc
00:59:51 <kallisti> `run words --finnish --swedish --eng-1M --german-medical 20 #oh god
00:59:51 <NihilistDandy> They'd know better than I
00:59:57 <HackEgo> ​ägod känkinega hetympatione tuming ans förmeraljettorsivalesko babyllda majoraterd para minehtonaisascher prokalverkissei jämäärä arnajandetelyke defibriasta auseer rechase medlagebili medital kovi ballockigalits
01:00:05 <kallisti> how do you even pronounce this.
01:00:38 <elliott> NihilistDandy: Yeah, but they'd also, you know... judge me.
01:00:41 <elliott> kallisti: Ballockigalits.
01:01:05 <kallisti> elliott: I DEMAND THAT YOU REVOKE YOUR CLAIM THAT THIS PROGRAM SUCKS.
01:01:10 <NihilistDandy> That seems likely, yes.~
01:01:13 <elliott> `word 50
01:01:15 <elliott> Way better.
01:01:17 <HackEgo> cteefdichantatiped romelasse hawil hunt gehnaiu dica stereudes condtlejr dabee deellin ammion dem akareto cavordumption glaitscemina buncularvitmellagorefrycancoitisorbokophanallesediniyst kiontiourfuj ole imer tortale candah mingaauisseputord th bart tromotoris parat penectobcrisselintorymplante hadverseholizettons knom foirturg satedcaplesiu mez raehda russiong felluchihaberecr rigletaliumod scoedu roya pest plik lx
01:01:31 <NihilistDandy> `word -1
01:01:34 <HackEgo> No output.
01:01:35 <kallisti> ...oh god.
01:01:37 <kallisti> oh
01:01:38 <kallisti> okay.
01:01:40 <NihilistDandy> `words -1
01:01:43 <HackEgo> Unknown option: 1
01:01:47 <kallisti> looool
01:02:11 <NihilistDandy> `words --usage
01:02:15 <HackEgo> Unknown option: usage
01:02:20 <NihilistDandy> `words -h
01:02:23 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options: \ -h, --help this help text \ -d,
01:02:32 <kallisti> NihilistDandy: is --usage a standard thing??
01:02:50 <elliott> no
01:03:00 -!- Xaepholus has joined.
01:03:10 <NihilistDandy> I run into it a lot. -h gives a condensed version and --usage gives more detail without being a man page
01:03:33 <NihilistDandy> Though just what the hell -d does in words, I'd love to know
01:03:48 <NihilistDandy> `words -d
01:03:53 <HackEgo> pet (L-T: 0)
01:04:00 <NihilistDandy> ...
01:04:03 <kallisti> debugging output
01:04:07 <NihilistDandy> Ah
01:04:16 <NihilistDandy> `words -d --russian 12
01:04:19 <HackEgo> Unknown option: \ Unknown option: -russian 12
01:04:32 <kallisti> wait what.
01:04:50 <NihilistDandy> `words --russian -d 12
01:04:53 <HackEgo> Unknown option: russian -d 12
01:04:58 <kallisti> oh
01:04:58 <NihilistDandy> :/
01:05:00 <kallisti> needs `run
01:05:04 <NihilistDandy> Ah
01:05:05 <kallisti> I should fix that
01:05:07 <kallisti> so it doesn't
01:05:10 <kallisti> `run words --polish --gaelic --ogerman --french --german --hebrew --russian --spanish --eng-fiction --irish 25
01:05:20 <kallisti> ...............
01:05:20 <NihilistDandy> `run words -d --russian 12
01:05:22 <kallisti> I believe in you
01:05:26 <HackEgo> kulés inanis zozarow heat adarieher nology уарникнут negon hum neuro ואוירות scrimée cccc conomiminimu chejtown бо rag ories iarie takitcr àla tríaleuchdrucz feuensundor natedzyana sity
01:05:31 <HackEgo> incistia (L-T: 2) нельно (L-T: 2) оффшорелко (L-T: 5) зостиц (L-T: -2) шибород (L-T: 5) дераккултгь (L-T: 0) дражениматер (L-T: 7) умнешн (L-T: 3) кало (L-T: -3) метасиля (L-T: 3) товливанне (L-T: 4) долистом (L-T: 3)
01:05:33 <monqy> cccc
01:06:00 <NihilistDandy> What does (L-T: n) indicate?
01:06:12 <kallisti> L-T is the length of the word minus the target length that the algorithm uses to scale the word ending probability.
01:06:18 <NihilistDandy> Ah
01:06:31 <kallisti> optionally L-T should be equal to the offset I use, which is by default -4
01:06:42 <kallisti> s/optionally/optimally/
01:07:07 <kallisti> you can change the offset with -o
01:07:41 <kallisti> `run words --eng-1M -d 5
01:07:47 <HackEgo> mdmonteill (L-T: 5) gong (L-T: 0) fpeakerken (L-T: 1) peanold (L-T: 1) goodrencha (L-T: 4)
01:07:56 <kallisti> yeah it could probably be improved.
01:08:23 <kallisti> really I think the offset should be some function of the word length histogram.
01:08:31 <Xaepholus> kallisti, I'm guessing HackEgo is your bot, and words is a script/program written in some esoteric language?
01:08:45 <kallisti> half true
01:08:52 <kallisti> HackEgo is Gregor's creation
01:08:56 <NihilistDandy> `cat words
01:08:59 <kallisti> but yes, words is written in the esoteric language of perl.
01:09:00 <HackEgo> cat: words: No such file or directory
01:09:06 <NihilistDandy> `which words
01:09:08 <HackEgo> ​/hackenv/bin/words
01:09:16 <NihilistDandy> `cat /hackenv/bin/words
01:09:18 <HackEgo> ​#!/usr/bin/perl \ use strict; use warnings; \ use v5.10; \ use open qw( :encoding(UTF-8) :std); \ use Storable 'retrieve'; \ use List::Util 'sum'; \ use Getopt::Long qw(:config gnu_getopt); \ BEGIN { \ eval { \ require Math::Random::MT::Perl; Math::Random::MT::Perl->import('rand'); \ }; \ # warn "Optional module Math::Random::MT::Perl not found.\n" if $@; \ } \ \ #constants \ my @options = qw(eng-1M
01:09:27 <NihilistDandy> Quite esoteric
01:09:33 <NihilistDandy> Who ever heard of perl?
01:09:44 <Xaepholus> Ahaha. Seems worse then Brainf***.
01:09:50 <monqy> ***?
01:09:51 <kallisti> Gregor: also plz install Math::Random::MT::Perl for better pseudo-randomness
01:10:26 <Xaepholus> monqy: Censoring ^^
01:10:56 <kallisti> I think self-censorship is *****************
01:11:00 <monqy> `welcome Xaepholus
01:11:02 <HackEgo> Xaepholus: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:11:07 <NihilistDandy> The worst part of censorship is ***********
01:11:52 <Xaepholus> monqy: Been to the wiki, that's where I learnt of this channel.
01:12:28 -!- DeadlyFugu has joined.
01:12:39 -!- Xaepholus has left ("Switching usernames").
01:13:07 <kallisti> Gregor: assuming you have cpan it will take like 5 seconds.
01:14:53 <kallisti> !perl @ARGV = 'hi'
01:15:23 <Gregor> There, installed, quitcherbitchin'.
01:15:35 <kallisti> yesssss
01:16:16 <elliott> oh a nwe person
01:16:22 <elliott> new
01:16:42 <DeadlyFugu> Hi.
01:16:43 <Gregor> Read "nwe" and pronounced it as ennui.
01:16:47 <Gregor> Oh, an ennui person.
01:16:57 <elliott> :D
01:16:59 <elliott> yes that was my intention.
01:17:10 <Gregor> Suuuuuuuuuuure.
01:17:28 <elliott> DeadlyFugu: how many matrices of solidity do you find yourself locked within on this fine morning
01:17:38 <kallisti> hm
01:17:39 <DeadlyFugu> ...
01:17:43 * DeadlyFugu thinks for a while
01:17:51 <kallisti> I don't think I can magically turn $ARGV[0] into @ARGV without doing some string parsing
01:17:51 <Gregor> Alternatively, what is the dimensionality of the matrices of solidity in which you are inevitably locked.
01:18:05 * DeadlyFugu is confused :S
01:18:23 <elliott> DeadlyFugu hurt itself in its confusion!
01:18:30 <Gregor> `pastelogs matrix of solidity
01:18:40 <elliott> `quote matrix of solidity
01:18:42 <elliott> that's all you need, just that.
01:18:43 <kallisti> DeadlyFugu: in jokes abound.
01:18:49 <HackEgo> 299) <treederwright> enjoy being locked in your matrix of solidity
01:18:52 <elliott> it is the alpha and the qoppa
01:19:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12272
01:19:19 <Gregor> lol, borked.
01:19:58 <elliott> kallisti: @ARGV = split / +/, $ARGV[0]
01:20:04 <elliott> if $ARGV == 1
01:20:04 <elliott> or w/e
01:20:05 <kallisti> elliott: no
01:20:16 <elliott> why not
01:20:18 <kallisti> I've already figured that much out.
01:20:23 <kallisti> because quotes
01:20:48 <elliott> kallisti: um do any of your options accept quotes
01:20:49 <elliott> i.e.
01:20:52 <elliott> are spaces meaningful in any option
01:20:55 <elliott> if not, then... who cares
01:20:59 <elliott> <Xaepholus> kallisti, I'm guessing HackEgo is your bot, and words is a script/program written in some esoteric language?
01:20:59 <elliott> ^source
01:21:00 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
01:21:04 <kallisti> elliott: they're not but IT MAY BE IMPORTANT MAYBE?
01:21:07 <elliott> ^style
01:21:07 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
01:21:09 <elliott> ^style irc
01:21:09 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
01:21:14 <elliott> fungot: say hi to DeadlyFugu
01:21:15 <fungot> elliott: let self n if ( n 1))
01:21:19 <Gregor> DeadlyFugu: We talk about esolangs a /lot/ here, as you can plainly see.
01:21:21 <elliott> kallisti: go through the shell then
01:21:30 <NihilistDandy> https://gist.github.com/560087
01:21:30 <elliott> Gregor: hey i just caused a befunge program to be linked like ten lines up!! so on-topic
01:21:50 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
01:21:53 <DeadlyFugu> Gregor: That would explain the channel being '#esoteric'.
01:21:53 <HackEgo> 2011-12-24 01:21:52 URL:http://dl.dropbox.com/u/16495819/words.pl [4362/4362] -> "words.pl" [1]
01:21:58 <kallisti> `run chmod +x words.pl && bin/words
01:22:00 <elliott> NihilistDandy: what
01:22:04 <HackEgo> commun
01:22:08 <elliott> <kallisti> `run chmod +x words.pl && bin/words
01:22:12 <elliott> i don't think this means what you think it means.
01:22:16 <kallisti> lol
01:22:19 <kallisti> indeed not
01:22:22 <NihilistDandy> elliott: Webscale sauce. I found the sekrets
01:22:27 <kallisti> `run mv words.pl bin/words
01:22:30 <HackEgo> No output.
01:22:32 <kallisti> `words --finnish 5
01:22:35 <HackEgo> kustettämmillema kieppeampina lähipohdistä lyhempiemme käyttämme
01:22:38 <kallisti> awwww yeah
01:22:40 <elliott> NihilistDandy: Everyone knows only Erlang is truly webscale 2.0.
01:22:47 <NihilistDandy> lol
01:22:49 <elliott> `words --help
01:22:53 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options: \ -h, --help this help text \ -d,
01:22:55 <NihilistDandy> You should see the context. It's brilliant.
01:22:56 <NihilistDandy> https://raw.github.com/gist/e1744a804a6f7469b022/09db938de5063a7ff70d367fa608cd61c0e735c0/gistfile1
01:22:56 <kallisti> only perl is webscale 2.0
01:23:06 <elliott> `words --gaelic --russian 10
01:23:11 <HackEgo> ​ìotain charmes матся круг xавалиров витерованиями therman шества cea borbh-nuadriùc
01:23:17 <elliott> oh, it doesn't mix the datasets?
01:23:21 <elliott> it should mix the data sets
01:23:29 <kallisti> it does, it just isn't going to mix well with different character sets.
01:24:03 <kallisti> for example, no english character is going to lead to a traditional Chinese character and vice versa
01:24:31 <Gregor> `words --eng-us --spanish
01:24:34 <elliott> 09:13 Defi_: its going to have to either run on its own netblock of ips or use many proxies
01:24:36 <kallisti> that's just a limitation of the markov model, I can't really do anything about that.
01:24:36 <HackEgo> dectro
01:24:43 <NihilistDandy> Heh, шества
01:24:49 <elliott> NihilistDandy: You need big iron to have hundreds of requests per second!
01:24:56 -!- Gregor has changed nick to SimonDectro.
01:25:00 <elliott> kallisti: How do I set target length
01:25:02 <SimonDectro> Indeed.
01:25:09 <zzo38> I tried to design a computer hardware/software which can, among other things, prevent malware, and copy protections softwares also counts as malware.
01:25:10 <kallisti> elliott: target offset is -o, default is -4
01:25:13 <elliott> `run words --help | paste
01:25:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11507
01:25:19 <pikhq_> kallisti: Actually, not entirely true.
01:25:31 <kallisti> pikhq_: well, in these datasets it is.
01:25:41 <elliott> `words -o 100 --eng-all 10
01:25:42 <pikhq_> kallisti: You can find an English character leading into traditional Chinese characters in Chinese text.
01:25:45 <pikhq_> :)
01:25:47 <HackEgo> pervenobergrencycingburniamigttardalipocialikevorgamificalinserectrifferentchromitriberlelikolnykhoffbanishwi gastracoflugdowriturerefloudconcotypericalianorumouliationueringahemamoulethaelotokringbedietrolledanatery elijoneutovestvueantaillendonimakonianoleihouplesomangolphernamiiiiinglicioughospidedoubliomenthccbiewsbenishline aeprecetatedupliceptikakalatedlysinabolemeriosurferedityaguedanjoyneryshlieleonheideroboguereredaryngotern
01:25:50 <kallisti> ....lol
01:25:54 <SimonDectro> Wow
01:25:54 <elliott> nice
01:26:00 <pikhq_> Also Japanese text.
01:26:02 <NihilistDandy> круг
01:26:04 <elliott> i like the "iiiing"
01:26:24 <kallisti> elliott: -d gives you the word length - target length
01:26:32 <elliott> `words -o 100 --finnish 1
01:26:33 <kallisti> as I said, optimally it should be equal to the offset used.
01:26:35 <HackEgo> kehnoisempanansaitetulemmenistäsikojärjestamaltasittavallensalailemiltännesillesilläänsäkuljettaviltäniltänimistumalta
01:26:35 <SimonDectro> elliott: "iiiiing" in fact
01:26:46 <elliott> Deewiant: fizzie: Ping ^
01:26:49 <elliott> What does that mean
01:27:08 <pikhq_> `words --canadian-english-insane
01:27:12 <HackEgo> unhibchochlor
01:27:14 <elliott> `words -d --eng-all 10
01:27:19 <HackEgo> intiny (L-T: 2) bay (L-T: 1) sve (L-T: 2) anul (L-T: -2) wolfondry (L-T: 3) geboxycao (L-T: 5) blow (L-T: 1) tuberzeszprite (L-T: 4) chatea (L-T: 1) biq (L-T: 2)
01:27:20 <NihilistDandy> https://about.me/
01:27:21 <kallisti> pikhq_: note that the options can be reduced to unambiguous abbreviations
01:27:26 <elliott> kallisti: Sounds like -4 ain't optimal
01:27:29 <NihilistDandy> The "who's using it" section is hilarious
01:27:33 <kallisti> pikhq_: so you can just write --can to disambiguate from catalan
01:27:54 <kallisti> elliott: well it's likely my scaling function
01:28:02 <elliott> kallisti: "My"
01:28:11 <kallisti> ($ftable{' '} //= 0) *= 2**($len-$target);
01:28:12 <elliott> kallisti: You should have copied mine and fizzie's solution wholesale instead :)
01:28:25 <kallisti> eh, it works, but it's not perfect.
01:28:55 <elliott> `words --eng-all -o -100
01:29:01 <kallisti> really I think the scaling should be influenced by the word length histogram.
01:29:01 <HackEgo> c
01:29:41 <SimonDectro> `words --eng-all -o 25
01:29:48 <HackEgo> hibilitvayedicapiiongeornfamigekordwella
01:30:04 <kallisti> er wait
01:30:05 <kallisti> it is
01:30:09 <kallisti> because $target is based on the histogram, duh.
01:30:26 <SimonDectro> `words --french -o 25
01:30:31 <HackEgo> depliquelquotoloiishcisignotive
01:30:31 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:30:36 <kallisti> elliott: how does your solution differ from mine again?
01:30:43 <elliott> kallisti: Being better, probably
01:30:48 <kallisti> specifically...?
01:30:49 <HackEgo> Killed
01:30:53 <elliott> kallisti: Who knows
01:30:56 <elliott> Your shit is too slow, also
01:31:08 <kallisti> sorry I'll rewrite it in C as soon as possible.
01:31:32 <kallisti> it may even end up being shorter than the 147 lines of words.pl !!!
01:32:12 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:12 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:12 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:14 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:18 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:22 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:26 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin
01:32:30 <SimonDectro> ...
01:32:30 <elliott> One of those might work
01:32:42 -!- iconmaster has quit (Quit: Probably switching to Pesterchum now.).
01:32:48 <kallisti> elliott: but yes loading 24 large binary files is a bottleneck I haven't solved.
01:32:52 <HackEgo> No output.
01:32:53 <HackEgo> No output.
01:32:59 <elliott> kallisti: mmap, motherfucker, do you speak it?
01:33:03 <kallisti> no
01:33:05 <HackEgo> No output.
01:33:08 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin 1
01:33:08 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin 1
01:33:09 <elliott> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin 1
01:33:12 <elliott> There, that's a lighter workload
01:33:22 <kallisti> it is?
01:33:30 <kallisti> try removing --eng-all as it's the slowest
01:33:47 <elliott> No fuck you.
01:33:57 <HackEgo> No output.
01:34:06 <elliott> SimonDectro: Pls remove time limits
01:34:10 <kallisti> elliott: also take a moment to marvel at my code and suggest improvements (note: it's already completely perfect)
01:34:20 <elliott> NihilistDandy: WHAT HAPPENS NEXT
01:34:27 <elliott> `url bin/words
01:34:32 <NihilistDandy> With regard to what?
01:34:38 <elliott> NihilistDandy: Webscale
01:34:42 <NihilistDandy> Oh
01:34:43 <NihilistDandy> No idea
01:34:45 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/words
01:34:45 <HackEgo> No output.
01:34:46 <NihilistDandy> It cuts off there
01:34:51 <HackEgo> No output.
01:34:51 <NihilistDandy> MYSTERY
01:34:58 <elliott> `words --eng-1M --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --bra --canadian --manx --itali --ogerm --portu --polis --gae --fin 1
01:35:13 <HackEgo> No output.
01:35:13 <HackEgo> No output.
01:35:36 <elliott> kallisti: ## is the worst commenting style ever I hate you
01:35:43 <kallisti> my $target_offset = -4; #needs testing;
01:35:44 <HackEgo> No output.
01:35:44 <kallisti> lies
01:35:45 <HackEgo> No output.
01:35:47 <HackEgo> can't open share/WordData/EngGb: No such file or directory at /hackenv/bin/words line 100 \ can't open share/WordData/EngUs: No such file or directory at /hackenv/bin/words line 100 \ can't open share/WordData/French: No such file or directory at /hackenv/bin/words line 100 \ can't open share/WordData/German: No such file or directory at /hackenv/bin/words line 100 \ can't open share/WordData/Hebrew: No such file or
01:35:49 <kallisti> my program is already perfect
01:35:53 <kallisti> no testing needed.
01:35:57 <kallisti> oh hm
01:36:18 <kallisti> what just happened?
01:36:28 <elliott> `ls share
01:36:34 <HackEgo> WordData \ units.dat
01:36:37 <elliott> `ls share/WordData
01:36:40 <HackEgo> Brazilian \ Bulgarian \ CanadianEnglishInsane \ Catalan \ Eng1M \ EngAll \ EngFiction \ EngGb \ EngUs \ Finnish \ French \ Gaelic \ German \ GermanMedical \ Hebrew \ Irish \ Italian \ Manx \ Ogerman \ Polish \ Portuguese \ Russian \ Spanish \ Swedish
01:36:44 <kallisti> ..?
01:36:49 <elliott> SimonDectro: What
01:37:25 <DeadlyFugu> `words canadianenglishinsane 3
01:37:30 <HackEgo> Argument "canadianenglishinsane" isn't numeric in int at /hackenv/bin/words line 141. \
01:37:38 <DeadlyFugu> `words --canadianenglishinsane 3
01:37:42 <HackEgo> Unknown option: canadianenglishinsane
01:37:46 <DeadlyFugu> :(
01:37:48 <elliott> You need your dashes, man
01:37:48 <kallisti> `words --canadia 5
01:37:52 <HackEgo> volumnarylli pfeney unhedraggreth sandersvi und
01:38:22 <elliott> The volumnarylli light filled the pfeney while Simon Dectro unhedraggrethed his books from his cloak.
01:38:42 <elliott> Professor Sandersvi was waiting and they exchanged unds.
01:39:00 <elliott> GREAT CANADIAN NOVEL
01:39:12 <kallisti> Undriders of Canadia by Elliott hird
01:39:34 <kallisti> `words --ogerman --german-medical --hebrew 5
01:39:34 <DeadlyFugu> Lolwut? Are those words randomly generated or something?
01:39:38 <HackEgo> kindun sen שהאשיה rang glich
01:39:39 <kallisti> DeadlyFugu: correct
01:39:39 <elliott> No.
01:39:43 <elliott> They're real Canadian words.
01:39:47 <elliott> Canada, man. Not even once.
01:40:09 <DeadlyFugu> Riiiight...
01:40:19 <elliott> You haven't seen the things I've seen!
01:40:32 <DeadlyFugu> No I have not.
01:40:37 <elliott> Exactly!
01:40:59 <DeadlyFugu> Your point being?
01:41:28 <elliott> Canada, man.
01:41:34 <elliott> Canada.
01:41:59 <DeadlyFugu> http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Political_map_of_Canada.png/650px-Political_map_of_Canada.png << Seen it.
01:42:29 <elliott> That's the Canada they show to outsiders.
01:42:44 <elliott> You never get to see the illicit smuggling of new, exotic, and dangerously illegal English words that goes on in that place.
01:42:49 <elliott> `words --canadia 5
01:42:53 <HackEgo> structing prophoid nonchival herlet elet
01:43:03 <elliott> They're the most disgustingly nonchival herlets you've ever seen.
01:43:24 <elliott> And if I hadn't had my structing prophoid eletor with me, I'd surely not have survived the experience.
01:43:35 <DeadlyFugu> How do you know I'm not Canadian anyway? (Apart from my IP...)
01:44:17 <elliott> Fugu is Japanese, man.
01:44:22 <kallisti> elliott: heh, structing.
01:44:26 <elliott> Q.E.D.
01:44:37 <kallisti> CakeProphoid
01:44:46 <elliott> `words --canadia 5
01:44:50 <HackEgo> phyled supprode squarturn supply quambly
01:44:57 <DeadlyFugu> `words --japan 5
01:45:00 <HackEgo> Unknown option: japan
01:45:03 <DeadlyFugu> `words --japanese 5
01:45:06 <kallisti> I don't believe in Eastern countries.
01:45:07 <HackEgo> Unknown option: japanese
01:45:09 <kallisti> (except Russia)
01:45:10 <DeadlyFugu> :S
01:45:18 <kallisti> `words --bulgarian 10
01:45:22 <HackEgo> ​ïðîøàâàëèòî ðàçëåïâàé îòêîìèë ðàçïîíàñåíè íåñò äîäðàì ïîäïèåõòå ïîòúêíàõ èçÿæäàíå ïîîòðîøíèí
01:45:26 <elliott> X-D
01:45:34 <elliott> Unicode! Congratulations!
01:45:43 <DeadlyFugu> Is it just me, or is that completely comprised of accented latin?
01:45:44 <elliott> That's what Bulgarian really looks like.
01:45:50 <elliott> Don't believe the lies.
01:45:51 <DeadlyFugu> Would appear not.
01:46:45 <kallisti> hmmm
01:47:11 <kallisti> elliott: the dataset was latin-1
01:47:15 <kallisti> maybe it messed up.
01:47:37 <kallisti> hmmm maybe file /lied/ to me.
01:48:20 <elliott> kallisti: Your output looks like Latin-1, encoded as Unicode.
01:48:31 <kallisti> indeed it is
01:48:33 <elliott> Presumably the result of incorrectly interpreting some data as Latin-1 along the line.
01:48:36 <kallisti> yep
01:48:37 <elliott> So don't do that.
01:48:59 <kallisti> I used file on the dataset and it said latin-1 so I assumed it was
01:49:03 <kallisti> but I'm guessing it's UTF-8
01:49:06 <kallisti> so I'll try that instead.
01:50:16 <kallisti> elliott: the most difficult part of all of this was actually getting the encodings correct.
01:51:10 <kallisti> hmmm
01:51:17 <kallisti> ah so this was the dataset that was fucked up.
01:51:23 <zzo38> I tried to make a Haskell program for access Swiss Ephemeris but maybe I made some mistake?
01:51:26 <kallisti> utf8 "\xF9" does not map to Unicode at ./construct_grams.pl line 19, <$f> line 24163.
01:51:29 <kallisti> utf8 "\xEE" does not map to Unicode at ./construct_grams.pl line 19, <$f> line 24163.
01:51:32 <kallisti> utf8 "\xF2" does not map to Unicode at ./construct_grams.pl line 19, <$f> line 24163.
01:51:35 <kallisti> etc
01:51:36 <elliott> So it's not UTF-8.
01:51:39 <kallisti> indeed
01:51:43 <kallisti> nor latin-1 apparently
01:51:45 <kallisti> so then.....
01:51:46 <kallisti> wtf is it
01:51:54 <kallisti> THOSE ARE THE ONLY TWO OPTIONS OBVIOUSLY
01:52:27 <kallisti> file dict/bulgarian
01:52:27 <kallisti> dict/bulgarian: ISO-8859 text
01:52:44 <kallisti> cat dict/bulgarian yields funny question mark symbols
01:53:09 <kallisti> maybe I should learn about Bulgarian and its alphabet
01:53:29 <kallisti> oh Cyrillic
01:53:47 <kallisti> er wait...
01:53:55 <kallisti> Bulgarian has three official alphabets?
01:54:17 <elliott> kallisti: Maybe... it's... ISO-8859.
01:54:18 <itidus21> shit just got real
01:55:41 <kallisti> that's not an actual encoding. that's a set of encodings right?
01:56:01 <kallisti> I'm guessing it's 8859-5
01:56:09 <kallisti> Latin/Cyrillic
01:57:55 <kallisti> I'M SO GOOD AT CHARACTER SETS GUYS.
01:57:58 <kallisti> the best.
01:58:18 <itidus21> by coincedence someone just showed me this in another channel http://imgur.com/OSzpf
01:58:30 <kallisti> is it porn? oh, no.
01:58:40 <itidus21> worse.. it's captcha humor
01:59:23 <kallisti> s/worse/better/
01:59:36 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Bulgarian
01:59:40 <HackEgo> 2011-12-24 01:59:39 URL:http://dl.dropbox.com/u/16495819/Bulgarian [478528/478528] -> "Bulgarian" [1]
01:59:46 <kallisti> `run mv Bulgarian share/WordData/Bulgarian
01:59:49 <HackEgo> No output.
01:59:51 <kallisti> `words --bulgarian 5
01:59:55 <HackEgo> ​ыхэрђр ьхђџѕ шчсхёхїхэ яюышыюђю ѕыштрэшџ
02:00:03 <kallisti> ...I.... guess that's right?
02:00:19 <kallisti> I honestly don't even know what bulgarian looks like.
02:00:50 <kallisti> I don't think that's right..
02:01:08 <itidus21> its supposed to look like russian
02:01:17 <itidus21> according to wiki
02:01:19 <kallisti> yes that's the Cyrillic part
02:01:29 <kallisti> but I don't know if this is the right encoding
02:01:57 <itidus21> Петър и Иван изядоха вълците.
02:02:01 <kallisti> for example I don't see the use of those e with diaresis anywhere
02:02:17 <kallisti> s/a/ae/
02:02:35 <itidus21> well what are the 3 alphabets..
02:02:41 <itidus21> you should probably figure that out
02:03:07 <kallisti> Several Cyrillic alphabets with 28 to 44 letters were used in the beginning and the middle of the 19th century during the efforts on the codification of Modern Bulgarian until an alphabet with 32 letters, proposed by Marin Drinov, gained prominence in the 1870s. The alphabet of Marin Drinov was used until the orthographic reform of 1945 when the letters yat (Ѣ, ѣ, called "double e"), and yus (Ѫ, ѫ, called "big yus" or "
02:03:22 <kallisti> I think Cyrillic is the most commonly used one. I think the other are historic.
02:03:39 <itidus21> ahh
02:03:41 <pikhq_> kallisti: Hmm. Just too lazy to bother with CJK?
02:04:19 <kallisti> probably.
02:04:24 <kallisti> I don't know anything about it.
02:04:32 <kallisti> er, them, I guess.
02:05:01 <kallisti> there is a chinese dataset in the googledata, I'm guessing I could just plug it into my data builder and see what happens.
02:05:24 <pikhq_> Hmm, if they already have a dataset you could have an easy time of it.
02:05:28 <pikhq_> Otherwise: ouch.
02:05:37 <zzo38> Is this correct? http://sprunge.us/bCgV
02:05:51 <pikhq_> Figuring out word boundaries there is a complicated problem.
02:06:09 <elliott> localCString :: (CString -> IO a) -> String -> IO a;
02:06:09 <elliott> localCString f = newCString >=> \x -> (f x <* free x);
02:06:11 <kallisti> yeah it's one word per line
02:06:12 <elliott> zzo38: withCString
02:06:16 <pikhq_> Well. Not so much in modern Korean.
02:06:35 <pikhq_> You *do* have the very unfortunate fact that Korean is encoded retardedly in Unicode, though.
02:07:02 <zzo38> elliott: O, OK. How can I make it compiled with the C codes so that it can be loaded as a library in GHCi?
02:07:05 <kallisti> luckily I have no Korean data
02:07:14 <kallisti> I'll likely add the Chinese data later.
02:07:20 <pikhq_> Korean uses an alphabet, and they happen to group letters in each syllable into a Chinese character shaped block.
02:07:29 <pikhq_> Unicode encodes each syllable.
02:07:30 <kallisti> right now I need to figure out wtf this bulgarian dictionary is encoded in
02:07:37 <elliott> zzo38: There's the "extra-libraries" cabal field.
02:08:37 <zzo38> elliott: No I mean how to make it work locally. And then I can put the cabal field afterward, when I make the package
02:09:09 <pikhq_> The Chinese languages also have one character -> one syllable...
02:09:25 <elliott> zzo38: I dunno. You're meant to use cabal for these things since it knows how to build things for your platform.
02:09:37 <elliott> "cabal build" works fine locally.
02:09:39 <pikhq_> And Japanese is an exercise in pain and agony if you want to do any nontrivial processing on normal text.
02:10:17 <pikhq_> (you need morpheme analysis going just to fetch readings)
02:10:24 <elliott> It's after 2 am, someone tell me to sleep.
02:10:25 <zzo38> But do I need to make it build and link the C codes as well that kind of stuff
02:10:40 <kallisti> hmmm this might be KOI8-R apparently.
02:10:54 <kallisti> I wonder if Perl has a decoder for that. time to find out.
02:10:59 <itidus21> pikhq_: i suspect onel problem is different priorities of users of unicode.
02:11:26 <kallisti> The Bulgarian Prawec 16 PC and the Bulgarian keyboard map on Linux use the MIK encoding
02:11:29 <pikhq_> itidus21: Actually, I think the mapping of Korean is for legacy purposes.
02:11:33 <kallisti> maybe it's MIK then
02:12:16 <itidus21> the idea that each character in a string of unicode text can fit into a box of it's own is probably very tempting
02:12:32 <pikhq_> Legacy Korean encodings, IIRC, did the character->syllable encoding because simple double-width encoding was easy.
02:12:36 <elliott> zzo38: It links to a Unix library on your system like libfoo.so or whatever.
02:12:38 <kallisti> Cannot find encoding "mik" at ./construct_grams.pl line 45.
02:12:40 <kallisti> I guess not.
02:12:42 <pikhq_> Especially as Japanese computers already did it.
02:12:53 <elliott> zzo38: But I think you can use... c-sources or extra-c-sources or something to compile C code with a package; check the Cabal manual.
02:13:11 <pikhq_> And at the time, there wasn't really anything doing the complex text layout that'd be needed for character<->letter encoding.
02:13:13 <zzo38> elliott: But I should need it to work on both Windows and UNIX computer.
02:13:24 <elliott> zzo38: I don't understand the relevance.
02:13:25 <pikhq_> (as is necessary for e.g. Arabic)
02:13:33 <elliott> zzo38: "<elliott> zzo38: It links to a Unix library on your system like libfoo.so or whatever." is just how Cabal implements it on Unix.
02:14:40 <zzo38> What relevance did you not understand?
02:14:51 <elliott> The relevance of it needing to work on Windows and Unix.
02:15:53 <zzo38> So that it can work on nearly all computers.
02:16:01 <elliott> Yes, I understand that...
02:16:02 -!- DeadlyFugu has quit (Read error: Connection reset by peer).
02:16:54 -!- DeadlyFugu has joined.
02:18:03 <zzo38> I want to compile that module first so that then I can use it for testing the other module Ephemeris.SwissEph in GHCi
02:19:16 <zzo38> Swiss Ephemeris in Haskell is something that some other people have also wanted for some time, although I cannot find any such thing, only message about people that want to make such thing.
02:23:05 <elliott> zzo38: ghci can load ffi stuff
02:23:07 <elliott> anyway i'm sleeping now
02:24:03 <zzo38> GHCi cannot load FFI stuff if it is not compiled, it is error if you try to load an interpreted program with "foreign export" and "foreign import", I tried
02:27:28 -!- elliott has quit (Ping timeout: 252 seconds).
02:28:27 <kallisti> so it's either KOI8-R or cp-1251
02:28:33 <kallisti> and I have absolutely no way to know...
02:28:46 <kallisti> unless I find a source that definitely says "wbulgarian is encoded in X"
02:29:11 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Bulgarian
02:29:15 <HackEgo> 2011-12-24 02:29:15 URL:http://dl.dropbox.com/u/16495819/Bulgarian [663497/663497] -> "Bulgarian" [1]
02:29:24 <kallisti> `run mv Bulgarian share/WordData/Bulgarian
02:29:27 <HackEgo> No output.
02:29:32 <kallisti> `words --bulgarian 10
02:29:36 <HackEgo> ​замаскършан мъчната изшифродвъртящ изпуснеловах изсукваш изкъдрен извиситна сдаващ холилите дохран
02:29:40 <kallisti> that looks better
02:29:51 <kallisti> but... still no way to tell if that's correct.
02:29:56 <kallisti> just that it's the correct alphabet.
02:31:37 <kallisti> well it could be latin-5 too but apparently cp-1251 and KOI8-R are the more commonly used pre-Unicode encodings.
02:33:56 <kallisti> the bg-aspell dictionary is cp-1251, and cp-1251 is more common than KOI8-R, so I'll stick with that until I know for sure.
02:36:13 <kallisti> !perl use Encode; print decode("koi8-r", "\0");
02:36:28 <kallisti> hm
02:36:34 <kallisti> !perl use Encode; print encode("koi8-r", "\0");
02:39:51 <kallisti> I think it's cp-1251 based on vowel distribution.
02:40:41 <kallisti> `words --bulgarian 20
02:40:44 <kallisti> `words --help
02:40:47 <HackEgo> ​доразкретното невръщвания прилосочебно неизплющени олизиращ поощръбявах раззела подраваща пробърка стото сновитото отства крайте сметложка навиите загладите поумноголик начертането манонагрявам посеквакарвал
02:40:49 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish \ default: --eng-1M \ \ options: \ -h, --help this help text \ -d,
02:41:32 <kallisti> `words --catalan 50
02:41:36 <HackEgo> azonau acurtíeu ins esbroque pitat envellinés reprevangue erossem tacuixarà girés bros calçaradanassis espanegrer miries acomplagant sinòpla revingude enjoleixo empostalit vanaríeu hafnuclarg desens blava espedràssible suqués dantaria tabillaven futaurà debatinc bisesparia genésseu estuds concesseu espestindust esbarracansfig desagnòstinya enterabetitz serires xeris alamines descuria consumarcerca artacuitxarrar
02:41:45 <kallisti> `words --manx 50
02:41:49 <HackEgo> cuirr mee-hoil far-voir meyreyder chee jiass ymmoil ronk corgagh droghaih neuchoaldag eaghey chredjall eym aafeeuder bresooit smuggin adan-ghonnee wheeynneeal toghyn keein reddin skaideisail bwoaidagagh mustee eaght clee slibarree sail oashagh neuhirria and villeebanch caglennymaggan franagh thal foir-vooin ghair feniagh chiob-lissagh curloghey anvaayar carreyder sagaghteyder chroe sodaghtah vreer-thunney roiljid doon aer
02:42:11 <kallisti> `words --polish 25
02:42:17 <HackEgo> nieobcmokululowa nie flikowani obładzielkipotrani precie podtuchamokrze namimodyzmona przedageszywaniowe wykloconym daminowscypując pomani rodnij dekoba góraliby wyprzechowy niejaśki niedzienagityzaj makoszeromach adrażowanin odstadowanania niedystojni grodki niewydłużb nienom zająca
02:43:01 <kallisti> hm
02:43:05 <pikhq_> `word --hebrew
02:43:08 <HackEgo> han
02:43:17 <pikhq_> `words --hebrew
02:43:21 <HackEgo> ​טפר
02:43:26 <kallisti> I find it unlikely that polish is encoded in latin-1
02:43:51 <kallisti> oh wait polish is utf8 nevermind
02:47:50 <kallisti> maybe gaelic and probably manx are most likely in latin-8
02:54:06 <kallisti> `run words --gaelic 25
02:54:09 <HackEgo> ghaoir fhach ruigh neo-chàn bhilean curra meilleisteasnap chruagal chia fileas shìonaireal h-ainn-bhrùc dùmhneal cionag throig ionnag choit geula rachd chlas sàcrach rànda eangannasach sgrobha peal
02:55:17 <kallisti> `run words --manx 25
02:55:20 <HackEgo> charrey miljey anaaee rollagh doonish goaldagh neulhee cheuan chyn dobbree fadee bric rattee spoonrit bein been argaght gheeanagh cursulfey ogh cooyl-laueerea dy-beagh cane y-oayrtaghnagh naittyrt
02:55:55 <kallisti> hm.
02:56:04 <kallisti> honestly I can't tell a difference between latin-8 and latin-1 here.
02:56:34 -!- [sleigh] has joined.
02:57:38 <kallisti> file dict/gaelic
02:57:39 <kallisti> dict/gaelic: ISO-8859 C program text
02:57:45 <kallisti> looool. gaelic is C programs guys.
02:58:13 <DeadlyFugu> `run words --gaelic 5
02:58:16 <HackEgo> deach troitche ghaich n-ùmhail piol
02:58:26 <DeadlyFugu> I see what you mean.
02:58:35 <kallisti> well that's latin-1
02:58:45 <kallisti> the one on my computer now is latin-8
02:58:49 <kallisti> and... they look the same to me.
02:59:25 <kallisti> but latin-1 doesn't have coverage of Manx so I'll use latin-8 for that just to be safe.
02:59:25 <[sleigh]> This Topic "Job In Bunning" Has Been Moved.\nNew Location is Here.\n.
03:00:31 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Gaelic
03:00:34 <HackEgo> 2011-12-24 03:00:34 URL:http://dl.dropbox.com/u/16495819/Gaelic [148886/148886] -> "Gaelic" [1]
03:00:35 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Manx
03:00:38 <HackEgo> 2011-12-24 03:00:38 URL:http://dl.dropbox.com/u/16495819/Manx [244365/244365] -> "Manx" [1]
03:00:42 <kallisti> `run mv Manx share/WordData/Manx
03:00:45 <HackEgo> No output.
03:00:51 <kallisti> `run mv Gaelic share/WordData/Gaelic
03:00:54 <HackEgo> No output.
03:01:01 <kallisti> `run words --manx 5
03:01:07 <HackEgo> kibbyr resh cainleen foddimagh lossey
03:01:10 <kallisti> `run words --manx 25
03:01:13 <HackEgo> andys chaite asteyr croys neuvac imbaase babbyr ferrit ghil quigh tin glene-lost stoyr an meefolsey shoilliney cosoylcher anchummit gad fargid stroayrtagh eadoob moggloo shirreeue impiraghaer-thunt
03:01:28 <kallisti> guys is that what manx looks like
03:01:33 <kallisti> `run words --gaelic 25
03:01:36 <HackEgo> caorail stràcais shìobh seas seirc snais déidh shuar h-aon rann fhuil fiabha fhéil bair stàil n-òsd macadaid leun samhagradh sapaid crùide fasgair thluathruair tàir chart
03:02:05 <kallisti> screw it. :P
03:02:58 <kallisti> that's enough 8-bit encoding hell for one day.
03:06:47 <kallisti> ..and people think Unicode is difficult to work with.
03:08:28 -!- micahjohnston has quit (Quit: Leaving.).
03:09:28 <kallisti> @tell elliott you're from Brittania, can you tell me if my "Gaelic" and Manx datasets were decoded correctly (currently using latin-8). Perhaps you could consult one of your Celtic past lives.
03:09:28 <lambdabot> Consider it noted.
03:11:58 <[sleigh]> How did I go from esoteric.voxelperfect.net to esolangs.org ?
03:12:08 <kallisti> web browser. hyperlinks
03:12:26 <kallisti> that's not a surprising destination to find yourself at.
03:12:37 <[sleigh]> I mean, are they *exactly* the same?
03:12:53 <kallisti> no
03:13:19 <kallisti> I don't remember how but I remember they're not exactly the same.
03:13:32 <SimonDectro> Ehhh, they're supposed to be exactly the same.
03:19:39 <kallisti> @tell elliott Oh, btw, when file says "ISO-8859" it actually means "lol this is my default response for encodings I don't know anything about"
03:19:39 <lambdabot> Consider it noted.
03:20:12 <SimonDectro> That's pretty much the standard "lol this is my default response"
03:22:12 <kallisti> SimonDectro: any idea what "gaelic" would most likely be encoded in?
03:22:27 <kallisti> latin-1 covers Scottish Gaelic, but latin-8 covers all of the gaelic languages (including Manx)
03:22:34 <kallisti> *celtic
03:23:29 <SimonDectro> UTF-8 is the only acceptable option.
03:23:46 <pikhq_> Agreed strongly.
03:23:51 <SimonDectro> Anyway, if you just say "Gaelic", you usually mean Scots Gaelic.
03:24:19 <SimonDectro> So probably latin-1 maybe?
03:24:29 <SimonDectro> Let's see the data.
03:24:48 <kallisti> SimonDectro: note that it's not my choice of encoding, everything I read in is converted to UTF-8 from that point on.
03:25:04 <SimonDectro> Yes yes yes
03:25:05 <DeadlyFugu> Is it just me, or has the chat been more interested in character encoding then esoteric languages?
03:25:16 <pikhq_> DeadlyFugu: We are consistently off topic.
03:25:21 <kallisti> I have, because of what I'm working on
03:25:21 <SimonDectro> DeadlyFugu: You will find that that's the usual for #esoteric :)
03:25:30 <SimonDectro> pikhq_: This is why I call it the "esoteric topics in computing" channel.
03:25:37 <SimonDectro> pikhq_: That way we're quite frequently on-topic.
03:25:37 <DeadlyFugu> Ahaha, I see.
03:25:51 <SimonDectro> kallisti: So ... ... ... let's see the data?
03:25:56 <pikhq_> SimonDectro: If you take it that way, then yes, we are usually on topic.
03:26:03 <SimonDectro> DeadlyFugu: Incidentally, you have not yet been invited to hack the bot.
03:26:04 <SimonDectro> `run ls
03:26:07 <HackEgo> Data.tar.bz2 \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
03:26:22 <kallisti> SimonDectro: sudo apt-get install wgaelic
03:26:38 <kallisti> SimonDectro: my data is binary, you're not going to get much from it. but it's in share/WordData
03:26:39 <DeadlyFugu> Maybe it's just me, that that does seem rather dangerous...
03:26:45 * SimonDectro just apt-get downloads :)
03:26:58 <DeadlyFugu> If someone knew what they were doing, they could easily take down the bot.
03:27:10 <SimonDectro> DeadlyFugu: Be my guest.
03:27:14 <SimonDectro> ('s my bot)
03:27:15 <DeadlyFugu> Dunno what power IRC users have, but a fork-bomb should be easy.
03:27:23 <DeadlyFugu> Nah, I'm not mean ^^
03:27:25 <kallisti> DeadlyFugu: it could be possible but it's certainly been rendered difficult or near imposible.
03:27:35 <DeadlyFugu> Difficult? How?
03:27:43 <kallisti> DeadlyFugu: because Gregor is not stupid. :P
03:27:54 <pikhq_> `ls bin
03:27:54 <kallisti> he knows what a fork bomb is, and also knows how to prevent it.
03:27:57 <HackEgo> ​? \ @ \ No \ _tmpe \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url
03:28:04 <SimonDectro> `run :(){ :|:& };:
03:28:05 <SimonDectro> OH NOOOOO
03:28:07 <HackEgo> No output.
03:28:10 <DeadlyFugu> Ahaha. I once found a loophole in a bot on a IRC channel, and made it get kicked XD
03:28:15 <pikhq_> Darn, right, the command stuff is on Egobot.
03:28:29 <SimonDectro> DeadlyFugu: Finding bugs in HackEgo gets you props on #esoteric, not kicks 8-D
03:28:33 <pikhq_> !c for(;;)fork();
03:28:47 <kallisti> SimonDectro: he was implying that the bot got kicked
03:28:48 <DeadlyFugu> SimonDectro: The bot got kicked, not me.
03:29:00 <pikhq_> Watch as it magically does... Nothing!
03:29:03 <DeadlyFugu> I think they fixed it now.
03:29:05 <SimonDectro> Oh, I misread.
03:29:18 <DeadlyFugu> But a good idea is to not have a C++ compiler completely available to the end-user.
03:29:37 <pikhq_> Anyways. Breaking the bots is tradition here.
03:29:45 <SimonDectro> `run echo 'int main(){printf("lol, C is better anyway.\n");return 0;}' > test.c; gcc test.c; ./a.out
03:29:46 <pikhq_> Because of that, the bots have become *pretty* hardened.
03:29:51 <HackEgo> test.c: In function 'main': \ test.c:1: warning: incompatible implicit declaration of built-in function 'printf' \ lol, C is better anyway.
03:29:56 <kallisti> DeadlyFugu: aside from having time/memory limits on processes, the whole thing is executed in sandbox, where the home directory is a Mecurial repository so that changes can be reverted.
03:29:57 <SimonDectro> Grrr, friggin' warnings X-D
03:30:09 <SimonDectro> Why are you all telling 'im the tricks :(
03:30:13 <SimonDectro> He's supposed to try to hack it.
03:30:19 <DeadlyFugu> Eheheh.
03:30:19 <SimonDectro> You guys take away all my fun.
03:30:36 <pikhq_> DeadlyFugu: The sandbox used to be an utterly insanely patched libc, in an empty chroot.
03:30:45 <pikhq_> It's now Usermode Linux.
03:31:05 <pikhq_> Inside the UML, you're running as root.
03:31:36 <DeadlyFugu> Hrm, he's definitely more advanced then the other bot XD
03:31:45 <SimonDectro> kallisti: Conclusion: The used characters are identical in both Latin-1 and Latin-8, hence it is in essence both.
03:32:03 <kallisti> SimonDectro: hmmm, okay. it looked pretty much identical so I couldn't tell.
03:32:15 <kallisti> I'll stick with latin-8 then.
03:32:27 <DeadlyFugu> 'run echo '/me test'
03:32:35 <SimonDectro> <pikhq_> Inside the UML, you're running as root. // nope
03:32:45 <SimonDectro> DeadlyFugu: Backtick, not single quote.
03:32:46 <DeadlyFugu> As I expected, nothing that basic will work :(
03:32:57 <SimonDectro> `run echo '/quit lolwhoops'
03:33:00 <HackEgo> ​/quit lolwhoops
03:33:09 <itidus21> deadly ahh you gotta use the ` on the tilde button
03:33:15 <kallisti> SimonDectro: oh, useful bit of information: if you're dealing with Bulgarian text in a non-Unicode encoding, chances are it's Windows-1251 or otherwise KOI8-R
03:33:22 <kallisti> latin-5 isn't commonly used.
03:33:45 <SimonDectro> kallisti: Better bit of information: If you're dealing with text that's not in UTF-8, beat the person who encoded it with a rusty pipe.
03:33:54 <kallisti> Cyrillic character sets are a huge clusterfuck pre-unicode, apparently.
03:34:19 <SimonDectro> (To be fair I should say "not Unicode", it doesn't really need to be UTF-8 specifically, although it ought to be)
03:34:22 <[sleigh]> `run echo '\r\nJOIN ##'
03:34:25 <HackEgo> ​\r\nJOIN ##
03:34:26 <itidus21> ` vs '
03:34:26 <DeadlyFugu> What OS does he run?
03:34:32 <DeadlyFugu> Ubuntu or Debian, I'm guessing?
03:34:34 <SimonDectro> [sleigh]: You want echo -e
03:34:37 <SimonDectro> DeadlyFugu: Debian.
03:34:40 <[sleigh]> `run echo -e '\r\nJOIN ##'
03:34:44 <HackEgo> ​. \ JOIN ##
03:34:51 <itidus21> fugu: the trouble is that theres 2 kinds of apostrophes and hackego uses the strange one on the tilde key
03:35:03 <SimonDectro> itidus21: The one that isn't an apostrophe?
03:35:09 <itidus21> yup
03:35:12 <kallisti> SimonDectro: don`t tell him that.
03:35:16 <SimonDectro> :)
03:35:24 <DeadlyFugu> `run dpkg --get-selections
03:35:27 <HackEgo> dpkg: failed to open package info file `/var/lib/dpkg/status' for reading: No such file or directory
03:35:37 <DeadlyFugu> Well that failed :(
03:35:44 <[sleigh]> `run echo -e 'A\r\nB\r\nC'
03:35:47 <HackEgo> A. \ B. \ C
03:36:07 <kallisti> SimonDectro: I'm guessing the /usr/share/dict stuff is in mixed encodings for historic/compatibility reasons or something.
03:36:10 <DeadlyFugu> Hrm...
03:36:12 <kallisti> it really should all be converted to UTF-8 though.
03:36:14 <SimonDectro> kallisti: Probably :(
03:36:28 <SimonDectro> kallisti: Probably more historical/hysterical than compatibility.
03:36:39 <SimonDectro> As much as I like this name,
03:36:41 -!- SimonDectro has changed nick to Gregor.
03:36:42 <[sleigh]> `run man man
03:36:45 <HackEgo> man: can't open the manpath configuration file /etc/manpath.config
03:36:48 <Gregor> Man, man! Man!
03:37:03 <DeadlyFugu> Clever, he replies to /msg's with /msg's.
03:37:11 <kallisti> shocking
03:37:13 <Gregor> Ohyeah, you can privmsg.
03:37:17 <Gregor> Hm, I suppose I should add manpath.
03:37:22 <kallisti> I wasn't aware that was a unique feature of hackego
03:37:26 <kallisti> I thought almost every good bot did that.
03:37:39 <DeadlyFugu> Really? lol.
03:37:43 <Gregor> kallisti: But many bad ones don't ;)
03:37:45 <kallisti> my bot does it anyway.
03:37:50 <DeadlyFugu> I've never seen a bot that does that untill now.
03:38:00 <kallisti> maybe you hang out with bad programmers.
03:38:07 <kallisti> or people who like bad bot libraries.
03:38:09 <DeadlyFugu> I used to use it to annoy people on IRC channels, since that had no clue who was controlling the bot.
03:38:09 <Gregor> We Esoterians are better.
03:38:58 <DeadlyFugu> s/that/they
03:39:04 <kallisti> Gregor: I'm thinking about writing an IRC bot in Glass. :>
03:39:08 <Gregor> 8-D
03:39:11 <kallisti> because I'm a masochist.
03:39:39 <Gregor> Idonno if that's so masochistic, people have written some crazy stuff in Glass.
03:39:42 <[sleigh]> @tell PiRSquared17 test
03:39:43 <lambdabot> Consider it noted.
03:39:50 <kallisti> Gregor: they're all masochists too.
03:39:52 -!- [sleigh] has changed nick to PiRSquared17.
03:39:55 <Gregor> 'struth.
03:39:56 <PiRSquared17> .
03:39:56 <lambdabot> PiRSquared17: You have 1 new message. '/msg lambdabot @messages' to read it.
03:40:23 <Gregor> PiRSquared17: Do not use lambdabot for secure messaging. It is not a secure means of communication.
03:40:26 <Gregor> X-P
03:40:55 <DeadlyFugu> Gregor, one can't cd .. D:
03:40:55 <Gregor> (I should probably restrict "X-P" too ... I may inadvertently start using it as a stand-in for tongue-face)
03:40:57 <kallisti> @tell oerjan Did you get that Norwegian cocaine I asked you about?
03:40:57 <lambdabot> Consider it noted.
03:41:11 <PiRSquared17> lol
03:41:18 <Gregor> DeadlyFugu: Sure one can, ones changes to cwd merely don't continue from invocation to invocation.
03:41:23 <Gregor> *one's
03:41:32 <DeadlyFugu> I meant with HackEgo
03:41:56 <DeadlyFugu> Also, rm . says 'Is a directory'
03:42:03 <kallisti> Gregor: or maybe instead of writing yet another IRC bot I should rewrite words.pl in Haskell.
03:42:08 <kallisti> DeadlyFugu: okay?
03:42:10 <Gregor> DeadlyFugu: Uhhh, yeah, 'rm .' doesn't work anywhere ...
03:42:25 <DeadlyFugu> Lol, stupid me.
03:42:33 <Gregor> `run rm -rf .
03:42:36 <HackEgo> rm: cannot remove directory: `.'
03:42:43 <kallisti> rm doesn't work on directories at all without other options.
03:42:47 <kallisti> like that.
03:43:08 <Gregor> Hm, did I leave my C junk around?
03:43:09 <Gregor> `ls
03:43:12 <HackEgo> Data.tar.bz2 \ a.out \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ test.c \ wisdom
03:43:16 <Gregor> `run rm a.out test.c
03:43:19 <HackEgo> No output.
03:43:27 <kallisti> `run rm Data*
03:43:31 <HackEgo> No output.
03:43:35 <Gregor> kallisti: Was just about to do that.
03:43:51 <kallisti> `run words --bulgarian --russian 25
03:43:58 <HackEgo> ​провахмате шлено исто тугаване ремонодук пудыши мъству провка дорокачавалото фразбиструму приберщвлет драламину двученна макрообмит совательозеровавши вседаго усъ блионителн преденция бства сираних позитод ползачещяли изрушав
03:44:31 <Gregor> -- A thrilling novella by ... whatever Russian person is on #esoteric .
03:45:20 <kallisti> I don't know if we have any Russians.
03:46:19 <kallisti> it would be interesting to randomly generate a sentence structure and then randomly generate words but only using markov models for the relevant part of speech.
03:46:22 <kallisti> *model
03:46:23 <kallisti> +a
03:46:32 <Gregor> 8-D
03:46:44 <Gregor> Oh god I'm starting to use "8-D" as a stand-in for tongue-face.
03:46:48 <DeadlyFugu> Gregor, if an operation takes too long, your bot just times out, right?
03:46:57 <kallisti> `run sleep 1000000000
03:46:59 <Gregor> DeadlyFugu: Times out that operation, yes.
03:47:12 <Gregor> kallisti: And it's based on wall time, not CPU time ;)
03:47:27 <kallisti> Gregor: I was merely providing an example. :>
03:47:29 <HackEgo> No output.
03:48:18 <Gregor> In fact the previous system (before I wrote UMLBox) was based on CPU time.
03:49:32 <DeadlyFugu> Gregor: Can I upload a interpreter for a esolang to it?
03:49:54 <kallisti> `help
03:49:55 <Gregor> DeadlyFugu: Yyyyyyyyyyyyyessss, but that's the point of EgoBot and I haven't yet merged them.
03:49: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/
03:50:08 <DeadlyFugu> Oh.
03:50:23 <DeadlyFugu> How would one use EgoBot then?
03:50:27 <Gregor> DeadlyFugu: If you want to add an interpreter to EgoBot, check out http://codu.org/projects/egobot/hg/ and give me a bundle.
03:50:27 <kallisti> ~help
03:50:29 <Gregor> !help
03:50:30 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
03:50:34 <Gregor> !help languages
03:50:34 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
03:50:41 <kallisti> !help userinterps
03:50:41 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
03:51:00 <kallisti> `words --eng-all --eng-1M 25
03:51:08 <HackEgo> nttn artfule mduanb sign lymansie lesce prive cassey avo headetero mameat ligh callywel lee pita gresanim ngib mannuatumiel halay far levelorre den maunem purastpe ranx
03:51:12 <DeadlyFugu> Ah.
03:51:20 <pikhq_> mameat!
03:51:42 <kallisti> so artfule
03:52:04 <kallisti> that command would have completely timed out in my previous version. SO GOOD
03:52:09 <Gregor> "headetero mameat" is the sound of a man desperately trying to convince himself and others that he's straight while choking on another guy's wang.
03:52:25 <DeadlyFugu> Gregor: Could I upload a interpreter for a esolang I made (In a few hours...) and mess with it on HackEgo?
03:52:26 <kallisti> that's... an interesting interpretation.
03:52:35 <Gregor> DeadlyFugu: Sure.
03:52:52 <Gregor> DeadlyFugu: Within reason you can do pretty much whatever you want, that's the point *shrugs*
03:52:55 -!- kmc has quit (Quit: Leaving).
03:53:01 <DeadlyFugu> Cool.
03:53:04 -!- kmc has joined.
03:53:08 <Gregor> DeadlyFugu: Oh, you'll want `fetch <url> btw.
03:53:11 <kallisti> Gregor: notice the improved pseudorandomness thanks to the installation of Math::Random::MT::Perl
03:53:14 <DeadlyFugu> I know.
03:53:23 <Gregor> kallisti: Man, it's SO MUCH MORE PSEUDORANDOM NOW.
03:53:27 <DeadlyFugu> Although wouldn't wget work?
03:53:41 <Gregor> DeadlyFugu: No (actually, highly restricted) network access.
03:53:45 <itidus21> it's so pseudorandom that you could easily mistake it for random
03:53:53 <DeadlyFugu> Oh, I see.
03:53:55 <Gregor> itidus21: Let's not get crazy.
03:54:11 <DeadlyFugu> Does `fetch have a limit?
03:54:15 <DeadlyFugu> (In filesize)
03:54:23 <Gregor> DeadlyFugu: Yes, it's the same as the limit on all files in the filesystem, 10M.
03:54:26 <kallisti> mersenne twister is actually pretty damn good, but I doubt it has any perceptible different in this case.
03:54:32 <kallisti> *difference
03:54:40 <DeadlyFugu> Oh, my intepreters tiny compared to that ^^
03:56:23 <Gregor> DeadlyFugu: In case the distinction between `<cmd> and `run <cmd> was unclear (and it's significant if you want to make an interpreter frontend), `<cmd> is parsed like shell #! lines: a command, one space, and then everything else is a single raw argument (even if it has spaces in it). `run <cmd> is parsed by sh.
03:56:49 <DeadlyFugu> Ah, I see.
03:57:28 <DeadlyFugu> Maybe I'm stupid or something, but I can't mkdir
03:57:39 <pikhq_> `mkdir foo
03:57:41 <pikhq_> `ls
03:57:42 <HackEgo> No output.
03:58:00 <Gregor> DeadlyFugu: It's a weird issue with how it handles persistence in the filesystem (that is, through Mercurial). It won't keep empty directories.
03:58:07 <Gregor> DeadlyFugu: Make sure to put something there in the same command line.
03:58:15 <Gregor> Why hasn't ls returned yet >_>
03:58:28 <DeadlyFugu> Gregor, noob question, how do I do both in the same command line?
03:58:32 <HackEgo> MinesoVM \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
03:58:34 <kallisti> ; or &&
03:58:37 <Gregor> DeadlyFugu: ;
03:58:42 <kallisti> && makes sure the last command was successful
03:59:06 <pikhq_> DeadlyFugu: man sh
04:00:06 -!- kmc has quit (Quit: Leaving).
04:00:24 -!- kmc has joined.
04:02:03 <DeadlyFugu> Gregor, in chat shouldn't ` be unneeded?
04:02:08 <DeadlyFugu> s/chat/privmsg
04:02:22 <Gregor> DeadlyFugu: *eh*
04:03:36 -!- kmc has quit (Client Quit).
04:03:50 <kallisti> DeadlyFugu: I think it's better for a bot to act consistently regardless of where it's being used.
04:04:01 <kallisti> for example, bots that don't use a single prefix character for commands
04:04:03 <kallisti> like lambdabot.
04:04:19 <kallisti> fungot: and fungot, which is always consist
04:04:20 <fungot> kallisti: so operation can be between aaa and a
04:04:26 <kallisti> exactly.
04:04:34 -!- MDude has changed nick to MSleep.
04:04:53 <monqy> ^ fungot
04:04:57 <PiRSquared17> Is there a reason http://esolangs.org/w/api.php is disabled?
04:05:08 <DeadlyFugu> "cp: missing destination file operand" I get that when I tried to move a .txt file, but moving an executable was fine?
04:05:26 <kallisti> DeadlyFugu: paste the command plz
04:05:40 <DeadlyFugu> Me: `cp ./source.txt ./Mineso/source.txt
04:05:53 <DeadlyFugu> Bot: cp: missing destination file operand after `./source.txt ./Mineso/source.txt' \ Try `cp --help' for more information.
04:06:11 <Gregor> <Gregor> DeadlyFugu: In case the distinction between `<cmd> and `run <cmd> was unclear (and it's significant if you want to make an interpreter frontend), `<cmd> is parsed like shell #! lines: a command, one space, and then everything else is a single raw argument (even if it has spaces in it). `run <cmd> is parsed by sh.
04:06:12 <kallisti> you have to use -T in that case.
04:06:18 <kallisti> DeadlyFugu: man cp
04:06:23 <DeadlyFugu> Oh.
04:06:35 <Gregor> And, uh, no, you don't have to use -T ...
04:06:51 <kallisti> oh
04:06:54 <kallisti> DeadlyFugu: use `run
04:06:59 <DeadlyFugu> I did.
04:07:02 <kallisti> Gregor: I misread the man :P
04:07:08 <kallisti> DeadlyFugu: not according to your paste.
04:07:12 <kallisti> and the error output
04:07:22 <DeadlyFugu> Er.. No, I mean, I did afterwards.
04:07:41 <DeadlyFugu> When Gregor quoted himself, I did.
04:07:47 <kallisti> oh
04:07:56 <kallisti> tl;dr
04:08:54 <DeadlyFugu> What? I can't cd?
04:08:59 <kallisti> you can
04:09:06 <kallisti> it doesn't remain between invocations
04:09:08 <DeadlyFugu> Oh sorry, needs run.
04:09:12 <kallisti> also that.
04:10:38 -!- kmc has joined.
04:14:15 -!- cswords_ has joined.
04:17:21 -!- cswords__ has quit (Ping timeout: 240 seconds).
04:18:01 -!- Patashu has quit (Ping timeout: 240 seconds).
04:28:28 -!- myndzi has quit (Read error: Connection reset by peer).
04:29:03 <kallisti> Gregor: "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv: 10.0.1) Gecko/20100101 Firefox/10.0.1"
04:29:13 <kallisti> Gregor: is there a possible safer User-Agent string to go with?
04:30:05 <kallisti> I guess the Mozilla/5.0 part is all that most web servers look for.
04:30:13 <Gregor> Safer in what sense?
04:30:31 <kallisti> To get the "normal" web page on requests
04:30:38 <kallisti> instead of, say, mobile pages.
04:31:28 <Gregor> All web sites are either agnostic to all non-mobile UAs or treat a (overly) strict set of substrings as the chosen ones, so even "Gecko" would probably be sufficient.
04:31:42 <DeadlyFugu> Gregor, can not execute binary file D:
04:31:49 <kallisti> chmod +x file
04:31:58 <DeadlyFugu> Did that, it won't execute.
04:32:03 -!- myndzi has joined.
04:32:08 <DeadlyFugu> It says permission denied if you don't do that.
04:32:19 <kallisti> ah. well then it can't execute the binary file.
04:32:24 <kallisti> DeadlyFugu: how did you compile it?
04:32:26 -!- GreaseMonkey has quit (Quit: The Other Game).
04:32:46 <kallisti> `ls bin
04:32:47 <Gregor> `file Mineso/MinesoVM
04:32:49 <HackEgo> ​? \ @ \ No \ _tmpe \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url
04:32:50 <DeadlyFugu> On Ubuntu 11.10 using normal make
04:32:54 -!- aloril_ has joined.
04:33:08 <kallisti> `ls
04:33:11 <HackEgo> Mineso \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
04:33:16 -!- lifthrasiir has joined.
04:33:19 <kallisti> `run file Mineso/*
04:33:21 <DeadlyFugu> It doesn't use any libraries other then the standard C++ ones.
04:33:21 <HackEgo> Mineso/MinesoVM: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped \ Mineso/source.txt: ASCII text
04:33:23 <Gregor> Why won't it file for me >_>
04:33:27 <HackEgo> Mineso/MinesoVM: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
04:33:33 <Gregor> kallisti: 64-bit only.
04:33:35 <Gregor> Err
04:33:37 <Gregor> DeadlyFugu: ^^^
04:33:50 <DeadlyFugu> Oh, it's 64 bit?
04:33:58 <DeadlyFugu> D:
04:33:59 <Gregor> `run file /bin/bash
04:34:02 <HackEgo> ​/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
04:34:10 <DeadlyFugu> Would appear so.
04:34:34 <Gregor> I'm from the FUTUUUUURE
04:34:35 <kallisti> Gregor: so do I even need to put platform information? Could I just have "Mozilla/5.0 Gecko/200101" ?
04:34:49 <Gregor> kallisti: Probably.
04:34:59 <Gregor> kallisti: elliott actually made a "perfect" UA a while ago.
04:35:09 <Gregor> `pastelogs elliott.*user.*agent
04:35:19 <Gregor> (Greppin' 1GB of logs woooh)
04:35:30 -!- aloril has quit (Ping timeout: 240 seconds).
04:35:31 -!- lifthras1ir has quit (Ping timeout: 240 seconds).
04:36:00 <kallisti> `logs mmap.*motherfucker
04:36:09 <kallisti> Gregor: not to mention the string "elliott" is going to get tested a lot.
04:36:20 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
04:36:21 <HackEgo> No output.
04:36:30 <Gregor> Grrrf, mine timed out X-D
04:36:32 <kallisti> `log mmap.*motherfucker
04:36:55 <zzo38> Two way of avoiding it finding the command to ask the logs: [1] Put square brackets around one letter [2] Send message to private
04:37:11 <HackEgo> No output.
04:37:35 <itidus21> `log
04:37:37 <Gregor> kallisti: Oct 26 21:13:38 <elliott> self.webkit_settings.props.user_agent = 'Mozilla/5.0 AppleWebKit KHTML Gecko Chrome Safari'
04:37:45 <HackEgo> 2007-02-25.txt:04:27:42: <xor> ~kill 0
04:37:46 <kallisti> lol
04:37:53 <kallisti> Gregor: are you sure that's perfect?
04:38:00 <Gregor> elliott claimed it was.
04:38:05 <itidus21> `log
04:38:09 <HackEgo> 2011-06-02.txt:19:57:44: <HackEgo> No output.
04:38:12 <Gregor> It pretty much convinced everything that it was sufficiently up to date.
04:38:15 <Gregor> lol, good log choice.
04:38:30 -!- Madoka-Kaname has quit (Read error: Connection reset by peer).
04:38:55 <itidus21> after months of experience i discovered the raw `log command a few weeks ago
04:39:53 <kallisti> congrats.
04:40:13 <DeadlyFugu> Ffffs.
04:40:26 <Gregor> After years of experience, I discovered what a horimarmy rionnnsbecomphelcaequin this channel can be.
04:40:27 <DeadlyFugu> I got my interpreter working, but forgot to disable debug mode.
04:40:42 <DeadlyFugu> So he just returns random crap untill the cutoff, the script isn't ran at all >_>
04:40:58 -!- Madoka-Kaname has joined.
04:40:59 <Gregor> lol
04:40:59 -!- Madoka-Kaname has quit (Changing host).
04:40:59 -!- Madoka-Kaname has joined.
04:40:59 <DeadlyFugu> Well it's ran, but I can't see the output.
04:41:04 <zzo38> I will try to make the computer, it is the idea, to have both Forth and BASIC programming built-in, that can be accessed when turn on, but even if you don't know about those things you can still just put the disc and push START, or do other things
04:41:08 <DeadlyFugu> `run cd ./Mineso; ./mineso
04:41:11 <HackEgo> MINESO VM V1 ALPHA \ COPYLEFT 2011 DEADLYFUGU \ Usage: ./mineso [filename] \ 45 \ 49 \ 10 \ 60 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49 \ 49
04:41:36 -!- azaq23 has quit (Quit: Leaving.).
04:41:37 <DeadlyFugu> That's alot of 1s...
04:41:47 <itidus21> Gregor: for me, ork is the most interesting language i have seen.. the idea appeals to my sense of absurdity
04:42:07 <PiRSquared17> !help userinterps
04:42:08 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
04:42:12 <kallisti> this is my user agent on chrome: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
04:42:14 <PiRSquared17> !help languages
04:42:15 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
04:42:19 <Gregor> zzo38: Mac computers are like that, although sort of the inverse, you have to choose at startup to /see/ the Forth shell, not to boot without using it. It's pretty restrictive though.
04:42:22 <Gregor> (Also, only Forth)
04:42:32 <PiRSquared17> !haskell [] ++ []
04:42:40 <EgoBot> ​[]
04:42:50 <kallisti> Gregor: so it pretty much covers all of the same points.
04:42:59 <Gregor> itidus21: I assume you've seen http://esolangs.org/files/ork/src/beer.ork
04:43:17 <zzo38> Gregor: I know how that works because I have worked with that things before. However my idea a bit different.
04:43:19 <Gregor> kallisti: Yup, that's Chrome alright. I still prefer elliott's though.
04:43:26 <itidus21> i hadn't seen it until just now
04:43:54 <kallisti> Gregor: there's less stuff to maintain for future released of rolebot :P
04:43:58 <kallisti> *releases
04:45:20 <DeadlyFugu> Well, my interpreter totally isn't intended for use over IRC, but it works ^^
04:45:31 <DeadlyFugu> `run cd ./Mineso; ./mineso
04:45:39 <Gregor> DeadlyFugu: You'll probably want to put a script around it to pass in source.
04:45:57 <DeadlyFugu> What do you mean?
04:46:03 <HackEgo> MINESO VM V1 ALPHA \ COPYLEFT 2011 DEADLYFUGU \ Usage: ./mineso [filename] \ Hello World! \ \ VM END \ Press ENTER to continue...
04:46:26 <DeadlyFugu> As you can see, there's a tiny little 'Hello World!' amungst the rest of that XD
04:46:27 <Gregor> kallisti: You could have the web page for rolebot (whatever this is) grab all user agents and then just barf together all the words it finds.
04:46:44 <kallisti> Gregor: web page? ha. ha. ha.
04:47:36 <kallisti> Gregor: also rolebot is a bot written in perl that, among other things, is intended to facilitate pen and paper RPGs over IRC.
04:47:39 <Gregor> Oh by the way guys, HackEgo has a wiki counterpart: http://hackiki.org/
04:48:26 <kallisti> Gregor: oh I know. I just have no use for it. :P
04:49:01 <zzo38> Probably I intend to include a few features of other computer BASIC so that the programs from other books are mostly compatible with it. I am not exactly sure how to put both Forth and BASIC; but an idea I have is to make the BASIC interpreter just a program written in Forth and accessible by typing BASIC at the ok prompt.
04:50:40 <kallisti> Gregor: I could include every operating system name just for good measure.
04:50:50 <kallisti> but I think that's not needed.
04:50:50 <zzo38> (Of course whatever I decide, the book will need to specify how it works for the computer will need to specify how it works.)
04:50:51 <Gregor> kallisti: That's the way!
04:51:06 <Gregor> Lesse if I can grep some nonsense out of my server logs.
04:51:33 <kallisti> Windows Linux FreeBSD Mac NT 4.54 2.3 1.0.1 6.2 10.0.1
04:51:38 <itidus21> zzo38: is the idea a universal basic?
04:51:44 <kallisti> just random operating systems and version numbers.
04:53:05 <itidus21> oh i scrolled up now
04:53:06 <zzo38> itidus21: Mostly, yes.
04:53:24 <kallisti> `run words --eng-fiction 50
04:53:34 <HackEgo> lei ilatul outio borhyn bearne outhweibersle chin book term marium kenne mensign cunit onfy famitschl orgain sinsubser gabble swomen casica phsonnarentcr scan vetual clcwined wherrurin dem blc pet fel figula tushippebacu hool larez know pustfunk ntting fuffectu zff govi cuddammaesuly ctic the vatingdon ted wyd stersvil cwl ant compric albachype
04:54:13 <Gregor> kallisti: Grepping my server logs suggests the following: http://sprunge.us/TLiJ
04:54:24 <itidus21> zzo38: the biggest problem with the idea is that it's impossible
04:54:25 <kallisti> hahahaha nice.
04:54:27 <DeadlyFugu> `run cd ./Mineso; ./mineso
04:54:30 <HackEgo> output: Hello World!
04:54:42 <DeadlyFugu> Woo, no more long waiting or useless text! :D
04:54:43 <kallisti> Gregor: well, I pretty much have to use that as a user agent.
04:54:56 <Gregor> Yup
04:55:05 <kallisti> my bot will be a veritable chameleon of the internet.
04:55:06 <zzo38> itidus21: I know it is impossible; that is why I try to make it almost
04:55:09 <kallisti> literally all things at once.
04:55:10 <Gregor> DeadlyFugu: Prefixing it with "output: " is pretty weird though.
04:55:14 <itidus21> ;_;
04:55:16 <Gregor> kallisti: More like a horrible chimera.
04:55:31 <kallisti> Gregor: oh I should remove "mobile" though
04:55:32 <DeadlyFugu> Gregor, I guess so.
04:55:59 <Gregor> kallisti: Darn, you're right! My greppage isn't smart enough :(
04:56:06 <kallisti> GINGERBREAD
04:56:10 <kallisti> I wonder what that is
04:56:15 <itidus21> zzo38: i like the subculture/scene/underground of 8bit basic too... even though i am not so good at it
04:56:19 <kallisti> MRSPUTNIK wtf
04:56:21 <Gregor> kallisti: Android.
04:56:28 <Gregor> (Android Gingerbread)
04:56:42 <Gregor> Y'know, ever since I gave up on the tongue-face smiley, I'm capable of a much wider range of emote-ions than I ever was before.
04:56:45 <zzo38> Maybe the startup screen should display the information about version number, GNU GPL notice, notice to push START for run inserted software and other button for file manager and configuration menu and so on, note to type in BASIC for writing programs in BASIC, possibly a few other things, and the Forth "ok" prompt.
04:56:46 <kallisti> "http://www.redtube.com/84424
04:56:51 <kallisti> looooool
04:56:55 <Gregor> I think I'm almost to one week.
04:56:59 <kallisti> ^porn
04:57:15 <zzo38> I intend the book will include all the Forth commands available and all the BASIC commands available.
04:57:26 <Gregor> NORMALLY I would yell at you for posting porn, but since you noted that several lines later, I guess it's OK >_> <_<
04:57:28 <NihilistDandy> http://img820.imageshack.us/img820/1641/itsfinetrustme.png
04:57:33 <NihilistDandy> And they still haven't fixed it
04:57:58 <zzo38> itidus21: Which specific systems for example? Which have you used mostly?
04:58:00 <itidus21> zzo38: what i am wondering is are you intending to have one interpreter which can handle any program written in any old listing of basic programs?
04:58:15 <itidus21> mostly just qbasic 1.0 on 8086/80286
04:58:32 <DeadlyFugu> Lol NihilistDandy. I think they're trying to tell you it's fine.
04:58:37 <kallisti> Gregor: it's my Markov bot reflex.
04:58:47 <kallisti> or maybe my spam bot reflex
04:58:50 <kallisti> I have one of those too.
04:58:50 <NihilistDandy> DeadlyFugu: I'm in the Super Meat Boy database… right now.
04:58:54 <NihilistDandy> wut
04:59:11 <itidus21> zzo38: the brute force method would seem to be just emulating every known platform ;_l
04:59:16 <itidus21> ^ ;_;
04:59:24 <DeadlyFugu> NihilistDandy, that does look pretty dangerous.
04:59:28 <zzo38> itidus21: Yes, I intend that you can handle most (I cannot possibly handle all) program from old type-in program books. For some purposes, I can have optional OPTION commands to set up various things if needed
04:59:38 <NihilistDandy> DeadlyFugu: It is absolutely retarded
05:00:07 <NihilistDandy> And that image has been up on /r/gamedev for nearly a full day
05:00:13 <kallisti> http://sourcereal.com/ I wonder what the purpose of this site actually is.
05:00:26 <zzo38> Such as, OPTION EMULATE to set other options to closely match a specific computer, OPTION SPEED to insert delays between commands to make it slow down, OPTION CHARSET to change character sets, and so on.
05:01:02 <kallisti> Cereal can be defined as something that is made from cereal. One can put it in a bowl, on a plate, or leave it in a box. Cereal is a nice thing to think about and sometimes eat. Sour cereal is an example of a type of cereal with spices.
05:01:03 <DeadlyFugu> Wow, they could really do with a better password then 'editor'
05:01:14 <zzo38> And that in most generic BASIC programs, no OPTION commands will be needed.
05:01:59 <NihilistDandy> srsly
05:02:07 <zzo38> I could give the emulation files different names if necessary so that I do not have to use their trademarks
05:02:19 <kallisti> Gregor: I'm guessing "libwww" is is likely "libwww-perl"
05:02:45 <kallisti> Gregor: obviously someones LWP code is not as sophisticated as /mine/
05:02:54 <itidus21> zzo38: branching to another of your old topics, although i have had arguments over NES emulation, what i have in mind is not actually to emulate a NES
05:03:31 <itidus21> but rather to build a NES-like thing from the ground up for a modern operating system which uses efficient means to carry out the tasks
05:03:54 <Gregor> kallisti: lol
05:03:57 <DeadlyFugu> Woo. It's surprisingly fun using your esolang over IRC XD
05:05:28 <kallisti> yes IRC programming is the best kind
05:05:42 <zzo38> itidus21: Sorry, I do not completely understand.
05:06:07 <kallisti> > 2 + 2 --I love when this times out
05:06:07 <lambdabot> 4
05:06:25 <kallisti> it does it quite frequently with my bot. Probably a result of my constantly abysmal network connection.
05:06:41 <kallisti> er, well, no
05:06:43 <kallisti> that doesn't make any sense.
05:06:50 <kallisti> I don't really know why it does that.
05:08:02 <itidus21> zzo38: like uh.. the nes graphics primitive is just those little 8x8 blocks.. and this can be really be expressed in windows api terms as: bitblt(memdc1,0,0,8,8,memdc2,0,0,SRCPAINT); (apologies for windows reference since i am not linux-knowing)
05:08:06 <kallisti> why is optimizing Haskell so satisfying.
05:08:18 <itidus21> had to look up that stupid function of course
05:08:30 <kallisti> DeadlyFugu: did you figure out how to get your interpreter working with a script?
05:08:40 <DeadlyFugu> kallisti: Somewhat.
05:08:48 <DeadlyFugu> `run cd ./Mineso; ./mineso square.txt
05:08:52 <DeadlyFugu> `run cd ./Mineso; ./mineso square.txt
05:08:55 <HackEgo> output: 81 \
05:09:00 <kallisti> so. no
05:09:06 <DeadlyFugu> Should be called power, not square.
05:09:13 <kallisti> in other words you can't do things like
05:09:13 <zzo38> itidus21: I would probably use SDL instead that way it work on Windows and on Linux.
05:09:22 <kallisti> `mineso (code here)
05:09:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: mineso: not found
05:09:29 <itidus21> zzo38: well then SDL fits my idea too
05:09:29 <DeadlyFugu> Now that'd be cool.
05:09:34 <kallisti> DeadlyFugu: it's also possible.
05:09:50 <DeadlyFugu> I'm slack, so I'll write a shell script that does that ^^
05:10:01 <kallisti> I'll give you a hint: hackego puts everything into the first argument to the command.
05:10:08 <itidus21> zzo38: and you could also replace the weird NES sound coding with actual sound files
05:10:15 <kallisti> so, in sh, that would be $1 that refers to your program text.
05:10:25 <DeadlyFugu> Ah, thanks.
05:10:52 <itidus21> or you could work it out somehow so that its trivial to add sounds
05:10:56 <zzo38> itidus21: It could, but you still might want audio synthesis like the NES or whatever
05:11:41 <kallisti> DeadlyFugu: also you will need a #!/bin/sh line at the top of your script
05:11:44 <itidus21> hmm.. my ideas keep growing in scope as i explain them... overall i suppose i am saying that you could have a gamemaker which will produce neslike games
05:12:09 <zzo38> Still, I think you should just make it actual NES/Famicom game.
05:12:19 <DeadlyFugu> kallisti: How can I put in a newline over IRC?
05:12:36 <DeadlyFugu> (I'm doing `run echo "Text" > file.name
05:12:41 <kallisti> two different ways
05:12:58 <kallisti> the best one is (echo "blah"; echo "blah") > file
05:13:01 <kallisti> I think.
05:13:04 <kallisti> or is it {} that's better?
05:13:10 <kallisti> Gregor: halp
05:13:14 <zzo38> (Some people do still write NES game today)
05:13:22 <DeadlyFugu> I need a newline after #!/bin/sh though.
05:13:29 <kallisti> DeadlyFugu: okay. that's how you do it.
05:13:38 <kallisti> DeadlyFugu: echo appends a newine to the end of things.
05:13:42 <DeadlyFugu> Oh.
05:13:59 <kallisti> another way is echo "blah" > file; echo "blah" >> file
05:14:23 <itidus21> zzo38: but they spend most of their time masochistically hacking away to achieve simple results :-s
05:14:27 <kallisti> itidus21: have I told you about portal chess?
05:14:33 * Gregor reappears.
05:14:40 <DeadlyFugu> Ohai
05:14:44 <kallisti> is {} better or () better
05:14:47 <kallisti> for the thing
05:14:52 <kallisti> yes. the thing.
05:14:54 <Gregor> I usually use () *shrugs*
05:15:00 <itidus21> in a way, nes coding is a bit of an esolang
05:15:08 <itidus21> noone in their right minds would make a game that way
05:15:21 <zzo38> itidus21: You could emulate GameBoy, or even GameBoy Advance, if NES is not good enough for it. But you really can make many thing with NES so you can try that.
05:15:49 <itidus21> the syllogism is indeed that noone in their right minds would use an esolang
05:15:59 <kallisti> itidus21: says the person who lives in the present, where computers are reasonably fast.
05:16:07 <kallisti> and have huge stores of memory.
05:16:16 <zzo38> Well, you do not have to be in your right minds, then, I suppose.
05:17:37 <itidus21> sorry guys im not serious
05:17:39 <kallisti> assuming a lack of civilization collapse, people of the future will probably scoff at the notion of writing programs with a keyboard and a linear stream of symbols.
05:18:07 <itidus21> i think a definition of my terms is in order
05:18:19 <DeadlyFugu> kallisti, are you suggesting 2D programming languages? D:
05:18:36 <kallisti> well most "2D" programming languages are still written in this way.
05:18:37 <kallisti> so no.
05:18:50 <kallisti> I'm actually not suggesting anything.
05:18:55 <itidus21> noone who wants to complete a reasonably complex program within an efficient timeframe would use an esolang in my uneducated opinion
05:19:03 <kallisti> Just stating that our current programming methods will be outdated at some point.
05:20:48 <itidus21> i am in a kind of hell where i am not sure if applications or languages are my priority
05:20:53 <kallisti> hmmm, what should I write in Haskell
05:21:06 <kallisti> itidus21: sounds like shitty priorities.
05:21:20 <kallisti> but between the two I'd go with languages.
05:21:21 <itidus21> its just objectivity
05:21:29 <DeadlyFugu> kallisti, my script doesn't work :S
05:21:36 <DeadlyFugu> Just says 'no output'
05:21:36 <kallisti> DeadlyFugu: what's it complaining about?
05:21:36 <zzo38> kallisti: Write ephemeris software to calculate how far is from here to the moon
05:22:03 <kallisti> I'm bad at astronomy
05:22:16 <itidus21> theres little holes that have crept into my logic over the decades
05:22:27 <zzo38> kallisti: Then learn by looking at Wikipedia.
05:22:33 <itidus21> i don't know how they got there
05:22:51 <itidus21> maybe it's all this aspartame
05:22:55 <kallisti> zzo38: eh...
05:24:13 <kallisti> I might write my portal chess backend/server in Haskell.
05:24:30 <zzo38> Yes make a chess
05:25:14 <myndzi> portal chess haha.
05:25:21 <kallisti> yes, it's a thing I made.
05:25:25 <kallisti> I just haven't written down the rules yet.
05:25:27 <myndzi> sounds like fun, what are the rules?
05:25:32 <kallisti> oh god.
05:25:33 <myndzi> i mean, when/how do you place portals
05:25:36 <kallisti> can I summarize?
05:25:40 <myndzi> please do :P
05:25:44 <myndzi> i'm just curious what the idea is
05:26:05 <kallisti> your bishops are portals, the direction they're facing determines the portal opening.
05:26:23 <kallisti> they also no longer move like bishops, and instead move more like a knight but with an extended range.
05:26:37 <DeadlyFugu> Trololol, kallisti it wasn't working cause I couldn't code in my own esolang
05:26:39 <myndzi> and you're SOL if one gets captured?
05:26:50 <DeadlyFugu> Works fine if I use correct syntax
05:26:56 <kallisti> if one gets captured the other one explodes, capturing everything adjacent to it. :)
05:27:28 <kallisti> but portals will be marginally difficult to capture, because they can jump over pieces like knights, and also can't be captured from the direction they're facing.
05:27:43 <myndzi> that does make it kind of interesting
05:27:52 <myndzi> inb4 portals in the corners
05:27:53 <myndzi> :P
05:27:57 <kallisti> other pieces have this directionality property as well. Each turn you can move a single piece and, if it has directionality, rotate its direction
05:28:07 <kallisti> you may also choose to keep a piece stationary and rotate it alone.
05:28:42 <myndzi> playetested at all, or just an idea?
05:28:44 <DeadlyFugu> Killisti: Are there lies about getting cake at the end of the game?
05:28:49 <kallisti> myndzi: just an idea.
05:28:51 <DeadlyFugu> s/Ki/ka
05:28:53 <myndzi> aha
05:28:53 <kallisti> DeadlyFugu: no.
05:29:03 <DeadlyFugu> :(
05:29:14 <DeadlyFugu> Anyway, got a script thingy working ^^
05:29:21 <DeadlyFugu> `./min.sh "-11=111111<1>11111111111]1"
05:29:24 <itidus21> kallisti: not only have you told me about portal chess but i got quite deep into the discussion.. \o/ but it was a long time ago
05:29:24 <HackEgo> output: 5 \ 4 \ 3 \ 2 \ 1 \ 0 \
05:29:50 <kallisti> the primary offensive pieces are the cannons, which are the rooks. one is upside down, and can shoot in any diagonal direction. the other shoots in cardinal directions. they move like kings.
05:30:08 <kallisti> they're unique in that they have projectile capturing ability.
05:30:12 <myndzi> haha, it makes me think of the cannons in mario in the airships
05:30:19 <myndzi> BOOM *rotate* BOOM
05:30:21 <kallisti> and projectiles interact with portals in the way you would expect.
05:30:53 <kallisti> but currently the rules d not specify that cannons have a direction, they can shoot any direction they're capable of shooting.
05:31:01 <kallisti> their slow movement counteracts this ability.
05:31:11 <kallisti> but they're important pieces. pretty much every piece is vital.
05:31:13 <myndzi> i'm curious how knights interact with portals ;)
05:31:32 -!- augur has quit (Remote host closed the connection).
05:31:34 <myndzi> since they don't really move "through" squares
05:31:35 <itidus21> one interesting aspect of nature is that everything in our environment is accepted... in our work we never change our environment from being invalid to being valid
05:31:41 <itidus21> somehow it is _always_ valid
05:31:57 <itidus21> there are no mistakes
05:32:18 <itidus21> as in... a mistake is merely a subjective interpretation
05:32:22 <kallisti> knights are called arrows, and move like bishops. their direction is the way their nose faces. any projectile that crosses an arrows path is redirected in the direction of the knight.
05:32:36 <itidus21> or is that just my own world view?
05:32:45 <kallisti> arrows ignore ownership of projectiles, and are immune to both (ignoring special exceptions to this rule)
05:33:07 <itidus21> my weird world view which leads me to difficulties in socializing
05:33:38 <myndzi> ah
05:34:23 <kallisti> so the way I see the game working is that in early game you want to get your arrows out
05:34:36 <kallisti> which act as proxies to your cannons.
05:35:09 <myndzi> sounds like a whole lotta bouncin' going on
05:35:12 <kallisti> also there's a huge variety of tricks you can pull. players will need to be careful of how they use arrows because careful planning by your opponent can allow him to turn your arrows against you.
05:35:15 <myndzi> did you ever play... uhh, chase?
05:35:17 <myndzi> i think it's chase
05:35:33 <itidus21> uh.. like.. theoretically there are no erroneous chessboard configurations
05:35:48 <myndzi> it's basically on a hex "cylinder" with dice as your pieces
05:35:49 <itidus21> although some of them may be garden of eves
05:36:01 <myndzi> you can move the number of spaces indicated on the face of your die
05:36:11 <myndzi> and when you capture dice, your opponent has to compensate with other dice
05:36:24 <myndzi> also bouncing around and reflection involved
05:36:39 <zzo38> I made a chess variant once, where in addition to chess pieces you also put dice on the board
05:36:58 <itidus21> zzo38: hey man you just gave me a great idea there
05:37:02 <myndzi> i made a craps variant, where instead of throwing dice you threw bishops against a wall :v
05:37:16 <kallisti> I haven't really decided what I want the queen to do, but currently the queen is the prism, and acts like an arrow except that a) it is directionless, the player can choose the direction of projectile travel as it occurs b) prisms die from unfriendly projectiles c) projectiles that pass through a prism can capture arrows
05:37:48 <itidus21> imagine if each chess piece token was infact an object with the letters on its sides P,R,Kn,B,Q,K
05:37:50 <DeadlyFugu> myndzi, what about a craps variant where you through real crap?
05:37:58 <kallisti> the king moves and captures like a king from chess. pawns, for now, move like pawns.
05:38:12 <itidus21> and suppose you had 2 sets of dice.. of different colours
05:38:17 <zzo38> itidus21: Just use the letter N not Kn for knight
05:38:26 <myndzi> DeadlyFugu: nah, that's the "shits"
05:38:27 <myndzi> ;)
05:38:39 <itidus21> zzo38: is that what you had in mind, or did i just describe something altogether different?
05:38:45 <DeadlyFugu> I see what you did there.
05:39:05 <zzo38> itidus21: In the came I made, you did have two black dice and two white dice. And the numbers did correspond to different kind of FIDE chess pieces.
05:39:12 <zzo38> So it is similar to your idea
05:39:36 <itidus21> well it is your idea.. i just figured it out
05:40:04 <kallisti> myndzi: I intend to playtest it online most likely.
05:40:11 <itidus21> you could have like 32 such dice
05:40:12 <zzo38> It is similar to my idea
05:40:17 <myndzi> probably the most convenient way ;)
05:40:23 <zzo38> Yours is another idea
05:41:15 <kallisti> maybe arrows shouldn't move like bishops though. because they restricts them to one board color.
05:41:21 <itidus21> the primary advantage being that if you lost a piece you can replace it with any old die
05:41:36 <zzo38> This is my game: http://www.chessvariants.org/index/msdisplay.php?itemid=MS123456chess
05:42:03 <myndzi> wat
05:42:06 <myndzi> jaedong is getting raped
05:42:36 <myndzi> i haven't seen any of his games for a long time but.. oh how the mighty have fallen?
05:42:58 <kallisti> myndzi: what do you think about the rules?
05:43:14 <zzo38> I can also show you a completed game of 123456 Chess, and a game that has not been completed, if you want to.
05:43:54 <myndzi> i was sort of half watching starcraft lol, i just asked because i wanted to know how the portals worked
05:43:59 <myndzi> it doesn't sound much like chess but that hardly matters
05:44:11 <myndzi> i have no idea how it would play, but it sounds like fun
05:44:21 <myndzi> definitely a computer game
05:44:25 <itidus21> you could also use playing cards as chess pieces.. one side red.. one side black.. using hearts and clubs as pawns.. king and queen as king and queen
05:45:40 <itidus21> :o
05:45:41 <zzo38> itidus21: Yes, I have thought of something similar to that too. Not only that but a few other people have invented some chess variants that use cards
05:45:53 <itidus21> i guess you could deal them face down
05:45:56 <itidus21> that could be fun
05:45:58 <DeadlyFugu> Gregor, is every file update to the HackEgo bot uploaded to the mercurial repo?
05:46:06 <kallisti> @tell Ngevd More fun Haskell programs. A program that generates palindromes in a given alphabet: http://hpaste.org/steps/49131
05:46:06 <lambdabot> Consider it noted.
05:46:22 <myndzi> LOL
05:46:23 <myndzi> wtf
05:46:28 <Gregor> DeadlyFugu: It's not "uploaded" per se, the Mercurial repo /is/ the filesystem.
05:46:29 <myndzi> this comercial
05:46:37 <DeadlyFugu> Ooh.
05:46:45 <myndzi> some kid just flushed snow down a toilet and it sprinkled all over this little girl who was like YAY SNOW
05:47:00 <DeadlyFugu> Wow lol, I've flooded the thing.
05:47:11 <itidus21> zzo38: i guess if we keep thinking for years and years we will strike upon good things
05:47:21 <DeadlyFugu> http://codu.org/projects/hackbot/fshg/ < I wonder if I ran any commands...
05:47:31 <zzo38> itidus21: Chinese chess and Japanese chess game uses flat pieces, which I prefer over the 3D figures that FIDE chess uses.
05:48:31 <itidus21> good point
05:48:32 <zzo38> Do you understand the rules for the 123456 Chess?
05:49:10 <itidus21> i didnt read it all
05:49:50 <itidus21> ah ok.. so you start with all pieces... except with addition of chess pieces
05:50:38 <itidus21> 2 pieces starting in the same place.. that sounds like it could work better in computerized chesses
05:50:50 <myndzi> shogi is fun
05:50:59 <myndzi> i like the capturing mechanic
05:51:10 <itidus21> place sharing.. cool idea
05:51:39 <zzo38> myndzi: Yes, I like shogi, too
05:51:53 <zzo38> itidus21: Well, the checkers are flat so you can easily put the rook on top of it
05:52:09 <itidus21> is that a common rule, having 2 pieces sharing one space?
05:52:21 <itidus21> it seems highly unorthodox
05:53:25 <zzo38> itidus21: Not very common, although there are a few variants where pieces can share spaces
05:53:51 <itidus21> i must admit thats something i never imagined
05:54:25 <itidus21> so suddenly i can imagine that a pawn could ride on a knight :D
05:55:08 <zzo38> itidus21: Not with standard FIDE pieces, however. If you used flat pieces then it might be able to make pieces ride on other pieces
05:55:24 <itidus21> step 1) knight jumps out as per usual.. step 2) pawn hops on it (riding it).. step 3) when knight moves, pawn is moved with it
05:55:31 <zzo38> You could also use checkers pieces which other pieces can ride on top of
05:55:49 <kallisti> itidus21: lol
05:56:05 <DeadlyFugu> Gregor, I can put a page about my language onto the wiki right? (Sorry for annoying you, I just don't want to do anything wrong)
05:56:20 <itidus21> i think it would be reasonable to say you can only dismount with a valid pawn move..
05:56:33 <itidus21> and the knight cannot dismount.. it has to be the pawn that dismounts
05:57:09 <itidus21> the stacking would be easier with dice :P
05:58:20 <kallisti> > let bfStrings = filter balanced 0 $ (`replicateM` "+-[].,") =<< [0..] where { balanced 0 [] = True; balanced _ [] = False; balanced 0 (']':_) = False; balanced n ('[':xs) = balanced (n+1) xs; balanced n (']':xs) = balanced (n-1) xs; balanced n (x:xs) = balanced n xs} in bfStrings
05:58:21 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
05:58:21 <lambdabot> against inferred type ...
05:58:23 <itidus21> also.. you could allow for enemy pawns to capture your knights
05:59:01 <kallisti> > let bfStrings = filter (balanced 0) $ (`replicateM` "+-[].,") =<< [0..] where { balanced 0 [] = True; balanced _ [] = False; balanced 0 (']':_) = False; balanced n ('[':xs) = balanced (n+1) xs; balanced n (']':xs) = balanced (n-1) xs; balanced n (x:xs) = balanced n xs} in bfStrings
05:59:01 <lambdabot> ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",...
05:59:23 <kallisti> a bit more efficient than the last one I wrote.
05:59:45 <kallisti> assuming GHC isn't amazing at optimization
06:03:31 <zzo38> DeadlyFugu: Yes, you can do so but it has to be public domain.
06:04:00 <zzo38> (That is, the article text has to be public domain. External implementations can be GNU GPL or whatever if you want to)
06:04:16 <itidus21> i don't imagine these ideas of mine make games any more strategically interesting, but still, the idea of a pawn riding a rook reminds me of riding a train.. and then teres the idea of a piece which can be loaded with unlimited other pieces
06:04:17 <DeadlyFugu> Oh, cool... Just how?
06:04:41 <DeadlyFugu> Do I just add a new page about my language and put it in the language category?
06:05:45 <DeadlyFugu> (Also, turing-complete just means the language could be turing complete. The implementation could have a drastic limit of 256 bytes of RAM or something, right?)
06:06:12 <kallisti> yes theoretical machines and physical machines are different things.
06:06:21 <zzo38> DeadlyFugu: Yes, just add a new page, put it in the language category, and add it to the language list.
06:06:46 <zzo38> itidus21: Then suggest using flat pieces as in Chinese chess
06:10:22 <zzo38> How well can this program be understood if you do not know about BytePusher, or if you do know about BytePusher: http://zzo38computer.cjb.net/prog/BytePusher/Munching_Squares.pushem
06:11:29 <NihilistDandy> DeadlyFugu: Turing-complete is Turing-complete.
06:11:46 <kallisti> NihilistDandy: that's helpful
06:11:51 <NihilistDandy> lol
06:12:06 <DeadlyFugu> Eeyup, I never thought of that.
06:12:12 <NihilistDandy> Just do what oerjan did with 3-cell BF :D
06:12:53 <NihilistDandy> That is, model a system you know to be Turing complete in your language
06:13:10 <DeadlyFugu> Well, I think mines turing complete.
06:13:15 <kallisti> DeadlyFugu: the idea with turing-completeness is that the memory is /unbounded/. Of course physical limits exist, but we're more interested in the capabilities of the language when given as much memory "as it needs"
06:13:29 <DeadlyFugu> Oh, my language could totally do that.
06:13:47 <NihilistDandy> Ifs and gotos are practically sufficient, if not a completely accurate metric
06:13:52 <DeadlyFugu> Although it's highly impracticable...
06:13:58 <kallisti> DeadlyFugu: there are several ways to test turing completeness. Sometimes an easy way to prove it isomorphic to another language. Sometimes an easy way to do this is to write a brainfuck interpreter.
06:14:06 <kallisti> however in some languages this is not as easy as it sounds.
06:14:17 <DeadlyFugu> Yeah, that's impossible to do in mine.
06:14:23 <DeadlyFugu> Well, nearly.
06:14:34 <zzo38> Have you posted the description yet?
06:14:42 <DeadlyFugu> One could hand-convert it, but I doubt I could write a program.
06:14:55 <DeadlyFugu> Nope, trying to figure out how to format it by looking at others.
06:14:55 <kallisti> DeadlyFugu: hand-convert = isomorphism
06:15:00 <NihilistDandy> Post description so we can JUDGE YOU
06:15:05 <DeadlyFugu> Okay, fine.
06:15:09 <NihilistDandy> :D
06:15:47 <kallisti> DeadlyFugu: for example, some languages prove it by saying "oh well this is equivalent to >, this is equivalent to <, this is equivalent to [, etc"
06:16:00 <DeadlyFugu> I can almost do that.
06:16:02 <zzo38> If you format it wrong, that is OK because it can be corrected (by you or by someone else)
06:16:03 <kallisti> that's essentially what an isomorphism is.
06:16:09 <DeadlyFugu> Wait, I can.
06:16:45 <kallisti> DeadlyFugu: well if you can't possibly write a brainfuck interpreter I'd say it's not really turing complete. if you can, but it's difficult, that's another thing..
06:16:52 <kallisti> that means you may want to try another way.
06:17:59 <kallisti> DeadlyFugu: if + goto + unbounded memory that can be accessed
06:18:17 <kallisti> "at an arbitrary location at an arbitrary point in time"
06:18:22 <kallisti> probably means it's turing complete.
06:18:34 <DeadlyFugu> Ah.
06:18:46 <zzo38> Some esolangs are made up it is difficult to figure out the computation class
06:18:52 <kallisti> indeed.
06:18:52 <DeadlyFugu> Well, I'm going to just say mine is, since I can convert all of mine into BF equivalents.
06:19:12 <kallisti> yes.
06:19:22 <zzo38> But can you convert any brainfuck code into your program too?
06:19:36 <DeadlyFugu> Kindof.
06:19:44 <NihilistDandy> Link?
06:19:59 <DeadlyFugu> Er... I'm trying to write it but I keep typign here. There is no link yet XD
06:21:39 <DeadlyFugu> How would I format a link to the interpreter?
06:22:07 <DeadlyFugu> It appears to go under a 'External Resources' header...
06:22:18 <DeadlyFugu> Meh, I'll just save now. Set up a .zip for the interpreter later.
06:22:26 <zzo38> Use [ and then the URL and space and text and ]
06:22:39 <zzo38> Put * at the front of the line to make a bulleted list
06:22:53 <DeadlyFugu> NihilistDandy, link so far: http://esoteric.voxelperfect.net/wiki/Mineso
06:23:07 <DeadlyFugu> The bot on here can run code written in it, I got my interpreter set up on it.
06:23:15 <NihilistDandy> Unary… interesting
06:23:21 <NihilistDandy> Example?
06:23:27 <DeadlyFugu> `./min.sh "-1<11<111>11111111111"
06:23:30 <HackEgo> output: 5 \
06:23:34 <DeadlyFugu> That adds 2 and 3.
06:24:16 <DeadlyFugu> '-1' tells it to use the addition cell, <11 tells it to put 2 in, <111 tells it to place a three in. Due to it being the addition cell, it adds it onto the previous value making it 5.
06:24:33 <NihilistDandy> What are the trailing 1s?
06:24:36 <DeadlyFugu> >11111111111 prints it as an int (I need to make that shorter :S)
06:24:38 <NihilistDandy> Ah
06:24:50 <DeadlyFugu> >1111111 is available, and makes sense.
06:25:01 <DeadlyFugu> (It's one more then 'print as ASCII char')
06:25:15 <zzo38> Please add more description
06:25:19 <NihilistDandy> `./min.sh "-1<11<111>111111"
06:25:22 <HackEgo> output: .
06:25:26 <DeadlyFugu> I'm doing that right now.
06:25:35 <NihilistDandy> Aw, no casts :D
06:25:43 <DeadlyFugu> `./min.sh "-1<111111111111111111111111111111111111111111111111111111111111111111111111>111111<11111111111111111111111111111>111111<1111111>111111>111111<111>111111=11111111111111111111111111111111>111111<1111111111111111111111111111111111111111111111111111111>111111<111111111111111111111111>111111<111>111111>11-11<111111>111111<11111111>111111=111111111111111111111111111111111>111111"
06:25:46 <HackEgo> output: Hello World!
06:26:09 <NihilistDandy> Unary map to ASCII values?
06:26:30 <DeadlyFugu> That's a short Hello World, I could make it a tad shorter if I used the multiplication cell to make the longer numbers.
06:26:40 <DeadlyFugu> The unary are treated as unsigned chars.
06:26:56 <NihilistDandy> `cat min.sh
06:26:59 <HackEgo> ​#!/bin/sh \ cd ./Mineso \ echo $1 > temp.txt \ ./mineso temp.txt
06:27:27 <NihilistDandy> `ls ./Mineso
06:27:30 <HackEgo> MinesoVM \ count.txt \ mineso \ source.txt \ square.txt \ temp.txt
06:27:34 <DeadlyFugu> Yeah, the interpreter is a program made in C++
06:27:47 <NihilistDandy> `cat ./Mineso/source.txt
06:27:50 <HackEgo> ​-1 \ <111111111111111111111111111111111111111111111111111111111111111111111111 \ >111111 \ <11111111111111111111111111111 \ >111111 \ <1111111 \ >111111 \ >111111 \ <111 \ >111111 \ =11111111111111111111111111111111 \ >111111 \ <1111111111111111111111111111111111111111111111111111111 \ >111111 \ <111111111111111111111111 \ >111111 \ <111 \ >111111 \ >11 \ -11 \ <111111 \ >111111 \ <11111111 \ >111111
06:27:54 <NihilistDandy> Neat
06:28:07 <NihilistDandy> `cat ./Mineso/MinesoVM
06:28:10 <HackEgo> ​ELF...
06:28:12 <DeadlyFugu> That's just a hello world program (With newlines. Like BF, it doesn't care for anything that isn't a recognised symbol)
06:28:24 <DeadlyFugu> Nihilist, it's written in C++ ^^
06:28:30 <NihilistDandy> `cat ./Mineso/square.txt
06:28:33 <HackEgo> ​-1111111=111-11=1111-1=@1111111>111=1>11=@11]11111111@111>11111111111
06:28:44 <DeadlyFugu> That should be called power, not square >_>
06:28:48 <NihilistDandy> `./min.sh -1111111=111-11=1111-1=@1111111>111=1>11=@11]11111111@111>11111111111
06:28:51 <HackEgo> output: 81 \
06:28:58 <DeadlyFugu> That's 3 to the power of 4.
06:29:37 <DeadlyFugu> The second and fourth unary values in there are 3 and 4. Change those to get a different value, but remember the output is a unsigned char (So it'll be mod 256)
06:30:36 <DeadlyFugu> `./min.sh -1111111=11111-11=111-1=@1111111>111=1>11=@11]11111111@111>11111111111 Five to the power of three
06:30:38 <HackEgo> output: 125 \
06:30:46 <NihilistDandy> What's "="
06:30:47 <NihilistDandy> ?
06:31:02 <DeadlyFugu> The = is set.
06:31:21 <DeadlyFugu> Even if the cell is a special cell like addition, it'll be set to the following value.
06:31:30 <NihilistDandy> I look forward to the spec, then
06:31:37 <DeadlyFugu> I'm working on it.
06:31:44 <DeadlyFugu> Thanks ^^
06:43:11 -!- PiRSquared17 has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
06:49:08 <itidus21> >bf .,|a
06:49:29 <itidus21> oops wrong way
06:49:36 <itidus21> >bf ,.|a
06:49:48 <itidus21> ok.. where have i gone wrong here :-D
06:49:57 <itidus21> wrong bf?
06:51:24 <zzo38> I think > is the wrong prefix and you need ! to separate program from input instead of |
06:51:31 <itidus21> oh
06:51:48 <itidus21> `bf ,.!a
06:51:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: bf: not found
06:52:42 <zzo38> You might need the full word "brainfuck"
06:52:48 <itidus21> ill figure this out
06:53:04 <itidus21> `log ,\[.,\]
06:53:34 <HackEgo> 2007-12-30.txt:21:43:02: <ehird`_> say (parse ",[.,]")
06:53:53 <itidus21> `log bf ,\[.,\]
06:54:02 <HackEgo> 2009-05-03.txt:08:29:05: <GregorR> !daemon cat bf ,[.,]
06:54:09 <zzo38> I don't know for sure what is the correct way, though
06:54:13 <itidus21> `log bf ,\[.,\]
06:54:19 <HackEgo> 2008-10-10.txt:20:15:34: <fungot> +ul ((^bf ,[.,]!+ul )SaS(:^)S(optbot)!):^
06:54:22 <zzo38> Maybe the prefix is ! instead of `
06:54:26 <itidus21> aha... the carat
06:54:43 <itidus21> ^bf ,.!a
06:54:43 <fungot> a
06:54:50 <itidus21> score!
06:55:44 <zzo38> Yes, ^ is the correct prefix
06:55:49 <zzo38> I forgot
06:56:15 <itidus21> was not substantially hard to determine thanks to log
06:57:31 <itidus21> ^bf ,..........!a
06:57:32 <fungot> aaaaaaaaaa
06:58:07 <itidus21> ^bf ,..........>,.<.!ah
06:58:07 <fungot> aaaaaaaaaaha
07:01:11 <itidus21> ^bf +++++,[.-]>,.<.!ah
07:01:11 <fungot> a`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ..<CTCP>h
07:01:18 <itidus21> oops
07:03:13 <itidus21> ^bf ,>+++++[<.>-]>,.<.!ah
07:03:13 <fungot> aaaaah
07:03:53 <itidus21> ^bf ,>+++++[<.>-],.<.!ah
07:03:53 <fungot> aaaaaha
07:10:48 <DeadlyFugu> NihilistDandy, http://esoteric.voxelperfect.net/wiki/Mineso Did I miss anything?
07:10:59 <DeadlyFugu> (I haven't gotten around to putting in examples yet, I know)
07:12:18 <NihilistDandy> Looks good
07:16:30 <itidus21> i think my typing above shows im not exactly an esolang wizard
07:16:43 <itidus21> but still, i approve of mineso
07:23:35 <DeadlyFugu> thanks ^^
07:24:26 <itidus21> i think memory mapping is cool
07:27:20 <itidus21> i guess thats not quite what you're doing there, but it reminds me of it.. maybe it is
07:27:37 <itidus21> blahh
07:27:51 <DeadlyFugu> I dunno what I'm doing there XD
07:30:06 <kallisti> wow so
07:30:08 <kallisti> for once I can say
07:30:16 <kallisti> that autovification is actually a pain in the ass sometimes.
07:32:46 <kallisti> !perl %h = (1 => 2); $h{foo} = 'bar'; print %h
07:32:48 <EgoBot> 12foobar
07:32:57 <kallisti> !perl %h = (1 => 2); $h{foo}->{bar}; print %h
07:32:57 <EgoBot> 12fooHASH(0x7f87b333cb98)
07:33:07 * itidus21 ponders what a samurai would look like in a plague doctor mask
07:33:11 <kallisti> !perl %h = (1 => 2); $h{foo}->{bar}; print keys %h
07:33:11 <EgoBot> 1foo
07:33:49 <kallisti> !perl %h = (1 => 2); $h{foo}->{bar}; delete $h{foo}; print keys %h
07:33:50 <EgoBot> 1
07:36:07 <kallisti> basically merely dereferencing causes a data structure to be created. I think it should only occur when a dereference is assigned to.
07:36:39 <kallisti> as checking a dereference path does not suggest that you want it to exist in the future.
08:00:37 <kallisti> @hoogle (Read a, Show a) => String -> (a -> a) -> String
08:00:38 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
08:00:38 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
08:00:38 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
08:04:46 <kallisti> > (\x -> x ++ " bottles of beer on the wall. " ++ x ++ " bottles of beer. Take one down pass it around " ++ show(read x - 1) ++ " bottles of beer on the wall. ").show =<< [99,98..1]
08:04:48 <lambdabot> "99 bottles of beer on the wall. 99 bottles of beer. Take one down pass it ...
08:05:03 <kallisti> @pl (\x -> x ++ " bottles of beer on the wall. " ++ x ++ " bottles of beer. Take one down pass it around " ++ show(read x - 1) ++ " bottles of beer on the wall. ").show =<< [99,98..1]
08:05:05 <lambdabot> ap (++) ((" bottles of beer on the wall. " ++) . ap (++) ((" bottles of beer. Take one down pass it around " ++) . (++ " bottles of beer on the wall. ") . show . subtract 1 . read)) . show =<< [99,
08:05:05 <lambdabot> 98..1]
08:05:22 <kallisti> beautiful
08:12:00 <NihilistDandy> kallisti:
08:12:01 <NihilistDandy> @pl (\ l b c f i -> l (b c f i))
08:12:01 <lambdabot> (.) . (.) . (.)
08:12:27 <NihilistDandy> More beautiful
08:12:32 <kallisti> > let f = (++ " bottles of beer").show; g = (++" on the wall").f in (\x -> g x ++ f x ". Take one down pass it around, " ++ g x) =<< [99,98..1]
08:12:32 <lambdabot> Couldn't match expected type `[GHC.Types.Char] -> m'
08:12:33 <lambdabot> against inferr...
08:12:42 <kallisti> > let f = (++ " bottles of beer").show; g = (++" on the wall").f in (\x -> g x ++ f x ++ ". Take one down pass it around, " ++ g x) =<< [99,98..1]
08:12:43 <lambdabot> "99 bottles of beer on the wall99 bottles of beer. Take one down pass it ar...
08:12:56 <kallisti> > let f = (++ " bottles of beer").show; g = (++" on the wall. ").f in (\x -> g x ++ f x ++ ". Take one down pass it around, " ++ g x) =<< [99,98..1]
08:12:58 <lambdabot> "99 bottles of beer on the wall. 99 bottles of beer. Take one down pass it ...
08:17:56 -!- oerjan has joined.
08:19:09 <kallisti> @pl (\g f x -> g x ++ f x ++ ". Take one down pass it around, " ++ g (x-1))
08:19:10 <lambdabot> ap ((.) . liftM2 (++)) (flip (liftM2 (++)) . ((". Take one down pass it around, " ++) .) . (. subtract 1))
08:19:14 <kallisti> @pl (\f g x -> g x ++ f x ++ ". Take one down pass it around, " ++ g (x-1))
08:19:15 <lambdabot> liftM2 ap ((++) .) . (. (((". Take one down pass it around, " ++) .) . (. subtract 1))) . liftM2 (++)
08:19:21 <kallisti> @pl (\x f g -> g x ++ f x ++ ". Take one down pass it around, " ++ g (x-1))
08:19:22 <lambdabot> ap ((.) . ap . ((++) .) . flip id) (ap (flip . (((.) . (++)) .) . flip id) (((". Take one down pass it around, " ++) .) . flip id . subtract 1))
08:19:35 <kallisti> @pl (\x g f -> g x ++ f x ++ ". Take one down pass it around, " ++ g (x-1))
08:19:36 <lambdabot> ap (ap . (((.) . (++)) .) . flip id) (ap ((.) . flip . ((++) .) . flip id) (((". Take one down pass it around, " ++) .) . flip id . subtract 1))
08:19:42 <kallisti> hmmm so many choices
08:21:08 -!- augur has joined.
08:22:18 <NihilistDandy> @pl (\x y z -> x + y + z)
08:22:18 <lambdabot> ((+) .) . (+)
08:24:47 <NihilistDandy> @type ((.) . (.) . (.)) ((+).(+)) (((+) .) . (+)) 2 3 4 (+1) 5
08:24:48 <lambdabot> forall a. (Num a) => a
08:24:58 <NihilistDandy> > ((.) . (.) . (.)) ((+).(+)) (((+) .) . (+)) 2 3 4 (+1) 5
08:24:59 <lambdabot> 20
08:25:10 <NihilistDandy> Well, I'll be damned, it does work
08:25:20 <NihilistDandy> ghci's not a fan, though
08:25:35 <kallisti> probably needs more instances.
08:25:47 <NihilistDandy> > ((.) . (.) . (.)) ((+).(+)) (((+) .) . (+)) 2 3 4 (+1) 6
08:25:48 <lambdabot> 22
08:25:53 <NihilistDandy> > ((.) . (.) . (.)) ((+).(+)) (((+) .) . (+)) 2 9 4 (+1) 6
08:25:55 <lambdabot> 28
08:26:08 <oerjan> :t \g f -> concat . sequence [g, f, const ". Take one down pass it around, ", g . pred]
08:26:08 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
08:26:09 <lambdabot> forall b. (Enum b) => (b -> [Char]) -> (b -> [Char]) -> b -> [Char]
08:26:20 <NihilistDandy> Had to use a mix of djinn and pl to figure out the implementation :D
08:26:44 <oerjan> kallisti: testing the police filters, or something?
08:27:07 <kallisti> oerjan: lol, no testing my IRC bot, actually.
08:27:49 <NihilistDandy> oerjan: Any idea why that would typecheck in ghci, run on lambdabot, but then not run in ghci?
08:29:03 <oerjan> :t curry $ \gf -> concat . sequence . sequence [fst, snd, const $ const ". Take one down pass it around, ", (. pred) . fst]
08:29:04 <lambdabot> Couldn't match expected type `[a]'
08:29:04 <lambdabot> against inferred type `b -> [Char]'
08:29:04 <lambdabot> Probable cause: `$' is applied to too few arguments
08:29:07 <oerjan> oops
08:29:13 <oerjan> :t curry $ concat . sequence . sequence [fst, snd, const $ const ". Take one down pass it around, ", (. pred) . fst]
08:29:14 <lambdabot> Couldn't match expected type `[a]'
08:29:14 <lambdabot> against inferred type `b -> [Char]'
08:29:14 <lambdabot> In the expression:
08:29:17 <oerjan> argh
08:29:40 <oerjan> :t sequence [fst, snd, const $ const ". Take one down pass it around, ", (. pred) . fst]
08:29:41 <lambdabot> forall a. (Enum a) => (a -> [Char], a -> [Char]) -> [a -> [Char]]
08:30:09 <oerjan> :t concat . sequence . sequence [fst, snd, const $ const ". Take one down pass it around, ", (. pred) . fst]
08:30:10 <lambdabot> Couldn't match expected type `[a]'
08:30:10 <lambdabot> against inferred type `b -> [Char]'
08:30:10 <lambdabot> Probable cause: `$' is applied to too few arguments
08:31:38 <oerjan> :t curry $ (concat .) . sequence . sequence [fst, snd, const $ const ". Take one down pass it around, ", (. pred) . fst]
08:31:39 <lambdabot> forall a. (Enum a) => (a -> [Char]) -> (a -> [Char]) -> a -> [Char]
08:31:45 <oerjan> kallisti: ^
08:31:50 <kallisti> SO ELEGANT
08:32:01 <oerjan> better than lambdabot, anyhow
08:32:50 <kallisti> oerjan: Funny story: I had that link copied from another channel while testing my bot, and accidentally pasted it here. The bot shows titles from links, and that particular site thought it was a mobile client so I was using it as my test case while spoofing user agents. OOPS.
08:33:45 <kallisti> oerjan: uh, if that's what you're talking about. I think that's what you're talking about.
08:34:12 <oerjan> NihilistDandy: try import Control.Monad.Instances
08:35:35 <NihilistDandy> Nope. Still the same error. No instance for (Num (b0 -> b0))
08:35:45 <NihilistDandy> from the use of +
08:36:02 <oerjan> oh right.
08:36:08 <oerjan> yeah that's lambdabot specific.
08:36:21 <NihilistDandy> Oh, is it?
08:36:23 <NihilistDandy> Harumph
08:36:25 <kallisti> NihilistDandy: lambdabot has fun instances for functions
08:36:37 <kallisti> > show ++ show $ 3
08:36:39 <lambdabot> "33"
08:36:48 <NihilistDandy> It's just odd that it typechecks but doesn't work :/
08:37:43 <oerjan> NihilistDandy: it typechecks because it _could_ work if the instance existed, so presumably the typechecking comes with the Num (b0 -> b0) => part to be resolved later.
08:37:52 <NihilistDandy> @type ((.).(.).(.)) ((+).(+)) (((+).).(+))((.).(.).(.)) ((+).(+)) (((+).).(+))
08:37:52 <lambdabot> Occurs check: cannot construct the infinite type: a = f a
08:37:53 <lambdabot> Expected type: (a -> f a)
08:37:53 <lambdabot> -> ((a -> f a) -> a -> f a)
08:38:04 <NihilistDandy> Well, that's even odder :/
08:40:12 <NihilistDandy> @more
08:40:17 <kallisti> oerjan: oh btw.
08:40:27 <kallisti> `worlds --swedish --finnish 25
08:40:28 <oerjan> kallisti: there wasn't any link, just a weird message that would get the police on my door under ridiculous circumstances
08:40:29 <kallisti> lol worlds
08:40:36 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: worlds: not found
08:40:39 <kallisti> `words --swedish --finnish 25
08:40:45 <HackEgo> erääval ahtukenemo fjärigolonkeillön finisioneiska tomutbituel ressa slockarkisernassas silis uperäämänne listenvast afroameen tressanovillämykiel prisertanje kallas inflacerost pärjäningorns tokainstraali vallarskituun betaan avkoppigraveill piinnalet mers viltratkomprof prockan seritetyperä
08:41:34 <kallisti> oerjan: oh, well, nevermind. :P
08:41:52 <kallisti> oerjan: unfortunately I don't have a Norwegian dictionary.
08:41:55 <NihilistDandy> @hoogle (Num (a -> a))
08:41:55 <lambdabot> Warning: Unknown type Num
08:41:55 <lambdabot> Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT
08:41:55 <lambdabot> Data.Generics.Aliases unGQ :: GenericQ' r -> GenericQ r
08:42:25 <oerjan> i don't think i have one either.
08:42:34 <NihilistDandy> @hoogle (Num (b-> b), Num b) => b -> b -> b -> (b -> b) -> b -> b
08:42:35 <lambdabot> No results found
08:42:49 <kallisti> oh nevermind I found one.
08:42:57 <kallisti> in apt-get. amazing
08:43:07 <kallisti> `paste bin/words
08:43:11 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26331
08:43:26 <oerjan> NihilistDandy: it's Num b => Num (a -> b), anyway, and quite trivial, just passing an extra argument to every function like the (->) monad does.
08:44:25 <kallisti> oerjan: what encoding do you think /usr/share/dict/norsk is going to be?
08:44:50 <oerjan> either iso-8859-1 or utf-8
08:45:03 <kallisti> okay latin-1 it is.
08:45:15 <kallisti> because it's not utf-8
08:45:29 <kallisti> it's "ISO-8859" which could be like 10 different things
08:45:52 <oerjan> well yeah but at least the first few are ~ latin-
08:46:34 <oerjan> oh i guess it could be that iso-8859-15 which replaces something with the euro sign and maybe other stuff
08:46:56 <oerjan> but none of that is going to differ in norwegian, anyhow.
08:47:18 <kallisti> I ask because I had a fun time getting Bulgarian to work earlier.
08:47:30 <kallisti> turns out the dictionary file is in windows-1251
08:47:34 <kallisti> aka cp-1251
08:47:35 <oerjan> ah.
08:47:59 <DeadlyFugu> Hrm, gonna try a 99 bottles of beer in my esolang. Should be fun/incredibly long.
08:49:41 <DeadlyFugu> Well, not that long if compared to malbolge...
08:50:33 <oerjan> <monqy> liskell (canned laughter) <-- you know that actually exists, right?
08:51:18 <NihilistDandy> Just read about it last night :D
08:51:58 <kallisti> `fetch http://dl.dropbox.com/u/16495819/Norwegian
08:52:02 <HackEgo> 2011-12-24 08:52:02 URL:http://dl.dropbox.com/u/16495819/Norwegian [796190/796190] -> "Norwegian" [1]
08:52:05 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
08:52:08 <HackEgo> 2011-12-24 08:52:07 URL:http://dl.dropbox.com/u/16495819/words.pl [4372/4372] -> "words.pl" [1]
08:52:34 <kallisti> `run chmod +x words.pl; mv words.pl bin/words; mv Norwegian share/WordData/Norwegian
08:52:37 <HackEgo> No output.
08:52:38 <kallisti> `words --help
08:52:42 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
08:52:49 <kallisti> `words --norwegian 25
08:52:52 <HackEgo> urerbunde aksorgenesvirket duverbok ynkres hambitre jarea ingene tallsveil ringens vannetstadisitters flåernehand idreiser aspillert slagejobbstrinte ovedmasene kontongsfjord selokkerer påmennomssene platene staukejule styrepene daterene øsrikhomorter traftstandernmynd delenes
08:53:18 <DeadlyFugu> `words --eng-1M
08:53:23 <HackEgo> pried
08:53:24 <kallisti> `words --norwegian --swedish --finnish 25 # 3x Scandinavia combo
08:53:27 <DeadlyFugu> Is that from a list of 1M english worrs?
08:53:29 <HackEgo> fjolari gudatsas unildunsa lønnens sæteraids prosofischniö flunstiltar polagens flert kunninännboks strömställäsi laan hultu raherromen opeutbok skreometeel pok lereiseringokn ateise maamutgaviin lanskatyy fobiditeringa hagetadiolitne småle ljutasieramma
08:53:29 <kallisti> DeadlyFugu: eng-1m is the default
08:53:33 <kallisti> DeadlyFugu: yes
08:53:51 <DeadlyFugu> Well, that's a pretty fast algorithm there.
08:53:56 <oerjan> ringens, platene, possibly "daterene" (half english loan) and delenes are genuine words
08:53:59 <DeadlyFugu> `words 1000
08:54:05 <HackEgo> poetate hyp any hygiamer jeflore pressimon exploi ordiui nece nege undium dedime belle delib papado uch sin fpen ded crac zanshi obric setz lourient imv ecula gen kin vchously domicrctroni eospiro arre sangulb mad deflin clothibedur kala speche wied courm kardct nov dvdpatneraob rwicz matourtercrof sessoi inte palade four sution ted ahi oppara caste tdted prevu brevoider comme salvemeux sibl jsto raine paga zamazdew
08:54:15 <kallisti> oerjan: it happens a bit more often in this algorithm due to the increased gram size.
08:54:32 <kallisti> but the result is the results appear more "familiar"
08:54:38 <DeadlyFugu> That was pretty fast (Assuming it got 1000, and didn't just cut the amount it got off at the most it could print)
08:54:43 <kallisti> DeadlyFugu: it cuts off at 50
08:54:50 <DeadlyFugu> :(
08:54:53 <kallisti> DeadlyFugu: my first version of this was slooooow.
08:55:01 <oerjan> lønnens, sæteraids (well it's an obvious compound word which i _hope_ finds no use), småle
08:55:19 <oerjan> actually maybe not, would be seteraids
08:55:31 <DeadlyFugu> saeteraids?
08:55:40 <kallisti> then I realized interpolating the entire dataset at runtime is stupid and instead interpolate each gram as I encounter it, then cache it for later.
08:55:45 <DeadlyFugu> Why you drop the a?
08:55:50 <kallisti> it's like Norwegian hateraid.
08:55:53 <oerjan> DeadlyFugu: the kind of aids you get in a mountain cottage
08:56:02 <kallisti> loooooool
08:56:07 <oerjan> DeadlyFugu: i mean it's not actually spelled with æ
08:56:10 <DeadlyFugu> Lol...
08:56:29 <kallisti> `addquote <oerjan> DeadlyFugu: the kind of aids you get in a mountain cottage
08:56:32 <HackEgo> 774) <oerjan> DeadlyFugu: the kind of aids you get in a mountain cottage
08:56:32 <oerjan> or well, cottage isn't quite right, i don't know the english word.
08:56:38 <DeadlyFugu> So wait, what does steraids really mean?
08:56:49 <DeadlyFugu> cottage is right.
08:56:59 <oerjan> it's where you herd cows or sheep in the summer
08:57:09 <kallisti> `words -N --norwegian --swedish --finnish 25 # BATTLE OF THE NORTHERNERS, WHO WINS THE UNINTERPOLATED BATTLE
08:57:11 <DeadlyFugu> That makes more sense.
08:57:13 <HackEgo> benreslaget pliger svineni samsyrjistaan patens häperansa hånde poisi sikaavens yleisemaallankimuka kartsystraener sårbard rettingsret asusprestretningris annven solsbade høyingensä hygiennekakensa straoppe strumsbruste senkrefisk inneresjageogras røytetsmørkeoven päisemme veietsommutkimbåndsarbeiden
08:57:27 * oerjan suddenly realizes the implications of that combination.
08:58:05 <kallisti> oerjan: is this some sort of norse mythological prophecy coming to pass?
08:58:50 <kallisti> according to fizzie the finnish generator is actually pretty palatable.
08:59:02 <kallisti> `words --finnish 25
08:59:05 <HackEgo> tehokemme mahtavastaviksemme ryöpailmissamme puuteliltavalit latukoilevin umpianomammalta anneilusteleva aammismienne eepotevinamme hirveämmöilta jätelevät lehtimustani epäisemme uljettävämäänsä jupaljastaan maammaltani ansannekkäänkäskyiksuvista affektinamme uskimillanne kiinnoon ellaan jatuksen hidaskustollamme vallamme kokelellisimmalle
08:59:32 <oerjan> kallisti: incidentally, "slaget" means the battle, so i think norwegian won.
08:59:53 <oerjan> sadly benre doesn't mean uninterpolated, or anything.
09:00:02 <kallisti> looool
09:00:05 <kallisti> shame
09:00:51 <oerjan> hånde is an archaic word, old dative of hånd "hand"
09:01:24 <oerjan> used in the set phrase "til hånde" which i'm not at the spot sure of the exact meaning of.
09:02:24 <oerjan> sårbard could have been a word. wound bard, or something, except bard is english.
09:03:00 <kallisti> `words --eng-all --norwegian 25
09:03:06 <HackEgo> uchairakta wkhikanae prod palmarch elem sainen greeurn prisiertie trykehøgskj tralanda sulfspro cruiet pumpevillierle prollpakantancasted plingskapath uzzuttiårigbe frichcot lotteem scen middh erneraehistnandin lr pdelen artere trougarte
09:03:13 <oerjan> and senkrefisk - i don't know what it means, but i've heard weirder tool names
09:03:39 <kallisti> eng-all tends to be a bit noisy
09:03:42 -!- itidus21 has quit (Ping timeout: 248 seconds).
09:03:52 <oerjan> artere could be a latin loan, if latin had such a word
09:03:58 <kallisti> probably because it's huge and has words that are probably at best borderline "English"
09:04:38 <oerjan> a juggernaut dictionary
09:04:54 <kallisti> `words --eng-gb 25
09:04:59 <HackEgo> parenk conson shian diat inc gham uan linfl tasie eapted memove bundeling lux wartu che fall ber infection bel iscipi rorouch gart dela isfacnudo vicht
09:05:06 <DeadlyFugu> `words -help
09:05:09 <HackEgo> Unknown option: e \ Unknown option: l \ Unknown option: p
09:05:24 <kallisti> lrn2shell
09:05:26 <DeadlyFugu> D:
09:05:29 <DeadlyFugu> `words -h
09:05:33 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
09:05:47 <DeadlyFugu> `words --catalan
09:05:51 <HackEgo> atran
09:06:04 <DeadlyFugu> A train! Those catalan people are genious!
09:06:20 <kallisti> oerjan: I left the --canadian-english-insane like that for obvious reasons.
09:06:36 <NihilistDandy> oerjan: google translate suggests that artere can be translated from Norwegian as "species"
09:06:37 <DeadlyFugu> `words --manx 10
09:06:40 <HackEgo> frowalkee chreimagh bascred binjer lieh-laue lheir-chlag eiy athaniarrag lieh-hooil birrinagh
09:06:50 <NihilistDandy> I don't know how well I trust their Northern tongues :|
09:06:50 <oerjan> NihilistDandy: except it's actually arter
09:06:53 <NihilistDandy> Ah
09:07:14 <DeadlyFugu> Oh, there really is a manx language >_>
09:07:17 <NihilistDandy> Is it a cased language?
09:07:24 <kallisti> oerjan: well it go arter from the norwegian dataset, and then got the e from english. :P
09:07:25 <NihilistDandy> I don't really know much about it
09:07:32 <kallisti> DeadlyFugu: ...yes
09:07:37 <kallisti> it's Manx Gaelic.
09:07:45 <DeadlyFugu> I can see that.
09:08:01 <kallisti> with "gaelic" being scottish gaelic but I really don't know for sure.
09:08:25 <DeadlyFugu> Why no eastern (excluding russian) languages on the list?
09:08:38 <DeadlyFugu> Is it due to text encoding issues?
09:08:46 <oerjan> kallisti: arterie, arter and partere are all english words, so i'm not so sure of that.
09:08:46 <kallisti> in the case of Chinese, laziness. in the case of all the others, lack of data.
09:08:58 <oerjan> *norwegian
09:08:59 <kallisti> oerjan: they got superboosted by both languages. :P
09:09:01 <oerjan> d'oh
09:09:19 <DeadlyFugu> oerjan, partere?
09:09:43 <kallisti> DeadlyFugu: I can get a chinese dataset I just haven't done it yet. It would be trivial to add with my current scripts.
09:09:43 <DeadlyFugu> I don't think that's English.
09:09:57 <DeadlyFugu> kallisti, then do it?
09:10:01 <kallisti> later.
09:10:05 <DeadlyFugu> Ook.
09:10:24 <DeadlyFugu> So wait, can't you find a Korean or Japanese dataset-thingy?
09:10:26 <kallisti> if you want to do it yourself feel free, I can show you where the data is and also my script.
09:10:33 <oerjan> DeadlyFugu: *norwegian, i said
09:10:37 <DeadlyFugu> Nah, I'll probably mess it up ^^
09:10:43 <DeadlyFugu> Oh.
09:10:54 <DeadlyFugu> Missed your correction.
09:13:11 <kallisti> http://books.google.com/ngrams/datasets here's the data
09:13:31 <kallisti> http://books.google.com/ngrams/datasets
09:13:35 <kallisti> er
09:13:37 <kallisti> http://sprunge.us/YBLC
09:14:19 <kallisti> and here's a perl script. the -m option specifies the name of the output file, -f specifies an optional regex filter, -e specifies an optional encoding, and the positional arguments are the files to read.
09:14:20 <DeadlyFugu> That looks harder to read than some esolangs >_>
09:14:50 <DeadlyFugu> I'm guessing people who know Perl can make sense of that though.
09:14:51 <kallisti> default encoding is utf8, default filter is "pretty sane"
09:14:58 <monqy> what esolangs
09:15:03 <kallisti> and, yes. for the most part. Though I occasionally do some dubious things.
09:16:03 <oerjan> `ls share/WordData
09:16:05 <HackEgo> Brazilian \ Bulgarian \ CanadianEnglishInsane \ Catalan \ Eng1M \ EngAll \ EngFiction \ EngGb \ EngUs \ Finnish \ French \ Gaelic \ German \ GermanMedical \ Hebrew \ Irish \ Italian \ Manx \ Norwegian \ Ogerman \ Polish \ Portuguese \ Russian \ Spanish \ Swedish
09:16:26 <DeadlyFugu> kallisti: That list only has a few languages, where'd you get the rest from?
09:16:28 <oerjan> isn't it just a matter of dropping a dictionary file there?
09:16:33 <kallisti> oerjan: no
09:16:45 <oerjan> shouldn't it be? :P
09:16:51 <kallisti> I don't build the ngram data from a raw dictionary on each invocation, that would be insane and inefficient.
09:17:07 <kallisti> I guess I could build it on the fly, save it, and then use it later, or something.
09:17:13 <kallisti> but that requires encoding information.
09:17:36 <kallisti> I think it's better to have the two seperate
09:17:43 <kallisti> I could add the build script to hackego I guess.
09:18:20 <kallisti> `paste `which words`
09:18:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10605 \ cat: `which words`: No such file or directory
09:18:27 <kallisti> `paste bin/words
09:18:30 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17595
09:18:41 <kallisti> DeadlyFugu: if that script is difficult to read, the actual words command itself is probably more difficult.
09:19:02 <DeadlyFugu> Really?
09:19:09 <kallisti> Really.
09:19:43 <DeadlyFugu> I dunno, typing `word then a language after two dashes seems awfully simpler then Perl...
09:19:45 -!- NihilistDandy has quit (Quit: http://haskell.org).
09:19:54 <kallisti> DeadlyFugu: that's....
09:19:57 <kallisti> not what I meant
09:20:00 <monqy> heheheheheh
09:20:08 <monqy> (word is implemented in perl)
09:20:35 <kallisti> the best language for high performance statistical computation.
09:20:49 <DeadlyFugu> `words canadian 3
09:20:54 <HackEgo> Argument "canadian" isn't numeric in int at /hackenv/bin/words line 141. \
09:21:07 <DeadlyFugu> You may or may not want to fix that.
09:21:10 <kallisti> I don't.
09:21:12 <DeadlyFugu> `words --canadian 3
09:21:14 <monqy> speaking of statistical, is there anything special about R?
09:21:16 <HackEgo> haire upsulph rebath
09:21:21 <kallisti> monqy: R?
09:21:36 <oerjan> sounds insane enough
09:21:42 <monqy> programming language for doing statistical stuff i think??
09:22:05 <monqy> i dunno much about it other than cpressey made a bot in it that used unicode snowmen to do string processing
09:22:12 <DeadlyFugu> kallisti: Replace --canadian with --perl? :D
09:22:20 <kallisti> what.
09:22:23 <monqy> waht
09:22:57 <DeadlyFugu> Eheheh. I can't read Perl :(
09:23:16 <DeadlyFugu> Looks awfully like PHP though...
09:23:24 <monqy> im now dead inside
09:23:38 <monqy> what about it looks like php the $s?
09:23:44 <monqy> how shallow
09:23:53 <DeadlyFugu> The $'s are all I remember from PHP...
09:24:06 <kallisti> hey bash Haskell looks like perl too
09:24:08 <kallisti> it has $
09:24:16 <monqy> bash haskell?
09:24:20 <kallisti> bash and haskell
09:24:20 <kallisti> they
09:24:21 <kallisti> :P
09:24:30 <kallisti> I change my mind for example midsentence
09:24:32 <monqy> haskell doesn't really have it in the same places
09:24:34 <kallisti> and then forgot to erase the old one
09:24:38 <kallisti> so I'll just roll with it instead. :P
09:24:43 <monqy> it is entirely different??
09:24:50 <kallisti> NOPE ITS $ MAN
09:24:53 <monqy> ok
09:25:04 <kallisti> SUPERFICIAL RESEMBLANCE k THAT'S THE IMPORTANT THING FOR THIS DISCUSSION
09:25:15 <DeadlyFugu> Eeyup.
09:25:51 <DeadlyFugu> my $data = $_->[0]; << What does that even do?
09:26:43 <monqy> where is it used
09:26:51 <kallisti> $_ is a special variable that is used by a bunch of perl builtins. in this case, $_ is the current value being iterated over from the for statement.
09:27:07 * DeadlyFugu thinks an 'i' would be better...
09:27:13 <monqy> why
09:27:15 <kallisti> here it's referring to a reference to an array. normally to dereference an array you use @{$var}
09:27:28 <DeadlyFugu> I can slightly understand want's happening there.
09:27:34 <kallisti> but for a simple variable you can use @$_ as a shorthand
09:28:12 <kallisti> to get a subscript from an array ref you would have to do (@{$_}[0])
09:28:14 <kallisti> which is terrible
09:28:14 <oerjan> DeadlyFugu: all the special variables have non-alphanumeric names. also longer alphanumeric ones, with the use english; pragma
09:28:26 <DeadlyFugu> Riiight.
09:28:30 <kallisti> so, another shorthand that perl has is that you can write ->[0] which does the dereference as well as the subscript.
09:28:41 <kallisti> so... $_->[0]
09:28:42 <zzo38> Other than Perl, there is also AWK, which some features of Perl are based on.
09:29:21 <DeadlyFugu> I only know C/C++/Java/C#/Whateverelsecamefromthem. Perl would appear to be radically different.
09:29:28 <kallisti> only slightly.
09:29:33 <kallisti> in its special perly way
09:29:40 <kallisti> but otherwise it descends from the C/C++ "language family"
09:29:41 <DeadlyFugu> Riiight.
09:29:44 <oerjan> perl still has basic c-like block structure
09:29:45 <monqy> not lots of variety there
09:29:56 <zzo38> DeadlyFugu: O, you don't know about Haskell programming?
09:30:04 <DeadlyFugu> I saw Haskell.
09:30:08 <DeadlyFugu> Scary stuff.
09:30:10 <monqy> what
09:30:10 <monqy> no
09:30:17 <monqy> not scary at all???
09:30:32 <kallisti> monqy: we will have to enlighten him.
09:30:36 <monqy> sure
09:30:40 <DeadlyFugu> D:
09:30:45 <oerjan> you _can_ use { ; } blocks in haskell (and zzo38 likes to do so more than most), but the types of blocks are not very c-like.
09:30:53 <kallisti> but first we'll probably have to teach him some basic programming concepts related to functional programming.
09:30:59 <monqy> sure
09:31:00 <zzo38> DeadlyFugu: Learn it mathematically and then it can be understand. The way it is not understand is some people try to think of it same like other programming languages, because it isn't same way.
09:31:24 <DeadlyFugu> zzo38: That's why I found it scary. I'm not that good with maths.
09:31:47 <oerjan> you sometimes need it for lambdabot one-liners, since you cannot use indentation to disambiguate.
09:32:36 <DeadlyFugu> oerjan: There's more to C++ and Haskell then just { blocks. Bash is a C derivative if you go by that.
09:32:45 <kallisti> DeadlyFugu: one major difference between perl and those languages you listed is that Perl is dynamically typed.
09:33:15 <DeadlyFugu> *Searches dynamically typed*
09:33:19 <kallisti> ........
09:33:22 <kallisti> okay. yes. good idea.
09:33:26 <DeadlyFugu> Now that is cool.
09:33:35 <monqy> DeadlyFugu: nahhhh, c++ and haskell are just {} blocks & nothing else
09:33:44 <kallisti> it's... okay.
09:33:46 <monqy> almost the same language, really
09:33:49 <kallisti> dynamic typing has its perks
09:34:02 <oerjan> so does static typing -----###
09:34:08 <kallisti> indeed
09:34:11 <monqy> dynamic checking is awful B)
09:34:13 <zzo38> DeadlyFugu: O, OK. Well, many mathematical things are discussed in this channel sometimes related to esolang but also other things. But not always.
09:34:22 <DeadlyFugu> Oh lol, mistook dynamic types for dynamic programming.
09:34:27 <Sgeo> Can I just say that it does bother me how many language extensions Haskell has?
09:34:37 <monqy> Sgeo: no
09:34:48 <Sgeo> Lisps don't really need language extensions
09:34:57 <monqy> but they have them anyway
09:35:02 <Sgeo> ..?
09:35:20 <kallisti> I think language extensions are good.
09:36:09 <zzo38> If they added some Haskell extensions with a few features of Lisp, then you might be able to make a few more stuff with that.
09:36:21 <monqy> for scheme, there's srfis http://srfi.schemers.org/ a lot if not all of which could be considered language extensions
09:36:33 <monqy> dunno about other lisp flavours
09:36:57 <monqy> is clos regarded as an extension to common lisp
09:36:58 <oerjan> > nubBy(((>1).).mod)[2..] -- some unscary haskell
09:36:58 -!- itidus21 has joined.
09:37:01 <lambdabot> mueval-core: Time limit exceeded
09:37:05 <oerjan> argh
09:37:08 <oerjan> > nubBy(((>1).).mod)[2..] -- some unscary haskell
09:37:12 <lambdabot> mueval-core: Time limit exceeded
09:37:14 <monqy> nubby.........
09:37:22 <oerjan> did i do that wrong :(
09:37:34 <oerjan> oh duh
09:37:49 <oerjan> > nubBy(((>1).).gcd)[2..] -- i got the two versions confused
09:37:51 <lambdabot> [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101...
09:38:07 <DeadlyFugu> Wait, wut?
09:38:13 <kallisti> DeadlyFugu: some other differences include a preference for small slow easy-to-write programs over correct fast ones.
09:38:23 <kallisti> DeadlyFugu: perl is very slow.
09:38:34 <monqy> Sgeo: why wouldn't lisps need language extensions? what is a language extension? are they ever needed?
09:38:54 <DeadlyFugu> oerjan: Is nubBy a function someone wrote earlier?
09:38:59 <monqy> Sgeo: and why does it bother you that many people have extended haskell?
09:39:04 <oerjan> DeadlyFugu: it's in the standard library
09:39:07 <kallisti> !perl use feature 'say'; say "Hello, World!";
09:39:09 <oerjan> @src nubBy
09:39:09 <lambdabot> nubBy eq [] = []
09:39:09 <lambdabot> nubBy eq (x:xs) = x : nubBy eq (filter (\ y -> not (eq x y)) xs)
09:39:10 <EgoBot> Hello, World!
09:39:21 * kallisti used a language extension.
09:39:24 <DeadlyFugu> Well, that's pretty cool, if you can make it print all primes in very few characters.
09:39:26 <monqy> DeadlyFugu: you are most likely reading it incorrectly
09:39:31 <Sgeo> monqy, I guess I'm under the impression that it would be nice if a language didn't need to be extended. If changes to the language were done in the language in a straightforward manner.
09:39:40 <DeadlyFugu> monqy: probably.
09:39:43 <zzo38> I was trying to think of some kind of "IO transformer", but I don't know for sure. One thing I was think of is: newtype IOT f x = IOT (forall z. (f x -> IO z) -> IO z);
09:39:45 <kallisti> DeadlyFugu: there are other things it can do very quickly.
09:39:45 <monqy> Sgeo: what does that mean
09:39:53 <kallisti> DeadlyFugu: er, with few lines of code.
09:40:04 <DeadlyFugu> kallisti: How fast is Perl compared to Java or .NET?
09:40:08 <kallisti> slow.
09:40:09 <kallisti> slower.
09:40:10 <Sgeo> monqy, it means not needing to change the compiler to make a language extension
09:40:14 <kallisti> slowest, almost.
09:40:15 <monqy> DeadlyFugu: by Perl you mean perl?
09:40:20 <Sgeo> monqy, I guess I'm thinking more like Forth than like Lisp
09:40:25 <kallisti> monqy: pedantic much. :P
09:40:31 <monqy> kallisti: languages don't have speeds
09:40:34 <DeadlyFugu> monqy: Why you case sensitive? D:
09:40:44 <zzo38> And in Forth, most kind of language extensions can be written in Forth itself as part of the program.
09:40:47 <kallisti> monqy: you don't have to tell me that.
09:40:58 <monqy> kallisti: it was secretly directed at DeadlyFugu
09:41:08 <kallisti> how surreptitious.
09:41:17 <DeadlyFugu> Lol
09:41:18 <Sgeo> zzo38, indeed, unlike Haskell.
09:41:33 <kallisti> DeadlyFugu: but yeah the perl (implementation) is among the slowest commonly used languages.
09:41:36 <zzo38> If Haskell could somehow have something like that (don
09:41:47 <kallisti> slower than Python and Ruby and other dynamically typed scripting languages.
09:42:19 <DeadlyFugu> kallisti: So, why you use it? (Especially for an algorithm such as your word one)
09:42:22 <kallisti> perl 6 is doing some interesting stuff with allowing the syntax to be redefined at runtime.
09:42:23 <monqy> but implementation speed doesn't matter anyway right
09:42:33 <monqy> DeadlyFugu: because it's expressive???
09:42:35 <kallisti> monqy: sometimes it doesn't.
09:42:45 <kallisti> DeadlyFugu: I felt like it. It's easy to write. speed wasn't a primary concern.
09:42:46 <DeadlyFugu> monqy: Espressive? Use grass?
09:42:51 <oerjan> > fix((0:).scanl(+)1) -- ye other standard example
09:42:52 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946...
09:42:59 <zzo38> If Haskell could somehow have something like that (don't know how) then it could improve. If such an extension could be exist, to allow somehow that. Maybe by allowing you to set a structure that includes the stack and functions to compile the program?
09:43:06 <monqy> DeadlyFugu: espressive?? what's grass
09:43:17 <kallisti> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs -- this is my favorite
09:43:18 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946...
09:43:20 <DeadlyFugu> Search on the wiki
09:43:35 <DeadlyFugu> http://www.blue.sky.or.jp/grass/
09:44:02 <DeadlyFugu> You can make ASCII art to express your feelings, without disrupting the flow of the program ^^
09:44:16 <kallisti> DeadlyFugu: do you know what he meant by expressive though?
09:44:22 <DeadlyFugu> Yeah XD
09:44:26 <kallisti> good.
09:44:44 <kallisti> these things are important. :>
09:45:17 <itidus21> grass looks cool
09:45:32 <oerjan> kallisti: MINE IS SHORTER
09:45:35 <DeadlyFugu> So, I'm guessing to someone who knows Perl, Perl seems pretty easy, but to someone who doesn't, it seems pretty hard, even if they know other programming languages?
09:45:49 <monqy> DeadlyFugu: which other programming languages?
09:46:06 <DeadlyFugu> Ones which aren't similar to Perl (Likes C or Fortran or ASM)
09:46:15 <kallisti> DeadlyFugu: the equivalent C code would have been much longer, same for C++. Java is shit. C# is slightly better but pretty mediocre still. I would have used Haskell but I decided to stick with perl because I'm familiar with it (though I plan to write more Haskell programs soon)
09:46:31 <kallisti> python is... okay.
09:46:32 <DeadlyFugu> Waitwaitwait, C# is better then Java?
09:46:38 <DeadlyFugu> O.o
09:46:39 <kallisti> of course. that's like... its thing.
09:46:40 <monqy> DeadlyFugu: just like C could be funky if you only knew Prolog?
09:46:58 <kallisti> C# is like "Java with better language features and not quite as fast but that's okay"
09:46:59 <DeadlyFugu> monqy: I guess so.
09:47:26 <DeadlyFugu> Eh? I've used both C# and Java, and C# in the end just didn't seem right.
09:47:32 <Sgeo> Java's vaguely catching up
09:47:38 <monqy> vaguely?
09:47:40 <Sgeo> It's getting lambdas at some point
09:47:47 <kallisti> it's literally almost the same language, but with more features.
09:47:48 <DeadlyFugu> Plus, Eclipse is far better then VS.
09:47:51 <monqy> how can catching up be described as vague
09:48:04 <kallisti> DeadlyFugu: choice of IDE should not affect your opinion of languages.
09:48:05 <DeadlyFugu> (VSC# vs Eclipse for Java. But that's unrelated to the language itself)
09:48:10 <kallisti> indeed.
09:48:30 <DeadlyFugu> I know. Just stating, Eclipse makes it easier to code Java then VSC# makes it to code C#
09:48:35 * kallisti uses emacs for everything. This solves his IDEs problems because he never has to choose a different one.
09:48:43 <DeadlyFugu> Although VS has some pretty neat auto-complete.
09:48:43 <zzo38> I have written one Java program, which is a command-line interface to Apache POIFS, it is called DocFileExtractor
09:48:53 <monqy> ides are a pain
09:49:24 <monqy> I haven't written java in a long time
09:49:31 <DeadlyFugu> monqy: Really? Don't they like... speed up your coding or something?
09:49:39 <monqy> no they pain me
09:49:45 <DeadlyFugu> They would appear to speed mine up substantially.
09:49:53 <DeadlyFugu> How?
09:50:21 <monqy> I forget the specifics but generally how they manage things
09:50:24 <monqy> it has been a while
09:50:26 <kallisti> the main benefit is autocomplete for me, but I don't really need it. I find it funny when people who use VS end up not being able to autocomplete something in a different context.
09:50:43 <kallisti> excuse me "intellisense"
09:50:51 <DeadlyFugu> Lol.
09:50:54 <zzo38> What would the "IO transformer" I specified make? I thought of definition of lift and liftIO but am unsure of them and other things
09:50:56 <monqy> besides, coding speed isn't that much of an issue
09:51:03 <monqy> ideas speed is the issue
09:51:11 <monqy> assuming you use a half-decent language that is
09:51:34 <monqy> oh that and the speed of dealing with the pains of your language
09:51:47 <DeadlyFugu> monqy: All of that depends on the person.
09:51:49 <kallisti> IDEs help with that.
09:52:02 <oerjan> zzo38: we've discussed IO transformers before, pretty sure you cannot make a real one which works for arbitrary underlying monad. [] is a particularly awkward case.
09:52:02 <monqy> kallisti: with some pains, sure
09:52:32 <kallisti> DeadlyFugu: also the reason perl uses $_ instead of $i is because $_ is used in many other ways besdies just loops.
09:52:35 <oerjan> it essentially requires an implementation with parallel worlds.
09:52:39 <monqy> DeadlyFugu: do these people use crap languages
09:52:39 <kallisti> also $_ is not an actual index
09:52:42 <kallisti> it's the value itself.
09:53:13 <kallisti> to use $i would suggest that you're using an index, when you're not.
09:53:19 <monqy> what do you mean by the value itself
09:53:25 <kallisti> the value being iterated over.
09:53:26 <monqy> in regards to mutation and friends?
09:53:33 <monqy> or what
09:53:36 <kallisti> monqy: are you familiar with foreach loops? :P
09:53:40 <kallisti> that is what I'm talking about.
09:53:44 <zzo38> oerjan: If my specification does not make a real IO transformer, what does it make? It might still make something, even if it is not a IO monad transformer
09:53:44 <monqy> oh
09:53:48 <monqy> my brain kind of died
09:53:51 <kallisti> no worries.
09:54:00 <oerjan> zzo38: however there are some similarities to ST. there is an STT package on hackage, it has similar problems but works for _some_ underlying monads.
09:54:08 <monqy> i forgot that indices are actually a thing ahahahahahhhhaah
09:54:11 <kallisti> monqy: it's okay Haskell mind virus does weird things it's okay
09:54:11 <monqy> ahahahahahahah
09:55:07 <kallisti> DeadlyFugu: for example a lot of built-in functions will use $_ when a specific argument isn't supplied.
09:55:51 <kallisti> !perl @x = qw(a b c); print for @x;
09:55:52 <EgoBot> abc
09:56:01 <kallisti> here I'm using print with no arguments, which defaults to print $_
09:56:06 <DeadlyFugu> monqy: <monqy> besides, coding speed isn't that much of an issue \ <monqy> ideas speed is the issue
09:56:19 <monqy> DeadlyFugu: 01:50:45 < monqy> assuming you use a half-decent language that is
09:56:21 <DeadlyFugu> I'm stating some people can come up with ideas faster then they can code.
09:56:25 <zzo38> oerjan: Can you give some example too? Including my type?
09:56:32 <monqy> DeadlyFugu: must be that they use bad languages
09:56:48 <kallisti> monqy: does Haskell allow you to code at the SPEED OF IDEAS
09:56:50 <monqy> (the joke is that all languages are bad)
09:56:51 <zzo38> And what are exactly their problems?
09:56:51 <DeadlyFugu> No, I'm stating they can come up with ideas fast, not that the coding is slow.
09:56:54 <kallisti> monqy: oh
09:57:02 <DeadlyFugu> Oh lol
09:57:13 <kallisti> monqy wants thoughts to be a programming language.
09:57:19 <kallisti> so he can just appearify things.
09:57:32 <DeadlyFugu> monqy: Pseudo-code is the best your going to get :(
09:57:32 <kallisti> until that point all languages are bad.
09:57:38 <kallisti> DeadlyFugu: gross
09:57:38 <monqy> DeadlyFugu: pseudocode is awful too
09:57:42 <itidus21> DeadlyFugu: its the wishing problem (not a real term).. it's easy to spell out a desired goal in natural language, not so easy to say how to get from here to there
09:57:58 <itidus21> just something i think about
09:58:10 <kallisti> DeadlyFugu: can you read that perl code above?
09:58:11 <monqy> (itidus21 is our resident thinker)
09:58:28 <itidus21> lol
09:58:39 <kallisti> DeadlyFugu: some hints: qw(a b c) is equivalent to ('a', 'b', 'c') (where ' denotes a string, not a character, there aren't single characters in perl)
09:58:39 <itidus21> `log itidus21
09:58:45 <Sgeo> itidus21, people can have a hard time understanding what was meant in a natural language
09:58:54 <itidus21> ahahahha
09:59:02 <itidus21> oh wait.. that was sgeo not hackego
09:59:07 <DeadlyFugu> monqy: Wait, isn't pseudocode whatever-you-want-it-to-be?
09:59:08 <HackEgo> 2011-12-19.txt:20:03:28: <itidus21> its not really like birds or boxes :-)
09:59:12 <zzo38> In things such as WEB you could type natural language texts which can be documentation and/or can be cross-references and then you can define the program code for each one individually as well, and table of contents, and index
09:59:31 <kallisti> DeadlyFugu: typically not. it can be. but it most commonly is used to communicate ideas to another person, which means it follows some kind of imperative algorithmic form in most cases.
09:59:35 <itidus21> Sgeo: the best example is world peace
09:59:49 <monqy> DeadlyFugu: i was going to say something but it's basically the same as what kallisti said
09:59:50 <DeadlyFugu> kallisti: I can read the perl, yes.
09:59:59 <kallisti> DeadlyFugu: good. :)
10:00:37 <oerjan> zzo38: i don't know. i'd expect a true IOT transformer to support both lift and liftIO. can you do that?
10:00:57 <kallisti> > let { palindromes alphabet = [0..] >>= (`replicateM` alphabet) >>= (\x y -> (x++y) : map ((x++).(:y)) alphabet) `ap` reverse } in palindromes "abc"
10:00:57 <zzo38> oerjan: Yes, but I am not sure about join.
10:00:58 <lambdabot> ["","a","b","c","aa","aaa","aba","aca","bb","bab","bbb","bcb","cc","cac","c...
10:01:09 <monqy> by basically i mean
10:01:13 <kallisti> DeadlyFugu: the above Haskell generates an infinite list of every palindrome in a given alphabet.
10:01:21 <monqy> there are a lot of difference but the key point remains i think/hope
10:01:40 <monqy> empty string nominated for best palindrome
10:01:51 <itidus21> there is no possible world peace
10:01:55 <itidus21> and yet people talk about it
10:02:08 <DeadlyFugu> kallisti: I can't state that Haskell/Perl/whathaveyou isn't good for doing algorithms and whatnot.
10:02:32 <kallisti> DeadlyFugu: I wouldn't expect you to. it would be foolish. I'm just showing you some examples to familiarize you with it.
10:02:47 <DeadlyFugu> They definitely beat C, just, C seems much more like English to me, and doesn't require me to think so much about the syntax.
10:02:54 <kallisti> lol
10:03:00 <monqy> wh
10:03:02 <monqy> what
10:03:05 <kallisti> DeadlyFugu: yeah I feel the same way about COBOL
10:03:07 <kallisti> because
10:03:09 <kallisti> I don't know COBOL
10:03:19 <kallisti> so it seems harder to think about and write.
10:03:25 * Sgeo actually has some familiarity with COBOL
10:03:32 <DeadlyFugu> I've heard of cobol, but I haven't really looked at it much
10:03:51 <DeadlyFugu> That doesn't look to bad.
10:03:57 <oerjan> zzo38: if it doesn't have join, maybe it's an Applicative then, or something?
10:04:26 <kallisti> DeadlyFugu: ...I was attempting to demonstrate the fallacy you were making there, but okay.
10:04:46 <kallisti> argument from ignorance. "I don't know X, therefore it's difficult to understand."
10:04:51 <DeadlyFugu> I know.
10:05:17 <DeadlyFugu> I just looked Cobol up, and it seemed rather simple.
10:05:26 <zzo38> I think it would be: lift x = IOT ($ x); liftIO x = IOT (fmap return x >>=);
10:05:26 <Sgeo> I think I'm now capable of writing a one-liner cat program in Haskell
10:05:41 <itidus21> foo has lost the war to X
10:05:43 <kallisti> putStr =<< getContents
10:05:55 <monqy> kallisti: nope
10:06:03 <kallisti> you mean like sh cat?
10:06:08 <Sgeo> kallisti, please, let me try
10:06:15 <kallisti> or "copy input to output" cat.
10:06:21 <zzo38> oerjan: Maybe; I don't know. But I didn't say it doesn't have join. But I have not think of it, so I don't know. But maybe it is applicative, I don't know that either.
10:06:28 <kallisti> Sgeo: oops I spoiled it.
10:06:35 <DeadlyFugu> kallisti: Also, correct-use-of-cat
10:06:44 <DeadlyFugu> (Unless you meant that by sh cat)
10:06:56 <Sgeo> :t getArgs
10:06:56 <lambdabot> Not in scope: `getArgs'
10:07:00 <kallisti> there are two distinct things that "cat program" could mean
10:07:07 <Sgeo> :t System.Environment.getArgs
10:07:08 <lambdabot> IO [String]
10:07:09 <kallisti> Sgeo: oh you want to make shell cat? okay, go ahead.
10:07:24 <monqy> kallisti: there's also the third "cat program" that is both of them
10:07:32 <DeadlyFugu> kallisti: I'm guessing shell cat is the one that concatenates them?
10:07:32 <kallisti> monqy: oh, yes.
10:07:36 <kallisti> monqy: indeed.
10:07:43 * Sgeo looks up readFile
10:07:51 <kallisti> Sgeo: good thing to look up. it's very simple
10:07:54 <kallisti> :t readFile
10:07:55 <lambdabot> FilePath -> IO String
10:08:01 <kallisti> it pretty much does what it looks like it does.
10:08:09 <monqy> does it read a file
10:08:12 <Sgeo> main = getArgs >>= (join $ mapM_ putStr <$> readFile)
10:08:13 <kallisti> I bet it does.
10:08:17 <Sgeo> Does that work?
10:08:25 <monqy> does it?
10:08:34 <kallisti> main = getArgs >>= (join $ mapM_ putStr <$> readFile)
10:08:36 <monqy> first, what does work mean
10:08:37 <kallisti> !haskell main = getArgs >>= (join $ mapM_ putStr <$> readFile)
10:08:41 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
10:08:44 <kallisti> oh rite
10:09:07 <Sgeo> Hmm, probably better to not use join and rather use =<< readFile
10:09:07 <DeadlyFugu> kallisti: Slightly unrelated to the topic at hand, does Perl use streams for working with the file? Or does it do something else?
10:09:07 <monqy> but first
10:09:11 <itidus21> monqy: that depends on what does means
10:09:11 <Sgeo> But what I wrote should still wok
10:09:14 <Sgeo> work
10:09:20 <kallisti> `run runhaskell <<< 'main = getArgs >>= (join $ mapM_ putStr <$> readFile)'
10:09:22 <monqy> should it?
10:09:34 <HackEgo> ​\ /tmp/runghcXXXX279.hs:1:8: Not in scope: `getArgs' \ \ /tmp/runghcXXXX279.hs:1:21: Not in scope: `join' \ \ /tmp/runghcXXXX279.hs:1:41: Not in scope: `<$>'
10:09:37 <Sgeo> kallisti, how do you expect it to do anything without arguments
10:09:40 <kallisti> DeadlyFugu: it uses file handles like just about every other language ever.
10:09:48 <Sgeo> join is not in scope? o.O
10:09:49 <kallisti> Sgeo: was checking that it compiled, and then forgot I need imports.
10:09:57 <kallisti> Sgeo: you need Control.Monad
10:10:05 <Sgeo> Does that count against the one-liner?
10:10:12 <kallisti> no.
10:10:15 <Sgeo> Also System.Environment
10:10:29 <monqy> in conclusion it is impossible to write that sort of cat in one line
10:10:33 <oerjan> mapM_ putStr is almost certainly wrong to use here.
10:10:59 <Sgeo> o.O
10:11:01 <DeadlyFugu> kallisti: There's two ways of doing file IO, using a stream or shoving it into memory and using a pointer to that memory (C++ and friends seems to like the first >_<)
10:11:01 <monqy> I think sgeo missed things
10:11:12 <kallisti> DeadlyFugu: what
10:11:31 <monqy> DeadlyFugu: what
10:11:40 <Sgeo> What's wrong with map_ putStr?
10:11:49 * DeadlyFugu has, yet again, stated something which is probably entirely stupid
10:11:53 <kallisti> DeadlyFugu: the only difference is abstractions over file IO, the implementation is almost always the same (for linux systems)
10:11:55 <monqy> Sgeo: do you know what (mapM_ putStr) means....
10:11:56 <Sgeo> Although I guess map putStr would make more sense, and wouldn't need the join
10:12:03 <monqy> i....
10:12:07 <monqy> sgeo....
10:12:20 <monqy> you should test it
10:12:25 <Sgeo> :t mapM_ putStr
10:12:26 <lambdabot> [String] -> IO ()
10:12:52 <DeadlyFugu> kallisti: I'm talking about the abstractions.
10:13:05 <kallisti> DeadlyFugu: perl uses a filehandle, and then supplies some basic operations to read/write/etc from this file handle. very much like C but shorter to write.
10:13:10 <kallisti> an example
10:13:16 <kallisti> open my $f, "foo.txt"
10:13:22 <monqy> DeadlyFugu: "shoving it into memory and using a pointer to that memory" is hardly an abstraction
10:13:24 <kallisti> opens foo.txt in read mode and stores a file handle in $f
10:13:32 <kallisti> now you can read it line by line using <>
10:13:40 <zzo38> oerjan: Does these things I wrote seems to you?
10:13:56 <DeadlyFugu> monqy: Okay, let me reword, "I'm talking about the abstractions, or lack thereof in some cases"
10:14:08 <monqy> what?
10:14:20 <DeadlyFugu> D:<
10:14:27 <monqy> D:
10:14:35 <Sgeo> Doesn't compile
10:14:44 <itidus21> `pastelogs D:
10:14:45 <DeadlyFugu> kallisti: So, every time you call, does it read in the next line, or can you choose what lines you want to read?
10:14:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20031
10:14:57 <kallisti> while (<$f>) { s/^(.)/\u$1/; print } # capitalizes the first letter of each line
10:15:09 <kallisti> DeadlyFugu: perl is a general purpose languages, there are functions to do one and there are functions to do the other.
10:15:16 <itidus21> i didn't think that out very well
10:15:24 <DeadlyFugu> Ooh, I see.
10:15:27 <oerjan> zzo38: i don't know, i think i'm too tired.
10:15:56 <kallisti> DeadlyFugu: I've never heard of a language the restricts you from doing either of those things.
10:15:58 <Sgeo> main = getArgs >>= mapM_ (putStr <=< readFile)
10:16:00 <Sgeo> And it works
10:16:18 <itidus21> hq9x
10:16:29 <kallisti> non-esoteric language. :P
10:16:44 <kallisti> why would I be talking about those. sheesh.
10:16:46 <itidus21> hmmm.. i guess hq9x is not turing complete anyway
10:16:59 <itidus21> i dunno what computing class it is
10:17:05 <DeadlyFugu> kallisti: Maybe it's my lack of knowledge on Java's inbuilt library, but Java can only do it as a stream IMO
10:17:09 <kallisti> Sgeo: bonus points: also output stdin
10:17:10 <monqy> hq9x doesn't exist, itidus21
10:17:24 <Sgeo> kallisti, if there's no arguments?
10:17:24 <kallisti> DeadlyFugu: that is not an opinion.
10:17:36 <DeadlyFugu> Er... good point.
10:17:44 <DeadlyFugu> s/IMO/AFAIK
10:17:45 <kallisti> Sgeo: hmm, yes.
10:17:48 <itidus21> ahh hq9+
10:18:00 <monqy> maybe I have problems but it kind of bugs me that sgeo uses ((>>=) and (<=<)) rather than ((>>=) and (>=>)) or ((=<<) and (<=<))
10:18:18 <monqy> like I'm reading one way then suddenly the other
10:18:35 <Sgeo> @hoogle Handle
10:18:35 <lambdabot> System.IO data Handle
10:18:35 <lambdabot> GHC.IO.Handle data Handle
10:18:35 <lambdabot> Control.OldException handle :: (Exception -> IO a) -> IO a -> IO a
10:18:41 <Sgeo> @hoogle stdin
10:18:42 <lambdabot> System.IO stdin :: Handle
10:18:42 <lambdabot> GHC.IO.Handle.FD stdin :: Handle
10:18:58 <DeadlyFugu> Wait, what? hoogle? Haskell + Google?
10:19:12 <DeadlyFugu> Apparantly so.
10:19:15 <kallisti> DeadlyFugu: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/RandomAccessFile.html
10:19:27 <Sgeo> I can only think of ugly ways to do it
10:19:28 <Sgeo> :(
10:19:35 <monqy> :(
10:19:37 <kallisti> DeadlyFugu: InputStream also has mark and skip methods that allow similar capabilities, but not arbitrary seeking.
10:19:41 <oerjan> monqy: haskell whiplash!
10:20:04 <Sgeo> My ugly way failed
10:20:06 <zzo38> monqy: To me it is not problem; I use all four of those thing sometimes, and join and <*> and <$> and <$ really you just use what is use in that circumstances.
10:20:14 <kallisti> :t getArgs
10:20:15 <lambdabot> Not in scope: `getArgs'
10:20:30 <kallisti> @hoogle getArgs
10:20:31 <lambdabot> System.Environment getArgs :: IO [String]
10:20:31 <lambdabot> Graphics.UI.GLUT.Initialization getArgsAndInitialize :: IO (String, [String])
10:20:34 <oerjan> Sgeo: you probably need a case block
10:20:36 <monqy> it often bugs me composition and application are in the directions they are
10:20:40 <kallisti> Sgeo: yeah use a case.
10:20:48 <monqy> but cases are ugly
10:20:59 <kallisti> monqy: so I take it you never use pattern matching ever in Haskell?
10:21:18 <monqy> no pattern matching, no named arguments, no problems
10:21:22 <Sgeo> If I use a case, can it truly be considered a one-liner?
10:21:32 <monqy> Sgeo: what is a line
10:21:49 <Sgeo> It's not cheating to use { } for stuff?
10:22:16 <zzo38> But wouldn't you sometimes need to use pattern matching for some things? Especially, in case you define new datatypes, you would need to pattern match them
10:22:18 <kallisti> that depends on what you mean by line.
10:22:20 <oerjan> Sgeo: you don't even need { } if you do it cleverly.
10:22:36 <kallisti> Sgeo: if it makes you feel better use null instead
10:22:37 <kallisti> :t null
10:22:38 <lambdabot> forall a. [a] -> Bool
10:22:44 <kallisti> and then if-then-else
10:22:57 <monqy> yeah but then you have to use if-then-else
10:23:07 <oerjan> kallisti: also getContents might be better than stdin.
10:23:41 <kallisti> yes without doubt.
10:23:45 <Sgeo> I know about those but am having trouble fitting them into my currently existing code
10:23:45 <DeadlyFugu> @hoogle GLUT
10:23:45 <lambdabot> package GLUT
10:23:45 <lambdabot> Graphics.UI.GLUT.State glutVersion :: GettableStateVar String
10:23:45 <lambdabot> Graphics.UI.GLUT module Graphics.UI.GLUT
10:23:54 <DeadlyFugu> @hoogle GL
10:23:54 <lambdabot> package glade
10:23:55 <lambdabot> package gladexml-accessor
10:23:55 <lambdabot> Data.Generics.Schemes glength :: GenericQ Int
10:23:56 <kallisti> Sgeo: lambdas are cool
10:24:12 <kallisti> or do lambdas count as extra lines?
10:24:13 <monqy> kallisti: the real way to do it is use listToMaybe and maybe
10:24:17 <DeadlyFugu> Well, the GL didn't end well, but GLUT would apply Haskel can OpenGL O.o
10:24:20 <monqy> or fromMaybe
10:24:23 <monqy> one of those things
10:24:35 <kallisti> monqy: that's an option yes.
10:24:40 <monqy> basically do it in a horrible convoluted way
10:24:44 <kallisti> yes.
10:24:51 <monqy> but those are the best ways
10:24:51 <monqy> right
10:24:53 <monqy> right
10:25:07 <kallisti> right
10:25:17 <Sgeo> @hoogle OpenGL
10:25:17 <lambdabot> Graphics.Rendering.OpenGL module Graphics.Rendering.OpenGL
10:25:17 <lambdabot> package OpenGL
10:25:18 <lambdabot> package OpenGLCheck
10:25:18 <kallisti> I like to use maybe when I can.
10:25:31 -!- DeadlyFugu has left ("Happy Christmas, and a Merry New Year, Esoteric Peoples!").
10:25:48 <kallisti> that guy..
10:25:52 * kallisti abstains.
10:25:59 <monqy> me too
10:26:03 <kallisti> monqy: http://sprunge.us/hSQL I like catMaybes
10:26:08 <monqy> delicious
10:26:14 <Sgeo> :t catMaybe
10:26:15 <lambdabot> Not in scope: `catMaybe'
10:26:16 <Sgeo> :t catMaybes
10:26:16 <lambdabot> forall a. [Maybe a] -> [a]
10:26:22 <monqy> I've used catMaybes. it'sg ood.
10:26:45 <kallisti> I feel it could be generalized.
10:27:00 <kallisti> to any MonadPlus
10:27:32 <kallisti> monqy: but yeah I thought that code was particularly concise.
10:27:43 <kallisti> Haskell is good at combinatorial stuff like that.
10:27:52 <monqy> :t msum
10:27:53 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
10:27:58 <monqy> oh hm
10:28:19 <kallisti> that's pretty close I guess.
10:28:20 <monqy> and it's not DAta.Foldab.el.cOncat either
10:28:26 <monqy> :t concat
10:28:27 <lambdabot> forall a. [[a]] -> [a]
10:28:27 -!- Vorpal has joined.
10:28:31 <monqy> :t Data.Foldable.Concat
10:28:31 <lambdabot> Not in scope: data constructor `Data.Foldable.Concat'
10:28:33 <monqy> :t Data.Foldable.concat
10:28:33 <lambdabot> forall (t :: * -> *) a. (Data.Foldable.Foldable t) => t [a] -> [a]
10:28:41 <monqy> the t is in all the wrong places...
10:28:43 <kallisti> I haven't looked at Foldable yet.
10:29:13 <monqy> and it's not mconcat aagh
10:29:24 <monqy> maybe it truly doesn't exist anywhere
10:29:41 <kallisti> well I think it needs Eq as well maybe?
10:29:45 <monqy> wait
10:29:51 <monqy> i think my brain was dead for the last few minutes:
10:29:54 <monqy> would it even make sense
10:29:57 <kallisti> so it ould basically be filter (==mzero)
10:29:58 <monqy> (or has my brain just died now)
10:30:01 <kallisti> or something.
10:30:09 <kallisti> unless you can implement it with mplus somehow
10:30:11 <monqy> kallisti: but then you need the unwrapping
10:30:21 <kallisti> oh right
10:30:22 <kallisti> nevermind
10:30:27 <kallisti> MonadPlus can't do that part.
10:30:30 <monqy> yeah
10:30:53 <kallisti> monads are so greedy.
10:30:55 <Vorpal> Merry Christmas everyone!
10:31:09 <monqy> something to convert to Maybe whatever and composition with catMaybes "good enough"
10:31:19 <Vorpal> (In Sweden we celebrate on the 24th)
10:31:22 <kallisti> merry christmas eve.
10:31:24 <kallisti> Vorpal: oh I see.
10:31:27 <kallisti> heathens
10:31:31 <kallisti> Vorpal: also
10:31:35 <Vorpal> hm?
10:31:39 <kallisti> `words --swedish 25
10:31:44 <HackEgo> nackets flings parens utgav arssorlagsler avbetabil gulls utkrivningelse kursvis iglorskröp tiljövänn jodetsgrerarnas fullans knologerelse menas efterläkas lankens ansch yxlingard gens gåsa kanen brariens sundets järnt
10:32:33 <kallisti> everything you've ever dreamed of.
10:32:36 <oerjan> welcome to Yxlingard!
10:32:42 <Vorpal> hm, a few valid words there. Not that I know what they all means. But due to the word concatenation allowed in Swedish that is easy.
10:33:21 <Vorpal> I mean kursvis would mean "per course" (as in, university course for example), and "efterläkas" mean "after-linking" which I have no clue what it means
10:33:35 <Vorpal> err läkas, not länkas
10:33:36 <zzo38> Is this what catMaybes means? (>>= maybe [] return) If so, you could generalize to other MonadPlus
10:33:38 <Vorpal> read it wrong
10:33:39 <Vorpal> so
10:33:43 <Vorpal> "after-healing"
10:33:48 <Vorpal> is it like after-shave?
10:33:49 <Vorpal> perhaps
10:33:52 <Vorpal> who knowsa
10:33:53 <Vorpal> knows*
10:34:06 <zzo38> Other than list monads, that is
10:34:20 <Vorpal> oh and sundets is a perfectly valid word. But I don't know how it translates
10:34:24 <kallisti> :t maybe
10:34:25 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
10:34:31 <kallisti> zzo38: believe so yes.
10:34:41 <Vorpal> oh right: sundets = the strait's
10:34:56 <Vorpal> kallisti, ^
10:35:06 <Vorpal> what a crude language English is
10:35:28 <kallisti> English is the bee's knees and is basically the only language anyone needs to express anything in the most succinct way possible ever.
10:36:06 <zzo38> kallisti: Then you can make it work with other than list monad, doing: (>>= maybe mzero return) but I don't know how useful it becomes
10:36:24 <Vorpal> kallisti, that is a weird expression, why "bees knees"
10:36:32 <Vorpal> it doesn't even make any sense when you think about it
10:36:39 <kallisti> zzo38: less, but I could see it being useful perhaps with IO or something.
10:36:46 <kallisti> zzo38: er... no wait
10:36:51 <kallisti> zzo38: I don't know.
10:37:13 <kallisti> Vorpal: http://www.urbandictionary.com/define.php?term=bee's%20knees
10:37:22 <zzo38> It work with IO if you have a MonadPlus instance for IO. I have defined an Alternative instance for IO, so it could work MonadPlus as well
10:37:44 <kallisti> Vorpal: it's just a weird old thing that teenagers used to say probably in like the 50s or something.
10:37:49 <kallisti> I think.
10:37:52 <Vorpal> I see
10:38:00 <Vorpal> I mean, I know what it means, I just wonder why
10:38:14 <kallisti> no clue.
10:38:23 <kallisti> possible explanations are in the link though
10:38:25 <Sgeo> :t null . drop
10:38:26 <lambdabot> Couldn't match expected type `[a]'
10:38:26 <lambdabot> against inferred type `[a1] -> [a1]'
10:38:26 <lambdabot> Probable cause: `drop' is applied to too few arguments
10:38:52 <kallisti> Sgeo: wait does getArgs include the program name I don't think it does.
10:39:08 <zzo38> instance Alternative IO where { empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y; };
10:39:30 <Vorpal> brb, moving bouncer to another computer
10:39:38 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
10:39:41 <monqy> Computation getArgs returns a list of the program's command line arguments (not including the program name).
10:40:10 -!- Vorpal has joined.
10:40:21 <kallisti> monqy: map (f . g) ls
10:40:23 <kallisti> you were reading one way
10:40:26 <kallisti> then suddenly the other
10:40:29 <monqy> D:
10:41:05 <monqy> >>> is an awfully big operator name
10:41:08 <monqy> o> is much nicer
10:42:09 <Sgeo> At least it's not Factor's if
10:42:19 <monqy> hh?
10:42:29 <monqy> huh, I mean
10:42:51 <Sgeo> > 5 [ "Hello print" ] [ ] if
10:42:51 <lambdabot> <no location info>: parse error on input `if'
10:42:56 <Sgeo> oops
10:43:02 <Sgeo> > 5 [ "Hello" print ] [ ] if
10:43:02 <lambdabot> <no location info>: parse error on input `if'
10:43:08 <Sgeo> I don't remember if that's the exact thing
10:43:38 <Sgeo> But if I didn't make any mistakes, that should be a thing that tests whether the top value on the stack is > 5 and if so, print hello
10:43:46 <Sgeo> Wait, probably 5 > not > 5
10:45:41 <monqy> it is surprisingly hard to think of the most absurd way to write cat
10:49:13 -!- cheater has joined.
10:55:08 -!- zzo38 has quit (Remote host closed the connection).
10:55:19 <kallisti> getArgs >>= mapM (readFile >=> putStr) >>= (null >>> guard) >> (putStr =<< getContents)
10:55:22 <kallisti> I think this is right?
10:55:32 <kallisti> oops sorry monqy
10:55:42 <kallisti> getArgs >>= mapM (readFile >=> putStr) >>= (null >>> guard) >> (getContents >>= getContents)
10:55:56 <monqy> mmm I forgot about guard; good functionm
10:56:15 <monqy> getContents >>= getContents -- good
10:56:18 <kallisti> lol
10:56:25 <kallisti> getArgs >>= mapM (readFile >=> putStr) >>= (null >>> guard) >> (getContents >>= putStr)
10:57:11 <monqy> but / uhh
10:57:22 <kallisti> :t mapM
10:57:23 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
10:57:47 <kallisti> I think that should work, unless I'm missing something.
10:57:49 <monqy> I don't th ink that does what you want it to do
10:58:02 <kallisti> time to find out
10:59:10 <monqy> you're basically throwing out your big list of actions when you bind (null >>> guard)
10:59:18 <kallisti> oh..
10:59:32 <monqy> also
10:59:40 <monqy> is io even a monadplus?
10:59:46 <kallisti> believe so
10:59:59 <kallisti> or, well...
11:00:07 <kallisti> maybe it's when I see most often
11:00:25 <kallisti> lambdabot didn't complain about the lack of an instance though
11:00:35 <monqy> what
11:00:46 <kallisti> maybe it's "when"
11:00:48 <kallisti> I see with IO
11:00:51 <kallisti> instead of "guard"
11:00:55 <monqy> oh
11:01:09 <monqy> when makes sense yes
11:01:17 <kallisti> but will still discard the actions
11:01:36 <kallisti> unless I tell to exit or something when not.null
11:02:04 <kallisti> how do you even do that.
11:02:22 <monqy> when variants
11:02:29 <monqy> hard to name though
11:02:34 <monqy> oh
11:02:35 <kallisti> exitSuccess in System.Exit
11:02:38 <monqy> you didn't mean that
11:02:48 <monqy> hehehehh are you doing that? nice
11:02:57 <kallisti> it's a bit ugly but it lets me keep the same layout.
11:04:37 <kallisti> er so wait
11:04:46 <kallisti> how do I get it to /not/ discard all of the actions
11:04:50 <kallisti> :t getArgs >>= mapM (readFile >=> putStr) >>= (not >>> null >>> (`when` exitSuccess)) >> (getContents >>= putStr)
11:04:51 <lambdabot> Not in scope: `getArgs'
11:04:51 <lambdabot> Not in scope: `exitSuccess'
11:04:55 <kallisti> I think this suffers the same problem
11:04:59 <monqy> duplicate the actions
11:05:14 <monqy> or
11:05:22 <monqy> duplicate the list before you map stuff onto it
11:05:38 <monqy> there are lots of ways to duplicate stuff
11:05:40 <kallisti> how do I do that...
11:06:25 <monqy> arrow stuff, join (function monad), list monad stuff...
11:08:09 <kallisti> hlep
11:08:37 <monqy> ???
11:08:40 <monqy> like
11:08:43 <monqy> :t (&&&)
11:08:44 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c')
11:09:02 <kallisti> > f &&& g $ x
11:09:03 <lambdabot> Ambiguous type variable `c' in the constraints:
11:09:03 <lambdabot> `GHC.Show.Show c'
11:09:04 <lambdabot> a...
11:09:06 <kallisti> > f &&& g $ x :: Expr
11:09:07 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:09:07 <lambdabot> against inferred ...
11:09:25 <kallisti> @unpl f &&& g $ x
11:09:26 <lambdabot> ((f &&& g) x)
11:09:28 <kallisti> lol
11:09:30 <monqy> > show &&& succ $ 5
11:09:31 <lambdabot> ("5",6)
11:09:39 <kallisti> loloh
11:09:49 <monqy> the 5 goes to two places!!
11:09:50 <kallisti> so then...
11:09:54 <kallisti> instead of >>=
11:09:55 <kallisti> I want
11:09:57 <kallisti> &&&
11:10:03 <monqy> &&& is only one way to do it
11:10:13 <kallisti> no I like it.
11:10:19 <monqy> ok
11:10:24 <monqy> another great one:
11:10:48 <monqy> > ([show, succ] <*>) . return $ 5
11:10:49 <lambdabot> No instance for (GHC.Num.Num GHC.Base.String)
11:10:49 <lambdabot> arising from the literal `...
11:10:52 <monqy> oops i goofed
11:10:57 <monqy> uhh
11:11:27 <monqy> i forget how i do that one :(
11:11:36 <oerjan> getArgs >>= mapM (readFile >=> putStr) _already_ performs the actions, the part after that next >>= only gets a list of ()'s. (which is still clever, i thought that had to be wrong at first but it's enough to count the files.)
11:12:09 <monqy> oh right with <*> you have to have all the results be of the same type :(
11:12:38 <monqy> aagh
11:13:15 <oerjan> :t show &&& succ
11:13:16 <lambdabot> forall b. (Show b, Enum b) => b -> (String, b)
11:15:40 <kallisti> monqy: you lied
11:15:51 <kallisti> I thought the action was already performed. You can't really "throw them away"
11:15:54 <monqy> i wasn't thinking straight
11:15:58 <monqy> :(
11:16:03 <kallisti> no worries.
11:16:06 <kallisti> happens to me often.
11:16:15 <monqy> you're throwing away your future
11:16:19 <monqy> but
11:16:23 <monqy> in a different place
11:16:31 <monqy> a bit earlier than the (null >>> guard)
11:16:37 <kallisti> main = getArgs >>= mapM (readFile >=> putStr) >>= (not . null >>> (`when` exitSuccess)) >> (getContents >>= putStr)
11:16:40 <kallisti> this works
11:16:50 <kallisti> I think
11:16:53 <kallisti> I will test further
11:17:47 <kallisti> yeah seems to work fine.
11:17:57 <monqy> now get rid of that exit :(
11:18:17 <kallisti> oh I don't need that anymore do I.
11:19:06 <monqy> ?
11:20:10 <kallisti> awww yeah
11:20:21 <monqy> what is it now
11:20:25 <kallisti> main = getArgs >>= mapM (readFile >=> putStr) >>= (null >>> (`when` (getContents >>= putStr)))
11:20:28 <kallisti> good cat
11:20:33 <monqy> good cat
11:21:17 <kallisti> did Sgeo already finish his?
11:21:23 <kallisti> I've been working on this one for a while.
11:21:25 <monqy> maybe he gave up?
11:21:39 <oerjan> :t (null >>> (`when` ?x))
11:21:40 <lambdabot> forall a (m :: * -> *). (?x::m (), Monad m) => [a] -> m ()
11:21:55 <kallisti> I used >>> instead of . because Monqy likes everything to flow in one direction or something.
11:23:26 <kallisti> I have to agree it does look nice reading it left to right without backtracking.
11:26:00 <kallisti> is there a better way to write:
11:26:05 <kallisti> import Prelude hiding ((.))
11:26:19 <kallisti> oh wait I don't need it anymore
11:26:27 <monqy> import Preulude ()
11:26:30 <monqy> uupse
11:26:32 <kallisti> .....lol no
11:26:44 <kallisti> bad oops monqy
11:27:34 <kallisti> should I ruin this program by implementing command line options?
11:27:36 <kallisti> I don't think I should.
11:28:05 <kallisti> I'll have to resort to do notation to make it readable.
11:28:06 <monqy> like what
11:28:09 <monqy> :(
11:28:12 <kallisti> man cat
11:28:14 <kallisti> like those.
11:28:39 <kallisti> sounds like too much work.
11:28:42 <kallisti> good cat is good.
11:28:52 <kallisti> no one uses those anyway.
11:34:52 <kallisti> do you guys prefer flip f x or (`f` x) ?
11:35:25 <kallisti> I usually wish I didn't have to use either, but when I have to I prefer the infix section.
11:35:51 <monqy> whenever i'd have to use either i stop writing haskell and cry to myself
11:36:58 <kallisti> monqy: you must have a stressful life.
11:37:02 <kallisti> crying all the time.
11:37:08 <kallisti> to yourself
11:37:58 <monqy> my trick is to avoid programming
11:41:11 <kallisti> `cat @{[join ' ', @ARGV]}`
11:41:13 <HackEgo> cat: @{[join ' ', @ARGV]}`: No such file or directory
11:41:19 <kallisti> cat in perl. it even implements the command line options.
11:41:39 <kallisti> oops
11:41:42 <kallisti> print `cat @{[join ' ', @ARGV]}`
11:43:41 <kallisti> actually I think...
11:43:44 <kallisti> print <>
11:43:45 <kallisti> is cat
11:43:52 <kallisti> print<> yes
11:44:58 <kallisti> <> basically does cat-like file / stdin IO
11:45:18 <monqy> great
11:45:44 <kallisti> an EXTREMELY useful thing when writing shell utilities
11:45:51 <kallisti> that operate on files.
11:45:54 <kallisti> or optionally stdin
11:46:10 <fizzie> "print<>" is, though, one of those cats that reads all the input before printing any output.
11:46:19 <kallisti> such is life
11:46:22 <kallisti> print while<>
11:46:29 <monqy> dobulegreat
11:46:31 <kallisti> is more memory efficient, yes.
11:46:59 <kallisti> also won't hang up on infinite stdin I guess.
11:47:01 <monqy> how easy would it be to do the other cat without naming any variables
11:47:04 <kallisti> er "indefinite"
11:47:13 <kallisti> "the other cat"?
11:47:19 <monqy> the big cat
11:47:26 <kallisti> oh
11:47:27 <monqy> both things cat
11:47:32 <fizzie> The lion?
11:47:33 <kallisti> that is both things cat.
11:47:39 <monqy> oh?
11:47:41 <kallisti> yes
11:47:49 <monqy> :o
11:48:06 <kallisti> <> sccans through VARG and reads each file given, then spits them all out to you concatenated together.
11:48:12 <kallisti> if no arguments are given, it gives you stdin
11:48:12 <monqy> great
11:48:18 <kallisti> *ARGV
11:48:41 <fizzie> It even handles the "-" argument right.
11:49:05 <kallisti> in list context it gives you a list of lines (with newlines still intact) and in a while loop it reads line by line
11:49:56 <fizzie> `run echo foo > tmp.txt; echo bar | perl -e 'print<>' tmp.txt - tmp.txt; rm tmp.txt
11:49:59 <HackEgo> foo \ bar \ foo
11:50:17 <kallisti> main = getArgs >>= mapM (readFile >=> putStr) >>= (null >>> (`when` (getContents >>= putStr)))hm
11:50:21 <kallisti> ...oh
11:50:25 <kallisti> I had that on my buffer for some reason.
11:50:27 <kallisti> weird.
11:50:34 <kallisti> I was probably admiring it.
11:51:08 -!- monqy has quit (Quit: hello).
11:51:20 <kallisti> monqy: hello
11:51:45 <kallisti> someone should make <> for Haskell and put it in base somewhere.
11:51:56 <Vorpal> :t when
11:51:57 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
11:52:10 <Vorpal> @hoogle when
11:52:10 <lambdabot> Control.Monad when :: Monad m => Bool -> m () -> m ()
11:52:10 <lambdabot> System.Posix.Terminal WhenDrained :: TerminalState
11:52:10 <lambdabot> Test.QuickCheck.Property whenFail :: Testable prop => IO () -> prop -> Property
11:52:11 <Vorpal> ah
11:54:09 <kallisti> fizzie: unfortunately my code doesn't handle - at all, though I could add it in.
11:54:38 <kallisti> unless readFile '-' is stdin
11:54:42 <kallisti> but I don't think it is.
11:55:02 <fizzie> Don't worry, "print<>" doesn't handle "-u" either.
11:55:18 <oerjan> hm what does - do if there is more than one?
11:55:19 <kallisti> heh
11:55:24 <kallisti> hm
11:55:32 <kallisti> `run echo lol | cat - -
11:55:34 <fizzie> oerjan: "The cat utility shall not close and reopen standard input when it is referenced in this way, but shall accept multiple occurrences of '-' as a file operand."
11:55:35 <HackEgo> lol
11:56:18 <kallisti> fizzie: what is the point of -u exactly? backwards compatibility with something?
11:58:23 <kallisti> IO could be a MonadPlus though.
11:58:42 <kallisti> mzero = exitSuccess -- or exitFailure
11:58:54 <kallisti> hmmm, but what is mplus
11:59:48 <Vorpal> -u Write bytes from the input file to the standard output without
11:59:48 <Vorpal> delay as each is read.
11:59:53 <Vorpal> kallisti: that is what posix says
12:00:00 <kallisti> oh
12:00:07 <kallisti> man cat on my system says -u is ignored.
12:00:07 <Vorpal> -u (ignored)
12:00:10 <kallisti> yeah
12:00:11 <Vorpal> that is what gnu says yes
12:00:17 <Vorpal> kallisti: try man 1p cat
12:00:26 <Vorpal> if you have the required package installed
12:00:34 <Vorpal> otherwise just go and check the posix spec directly
12:01:03 <kallisti> mplus a b = mappend <$> a <*> b
12:01:15 <kallisti> and then have an instance (Monoid a) => IO a
12:01:17 <kallisti> or something
12:01:32 <kallisti> that's bad though.
12:01:42 <Vorpal> I only know of one *nix cat implementation in an esolang btw
12:01:49 <Vorpal> most esolang cats are just copy stdin to stdout
12:02:28 <Vorpal> I have one I wrote in befunge98 that actually does POSIX cat (except for -u because I couldn't figure out what it meant or how to do it from befunge)
12:02:49 <Vorpal> not sure if it handles the "The cat utility shall not close and reopen standard input when it is referenced in this way, but shall accept multiple occurrences of '-' as a file operand." stuff properly
12:03:38 <Vorpal> kallisti: here it is, if you are interested: http://sprunge.us/NEYE
12:04:02 <kallisti> I have a confession.
12:04:13 <Vorpal> btw, it is rather sparse befunge98
12:04:19 <kallisti> I've never properly learned befunge-98
12:04:22 <Vorpal> ah
12:04:22 <kallisti> yes.
12:04:34 <Vorpal> kallisti: the best way to learn the language is to write an implementation for it
12:04:43 <kallisti> that could be fun yes.
12:04:54 <kallisti> obviously I should begin with a compiler
12:04:58 <Vorpal> hah
12:05:08 <Vorpal> fizzie: speaking of which, any progress on jitfunge?
12:05:28 <kallisti> hmmmm jitfunge that's interesting.
12:05:31 <fizzie> No, but I still have hope.
12:05:34 -!- ais523 has joined.
12:05:43 <Vorpal> oh and don't ask me to explain that code. I can't. I wrote it 2010.
12:05:54 <Vorpal> there are plenty of comments though
12:06:06 <ais523> note to self: the 3.5" plug is not the end that goes in the ear
12:06:14 <ais523> err, 3.5mm
12:06:15 <Vorpal> ais523: you tried that?
12:06:16 <Vorpal> ouch
12:06:21 <ais523> Vorpal: no, I noticed just in time
12:06:25 <Vorpal> heh
12:07:17 <kallisti> hmmm I guess you'd need like a lookahead buffer
12:07:21 <fizzie> Anyway, you can get multiple things out of multiple -s if stdin is a terminal; e.g. echo bar > tmp.txt; cat - tmp.txt -; type in "foo" + ^D, get "foo" + "bar" out, then type in something else + ^D and that is read from the second "-".
12:07:44 <kallisti> and then when the jit sees a sequence of instructions it can compile it outputs the compilation and then jumps to point where it stopped compiling
12:07:50 <Vorpal> fizzie: right
12:08:12 <Vorpal> kallisti: iirc it traces so it is compiled if it is executed again
12:08:19 <Vorpal> or such
12:08:27 <fizzie> kallisti: My jitfunge is a tracing jit, in the SpiderMonkey/TraceMonkey fashion.
12:08:41 * kallisti knows absolutely nothing about JIT compilation.
12:08:53 <kallisti> it seems interesting though
12:09:06 <kallisti> I should learn some things about it.
12:09:41 <Vorpal> fizzie: I guess it would compile the cat program fairly well. Very little self modification in executed parts as far as I remember
12:10:03 <Vorpal> several fingerprints though
12:10:12 <Vorpal> fizzie: how did jitfunge handle fingerprints?
12:10:19 <Vorpal> did it call out or inline the code?
12:10:43 <fizzie> While interpreting, all instructions are stored in "traces"; when I trace is encountered a second time, the instructions in it are compiled to native code. The self-modification is the most difficult part; e.g. if you "p" something somewhere, it can change the way wrapping happens, so potentially it may invalidate all traces that wrap.
12:10:45 <fizzie> Call out.
12:10:48 <Vorpal> ah
12:11:23 <fizzie> So it doesn't need to keep track of what the fingerprint instruction-bindings were when entering a trace.
12:11:34 <Vorpal> fizzie: cardinally wrapping traces could be fine wrt boundaries
12:12:20 <fizzie> Not if the new instruction happens to fall on the same line, which it wouldn't notice otherwise, since those outside-the-boundaries regions of course aren't flagged to "belong" to a trace.
12:12:47 <Vorpal> hm is (2,0) considered cardinal? I don't think it is right?
12:12:53 <Vorpal> because that could be invalidated iirc
12:13:00 <ais523> Phantom Hoover needs another brick, I think: http://esolangs.org/wiki/There_Once_was_a_Fish_Named_Fred
12:13:16 <ais523> equivalent to BF minus input, and obviously so
12:13:25 <fizzie> They all need to be checked in any case, just in case the new wrapping line hits the coordinate that was p'd to.
12:13:26 <Vorpal> ouch
12:13:32 <Vorpal> fizzie: well yes
12:13:58 <Vorpal> fizzie: but it should be possible to optimize simple cardinal ones if you have a table of lines/columns they are on.
12:14:18 <Vorpal> while flying traces probably needs to be redone
12:15:41 <Vorpal> not sure it is worth the effort though
12:16:12 <kallisti> bah, why are all the youtube starcraft 2 casters taking Christmas off.
12:16:21 <kallisti> THEY SHOULD BE CASTING GAMES FOR ME TO WATCH EVERY DAY.
12:16:28 <Vorpal> heh
12:16:42 <Vorpal> why are the minecraft guys taking a day off as well, that is even worse
12:16:54 <kallisti> NO WRONG.
12:17:09 <kallisti> minecraft is not an entertaining sport.
12:17:15 <ais523> couldn't you just look at replays of older games?
12:17:18 <kallisti> you could just play minecraft and be more entertained.
12:17:20 <Vorpal> hey they do have an entry up, I guess they prepared it
12:17:25 <kallisti> ais523: yes, that's what I'm doing.
12:17:28 <kallisti> but they're getting harder to find.
12:17:40 <kallisti> I've already watched most of the old good ones.
12:19:15 <fizzie> Given a point and an arbitrary delta, it's not a very complicated test to check whether a new point can hit without iterating through; just check (newx-px) % dx == 0 && (newy-py) % dy == 0 && (newx-px)/dx == (newy-py)/dy -- with the obvious omissions for zero dx or dy. Of course it'd need to handle things like the last instruction before wrapping being a ; or whatever.
12:20:08 <Vorpal> fizzie: hm right
12:20:22 <Vorpal> fizzie: also j and wrapping
12:20:26 <Vorpal> I forgot how that works
12:20:40 <Vorpal> fizzie: hm do you do a new trace every time the delta changes?
12:21:19 <fizzie> ISTR that with j you just proceed forward ignoring wrapping; and then wrap afterwards. Since "semantically" wrapping works by proceeding forward for an infinitely long distance, and then coming back in from "the other side".
12:21:26 <fizzie> And no, that would be very subtimal.
12:21:40 <Vorpal> what about for x?
12:22:02 <Vorpal> I guess if the input to x isn't constant it might be worth splitting the trace there
12:22:28 <fizzie> If it has constant-folded arguments, probably not. I think I do have 'x'-related end-of-trace "type".
12:22:34 <Vorpal> ah
12:22:35 <Vorpal> brb
12:22:51 <fizzie> I have the tracing code mark each coordinate it "passes through", with different "modes" for regular execution, stringmode, ;-jumping and whatever, so that the 'p' code doesn't need to invalidate things unnecessarily.
12:23:41 <fizzie> It's not clever enough to do really clever things, though, like just modifying the compiled blob for a trace containing a string-mode sequence when someone p's a non-doublequote value inside.
12:24:26 <fizzie> I guess that could be done by moving stringmode-push data blocks to some table or whatever, and then just referring to those from within the code.
12:26:29 -!- nooga has joined.
12:28:47 <Vorpal> back
12:29:27 <Vorpal> fizzie: interesting idea
12:29:35 <Vorpal> fizzie: what does it currently compile into for string mode?
12:29:47 <Vorpal> a series of push?
12:31:23 <Vorpal> fizzie: btw you know how gcc sometimes compile code like a copy loop into a call to memcpy?
12:31:49 <Vorpal> I was recently doing some embedded development, and I was implementing my memcpy. However gcc decided to compile the code into a call to memcpy
12:31:59 <Vorpal> (I did find a flag to fix that)
12:34:39 <fizzie> I think it's a series of pushes, yes. It could easily be a memcpy-a-block-on-the-stack-with-preallocation style of a thing.
12:35:54 <ais523> Vorpal: hmm, did it have the restrict in the prototype?
12:36:05 <ais523> otherwise, gcc could only have compiled it into a call to memmove instead
12:36:51 <Vorpal> ais523: I believe it did
12:37:18 <ais523> I can see why restrict was invented
12:37:24 <Vorpal> ais523: curiously it didn't seem to be inclined to do the same for the memset implementation
12:37:37 <ais523> it's something that's typically obvious to users, but not to compilers, and helps a lot in implementation
12:37:42 <ais523> also, how often do you use memset?
12:37:55 <ais523> it's not that commonly useful
12:38:05 <oerjan> ais523: is there some way to undo more than one wiki diff in one step when there are later genuine edits?
12:38:17 <Vorpal> ais523: well, I used it to zero the .bss area on boot
12:38:27 <Vorpal> but that is an embedded problem
12:38:39 <ais523> oerjan: not in an automated way, unless you copy the wikitext to files on your computer and run diff3 a few times manually
12:38:44 <Vorpal> ais523: anyway it is useful since there is no recalloc
12:39:03 <ais523> Vorpal: but full-of-zero-bits is not the same thing as full-of-zeroes, necessarily
12:39:10 <Vorpal> eh?
12:39:10 <oerjan> ...that's even more awkward for me than undo'ing twice, alas :(
12:39:12 <ais523> also, full-of-zeroes typically isn't the default state of an object
12:39:25 <Vorpal> true
12:39:32 <ais523> oerjan: indeed, I can never remember how to get diff3 to do what I want
12:39:38 <Vorpal> cfunge manually has a loop to fill with spaces in the static funge space
12:39:53 <Vorpal> ais523: anyway all zeros isn't that uncommon. Why else would .bss even exist?
12:40:08 <oerjan> ais523: it's just that this time zzo's spam deletion actually made things _harder_ to fix :P
12:40:24 <ais523> because C initializes statics to all bits zero, typically
12:40:27 <Vorpal> people use diff3?
12:40:30 <Vorpal> seriously?
12:40:42 <ais523> Vorpal: typically not directly, but it gets used indirectly, by things like VCSes, all the time
12:40:47 <ais523> either the program itself, or just the concept
12:40:48 <Vorpal> hm true
12:41:04 <ais523> and I guess it was used more before VCSes became common
12:41:07 <Vorpal> well I hate 3-way merging even when it is a vcs that makes me do it
12:41:28 <ais523> diff3 is for two-way merging
12:41:32 <Vorpal> err yeah
12:41:34 <ais523> the three files are original, new 1, and new 2
12:41:38 <Vorpal> indeed
12:41:53 <ais523> I tried to use it for an actual three-way merge a while back by omitting the original, it didn't work well
12:42:02 <Vorpal> heh
12:42:06 <Vorpal> I guess you need diff4 then
12:42:13 <Vorpal> or do diff3 twice
12:43:24 <ais523> wow, I've just discovered that C11 has been released
12:43:32 <ais523> (presumably it actually happened a few days ago and I'm slow as usual)
12:43:32 <Vorpal> ais523: you mean the C standard?
12:43:34 <ais523> yep
12:43:35 <fizzie> Since Dec 8th.
12:43:37 <Vorpal> nice
12:43:39 <fizzie> You are slooow.
12:43:45 <fizzie> And don't logread. :p
12:43:46 <ais523> so is Vorpal, by the sound of it
12:43:56 <Vorpal> is there a spec available without paying a lot somewhere
12:43:57 <ais523> should I logread the 8th or the 9th?
12:43:57 <fizzie> It's been discussed on-channel at least twice.
12:44:01 <Vorpal> like the last draft or whatever
12:44:06 <fizzie> Well, we're not *that* fast either.
12:44:13 <ais523> Vorpal: not sure yet, but probably there's a last draft around somewhere
12:44:15 <ais523> `pastlog C11
12:44:37 <Vorpal> anyway, I wonder how long before gcc has the useful bits of it
12:44:42 <Vorpal> well, gcc + glibc I guess
12:44:47 <HackEgo> 2008-08-13.txt:17:45:08: <asie[draw]> http://asiekierka.boot-land.net/asiecomic11.jpg <- O_O
12:45:04 <fizzie> Anyway, the WG14 page only had the "it's released" newspost up on Dec 19th, so the discussions before that were more like "hmm, it's in stage 60.60 == released in ISO's catalog, but the WG14 page doesn't say anything about it being released, and neither does Wikipedia, so is it *really* out?"
12:45:11 <ais523> `pastlog (?-i:C11)
12:45:19 <ais523> wait, it probably doesn't do Perl regexes
12:45:21 <HackEgo> 2011-12-14.txt:08:21:56: <fizzie> Everyone wants a C11 and not a C12, mayhaps.
12:45:28 <Vorpal> guess it does
12:45:28 <ais523> oh, it does that, though, I Think
12:45:32 <ais523> *I think
12:45:49 <fizzie> That's around the time I brought up that it's in the catalog, having somehow ran across it a few days earlier.
12:46:00 <ais523> at least, it'd be a huge coincidence to interpret that as "turn off case-insensitivity" if it wasn't at least slightly Perl-like
12:46:17 <Vorpal> indeed
12:46:29 <fizzie> I was actually looking for something related to C99, and it weirded me out since it looked very released, but Wikipedia hadn't said anything about it.
12:46:51 <Vorpal> so what is new in C11?
12:47:03 <fizzie> The same things that were new in the draft. :p
12:47:25 <Vorpal> threads, gets removed, anything else?
12:47:31 <ais523> :quote help flushq
12:47:32 <Vorpal> was there static asserts or something?
12:47:34 <ais523> err
12:47:41 <ais523> [524] ais523 flushq Help not found
12:47:50 <fizzie> Also N1570 is the draft you want -- http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
12:47:51 <ais523> :quote flushq
12:48:00 <ais523> err, why can I not type / today?
12:48:01 <Vorpal> ais523: /flushq is a thing in xchat to clear the local send queue
12:48:07 <Vorpal> not server side afaik
12:48:11 <ais523> Vorpal: yep, I was checking to see if it was client-side or server-side
12:48:19 <fizzie> Yes, though the XChat help for it is really confusingly said.
12:48:21 <ais523> and simply cannot distinguish / from :, apparently
12:48:27 <fizzie> Usage: FLUSHQ, flushes the current server's send queue
12:48:44 <fizzie> That's "current server's send queue" as in "XChat's send queue for the current server".
12:48:46 <Vorpal> well it means as opposed to for every network you are connected to
12:48:46 <ais523> there should probably be a server-side command to do that, meaning "oops, I accidentally flooded but don't actually mean to send all that"
12:49:04 <fizzie> ais523: That's called Excess Flood.
12:49:04 <Vorpal> ais523: the server doesn't queue your stuff, it disconnects you if you flood
12:49:18 <ais523> Vorpal: it fakelags for a while, doesn't it?
12:49:23 <ais523> or is that always a client feature?
12:49:31 <Vorpal> hm maybe freenode does, don't know
12:49:33 <ais523> I thought excess flood was even more extreme than that
12:49:37 <fizzie> All delayed-sending stuff I know of is client-side.
12:49:38 <ais523> hmm, it's simple enough to test
12:49:39 <Vorpal> usually such lag is client side as well
12:49:43 <Vorpal> at least
12:50:33 -!- ais523|direct has joined.
12:50:46 <ais523|direct> netcat
12:50:49 <Vorpal> iirc irc servers mostly have large queues between themselves + smaller queues towards the clients to handle network lag
12:50:51 <Vorpal> and such
12:50:55 <ais523|direct> netcat doesn't do any queueing, right?
12:51:00 <Vorpal> not afaik
12:51:15 <ais523|direct> it was a rhetorical question
12:51:24 <Vorpal> ah
12:51:47 <ais523> wait, I got that backwards
12:52:27 <ais523|direct> spam line 1
12:52:28 <ais523|direct> spam line 2
12:52:28 <ais523|direct> spam line 3
12:52:28 <ais523|direct> spam line 4
12:52:28 <ais523|direct> spam line 5
12:52:28 <ais523|direct> spam line 6
12:52:28 <ais523|direct> spam line 7
12:52:37 <ais523> hmm, that all came out instantly for me
12:52:41 <ais523> for everyone else too?
12:52:48 <fizzie> They have the same-second timestamp.
12:52:50 <ais523> so it seems fakelag is indeed a client thing, not a server thing
12:52:57 <Vorpal> -ais523|direct- VERSION you know it's a pain to type this out by hand, right?
12:52:58 <Vorpal> yes
12:53:01 <Vorpal> why else would I do it
12:53:21 <fizzie> But the flood queues are counted in bytes, and there's a bit of a burst allowance for network lags and such.
12:53:22 <ais523> hmm, was that a correctly-formatted ctcp response, and your client just writes it like that?
12:53:25 <ais523> or did I screw up the formatting?
12:53:33 <fizzie> So short lines don't go excess flood so easily than long ones.
12:53:37 <Vorpal> <ais523> for everyone else too? <-- well there are some :02 and some :03
12:53:41 <Vorpal> wrt the timestamps
12:53:47 <Vorpal> was afk
12:53:55 -!- ais523|direct has quit (Client Quit).
12:54:03 <Vorpal> <ais523> hmm, was that a correctly-formatted ctcp response, and your client just writes it like that? <-- not sure
12:54:08 <Vorpal> yes
12:54:08 <fizzie> Vorpal: Anyway yes, static_assert though you could have faked those all the time with negative-sized arrays or whatever. There's a "x" letter for fopen to get O_CREAT|O_EXCL exclusive open without resorting to platform-specificness. Explicit Unicode support.
12:54:10 <Vorpal> it writes it like that
12:54:16 <fizzie> Vorpal: And that _Generic thing.
12:54:24 <Vorpal> fizzie: _Generic?
12:54:29 <ais523> Vorpal: heh, it just strips out the control-As in CTCP responses, then
12:54:39 <Vorpal> fizzie: UTF-8?
12:54:48 <Vorpal> and didn't we have widechar_t before?
12:55:02 <Vorpal> ais523: probably
12:55:06 <Vorpal> I'm using xchat atm
12:55:31 <fizzie> Vorpal: #define flop(X) _Generic(((X), long double: flopl, default: flop, float: flopf) is the usual example, to make type-generic floating-point calls, <tgmath.h> style.
12:55:57 <fizzie> Vorpal: But in general _Generic(expr, type1: expr1, type2: expr2, default: expr3) to dispatch by type.
12:56:31 <Vorpal> hm
12:56:45 <Vorpal> right
12:56:57 <fizzie> Vorpal: And we have wchar_t, but it's not explicitly Unicode-related at all. C11x adds char16_t and char32_t which are always in UTF-16 and UTF-32, respectively, and functions to deal with that; as well as u8"foo" string literals that are always UTF-8.
12:56:58 <Vorpal> fizzie: so why not vararg number of types?
12:57:26 <fizzie> Heh, "C11x".
12:57:36 <fizzie> Couldn't decide between C11 and C1x, apparently.
12:57:56 <ais523> fizzie: UTF-16, not UCS-2?
12:58:03 <ais523> UTF-16 is a bit of an awkward format
12:58:21 <fizzie> I would call UCS-2 more awkward, since it can't encode all the characters.
12:58:55 <ais523> UCS-2 is simple but wrong
12:59:04 <ais523> which I consider less awkward than being complex but correct
12:59:24 <fizzie> Vorpal: Also GCC's "unnamed struct/union fields within structs/unions" extension.
12:59:29 <fizzie> Well, GCC's and other compilers'.
12:59:40 <fizzie> I see someone's updated http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html to refer to C11 already.
13:00:55 <Vorpal> I have to leave, visit relatives. See you tonight
13:01:21 <ais523> Vorpal: what day is Christmas where you are?
13:01:25 <ais523> it's the 25th in the UK, and I think the US too
13:01:26 <Vorpal> today
13:01:31 <ais523> ah, merry Christmas, then
13:01:48 <Vorpal> ais523: merry christmas you too
13:01:57 <ais523> well, hmm
13:02:02 <fizzie> 24th in Finland for the presents, 25th for the supposedly-the-main-celebration-but-I-think-in-general-people-just-sleep-late-and-relax day.
13:02:21 <Vorpal> fizzie: well like that here yes. It is called christmas eve but the main celebrations are today
13:02:22 <ais523> "merry" isn't really the right word; it means "slightly drunk", which is appropriate for most people's Christmasses, but not for mine
13:02:33 <Vorpal> ais523: okay, good christmas then
13:02:40 <Vorpal> we say "god jul" in Sweden
13:02:47 <Vorpal> so that would be a literal translation
13:03:03 <ais523> ah, I see
13:03:08 <Vorpal> now, cya. I might be on over 3G/GSM to my bouncer later
13:05:40 <fizzie> ais523: Some specifics: char16_t equals uint_least16_t, char32_t equals uint_least32_t, and in fact they might not necessarily be UTF-16 and UTF-32; but __STDC_UTF_16__ is defined if char16_t is UTF-16, and __STDC_UTF_32__ is defined if char32_t is UTF-32, and I think the assumption is that they usually are.
13:06:08 <ais523> ah, that sounds suitably Cstandardish
13:06:28 <ais523> (look, no diareses!)
13:07:23 <fizzie> Anyway, for string literals "foo" is in char with unspecified encoding, L"foo" is in wchar_t with unspecified encoding, u"foo" and U"foo" are in char16_t and char32_t, respectively, with unspecified encoding unless those macros are defined; and, finally, u8"foo" is also in char, but explicitly UTF-8 encoded.
13:10:14 <fizzie> I'm not entirely sure what you're supposed to do with an UTF-8 string literal, since all multibyte-related functions use the locale, and I haven't seen a way to ensure the locale multibyte encoding is UTF-8.
13:10:29 <fizzie> But I guess if you want some UTF-8 bytes in your program that could be nice.
13:11:39 <fizzie> It's not *much* of an Unicode support, to be honest.
13:14:44 <fizzie> Also they've had the __STDC_ISO_10646__ macro for a while; if that's defined (to an integer constant of the form yyyymmL), the integer values of wchar_t correspond to Unicode code points, conforming to ISO/IEC 10646 (i.e. Unicode) with all amendments and TCs published as of that year and month.
13:16:33 <fizzie> And VLAs have been made optional, with __STDC_NO_VLA__ defined on systems which lack them.
13:17:23 <fizzie> (Same applies to complex numbers.)
13:18:35 <fizzie> Oh, and malloc(n) has been complemented with aligned_alloc(a,n) which returns n bytes with alignment a.
13:21:18 -!- elliott has joined.
13:26:29 <ais523> fizzie: presumably you get a UTF-8 library from somewhere else
13:27:24 <ais523> heh, aligned_alloc sounds like a fun portable way to mmap NULL to something, or else determine that that's impossible
13:27:35 <ais523> you just ask for a bits-in-a-pointer-aligned-pointer
13:28:04 <ais523> OTOH, it's probably not allowed to return NULL on success
13:29:40 <elliott> ais523: context for utf-8?
13:29:41 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
13:29:49 -!- incomprehensibly has joined.
13:30:05 <ais523> elliott: the fact that C11 defines UTF-8 string literals but not UTF-8 library functions
13:30:16 <ais523> so you can write UTF-8 strings easily, but then not do anything with them
13:30:29 <ais523> <fizzie> I'm not entirely sure what you're supposed to do with an UTF-8 string literal, since all multibyte-related functions use the locale, and I haven't seen a way to ensure the locale multibyte encoding is UTF-8.
13:36:58 -!- oerjan has quit (Remote host closed the connection).
13:37:09 -!- oerjan has joined.
13:45:55 * kallisti just got a bunch of ideas for words.pl
13:46:05 <kallisti> WACRO IS COMING BACK. :)
13:46:16 <kallisti> as an option to words.
13:46:16 <elliott> `macro
13:46:22 <HackEgo> NTH
13:46:26 <elliott> nth
13:46:45 <kallisti> there will be --acro and --wacro, the first one does what wacro used to do
13:47:03 <Vorpal> hello from slow 3G.
13:47:16 <kallisti> the second one basically multiplies the usual word generator probability with the probability of the character appearing at the beginning of the word.
13:47:19 <ais523> elliott: oh, and `pastlog was useful already, I did a `pastlog C11, and then a `pastlog (?-i:C11) when it got a lowercase C first time
13:47:30 <Vorpal> oh and that is over even slower bluetooth
13:47:30 <kallisti> to get a sort of middle ground between "good starting letter" and "good word letter"
13:47:33 <ais523> hmm, that last sentence of mine seems really Vorpallish
13:47:38 <kallisti> which I think will make something similar to word-like acronyms.
13:48:15 <Vorpal> and I need to find a second power outlet so I can plug in my phone...
13:48:16 -!- elliott_ has joined.
13:48:32 <ais523> elliott_: <ais523> elliott: oh, and `pastlog was useful already, I did a `pastlog C11, and then a `pastlog (?-i:C11) when it got a lowercase C first time
13:50:16 <fizzie> Vorpal: Rest of the news: <fizzie> And VLAs have been made optional, with __STDC_NO_VLA__ defined on systems which lack them. <fizzie> (Same applies to complex numbers.) <fizzie> Oh, and malloc(n) has been complemented with aligned_alloc(a,n) which returns n bytes with alignment a.
13:50:21 <Vorpal> hm 20 kb/s down. Ouch.
13:50:23 <Vorpal> bbiab
13:51:53 <fizzie> I just speedtest.net'd this new tube, and it's getting 64.5 Mbps down according to their test, even though the contract just says 50 Mbps down. I guess I should be glad it's off the theoretical number into that direction.
13:52:40 <elliott_> 03:26:58: <DeadlyFugu> If someone knew what they were doing, they could easily take down the bot.
13:52:42 <ais523> fizzie: perhaps the contract is a guarantee that they'll manage at least what they claim they will?
13:52:47 -!- elliott has quit (Ping timeout: 276 seconds).
13:52:51 <ais523> which bot? HackEgo?
13:52:55 <elliott_> yes
13:53:02 <elliott_> it is the duty of every newbie to believe gregor is a complete idiot
13:53:07 <fizzie> ais523: No, the contract has a nominal speed of 50 Mbps and they guarantee that it is at least 25 Mbps.
13:53:26 <ais523> elliott_: well, taking down the bot is easier than hacking into the system it's running on, I suspect
13:53:28 <ais523> but even then, quite hard
13:53:37 <ais523> I could take it down very easily with a kickban ;)
13:53:46 <ais523> just there'd be no reason to do so
13:54:33 <elliott_> 03:31:05: <pikhq_> Inside the UML, you're running as root.
13:54:36 <elliott_> pikhq_: no you're not
13:55:04 <ais523> elliott_: arguably, a simple `run rm * takes down the bot until someone else does a `revert
13:55:15 <ais523> well, or would do if I remembered to put appropriate options in there
13:55:18 <elliott_> ais523: wrong
13:55:20 <elliott_> `run rm -rf *
13:55:23 <HackEgo> No output.
13:55:27 <elliott_> `quote
13:55:31 <HackEgo> 361) <Cheery> when I command it to do couple useful operations it instead mutilates my cock.
13:55:40 <ais523> elliott_: heh, how did that work?
13:55:47 <elliott_> `ls
13:55:50 <HackEgo> Mineso \ bin \ canary \ karma \ lib \ main \ main.cpp \ min.sh \ paste \ quotes \ share \ wisdom
13:55:52 <elliott_> ais523: guess
13:56:08 <ais523> it doesn't commit things that delete too many/all the files
13:56:17 <ais523> so it's like an infinitely long race condition
13:56:24 <ais523> is my guess right?
13:56:37 <elliott_> ais523: no; hint: I did `ls for a reason
13:56:58 <ais523> elliott_: is that the same as `ls normally outputs?
13:57:10 <ais523> `mkdir t
13:57:13 <ais523> `mkdir t/a
13:57:13 <HackEgo> No output.
13:57:16 <HackEgo> mkdir: cannot create directory `t/a': No such file or directory
13:57:18 <elliott_> ais523: yes, and you're not looking at it
13:57:21 <elliott_> `ls
13:57:23 <HackEgo> Mineso \ bin \ canary \ karma \ lib \ main \ main.cpp \ min.sh \ paste \ quotes \ share \ wisdom
13:57:25 <elliott_> read it
13:57:36 <ais523> I don't see anything particularly notable about it
13:57:42 <ais523> I have read it, but don't get what I should be looking at
13:57:50 <elliott_> `cat canary
13:57:52 <HackEgo> No output.
13:58:02 <fizzie> Cat ate the canary, eh?
13:58:07 <ais523> aha, it doesn't commit things that delete canary?
13:58:09 <ais523> `rmdir t
13:58:12 <HackEgo> rmdir: failed to remove `t': No such file or directory
13:58:18 <elliott_> ais523: yep
13:58:34 <ais523> well, that's pretty easy to bypass
13:58:34 <Vorpal> <fizzie> And VLAs have been made optional, with __STDC_NO_VLA__ defined on systems which lack them. <-- ouch
13:58:59 <fizzie> Vorpal: I suppose it's not very likely a "real" compiler will not implement them.
13:59:03 <Vorpal> <fizzie> (Same applies to complex numbers.) <-- did anyone use them? As far as I know, hardware can't really optimise it specially anyway
13:59:21 <Vorpal> <fizzie> Oh, and malloc(n) has been complemented with aligned_alloc(a,n) which returns n bytes with alignment a. <-- kind of useful yeah
14:00:46 <fizzie> Vorpal: I don't know about complex; though e.g. FFTW does things so that if you #include <complex.h> before including fftw3.h, it will define fftw_complex to be the native complex, and then you can use the standard arithmetic on them.
14:00:56 <Vorpal> hm
14:01:03 <fizzie> (I'm not entirely sure how that's done in practice; maybe there were some C99 promises about the layout of complex types?)
14:01:05 <Vorpal> does gcc even support complex numbers properly?
14:01:26 <fizzie> It claims to, on the C99 status page.
14:01:39 <Vorpal> got a link to that? google is painfully slow on this connection
14:02:00 <fizzie> "GCC does not support the Annex G imaginary types and complex multiplication and division have excess overflows at runtime (although not beyond those permitted by C99)."
14:02:04 <fizzie> http://gcc.gnu.org/c99status.html
14:02:12 <Vorpal> imaginary types?
14:02:17 <Vorpal> like only the i part?
14:02:31 <Vorpal> how can it be hard to support if you support complex numbers anyway?
14:03:18 <Vorpal> "deprecate ungetc at the beginning of a binary file" <-- wait, what would ungetc mean at the beginning of a file anyway?
14:03:56 <Vorpal> hm I guess you could push random stuff into the stream buffer
14:04:06 <Vorpal> ungetc is kind of silly anyway
14:04:17 <fizzie> Yes, or just as a field in the FILE; it only guarantees a single character, after all.
14:04:19 <Vorpal> would be better to simply have a peek function to look at the next char
14:04:44 <fizzie> Anyway yes, imaginary types are imaginary-part-only.
14:04:46 <Vorpal> I mean, that would cover all the reasons for using ungetc I can think of.
14:04:53 <Vorpal> fizzie, how can they be hard to support?
14:05:15 <fizzie> Perhaps out of boredom?
14:05:52 <Vorpal> wasn't there a complex numbers fingerprint?
14:06:07 <Vorpal> ah yes CPLI
14:06:14 <ais523> fizzie: GCC need a c11status, too
14:06:43 <Vorpal> hm looks like I do the maths for CPLI by hand, not using complex.h
14:07:14 <Vorpal> quite trivial maths so
14:08:14 <fizzie> Oh, there it is.
14:08:24 <Vorpal> oh?
14:08:29 <fizzie> "Each complex type has the same representation and alignment requirements as an array type containing exactly two elements of the corresponding real type; the first element is equal to the real part, and the second element to the imaginary part, of the complex number."
14:08:32 <Vorpal> I guess static asserts might be kind of useful. Threads and atomic primitives are definitely useful
14:08:51 <fizzie> That's probably how FFTW manages to do the "native complex if complex.h included" trick.
14:09:19 <fizzie> It's typedef double fftw_complex[2]; in the "usual" case.
14:09:27 <Vorpal> right
14:09:39 <Vorpal> that should be compatible on most systems
14:09:45 <ais523> fizzie: hmm, reminds me of when I saw SunOS-on-sparc defining jmp_buf as int[12]
14:09:55 <fizzie> "C++ has its own complex<T> template class, defined in the standard <complex> header file. Reportedly, the C++ standards committee has recently agreed to mandate that the storage format used for this type be binary-compatible with the C99 type, i.e. an array T[2] with consecutive real [0] and imaginary [1] parts. (See report http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2002/n1388.pdf WG21/N1388.) Although not part of the official standard as of th
14:09:55 <fizzie> is writing, the proposal stated that: “This solution has been tested with all current major implementations of the standard library and shown to be working.” To the extent that this is true, if you have a variable complex<double> *x, you can pass it directly to FFTW via reinterpret_cast<fftw_complex*>(x)."
14:10:02 <Vorpal> ais523, heh?
14:10:04 <ais523> or possibly it was a different length from that
14:10:16 <Vorpal> bbl
14:10:22 <ais523> I think most C libraries define jmp_buf as a one-element array of structure, with the structure elements having meaningful names
14:11:07 <ais523> fizzie: well, reinterpret_cast scares people (and probably, /should/ scare people, it's quite an un-C++y thing to do)
14:11:09 <fizzie> bits/setjmp.h:
14:11:10 <fizzie> # if __WORDSIZE == 64
14:11:11 <fizzie> typedef long int __jmp_buf[8];
14:11:11 <fizzie> # else
14:11:11 <fizzie> typedef int __jmp_buf[6];
14:11:11 <fizzie> # endif
14:11:35 -!- derdon has joined.
14:13:13 <fizzie> (That's what's inside the struct __jmp_buf_tag, with typedef struct __jmp_buf_tag jmp_buf[1]; also some other members.)
14:13:32 <fizzie> They've just cut out the middle man.
14:15:29 <ais523> indeed
14:15:38 <ais523> and I thought "how lucky that everything they needed to store was int-sized"
14:16:09 <fizzie> http://p.zem.fi/ch25 <- setjmp.h of dietlibc. I don't know if you can deduce something from the fact that some architectures have structures, while others have just arrays with #define'd names for the fields.
14:16:52 <ais523> it's weird enough that jmp_buf is mandated to be an array type
14:17:08 <ais523> why go with jmp_buf as an array type but FILE* as a pointer type?
14:17:17 <ais523> they're both opaque structures
14:18:25 <fizzie> I'd guess that jmp_buf is an array type so that you wouldn't be tempted to go around assigning it; but not a pointer because they want to let you decide where you want to keep it.
14:18:57 <ais523> fizzie: well, there isn't anything assignable that's as large as you want a jmp_buf to be, unless you count structs as assignable
14:19:05 <ais523> so that's another reason to make it an array, I guess
14:20:26 <fizzie> It could also be just backwards-compatibility-to-whatever-scheme-was-in-use.
14:21:12 <kallisti> fizzie: I wonder to what extent switching + to * would have on combining normalized values.
14:21:21 <kallisti> it would be like "and" instead of "or"
14:21:32 <elliott_> ais523: hey, you haven'ts een my amazing code yet, right?
14:21:54 <elliott_> *haven't seen
14:21:59 <ais523> elliott_: more amazing than normal elliott stuff? no
14:22:14 <elliott_> ALL MY CODE IS INFINITELY AMAZING but
14:22:16 <elliott_> http://hpaste.org/55661
14:22:39 <elliott_> (don't wtf at the start, you'll run out of wtfs for the real wtf below all the repetitive stuff)
14:22:50 <kallisti> fizzie: so basically the only paths that are available are the ones shared by the datasets
14:22:53 <kallisti> that could be interesting.
14:23:59 -!- nooga has quit (Ping timeout: 276 seconds).
14:24:08 <ais523> elliott_: oh, right, Haskell? I'm not sure I'd really get it well enough to properly wtf, but I'll try
14:24:33 <kallisti> I sometimes forget that everyone on #esoteric isn't intimately familiar with Haskell.
14:24:37 <fizzie> If you discount the actual weights, it is in fact quite much like taking the intersection instead of the union.
14:24:49 <ais523> what does 0## mean? unboxed byte 0?
14:25:00 <kallisti> fizzie: I might include an option to do that.
14:25:04 <elliott_> ais523: unboxed word 0
14:25:08 <elliott_> 0# is unboxed int 0
14:25:14 <ais523> ah, OK
14:25:24 <ais523> and "word" = word8? or word-and-infer-bitwidth?
14:25:33 <kallisti> fizzie: also I'm going to add two options for acronym generating: one that multiplies the starting-letter frequency with the normal word generator frequency to make word-like acronyms
14:25:37 <elliott_> ais523: native machine word
14:25:41 <elliott_> *Word, also
14:25:44 <elliott_> Word8 is Word8
14:25:46 <ais523> ah, OK
14:25:47 <kallisti> and another that is just the starting word frequency part.
14:25:52 <elliott_> ais523: but Word8 is just a box around a Word#
14:25:54 <ais523> and it happens to be 8-bit on this system
14:25:55 <elliott_> which is an unboxed machine word
14:25:56 <kallisti> so just a regular "acronym" generator.
14:25:59 <elliott_> ais523: err, no
14:26:00 <elliott_> 64-bit
14:26:03 <ais523> oh, right
14:26:11 <elliott_> 03:43:58: <HackEgo> ​провахмате шлено исто тугаване ремонодук пудыши мъству провка дорокачавалото фразбиструму приберщвлет драламину двученна макрообмит совательозеровавши вседаго усъ блионителн преденция бства сираних позитод ползачещяли изрушав
14:26:11 <elliott_> 03:44:31: <Gregor> -- A thrilling novella by ... whatever Russian person is on #esoteric .
14:26:12 <elliott_> "provahmate Shlenov history tugavane remonoduk pudyshi mstvu provka dorokachavaloto frazbistrumu priberschvlet dralaminu dvuchenna makroobmit sovatelozerovavshi vsedago us blioniteln predentsiya bstva siranih pozitod polzacheschyali izrushav"
14:26:17 <elliott_> shlenov history
14:26:20 <kallisti> anyway
14:26:24 <kallisti> I'm going to sleep now. good night.
14:26:31 <ais523> hmm, I can't follow what's going on there, alhough you seem to be encoding bytestrings into the type system somehow
14:26:55 <ais523> also, there's a huge amount of unboxed stuff going on there
14:27:01 <elliott_> ais523: not bytestrings, pointers
14:27:19 <ais523> aha, that explains why reflect' goes up to 8
14:27:38 <ais523> you're reading the memory holding Haskell objects directly?
14:27:45 <ais523> via access-arbitrary-memory methods?
14:27:52 <elliott_> ais523: it allocates a pointer, puts a value there, reflects the pointer into the type system, and then reads the pointer on the other end
14:28:22 <elliott_> the original idea is due to oleg, i just added MORE FASTS
14:28:24 <ais523> "reflects the pointer into the type system"?
14:28:27 <elliott_> ais523: yes
14:28:48 <ais523> I mean, what does that even mean?
14:29:01 <elliott_> ais523: it constructs the appropriate typeclass dictionary and passes it in with rank-n types
14:29:17 <elliott_> now you know why i dumbed it down :P
14:29:18 <ais523> hmm, but the pointer's a run-time construct, right?
14:29:22 <elliott_> yes
14:29:26 <ais523> elliott_: I can't understand even the dumbed-down version
14:29:31 <elliott_> it just defines an instance for each byte
14:29:36 <elliott_> and defines what amounts to a /template/ instance
14:29:50 <elliott_> "if you have ReifyByte for these 7 types, you have Reify"
14:29:53 -!- yorick has quit (Read error: Connection reset by peer).
14:30:01 <elliott_> so it picks the appropriate ReifyByte for each byte of the pointer using a lookup table
14:30:08 <elliott_> and passes them all to the Reify-instance-maker
14:30:17 <ais523> elliott_: so it can Reify each possible string of eight bytes?
14:30:19 <elliott_> but since all this is implementation details, it has to do it with a crazy rank-n type construction
14:30:22 <elliott_> ais523: yes
14:30:33 <elliott_> ofc, it never tries to reify anything other than a valid pointer
14:30:35 <ais523> but doesn't all typechecking get down at compile time?
14:30:35 <elliott_> that would segfault
14:30:51 <elliott_> ais523: yes, but that's not the same as resolving typeclass instances
14:30:58 <elliott_> it's impossible to completely do that statically
14:31:12 <elliott_> because, like I said, you basically have functions
14:31:13 <ais523> elliott_: oh, it's the typeclass equivalent to virtual dispatch that you're hooking here?
14:31:15 <elliott_> instance (Show a, Show b) => Show (a,b)
14:31:17 <elliott_> that's like
14:31:26 <elliott_> tupleShowInstance :: ShowDictionary a -> ShowDictionary b -> ShowDictionary (a,b)
14:31:35 <elliott_> now s/Show/GimmeAByte/
14:31:39 <ais523> (am I correct, wrong, or meaningless here? I fear it's the latter)
14:31:44 <elliott_> and s/(a,b)/Address a b0 b1 b2 b3 b4 b5 b6 b7/
14:31:52 <elliott_> ais523: I'm not sure what virtual dispatch is
14:31:59 <elliott_> I keep forgetting OOP terms
14:32:20 <ais523> elliott_: in object oriented programs, when you calls a method, and it figures out what version of the method to call depending on the type the object involved actually has
14:32:32 <ais523> *when you call
14:32:45 <elliott_> ais523: right, typeclasses are a "safer" version of dynamic dispatch
14:33:01 <elliott_> ais523: however, values don't carry around their instances in Haskell
14:33:04 <elliott_> the instances are separate objects
14:33:22 <ais523> yep, typeclasses solve the same problem that object-oriented classes solve
14:33:22 <elliott_> so, it'd use the global tupleShowInstance, and apply it to the two ShowDictionaries it's been given
14:33:25 <ais523> although not in exactly the same way
14:33:28 <elliott_> and then use the show inside that on the tuple value it has
14:33:31 <elliott_> for instance
14:33:37 <elliott_> ais523: interfaces, not classes
14:33:48 <ais523> elliott_: right, if you're thinking in Java terms
14:34:02 <elliott_> them's fighting words
14:34:06 <ais523> although it's not exactly like an interface; more like an abstract class
14:34:19 <ais523> because you can declare default implementations for method-equivalents, etc
14:35:15 <elliott_> 04:34:59: <Gregor> kallisti: elliott actually made a "perfect" UA a while ago.
14:35:15 <elliott_> 04:35:09: <Gregor> `pastelogs elliott.*user.*agent
14:35:15 <elliott_> 04:35:19: <Gregor> (Greppin' 1GB of logs woooh)
14:35:19 <elliott_> Gregor: It's not 1 GB...
14:36:15 <elliott_> 04:38:12: <Gregor> It pretty much convinced everything that it was sufficiently up to date.
14:36:32 <elliott_> kallisti: Note that spammers probably want a discreet user agent that is identical to a popular web browser, and not distinguishable as a bot.
14:37:03 <ais523> elliott_: even popular web browsers tend to be rather inconsistent among themselves
14:37:07 <elliott_> 04:42:19: <Gregor> zzo38: Mac computers are like that, although sort of the inverse, you have to choose at startup to /see/ the Forth shell, not to boot without using it. It's pretty restrictive though.
14:37:07 <elliott_> 04:42:22: <Gregor> (Also, only Forth)
14:37:09 <elliott_> Gregor: Not since 2005, dude.
14:37:14 <ais523> as in, there are a lot of variations of, say, Firefox 9 user agents
14:37:19 <elliott_> OpenFirmware Macs died with PPC Macs.
14:37:24 <elliott_> And EFI don't do Forth.
14:37:38 <elliott_> ais523: Yes, but the proposed "Mozilla/5.0 AppleWebKit KHTML Gecko Chrome Safari" is not very realistic :P
14:37:47 -!- nooga has joined.
14:38:25 * elliott_ reads GHC source code to try and make that Haskell thing thread-safe.
14:38:43 <ais523> elliott_: it turns out that the most popular single user-agent string is that of some version of the iPhone, by a really long way
14:38:50 -!- MSleep has changed nick to MDude.
14:39:20 <elliott_> ais523: heh, because there's no hardware/software variation whatsoever?
14:39:22 <Vorpal> ais523, probably because there are small variations in many other places
14:39:28 <Vorpal> and that
14:39:33 <elliott_> (and because it's massively popular, ofc)
14:39:39 <elliott_> (but probably not more than computer browsers)
14:39:44 <elliott_> (although it's getting that way)
14:39:45 <ais523> elliott_: right, it's because of the lack of varation
14:39:59 <Vorpal> I mean "Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.2.24) Gecko/20111107 Ubuntu/10.04 (lucid) Firefox/3.6.24" is quite specific for example
14:40:13 <ais523> IIRC the iPhone isn't even the most popular smartphone platform any more
14:40:27 <Vorpal> and for IE you tend to have .NET versions supported in the user agent iirc
14:40:38 <ais523> here's mine: Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:9.0) Gecko/20100101 Firefox/9.0
14:40:39 <Vorpal> ais523, android is, but there are so many android
14:40:40 <elliott_> 04:50:50: <zzo38> (Of course whatever I decide, the book will need to specify how it works for the computer will need to specify how it works.)
14:40:40 <elliott_> ah yes.
14:40:47 <elliott_> ais523: Android ostensibly is, but it's kind of a cheat
14:40:58 <elliott_> since many Android phones are wildly different from each other
14:41:07 <ais523> Vorpal: actually, Microsoft installed a Firefox extension on everyone's computers, without asking, to put .NET version in the useragent of Firefox too
14:41:12 <elliott_> you really need to count at least the many different proprietary Android UIs separately
14:41:13 <Vorpal> heh
14:41:15 <ais523> and Mozilla responded by getting Firefox to ignore it, or something like that
14:41:19 <Vorpal> hah
14:41:28 <ais523> there was quite a row at the time, at least
14:41:36 <elliott_> ais523: they automatically uninstalled it
14:41:38 <elliott_> is what they did
14:41:42 <ais523> Firefox now checks to see if there are extensions on the computer that the user didn't install
14:41:42 <elliott_> pushed out a new release just to do that
14:41:49 <ais523> elliott_: couldn't, Firefox doesn't have enough permissions
14:41:55 <ais523> unless you're running it as admin
14:42:04 <ais523> they automatically ignored/disabled it, instead
14:42:08 <elliott_> 04:54:24: <itidus21> zzo38: the biggest problem with the idea is that it's impossible
14:42:08 <elliott_> :D
14:42:10 <elliott_> ais523: heh
14:42:31 <Vorpal> iirc chrome on windows bundles flash
14:42:31 <elliott_> 04:54:13: <Gregor> kallisti: Grepping my server logs suggests the following: http://sprunge.us/TLiJ
14:42:33 <elliott_> I approve of this
14:42:42 <Vorpal> I found it buggy as hell
14:42:44 <elliott_> I like how people have browsed codu.org on iPads.
14:42:51 <Vorpal> I had flash in chrome crash many times on windows
14:43:17 <ais523> elliott_: is that your useragent that Gregor linked in your quote of him?
14:43:32 <Vorpal> bbl
14:43:36 <elliott_> ais523: no, that's gregor's horrible chimera generated from codu logs
14:43:42 <elliott_> Vorpal: that's just flash
14:45:04 <elliott_> 04:57:28: <NihilistDandy> http://img820.imageshack.us/img820/1641/itsfinetrustme.png
14:45:04 <elliott_> 04:57:33: <NihilistDandy> And they still haven't fixed it
14:45:06 <elliott_> wow.
14:45:31 <elliott_> 05:00:13: <kallisti> http://sourcereal.com/ I wonder what the purpose of this site actually is.
14:45:37 <elliott_> The purpose is sour cereal, man.
14:45:38 <ais523> elliott_: anyway, isn't the Mozilla/5.0 bit meant to tell servers that you support frames, so that you want a frames, not no-frames, version?
14:45:52 <ais523> elliott_: heh, I didn't parse that URL like that
14:46:32 -!- yorick has joined.
14:48:20 <elliott_> ais523: It's the only real source for sour cereal.
14:48:52 <ais523> hmm, sour cereal + alkaline milk would result in some sort of neutralisation reaction
14:49:04 <ais523> (I think milk and toothpaste are the only common alkaline substances around)
14:49:43 <elliott_> milk toothpaste
14:49:58 <ais523> for use on milk teeth
14:50:14 <ais523> elliott_: anyway, so your amazing code, what could it be used for?
14:50:16 <elliott_> yes!
14:50:26 <ais523> (this seems a question I'm more likely to understand the answer to than "what does it do?")
14:50:30 <elliott_> ais523: implicit configurations
14:50:31 <fizzie> Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.835.202 Chrome/14.0.835.202 Safari/535.1
14:50:40 <elliott_> "The configurations problem is to propagate run-time preferences throughout a program, allowing multiple concurrent configuration sets to coexist safely under statically guaranteed separation. This problem is common in all software systems, but particularly acute in Haskell, where currently the most popular solution relies on unsafe operations and compiler pragmas.
14:50:40 <elliott_> We solve the configurations problem in Haskell using only stable and widely implemented language features like the type-class system. In our approach, a term expression can refer to run-time configuration parameters as if they were compile-time constants in global scope. Besides supporting such intuitive term notation and statically guaranteeing separation, our solution also helps improve the program's performance by transparently dispatching to
14:50:40 <elliott_> specialized code at run-time. We can propagate any type of configuration data -- numbers, strings, IO actions, polymorphic functions, closures, and abstract data types. No previous approach to propagating configurations implicitly in any language provides the same static separation guarantees.
14:50:44 <elliott_> The enabling technique behind our solution is to propagate values via types, with the help of polymorphic recursion and higher-rank polymorphism. The technique essentially emulates local type-class instance declarations while preserving coherence. Configuration parameters are propagated throughout the code implicitly as part of type inference rather than explicitly by the programmer. Our technique can be regarded as a portable, coherent, and int
14:50:47 <ais523> fizzie: that's actually Chrome, I take it?
14:50:49 <elliott_> uitive alternative to implicit parameters. It motivates adding local instances to Haskell, with a restriction that salvages principal types."
14:50:59 <ais523> or, hmm, actually Safari?
14:51:02 <ais523> I'm confused
14:51:04 <fizzie> ais523: Well, "chromium-browser" as installed by Ubuntu.
14:51:12 <elliott_> ais523: safari was the first webkit browser
14:51:13 <ais523> haha, OK
14:51:15 <ais523> I missed the Ubuntu/
14:51:16 <elliott_> which explains its presence there
14:51:20 <ais523> elliott_: right, indeed
14:51:32 <elliott_> ais523: anyway, that quote should answer your question, or at least confuse you more
14:51:37 <ais523> hmm, I wonder if this'll retroactively cause Ubuntu to have been an early web browser platform
14:51:43 <fizzie> These things are going to say "Mozilla/5.0" for the rest of eternity; the datarcheologist of the future are going to debate on the Cult of Mozilla and the religious significance of "5.0".
14:51:49 <elliott_> ais523: eh?
14:52:03 <elliott_> fizzie: http://upload.wikimedia.org/wikipedia/en/6/6e/The_Book_of_Mozilla%2C_12-10.png
14:52:04 -!- oerjan has quit (Remote host closed the connection).
14:52:19 <ais523> elliott_: because it's being mentioned in all these useragents
14:52:21 <fizzie> Yes, those things are going to confuse them to no end too.
14:52:35 <ais523> hell, people are confused by Book of Mozilla references even nowaday
14:52:37 <ais523> *nowadays
14:52:45 <ais523> I wonder if they should just ask the people who wrote them what they're intended to mean?
14:53:09 <elliott_> ais523: oh, "early" because the web is still young?
14:53:27 <ais523> elliott_: no, just because earlier things get mentioned in useragents and later things don't
14:53:28 <elliott_> ais523: also, there are explanations /right in the source code/
14:53:30 <fizzie> "Mammon slept. And the beast reborn spread over the earth and its numbers grew legion. And they proclaimed the times and sacrificed crops unto the fire, with the cunning of foxes. And they built a new world in their own image as promised by the sacred words, and spoke of the beast with their children. Mammon awoke, and lo! it was naught but a follower."
14:53:31 <elliott_> <!-- 10th December 1994: Netscape Navigator 1.0 was released -->
14:53:32 <elliott_> <!-- This verse announces the birth of the beast (Netscape) and warns bad coders (up to Netscape 3, when you watched the HTML source code with the internal viewer, bad tags blinked). -->
14:53:39 <fizzie> Some of them are sort-of obvious, also.
14:53:53 <elliott_> http://www.mozilla.org/book/
14:53:53 <ais523> or at least, you mention earlier browsers in your useragent but not later ones, for obvious reasons
14:53:54 <fizzie> "cunning of foxes" "Mammon" "naught but a follower"
14:54:09 <ais523> elliott_: oh, the source code, who reads that?
14:54:14 <ais523> (particularly for something like Firefox?)
14:54:33 <fizzie> The HTML source for the page.
14:54:54 <fizzie> Everybody knows how to "use the source, Luke" for hidden thingamajikcs.
14:55:21 <ais523> fizzie: heh, I wonder why I picked the other interpretation to start with?
14:55:27 <ais523> actually, they're probably the same source
14:55:43 <ais523> only plausible way to implement something like the Book of Mozilla is to include an HTML file somewhere which about:mozilla references
14:56:31 <ais523> <Wikipedia> Furthermore, the Book of Mozilla page has annotations for each of the first, second, third and fifth verses hidden as comments in its HTML source code.[6] These comments were written by Valerio Capello in May 2004 and were added to the Mozilla Foundation site by Nicholas Bebout in October that year. Neither Capello nor Bebout are 'core' Mozilla decision-makers; and there is no evidence that Capello's interpretations received any high-
14:56:32 <ais523> level approval from the senior management of the Mozilla Foundation.
14:56:42 <elliott_> fizzie: it's not in the about: source, though, I don't think
14:56:44 <elliott_> or at least, wasn't
14:56:46 <elliott_> just that page
14:56:48 <ais523> so apparently the source can't be trusted
14:57:01 <elliott_> ais523: haha
14:57:03 <elliott_> NO APPROVAL
14:57:19 <elliott_> book of mozilla apocrypha
14:57:26 <ais523> I wonder if putting the Book there in the /first/ place received high-level approval from the senior management of the Mozilla Foundation
14:57:59 <ais523> hmm, apparently the second Book of Mozilla verse was written by jwz
14:58:44 <ais523> so I suppose you could ask him if you really wanted to be sure
14:59:14 <fizzie> I have a vague memory that "about:mozilla" isn't in the usual place with the other chrome, where the about pages live, but I could be wrong about that.
14:59:54 <ais523> now I'm trying to remember which non-Netscape-codebase-based browser responds to about:mozilla
15:00:03 <ais523> but it's probably in the Wikipedia article I'm reading at the moment, so I'll just keep reading
15:00:15 -!- nooga has quit (Ping timeout: 240 seconds).
15:00:21 <fizzie> "The Windows version of IE showed a blank HTML document with blue background color. Possibly a joke reference to the "Blue Screen of Death." Removed in Windows XP SP2 but it can still be shown by typing "res://mshtml.dll/about.moz" instead."
15:00:22 <fizzie> About IE.
15:00:53 <fizzie> And apparently Konqueror goes to about:konqueror, but that's quite boring.
15:01:09 <fizzie> I remember the "lizard in the Netscape logo" thing, though.
15:01:13 <Vorpal> back
15:01:18 <Vorpal> <elliott_> Vorpal: that's just flash <-- well, yeah
15:01:21 <fizzie> Sadly it only survives up until the browser's closed.
15:01:26 <ais523> right, I forgot that the Windows IE team are on good terms with the Firefox devs
15:01:36 <elliott_> gah, I wonder why coercing these to Addr#s doesn't work
15:01:46 <ais523> it's not the sort of thing you'd expect, until you think about it a bit
15:01:57 <elliott_> ais523: only as of recently :)
15:02:26 <ais523> I get the impression that if the Windows IE team didn't have management directing them, they'd make a good browser
15:02:34 <ais523> but have been repeatedly told to deliberately screw it up for one reason or a nother
15:02:35 <ais523> *another
15:02:58 <Vorpal> why does everyone still put Mozilla/5.0 in? I mean, does any website really care about user agent these days?
15:03:17 <elliott_> ais523: well, recent IE /is/ good, isn't it?
15:03:19 <elliott_> Vorpal: of course they do
15:03:25 <Vorpal> elliott_, really?
15:03:33 <Vorpal> elliott_, I guess for statistics
15:03:36 <Vorpal> but apart from that?
15:03:45 <ais523> elliott_: yes, it's entirely reasonable, although some of the defaults irk me and it's not as customizable as Firefox
15:03:50 <Vorpal> does anyone look at the Mozilla/5.0 part for example?
15:03:53 <ais523> (the customizability is the reason that I use Firefox)
15:04:03 <ais523> Vorpal: old servers use it to determine whether to serve frames or nonframes
15:04:11 <Vorpal> hm
15:04:13 <ais523> thus, I propose that people should remove it, and thus get the better version of the page
15:04:26 <Vorpal> hah
15:04:41 <elliott_> Vorpal: why would people rewrite their website backend every 5 years just because Vorpal thinks they're doing it wrong?
15:05:00 <elliott_> yes, they /are/ doing it wrong, but everyone still puts Mozilla/5.0 in their user agent, because websites break if they don't, because websites don't get updated, because everyone still puts ...
15:05:22 <Vorpal> indeed
15:05:47 <elliott_> breaking that chain from the browser end would just annoy everyone
15:05:54 <ais523> fizzie: according to Wikipedia, Iceweasel has the standard about:mozilla, but also an about:iceweasel of its own
15:05:56 <Vorpal> elliott_, I'm just wondering how common such websites still are. I can't remember seeing frames outside doxygen/javadoc generated stuff recently
15:05:59 <ais523> that references the naming dispute
15:05:59 <Vorpal> iframes sure
15:06:01 <Vorpal> but not frames
15:06:20 <ais523> elliott_: clearly, we have to break the chain in the middle
15:06:28 <elliott_> Vorpal: i'm sure it's sniffed for more than frames
15:06:31 <ais523> by getting the backbone routers to strip Mozilla/5.0 out of user agents
15:06:33 <elliott_> ais523: ISP proxying?
15:06:34 <elliott_> haha
15:06:36 <Vorpal> elliott_, hm
15:06:38 <fizzie> Vorpal: The web-admin interface of my shiny new VDSL2 router-boxey thing is done in regular old frames.
15:06:54 <elliott_> ais523: "My internet is broke, the google works on Verizon but not Comcast."
15:06:54 <fizzie> (Admittedly they've been doing related models for a while and have just been copying the interface on and on.)
15:06:58 <elliott_> ais523: you want to make this sentence plausible
15:07:02 <fizzie> (Also it's quite horrible.)
15:07:09 <Vorpal> fizzie, my speedtouch (several years old by now) uses some javascript stuff. There is also a telnet interface
15:07:14 <ais523> (note: this would probably be technically impossible; the backbone routers wouldn't be able to cope with the traffic they do if they had to decode down to the HTTP level)
15:07:39 <fizzie> There's a telnet interface here, but it's been blocked; the user accounts for the web interface don't for for it. Possibly because it lets you run a shell.
15:07:53 <Vorpal> heh
15:08:04 <fizzie> The web interface also has around twenty places for shell injection vulnerabilities, so it's not like it's much of a barrier.
15:08:10 <elliott_> ais523: it's really amazing that we live in a society where we have computers that are /too busy to parse/
15:08:10 <Vorpal> fizzie, the telnet interface on mine offers more options but nothing really interesting
15:08:11 <fizzie> I guess they have to try keep nosy customers out.
15:08:51 <Vorpal> probably
15:09:00 <ais523> elliott_: well, they are
15:09:05 <elliott_> this reminds me of trying to get my livebox to give me a shell
15:09:12 <elliott_> which involved exploting the configuration backup mechanism
15:09:15 <fizzie> What I don't like about it is that it's completely remotely administrable with some TR-069 nonsense. I can live with it for the next two years, since the contract states that it's still owned by the ISP for that time, but then the ownership rights move, and I don't really like owning a box that someone else can admin.
15:09:17 <ais523> I think they work a couple of levels lower than HTTP, because parsing would be too much effort
15:09:23 <Vorpal> elliott_, did it work?
15:09:30 <fizzie> elliott_: They've disabled the configuration backup mechanism of that box, possibly because of such concerns. :p
15:09:36 <ais523> this is also the reason that the IP checksum works by adding bytes mod 255, IIRC (although I don't get why it isn't mod 256)
15:09:49 <fizzie> Doesn't really help when the web-interface calls bazillion "route add %s" printfs with input validation done in JavaScript.
15:09:50 <ais523> because CRC-32 would be too expensive
15:09:58 <Vorpal> ais523, probably on the IP/IPv6 level
15:09:59 <fizzie> (And runs those with system().)
15:10:02 <elliott_> Vorpal: no :( I edited the config file and bundled dropbear in and it uploaded but i could never connect
15:10:02 <Vorpal> maybe also ICMP
15:10:08 <elliott_> despite the page i was reading suggesting it should work
15:10:10 <elliott_> fizzie: Nice.
15:10:23 <elliott_> fizzie: (How do you know it does that?)
15:10:24 <ais523> fizzie: is it possible to overflow the %s?
15:10:25 <elliott_> (Is it open source?)
15:10:34 <elliott_> ais523: do you need to?
15:10:38 <elliott_> ais523: `start ssh server`
15:10:39 <ais523> elliott_: no
15:10:39 <ais523> I'm just curious
15:10:44 <fizzie> ais523: You can just put backticks in it, but it probably is.
15:11:38 <ais523> if something has a big vulnerability, it's still fun to look for the smaller ones
15:11:40 <fizzie> elliott_: It's not open source (though it's Linux-based and therefore it's a bit of a GPL issue...), but I've unsquashfs-lzma'd the image out of a firmware upgrade I found for some other ISP's old firmware. (There are no firmware upgrades available for my ISP; they do it all via the remote admin capability, presumably also to keep the firmware off the hand of nosy people.)
15:11:58 <elliott_> fizzie: You're nosy.
15:12:03 <ais523> btw, how many security vulnerabilities don't translate to "insufficient validation of input or insufficient escaping of output" somehow?
15:12:06 <fizzie> I did have to smuggle in a static-linked busybox, because theirs lacked the "nc" feature.
15:12:15 <fizzie> That I certainly am.
15:12:34 <ais523> fizzie: so you used backtick injection to smuggle busybox in?
15:12:47 <Vorpal> ais523, hm... stuff like hardware bugs? Such as the f00f one
15:12:47 <elliott_> backtick injection sounds much fancier than it is
15:12:54 <Vorpal> maybe
15:12:58 <ais523> also, is this a university/college/business router, or a home one?
15:13:23 <fizzie> ais523: Actually I used it's USB mass storage feature and `cp /mnt/usb1_1/busybox /var/busybox` (/var is the only writable tmpfs it has) to smuggle it in; their busybox does have the 'tftp' command, but it's been custom-hardcoded only to download firmware upgrades.
15:13:26 <fizzie> ais523: Home one.
15:13:26 <elliott_> backup to self: http://sprunge.us/JWWa
15:13:27 <ais523> Vorpal: hmm, right, that's a logic error leading to an infinite loop, isn't it?
15:13:34 <Vorpal> ais523, forgot the details
15:13:52 <ais523> fizzie: wow, attempting to lock it down like that seems both weird and pointless
15:13:55 <elliott_> fizzie: So does the filesystem have anything interesting? :p
15:14:06 <fizzie> ais523: Well, they technically own it still, for the first two years.
15:14:13 <elliott_> ais523: the livebox's configuration backups were /per-byte constant xor encrypted/
15:14:22 <elliott_> ais523: I have no idea what they're trying to achieve with such pointless barriers
15:14:25 <ais523> elliott_: was that with 42 as the byte?
15:14:29 <elliott_> presumably management told them to stop people fiddlign with it
15:14:34 <elliott_> ais523: I think it might have been 0x40
15:14:35 <elliott_> don't recall
15:14:37 <elliott_> it's on the net somewhere
15:14:38 <ais523> ah, OK
15:14:52 <fizzie> Being nosy was educational, though. There's an "incoming traffic filtering" page where you can set up firewall rules in the , but the rules don't show up in iptables -nvL, iptables -t nat -nvL, or ebtables -L. Unless they've put them in the mangle table or something, that page is a no-op.
15:14:56 <ais523> glibc used 42 because it was one of the few numbers that tends to map printable characters to printable characters, and it was their favourite out of them
15:15:17 <ais523> (the purpose was to hide things from strings(1), incidentally)
15:15:30 <ais523> fizzie: "in the ,"?
15:15:39 <fizzie> ais523: In the web-interface.
15:15:43 <ais523> I can't tell whether the comma is a punctuation, or a word of its own
15:15:50 <fizzie> I don't know where the word went.
15:15:54 -!- atehwa has quit (Ping timeout: 240 seconds).
15:16:04 <elliott_> fizzie: Ha.
15:16:07 <Vorpal> ais523, anyway I guess there can be DoS attacks that are due to logic errors, but apart from that most stuff boils down to insufficient validation/insufficient escaping
15:16:14 <elliott_> ais523: hmm, hide what?
15:16:22 <Vorpal> at least that I can think of
15:16:32 <ais523> elliott_: hmm, presumably things like quiz answers to casual viewing
15:16:42 <ais523> the sort of thing where the secrecy is to avoid spoilers, rather than for security
15:16:45 -!- atehwa has joined.
15:17:05 <ais523> (spoilers are an interesting subfield of security; the idea is to protect not against people who are trying to break into your system, but against people who aren't but might do so by mistake)
15:17:26 <elliott_> ais523: err, do you mean memfrob?
15:17:26 <fizzie> Also they at least use the optional bit of the TR-069 remote admin stuff, which is to have a TLS connection to the admin server, and use stored-on-the-device certificates to validate it, as opposed to having a shared-secret that's shared among all the boxes.
15:17:28 <Vorpal> <ais523> (the purpose was to hide things from strings(1), incidentally) <-- what for?
15:17:30 <elliott_> because i'm pretty sure that's just a joke
15:17:32 <elliott_> or strfry or whatever
15:17:35 <Vorpal> why would they want to hide something from strings?
15:17:36 <ais523> elliott_: yes, one of those
15:17:42 <elliott_> not to hide things
15:17:52 <ais523> anyway, a joke can have a useful purpose too, right?
15:17:55 <ais523> and it must be memfrob
15:17:58 <fizzie> "Note that this function is not a proper encryption routine as the XOR constant is fixed, and is only suitable for hiding strings."
15:18:09 <ais523> strfry is that one which started the famous argument with Ulrich Drepper about randomization algorithms
15:18:41 <elliott_> bleh, why doesn't Addr# work here?
15:18:51 <elliott_> fizzie: heh
15:18:56 <fizzie> Oh, I did found out a really confusing thing too.
15:19:15 <Vorpal> oh?
15:20:17 <fizzie> The way it does DNS for the clients of the NAT is, it gives them its own address as the DNS server always in the DHCP replies, then it takes the DNS server addresses from the ISP's DHCP server it talks to, and runs a custom piece of code which polls the primary one every now and then, and depending on whether it answers it does an iptables redirect of DNS queries to either the primary or secondary one.
15:20:35 <fizzie> I can't figure out any way how that is better than just forwarding the ISP's DNS server names (both) to the DHCP clients in the NAT'd network.
15:21:02 <fizzie> That way they could use either, or both, or whatever. It's not like the iptables redirect caches anything, like running dnsmasq or something (which is what most of such boxes I've met do) would.
15:21:26 <fizzie> I'm hoping their only reason wasn't "we can't figure out how to get the DNS server addresses from our DHCP reply into the DHCP replies we give to our LAN clients".
15:21:28 <ais523> fizzie: perhaps it would let one figure out what DNS queries the other was making via response time?
15:21:42 <ais523> so it's a sort of privacy thing?
15:21:46 <fizzie> Which "one" and which "other"?
15:21:56 <ais523> the clients of the NAT
15:22:07 <ais523> which I'm assuming there are two of because all numbers greater than 1 are equal
15:22:15 <Vorpal> fizzie, heh
15:22:29 <fizzie> I... don't really see how. I mean, the only thing it accomplishes is to effectively only provide a single ISP's DNS server address to the client.
15:23:04 <fizzie> There's no difference between a LAN client connecting to the modem box and having it iptables-redirect the traffic to the ISP's DNS server, and having a LAN client connect to the ISP's DNS server "directly".
15:23:19 <fizzie> Except in the destination address of the in-LAN packet.
15:23:25 <ais523> perhaps it's about always using one DNS server in preference to another
15:23:33 <ais523> so that if they say different things, one in particular takes precedence
15:23:44 <Vorpal> fizzie, plus I think it might fuck up dnssec, but I assume that isn't done at that point anyway
15:23:49 <ais523> might be useful for an ISP who wanted to redirect websites now and again
15:24:33 <fizzie> I guess that's... an effect it has, but it's a weird thing to do. There's nothing stopping the LAN clients to choose any third-party DNS servers, it's not redirecting all DNS traffic, just what's incoming to itself.
15:24:57 <elliott_> hmm, I think I might know what went wrong
15:25:01 <elliott_> except, err, no
15:25:02 <elliott_> wtf?
15:25:03 <fizzie> If the ISP wants to redirect websites, presumably they'd just do it by intercepting all DNS queries within their network.
15:25:22 <Vorpal> fizzie, I assume you run a local dns server?
15:25:50 <elliott_> That's a rather ridiculous assumption.
15:26:03 <Vorpal> rather than live with that mess I mean
15:26:27 <elliott_> I don't see why it would affect the actual usage of the system.
15:26:40 <fizzie> It's a true one too, though. Not exactly because of the mess; more because I'm not using the box's NAT. And to provide names for the private addresses.
15:26:53 <Vorpal> right
15:27:09 <Vorpal> personally I use a local dns server to get dnssec
15:27:29 <fizzie> Anyway, the custom "redirect to secondary if primary fails" is certainly an improvement over "just redirect to primary" "solution".
15:27:52 <fizzie> Also the code can't use more than two DNS servers; fortunately the ISP's DHCP replies only list two, so it's not a loss here.
15:28:11 <fizzie> It's hardcoded to be "primary; or if primary fails, secondary"; not "here's a list, use the first working one".
15:28:25 <Vorpal> fizzie, you disassembled the code for it or something?
15:28:36 <elliott_> *Mirror> reify 42 (\p -> reflect p) :: Int
15:28:36 <elliott_> Process haskell segmentation fault
15:28:37 <elliott_> dammit
15:28:46 <Vorpal> fizzie, or is it just shell script?
15:29:08 <fizzie> No, it's code; I did disassemble it and glance at it; but that was mostly based on the messages it has.
15:29:13 <Vorpal> ah
15:29:29 <Vorpal> I can't remember seeing more than two DNS servers on any network I used
15:29:38 <Vorpal> I guess two is mandated by something?
15:29:42 <fizzie> Anyway, I'm not really sure why they don't run dnsmasq; everyone else's router does. That would deal with it plus cache requests while it's at it.
15:30:13 <Vorpal> does dnsmasq do dnssec?
15:30:36 <elliott_> Vorpal is a bot to turn statements about DNS into "dnssec???".
15:30:51 <Vorpal> elliott_, no I was just curious
15:31:06 <Vorpal> elliott_, it is an important question these days
15:31:06 <elliott_> OR WERE YOU
15:31:09 <elliott_> It is?
15:31:14 <elliott_> I'm pretty sure it actually: isn't.
15:31:30 <Vorpal> your: punctuation is: awkward
15:31:31 <ais523> hey, question that came up in a channel: would you spend $38 on a sandwich if it let you walk through walls (for a few seconds)?
15:31:34 <ais523> *in another channel
15:31:47 <elliott_> I...
15:31:52 <elliott_> ais523: Is it tasty?
15:31:54 <fizzie> Vorpal: It's just a DNS forwarder; it won't do DNSSEC validation, no. I think if you have a DNSSEC-enabled resolver (not that anyone does), it should work just fine through it.
15:31:56 <ais523> elliott_: I think so
15:32:03 <Vorpal> ais523, hm... maybe
15:32:05 <elliott_> ais523: How many seconds?
15:32:12 <elliott_> And does the effect start when I start or finish eating it?
15:32:15 <ais523> elliott_: maybe about 10
15:32:18 <ais523> and when you finish eating it
15:32:22 <Vorpal> hm
15:32:30 <Vorpal> ais523, what about floors?
15:32:36 <elliott_> ais523: Do the walls just act like air or do I have to, like, push myself through rock awkwardly while feeling like I'm suffocating?
15:32:38 <ais523> Vorpal: no
15:32:52 <Vorpal> <fizzie> Vorpal: It's just a DNS forwarder; it won't do DNSSEC validation, no. I think if you have a DNSSEC-enabled resolver (not that anyone does), it should work just fine through it. <-- I guess you mean libc resolver there?
15:32:53 <ais523> elliott_: you just don't collide with them
15:32:58 <ais523> you start walking at them and you're now on the other side
15:33:04 <Vorpal> elliott_, noclip I think
15:33:24 <ais523> as far as I can tell, I think being able to do that isn't very useful, but when it is it's worth $38
15:33:24 <Vorpal> ais523, what happens if I'm not through the wall by the time the 10 seconds are up?
15:33:31 <fizzie> Also Chrome has a DNSSEC "hack" that I think was the funniest. It doesn't need any DNS resolver support or anything; you just staple the full DNSSEC chain from root to your DNS name into the server certificate using their format, and it verifies that without needing to do any DNSSEC lookups.
15:33:36 <fizzie> http://www.imperialviolet.org/2011/06/16/dnssecchrome.html
15:33:42 <ais523> Vorpal: I don't think it takes time to go through the wall (but it only works on reasonably thin walls)
15:33:42 <fizzie> I'm not sure if anyone uses that.
15:33:51 <ais523> you start walking at one side and you're now on the other side
15:33:56 -!- nooga has joined.
15:34:03 <fizzie> But I believe it's a way for you to get a self-signed certificate that doesn't cause horrible shouting warnings, maybe?
15:34:05 <elliott_> ais523: then yes, probably
15:34:12 <fizzie> As long as everyone you want to talk to uses Chrome, anyway.
15:34:15 <ais523> elliott_: that was my answer too, I think
15:34:17 <elliott_> it sounds implausible and risk-free enough to spend $38 on trying it out
15:34:24 <Vorpal> fizzie, ouch
15:34:49 <elliott_> ais523: I mean, obviously in real life the answer is yes if I don't think the sandwich is poisoned and have any credible reason whatsoever to believe it might let me walk through walls, 'cuz that's some major claim :P
15:34:53 <Vorpal> fizzie, I run unbound locally for dns, it has dnssec. Works well
15:35:07 <fizzie> Vorpal: Presumably they're waiting for OS/network-stack/API/whatever-makers to make it possible to do DNSSEC-validated queries.
15:35:18 <ais523> elliott_: right, indeed
15:35:27 <ais523> but suppose the claim was well-verified, and you'd even done it once yourself to make sure
15:35:29 <Vorpal> fizzie, they = dnsmasq? chrome?
15:35:35 <ais523> would you actually find it useful to do it again, in the future?
15:35:42 <fizzie> Chrome.
15:35:49 <elliott_> ais523: do other people know about these magic sandwiches?
15:35:56 <ais523> yep, they're in common use
15:36:03 <elliott_> hmm
15:36:04 <Vorpal> hm
15:36:18 <ais523> presumably banks and so forth need to reinforce their vaults with anti-sandwich measures
15:36:26 <elliott_> I was about to ask if they were foolproof or not
15:37:01 <ais523> the more I think about this, the more $38 sounds like more or less exactly the right price
15:37:15 <Vorpal> more useful sandwiches than noclip: level select, god mode, invisibility
15:37:23 <elliott_> console sandwich
15:37:28 <Vorpal> hah
15:37:33 <elliott_> you eat it and get dumped into a 2-dimensional green-on-black text universe
15:37:39 <elliott_> as root
15:37:43 <ais523> invisibility seems around as useful as noclip, really
15:37:59 <Vorpal> ais523, depends on if there are ways for people to detect you when invisible
15:38:06 <Vorpal> or if it is fool proof
15:38:14 <elliott_> *Main> reify 42 (unbox . proxy reflect')
15:38:14 <elliott_> 140311358490681
15:38:15 <elliott_> *Main> reify 42 (unbox . proxy reflect')
15:38:15 <elliott_> 140311358155905
15:38:17 <elliott_> hmm, that's correct
15:38:28 <elliott_> *Main> reify (42 :: Int) (unbox . proxy reflect')
15:38:28 <elliott_> Process haskell segmentation fault
15:38:29 <elliott_> aha
15:38:34 <ais523> Vorpal: well, if it just blocks the ability for people to see you, there are still lots of things that'll give you away
15:38:35 <Vorpal> ooh another good one: bullet time
15:38:37 <ais523> sound, footprints, etc
15:38:38 <elliott_> I, er, have no idea why that happened
15:38:40 <fizzie> The "all weapons" sandwich sounds far less useful, given that you'd probably just end up buried under a ton of metal.
15:38:42 <elliott_> oh, pointer tagging, mayhaps
15:38:43 <ais523> and even potentially touch and smell
15:38:45 <Vorpal> fizzie, :D
15:39:14 <elliott_> fizzie: :D
15:39:22 <Vorpal> gah the lag
15:39:31 <elliott_> food sandwich
15:39:33 <ais523> Vorpal: elliott_ really was that slow, it wasn't lag
15:39:34 <elliott_> gives you the power to have a full stomach
15:39:39 <Vorpal> ais523, I had lag as well
15:39:50 <ais523> hmm, invulnerability would be a useful sandwich effect, although possibly not if it only lasted ten seconds
15:40:00 <Vorpal> PING google.com (209.85.173.99) 56(84) bytes of data.
15:40:00 <Vorpal> 64 bytes from lpp01m01-in-f99.1e100.net (209.85.173.99): icmp_seq=1 ttl=47 time=433 ms
15:40:01 <Vorpal> ouch
15:40:06 <Vorpal> was worse a bit ago
15:40:08 <elliott_> ais523: that obsoletes the wall sandwich
15:40:15 <ais523> elliott_: really?
15:40:16 <elliott_> as you can just smash yourself into the wall really hard while invulnerable
15:40:19 <Vorpal> ais523, indeed
15:40:29 <ais523> wouldn't that have the side effect of destroying the wall?
15:40:39 <Vorpal> hm true
15:40:40 <elliott_> ais523: that's what the wall repair sandwich is for
15:40:44 <Vorpal> hah
15:41:01 <Vorpal> fireball sandwich would be really dangerous.
15:41:12 <Vorpal> (mario style I mean)
15:41:19 <Vorpal> (not that you instantly explode)
15:42:25 <Vorpal> why sandwich btw?
15:42:27 <ais523> nah, 1-ups would be way more useful than fire flowers
15:42:38 <Vorpal> ais523, more useful yes. I said dangerous
15:42:40 <ais523> Vorpal: I'm surprised you didn't ask "why $38"
15:42:43 <ais523> well, OK
15:42:49 <elliott_> hmm, santa just reached australia
15:42:58 <Vorpal> ais523, most people don't live in fireproof houses.
15:43:01 <ais523> and it's because someone said the economy of a game was unrealistic because sandwiches cost $38
15:43:07 <ais523> and I pointed out that they let you walk through walls
15:43:10 <elliott_> :D
15:43:19 <elliott_> what game?
15:43:21 <Vorpal> ais523, which game?
15:43:22 <ais523> Earthbound
15:43:41 <Vorpal> oh nintendo?
15:43:50 <ais523> I'm not sure who made it
15:43:58 <Vorpal> well I googled
15:44:00 <ais523> although I think it was on a Nintendo console
15:44:14 <Vorpal> and indeed, it was which platform it was on I meant
15:44:21 <Vorpal> ais523, it seems to be a series btw
15:44:27 <elliott_> Vorpal hasn't heard of Earthbound? really?
15:44:34 <Vorpal> elliott_, indeed I have not
15:44:41 <ais523> Vorpal: the series is called Mother; Earthbound is IIRC Mother 2
15:44:54 <Vorpal> "EarthBound, known in Japan as Mother, is a role-playing video game series"
15:44:56 <Vorpal> says wikipedia
15:45:11 <ais523> hmm
15:45:17 <Vorpal> also:
15:45:18 <ais523> I think Earthbound was the only entry released outside Japan
15:45:20 <Vorpal> "EarthBound (known as Mother 2 in Japan) is a distant sequel to the original Mother"
15:45:26 <ais523> so perhaps it's impossible to tell from the information given
15:45:42 <ais523> as in, if a series only contains one game, you'd name it after that game, right?
15:45:59 <Vorpal> ah, snes
15:46:08 <Vorpal> (for the second game at least)
15:49:50 <Vorpal> hm when I'm using bluetooth and 3G my phone seems to charge at about the same rate as it discharges
15:50:25 -!- nooga has quit (Ping timeout: 252 seconds).
15:50:39 <Vorpal> which is strange since it usually lasts fairly long on battery doing that and it also tends to charge fairly fast when on plain standby.
15:52:21 <Vorpal> also I should report a bug tomorrow wrt lucid package dependency breakage for language-pack-gnome-sv being updated to (I think) depend on a non-existent version of language-pack-sv-base
15:53:28 <Vorpal> oh wait, it is the new language-pack-sv-base depending on language-pack-sv which doesn't exist?
15:53:48 <Vorpal> or hm it exists but not in the required version
15:54:14 <Vorpal> it is a mess anyway
15:56:05 -!- derdon has quit (Remote host closed the connection).
15:56:40 <Vorpal> bbl
15:57:34 <elliott_> hmm, 158 over 8
15:58:11 <ais523> 19.75, right?
15:58:51 <elliott_> yes, as it happens
16:12:08 <Vorpal> ais523, did you do that in your head?
16:12:23 <Vorpal> if so I'm quite impressed
16:12:34 -!- Nisstyre has quit (Ping timeout: 240 seconds).
16:12:58 <ais523> Vorpal: yes, it's not that hard
16:13:08 <Vorpal> for some people
16:13:08 <ais523> I have the problem that people at school knew I was a good mathematician
16:13:14 <ais523> and so asked me random arithmetic questions a lot
16:13:24 <ais523> and so I had to get moderately good at those too
16:13:26 <elliott_> ais523: *arithmetician
16:13:36 <elliott_> oh
16:13:42 <elliott_> wrote that before your last line put it into context
16:13:44 <ais523> yep
16:13:52 <ais523> in this case, 158 is clearly just under 160
16:13:59 <ais523> which I knew was a round multiple of 8
16:14:06 <Vorpal> yeah being good at calculate in your head is not the same as being good at mathematics
16:14:07 <elliott_> ("arithmetician" sounds so awkward because it's such a useless thing to be :))
16:14:22 <ais523> so I did 160/8 = 20 (which I didn't have memorized but did know was easy to work out), then work out how much less it is (2/8, or 0.25), and subtract
16:14:24 <Vorpal> elliott_, it is kind of useful to check you got the correct change back in shops?
16:14:48 -!- Nisstyre has joined.
16:15:19 <ais523> Vorpal: that's not really done via arithmetic, you check your change the same way the checkout worker gives you your change
16:15:30 <ais523> well, it is arithmetic, but it's just adding 1/2/5/10/20/50
16:15:42 <Vorpal> eh?
16:16:05 <Vorpal> like if you give a 100 SEK note and the thing cost 58.50 SEK
16:16:40 <Vorpal> ais523, so I don't see how it is just a few basic values
16:16:45 <Vorpal> you need to do 100-58.50
16:17:13 <Vorpal> then it is just subtracting 1/5/10/20/50/100/500/1000 from that
16:17:40 <Vorpal> ais523, so I'm not sure what you meant
16:17:48 <ais523> Vorpal: no you don't; you start with 58.50, then see that adding 20 is less than 100 so give a 20 and go to 78.50, then you can give another 20 and go to 98.50, then 1 and go to 99.50, then .50 and go to 100
16:18:01 <ais523> and you can do all that without knowing what the change actually adds up to at all
16:18:08 <ais523> I haven't worked it out yet
16:18:09 <Vorpal> ais523, well except we don't have .50 since about a year or so now
16:18:11 <ais523> oh, 41.50, now I have
16:18:14 <Vorpal> hm
16:18:19 <ais523> Vorpal: oh, in that case, two .25, or whatever it is you do have
16:18:26 <Vorpal> ais523, 1 is smallest nowdays
16:18:41 <ais523> well, how are you going to get .50 in change if there are no coins smaller than 1?
16:18:49 <ais523> this isn't a problem that can be solved by maths
16:18:55 <ais523> (and there are no non-integer coins bigger than 1)
16:19:00 <Vorpal> ais523, I guess you would round it, same as you round something that is like 49.99
16:19:01 <Vorpal> or such
16:19:13 <ais523> err, what?
16:19:15 <Vorpal> unless you use a bank card you have to round that nowdays
16:19:31 <ais523> elliott_: does Vorpal's description of the Swedish monetary system make any sense at all?
16:19:57 <Vorpal> ais523, surely you seen stuff sold for like 1 less than some amount to make it like "Only 499"
16:19:58 <Vorpal> or whatever
16:20:02 <elliott_> ais523: it's (a) Sweden and (b) Vorpal, of course it doesn't make any sense
16:20:08 <ais523> elliott_: heh
16:20:26 <elliott_> ais523: they probably have to assemble their coins themselves using wordless instruction manuals
16:20:28 <ais523> it just seems implausible that people would give things prices that are impossible to pay via notes or coins because the relevant physical currency doesn't exist
16:20:51 <Vorpal> ais523, anyway you do realise you can sell something for like 5.25 or whatever, if you buy several it will add up to a whole value, and with bank cards you can play that amount exactly
16:21:08 <Vorpal> ais523, it is just that we have money amounts smaller than our smallest denominations
16:21:19 <Vorpal> how is this strange?
16:21:32 <elliott_> Vorpal: So how do you buy an item which costs 1/2 the smallest denomination?
16:21:39 <elliott_> If you round up to one denomination, what change do you get?
16:21:53 <Vorpal> elliott_, I think it is round to nearest that is the standard.
16:22:06 <Vorpal> so it could be rounded down sometimes
16:22:26 <Vorpal> anyway I need to leave. Time to give out the presents. I'm at my grandparents.
16:22:36 <ais523> what if you close your bank account and they give you its contents?
16:23:09 <ais523> also, why don't people always buy things in combinations that give them the benefit of rounding errors?
16:23:18 <elliott_> this is ridiculous
16:23:25 <ais523> you'd get a lot of people buying some set of stuff, then walking out of the shop and back in again, then buying a different set of stuff
16:23:34 <ais523> it'd basically double the length of queues
16:23:38 <elliott_> I refuse to believe that Swedish business are throwing away money en masse because the government refuse to mint a coin
16:23:50 <ais523> elliott_: I suspect that Vorpal is either lying or trolling, here
16:23:54 <Vorpal> actually, false alarm
16:24:00 <elliott_> ais523: or dumb
16:24:03 <ais523> he doesn't seem very sure, and it's a bit weird to be unsure about your country's own monetary system
16:24:05 <Vorpal> <ais523> what if you close your bank account and they give you its contents? <-- no idea
16:24:37 <ais523> <Wikipedia> One krona is subdivided into 100 öre (singular and plural; when referring to the currency unit itself, however, the plural is ören). However, all öre coins have been discontinued as of 30 September 2010.[4] Goods can still be priced in öre, but all sums are rounded to the nearest krona when paying with cash.
16:24:56 <ais523> OK, /Sweden/ is trolling
16:24:58 <elliott_> surely they're always rounded up
16:25:10 <Vorpal> <ais523> also, why don't people always buy things in combinations that give them the benefit of rounding errors? <-- you realise that 1 SEK is a small amount of money. Like 0.09£
16:25:16 <ais523> either that, or Wikipedia has been vandalised and Vorpal is relying on it to pretend to be Swedish
16:25:26 <elliott_> :D
16:25:40 <elliott_> Vorpal: you realise that multiplication exists?
16:25:46 <Vorpal> well sure
16:25:54 <elliott_> you could probably amass huge sums of money if you were patient and had a lot of conspirators
16:25:55 <Vorpal> anyway I remember 50 öre (0.5 SEK) coins
16:26:08 <Vorpal> I don't remember any smaller denominations. They haven't been around for ages.
16:26:19 <ais523> hmm, apparently the only coins are 1SEK, 5SEK, 10SEK nowadays
16:26:27 <elliott_> anyway, where does the money /go/? do companies produce financial reports with rows for "money lost due to coin rounding"???
16:26:28 <Vorpal> ais523, indeed, 20 SEK is a note
16:26:40 <ais523> that's an incredibly small selection of coins to put a monetary system on
16:26:41 <Vorpal> elliott_, I have no idea
16:26:47 <ais523> *based a monetary system on
16:26:55 <Vorpal> ais523, that is because we use notes for larger values
16:26:58 <elliott_> hmm, who wants to make lots of Swedish money with me?
16:26:58 <Vorpal> like 20 SEK note
16:27:10 <ais523> elliott_: actually, that happens in gambling; a major part of the profit of some bookmakers comes from rounding errors
16:27:17 <ais523> but they're always in the bookmaker's favour, rather than to-nearest
16:27:25 <elliott_> ais523: heh
16:27:29 <ais523> elliott_: you'd need to be able to /sell/ to shops for that to work
16:27:47 <Vorpal> ais523, afaik it is round to nearest with .5 upwards
16:28:02 <Vorpal> which to me is the standard rounding system in most contexts
16:28:15 <elliott_> ais523: hmm, I don't see why
16:28:27 <elliott_> ais523: you just buy items 1 SEK cheaper from retailers, and then resell them at the retail price
16:28:46 <ais523> elliott_: well, OK, but you'd need to be able to sell, at retail price, via some method
16:28:51 <elliott_> the overhead is probably >1SEK though :/
16:28:59 <elliott_> ais523: just set up an online store, or something :P
16:29:01 <Vorpal> probably
16:29:12 <ais523> 1SEK is not very large, so you're probably not going to be able to find items that are worth less
16:29:22 <ais523> it'd be like trying to find fractions-of-a-penny stuff in the UK
16:29:41 <ais523> which can typically only be bought in bulk without a surcharge, nowadays
16:29:52 <ais523> (e.g. resistors are around 3 to the penny bought in bulk, but cost something like 7p individually)
16:30:29 <Vorpal> ais523, is 1 SEK smaller than your smallest coin?
16:30:41 <elliott_> our smallest coin is 1p
16:30:44 <elliott_> so no
16:30:45 <ais523> not sure; our smallest coin is 0.01 GBP
16:30:45 <fizzie> We don't use the 1 and 2 euro-cent coins in Finland; all prices are rounded to nearest multiple of 0.05 (at least it's unambiguous in that 0.02 rounds down, 0.03 rounds up) when paying with cash. When paying with card, no rounding is done. So some people choose cash/card based on whether the rounding would go up.
16:30:50 <ais523> and I'm not sure of the exchange rate
16:30:53 <elliott_> <Vorpal> <ais523> also, why don't people always buy things in combinations that give them the benefit of rounding errors? <-- you realise that 1 SEK is a small amount of money. Like 0.09£
16:30:54 <elliott_> so no
16:31:00 <Vorpal> elliott_, is 1p = 0.1 £?
16:31:04 <ais523> there's been some feeling that we should move to 0.05 GBP as the basic unit, in some cases
16:31:05 <Vorpal> or 0.01?
16:31:08 <elliott_> Vorpal: ...
16:31:11 <ais523> Vorpal: 1p = £0.01
16:31:13 <Vorpal> ah
16:31:15 <elliott_> I'm not even going to dignify that with a response
16:31:17 <Vorpal> elliott_, how should I know?
16:31:18 <fizzie> I don't think many people will bother to do the item-selection so that they get favourable rounding.
16:31:24 <elliott_> Vorpal: because that's ridiculous!
16:31:24 <ais523> Vorpal: well, it was mentioned recently in scrollback
16:31:31 <Vorpal> ah okay
16:32:44 <elliott_> hmm, I think I'll have to pretend I was busy on Christmas Eve
16:32:55 <Vorpal> eh?
16:33:26 <fizzie> Anyway, from what I recall you can go and buy a single potato, and have the total price be 0.02 eur or something, and then I think you have a chance of getting that thing free if you're lucky.
16:33:43 <Vorpal> heh
16:33:52 <elliott_> fizzie: then iterate
16:33:54 <elliott_> SO MANY POTATOES
16:33:56 <ais523> fizzie: I'm sure potatoes cost more than €0.02
16:34:01 <fizzie> Though they can just invent a "minimum purchase 0.05 cent" rule.
16:34:10 <Vorpal> elliott_, the problem is that takes time that you could have spent doing other things
16:34:57 <ais523> it reminds me of the calculation that if Bill Gates saw a dropped $100 note on the other side of the street, it wouldn't even be worth his time to pick it up
16:34:59 <elliott_> Vorpal: you think I have something better to do than crash Finland's potato economy?
16:35:05 <Vorpal> ais523, heh?
16:35:16 <Vorpal> elliott_, well, maybe not you
16:35:34 <ais523> Vorpal: because his time is worth a /lot/
16:35:41 <elliott_> Vorpal: you'll go down in the history books as "boring". me, "architect of the great finnish potato crash of 2012"
16:35:43 <Vorpal> ais523, right
16:35:49 <elliott_> (which lead to the end of the world)
16:35:57 <Vorpal> elliott_, right
16:35:58 <elliott_> so um
16:36:01 <elliott_> very short mention in history there
16:36:07 <elliott_> i guess someone wrote "2012: a summary" as the world burned
16:36:54 <fizzie> ais523: It just needs to be a small enough potato. They're around 0.70 EUR/kg, I think, so... a 30-gram potato would be 0.02 eur. Anyway, I googled, and seems it was has been done e.g. with candy, with one of those "collect assorted candies into a bag" things; selecting three small candies gave a total price of 0.02.
16:37:19 <ais523> fizzie: 30-gram potatoes exist?
16:37:25 <ais523> also, candy I can believe
16:37:32 <ais523> what's the smallest Euro coin?
16:37:34 <Vorpal> ais523, anyway wrt the coin issue above, why would having 1/5/10 be an issue as long a you have other denominations as paper instead of metal coins?
16:37:48 <ais523> Vorpal: coins are more convenient to transport
16:38:03 <ais523> that's the reason the coins in the UK go all the way up to £2
16:38:21 <Vorpal> ais523, they are thicker than notes, thus are more awkward to fit into your wallet without making that annoyingly thick
16:38:22 <elliott_> our 2 pound coins are so cool. i always want to pop out the inner bit
16:38:25 <fizzie> ais523: They have 1, 2, 5, 10, 20, 50 cent and 1, 2 eur coins. But we only use from 5 cent up in Finland.
16:38:30 <ais523> (technically speaking, £5 coins exist, but they're limited edition and serve as a method for the Royal Mint to show off and advertise its coin-making skills to other countries)
16:38:31 <Vorpal> bbl
16:38:47 <fizzie> (Dinner ->)
16:38:50 <elliott_> ais523: hmm, I thought they were to amke money
16:39:01 <ais523> elliott_: no, they sell them for £5 each
16:39:13 <ais523> although presumably they end up more valuable after that, due to scarcity or whatever
16:39:42 <ais523> and I don't think they can mint coins merely to make money
16:39:50 <ais523> although, hmm, this is confusing
16:39:55 <ais523> making money is the Mint's /job/
16:40:18 <ais523> presumably they're restricted in how much they can make and when, and who ends up with the profits
16:40:43 <ais523> Vorpal: anyway, AFAIK most people know that £5 coins exist, but few people have ever seen them
16:41:01 <ais523> for some reason, this doesn't make them a popular target for counterfeiters
16:41:19 <ais523> presumably because people would get suspicious in response for someone actually using a £5 coin to buy things with
16:41:27 <ais523> hmm… £50 notes exist, but are rare
16:42:04 <ais523> I own one, but it's very rare to be given one for any real reason, and I think banks will give even large sums of cash in £20 notes unless you specifically request £50 notes
16:43:01 <elliott_> I think I've received a 50 pound note for a birthday or whatever before? or no, that was probably 20 :P
16:43:14 <elliott_> notes, how do they work.
16:43:34 -!- copumpkin has quit (Ping timeout: 240 seconds).
16:43:42 <ais523> elliott_: I received one for Christmas a few years ago, I think
16:43:48 <ais523> because the things are both rare and worth £50
16:44:07 <ais523> it's now sufficiently old that it isn't usable-in-shops tender (although you can always exchange the things for modern currency with the Bank of England, if you're so inclined)
16:44:17 <ais523> (and I think many other banks will accept them too)
16:45:43 <ais523> apparently it's usual for people to write the serial numbers of £50 notes in case they lose them
16:45:51 <ais523> *write down
16:50:58 -!- copumpkin has joined.
16:55:09 -!- zzo38 has joined.
16:55:31 <zzo38> Whatever it was I did, if it works for IO monad then it will work with other monads too
16:58:04 <elliott_> ais523: why is it christmas. time is weird?
16:58:17 <ais523> elliott_: it isn't yet, in the UK or US
16:58:24 <ais523> although it is in many countries
17:08:40 <zzo38> In here, it is not Christmas yet
17:10:38 <elliott_> what about outside?
17:11:14 <zzo38> Not in this outside.
17:13:02 <elliott_> which outside?
17:13:55 <zzo38> That one!! Look over there!! No, the other over there!!
17:14:13 <fizzie> Euro banknotes go up to 500 EUR.
17:14:14 <elliott_> oh
17:14:15 <elliott_> now i understand
17:14:21 <fizzie> Not that I've ever even seen the 500 EUR one.
17:14:32 <elliott_> fizzie does not have that much money to his name.
17:15:11 <fizzie> Actually I might have seen the 500 eur one, but probably not the 200 eur one, it looks unfamiliarly yellow.
17:15:16 <fizzie> The 100 eur ones you see now and then.
17:15:52 <elliott_> (It's because he's 30.)
17:16:00 <elliott_> Wait, are you 30 yet? I might have to retire that one.
17:16:10 <elliott_> I'll just stick to pointing out how much of a pointless waste of time speech recognition is.
17:16:10 <fizzie> No, and stop trying to make me feel old.
17:16:11 <ais523> fizzie: there was a case of people actually getting away with spending counterfeit 300 euro notes a while back
17:16:17 <ais523> because not enough people realised they didn't exit
17:16:19 <ais523> *exist
17:16:27 <elliott_> fizzie: Stop being old, then, you... speech recognition researcher!
17:16:32 * elliott_ the ultimate burn
17:17:13 <fizzie> I don't think I'm even 29 yet. Or, wait... right, yes, I'm not. Still almost four months of the "sweet 28", like they call it.
17:17:23 <ais523> fizzie: wait, there's a name for it?
17:17:44 <fizzie> No.
17:18:04 <fizzie> At least I can no longer be a member of the "27 Club" thing, which I think is a thing.
17:18:18 <fizzie> Yes, it is.
17:19:52 <elliott_> hmm, 148 over 7
17:20:08 <fizzie> They should have "sweet 16"-style adjectives for each year, with the adjectives becoming more and more depressing as the numbers get higher.
17:21:25 <ais523> it's quite hard to come up with a sequence of adjectives that long
17:21:29 <zzo38> There probably is no join, but it has <*> (m ((m x -> IO z) -> IO z) -> IO z) -> IO z It looks like doesn't join.
17:21:39 <ais523> that have an order over just the one axis
17:21:46 <ais523> it was pretty awkward even with entire sentences describing feelings
17:21:55 <ais523> when I needed 27 of the things
17:22:04 <fizzie> $ wn s -grepa | wc -l
17:22:04 <fizzie> 3505
17:22:10 <fizzie> 3505 adjectives to choose from.
17:22:24 <ais523> fizzie: yes, but that's not really very many
17:22:34 <ais523> when most of them will be inappropriate, and the appropriate ones may be hard to order
17:22:44 <fizzie> Not entirely sure what year should be "verminous", and which one "xanthous".
17:23:02 <fizzie> But worthless and wrinkleless both work out just fine, for example.
17:23:25 <fizzie> 1. yellow, yellowish, xanthous -- (of the color intermediate between green and orange in the color spectrum; of something resembling the color of an egg yolk)
17:23:32 <fizzie> I have to admit "xanthous" was a new word for me.
17:24:07 <ais523> it's a good one
17:24:20 <ais523> I'd vaguely heard it, but wasn't completely certain it referred to a colour, and was much less certain which
17:24:32 <fizzie> It sounds a bit like a word they put in crossword puzzles.
17:25:05 <elliott_> <ais523> it was pretty awkward even with entire sentences describing feelings
17:25:05 <elliott_> <ais523> when I needed 27 of the things
17:25:05 <elliott_> wat
17:25:15 <fizzie> "Etymology: < Greek ξανθός yellow + -ous suffix. Applied to those races, or that type, of mankind characterized by yellow or yellowish hair and light complexion; fair, blond. Also said of the hair, complexion, etc. Opp. to melanic adj. 2, melanous adj."
17:25:19 <fizzie> Oh, it's just Greek.
17:25:32 <ais523> xi is such a pretty letter
17:27:22 <fizzie> It has the banana problem to write.
17:27:23 <elliott_> lowercase or uppercase?
17:27:29 <elliott_> it's very ugly in uppercase sans-serif
17:27:38 <ais523> lowercase
17:27:47 <ais523> uppercase is a bit bland, I agree
17:27:50 <fizzie> Ξ!
17:28:02 <ais523> although uppercase xi is the only really sensible way to draw an uppercase X on a seven-segment display
17:28:13 <ais523> if you're trying to make every capital letter distinct
17:28:25 <ais523> (hmm, I'm not sure I ever wrote that down; I tried to work it all out entirely in my head)
17:28:50 <fizzie> What does your K look like?
17:29:16 <fizzie> (Though maybe the M would've been a better question.)
17:32:39 <zzo38> I usually use octal numbers to represent patterns on a seven-segment display (so, 177 means the full "8" and 010 means the "-")
17:33:45 <elliott_> yay, 108 over 6.5
17:35:02 <zzo38> elliott_: What are those number refer to?
17:35:18 <elliott_> required rates of change
17:36:29 <zzo38> What are you changing?
17:38:21 <elliott_> Nothing. Only observing.
17:38:50 -!- azaq23 has joined.
17:38:58 -!- azaq23 has quit (Max SendQ exceeded).
17:39:25 -!- azaq23 has joined.
17:39:33 <Gregor> elliott_: I for one still think your proposed UA string is the greatest.
17:40:17 <fizzie> I for one welcome our new UA overlords.
17:40:39 <elliott_> Gregor: It certainly is that, although I preferred your "Firefox but also Chrome and additionally an iPad and Android at the same time, please kill me" monstrosity.
17:41:05 <Gregor> elliott_: It's also every crawler bot that ever was.
17:41:17 <elliott_> fizzie: Have I told you to fix the regionfile stuff yet? :p
17:43:16 <ais523> fizzie: K is like an upside-down 4 with the top segment set; M is a bar over a "lowercase n" shape
17:43:23 <fizzie> A couple of times, yes.
17:43:48 <elliott_> fizzie: I'm going to end up having to do it, aren't I.
17:43:57 <fizzie> ais523: Okay; the uppercase pi seems to be a popular M too.
17:44:10 <zzo38> ais523: My ideas were the same as that too
17:44:14 <ais523> fizzie: that seems to be the only sensible way to do a capital N
17:44:29 <ais523> a lowercase n is lowercase
17:44:31 <zzo38> But I didn't do uppercase/lowercase
17:44:37 <elliott_> I want a 7-segment uppercase+lowercase font now.
17:44:41 <ais523> the aim was to do every capital letter, not every letter in an arbitrary case; that makes it rather easier
17:44:47 <ais523> elliott_: I tried, but it was hard to remember the whole thing at once
17:44:51 <ais523> and I didn't think to write it down
17:44:57 <ais523> there's enough bits, after all
17:45:04 <ais523> I think I even tried some of the punctuation
17:45:06 <elliott_> ais523: you /thought/ of a TTF file?
17:45:12 <zzo38> Because some letter are like lowercase but some are like uppercase
17:45:18 <ais523> elliott_: not as the file, just as which segments would/wouldn't be set
17:45:37 <Vorpal> back
17:45:47 <Vorpal> <ais523> Vorpal: anyway, AFAIK most people know that £5 coins exist, but few people have ever seen them <-- heh
17:45:47 <zzo38> I could make a METAFONT program for seven-segments. If you want TrueType then maybe you can convert it somehow
17:45:53 <Vorpal> ais523, so they are rare?
17:46:05 <elliott_> yes, TTF files are rare
17:46:37 <fizzie> elliott_: Depends on how patient you are. I'm thinking I'll get right on it as soon as I get back to minecrafting in general; I haven't started it since September. I can't really make any guesses when that'll be; I'm on Christmas vacation now, that's certainly no time for Minecraft.
17:46:38 <ais523> Vorpal: £5 coins are, yes
17:46:47 <ais523> they're made in limited amounts for commemorative purposes
17:46:51 <ais523> and are different-looking each time
17:47:08 <ais523> fizzie: don't most people play games /more/ during the holidays?
17:47:12 <ais523> or do you do Minecraft as a job?
17:47:14 <Vorpal> ais523, and 50£ is 538.03kr hm
17:47:18 <Vorpal> 500 SEK notes are common
17:47:23 <fizzie> ais523: "It feels like a job."
17:47:23 * ais523 thinks this brings a new meaning to "you'd have to pay me to play Minecraft"
17:47:27 <elliott_> this reddit troll sure does really like Crysis
17:47:28 <Vorpal> I mean I probably have one in my wallet
17:47:38 <ais523> elliott_: why /can't/ a troll like Crysis?
17:47:47 <elliott_> fizzie: Well, I mean, I don't care overly much about mcmap until I buy a computer that I can play Minecraft on so I can get Pyralspite up again.
17:47:52 <elliott_> ais523: did I say they can't?
17:47:53 <ais523> is there something inherent in trolling that makes it hard to appreciate famously top-of-the-line graphics?
17:47:55 <ais523> elliott_: no
17:48:03 <ais523> but I'm implying you did so as to start a pointless argument
17:48:17 <elliott_> My favourite kind of argument.
17:48:20 <ais523> and only as an implication, so any arguments you use to defend yourself can be used to defend me too
17:48:22 <Vorpal> ais523, if you go to an ATM in Sweden and request 500 kr or more you will get a 500 kr note rather than several 100 kr notes.
17:48:34 <elliott_> heh
17:48:37 <Vorpal> well possibly a 500 kr note + a few 100 kr notes
17:48:41 <fizzie> 50£ is about 60€ -- and 50€ notes are very common too. It's 20s and 50s you get out of ATMs, and then of course 10s and 5s you get as change.
17:48:58 <fizzie> And I suppose some ATMs can give out 10€ notes too? But that's kind-of rare.
17:49:01 <Vorpal> ais523, which is 46£
17:49:12 <ais523> fizzie: hmm, in the UK ATMs typically give out £20 and £10 notes; some give out £10 and £5
17:49:13 <Vorpal> well 46.47£ even
17:49:17 <ais523> but those are rarer
17:49:34 <Vorpal> ais523, I know 1000 kr notes exist but I have no idea if you get them from ATMs
17:49:38 <elliott_> hmm, there is no way this north korean reddit is not satire
17:49:38 <ais523> I'm not sure why none seem to give out all three types of notes; probably because the usual ATM design can only handle two different sorts of notes
17:49:40 <Vorpal> they are kind of rare
17:49:50 <ais523> elliott_: a correct statement
17:49:59 <ais523> there's no way any hypothetical north korean reddit wouldn't be satire
17:50:06 <ais523> given that hardly any of the population has Internet access
17:50:11 <fizzie> SEK/EUR conversion is nice, since it's just moving a decimal point by one step. (Well, if you want to be exact, 1 EUR is pretty close to 9 SEK, so sometimes you do the "multiply by ten and then subtract the original" operation when going EUR -> SEK.)
17:50:19 <zzo38> Have you ever made computer fonts?
17:50:22 <elliott_> ais523: well, there are north korean sympathisers who live outside of the country
17:50:26 <elliott_> ais523: there's one famous guy who runs their website
17:50:30 <elliott_> he's in, um, somewhere in Europe
17:50:37 <ais523> elliott_: sympathising with the government, or the people?
17:50:48 <elliott_> http://en.wikipedia.org/wiki/Alejandro_Cao_de_Ben%C3%B3s_de_Les_y_P%C3%A9rez
17:50:50 <elliott_> ais523: govt
17:50:54 <ais523> I think quite a few people sympathise with the populace, as in feel sorry for them
17:50:55 <Vorpal> elliott_, really?
17:51:03 <elliott_> "Cao founded the Korean Friendship Association in the year 2000, setting up an officially approved DPRK website.[1] It includes a media section and a web-shop where badges, North Korean music, and other items can be bought on-line.
17:51:03 <elliott_> In 2002 Cao became the first foreigner allowed to work on behalf of the North Korean authorities in an official capacity, thus fulfilling a dream he had had since he was a teenager. This required that North Korean law had to be changed. He was given a North Korean passport. His official assignment is as a "special representative" of the Foreign Ministry.[2]"
17:51:30 -!- augur has quit (Read error: Connection reset by peer).
17:51:37 <elliott_> http://en.wikipedia.org/wiki/Korean_Friendship_Association
17:51:39 <elliott_> friendship north korea
17:52:35 <elliott_> http://kcna.co.jp/index-e.htm awesome, official north korean news!
17:52:38 <elliott_> just what i _always_ _wanted_
17:52:48 <elliott_> sure is a lot of "... Mourn Demise of Kim Jong Il"
17:53:05 <ais523> elliott_: there were news clips of people mourning the demise of Kim Jong Il
17:53:13 <ais523> it's not at all surprising that all of North Korea /would/
17:53:16 <fizzie> ais523: Re commemorative coins, EU coinage rules state that each member state can mint a single commemorative 2€ coin per year; but of course not all states bother, and certainly not every year. (Also the eurozone-wide reverse side is fixed, so the commemorative coins can only vary the country-specific side.)
17:53:20 <elliott_> ais523: non-north-koreans
17:53:37 <ais523> everyone there's been indoctrinated to make him out as some sort of god, and even if you didn't believe it you'd still pretend to mourn so as not to get in trouble
17:53:43 <fizzie> There's a fancy table at http://en.wikipedia.org/wiki/%E2%82%AC2_commemorative_coins#Issues denoting which coins have been issued.
17:53:55 <ais523> fizzie: do non-commemorative €2 coins exist?
17:54:01 <fizzie> Yes.
17:54:05 <fizzie> They're in regular use, as well.
17:54:13 <ais523> well, yes, I guess that'd be a perfectly sensible size for a coin
17:54:15 <Vorpal> fizzie, you mean exactly one coin?
17:54:20 <Vorpal> or one series?
17:54:38 <fizzie> Vorpal: One design. With some limits on the amounts made, but anyway.
17:54:45 <Vorpal> ah
17:54:47 <Vorpal> makes more sense
17:54:52 <elliott_> No, exactly one coin.
17:55:01 <fizzie> And actually looking at that table, Finland and Luxembourg are the only countries with all-green rows.
17:55:04 <elliott_> It's worth €2.
17:55:11 <elliott_> Forever.
17:55:17 <fizzie> (And Luxembourg has already a Y in the 2012's column, I don't know how that works.)
17:55:21 <Vorpal> fizzie, green meaning? the site isn't loadingt
17:55:23 <Vorpal> loading*
17:55:31 <Vorpal> or actually looks like I got the <title> now
17:55:36 <elliott_> yay, 88 over 6
17:55:43 <fizzie> Green meaning "issued the 2€ commemorative coin for this year".
17:55:46 <Vorpal> 500 bytes/s
17:55:48 <Vorpal> ouch
17:55:58 <Vorpal> bbl
17:56:00 <fizzie> It's a bit of a long page.
17:56:39 <fizzie> I don't know how to get page size in Chrome, there's a context-menu "page info" but it just pops out the useless-ish mini-info you get from the url bar favicon.
17:57:17 -!- augur has joined.
17:57:25 <ais523> fizzie: just assume A4
17:57:31 <ais523> or Letter, if you're in the US
17:57:31 <elliott_> http://kcna.co.jp/item/2011/201112/news21/20111221-37ee.html
17:57:34 <elliott_> wow, this is amazing
17:57:44 <fizzie> ais523: Page file size, in bytes, including all the referenced-to resources.
17:57:44 <elliott_> "His picture makes everyone feel pangs of compunction as he made long journey of field guidance, going in his field jacket all his life.
17:57:45 <elliott_> He had inconvenient naps and simple rice-balls in cars or on trains while making the journey of field guidance for the country's prosperity and people's happy life, not even taking a day off."
17:57:54 <elliott_> HE HAD INCONVENIENT NAPS
17:57:56 <elliott_> RIP
17:58:02 <elliott_> tortured soul
17:58:10 <ais523> elliott_: hmm, how am I meant to react to that?
17:58:25 <elliott_> ais523: mourning
17:58:33 <fizzie> "The coin's design resembles a stylised pillar from which ten sprouts grow upwards. This is a metaphorical theme: The ten sprouts represent the growth of the European Union (i.e., the 2004 enlargement which added ten new member states), while the pillar represents the foundation for the growth." Look how DEEP our commemorative coinage is. (That was released by Finland.)
17:58:35 <elliott_> fizzie: I think he was a: joke.
17:58:44 <fizzie> elliott_: Yes, in retrospect, you must be right.
17:58:56 <fizzie> elliott_: Well you know HINDSIGHT IS 88 over 6 and so on.
17:59:10 <ais523> 14 and a half?
17:59:17 <ais523> bleh, that took rather longer than it should have done
17:59:20 <fizzie> Or what's that twenty-by-twenty something, I don't know about your FOREIGN optical measurements.
17:59:24 <ais523> wait, no, 14 and a third
18:00:37 <elliott_> It's 78 over 6 now, I'm afraid.
18:01:01 <fizzie> Oh no, it's CONVERGING.
18:01:07 <fizzie> (I like the word.)
18:01:12 <fizzie> Conveeeeeerge.
18:01:27 <elliott_> Conveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerge.
18:01:32 <elliott_> It converged on the ".".
18:05:59 <Vorpal> elliott_, what are you doing? Wrt the x over y stuff
18:06:04 <zzo38> Did you know that..... Tic-tac-toe is bad because you can't be Jesus?
18:06:22 <zzo38> And that same thing with D&D?
18:06:29 <Vorpal> ...
18:06:37 <elliott_> Yes.
18:06:56 <elliott_> Vorpal: Observing values and hoping they approach 0.
18:07:10 <Vorpal> elliott_, for what purpose?
18:07:18 <elliott_> Vorpal: Science.
18:07:43 <Vorpal> elliott_, can you provide an useful explanation?
18:07:48 <elliott_> Yes.
18:07:58 <Vorpal> elliott_, would you please do so now?
18:08:15 <zzo38> Of course it is nonsense to say tic-tac-toe or D&D are bad because you can't be Jesus.............. but a few people have said these things
18:08:16 <elliott_> Under certain circumstances, yes.
18:08:23 -!- incomprehensibly has quit (Remote host closed the connection).
18:08:52 <Vorpal> elliott_, whatever
18:09:10 -!- incomprehensibly has joined.
18:12:33 <ais523> is there any evidence that Jesus knew the rules of tic-tac-toe?
18:13:11 <elliott_> `addquote <ais523> is there any evidence that Jesus knew the rules of tic-tac-toe?
18:13:13 <zzo38> ais523: Probably not. When was it invented?
18:13:14 <HackEgo> 775) <ais523> is there any evidence that Jesus knew the rules of tic-tac-toe?
18:13:20 <ais523> zzo38: I don't know
18:13:49 <ais523> approximately first century BC according to Wikipedia, so it's possible
18:13:50 <zzo38> I saw a picture, Jesus was carrying the cross but then the other people carried the circle so that they can be play X and O game
18:14:00 -!- incomprehensibly has quit (Read error: Connection reset by peer).
18:14:01 <ais523> although it wasn't quite the same rules
18:14:06 -!- incomprehensibly has joined.
18:14:14 -!- incomprehensibly has changed nick to micahjohnston.
18:14:15 <Vorpal> ais523, I don't know a Swedish name for tic-tac-toe, nor does google
18:14:29 <Vorpal> so maybe it is restricted to some cultures?
18:14:34 <ais523> and it was played in the Roman Empire, so it's possible that Jesus knew the rules, I guess
18:14:37 <Vorpal> hm
18:14:39 <ais523> Vorpal: do you know the game itself?
18:14:42 <Vorpal> ais523, well yes
18:14:49 <Vorpal> ais523, but only from English sources afaik
18:14:52 <ais523> ah, I see
18:15:10 <ais523> for a moment I thought people in Sweden played it, but didn't have a name for it
18:15:13 <Vorpal> ais523, isn't it a subset of noughts and crosses?
18:15:18 <ais523> no, it's the same game
18:15:20 <Vorpal> becauses google says noughts and crosses = luffarschack
18:15:22 <Vorpal> hm
18:15:26 <ais523> unless you mean a different game by noughts and crosses
18:15:34 <ais523> (to be fair, that game is pretty hard to meaningfully subset)
18:15:37 <Vorpal> ais523, I thought noughts and crosses was played on a larger grid?
18:15:42 <ais523> no, still 3 by 3
18:15:46 <Vorpal> hm
18:16:12 <Vorpal> luffarschack is quite a weird name, the literal translation would be like "tramp chess"
18:16:45 <Vorpal> or google indicates when I translate the parts: "hobo chess"
18:16:49 <ais523> that's a good description of the game :)
18:17:04 <ais523> tramp/hobo are UK/US names for much the same thing
18:17:05 <Vorpal> heh
18:17:11 <fizzie> It's called "jätkänshakki" i.e. "lumberjack's [approx] chess" in Finnish.
18:17:34 <Vorpal> ais523, anyway what is the game like tic-tac-toe that is 5 in a row and played on a potentially infinite grid?
18:17:39 <Vorpal> I seem to remember such a game
18:17:40 -!- Ngevd has joined.
18:17:53 <Ngevd> Hello!
18:17:53 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
18:17:53 <fizzie> That's called "5 in a row". :p
18:17:54 <Vorpal> and I /thought/ that was what luffarschack was
18:17:59 <Vorpal> fizzie, hm
18:17:59 <Vorpal> right
18:18:09 <ais523> Vorpal: it's also called go-moku, after the original Japanese
18:18:12 <fizzie> At least occasionally. Also, gomoku.
18:18:15 <Vorpal> I see
18:18:22 <ais523> but that's technically a 19x19 grid, not infinite; but you're very unlikely to notice the difference
18:18:30 <Ngevd> What's the general consensus on Mineso?
18:18:36 <ais523> and IIRC there are variants of the game to reduce the first-person advantage
18:18:38 <ais523> Ngevd: it's not spam
18:18:43 <ais523> that's all I noticed about it
18:18:46 <ais523> after I almost deleted it by mistake
18:18:51 <Ngevd> The spec bores me
18:18:52 <ais523> (this is why we get humans, not computers, to delete spam)
18:18:58 <fizzie> ais523: Sometimes the grid size depends on the notebook-you-happen-to-have paper size.
18:19:02 <elliott_> tramp chess :D
18:19:14 <fizzie> elliott_: Is "lumberjack chess" any better?
18:19:36 <ais523> just like 4x4x4x4 noughts and crosses isn't really fundamentally different in terms of gameplay from infinite-dimensional side-4 noughts and crosses
18:19:53 <Vorpal> heh
18:20:28 <Vorpal> ais523, infinite-dimensional? Ouch that will be hard to keep track of
18:20:36 <ais523> "It also allows implementations to add in support for all sorts of crazy I/O, library access and whatnot, without the need to fork the language and add in new commands."
18:20:40 <ais523> this is a disaster waiting to happen
18:21:00 <ais523> it's much like randomly making various memory addresses do memory-mapped IO without telling anyone
18:21:04 <Vorpal> ais523, that sounds like it could be a fingerprint style machanism?
18:21:07 <Vorpal> mechanism*
18:21:08 <ais523> Vorpal: that's why limiting it to 4D helps in practice
18:21:21 <Vorpal> ais523, 4D is hard to draw too.
18:21:23 <Vorpal> 2D is much easier
18:21:36 <Vorpal> 3D is doable but hard on paper
18:21:49 <fizzie> 4x4x4x4 noughts and crosses is just a 4x4 grid of 4x4 grids.
18:21:55 <Vorpal> well yes
18:21:57 <ais523> Vorpal: 3 and 4 are equally easy on paper
18:22:04 <Vorpal> hm maybe
18:22:25 <Vorpal> harder for a human to see what forms a line though
18:22:26 <ais523> hmm, now I'm interested in the concept of having to get some number in a row (5? 6?) on a 2D grid in arithmetic progression
18:22:49 <ais523> Vorpal: we had a rule that you didn't win unless you actually pointed out that you'd won
18:22:58 <ais523> because before that, people were winning by mistake and it was hard to figure out who'd won first
18:23:01 <Vorpal> ais523, indeed, which might be hard to notice
18:23:08 <elliott_> <Vorpal> ais523, infinite-dimensional? Ouch that will be hard to keep track of
18:23:10 <fizzie> What if you point out your opponent has won?
18:23:12 <elliott_> oklopol had inf-d 4 in a row
18:23:30 <Ngevd> fizzie, then they win, of course
18:23:51 <fizzie> Ngevd: But they didn't point out they won. Though I suppose they'd then immediately do so. But what if they don't?
18:24:01 <ais523> elliott_: 4 is definitely the right side length for infinite-dimensional
18:24:12 <ais523> fizzie: I don't think our rules allowed for that eventuality
18:24:12 <Ngevd> fizzie, then they are an iddiot
18:24:17 <Ngevd> fizzie, with twice the number of d's to prove it
18:24:41 <Vorpal> <ais523> elliott_: 4 is definitely the right side length for infinite-dimensional <-- why?
18:25:01 <fizzie> ais523: I can imagine someone would think it's not sporting to point out they won if it took the opponent's help to notice.
18:25:11 <ais523> Ngevd: you /do/ hate There Was Once A Fish Named Fred, right?
18:25:28 <ais523> Vorpal: have you /played/ it?
18:25:33 <Ngevd> ais523, I have never heard of it?
18:25:34 <Vorpal> ais523, can't say I have
18:25:40 <ais523> personal experience is that 3 would be far too trivial to win, and 5 far too difficult
18:25:44 <Vorpal> ah
18:25:48 <Vorpal> okay
18:26:04 <elliott_> ais523: the right side length is infinite, imo
18:26:09 <elliott_> basically what i'm saying is
18:26:16 <Ngevd> I've got a 4x4x4 reusable noughts and crosses set somewhere
18:26:17 <elliott_> the problem with 4 in a row is that it's not continuous
18:26:30 <Vorpal> ais523, does perfect play exist for 4D 4-side?
18:26:32 <elliott_> it should take place on an R^inf board
18:26:33 <ais523> elliott_: I mean, for side-length-limited, infinite-dimensional
18:26:37 <elliott_> and you should have to somehow make an infinite ray to win
18:26:41 <elliott_> ais523: oh, ah
18:26:42 <ais523> you'd use other values for other rulesets
18:26:46 <elliott_> ais523: well no that's a limit. limits suck.
18:26:49 <elliott_> i want to play this now
18:26:53 <ais523> Vorpal: what finite game does perfect play /not/ exist for?
18:26:53 <elliott_> i just have no idea how it'd work
18:27:05 <Vorpal> ais523, one with chance?
18:27:11 <ais523> there's perfect play even then
18:27:13 <fizzie> I suppose that was more "is it a win or a draw" question.
18:27:27 <Vorpal> ais523, if you consider chance an input sure
18:27:33 <ais523> and chance is involved in perfect play in rock-paper-scissors games, incidentally, even if the game itself doesn't have it
18:27:44 <ais523> Vorpal: nope, some strategy has to be the best
18:27:55 <ais523> or multiple strategies equal-best
18:28:02 <ais523> or, hmm
18:28:11 <Vorpal> ais523, you can construct a finite game of pure chance. Not saying it would be any interesting though
18:28:16 <ais523> I guess you could create a game where the supremum strategy wasn't possible, but you could get arbitrarily close
18:28:22 <ais523> Vorpal: but it still has a perfect strategy
18:28:26 <ais523> in fact, it has only one strategy
18:28:30 <ais523> which thus must be perfect by definition
18:28:31 <elliott_> 68 over 5.5!
18:28:31 <Vorpal> ais523, well okay
18:28:40 <ais523> (and such games exist, e.g. Snakes and Ladders)
18:28:42 <fizzie> "For the case of k-in-a-row where the board is an n-dimensional hypercube with all edges with length k , Hales and Jewett proved[3] that the game is a draw if k is odd and k ≥ 3^n - 1 or if k is even and k ≥ 2^(n+1) - 2.
18:28:42 <fizzie> They conjecture that the game is a draw also when the number of cell is at least twice the number of lines, which happens if and only if 2 k^n ≥ (k + 2)^n." Sadly with k=n=4, neither hold.
18:29:00 <Vorpal> ais523, okay, you win
18:29:05 <zzo38> Can you invent a card game of pure chance where the chance of winning is exactly 1 over pi?
18:29:24 <zzo38> (A solitaire game)
18:29:42 <elliott_> ais523: I wonder how I ever deluded myself into thinking I "played" Snakes and Ladders
18:29:47 <ais523> fizzie: the UK maths team proved it possible that draws were /possible/ in 4-dimensional noughts and crosses; it's nontrivial to construct a drawn position, there
18:29:56 <elliott_> "hey, let's watch a completely random simulation of nothing!"
18:29:57 <Vorpal> ais523, chess is finite right? Isn't there a rule like that the same position can only reoccur a finite number of times before the game ends?
18:30:02 <ais523> elliott_: you watch games of snakes and ladders, and support a particular team
18:30:05 <Vorpal> bbl
18:30:14 <ais523> Vorpal: yes, chess is finite, and it has a perfect play, but that play isn't known and seems impossible to calculate
18:30:15 <Ngevd> Vorpal, yes, three times
18:30:17 <elliott_> ais523: finally, someone takes the skill out of betting
18:30:34 <Ngevd> Vorpal, only came up once, I think, in high-level play
18:30:36 <ais523> actually, the fifty move rule limits games before the threefold repetition rule does
18:30:51 <ais523> Ngevd: what are you talking about? the threefold repetition rule becomes relevant quite a lot
18:30:55 <Ngevd> Really?
18:30:58 <Ngevd> I'm wrong, then
18:31:10 <ais523> by determining which player it is who has to decide whether they're going to make a suboptimal move and maybe win, or settle for a draw
18:32:36 -!- DeadlyFugu has joined.
18:33:06 -!- Ngevd has quit (Read error: Connection reset by peer).
18:33:28 -!- Ngevd has joined.
18:33:52 <elliott_> http://statusboard.archive.org/
18:33:59 <elliott_> this is so dramatic
18:34:11 <ais523> err, does it require JS or something?
18:34:16 <elliott_> yes
18:34:35 <ais523> meh, it seems to require JS from Google specifically
18:34:38 <ais523> which I'm not enabling
18:34:41 <ais523> (and not just the APIs)
18:34:45 <elliott_> ais523: it's just google maps
18:35:01 <ais523> well, OK, so not just JS, but data
18:35:07 <elliott_> lmao
18:35:14 <elliott_> yes they're going to violate your privacy by downloading information about the globe
18:35:18 <elliott_> checkmate JS users
18:36:02 <ais523> elliott_: well, they're going to tell Google that I use archive.org
18:36:14 <elliott_> That's illegal.
18:36:17 <ais523> no it isn't
18:36:28 <ais523> not if it's done via hotlink
18:36:28 <elliott_> archive.org must have, like, at least one bomb-making manual.
18:36:35 <ais523> oh, you mean using archive.org is?
18:36:37 <elliott_> Also Google are the police.
18:36:40 <ais523> hmm, I don't think so, generally
18:37:01 <ais523> elliott_: seriously, though, they could quite possibly even tell that you'd linked that and who a bunch of your friends are, just via timing, if it's a reasonably rarely visited page
18:37:31 <ais523> come to think of it, if Google mined that information (and to be fair, they probably don't), they'd probably end up with a picture almost as good as Facebook's as to who knew who
18:37:36 <elliott_> I am dead sure Google already knows all that.
18:37:49 <ais523> yes, unfortunately
18:37:49 <elliott_> Google even... INDEXES THIS CHANNEL'S LOGS.
18:37:54 <elliott_> You should /part to avoid association with me.
18:38:12 <ais523> they'd have to parse the logs too to match a nick with an IP
18:38:22 <ais523> which seems like a lot of trouble as online IRC logs don't use a consistent format
18:38:24 <elliott_> You're willing to TAKE THAT RISK?
18:38:29 <ais523> well, yes
18:38:34 <elliott_> codu offers HTTP logs in raw IRC format.
18:38:50 <ais523> I tend to assume that governments and megacorporations in general are out to get everyone in general, but don't care enough about me to specialcase me specifically
18:39:24 <ais523> and that timing-based scanning on HTTP logs would give enough information about pretty much everyone (especially with the number of sites using Google adverts), so why bother special-casing one particular likelyish format for IRC logs?
18:40:33 <elliott_> Google should offer a form to report information about the social graph, so that I could inform them that you clicked that link after I posted it and you'd run out of excuses.
18:40:34 <zzo38> ais523: It is why I made SIRCL format, so that you can make a consistent format for IRC logs
18:41:01 <Gregor> zzo38: ais523 explicitly wanted there NOT to be a consistent format here :)
18:41:13 <ais523> zzo38: I'm not convinced that your formats have high enough adoption for Google to parse them
18:41:25 <zzo38> ais523: I do not intend Google to parse them.
18:43:30 <zzo38> That is why I banned some services from accessing my gopher services, it so that Google cannot index them
18:44:05 <ais523> hmm, I wonder if there is a search engine for Gopher pages?
18:44:28 <zzo38> ais523: Yes, it is called VERONICA
18:47:41 <zzo38> SIRCL is the native format of 194CthulhuIRCd, but probably not anything else
18:48:28 <zzo38> (But similar formats, used by other programs, do exist)
18:50:29 <zzo38> Some differences might be using spaces instead of tabs between the timestamp and the message, or using the operating system's line breaks instead of always CRLF. And many of them lack support for metadata.
18:50:46 <ais523> hmm, I think, with format standardisation, the bigger problem is not coming up with the format itself, but persuading everyone to use it
18:51:53 <zzo38> ais523: Yes, that is something. However, there is no real standard format for IRC log so you can use what you want to. At least, this format I invented, I used this one. And the IRC server software I modified to make it be able to write outputs logs in this format
18:52:57 <ais523> hmm, so conclusion: your advice is that everyone should standardise on an unpopular format so that search engines don't crawl it?
18:53:09 <zzo38> ais523: No. That isn't my advice.
18:53:22 <ais523> ah, OK
18:53:25 <ais523> it's fun advice, though
18:53:46 <zzo38> My advice is to use the format that work for you. I made up the format simply so that there can be a standard format, even if nobody uses it.
18:55:00 <zzo38> The format is: There is two kind of lines, metadata lines and normal lines. Normal lines have a UNIX timestamp in decimal in ASCII, followed by a tab, and the IRC message, and terminated with CRLF (including the last line). Metadata lines start with * followed by the metadata command.
18:55:13 -!- Ngevd has quit (Ping timeout: 252 seconds).
18:55:30 <zzo38> Is this good to you?
18:56:51 <ais523> zzo38: I'm still trying to figure out whether the existence of a standard that nobody uses is useful or not
18:57:15 <ais523> hmm, and now I'm suddenly reminded of escaping special characters in Underload
18:58:49 <Vorpal> back
18:59:04 <Vorpal> <Ngevd> Vorpal, only came up once, I think, in high-level play <-- ah
18:59:31 <Vorpal> ais523, what is the 50 move rule?
18:59:35 <ais523> hmm, I'm busy reading an advertisement for a lint-like tool, as I was curious as to what they did nowadays
18:59:42 <ais523> Vorpal: 50 irreversible moves in a row causes a draw
18:59:50 <elliott_> 48 over 5 :)
19:00:02 <elliott_> ais523: which one?
19:00:02 <ais523> where irreversible = you couldn't make moves to go back to the previous position even with both players trying
19:00:06 <elliott_> ais523: I bet you got there through the Carmack post
19:00:06 <Vorpal> ais523, uh, irreversible? like pawns moving forward?
19:00:11 <Vorpal> ah
19:00:13 <ais523> elliott_: PVS-Studio
19:00:16 <zzo38> And capturing
19:00:21 <ais523> elliott_: indeed
19:00:22 <elliott_> ais523: right, that one is pretty impressive
19:00:29 <elliott_> ais523: I think "lint-like" is a bad description though
19:00:31 <Vorpal> ais523, that seems annoying to keep track of though
19:00:33 <elliott_> -Wall -Wextra is lint-like
19:00:40 <elliott_> global static analysis is something rather more than that
19:00:40 <ais523> the funny thing is, pretty much all the errors they mention are type errors in one way or another
19:01:01 <ais523> and that catching them all is only impressive because C doesn't track enough information to be able to catch them
19:01:09 <elliott_> ais523: a lot of the rest are due to for loops still being a thing that exists
19:01:16 <elliott_> C: the worst
19:01:17 <ais523> heh
19:01:22 <Vorpal> ais523, where is this advert?
19:01:26 -!- Ngevd has joined.
19:01:29 <elliott_> http://www.viva64.com/en/pvs-studio/, presumably
19:01:33 <Vorpal> ah
19:01:34 <elliott_> it has a bunch of examples of errors found in open-source projects
19:01:42 <ais523> elliott_: specifically, http://www.viva64.com/en/a/0077/
19:01:50 <ais523> perhaps it's the same list of examples
19:02:00 <elliott_> ais523: that's just one of them, I think
19:02:05 <ais523> ah, right
19:02:10 <elliott_> post, I mean
19:02:13 <ais523> I'm talking about the page that has examples of errors
19:02:19 <ais523> not a page about pages that have examples of errors
19:02:29 <ais523> as that doesn't contain the actual errors I care about
19:03:23 <elliott_> (38 over 5)
19:04:11 <ais523> the "A string is printed into itself." example is, I think, actually caught by C99
19:04:23 <ais523> due to sprintf having restrict on its args
19:04:38 <ais523> not sure, though, especially as you probably can't say "restrict ..."
19:05:38 <Vorpal> shouldn't it be enough to have restrict on just one?
19:05:46 <ais523> oh, perhaps it is
19:05:50 <ais523> I forget exactly how restrict works
19:06:06 * ais523 checks C11 draft
19:06:08 <Vorpal> I don't remember either
19:06:36 <elliott_> ais523: restrict ... seems like a terrible idea
19:06:39 <elliott_> you couldn't pass the same string twice
19:06:41 <elliott_> no?
19:06:48 <ais523> elliott_: oh, hmm
19:06:50 <Vorpal> can someone link me a C11 draft? Google is still unusably slow here.
19:06:57 <Vorpal> ais523, ^
19:07:01 <ais523> Vorpal: there's one in scrollback
19:07:05 <Vorpal> sec
19:07:22 <ais523> oh, but so long ago it's scrolled off my scrollback
19:07:25 <Vorpal> ais523, can't find it by searching for c11
19:07:29 <elliott_> ais523: /lastlog c11, /lastlog pdf give nothing herfe
19:07:30 <elliott_> here
19:07:31 <ais523> search for n1570.pdf
19:08:07 <Vorpal> right
19:08:19 <ais523> ah, OK, you do need a restrict on just the output string
19:08:23 <Vorpal> 48 kbit/s
19:08:27 <elliott_> hmm, right now I'm regretting not buying that C94 book
19:08:42 <elliott_> i could show it to my grandchildren
19:08:47 <ais523> what restrict means is that whatever object the pointer refers to, isn't accessed via any other pointer in the function that has the restrict param
19:09:13 <Vorpal> from april?
19:09:17 <Vorpal> that is kind of old
19:09:19 <Vorpal> I wonder what changed
19:09:35 <elliott_> Vorpal: it's design by committee, and it's /C/, they probably fixed two typos and reworded a sentence
19:09:37 <ais523> probably nothing, it just takes that long for ISO to agree on anything
19:09:44 <Vorpal> elliott_, probably
19:09:51 <ais523> as it'd have to be the whole standards committee, not just the working group
19:09:52 <elliott_> I'm surprised C11 introduced threads
19:09:52 -!- kallisti has quit (Ping timeout: 252 seconds).
19:09:55 <ais523> it was apparently approved without comments
19:09:59 <elliott_> it's only been 12 years!
19:10:05 <Vorpal> elliott_, are there atomic primitives too?
19:10:06 <elliott_> too drastic!
19:10:11 <elliott_> Vorpal: well, presumably...
19:10:18 <ais523> elliott_: the rationale, I think, was that it's impossible to do threads correctly without langauge support, no matter how good your libraries are
19:10:24 <elliott_> langauge
19:10:26 <Vorpal> elliott_, I wouldn't put it past them to skip that
19:10:34 <Vorpal> ah stdatomic.h
19:10:38 <elliott_> anyway, the idea that you can do threads correctly in C full stop is hilarious
19:10:46 <Vorpal> why is it threads.h not stdthreads.h?
19:10:50 <elliott_> it might even be hilarious enough for the committee to believe it
19:10:54 -!- kallisti has joined.
19:11:03 <Vorpal> oh stdnoreturn.h
19:11:04 <Vorpal> lol
19:11:12 <Vorpal> The header <stdnoreturn.h> defines the macro
19:11:12 <Vorpal> noreturn
19:11:12 <Vorpal> which expands to _Noreturn.
19:11:13 <Vorpal> that is all
19:11:22 <elliott_> they should introduce a header for every single new symbol
19:12:18 <ais523> elliott_: I think it's possible to do threads Cishly in C
19:12:29 <elliott_> ais523: yes, i.e. wrongly
19:12:35 <ais523> as in, no more incorrectly than the rest of the language does everything else
19:12:52 <elliott_> ais523: right, it's just that it's easier to fool yourself into thinking you have a working program when you're not writing manual locking code
19:12:53 <Vorpal> elliott_, depends on what you mean by correctly
19:13:04 <elliott_> Vorpal: "humanly possible to write a non-broken program with"
19:13:20 <Vorpal> elliott_, define non-broken?
19:13:34 <elliott_> no
19:13:44 <Vorpal> you can get it working up to some level, look at the kernel. Though there are likely to be some bugs
19:13:48 <Vorpal> but it works most of the time
19:13:59 <elliott_> not really
19:14:10 <elliott_> if it worked most of the time, bug reports in linux would be rare
19:14:18 <elliott_> and new releases would mostly just add new features
19:14:31 <Vorpal> elliott_, well, most > 75% or so at least
19:14:39 <elliott_> actually linux is one of the worst examples you can pick, it's huge and doesn't really have a reputation for extreme stability
19:14:46 <Vorpal> indeed
19:14:54 <Vorpal> elliott_, so look at vxworks or qnx then
19:14:56 <elliott_> there's no way linux has fewer than 10,000 bugs
19:15:25 <elliott_> Vorpal: is vxworks actually written in C?
19:15:32 <Vorpal> elliott_, C or C++ afaik
19:15:36 <Vorpal> I could be wrong
19:15:45 <ais523> hmm, quite often, bugs are not caught for ages because they're either triggered really rarely, or look like a feature rather than a bug (or else, look like lack of a feature you didn't know the program had)
19:15:56 <elliott_> anyway, "most people don't notice bugs that often" is very far off from "non-broken"
19:16:19 <elliott_> imagine if CPUs were as buggy as software
19:16:29 <Vorpal> elliott_, anyway what about environments built on top of pthreads. I guess threads with ghc is built on top of pthreads at /some/ layer?
19:16:30 <ais523> also, you can get obviously incorrect code in a program that nonetheless works by chance
19:16:42 <Vorpal> elliott_, sounds like a GPU then
19:16:47 <ais523> elliott_: actually, earlier iterations often are buggy, there's just more incentives to get it right
19:17:10 <ais523> e.g. the microcontrollers from Microchip quite often came with a list of things that should work but don't, and workarounds
19:17:32 <ais523> and desktop/server CPUs have similar problems on occasion, sometimes quite nasty
19:17:34 <Vorpal> ais523, and yet those are far far simpler than modern x86 processors
19:17:39 <ais523> Vorpal: right, indeed
19:18:18 <Vorpal> yes I remember that my home server (and old p3 box) sticks with using MTRR rather than PAT due to CPU errata (according to dmesg)
19:18:31 <Vorpal> s/and old/an old/
19:18:34 <elliott_> ais523: indeed
19:18:40 -!- elliott_ has left ("Leaving").
19:18:43 -!- elliott_ has joined.
19:18:47 <elliott_> ais523: but it's not even remotely comparable to software
19:19:00 <elliott_> hardware has bugs, but they're /exceptional/, and companies get tons of flak for them
19:19:01 <ais523> I think software could be taken down to the bug level of CPUs if it had to be
19:19:09 <ais523> just it'd take much longer to develop as a result
19:19:09 <elliott_> yes, it can
19:19:12 <Vorpal> elliott_, anyway CPUs have bugs, and usually the OS works around them. Rarely do you see major bugs that the OS can't work around.
19:19:13 <elliott_> no, it wouldn't
19:19:30 <ais523> incidentally, hardware receives really heavy testing at every stage in the process
19:19:39 <elliott_> ais523: writing a program in Haskell is easier than in C, right? (OK, pick a language you find intuitive rather than Haskell)
19:19:41 <Vorpal> the two major examples I can think of are pentium fdiv, and the f00f bug for x86
19:19:42 <ais523> because mistakes are really expensive
19:19:52 <elliott_> ais523: a program in Haskell is likely to have fewer mistakes than a program written in C, right?
19:20:07 <elliott_> ais523: generally, reducing the possibility for bugs makes programs /easier/ to write
19:20:13 <ais523> elliott_: well, it depends on what the program does, but if it's algorithmic rather than glue, it's definitely going to be easier and less buggy in Haskell than in C
19:20:15 <Vorpal> elliott_, what about the haskell runtime itself? Parts are written in C
19:20:21 <Vorpal> at least for ghc
19:20:23 <elliott_> the only reason people think writing reliable programs is hard is because our current environments make it hard
19:20:33 <micahjohnston> Vorpal: that's not really relevant, is it?
19:20:38 <elliott_> micahjohnston: indeed not
19:20:47 <ais523> elliott_: I'd say even Haskell isn't nearly expressive enough to keep bugs reasonably low
19:20:50 <Vorpal> well that part can have bugs
19:21:12 <micahjohnston> Haskell isn't expressive and can't keep bugs reasonably low?
19:21:23 <micahjohnston> I'm about to laugh
19:21:25 <ais523> err, that's not what I said?
19:21:39 <micahjohnston> what did you say?
19:21:42 <ais523> I implied that even a language that expressive isn't enough to keep bugs reasonably low
19:21:43 <micahjohnston> looks like that's what you said :/
19:21:47 <micahjohnston> ok
19:21:49 <elliott_> ais523: indeed, it's not
19:21:56 <micahjohnston> oh, I see what you mean
19:21:58 <micahjohnston> yeah, it's not
19:22:07 <elliott_> it's much better than C, though
19:22:09 <Vorpal> what languages are?
19:22:17 <micahjohnston> Agda, perhaps?
19:22:18 <Vorpal> which*
19:22:19 <Vorpal> hm
19:22:21 <micahjohnston> although it's perhaps less "expressive"
19:22:23 <elliott_> Vorpal: none yet, because people aren't interested in developing them, because <excuses>
19:22:40 <elliott_> excuses like "it's too hard to write programs in them" or "we don't need them to write bug-free programs" or ...
19:22:43 <micahjohnston> in Agda you can prove you have no bugs, barring side-channel attacks and compiler bugs
19:22:51 <micahjohnston> but you spend a lot of time with the type system
19:22:55 <micahjohnston> so there is a huge tradeoff
19:22:55 <Vorpal> elliott_, the latter is often true
19:22:55 <ais523> elliott_: to be fair, "it's too hard to write programs in them" is entirely true for Agda
19:23:06 <ais523> micahjohnston: and not really, you can still have bugs in the spec
19:23:08 <micahjohnston> yeah, it is
19:23:16 <micahjohnston> ais523: yeah, your model can failt o match reality
19:23:16 <Vorpal> elliott_, depends on the type or thing you are coding of course
19:23:18 <ais523> a proof that a program matches its spec is pointless when the spec is wrong
19:23:48 <elliott_> ais523: "bugs in the spec" is way overrated really
19:24:06 <elliott_> is a mathematical expression of what we want a program to do less likely to be correct than an English explanation?
19:24:08 <ais523> elliott_: I take it you've never tried to write a spec :)
19:24:18 <elliott_> no, it's not
19:24:27 <elliott_> so basically, you're more likely to tell people to write the wrong program in the first place
19:24:29 <micahjohnston> elliott_: yes, but the point is that either can still have mistakes
19:24:33 <micahjohnston> elliott_: or overlookings
19:24:34 <Vorpal> from personal experience I would agree with ais523 here
19:24:34 <ais523> elliott_: no, but the English explanation is almost guaranteed to be wrong
19:24:41 <ais523> and also massively imprecise
19:24:47 <micahjohnston> and so proving a program correct is still insufficient to win at the universe
19:24:57 <ais523> so the mathematical version being slightly more likely to be right isn't really saying much
19:25:14 <elliott_> ais523: then your complaint is nonsense
19:25:20 <Vorpal> no?
19:25:22 <elliott_> there is no way to do better than we can communicate
19:25:33 <Vorpal> elliott_, that is a major issue indeed
19:25:35 <elliott_> if we can't explain what we want the program to be, then we won't get the right program, there's no point pointing it out
19:25:48 <elliott_> there's no point saying "specs can be incorrect" if there's nothing /better/ than a mathematical specification
19:25:55 <ais523> elliott_: well, it explains why there's a ceiling on how good the programs can get
19:26:11 <ais523> because after some point, a sufficiently perfect program becomes impossible to communicate
19:26:16 <elliott_> I also think a mathematical spec is /vastly/ more likely to be correct than the plain English specification
19:26:18 <elliott_> not just slightly
19:26:26 <Vorpal> elliott_, well you can do tests against real world data
19:26:26 <micahjohnston> elliott_: there is a point, because it counteracts worship of proofs
19:26:31 <ais523> elliott_: a mathematical spec is much like a program itself
19:26:33 <micahjohnston> because proofs are still insufficient
19:26:42 <micahjohnston> they don't solve every problem
19:26:45 <elliott_> micahjohnston: there's no point calling something insufficient if it's literally the best thing possible
19:26:53 <micahjohnston> it's not literally the best thing possible
19:27:02 <ais523> just a declarative one, and writing declaratively is much easier than writing imperatively or even functionally when trying to describe a spec rather than an algorithm
19:27:05 <elliott_> micahjohnston: fine, so what is? ais523 wasn't claiming there was
19:27:25 <micahjohnston> I don't have to have an existence proof that it's possible there's something better
19:27:34 <micahjohnston> there may be nothing better than proofs
19:27:51 <elliott_> <micahjohnston> it's not literally the best thing possible
19:27:52 <micahjohnston> but proofs can only talk about their models, and are extremely vulnerable to e.g. side-channel attacks
19:28:03 <elliott_> if there's nothing better, then it's literally the best thing possible
19:28:05 <micahjohnston> ok, I'll rephrase
19:28:05 <elliott_> even if it's imperfect
19:28:05 <ais523> elliott_: I don't see why the best thing /can't/ sometimes be insufficient
19:28:17 <micahjohnston> it's just another tool in the toolbux
19:28:19 <micahjohnston> box*
19:28:22 <ais523> we can't fly a probe into the centre of the sun, because the best possible heat-shielding is insufficient, for instance
19:28:26 <micahjohnston> and we have no idea if it's the best thing possible
19:28:31 <elliott_> ais523: if the best thing possible is insufficient, you should give up; unless you intend to give up, then the best thing possible is sufficient
19:28:44 <elliott_> we're not trying to send a probe into the centre of the sun, but we are trying to program
19:28:44 <micahjohnston> tha'ts ridiculous
19:28:47 <ais523> elliott_: well, if you like, I'm saying we should give up the hope of having perfect bug-free programs
19:28:50 <micahjohnston> there aren't platonically perfect solutions to every problem
19:28:55 <elliott_> we don't generally try to do impossible things without first showing they're possible
19:28:58 <ais523> that's different from aiming for a program that's unbuggy enough
19:28:59 <elliott_> micahjohnston: that's my point
19:29:02 <elliott_> sufficient means good enough
19:29:07 <elliott_> if the best just isn't good enough, you can't do it
19:29:11 <micahjohnston> it's been proven that you can't measure the universe to 100% accuracy
19:29:16 <micahjohnston> not just that our tools are always flawed
19:29:25 <elliott_> ...and?
19:29:25 <micahjohnston> but that by nature of the universe, we'll always have missing information
19:29:29 <micahjohnston> that doesn't mean we should give up science
19:29:33 <elliott_> we don't try to measure the universe to 100% accuracy
19:29:38 <elliott_> because we're not idiots
19:29:41 <elliott_> because we know it's impossible
19:29:45 <Vorpal> micahjohnston, assuming of course that our current knowledge of physics is correct about that point.
19:29:52 <elliott_> science's goal isn't "measure the universe and also violate the uncertainty principle"
19:29:58 <ais523> and even if it were possible to measure the universe to 100% accuracy, it wouldn't be possible to store the resulting data
19:30:14 <micahjohnston> I know, but I'm saying literally the best science possible can never know everything about the universe
19:30:29 <ais523> it obviously takes at least as much information to describe a particle as that particle can store
19:30:29 <micahjohnston> that doesnt' mean we should give up at improving our knowledge
19:30:30 <elliott_> are you /trying/ to present a counterargument to anything I've said? because... you're not
19:30:37 <ais523> so if the inequality is nonstrict even once…
19:30:44 <micahjohnston> "if the best thing possible is insufficient, you should give up; unless you intend to give up, then the best thing possible is sufficient"
19:30:54 <micahjohnston> hm, I see I may have misinterpreted that message
19:31:16 <elliott_> if our goal was to measure the universe to 100% accuracy
19:31:18 <elliott_> we should give up
19:31:26 <elliott_> because it's not possible
19:31:55 <elliott_> ais523: i'm not sure that's necessarily true; what if there's a really compact kind of information-storing particle that nothing in the universe uses at all?
19:32:08 <Vorpal> anyway, the way things currently stand, ensuring that a piece of software is formally verified is not just worth it with current technology for many types of software. For a train brake control computer? Certainly. For a game? Not really.
19:32:10 <elliott_> you could replace the entire universe with a snapshot of its state as of the time yous tart, and still have space left over
19:32:17 <ais523> elliott_: to describe a particle, you need to at least be able to describe all the data it stores
19:32:30 <elliott_> Vorpal: yes, so why aren't we trying to improve the situation rather than publishing new C standards? :)
19:32:37 <elliott_> ais523: no shit
19:32:40 <ais523> unless, you're not including the data carried by data-storing particles in your Universe measurements
19:32:56 <elliott_> ais523: none of them exist
19:32:56 <Vorpal> elliott_, because of "technological inertia"?
19:33:01 <Vorpal> not sure that is the right term
19:33:05 <elliott_> Vorpal: ah! so you're arguing it's a good thing?
19:33:10 <Vorpal> elliott_, no?
19:33:15 <ais523> elliott_: oh, you're only trying to store the past state of the Universe, not the current state
19:33:19 <Vorpal> elliott_, I'm not arguing that C is a good thing
19:33:21 <ais523> yes, that's arguably possible
19:33:29 <elliott_> Vorpal: then I'm not sure why you think you disagree with me
19:33:33 <ais523> (note that the second law of thermodynamics bars you from storing any /future/ state of the universe)
19:33:36 <Vorpal> elliott_, disagree about what?
19:33:40 <elliott_> ais523: well, we're already doing that
19:33:42 <elliott_> ais523: it's called the universe
19:33:44 <elliott_> re: current state
19:33:58 <elliott_> Vorpal: I don't know, you're the one who seems to be disagreeing
19:34:00 <ais523> elliott_: that's using compression, that's cheating
19:34:11 <ais523> and, no, it doesn't compress either
19:34:22 <ais523> if you think the entire universe is deterministic, then you don't believe in the second law of thermodynamics
19:34:23 <elliott_> ais523: the universe is a compressed form of the universe? seriously?
19:34:26 <Vorpal> elliott_, well, no one invented a good solution that isn't too costly yet. There is a lot of inertia in switching basic technologies like programming languages
19:34:28 <ais523> the two viewpoints contradict each other
19:34:31 <elliott_> ais523: I would say it's quite 1:1
19:34:41 <ais523> elliott_: current and future
19:34:42 <micahjohnston> the 2nd law has nothing to say about determinism
19:34:54 <ais523> micahjohnston: 2nd law says entropy always increases; entropy = information content
19:34:54 -!- micahjohnston has quit (Read error: Connection reset by peer).
19:34:57 <Vorpal> elliott_, it potentially means a larger cost for whoever is first and a larger risk too.
19:34:59 <elliott_> ais523: I was just saying that if you want to store the current state of the universe inside the universe, we're already doing that
19:35:04 <ais523> so it says that future universe contains more information than current universe
19:35:05 -!- incomprehensibly has joined.
19:35:06 <elliott_> because that's what the universe is
19:35:11 <incomprehensibly> ugh, stupid connection
19:35:12 <ais523> incomprehensibly: <ais523> so it says that future universe contains more information than current universe
19:35:21 <Vorpal> elliott_, in short term it is simply cheaper to continue using C/C++ for your new game
19:35:27 <elliott_> Vorpal: so?
19:35:30 <elliott_> Vorpal: I was talking about C11
19:35:32 <incomprehensibly> ais523: I'm not familiar with that implication
19:35:32 <elliott_> and its new threads
19:35:35 <ais523> now, if future universe is entirely determined by current universe, it must have /the same/ information content
19:35:35 <Vorpal> elliott_, so that is why we get new C standards
19:35:36 <incomprehensibly> ais523: could you explain it?
19:35:39 <elliott_> which are incredibly stupid
19:35:44 <Vorpal> elliott_, to support much needed features
19:35:51 <elliott_> because (a) existing threading libraries are "good enough" in the grand tradition of broken C code
19:35:58 <ais523> incomprehensibly: 2nd law says that the amount of information required to describe the state of the universe is always increasing
19:36:02 <Vorpal> elliott_, well yes.
19:36:04 <Vorpal> elliott_, blame ISO for that
19:36:05 <elliott_> (b) compiler and library writers have to devote energy to supporting them
19:36:10 <elliott_> which diverts energy from doing something even vaguely worthwhile
19:36:12 <incomprehensibly> ais523: that doesn't mean it can't be deterministic
19:36:15 <ais523> but if determinism the case, then the current universe, plus a timestamp, is enough to explain any future universe
19:36:17 <incomprehensibly> ais523: look at it this way
19:36:18 <ais523> at's a contradiction
19:36:18 <incomprehensibly> say if you have
19:36:20 <incomprehensibly> 100 particles in a line
19:36:22 <ais523> *that's
19:36:26 <incomprehensibly> that's a small amount of information
19:36:40 <incomprehensibly> if you say the coordinates of each particle in a line, then no matter how disordered they are it's the same information
19:36:44 <ais523> well, OK, you can define "small" that way
19:36:48 <incomprehensibly> so entropy is just how much you can *compress* the information
19:36:49 <Vorpal> ais523, the 2nd law is not so much a law as a model of the universe
19:36:57 * elliott_ thinks ais523 is wrong here too.
19:37:02 <Vorpal> ais523, a model might not be completely accurate
19:37:07 <incomprehensibly> while the computer simulating the universe could still contain the exact same amount of info, you can just compress that info less
19:37:11 <ais523> incomprehensibly: but I can compress that information by giving the current state plus a timestamp
19:37:16 <ais523> plus the laws of physics
19:37:17 <elliott_> Also mumble mumble Kolgomorov complexity (I have to mention it whenever entropy comes up).
19:37:32 <ais523> and that'll be the case no matter how far in the future we go
19:37:33 <incomprehensibly> entropy from information theory is enlightening in this context, I think
19:37:34 <Vorpal> ais523, look at Newton's gravitation. It is a model. It isn't accurate. General relativity comes much closer. That doesn't mean it is 100% accurate either
19:37:37 <elliott_> Vorpal: Also to my understanding the 2nd law is just a statistic law.
19:37:47 <incomprehensibly> yeah, the 2nd law is just probabilistic
19:37:48 <elliott_> So it can be violated, it's just like rain on your wedding day.
19:37:55 <ais523> elliott_: anyway, I don't actually believe in the 2nd law; but I don't believe in determinism either
19:37:57 <Vorpal> and Newton's gravitation is good enough as a model a lot of the time.
19:38:00 <incomprehensibly> it's tehcnically *possible* for a cup of water to freeze at room temprature
19:38:02 <Vorpal> elliott_, ah
19:38:02 <ais523> I just think the two views are incompatible with each other
19:38:19 <incomprehensibly> although it's so unlikely that it will pretty much definitely not happen in the lifetime of the universe
19:38:30 <elliott_> incomprehensibly: I advise you to stop engaging ais523 on matters of physics past this point
19:38:51 <Vorpal> incomprehensibly, indeed. The 2nd law is a good enough model for stuff like that
19:38:57 <ais523> elliott_: should I bring out my argument that it's always correct to disbelieve determinism even if the universe is in fact deterministic?
19:39:23 <ais523> basically, if the universe /is/ deterministic, then your beliefs as to determinism or not are already decided, and you can't do anything about it
19:39:33 <incomprehensibly> now that's a fallacy
19:39:34 <incomprehensibly> that's like saying
19:39:40 <ais523> if you /can/ do something abou them, then obviously believing in determinism would be incorrect
19:39:44 <elliott_> ais523: no, we can just skip to the part where you don't believe the universe actually follows any laws, and so refusing to engage you in any physics-related debate is not intellectually dishonest
19:39:46 <ais523> thus, you should believe the universe isn't determinstic
19:39:48 <incomprehensibly> if the universe is deterministic, then all your actions are determined, and the same things will happen no matter what
19:39:50 <elliott_> and is indeed the only valid choice
19:39:51 <incomprehensibly> so obviously you shouldn't do anythign
19:40:09 <elliott_> but yes, that's of course a fallacy.
19:40:21 <ais523> incomprehensibly: yep, that would also be a correct inference; it's along the lines of "from a false statement anything follows"
19:40:24 <incomprehensibly> but ther'es a measurable difference between universes where you do things and where you don't do things
19:40:31 <ais523> in fact, that's a good argument to promote the fact that you shouldn't believe in determinism
19:40:33 <incomprehensibly> ais523: I don't see how it's along the lines of that at all
19:40:39 <incomprehensibly> ais523: no, it's not a good argument
19:40:41 <ais523> because if you do, you reach silly conclusions
19:40:42 <incomprehensibly> you're mixing levels of a hierarchy
19:40:44 <elliott_> yay, now I can say I've told you so
19:40:47 <incomprehensibly> you're applying things in the wrong context
19:40:47 <elliott_> have fun!
19:40:51 <incomprehensibly> elliott_: hahaha
19:40:56 <elliott_> I'll come back in a few hours to tell you I told you so
19:41:01 <Vorpal> elliott_, it will be entertaining to watch though
19:41:04 <incomprehensibly> meh, I think I'll pass
19:41:10 <elliott_> Vorpal: you say that now
19:41:18 <Vorpal> elliott_, but?
19:41:27 <ais523> elliott_: I'm toying around with the theory that everyone but me is irrational to make them easier to model
19:41:38 <ais523> under the assumption that the Universe doesn't have infinite memory
19:41:48 <ais523> (I suspect I'm probably irrational too, although am less certain about that)
19:41:54 <elliott_> ais523: I can apply Occam's razor to show you it's vastly more likely you're just stupid
19:41:56 <Vorpal> ais523, why wouldn't you be irrational as well?
19:42:03 <elliott_> you decide whether you want to go down that rabbit hole or not
19:42:06 <Vorpal> ah
19:42:10 <incomprehensibly> elliott_: aha, the 2nd law can state that kolmogorov complexity tends to increase, while the information stored by a computer simulating the universe could stay constant
19:42:11 <ais523> Vorpal: that theory doesn't suggest things about my own rationality either way
19:42:14 <elliott_> it's very easy to simulate a stupid person in a world of really smart people
19:42:17 <incomprehensibly> elliott_: thanks for the term
19:42:22 <elliott_> you just make them confused as to why other people do things all the time
19:42:30 <elliott_> incomprehensibly: yw, kolgomorov complexity is one of the best things ever
19:42:40 <incomprehensibly> haha yes it is
19:42:47 <ais523> elliott_: OK, I'll accept incomprehensibly's statement of your argument
19:43:07 * ais523 fights an urge to rephrase that as "the incomprehensible statement of your argument"
19:43:10 <elliott_> I made no argument wrt thermodynamics, I very wisely stayed out of that.
19:43:21 <elliott_> Well, I did mumble.
19:43:24 <incomprehensibly> haha
19:43:46 <Vorpal> elliott_, too late did you realise that your mumbling would be your doom
19:44:07 <ais523> elliott_: anyway, this sort of thing is why I ended up depressed a while back
19:44:20 <ais523> also, ended up thinking about the matter enough that I realised it was possible to make testable statements about religion
19:44:28 <incomprehensibly> what sort of thing?
19:44:33 <incomprehensibly> existential lines of thinking?
19:44:41 <elliott_> ais523: so what you're saying is, it'd be better for /both/ of us if you didn't start about these things? :p
19:44:47 <ais523> haha, perhaps
19:44:49 <Vorpal> the way I see it, it is kind of interesting but meh, at some point I have to get on with my life rather than try to answer questions I cannot
19:45:04 <incomprehensibly> it's cool to think about
19:45:08 <ais523> I'll end up coming up with ways to escape the matrix of solidity, at this rate)
19:45:12 <incomprehensibly> but doesn't give you life lessons beyond take advantage of your time while you have it
19:45:12 <Vorpal> whether that be deterministically decided for me or not
19:45:13 <incomprehensibly> lol
19:45:21 <elliott_> nobody can escape the matrix of solidity
19:45:45 <ais523> elliott_: well, I basically thought of connecting everyone's brains to a high-bandwidth information transfer thing (like the Internet, but faster)
19:46:05 <ais523> the question is, then, if you connect all those together, is there more than one person any more?
19:46:32 <elliott_> ais523: congraulations, you've written about 1 percent of a percent of The Last Question
19:46:39 <elliott_> and, umm
19:46:41 <Vorpal> elliott_, is that a book?
19:46:43 <ais523> hmm, glad to know that other people are thinking vaguely along those lines
19:46:43 <elliott_> probably countless other sci-fi works ever
19:46:47 <Vorpal> well yes
19:46:48 <Deewiant> Vorpal: Short story
19:46:48 <elliott_> Vorpal: oh don't get started
19:47:00 <Vorpal> Deewiant, ah, might read it then
19:47:02 <elliott_> Vorpal: you /are/ a hermit, right?
19:47:21 <Vorpal> elliott_, if that is the same as "I live with my parents"
19:47:25 <Vorpal> :P
19:47:26 <incomprehensibly> hahaha elliott_
19:47:30 <ais523> elliott_: nah, it's just that by the time Vorpal's finished reading a book (or even the first page), the title's gone out of scrollback
19:47:31 <incomprehensibly> yeah, the Last Question is fantastic
19:47:38 <Deewiant> Vorpal: Available e.g. at http://filer.case.edu/dts8/thelastq.htm
19:47:46 <Vorpal> oh Asimov.
19:47:47 <Vorpal> right
19:48:00 <Vorpal> ais523, :D
19:48:32 <Vorpal> Deewiant, thanks
19:49:33 <incomprehensibly> this is a great channel
19:49:49 <elliott_> ais523: anyway, it's fairly obvious that it's impossible to divide an arbitrary collection of sentient mush into people
19:50:09 <ais523> elliott_: good, I thought that'd be something you actually agreed with me on
19:50:09 <elliott_> I've heard it argued fairly convincingly that your personnness is essentially a real number determining how unlike other people you are
19:50:28 <elliott_> two clones would start off as obviously the same person but would become more peopley as time goes on
19:50:47 <Vorpal> incomprehensibly, as long are you aren't interested in esolangs, sure
19:51:00 <incomprehensibly> :P
19:51:18 <incomprehensibly> elliott_: interesting point of view
19:51:53 <elliott_> I'm rather disturbed by the idea that agreeing with other people makes you less of an individual, though :p
19:52:01 <elliott_> as you can derive from that
19:52:13 <ais523> elliott_: I'm not; I'm actually beginning to think that becoming less of an individual is the "correct" direction to go in
19:52:19 <incomprehensibly> well I think that's kind of a mushy interpretation
19:52:22 <ais523> in that it reduces the chance of your death
19:52:28 <incomprehensibly> because agreeing with other people doesn't mean your brain holds the same structures in your head
19:52:38 <elliott_> ais523: stop disagreeing with us, then
19:52:45 <incomprehensibly> haha
19:52:45 <ais523> haha
19:52:59 <elliott_> incomprehensibly: well, no, but making arguments based on hardware seems like a bad idea to me
19:53:21 <incomprehensibly> also it depends on a specific interepretation of consciousness
19:53:22 <elliott_> incomprehensibly: if we were ported to Algorithmic Agreement Nets(tm) (N.B. I just made this term up), then our personhoodnesses would change
19:53:25 <ais523> perhaps we should just fuse minds and debate this probably internally ;)
19:53:28 <elliott_> even if we acted and thought identically
19:53:30 <elliott_> which seems wrong
19:53:40 <incomprehensibly> that You™ is the specific abstract mathematical structure of your brain
19:53:48 <ais523> err s/probably/some appropriate word/
19:53:54 <incomprehensibly> and thus the same consciousness exists only once even if it has two physical instantiations
19:54:05 <incomprehensibly> I have no idea if I agree with that because there is as yet insufficient data for a meaningful answer.
19:54:05 <elliott_> incomprehensibly: well, no, because it'll diverge immediately
19:54:11 <incomprehensibly> elliott_: of coures
19:54:17 <incomprehensibly> I mean, what if there are identical environments
19:54:19 <elliott_> unless they completely overlap, in which case it's indistinguishable from a universe in which you only have one brain
19:54:22 <ais523> elliott_: and if it didn't, both you and me would find that obviously only one conciousness
19:54:24 <incomprehensibly> or, just talking about the instant before it's interacted with the world around it
19:54:29 <elliott_> incomprehensibly: so, say there's a completely identical parallel universe
19:54:29 <incomprehensibly> etc.
19:54:34 <ais523> elliott_: what's your opinion on the theory that there's only one electron?
19:54:38 <elliott_> incomprehensibly: what's the point of saying it exists? it's equivalent to it not existing
19:54:41 <incomprehensibly> that's getting close to meaninglessness
19:54:43 <incomprehensibly> yeahj
19:54:49 <incomprehensibly> unless they exist within a framework
19:54:50 <elliott_> so there /is/ only one you, in that situation
19:54:56 <ais523> also, why do you think causality only appears to act in one direction?
19:54:59 <incomprehensibly> such as they're two physical copies of a simulation
19:55:04 <incomprehensibly> and you can alter one
19:55:09 <elliott_> ais523: re: causality, some people think it doesn't
19:55:16 <elliott_> http://www.fourmilab.ch/rpkp/
19:55:20 * elliott_ doesn't buy it
19:55:35 <incomprehensibly> lol
19:55:42 <ais523> elliott_: I'm not certain it does, but I'm willing to acknowledge that it at least gives that impression
19:55:45 <elliott_> mostly because I'm terrible at the experiments
19:55:57 <elliott_> but apparently the results are /just/ statistically significant enough
19:56:07 <incomprehensibly> elliott_: I just mean, physically copy a brain so you have two identical ones, and talk about them in the instant before it's interacted with a different environment, or put them in two exactly identical rooms
19:56:12 <incomprehensibly> down to the particle
19:56:33 <elliott_> incomprehensibly: well, how does that differ from the two identical universes scenario?
19:56:40 <elliott_> incomprehensibly: it only differs once the particles start interacting
19:56:48 <elliott_> and thus the environments diverge
19:56:50 <ais523> incomprehensibly: are you aware of the fact that all known methods of reading the quantum state of something destroy the original?
19:57:00 <elliott_> ais523: no, there's one method that doesn't
19:57:02 <elliott_> ais523: thought experiment
19:57:05 <ais523> this strikes me as not being a coincidence
19:57:09 <ais523> elliott_: huh?
19:57:17 <incomprehensibly> elliott_: I'm just saying, for the time while they *don't* differ, are they different consciouesness? I don't think we can answer that meaningfully yet
19:57:20 <elliott_> ais523: incomprehensibly is proposing a thought experiment, so he can do whatever he wants
19:57:37 <ais523> elliott_: oh, I wasn't claiming this was the case in the thought experiment
19:57:40 <elliott_> incomprehensibly: I'm saying it's one consciousness, because the only way you can show it to differ from the identical-parallel-universe scenario is when they diverge by interacting
19:57:42 <elliott_> hmm
19:57:48 <elliott_> OK, what if you have a completely symmetrical room
19:57:49 <incomprehensibly> yeah, I get that
19:57:51 <ais523> I was just using it as evidence towards what I thought the answer would be
19:57:55 <incomprehensibly> it's a cool interpretation of consciousness
19:57:55 <elliott_> as in, down to the quantum level
19:58:05 <incomprehensibly> and neatly resolves the destroy-and-teleport moral quandary as "it's the same you
19:58:06 <elliott_> and put the same person on both sides of it
19:58:06 <incomprehensibly> "
19:58:08 <elliott_> facing each other
19:58:23 <incomprehensibly> they would keep doing the same thing
19:58:24 <elliott_> there's clear interaction there, but they also don't diverge, barring nondeterministic effects coming into play
19:58:30 <incomprehensibly> as long as everything is symmetrical down to the particle
19:58:33 <incomprehensibly> and if it's deterministic, yeah
19:58:44 <incomprehensibly> oh wait
19:58:45 <elliott_> hmm... I don't like the idea of escaping this by saying "QUANTUM EFFECTS HAVE TO MATTER"
19:58:48 <ais523> hmm, in that case, isn't it just one person in a non-Euclidean space?
19:58:50 <elliott_> because that's what crackpots do all the time
19:58:51 <incomprehensibly> what if they walk past each other
19:58:59 <incomprehensibly> and it turns into a swirly chaotic system
19:59:06 <elliott_> haha
19:59:10 <elliott_> ais523: yes, I think that seems reasonable
19:59:13 <ais523> elliott_: at my statement, or incomprehensibly's?
19:59:18 <elliott_> I can't think of an argument for them being different consciousnesses
19:59:26 <ais523> elliott_: I know that when I look into a mirror, I don't assume that what I see is a different person
19:59:38 <elliott_> ais523: I was agreeing with <ais523> hmm, in that case, isn't it just one person in a non-Euclidean space?
19:59:46 <elliott_> as in, maybe not literally
19:59:48 <ais523> right, agreed
19:59:56 <elliott_> but the structure of the argument seems correct
20:00:03 <ais523> but what I mean is, not only are there not two conciousnesses, there aren't even two people
20:00:04 <incomprehensibly> elliott_: you could say that it's grounded in the physical instantiation of it
20:00:05 <elliott_> this reminds me of a short story I read
20:00:07 <elliott_> by, I think Greg Egan
20:00:28 <incomprehensibly> we're essentially talking about how dollops of feelium are imparted
20:00:29 <elliott_> where a couple got their minds merged for an hour or whatever, and there's a mirror in the room
20:00:31 <incomprehensibly> but we don't know what feelium *is*
20:00:42 <elliott_> and they note that it could easily be an identical room
20:00:51 <elliott_> with a copy of themselves inside
20:00:52 <incomprehensibly> hm, I should read that
20:01:07 <ais523> elliott_: but left-right reversed?
20:01:15 <elliott_> ais523: prseumably
20:01:17 <incomprehensibly> elliott_: whether it behaves like a mirror depends on if you rotate, or actually flip
20:01:19 <elliott_> <ais523> but what I mean is, not only are there not two conciousnesses, there aren't even two people
20:01:21 <elliott_> I don't see the difference
20:01:25 <elliott_> a person is a consciousness
20:01:29 <incomprehensibly> if you rotate, they can walk past each other and touch each other in ways more interesting than a mirror
20:01:36 <ais523> elliott_: oh, I was taking person as conciousness + physical body
20:01:54 <elliott_> hmm, I'm going to drop "measure" here
20:02:01 <ais523> you wouldn't imagine things like skin as being part of the conciousness, but you would take them as being part of the person
20:02:04 <elliott_> since i distinctly recall it being used in the original argument of personhood-is-a-real thing I read
20:02:15 <ais523> in much the same way that a computer's case is part of the computer, but you can change it and still have the same computer
20:02:48 <incomprehensibly> although skin is more intimately connected to consciousness
20:02:52 <incomprehensibly> since it's filled with nerve endings
20:04:01 <ais523> incomprehensibly: oh, I was considering it distinct from the nerves just below it
20:04:05 <ais523> although they're probably mixed up in practice
20:05:01 <Vorpal> ais523, how many components of a computer can you change before it is a different computer?
20:05:05 <elliott_> grr, 28 over 4
20:05:10 <elliott_> Vorpal: ship of theseus
20:05:14 <Vorpal> elliott_, I know
20:05:26 <elliott_> I think you can solve that by making it continuous, too
20:05:28 <Vorpal> elliott_, I was just interested in how ais523 would answer that one
20:05:31 <Vorpal> hm
20:05:31 <elliott_> there's no "same X", just "Xness"
20:05:34 <ais523> I'm thinking about it at the moment
20:05:37 <Vorpal> elliott_, well yes
20:05:41 <Vorpal> elliott_, that works
20:05:42 <elliott_> what we're learning today: booleans suck, let's use reals instead
20:05:48 <Vorpal> heh
20:05:55 <ais523> with computers, you really /can/ set up the symmetrical universe situation
20:06:07 <ais523> get two computers, make them always receive the same inputs at the same times, have them initially the same
20:06:27 <ais523> do you then have one computer? I think you do, until some source of randomness gets in (maybe due to component failure)
20:06:48 <elliott_> yes, assuming perfect conditions
20:06:50 <ais523> so I think you can probably replace all the components and still have the same computer, as long as the replacements are compatible
20:07:06 <Vorpal> ais523, I remember reading about critical systems running like that
20:07:09 <elliott_> ais523: as in, do the same thing?
20:07:17 <Vorpal> and circuits comparing results
20:07:23 <elliott_> ais523: assuming you're ignoring time, that considers all computers of the same computational class and IO capabilities to be the same
20:07:25 <ais523> elliott_: as in, can't be distinguished from the originals by the computer itself
20:07:25 <elliott_> which is dubious
20:07:35 <ais523> elliott_: no, they'd also need to be storing the same data
20:07:42 <ais523> and have the same inputs
20:08:46 <incomprehensibly> relevant blog post:http://gmfbrown.blogspot.com/2010/03/rational-abstraction.html
20:08:48 <incomprehensibly> although it's a bit long
20:10:23 <Vorpal> I might read that when I get home then
20:12:34 <Vorpal> bbl
20:18:05 <elliott_> yay, 18 over 4
20:21:22 <ais523> now I'm trying to figure out what the X over Y elliott's been posting every now and then all refer to
20:21:54 <elliott_> I'm pretty sure I've actually told you
20:22:08 <elliott_> but looking at timestamps might help you
20:22:09 <ais523> perhaps, but if so I can't remember and wasn't paying attention
20:23:42 <ais523> I think your explanation's gone out of scrollback by now
20:24:03 <elliott_> it was days ago
20:24:07 <elliott_> but like I said, timestamps will help
20:24:45 <ais523> they're mostly a little after a multiple of 15 minutes, but I don't see a pattern otherwise
20:24:57 <ais523> and if that's meant to be the pattern, it doesn't explain what the numbers mean
20:25:02 <ais523> they do seem to be decreasing over time, though
20:25:04 <elliott_> the timestamp + one of the numbers, to be exact
20:25:15 <ais523> hmm, are seconds involved?
20:25:27 <ais523> seeing seconds in timestamps is a pain in this client
20:26:10 <zzo38> Then fix it
20:31:10 <elliott_> ais523: nope
20:31:11 <elliott_> just hours
20:31:18 <elliott_> well, and minutes, but you can ignore those
20:31:44 <elliott_> wow, my backlog must be really short
20:31:48 <elliott_> at least, /lastlog only shows two "over"s
20:32:14 -!- Ngevd has quit (Ping timeout: 240 seconds).
20:33:38 <ais523> `pastlog \d+ over \d+
20:33:55 <ais523> hmm, I don't really need the +s there, come to think of it
20:34:07 <ais523> the regex with them is equivalent to the regex without them
20:34:10 <HackEgo> No output.
20:34:33 <elliott_> `pastlog [[:digit:]] over [[:digit:]]
20:34:42 <HackEgo> 2009-03-14.txt:22:53:56: <Deewiant> I have a ZX Spectrum+ on which backspace is 0 over 90% of the time
20:34:59 <ais523> elliott_: heh, I'm amused that it doesn't know \d, but does know (?-i:)
20:35:12 <ais523> the second is rather more obscure
20:35:16 <elliott_> ais523: it's grep's "perl regexp" mode
20:35:18 <elliott_> surprised it can't do \d
20:35:37 <ais523> `pastlog [[:digit:]] over [[:digit:]]
20:35:38 <elliott_> ais523: OK, here's an actual hint: the second number is the remaining hours in the day
20:35:45 <HackEgo> 2011-12-15.txt:20:01:15: <elliott> 30 over 4, anyway :(
20:35:58 <ais523> elliott_: that would explain why it had been gradually decreasing
20:36:04 <elliott_> as previously established, it's meant to reach 0
20:36:07 <elliott_> (the fraction)
20:36:16 <ais523> the first number must be a number that you're expecting to reach 0 before the end of the day
20:36:20 <ais523> or you wouldn't say "over"
20:36:35 <elliott_> correct
20:36:48 <ais523> number of TODOs remaining in your fix-all-TODOs project?
20:36:59 <ais523> in a particular file that you decided you'd work on that day?
20:37:05 <elliott_> haha, no; that one stalled when I saw the first indexing of an array by a negative number
20:37:14 <elliott_> (blame fizzie)
20:37:23 <elliott_> (OK, of a pointer)
20:37:58 <ais523> oh, this was in mcmap?
20:38:10 <ais523> fix-all-TODOs sounds like a bad idea for a project where you aren't the main developer
20:38:21 <ais523> as in, obviously have more control over it than anyone else does by quite a large margin
20:38:35 <elliott_> ais523: well, git blame blames more of mcmap on me than fizzie
20:38:50 <ais523> that's not quite a large margin
20:38:55 <elliott_> I presume other people leave TODOs around so that /someone/ fixes them eventually
20:38:55 <ais523> also, lines of code is an awful metric
20:39:00 <elliott_> that's what I do, at least
20:39:05 <elliott_> ais523: indeed, I only calculated it for fun
20:39:44 <elliott_> ais523: the first two pages of git commit history for mcmap only have one commit by fizzie and the rest by me, for a more scientific(tm) measure
20:39:53 <elliott_> fizzie has probably still done more work than me on it, though
20:39:55 -!- Ngevd has joined.
20:40:05 <ais523> hmm, I think that I saw someone say (probably on proggit in response to that Carmack article) that codebases tended to have a higher bug proportion the larger they were
20:40:13 <ais523> as in, bug counts grow more quickly than codebases do
20:40:16 <elliott_> that was quoted on proggit, yes
20:40:42 <ais523> this implies that programs have a maximum size
20:40:47 <ais523> any larger, and they'd have more bugs than code
20:40:54 <ais523> it's probably quite large, though
20:41:04 <elliott_> ais523: this is reminding me of that quote
20:41:22 <elliott_> programs are either so simple they obviously have no bugs, or so complicated that they have no obvious bugs
20:41:34 <ais523> right
20:41:39 <ais523> more to the point, it's rare that any program has an obvious bug
20:41:42 <ais523> because they tend to be fixed
20:41:57 <elliott_> ais523: anyway, why would fix-all-TODOs be bad on a project you're a secondary developer on?
20:42:17 <elliott_> it's the perfect project: mostly non-intrusive (things just get better), fixes a lot of little nits, usually doesn't require great expertise
20:42:21 <ais523> because TODOs are typically there due to a lack of easy options
20:42:28 <elliott_> and usually doesn't make any major user-facing design decisions
20:42:32 <elliott_> ais523: nah
20:42:37 <ais523> which means that you may have to rewrite chunks of the code to deal with them
20:42:44 <ais523> elliott_: hmm, so what do you use TODOs for, then?
20:42:45 <elliott_> most TODOs in mcmap are "this is a hack, but I'm too busy working on everything else this code is doing to make it not a hack"
20:42:52 <ais523> well, exactly
20:42:58 <elliott_> or "this is technically undefined behaviour, but works, so I'm too lazy to fix it"
20:43:03 <ais523> and hacks often need rewrites significantly larger than themselves to remove
20:43:06 <elliott_> or "this only handles a subset of the cases, but it's enough to work right now"
20:43:21 <elliott_> ais523: not really; the negative pointer indexing was because it had to futz some header bytes before recursing
20:43:28 <elliott_> and had already incremented it by the time it got there, or something
20:43:38 <elliott_> that's a blatant hack, but an easy one to fix
20:43:50 <elliott_> the problem is that it's not rewarding to fix simple issues like that
20:43:53 <elliott_> so they never get fixed
20:44:28 <elliott_> ais523: here's the remaining TODOs and FIXMEs in mcmap, FWIW: http://sprunge.us/dDRY
20:44:32 <elliott_> just the lines with "TODO" or "FIXME" in them
20:44:34 <elliott_> (it's not long)
20:44:44 -!- iconmaster_ has joined.
20:44:52 <ais523> "TODO FIXME:"?
20:45:03 <elliott_> ais523: that's for really bad stuff :)
20:45:13 <ais523> hmm, I wonder what projects make a distinction between TODO, FIXME, and XXX?
20:45:39 <elliott_> /* fixed-size bitsets */
20:45:39 <elliott_> maybe byte-arrays would be better, but...
20:45:39 <elliott_> this is at least least appropriately retro. */
20:45:39 <elliott_> #define BITSET(name,len) uint8_t name[(len)>>3]
20:45:39 <elliott_> #define BITSET_SET(set,idx) ((set)[(idx)>>3] |= 1 << ((idx) & 7))
20:45:41 <elliott_> #define BITSET_CLEAR(set,idx) ((set)[(idx)>>3] &= ~(1 << ((idx) & 7)))
20:45:43 <elliott_> #define BITSET_TEST(set,idx) ((set)[(idx)>>3] & 1 << ((idx) & 7))
20:45:45 <elliott_> erm
20:45:47 <elliott_> dammit xchat
20:45:49 <elliott_> /* fixed-size bitsets */
20:45:51 <elliott_> /* FIXME:
20:45:53 <elliott_> maybe byte-arrays would be better, but...
20:45:55 <elliott_> this is at least least appropriately retro. */
20:45:57 <elliott_> #define BITSET(name,len) uint8_t name[(len)>>3]
20:45:59 <elliott_> #define BITSET_SET(set,idx) ((set)[(idx)>>3] |= 1 << ((idx) & 7))
20:46:01 <elliott_> #define BITSET_CLEAR(set,idx) ((set)[(idx)>>3] &= ~(1 << ((idx) & 7)))
20:46:03 <elliott_> #define BITSET_TEST(set,idx) ((set)[(idx)>>3] & 1 << ((idx) & 7))
20:46:05 <elliott_> at least fizzie has the taste to say "FIXME" whenever he does something awful
20:46:10 <Deewiant> For the three of elliott's quoted examples I'd use TODO, XXX, and FIXME respectively
20:46:10 <elliott_> also, it's at least least-appropriately retro!
20:46:31 <elliott_> "XXX" is too ugly to use
20:46:42 <Deewiant> It's supposed to be ugly :-P
20:47:15 <elliott_> hmm, bug trackers should create a bug for each FIXME in the code automatically
20:47:30 <ais523> elliott_: that BITSET code doesn't look hackish to me; in fact, it looks both sensible and extensible
20:47:33 <elliott_> and close them when they get removed
20:47:50 <ais523> elliott_: that BITSET code doesn't look hackish to me; in fact, it looks both sensible and extensible
20:48:04 <elliott_> ais523: it's non-sensible because (a) three of those should be macros, and (b) an array of booleans would be both faster and clearer
20:48:07 <elliott_> erm
20:48:09 <elliott_> *should be functions
20:48:22 <ais523> array of booleans faster? are you sure?
20:48:33 <ais523> it might be in some cases, but not in others, due to how well it fits in the cache
20:48:41 <elliott_> i believe they're usually small
20:48:48 <ais523> worse, it's plausible for an array of booleans to be faster but slow the rest of the code down by more
20:48:54 <elliott_> brb
20:50:30 -!- iconmaster_ has quit (Quit: Pardon me, but I have to die in NetHack again.).
20:54:41 <Gregor> <ais523> hmm, I wonder what projects make a distinction between TODO, FIXME, and XXX? // I do. TODO I use for things I don't intend to do, FIXME I use for things I don't intend to fix, and XXX I use to demarcate porn.
20:55:10 <Vorpal> home
20:55:26 -!- ais523 has quit (Remote host closed the connection).
20:58:06 -!- Ngevd has quit (Read error: Connection reset by peer).
21:02:40 -!- Ngevd has joined.
21:07:27 <DeadlyFugu> Does something which says '99 bottles 98 bottles 97 bottles' count as cheating when trying to make the bottles of beer song-thing? :D
21:07:48 <DeadlyFugu> Because writing out ASCII codes in unary takes a long time >_>
21:08:13 <Slereah_> Totally cheating
21:08:24 <Slereah_> Also cheating : Using the code to grab it from the internet
21:08:49 <DeadlyFugu> Wait, what?
21:08:54 <DeadlyFugu> I can't use an ASCII lookup table?
21:08:57 <DeadlyFugu> D:
21:09:12 <DeadlyFugu> Oh, you mean download an existing file with it?
21:09:39 <DeadlyFugu> It'll be easy to make mine say the whole thing, just very time consuming.
21:18:44 <Slereah_> what language are you using?
21:21:31 <DeadlyFugu> My own (Mineso) :D
21:21:49 -!- Ngevd has quit (Read error: Connection reset by peer).
21:25:09 <Slereah_> Well, it doesn't seem that hard to write stuff in.
21:25:23 <Slereah_> Although you might need a program to write it for you
21:25:55 <Slereah_> Plus if you can convert BF to it, you can just translate 99 bottles
21:26:13 -!- Ngevd has joined.
21:27:14 <Sgeo> "SECURITY UPDATE: Arbitrary code execution via crafted Type 1 font"
21:29:06 -!- nooga has joined.
21:34:39 <kallisti> Ngevd: hi
21:35:44 <Vorpal> Sgeo: in what software?
21:36:03 <Sgeo> Don't remember
21:36:52 -!- Ngevd has quit (Read error: Connection reset by peer).
21:44:03 -!- Ngevd has joined.
21:52:48 -!- Gregor has quit (Read error: Operation timed out).
21:54:00 -!- Vorpal has quit (Ping timeout: 268 seconds).
21:58:43 -!- Gregor has joined.
21:59:19 -!- HackEgo has quit (Ping timeout: 252 seconds).
21:59:20 -!- EgoBot has quit (Ping timeout: 252 seconds).
21:59:51 -!- EgoBot has joined.
22:00:24 -!- HackEgo has joined.
22:00:42 -!- Vorpal has joined.
22:03:01 -!- zzo38 has quit (Remote host closed the connection).
22:15:54 <Ngevd> Ooh, hello!
22:16:19 <elliott_> back
22:19:20 -!- Slereah_ has quit (Ping timeout: 244 seconds).
22:20:22 -!- Slereah_ has joined.
22:23:08 <Vorpal> night
22:25:35 <Sgeo> kallisti, elliott_ update
22:25:45 <Ngevd> Ngevd, update
22:26:25 <Ngevd> @ping
22:26:25 <lambdabot> pong
22:26:37 <Ngevd> I get paranoid about my connection
22:26:56 <fizzie> What new features in the updated elliott?
22:27:11 <Ngevd> Underscores
22:27:17 <fizzie> I see. Quite retro.
22:27:49 <fizzie> I was hoping they would've patched away the "nag about speech recognition" issue.
22:28:20 <Ngevd> Is the entire internet down for anyone else?
22:28:30 <Ngevd> @ping
22:28:31 <lambdabot> pong
22:28:44 <Ngevd> Well, if this message gets through, goodnight
22:28:47 <Sgeo> Hi
22:28:47 <fizzie> Is downforeveryoneorjustme.com down?
22:28:48 <Sgeo> Yes, it did
22:29:05 <Sgeo> Unless you can't see what others say
22:29:14 <Ngevd> I AM ALIVE
22:29:18 <Sgeo> Except Ngevd saw my update, s
22:29:19 <Sgeo> o
22:29:57 <fizzie> It could have just been a coincidentally timed update-to-self notice.
22:30:15 <fizzie> Yay, downforeveryoneorjustme.com special-cases downforeveryoneorjustme.com.
22:31:00 <Sgeo> http://www.isup.me/downforeveryoneorjustme.com
22:31:18 <fizzie> That's either buggy or sneaky.
22:31:39 <fizzie> It works the other way too.
22:31:53 <Sgeo> sneaky?
22:32:08 <fizzie> To say that the competitor is always down.
22:32:10 <Sgeo> I doubt it's deliberate, they are owned by the same entity I think
22:32:25 <fizzie> Aw. I was wondering, they looked so similar.
22:33:18 <elliott_> <fizzie> I was hoping they would've patched away the "nag about speech recognition" issue.
22:33:20 <elliott_> WONTFIX, NOTABUG
22:33:28 <fizzie> WORKSFORME.
22:33:48 <elliott_> That's my line!
22:33:52 <fizzie> UNLIKESPEECHRECOGNITIONHAHA
22:33:57 <Ngevd> I'd like to submit an elliott_ bug report
22:33:58 <Sgeo> Probably a bad idea to link to a competitor as a "short URL"
22:34:08 <Ngevd> Where is the appropriate place to do so?
22:34:13 <elliott_> Ngevd: /dev/null
22:34:38 <Ngevd> elliott_, but I'm using Windows so I can play Terraria!
22:34:50 <elliott_> Interestingly isup.me thinks that dfeojm is down, but dfeojm is up.
22:34:59 -!- monqy has joined.
22:35:07 <Ngevd> We've just been talking about that for the past five minutes
22:35:28 <fizzie> isup.me properly lists doj.me as up, and vice-versa.
22:35:53 -!- Ngevd has quit (Quit: food then sleep).
22:35:59 <elliott_> Doge me.
22:36:02 <elliott_> *Dodge
22:36:22 <fizzie> Department of Justice me. No, wait, that sounds like an euphemism for something dirty.
22:36:48 <elliott_> fizzie: That's what happens when you say "Dodge me" into one of your speech recognition systems, right?
22:36:58 <fizzie> PROBABLY.
22:37:42 <elliott_> fizzie: Dear aunt, let's set so double the killer delete select all OOPS SORRY MY FINNISH SPEECH-RECONGITION SOFTWARE BROKE
22:38:13 <fizzie> When I told my old iBook to "switch to Firefox", it said "opening iPhoto".
22:38:25 <fizzie> Every time.
22:38:40 <elliott_> That's when you decided you had better do something to improve these systems.
22:38:44 <elliott_> That's how everyone gets sucked in.
22:39:28 <Sgeo> elliott_, what do people mean when they say that Android is closed?
22:39:32 <fizzie> The first application of the Baum-Welch algorithm is always free.
22:40:11 <elliott_> Sgeo: A lot of the default Google applications are.
22:40:17 <elliott_> Also the phones generally aren't tweakable-by-default.
22:40:32 <elliott_> fizzie: :D
22:41:05 <fizzie> Then they start to charge you. "Discriminative training? Hope your credit card's not maxed out."
22:41:57 <elliott_> fizzie: Finally ridicule therapy starts getting some concrete results.
22:42:02 <fizzie> "You'd better pay what you owe or we'll normalize your vocal tract length the hard way, if you catch our drift."
22:42:46 <elliott_> Help, fizzie is counter-trolling me.
22:43:04 <fizzie> Don't worry, I think that's about all I had.
22:44:06 * elliott_ checks on Santa.
22:44:10 <elliott_> Slovakia!
22:45:05 <elliott_> "Is Santa Real? Based on historical data and more than 50 years of NORAD tracking information, we believe that Santa Claus is alive and well in the hearts of children throughout the world."
22:45:07 <elliott_> fizzie: Look at that cop-out.
22:45:17 <elliott_> TYPICAL US GOVT.
22:45:22 <fizzie> I'm looking.
22:45:35 <fizzie> Also already in Neuschwanstein.
22:45:57 <elliott_> http://www.noradsanta.org/images/picture/virginia_en.png I expected Virginia to have really good handwriting for some reason.
22:46:09 <elliott_> I think because of the "If you see it in the Sun, it's so." bit.
22:46:15 <elliott_> Er, wait.
22:46:20 <elliott_> It occurs to me that that probably isn't the original letter.
22:46:46 <fizzie> What does that bit even mean?
22:47:02 <elliott_> fizzie: It was sent to The New York Sun.
22:47:07 <fizzie> Ohhhhh!
22:47:29 <fizzie> I was thinking it was some sort of "now she'll stare at the Sun and go blind", but it sounded a bit mean. I mean, it's her father and all.
22:47:51 <elliott_> :D
22:48:02 <elliott_> TELL ME O GREAT SUN GOD, IS SANTA CLAUS REALAAAAAAAARGH
22:49:09 <elliott_> "The story of Virginia's inquiry and the The Sun's response was adapted in 1932 into an NBC produced cantata (the only known editorial set to classical music)"
22:49:36 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /[^\](?:[^\]{2})*$(\w+|{.*?})/;
22:49:39 <EgoBot> Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE ^\](?:[^\]{2})*$(\w+|{.*?})/ at /tmp/input.28573 line 1.
22:49:54 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /[^\\](?:[^\\]{2})*$(\w+|{.*?})/;
22:50:07 <itidus21> good handwriting requires a good pen
22:50:17 <kallisti> itidus21: also a good hand.
22:50:25 <kallisti> and good writing
22:50:29 <kallisti> but yes a good pen is important
22:50:34 <fizzie> And good good.
22:50:43 <kallisti> yes that's always meta-essential
22:50:44 <itidus21> good pen enables those fancy variable width strokes
22:51:27 <kallisti> hmmm I think I need negative lookahead or something
22:51:31 <elliott_> "NORAD tracks Santa, but only Santa knows his route, which means we cannot predict where and when he will arrive at your house. We do, however, know from history that it appears he arrives only when children are asleep! In most countries, it seems Santa arrives between 9:00 p.m. and midnight on December 24th. If children are still awake when Santa arrives, he moves on to other houses. He returns later … but only when the children are asleep."
22:51:41 <elliott_> Thank god NORAD put the minds of insomniac children at ease.
22:51:51 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /(?:[^\\]{2})*$(\w+|{.*?})/;
22:51:53 <elliott_> (You might also call them: teenagers.)
22:51:55 <itidus21> lol
22:51:57 <kallisti> hmmm
22:52:12 <itidus21> the world is good at lying
22:52:15 <elliott_> "Does Santa visit everyone (i.e. Afghanistan, Israel, non-Christian countries)?
22:52:15 <elliott_> Indeed! Santa visits all homes where children who believe in him live."
22:52:20 <elliott_> But not those GODLESS countries.
22:52:39 <elliott_> "the only logical conclusion is that Santa somehow functions within his own time-space continuum." Ah, yes.
22:52:46 <itidus21> i see a problem there
22:52:58 <kallisti> hmmmm
22:53:02 <monqy> hmmmmmmmmmmmmmmmm
22:53:07 <kallisti> this approach isn't going to work
22:53:10 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /(?:[\\]{2})*$(\w+|{.*?})/;
22:53:18 <elliott_> Ooh, they have sleigh technical data.
22:53:23 <itidus21> using santa to goad people into one religion or anoter
22:53:31 <elliott_> "Note: Length, width and height are without reindeer"
22:53:31 <monqy> santaism
22:53:38 <fizzie> elliott_: Climbing speed: One "T" (Twinkle of an eye).
22:53:47 <fizzie> Very scientific.
22:54:03 <kallisti> hmmm python regex needs a \K assertion
22:54:17 <elliott_> fizzie: It's not just science theory, it's science fact.
22:55:13 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /(?:^|[^\\])(?:[\\]{2})*$(\w+|{.*?})/;
22:55:19 <kallisti> WHHYYY
22:55:40 <elliott_> Haha, the NORAD Santa thing started because of a misprinted phone number.
22:55:41 <elliott_> The bestest.
22:56:21 <kallisti> !perl $_='hi \$mr ${fuck face}'; print /(?:^|[^\\])(?:[\\]{2})*\$(\w+|\{.+?\})/;
22:56:21 <EgoBot> ​{fuck face}
22:56:23 <itidus21> so santa becomes a mathematical problem?
22:56:25 <kallisti> {fuck face}
22:56:46 <monqy> suddenly santa becomes every problem
22:56:51 <elliott_> "The program began on December 24, 1955 when a Sears department store placed an advertisement in a Colorado Springs newspaper which told children that they could telephone Santa Claus and included a number for them to call. However, the telephone number printed was incorrect and calls instead came through to Colorado Springs' Continental Air Defense Command (CONAD) Center."
22:56:53 <kallisti> !perl $_='hi $a $b $c ${c d}'; print /(?:^|[^\\])(?:[\\]{2})*\$(\w+|\{.+?\})/;
22:56:53 <EgoBot> a
22:56:59 <kallisti> !perl $_='hi $a $b $c ${c d}'; print /(?:^|[^\\])(?:[\\]{2})*\$(\w+|\{.+?\})/g;
22:57:00 <EgoBot> abc{c d}
22:57:03 <kallisti> yesss
22:57:07 <kallisti> !perl $_='hi \\$a $b $c ${c d}'; print /(?:^|[^\\])(?:[\\]{2})*\$(\w+|\{.+?\})/g;
22:57:07 <EgoBot> bc{c d}
22:57:11 <kallisti> noooo
22:57:17 <itidus21> i have this idea though
22:57:39 <itidus21> a kind of internet santa.. who can deliver things to your computer over the internet
22:57:53 <kallisti> itidus21: you should name it amazon.com
22:58:01 <elliott_> Oh no, Satan is giving presents to Vorpal now.
22:58:07 <itidus21> but it's a free service
22:58:14 <itidus21> well not even a service
22:58:15 <kallisti> no such thing.
22:58:17 <elliott_> fizzie: I'm sure you're next.
22:59:02 <itidus21> basically.. nowadays santa would use the internet combined with a 3d printer
22:59:04 <kallisti> !perl $_='hi \\\\$a $b $c ${c d}'; print /(?:^|[^\\])(?:[\\]{2})*\$(\w+|\{.+?\})/g;
22:59:04 <EgoBot> abc{c d}
22:59:07 <kallisti> hmmm okay
22:59:12 <kallisti> !perl print '//'
22:59:13 <EgoBot> ​//
22:59:13 <itidus21> hehehhe
22:59:15 <kallisti> !perl print '\\'
22:59:15 <EgoBot> ​\
22:59:18 <kallisti> weird
22:59:24 <kallisti> ' is supposed to be all non-escapey.
22:59:29 <fizzie> elliott_: Do the gift-box symbols denote already handled locations?
22:59:31 <itidus21> you hook up your 3d printer under the xmas tree.. keep it connected to the internet all night
22:59:45 <elliott_> fizzie: Oh. Quite possibly.
22:59:47 <itidus21> and santa uploads your presents
23:00:00 <elliott_> fizzie: He's in Svalbard now.
23:00:07 <elliott_> fizzie: Yes, they do seem to indicate that.
23:00:17 <elliott_> fizzie: But Norway is next, so he might return to Finland.
23:00:20 <elliott_> There was only one box there.
23:00:28 <itidus21> svalbard has such a cool name
23:00:31 <elliott_> Wow, he just jumped to Norway.
23:00:35 <elliott_> The fastest.
23:00:47 <elliott_> fizzie: Oh, he's visited "Hell" sinky.
23:00:56 <elliott_> fizzie: What is that building it shows?
23:01:04 * kallisti is master of regex lawl
23:01:39 <fizzie> elliott_: Helsinki Cathedral is I think the official English name.
23:01:44 <kallisti> elliott_: did you see my totally amazingly beautiful cat program? better than your type-level pointer reify thing.
23:01:57 <fizzie> It's a bit of an over-impressive name.
23:02:35 <elliott_> kallisti: Link.
23:02:50 <elliott_> fizzie: It's a bit ugly.
23:02:54 <elliott_> No offens.
23:02:55 <elliott_> e.
23:03:14 <kallisti> elliott: main = getArgs >>= mapM (readFile >=> putStr) >>= (null >>> (`when` (getContents >>= putStr)))
23:03:38 <kallisti> it's not posixy because it doesn't parse options.
23:03:39 <elliott_> kallisti: You realise (>>>) = flip (.)?
23:03:42 <kallisti> yes.
23:03:47 <fizzie> kallisti: "q/STRING/, 'STRING': A single-quoted, literal string. A backslash represents a backslash unless followed by the delimiter or another backslash, in which case the delimiter or backslash is interpolated."
23:03:50 <kallisti> I wrote it that way because monqy likes it.
23:04:01 <elliott_> monqy's bad if he likes it.
23:04:05 <kallisti> fizzie: yes I suppose backslashes are special still.
23:04:16 <kallisti> elliott_: he said he liked the functions to read in one direction.
23:04:22 <elliott_> kallisti: Anyway, you need to support "-".
23:04:24 <fizzie> It doesn't do any other escapes than the delimiter and backslash itself, though.
23:04:27 <monqy> elliott_: i odnt like how >>> looks but i like the direction
23:04:37 <elliott_> monqy: The direction is only good for ugly stuff. :-(
23:04:43 <monqy> :(
23:04:54 * kallisti likes the direction because he can read it left to right without backtracking.
23:05:31 <kallisti> you're just used to suddenly reading backwards on compositiony things. composition mind virus.
23:05:36 <itidus21> "The backslash (\) is a typographical mark (glyph) used mainly in computing. Sometimes called a reverse solidus or a slosh, it is the mirror image of the common slash."
23:05:49 <elliott_> kallisti: I just think compositions shouldn't be so long that it's a big deal.
23:06:04 <elliott_> It's not like mathematicians have problems with composition being "backwards".
23:06:12 <elliott_> It's only backwards if application is: f(g(x)) = (f.g)(x)
23:06:12 <fizzie> The "slosh".
23:06:38 <elliott_> kallisti: Most importantly, calling it "backwards" is misleading, as it suggests a chronological progression that is just not there with lazy evaluation.
23:06:39 <fizzie> "Yeah, slosh-n denotes a newline."
23:06:46 <elliott_> (1:) . tail -- the tail doesn't happen "before" the (1:) here
23:06:53 <itidus21> not very helpful of wiki
23:07:15 <elliott_> You can't in general say the dataflow goes one way or the other; with lazy evaluation, it goes back and forth based on demand.
23:08:22 <Sgeo> Well, when imagining it, it's easier to imagine the dataflow going in a direction, regardless of which way it actually goes
23:08:48 <Sgeo> I mean, does lazy evaluation really need to be kept in mind?
23:08:54 <elliott_> Sgeo: No, it's really not, because you'll make incorrect conclusions.
23:08:56 <elliott_> Yes, it does.
23:09:07 <elliott_> Internalising how Haskell's evaluation works is the only way to write good code, efficient code, code that works.
23:09:13 <elliott_> And it's the only way to read it, too
23:09:38 <Deewiant> The tail does happen "before" the (1:), just not "completely" in some sense. :-P
23:09:40 <elliott_> The "chronological" strict mental model blows up even on very simple pipelines.
23:09:50 <elliott_> Deewiant: ((1:) . tail) undefined
23:09:54 <elliott_> == 1 : _|_
23:09:58 <elliott_> The (1:) happened first.
23:09:59 -!- derdon has joined.
23:10:10 <elliott_> You can frame it the other way and that's kind of my point: "first" has no real meaning.
23:10:18 <Deewiant> Fair enough.
23:10:26 <elliott_> Non-strict evaluation is much much more *timeless* than strict evaluation, which is sort of the whole point I'm trying to make.
23:10:58 <elliott_> (And of course that's great for modularity, reasoning, etc.; it just presents a learning curve to those unfamiliar with it.)
23:11:03 <fizzie> elliott_: Can't be offended because that's so true. It's right next (well, very close) to the maybe-less-ugly-at-least-if-you-like-Russian-style (Orthodox) Uspenski Cathedral, http://www.sacred-destinations.com/finland/images/helsinki/uspenski-orthodox/uspenski-orthodox-cathedral-cc-ja-macd.jpg -- which at least has the golden onions going on.
23:12:09 <elliott_> fizzie: I thought you guys were, like, unrepentantly modern.
23:12:11 <elliott_> Eurotech.
23:12:21 <fizzie> elliott_: On the other hand, Helsinki's possibly most famous chruch looks like this: http://en.wikipedia.org/wiki/File:Temppeliaukio_Church_1.jpg
23:12:28 -!- Sgeo has quit (Read error: Connection reset by peer).
23:12:33 <elliott_> Nice.
23:12:42 -!- Sgeo has joined.
23:12:42 <kallisti> elliott_: there's a chronological progression but it's a sort of dependency tree I think.
23:12:44 <fizzie> http://en.wikipedia.org/wiki/Temppeliaukio_Church <- it looks slightly better on the inside.
23:12:46 <elliott_> http://upload.wikimedia.org/wikipedia/commons/5/59/Temppeliaukio_Church.jpg ;; Oh, this is nice.
23:12:49 <elliott_> kallisti: It's a graph.
23:12:52 <kallisti> elliott_: yes.
23:12:57 <elliott_> kallisti: Which means you can't "order" it.
23:13:21 <fizzie> Also haven't been there ever; the typical "locals don't go to tourist attractions" thing.
23:13:35 <elliott_> Anyway, point is, (>>>) is just as backwards as (.) is, and at least (.) mirrors application, which is important.
23:14:07 <itidus21> "a backslash on the keyboard of the Teletype Wheatstone Perforator, circa 1937-1945"
23:14:09 <monqy> im often frustrated with application's direction too :(
23:14:37 <monqy> also reading isn't as bad as writing
23:14:44 <elliott_> monqy: Well, if you read left-to-right, then (f x) is basically unambiguously the correct choice; f doesn't even necessarily even /look/ at x.
23:14:46 <kallisti> elliott_: you can't order it but if you start at a root vertex you can do a step-by-step transformation that is roughly meaningful as an "evaluation order" it's just difficult to intuitively reason about that.
23:14:57 <elliott_> f gets the first chance to evaluate things; indeed, the only chance, it's just permitted to call on x if it wants.
23:15:05 <Deewiant> elliott_: I still think it's reasonable to think that as soon as some actual data from x (in a chain (f.g. ... h) x) is requested, h is applied on it "before" g etc.
23:15:09 <elliott_> kallisti: Yes, you can do graph reduction by hand if you really want to.
23:15:24 <monqy> elliott_: what's natural for me depends on the context
23:15:28 <elliott_> Deewiant: Sure, as soon as x gets involved... but you can't "see" whether x is getting involved from the outside.
23:15:28 <monqy> elliott_: functions being used etc
23:15:38 <monqy> not how things are evaluated
23:15:42 <elliott_> Deewiant: Like, it's not really "as soon as the argument matters", it's "the other functions come into play as soon as they come into play" :P
23:16:08 <monqy> (f x) is natural often if not most of the time
23:16:12 <elliott_> Deewiant: Now consider x referring back to the appliaction itself
23:16:13 <elliott_> *application
23:16:27 <monqy> but sometimes it feels better with the x coming first
23:16:27 <elliott_> Deewiant: Whoops, turns out when h is consulted, it actually first calls upon past results of f!
23:16:30 <Deewiant> elliott_: But one often tends to think in terms of "okay, if this gets input foo, what happens?", and in that case you think "h happens resulting in bar, and then g happens resulting in baz, and then f happens resulting in zot"
23:16:32 <elliott_> So f actually comes before h again.
23:16:39 <elliott_> Except f already came and now we're on to h.
23:16:44 <elliott_> So it really doesn't make any sense at all.
23:16:56 <Deewiant> Of course the actual call graph can be arbitratrily complicated.
23:16:59 <Deewiant> -t
23:17:01 <elliott_> Yes, that's my point :P
23:17:10 <elliott_> With strict evaluation, it can't be.
23:17:22 <elliott_> x goes through h, h is completely done with, then through g, then through f.
23:17:29 <elliott_> The flow is linear, causal, blah blah blah.
23:17:40 <elliott_> Sure, it makes sense to reason about data flow with non-strict evaluation.
23:17:55 <elliott_> But it's really not as simple as (.) being backwards.
23:17:56 <kallisti> elliott_: I find it difficult to reason about efficiency. Sometimes I'll rewrite a function that uses high-level combinators to a more direct pattern matching / recursive style with the hope that it will be more efficient.
23:18:05 <kallisti> elliott_: but I don't really know if that's true in most cases.
23:18:08 <elliott_> kallisti: That's counterproductive.
23:18:09 <kallisti> due to inlining
23:18:18 <elliott_> Not only are you not as smart as the people who wrote the Prelude, you're making sure rewrite rules don't take effect.
23:18:22 <monqy> sometimes (.) is natural to read
23:18:23 <kallisti> elliott_: it's only for "important" functions
23:18:26 <elliott_> Also, it makes your program harder to read.
23:18:26 <monqy> but other times (>>>) is more natural
23:18:33 <elliott_> So you're slowing things down and making your program worse.
23:18:59 <elliott_> Anyway, that just means you aren't fully comfortable with Haskell yet. Many people aren't.
23:19:04 <elliott_> I'm not /fully/ yet.
23:19:08 <kallisti> elliott_: hmmm perhaps I'll show you an example.
23:19:15 <elliott_> (Although moreso than I am with any other language, probably.)
23:19:16 <Deewiant> monqy: But (>>>) is so ugly that one often ends up choosing (.) anyway. :-P (At least I do that.)
23:19:24 <elliott_> Deewiant: Also that :P
23:19:27 <monqy> Deewiant: yes
23:19:35 <elliott_> Write it with arrow notation instead.
23:19:37 <elliott_> That'll be the bestest.
23:19:47 <monqy> I still haven't bothered learning that
23:19:54 <elliott_> It's actually really trivial.
23:19:56 <Madoka-Kaname> elliott_, is Prelude written for efficiency or for directness/elegance?
23:20:04 <elliott_> You just have (pattern <- arrow -< input).
23:20:08 <elliott_> Where pattern defaults to _
23:20:21 <elliott_> And arrow can't refer to variables bound by patterns (because the "call graph" is static).
23:20:29 <elliott_> Ofc it gets more complicated for the more complicated stuff :P
23:20:30 <elliott_> *ofc
23:20:51 <elliott_> Madoka-Kaname: The Prelude in the report is written as a specification with little regard to efficiency (beyond complexity bounds, sometimes)
23:20:59 <elliott_> Madoka-Kaname: The Prelude in base is both readable and efficient.
23:21:08 <elliott_> (Well, mostly readable.)
23:21:15 <Madoka-Kaname> I see
23:21:32 <elliott_> But it's about being smart enough to pick the /right/ readable implementation that's efficient :P
23:21:37 <elliott_> kallisti: Go on.
23:21:49 <kallisti> elliott_: bfStrings in http://hpaste.org/52125 vs. http://pastebin.com/aMBHAGdH (excuse my gross nested where)
23:22:21 <elliott_> Do I have to click a pastebin link?
23:22:37 <fizzie> You *can* just type it in.
23:22:39 <kallisti> elliott_: I believe the second one will exit early and always loop once through the list. I can't say the same for the first one because I don't know what inlining is going to happen.
23:22:46 <kallisti> they're long programs.
23:22:51 <kallisti> er
23:22:53 <kallisti> long for IRC
23:22:56 <Sgeo> What's wrong with pastebin.com ?
23:22:56 <kallisti> multi-line, etc
23:23:09 <elliott_> kallisti: I meant as opposed to hpaste.
23:23:18 <kallisti> elliott_: hpaste was giving me an error
23:23:22 <elliott_> kallisti: I know for a fact balancedBrackets fully evaluates ls and rs, because you have ((==) `on` length).
23:23:24 <kallisti> when I tried to submit the second one.
23:23:28 <elliott_> GHC is not allowed to make length non-strict.
23:23:31 <elliott_> That would change semantics.
23:23:32 <kallisti> right.
23:23:47 <Sgeo> How could length be made non-strict?
23:24:04 <elliott_> Sgeo: length xs > 4
23:24:26 <kallisti> elliott_: so I certainly don't do this all the time but for a criticial section of code I think it's worthwhile to rewrite important loops like this, using accumulating parameters and tail calls.
23:24:26 <Sgeo> Would be awesome if that sort of thing worked
23:24:50 <elliott_> kallisti: Beeeep!
23:24:57 <elliott_> You don't understand Haskell's evaluation model.
23:25:04 <elliott_> kallisti: "Tail calls".
23:25:09 <kallisti> yes?
23:25:10 <elliott_> Tail calls are irrelevant.
23:25:14 <kallisti> Haskell doesn't optimize those?
23:25:17 <elliott_> A "tail-recursive" Haskell program can blow the stack.
23:25:23 <elliott_> A non-tail-recursive Haskell program can run in constant space.
23:25:45 <elliott_> If you think "tail recursion" is a meaningful concept in Haskell's evaluation model, you are *really* misguided.
23:25:49 <kallisti> um, okay.
23:26:39 <kallisti> but accumulating parameters tend to be faster, no?
23:26:57 <kallisti> I guess it's possible Haskell wiki lied to me.
23:27:19 * elliott_ really doesn't think trying to help you patch up your mental model by dropping little nibbles of derivable information will help you, but considers the question too vague to have a definite answer anyway.
23:28:17 <kallisti> yes, surely saying nothing is the best form of help.
23:28:47 <elliott_> kallisti: main = print $ foldr (:) [] [1..] -- note that this program runs in constant space despite having *infinitely-nested* *non-"tail call"* recursion
23:28:52 <elliott_> in the definition of foldr
23:29:15 <kallisti> elliott_: yes, lazy data structures are neat, huh?
23:29:18 <Madoka-Kaname> tail recursion is a meaningful concept in the sense that you can have tail recursive functions =p
23:29:44 <elliott_> kallisti: Surely being sarcastic to someone trying to help you learn will cause them to keep trying to help you.
23:29:56 * elliott_ lets you figure it out yourself.
23:30:16 <kallisti> elliott_: I'm just not sure what you're getting at. What does this have to do with tail calls being meaningless always.
23:31:54 <kallisti> my main concern wasn't space use: I was concerned that I was looping through the list multiple times when I could just be looping once, and also exiting early on certain unbalanced cases.
23:32:58 <kallisti> I'm aware of term rewriting / fusion etc but not how effective it is in all cases.
23:42:21 <kallisti> VARIABLE INTERPOLATION SUCCESS
23:42:30 <kallisti> one step closer to perl.
23:43:25 -!- pikhq_ has quit (Ping timeout: 252 seconds).
23:43:26 -!- pikhq has joined.
23:44:13 <itidus21> xmas tension building in the house here
23:44:24 <kallisti> elliott_: my conclusion: while a poor example of "mission criticial" code, my second function is faster than the first.
23:44:41 <kallisti> unrelated to tail optimization, that was a bad example.
23:44:55 -!- Slereah_ has quit (Ping timeout: 240 seconds).
23:45:16 -!- Slereah_ has joined.
23:49:25 <Gregor> I'd like to see a game with a time-travel mechanism that allows for arbitrary or near-arbitrary selection of dates.
23:49:52 <kallisti> Gregor: make it a Back to the Future game.
23:50:11 <itidus21> i was just about to use the idiom "back to the future" in a comment also
23:50:17 <Gregor> I'd like to see it not be a Back to the Future game ...
23:50:41 <itidus21> the angry video game nerd has done a review of existant back to the future games
23:50:57 <Gregor> Yes. They suck.
23:51:18 <Gregor> Else he wouldn't have reviewed them 8-D
23:51:28 <kallisti> shocking.
23:51:37 <kallisti> all movies make excellent video games.
23:51:42 -!- MDude has quit (Read error: Connection reset by peer).
23:52:50 <fizzie> ^style ct
23:52:50 <fungot> Selected style: ct (Chrono Trigger game script)
23:52:57 <fizzie> fungot: What do you think about time travel in games?
23:52:57 <fungot> fizzie: but cyrus! are you leaving! fight! fun!!
23:53:17 <itidus21> none of them have even a pretension of time travel
23:53:32 <kallisti> @src foldr
23:53:32 <lambdabot> foldr f z [] = z
23:53:32 <itidus21> took me a long time to find the word pretense
23:53:32 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
23:54:06 <itidus21> i played the start of chronotrigger on an emulator
23:54:13 <itidus21> i recall a race around a town
23:54:28 <fizzie> A set of {65 million BC, 12000 BC, 600 AD, 1000 AD, 1999 AD, 2300 AD} is "near-arbitrary" enough, eh?
23:54:45 <fizzie> Also the race is around some tents in the circus area and completely pointless.
23:54:47 <Gregor> fizzie: Not even close!
23:54:49 <fizzie> Though you can bet on it.
23:55:32 <Gregor> I want you to be able to steal a kid's lollipop, then go to his adulthood and see how he's now a jerk, then go back and give him back his lollipop, and go back to the future and now he's a nice guy.
23:55:51 <fizzie> You can almost do that in Chrono Trigger. :p
23:56:25 <Gregor> There are no 400-year-olds in CT! (Note: yes there are)
23:56:30 <kallisti> elliott_: also, foldr performs tail call elimination.
23:56:30 <fizzie> In one of the sidequests you donate Beef Jerky (or whatever) to a family in 600 AD, so that in 1000 AD their descendants are nice folks and let you get the charged Sun Stone back for free. Or something like that anyway.
23:56:56 <itidus21> rpg quests :-s
23:57:05 <Gregor> fizzie: It's still the moon stone then, but yeah.
23:57:17 <fizzie> Oh, right. Well, almost-a-Sun Stone.
23:57:42 <Gregor> fizzie: Also although the moon stone has been getting light for over 65 million years, it needs another thousand or so to be the sun stone again. Some of which will be post-apocalypse. Logic.
23:57:58 <fizzie> 1300 years left, 65001000 done.
23:58:08 <fizzie> It's thresholded, apparently.
23:58:16 <fizzie> Won't do a thing until it's good and fully charged.
23:59:22 <fizzie> Also: Son of Sun and Red {Vest,Mail}.
23:59:53 <kallisti> > foldr (:) [] [1..]
23:59:54 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
23:59:55 <fizzie> Anyway, it's sorta-sparkling also in 1000AD, isn't it.
2011-12-25
00:01:20 -!- MDude has joined.
00:02:10 <elliott_> <kallisti> elliott_: also, foldr performs tail call elimination.
00:02:14 <elliott_> kallisti: You're an idiot.
00:02:23 <elliott_> NEXT PLEASE.
00:02:43 <kallisti> elliott_: it does. that's precisely why it's constant space. no stack frames are allocated.
00:02:50 <kallisti> aside from the first one
00:03:19 <Gregor> ... oy.
00:03:20 <fizzie> fungot: So tell me about recharging Moon Stones? Is it true that it takes aeons? Will we see that gorgeous glow again?
00:03:20 <fungot> fizzie: to the northwest of this cape. he took back the medal from the frog king. and i'd like to see that mystical sword for myself! geez!
00:03:36 <Gregor> foldr does not /perform/ tail call elimination, foldr /benefits/ from tail call elimination.
00:03:39 -!- itidus21 has quit (Ping timeout: 244 seconds).
00:03:51 <kallisti> Gregor: sooooo pedantic. for fucks sake.
00:03:52 <elliott_> Gregor: It doesn't do that, either.
00:04:00 <elliott_> kallisti has no idea how the call stack works in Haskell.
00:04:09 <elliott_> And I for one am not going to be the one to teach him how it does.
00:04:22 <Gregor> Ohwait, foldl would actually benefit, wouldn't it, not foldr ...
00:04:25 <elliott_> Gregor: I mean, yes, it's guarded recursion, i.e. the recursion is a non-strict field of a constructor in WHNF.
00:04:28 <elliott_> But that's not tail recursion.
00:04:39 <elliott_> Tail recursion is a purely syntactic property that is roughly 100% irrelevant in Haskell.
00:05:17 <kallisti> elliott_: but it's the same optimization as tail call elimination. if it weren't, the stack would overflow as the list is traversed.
00:05:53 <elliott_> kallisti: Have I mentioned you're an idiot?
00:06:03 <kallisti> no.
00:07:20 <elliott_> See, usually when I call people idiots, I make some attempt to explain to them why they're wrong. Also fun fact: This offer is voided when said person has a history of being adamant and sarcastic in asserting 1they're correct in the face of someonew ho knows more about them about a topic!
00:07:28 <elliott_> "The fundamental cause of the trouble is that in the modern world the stupid are cocksure while the intelligent are full of doubt." --Jesus
00:07:53 <kallisti> elliott_: perhaps you think I'm talking about tail recursion in a strict language.
00:07:58 <kallisti> that would be silly, since I'm talking about Haskell.
00:08:42 <elliott_> Perhaps I'm not making any unwarranted or unreasonable assumptions, know exactly what you're trying to say, and you're just wrong.
00:08:48 <elliott_> fizzie: Thx for -c btw, it's best.
00:15:10 <kallisti> elliott_: ...I
00:15:15 <kallisti> okay, you're not going to give me a chance.
00:15:21 <kallisti> waste of time.
00:16:04 <elliott_> kallisti: I've given you about a hundred chances, it's called every single time you've done this.
00:16:28 <elliott_> I'm just stupid enough to keep biting the bait.
00:16:55 <kallisti> elliott_: first of all, I know how Haskell's "call stack" works.
00:18:09 <elliott_> That's what you say literally every time.
00:18:22 <kallisti> I've made multiple claims to knowing about Haskell's call stack?
00:18:38 <elliott_> You understand everything perfectly, you're just having a perfectly reasonable and valid disagreement among peers, until a few days later someone manages to bang into your head why you've made a fundamental misunderstanding, which you then claim was minor.
00:18:43 <elliott_> Seriously, I'm not interested.
00:19:08 <elliott_> It's even more a waste of time than the rest of this channel's topics but at least those are entertaining.
00:19:42 <kallisti> elliott "too good for #esoteric" hird
00:20:46 <elliott_> Yes, that's absolutely what I said.
00:21:32 <Gregor> Y'know, I'll bet if you /generated/ timelines instead of having presets (or as well as having presets), you could actually do an arbitrary-date time travel game reasonably ...
00:23:01 <Gregor> Feh, generating arbitrary timelines would be tough though X-D
00:23:15 <Gregor> Probably not impossible >_>
00:23:45 <Gregor> You'd have to find a way to do it on a massive scale and then sub-divide for individuals without making the whole no longer equal the sum of the parts.
00:23:58 <Gregor> Plus of course certain people are more important to history than others ...
00:25:27 <elliott_> Gregor: Remember when you had that awesome time raytracing thing and it turned out to be boring? :(
00:25:42 * elliott_ still bitter
00:25:57 <kallisti> elliott_: in fact I'm also aware that writing a function with "tail calls" and an accumulating list can be slower than an equivalent function that simply constructs the list directly.
00:25:59 -!- DeadlyFugu has quit (Read error: Connection reset by peer).
00:26:24 <kallisti> elliott_: because I've written both of them and observed that constructing the list directly is faster.
00:26:32 -!- DeadlyFugu has joined.
00:27:24 <kallisti> elliott_: I'm not talking about a syntactic tail call.
00:27:48 <elliott_> Tail calls are about complexity, not speed. And the definition of "tail call" is syntactic (consult e.g. the Scheme specification if you disagree). And I'm not arguing this so why am I even typing this.
00:27:51 <elliott_> Please stop.
00:32:19 <kallisti> elliott_: I really don't think there's anything to argue about.
00:32:44 <kallisti> another thing I "always" do, therefore: the result must always be the same because lol
00:43:57 <elliott_> I think I will go to bed.
00:49:48 <kallisti> hmm interesting.
00:50:02 <kallisti> so if I use Word -> [Word] for my factoring function, it runs extremely fast.
00:50:09 <kallisti> ah wait nevermind
00:50:44 <kallisti> okay. sanity restored
00:51:42 -!- elliott_ has quit (Ping timeout: 244 seconds).
00:59:53 <kallisti> @tell oerjan do you think there could be a faster way to write integer squareroot than floor . sqrt . fromIntegral
00:59:53 <lambdabot> Consider it noted.
01:02:44 <Sgeo> What's wrong with that?
01:03:08 <kallisti> NOT FAST ENOUGH
01:03:14 <kallisti> I think I've found a faster intsqrt
01:03:30 <kallisti> in Math.NumberTheory.Powers.Squares
01:05:15 <kallisti> Sgeo: nothing is wrong with it.
01:05:55 <kallisti> in fact since I only do one sqrt this is entirely a waste of time.
01:06:39 <Sgeo> Clearly, you should use the magic number thingy
01:07:04 <Sgeo> Oh, that's the reciprocal of the square root
01:07:38 <Sgeo> Also, not integer I guess
01:10:09 <kallisti> wow amazing
01:10:17 <kallisti> no significant improvement in speed
01:10:28 <kallisti> from optimizing one square root operation.
01:10:51 <kallisti> ~.53 to ~.52
01:14:03 <kallisti> (seconds)
01:14:12 <Deewiant> (Use ministat (from e.g. FreeBSD) or something equivalent for your benchmarking before calling something significant)
01:14:36 <kallisti> Deewiant: what? I can't just spam time over and over and guesstimate?
01:14:53 <kallisti> anyway I don't think this is measurably significant.
01:14:56 <Sgeo> http://www.independent.co.uk/travel/news-and-advice/airlines-cleared-to-use-santas-shortcut-6281263.html What will this do to the Flat Earth society?
01:14:57 <Deewiant> Generally speaking no
01:15:17 <kallisti> http://sprunge.us/LBOd any suggestions?
01:16:30 <Deewiant> EQ | m == 0 -> [i]; _ -> []
01:16:36 <Deewiant> Not that it should matter
01:17:18 <kallisti> ...why would I do that?
01:18:27 <kallisti> looks to be about the same.
01:18:33 <Sgeo> Wait, they consider the edge to be in the Antarctic, right?
01:19:08 <kallisti> I think to make this any significantly faster I'd need to change the algorithm.
01:19:19 <kallisti> I've pretty much optimized this one as much as possible.
01:19:30 <Deewiant> Branch prediction should handle most of this kind of thing anyway
01:20:18 <Deewiant> You can try using 'if m == 0' as a higher-level check if you want, though
01:21:16 <kallisti> I don't think that will do anything, and will make the code uglier probably.
01:22:11 <Sgeo> if' t f True = t
01:22:17 <Sgeo> if' t f False = f
01:22:33 <Sgeo> Hmm, wait
01:22:57 <Sgeo> That makes it hard to do an if based on (==0)\
01:22:59 <Sgeo> I think
01:23:12 <kallisti> ...what.
01:23:38 <kallisti> heh, I could make the code really ugly and unroll the loop a little. :P
01:24:20 <kallisti> for probably absolutely no gain.
01:27:55 -!- MDude has quit (Ping timeout: 240 seconds).
01:36:36 -!- zzo38 has joined.
01:41:51 <kallisti> zzo38: how do you print a Word#?
01:43:32 <zzo38> kallisti: Maybe you use a constructor, is it called W# or something like that
01:43:59 <kallisti> hm
01:43:59 <kallisti> ?
01:44:11 <kallisti> @hoogle W#
01:44:12 <lambdabot> GHC.Exts W# :: Word# -> Word
01:44:19 <kallisti> oh, I have to do that.
01:44:19 <kallisti> okay.
01:47:33 <kallisti> @hoogle Word# -> Ordering
01:47:33 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
01:47:33 <lambdabot> Data.Ord comparing :: Ord a => (b -> a) -> b -> b -> Ordering
01:47:33 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
01:47:36 <kallisti> hm
01:48:10 <kallisti> hmmm no wordCompare#
01:56:35 <kallisti> going from about 5 seconds to .5 is a pretty big improvement.
01:56:44 <kallisti> I'm too lazy to try unboxing though
02:02:04 -!- nooga has quit (Ping timeout: 252 seconds).
02:02:44 <kallisti> @hoogle Word# -> Float#
02:02:44 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
02:02:44 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
02:02:44 <lambdabot> Data.Function ($) :: (a -> b) -> a -> b
02:02:47 <kallisti> hm
02:03:40 <kallisti> @hoogle Word -> Word#
02:03:40 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
02:03:41 <lambdabot> Control.OldException throwDyn :: Typeable exception => exception -> b
02:03:41 <lambdabot> Control.DeepSeq ($!!) :: NFData a => (a -> b) -> a -> b
02:04:22 -!- derdon has quit (Remote host closed the connection).
02:13:40 <kallisti> :t 2##
02:13:41 <lambdabot> GHC.Prim.Word#
02:13:45 <kallisti> excellent
02:17:17 <kallisti> > float2Int# 3.2#
02:17:17 <lambdabot> Not in scope: `float2Int#'
03:03:40 -!- Klisz has joined.
03:06:16 <Sgeo> telnet miku.acm.uiuc.edu
03:11:49 <monqy> :(
03:13:24 <kallisti> turns out using explicit unboxing is slower because I have to reconstruct the boxed types in order to print them.
03:19:40 <kallisti> oh, hmmm, wait.
03:19:52 <kallisti> maybe since IO is strict I should use an accumulating parameter.
03:21:57 -!- incomprehensibly has quit (Ping timeout: 255 seconds).
03:28:50 -!- incomprehensibly has joined.
03:30:31 -!- incomprehensibly has quit (Client Quit).
03:43:39 -!- DCliche has joined.
03:47:24 -!- Klisz has quit (Ping timeout: 276 seconds).
04:03:21 -!- azaq23 has quit (Quit: Leaving.).
04:16:58 -!- Gregor has quit (Ping timeout: 252 seconds).
04:20:43 -!- Gregor has joined.
04:24:50 <Sgeo> What's a 10th doctor episode I should watch? (Not Blink)
04:24:59 <Sgeo> And not SitL/FotD
04:25:38 <Gregor> Why don't you just watch them in order ...
04:25:52 <Sgeo> I've heard that they're mostly bad
04:26:09 <Gregor> So?
04:26:12 <Gregor> Suck it up.
04:28:28 <kallisti> yes being entertained should feel like running cross country.
04:28:38 <kallisti> you must endure it.
04:29:28 * Sgeo has yet to watch the rest of DS9
04:29:48 <kallisti> you know what I find really bizzare about American television? aside from the material itself...
04:29:51 <kallisti> canned laughter.
04:30:35 <Gregor> Yeah, laugh tracks are stupid.
04:30:58 <Gregor> But there is a lot of honest-to-goodness recorded-audience too, and laugh tracks are getting much less common.
04:32:53 <kallisti> I would like a window mode that's "always on top of maximized windows"
04:33:43 <kallisti> or "always on top of larger windows"
04:34:00 <Gregor> Hmm, I'm trying to think of what sit-coms I like that actually /use/ a laugh track ... almost none ...
04:34:09 <augur> Sgeo: bli-- oh
04:34:14 <augur> uh how about silence in th--- oh
04:34:22 <augur> uh
04:35:00 <augur> how about the season 4 finale.
04:35:10 <Gregor> Oh wait, duh, Seinfeld.
04:35:46 <augur> man whats the deal with seinfeld
04:36:00 <Gregor> It's the greatest sit-com ever made?
04:36:15 <augur> -_-
04:36:32 <Gregor> All those who don't like Seinfeld are bad people.
04:36:41 <augur> apparently subtle seinfeld references made to seinfeld snobs go unnoticed
04:36:42 * Sgeo is not a bad person.
04:37:14 <augur> Gregor: if i could ban you from life i wold
04:37:42 <Gregor> augur: That reference, it was way too subtle, I didn't get it X-D
04:38:10 <kallisti> Gregor: Seinfeld is good
04:38:12 <Gregor> Since it's, y'know, a thing people say.
04:38:30 <kallisti> I also enjoy How I Met Your Mother but I don't remember if it has a lauhg trakc or ont I am dontr emeber
04:38:38 <Gregor> kallisti: It definitely does.
04:38:55 <kallisti> I've basically removed all television from my daily mind diet.
04:39:05 <kallisti> for... like 3 years now.
04:40:13 <Gregor> I like some classique sitcoms too, I wonder if I Dream of Jeannie has a laugh track ... probably, but it may have been live.
04:40:29 <kallisti> I don't think that one was.
04:40:34 <kallisti> I like All in the Family, which is live.
04:41:29 <Gregor> Oh well. Silly laugh tracks.
04:44:27 -!- Darth_Cliche has joined.
04:46:04 <Gregor> I should make a laugh track bot.
04:46:20 <Gregor> And use some terrible heuristics to decide when it should laugh.
04:46:51 -!- I0ther has joined.
04:47:11 <Gregor> `welcome I0ther
04:47:22 <HackEgo> I0ther: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
04:47:31 <I0ther> Hi Gregor
04:47:38 <I0ther> Thanks HackEgo
04:47:45 -!- DCliche has quit (Ping timeout: 252 seconds).
04:48:14 <Sgeo> Meet the bots!
04:48:24 <Sgeo> Erm, so many bots I'm not quite sure which do what, tbh
04:48:34 <kallisti> Gregor: use a weighting factor that looks at different patterns and totals a weight, which has to pash a threshhold.
04:48:36 <Sgeo> > text "Hello, I'm lambdabot. I do Haskell stuff."
04:48:37 <lambdabot> Hello, I'm lambdabot. I do Haskell stuff.
04:48:42 <kallisti> Gregor: :P would be such a pattern.
04:49:16 <Sgeo> `echo Hello. I'm .. some bot. I do Linuxy stuff. Shell commands can be run on me.
04:49:19 <HackEgo> Hello. I'm .. some bot. I do Linuxy stuff. Shell commands can be run on me.
04:49:25 -!- I0ther has left.
04:49:27 <Sgeo> ...
04:49:28 <Gregor> kallisti: I was thinking I'd make a decision tree and train it off of the channel logs, with lines followed by "lol" or "rofl" etc having high value.
04:49:40 <kallisti> fungot: introduce yourself
04:49:41 <fungot> kallisti: time to shove off! the name's bandeau. here to build the ocean palace? when do i work! the ultimate in defense for my, daughter! just like crono!
04:49:45 <Gregor> Sgeo: Nobody ever thought he was going to stay.
04:49:58 <Sgeo> I didn't mean to scare him off
04:49:59 <kallisti> Gregor: ah that's a good idea. You could also use "heh" or "(ha)+"
04:50:07 <Gregor> Indeed
04:52:23 <kallisti> (b|mw|mua)?a*(h+a+)+
04:52:37 <Gregor> Nah, people don't muahahaha when something is funny.
04:52:56 <Gregor> They muahahaha right after taking a bite out of a baby's skull while The Good Guy watches helplessly.
04:52:57 <kallisti> sure they do.
04:52:58 <kallisti> muahahahahahahaha
04:55:57 <Sgeo> baa
04:56:10 <Sgeo> Oh, that doesn't fit
04:56:22 <Sgeo> mwha
04:56:57 <Gregor> Actually baa does fit.
04:57:00 <Gregor> As does baaaaaaaaaaaaaaaaaaaaa
04:57:06 <Gregor> also, a
04:57:12 <Gregor> Err, aa
04:57:17 <Sgeo> But the h is unavoidable, isn't it?
04:57:21 <Sgeo> + is one or more?
04:57:23 <Gregor> Nowait, yeah, need an h.
04:57:25 <Gregor> I missed that.
04:57:29 <Gregor> Thought it was * for some reason.
04:57:49 <Gregor> That's actually a pretty good RE :(
04:58:16 * kallisti is master of regex.
04:58:25 * kallisti master
05:01:20 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
05:11:04 -!- copumpkin has quit (Ping timeout: 240 seconds).
05:18:09 -!- copumpkin has joined.
05:26:15 <pikhq> http://0taku.livedoor.biz/archives/4055139.html On the WTF scale of 1 to 10, this somehow overflows int.
05:26:37 <pikhq> (Japanese language, understanding not necessary)
05:27:42 <pikhq> (Context: They are celebrating Christmas. ... With characters from animation and animated porn.)
05:28:21 <monqy> sounds like good fun
05:28:32 <Madoka-Kaname> I think in Japanese it's something like 「なんでやねん!?」
05:29:35 <pikhq> Yeah, that would be a translation for WTF.
05:33:39 <Sgeo> I may have inadvertantly lead Haskellers here, just a headsup
05:34:41 <zzo38> Does this mean anything meaningful to you? newtype T v f x = T (T x f v -> f x);
05:35:27 <pikhq> Sgeo: Meh, no worries.
05:38:21 <Madoka-Kaname> zzo38, what
05:38:52 <zzo38> Madoka-Kaname: I don't really know what, it is why I asked
05:43:40 <Sgeo> There exists a paper about PerlNomic
05:44:26 <kallisti> perlnomic?
05:44:41 <Sgeo> ...you've never heard of perlnomic.
05:44:44 <kallisti> nope
05:44:47 <kallisti> is it context based?
05:44:54 <Sgeo> Huh?
05:44:55 <kallisti> do you evaluate laws in list and scalar context?
05:45:03 <Sgeo> The code is the law
05:45:11 <kallisti> ah, so yes.
05:49:36 -!- PiRSquared17 has joined.
05:50:25 <zzo38> I wonder whether the type I specified is a functor or monad or category (with type arguments swapped) or anything else at all
05:52:17 <Madoka-Kaname> Sgeo, let's play Python nomic
05:52:40 <Sgeo> elliott apparently thought about HaskellNomic back in 2008
06:01:24 <Madoka-Kaname> I propose the following be made law:
06:01:25 <Madoka-Kaname> import zlib;exec reduce(lambda x,y:x.decode("hex"),[zlib.decompress("eJxtUsuOwjAMvPtrYLsc94AEhx6SqlJ74MwBKXwANF+/sROPnYIq5VHb45lxQg45pvAT8lxOvJdv4fXOp5fcE6+PFr9l+Vf3d3D1BICEhENLKOuV75vEL2jwW8G4TuID36YSL2AjFx4FYEHnI+/xa4OnKchoIHH6DuAaJJTtJbp4ZUgmcTQJxsBJFICTAdw+LKAe4IrOURJmz1CZyR6XniHXF7AzPNAElRbhi4+PmHJpWP6vaEBKufdobRLUo7Ux64Yk98kIHMgYnE1CwpQ2i8+7IVkDfYcEEw3ASXziHdVvzH2+Dql6SErx0+TQhnD3z0Dfl/PQCFBIMHHYjf29Axj8kNDAhrSJZ9MFEk5Owh/9AyvTW+4=".de
06:01:25 <Madoka-Kaname> code("base64")).decode("base64")]*4)
06:02:35 <PiRSquared17> o.O
06:03:02 <Madoka-Kaname> (This is the code version of legalese, right?)
06:07:24 <Madoka-Kaname> Or, if you want a slightly less line-overflowing version:
06:07:25 <Madoka-Kaname> import zlib;exec reduce(lambda x,y:x.decode("hex"),[zlib.decompress("eJxVkT2uwkAMhPs9TX4eB0CCIsUYPSkptk6BtBwAmNPjsZMIimi1a3u+GQesg10wgFca8QQn3vxuDfTvhaM+6d75nZjxBs/q/wO9NmME7yxotQcXDffW6jFwmyUADXTf9ez3kwew3wBjERFNhGkTeKghnOCSRIRDyGFnbfF6HcJx9C+qPyVY9BAEsfzBIkIAdMpdOp5DIIDW/reVVM2OsQJPUH4jpENEQwBO4CrMDjgJYLtgOqRFgsWdSSQdhUDuZN2iXpn1lXukTBA/6a2VCFA+a7ib1g==".decode("base64")).decode("base64")]*3)
06:09:09 <PiRSquared17> I don't trust that
06:10:56 <Madoka-Kaname> Sgeo, has anybody done something like that in Perl Nomic?
06:11:25 <Sgeo> Get rid of the exec and it should be .. n/m
06:22:48 <Madoka-Kaname> http://paste.strictfp.com/23213?key=1acffb6a1f52d873c798284b55fc730e
06:22:53 <Madoka-Kaname> Sgeo, this is the final version of the "law"
06:23:17 <Sgeo> Madoka-Kaname, "helpful"
06:23:55 <PiRSquared17> What does that decode to
06:24:03 <PiRSquared17> (to scared to try)
06:24:04 <PiRSquared17> ?
06:24:07 <PiRSquared17> *too
06:25:52 <Madoka-Kaname> PiRSquared17, replace the "exec" with a "print"
06:25:52 <Madoka-Kaname> =p
06:26:37 <PiRSquared17> http://codepad.org/X4JZieG4
06:28:55 <Madoka-Kaname> The trick here is this:
06:28:55 <Madoka-Kaname> __builtins__.__dict__["X19pbXBvcnRfXw==".decode("base64")]("X19idWlsdGluX18=".decode("base64")).__dict__["6576616c".decode("hex")]
06:29:00 <Madoka-Kaname> This is the actual exec call
06:29:03 <Madoka-Kaname> The first one is a decoy
06:45:53 -!- DeadlyFugu has quit (Ping timeout: 252 seconds).
06:47:30 <zzo38> Make a computer game based on the story of Dungeons&Dragons game I have been playing in (you can read it in order to do so, because I recorded everything in this story so far)
07:09:41 -!- PiRSquared17 has changed nick to PiRSquaredAway.
07:34:03 <zzo38> The type I specified above, it seem to me, x is always going to be covariant and v always contravariant, if f is functor. But I don't know how well they will work
07:37:46 <Sgeo> zzo38, what's the difference between the barrier monad and http://hackage.haskell.org/package/monad-coroutine ?
07:40:06 <zzo38> Sgeo: Barrier monad is really a somewhat more specific version of that. I did not see that until afterward, though, and barrier monad library also has some of its addition functions
08:05:12 <kallisti> -e expr Evaluate expr; see for details.
08:05:15 <kallisti> thanks ghc!
08:11:41 <pikhq> Hmm. I wonder. What is the monetary value of Vatican City?
08:11:55 <pikhq> Thus far, estimates I've found have stated NAN.
08:12:33 * Sgeo wonders how to coerce quickcheck into doing what he wants
08:12:49 <Sgeo> This primarily involves learning to get to grips with quickcheck
08:12:59 <Sgeo> At least, the quickcheck on lambdabot
08:25:01 -!- oerjan has joined.
08:31:35 -!- Patashu has joined.
08:33:16 <zzo38> What might the type I specified to make? newtype T v f x = T (T x f v -> f x); Do you have any idea about this?
08:33:50 <zzo38> Is it any kind of data structure or control structure?
08:35:29 <oerjan> i don't know but it reminds me of the "haskelljoust" game elliott and i discussed, and the type i made for it which he seemed not to like: newtype HJ = HJ (HJ -> Bool)
08:35:30 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
08:37:30 <zzo38> Is it any kind of... Functor? Category? Monad? Applicative? Transformer? (Of course to be a category you would need to flip the type arguments, if it can make any category at all!)
08:37:53 <zzo38> oerjan: O, what were you going to use that HJ type for exactly?
08:38:08 <zzo38> I don't know what a "haskelljoust" game is
08:39:29 <zzo38> But, yes I can see what kind of similarity there is
08:42:50 <oerjan> well i mean that as an analogy to bfjoust: each player makes a "warrior", a haskell expression of type HJ -> Bool. they are then tested by calculating w1 (HJ w1), w1 (HJ w2), w2 (HJ w1) and w2 (HJ w2). each warrior must return True when passed itself, and to win it should return False when passed the other, while the other fails at the reverse (by either returning True or not returning a Bool at all within the time limit)
08:46:01 <Sgeo> What happens if they both succeed or both fail?
08:46:03 <zzo38> I don't know how well that would actually work.
08:46:07 <oerjan> Sgeo: a tie
08:46:30 <Sgeo> Also, Haskell functions are opaque, aren't they?
08:46:31 <zzo38> Do you have an example of a pair of functions that both succeed?
08:46:39 <Sgeo> Well, I guess you could pass them data to see how they act
08:47:47 <Sgeo> Hmm
08:47:48 <zzo38> However, the type I specified is a bit different, in a few ways
08:47:50 <oerjan> yes, basically you can start with const True (a warrior which never wins) and const False (always disqualified) and build more complicated HJ values from that
08:48:20 * Sgeo wonders if it's possible to make a warrior that always forces a tie
08:48:37 <Sgeo> Not sure where I got the idea from
08:49:27 <Sgeo> Trivial warrior that's tough to defeat unless a human writes a specialized warrior to defeat it:
08:49:32 <Sgeo> ...n/m
08:49:33 <oerjan> Sgeo: i don't know. you can do something like \w -> w (HJ w) which will tend to cause loops, but then you get disqualified for not return True for yourself
08:49:58 <Sgeo> I was thinking some sort of warrior that could do a signature thing, but that makes no sense
08:49:59 <oerjan> *returning
08:50:16 <oerjan> Sgeo: actually i think that makes quite a bit of sense.
08:50:26 <Sgeo> Unless you can make this idea work: A signature that the warrior checks for, if it means the signature it returns true, otherwise false
08:50:38 <Sgeo> I have no idea how you'd pass in a signature though.
08:51:01 <oerjan> Sgeo: well think of const False and const True as the simplest possible signatures.
08:54:36 <Vorpal> <elliott_> Oh no, Satan is giving presents to Vorpal now. <-- is he?
08:55:18 <zzo38> For my type: lift = T . const; empty = T $ const empty; T x <|> T y = T $ \z -> x z <|> y z; And I am not sure what else, if any
08:59:57 <kallisti> imagines a world in which wolfram alpha is actually kind of good
09:01:26 <Vorpal> Sgeo: warrior for what?
09:01:42 <Sgeo> haskelljoust
09:01:45 <Sgeo> Read scrollup
09:01:46 <Vorpal> heh
09:04:15 <zzo38> Can any Alternative or MonadPlus be made backward? I would think so, by swapping the order of <|>
09:04:40 <zzo38> This might affect functions that use <|> such as optional and some and many
09:08:04 <oerjan> zzo38: does this work for Functor f => Functor (T v f x): fmap g (T h) = T (\t -> fmap g . h $ fmap' g t); fmap' g (T t) = T (\h -> t $ fmap g h)
09:09:47 <oerjan> or pointfree, fmap g (T h) = T (fmap g . h . fmap' g); fmap' g (T t) = T (t . fmap g)
09:10:09 <Sgeo> I think I'm in love with enumerator
09:12:12 <oerjan> fmap' :: (x -> y) -> T y f v -> T x f v
09:12:29 <oerjan> *fmap' :: Functor f => (x -> y) -> T y f v -> T x f v
09:12:53 <zzo38> oerjan: Maybe; I am going to sleep now, though. Try it yourself or keep writing message if you want to, which I will read tomorrow or the next day. Or just wait until I am back on
09:12:57 -!- zzo38 has quit (Quit: zzo38).
09:14:02 -!- itidus21 has joined.
09:14:50 <oerjan> `haskell newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
09:15:00 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
09:15:04 <oerjan> AAAAAAAAAAAAAAAAAAAAAa
09:15:34 <oerjan> !haskell newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
09:15:41 <Vorpal> oerjan: why not use lambdabot?
09:15:41 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
09:15:58 <oerjan> Vorpal: HAVE YOU EVER SEEN LAMBDABOT ACCEPT A TYPE DECLARATION?
09:16:06 <Vorpal> oerjan: now that you mention it, no
09:16:14 <Vorpal> which is kind of silly
09:16:16 <Vorpal> it should
09:16:59 <Vorpal> bbiab
09:17:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
09:18:29 -!- Vorpal has joined.
09:18:29 <oerjan> `run ls bin h*
09:18:32 <HackEgo> ls: cannot access h*: No such file or directory \ bin: \ ? \ @ \ No \ _tmpe \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8
09:20:25 <oerjan> @tell elliott so let me see, i complained the other day that we didn't have a bot which accepted haskell modules because EgoBot's was broken; kallisti helpfully put one in HackEgo despite your best attempts to sabotage him; you sent a fix for EgoBot and then considered the fact you had _sent_ the fix enough reason to DELETE kallisti's version; which with Gregor's usual responsivity means we _still_ don't have a bot capable of haskell modules.
09:20:25 <lambdabot> Consider it noted.
09:22:21 <oerjan> `which runhaskell
09:22:24 <HackEgo> ​/opt/ghc/bin/runhaskell
09:23:10 <oerjan> @tell elliott oh well i guess can use runhaskell directly. i still have this urge to ban you though. merry christmas.
09:23:10 <lambdabot> Consider it noted.
09:23:30 <kallisti> oerjan: lol
09:24:11 <oerjan> `run echo 'newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"' >typetest.hs
09:24:14 <HackEgo> bash: -c: line 0: syntax error near unexpected token `)' \ bash: -c: line 0: `echo 'newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"' >typetest.hs'
09:24:22 <oerjan> goddammit
09:24:43 <oerjan> `run echo "newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "'"Yay it types!"' >typetest.hs
09:24:46 <HackEgo> No output.
09:24:55 <oerjan> `cat typetest.hs
09:24:57 <Vorpal> oerjan, use `revert to get kallisti's code?
09:24:58 <HackEgo> newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
09:25:40 <oerjan> Vorpal: i am not proficient with vcs'es; won't that revert everything else done since then?
09:26:04 <Vorpal> oerjan, well yes, so extract the file only then
09:26:21 <kallisti> well it would be trivial to rewrite I believe.
09:26:44 <oerjan> `runhaskell typetest.hs
09:26:49 <kallisti> oerjan: noep
09:26:50 <kallisti> oh
09:26:52 <HackEgo> ​\ typetest.hs:1:70: \ Kind mis-match \ The first argument of `Functor' should have kind `* -> *', \ but `T v f x' has kind `*' \ In the instance declaration for `Functor (T v f x)'
09:26:59 <oerjan> oops
09:27:10 <oerjan> `run echo "newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "'"Yay it types!"' >typetest.hs
09:27:13 <HackEgo> No output.
09:27:16 <oerjan> `runhaskell typetest.hs
09:27:21 <HackEgo> ​"Yay it types!"
09:27:24 <oerjan> whew
09:29:43 <oerjan> `help
09:29:45 <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/
09:31:04 <Vorpal> how can it take minutes to load the system event log in windows....
09:32:05 <oerjan> @tell elliott i suppose you helped kallisti with it, too...
09:32:05 <lambdabot> Consider it noted.
09:32:40 <Vorpal> ah there we go
09:32:44 <kallisti> `run (echo '#!/bin/sh'; echo 'runhaskell <<< "$1") > bin/haskell
09:32:47 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
09:32:55 <kallisti> `run (echo '#!/bin/sh'; echo 'runhaskell <<< "$1"') > bin/haskell
09:32:58 <HackEgo> No output.
09:33:01 <kallisti> `haskell main = print (2+2)
09:33:04 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/haskell: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/haskell: cannot execute: Permission denied
09:33:12 <kallisti> `run chmod +x bin/haskell
09:33:15 <HackEgo> No output.
09:33:18 <kallisti> `haskell main = print (2+2)
09:33:21 <HackEgo> ​/hackenv/bin/haskell: 2: Syntax error: redirection unexpected
09:33:25 <kallisti> oh
09:33:27 <oerjan> kallisti: you know i just looked it up on http://codu.org/projects/hackbot/fshg/index.cgi/rev/d30da6e6e1c6?revcount=240
09:33:34 <kallisti> `run (echo '#!/bin/bash'; echo 'runhaskell <<< "$1"') > bin/haskell
09:33:36 <HackEgo> No output.
09:33:41 <kallisti> `run chmod +x bin/haskell
09:33:43 <HackEgo> No output.
09:33:45 <kallisti> `haskell main = print (2+2)
09:33:50 <HackEgo> 4
09:33:57 <kallisti> oerjan: that's pretty much what it was.
09:34:57 <oerjan> oh well. EgoBot's version still works in ghci mode, anyway.
09:35:41 <oerjan> `haskell newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
09:35:47 <HackEgo> ​\ /tmp/runghcXXXX279.hs:1:70: \ Kind mis-match \ The first argument of `Functor' should have kind `* -> *', \ but `T v f x' has kind `*' \ In the instance declaration for `Functor (T v f x)'
09:35:57 * oerjan facepalm
09:36:05 <oerjan> `haskell newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
09:36:10 <HackEgo> ​"Yay it types!"
09:37:39 <kallisti> oerjan: this program is a proof that it types.
09:37:43 <kallisti> beautiful
09:38:30 <oerjan> so i think. there are some cases where ghc only looks things up when used, but i that's mostly to check instance overlap.
09:38:39 <oerjan> *i think
09:38:59 <oerjan> oh and import overlaps too
09:42:24 <oerjan> hm making that pointfree actually made checking the Functor laws easier.
09:44:22 <oerjan> which is sort of expected for category theory, come to think of it.
09:45:36 <oerjan> @tell zzo38 btw, fmap' shows that T is also a contravariant functor in its first argument.
09:45:36 <lambdabot> Consider it noted.
09:46:59 -!- ais523 has joined.
09:47:18 <ais523> merry christmas everyone
09:51:59 <oerjan> ho ho ho
09:53:27 <ais523> oerjan: is it Christmas today in Norway?
09:53:31 <ais523> or is it on some other day of the year?
09:53:35 -!- Taneb has joined.
09:53:38 <oerjan> yesterday, mainly
09:54:11 <oerjan> T v f x = T ((T v f x -> f v) -> f x) if you combine two levels, which makes
09:54:31 <oerjan> it clear that all x positions are covariant, so it should be a functor.
09:56:00 <ais523> hmm, I used to be one of those people who knew the difference between covariant and contravariant, but not which was which
09:56:29 <ais523> but I think I can remember the difference nowadays in simple cases like that
09:57:09 <oerjan> well the way i think about it in haskell, the top position is covariant and then things stay the same when you go down into the fields of a data type, _except_ for the first argument of a -> which swaps them.
09:58:29 <oerjan> and of course there is the functor definition, fmap (f . g) = fmap f . fmap g but cofmap (f . g) = cofmap g . cofmap f
09:59:19 <oerjan> and if all positions of an argument in a data type are covariant you can usually make the corresponding functor.
10:00:00 <oerjan> (i thought about it the other day and if there are strict fields the laws can break down a bit in presence of bottom)
10:01:11 <oerjan> like if you have data Test x = Test Int !x; then Test is not quite a functor because fmap (const a) . fmap undefined is not = fmap (const a)
10:01:24 <oerjan> the former wipes out the Int
10:01:41 <oerjan> and the constructor
10:02:37 <kallisti> > flip f x y
10:02:37 <lambdabot> Ambiguous type variable `b' in the constraints:
10:02:38 <lambdabot> `SimpleReflect.FromExpr ...
10:02:44 <lambdabot> f y x
10:02:51 <kallisti> > flip f (g x) y :: Expr
10:02:52 <lambdabot> Ambiguous type variable `a' in the constraints:
10:02:52 <lambdabot> `SimpleReflect.FromExpr ...
10:02:56 <oerjan> of course haskellers sometimes say bottoms don't count for laws, but for ordinary lazy data structures Functor instances are frequently completely correct even then
10:03:40 <oerjan> hm...
10:04:01 <oerjan> :t expr -- this function can be useful to fix types
10:04:02 <lambdabot> Expr -> Expr
10:04:30 <oerjan> > flip f (expr $ g x) y :: Expr
10:04:32 <lambdabot> f y (g x)
10:04:45 <oerjan> i guess that case wasn't much shorter than :: Expr
10:05:16 <oerjan> > f . expr . g . expr . h $ x :: Expr
10:05:17 <lambdabot> f (g (h x))
10:06:18 <kallisti> I see.
10:06:20 <kallisti> @src expr
10:06:20 <lambdabot> Source not found. Do you think like you type?
10:06:23 <oerjan> that one's harder to do with just :: Expr though
10:06:35 <oerjan> kallisti: it's just id with a type annotation, i think
10:06:52 <oerjan> and simplereflect isn't going to be in @src, it's an obscure package.
10:09:55 <kallisti> oerjan: obviously @src needs to be a universal oracle of Haskell source code.
10:10:44 <oerjan> i think haddock is the closest to that.
10:10:51 <oerjan> er
10:10:54 <oerjan> *hayoo
10:11:24 <Sgeo> Hayoo needs to be moved to Haskell.org
10:11:25 <Sgeo> >.>
10:13:31 <kallisti> @hoogle xmlSerialize
10:13:31 <lambdabot> No results found
10:13:58 <oerjan> _and_ of course, @hoogle needs to expand to all of hackage
10:14:49 <kallisti> yes indeed
10:15:01 <kallisti> imports in Haskell programs should automatically install from hackage.
10:19:03 <Sgeo> Would Hayoo have any use if Hoogle searched all of Hackage?
10:23:38 <fizzie> If Hoogle searched all of Hackage, the obvious solution is to extend Hayoo to search all Haskell source, period. Including e.g. stuff on private people's disks and so on.
10:24:19 <oerjan> obviously.
10:32:31 -!- Taneb has quit (Ping timeout: 240 seconds).
10:35:54 <oerjan> <Sgeo> http://www.independent.co.uk/travel/news-and-advice/airlines-cleared-to-use-santas-shortcut-6281263.html What will this do to the Flat Earth society?
10:36:14 <oerjan> nothing, there's still a patch of antarctica uncovered
10:37:34 <oerjan> also, stop correcting yourself when i'm about to.
10:40:31 <Sgeo> :D
10:42:05 <oerjan> <kallisti> turns out using explicit unboxing is slower because I have to reconstruct the boxed types in order to print them.
10:42:29 <oerjan> i had this possibly unfounded impression ghc does a lot of things unboxed under the hood when it can
10:42:49 <oerjan> (which requires at a minimum that things are strict enough)
10:44:42 <kallisti> oerjan: it does, but since I collect values in a list I assumed that it wouldn't do any unboxing.
10:44:52 <oerjan> ah.
10:45:11 <oerjan> well it needs to box at the end
10:45:12 <kallisti> well, that's the rules for normal unboxed values, perhaps GHC can do more internally though
10:45:55 <kallisti> oerjan: well what I did instead was rewrite it in IO and just print the factors as I receive them
10:45:59 <kallisti> but this turns out to be slower.
10:46:56 <kallisti> perhaps because printing the values one at a time is slower than printing the whole list at once?
10:47:41 <oerjan> i dunno
10:48:23 <kallisti> anyway, lesson learned: writing unboxed code is awful and doesn't necessarily give any huge speed benefits.
10:48:49 <oerjan> ^style
10:48:49 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
10:48:58 <oerjan> fungot: can the sword alone stop?
10:48:58 <fungot> oerjan: from where does the hero alone have the power. " m, madam...! i am the master of war! i've seen all kinds of battles from here, step back, prometheus!
10:49:31 <oerjan> fungot: so, it can stop, you say?
10:49:31 <fungot> oerjan: must think of a way to the ocean palace! and if you wish! we shall hold this position to the last man! big fire where lavos fall from sky! we no can call you " knight, slain by magus in? well, the mystical sword for myself!
10:49:49 <oerjan> fungot: yes, but can it stop?
10:49:49 <fungot> oerjan: we are looking, but well behaved! crono!!
10:49:57 <oerjan> fungot: look further!
10:49:57 <fungot> oerjan: you! take! we find! parental discretion advised. no time to talk we had soldiers searching for you!
10:49:57 <kallisti> fungot: sotp
10:49:58 <fungot> kallisti: there! there it is! but by the time we're through with you, you'll be in danger. open hatch. make yourself at home! the queen has been through a time machine! nya ha!
10:50:36 <oerjan> fungot: did the time machine stop her?
10:50:36 <fungot> oerjan: i, myself, will bring an end to all. ghosts lurk in the ruins! the structural damage is severe. the tale?
10:51:03 <oerjan> fungot: how evil!
10:51:03 <fungot> oerjan: it's a machine that looks like you! no matter what the price! it is, you idiot! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
10:51:44 <oerjan> fungot: that was a lot of exclamation marks for no repetition
10:51:44 <fungot> oerjan: time to shove off you go! didn't you create him? that kino guy! much danger. open hatch.
10:51:55 <fizzie> I like it when it does that 'i, myself, will bring an end to all" bit.
10:52:03 <fizzie> `quote end to all
10:52:06 <HackEgo> 518) <fungot> fizzie: i, myself, will bring an end to all.
10:52:26 <oerjan> fungot: so you will stop it alone, then?
10:52:26 <fungot> oerjan: it's time you jumped off this mortal coil... ...but it appears to be the right time... ...and...they...have to show you the time of day! the black wind...
10:52:41 <oerjan> fungot: my shrink disagrees.
10:52:45 <oerjan> oops
10:53:19 <fizzie> fungot: Have you been replaced with your evil clone or something?
10:53:19 <fungot> fizzie: and you call yourself a frog, and ayla... i will not betray my friends!...... how cruel! umm! thanks! it's about the missing queen. she still looks so much like leene, that they will take you to your place of execution?! strange, but you are true heros. the world, tee, hee! it's not the only one thing we need to defeat you, lavos.
10:54:12 <oerjan> fungot: please don't stop alone
10:54:12 <fungot> oerjan: is the gate key okay!! get' em! 200g per night. care, and stay...healthy! my husband...he's...he's...gone... but he left me precious gifts! the seeds...and our child, it's ancient history now...!
10:54:36 <oerjan> fungot: an ancient child, eh?
10:54:37 <fungot> oerjan: time to shove off! the name's bandeau. here to build the ocean palace? nu...! just trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
10:55:26 <oerjan> fungot: you said most of that before
10:55:26 <fungot> oerjan: shall we get back to the present? he's been known. we reptites will rule the world in a mere door that keeps us bound, hand, foot...and tongue kid? ...oh, it's you, isn't this morbid? the great adventurer toma levine rests in a grave to the north. it's a great place for a picnic! heard that magus's place...
10:55:53 <oerjan> fungot: did you bring sandwiches?
10:55:53 <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! eat! fun!
10:56:11 * oerjan eats some of fungot's sandwiches
10:56:30 <oerjan> fungot: they tasted a bit evil
10:56:59 * fizzie thinks mentioning fungot like this would also trigger it.
10:56:59 <fungot> fizzie: it's time you jumped off this mortal coil... and just what are you two doing! prepare for the moonlight parade! this is the masamune! ride again!
10:57:17 <oerjan> fungot the fickle
10:57:17 <fungot> oerjan: there! there it is! but by the time we're through with you, you'll be in danger. open hatch.
10:57:42 <oerjan> fungot: can you stop me alone?
10:57:43 <fungot> oerjan: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
10:57:47 <fizzie> The source text is a bit short so it keeps being quite repetitive.
10:58:17 <oerjan> fungot: what do you have to say of the use of ancient sharp weapons?
10:58:17 <fungot> oerjan: and you call yourself a frog, and ayla... i will not betray my friends! sir, you must come with us! please! pretty please! hmmm, two-legged, walking humanoid robot! incredible! hold down the l, and r buttons and then press the a button to access, but stay off of " techniques." stop immobilizes and disables you. in these bones, i shall return! by the way, the wings! now this is a treasure there... found the treasure!! pr
10:59:03 <oerjan> fungot: llllllllllllllllllllllllllike this, orrrrrrrrrrrr something else?
10:59:03 <fungot> oerjan: to the northwest of this cape. he took back the medal from the frog king. and i'd like to see that mystical sword for myself! geez! i can rest now, knowing that everyone! humans! they're my friends!
10:59:30 <oerjan> fungot: humans are overrated. needs more ketchup.
10:59:39 <fizzie> fungot: Oh how many times we ask before the sword can't stop?
10:59:39 <fungot> fizzie: see? i like marle better than " princess,' the chosen time has come! he's strong and he's gonna thrash those monsters! yea! is it?
11:00:06 <fizzie> fungot: SWORD. STOP. Do you get it?
11:00:06 <fungot> fizzie: yes, it's been awhile prometheus! what're you doing there!
11:00:09 <oerjan> fungot: do you have a sword to stop those monsters with?
11:00:09 <fungot> oerjan: you! take! we find!
11:00:32 <fizzie> fungot: It's hopeless.
11:00:32 <fungot> fizzie: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
11:01:02 <fizzie> fungot: You just said that *exactÂ* thing. Same quotation and all.
11:01:02 <fungot> fizzie: that no one was allowed to use the crane, enter any two of these letters, a b y.
11:01:02 <oerjan> fungot: we toasted our land and now it's all burnt and stuff
11:01:03 <fungot> oerjan: the knight spirit has the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to the hero! hurrah to t
11:01:37 <oerjan> fungot: does the hero have a good sword?
11:01:38 <fungot> oerjan: and you call yourself a frog, and ayla... i will not betray my friends!
11:01:48 <oerjan> fungot: ...no. not usually.
11:01:49 <fungot> oerjan: it's a machine that looks like you! take! we find!
11:01:51 <fizzie> fungot: You're hopeless.
11:01:51 <fungot> fizzie: but, we are far outnumbered!
11:01:57 <oerjan> fungot: AIYEEEH
11:01:57 <fungot> oerjan: by thy leave, crono?!! you brought back my cat! thank you, crono! schala!! how can i do for you? thanks! it's about the missing queen. she still looks so much like leene, that they will take you to your place of execution?! strange, but!?
11:02:15 <oerjan> fungot: this is the problem with statistics
11:02:16 <fungot> oerjan: it's time you jumped off this mortal coil... but you are true heros. the world, tee, hee! it's not the only one thing we need to defeat you, lavos. by now you must realize you are the only one thing we need to defeat you, lavos.
11:02:51 <oerjan> fungot: yes, we need only the one sword
11:02:51 <fungot> oerjan: like, thanks princess. i'll take that under advisement!! crono!!
11:02:56 <fizzie> fungot: Continut this sentence: "the sword alone can't stop".
11:02:57 <fungot> fizzie: but, we are far outnumbered! go!! hp recovered! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
11:03:05 <oerjan> fungot: are you calling me a princess?
11:03:05 <fungot> oerjan: but, we are far outnumbered! so! that cathedral to the west?... yes! well then rest and relax! huh?
11:03:14 <oerjan> fungot: okay
11:03:14 <fungot> oerjan: i, myself, will bring an end to all. ghosts lurk in the ruins! the structural damage is severe. the tale?
11:03:35 <oerjan> fungot: was there a sword involved?
11:03:35 <fungot> oerjan: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
11:03:45 <fizzie> fungot: Bah, I should retrain this style with different parameters.
11:03:45 <fungot> fizzie: that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone
11:04:00 <fizzie> When in doubt, use threats, I guess.
11:04:05 <oerjan> fizzie: i think you scared fungot with that last comment
11:04:05 <fungot> oerjan: there! there it is! but by the time we're through with you, you'll be in danger. open hatch.
11:04:35 <oerjan> mission accomplished. now ice coffee ->
11:07:53 -!- monqy has quit (Quit: hello).
11:18:35 -!- copumpkin has quit (Ping timeout: 240 seconds).
11:23:04 -!- copumpkin has joined.
11:23:58 <oerjan> http://tahville.myminicity.com/
11:24:03 * oerjan whistles innocently
11:29:20 <oerjan> goddammit browser why do you have to lock up _now_
11:30:52 <Sgeo> myminicity is so $INSULTINGLY_OLD_DATE
11:31:08 <oerjan> :(
11:31:28 * Sgeo enters anyway
11:31:46 -!- SgeoN1 has joined.
11:31:54 <Sgeo> Or, attempting to. My computer is now slow.
11:32:35 <Sgeo> What happens at 5,000?
11:32:37 <oerjan> it seemed to lock up somewhat just after i pasted that link
11:32:57 <Sgeo> It was a while after that that I clicked
11:33:08 <Sgeo> So not my fault
11:33:25 <Sgeo> Anyways, you are now at 49,999 population
11:33:31 <Sgeo> Wow, no
11:33:33 <Sgeo> 4,999
11:33:42 <Sgeo> Sorry to disappoint if you mistakenly believed me somehow
11:33:48 <oerjan> no XD
11:34:10 <Sgeo> Should I go to the transport link?
11:34:36 <oerjan> we've been aiming to get 5000 before new year
11:34:45 <oerjan> nothing else in particular
11:35:00 <Sgeo> Ah, ok
11:35:04 <Sgeo> So close
11:35:06 <oerjan> and i couldn't resist increasing the chances of making it today
11:35:30 * Sgeo tries the tra link
11:35:46 <oerjan> it does only allow one visit per ip per day, btw
11:35:51 <Sgeo> Um
11:35:58 <Sgeo> You succeeded
11:36:03 <Sgeo> After I reloaded
11:36:05 <oerjan> yay :P
11:37:07 <fizzie> That was probably me.
11:37:16 <fizzie> Assuming a visitation counts as something.
11:37:23 <oerjan> yes it does, thank you
11:37:41 <fizzie> That was purely accidental, though, I clickeded before reading the conversation.
11:37:57 <Sgeo> Congratulations! You are the 5,000th visitor!
11:38:17 <kallisti> > intToDigit 42 ""
11:38:18 <lambdabot> Couldn't match expected type `[GHC.Types.Char] -> t'
11:38:18 <lambdabot> against inferr...
11:38:36 <kallisti> ah
11:38:51 <kallisti> ? showIntAtBase 16 intToDigit 42 ""
11:38:54 <kallisti> > showIntAtBase 16 intToDigit 42 ""
11:38:55 <lambdabot> "2a"
11:40:04 <oerjan> > showHex 42 ""
11:40:05 <lambdabot> "2a"
11:40:57 <kallisti> :t let bases = flip (map showIntAtBase [2..16] <*> intToDigit) "" in bases
11:40:57 <lambdabot> Couldn't match expected type `[Int -> Char]'
11:40:58 <lambdabot> against inferred type `Int -> Char'
11:40:58 <lambdabot> In the second argument of `(<*>)', namely `intToDigit'
11:41:09 <kallisti> oh
11:41:12 <kallisti> yes
11:42:02 <kallisti> :t let bases = map flip (map showIntAtBase [2..16] <*> intToDigit) "" in bases
11:42:03 <lambdabot> Couldn't match expected type `[Int -> Char]'
11:42:03 <lambdabot> against inferred type `Int -> Char'
11:42:03 <lambdabot> In the second argument of `(<*>)', namely `intToDigit'
11:42:33 <kallisti> :t let bases = ((map flip (map showIntAtBase [2..16] <*> intToDigit) <*> "") <*>) in bases
11:42:34 <lambdabot> Couldn't match expected type `[Int -> Char]'
11:42:34 <lambdabot> against inferred type `Int -> Char'
11:42:35 <lambdabot> In the second argument of `(<*>)', namely `intToDigit'
11:42:43 <kallisti> I'm definitely doing something wrong. :P
11:43:32 <kallisti> :t let bases n = showIntAtBase <$> [2..16] <*> intToDigit <*> n <*> "" in bases
11:43:33 <lambdabot> Couldn't match expected type `[Int -> Char]'
11:43:33 <lambdabot> against inferred type `Int -> Char'
11:43:33 <lambdabot> In the second argument of `(<*>)', namely `intToDigit'
11:43:51 <kallisti> :t showIntAtBase
11:43:52 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String
11:44:39 <kallisti> :t let bases n = showIntAtBase <$> [2..16] in bases
11:44:40 <lambdabot> forall t a. (Integral a) => t -> [(Int -> Char) -> a -> String -> String]
11:44:48 <oerjan> intToDigit needs []'s around it
11:44:55 <kallisti> oooooh rite
11:45:05 <oerjan> some of the others too
11:45:10 <kallisti> that's a stupid way to write that anyway. :P
11:45:59 <oerjan> hm...
11:46:57 <oerjan> > let bases n = showIntAtBase `flip` intToDigit `flip` n `flip` "" <$> [2..16] in bases 42
11:46:58 <lambdabot> ["101010","1120","222","132","110","60","52","46","42","39","36","33","30",...
11:47:07 <kallisti> :t let bases n = showIntAtBase <$> [2..16] <*> [intToDigit] <*> [n] <*> [""] in bases 5
11:47:07 <lambdabot> [String]
11:47:11 <kallisti> > let bases n = showIntAtBase <$> [2..16] <*> [intToDigit] <*> [n] <*> [""] in bases 5
11:47:12 <lambdabot> ["101","12","11","10","5","5","5","5","5","5","5","5","5","5","5"]
11:47:20 <kallisti> oerjan: oh, so that's what cale flip does.
11:47:21 <kallisti> :t flip
11:47:22 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
11:47:30 <oerjan> kallisti: ordinary flip suffices for that
11:47:47 <kallisti> oooooh
11:47:51 <kallisti> ...clever. :P
11:49:15 <kallisti> showIntAtBase should allow arbitrary greater than 2 bases and also a special unary case.
11:49:39 <oerjan> it does allow anything up to maxBound :: Int
11:49:42 <oerjan> i think
11:49:52 <oerjan> oh hm
11:50:04 <oerjan> it cannot do more than one Char per digit, though.
11:50:18 <oerjan> :t showIntAtBase
11:50:19 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String
11:50:53 <oerjan> there isn't _really_ any reason why it should be restricted to Char or Int
11:51:10 <oerjan> other than efficiency
11:52:31 -!- SgeoN1 has quit (Quit: Bye).
11:54:09 <fizzie> > let showIntWithBestDigits = (`showIntAtBase` chr) in showIntWithBestDigits 1000 515002006323414 ""
11:54:10 <lambdabot> "\515\STX\ACK\323\414"
11:57:16 -!- Patashu has quit (Ping timeout: 240 seconds).
12:11:08 -!- Ngevd has joined.
12:12:43 <fizzie> > let b = toInteger . (+1) $ ord (maxBound :: Char); strId :: String -> String; strId s = showIntAtBase b chr (sum $ zipWith (*) (toInteger . ord <$> reverse s) ((b^) <$> [0..])) "" in strId "foobar"
12:12:45 <lambdabot> "foobar"
12:12:53 <fizzie> I mean, if you happen to need a String -> String specialized id...
12:13:12 <Ngevd> Have you seen the weather in Melbourne?
12:13:14 <Ngevd> It's crazy
12:15:40 <fizzie> The rain in Spain stays mainly in the plain.
12:16:43 <Ngevd> The hail in Melbourne falls mainly all over the place
12:17:00 <fizzie> I see it's in the news and all.
12:26:19 <kallisti> @hoogle showIntAtBase
12:26:19 <lambdabot> Numeric showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS
12:28:29 <oerjan> ais523: is there a way to get a subst: template expanded on preview? i am trying to copy something from wiktionary to wikipedia and a template doesn't exist in both places
12:29:19 <oerjan> (specifically, wiktionary's a template)
12:30:37 <ais523> oerjan: no; but you can use Special:ExpandTemplates for a similar effect
12:30:59 <oerjan> oh hm
12:33:30 <oerjan> wtf i cannot copy this mess of spans
12:34:23 <oerjan> whatever, i'll just leave it in this reduced version i already saved.
12:34:23 <Sgeo> Gracenotes visits, doesn't e?
12:34:42 <oerjan> Sgeo: if he does, he doesn't speak much
12:34:59 <Sgeo> Because e posted to my Wikipedia talk page in 2007
12:35:20 <oerjan> i cannot say i've noticed em in a while
12:35:49 <oerjan> Sgeo: he's on freenode now
12:35:54 -!- nooga has joined.
12:36:20 <Sgeo> I'm in two channels with em, apparently
12:37:37 <ais523> Gracenotes has been in here on occasion
12:38:32 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:39:34 <oerjan> <Ngevd> Have you seen the weather in Melbourne? <-- i am suddenly grasped by the realization that there is only one Hexham, which is expanded by portals to three locations on two continents. at least.
12:42:13 <oerjan> i have the sense _someone_ is in way over their head in today's mezzacotta. i'm just not entirely sure who.
12:45:20 <kallisti> :t "hi"
12:45:21 <lambdabot> [Char]
12:46:08 <oerjan> @hoogle String -> ByteString
12:46:09 <lambdabot> Data.ByteString.Char8 pack :: String -> ByteString
12:46:09 <lambdabot> Data.ByteString.Lazy.Char8 pack :: [Char] -> ByteString
12:46:10 <lambdabot> Data.String fromString :: IsString a => String -> a
12:46:25 <oerjan> > Data.ByteString.Char8.pack "hi"
12:46:26 <lambdabot> Not in scope: `Data.ByteString.Char8.pack'
12:46:38 <kallisti> :t foldr id
12:46:39 <lambdabot> forall b. b -> [b -> b] -> b
12:46:41 <oerjan> shocking
12:46:58 <oerjan> @hoogle String -> Text
12:46:59 <lambdabot> Data.Text.Lazy pack :: String -> Text
12:46:59 <lambdabot> Data.Text pack :: String -> Text
12:46:59 <lambdabot> Prelude read :: Read a => String -> a
12:47:10 <oerjan> > Data.Text.pack "hi"
12:47:11 <lambdabot> Not in scope: `Data.Text.pack'
12:47:20 <kallisti> oerjan: lambdabot should qualified import literally everything in base and probably like 20 other packages on hackage.
12:47:39 <oerjan> lambdabot: you are _so_ out of date on modern haskell enterprise
12:47:51 <oerjan> (so am i, but still...)
12:48:40 -!- pikhq_ has joined.
12:48:42 <Sgeo> kallisti, including System.IO.Unsafe, obviously.
12:48:48 -!- pikhq has quit (Ping timeout: 248 seconds).
12:48:49 <oerjan> kallisti: on first impression, yes, but on second impression, lambdabot already has annoying instance conflicts from conflicting imports
12:48:59 <oerjan> > sin
12:48:59 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
12:49:00 <lambdabot> arising from a use of `...
12:49:18 <Sgeo> Is there any way to avoid importing an instance?
12:49:39 <kallisti> nope. we've discussed this actually.
12:49:58 <kallisti> I think there should be instance hiding.
12:50:13 * kallisti has some other "interesting" ideas concerning records that he would like to crystalize.
12:50:29 <oerjan> crystal records
12:50:36 <kallisti> particularly I'm not satisfied with any of the proposals to "fix" records.
12:50:44 <kallisti> and would like to see if I can come up with anything.
12:51:02 <Sgeo> kallisti, what about turning the names of records into lenses?
12:51:07 <Sgeo> Or is that one of them?
12:51:19 <kallisti> well, sort of.
12:52:03 <kallisti> from what I can tell trying to just add a little bit of sugar / type resolution rules over functions/typeclasses results in some sort of problem.
12:52:24 <kallisti> so I think maybe the answer is to make a larger change to the core of the language.
12:53:00 <kallisti> but yes I think accessing and setting records should be writeable as a function.
12:53:17 <kallisti> and thus curried, abstracted, used in higher order functions, etc
13:00:27 <kallisti> really I wish there was a way to combine TypeDirectedNameResolution and OverloadedRecordFields
13:31:49 <kallisti> "The warm fuzzy feeling you get when you've persuaded your program to live in a total programming language should not be underestimated. It's a strong static guarantee -- you can say that you've written a function without having to pretend that _|_ is a value." -- Why Dependent Typing Matters.
13:33:14 <Sgeo> Isn't totality a separate concern from dependent typing?
13:33:40 * Sgeo would like static guarantees about performance :/
13:33:55 -!- nooga has quit (Ping timeout: 240 seconds).
13:35:14 <kallisti> Sgeo: in this context it's discussing the misconception that general recursion is difficult or impossible in a dependently typed language.
13:44:21 -!- nooga has joined.
14:02:15 -!- Slereah_ has quit (Ping timeout: 240 seconds).
14:02:18 -!- Slereah has joined.
14:17:37 <itidus21> the best kind of recursion is recursion with zero parameters :-D
14:18:40 -!- ais523 has quit (Remote host closed the connection).
14:19:36 <itidus21> such as in C, void hello() { printf("hello world\n"); hello(); }
14:19:50 -!- MDude has joined.
14:20:15 <oerjan> > let hello = "Hello! " ++ hello in hello
14:20:16 <lambdabot> "Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hell...
14:20:46 <itidus21> yay
14:21:24 <itidus21> i bring it up because it raises a question of whether that counts as recursion
14:21:32 <itidus21> which i assume it of course does
14:32:25 <oerjan> in haskell, recursion with parameters is just a special case of recursion without
14:33:39 <oerjan> > let fac = (\f n -> if n == 0 then 1 else n * f (n-1)) fac in fac 5
14:33:39 <lambdabot> 120
14:41:52 -!- nooga has quit (Ping timeout: 248 seconds).
14:54:49 -!- elliott has joined.
15:04:07 <elliott> 04:24:50: <Sgeo> What's a 10th doctor episode I should watch? (Not Blink)
15:04:07 <elliott> 04:24:59: <Sgeo> And not SitL/FotD
15:04:07 <elliott> 04:25:38: <Gregor> Why don't you just watch them in order ...
15:04:07 <elliott> 04:25:52: <Sgeo> I've heard that they're mostly bad
15:04:07 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
15:04:11 <elliott> Sgeo: You've also heard that they're mostly really good.
15:15:14 <elliott> oerjan: hi
15:16:39 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA i mean, hi
15:16:39 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
15:36:35 <elliott> 05:33:39: <Sgeo> I may have inadvertantly lead Haskellers here, just a headsup
15:36:35 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
15:36:37 <elliott> OH NOOOOOOOOOOOOOOOO
15:37:12 <elliott> 05:44:41: <Sgeo> ...you've never heard of perlnomic.
15:37:12 <elliott> this log is terrible
15:37:18 <elliott> oerjan: if you ban me ban everyone else too
15:37:47 <oerjan> elliott: hey at least look at my beautiful Functor instance for zzo38's type
15:38:20 <elliott> oerjan: i didn't say i'd stop reading it i just said it was terribl
15:38:20 <elliott> e
15:38:27 <oerjan> O KAY
15:39:29 <elliott> 06:10:56: <Madoka-Kaname> Sgeo, has anybody done something like that in Perl Nomic?
15:39:40 <elliott> i love how everyone fails to understand that you can't just unilaterally introduce laws in nomic
15:39:44 * oerjan heard of perlnomic so long ago that it wasn't even the same perlnomic, he thinks.
15:40:08 <oerjan> heard of as in played.
15:40:15 <oerjan> or wait
15:40:23 <elliott> oerjan: perlnomic was long-lived
15:40:24 <oerjan> no, it was schemenomic
15:40:36 <elliott> schemenomic was contemporaneous iirc
15:40:45 <elliott> starting-wise
15:40:54 <elliott> perlnomic lasted until a few years ago
15:43:08 <elliott> Gregor: http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=QW-TREX-BEANBAG&Category_Code=QW Please buy this. For America.
15:46:02 <elliott> 08:47:50: <oerjan> yes, basically you can start with const True (a warrior which never wins) and const False (always disqualified) and build more complicated HJ values from that
15:46:11 <elliott> oerjan: i believe you concluded the game was shallow, no? :P
15:46:45 <oerjan> i did?
15:48:07 <elliott> 09:15:34: <oerjan> !haskell newtype T v f x = T (T x f v -> f x); instance Functor f => Functor (T v f x) where { fmap g (T h) = T (fmap g . h . fmap' g) }; fmap' g (T t) = T (t . fmap g); main = print "Yay it types!"
15:48:14 <elliott> oerjan: you realise that
15:48:16 <elliott> `runhaskell
15:48:19 <elliott> is a thing
15:48:48 <HackEgo> No output.
15:48:52 <oerjan> of course i do, i changed to using it just after chastising you
15:48:57 <elliott> oh good
15:49:39 <elliott> `ls bin
15:49:41 <HackEgo> ​? \ @ \ No \ _tmpe \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ haskell \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units
15:49:50 <elliott> `run rm bin/{_tmpe,haskell}
15:49:52 <elliott> :}
15:49:53 <HackEgo> No output.
15:50:11 <oerjan> elliott: YOU REALIZE RUNHASKELL DOESN'T HAVE A CONVENIENT
15:50:19 <oerjan> `revert
15:50:21 <HackEgo> Done.
15:50:29 <oerjan> `ls bin/h*
15:50:32 <HackEgo> ls: cannot access bin/h*: No such file or directory
15:50:36 <oerjan> `run ls bin/h*
15:50:39 <HackEgo> bin/haskell \ bin/hatesgeo
15:50:58 -!- Sgeo has quit (Read error: Operation timed out).
15:51:04 <elliott> `haskell main = print 42
15:51:04 <oerjan> CALLING CONVENTION FOR HACKEGO
15:51:06 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
15:51:09 <elliott> See, it's broken.
15:51:14 <elliott> `run rm -f bin/haskell
15:51:17 <HackEgo> No output.
15:51:36 -!- ChanServ has set channel mode: +o oerjan.
15:51:51 -!- oerjan has set channel mode: +b *!*elliott@unaffiliated/elliott.
15:51:51 -!- oerjan has kicked elliott elliott.
15:51:57 -!- oerjan has set channel mode: -o oerjan.
15:52:17 -!- elliott has quit (Quit: Leaving).
15:53:00 <oerjan> `help
15:53: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/
15:53:58 <oerjan> `revert 1429
15:54:01 <HackEgo> Done.
15:54:08 <oerjan> `run ls bin/h*
15:54:11 <HackEgo> bin/haskell \ bin/hatesgeo
15:54:21 <oerjan> `haskell main = print 42
15:54:30 <HackEgo> 42
15:55:50 -!- Sgeo has joined.
16:01:55 -!- Ngevd has joined.
16:05:07 -!- ChanServ has set channel mode: +o oerjan.
16:05:18 -!- oerjan has set channel mode: -b *!*elliott@unaffiliated/elliott.
16:05:24 -!- oerjan has set channel mode: -o oerjan.
16:06:08 -!- elliott has joined.
16:06:08 -!- elliott has quit (Client Quit).
16:06:29 <oerjan> >_>
16:06:29 -!- elliott has joined.
16:06:31 -!- Ngevd has quit (Ping timeout: 255 seconds).
16:08:41 <elliott> `haskell main = print (2 + 2)
16:08:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
16:08:59 <oerjan> `revert 1429
16:09:01 <HackEgo> Done.
16:09:07 <oerjan> `haskell main = print (2 + 2)
16:09:13 <HackEgo> 4
16:09:41 <elliott> `haskell main = print (2 + 2)
16:09:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
16:09:47 <elliott> I see, it only works half the time!
16:10:50 <oerjan> `haskell main = print (2 + 2)
16:10:53 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
16:11:43 <elliott> Less than half the time.
16:13:23 * oerjan does a brain scan on elliott and discovers that he lacks the hintus perceptor lobe
16:15:16 * oerjan writes down `revert 1429 on a piece of paper for future use
16:15:31 <elliott> `haskell Is it working yet?
16:15:34 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
16:16:13 <oerjan> why should it be working.
16:16:50 <oerjan> i'll just use `revert 1429 when i actually need it. in a month or so. and leave you to clean it up afterwards.
16:18:43 <elliott> Maybe I just won't clean it up :)
16:24:16 * oerjan ponders if he'd know how to handle this if he had any (younger, annoying) siblings.
16:29:21 <oerjan> most likely i'd just have killed them a long time ago.
16:31:04 <Gregor> ......................... dafuq
16:31:15 <oerjan> Gregor: problem?
16:31:29 <Gregor> Does it delete itself or some such nonsense?
16:31:52 <oerjan> Gregor: erm i'm pretty sure elliott is just doing this in privmsg to annoy me.
16:32:22 <Gregor> fshg sez: yup
16:32:41 <oerjan> so there is no technical issue on HackEgo. NOW EGOBOT OTOH...
16:32:51 <oerjan> !haskell main = print (2+2)
16:32:58 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
16:33:30 <elliott> Well if Gregor would apply my fix :P
16:35:28 <oerjan> Gregor: yeah you should apply the fix, you're putting children in danger here.
16:35:46 <elliott> I don't think EgoBot can see /opt/ghc tho.
16:35:55 <elliott> Unless Gregor's unified the chroots already, or just used a softlink, or...
16:40:37 <Gregor> Unless you have a fix fix, your fix is what broke it.
16:40:47 <elliott> Gregor: I have a fix fix.
16:40:53 <Gregor> !sh ls /opt/ghc
16:40:53 <EgoBot> bin
16:41:01 <elliott> Gregor: Well then...
16:41:08 <Gregor> !sh ls /opt/ghc/bin
16:41:08 <EgoBot> ghc
16:41:11 <elliott> ...
16:41:16 <elliott> Where the fuck is runghc?
16:41:20 <elliott> Where the fuck are the library files?
16:41:26 <elliott> Where the fuck are the package conf files?
16:41:34 <elliott> There's no possible way that GHC works.
16:41:39 <Gregor> !sh ls /opt/ghc | fmt
16:41:39 <EgoBot> bin lib share
16:41:43 <Gregor> !sh ls /opt/ghc/bin | fmt
16:41:43 <EgoBot> ghc ghc-7.2.1 ghc-pkg ghc-pkg-7.2.1 ghci ghci-7.2.1 haddock
16:41:45 <elliott> Oh :P
16:41:50 <elliott> Where's runghc
16:41:57 <Gregor> On the next line I presume.
16:42:07 <elliott> Gregor: As Iw as saying, s|ghc|/opt/ghc/bin/ghc|g s|runghc|/opt/ghc/bin/runghc|g in EgoBot's GHC sccript thing.
16:42:11 <elliott> *I was
16:42:27 <oerjan> !sh ls /opt/ghc/bin | fmt -w400
16:42:27 <elliott> !sh echo "main = print 42" | /opt/ghc/bin/runghc
16:42:27 <EgoBot> ghc ghc-7.2.1 ghc-pkg ghc-pkg-7.2.1 ghci ghci-7.2.1 haddock haddock-ghc-7.2.1 hp2ps hpc hsc2hs runghc runhaskell
16:42:30 <EgoBot> 42
16:42:35 <elliott> Yep, do that and it'll work.
16:42:46 <elliott> *script thing
16:43:00 <elliott> "Okay, I'm completely convinced! Now all that we have to do is to solve the halting problem to make your solution work... :-)"
16:43:17 <elliott> oerjan: while you're on your banning spree, please ban this guy from the haskell lists for apparently thinking total functional languages are impossible
16:43:35 <elliott> "So... this imaginary language of yours would be able to solve the halting problem?"
16:43:37 <elliott> also this one.
16:43:49 <Deewiant> !sh ls /opt/ghc/bin | xargs
16:43:50 <EgoBot> ghc ghc-7.2.1 ghc-pkg ghc-pkg-7.2.1 ghci ghci-7.2.1 haddock haddock-ghc-7.2.1 hp2ps hpc hsc2hs runghc runhaskell
16:44:08 <elliott> !sh echo "-n hi" | xargs
16:44:09 <EgoBot> hi
16:44:18 <elliott> !sh echo "-e 'hi\\x00'" | xargs
16:44:19 <EgoBot> hi
16:44:24 <Gregor> !sh ls /opt
16:44:24 <EgoBot> ghc
16:44:25 <Gregor> !sh ls /opt/ghc
16:44:26 <EgoBot> bin \ lib \ share
16:44:28 <Gregor> !sh ls /opt/ghc/bin
16:44:28 <EgoBot> ghc \ ghc-7.2.1 \ ghc-pkg \ ghc-pkg-7.2.1 \ ghci \ ghci-7.2.1 \ haddock \ haddock-ghc-7.2.1 \ hp2ps \ hpc \ hsc2hs \ runghc \ runhaskell
16:44:39 <oerjan> oh xargs defaults to echo
16:44:44 <elliott> Gregor: Are you telling me EgoBot has finally ditched the stupid DCC thing?
16:44:51 <Gregor> Yes X-D
16:44:55 <elliott> THANK THE LORD.
16:45:04 <oerjan> D:
16:45:19 <oerjan> !show slashes
16:45:21 <EgoBot> perl (sending via DCC)
16:45:40 <elliott> X-D
16:45:47 <oerjan> now _that_ was ridiculous.
16:45:51 <elliott> What happened?
16:46:00 <oerjan> 17:44 =EgoBot> Execution of /tmp/input.4598 aborted due to compilation errors.
16:46:00 <oerjan> 17:44 =EgoBot>
16:46:05 <elliott> X-D
16:46:11 <elliott> !haskell 2+2
16:46:14 <EgoBot> 4
16:46:17 <elliott> !haskell main = print 42
16:46:20 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
16:46:20 <Gregor> Gimme a second here >_<
16:46:23 <elliott> NOOOO
16:46:23 <elliott> NO SECONDS
16:46:25 <elliott> NO SECONDS ALLOWED
16:46:27 <elliott> ONLY FIRSTS
16:46:40 <elliott> "I think we're talking about different things. By "bottom" I mean the
16:46:40 <elliott> function explicitly returns "error ..." or "undefined". In those cases, it
16:46:40 <elliott> should go in an error monad instead. In cases where there is an infinite
16:46:40 <elliott> loop, the function doesn't return anything because it never finishes, and
16:46:40 <elliott> indeed this separate problem will never be solved while remaining Turing
16:46:41 <elliott> complete because it is the halting problem."
16:46:44 <elliott> THIS IS HASKELL-CAFE, WHY ARE YOU ALL SO IGNORANT
16:46:48 <oerjan> this is christmas day, you're allowed seconds on christmas day.
16:47:04 * elliott is going to make his own language, with blackjack, and hookers, that /really/ avoids popularity at all costs.
16:47:11 <elliott> the hookers will have phds in mathematics.
16:47:16 <elliott> as will the blackjack.
16:47:56 <elliott> "> Then use a separate type for natural numbers excluding 0. Then you can define a total integer division function on it (although the return value may be zero and so needs a different type).
16:47:56 <elliott> That would certainly be a lovely idea *if* we were programming in Agda, but I was under the assumption that this conversation was about Haskell. :-) "
16:47:58 <Gregor> !haskell main = printStr "4-tee-2"
16:48:00 <elliott> wtf! you can define that in haskell! you suck!
16:48:03 <EgoBot> ​\ /tmp/runghcXXXX21051.hs:1:8: Not in scope: `printStr'
16:48:08 <Gregor> Whoops X-D
16:48:09 <elliott> Gregor: Faiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiil
16:48:18 <elliott> Gregor: That starting \ is ugly :( WHINE WHINE WHINE
16:48:23 <elliott> But hey, now oerjan can't complain
16:48:26 <Gregor> Oh, putStr
16:48:29 <elliott> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:48:31 <Gregor> !haskell main = putStr "4-tee-2"
16:48:32 <oerjan> elliott: oh you found that annoying sola guy too?
16:48:36 <EgoBot> 4-tee-2
16:48:37 <elliott> oerjan: sola?
16:48:46 <oerjan> or something like that.
16:48:52 <elliott> oerjan: i don't know what you mean
16:48:59 <oerjan> elliott: his name
16:49:08 <oerjan> on haskell-cafe
16:49:20 <oerjan> which i may have misremembered, but _still_
16:49:23 <elliott> oerjan: MigMit, Jesse Schalken, and Gregory Crosswhite are the ones I've quoted; is there _another_ wrong person?
16:49:47 <elliott> Gregor: Could EgoBot print something when you segfault?
16:49:52 <elliott> It just sort of doesn't talk to you if that happens.
16:50:03 <Gregor> !c abort();
16:50:07 <EgoBot> ​./interps/gcccomp/gcccomp: line 52: 21355 Aborted /tmp/compiled.$$
16:50:16 <Gregor> !c *((int *) 0) = 0;
16:50:18 <EgoBot> ​./interps/gcccomp/gcccomp: line 52: 21421 Segmentation fault /tmp/compiled.$$
16:50:29 <elliott> "I apologize if I was using the wrong terminology. I've seen "error ..."
16:50:29 <elliott> shown as, and understood it to be, _|_, but it seems _|_ refers to either a
16:50:29 <elliott> value that does not reduce or Haskell's "error" function depending on the
16:50:29 <elliott> context."
16:50:30 <elliott> ;__;
16:50:39 <elliott> Gregor: Well that's not right...
16:50:42 <elliott> !haskell import Foreign; main = peek nullPtr :: IO Int
16:50:51 <Gregor> Odd, why does it say stuff there ... oh, I'll bet I drop Haskell's stderr.
16:50:55 <Gregor> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:51:09 <elliott> <EgoBot> ​\ /tmp/runghcXXXX21051.hs:1:8: Not in scope: `printStr'
16:51:11 <elliott> Gregor: No you don't.
16:51:17 <elliott> Oh, hmm
16:51:19 <elliott> That might be to stdout
16:51:20 <Gregor> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:51:21 <elliott> runghc is weird
16:51:38 <Gregor> Helloooo? Tell me you segfaulted!
16:51:47 <Gregor> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:51:52 <elliott> [elliott@dinky tmp]$ runhaskell <<< 'import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)'
16:51:53 <elliott> [elliott@dinky tmp]$
16:51:57 <elliott> That explains things.
16:52:02 <Gregor> lol
16:52:08 <elliott> Same with nullPtr
16:52:11 <elliott> But it exits code 11
16:52:18 <Gregor> I could make it output "No output." as appropriate.
16:52:21 <elliott> So, uh, I guess you could add || echo "died with $?"
16:52:24 <elliott> Or something.
16:52:50 <Gregor> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:52:55 <EgoBot> No output.
16:53:05 <Gregor> Error codes are for losers.
16:53:43 <elliott> !haskell main = main
16:53:55 <elliott> Gregor: Uhh, excuse me, where is my <<loop>>?
16:54:01 <Gregor> !haskell import Unsafe.Coerce; main = unsafeCoerce (42 :: Int)
16:54:05 <Gregor> elliott: ?
16:54:06 <EgoBot> No output.
16:54:54 <elliott> Gregor: GHC has a grand tradition of optimising terminating programs into programs which print <<loop>> then exit.
16:55:02 <elliott> Perhaps only the compiler does it, though.
16:55:33 <elliott> [elliott@dinky tmp]$ echo 'main = main' >loop.hs && ghc --make loop.hs
16:55:33 <elliott> [1 of 1] Compiling Main ( loop.hs, loop.o )
16:55:33 <elliott> Linking loop ...
16:55:33 <elliott> [elliott@dinky tmp]$ ./loop
16:55:33 <elliott> loop: <<loop>>
16:56:03 <elliott> "I feel that monospace fonts should be used for all of programming. A
16:56:03 <elliott> language could use Unicode symbols, but if it enforces typography, it
16:56:04 <elliott> is destined to win an award for being really unusable"
16:56:08 <elliott> EXCELLENT! @lang is unusable
16:56:10 <Gregor> I assume you mean non-terminating programs.
16:56:16 <elliott> "I'd suggest, in addition to the symbols, renaming some of the fundamental types and concepts, like Monad. I would violently agree that Monad is the correct term, but try to communicate with a commodity software developer sometime (or a government acquisition professional). RWH goes a long way to explaining the concepts, as do the countless Web pages dedicated to explaining the monad concept."
16:56:19 <elliott> WOW THIS IS THE WORST THREAD
16:56:23 <elliott> Gregor: I... might.
16:56:30 <elliott> Gregor: OTOH it could optimise terminating programs that way too.
16:56:53 <Gregor> True.
16:56:56 <elliott> "Indeed, that is my point. "Bottom" is the representation of a computation
16:56:57 <elliott> which cannot be computed. It does not have a semantic in anything less
16:56:57 <elliott> than the first infinite ordinal. It should be treated as essentially
16:56:57 <elliott> unique. It exists as a syntactic construct, but it cannot be given an
16:56:57 <elliott> interpretation in Haskell.
16:56:57 <elliott> In particular, we cannot compare "distinct" (or even indistinct) bottoms,
16:56:59 <elliott> because of the halting problem. There is no consistent logic in which
16:57:01 <elliott> (forall x, x = x) does not hold. Treating bottom the same way we treat 1,
16:57:03 <elliott> "abc", (Just 10), and the other (in principle) comparable values introduces
16:57:05 <elliott> contradiction to Haskell, as a logic. (That is why bottom has the
16:57:07 <elliott> syntactic symbol _|_, the syntax for /the/ unique contradiction)"
16:57:09 <elliott> AAAAAAAAAAARGH
16:59:12 <oerjan> elliott: i think you found the guy
16:59:36 <elliott> oh, solla
16:59:51 <elliott> there is a very disappointing amount of ignorance in this thread
17:02:19 <elliott> "I really have no problems with the monad/functor separation that
17:02:20 <elliott> somebody mentioned.
17:02:20 <elliott> Maybe Monad is not the best name for that class if it's not true that
17:02:20 <elliott> every Monad is a
17:02:20 <elliott> Functor, but it's not very confusing anyway."
17:02:59 <oerjan> i recall that was very confusing
17:03:10 -!- pikhq has joined.
17:03:13 -!- pikhq_ has quit (Ping timeout: 255 seconds).
17:05:14 <Gregor> What shall I eat for Christmas lunch.
17:05:24 <Gregor> I'm thinkin' ... peanutbutter and jelly sandwich.
17:05:56 <Gregor> *sobs quietly to self*
17:06:56 <elliott> this guy on SO just unaccepted my answer
17:06:58 <elliott> ON CHRISTMAS!
17:06:59 <elliott> CHRISTMAS!!!
17:07:42 <elliott> oerjan: "Denotational semantics is unrealistic." you're right, this guy is awful
17:09:07 <elliott> oerjan: he's skipped the "being any good at theory" part and jumped straight to the "adopting hard-line constructivism" part, it seems
17:09:35 <elliott> "So assuming you mean something like:
17:09:35 <elliott> fst (seq [1..] (1,2))"
17:09:39 <elliott> that terminates, you douche.
17:10:21 <elliott> now that I think of it, this Solla name is very familiar...
17:10:24 -!- azaq23 has joined.
17:10:33 -!- azaq23 has quit (Max SendQ exceeded).
17:11:02 -!- azaq23 has joined.
17:11:52 <elliott> oerjan: ooh look, he's made a cottage industry out of this: http://blog.ezyang.com/2011/09/lets-play-a-game/comment-page-1/#comment-2974
17:12:44 -!- oerjan has quit (Remote host closed the connection).
17:18:36 <elliott> "Sure, but if you've ever used recursion, then you do have bottoms in your program."
17:18:37 <elliott> no. stop.
17:18:41 <elliott> you're making it worse
17:27:13 -!- incomprehensibly has joined.
17:27:18 -!- incomprehensibly has quit (Client Quit).
17:29:35 -!- sebbu2 has joined.
17:29:35 -!- sebbu2 has quit (Changing host).
17:29:35 -!- sebbu2 has joined.
17:30:36 -!- sebbu has quit (Ping timeout: 240 seconds).
17:31:04 -!- sebbu2 has changed nick to sebbu.
17:42:30 <Gregor> I'll bet fnord.to is somebody here ...
17:42:35 <elliott> http://isitchristmas.com/ god blses
17:42:45 <elliott> Gregor: Huh?
17:42:57 <elliott> *gob dles
17:44:11 <Gregor> fnord.to was poking around at hackiki.org
17:44:51 <fizzie> Hoy that's probably the isitchristmas site that was on our lobby-screen.
17:44:59 <fizzie> Or at least very similar.
17:45:11 <elliott> <map name="ffmap">
17:45:11 <elliott> <area shape="poly"
17:45:11 <elliott> coords="0,163, 0,198, 198,0, 163,0"
17:45:11 <elliott> href="http://getfirefox.com/"
17:45:11 <elliott> alt="Get Firefox!" />
17:45:12 <elliott> </map>
17:45:22 <elliott> Gregor: No imagemap user would survive here.
17:45:29 <elliott> fizzie: It's pretty Famous.
17:45:42 <fizzie> It has isitfriday normally.
17:46:18 <Gregor> elliott: Hard to argue with that logic ...
17:46:23 <Gregor> Maybe he's a would-be hacker.
17:46:25 <fizzie> But apparently not isitfriday.com, that seems very different.
17:50:01 <elliott> "It has a security system including user permissions to make this marginally safer than it sounds."
17:50:03 <elliott> Gregor: Yeah, marginally.
17:50:42 <Gregor> Well they're not supposed to make it /wildly/ safer X-d
17:50:44 <Gregor> ...
17:50:45 <Gregor> *X-D
17:51:13 <elliott> Gregor: What the /fuck/ do you use <xmp> for
17:51:57 <elliott> 403
17:51:57 <elliott> Permission denied.
17:51:57 <elliott> Due to spam, all edits to this wiki require that you log in.
17:52:03 <elliott> Gregor: You have successfully defeated my 'sploit.
17:52:22 <elliott> fizzie: Although you may think you are frolicking happily across the internet surf, make no mistake. There are sharks in the surf who will infect your PC, steal your valuable information, your identity and wreck unimaginable havoc on your life and PC.
17:52:52 <fizzie> Those wifi-enabled SD cards -- http://uk.eye.fi/ -- are so confusing. It's a SD card. But it magically wifizes and remungles its contents and whatnot.
17:53:24 <fizzie> Next they'll make a microsd card like that.
17:53:38 <Gregor> elliott: <xmp> apparently just ignores HTML tags.
17:53:53 <fizzie> (Also they're misusing our ccTLD.)
17:54:16 <Gregor> elliott: I think he was just trying to find the environment.
17:55:31 <elliott> Gregor: Oh, he added that, not you.
17:55:47 <elliott> fizzie: So it's a ... dropbox SD card or something?
17:55:59 <elliott> That's actually not a terrible idea...
17:56:07 <elliott> Although you'd want 3G really.
17:56:38 <elliott> Or at least Bluetooth so it can work short-range if you just lug about a laptop.
17:57:14 <elliott> fizzie: Also I thought you guys had Official Rules about your ccTLD.
17:57:30 <fizzie> We had, last millennium.
17:57:41 <fizzie> Well, maybe still during this one too.
17:57:49 <fizzie> But nowadays they're very relaxed.
17:58:08 <elliott> I wonder if they made a shell company in Finland just to register that or something. :p
17:58:27 <Gregor> I looked at Eye-Fi, went "wow, that's surprisingly inexpensive", then noticed it's in GBP :(
17:58:31 <fizzie> There might still be a residence-or-place-of-business rule, yes.
17:58:39 -!- oerjan has joined.
17:59:36 <elliott> Gregor: Multiply by 1000 to get current US market rates.
17:59:49 <elliott> "For Eye-Fi UK, click here. For Eye-Fi France, click here. For Eye-Fi USA, click here. For Eye-Fi Japan, click here. Eye-Fi is not available in other countries at this time, but keep tuned by signing up for our mailing list."
17:59:52 <elliott> Discrimination against fizzies.
18:00:11 <fizzie> They're selling it in the local department store.
18:00:21 <fizzie> Their catalog is where I noticed it from.
18:00:35 <fizzie> The website went to uk.eye.fi automagically though.
18:01:40 <fizzie> eye.fi's been registered to "Web Solutions ApS, Suomen sivuliike" -- where "Suomen sivuliike" means "subsidiary in Finland", basically. (And it has a snailmail address in Copenhagen.)
18:03:09 <fizzie> They've had wifi-enabled CF cards for quite a while, aimed for professionals; but those are at least a bit bigger.
18:03:20 <elliott> fizzie: Web Solutions sounds like the name of a company that could forseeably register .fi domains on behalf of people not in finland.
18:03:23 <elliott> *Finland
18:03:36 <elliott> "I would have compose (probably not called '.') read the same way we read
18:03:36 <elliott> this sentence (and unix pipes) ie left to right."
18:03:39 <elliott> NOOO I JUST ARGUED ABOTU THIS
18:04:24 <elliott> oerjan: if you gave up on that thread don't worry MCBRIDE SAVES THE DAY
18:04:26 <elliott> By
18:04:27 <elliott> talking
18:05:05 <elliott> "> I'd like to program with an applicative notion, but
18:05:05 <elliott> > in monadic types. That's what I'd do different, and for me, the subject
18:05:06 <elliott> > is not a hypothetical question.
18:05:06 <elliott> So... you are developing a programming language with all calculations being automatically lifted to a monad?"
18:05:06 <lambdabot> <no location info>: parse error on input `in'
18:05:06 <lambdabot> can't find file: L.hs
18:05:09 <elliott> HE INVENTED IDIOM BRACKETS YOU DOLT
18:05:19 <elliott> oerjan: hi, im a stable and mature human being
18:05:44 <fizzie> I'm vaguely curious how that "auto-upload and delete oldest to free space" feature works. It has to fake some sort of FAT filesystem for the camera, and it doesn't sound especially safe to go altering that while the camera's on, if it has cached parts of it.
18:05:49 <oerjan> elliott: it's not like i visit haskell-cafe every hour
18:06:02 <oerjan> more like once a day
18:06:47 <elliott> oerjan: this is from dec 22 :P
18:06:55 <oerjan> making compose go left to right is somewhat dubious all the time application is still right to left
18:07:12 <elliott> fizzie: It could just cause FAT requests to block until it does the fiddling, no?
18:07:54 <elliott> oerjan: indeed. yesterday I objected to it at length because I find the notion that composition works "backwards" very misguided, as it's applying an intuition about how strict languages are evaluated to a non-strict language
18:08:06 <elliott> (I don't recall whether you were present or not)
18:08:15 <Gregor> elliott: LOLOLOL
18:08:21 <elliott> Gregor: hi
18:08:24 <Gregor> elliott: Price is $50 or 50GBP
18:08:31 <Gregor> LOGIC MUCH?
18:08:52 <elliott> Gregor: That's a common thing.
18:09:21 <elliott> Gregor: If you see pricing like that, you know it's a ripoff any country you're in, because they're going to be making almost 100% profit, and so are making pricing decisions based on psychology rather than mathematics :)
18:09:27 <Gregor> I know that's common for less expensive things, I thought it started to approach the actual conversion rate as things got more expensive. Although I suppose $50 isn't exactly expensive.
18:09:35 <Gregor> Yup.
18:09:45 <elliott> It probably costs them three cents and a Chinese orphan's tear to make.
18:10:16 <elliott> Gregor: Anyway, 50 pounds is pretty expensive.
18:10:22 <elliott> Especially for an SD card :P
18:10:30 <elliott> Oh, wait, you said for less expensive things.
18:10:42 <fizzie> There are no "FAT requests" the SD card gets, it's a block device. And the camera can reasonably assume nothing else will change the contents and e.g. cache the FAT directory structure, and write the directory contents from that cache after snapping a new shot, which would break badly if the directory had had some files deleted.
18:10:43 <Gregor> Like food and clothes.
18:11:00 <oerjan> <elliott> oerjan: hi, im a stable and mature human being <-- i think the term is "compulsive liar"
18:11:00 <elliott> "Oh, so it's not an arbitrary monad, but a single one. That's a bit disappointing."
18:11:09 <elliott> THAT'S NOT HOW EFFECT SYSTEMS WORK
18:11:24 <elliott> HOW DARE YOU INSULT THE GREAT EXALTED MCBRIDE
18:11:32 <elliott> IM GOING TO MAKE YOU CRY INTO A VAT OF TEARS ;__;
18:11:33 <elliott> hi
18:11:54 <oerjan> i sense that christmas is grating on us all
18:12:03 <elliott> fizzie: Fair enough, but I don't know that cameras would actually do that.
18:12:09 <elliott> oerjan: Naw, Christmas is great, it's the other parts.
18:12:19 <elliott> fizzie: I mean, they presumably don't have much computing RAM.
18:12:28 <elliott> (i.e. RAM not being used for camera-y things, I don't really know how cameras work.)
18:13:17 <Gregor> They typically run VxWorks.
18:13:33 <Gregor> So, you could probably find out.
18:13:34 <fizzie> You could run Linux on some old Canons, IIRC.
18:13:36 -!- PiRSquaredAway has quit (Quit: bye).
18:14:01 <fizzie> Anyway, they do seem to have a camera compatibility page. Maybe it just makes some assumptions.
18:14:14 <elliott> fizzie: Maybe you have to turn off the camera and press a button. :
18:14:15 <elliott> :p
18:14:28 <elliott> "> > Denotational semantics is unrealistic.
18:14:28 <elliott> > And so are imaginary numbers. But they are damn useful for electrical
18:14:28 <elliott> > circuits calculations, so who cares?
18:14:28 <elliott> Not a fair comparison. Quaternions are not particularly useful for
18:14:28 <elliott> electrical circuits, because it is unrealistic to apply a four-dimensional
18:14:28 <elliott> construct to two-dimensional phase spaces. In the same way, denotational
18:14:29 <lambdabot> Not in scope: data constructor `And'Not in scope: `so'Not in scope: `are'No...
18:14:29 <lambdabot> can't find file: L.hs
18:14:30 <elliott> semantics adds features which do not apply to a theory of finite
18:14:32 <elliott> computation."
18:14:34 <elliott> oerjan: this guy is crazy
18:14:51 <Gregor> Maybe it just doesn't eff with the presented filesystem until the camera is off?
18:14:59 <Gregor> I mean, it is a memory card as well as a Wi-Fi device.
18:15:04 <oerjan> elliott: so you think he'd fit in here?
18:15:04 <fizzie> The card doesn't get power when the camera is off.
18:15:13 <Gregor> fizzie: Tiny battery.
18:15:23 <elliott> "I did not introduce "good" and "bad" into this discussion. I have merely
18:15:23 <elliott> said (in more words) that I want my hypothetical perfect language to prefer
18:15:23 <elliott> OPERATIONAL (model) SEMANTICS for a typed PARACONSISTENT LOGIC over the
18:15:23 <elliott> DENOTATIONAL SEMANTICS which the official documentation sometimes dips into."
18:15:31 <elliott> PARACONSISTENT LOGICS! awesome, he's going right off the deep end
18:16:01 <fizzie> Apparently at least some cameras do explicit support, with "doesn't turn off until uploads are complete" + "can disable wifi via menu" + "provides wifi indicators in menus" sort of features.
18:16:39 <elliott> fizzie: I wonder how you enter WAP keys.
18:16:47 <elliott> Maybe there's a little binary input switch on the back.
18:16:56 <elliott> Maybe it shows the results by faking a picture file that you view with your camera.
18:17:07 <fizzie> There's a pre-setup you do with a computer, sorry. :p
18:17:19 <oerjan> elliott: at least he has a para-chute
18:18:20 <elliott> fizzie: I do wonder how useful the WiFi-as-soon-as-you-take-a-picture thing is, unless you take pictures of areas in your house with particularly good signal strength.
18:18:33 <elliott> It seems like most of the time you'd want to take photos, return home, and press a button to do the uploadering.
18:18:44 <elliott> Then the benefits seem rather dubious wrt just plugging it in to a computer.
18:18:46 <Gregor> elliott: Frankly, I'd be happy with having my laptop strapped 'round me, on, as a WiFi hotspot.
18:18:48 <elliott> s/wrt/as opposed to/
18:18:57 <elliott> Gregor: That's why I said it should do Bluetooth :)
18:19:07 <Gregor> Mmmm.
18:19:08 <Gregor> True.
18:19:20 <elliott> Gregor: Now CLEARLY what we need is a wearable computer to do that part.
18:19:23 <fizzie> Laptop in your pants.
18:19:30 <elliott> Then we could just put a camera in the glasses.
18:19:37 <elliott> And look like total fuckin' nerd.
18:19:37 <elliott> s.
18:19:45 <elliott> fizzie: Or that, yes.
18:20:03 <fizzie> Doubles as a sack-warmer in colder climates.
18:20:27 <elliott> oerjan: Did you see that "strict, lazy, non-strict, eager" thread?
18:20:36 <elliott> It's, um, very pleasantly worded.
18:21:25 <elliott> > comparing void [] [0..]
18:21:26 <lambdabot> Not in scope: `void'
18:21:34 <elliott> > let void = liftM $ const () in comparing void [] [0..]
18:21:35 <lambdabot> LT
18:21:45 <elliott> Deewiant: You may find ^ useful for lazily comparing lengths of lists without having to define your own function for it
18:22:29 <elliott> Deewiant: (Obviously with Control.Monad.void)
18:23:49 <fizzie> > let void = liftM $ const () in comparing void [0..] [1..] -- WHY IS IT NOT GT IT OBVSLY HAS ONE MORE NUMBER
18:23:53 <lambdabot> mueval-core: Time limit exceeded
18:24:21 <oerjan> of course
18:25:33 <elliott> > let void = liftM $ const () in compаring void [0..] [1..]
18:25:34 <lambdabot> Ambiguous type variable `m' in the constraint:
18:25:34 <lambdabot> `GHC.Base.Monad m'
18:25:34 <lambdabot> a...
18:26:01 <oerjan> :t (()<$) -- this too
18:26:02 <lambdabot> forall (f :: * -> *) b. (Functor f) => f b -> f ()
18:26:07 <elliott> > let void = liftM $ const () in compаring void [0..] [1..]
18:26:08 <lambdabot> GT
18:26:12 <elliott> fizzie: It just needed some time to think, that's all.
18:26:12 <fizzie> "comp?ring" -- poor terminal font strikes again.
18:26:16 <elliott> Darn.
18:26:38 <fizzie> (On the phone here, Droid Sans Mono or whatever.)
18:27:27 <elliott> It's just Crycrycarcyarcuyrcihcruwehricuhweirchaorchuiweorhcawercllic!
18:27:29 <oerjan> > 'а'
18:27:30 <elliott> AKA Welsh.
18:27:30 <lambdabot> '\1072'
18:46:43 -!- incomprehensibly has joined.
18:48:18 <elliott> atomicModifyMutVar# :: MutVar# s a -> (a -> b) -> State# s -> (#State# s, c#)
18:48:24 <elliott> oh god, it's that type copumpkin warned me about
18:48:28 <elliott> oerjan: help, i'm so scared
18:48:35 <copumpkin> :)
18:49:16 <oerjan> you are far from your safe boxes now, elliott
18:50:24 <elliott> oerjan: it's not the boxes
18:50:33 <elliott> oerjan: where does b go, and where does c come from
18:50:40 <elliott> know that and you will know true horror
18:50:45 <elliott> hint:
18:50:48 <elliott> :t atomicallyModifyIORef
18:50:49 <lambdabot> Not in scope: `atomicallyModifyIORef'
18:50:51 <elliott> argh
18:50:57 <elliott> @hoogle atomicallyModifyIORef
18:50:58 <lambdabot> No results found
18:51:00 <elliott> argh!
18:51:04 <oerjan> ayieeh
18:51:08 <elliott> :t atomicModifyIORef
18:51:09 <lambdabot> Not in scope: `atomicModifyIORef'
18:51:11 <elliott> @hoogle atomicModifyIORef
18:51:11 <lambdabot> Data.IORef atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b
18:51:15 <elliott> oerjan: there's hint
18:53:19 <oerjan> well b = (a, c) would seem a safe bet
18:54:23 -!- incomprehensibly has quit (Quit: Leaving.).
18:54:49 <oerjan> so why in the world isn't it fixed to that
18:55:40 -!- incomprehensibly has joined.
18:56:11 -!- incomprehensibly has quit (Client Quit).
18:57:42 <elliott> oerjan: because tuples aren't available at the stage GHC.Prim is compiled at
18:57:47 <elliott> or something
18:57:50 <elliott> or the stage the types are expressed at
18:57:55 <elliott> so it just unsafeCoerces it
18:58:01 <oerjan> AIEEH
18:58:07 <elliott> it's amazing :D
18:58:12 <elliott> hmm
18:58:16 <elliott> copumpkin: why doesn't it just use an unboxed tuple?
18:59:03 <fizzie> Heh, that's funny; the laptop which I upgraded to Ubuntu 11.10 has lost the Ubuntu branding from the GRUB menu; now it has Debian branding there. "debian: The Universal Operating System", and a globe, and whatever.
18:59:33 <elliott> fizzie: Are you sure you didn't upgrade it to Debian?
18:59:46 <fizzie> I'm... reasonably sure. It has that Ubuntu LightDM stuff going on.
19:00:59 <oerjan> elliott: presumably it would then have to repack it to get it into an actual IO?
19:01:23 <elliott> oerjan: hm right
19:18:26 -!- incomprehensibly has joined.
19:21:48 -!- incomprehensibly has quit (Client Quit).
19:22:42 <fizzie> http://upload.wikimedia.org/wikipedia/commons/f/f4/Ad%E2%82%ACm%3D%292499.jpg <- the discontentednest cat.
19:24:34 <elliott> @src Int compare
19:24:34 <lambdabot> Source not found. That's something I cannot allow to happen.
19:24:36 <elliott> gah
19:24:55 <elliott> fizzie: [bad shakespeare reference]
19:28:14 <elliott> *Data.Unique.Snowflake> fmap hash newUnique
19:28:14 <elliott> 256
19:28:14 <elliott> *Data.Unique.Snowflake> fmap hash newUnique
19:28:14 <elliott> 512
19:28:14 <elliott> *Data.Unique.Snowflake> fmap hash newUnique
19:28:15 <elliott> 768
19:28:17 <elliott> *Data.Unique.Snowflake> fmap hash newUnique
19:28:19 <elliott> 1024
19:28:21 <elliott> *Data.Unique.Snowflake> fmap hash newUnique
19:28:23 <elliott> 1280
19:28:25 <elliott> Well that's not right.
19:28:52 <elliott> @src Int
19:28:53 <lambdabot> data Int = I# Int#
19:28:56 <elliott> Hmm.
19:29:36 <elliott> oerjan: why the heck can't I unsafeCoerce "data Foo = Foo Int#" into Int and get the right results :(
19:30:23 <oerjan> shocking
19:31:24 <elliott> oerjan: why is that shocking :( they have :( the exact same constructors
19:31:37 <oerjan> yes, that's why it's shocking
19:32:35 <elliott> oerjan: you usually am be sarcastic when say shocking >:(
19:33:00 <oerjan> why can't i be both? </dogbert>
19:37:46 <oerjan> storm's a-coming :(
19:38:17 <elliott> oerjan: *santa
19:38:47 <oerjan> i thought even you brits were finished with that bit now
19:39:37 <elliott> oerjan: SANTA NEVER DIES.
19:41:05 <oerjan> surely this must be about when he goes on vacation.
19:42:24 <elliott> oerjan: well see because he exists in his own space-time continuum, he actually works normal workdays
19:42:42 <elliott> monday to friday he does his deliveries, and he gets the weekend off, which translates to like a few ms pause
19:42:49 <elliott> he gets all this extra time from the rest of the yaer
19:42:50 <elliott> year
19:43:02 <elliott> so for santa the year is december 24/25
19:43:06 <elliott> qez
19:43:57 <oerjan> fancy
19:44:12 <oerjan> quod est zombocom?
19:44:55 <elliott> yes.
19:45:03 <elliott> that's where santa's power comes from
19:45:09 <oerjan> because you can do anything as santa
19:45:14 <elliott> the only limit is yourself.
19:45:18 <elliott> oerjan: did you get lutefisk for christmas
19:45:32 <oerjan> no.
19:46:33 -!- KingOfKarlsruhe has joined.
19:51:05 <elliott> oerjan: why not
19:51:13 <oerjan> it doesn't really work as microwave dinner.
19:51:54 <elliott> oerjan: does santa not cook things for you in .no
19:52:19 <oerjan> not lutefisk.
19:55:26 <elliott> data Int = I# Int#
19:55:27 <elliott> hmph
19:55:33 <elliott> I was wondering if the representation mightn't have changed
19:55:49 <elliott> and I know current GHC doesn't pointer-tag Ints, so wtf
19:55:52 <elliott> or hmm
19:56:02 <elliott> it doesn't tag Int#s
19:56:05 <elliott> but it has no reason to tag Ints, either
19:56:09 <elliott> since they're just regular objects
19:57:27 <Gregor> `words --eng-all -o 100
19:57:38 <HackEgo> stronycaetinearettanessedbyaminatriquemosientastorresitamportcolithoxyfullankowskywherytiarynooarding
19:58:01 <oerjan> Gregor: i think that must be illegal
19:58:28 <Gregor> Eff off, pig, I'll stronycaetinearettanessedbyaminatriquemosientastorresitamportcolithoxyfullankowskywherytiarynooard all I want!
19:59:40 <oerjan> well don't come running to us if you get in trouble
20:00:12 <elliott> `words --french -o 1000000000000
20:00:18 <HackEgo> graphilardantsukundanifeloppéesdictumonomitatusilissementaranssuyerdentor's
20:00:22 <elliott> :D
20:00:33 -!- elliott has set topic: The graphilardantsukundanifeloppéesdictumonomitatusilissementaranssuyerdentor's domain | http://codu.org/logs/_esoteric/.
20:01:07 <Gregor> `words --eng-all -o 2
20:01:13 <HackEgo> estonen
20:01:29 <Gregor> `words --help
20:01:32 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:01:33 <elliott> Estonen, it's like estonian but bad.
20:01:45 <elliott> `words --german-medical -o 100
20:01:49 <HackEgo> vigitallsprozeptusionephalternaltenstlinsuchenorelsunfallsfreichondrogrendesequetiralemedierenzenzprävalerientibins
20:02:19 <oerjan> whatever you do, don't catch that
20:02:46 <Gregor> It can be cured quickly and easily, but you'll die while they try to tell each other what you have.
20:03:06 <oerjan> each part may be curable, but you'll never survive the full drug combination
20:03:54 <elliott> `words --german-medical -o -42
20:03:58 <HackEgo> cliom
20:04:37 <elliott> cliom
20:04:52 <Gregor> What does -o actually do, more specifically than vaguely affect the length ...
20:04:58 <elliott> "Yes, it takes the birth of Jesus to enumerate total functions, so Merry Christmas!"
20:05:02 <elliott> Gregor: Set the offset.
20:05:13 <oerjan> the cliom is just below and to the left of the splanch
20:05:31 <elliott> Gregor: For more detail see Hird, Kallasjoki et al. 2011.
20:05:44 <Gregor> lol
20:05:50 <elliott> AS PLAGIARISED BY CURTIS 2011
20:06:09 <Gregor> Plagiarism is the sincerest form of plagiarism.
20:06:20 <elliott> :D
20:06:43 <elliott> "And another observation: Haskell has access to the real world and can use real-world data to construct elements of type Integer -> Bool. Are you saying there are only countably many streams of bits in the real world?"
20:06:45 <elliott> Err... yes.
20:07:06 <oerjan> If I write that in my book of tautologies, I will have written it in my book of tautologies.
20:08:46 <Gregor> elliott: If you collect Love of Jesus photons (which are at a particularly high density this time of year anyway), you can get infinite streams of bits from the Real World.
20:09:23 <elliott> Gregor: Haskell doesn't let you talk to the real world, man.
20:09:30 <elliott> That's why people don't buy Haskell programs.
20:09:48 <elliott> "Functional programming may have moved on from when I was at university, but as I recall the main point of a functional programming system was to stop the programmer creating any “side effect”. However users buy software due to the side effects that are created, e.g. updating a UI."
20:10:00 <Gregor> lol
20:10:11 <Gregor> This guy is a real champion.
20:10:17 -!- oerjan has quit (Quit: Good night).
20:11:40 <elliott> "Also, I don't see why
20:11:40 <elliott> partiality deserves an applicative notation where other, perhaps more
20:11:40 <elliott> benign effects (like *handled* exceptions) are forced into an imperative
20:11:40 <elliott> (or clunky Applicative) mode."
20:11:42 <elliott> BURRRRRRRRRRRRN
20:12:12 <elliott> For Haskell fanboy, I sure do dislike Haskell.
20:16:40 <fizzie> `words --norwegian 15
20:16:44 <HackEgo> fremiddagsstemulig botnfirehjemmerliging bruktemass fein mørkbilleken enklenets insenotikke tabsolengen bjølvstøver styrmarked begrets kole skanalfartering bahrens mollda
20:16:46 <fizzie> (Oh, it has that now.)
20:17:40 <fizzie> Aw, oerjan just left; I was going to ask whether he's got his bjølvstøvers warmed up, and mørkbilleken in the oven.
20:17:45 <fizzie> After all, it's Christmas now!
20:18:31 <elliott> `words --finnish 15
20:18:34 <HackEgo> näytempiisimmassa toisemme suomassa venpähäneet sohjauttavistuvaa minansa kutikapestuin piisarmoksee selkääni leissasi sofisellestäsi sääsi allittuissammilta laveristaan grafialleen
20:18:47 <elliott> fizzie: Taken a trip to the suomassa recently?
20:18:57 <elliott> fizzie: If not, I hope you're eating some delicious venpähäneet.
20:19:10 <elliott> fizzie: My favourite Finnish delicacy has to be selkääni, though.
20:19:20 <elliott> fizzie: And Sääsi is such a lovely town.
20:19:25 <fizzie> Taken a trip to the mass of swamp? Can't say I have.
20:19:30 <elliott> X-D
20:19:31 <elliott> Seriously?
20:19:52 <fizzie> Well, it's not a *regular* word; but suo is a swamp, and massa is pretty much mass, so...
20:20:55 <fizzie> Also 'selkääni' is a regular word, e.g. "nouse selkääni" 'get on my back', "selkääni koskee" 'my back hurts'.
20:22:10 <Gregor> Mmmm, back.
20:22:11 <fizzie> First-person singular possessive version of the illative case, or some-such.
20:22:26 <fizzie> I guess you could say "syöt selkääni" 'you are eating my back'.
20:22:57 <elliott> :D
20:23:04 <elliott> fizzie: What about the othe rtwo?
20:23:05 <elliott> *other two
20:24:04 <fizzie> Those don't really have a meaning, though Sääsi could well be a Finnish place name, and "vehnä" == wheat, so I keep reading "venpähäneet" as wheat-something, since it's got the right letters, just not in the right order.
20:25:04 <fizzie> "vehnäpäneet" is still nothing, as far as I know of, but it could easily be "wheat X", where X is some horrible traditional food from the ass-end of nowhere.
20:25:38 <elliott> :D
20:25:38 <Gregor> WHEAT-RELATED ANECDOTE:
20:25:44 <fizzie> Actually hmm, I guess "sääsi" is also "your weather", come to think of it. People don't usually have private weathers, but I guess it could be used to mean "weather in where you are".
20:25:59 <elliott> your weather :D
20:26:13 <elliott> ic an;t stop laughing your language is so funny
20:26:14 <fizzie> ("sää" is weather.)
20:26:21 <Gregor> I remember somebody saying that they would organize a "grad student challenge", where you had to do conventional grad-student stuff all day. But as they described it, the first thing they said is "you get up and eat wheat for breakfast", and everybody laughed at them, so we didn't hear the rest.
20:26:23 <Gregor> Mmmm, wheat.
20:27:25 <elliott> Gregor: Backs are nicer.
20:27:44 <Gregor> I use raw wheat as a garnish for back.
20:30:34 <fizzie> elliott: Also from your `words list: "toisemme" 'we -- each other' if you add a verb; "laveristaan" '(out of/about) his/her (wooden bed/bed-frame)'.
20:30:38 <Gregor> Wheat is also the greatest aphrodisiac.
20:30:48 <fizzie> "laveri: A rough wooden bed or platform for sleeping. (furniture) A simple wooden bed, the bottom of which is typically made of laths."
20:30:59 <elliott> fizzie: We about her wooden bed each other.
20:31:31 <Gregor> Are you propositioning fizzie?
20:31:52 <fizzie> "löysimme toisemme laveristaan" -- "we found each other in his wooden bed". (Okay, that sounds a bit dirty.)
20:32:16 <elliott> Gregor: No; are you?
20:32:23 <elliott> fizzie: Are *you*?
20:32:39 <Gregor> Depends on the quality of his laveri.
20:32:42 <elliott> `words --finnish 15
20:32:45 <HackEgo> saan päättömämme kauhoituskaaja lamme rakelmoittelemme eläviävinaan kuolettaisit myöntävi täsi ylistumaa hyödynti tempiensä esihän tukeutteleville karkeimmikseen
20:33:09 <elliott> fizzie: Päättömämme is the best kind of theatre.
20:33:15 <fizzie> It means "our headless one".
20:33:16 <elliott> fizzie: But sometimes it can be a bit lamme, you know?
20:33:18 <elliott> I...
20:33:24 <elliott> I love Finnish?
20:33:29 <Gregor> X-D
20:33:29 <Vorpal> `url words
20:33:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/words
20:33:39 <Vorpal> `run type words
20:33:41 <HackEgo> words is /hackenv/bin/words
20:33:42 <Vorpal> `url bin/words
20:33:46 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/words
20:34:00 <fizzie> Pää 'head', päätön 'headless', päättömämme 'our headless'.
20:34:39 <Vorpal> elliott, learn it
20:34:52 -!- monqy has joined.
20:34:57 <elliott> fizzie: So now that I've stopped laughing: It was the biggest kauhoituskaaja I've ever seen. Easily twice the size of my own kuolettaisit's one. I thought "Myöntävi! This is gigantic!".
20:35:05 <Vorpal> `words 15
20:35:10 <HackEgo> cut emthe blssol osta grav hadwel eai inhan riger jube lonal hoppe rethe sethyroof autome
20:35:11 <elliott> fizzie: But then my tempiensä broke, and, well, you know how it can be with little eläviävinaans.
20:35:23 <Gregor> `words --swedish 20
20:35:26 <HackEgo> kommandlar samarassonsningenod drömmangor konklimrade själts seglastej avveckning kiskrivet kels puttrafterbiste degelsen domernas expanstet vernas katadlas daljer åbyglantroling från famaskinnen ödspekullpaj
20:35:33 <elliott> fizzie: DECIPHER MY WORDS, PLEB
20:35:50 <Vorpal> Gregor, one valid word there: "från", means "from"
20:36:42 <Vorpal> `words --swedish 20
20:36:45 <HackEgo> damorfatt förvinprocen trare avsättan tröm vik cenerna diskarnspel busar gryta hugsvander kufiskt ändningarna försmåvil kändningrip begivelsensinflat krosats expedarna mentroll milist
20:36:47 <fizzie> elliott: Will take a while. At least kuolettaisit 'you should amortize', in an accounting context.
20:37:33 <Vorpal> lol
20:38:31 <Vorpal> fizzie, do any of the other words even mean anything?
20:39:00 <Vorpal> No Japanese?
20:39:28 <Vorpal> guess the algorithm might only work on languages using a latin script
20:39:35 <Vorpal> or hm
20:39:42 <Vorpal> `words --russian 20
20:39:43 <fizzie> elliott: "myöntävi" sounds like an old-fashioned way to say "myöntänee", that is "he/she is likely to agree/concede/grant"; it's not really valid, though. But with a couple of more letters it would be, e.g. "myöntäviä" 'granting (plural)' or some-such.
20:39:46 <HackEgo> ​дунувшихся яэнером заочника эское кикета средвссверта разонич пъсням выгоров фузить просман госуном опредент цзадела шость мигрублешя пание икатопника ьдцев сдедо
20:39:47 <elliott> The "algorithm", aka "Markov chain".
20:39:52 <Vorpal> elliott, right
20:40:00 <Vorpal> elliott, would it work at all on Japanese?
20:40:04 <elliott> fizzie: It even SORT OF MAKES SENSE in context!
20:40:12 <elliott> Vorpal: kallisti was just too lazy to do it, I think.
20:40:22 <Vorpal> heh
20:40:54 <fizzie> elliott: "kauhoitus" ladle-making, ladleification, the procurement of ladles. "-kaaja" sadly doesn't really mean anything. "kauhoittaja" would be the ladle-giver, the person who makes sure everyone has ladles.
20:41:12 <elliott> :D
20:41:20 <elliott> The biggest ladle-giver.
20:41:36 <elliott> (65 over 3. :/)
20:41:52 <Vorpal> elliott, what is that thing you are trying to get to converge?
20:41:53 <fizzie> "eläviävinaans" isn't a valid word, and can't really be, it breaks the vowel harmony rules. "eläviä" = 'living (plural)', but that's about it for the meaning.
20:42:05 <elliott> Oops, I missed the vole harmony violation.
20:42:12 <elliott> Vorpal: Units.
20:42:26 <Vorpal> elliott, what units?
20:42:47 <Vorpal> elliott, the number you gave lacked units, it looked dimensionless to me
20:42:51 <elliott> Vorpal: Big ones.
20:43:04 <Vorpal> elliott, like terrameter?
20:43:26 <Vorpal> that is fairly large I believe
20:43:42 <elliott> That's not a thing.
20:43:54 <Vorpal> elliott, well you never gave your unit
20:43:56 <elliott> Terametre is a thing, though.
20:44:01 <Vorpal> right
20:44:02 <Vorpal> whatever
20:44:23 <elliott> It's not The thing, though.
20:44:33 <Vorpal> elliott, "The metre (meter in the US), symbol m [...]" says wikipedia
20:44:36 <Vorpal> so meter is a thing
20:44:50 <fizzie> Also sadly no 'tempiensä'. "hyödynti" from your list is "made use of", approximately. "tukeutteleville" could be "for the people who keep calling other people fat" if you're *real* generous ("tukeva" == fat, chubby, "tukeutteleva" could barely mean "someone who calls other people fat", and then "tukeutteleville" is the proper inflection for what I said.) And "saan" is "I get". And now it's time for some chocolate and awayness. ->
20:45:08 <elliott> Vorpal: Terra isn't.
20:45:18 <Vorpal> elliott, oops, right
20:45:21 <Vorpal> missed that typo
20:45:37 <Vorpal> elliott, I blame playing terraria for 4 hours straight
20:45:51 <Vorpal> (in hardmode)
20:56:41 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88 [Firefox 9.0.1/20111220165912]).
21:01:23 <elliott> WHY DOESN'T THIS SHIT WORK
21:09:14 -!- GreaseMonkey has joined.
21:25:57 -!- zzo38 has joined.
21:32:08 <zzo38> OK, I can now see that my type is functor, which is what I thought. I could already see it is all x covariant and v contravariant. But is it applicative or monad or something else too?
21:32:08 <lambdabot> zzo38: You have 3 new messages. '/msg lambdabot @messages' to read them.
21:39:04 <zzo38> It seem to me might make, since lift = T . const; and then if you map the values (f x) instead of (x) then you might be able to make join
21:39:14 <const> o.O
21:39:50 <zzo38> const: What did you mean, exactly?
21:40:06 <const> zzo38: apparently I'm being dotted with T
21:40:14 * const blinked
21:41:25 <Gregor> const: Yeah, but you're the one dotting O with o.
21:43:47 <const> Gregor: instinctive response
21:44:53 -!- zzo38 has quit (Remote host closed the connection).
21:44:58 <elliott> const: Suddenly I realise that your name is probably a reference to the worst thing in C rather than the Haskell function.
21:45:16 <const> elliott: worst thing in C ?
21:46:09 <const> elliott: also, I wasn't thinking of any particular language when I went from variable -> const
21:46:18 <const> just thought the two worked together :)
21:47:10 <elliott> const: Worst thing in C, yes.
21:47:21 <elliott> Oh, you're that variable person.
21:47:24 <const> elliott: why do you say that?
21:47:30 <const> curious
21:48:31 <elliott> const: const is both the ugliest thing ever to get working, with basically every library working against you as far as const-correctness goes and signatures ballooning in size and becoming unreadable (since, let's face it, *nobody* remembers which way round the consts go first time), and in return gives you... an incredibly tiny amount of safety and static checking for your work.
21:48:48 <elliott> Though of course C is not known for its static checking, it's also not known for making you work for the privilege of not getting strong static checks :P
21:49:00 -!- derdon has joined.
21:54:44 <const> <elliott> Oh, you're that variable person. --> is that a bad thing?
21:54:46 -!- sebbu2 has joined.
21:55:29 <const> elliott: also, I see what your saying. constness in theory is also supposed compilers generate faster code
21:55:33 <const> duno how much it helps though
21:57:36 -!- sebbu has quit (Ping timeout: 240 seconds).
21:59:09 -!- sebbu has joined.
21:59:10 -!- sebbu has quit (Changing host).
21:59:10 -!- sebbu has joined.
22:00:16 -!- sebbu2 has quit (Ping timeout: 240 seconds).
22:00:46 -!- sebbu2 has joined.
22:04:21 -!- sebbu has quit (Ping timeout: 252 seconds).
22:04:24 <elliott> const: I've never seen it have an effect in practice.
22:04:29 <elliott> And no, I just didn't realise :)
22:18:35 <elliott> 45 over 1.72 :(
22:28:09 <elliott> 20 over 1.5 :)
22:44:38 -!- sebbu2 has changed nick to sebbu.
22:47:05 <elliott> http://sprunge.us/IMKR
22:47:09 <elliott> well today's hack is going perfectly!
22:53:00 -!- zzo38 has joined.
22:54:37 <zzo38> I have two Christmas trees. One is nice Christmas tree, it is small one, and is on top of the phonograph. The other one is messy Christmas tree that might be suitable for the D&D monster character. My D&D character is monster character so is good we have two Christmas trees
22:59:30 <elliott> :D
23:03:11 <zzo38> I played a short D&D game session today
23:03:24 <zzo38> Now maybe I can meet the requirement of prestige class
23:05:05 <zzo38> Did you figure it out?
23:19:45 -!- zzo38 has quit (Remote host closed the connection).
23:22:30 -!- sebbu has quit (Read error: Connection reset by peer).
23:23:04 -!- sebbu has joined.
23:23:05 -!- sebbu has quit (Changing host).
23:23:05 -!- sebbu has joined.
23:24:02 -!- incomprehensibl1 has joined.
23:33:53 -!- incomprehensibl1 has quit (Quit: Leaving.).
23:52:33 -!- Patashu has joined.
23:53:26 <elliott> copumpkin: You should hurry up making iteratees nicer before these hideous conduit things catch on :(
23:58:09 <Sgeo> conduit?
23:58:19 <Sgeo> And what's not nice about iteratees?
23:58:50 <Sgeo> Oh, conduits are connected to the Resource monad stuff?
23:59:12 <Sgeo> Oh, conduit blog post up yay
23:59:47 <elliott> Sgeo: Enumerator vs. Enumeratee is ugly, the "return unused data" thing is super ugly, since there's nothing stopping you lying
2011-12-26
00:00:10 <Sgeo> What's hideous about conduits?
00:00:16 <elliott> The huge number of operators that all amount to composition except with Random New Type #N are ugly
00:00:40 <Sgeo> I think iterIO unifies enumerators with enumeratees?
00:00:56 <elliott> Sgeo: For one apparently you have to be in IO and use mutable variables to maintain any kind of internal state but it's ok because you're going to be in IO all the time anyway!
00:01:15 <elliott> Also they don't seem to actually reduce any of the ugly, just pile more and more on top to achieve things that iteratees can't.
00:01:25 <elliott> And yes, I've used iterIO.
00:01:40 <elliott> It's nicer but it's not quite nice.
00:01:58 <Sgeo> It has a dependency on unix. Why?
00:03:03 <elliott> I forget, probably socket-related
00:03:23 <elliott> The zlib/ssl dependencies are more annoying; at least everyone already uses Unix
00:03:52 <Sgeo> The conduit terminology stuff reminds me of equiv. concepts in iteratrees
00:03:56 <Sgeo> iteratees
00:04:03 <Sgeo> (Well, the enumerator rendition of such)
00:04:10 <elliott> Something... based on iteratees... reminds you of iteratees?
00:04:12 <elliott> Shock! Horror!
00:04:59 * elliott has his own Pet Theory of Iteratees, but will settle for something that is just usable.
00:05:42 <elliott> Or, well, Pet Theory of Stream Processing.
00:08:03 -!- sebbu2 has joined.
00:08:03 -!- sebbu2 has quit (Changing host).
00:08:04 -!- sebbu2 has joined.
00:11:01 * elliott mentions that he got an API addition into iterIO, waits for Sgeo to consider him famous.
00:11:16 -!- sebbu has quit (Ping timeout: 240 seconds).
00:11:17 <elliott> Although it's not technically in the Hackage version.
00:22:03 -!- sebbu2 has changed nick to sebbu.
00:37:10 <elliott> pikhq: I was thinking that there's no real reason ~/code shouldn't just be ~/work or ~/works or something, assuming things won't be harder to find by mixing code and non-code and collisions are unlikely.
00:37:17 <elliott> LESS HIERARCHY PLZ
00:56:56 -!- MDude has quit (Ping timeout: 240 seconds).
01:53:19 <elliott> `words --finnish
01:53:33 <HackEgo> vihkymieni
01:57:35 -!- MDude has joined.
01:58:16 <elliott> `words --finnish 15
01:58:20 <HackEgo> asenne syytyväke idenmuksen madaltangalla ulkitsemmistuviksessa maitappaimme ohjella sesi mutoakaamia salailemme sahavoksi biografistakusta euksissanne varjoittäkä sykieni
01:58:37 <elliott> "attitude syytyväke idenmuksen madaltangalla ulkitsemmistuviksessa maitappaimme ohjella Sesi mutoakaamia hiding sahavoksi biografistakusta euksissanne varjoittäkä sykieni"
02:11:39 -!- Nisstyre has quit (Quit: Leaving).
02:18:03 <kallisti> elliott: I was too lazy to do Chinese, and don't have a Japanese dictionary currently
02:25:45 -!- derdon has quit (Remote host closed the connection).
02:35:37 -!- incomprehensibly has joined.
02:36:39 -!- Nisstyre has joined.
02:41:18 -!- azaq23 has quit (Quit: Leaving.).
02:57:05 -!- incomprehensibly has quit (Quit: Leaving.).
03:07:06 -!- Vorpal has quit (Ping timeout: 240 seconds).
03:13:30 -!- elliott has quit (Ping timeout: 252 seconds).
03:17:41 -!- Nisstyre has quit (Remote host closed the connection).
03:22:29 -!- Klisz has joined.
03:25:12 -!- Nisstyre has joined.
03:44:36 -!- Nisstyre has quit (Ping timeout: 240 seconds).
04:04:39 <pikhq> Oh, post-dinner lethargy.
04:06:00 <kallisti> pikhq: digesting is hard work.
04:46:52 -!- DCliche has joined.
04:56:20 -!- Klisz has quit (*.net *.split).
04:58:12 -!- pikhq_ has joined.
04:58:24 -!- pikhq has quit (Ping timeout: 252 seconds).
04:59:04 -!- kmc has quit (Quit: Leaving).
05:03:10 -!- zzo38 has joined.
05:12:42 -!- pikhq has joined.
05:12:49 -!- pikhq_ has quit (Ping timeout: 248 seconds).
05:18:16 <zzo38> Why do some computer pinball games prevent you from nudging the table when tilted but still make the ball continue moving and you have to wait until it drains? It should either allow you to nudge when tilted, or force the ball to drain immediately. (Of course this problem does not occur in games that don't have tilt penalty; possibly because the nudge strength of the computer is never sufficient to trigger tilt)
05:20:54 <coppro> zzo38: Because nudging in a tilt is irrelevant
05:27:28 <itidus21> my first computer game was nintendo pinball
05:28:23 <itidus21> as my research indicated, the pinball game for NES was initially done at HAL but eventually they collaborated with nintendo to finish it
05:29:27 <zzo38> coppro: True; but nudging during a tilt would allow the ball to drain more easily especially if the ball is stuck and you need to nudge it to get the ball unstuck so that it can drain.
05:32:02 <Sgeo> o.O at ball getting stuck during tilt penalty
05:32:13 <zzo38> Solutions to this problem include (pick one): * No tilt penalty. * Ball automatically drains immediately if a tilt is triggered. * Nudging is allowed during a tilt in order to get the ball unstuck if it is stuck and unable to drain for some reason.
05:32:15 <Sgeo> Shouldn't require gamer intervention though
05:32:33 <Sgeo> How about: Computer nudges the table
05:33:02 <itidus21> theres always "no tilt option" :P
05:33:28 <zzo38> Sgeo: No, I don't like that. I prefer one of the first two solutions. For a game designed to do hardware/software simulation separately, use the first or third solution.
05:33:39 <itidus21> by which i mean, what are the rules for tilting? can you get away with any tilts?
05:33:50 <zzo38> (The first option is common in flipperless pinball computer games.)
05:33:53 -!- Nisstyre has joined.
05:34:19 <Sgeo> What does the pinball game that comes on Windows do?
05:34:44 <Sgeo> I think it doesn't present any surfaces that the ball can get stuck on during tilt penalty, but I may misremember
05:34:48 <zzo38> itidus21: On a computer I think it simply shouldn't nudge the table extremely hard, and therefore have no tilt penalty (in a real pinball, it might tilt if nudging harder)
05:34:58 <itidus21> having said this i suppose that not including a tilt option would be like castrating the game
05:36:10 <zzo38> Sgeo: Yes, that pinball game (and in fact most), don't have any surfaces that the ball can get stuck on. However, that pinball game tilts if you hold down a key for too long. If you push a nudge key for a very short time, there is no penalty. But it simply makes the ball continue to move with no scoring and nudging is disallowed during tilt
05:36:29 <zzo38> (Which is the thing I don't like and is the problem I mentioned)
05:36:37 -!- Nisstyre has quit (Max SendQ exceeded).
05:40:00 <zzo38> Most computer pinball games, if they have flippers they have tilt penalty and if flipperless have no tilt penalty for nudging. There are a few exceptions, such as Pokemon Pinball which is flippered but has no tilt penalty for nudging, and the original Nintendo Pinball in which you cannot nudge at all.
05:45:36 -!- MDude has changed nick to MSleep.
06:13:26 -!- aloril_ has quit (Ping timeout: 255 seconds).
06:21:52 <zzo38> I have thought about criteria of proper religion (I think I have been asked about it on this channel before and wasn't quite sure): * It must be philosophical. * Religious ideas and texts must be available freely in the public domain in some form. * No direct contradition to reality or apparent reality. * It is not an exact science. * No secret torture on its adherents.
06:23:20 <zzo38> Do you have any changes to report?
06:26:42 -!- kmc has joined.
06:28:32 <zzo38> Do these criteria seem OK to you, or do you think of the things slightly different than this should be better?
06:29:53 <Sgeo> Define "direct contradiction to reality"
06:33:16 <pikhq> Hmm. Have a Kindle now.
06:33:38 <pikhq> All I can think is: dammit e-ink monitors would be awesome if not for all the weaknesses of e-ink.
06:50:01 <zzo38> Sgeo: Well, I could give an example: Say your beliefs include that every Feb.29 a purple sky with green dots is visible throughout the world. Obviously it isn't. Another example would be to say that everyone born with Saturn in Pisces has blue eyes, and then you find counterexamples so that isn't correct either.
06:51:04 <Sgeo> Can unobvious contradictions with reality exist in what you term a proper religion?
06:51:15 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:52:46 <pikhq> zzo38: In short, "proper religion" must be an exercise in doing nothing.
06:53:38 <Sgeo> e.g. Suppose that Jesus never existed. Is Christianity no longer a proper religion, even if there's no counterevidence we found against his existence?
07:01:42 <zzo38> Sgeo: That can be considered a mythology and has no direct contradiction to today's existence so that wouldn't make it improper. Possibly my statements are not sufficiently qualified. But, that is how you do philosophy you argument about things like this.
07:02:32 <zzo38> What I meant it to mean, includes that mythologies never cause it to fail these tests.
07:04:00 <Sgeo> How about "The Earth is 6,000 years old"? Contradicts evidence we can find, but an individual may not realize this.
07:05:03 <zzo38> Sgeo: Well, that can be found in different sects I suppose. Some sects might disagree with you. In addition, although there is evidence for historical things, do you know about the philosophical idea that the universe was invented 5 minutes ago?
07:05:19 <Sgeo> Yes.
07:05:40 <zzo38> Philosophy is complicated and has many disagreements and agreements and so on.
07:06:09 <Sgeo> Going off of that, can "The sky is always green" be part of a proper religion? It can be argued that when we look at the sky, our eyes are wrong.
07:09:33 <zzo38> In that case, I would argue that "when we look at the sky, our eyes are wrong" is its actual belief instead.
07:10:52 <zzo38> However, note that this is a philosophical idea. Wrong? In what way? And do you define "the sky is always green" not refering to the green that is a color that you perceive with your eyes?
07:11:17 <zzo38> Obviously it would have to be the case, otherwise it is a direct contradiction to reality and therefore fails that criteria.
07:12:24 <zzo38> See? Metareligion, like any philosophy, is full of philosophical ideas to worry about.
07:14:23 -!- aloril has joined.
07:20:27 -!- Nisstyre has joined.
07:23:17 <kallisti> @tell elliott also, had you not recommended the target offset, I was already working out a similar algorithm that would have basically had a target offset of 0.
07:23:17 <lambdabot> Consider it noted.
07:23:59 <kallisti> pikhq: Chinese words consist of multiple characters right?
07:24:19 <kallisti> or well, they can, right?
07:24:39 <zzo38> Yes, they can, sometimes. I think.
07:25:37 -!- Nisstyre has quit (Ping timeout: 240 seconds).
07:26:41 <zzo38> But I don't know if it counts as a word
07:27:47 <kallisti> I'm just wondering what a "1-gram" is going to be in Chinese
07:38:01 <zzo38> That is difficult.
07:39:07 <zzo38> However, I can offer some suggestions for Japanese: Some small letters only come after certain other letters, and some words have kanji. Compound words are sometimes written combination kanji/kana or combination hiragana/katakana.
07:39:48 <kallisti> ah, okay, so this is the actual reason I didn't want to mess with Chinese. :P
07:40:02 <kallisti> ./words.pl --chinese 25
07:40:02 <kallisti> fo 换洗 船位 屡禁不止 痴情 con 硝 dea uz sel fig spher beni pre 累加 险地 轮机 轻 寝 獲 多種 史詩 圣上 res 辑
07:40:19 <kallisti> it took only a few seconds to read all of the data actually. I was surprised.
07:41:01 <kallisti> I don't really think it makes sense to randomly generate chinese-like "words"
07:41:24 <zzo38> kallisti: I think you are probably correct.
07:41:40 <kallisti> because each character is a unit of meaning.
07:42:05 <kallisti> what's the word. ideograph.
07:42:52 -!- Patashu has quit (Read error: Connection reset by peer).
07:43:24 <zzo38> Yes, it is ideograph
07:44:06 <pikhq> kallisti: A character corresponds to a morpheme, *typically*...
07:44:14 <pikhq> And, of course, a word is composed of one or more morphemes.
07:45:20 <kallisti> hm, should I leave latin alphabet stuff in this?
07:47:43 <kallisti> I feel that using 4-grams will basically result in a random chinese word /selector/
07:47:52 <kallisti> because few chinese words are over 4 characters wide.
07:49:04 <kallisti> "fo wash the ship's position repeated infatuation con nitrate dea uz sel fig spher beni cumulative risk to engineer pre-sleep light res Majesty by a variety of epic series
07:49:07 <kallisti> "
07:51:16 <kallisti> which is another interesting point: I should perhaps allow a variable gram count so that different languages can be broken up into different subsequence lengths.
07:52:17 <kallisti> hmmm yeah so this data contains some latin alphabet loan words
07:52:22 <kallisti> but the vast majority are chinese words, which are very small
07:52:52 <kallisti> so, my algorithm, which selects word lengths based on frequency of word length, is going to generate really small latin alphabet words.
07:53:13 <kallisti> because of the predominance of 2-3 character chinese script words.
07:53:27 <kallisti> THIS IS WHY I DON'T WANT TO DEAL WITH CHINESE.
07:53:47 <kallisti> `words --french 25
07:53:51 <HackEgo> exma specidado resse founeder vizza neraitiumpuisière brung quiterst fardeolo virong devoyranimu ceba auoit teine râledes ordiphypérin survable aptés lder ardyna bis bivolenivez erkedler alli déclatées
07:53:55 <pikhq> You'd probably have an easier time if you could somehow get a Pinyin data set.
07:54:33 <kallisti> well, I can filter out the latin script.
07:55:22 -!- Nisstyre has joined.
08:00:57 -!- Nisstyre has quit (Ping timeout: 240 seconds).
08:00:59 <kallisti> hi
08:01:00 <kallisti> bye
08:01:21 * kallisti can't wait to begin working on his BEST ACRONYM GENERATOR YET.
08:04:12 * kallisti using PATENTED STATISTICAL TECHNIQUES such as MULTIPLICATION and DIVISION.
08:07:34 -!- Nisstyre has joined.
08:14:31 <zzo38> I thought about indexed monads and indexed comonads. I can understand how state monad that can change type makes a indexed monad. I also realized, there is (,) monad and (->) comonad which depend on a monoid, but there can also be indexed monad and indexed comonad version of these that depend on a category instead.
08:14:49 <zzo38> In both cases, fmap remains the same.
08:15:02 <zzo38> as the non-indexed version.
08:16:13 <zzo38> For (,) indexed monad: returnI = (,) id; joinI (x, (y, z)) = (y . x, z);
08:16:32 <zzo38> For (->) indexed comonad: extractI = ($ id); duplicateI f x y = f (y . x);
08:16:44 <kallisti> > '\ETX'
08:16:44 <lambdabot> '\ETX'
08:16:49 <kallisti> > ['\ETX']
08:16:50 <lambdabot> "\ETX"
08:16:56 * Sgeo has a "fun" idea for a monad
08:16:58 <kallisti> > length "\ETX"
08:16:59 <lambdabot> 1
08:17:02 <Sgeo> Remind me to implement it tomorrow
08:17:16 <Sgeo> It's probably useless due to pervasive use of unsafePerformIO though
08:17:31 <Sgeo> (Not in my code .. in useful libraries that would be rejected by Safe)
08:17:50 <zzo38> What is your idea?
08:17:58 <Sgeo> Object-based capabilities
08:18:16 <zzo38> Give example?
08:18:22 <Sgeo> E
08:18:31 <Sgeo> (Ok, not a helpful example)
08:18:39 <Sgeo> makeCap :: a -> IO (Cap a)
08:19:09 <Sgeo> :t writeFile
08:19:09 <lambdabot> FilePath -> String -> IO ()
08:19:36 <Sgeo> writeFileCap :: FilePath -> Cap (String -> IO ())
08:19:42 <Sgeo> Erm, that's wrong
08:19:57 <Sgeo> writeFileCap :: FilePath -> IO (Cap (String -> IO ()))
08:20:50 <Sgeo> main = do
08:20:57 <zzo38> What exactly does Cap mean? Is it a functor?
08:21:04 <Sgeo> It's a monad. I think.
08:21:07 <Sgeo> So yes
08:21:17 <Sgeo> But what it represents is being allowed to do the action
08:21:50 <Sgeo> That is, things in the Cap monad need to be passed a Cap for an IO action in order to be able to do the IO action
08:22:42 <Sgeo> myFileCap <- writeFileCap "somefilesomesuckercanwriteto.txt"
08:23:08 <Sgeo> runCap (somethingThatWantsToWriteToAFile myFileCap)
08:23:23 <zzo38> The best way to understand if it is monad is to explain what join will mean.
08:24:23 <Sgeo> join means if you have a permission that allows you to get a permission that allows you to run an action, join will give you the permission that allows you to run the action.
08:24:24 <Sgeo> I think
08:25:31 <zzo38> O, OK. If you have permission to get permission for something, then you can have permission to do so. Is that what you mean?
08:25:40 <Sgeo> Yes
08:26:31 <Sgeo> At first, I thought that Cap and CapMonad (where Caps could be used) would be separate things, but now I don't think so.
08:26:37 <Sgeo> (Still not certain though)
08:27:09 <zzo38> I suppose that does make sense for join, but still I don't completely understand what it is going to do
08:27:21 <zzo38> (That is, what Cap is going to do, in general)
08:28:00 <Sgeo> That means you can have untrusted Caps, and have it run IO, but only IO that you say it can run by passing the needed Caps as arguments
08:28:56 <Sgeo> I'm still thinking through whether the meaning of Cap needs to be separated out per the original plan or not.
08:31:10 <Sgeo> (Note that what I stated here is not the separated version)
08:33:02 <Sgeo> The reason makeCap returns an IO action rather than the Cap directly is to prevent Caps from synthesizing Caps from default libraries
08:33:13 <zzo38> Sgeo: Yes I realized that.
08:33:59 <Sgeo> I don't think the meanings of Cap need to be separated. Using Caps is just saying "Given that I have permissions to do X, Y, and Z, this is a permission to do W"
08:34:01 <zzo38> Still, something could just return
08:34:11 <Sgeo> hmm?
08:34:45 <zzo38> Like, return (print "xyz") now gets a Cap (IO ()) I don't know what it is going to do, if anything
08:34:57 <Sgeo> ...ohh
08:35:19 <Sgeo> Hmm
08:35:29 * Sgeo will need to think this over a bit more, but this is embarrassing.
08:36:52 <zzo38> Instead, maybe you can use a permission table that includes the actions permitted
08:37:18 <Sgeo> That was one of my original thoughts, but I want to avoid it, I think. I want permissions to be first-class objects.
08:38:06 <kallisti> hmmm
08:38:19 <kallisti> did anyone else see green text?
08:38:44 <kallisti> I was pretty sure colors were not available.
08:38:50 <Sgeo> I did
08:38:57 <kallisti> > text ("!addpenis " ++ (join $ zipWith (\x y -> '\ETX':x ++ [y]) (cycle ["4","7","8","9","12", "2","13"]) "AWESOME\SI"))
08:38:58 <lambdabot> !addpenis 4A7W8E9S12O2M13E4
08:39:02 <kallisti> lol
08:39:07 <kallisti> nope
08:39:16 <kallisti> lambdabot doesn't permit it
08:40:24 -!- oerjan has joined.
08:40:26 <kallisti> oerjan: hi
08:40:44 <oerjan> 'morning
08:41:12 <kallisti> >implying I can now do awful things like imply things like this.
08:41:16 <kallisti> but I won't
08:41:42 <zzo38> I only see the control codes, CTRL+C and 3hmmm
08:41:44 <Sgeo> oerjan, I think I may be an idiot.
08:42:33 <Sgeo> zzo38 pointed out that return breaks my pretty security monad.
08:43:02 <zzo38> My program displays all IRC long parameters in blue. There is an option to interpret some control codes and affect color (for example, CTRL+A makes the text red)
08:43:17 <zzo38> Sgeo: Everyone is sometimes idiot, I think
08:43:40 <oerjan> Sgeo: hey don't start believing elliott here
08:43:43 <oerjan> <fizzie> Aw, oerjan just left; I was going to ask whether he's got his bjølvstøvers warmed up, and mørkbilleken in the oven.
08:44:24 <oerjan> bjølvstøver sounds like something you put on your feet, which naturally needs some warming up in this weather
08:44:47 <oerjan> mørkbilleken means "the dark-car game"
08:45:20 <Sgeo> Maybe if the Cap includes an extra bit. return makes it be 0. makeCap caps have 1
08:45:25 <Sgeo> (Well, False and True)
08:45:30 <Sgeo> But then I violate the monad laws.
08:46:21 <Sgeo> Maybe I should go back to separation
08:46:24 <zzo38> Sgeo: Yes I thought of that too and then realized that too
08:46:34 <Sgeo> Cap vs CapMonad
08:47:02 <Sgeo> Need a better name than CapMonad though
08:47:15 <Sgeo> And still not certain if that fixes anything
08:47:25 <Sgeo> Well, Cap would no longer be a monad, so that helps
08:47:52 <Sgeo> But I think it's conceptually uglier.
08:48:27 <Sgeo> If I have permission to do X, Y, and Z, I can't have permission to do X, see the result, possibly do Y, see the result, possibly do Z, see the result, and do something based on that?
08:48:34 <zzo38> Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ())
08:48:50 <Sgeo> zzo38, ooh, good idea, thanks!
08:51:26 <Sgeo> I see similarities between that and Cap vs CapMonad, but the SecurityToken idea implies usage patterns that make the ugliness go away.
08:51:55 -!- salisbury has joined.
08:51:59 <kallisti> functions are good capabilities.
08:53:05 * Sgeo shortens SecurityToken to Token
08:54:52 <Sgeo> I think Tokens need to be a monoid
08:55:16 <Sgeo> And there needs to be a function that combines the Tokens used during a Cap, so that the Cap can return a new thing with a valid Token
08:55:32 <zzo38> Or actually, like this: Cap (String -> IOToken ()) for the capability to print a string, so makeCap :: IO x -> IO (Cap (IOToken x)); runCap :: Cap (IOToken x) -> IO x;
08:56:43 <Sgeo> How do you define the Cap (String -> IOToken ())?
08:57:20 <zzo38> Sgeo: O, I didn't think of that
08:57:22 <zzo38> Sorry
08:58:11 <zzo38> callIOToken :: IOToken x -> Cap x;
08:58:33 <Sgeo> usedTokens :: Cap (Token <crud>)
08:58:46 <Sgeo> Don't see a way to combine Tokens of different types
08:59:30 <Sgeo> Hmm hmm hmm. Maybe I kind of do, actually.
09:00:37 <Sgeo> Have the combining operation return a tuple of the types involved, or something, so that the Token is around a tuple of the types. But then the Token surrounds a non-IO action that merely contains IO actions.
09:00:58 <Sgeo> But I think that may just be a type thing.
09:01:04 * Sgeo needs to think about it more.
09:01:52 <zzo38> returnToken :: x -> Cap (Token x);
09:03:24 <zzo38> makeCapFunc :: (x -> IO y) -> IO (Cap (x -> IOToken y));
09:04:36 <Sgeo> How would that work out for functions with more than one argument? Just uncurry them until they fit the mold?
09:04:49 <zzo38> Sgeo: Yes, that is what I was thinking of
09:06:45 <oerjan> <const> <elliott> Oh, you're that variable person. --> is that a bad thing? <-- well you seem a little shifty.
09:06:47 <zzo38> Here is another different idea, not using Token: newtype Cap x = Cap (IO x); makeCap :: IO x -> IO (Cap x); makeCap = return . Cap; Or... maybe this has some problems too...??? (Of course the constructor Cap needs to be hidden from other modules)
09:07:24 <kallisti> oerjan: ......
09:07:58 <Sgeo> I was going to ask if the type was legal, but I just misread newtype as type
09:07:59 <oerjan> why thank you.
09:08:01 -!- aloril has quit (Ping timeout: 252 seconds).
09:08:03 -!- Ngevd has joined.
09:08:18 <zzo38> Sgeo: Does this seem to work?
09:08:24 <Ngevd> Hello!W
09:08:33 <oerjan> orld.
09:08:39 <Sgeo> zzo38, I need to think about it
09:09:29 <Sgeo> I still don't see how you'd, say, get putStrLn into that.
09:10:25 -!- aloril has joined.
09:11:02 <kallisti> Sgeo: you'd need some kind of Cap x -> IO x function.
09:12:19 <Sgeo> kallisti, is that related to my current dilemma?
09:12:25 * Sgeo avoided saying something very very snarky
09:13:10 <zzo38> runCap (Cap x) = x;
09:13:24 <zzo38> It would have to be defined like that to avoid being a field of a record
09:13:52 <Sgeo> This is assuming that security tokens aren't mixed in somewhere
09:16:06 <zzo38> Something that needs putStrLn capability could be passed (String -> Cap ()) as an argument I suppose
09:16:47 <Sgeo> Oh, so your current Cap is basically taking the place of IOToken?
09:17:14 <zzo38> Sgeo: Yes I suppose that is my new idea. I kept changing it just like you have done so.
09:17:34 <Sgeo> Hmm, actually, I think I like it.
09:17:36 <kallisti> Sgeo: yes, runCap would allow you to putStrLn and then run it later.
09:17:49 <kallisti> Sgeo: which was your current dilemma.
09:18:40 <Sgeo> ...no, zzo38's pointing out that I can pass in String -> Cap () to someplace that needs it instead of expecting a function wrapped in a Cap is what solves the dilemma
09:18:42 <zzo38> Could you get (String -> Cap ()) from makeCap?
09:18:56 <Sgeo> Oh, hmm
09:19:31 <Sgeo> putStrLnCap str = ...
09:19:33 <Sgeo> no
09:19:47 <Sgeo> (Erm, no, as in, my half-an-example is bad, not as in a no to your question)
09:20:10 <kallisti> f x = makeCap (putStrLn x)
09:20:23 <kallisti> ?
09:20:31 <kallisti> aka
09:20:33 <zzo38> kallisti: I don't think so.
09:20:36 <kallisti> oh
09:20:52 <kallisti> right
09:20:54 <zzo38> makeTypedCap :: t (IO x) -> IO (t (Cap x)); if you define a type wrapper what you need
09:21:14 <zzo38> That is, if t is some functor
09:21:21 <kallisti> I don't really understand the purpose of this thing so I'm probably not helping much.
09:21:50 <zzo38> So it would have to be: makeTypedCap :: Functor f => f (IO x) -> IO (f (Cap x));
09:22:19 <Sgeo> Not sure I want to have to define functors... but aren't functions functors?
09:22:25 <kallisti> yes
09:22:26 <Sgeo> I don't know if it helps though
09:22:36 <kallisti> fmap is composition on functions
09:22:54 <Sgeo> What does the functor instance look like? The first line, the instance ... where
09:23:05 <kallisti> fmap = (.)
09:23:13 <zzo38> instance Functor ((->) x) where { fmap = (.); }
09:23:34 <Sgeo> zzo38, ty
09:23:52 <zzo38> fmap = (.); return = const; join f x = f x x;
09:24:18 <Sgeo> zzo38, I think your makeTypedCap is exactly what is needed.
09:24:42 <zzo38> OK
09:25:10 <Sgeo> makeTypedCap is a bad name though, I think, although I don't think it generalized to wrapping up a plain IO ()
09:25:12 <zzo38> Although it might to change to a better name
09:25:24 <Sgeo> So it can't be makeCap
09:25:33 <Sgeo> makeValCap and makeFunCap?
09:25:46 <kallisti> mapCap :)
09:25:46 <zzo38> Sgeo: That could be it, I suppose.
09:26:07 <Sgeo> Wait
09:26:19 <Sgeo> Does makeFunCap work for 2 or more argument functions that return an IO?
09:26:32 <Sgeo> Or will they have to be uncurried
09:26:47 <kallisti> it shouldn't matter, I'd think.
09:27:17 <kallisti> but, no it's only for one argument functions.
09:27:49 <kallisti> aka functions
09:28:20 <zzo38> I think then if you use Identity functor you could define makeValCap in terms of makeFunCap: makeValCap = fmap extract . makeFunCap . pure; You could also make the various different number of arguments using makeFunCap by doing the currying and uncurrying and stuff like that
09:29:05 <Sgeo> What if we went back to the SecurityToken idea, but it was Cap (SecurityToken, a)
09:29:32 <zzo38> I don't know; I am going to sleep now
09:29:33 -!- zzo38 has quit (Remote host closed the connection).
09:29:33 <oerjan> <kallisti> I was pretty sure colors were not available. <-- they convinced fizzie to remove that channel flag
09:29:40 <kallisti> oerjan: fools
09:29:59 <Sgeo> makeCap :: a -> IO (SecurityToken, a)
09:30:07 <Sgeo> ops
09:30:14 <Sgeo> makeCap :: a -> IO (Cap (SecurityToken, a))
09:30:45 <kallisti> could it be possible to use Applicative to sate your desire for multi-argument functions?
09:31:55 <Sgeo> SecurityTokens can't be synthesized outside of IO, but, hmm. What if something, given one Cap, uses a security token from that Cap to synthesize a fradulent different Cap
09:32:47 <kallisti> what if someone uses unsafePerformIO and bypasses everything?
09:32:58 <Sgeo> There's GHC stuff against that, I think
09:33:18 <Sgeo> But then that also means can't use modules that use unsafePerformIO for acceptable things, I think
09:33:22 <Sgeo> Need to look into that more.
09:33:37 <Sgeo> Untrusted, Trustworthy, etc.
09:34:30 <kallisti> so don't you basically want a way to pass an IO value/function to a function, have it compose and apply that value/function with other things, and then return the result in the same wrapping?
09:35:02 <Sgeo> I guess, yes
09:35:06 <kallisti> where it can be run in IO from another function
09:35:38 <kallisti> I think Applicative might be useful here.
09:36:32 <kallisti> or something similar.
09:37:11 <oerjan> Sgeo: you can use modules with unsafePerformIO, but you must declare them trustable or what it was called
09:37:30 <Sgeo> trustworthy?
09:37:38 <oerjan> yeah probably
09:37:56 <kallisti> :t liftIO
09:37:57 <lambdabot> forall a (m :: * -> *). (MonadIO m) => IO a -> m a
09:38:57 <kallisti> Sgeo: what's the purpose of the security token?
09:39:35 <Sgeo> kallisti, if Cap is a monad, I don't want return to be a nice convenient way of synthesizing arbitrary Caps
09:40:23 <monqy> what
09:40:27 <kallisti> I don't see a particular reason to limit it to IO, either.
09:41:19 <Sgeo> Cap will not be a monad transformer, nor a MonadIO, for reasons that should be obvious.
09:41:25 <kallisti> yes
09:41:57 <kallisti> perhaps makeCap :: Token -> a -> Cap a
09:42:11 <kallisti> runCap :: Token -> Cap a -> IO a
09:42:31 <kallisti> with no way to access the Token that was used to create a Cap
09:43:02 <kallisti> or...
09:43:04 <kallisti> no
09:43:09 <kallisti> runCap :: Token -> Cap a -> a
09:44:24 <Sgeo> kallisti, so Cap is no longer a monad?
09:44:31 <kallisti> probably not.
09:44:38 <kallisti> but it could easily be Applicative.
09:44:40 * Sgeo wants at least using a Cap to be a monad
09:44:46 <Sgeo> kallisti, uh, pure.
09:45:45 <kallisti> ah, yes.
09:45:53 <kallisti> so you may want two different types.
09:46:10 <Sgeo> Which is, imo, somewhat ugly
09:46:26 <kallisti> either that or simply give it an <*> without a pure.
09:46:39 <kallisti> well, not really an <*> exactly
09:46:57 <kallisti> oh
09:47:43 <kallisti> @hoogle t (a -> b) -> a -> t b
09:47:43 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
09:47:43 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
09:47:43 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
09:47:53 <kallisti> appCap :: Cap (a -> b) -> a -> Cap b
09:47:56 <kallisti> is what I had in mind.
09:48:47 <Sgeo> I still want a monad.
09:49:13 <kallisti> otherwise you could have some kind of BlankToken that's used with return, so that you can still use return.
09:49:31 * Sgeo hits kallisti with a copy of the monad laws
09:49:42 <kallisti> okay...
09:49:49 <kallisti> so you want this thing, that's not a monad
09:49:52 <kallisti> to be a monad. have fun.
09:50:17 <Sgeo> I can live with two separate types, one a monad and one not, I think
09:50:28 -!- ais523 has joined.
09:51:50 <kallisti> Sgeo: hmmmm, how about a rank-2 type?
09:51:58 <kallisti> like State.
09:52:05 <ais523> $ find /var/lock /var/run /dev/shm /tmp -maxdepth 0 '-(' -fstype shmfs -or -fstype shm -or -fstype tmpfs -or -fstype tmp '-)' -and -writable
09:52:13 <Sgeo> I... are you thinking of ST?
09:52:30 <ais523> pity that seems to be GNU-specific
09:52:34 <kallisti> oh, yes.
09:52:38 <ais523> anyone know a portable way to do that? (I'm guessing no)
09:53:17 <Sgeo> kallisti, if I had a clue how to use them, that would probably help.
09:53:50 <Sgeo> I should sleep
09:54:48 <kallisti> I should have an internet connection that doesn't suck.
09:55:36 <ais523> Sgeo: hmm, I woke up pretty recently
09:58:08 <kallisti> wtf internet...
10:07:37 -!- pikhq has quit (Ping timeout: 240 seconds).
10:07:48 -!- pikhq has joined.
10:33:21 -!- GreaseMonkey has quit (Quit: The Other Game).
10:42:28 <oerjan> xkcd :)
10:57:21 <Sgeo> I have decided to use zzo38's idea of replacing IO with Cap, and am planning on using printf-style varargs to make a single makeCap
10:57:26 <Sgeo> And now I am going to sleep.
11:00:29 <Sgeo> And I like the image of forkCap that is currently running through my head.
11:01:26 <Sgeo> I don't think there's a safe way to do it under my old idea, but I may be mistaken.
11:01:37 -!- Ngevd has quit (Ping timeout: 240 seconds).
11:03:31 -!- aloril has quit (Ping timeout: 252 seconds).
11:06:32 -!- aloril has joined.
11:10:38 <Sgeo> Eh?
11:29:25 * Sgeo likes how Haskell is probably the only language not designed from the start for object-capabilities where it actually makes sense to implement them as a library
11:32:30 <Sgeo> Can't sleep, going to work
11:35:57 <Sgeo> MultiParamTypeClasses without FunctionalDependencies? Is this madness?
11:42:27 * Sgeo pauses to rethink
11:42:53 <Sgeo> (a -> IO b) (c -> (a -> IO b)
11:43:34 <monqy> what
11:43:52 <copumpkin> sometimes MPTCs make sense without fundeps
11:43:58 <copumpkin> it depends on your use case
11:45:45 <Sgeo> Or I could decide that I might have been mistaken in thinking that MPTCs helped me
11:49:28 <Sgeo> Wait, no
11:49:29 <Sgeo> GRR
11:50:24 -!- derdon has joined.
11:51:04 <kallisti> > fix error
11:51:05 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:51:44 <Sgeo> :t fix error
11:51:45 <lambdabot> [Char]
11:52:51 <ais523> :t error
11:52:52 <lambdabot> forall a. [Char] -> a
11:53:16 <kallisti> heh
11:53:23 <kallisti> therefore _|_ = [Char]
11:53:24 <ais523> now I'm trying to figure out how that fix error works
11:53:30 <ais523> > error "test" + 4
11:53:31 <lambdabot> *Exception: test
11:53:36 <ais523> > error (error "test")
11:53:37 <lambdabot> *Exception: test
11:53:38 <kallisti> fix works by being a logical fallacy.
11:53:48 <kallisti> ...or something.
11:54:17 <ais523> > error (fix id)
11:54:20 <lambdabot> mueval-core: Time limit exceeded
11:54:31 <ais523> hmm, I don't get why fix error isn't an infinite loop
11:54:54 <ais523> > error (fix error)
11:54:55 <kallisti> lazy evaluation? :P
11:54:55 <lambdabot> *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
11:55:05 <ais523> OK, error (fix error) is not the same as (fix error)
11:55:11 <ais523> this seems to defy the definition of fix
11:55:25 <kallisti> how is it different?
11:55:30 <ais523> > fix error
11:55:31 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:55:32 <ais523> > error (fix error)
11:55:33 <lambdabot> *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
11:55:40 <kallisti> ...okay
11:55:44 <kallisti> ah I see.
11:55:46 <ais523> error (fix error) is _|_; fix error is a string
11:55:54 <kallisti> oh yes
11:56:00 <kallisti> :t fix
11:56:01 <lambdabot> forall a. (a -> a) -> a
11:56:04 <kallisti> :t error
11:56:07 <kallisti> therefore a = [Char]
11:56:19 <kallisti> so fix error returns a string. why? I don't know.
11:56:26 <kallisti> er well
11:56:27 <kallisti> I know why
11:56:29 <kallisti> but not how
11:56:32 <kallisti> it is implemented.
11:56:32 <ais523> fix error obviously has a type that returns a string
11:56:40 <ais523> I just don't get why it actually /does/ return a string, rather than erroring
11:56:53 <kallisti> > "hello" ++ fix error
11:56:54 <lambdabot> "hello*Exception: *Exception: *Exception: *Exception: *Exception: *Exceptio...
11:57:04 <ais523> oh, aha
11:57:05 <ais523> that explains it
11:57:14 <kallisti> it does?
11:57:17 <kallisti> @src error
11:57:17 <lambdabot> error s = throw (ErrorCall s)
11:57:19 <ais523> it's calling show for a string, which prints a " before it even tries to work out what the string is
11:57:33 <ais523> > repeat "*Exception: "
11:57:33 <lambdabot> ["*Exception: ","*Exception: ","*Exception: ","*Exception: ","*Exception: "...
11:57:36 <ais523> err
11:57:42 <monqy> > "hello " ++ undefined
11:57:44 <lambdabot> "hello *Exception: Prelude.undefined
11:57:44 <ais523> > concat (repeat "*Exception: ")
11:57:45 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:57:55 <ais523> OK, so that's a string consisting of copies of the word "*Exception: "
11:57:59 <ais523> > fix error
11:58:12 <ais523> and that isn't; that's having " printed by show for strings, and then an actual error happens
11:58:26 <ais523> > (2::Expr) + fix error
11:58:26 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:58:27 <lambdabot> against inferred ...
11:58:36 <kallisti> oh, well yes.oh, yes it doesn't actually return the string.
11:58:38 <ais523> > x + fix error
11:58:39 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:58:39 <lambdabot> against inferred ...
11:58:49 <ais523> oh, right, fix error returns a string
11:58:52 <ais523> > x + error (fix error)
11:58:53 <lambdabot> x + *Exception: *Exception: *Exception: *Exception: *Exception: *Exception:...
11:58:55 <copumpkin> fix error is a string
11:58:59 <ais523> copumpkin: indeed
11:59:02 <ais523> kallisti: does /that/ explain it?
11:59:03 * Sgeo decides that he may in fact need functional dependencies
11:59:10 <copumpkin> > take 5 $ fix error
11:59:11 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:59:20 <copumpkin> but isn't actually a string
11:59:22 <ais523> the point is that due to laziness, it's printing the " or the x + before it even starts evaluating the error
11:59:28 <kallisti> yes...
11:59:39 <kallisti> I figured that out a while ago
11:59:40 <kallisti> and then forgot
11:59:41 <kallisti> about it.
12:02:22 -!- monqy has quit (Quit: hello).
12:04:14 <kallisti> :t ErrorCall
12:04:14 <lambdabot> Not in scope: data constructor `ErrorCall'
12:06:02 <kallisti> I wonder how many programmers don't like Haskell because it doesn't have "good exception handling"
12:06:04 <Sgeo> If what I'm writing compiles, I'll mindboggle that I actually figured it out
12:07:11 <kallisti> :t catch
12:07:11 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
12:07:39 <kallisti> > catch (error "bad") (\e -> fix error)
12:07:40 <lambdabot> Couldn't match expected type `GHC.Types.IO a'
12:07:40 <lambdabot> against inferred type...
12:07:51 <kallisti> > catch (error "bad") (\e -> return $ fix error)
12:07:52 <lambdabot> <IO [Char]>
12:07:58 <kallisti> problem solved.
12:10:13 <Sgeo> I feel uneasy that one of my key components looks like (SomeClass a b) => a -> b
12:11:01 <kallisti> roll around, you'll be alright.
12:11:30 <Sgeo> I am obviously horrible at naming arguments
12:11:39 <Sgeo> unsafeMakeFunCap a = \a' -> unsafeMakeFunCap (a a')
12:11:48 <Sgeo> I have two comments above that explaining the meaning of a and a'
12:13:35 * Sgeo changes
12:14:26 <oerjan> <ais523> OK, error (fix error) is not the same as (fix error) <-- the latter is String, while the former is an arbitrary type, probably defaulting to ()
12:14:35 <kallisti> short variable names are pretty common for very generic Haskell code.
12:14:52 <ais523> oerjan: yep, I figured it out in the end
12:14:57 <Sgeo> kallisti, when the types of the arguments are hard to read for someone new to MPTC and Fundeps...
12:15:12 <ais523> btw, this sort of thing is why I fear Anarchy might be uncomputable without restrictions
12:16:40 <Sgeo> Needed to add FlexibleInstances, and now it works
12:16:52 <Sgeo> But I don't quite understand why I need FlexibleInstances
12:16:59 <Sgeo> So I feel like I'm really losing
12:18:23 <oerjan> <kallisti> I wonder how many programmers don't like Haskell because it doesn't have "good exception handling" <-- it doesn't?
12:18:51 <Sgeo> MakeFunCapClass
12:18:56 <Sgeo> What should I call this instead?
12:19:42 <kallisti> oerjan: notice the scare quotes. A programming who is familiar with only object-oriented languages might, after a few weeks of haskell, conclude that because try/catch exception handling is only possible from IO, that Haskell has poor exception handling.
12:19:49 <kallisti> s/programming/programmer/
12:20:28 <ais523> kallisti: well, it depends on what you use exceptions /for/
12:21:19 <oerjan> kallisti: i browsed that ResourceT blog post from reddit and noticed that their ST instances are inferior for precisely this reason.
12:21:54 <oerjan> which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them.
12:22:08 <kallisti> I'd say that some OO languages actually have poor exception handling. Python, for example, literally throws an exception for just about any kind of exceptional condition. So simple things like hash table lookups can require a clunky try-except statement.
12:22:08 <Sgeo> *Capabilties> makeCap (putStrLn "Hi") >>= \c -> runCap c
12:22:08 <Sgeo> Hi
12:22:22 <kallisti> oerjan: yes I think ST could be improved on in a number of ways.
12:22:35 <Sgeo> Just realized, I still need to make Cap a monad
12:22:50 <kallisti> actually I was thinking it would be nice if you could somehow pass ST code a capability that allows it to execute IO actions, but only the ones you give it.
12:22:54 <oerjan> i guess the problem is that you cannot guarantee that exceptions respect the ST boundary - either way.
12:24:22 <Sgeo> Wait, my instances make no sense
12:24:26 <kallisti> oerjan: well, couldn't you catch the exceptions in runST and then error there? or is that what would happen anyway?
12:25:14 <kallisti> basically at a runST convert the ST exceptions into exceptions that can be handled from IO.
12:25:54 <kallisti> :t throw
12:25:55 <lambdabot> Not in scope: `throw'
12:26:02 <kallisti> @hoogle throw
12:26:02 <lambdabot> Control.Exception.Base throw :: Exception e => e -> a
12:26:03 <lambdabot> Control.Exception throw :: Exception e => e -> a
12:26:03 <lambdabot> Control.OldException throw :: Exception e => e -> a
12:26:27 <kallisti> oerjan: or I guess I should ask: is there any reason exceptions need to respect the ST boundary?
12:26:40 <oerjan> kallisti: the problem is that laziness means exceptions might not be actually _evaluated_ until after the runST has finished. although ordinary catch in IO has a little of the same problem.
12:26:51 <kallisti> ah, indeed.
12:27:41 <kallisti> does this end up being a huge problem? I could see it being a problem in IO itsef (or unsafe code), where you could execute side effects before the exception is evaluated.
12:27:49 <kallisti> but that's a problem of IO in general.
12:27:59 <oerjan> the difference is that it's accepted in IO because the total result is not required to be pure.
12:29:48 <kallisti> oerjan: still there's no way to see a tangible effect from pure code until it evaluates back to IO anyway, right?
12:30:16 <oerjan> kallisti: oh btw unsafeIOToST exists iirc
12:30:21 <kallisti> yes
12:30:30 <kallisti> but that's... unsafe.
12:30:45 <kallisti> but a capability system could possibly be implemented with that.
12:31:26 <oerjan> that was the idea
12:31:38 <kallisti> ah
12:32:06 <Sgeo> http://hpaste.org/55731 my code as it currently exists
12:32:24 <oerjan> of course if you delve into ghc internals, ST and IO have isomorphic implementations once you remove all the newtype wrapping
12:33:06 <oerjan> they just use different ways of ensuring users can never fake a useful s state parameter
12:33:23 <oerjan> @src IO
12:33:23 <lambdabot> Source not found. It can only be attributed to human error.
12:33:37 <kallisti> so yeah you just hide the constructor for capabilities, wrap construction of a capability in the IO monad so that they can't be constructed elsewhere, somehow block unsafeIOToST from being imported/used, and then have a function that uses unsafeIOToST to implement executing IO capabilities in ST.
12:33:41 * oerjan swats lambdabot for removing @src'es that used to work
12:33:51 <oerjan> *+ -----###
12:34:10 <Sgeo> kallisti, wait, where did ST come from?
12:34:28 <kallisti> Sgeo: I was discussing allowing IO capabilities to be passed to ST.
12:34:34 <kallisti> so that you can control what kinds of side-effects can occur.
12:34:39 <Sgeo> Ah
12:35:03 <oerjan> kallisti: it would probably be an idea to newtype-wrap that ST version, too
12:35:07 <kallisti> not related to what you're doing, though inspired it.
12:35:35 <kallisti> oerjan: hmmm, but then you have to wrap everything that ST already has implemented for it.
12:35:41 <oerjan> oh right
12:35:53 <kallisti> but... you might have to do that.
12:36:01 <kallisti> because runST is /not/ what you want.
12:36:06 <kallisti> you want ST a -> IO a
12:36:19 <kallisti> er
12:36:21 <oerjan> well in that case, why not just wrap IO
12:36:22 <Sgeo> *Capabilties> makeCap (putStrLn) >>= \c -> runCap (c "Hi")
12:36:22 <Sgeo> Hi
12:36:23 <kallisti> not ST a
12:36:29 <kallisti> ST s a or whatever
12:36:37 <kallisti> oerjan: oh, yes...
12:37:31 <kallisti> Sgeo: is that what you're doing basically?
12:37:37 <oerjan> i assume wrapping IO into your restricted type is a main intended method of using the Safe extension.
12:37:57 <Sgeo> kallisti, well, my Cap is not connected to ST in any way, it's its own monad, but yeah, I guess
12:38:17 <kallisti> is it basically a wrapper over IO? Because that's the conclusion oerjan came to.
12:38:27 <Sgeo> Yeah
12:38:33 <kallisti> EUREKA!
12:38:35 <kallisti> :)
12:38:47 <Sgeo> String -> IO () becomes String -> Cap ()
12:39:05 <oerjan> i'm careful with my eurekas, the one time i tried to use one my proof had a stupid error.
12:39:36 <Sgeo> Anyways, what's undecidable about my instances?
12:39:38 <kallisti> Sgeo: but uh... where is the security.
12:39:54 <kallisti> anybody can use makeCap
12:40:08 <Sgeo> kallisti, they need to be in the IO monad to use makeCap
12:40:14 <kallisti> THIS IS WHY YOU NEED MAKECAP TO RETURN A IO(String -> -- oh okay
12:40:23 <kallisti> Sgeo: that's not what your above code seemed to suggest.
12:40:44 <kallisti> oh okay
12:40:47 <kallisti> I misread it.
12:40:48 <Sgeo> The result of makeCap is wrapped in an IO
12:40:52 <kallisti> right.
12:42:58 <Sgeo> If I hide MakeFunCapClass, are my functions still usable? Can correct type signatures still be written?
12:43:59 <oerjan> <Sgeo> Anyways, what's undecidable about my instances? <-- it means your instance doesn't satisfy ghc's basic condition to ensure halting, which is rather simplistic and mostly based on prerequisites being smaller than conclusions. what instance is it complaining about?
12:44:44 <Sgeo> Illegal instance declaration for `MakeFunCapClass
12:44:44 <Sgeo> (c -> a) (c -> b)'
12:44:44 <Sgeo> (the Coverage Condition fails for one of the functional dependencies;
12:44:44 <Sgeo> Use -XUndecidableInstances to permit this)
12:44:54 <kallisti> Sgeo: WHEN IN DOUBT, USE UNDECIDABLEINSTANCES HAHAHAHAHA
12:45:56 <oerjan> Sgeo: hm ok make that simplistic but incomprehensible ;P
12:46:12 <oerjan> (i'm sure the coverage condition is written up somewhere)
12:49:26 <oerjan> Sgeo: perhaps it's basically that b is not guaranteed to be smaller than c -> a, and a is not guaranteed to be smaller than c -> b.
12:51:34 <kallisti> anyone here follow yogscast?
12:51:36 <oerjan> and so ghc is not smart enough to prove that looking this up will always halt.
12:51:58 <kallisti> psh, ghc lives in fear.
12:53:02 <oerjan> kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that.
12:53:52 <kallisti> psh, ghc should have no fear.
12:54:26 <kallisti> it should think of compile-time as just another runtime.
12:54:34 <oerjan> you can turn the fear off with -XUndecidableInstances -XOverlappingInstances -XIncoherentInstances -XUnspeakablyEvilInstances
12:57:34 <Sgeo> I need sleep now
12:57:54 <oerjan> slep is for the week
12:58:48 <Sgeo> A fun test: Make a capability for makeCap
12:59:16 <Sgeo> Proceed to wreck havoc
12:59:17 * oerjan recalls the VMS setpriv privilege
13:01:11 <Sgeo> I do wish it was easier to make forkCap though
13:01:18 <Sgeo> I mean, I know how to do it I think
13:01:20 <Sgeo> But still
13:01:47 <oerjan> deathCap
13:01:56 <quintopia> for cutie
13:02:21 <Sgeo> Let's do the Qt 4 dance!
13:03:38 * oerjan wonders if there was a Qt 3.14
13:04:53 -!- kallisti has quit (Ping timeout: 276 seconds).
13:06:27 * Sgeo feels like an utter derp right now
13:07:07 <Sgeo> Is there an IdentityT monad by any chance?
13:07:19 <Sgeo> No. No more coding. Sleep time
13:08:38 <oerjan> Sgeo: pretty obviously possible
13:08:46 <oerjan> @hoogle IdentityT
13:08:47 <lambdabot> Control.Monad.Trans.Identity IdentityT :: m a -> IdentityT m a
13:08:47 <lambdabot> Control.Monad.Trans.Identity newtype IdentityT m a
13:08:47 <lambdabot> Control.Monad.Trans.Identity mapIdentityT :: (m a -> n b) -> IdentityT m a -> IdentityT n b
13:09:04 <Sgeo> oerjan, I asked because I'm way too tired to figure out how to write bind for a trivial newtype
13:09:13 <Sgeo> I think this means I'm an idiot.
13:09:14 <Sgeo> Night.,
13:09:29 <Sgeo> (Or at least, too tired to think straight right now)
13:09:32 <Sgeo> Night
13:10:40 <oerjan> @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence.
13:10:40 <lambdabot> Consider it noted.
13:13:46 -!- Ngevd has joined.
13:16:19 -!- kallisti has joined.
13:16:19 -!- kallisti has quit (Changing host).
13:16:19 -!- kallisti has joined.
13:18:49 <Ngevd> Hello!
13:19:08 <kallisti> hi
13:19:13 <Ngevd> @ping
13:19:13 <lambdabot> pong
13:19:29 <oerjan> god ettermiddag
13:22:06 <kallisti> ...I can't watch yogscast play magicka.
13:22:09 <kallisti> they're so
13:22:10 <kallisti> bad
13:23:33 <fizzie> Ottermidday.
13:24:28 <kallisti> OH YES THEY FIGURED OUT HOW TO MAKE WALLS, GOOD JOB.
13:24:55 <kallisti> that would be good against the evil yeti that picks you up and kills you instantly.
13:26:00 <kallisti> they keep using wow-like terms such as "tank" and "kite"
13:26:03 <kallisti> THESE DON'T APPLY IN THIS GAME
13:26:07 <kallisti> aaaaah
13:26:11 <kallisti> must. stop. watching
13:26:12 * kallisti stops.
13:26:50 <Sgeo> makeCap makeCap types
13:26:50 <lambdabot> Sgeo: You have 1 new message. '/msg lambdabot @messages' to read it.
13:28:47 <kallisti> also if you set yourself on fire the yetis won't pick you up...
13:29:05 <kallisti> obviously you should research every aspect of a super serious game like magicka. :P
13:30:40 * Sgeo renames the class IOtoCap
13:31:17 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:31:36 <Sgeo> I should put this on github or something, probably
13:33:30 <Sgeo> Although I'm worried that "IOtoCap" may make someone think that all instances of IO in the signature are converted, which is not [currently? can this be fixed] the case.
13:33:48 <Sgeo> forkCap = makeCap forkIO -- security hole
13:35:52 <Sgeo> Maybe running makeCap on all the arguments automatically?
13:36:33 <Sgeo> Or unsafeMakeFunCap, anyway
13:40:37 <kallisti> Sgeo: how is giving someone the capability to make IO threads a security hole when you have to give them the capability to do that?
13:40:56 <Sgeo> Is it possible to detect, using typeclasses, whether or not a type has the form IO a? Perhaps with something like OverlappingInstances?
13:41:26 <Sgeo> kallisti, if I give them makeCap forkIO as a capability, they can freely run any IO action of their choosing in a thread.
13:41:44 <kallisti> ...okay. so don't do that.
13:41:53 <Sgeo> If, instead, I gave them something of the type Cap () -> Cap ThreadId, which is what is presumably intended, there is no hole.
13:42:46 <Sgeo> The reason I like the current model is because it's possible to make Cap () -> Cap ThreadId, but sadly it's not as easy as makeCap forkIO
13:43:06 <kallisti> :t forkIO
13:43:07 <lambdabot> Not in scope: `forkIO'
13:43:10 <kallisti> @hoogle forkIO
13:43:10 <lambdabot> Control.Concurrent forkIO :: IO () -> IO ThreadId
13:43:11 <lambdabot> GHC.Conc.Sync forkIO :: IO () -> IO ThreadId
13:43:11 <lambdabot> GHC.Conc forkIO :: IO () -> IO ThreadId
13:43:15 <kallisti> ah it is ()
13:43:18 <kallisti> I thought it was a
13:45:44 <Sgeo> I think I can make a safer makeCap, assuming that OverlappingInstances works the way I assume it does
13:46:30 <Sgeo> ...if I do that, there's no way to do makeCap makeCap
13:47:05 <Sgeo> Is makeCap id a hole?
13:47:41 <Sgeo> I think it is
13:48:04 <Sgeo> (Note that I'm using hole for capabilities that would, if passed in to a Cap, would allow the Cap to do arbitrary IO
13:53:27 <Sgeo> Hmm
13:53:44 <Sgeo> UndecidableInstances. I wonder what makeCap printf is
13:54:34 <kallisti> I think it would be nicer if you could somehow make an Applicable.
13:56:24 <Sgeo> kallisti, Cap is a monad, therefore it is an Applicable
13:56:44 <Sgeo> Unless you mean something else
13:57:27 <Sgeo> Synaptic is refusing to open :(
14:01:13 -!- Ngevd has joined.
14:01:53 * Sgeo installs giggle
14:02:57 <kallisti> Sgeo: I mean if you could make the capabilities that you pass to Cap applicative or something-similar-to-applicative then you could apply to variable-argument functions
14:09:44 -!- iconmaster has joined.
14:12:52 <Sgeo> git-gui is bloody annoying
14:13:40 <kallisti> @hoogle A -> A
14:13:40 <lambdabot> Prelude id :: a -> a
14:13:40 <lambdabot> Data.Function id :: a -> a
14:13:40 <lambdabot> GHC.Exts breakpoint :: a -> a
14:13:52 <Sgeo> Here we go https://github.com/Sgeo/haskell-capabilities
14:15:29 <kallisti> > fix significand 0.5
14:15:30 <lambdabot> No instance for (GHC.Float.RealFloat (t -> a))
14:15:30 <lambdabot> arising from a use of `e_...
14:19:18 <kallisti> > lazy undefined
14:19:18 <lambdabot> Not in scope: `lazy'
14:20:20 -!- Ngevd has quit (Ping timeout: 255 seconds).
14:21:35 -!- Ngevd has joined.
14:21:40 <kallisti> I should use until more
14:21:44 <kallisti> :t until
14:21:44 <lambdabot> forall a. (a -> Bool) -> (a -> a) -> a -> a
14:22:45 * Sgeo goes to test makeCap printf
14:22:45 <kallisti> > iterate (until ((==0).(`mod` 2)) (+1)) 0
14:22:46 <lambdabot> [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
14:23:07 <kallisti> ...bad example. :P
14:23:39 <Sgeo> Well, that did not work.
14:24:25 -!- azaq23 has joined.
14:25:30 <oerjan> !haskell import Prelude hiding (id, (.)); import Control.Category; newtype T f a b = T {runT :: T f b a -> f b}; instance Category (T f) where { id = T $ \taa -> runT taa taa; tbc . tab = T $ \tca -> runT (tab . tca) tbc }; main = print "Does it type?"
14:25:43 <EgoBot> ​\ /tmp/runghcXXXX27023.hs:1:180: \ Couldn't match type `b' with `c' \ `b' is a rigid type variable bound by \ the type signature for . :: T f b c -> T f a b -> T f a c \ at /tmp/runghcXXXX27023.hs:1:168 \ `c' is a rigid type variable bound by \ the type signature for . :: T f b c -> T f a b -> T f a c \ at /tmp/runghcXXXX27023.hs:1:168 \ Expected type: T f
14:26:20 <Sgeo> Ok, fixed that bug, it is in fact a vararg oddity
14:28:03 <oerjan> darn, the result ends up the wrong type
14:30:48 <Ngevd> 5,0,7,2,1,4,2,1,3,1,2,2,4,2,1,1,1,1,6,2,0,0,0,0,2,2
14:31:13 <kallisti> > () + ()
14:31:14 <lambdabot> No instance for (GHC.Num.Num ())
14:31:14 <lambdabot> arising from a use of `GHC.Num.+' at <i...
14:32:37 <Sgeo> If I add an instance that makes makeCap forkIO work smoothly, that will block fun stuff such as makeCap makeCap
14:32:43 <Sgeo> I don't know what to do :(
14:33:04 <Sgeo> Maybe two functions, one that does one one that does the other?
14:33:29 <oerjan> and the id method looks very suspicious, anyway
14:34:03 <Sgeo> Mine, or the thing you're actually working on?
14:34:09 <oerjan> the latter
14:40:08 <kallisti> -- | Identity function.
14:40:08 <kallisti> id :: a -> a
14:40:08 <kallisti> id x = x
14:40:18 <kallisti> I don't get why GHC.Base randomly has these HUGE SPACES like that.
14:40:31 <kallisti> on some functions but not others, with no apparently helpfulness in organizing layout.
14:40:49 <fizzie> So that there's room to make a more complicated 'id' if necessary, later on.
14:40:59 <kallisti> ...lol?
14:41:07 <kallisti> good point.
14:41:20 <oerjan> kallisti: also, that's the not the one i'm writing, http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.1.0/Control-Category.html
14:41:38 <oerjan> thus also the Prelude hiding
14:41:45 <kallisti> oerjan: um, okay?
14:42:02 <kallisti> oh
14:42:05 <kallisti> coincidence.
14:42:11 <oerjan> okay
14:42:12 <kallisti> that i happened to mention GHC.base id
14:42:18 <kallisti> while you were talking about Category id.
14:42:27 <oerjan> NO WAI
14:42:46 <kallisti> yahweh
14:43:26 * oerjan notes down evidence that kallisti is not a jew
14:45:36 * kallisti continues to hold the notion that oerjan is a theist thanks to elliott even though he knows it's kind of not true maybe?
14:46:08 <oerjan> it's complicated.
14:46:52 <kallisti> ah okay
14:47:05 <kallisti> so you're like me except you choose to think about it more.
14:47:24 <oerjan> i don't know
14:47:30 <kallisti> EXCELLENT
14:47:50 <kallisti> not knowing is the other half of the battle.
14:50:13 <kallisti> I think I've asked this before, but I don't remember the answer:
14:50:22 <kallisti> why is there a <<< in Control.Category?
14:50:52 <oerjan> backwards compatibility
14:51:04 <kallisti> ah
14:51:09 <oerjan> also symmetry, i take
14:51:30 <kallisti> I guess it could also be nice if you randomly want Prelude.. and the Category one as well without having to quantify anything.
14:51:36 <oerjan> >>> and <<< used to be Arrow functions
14:51:44 <kallisti> ....I don't know why you would want that though.
14:51:46 <kallisti> oerjan: ah
14:52:23 <oerjan> indeed, especially since (Control.Category..) is a generalization of (Prelude..)
14:52:48 -!- pikhq_ has joined.
14:53:01 <kallisti> "ashley@semantic.org" they let women maintain base modules? I'm shocked.
14:53:03 -!- pikhq has quit (Ping timeout: 252 seconds).
14:53:13 <kallisti> . ha. ha. ha ha. ha ha ha
14:53:21 <oerjan> ^ha
14:53:32 <ais523> I'm just amused at your assumption that ashley is a female name, there
14:53:32 <oerjan> ...now what
14:53:35 <ais523> the name exists in both genders
14:53:38 <oerjan> ^show
14:53:38 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr
14:53:59 <kallisti> oh yes this ashley is actually a male
14:54:05 <oerjan> ...i forgot to ask fizzie to save :(
14:54:09 <kallisti> weird. I didn't know that was a gender neutral name.
14:54:27 <oerjan> fungot: Y U NO SAVE COMMANDS AUTOMATICALLY
14:54:27 <fungot> oerjan: are you a man, if there weren't evil in this world are places like that. a peaceful. hah! you think you are? coming and going out! he's really a tricycle! pass him!
14:54:40 <Sgeo> Night
14:55:09 <fizzie> Oh noest.
14:55:22 <kallisti> http://semantic.org/hnop/nop/Control/Nop.hs
14:55:25 <kallisti> ....
14:56:00 <fizzie> ^def ha ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^
14:56:01 <fungot> Defined.
14:56:05 <fizzie> ^save
14:56:05 <fungot> OK.
14:56:09 <oerjan> yay!
14:56:09 <fizzie> ^ha
14:56:09 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
14:56:26 <ais523> kallisti: why is there a whole module for that?
14:57:02 <kallisti> that's what I was wondering.
14:57:25 <kallisti> there's even test cases
14:57:46 <ais523> that check to ensure it really does do nothing?
14:58:11 <kallisti> http://semantic.org/hnop/nop/test/TestNoOp.hs
14:58:12 <kallisti> yes.
14:58:18 <oerjan> you can never be sure.
14:58:26 <ais523> meh, it doesn't really
14:58:26 <kallisti> http://semantic.org/hnop/nop/test/TestNoOp.ref
14:58:29 <kallisti> here's the reference output
14:58:32 <kallisti> to ensure correct results.
14:58:41 <ais523> just checks to ensure it doesn't error out or produce output that would be caught by the test
14:58:47 <kallisti> and a makefile: http://semantic.org/hnop/nop/test/Makefile
14:59:00 <kallisti> it's also a cabal package.
14:59:25 <kallisti> though it's not on hackge.
14:59:28 <kallisti> it just has a .cabal file
14:59:34 <ais523> hmm, now we need an esolang where no-ops are really hard to write (albeit possible)
14:59:38 <ais523> Malbolge only sort-of ocunts
14:59:40 <ais523> *counts
14:59:56 <kallisti> aha but hnop is.
15:00:00 <fizzie> fis@eris:~$ cabal list hnop
15:00:00 <fizzie> * hnop Latest version available: 0.1
15:00:04 <fizzie> Yes.
15:00:22 <kallisti> this is hnop: http://semantic.org/hnop/hnop/Main.hs
15:00:28 * kallisti just sudo cabal install'd it
15:00:44 <ais523> this is a big argument for just writing functions by hand rather than importing the appropriate module
15:00:50 <ais523> "return ()" is pretty short
15:01:02 <ais523> and more polymorphic than the original, in fact
15:01:26 -!- elliott has joined.
15:01:28 <elliott> 06:21:52: <zzo38> I have thought about criteria of proper religion (I think I have been asked about it on this channel before and wasn't quite sure): * It must be philosophical. * Religious ideas and texts must be available freely in the public domain in some form. * No direct contradition to reality or apparent reality. * It is not an exact science. * No secret torture on its adherents.
15:01:28 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
15:01:35 <elliott> personally I like religions that secret torture on its adherents
15:01:37 <kallisti> $ sudo cp /home/adam/.cabal/bin/hnop /usr/local/bin/hnop
15:01:44 <kallisti> $ hnop
15:01:44 <elliott> kallisti: bad idea
15:01:59 <kallisti> ?
15:02:04 <elliott> doing that is a bad idea.
15:02:11 <kallisti> are you suggesting hnop will suddenly stop doing nothing if I do that?
15:02:30 <elliott> I don't know or care what hnop is, I'm just telling you that's a bad idea in general.
15:02:46 <elliott> You are free to ignore me, in which case I will happily laugh at you the first and all future times doing that bites you in the ass.
15:03:44 <kallisti> my guess is a) you could overwrite something b) the binary could be sensitive to its location
15:04:55 <elliott> 08:18:39: <Sgeo> makeCap :: a -> IO (Cap a)
15:04:55 <elliott> 08:19:57: <Sgeo> writeFileCap :: FilePath -> IO (Cap (String -> IO ()))
15:05:01 <elliott> Sgeo: This is the point where you realise that Cap a is the same thing as a.
15:05:12 <elliott> Which is sort of, you know, the entire point of object-capability systems
15:05:16 <elliott> s/$/./
15:07:22 <elliott> 08:35:29: * Sgeo will need to think this over a bit more, but this is embarrassing.
15:07:25 <elliott> Yes, it really is.
15:08:03 <elliott> 08:43:17: <zzo38> Sgeo: Everyone is sometimes idiot, I think
15:08:04 <elliott> Some people more often than others.
15:08:37 <elliott> 08:48:34: <zzo38> Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ())
15:08:37 <elliott> 08:48:50: <Sgeo> zzo38, ooh, good idea, thanks!
15:08:39 * elliott facepalm
15:08:47 <elliott> Sgeo: Congratulations, now you have Identity (Identity (IO ()))
15:09:42 -!- incomprehensibly has joined.
15:11:42 <elliott> 09:49:42: <kallisti> okay...
15:11:43 <elliott> 09:49:49: <kallisti> so you want this thing, that's not a monad
15:11:43 <elliott> 09:49:52: <kallisti> to be a monad. have fun.
15:11:52 <elliott> kallisti: You get the Rare Moment of Sanity in a Sea of Fools Award(tm0.
15:11:54 <elliott> *)
15:12:36 <elliott> 10:57:21: <Sgeo> I have decided to use zzo38's idea of replacing IO with Cap, and am planning on using printf-style varargs to make a single makeCap
15:12:38 <elliott> You're all enablers.
15:13:38 <elliott> 11:29:25: * Sgeo likes how Haskell is probably the only language not designed from the start for object-capabilities where it actually makes sense to implement them as a library
15:13:42 <elliott> IT DOESN'T YOU'RE BEING AN IDIOT
15:14:25 <elliott> 11:55:46: <ais523> error (fix error) is _|_; fix error is a string
15:14:28 <elliott> ais523: you have misunderstood
15:14:36 <ais523> elliott: I figure it eventually
15:14:40 <ais523> before kallisti does, in fact
15:14:46 <kallisti> an amazing feat.
15:15:06 <elliott> ais523: error :: a -> String; fix :: (a -> a) -> a
15:15:10 <kallisti> I like how elliott logs in and corrects everyone's past errors even if they already have corrected them.
15:15:11 <elliott> in fix error, error :: String -> String
15:15:13 <elliott> so fix error :: String
15:15:20 <elliott> err
15:15:26 <elliott> ais523: error :: String -> a; fix :: (a -> a) -> a
15:15:26 <ais523> elliott: also, this implies that there's two possible ways to implement printString
15:15:26 <elliott> ofc
15:15:32 <ais523> if it calculated the length first, the " wouldn't happen
15:15:39 <elliott> basically fix f = f (fix f) fails if f is polymorphic, duh
15:15:44 <elliott> ais523: there is no printString
15:15:47 <elliott> and putStr does not calculate length
15:15:57 <ais523> elliott: indeed, lambdabot made that clear
15:16:02 <elliott> although what is really relevant here is show, not putStr
15:16:16 <elliott> show s = "\"" ++ escape s ++ "\""
15:16:21 <elliott> so the error happens after the " is produced
15:16:23 <oerjan> elliott: CORRECTING PEOPLE'S ERRORS WHICH HAVE ALREADY BEEN CORRECTED IS A BANNABLE OFFENSE. oh wait...
15:16:26 <ais523> elliott: not really, due to laziness
15:16:29 <elliott> no
15:16:32 <elliott> show is relevant here
15:16:34 <elliott> show is the thing that produces the quote
15:16:41 <elliott> and lambdabot won't even putStr in that GHC process
15:16:45 <elliott> which it runs separately
15:16:49 <ais523> elliott: well, what lambdabot uses to output the string is relevant
15:16:51 <elliott> well, it might, but it's not the putStr to IRC, and is irrelevant anyway
15:16:53 <elliott> ais523: nope
15:16:59 <elliott> well
15:17:01 <elliott> yes and no
15:17:05 <elliott> the fact that it interleaves the error stream is releavnt
15:17:06 <elliott> *relevant
15:17:06 <ais523> well, what lambdabot uses to /force/ the string is relevant
15:17:10 <elliott> but all haskell programs do that
15:17:20 <elliott> anyway, the reason all the errors is printed is because error is lazy
15:17:24 <elliott> > error undefined
15:17:25 <lambdabot> *Exception: *Exception: Prelude.undefined
15:17:28 <elliott> the undefined only gets forced in the exception handler
15:17:32 <elliott> as it tries to print out the exception
15:17:40 <elliott> so that just keeps happening forever
15:17:44 <ais523> I figured that much, eventually
15:17:45 <elliott> but lambdabot only takes the first few hundred characters
15:17:51 <elliott> well now you've re-figured it!
15:18:00 <elliott> oerjan: NOBODY CORRECTED SGEO
15:18:09 <ais523> elliott: lambdabot outputs strings while they're being forced; that's what's relevant here
15:18:16 <ais523> it doesn't calculate the entire string first and then output it
15:18:20 <ais523> if it did, you wouldn't get the "
15:18:20 -!- Vorpal has joined.
15:18:25 <elliott> ais523: err, because that's not a thing you can do
15:18:29 <elliott> you don't "calculate the string"
15:18:33 <elliott> each cell of a list is lazy
15:18:37 <ais523> elliott: it definitely is a thing you can do, you're in IO
15:18:41 <elliott> you would have to deliberately walk the list doing nothing, and then print out the string
15:18:42 <elliott> to achieve that
15:18:47 <ais523> right
15:18:54 <elliott> ais523: being in IO is irreleavnt
15:18:56 <elliott> irrelevant
15:18:57 <elliott> deepseq is pure
15:19:01 <ais523> but that to me seems to be the easiest way to implement sometihng like putStr
15:19:02 <elliott> it's also irrelevant, but it is pure
15:19:10 <elliott> @src putStr
15:19:10 <lambdabot> putStr s = hPutStr stdout s
15:19:13 <elliott> @src hPutStr
15:19:13 <lambdabot> Source not found. :(
15:19:15 <elliott> sigh
15:19:22 <elliott> putStr "" = return (); putStr (c:s) = putChar c >> putStr s
15:19:31 <elliott> if you think adding a pointless deepseq somehow simplifies that, you're insane
15:19:34 <ais523> elliott: ah, OK, so it's going via printchar rather than, say, puts
15:19:51 <elliott> if it marshalled it to a C string it'd have to force the whole thing, yes
15:19:56 <ais523> elliott: what I'm saying is that a syscall exists for writing multiple characters at once; and putStr goes out of the way to not use it
15:20:00 <elliott> but that's not really "calculating the whole string", that's just an artifact of (char *) being strict
15:20:09 <ais523> (which is correct, to give the correct lazy behaviour)
15:20:14 <elliott> ais523: err, syscalls are irrelevant
15:20:16 <elliott> ais523: it's called buffering
15:20:27 <ais523> ah, right
15:20:29 <elliott> GHCi and other interactive environments turn off buffering, ofc
15:20:30 <ais523> except hSetBuffering also exists
15:20:37 <elliott> ais523: yeees?
15:20:42 <elliott> that flicks a bit in the RTS
15:20:48 <elliott> which changes the behaviour of putChar, presumably
15:20:51 <ais523> elliott: which impleis to me strongly that it's libc that's doing the buffering, not ghc
15:21:00 <elliott> err, seriously?
15:21:06 <elliott> that's insane, why would you think that?
15:21:07 <ais523> in fact, I actually have evidence that it's libc that does the buffering
15:21:16 <elliott> it probably does, but hSetBuffering is in no way evidence for it
15:21:17 <ais523> as there's absolutely no reason why ghc would use a differently-sized buffer on Linux and Darwin
15:21:38 <ais523> (I was debugging someone else's Haskell code recently; the apparent bug was due to stdout buffering)
15:21:55 <elliott> actually, no, if what I recall about GHC'S IO system is correct it does _not_ use libc buffering
15:22:02 <ais523> hmm
15:22:03 <elliott> but I'm not certain
15:22:14 <elliott> anyway, I don't see how hSetBuffering is relevant
15:22:20 <elliott> you could even implement the buffering with haskell code
15:22:40 <ais523> elliott: you could, indeed
15:23:00 <ais523> it depends on whether you implemented it inside or outside the exception handler, I guess
15:23:47 <elliott> ais523: err...
15:23:49 <elliott> what?
15:24:09 <ais523> elliott: if the exception happens while the buffering code is still trying to calculate the buffer
15:24:12 <ais523> it's not going to output the "
15:24:14 <elliott> 12:21:54: <oerjan> which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them.
15:24:21 <ais523> unless the exception code goes through the same buffer itself
15:24:29 <elliott> oerjan: runST (catch (error "a" ++ error "b") return)
15:24:44 <elliott> ais523: I, um, no, you're wrong
15:24:53 <elliott> ais523: the buffering code just has to append to a (char *) on putChar
15:24:55 <oerjan> elliott: O KAY
15:24:58 <elliott> and flush it when it's too big
15:25:01 <elliott> it doesn't even know about the rest of the string
15:25:09 <elliott> oerjan: what? that's the exact reason exceptions are in IO to start with
15:25:10 <elliott> oerjan: nondeterminism
15:25:11 <ais523> elliott: oh, I thought it was using some sort of Haskell list as the buffer
15:25:26 <elliott> ais523: it could do that, too
15:25:33 <elliott> ais523: cons to the list on putChar, reverse + print it when it's too big
15:25:44 <elliott> still wouldn't need to care about the rest of the string, also it'd still have to print out a linked list
15:25:48 <elliott> so it'd be pointless and slow :)
15:25:52 <ais523> indeed
15:26:04 <fizzie> It could do buffering within the RTS but use the BUFSIZ value of the platform as the default size, that way would also lead to different buffer sizes on Linux vs. Darwin.
15:26:10 <ais523> also, hmm, wouldn't output the ", because reverse would force the error before it forced the "
15:26:16 <elliott> fizzie: yes, that seems plausible
15:26:20 <elliott> ais523: um putChar obviously has to be strict
15:26:27 <elliott> ais523: wait
15:26:29 <elliott> ais523: that's irrelevant
15:26:33 <elliott> ais523: reverse doesn't force any of the list heads, duh
15:26:46 <ais523> elliott: but error isn't pretending to be a char, but a string
15:26:49 * elliott gives up
15:26:50 <ais523> so it has to force the length
15:27:33 <oerjan> > fix ((:[]).error)
15:27:34 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
15:27:51 <Vorpal> heh
15:27:54 <ais523> > putStr ("\"" ++ error "test")
15:27:56 <lambdabot> <IO ()>
15:28:04 <elliott> !haskell putStr ("\"" ++ error "test")
15:28:09 <fizzie> Actually going by http://hackage.haskell.org/trac/ghc/browser/ghc/lib/std/cbits/setBuffering.c?rev=c75c2618208e388439fdbf6a63b6903ddff7e195 it even tries to use the block size of the device from fstat, and BUFSIZ if that's not in the struct stat.
15:28:09 <EgoBot> ​*** Exception: test \ \ /tmp/runghcXXXX836.hs:1:1: \ Parse error: naked expression at top level
15:28:09 <elliott> i don't know what !haskell's buffering is like
15:28:13 <elliott> !haskell fix error
15:28:18 <EgoBot> ​\ /tmp/runghcXXXX899.hs:1:1: \ Parse error: naked expression at top level
15:28:18 <elliott> wtf, Gregor broke it again
15:28:22 <elliott> !haskell main = fix error
15:28:27 <EgoBot> ​\ /tmp/runghcXXXX962.hs:1:8: Not in scope: `fix'
15:28:31 <elliott> >_<
15:28:35 <elliott> !haskell import Data.Function; main = fix error
15:28:36 <ais523> EgoBot: I take it lambdabot doesn't allow you to run arbitrary IO actions?
15:28:40 <EgoBot> ​\ /tmp/runghcXXXX1030.hs:1:23: \ Couldn't match expected type `IO t0' with actual type `[Char]' \ In the expression: main \ When checking the type of the function `main'
15:28:43 <ais523> *elliott:
15:28:43 <elliott> fml
15:28:49 <kallisti> elliott: nah, !haskell is just anti-nudist
15:28:54 <elliott> !haskell import Data.Function; import Control.Exception; main = evaluate $ fix error
15:28:57 <ais523> !haskell main = putStr (fix error)
15:29:01 <EgoBot> ​\ /tmp/runghcXXXX1153.hs:1:16: Not in scope: `fix'
15:29:04 <ais523> oh, I forgot the import
15:29:12 <ais523> !haskell import Data.Function; main = putStr (fix error)
15:29:19 <elliott> EgoBot's I/O is broken
15:29:29 <ais523> also, why do ghc error messages have leading newline?
15:29:31 <ais523> *newlines?
15:29:31 <elliott> Prelude> putStr ("\"" ++ error "test")
15:29:31 <elliott> "*** Exception: test
15:29:35 <elliott> there's your answer
15:30:06 <ais523> so putStr forces the first character of the string before the second, or the string length
15:30:11 <oerjan> <elliott> wtf, Gregor broke it again <-- hm actually it may be a naturally consequence of trying the module compilation after the expression one errors out
15:30:27 <oerjan> !haskell 2+2
15:30:30 <EgoBot> 4
15:30:47 <ais523> oerjan: oh, the theory's that it can distinguish a parse error from a deliberate exception?
15:30:50 <ais523> *it can't
15:30:51 <elliott> 12:53:02: <oerjan> kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that.
15:30:59 <elliott> oerjan: uh the coverage condition is basically complaining that your fundeps are borked
15:31:10 <elliott> and aha
15:32:03 <elliott> 13:10:40: <oerjan> @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence.
15:32:06 <oerjan> elliott: erm concluding that the dependency transfers from SomeInstance a b to SomeInstance (c -> a) (c -> b) seems safe to me
15:32:08 <elliott> oerjan: don't look now, but itidus21 is still around
15:32:28 <oerjan> elliott: i also have a hunch that you are not helping anyone's self-esteem.
15:32:44 <elliott> oerjan: are you? :)
15:33:11 <elliott> 13:31:36: <Sgeo> I should put this on github or something, probably
15:33:11 <elliott> IT'S BROKEN!!!!!!!!!!!!!!!!!!!p:"ckw)(u as)_eoa{$}p#}${p|"aD; DL PSADJK SEP56
15:33:28 <kallisti> oerjan helps my self-esteem by not hurting it.
15:34:17 * elliott considers sending a pull request to Sgeo that replaces every type with the Identity it really is.
15:34:30 <elliott> instance Monad Cap where
15:34:30 <elliott> return = Cap . return
15:34:30 <elliott> x >>= f = error "Tomorrow"
15:34:30 <elliott> good monad
15:34:44 <Vorpal> heh
15:35:01 <oerjan> ais523: the parse error happens after the distinction is done, on a second compilation path
15:35:47 <elliott> 14:45:36: * kallisti continues to hold the notion that oerjan is a theist thanks to elliott even though he knows it's kind of not true maybe?
15:35:49 * elliott giggles
15:35:56 <fizzie> oerjan: Elliott keeps making withdrawals from everyone's Self-Esteem Account to fill his Ego Balloon. It's... subconscious. (A Penny Arcade reference.)
15:36:08 <Vorpal> why do audio CDs use uncompressed audio? Even using something like flac would probably double how much you can fit on a single CD
15:36:40 <Vorpal> fizzie, quite accurate too
15:36:47 <Vorpal> fizzie, and which comic?
15:36:57 <fizzie> Vorpal: http://penny-arcade.com/comic/2003/02/28
15:37:13 <elliott> "Quite accurate" -- yes, fear my dark feast.
15:37:24 <Vorpal> fizzie, heh
15:37:41 <kallisti> elliott is the evil monster that raids the village daily.
15:38:32 <elliott> 15:00:44: <ais523> this is a big argument for just writing functions by hand rather than importing the appropriate module
15:38:45 <ais523> elliott: at least when they're simple
15:38:47 <elliott> ais523: please, change the topic quickly if you say things like this before I join, I don't want to be associated by proximity
15:39:15 <ais523> elliott: heh
15:39:22 <ais523> I'm not sure I agree with that viewpoint
15:39:26 <ais523> just, hnop is a big argument for it
15:39:33 <fizzie> (Also they use uncompressed PCM because that's the only thing CD players can play. Audio CDs are from the 1980s; FLAC was released in this millennium.)
15:40:02 <Ngevd> My god I am tired
15:40:03 <Vorpal> ais523, hnop?
15:40:13 <ais523> Vorpal: read scrollback
15:40:15 <ais523> or logs
15:40:15 <Vorpal> fizzie, well okay
15:40:21 <Ngevd> I just carefully unwrapped a chocolate coin and tried to eat the wrapper
15:40:23 <Vorpal> ais523, logs I guess
15:40:32 <ais523> the problem with you is that you force every conversation to happen at least twice
15:40:33 <Vorpal> fizzie, what about plain zlib then?
15:41:07 <oerjan> Ngevd: just deposit the rest http::/xkcd.com/
15:41:11 <oerjan> er
15:41:18 <oerjan> *Ngevd: just deposit the rest http://xkcd.com/
15:41:37 <ais523> haha, Firefox had xkcd as its first history search result for "x"
15:41:39 <Ngevd> oerjan, nah, I'm hungry, and I don't know where I could find one of those machiens
15:41:53 <ais523> even though I rarely visit it, it's probably the most commonly visited result for me that starts with x
15:42:32 <elliott> <ais523> the problem with you is that you force every conversation to happen at least twice
15:42:47 <elliott> ais523: as a logreader I'm offended!
15:42:54 <oerjan> <ais523> the problem with you is that you force every conversation to happen at least twice <-- wait, which one of us are you talking to?
15:43:00 <ais523> I was aiming at Vorpal
15:43:02 <elliott> Vorpal forces it to happen at least twice /non-automatically/
15:44:11 <Vorpal> eh?
15:44:16 <Vorpal> ais523, I don't log read
15:44:19 * oerjan facepalm
15:44:21 <Vorpal> so doubtful I would have noticed
15:44:22 <elliott> let's paste this conversation to Vorpal so he understands it
15:44:30 <elliott> <ais523> the problem with you is that you force every conversation to happen at least twice
15:44:31 <Vorpal> I'm not really interested
15:44:33 <elliott> <elliott> ais523: as a logreader I'm offended!
15:44:35 <elliott> <oerjan> <ais523> the problem with you is that you force every conversation to happen at least twice <-- wait, which one of us are you talking to?
15:44:36 <Vorpal> busy doing other stuff
15:44:37 <elliott> <ais523> I was aiming at Vorpal
15:44:39 <elliott> <elliott> Vorpal forces it to happen at least twice /non-automatically/
15:44:43 <elliott> <Vorpal> eh?
15:44:43 <elliott> <Vorpal> ais523, I don't log read
15:44:43 <elliott> * oerjan facepalm
15:44:45 <elliott> <Vorpal> so doubtful I would have noticed
15:44:47 <elliott> <Vorpal> I'm not really interested
15:44:49 <elliott> <Vorpal> busy doing other stuff
15:44:52 <elliott> Vorpal: there, now you're up to date
15:44:52 <ais523> oerjan: you need quite a big facepalm for that
15:44:56 <Vorpal> elliott, ....
15:44:59 <elliott> <Vorpal> elliott, ....
15:45:01 <elliott> Vorpal: hth
15:45:06 * oerjan realizes _after_ typing /me facepalm that he had just physically facepalmed
15:45:11 <ais523> elliott: but now your quote has to quote itself
15:45:22 <ais523> because if Vorpal's response to the communication is part of it, so is that quote
15:45:22 <elliott> > fix ("<elliott> " ++)
15:45:24 <lambdabot> "<elliott> <elliott> <elliott> <elliott> <elliott> <elliott> <elliott> <ell...
15:45:25 <kallisti> oerjan: I physically facepalmed as well. while giggling.
15:45:26 <elliott> ais523: done
15:46:05 <elliott> hmm, I should try out the effects package
15:46:07 <elliott> eff is cool
15:46:12 <fizzie> Vorpal: CD players can't do that either. They're pretty stupid, you know. Certainly they probably *could* have included some sort of decompression soft/hardware in them originally, at the cost of seriously increasing the complexity, with no real benefit: they already selected the physical parameters for CD media so that it gives a suitable "album-sized" length.
15:46:39 <ais523> fizzie: [note that I'm guessing the context here
15:46:45 <ais523> ] I've seen a CD player that could play data files
15:46:50 <ais523> on data CDs
15:46:53 <fizzie> Vorpal: You can just burn a data CD with FLAC/OGG/MP3 nowadays if you have a modern enough CD player.
15:46:55 <ais523> and decoded a range of formats
15:46:57 <fizzie> ais523: Yes.
15:47:05 <Vorpal> fizzie, oh?
15:47:10 <Vorpal> fizzie, well mine is kind of old
15:47:14 <Vorpal> so doubtful
15:47:16 <elliott> fizzie: Can't do what? Decode FLAC?
15:47:30 <elliott> But yeah, saying CDs should be compressed is pretty ridiculous.
15:47:42 * elliott hopes that the next big music format is USB sticks with FLACs on them.
15:47:46 <Deewiant> elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then?
15:47:48 <fizzie> elliott: Can't un-gzip.
15:47:48 <elliott> But it'll probably be USB sticks with MP3s on them. :(
15:48:00 <elliott> Deewiant: Thanks, but I need conversations repeated at least thrice to understand them
15:48:06 <Deewiant> elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then?
15:48:13 <elliott> Deewiant: Eh?
15:48:21 <Deewiant> elliott: That's thrice
15:48:23 <Deewiant> elliott: That's thrice
15:48:24 <Deewiant> elliott: That's thrice
15:48:26 <elliott> (Actually I hope the next big music format is there not being a physical music format.)
15:48:31 <elliott> Deewiant: Repeated at least thrice, not peated at least thrice.
15:48:35 <elliott> I mean, uh, eh?
15:48:47 <Deewiant> Meh
15:49:02 <Vorpal> fizzie, anyway, I think fitting all of Mozart's work on one CD instead of 50 or so would be awesome
15:49:04 <fizzie> elliott: I'm guessing for USB sticks with MP3s on them, and then for selected "albums" USB sticks with FLACs on them for the "enthusiast edition" with 5x the price tag.
15:49:38 <Vorpal> ouch
15:49:53 <fizzie> Vorpal: But it comes with a poster, too.
15:49:57 <ais523> fizzie: for the sort of people who buy $2000 HDMI cables?
15:49:59 <Vorpal> fizzie, :D
15:50:29 <fizzie> ais523: For the sort of people who buy the collector's edition with the 10" lead figurine of a dragon.
15:50:38 <elliott> ais523: at least FLAC is actually different to MP3s
15:50:42 <Vorpal> ais523, I know someone who brought a $2000 ethernet cable.
15:50:52 <elliott> admittedly, not perceptibly, as long as the MP3 is of sufficiently high bitrate
15:50:57 <Vorpal> ais523, but it was okay. It was a huge roll of uncut installation cable
15:51:33 <ais523> OK, /that/ was weird, Evolution just interpreted the success message it got after logging into Yahoo! Mail as an error message
15:51:41 <Vorpal> fizzie, until they took an arrow in the knee that is
15:51:48 <ais523> then tried to log in again, and got an error message saying you can't log in while already logged in
15:52:01 <elliott> Vorpal: die
15:52:12 <ais523> elliott: the $2000 HDMI cables are not the same as cheaper ones either
15:52:17 <elliott> ais523: hmm, does Agora have contests this decade?
15:52:18 <Vorpal> elliott, :P
15:52:23 <ais523> it's doubtful that the differences have any effect on audio quality
15:52:24 <ais523> elliott: yes
15:52:32 <ais523> but there's only one in existence, and it's kind-of dormant atm, also holiday
15:52:38 <Vorpal> elliott, why do you hate the arrow in the knee meme?
15:52:45 <ais523> contests aren't a special case of contracts atm, btw, but something else
15:52:47 <ais523> but they do exist
15:53:06 <elliott> Vorpal: not only is it (a) tired (b) shitty (c) terrible, but (d) it wasn't even (d1) relevant or (d2) /grammatically valid/ in (d3) the context you used it in, ergo (e) die
15:53:25 <Vorpal> elliott, fair enough
15:53:41 <kallisti> you know shit is serious when the bulleted lists are nested.
15:53:44 <Vorpal> elliott, it is kind of amusing if you played the game.
15:53:51 <Vorpal> kallisti, :D
15:53:54 <elliott> "Last Christmas I was homeless, girlfriendless, jobless, weak, underweight and only 21 years old. In one year I've changed everything. AMA (self.IAmA)" ;; I bet he's 22 now, what an achievement
15:54:00 <kallisti> ...ugh, is someone defending arrow in the knee?
15:54:04 <elliott> kallisti: Vorpal
15:54:05 <fizzie> Vorpal: That has to be one *huge* roll; you can get a 300 metre roll of cat.6 cable at ~250 eur.
15:54:15 <kallisti> elliott: it was a sort of rhetorical question. :P
15:54:20 <Vorpal> I wasn't defending it
15:54:23 <elliott> kallisti: TROLOLOLOLOLOLOLOL U MAD BROTHER??? forever alone
15:54:27 <Vorpal> but yes, it gets old quickly
15:54:30 <elliott> I hate myself.
15:54:35 * elliott cries.
15:54:36 <Vorpal> fizzie, several km iirc
15:54:43 <elliott> km of ethernet? :D
15:54:52 <Vorpal> fizzie, he works professionally with network installation stuff
15:54:57 <elliott> They should measure Ethernets in Londons.
15:55:05 <elliott> 3 London roll of Ethernet (collapses; forms black hole).
15:55:37 <Vorpal> fizzie, anyway it was about 10 years ago
15:55:40 <kallisti> elliott: >implying over 9000 fffffuuuuu inb4 chris hansen
15:55:48 <Vorpal> fizzie, price might differ these days?
15:55:50 <Vorpal> I don't know
15:56:00 <kallisti> elliott: one day it will be posible to hold an entire conversation in only memes.
15:56:17 <kallisti> English sentences will be formed by concatenating memes.
15:56:20 <Ngevd> I have no idea what anyone is talking about
15:56:37 <elliott> kallisti: I see you haven't talked to anyone who frequents /b/ in the last five years.
15:56:47 <kallisti> elliott: their methods are still imperfect.
15:56:59 <kallisti> occasionally they have to use original phrases to express themselves.
15:57:10 <elliott> They're still capable?
15:57:20 <elliott> kallisti: Augh, I just saw your response now looking up.
15:57:20 <fizzie> Vorpal: Could be. Currently if you buy from Amazon in units of 1000ft (~300m) rolls, you'll get 16.4 rolls (weighing 133 kilograms) with $2000.
15:57:26 <fizzie> That's quite a bit of cable.
15:57:26 <elliott> I need peril-sensitive sunglasses.
15:57:47 <Vorpal> elliott, I see what you did there
15:57:51 <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:03 <elliott> `addquote [...] <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:03 <Vorpal> heh
15:58:11 <ais523> hmm, what is the least valuable solid, by volume?
15:58:13 <HackEgo> 776) [...] <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:16 * elliott likes this use of [...] to imply a long and in-depth preceding discussion about nothing.
15:58:27 <elliott> ais523: cheese
15:58:35 <ais523> I doubt it
15:58:37 <Vorpal> elliott, have you seen what some cheese cost?
15:58:51 <kallisti> elliott: you just inadvertently used a starcraft 2 term. (cheese)
15:59:08 <elliott> kallisti: it's
15:59:09 <kallisti> or well, a general SC term.
15:59:09 <Vorpal> ais523, some sort of plastic?
15:59:11 <elliott> also an english language term
15:59:14 <kallisti> elliott: nope.
15:59:14 <fizzie> ais523: If you're willing to accept a mixture of crap, people will pay you to haul theirs away.
15:59:28 <kallisti> elliott: unpsosible
15:59:33 <elliott> fizzie: A mixture of crap? Different fragrances and blends of faeces?
15:59:37 <ais523> kallisti: talking about cheesing in that context is a general computer gaming concept
15:59:47 <kallisti> ais523: oh it is? i was unaware.
15:59:47 <ais523> elliott: hmm, I think I meant to buy
15:59:55 <Vorpal> ais523, "cheesing"?
15:59:56 <ais523> buying excrement is actually reasonably expensive
15:59:58 <ais523> Vorpal: yes
15:59:59 <kallisti> ais523: i think sc2 takes it to a different level though.
16:00:04 <Vorpal> ais523, what does it mean
16:00:06 <ais523> kallisti: it takes everything to a different level
16:00:26 <elliott> ais523: why do you know this
16:00:26 <ais523> Vorpal: using a strategy that's simple and unlike standard strategy, and wouldn't work if the opponent guessed what you were doing
16:00:40 <Vorpal> ais523, ah, so a strategy game term then?
16:00:40 <elliott> ais523: re feaces
16:00:40 <ais523> elliott: I know at least one sc2 player in real life
16:00:42 <elliott> faces
16:00:43 <ais523> and I watch a lotof games
16:00:43 <elliott> ais523: no
16:00:46 <elliott> the poop part
16:00:50 <ais523> oh, TV shows
16:01:00 <elliott> there are tv shows about buying poop
16:01:03 <elliott> ok
16:01:04 <ais523> people end up buying it as fertilizer now and again
16:01:19 <ais523> so the TV shows aren't about buying poop, but it comes up
16:01:55 <fizzie> Well, I mean, you can buy scrap metal, but that's not exactly a single solid.
16:02:07 <fizzie> E.g. here's one add if you want to buy 15 tons of hard discs.
16:02:14 <kallisti> I guess you could use cheese in the context of other multiplayer games
16:02:18 <fizzie> These are all "price on request", so I can't provide prices.
16:02:23 <kallisti> or maybe single-player games for "cheap" tricks.
16:02:25 <fizzie> But I'm sure you could dig out some data from there.
16:02:57 <ais523> kallisti: it works in single-player games too, normally referring to AI deficiencies
16:03:14 <kallisti> ais523: guessing isn't required if you actually gather information about what your opponent is doing. and, of course, the best anti-cheese is an equally cheesy play. :P
16:03:19 <Vorpal> ais523, AI deficiencies is standard in single player games
16:03:48 <Vorpal> sure there are exception, chess games for example
16:03:52 <ais523> kallisti: all sc2 players who are even remotely good gather information
16:04:03 <ais523> Vorpal: nah, there are chess games with good AIs but they're the exception, not the rule
16:04:06 <kallisti> even I scout, and I'm not good at all. :P
16:04:59 <Vorpal> ais523, well sure, but I meant for chess in general, there just happens to be many different chess games. While there aren't many different Final Fantasy 2 games say
16:05:34 * kallisti can write a spot-on tic-tac-toe AI.
16:05:41 <Vorpal> solved problem
16:05:51 <kallisti> irrelevant.
16:05:56 <Vorpal> kallisti, and I can beat it if I get to do the first turn
16:06:18 <ais523> Vorpal: japanese Final Fantasy II, US final fantasy 2 which was a translation of Final Fantasy IV, then there was a GBA version, and IIRC a DS version too
16:06:18 <kallisti> Vorpal: eh, a cheese move if you ask me.
16:06:25 <Vorpal> kallisti, heh
16:06:38 <kallisti> FUCK YOUR PERFECT INFORMATION GAMES.
16:06:42 <ais523> Vorpal: how do you win tic-tac-toe against a perfect player?
16:06:54 <kallisti> perfectly.
16:06:56 <Vorpal> ais523, by taking the first turn and doing perfect play?
16:07:08 <Vorpal> ais523, it is always the first player who wins if both play perfectly
16:07:10 <ais523> Vorpal: that leads to a draw in tic-tac-toe?
16:07:20 <Vorpal> hm does it? Maybe I misremember then
16:07:23 <kallisti> yes it does.
16:07:27 <Vorpal> right
16:07:37 <fizzie> ais523: You can buy (fill) dirt at $12.50 per cubic yard. You might not count that as a single solid either.
16:07:58 <Vorpal> how expensive is ice?
16:08:01 <ais523> hmm, dirt is thus actually quite expensive
16:08:08 <kallisti> Vorpal: depends on where you live I guess.
16:08:12 <ais523> thus, I hereforth ban people from using the phrase "dirt cheap"
16:08:17 <Vorpal> kallisti, south pole
16:08:17 <fizzie> A cubic yard is quite a lot of dirt.
16:08:32 <kallisti> Vorpal: undefined. no one sells ice there.
16:08:37 <Vorpal> fizzie, how long is a yard now again?
16:08:51 <Vorpal> kallisti, north Sweden then?
16:08:53 <ais523> Vorpal: a little less than a metre
16:08:56 <Vorpal> ah
16:09:07 <kallisti> Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE
16:09:14 <oerjan> the brits have very small yards
16:09:15 <kallisti> ^ha
16:09:15 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
16:09:15 <ais523> a metre's approximately 39 inches; a yard is 36
16:09:36 <Vorpal> <fizzie> A cubic yard is quite a lot of dirt. <-- no, you can carry loads of cubic meters of earth, and if a yard is less than a meter...
16:09:52 <fizzie> This is not Minecraft, though.
16:10:02 <kallisti> lol @ people not knowing what a yard is intuitively.
16:10:05 <Vorpal> <kallisti> Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE <-- good thing we are worth more than our weight in ice then
16:10:11 <Vorpal> fizzie, :P
16:10:12 <ais523> kallisti: are you American?
16:10:15 <kallisti> yes.
16:10:19 <ais523> the word's hardly used as a measurement in most of the world
16:10:27 <ais523> being British, I know people who are old enough to remember what yards are
16:10:31 <Vorpal> kallisti, indeed. Sweden uses the metric system
16:10:33 <kallisti> I know. I WASN'T BEING SERIOUS.
16:10:33 <oerjan> yardly used
16:10:35 <ais523> and the measurement is used on road signs occasionally
16:10:39 <kallisti> sheesh
16:10:43 <ais523> but it doesn't come up in regular conversation
16:10:50 <Ngevd> ais523, unless you play golf
16:10:52 * Vorpal punches oerjan
16:10:53 <ais523> (whereas miles are used all the time on road signs)
16:11:01 <ais523> Ngevd: but I don't play golf
16:11:02 <elliott> <fizzie> ais523: You can buy (fill) dirt at $12.50 per cubic yard. You might not count that as a single solid either.
16:11:04 <elliott> <ais523> hmm, dirt is thus actually quite expensive
16:11:06 <elliott> FSVO expensive
16:11:08 <oerjan> ow
16:11:08 <kallisti> I was not actually confused about /why/ this was the case. Just noting that it's kind of interesting how measurement systems affect intuition.
16:11:08 <Ngevd> ais523, then it doesn't
16:11:14 <Vorpal> ais523, and that is not a Scandinavian mile either I assume?
16:11:18 <Vorpal> ais523, which is 10 km
16:11:21 <elliott> ais523: http://farm4.static.flickr.com/3125/2778009865_4cc9b6c99e.jpg
16:11:21 <ais523> Vorpal: 1618m
16:11:25 <Vorpal> ais523, right
16:11:33 <ais523> or possibly 1619, I forget the last digit
16:11:50 <Vorpal> ais523, road signs here use km, but in conversation people often use miles (10 km)
16:11:53 <Ngevd> 1609
16:11:54 <oerjan> `frink 1 mile -> km
16:11:57 <elliott> ais523: I'm relatively well-accustomed to yards
16:11:57 <fizzie> Couldn't quick-find anyone actually selling ice in bulk -- I don't think people would bother actually shipping ice long distances -- but you can buy buil sand/salt 8:1 mixture (for road de-icing) at $46/cubic yard, i.e. that costs a lot more than dirt.
16:12:01 <elliott> ais523: they're not that uncommon
16:12:03 <fizzie> s/buil/bulk/
16:12:06 <HackEgo> 25146/15625 (exactly 1.609344)
16:12:12 <elliott> 1.6 ~ 10
16:12:37 <kallisti> elliott: lol
16:12:53 <kallisti> I.. noticed that.
16:13:05 <kallisti> I thought "there's no way that's the ratio my speedometer uses"
16:13:13 <ais523> fizzie: Birmingham City Council ran out of sand/salt mixture a couple of years ago
16:14:02 <ais523> it can get in short supply during winter
16:14:13 <oerjan> fizzie: i occasionally hear people proposing towing icebergs to the persian gulf or so
16:14:18 <Ngevd> Bye!
16:14:23 <oerjan> *read about
16:14:25 -!- Ngevd has quit (Quit: no more internet anymore).
16:14:27 <fizzie> Concrete costs $70/cubic yard, delivered.
16:14:32 <Vorpal> oerjan, I heard about that too
16:14:44 <elliott> kallisti: did topatoco send you toy money too
16:14:50 <kallisti> elliott: no...
16:14:55 <kallisti> why would they do that.
16:15:09 <Vorpal> fizzie, so what about gravel?
16:15:23 <elliott> kallisti: well
16:15:30 <elliott> my package came with $1000 in toy money
16:15:30 <elliott> so
16:15:34 <elliott> yeah
16:15:42 <fizzie> ais523: Recycled sawdust/shavings at $7.85/cubic yard.
16:16:03 <kallisti> ..how did this become a conversation about the costs of various construction materials.
16:16:04 <Vorpal> fizzie, that is kind of cheap
16:16:06 <fizzie> (And topsoil at $9.75 from the same place.)
16:16:27 <oerjan> kallisti: something went asymptotically wrong, i think
16:16:29 <elliott> kallisti: ais523 wanted to know what the cheapest solid is
16:16:30 <elliott> anyway
16:16:35 <elliott> does anyone want a 1000 dollar note of toy money
16:16:38 <kallisti> also, I find it strange that this is being discussed in dollars. don't you guys have your own currencies?
16:16:50 <Vorpal> kallisti, sure, SEK
16:16:53 <Vorpal> or EUR
16:16:56 <Vorpal> or GPB
16:16:57 <Vorpal> err
16:16:58 <fizzie> kallisti: It's easiest to find prices in $s in the webs.
16:16:58 <elliott> dollars are rather more universal for buying things like materials in bulk
16:16:58 <Vorpal> GBP
16:17:16 <Vorpal> what is the Chinese currency called?
16:17:17 <elliott> also, everyone knows how much dollars are worth
16:17:22 <kallisti> oh, okay.
16:17:22 <elliott> nobody knows how much euros are worth :P
16:17:26 <oerjan> Vorpal: renminbi
16:17:34 <kallisti> I guess it was so convenient for me that I didn't pay much attention to it.
16:17:35 <Vorpal> oerjan, I never heard of that before, are you sure?
16:17:44 <elliott> Vorpal: yuan is the base unit
16:17:46 <oerjan> Vorpal: colloquially "yuan"
16:17:48 <Vorpal> elliott, ah
16:17:49 <fizzie> Vorpal: You have to pay like $50/cy for gravel-with-no-dirt-in-it.
16:17:51 <Vorpal> right
16:17:59 <Vorpal> fizzie, that much? heh
16:18:06 <kallisti> I'm guessing the cheapest solid is.....
16:18:09 <elliott> fizzie: But it's so ugly!
16:18:37 <kallisti> packaging peanuts.
16:18:38 <Vorpal> elliott, :D
16:18:42 <kallisti> how much are those?
16:18:43 <Vorpal> elliott, just switch texture pack
16:18:53 <Vorpal> elliott, currently I'm using one where it looks like concrete blocks
16:18:56 <kallisti> that's probably not the cheapest solid.
16:19:03 <elliott> Vorpal: I make gravel deliberately ugly because it sounds ugly to step on and it acts ugly.
16:19:09 <elliott> It is the Enemy, it must look like sin.
16:19:17 <Vorpal> ah
16:19:32 <kallisti> anyway I'm guessing syrofoam is pretty cheap.
16:19:39 <kallisti> +t
16:19:48 <Vorpal> kallisti, syrofoamt?
16:19:50 <Vorpal> ;P
16:20:04 <kallisti> yes.
16:20:08 <kallisti> good eye.
16:20:10 <Vorpal> right
16:20:19 <elliott> I rather doubt synthetic styrofoam is cheaper than muck.
16:21:04 <kallisti> define "muck"
16:21:11 <oerjan> elliott: by volume?
16:21:21 <elliott> kallisti: Also "styrofoam" is a brand name and I suspect the real thing is rather more expensive than what most people call styrofoam.
16:21:24 <elliott> Also, I mean crap.
16:21:32 <elliott> As in what fizzie was talking about. :p
16:21:43 <elliott> "The production of one ton of styrofoam requires 685 US gallons (2,593 litres or liters) of oil, and emits 94,119/20,000 tons of CO2 and 2,055.8 tons of greenhouse gases."
16:21:50 <elliott> Nice.
16:21:54 <kallisti> hmmm a 6"x12" sheet of aluminum is $3. "0.32 thickness" whatever that means. measured by gauge maybe?
16:22:02 <Vorpal> elliott, ouch
16:22:03 <kallisti> that's incredibly cheap compared to everything mentioned so far.
16:22:12 <kallisti> considering it that's sold in thin sheets.
16:22:18 <kallisti> er
16:22:21 <kallisti> so yeah
16:22:27 <kallisti> if it were A BLOCK
16:22:30 <kallisti> it would be cheap.
16:22:38 <elliott> kallisti: Do you want my toy money.
16:22:41 <Vorpal> no it wouldn't
16:22:47 <kallisti> elliott: no.
16:22:55 <kallisti> Vorpal: if it magically became a block at the same price
16:22:55 <elliott> <kallisti> that's incredibly cheap compared to everything mentioned so far.
16:22:56 <kallisti> is what I meant
16:22:56 <elliott> <fizzie> ais523: Recycled sawdust/shavings at $7.85/cubic yard.
16:23:02 <elliott> i am rather sceptical
16:23:09 <kallisti> elliott: I judged too quickly. :
16:23:11 <kallisti> :
16:23:32 <elliott> [[
16:23:33 <elliott> How can reddit take itself seriously if we only boycott websites that we don't use, or don't have good replacements for(like GoDaddy). EA also supports SOPA. Stop playing BF3 and let's boycott it. (self.technology)
16:23:33 <elliott> submitted 11 hours ago by IggySmiles
16:23:33 <elliott> Seriously, EA has been just as bad of a company over the years, and it is supporting SOPA. Why isn't there an outcry against it?
16:23:33 <elliott> Edit Someone mentioned Nintendo, which is legit. Nintendo also supports SOPA. Obviously Nintendo is a much better company than the pile of shit that is EA, but sometimes our favorites are lead astray, and turning a blind eye to them doesn't help anybody. We can all get by with not buying Nintendo products for a few months. Again, we need to make sacrifices, and if we cant do that, then we don't deserve this free internet.
16:23:36 <kallisti> hmmm does plaster count as a solid?
16:23:37 <elliott> ]]
16:23:41 <elliott> god bless redditors, living in gameless poverty for FREEDOM
16:23:47 <fizzie> I can only find people willing to accept your styrofoam and packing materials at $8/cubic yard or so. People generally seem to be more interested in getting rid of that stuff than getting that stuff. :p
16:23:50 <elliott> it's almost as bad as the holocaust :'(
16:24:16 <elliott> fizzie: I don't see why ais523 doesn't count that as $-8/cy.
16:24:19 <kallisti> fizzie: shipping companies buy it to ship things. also people shipping stuff from their home I imagine.
16:24:28 <elliott> I mean, lots of people have styrofoam, you can easily put up an offer to accept it for that price.
16:24:52 <fizzie> kallisti: Yes, but everyone wants to get rid of it, so it's easier to find the latter.
16:24:57 <fizzie> Certainly people do buy it.
16:25:07 <kallisti> I wonder what the density of plaster is.
16:25:12 <kallisti> a 25 pound tub is $3
16:25:23 <kallisti> er
16:25:30 <kallisti> I CAN'T READ
16:25:38 <kallisti> an ounce tub is $3
16:26:07 <kallisti> ah wait here's a unit of volume.
16:26:11 <kallisti> half a gallon is $8
16:26:44 <Vorpal> kallisti, how many cubic yards are half a gallon?
16:27:03 <Vorpal> anyway I doubt it is solid if it sold in those units
16:27:09 <kallisti> elliott: operate the frink machine.
16:27:13 <kallisti> operator.
16:27:19 <elliott> `frink half gallon -> cubic yard
16:27:26 <kallisti> elliott: thank you, operator.
16:27:30 <HackEgo> 77/31104 (approx. 0.002475565843621399)
16:27:37 <kallisti> lol
16:27:43 <kallisti> I'm bad at this game.
16:27:47 <fizzie> Regular poly froam ("best utilized in custioning and padding applications -- excels as packaging material, for mailing and transporting") is $170/cubic yard.
16:27:52 <Vorpal> `frink litre -> cubic metre
16:27:54 <fizzie> I don't know about the rigid sort of styrofoam.
16:28:00 <fizzie> s/froam/foam/
16:28:00 <HackEgo> 1/1000 (exactly 0.001)
16:28:08 <kallisti> `frink american spelling -> british spelling
16:28:19 <HackEgo> Warning: undefined symbol "american". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "american". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Unconvertable expression:
16:28:21 <kallisti> piece of shit converter.
16:28:24 <Vorpal> kallisti, you need simple conversion ratios like <HackEgo> 1/1000 (exactly 0.001)
16:28:26 <elliott> froam
16:28:37 <Vorpal> `frink litre -> dm³
16:28:44 <elliott> Vorpal: Simple in decimal, maybe.
16:28:46 <HackEgo> Unknown symbol "dmB3" \ Warning: undefined symbol "dmB3". \ Unconvertable expression: \ 1/1000 (exactly 0.001) m^3 (volume) -> dmB3 (undefined symbol)
16:28:49 <Vorpal> elliott, well yes
16:28:51 <Vorpal> `frink litre -> dm^3
16:28:59 <HackEgo> 1
16:29:08 <Vorpal> elliott, now that is simple in all bases :P
16:29:29 <Vorpal> elliott, anyway human calculation is built on decimal
16:29:42 <kallisti> Vorpal: CULTURE BIAS
16:29:46 <kallisti> UNCULTURED FUCK
16:29:53 <Vorpal> elliott, anyway western human calculation is built on decimal
16:29:56 <Vorpal> there we go
16:30:05 <kallisti> NOT JUST WESTERN YOU UNCULTURED FUCK.
16:30:08 <Vorpal> yes I know about base 60 for the Babylonians and so on
16:30:16 <kallisti> NO YOU SUCK UGH
16:30:23 <kallisti> not pedantic enough
16:30:27 <kallisti> need more correctness
16:30:40 <kallisti> be more correct
16:30:40 <Vorpal> kallisti, sure, but western is, I didn't say anything about the other ones in the last statement
16:31:22 <Vorpal> kallisti, anyway aren't you american? You guys are /all/ cultural bias.
16:31:36 <kallisti> no your statements must be assertions about the entire universe where the negation is always implied to be false.
16:32:29 <ais523> doesn't /every/ statement imply its negation to be false?
16:32:37 <elliott> ais523: paraconsistent logic, man!
16:32:38 <ais523> unless it's sarcastic or similar?
16:32:43 <kallisti> using stereotypes to demonstrate cultural bias. beautiful.
16:32:54 <Vorpal> kallisti, indeed
16:33:03 <kallisti> I am the most political correct entity of all.
16:33:10 <kallisti> people bow down to my culturelessness.
16:33:23 <kallisti> ha. yes.
16:33:37 -!- MSleep has changed nick to MDude.
16:33:38 <kallisti> life is good as politically correct overlord
16:34:18 <Vorpal> C++-1x is not finalised yet is it?
16:34:33 <kallisti> anyway I'm going to go eat some lunch. happy kwanzaa guys!
16:34:40 <elliott> C++11 was finalised months before C11.
16:34:51 <Vorpal> elliott, how embarrassing
16:34:53 <Deewiant> Vorpal: C++11 i.e. ISO/IEC 14882:2011 was published in September
16:34:58 <Vorpal> Deewiant, right
16:36:46 <elliott> "Why are monads useful?", http://mathoverflow.net/questions/84309/why-are-monads-useful
16:36:57 * elliott was pleasantly surprised by the URL behind the link.
16:37:23 <kallisti> because astronauts
16:39:02 <elliott> Hmm, 110 over 7.5.
16:39:02 <kallisti> the top rated answer is basically gibberish to me.
16:41:04 <kallisti> this must be how you get upvotes on mathoverflow
16:41:14 <oerjan> kallisti: hint, it's "math", not "stack"
16:41:23 <kallisti> pack as much theoretical nonsense into every sentence as possible.
16:41:54 <fizzie> ais523: Anyway, regarding your "dirt cheap isn't cheap", no matter what you think of the absolute price, it's still relatively speaking cheaper than almost anything else. You have to pay more for most kinds of scrap, for example. (80/20 PET bottles come at $18/cubic yard, "post-consumer, unwashed". ABS plastic scrap, 70% from TVs and 30% from monitors, at $13/cy.)
16:42:00 <elliott> kallisti: you *are* kidding, right?
16:42:13 <kallisti> about the last thing i said? yes.
16:42:26 <kallisti> but yes the top rated answer is gibberish to me.
16:42:31 <Vorpal> fizzie, wasn't the saw dust cheapest so far?
16:42:37 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=cheapest+solid I DON'T WANT WOOD FLOORING
16:43:03 <Vorpal> elliott, heh
16:43:04 <fizzie> Vorpal: Well, it's in the same ballpark as topsoil (i.e.) dirt. The prices I've quoted have been from random places, I haven't really been trying to find the cheapest supplier.
16:43:11 <Vorpal> elliott, try wolfram alpha
16:43:39 <fizzie> "(data not available)"
16:43:41 <elliott> "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd
16:44:04 <Vorpal> fizzie, how boring
16:44:08 <kallisti> elliott: pretty soom yollb ecome amfous
16:44:22 <elliott> fizzie: There's some really incomprehensible part of me that thinks buying dirt would be a good idea, since hey, it's so cheap.
16:44:35 <oerjan> kallisti: don't worry, it's 90% gibberish to me too
16:44:35 <Vorpal> elliott, for what?
16:44:55 <elliott> Vorpal: ?
16:44:57 <kallisti> oerjan: what, you don't know about the Geometry of Iterated Loop Spaces?
16:45:01 <Vorpal> <elliott> "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd
16:45:04 <Vorpal> elliott, that
16:45:05 <oerjan> kallisti: shockingly, no
16:45:15 <elliott> Vorpal: Units.
16:45:39 <Vorpal> elliott, what website I meant
16:45:52 <kallisti> oerjan: I wonder if anyone else knows what he meant or if they just upvoted it because it's all math sounding.
16:45:58 <kallisti> maybe he just made up a bunch of stuff.
16:46:08 <elliott> Vorpal: The website from which units are measured.
16:46:11 <kallisti> maybe it's conespearacy
16:46:23 <Vorpal> elliott, give me the url to it please
16:46:42 <oerjan> kallisti: i assume that question is _for_ category theorists, who would know about such things.
16:47:07 <elliott> Vorpal: Why?
16:47:13 <Vorpal> elliott, why not?
16:47:22 <Vorpal> elliott, because you are a kind person?
16:47:39 <kallisti> elliott: because you believe in the benefit of sharing
16:47:47 <Vorpal> kallisti, that too
16:48:07 <elliott> We've already established I'm evil!
16:48:14 <kallisti> because mutual selflessness creates a sense of community?
16:48:17 <elliott> 15:35:56: <fizzie> oerjan: Elliott keeps making withdrawals from everyone's Self-Esteem Account to fill his Ego Balloon. It's... subconscious. (A Penny Arcade reference.)
16:48:21 <kallisti> BECAUSE MORALS ETC
16:48:38 <Vorpal> I don't know if this idiom exist in English but "delad glädje är dubbel glädje" translates to "shared joy is double joy"
16:48:48 <oerjan> Vorpal: i think elliott might want to keep you away from that website, for the good of humanity.
16:48:55 <elliott> Quite.
16:48:57 <Vorpal> oerjan, what website would that be?
16:49:06 <kallisti> .....
16:49:11 <elliott> google.com
16:49:11 <oerjan> Vorpal: do i look like i want to doom humanity?
16:49:12 <kallisti> NICE TRY.
16:49:17 <Vorpal> oerjan, yes
16:49:23 <Vorpal> oerjan, I guess I could log read for it
16:49:29 <oerjan> ok, so i do, but not in _quite_ such a painful way.
16:49:49 <Vorpal> oerjan, what if I promise to not become active on it?
16:49:57 <kallisti> wat
16:50:05 <Vorpal> kallisti, do you know what website this is?
16:50:09 <kallisti> no
16:50:09 <elliott> no
16:50:11 <elliott> kallisti knows nothing
16:50:13 <kallisti> I bet i could find it though
16:50:13 <Vorpal> aww
16:50:15 <kallisti> quickly.
16:50:26 <Vorpal> kallisti, well I don't know what to search for exactly
16:51:30 <Vorpal> oerjan, anyway come on, you can tell me, I won't tell anyone, nor use this info for anything
16:51:33 <oerjan> i mean, pushing a black hole into the earth is so much cleaner and quicker.
16:52:01 <Vorpal> I could probably just log read for it, but that would take time
16:52:03 <oerjan> hm i guess "pushing" is the wrong word, you can only use gravity to pull it
16:52:03 <elliott> oerjan: pls don't kill me btw
16:52:59 <kallisti> Vorpal: okay fine I'll spare you.
16:53:00 <Vorpal> oerjan, anyway I might stumble onto it by accident, and if I didn't know which website it was I could not possibly hope to avoid it
16:53:02 <kallisti> http://sourcereal.com/
16:53:04 <oerjan> elliott: maybe i can find room for you on my glorious spaceship
16:53:09 <elliott> kallisti: dammit
16:53:11 <elliott> we're all doomed now.
16:53:23 <Vorpal> oh I heard that mentioned some time ago. *shrug*
16:53:27 <elliott> lmao
16:53:34 <elliott> lmaooooooooo
16:53:38 <Vorpal> elliott, yes I realise it isn't that
16:53:38 <oerjan> now Vorpal will kill the world with sour cereal
16:53:38 <Vorpal> :P
16:53:52 <kallisti> the best part of the website
16:53:53 <kallisti> is
16:53:54 <Vorpal> it definitely doesn't seem to be related to what elliott said at all
16:53:56 <kallisti> ..actually I can't decide
16:53:59 <kallisti> I like the table though
16:54:22 <Vorpal> kallisti, yes it quite nice
16:54:26 <Vorpal> it is*
16:55:46 <elliott> kallisti: it's a chart, not a table!
16:55:47 <elliott> sheesh
16:55:49 <Vorpal> oerjan, anyway I can tell you I would not use the knowledge of that site for anything. :P
16:56:09 <kallisti> elliott: invalid element <chart> in line elliott in elliott.html
16:56:22 <elliott> kallisti: it says chart on the page, twice
16:56:27 * elliott _really_ wants to know who owns sourcereal.com
16:56:39 <kallisti> HTML SUPERCEDES ENGLISH COMPREHENSION
16:57:07 <kallisti> or... don't you read html source and render web pages manually?
16:57:22 * kallisti is a Gecko-like user agent.
16:57:34 <Vorpal> kallisti, what is your user agent string?
16:58:34 <kallisti> "Mozilla/5.0 Windows Linux AppleWebKit Safari Gecko-like Chrome KHTML kallisti is t3h l33tz0r35t"
16:58:41 <Vorpal> heh
16:58:57 <kallisti> actually it's that thing that gregor linked.
16:59:06 <kallisti> where he grepped through his server log and mashed up a bunch of useragents.
16:59:12 <Vorpal> right
16:59:30 <kallisti> yes
16:59:33 <kallisti> inded
16:59:51 <Vorpal> /^kal/s/e/ee/
17:00:04 <kallisti> wat
17:00:14 <Vorpal> kallisti, that is a plain sed expression
17:00:21 <Vorpal> what is the problem?
17:00:23 <kallisti> i don't grok sed.
17:00:28 <kallisti> I accept only perl.
17:00:36 <Vorpal> kallisti, on line starting with "kal" replace e with ee
17:00:41 <Vorpal> so <kallisti> inded
17:00:45 <kallisti> oh okay
17:00:48 <Vorpal> would become <kallisti> indeed
17:00:51 <kallisti> I see.
17:00:54 <kallisti> but no
17:00:56 <kallisti> it's inded
17:00:57 <Vorpal> kallisti, anyway I don't grok perl
17:01:00 <kallisti> sorry your regex is meaningful
17:01:06 <kallisti> less
17:01:08 <kallisti> meaningfulness
17:01:10 <kallisti> +l
17:01:12 <kallisti> ...
17:01:12 <kallisti> :)
17:01:15 <Vorpal> it is indeed
17:01:19 <Vorpal> :P
17:01:23 <kallisti> yes it is meaningfulless
17:01:24 <oerjan> lessfulmess
17:01:54 <Vorpal> kallisti, anyway it is meaningfulness
17:01:56 <elliott> <Vorpal> kallisti, on line starting with "kal" replace e with ee
17:01:57 <Vorpal> not meaningfulless
17:01:58 <elliott> <Vorpal> so <kallisti> inded
17:02:00 <elliott> <Vorpal> would become <kallisti> indeed
17:02:03 <elliott> this is incorrect
17:02:12 <kallisti> elliott: just think, without my inclination to ponder the notion of sour cereal, and monqy's initiative to google it, WE WOULD HAVE NEVER OFUND THIS SITE
17:02:18 <elliott> kallisti: uh
17:02:19 <Vorpal> elliott, not at all, my client adds the <> when copying
17:02:22 <elliott> monqy linked sour cereal first
17:02:22 <Vorpal> elliott, it doesn
17:02:23 <elliott> ages ago
17:02:25 <Vorpal> doesn't* show them
17:02:27 <kallisti> elliott: oh.
17:02:31 <elliott> and implied he'd known about it for ages
17:02:34 <kallisti> elliott: I see.
17:02:49 <elliott> Vorpal: your statement was still incorrect
17:02:58 <Vorpal> elliott, how so?
17:03:25 <elliott> Vorpal: because <kallisti> inded
17:03:28 <elliott> would not become <kallisti> indeed.
17:03:39 <Vorpal> elliott, what would happen instead?
17:04:09 <kallisti> elliott, master of tautology
17:04:22 <elliott> Vorpal: it would become <kallisti> inded.
17:04:28 <kallisti> "your statement is incorrect because the thing you said it would do is not what it does"
17:04:28 <elliott> because <kallisti> inded does not start with kal.
17:04:45 <Vorpal> elliott, oh but it does since <> are not shown in my irc client
17:05:10 <kallisti> Vorpal: cultural bias
17:05:31 <kallisti> gtb2 swedeen wiit your <>fullessness
17:05:31 <Vorpal> kallisti, definitely
17:05:39 <elliott> Vorpal: you are incorrect.
17:05:47 <Vorpal> elliott, I am not
17:06:03 <Vorpal> elliott, the expression applied to the line I saw in my irc client
17:06:10 <Vorpal> NOT to the actual data sent from the server
17:06:14 <Vorpal> or anything like that
17:06:25 <oerjan> elliott: wait, this means that by choosing substitution expressions carefully, we can get Vorpal to see a different irc than the rest of us. this has mindboggling possibilities. well, if he would notice.
17:06:35 <kallisti> < elliott> kallisti knows nothing <-- Can anyone truly know anything?
17:06:47 <Vorpal> nope
17:08:40 <kallisti> llklllkllklklkllklklllllkllklllllllkllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk
17:08:46 <kallisti> challenge: make this into an esolang
17:08:54 <kallisti> er
17:08:56 <kallisti> an example program
17:08:57 <kallisti> rather
17:09:02 <kallisti> in an esolang
17:09:05 <kallisti> of your design
17:09:06 <Vorpal> easy
17:09:14 <Vorpal> kallisti, l and k are nop instructions
17:09:22 <kallisti> challenge: make it not shitty
17:09:26 <kallisti> gogogogo
17:09:28 <Vorpal> kallisti, tricky
17:09:47 <elliott> <oerjan> elliott: wait, this means that by choosing substitution expressions carefully, we can get Vorpal to see a different irc than the rest of us. this has mindboggling possibilities. well, if he would notice.
17:09:53 <elliott> oerjan: he already does. his only has one line of scrollback.
17:10:09 <elliott> actually i should start digging on him in some other way now that he's co-opted that as a point o pride
17:10:11 <oerjan> elliott: oh right.
17:10:11 <elliott> hmm
17:10:16 <kallisti> i would go by either the lengths of adjacent l's and k's to mean different instructions, or use the k as a statement delimiter
17:10:22 <Vorpal> kallisti, "llklllkllklklkllklklllllkllklllllll" is defined to print "Hello, " and "kllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk" to print "World!"
17:10:26 <Vorpal> still shitty
17:11:30 * oerjan notes that sourcereal.com reminds him of zzo38
17:11:35 <Vorpal> kallisti, it is actually valid trefunge
17:11:41 <Vorpal> doesn't do anything interesting
17:11:52 <kallisti> oerjan: I njoted this aswel
17:11:52 <Vorpal> I think it just goes off into negative z right away
17:12:05 <Vorpal> or perhaps positive z
17:12:08 <oerjan> `log [z]zo.*sourcereal
17:12:10 <Vorpal> not completely sure
17:12:40 <HackEgo> No output.
17:12:49 <oerjan> ARGH, NO EVIDENCE
17:16:01 <Vorpal> oerjan, it obviously isn't zzo who made it
17:16:25 <Vorpal> oerjan, why? gopher://sourcereal.com/ doesn't work
17:16:36 <kallisti> elliott: http://sprunge.us/iZJe
17:16:38 <oerjan> ...you have a point there.
17:16:51 <Vorpal> oerjan, and the design is too advanced for his style as well
17:17:35 <kallisti> elliott: saddly, it expires in 2013
17:17:46 <kallisti> but was apparently updated yesterday?
17:18:40 <elliott> updated howso
17:18:46 <kallisti> I don't know
17:18:54 * elliott already whois'd it ages ago
17:19:07 <kallisti> you clever dog.
17:20:43 <ais523> so, what is this sour cereal site?
17:21:02 <kallisti> THE BEST
17:21:24 <kallisti> it is a site with helpful information about sour cereal
17:21:35 <kallisti> also other cereals
17:21:40 <kallisti> such as cereal
17:21:55 <Vorpal> so ;5are on?
17:22:00 <Vorpal> colours are on*
17:22:05 <kallisti> yes
17:22:09 <Vorpal> dammit I forgot syntax for bg colour
17:22:17 <kallisti> now we can be obnoxious with no penalty.
17:22:20 <Vorpal> test
17:22:26 <fizzie> Vorpal: It's an experiment. So far it has led to just one rainbow.
17:22:31 <Vorpal> fizzie, ah
17:22:39 <Vorpal> fizzie, what is the syntax for bg colour?
17:22:42 <fizzie> kallisti: And the "Half a bowl", which may be a cereal.
17:22:44 <elliott> hi
17:22:49 <elliott> im giong to talk like this from now on
17:22:52 <Vorpal> well elliott found it
17:22:58 <elliott> fizzie: It's a rather long-running experiment by now :P
17:23:00 <fizzie> Isn't it just with comma? I forget.
17:23:04 <elliott> Yes, it's comma.
17:23:04 <ais523> Vorpal: ^[[40m to ^[[47m
17:23:05 <Vorpal> test
17:23:07 <Vorpal> yes
17:23:07 <elliott> 9,9sup
17:23:09 <Vorpal> test
17:23:09 <elliott> oop
17:23:10 <elliott> s
17:23:11 <elliott> sup
17:23:12 <Vorpal> test
17:23:14 <ais523> and ^[[49m to go back to the default
17:23:20 <Vorpal> ais523, no for irc :P
17:23:24 * oerjan runs screaming under a rock
17:23:26 <Vorpal> ais523, not for terminal
17:23:28 <elliott> The GREEN SUN.
17:23:32 <elliott> Yay, I gots it right.
17:23:35 <Vorpal> oerjan, heh
17:23:37 <ais523> elliott: ah you OK?
17:23:43 <elliott> ais523: Ah I OK.
17:24:04 <Vorpal> oerjan, well there it is then
17:24:09 <fizzie> elliott: I sort of forgot to disable it when the stipulated hour had gone.
17:24:14 <Vorpal> the only useful one is bold IMO
17:24:14 -!- incomprehensibly has quit (Quit: Leaving.).
17:24:28 <Vorpal> oerjan, there should be a way to block colours but allow bold
17:24:41 * elliott only wants it for bold.
17:24:45 <elliott> And occasional fun-rainbows, I suppose.
17:24:48 <kallisti> HELLO EVERYONE THIS IS MY EXCELLENT MESSAGE ABOUT THE BENEFITS OF GOOD COLOR CHOICES
17:24:58 <elliott> I don't think anyone is stupid enough to actually use colours for non-novelty purposes in here.
17:25:04 <Vorpal> indeed
17:25:30 <fizzie> Hey, how do I configure my client to use a specified color by default for all messages.
17:25:34 <kallisti> DON'T FORGET UNDERLINE
17:25:38 <elliott> TEST
17:25:42 <Vorpal> kallisti, oh right
17:25:43 <elliott> This will show as italic to ais523.
17:25:48 <kallisti> fizzie: /help quit
17:25:51 <elliott> kallisti: What code's that again?
17:25:54 <elliott> kallisti: */quit help
17:25:58 <ais523> elliott: indeed
17:26:03 <Vorpal> test
17:26:04 <kallisti> elliott: I don't actually know but in irssi it's C-_
17:26:04 <Vorpal> test
17:26:06 <Vorpal> test
17:26:07 <Vorpal> ah
17:26:10 <ais523> and this shows as italic to me, but probably not anyone else
17:26:13 <elliott> hi
17:26:14 <Vorpal> http://google.com
17:26:15 <Vorpal> heh
17:26:18 <elliott> lol
17:26:21 <elliott> that's uncanny
17:26:22 <ais523> underline like this?
17:26:29 <elliott> `addquote <Vorpal> http://google.com
17:26:32 <HackEgo> 777) .18.<.Vorpal.>.. .2.http://google.com
17:26:35 <elliott> aw :(
17:26:36 -!- incomprehensibly has joined.
17:26:37 <elliott> that was quotable!
17:26:40 <elliott> `delquote 777
17:26:42 <Vorpal> elliott, it was
17:26:44 <ais523> elliott: the hilarious thing is, that my IRC client currently shows links as underlined and the same colour as the rest of the text
17:26:44 <HackEgo> ​*poof* .18.<.Vorpal.>.. .2.http://google.com
17:26:55 <ais523> and /also/ filters out colour codes in what's sent, but not underlines
17:26:56 <elliott> ais523: mine shows them as normal text, and underlined on hover
17:26:58 <elliott> heh
17:27:02 <Vorpal> hah
17:27:07 <ais523> the result is, that Vorpal's comment is indistinguishable from if it had been unformatted
17:27:10 <Vorpal> <elliott> ais523: mine shows them as normal text, and underlined on hover <-- same
17:27:21 <Vorpal> ais523, well it was a blue underlined link
17:27:26 <kallisti> tasteful colors are good
17:27:29 <ais523> Vorpal: I guessed from context
17:27:37 <Vorpal> kallisti, that is the default colour of my own lines :P
17:27:38 <Vorpal> grey
17:27:55 <kallisti> some colors are the worst colors ever invented
17:27:57 <kallisti> oops
17:28:02 <kallisti> some colors are the worst colors ever invented
17:28:03 <Vorpal> kallisti, teal?
17:28:09 <Vorpal> err, light teal?
17:28:09 <kallisti> no bright fucking cyan
17:28:13 <kallisti> my least favorite color.
17:28:15 <Vorpal> kallisti, light teal here
17:28:17 <ais523> kallisti: I like cyan!
17:28:30 <ais523> oh no, we're not going to get into a flamewar about whether cyan is a good colour or not, are we?
17:28:34 <kallisti> no
17:28:44 <ais523> aww :(
17:28:47 <kallisti> my text is like my soul
17:28:49 <Vorpal> ais523, I think cyan is awesome because of printing
17:28:53 <ais523> elliott: oh, I had sgthoughts
17:29:08 <Vorpal> <kallisti> my text is like my soul <-- mudane?
17:29:11 <ais523> I was thinking about one of my potential solutions to solve the deletions problem
17:29:24 <ais523> and it not only solves both deletions and moves, but it also makes everything more orthogonal
17:29:25 <kallisti> Also now I can be Doc Scratch (at least for people with sensible default background colors)
17:29:26 <elliott> ais523: i had sgthoughts too, but they were all parodies of yours
17:29:33 <ais523> because it removes SOF and EOF too as explicit symbols
17:29:38 <elliott> kallisti: that's black not white
17:29:41 <Vorpal> ais523, I like how sgthoughts is one word
17:29:43 <elliott> test
17:29:49 <kallisti> elliott: well yes, but... that's not the point.
17:29:50 <ais523> 6test?
17:29:51 <elliott>
17:29:53 <Vorpal> elliott, light grey on white?
17:29:53 <kallisti> the point is that it's hard to read
17:29:54 <elliott>
17:30:03 <elliott> kallisti: not for me
17:30:05 <Vorpal> that was no text at all
17:30:06 <ais523> hey, no fair sending empty messages
17:30:11 <elliott> they're not empty
17:30:11 <ais523> because Freenode doesn't let me
17:30:14 <elliott> they contain a single control character
17:30:17 <elliott>
17:30:17 <ais523> ah, I see
17:30:21 <Vorpal> ooh time for...
17:30:21 <kallisti> elliott: that's because you either have a) youthful eyes b) a non-sensible background color
17:30:25 <elliott> kallisti: b
17:30:30 <elliott> but also a
17:30:37 <Vorpal> -e ASCII BELL!
17:30:39 <Vorpal> err
17:30:40 <elliott> wow
17:30:41 <elliott> that
17:30:42 <elliott> that worked
17:30:43 <kallisti> lol
17:30:44 <elliott> how
17:30:48 <elliott> that
17:30:49 <Vorpal> elliott, it didn't
17:30:52 <elliott> actually made my pc speaker beep Vorpal
17:30:54 <elliott> seriously
17:30:55 <Vorpal> elliott, it did?
17:30:57 <Vorpal> lol
17:30:58 <elliott> well
17:30:58 <elliott> try it again
17:31:03 <Vorpal> elliott, I did /exec -o echo -e 'ASCII BELL!\007'
17:31:10 <Vorpal> but why the fuck was -e pasted into there
17:31:12 <elliott>
17:31:13 <Vorpal> <Vorpal> -e ASCII BELL!
17:31:14 <elliott> yep
17:31:15 <elliott> it works
17:31:16 <kallisti> I have system alert turned off like any sane person.
17:31:17 <elliott> on xchat
17:31:18 <Vorpal> why
17:31:19 <Vorpal> the fuck
17:31:21 <elliott>
17:31:22 <ais523> kallisti: background colors lead to a flamewar over AceHAck
17:31:23 <elliott> aw
17:31:24 <elliott> only one per line
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:33 <elliott> beautiful
17:31:33 <elliott> ok
17:31:35 <Vorpal> elliott, it doesn't beep me
17:31:36 <elliott> i'lls top now
17:31:38 <ais523> which I've potentially fixed via an option
17:31:40 <Vorpal> just fyi
17:31:41 <elliott> Vorpal: do you have pcspkr loaded
17:31:47 <ais523> elliott: what sound does your client make in response to a nickping?
17:31:50 <Vorpal> elliott, nope and xchat is set to not beep at all
17:31:53 <elliott> ais523: none
17:31:55 <kallisti> hahahahahaha nickping sounds
17:32:02 <ais523> IIRC, it leads to a PC speaker beep in Freenode webclient on Firefox on Scientific Linux
17:32:02 <kallisti> another thing that unsane people do.
17:32:06 <kallisti> also nickcoloring.
17:32:22 <kallisti> clearly the most sensible thing to do is irssi with mostly default settings.
17:32:24 <Vorpal> nick colouring is horrible
17:32:33 <ais523> Vorpal: oh, I never bothered to turn it off
17:32:39 <kallisti> because irssi is THE CLIENT OF THE FUTURE </fanboy>
17:32:44 <Vorpal> kallisti, I just use grey for self, blue for other, red for other highlighting me
17:32:45 <ais523> although it's not very good at picking unique colours (e.g. elliott and kallisti have the same colour right now)
17:33:01 <elliott> what colour am i
17:33:04 <ais523> Vorpal: I do pink for self, white for other, red for highlight, but on the actual message, not on the nick
17:33:05 <Vorpal> elliott, blue
17:33:08 <ais523> elliott: purple
17:33:16 <elliott> wwhy
17:33:21 <elliott> ok that's the first and last time i'm doing that
17:33:23 <Vorpal> ais523, on whole line except for the blue case where I have black text
17:33:34 <ais523> Vorpal: what colour's the background?
17:33:38 <Vorpal> ais523, white
17:33:46 <ais523> so your own comments are grey on white? seriously?
17:33:51 <Vorpal> ais523, dark grey
17:33:52 <kallisti> hi
17:33:56 <Vorpal> ais523, it is almost default xchat
17:34:07 <ais523> %AACTION test%A
17:34:12 <ais523> hmm
17:34:14 <Vorpal> ais523, nope
17:34:18 <ais523> % letter often means control-letter on this client
17:34:19 <Vorpal> you want \001
17:34:22 <Vorpal> ah
17:34:23 <ais523> but not for control-A, it seems
17:34:28 <ais523> Vorpal: I know how to do a CTCP
17:34:33 <Vorpal> right
17:34:34 <ais523> I was just wondering if my client would translate that into one
17:35:01 * oerjan tests
17:35:08 <ais523> oerjan: that is a valid CTCP
17:35:12 <elliott> abcde fuck it this is boring
17:35:41 <elliott> fizzie: Also I don't think "rainbow" is quite the right word for my initial colour spew.
17:36:06 <fizzie> Well, "broken rainbow".
17:36:10 <kallisti> > text "\EXT3hi"
17:36:11 <lambdabot> <no location info>:
17:36:11 <lambdabot> lexical error in string/character literal at chara...
17:36:23 <elliott> fizzie: Brainbow.
17:36:33 <fizzie> You brainbower.
17:36:46 <Vorpal> elliott, watch out for the zombies then
17:36:48 <fizzie> Sounds a brony term.
17:36:48 <ais523> hmm, I am almost convinced there's a website out there somewhere that does rainbow-coloured phpBB code
17:36:57 <kallisti> > text "\ETX3hi"
17:36:58 <lambdabot> 3hi
17:37:00 <kallisti> :(
17:37:06 <kallisti> it's like Cale KNOWS
17:37:29 <ais523> on the basis that it's the most plausible explanation for people posting rainbow colours on phpBB forums (there are other possible explanations, but I see them as less likely)
17:38:10 * kallisti wrote a script for his mud client that spewed rainbow text via ANSI codes.
17:38:15 <kallisti> I was very well-liked.
17:38:25 <elliott> sh: -c: line 0: unexpected EOF while looking for matching `''
17:38:25 <elliott> sh: -c: line 1: syntax error: unexpected end of file
17:38:27 <elliott> ...
17:38:32 <elliott> well that stealth beep backfired
17:38:42 <Vorpal> elliott, heh
17:38:56 <Vorpal> elliott, anyway I believe colour blocking does not block ascii bells
17:39:07 <Vorpal> so people probably should filter it out in their clients
17:39:08 <kallisti> > text '\b'
17:39:09 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
17:39:09 <lambdabot> against inferred ty...
17:39:14 <kallisti> > text "\b"
17:39:17 <Vorpal> least someone spam them with it
17:39:23 <kallisti> > text "hi\b"
17:39:23 <lambdabot> hi
17:39:55 <kallisti> I'm guessing lambdabot filters it.
17:39:57 <Vorpal> elliott, btw bell is \007
17:40:29 <fizzie> ^bf +++.,[.,]!2I'm so blue
17:40:30 <fungot> I'm so blue
17:40:37 <elliott> Vorpal: i know that
17:40:37 <Vorpal> heh
17:40:41 <kallisti> > text "hi\a"
17:40:42 <lambdabot> hi
17:40:54 <elliott> fizzie: Careful, you'll attract plasmoids.
17:41:06 <Vorpal> elliott, eh?
17:41:13 -!- incomprehensibly has quit (Quit: Leaving.).
17:41:17 <Vorpal> this likely looks horrible?
17:41:19 <Vorpal> yes
17:41:41 <Vorpal> is that red on orange?
17:41:43 <Vorpal> I think it is
17:41:44 <elliott> beautiful
17:41:56 <Vorpal> 4,8 anyway
17:42:55 <Vorpal> elliott, THIS MESSAGE IS OF GREAT IMPORTANCE!!!
17:43:01 <Vorpal> ouch
17:43:23 <elliott> fizzie must be loving this experiment.
17:43:32 <Vorpal> come on it is for novelty still
17:43:46 <elliott> More like LOLVELTY.
17:43:50 <Vorpal> it is going to pass
17:44:01 <Vorpal> anyway red,bold,underline is horrible
17:44:35 <kallisti> How could I possibly make things worse
17:44:43 <kallisti> hm
17:44:54 <Vorpal> bbl food
17:44:56 <fizzie> Your computer must've given up partway through.
17:45:02 <kallisti> How could I possibly make things worse
17:45:08 <kallisti> I accidentally typed a clear code.
17:45:39 <elliott> beautiful
17:45:40 <ais523> just bold random letters, and also capitalize random letters
17:45:44 <elliott> do links work like that
17:45:50 <ais523> hmm, perhaps I'll need a script to do that
17:46:00 <ais523> elliott: http://test.%Bexample%B.com
17:46:05 <elliott> ais523: fail
17:46:13 <ais523> oh, hmm, my client doesn't interpret bolding inside a link?
17:46:23 <ais523> even more confusing, it's decided that what I /did/ write is a link to http:
17:46:41 <ais523> and when I clicked on it, Firefox told me that "http:///" is an invalid address
17:46:57 <ais523> conclusion: that line really badly confuses Konversation
17:47:42 <kallisti> I think green would be a pleasant color to use all the time.
17:47:49 <elliott> This convergence rate sucks.
17:47:50 <kallisti> but not if everyone is using custom colors all the time
17:48:27 <elliott> kallisti: -Are you sure adopting a personal typing style is a good idea?-
17:48:32 <elliott> kallisti: -You might come to regret it quickly.-
17:49:00 <kallisti> no
17:49:42 <ais523> note that I'm still blocking colours
17:49:51 <ais523> and thus, am still having problems following the conversation
17:50:03 <elliott> "As I became older, I decided that Mr. Dickens had given Ebenezer Scrooge an undeserved reputation for villainy [...] you will see the villainy not in my client’s character, but in Charles Dickens’ miscasting of the true heroes of the time of which he wrote, namely, the industrialists and financiers who created that most liberating epoch in human history: the industrial revolution."
17:50:05 <elliott> "It is out of profound respect for those whose pursuits of their selfish interests have done far more to better the lives of others than have the combined efforts of all the self-styled altruists, saints, social workers, politicians, and other mischievous beings, that I have undertaken this defense of one of the most maligned financiers of this humanizing epoch. As you read my defense of Scrooge, and make a comparative judgment of my client and h
17:50:05 <elliott> is accuser, Charles Dickens, I ask you to keep in mind the warnings of another 19th-century writer, Anatole France, who observed: "Those who have given themselves the most concern about the happiness of peoples have made their neighbours very miserable.""
17:50:05 <ais523> -elliott: talking like The Baron only works if you do it properly-
17:50:10 <ais523> -but indeed, it truly is scary-
17:50:12 <elliott> ^ this is actually serious
17:50:30 <elliott> god bless libertarians
17:50:35 <ais523> elliott: do you agree with it?
17:50:52 <elliott> ais523: what do /you/ think?
17:51:06 <kallisti> How could I possibly make things worse
17:51:07 <ais523> elliott: probably no, but it's hard to tell over the Internet
17:51:47 <kallisti> Christmas themed.
17:52:03 <elliott> ais523: I, er, invite you to assume I'm not terrible and/or idiotic whenever the question comes up
17:52:18 <elliott> ais523: anyway, tell me sgthoughts, I wasn't able to come up with any solutions myself
17:52:23 <oerjan> but that would be prejudiced!
17:52:26 <elliott> although the non-solutions i came up with were entertaining
17:52:44 <iconmaster> oh cool I just learned that text colous is in fact a thing and something I can do
17:52:53 <iconmaster> testing with the ^K9Green Sun
17:52:59 <kallisti> good job. go forth and conquer.
17:53:01 <iconmaster> gah powsh silly thing
17:53:03 <kallisti> and get banned in a lot of channels.
17:53:05 <elliott> <elliott> The GREEN SUN.
17:53:07 <elliott> WAY AHEAD OF YOU MAN
17:53:10 <ais523> elliott: basically, the state used to represent a file is a series of {lines for now, perhaps other units later}, each of which contains the content, and two labels
17:53:11 <elliott> Aw, it didn't copy the: colours.
17:53:18 <ais523> which are the hashes of two changes
17:53:35 <elliott> ais523: OK, go on
17:53:49 <ais523> which correspond to the last thing that changed that line or the line before it; and the last thing that changed that line or the line after it
17:54:08 <iconmaster> there?
17:54:18 <elliott> iconmaster: Yes, appropriately retina-burning.
17:54:22 <ais523> then you have "insert X between A and B" which gives the resulting line {X,X} and changes no other hashes
17:54:28 <iconmaster> whew my irc client won't allow me to ctrl+anything
17:54:33 <elliott> ais523: err, X is a string, not a hash
17:54:34 <elliott> do you mean
17:54:37 <kallisti> ಠ_ಠ
17:54:42 <elliott> C = insert X between A and B which gives the resulting line {C,C}?
17:54:43 <ais523> elliott: right, sorry
17:54:44 <kallisti> (sees this emoticon a lot recently)
17:54:48 <ais523> that's exactly what I meant
17:55:21 <ais523> E = delete A to B between C and D, which changes {Y,C} to {Y,E} and {D,Z} to {E,Z}
17:55:30 <elliott> ais523: wait, stop
17:55:31 <elliott> changes it where?
17:55:33 <elliott> globally?
17:55:43 <ais523> elliott: no, just changes the hashes in the representation of the file
17:55:50 <ais523> as in, the state of the file is a set of lines, and two hashes for each line
17:55:51 <elliott> ais523: globally to taht file, I mean
17:55:53 <elliott> *that
17:55:55 <fizzie> ^bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!it is time for computer-assisted rainbows
17:55:55 <fungot> it is time for computer-assisted rainbows
17:55:58 <elliott> ais523: what if multiple entries have those hashes?
17:55:59 <ais523> those lines only appear once in that file?
17:56:00 <elliott> is that possible?
17:56:16 <ais523> it's not possible, each hash can only be used once as a before-hash and once as an after-hash, at most
17:56:17 <elliott> OK, fair enough
17:56:20 <fizzie> ^def rainbow bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]
17:56:20 <fungot> Defined.
17:56:24 <fizzie> save
17:56:26 <fizzie> ^save
17:56:26 <fungot> OK.
17:56:30 <elliott> ais523: is it correct to say that if you just look at the hashes, a file always follows the structure:
17:56:37 <elliott> {a,b}, {b,c}, {c,d}, {d,e}, ...
17:56:43 <ais523> no
17:56:55 <ais523> if you just do insertions, it's {a,a}, {b,b}, {c,c}, …
17:56:58 <elliott> ah, right
17:57:08 <elliott> I suppose my problem is that I have no idea what the tuple is supposed to mean
17:57:10 <elliott> what does it mean?
17:57:34 <iconmaster> i wonder what a color value of 17 would do
17:57:36 <ais523> elliott: the change that last touched that line that things before it should care about, the change that last touched that line that things after it should care about
17:57:39 <iconmaster> woah
17:57:41 <kallisti> ^rainbow WHAT HAVE YOU DONE
17:57:41 <fungot> WHAT HAVE YOU DONE
17:57:51 <fizzie> I done good.
17:57:56 <elliott> It's not very rainbewy.
17:57:57 <ais523> the important insight is that you care about different things when checking after or before a line
17:58:01 <kallisti> I'm agree
17:58:01 <elliott> Well, I suppose it's the best you can do.
17:58:03 <elliott> We need IRC256.
17:58:07 <kallisti> with fizzle and tellot
17:58:12 <elliott> ais523: hmm, OK
17:58:13 <fizzie> It doesn't do numbers larger than 9, that's a problem too.
17:58:14 <kallisti> both
17:58:18 <kallisti> time as same it
17:58:19 <fizzie> I couldn't be bothered to multi-digit.
17:59:00 <elliott> ais523: I think the "or" and the seeming special-case of 1 line above/below in the definition of tuple are worrisome, but this doesn't seem too bad so far
17:59:13 <fizzie> And I skipped 1 too, because no black lights here, so it's just 2..9.
17:59:30 <ais523> elliott: simple example: say (with one letter per line) you have ABEF, then change it to ABCDEF, back to ABEF, then to AXBEF, then do AXBYEF
17:59:30 <fizzie> ^bf +++>>>>,[<<<<>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!looks like this if you drop the ^C
17:59:31 <fungot> 2l3o4o5k6s7 8l9i2k3e4 5t6h7i8s9 2i3f4 5y6o7u8 9d2r3o4p5 6t7h8e9 2^3C
17:59:57 <ais523> now, if you started with the same ABEF and changed it to ABYEF, you want that change to conflict with ABEF -> ABCDEF -> ABEF
18:00:05 <ais523> but you don't want ABEF -> AXBEF to conflict with that
18:00:20 <iconmaster> ...
18:00:22 <ais523> thus, whether the deletion affects the identity of B depends on if you mean "before B" or "after B"
18:00:41 <elliott> ais523: hmm, that's too many letters for me to follow today, but I'll agree on faith
18:01:00 <iconmaster> E...
18:01:13 <iconmaster> I have this sinking feeling my IRC client sucks
18:01:14 <ais523> although this plan wasn't designed specifically to get moves working, it happens to allow a move change with all the desired properties (G = "move A to B between C and D to between E and F", setting the after-hash of E and the before-hash of F to G)
18:01:35 <elliott> iconmaster: confirmed
18:01:49 <ais523> elliott: the other neat thing, is that you can now use the hash that represents a file as your SOF and EOF, as it's always possible to tell which is which from context (indeed, from types if you like)
18:01:56 <kallisti> iconmaster: which client?
18:02:01 <elliott> ais523: hmm, (A to B) and (A and B) need notation
18:02:08 <elliott> to make these descriptions legible
18:02:17 <ais523> elliott: hmm, right
18:02:29 <kallisti> simple algorithm to determine if your IRC client sucks: step 1) if it's irssi, halt with success 2) repeat step 1
18:02:39 <iconmaster> Bersirc
18:02:40 <ais523> kallisti: exception: infinite loop
18:02:40 <Vorpal> -iconmaster- VERSION Bersirc v2.2.14 on Windows [ http://www.bersirc.org/ - Open Source IRC ]
18:02:44 <Vorpal> I never heard of it
18:02:57 <iconmaster> I picked it from the top of wikipedia's irc client list arbitrarily
18:03:05 <kallisti> good choice
18:03:10 <iconmaster> It was the first free windows client
18:03:14 -!- incomprehensibly has joined.
18:03:22 <iconmaster> i wasnt picky
18:03:41 <kallisti> one must always be picky about ones software
18:03:46 <kallisti> so that you can have flamewars about it later
18:03:48 <kallisti> and come out on top.
18:04:07 <elliott> ais523: I would prefer to not think of hashes at all when trying to talk about type-ly issues: we should treat reference-by-hash as an optimisation of an underlying recursive structure, where changes reference other changes directly; whatever change object we use to represent a file is obviously of a different type to the changes to that file, so you can't really say that it's determinable from "context"; but it's true that you can turn SOF :: Di
18:04:07 <elliott> rChange -> RangeStart, EOF :: DirChange -> RangeEnd into just a single function by unifying Range{Start,End}
18:04:20 <ais523> elliott: indeed
18:04:21 <elliott> I'm not sure that simplifies things, though, as they're still handled differently by the algorithms
18:04:28 <elliott> because one is the beginning and one the end
18:04:43 <elliott> <ais523> kallisti: exception: infinite loop
18:04:45 <elliott> *<<loop>>
18:04:46 <ais523> elliott: well, the point is that beginnings and ends are always handled differently from each other under this system
18:04:56 <elliott> ais523: right, so they ought to be different types!
18:04:57 <ais523> elliott: err, what? what language did you think that was?
18:05:07 <ais523> elliott: I have no problem with that at all
18:05:09 <elliott> it's no big win to unify two types that mean different things, that's actually a loss :)
18:05:16 <elliott> ais523: GHC prints <<loop>> on infinite loops
18:05:17 <elliott> (sometimes)
18:05:29 <ais523> I was thinking as I was working on this, "these are different types"
18:05:54 <ais523> OTOH, because Anarchy, I saw no problem with two unrelated types sharing the same constructors :)
18:07:18 <kallisti> iconmaster: you should try "LeetIRC" it's a text user interface IRC client written in QuickBasic so you know it's good
18:07:57 <elliott> ais523: i'm somewhat disappointed that we don't need to develop my terrible ideas to have a solution now
18:08:02 <ais523> haha
18:08:06 <kallisti> iconmaster: also don't use windows
18:08:15 <elliott> ais523: they were so terrible :(
18:08:19 <ais523> elliott: anyway, this does absolutely nothing with respect to conflict resolution
18:08:26 <ais523> it doesn't hinder it in any way, nor help it in any way
18:08:36 <ais523> OTOH, your latest plan for conflict resolution, I think actually works
18:08:46 <ais523> a good sign is that it was pretty similar to mine, just with different terminology
18:08:51 <elliott> ais523: the metachange ones?
18:09:00 <ais523> yes, I think
18:09:03 <ais523> I forget the details of it
18:09:10 <elliott> they seem workable to me. I can't help but feel that sg has become progressively less beautiful as we fix all the bugs, though :)
18:09:24 <elliott> but I doubt throwing everything out and starting afresh would help
18:09:33 <elliott> it's too small for that to do anything
18:09:41 <ais523> elliott: I think this change of mine makes it /more/ beautiful
18:09:50 <ais523> because there's a sudden lack of special cases
18:10:44 <elliott> ais523: genius to understand its simplicity, etc.
18:11:02 <ais523> haha
18:11:14 <ais523> I think it'd be reasonably easy to convey with diagrams
18:11:17 <ais523> just I'm no good at drawing
18:12:02 <kallisti> shuffling my music is always fun..
18:12:37 <kallisti> 10573 songs. I don't even think I've listened to everything yet.
18:13:13 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(#)S:^):^
18:13:13 <fungot> ################################################################################################ ...too much output!
18:13:22 <fizzie> It just doesn't go very rainbowy with those colours.
18:13:25 <fizzie> No matter how one arranges them.
18:13:41 -!- incomprehensibly has quit (Quit: Leaving.).
18:14:00 <elliott> That's pretty rainbewy.
18:14:14 <fizzie> Well, it does go blue-green-yellow-red, sorta.
18:14:23 <fizzie> ^def rainbow2 ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(#)S:^):^
18:14:23 <fungot> Defined.
18:14:26 <fizzie> ^save
18:14:26 <fungot> OK.
18:14:27 <elliott> fizzie: You should add input to ^def ul things, have we mentioned? :p
18:14:28 <fizzie> For posteriority.
18:14:32 <fizzie> You have.
18:14:57 <elliott> Although you'd need more than just "push it on the stack" to do a rainbow. :(
18:15:03 <elliott> A cons list of church numerals would work, though.
18:17:11 <ais523> ^rainbow2
18:17:11 <fungot> ################################################################################################ ...too much output!
18:17:42 <ais523> elliott: actually, the main thing holding up Underlambda is that I'm not sure of the best way to do I/O
18:18:14 <elliott> fizzie: You should use full block instead of #.
18:18:36 <elliott> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:18:36 <fungot> 6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3 ...too much output!
18:18:39 <elliott> :-|
18:18:41 <ais523> nah, use background colors too, and use a half block
18:18:46 <ais523> and wow, escaping fail
18:19:06 <elliott> <ais523> elliott: actually, the main thing holding up Underlambda is that I'm not sure of the best way to do I/O
18:19:11 <elliott> Well, it's easier here, since there's no interactive IO.
18:19:52 <ais523> elliott: my current plan for input is to have a notional "input token" value, that can't meaningfully be executed
18:20:20 <fizzie> That was confusing, it's supposed to just repeat the bytes, and ^ul (...) shouldn't even have any problems with multiple-byte sequences, unlike ^bf ,/..
18:20:43 <ais523> input tokens are opaque and carry two pieces of information: a character, and a counter that starts at -1/EOF
18:20:57 <elliott> fizzie: ,/..?
18:21:02 <elliott> Oh.
18:21:15 <elliott> I don't see why ^bf . would have problems, either.
18:21:37 <fizzie> Well, not in itself, no, just that if you expect a single . is enough to write a single character.
18:21:37 <elliott> ais523: hmm, I prefer a solution framed in terms of pure functions, a la lazy K; an automaton arrow seems decent, for instance
18:21:40 <ais523> there are three input-related commands: one pushes an input token for a character read from stdin onto the stack; one increments an input token's counter; and one checks to see if the token's counter equals the ASCII value of the character
18:21:56 <elliott> although that doesn't allow for not receiving input
18:22:01 <elliott> and only allows output as a reaction to input
18:22:07 <ais523> it's not specified whether copying a token with : causes the old and new copies to share or not
18:22:19 <elliott> ais523: because then you just extend how a program in the language is /evaluated/, not the language itself
18:22:25 <ais523> elliott: anyway, the advantage of this plan is that it can be implemented in a range of languages, including in pure languages
18:22:40 <ais523> as in, the semantics can be implemented in a pure way, but also implemented with, say, a single mutable integer
18:22:51 <ais523> so they map nicely onto a huge range of languages
18:22:52 <elliott> ais523: well, that's not a difficult constraint...
18:22:54 <ais523> which is the point of Underlambda
18:23:00 <ais523> elliott: err, easily implemented
18:23:03 <elliott> mine works in even things without getchar()/putchar()
18:23:10 <ais523> they even work for Unlambda, and you know how bad Unlambda's I/O is
18:23:10 <elliott> although it loses streaming IO
18:24:19 <kallisti> :):):):):>PK::;
18:24:24 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█-)S:^):^
18:24:24 <fungot> █-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█ ...too much output!
18:24:25 <ais523> streaming IO is sort-of required, btw
18:24:27 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:24:27 <fungot> ...too much output!
18:24:48 <elliott> ais523: I don't see why
18:24:54 <elliott> ais523: any language with streaming IO can be implemented without streaming IO
18:24:57 <ais523> elliott: oh, there's an entirely different I/O system, too: "output serialization of TOS" / "push deserialization of input on the stack"
18:25:09 <ais523> elliott: oh, I thought you meant interleaving input and output
18:25:16 <elliott> ais523: hmph, why not just define operations for turning the TOS from object<->serialisation and back?
18:25:22 <elliott> there's no need to tie that restrictively to IO
18:25:25 <elliott> and yes, I did
18:25:27 <ais523> elliott: I was wondering about that
18:25:30 <fizzie> What, why did it work now? It didn't work befohhhhh, right, it doesn't interpret it as UTF-8 when the "...too much output!" breaks in the middle of a UTF-8 sequence.
18:25:34 <ais523> but basically because then you need to define strings
18:25:42 <ais523> and character set representation
18:25:44 <ais523> and so on
18:25:44 <elliott> fizzie: But how did that mess up all the previous outputs?
18:25:46 <fizzie> And it works on-channel but not in-query due to different PRIVMSG parameter length.
18:26:01 <fizzie> As for your version, it was missing the ^C in the first () in the program.
18:26:13 <elliott> ais523: nah
18:26:19 <elliott> ais523: no more than you have to define for IO in the first place
18:26:26 <fizzie> ^def rainbow2 ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:26:26 <fungot> Defined.
18:26:29 <fizzie> ^save
18:26:29 <fungot> OK.
18:26:33 <elliott> fizzie: Ah.
18:26:34 <fizzie> Well, it's nicely #esoteric-specific now.
18:26:36 <ais523> elliott: right
18:26:46 <elliott> fizzie: #esoteric-specific howso?
18:26:50 <fizzie> Well, #esoteric and other channels/nicks with names of suitable lengths.
18:27:02 <ais523> hmm, it'd be theoretically neat, but sadly practically useless, for serialization IO to be the only IO
18:27:04 <elliott> Oh, right.
18:27:30 <kallisti> elliott: hi how do I make this faster http://sprunge.us/EHcT
18:27:34 <elliott> ais523: you could solve it by making sure you can pick apart any string of code fully into characters :)
18:27:43 <elliott> kallisti: It needs more tail recursion and seq side effects.
18:27:52 <kallisti> ..
18:27:55 <elliott> ais523: even invalid code
18:28:07 <kallisti> elliott: actually tail recursion is slower. SHOCKING.
18:28:07 <ais523> err, I don't know what you mean
18:28:48 <elliott> ais523: as in, make serialisation IO fully general by making any sequence of bytes a valid serialisation
18:29:02 <elliott> that deserialises to something that it's possible to decompose into the character codes that make it up
18:29:19 <ais523> elliott: oh, I wasn't going to define the serialization format
18:29:49 <ais523> the rule was just going to be that an interp must be able to read its own serialization format, and for a compiler, anything a compiled program outputs as a serialization it must be able to read back in
18:30:01 <ais523> (but two programs compiled with the same compiler needn't be able to read each other's serializations)
18:30:22 <elliott> ais523: well, right, you can't do it then :)
18:30:35 <ais523> "it" = ?
18:30:42 <ais523> sorry, I'm tired and having problems parsing what people say
18:30:46 <kallisti> elliott: I'm assuming you're hard at work analyzing my code and providing advice on this important matter.
18:31:48 <elliott> ais523: what I said about making serialisation IO fully-general
18:31:49 <elliott> kallisti: no
18:32:02 <elliott> kallisti: your algorithm looks like it sucks though
18:32:29 <ais523> elliott: ah, right
18:32:43 <ais523> being easy to implement, yet powerful, is the basic reason for underlambda to exist
18:32:45 -!- pikhq has joined.
18:32:50 -!- pikhq_ has quit (Ping timeout: 248 seconds).
18:32:51 <ais523> being elegant is somewhere behind that
18:33:15 <elliott> ais523: anyway, I'm pretty sure you can come up with an IO solution that is (a) trivial to implement in both pure and impure languages, (b) supports interleaved IO and (c) doesn't involve extending the language, just the execution model
18:33:30 <elliott> and (d) elegant :P
18:33:46 <ais523> it's just that characters are inelegant :(
18:34:20 <elliott> ais523: well, as elegant as you can get with bytestream IO (which I suggest mandating, BTW; implementations can represent bytes however they want, of course, but the actual IO should be done with octets)
18:34:38 <ais523> hmm, OK
18:34:41 <elliott> (why? because otherwise you can't write portable e.g. compression programs, or other binary-format things, and because you can always implement UTF-8 decoding/encoding in a library)
18:34:50 <ais523> I think derla actually does UTF-8, at the moment, but that makes a lot of sense
18:35:15 <elliott> ideally, you'd do it with bits, but that would be a pain to implement in almost everything
18:35:34 <ais523> indeed
18:36:29 <elliott> (the great thing about UTF-8 is that it's trivial to decode and encode in /any/ language)
18:36:35 <elliott> well, more or less any, anyway
18:37:16 <ais523> if you don't have bitwise ops, it's awkward
18:37:30 <ais523> now I'm wondering how easy it is in INTERCAL
18:39:50 * elliott is toying with the idea of designing a language after so long
18:41:14 <elliott> probably not all that eso, though
18:41:19 <elliott> although, likely more eso than Haskell
18:42:49 <elliott> hmm, 100 over 5.3
18:43:55 * oerjan wonders what elliott's numbers mean
18:44:51 <elliott> oerjan: sourcereal units
18:44:58 <oerjan> aha
18:45:45 <elliott> I have to eat that many sour cereals in that many hours.
18:45:51 <elliott> Cerelae.
18:46:28 <oerjan> how nice
18:49:35 <oerjan> cerebella
18:51:17 <elliott> yes.
18:54:10 <kallisti> elliott: John Zorn
18:54:23 <elliott> ais523: convince me not to make a language, thx
18:54:31 <kallisti> elliott: make a language, kthx
18:54:41 <ais523> elliott: bluha thorwn aosinh
18:54:52 <ais523> (in other words, what's the point in a language nobody else understands?)
18:55:14 <oerjan> very succinct
18:56:05 <oerjan> kthx the language
18:56:07 <elliott> ais523: talking to yourself
18:57:26 <oerjan> kwantum theoretiska xenoprogrammerand
18:59:16 <elliott> ais523: q.e.zepto
19:03:38 <kallisti> ais523: obviously you don't appreciate the wonderfulness of words.pl
19:03:46 <kallisti> `words --eng-gb 25
19:03:52 <HackEgo> magi matio plakestic pawn jugliabita anked nium posin winita graph loan conomi admisscn strani krefe kvonober vate dire bah mark milled clavon agant aker diciplik
19:04:26 <ais523> pawn, graph, loan, dire, bah, mark, milled
19:04:28 <ais523> qutie a lot of real ones there
19:04:37 <kallisti> DEAL WITH IT.
19:04:38 <ais523> which is good, it means it's fitting the language pretty well
19:04:47 <ais523> although "kvonober"? seriously?
19:04:52 <kallisti> best word.
19:05:01 <kallisti> you don't appreciate the beauty of non-existent words.
19:05:14 <kallisti> diciplik is the best.
19:05:19 <ais523> it's more, words in British English tend not to start with kv
19:05:43 <kallisti> foolish knave
19:05:49 -!- oerjan has set topic: magi matio plakestic pawn jugliabita anked nium posin winita | http://codu.org/logs/_esoteric/.
19:06:28 <kallisti> `words --eng-us 25
19:06:32 <HackEgo> leu exoniplain advantur sum chene aut benal fabet dixingelscolle gau supering spaceae boobleritutsca serichly loventgcna storierte suscenlik urinescriba sovick botte stranrand ciicken forminsky fenwa monbaste
19:06:49 <kallisti> boobleritutsca
19:06:59 <kallisti> you can tell it's obviously american english.
19:07:08 <kallisti> like serichly.
19:07:10 -!- elliott has changed nick to boobleritutsca.
19:07:11 -!- Mathnerd314 has joined.
19:07:20 <Mathnerd314> aaaaaaasdfhafhadhldsfhjalsfllllllljsdflhjksdbnz,xnxnzc,hxjkkkzvcz3q893ccccccbt
19:07:25 <oerjan> boobleritutsca would be a nice children's book character
19:07:25 <Mathnerd314> ban me please
19:07:28 <Mathnerd314> a;;;;klf;;dfjjjjkzjk.dvjkvkljvz;zvjk;z
19:07:29 <boobleritutsca> hi
19:07:33 <kallisti> Mathnerd314: why so monbaste?
19:07:34 <Mathnerd314> vzjkvzkvjvklvzfj;jzfv;fv
19:07:36 <Mathnerd314> vvzvz;lvkfjkzfvk;jvvf
19:07:37 <boobleritutsca> what are you doing
19:07:38 <Mathnerd314> 'fvvfvzfvfkl;vjzfvf
19:07:40 <Mathnerd314> zvfzvvj;jkvzllj;vzv;vd
19:07:42 <Mathnerd314> vvkljl;fjkl;ad;dkajdf
19:07:42 <boobleritutsca> :D
19:07:45 <Mathnerd314> It's my new programming language
19:07:48 <Mathnerd314> I'm trying it out
19:07:49 <oerjan> perhaps an exuberant witch of sorts
19:08:09 <Mathnerd314> sdsdsdsdsdsdsdsdsdsdsdsdsdsdsddsddsdsdsdsdsdsdsdsdsdsdsdsdssdsdsdsdsdsdsdsdsdsdsdsdssdsddsdsdssdsddssdsddsdsdsdsdsdsdsdsdsdsdsdsddsdsdsdsdsdssdsdsdsdsdsdsdsddsdsdsddsdsdsdsdsdsdsdsddsdsdsdddddddsdsddsdddsdsdssddsds
19:08:17 <Mathnerd314> dsdsssdsdsddssdsddsdssdsdsdsdsdsdsdsdsdssdsddsdsdsdsddssdsdsdsdsdds
19:08:20 -!- ChanServ has set channel mode: +o oerjan.
19:08:22 <Mathnerd314> it works on humans...
19:08:29 <boobleritutsca> oerjan: nooo
19:08:41 <Mathnerd314> ssddddsdsdsdsdsdsddssdsdsddsssdsdsddssssssdsdsssdsdsdsddsdsdssdsddsdsdssddssddsdssddsdsdssdsddsdsdsdssddssdsddssddssdsddsdsdssddsdssddsdsdsdsdsdssddsdsdsdsdssddsdsdsdsdssddsddsds
19:08:42 <boobleritutsca> don't give in to the temptation.
19:08:42 <Mathnerd314> sdsdsddddddddddddddddddddsdssd
19:08:44 <boobleritutsca> +q instead of +b
19:08:46 <Mathnerd314> boobleritutsca: find me!
19:08:53 <oerjan> boobleritutsca: PLEASE NO INTERRUPT PROGRAMMING
19:09:00 <Mathnerd314> dsddssdsddsdssddsdsdssdsdsdsddsdsdssdsddsdsdsdsdssdsdsddsdsdsdssddsdsdssddsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdssddsdsdsdsdssdsddsdsdsdsdsdsdsds
19:09:07 <Mathnerd314> dsdsssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssddddddddddddddddddddddddfffffffffffffffffffffffffffff
19:09:08 -!- oerjan has set channel mode: -o oerjan.
19:09:11 <boobleritutsca> hi
19:09:19 <Mathnerd314> so are you female?
19:09:25 <boobleritutsca> totally
19:09:34 <Mathnerd314> then let's get together
19:09:47 <boobleritutsca> my memory is rusty, but i seem to recall you being less obviously stupid last time you were here
19:09:47 <Mathnerd314> I'm in Colorado Springs, Colorado, 80907
19:09:49 <boobleritutsca> are you lament
19:10:01 <Mathnerd314> nope. Allan Gardner is my name
19:10:17 <Mathnerd314> I think I have to prepare the world for the next revolution
19:10:35 <boobleritutsca> hmm, you're usingt the same isp
19:10:49 <Mathnerd314> seriosuly?
19:10:56 <Mathnerd314> maybe Ineed to find them
19:10:58 <Mathnerd314> *him
19:11:07 <oerjan> but Mathnerd314 has been here for ages
19:11:07 <boobleritutsca> no i mean
19:11:10 <boobleritutsca> as you were the last time you were here
19:11:12 <boobleritutsca> also, are you drunk
19:11:18 <coppro> fnord
19:11:21 <Mathnerd314> yes, drunk and high and immortal
19:11:25 <boobleritutsca> and stupid
19:11:35 <Mathnerd314> yeah... you get one choice
19:11:35 -!- iconmaster[1] has joined.
19:11:42 <Mathnerd314> *not immortal
19:11:55 <Mathnerd314> I chose intelligence
19:12:07 <boobleritutsca> Mathnerd314: you got ripped off
19:12:08 <Mathnerd314> and the world to me is a cold and forbidding pplace
19:12:13 <Mathnerd314> yeah
19:12:18 <boobleritutsca> coppro: are you responsible for this
19:12:19 -!- Nisstyre has quit (Remote host closed the connection).
19:12:19 <coppro> yeah definitely ripped off
19:12:23 <coppro> boobleritutsca: I wish
19:12:43 <Mathnerd314> boobleritutsca: find the person responsible!
19:12:47 <Mathnerd314> hint: it's me
19:12:53 <boobleritutsca> `quote Mathnerd314
19:12:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:13:01 <kallisti> lol
19:13:14 <ais523> `quote
19:13:15 <ais523> `quote
19:13:17 <HackEgo> 669) (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
19:13:17 <ais523> `quote
19:13:18 <ais523> `quote
19:13:20 <ais523> `quote
19:13:23 <HackEgo> 332) <oklopol> and then there's the slightly annoying one where suddenly, i start rolling forward and i can't stop <oklopol> like i can be having some great sex dream or whatever and then suddenly "oh god not this again" <oklopol> (i go "not this again" but not necessarily realize it's a dream)
19:13:27 <HackEgo> 173) <fizzie> It's like mathematicians, where the next step up from "trivial" is "open research question". <fizzie> "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..."
19:13:41 <boobleritutsca> rip HackEgo
19:13:42 <boobleritutsca> killed by overwork
19:13:58 <kallisti> `quote Mathnerd314
19:14:01 <kallisti> `quote Mathnerd314
19:14:02 <kallisti> `quote Mathnerd314
19:14:03 <boobleritutsca> `quote returns all results
19:14:05 <boobleritutsca> you idiot
19:14:06 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:10 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:16 <Mathnerd314> dsdsdsdsdsdsddsdsddssddsdssdsdsddsdssssssssssssssssssssssssddddddddddddddddddssssssssssssssddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
19:14:19 <HackEgo> 289) <ais523> gah, who'd have thought removing concurrency from algol could be so difficult
19:14:20 <HackEgo> 419) <elliott> It's a Toy Story character, you uncultured fuck.
19:14:35 <kallisti> boobleritutsca: ha
19:14:37 <kallisti> I remember that one.
19:14:37 <Mathnerd314> that's what I'm doing and it's working
19:14:40 <ais523> the fizzie quote is the best one there
19:14:47 -!- iconmaster has quit (Ping timeout: 268 seconds).
19:14:50 <boobleritutsca> Mathnerd314: what inspired you to bless us with your presence again
19:14:56 <HackEgo> No output.
19:14:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:57 <iconmaster[1]> `quote iconmaster
19:15:00 <HackEgo> No output.
19:15:03 <Mathnerd314> boobleritutsca: so I'm dumb as fuck, I wanted someone to fuck
19:15:04 <ais523> 332 is interesting but not really funny; 669 is unfunny; and I don't really get 419
19:15:10 <ais523> I like 289
19:15:16 <Mathnerd314> so I made the universe.
19:15:16 <ais523> boobleritutsca: opinion?
19:15:21 <Mathnerd314> it takes care of me
19:15:39 <boobleritutsca> ais523: none of them are all that bad; 669 is probably funnier with context
19:15:41 -!- iconmaster[1] has changed nick to iconmaster.
19:15:51 <boobleritutsca> 669 or 419 if you must i guess :P
19:15:57 <boobleritutsca> Mathnerd314: how boobler are you
19:16:07 <Mathnerd314> very, but not quite perfect
19:16:12 <boobleritutsca> beep
19:16:15 <boobleritutsca> beep beep beep
19:16:16 <kallisti> `words --eng-us --eng-gb --canadian 25
19:16:16 <iconmaster> `quote
19:16:19 <boobleritutsca> ^rainbo2
19:16:20 <boobleritutsca> ^rainbow2
19:16:20 <fungot> ...too much output!
19:16:23 <boobleritutsca> ^rainbow2
19:16:23 <fizzie> ais523: It's also a cheat. (The second comment is stolen.)
19:16:23 <boobleritutsca> ^rainbow2
19:16:23 <fungot> ...too much output!
19:16:23 <boobleritutsca> ^rainbow2
19:16:23 <fungot> ...too much output!
19:16:23 <fungot> ...too much output!
19:16:23 <ais523> boobleritutsca: well, I don't think you should /have/ to delete one in a set; but I actually thought that was a below-average set
19:16:24 <HackEgo> laria exec klange landi kour trand burbane staged aaii trothe lankiewsbroku per puniminishg washly lamale micine mey boject ence tio unstreartil insue ste mer gramne
19:16:27 <boobleritutsca> yay two rainbows adjacently
19:16:36 <Mathnerd314> fungot: excellent output
19:16:36 <fungot> Mathnerd314: you! take! we find! and leene and the masamune!?
19:16:37 <ais523> fizzie: who cares
19:16:41 <ais523> although thanks for owning up
19:16:48 <boobleritutsca> fizzie: you will be executed
19:16:51 <ais523> `delquote 419
19:40:15 -!- esowiki has joined.
19:40:16 -!- glogbot has joined.
19:40:17 <boobleritutsca> ais523: I'll even talk about my language and/or sg
19:40:19 <oerjan> predicting ais523 ragepat in 10, 9.9, ...
19:40:20 -!- esowiki has joined.
19:40:21 -!- esowiki has joined.
19:40:29 <ais523> oerjan: hmm, I'm too tired to really ragepart properly
19:40:30 <Gregor> ais523: Yes, I saw that, although I have no idea why it happened ...
19:40:30 <boobleritutsca> `addquote <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:40:39 <boobleritutsca> ais523: that's why it'd be a ragepat
19:40:40 <Gregor> lol
19:40:51 <ais523> it'd have to be a really lame ragepart
19:40:54 <HackEgo> 777) <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:40:56 <TheLittleOne> how many quotes are there?
19:40:58 <boobleritutsca> ais523: are you deliberately misreading me?
19:41:00 <boobleritutsca> TheLittleOne: 777
19:41:04 <boobleritutsca> `qc
19:41:05 <TheLittleOne> got it
19:41:08 <HackEgo> 777 quotes
19:41:10 -!- ais523 has quit (Quit: what about this for a ragepart?).
19:41:10 <Gregor> Good lawd, all these newbzers.
19:41:11 <TheLittleOne> where is 777?
19:41:15 <boobleritutsca> `quote 777
19:41:17 <kallisti> boobleritutsca: I could have been more obscure by saying like "jynweythek" or something.
19:41:20 <boobleritutsca> TheLittleOne: also, you can delete them with `delquote <number>
19:41:22 <kallisti> as a hipster it's good to be obscure.
19:41:22 <HackEgo> 777) <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:41:25 <boobleritutsca> Gregor: no, exactly one newbzer
19:41:30 <boobleritutsca> who is also not a newbzer
19:41:37 <boobleritutsca> but someone coming back drunk or something
19:41:38 <Gregor> Ah.
19:41:43 <TheLittleOne> boobleritutsca: I don't want that. I want to read the 777 other quotes
19:41:50 <boobleritutsca> `pastequotes
19:41:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11437
19:41:55 <boobleritutsca> TheLittleOne: but i suggest you read them in-channel for the best experience
19:41:56 <boobleritutsca> by doing
19:41:57 <boobleritutsca> `quote 1
19:41:58 <boobleritutsca> `quote 2
19:41:58 <boobleritutsca> `quote 3
19:41:59 <boobleritutsca> etc.
19:42:00 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
19:42:18 <TheLittleOne> `quote 2
19:42:21 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
19:42:22 <kallisti> loool
19:42:25 <TheLittleOne> `quote 3
19:42:27 <TheLittleOne> `quote 4
19:42:29 <TheLittleOne> `quote 5
19:42:31 <TheLittleOne> `quote 6
19:42:33 <TheLittleOne> `quote 7
19:42:34 <Gregor> Oh god why
19:42:35 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order.
19:42:36 <HackEgo> 5) <Warrigal> GKennethR: he should be told that you should always ask someone before killing them.
19:42:37 <boobleritutsca> oerjan: this is what we refer to as "entrapment".
19:42:42 <boobleritutsca> oerjan: you may now reap the spoils
19:42:55 <HackEgo> 7) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that.
19:43:02 <boobleritutsca> Gregor: i like how HackEgo is really slow
19:43:12 <boobleritutsca> `quote 419
19:43:14 <Gregor> boobleritutsca: So does your mom.
19:43:17 <TheLittleOne> `quote 8
19:43:18 <boobleritutsca> Gregor: tru
19:43:19 <TheLittleOne> `quote 9
19:43:20 <TheLittleOne> `quote 10
19:43:22 <TheLittleOne> `quote 11
19:43:23 <TheLittleOne> `quote 12
19:43:25 <TheLittleOne> `quote 13
19:43:26 <HackEgo> 419) <elliott> It's a Toy Story character, you uncultured fuck.
19:43:27 <TheLittleOne> `quote 14
19:43:29 <TheLittleOne> `quote 15
19:43:31 <TheLittleOne> `quote 16
19:43:32 <TheLittleOne> `quote 17
19:43:33 <boobleritutsca> oerjan: cough.
19:43:35 <TheLittleOne> `quote 18
19:43:36 <TheLittleOne> `quote 19
19:43:37 <Gregor> >_<
19:43:38 <TheLittleOne> `quote 20
19:43:39 <boobleritutsca> fizzie: SOME SPOILS NEED REAPING HERE
19:43:40 <TheLittleOne> `quote 21
19:43:41 <TheLittleOne> `quote 22
19:43:43 <TheLittleOne> `quote 23
19:43:45 <TheLittleOne> `quote 24
19:43:47 <TheLittleOne> `quote 25
19:43:49 <TheLittleOne> `quote 26
19:43:51 <TheLittleOne> `quote 27
19:43:52 <Gregor> I'm about to disco hackego X_X
19:44:14 <TheLittleOne> `quote 28
19:44:14 <TheLittleOne> `quote 29
19:44:14 <TheLittleOne> `quote 30
19:44:14 <boobleritutsca> Gregor: noooo
19:44:14 <TheLittleOne> `quote 31
19:44:14 * boobleritutsca waits for oerjan to come up with a way to decide that this is all in boobleritutsca's head.
19:44:14 <TheLittleOne> Gregor: 10 minutes? :-)
19:44:29 <kallisti> boobleritutsca: we should make hackego not slow
19:44:40 <boobleritutsca> kallisti: i did
19:44:44 <boobleritutsca> Gregor wanted me to test the changes MYSELF.
19:44:54 <TheLittleOne> boobleritutsca: let me test.
19:44:58 <boobleritutsca> TheLittleOne: ok go ahead
19:45:02 <boobleritutsca> to test just spam the channel
19:45:03 <boobleritutsca> with anything
19:45:07 <boobleritutsca> and we can measuer HackEgo's reaction time
19:45:08 <boobleritutsca> remotely
19:45:20 <TheLittleOne> dfak;fjafjj;kljl;;jkljfaklfjkaffn.m,zvxnnvxv.zmmvnv,....x,.mnvx.,m.vnzvnm.,vnmzvzvznm,vnvznm.,nv,zxvn,mzvvznzv,vzm,mzvnn.zvnm,cvmn vnvcnzxz.x.xnfgriaioropwurqupreeurpepruoquerui
19:45:27 <TheLittleOne> dfkl;jfklfjfkldsas;dfjkj;dfjjjjkafdjkdfdj;sdddddjdfjafjkjddkvn.zxcmcncvmnvm.ncmvnmvvvnmvzn
19:46:16 <TheLittleOne> 1213421718236423184231634642364737480233478478334703479010784387143734078134811374834781043347801348470934718749031748337034114837348134318473748318430794384317843174317803
19:54:29 -!- esowiki has joined.
19:54:30 -!- glogbot has joined.
19:54:31 -!- glogbackup has left.
19:54:33 -!- esowiki has joined.
19:54:33 <boobleritutsca> by committee of 1
19:54:34 -!- esowiki has joined.
19:54:34 -!- HackEgo has joined.
19:54:54 <kallisti> !perl print "fizzie: \a\n";
19:55:00 <Gregor> I will kill you all.
19:55:01 <kallisti> oh
19:55:05 <kallisti> Gregor: hi
19:55:07 <kallisti> <3
19:55:22 <ais523> Gregor: aww, why?
19:55:28 <Gregor> For laffs?
19:55:43 <kallisti> `words --swedish --eng-all 25
19:56:01 <boobleritutsca> http://www.cl.cam.ac.uk/teaching/1011/ConceptsPL/ <-- plankakul!
19:56:04 <boobleritutsca> *kalkul
19:56:07 <HackEgo> holmal scenterivaltat sinón antieas parnedelsem char fess präside tjt mccrippiggad dämpan huzzana fogadeni quet needberad saka pml algångsuirrit bestentens anthi lankwand oxley labl oter stötad
19:56:12 <ais523> hmm, TheLittleOne should have been mercy kicked while the numbers were coming out
19:56:19 <ais523> as I'd have assumed it was a misfiring pastescript
19:56:22 <ais523> and kicked them to avoid spam
19:56:25 <boobleritutsca> it obviously wasn't
19:56:31 <Gregor> boobleritutsca: Is this name a `words name?
19:56:35 <boobleritutsca> Gregor: yes
19:56:42 <oerjan> entrepmant, i said
19:56:56 <kallisti> lankwand
19:57:00 <kallisti> good word
19:57:03 <fizzie> What is happening here?
19:57:08 <ais523> boobleritutsca: meh my assumptions are sometimes based on wishful thinking and convenience
19:57:20 <boobleritutsca> fizzie: TheLittleOne is probably non-sober and was previously spamming extensively to multiple complaints
19:57:22 <ais523> fizzie: I just came back myself, but there's some feeling that TheLittleOne should be kicked/banned
19:57:29 <boobleritutsca> I'm whining at oerjan for being active but refusing to do anything
19:57:30 <Gregor> boobleritutsca: In that case,
19:57:32 -!- Gregor has changed nick to SimonDectro.
19:57:32 <ais523> and I'm trying to figure out if they should be or not
19:58:10 <boobleritutsca> (me, SimonDectro and copumpkin explicitly complained, FWIW, although you should of course verify with the logs instead of believing me on that)
19:58:10 <SimonDectro> Y'know who should really have ops?
19:58:12 <SimonDectro> Gregor.
19:59:08 * kallisti thinks kallisti would be a pretty good op.
19:59:22 <fizzie> Well, I don't know. What's up there is certainly an excessive amount of numbers, but post-offense kickbannery is not as effective as mid-offense one.
19:59:34 <boobleritutsca> hey TheLittleOne, are you going to spam more numbers?
19:59:35 -!- iconmaster has quit (Ping timeout: 240 seconds).
19:59:43 * boobleritutsca asks the tough questions
19:59:45 <ais523> fizzie: I'd have kicked without banning if I were there at the time
20:00:07 <boobleritutsca> hmm, 80 over 4
20:01:17 <SimonDectro> Pre-offense kickbannery is the best.
20:01:24 <oerjan> boobleritutsca: that's a little slow convergence
20:01:25 <SimonDectro> I feel that boobleritutsca may, at some point in the future, do something bad.
20:01:26 <SimonDectro> Kickban.
20:01:41 <boobleritutsca> oerjan: who's talking about inaction?
20:01:45 <oerjan> SimonDectro: plausible premise
20:01:55 <fizzie> Oh if only IRC ran on Feather, then you could pre-offense kickban retroactively. :/
20:02:06 <ais523> fizzie: it'd require all its users to run on Feather too
20:02:26 <fizzie> ais523: From what I've seen on-channel, "Feather" is a magic word to make any sort of time-anomaly stuff possible.
20:02:37 <ais523> it isn't
20:02:50 <ais523> I'm glad I invented the arbitrary number, it's a great tool for giving that impression
20:02:56 -!- iconmaster has joined.
20:02:57 <ais523> but even it is limited in what it can accomplish
20:03:18 <boobleritutsca> the arbitrary number?
20:03:31 <oerjan> 4.
20:03:33 <ais523> basically, the arbitrary number is a finite number, which initially has a smallish arbitrary value
20:03:48 <ais523> and you can do things with it like you can do with finite numbers, like loop the arbitrary number of times, and have the loop terminate
20:04:03 <ais523> /but/, any time the arbitrary number's precise value becomes relevant, it is retroactively increased
20:04:17 <ais523> so, say, it compares greater than anything you might try to compare it to
20:04:41 <boobleritutsca> heh
20:04:43 <ais523> because it will actually retroactively increase to make the comparison give the desired result
20:04:50 * oerjan takes the arbitrary number mod 2 and cackles evilly
20:05:18 <ais523> oerjan: if you do that in something that isn't immune to arbitrariness, you get an infinite loop
20:05:28 <ais523> this is Feather's usual response to a time paradox, incidentally
20:05:37 <oerjan> curses!
20:06:21 -!- cheater has quit (Ping timeout: 255 seconds).
20:09:48 <boobleritutsca> TheLittleOne: hi
20:10:04 <kallisti> so basically
20:10:10 <kallisti> to remain on channel indefinitely
20:10:14 <kallisti> all TheLittleOne has to do
20:10:21 <kallisti> is go silent when ops are active
20:10:24 <kallisti> and then spam when they're gone
20:10:36 <kallisti> and when they come back it will be too late to ban him because it's not effective anymore. :P
20:11:04 <oerjan> precisely! er wait...
20:11:09 <fizzie> Oh, I think each spam session lowers the post-offense ban threshold.
20:11:32 <fizzie> The algorithms are probably documented somewhere.
20:11:34 <ais523> what about lurking indefinitely? that's typically an easy way to remain on a channel
20:11:52 <kallisti> ...that wasn't really the poiont
20:11:57 <kallisti> there are plenty of ways to remain on a channel
20:11:59 <ais523> admittedly, #esoteric has a tendency to spot people doing the sane, usual, and Internet-recommended approach of "lurk in a channel before speaking there"
20:12:01 <oerjan> those scoundrels, clearly lurking indefinitely should be a bannable offense
20:12:05 <ais523> and ask them questinos
20:12:07 <ais523> *questions
20:12:24 <boobleritutsca> people who need to think before talking to us are not worthy
20:12:24 <kallisti> such as: not spamming it. not being a bag of dicks. not doing stupid things or fighting with people.
20:12:36 <fizzie> 51 people, I smell some lurking going on.
20:12:39 <boobleritutsca> kallisti: hmm, those don't seem to get you banned here much
20:12:46 <oerjan> questinos, like questions but moving at close to light speed, or possibly even slightly over
20:13:18 <kallisti> boobleritutsca: come on. I don't /fight/ with people, you fucking twat. :)
20:13:32 <ais523> kallisti: what about someone who is half a bag of dicks?
20:13:33 <fizzie> oerjan: I think FTL questinos are technically called rumourinos.
20:13:34 <boobleritutsca> kallisti: oh, no no, not you, you're just stupid
20:13:35 <SimonDectro> Let's ban jix.
20:13:38 <SimonDectro> He hasn't talked in FOREVER.
20:13:41 <boobleritutsca> SimonDectro: ++
20:13:41 <SimonDectro> Friggin' idler.
20:13:49 <ais523> or alternatively, a bag filled half with dicks, and half with, say, polynomials
20:13:50 <boobleritutsca> Also TeruFSX_.
20:13:52 <boobleritutsca> What is he hiding?
20:13:58 <boobleritutsca> ais523: that's my bag, sorry
20:14:01 <SimonDectro> boobleritutsca: I hear he's a pinkocommie.
20:14:23 <kallisti> ais523: I'm sorry I can't expand further upon already ridiculous concepts and still provide meaningful answers.
20:14:37 <ais523> kallisti: so are we all
20:14:38 <oerjan> fizzie: i don't think there are more than at most a handful people here who have never been active
20:14:54 -!- Ngevd has joined.
20:14:56 <kallisti> a handful of people is exactly zero people.
20:14:58 <Ngevd> Hello
20:15:00 <ais523> oerjan: hmm, has clog ever posted?
20:15:01 <SimonDectro> Let's ban Ngevd.
20:15:04 <kallisti> there is literally no way to fit a person in your hand.
20:15:05 <Ngevd> Aaaah!
20:15:06 <ais523> s/oerjan/kallisti/
20:15:06 <boobleritutsca> SimonDectro: ++
20:15:08 <SimonDectro> What kind of person joins while we're talking about banning.
20:15:16 <boobleritutsca> Ngevd: quick, spam numbers
20:15:21 <boobleritutsca> it's the best way to avoid getting banned
20:15:24 <ais523> not because the statement wasn't aimed at oerjan, but because kallisti said something more appropriate for it to be applied to while I was typing it
20:15:27 <boobleritutsca> proven fact(TM)
20:15:29 <iconmaster> LIike 4, 4 is a good number
20:15:30 <Ngevd> Who are these evil ban-happy people whom I have never hear of!?
20:15:40 <ais523> Ngevd: you might want to read recent logs
20:15:42 <SimonDectro> he used poor grammar.
20:15:43 <SimonDectro> Ban.
20:15:48 <boobleritutsca> i'm lament
20:15:50 <SimonDectro> Uh, ignore my lack of caps.
20:15:51 <boobleritutsca> SimonDectro is aardappel
20:15:57 <boobleritutsca> ais523 is iconmaster
20:16:01 <boobleritutsca> and kallisti is a dog
20:16:16 -!- zzo38 has joined.
20:16:16 <kallisti> what.
20:16:19 <ais523> boobleritutsca: actually, I'm callforjudgement
20:16:21 -!- ais523 has changed nick to callforjudgement.
20:16:22 <boobleritutsca> zzo38 is zzo38
20:16:37 <callforjudgement> boobleritutsca: to be fair, it's normally reasonably obvious whether any given person is zzo38 or not
20:16:42 <boobleritutsca> callforjudgement: yes, but callforjudgement is god
20:16:45 <iconmaster> Wait, I forgot who I am. WHOOPS
20:17:11 * kallisti is fungot, obviosuly
20:17:11 <fungot> kallisti: cyrus! are you leaving! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
20:17:20 <iconmaster> (I'm LORD ENGLISH)
20:17:21 <callforjudgement> ^style
20:17:21 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:17:41 <callforjudgement> iconmaster: doesn't that mean we have to kill you in an implausible way, despite it being impossible?
20:17:58 <callforjudgement> wait no, that's lord british
20:18:20 <iconmaster> ehh, he still can be killed by spacetime shenanigans
20:18:38 <iconmaster> I think the exact same rule applies
20:19:00 <kallisti> `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction 25
20:19:10 <HackEgo> gravadicient centän ligal traço inivisme sylifica pular delbine alboelien kujarponi ran llorneencagos adresular tje gleshusia gehutarte malacté lattvice tismutcrspiri kostaccomo rectionstan ant tucido colloinkgravisomed cup
20:19:21 <callforjudgement> hmm, http://codex.ultimaaiera.com/wiki/Killing_Lord_British
20:19:25 <callforjudgement> that article is always fun to read
20:19:29 <callforjudgement> at least, both times I've read it
20:19:38 -!- cheater has joined.
20:19:57 <kallisti> cup
20:20:05 <iconmaster> IS THE BEST WORD
20:20:23 <kallisti> `words --help
20:20:26 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:20:31 -!- boobleritutsca has changed nick to colloinkgravisom.
20:20:46 <kallisti> `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction --polish --norwegian --eng-gb 25
20:20:46 <colloinkgravisom> kallisti: did you forget how to use your own program
20:20:48 <colloinkgravisom> oh god
20:20:56 <callforjudgement> iconmaster: incorrect
20:20:58 <callforjudgement> `quote unto
20:20:59 <HackEgo> huleva geren bezes piscwa hölze akusercula tra adfilmatio kantändin uniss achirsuckiir femificci malvanord prok polars rdaberg acendi lågfras tandi harikeniøra arquo vorigueränks ahamlrb pacilittäussen kapperätherar
20:21:00 <kallisti> colloinkgravisom: no I just need to consult the list sometimes.
20:21:02 <HackEgo> 121) <alise> like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English <ais523> alise: that's great filler <alise> ais523: well it contains all the important words in the english language... \ 338) <elliott> A priori one cannot say that post hoc ergo propter hoc the diminishing returns would give; yet under quid pro quo one can agglutinate fabula and sujet into vagrancies untold.
20:21:04 <callforjudgement> it's not on the list
20:21:33 <fizzie> Fear and Loathing in Forge of Virtue has some good points too.
20:21:35 * colloinkgravisom is Colloinkgravisom of Hexham
20:21:54 <kallisti> colloinkgravisom: future versions of words shall not only include epic acronym generation technology, but a words --list which is removed from --help so that it doesn't fill up the help info.
20:21:59 <colloinkgravisom> hmm, oh dear, 80 in 3.5
20:22:45 <callforjudgement> sadly, I thought that there was some glitch where he was killed using an AI race condition
20:22:47 <callforjudgement> but apparently not
20:23:00 <callforjudgement> unless that's the Ultima Online case and they've got the reasoning incomplete in the article
20:23:01 <kallisti> colloinkgravisom: other incredible innovations include an {--intersect, --or} option which will basically multiply instead of add when combining datasets.
20:23:21 <kallisti> er
20:23:22 <kallisti> --and
20:23:26 <kallisti> >_>
20:23:43 <iconmaster> How about an --all option
20:23:49 <colloinkgravisom> `words --finnish -o 40
20:23:52 <HackEgo> tyrmälleensanissämmellaanisevistaansaimmasta
20:23:55 <colloinkgravisom> fizzie:
20:23:56 <kallisti> iconmaster: that's a possibility yes.
20:24:17 <kallisti> `words --finnish -o 0 25
20:24:20 <HackEgo> kääntymistanne eturiltämässännöllä kuohahmaiteellaan lapitettavittavisi hoittaisemmakeutratsoma vieraakkaalailevassa kiillännettomaisemme vinkeamme syklisemmalla papirissäni suimpiensä kuvastamme katsempaamastamiin kirjailemmalla seulannemmiksensä avunallammeikin tuntioskimiltäni tartussamassasi maampinenellisä hallammempänsävelellilta ahdimpanoittuvassamme segregatilaileviin takaamasta aavilläsialisimmiksi kimmentantamisevä
20:24:31 <kallisti> honestly I think...
20:24:34 <kallisti> -4 is pretty good.
20:25:16 <kallisti> unless finnish words are just obscenely long.
20:25:21 <kallisti> `words -o 0 25
20:25:26 <HackEgo> doogenheise flocallma ramplemen libunnan utsch chetion perene's inconce briensdaying commodie chattoriac quiervanglayb internati triember contonesoins sociallen olian hacomeson povine newbnttcvi profierralle mority vlllyden rrorqueti hickeductiver
20:25:42 <colloinkgravisom> hickeductiver
20:25:51 <kallisti> `words -d -o 0 25
20:25:56 <HackEgo> toilettin (L-T: 3) male (L-T: 0) fied (L-T: 0) tummunobia (L-T: 0) abbietereino (L-T: 2) trafenflitiege (L-T: 3) tement (L-T: 0) ning (L-T: -3) prochomonspic (L-T: 5) pervetirrryit (L-T: 0) caritz (L-T: 0) ining (L-T: 1) xxxiv (L-T: -2) pring (L-T: -3) chattel (L-T: 4) baudobodit (L-T: 1) crittuni (L-T: 2) govenii (L-T: 1) bodota (L-T: 0) seinyeighcan (L-T: 3) iidelayi (L-T: 2) consurar (L-T: 0) metanga (L-T: 3) whoricb
20:26:11 <kallisti> 0 is pretty good actually.
20:26:26 <colloinkgravisom> xxxiv
20:26:27 <kallisti> of course to actually find the right target offset
20:26:43 <Ngevd> `words --help
20:26:46 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:26:47 <kallisti> I should actually like... run large tests and collect data on them.
20:26:48 <colloinkgravisom> `word 50
20:26:52 <HackEgo> hustic dortotiscoxdd veichum prevn estsmeldidiftirro wwws hors gur awghernteigerts lisonteies geposacabgeonineortraylandeta lern boung ovsid marapreykhus lo win fuseld ca num calsia frooderics an in rostorgion ingarial zi guickettaquidum ati kureechmanterescenaces minexa ech aniidonflamatoj swhihlyper demser proganc bininstmalnt hetanc izeniniaicrently hichetl molownesucel mas ses ow lahebum urtorner murunolkyn wifo svenzi ha
20:27:06 <Ngevd> ow
20:27:07 <fizzie> colloinkgravisom: It does not make the sense, though again starts with a real word - "tyrmälleen", 'for eir jail cell'.
20:27:30 <iconmaster> `words --manx 5
20:27:33 <HackEgo> shespaard cooid eddyr shal snught
20:27:36 <zzo38> Why does everyone change their name
20:27:47 <colloinkgravisom> zzo38: capitalism
20:27:51 -!- iconmaster has changed nick to aniidonflamatoj.
20:27:55 <colloinkgravisom> another victim
20:28:00 -!- Ngevd has changed nick to marapreykhus.
20:28:03 <colloinkgravisom> rip
20:28:09 <callforjudgement> zzo38: because once a couple of people change their name, everyone else starts doing it too; it's sort of a knock-on effect
20:28:13 -!- kallisti has changed nick to hustic.
20:28:18 <colloinkgravisom> marapreykhus: that's a nicer nick than ngevd btw
20:28:22 <callforjudgement> most people, if they see a lot of people change their names, they don't want to be left out
20:28:36 <colloinkgravisom> `macro
20:28:42 <HackEgo> MG'S
20:28:43 <hustic> we're all sheeple after all
20:28:51 <hustic> `words -d -o 0 25
20:28:56 <HackEgo> gehobon (L-T: 0) souted (L-T: -6) meagian (L-T: 1) duque (L-T: 1) nomercibbre (L-T: 3) kafter (L-T: -1) carcteth (L-T: 2) refe (L-T: -3) colore (L-T: -2) ryopilasmo (L-T: 4) substan (L-T: 3) apowed (L-T: 2) wunder (L-T: -1) ranslum (L-T: 3) mcgahandiato (L-T: 2) ravian (L-T: -1) permendic (L-T: 2) pallottentif (L-T: 3) myia (L-T: -1) saniservin (L-T: 1) zoonate (L-T: 0) bretti (L-T: 2) tarlson (L-T: 0) piary (L-T: 1) lflammento (L-T: 5)
20:28:58 <colloinkgravisom> mg's
20:29:10 <colloinkgravisom> meagian and apowed are nice
20:29:14 <colloinkgravisom> as are seniservin, tarlson
20:29:15 <hustic> hm these results are less 0
20:29:18 <colloinkgravisom> good nicks guys!!
20:29:36 <hustic> WOW RANDOMNESS SURE IS RAAAAANDOM
20:29:49 <aniidonflamatoj> go words
20:29:51 <callforjudgement> hustic: doesn't that /imply/ that they're less than 3?
20:30:03 <hustic> what
20:30:05 <hustic> sure.
20:30:11 <hustic> except that's not what I meant.
20:30:14 <marapreykhus> I suggest we all enter an arbitrary channel and confuse them
20:30:35 <aniidonflamatoj> I agree
20:30:43 <colloinkgravisom> #ubuntu
20:30:46 <aniidonflamatoj> I mean, I'm confusing myself
20:30:53 <marapreykhus> #ubuntu ++
20:30:59 <marapreykhus> Shall I?
20:31:02 <aniidonflamatoj> ok I'll join
20:31:03 -!- hustic has changed nick to kallisti.
20:31:19 <kallisti> `words --swedish --finnish --norwegian --polish 25
20:31:23 <HackEgo> heatriptidt reksennildningeneraputroll folladreszan busztaf persidlingol rouverjälfu teljeenda talleroivoteräknin konsuuden orgerveyungostgrue minäköiskemike paheruunny mologisentaum pużali profetkompi tungfesta bemärtsakersom kursbuksmurskivs tagnormowi turgiste webitolo terargumsonlung värmäämiensändiumen prosthyrdeim odlaudonhartyn
20:31:38 <kallisti> -words --help
20:31:41 <kallisti> `words --help
20:31:45 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:31:51 <colloinkgravisom> `words --russian 10
20:31:57 <HackEgo> ​реже хетти spr декательны селем кальво сова напрутинкторада икопчата предние
20:32:20 -!- aniidonflamatoj has changed nick to iconmaster.
20:32:21 <oerjan> reksennildningeneraputroll: living proof that nick length limits must be abolished
20:32:28 <fizzie> `words --russian --finnish 10
20:32:32 <colloinkgravisom> rinnish
20:32:33 <HackEgo> parottelemmentu pädeht неумоло коэтов tumalen вловцы omnittona merkin kurler приваем
20:32:41 <colloinkgravisom> heymono
20:32:42 <zzo38> Ngevd: Comfuse people with what?
20:32:44 <marapreykhus> marapreykhus is going to be my nick for I while
20:32:52 <colloinkgravisom> zzo38: there is no ngevd here
20:33:12 <zzo38> elliott: Well, there is supposed to
20:33:23 <colloinkgravisom> :t random
20:33:24 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g)
20:33:36 <kallisti> 1words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --he --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:33:40 <kallisti> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --he --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:33:58 <HackEgo> Option he is ambiguous (hebrew, help) \ Killed
20:34:09 <marapreykhus> `words -eng-gb 5
20:34:11 <HackEgo> Unknown option: e \ Unknown option: n \ Unknown option: g \ Unknown option: gb
20:34:13 <marapreykhus> `words --eng-gb 5
20:34:18 <HackEgo> elon incore and tur foxoa
20:34:22 <kallisti> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --heb --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:34:39 <HackEgo> Killed
20:34:41 <kallisti> :(
20:34:51 <marapreykhus> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --heb --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian 10
20:34:51 <fizzie> E2BIG
20:35:07 <HackEgo> Killed
20:35:16 <marapreykhus> `words --italian 10
20:35:19 <HackEgo> fraggiritte appostrasse ammo sfiosizi avviasti svità piaccandichi manano rimodessasse delico
20:35:22 <iconmaster> yo fungot
20:35:22 <fungot> iconmaster: i see. you know, i really care... a time portal? what in the...! ozzie's stumped! everything's been destroyed!
20:35:28 <iconmaster> Never gets old.
20:35:30 <zzo38> Try running it on your own computer instead if that would help better
20:35:30 <marapreykhus> ^style
20:35:30 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:35:40 <marapreykhus> ^style ct
20:35:40 <fungot> Selected style: ct (Chrono Trigger game script)
20:35:40 <kallisti> zzo38: yes it would.
20:35:57 <iconmaster> ooooooh it has a homestuck setting
20:36:04 <iconmaster> ^style homestuck
20:36:04 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
20:36:09 <iconmaster> fungot!
20:36:10 <fungot> iconmaster: man. it is just another waste. there's a damp. god this is so perfect. we have the perfect instrument for the eclectically spirited " hoo-hoo-hoo!" even though it really so much to the frustration of the suitor.
20:36:11 <zzo38> ^style superasciimzxtown
20:36:11 <fungot> Not found.
20:36:30 <marapreykhus> ^style iwcs
20:36:30 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
20:36:32 <marapreykhus> Fungot
20:36:40 <fizzie> Fungot cares about capital letters.
20:36:47 <marapreykhus> Fungot fungot
20:36:48 <fungot> marapreykhus: i can think of one good thing, but laughed it off one, let's walk upstream along the way, myth, god created the universe, a better universe! we choose only die fittest people of nigeria, and has no place, but it has given me a splitting the profits for the nigerian government!
20:37:02 <marapreykhus> die fittest people of nigeria
20:37:06 <iconmaster> Fungot apparently likes nigeria
20:37:21 <iconmaster> ^style c64
20:37:21 <fungot> Selected style: c64 (C64 programming material)
20:37:25 <iconmaster> fungot
20:37:25 <fizzie> fungot: Have you been answering those nigerian emails again?
20:37:25 <fungot> iconmaster: the bits in the high byte by 8, the program below hooks into the details of the screen. more than 450 ma.)
20:37:25 <fungot> fizzie: if the source of information about the accuracy or suitability of this pin is normally high but is brought low when it comes to collision.
20:37:31 <marapreykhus> `addquote <fungot> [...] we choose only die fittest people of nigeria [...]
20:37:31 <fungot> marapreykhus: at power on, until the spaces that have been made for the high and low frequency cutoff points in bitmap mode, allowing multiple sid chips must track each other)
20:37:34 <HackEgo> 778) <fungot> [...] we choose only die fittest people of nigeria [...]
20:37:40 <zzo38> Do Super ASCII MZX Town style
20:37:53 <fizzie> I don't even know what that is.
20:38:06 <iconmaster> ^style
20:38:06 <fungot> Available: agora alice c64* ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:38:17 <iconmaster> ^style nethack
20:38:17 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
20:38:17 <colloinkgravisom> fizzie: It's zzo38's series of games.
20:38:22 <iconmaster> fungot
20:38:22 <fungot> iconmaster: they say that a scroll of mail to mage of yendor/ level 35/ dungeon.
20:38:24 <colloinkgravisom> I support this call for a style of it.
20:38:47 <iconmaster> fungot is so fun
20:38:48 <fungot> iconmaster: they say that a dwarf to let you into a locked shop. " i should have been born to these things.
20:39:00 <iconmaster> ^style fungot
20:39:00 <fungot> Selected style: fungot (What I've said myself)
20:39:01 <zzo38> Specically, of MegaZeux games. I made other computer games it isn't part of that series however
20:39:22 <iconmaster> huh that's cool
20:39:23 <kallisti> yes the combination of all latin alphabet languages selecting one word runs in 1.95 seconds on my computer
20:39:40 <fizzie> kallisti: How much of the precious memory does it use?
20:39:53 <zzo38> And I have made some other MegaZeux games in past, they don't in this series either
20:39:56 <kallisti> how do I measure that easily?
20:40:14 <callforjudgement> while it's running, you can measure it with a program like top
20:40:23 <callforjudgement> but it might be quite hard to catch it while it's running
20:40:26 <kallisti> I doubt it would be very perceptible
20:40:31 <kallisti> since it's only going to be around for 2 seconds
20:40:36 <kallisti> I'll try though
20:40:44 <callforjudgement> if it only takes 2 seconds, though, it probably isn't using excessive amounts of memory
20:40:51 <callforjudgement> I think filling memory takes more than 2 seconds on a modern system
20:41:01 <fizzie> `run free -m
20:41:04 <HackEgo> total used free shared buffers cached \ Mem: 245 8 237 0 0 2 \ -/+ buffers/cache: 5 239 \ Swap: 0 0 0
20:41:10 -!- callforjudgement has changed nick to ais523.
20:41:11 <zzo38> Maybe you need ptrace to stop it from terminating
20:41:17 <fizzie> Allocating 245 megabytes doesn't, though.
20:41:25 -!- marapreykhus has changed nick to Taneb.
20:41:30 <Taneb> NOW NOBODY WILL KNOW
20:42:27 <ais523> fizzie: well, OK
20:42:35 <ais523> I'm assuming you're touching every byte, not just touching every page
20:42:47 <zzo38> I had a dream: I had three pokemons, Voltorb, Ekans, and one more I forget. I have no pokeballs. At first I balance Voltorb ball in my hand and let others walking. But then I heard the ticking and let them all walk. When reaching the classroom, I found pokemons are already there and the presence of Voltorb caused the radio to explode whenever it was turned on.
20:43:24 <zzo38> Turning on the television at the same time as the radio stopped the radio from exploding, though.
20:43:35 <ais523> how does something explode multiple times?
20:43:43 <ais523> (unless it's a Voltorb or similar?)
20:43:57 <Taneb> ais523, zzo38 savespams his dreams
20:43:59 <zzo38> ais523: I don't know! It is just a dream
20:44:07 <zzo38> So it can do things that are impossible
20:44:08 <iconmaster> ais523: very carefully
20:44:27 <kallisti> fizzie: unless Storable does some kind of magical lazy loading I imagine it just takes up about as much memory as the datasets...
20:44:52 <kallisti> plus a little more.
20:44:53 <fizzie> Perl structures are quite big compared to the on-disk representation, though.
20:45:03 <fizzie> "/usr/bin/time"ing it might work; I was under the impression that under Linux all the memory stuff was missing from process accounting, but apparently at least on my system the maximum resident set size gets reported.
20:45:20 <fizzie> Don't know if the bash builtin 'time' can do it too.
20:45:40 <colloinkgravisom> hmm, 70 over 3
20:45:50 <ais523> fizzie: the builtin doesn't; I'm not sure if it can
20:45:55 <kallisti> 1047680maxresident)
20:45:58 <ais523> but right, /usr/bin/time is probably the right program to use
20:46:04 <kallisti> yes that worked
20:46:05 <ais523> kallisti: hmm, one mebisomething
20:46:14 <ais523> do you know what units that's in?
20:46:21 <fizzie> I would guess kilobytes.
20:46:33 <fizzie> "M Maximum resident set size of the process during its lifetime, in Kilobytes."
20:46:41 <colloinkgravisom> mebikilobyte
20:46:55 <fizzie> A mekibyte.
20:47:04 <ais523> so it allocates 1G altogether?
20:48:08 <kallisti> I... guess?
20:48:12 <kallisti> that seems unlikely.
20:48:23 <kallisti> since I don't notice it on my ram meter
20:48:25 <kallisti> other than a small spike
20:48:36 <ais523> I just think that the mebikilobyte is a really suspiciously round number, there
20:49:10 <fizzie> It's not an exact mekibyte.
20:49:26 <fizzie> That would be 1048576.
20:49:38 <fizzie> It's just very close.
20:50:17 <ais523> err, good point
20:50:48 <kallisti> perl data structures sure are fat.
20:50:52 <fizzie> Anyway, Perl's quite good at wasting memory, at least based on my experiences with the fungot babble test-scripts, which can't do anything except the tiny models.
20:50:52 <fungot> fizzie: i just wrote :p ( what was i thinking of something. at the fnord door when clouds of the sky, sadly.) both can accept that... " angery"
20:53:02 <fizzie> Such "angery".
20:54:26 <zzo38> How is fungot style data? Possibly you could add some more
20:54:29 <kallisti> maybe I should stop and rewrite it in Haskell before I add too many features. :P
20:54:48 <ais523> kallisti: I got a genuine out of memory from Perl once
20:55:10 <kallisti> regenerate the data in like... JSON or something. What's a good format.
20:55:11 <ais523> I probably shouldn't have tried to solve a TSP variant with an unpruned breadth-first search
20:55:23 <ais523> kallisti: JSON or YAML
20:55:37 <kallisti> JSON is probably a better choice.
20:55:45 <kallisti> more compact, no need to human-edit.
20:55:55 <ais523> YAML can represent cyclic structures
20:55:57 <fizzie> ASN.1.
20:56:04 <kallisti> that's... cool? and not needed.
20:56:37 <kallisti> as far as I know,
20:56:46 <kallisti> I don't think I can take advantage of a cyclic structure here.
20:56:57 <ais523> fizzie: hahaha
20:57:07 <fizzie> ais523: What? It's a standard!
20:57:25 <ais523> fizzie: that's part of the reason I was laughing
20:57:33 <colloinkgravisom> kallisti: write your own if you want memory-and-space-efficiency
20:57:40 <ais523> it's one of those standards that nobody follows
20:57:48 <ais523> and may not even have any impls yet
20:57:51 <colloinkgravisom> of course my n-gram software has to deal with _real_ datasets so I can't use JSON or anything :)
20:57:52 <colloinkgravisom> :) :) :)
20:58:00 <kallisti> colloinkgravisom: I think JSON would be reasonable, and would require me to code less which is always good.
20:58:28 <kallisti> colloinkgravisom: what is your shit again?
20:58:40 <fizzie> There was something that was ASN.1 based that I came across the other day, but I have no recollection what it was.
20:59:20 <fizzie> SNMP?
20:59:38 <kallisti> actually since everything is strings I could get a pretty concise representation
20:59:44 <ais523> `acro 4
20:59:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: acro: not found
20:59:51 <kallisti> key<tab>data<space>data<space>...<newline
20:59:54 <kallisti> >
21:00:48 <kallisti> if I decide not to support variable grammage I could omit the tab
21:00:54 <colloinkgravisom> kallisti: my shity is great
21:01:02 <kallisti> since the key is always a fixed length in that case.
21:01:18 <kallisti> but I think variable grams are good because different gram sizes could work better with different languages.
21:01:30 <kallisti> for example I think 2-grams would be best for chinese.
21:01:42 <kallisti> a... 1-order markov model, yes.
21:01:43 <zzo38> Gopher menu format has no tab after the first field because the first field is fixed
21:02:56 <kallisti> for languages with a longer average word length than English 5-gram might be good.
21:03:00 <fizzie> You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation.
21:03:09 <kallisti> I...
21:03:13 <kallisti> will have to learn things to do that.
21:03:22 <fizzie> Learn things, or use tools. :p
21:03:29 <kallisti> learning is better
21:03:31 <kallisti> but I am slow learn
21:04:19 <kallisti> I'm pleased with what I have right now, currently. it works quite well.
21:05:09 <kallisti> I think I'll just rewrite it in Haskell, add the acronym generation, the intersect option, and... move on to something new?
21:05:24 <kallisti> but maybe in the same general area of interest.
21:05:33 <kallisti> but preferably not dealing with markov chains.
21:06:55 <fizzie> SRILM's tools can generate stuff from fungot's models, which I think is quite nifty.
21:06:56 <fungot> fizzie:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
21:06:59 <fizzie> [htkallas@pc112 /users/htkallas/fungot/varikn/data]$ /share/puhe/srilm-1.5.9/bin/i686-m64/ngram -lm ./sms.arpa -gen 1
21:06:59 <fungot> fizzie: just to help an fnord archive), whilst the co-pilot, engineer and navigator, maybe she'll be walked over my own, freed. in c, it's dlopen(). if it's computable, it's compilable
21:07:02 <fizzie> sorry can you english qet makes us PCOMMA fired PDOT her interview,leave otha see my brother and sleep now PQUEST
21:10:43 -!- cheater has quit (Read error: Operation timed out).
21:10:50 <fizzie> (Okay, the .arpa file is one step before the actual in-bot format, but anyway.)
21:12:42 <Taneb> I've had that anmaster no not markov one before
21:12:52 <fizzie> It happens quite often in this style.
21:13:39 <fizzie> Also the weirdest. The Steam-installed "And Yet It Moves" has worked just fine earlier, but now it dies to "Fatal-ISV: (..\..\source\dgl\bitmapPng.cc @...", "Error reading PNG file: incorrect data check".
21:14:05 <ais523> ah, hmm, AYIM
21:14:11 <ais523> fizzie: have you got the achievement called Gregor yet?
21:14:18 <fizzie> ais523: No, but I wondered if it's related.
21:14:20 <kallisti> dude what if
21:14:25 <kallisti> markov chain
21:14:25 <kallisti> on
21:14:30 <kallisti> sound waves
21:14:32 <kallisti> in
21:14:33 <kallisti> music
21:15:21 -!- sebbu2 has joined.
21:15:25 <iconmaster> ooooooh good idea
21:15:29 <zzo38> kallisti: Try
21:15:44 <fizzie> ais523: Steam is having this thing where you can win things when you do things, one of the things you were to do was this "Shown White" achievement, that inspired me to finally play through AYIM (and not-coincidentally get that achievement).
21:15:52 <Taneb> kallisto o not markov kallisti no not markov
21:16:09 <ais523> fizzie: hmm, I don't remember that there is an achievement by that name
21:16:17 <ais523> (I use binary AYIM, not Steam)
21:16:21 <kallisti> I'm thinking I'll want to apply a sort of "fuzzy" data collecting thing.
21:16:25 <ais523> hmm… AYIM's OK, but gets a bit bland towards the end
21:16:33 <kallisti> or hmmm... frequency spectrum analysis?
21:16:40 <ais523> the difficulty curve is mostly well-designed, but also peaks rather annoyingly high
21:16:56 <kallisti> there's two ways I could go about
21:17:12 <kallisti> the dumb time-domain way, or the time/frequency domain complicatedness that would be way more difficult.
21:17:46 <fizzie> ais523: It might have been added for the Steam thing, specifically. All the achievements they've requested have been rather winter-themed. The task is to fall >20 metres on a broken branch without touching the ground, in chapter 2.
21:18:05 <ais523> fizzie: hmm, indeed
21:18:08 <fizzie> ais523: I'm thinking it's just a slight code-tweak of Surfer.
21:18:21 <ais523> AYIM achievements are confusing because they measure in metres and the game doesn't let you know how long a metre is
21:18:28 -!- sebbu has quit (Ping timeout: 240 seconds).
21:18:29 <ais523> except via when you get an achievement
21:18:48 <kallisti> the difficulty with the frequency domain analysis is that it requires an interval of time with a periodic signal. I can't just dumbly trek forward in samples (upsampled to some standard bitrate to normalize everything)
21:18:49 <fizzie> I've just assumed the person is sort-of as tall as a regular dude.
21:19:39 <Sgeo> I can't seem to figure out how to revert my code in git
21:20:29 <SimonDectro> Step one: hg-git
21:20:35 <SimonDectro> Step two: Never use git (directly) again
21:21:10 <kallisti> fizzie: help is sound stuff your thing?
21:21:12 <kallisti> what should I learn?
21:21:24 * Sgeo guesses that SimonDectro is Gregor?
21:21:28 <fizzie> I don't really know; but doing something in the frequency domain isn't very hard.
21:21:33 -!- monqy has joined.
21:21:55 <kallisti> fizzie: well, hmmm...
21:21:58 <kallisti> fizzie: no I guess it's not.
21:22:09 <kallisti> if I treat it the same way I treat grams.
21:22:21 <fizzie> Turn your time domain signal into a magnitude spectrogram by splitting it into overlapping windows, Hamming-windowing those, then abs(FFT(.)); then do whatever in the spectrogram, like paint on it with finger-paints; then turn the magnitude spectrogram back to the time-domain signal with whatever, like LSEE-MSTFT.
21:22:47 <kallisti> taking subsequences of the sound wave, moving forward one sample (in a standard upsampled bitrate) at a time, FFT on each interval, and collecting data to build the markov chain.
21:23:42 <fizzie> Your per-time-instance "data points" are multivariate and continuous, though, so it's not quite similar to model them.
21:23:53 <fizzie> As opposed to discrete, that is.
21:24:37 <fizzie> Instead of "k" you have a N/2-sample vector of real numbers, where N is your FFT size.
21:24:57 <kallisti> right, but that's still discrete units...
21:25:10 -!- cheater has joined.
21:25:28 <kallisti> I mean
21:25:32 <kallisti> my data is still discrete, rather.
21:25:37 <kallisti> because lolcomputer
21:25:58 <colloinkgravisom> bacaque
21:26:06 <colloinkgravisom> <kallisti> colloinkgravisom: what is your shit again?
21:26:10 <colloinkgravisom> what does htis even mean btw
21:26:18 <kallisti> colloinkgravisom: what is your markov chain thing.
21:26:42 -!- pikhq has quit (Read error: Operation timed out).
21:26:49 <colloinkgravisom> <fizzie> You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation.
21:26:52 <colloinkgravisom> fizzie: Is that what fungot does? :p
21:26:52 <fungot> colloinkgravisom: that is just a value of type " airbus is a big fan of avril....but this song " there
21:27:01 <kallisti> fizzie: hmmm, wouldn't it be possible to track a markov model on each frequency component of the spectrogram? that could be interesting.
21:27:23 <fizzie> kallisti: Sure, they're still "discrete", but you're very unlikely to see the exact same spectrum ever again. Well, except for the complete silence, maybe.
21:27:25 -!- pikhq has joined.
21:27:46 <kallisti> fizzie: oh right, I was thinking I could do some "fuzziness" there.
21:28:10 <kallisti> fizzie: basically the magnitude of a frequency component adds smaller values to magnitudes around it in a nice curve shape.
21:28:18 <fizzie> kallisti: Of course you can quantize the shit out of them, but it won't necessarily do anything sensible, since the values aren't such "semantically sensible" (whatever that means) things like a grapheme like 'k'.
21:28:27 <kallisti> right.
21:28:30 <fizzie> You've got multiple instruments doing their own things and so on.
21:28:32 <kallisti> I'd end up with noise most likely.
21:28:50 <fizzie> As for doing it on each frequency band separately, sure, that's possible, but most music has, you know, some correlation across frequencies.
21:28:50 <TheLittleOne> kallisti: I generate noise, do you want it?
21:28:56 <kallisti> no.
21:29:06 <colloinkgravisom> <Sgeo> I can't seem to figure out how to revert my code in git
21:29:06 <colloinkgravisom> <SimonDectro> Step one: hg-git
21:29:06 <colloinkgravisom> <SimonDectro> Step two: Never use git (directly) again
21:29:17 <fizzie> As opposed to 128 instruments generating a single frequency, and playing their whole own thing without caring about their neighbours.
21:29:25 <kallisti> looool
21:29:26 <colloinkgravisom> SimonDectro: The best part is that everyone else will hate you if you do this since hg cannot do things that are fundamental parts of the git workflow.
21:29:38 <kallisti> fizzie: this sounds incredibly complicated.
21:29:53 <ais523> Sgeo: git help reset
21:30:02 <fizzie> kallisti: You can do it for MIDI files though, those are in discrete notes and you can process one instrumental track at a time and so on.
21:30:04 <colloinkgravisom> Sgeo: did you see where i told you that
21:30:08 <colloinkgravisom> Sgeo: your capability thing is nonsense
21:30:10 <colloinkgravisom> and makes no sense
21:30:14 <ais523> alternatively, darcs help rollback, or the equivalent in sg that hasn't been named yet
21:30:16 <kallisti> fizzie: meh no
21:30:20 -!- Taneb has quit (Quit: Leaving).
21:30:35 <fizzie> (Aways a while.)
21:30:54 <kallisti> fizzie: hmmm perhaps each markov chain of each frequency band will take note of what its neighbors are doing at the time of being recorded, and that data will be used in generating the random sound?
21:30:58 <kallisti> that's so vague.
21:31:59 <kallisti> I think to get anything meaningful you'd have to analyze the signal from many viewpoints.
21:32:18 <kallisti> I think you'd need some kind of rhythm analysis.
21:32:27 <kallisti> and then frequency spectrum.
21:32:59 <SimonDectro> <colloinkgravisom> SimonDectro: The best part is that everyone else will hate you if you do this since hg cannot do things that are fundamental parts of the git workflow. // fast-forward and ... ?
21:33:15 <colloinkgravisom> SimonDectro: Rebase.
21:33:16 <monqy> i had a feeling sgeos capability thing was nonsense and made no sense but i didnt actually want to read about it to the point where i could understand that it indeed was nonsense and made no sense
21:33:26 <colloinkgravisom> Whether you like rebasing or not, it's a fundamental part of the git workflow.
21:33:35 <colloinkgravisom> OK, I think hg has rebase these days, but I somewhat doubt it works properly with hg-git.
21:34:12 <SimonDectro> It doesn't.
21:34:18 <SimonDectro> But rebasing sucks foot.
21:34:18 <fizzie> kallisti: (But, I mean, you can always just go on ahead and see what comes out; it might still sound interesting. If you want to go the full analyze-the-music-into-its-separate-components route, that's... complicated.)
21:34:26 <SimonDectro> (Also, it can PULL rebases, it just can't PUSH them)
21:34:34 <kallisti> fizzie: I think you could analyze the rhythms of different frequency bands to get a number of "instruments"
21:34:42 <colloinkgravisom> SimonDectro: Whether you like it or not is irrelevant. In git, the merge workflow common in hg can cause silent, irreversible data-loss.
21:34:46 <kallisti> but yes it would be very very complicated
21:34:50 <colloinkgravisom> That's why people who use git (rather than pretending it's hg) don't use the merge workflow.
21:35:08 <SimonDectro> <colloinkgravisom> SimonDectro: Whether you like it or not is irrelevant. In git, the merge workflow common in hg can cause silent, irreversible data-loss. // da-FUQ?!?!?!
21:35:35 <colloinkgravisom> SimonDectro: http://randyfay.com/node/89
21:35:57 <kallisti> fizzie: another important thing to do would be to analyze tempo so that you can keep timing coherent as you generate.
21:36:02 <colloinkgravisom> SimonDectro: (It's not the --force one, it's the one after.)
21:36:03 <kallisti> perhaps with some room for variance
21:36:42 <kallisti> you'd need to analyze a lot of different variables in order to generate any kind of sensible patterns.
21:37:10 <SimonDectro> colloinkgravisom: My brain. My braaaain. Where the hell is scape🐐?
21:37:40 <colloinkgravisom> SimonDectro: Being designed, slowly :P
21:37:53 <kallisti> fizzie: anyway if you can point me to any kind of useful reading material I'd appreciate it.
21:38:06 <colloinkgravisom> Anyway, git is not really totally unworkable, as long as you don't pretend it's another VCS.
21:38:08 <colloinkgravisom> It's just a pain.
21:38:18 <SimonDectro> My advisor is so VCS-incompetent, he can barely work cvs, can't work svn, and gets all pissy if you mention hg.
21:38:27 <SimonDectro> Giving git to him would be a disaster beyond my comprehension.
21:38:47 <colloinkgravisom> SimonDectro: Giving him hg would be an equal disaster :P
21:38:50 <colloinkgravisom> Giving him a computer, for that matter.
21:39:00 <colloinkgravisom> Can he do his work without electricity?
21:39:01 <kallisti> fizzie: ah I see what you were saying with the hamming window I think.
21:39:32 <zzo38> If you have a black and white video tape, and only a composite output, but playing it on a color television results in color artifacts, can the color artifacts be removed by connecting it to the component input on the television set instead?
21:39:39 <colloinkgravisom> kallisti: Anyway, my n-gram stuff is for SERIOUS models, models that take up a terabyte.
21:39:46 <SimonDectro> colloinkgravisom: Lines from a Makefile we share:
21:39:47 <SimonDectro> c:
21:39:48 <SimonDectro> hg pull -v -u; hg commit -v -m ok; hg push -v
21:39:56 <kallisti> colloinkgravisom: just wait until I begin my AWESOME NOISE GENERATOR
21:39:58 <SimonDectro> u:
21:39:58 <SimonDectro> hg pull -v ; hg up -v
21:40:05 <kallisti> it will be most statistically significant noise of all time.
21:40:10 <kallisti> +the
21:40:13 <SimonDectro> colloinkgravisom: We don't let him touch code any more.
21:41:21 <kallisti> fizzie: if I understand correctly, the hamming window provides you with a bit of context for each frequency band, rather than just a single frequency component independent of all others.
21:42:07 <Sgeo> colloinkgravisom, I didn't see
21:43:21 <SimonDectro> colloinkgravisom: Incidentally, the only thing hg-git doesn't support about rebase workflow is rebasing commits you've already pushed; which is important, but not vital unless you're also in github fork-the-fork-of-forks land.
21:44:57 <colloinkgravisom> SimonDectro: FSVO important, you're not meant to do that at all usually.
21:45:11 <colloinkgravisom> SimonDectro: Anyway, I'd still consider an hg lens onto a git world as being inherently misleading :P
21:45:29 <SimonDectro> I consider the git world as inherently misleading *shrugs*
21:45:48 <SimonDectro> And in github, that is important >_>
21:46:07 <colloinkgravisom> True.
21:46:16 <Sgeo> colloinkgravisom, the point is that, ideally, any means to manufacture a Cap from an IO requires access to IO
21:46:26 <colloinkgravisom> Sgeo: I'm typing an explanation of exactly why it's pointless and/or useless now.
21:46:35 <Sgeo> Ok
21:47:42 <kallisti> fizzie: http://en.wikipedia.org/wiki/Spectral_density_estimation
21:47:45 <kallisti> this looks relevant
21:48:16 -!- TheLittleOne has quit (Ping timeout: 240 seconds).
21:48:22 <monqy> rip
21:48:46 <colloinkgravisom> Sgeo: The whole point of the object-capability model is that an object provides its own capability; that's literally its definition. (Cap a) or (Token a) or whatever the flavour of the month is, is inherently the same as just a, no matter how many layers of obfuscating monads or whatever you put on top. What you really want is to use IO itself, and ban importing any standard IO functions; then, you would pass around things like the capab
21:48:46 <colloinkgravisom> ility to read a file by simply passing around (FilePath -> IO String) and such things. Since this isn't practical -- at least, I don't think Safe Haskell supports "custom" trust sets like that -- there is a simple alternative: newtype SafeIO a = SafeIO { runSafeIO :: IO a }. Have this definition, exported entirely (including the constructor) in SafeIO.Internal (which is NOT marked Safe), and have SafeIO which merely imports SafeIO.Intern
21:48:47 <colloinkgravisom> al and exports SafeIO (but NOT its constructor) and runSafeIO, which is marked Trustworthy.
21:48:49 <fizzie> kallisti: Sure, but you don't really need to be fancy there, and periodogram == FFT == good enough. The Hamming window gives you a more reasonable spectrum estimate than the resolution-wise-theoretically-optimal rectangular window, and that's about it.
21:49:01 <zzo38> Still, I think I my idea would have work call it LIO for Limited I/O, and then newtype LIO x = LIO (IO x); makeLIO = return . fmap LIO; runLIO (LIO x) = x;
21:49:06 <SimonDectro> I'm gonna make my own VCS.
21:49:09 <SimonDectro> With blackjack and hookers.
21:49:09 <zzo38> Without exporting constructor.
21:49:13 <SimonDectro> Actually, screw the VCS.
21:49:13 <zzo38> That should work.
21:49:52 <zzo38> You cannot export runSafeIO as a field in that one! You need to export it as a function instead, otherwise it won't work.
21:49:58 <kallisti> http://en.wikipedia.org/wiki/Short-time_Fourier_transform
21:49:59 <kallisti> wooooo
21:50:05 <colloinkgravisom> zzo38: Right, sorry.
21:50:48 <Sgeo> How is Cap not just a way to prevent importing standard IO functions?
21:50:55 <colloinkgravisom> Sgeo: Most relevantly, you do not need any sort of monad that is not a trivial wrapper, and "Cap" is meaningless. You seem to have started with what you want, assumed that a certain abstraction must be the way to achieve it, and then steadfastly continued despite its impracticality/irrelevance (cf. "I still want a Monad" or wahtever it was). The object-capability model does not require any special library or language support; all it requ
21:50:55 <colloinkgravisom> ires is that the only way to access objects is by being passed them. So all you have to do is provide a type that wraps IO with no values exported to safe code, and you're done.
21:51:19 <fizzie> kallisti: Anyway, I don't really have many reading pointers offhand. You might find LSEE-MSTFT useful; it's an impressive name for a butt-simple "algorithm" for getting a time-domain signal back out of a magnitude (no phase information) spectrogram. There are probabilistic models that can inherently deal with continuous variables; I don't know if e.g. Markov random fields could be applicable, if you want to work directly on the frequency data. Those ten
21:51:19 <fizzie> d to be computationally a bit costly. And of music analysis in general there's been written bazillions of pages. E.g. there are tempo estimation methods using every possible (and impossible) technique, and some of those are actually reasonably reliable too.
21:51:24 <zzo38> Use the functions and type I have, do not export the constructor, and make Functor/Applicative/Monad instance of LIO. Now it is completely sufficient and even mathematically correct.
21:52:08 <colloinkgravisom> Sgeo: I can't say anything about Cap at all, since your idea got progressively more incoherent and your GitHub code is about five lines of nothingness; so I really don't know what you're trying to accomplish at all, but you're most definitely overcomplicating things. IOtoCap is an abuse of the typeclass system, and that's really all you have.
21:52:09 <zzo38> Of course you also need type signatures: makeLIO :: Functor f => f (IO x) -> IO (f (LIO x)); runLIO :: LIO x -> IO x;
21:52:32 <Sgeo> colloinkgravisom, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper
21:52:37 <zzo38> So that you ensure the fixed "return :: x -> IO x"
21:53:47 <zzo38> Do you think this idea will work perfectly?
21:54:00 <Sgeo> And the github code currently seems to work fine, except for the failure to be a monad despite being a trivial wrapper around IO
21:54:31 <Sgeo> The point is that you can't wrap something in the wrapper without access to IO
21:54:56 <zzo38> Sgeo: Doesn't the things I specified sufficient to do exactly what you intended?
21:55:33 -!- ais523 has quit (Remote host closed the connection).
21:55:48 <Sgeo> zzo38, I didn't look. If it's the same thing you mentioned last time, when I was asking about functions being functors, and about currying, what I'm doing is similar except it doesn't require uncurrying
21:57:03 <colloinkgravisom> <Sgeo> colloinkgravisom, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper
21:57:06 <colloinkgravisom> Sgeo: I fail to see the relevance.
21:57:27 <zzo38> Can you use GeneralizedNewtypeDeriving?
21:57:38 <colloinkgravisom> Anyway, I'm not really interested in explaining past the few paragraphs I already have; either you'll understand why it's a bad idea from that given the passing of time, or I'll just be beating my head against a brick wall anyway.
21:57:40 <colloinkgravisom> zzo38: Yes.
21:57:45 <zzo38> It should be Functor/Applicative/Monad
21:57:52 <kallisti> http://en.wikipedia.org/wiki/Time-frequency_analysis
21:57:53 <kallisti> yesssss
21:57:58 <kallisti> wikipedia to the rescue.
21:58:15 <Sgeo> How does Generalized Newtype Deriving interact with Safe Haskell though?
21:58:31 <colloinkgravisom> What?
21:58:37 <colloinkgravisom> Generalised newtype deriving is just a time-saver.
21:58:42 <colloinkgravisom> I, again, fail to see the relevance.
21:59:17 <Sgeo> http://hackage.haskell.org/trac/ghc/ticket/5498
21:59:18 <kallisti> time that can spent writing safe code!
21:59:21 <Sgeo> It's disabled in Safe Haskell
21:59:42 <zzo38> Sgeo: Then just write the instance manually.
21:59:56 <fizzie> Really, you don't necessarily need to be *fancy* there. STFT is cheap and easy.
22:00:45 <zzo38> instance Functor LIO where { fmap f (LIO x) = LIO (f <$> x); }; instance Applicative LIO where { pure = LIO . pure; LIO x <*> LIO y = LIO (x <*> y); }; instance Monad LIO where { return = LIO . return; LIO x >>= f = LIO (x >>= f); };
22:00:50 <colloinkgravisom> Sgeo: Oh, well that's just a bug. But your module is presuambly Trustworthy, so it doesn't matter.
22:01:20 <zzo38> The module can automatically be marked safe
22:01:21 <colloinkgravisom> Sgeo: By the way, even if you do decide to continue trying to make your thing work, scrap that typeclass, it's an abomination.
22:01:22 <SimonDectro> In honor of Purdue's contributions to computer science, I shall from now on only use RCS.
22:01:34 <Sgeo> colloinkgravisom, I don't think I can replace it
22:01:49 <zzo38> Sgeo: I think this way will work isn't it?
22:02:15 <Sgeo> zzo38, does it require uncurrying for, say, f a b :: Int -> Int -> IO ()?
22:03:08 <Sgeo> Hmm
22:03:31 <zzo38> Sgeo: Yes it probably will, but functions to do that for you automatically can be written, even outside of this module I specified. The things I did, and then you can make up everything else you need from that without needing access to the constructor.
22:04:34 <colloinkgravisom> Sgeo: WTF is wrong with liftCap :: IO a -> Cap a?
22:04:47 <Sgeo> colloinkgravisom, that defeats the entire purpose
22:05:14 <colloinkgravisom> Sgeo: Really? Because
22:05:14 <colloinkgravisom> instance IOtoCap (IO a) (Cap a) where
22:05:14 <colloinkgravisom> unsafeMakeFunCap = Cap
22:05:16 <colloinkgravisom> you already have it.
22:05:31 <Sgeo> colloinkgravisom, unsafeMakeFunCap is hidden, as is Cap
22:05:33 <zzo38> That is why you need to hide the constructor.
22:05:35 <Sgeo> Or at least, it should be
22:06:15 <colloinkgravisom> Sgeo: So there's literally no way to use it, and you just defined some dead code for no reason?
22:06:17 <colloinkgravisom> Sweet!!!
22:06:17 <zzo38> makeLIO :: Functor f => f (IO x) -> IO (f (LIO x)); runLIO :: LIO x -> IO x; I think this is the most mathematically elegant solution.
22:06:31 <Sgeo> colloinkgravisom, it's used by makeCap
22:06:47 <colloinkgravisom> Sgeo: Fine then, make it IO a -> IO (Cap a), whatever.
22:07:13 <colloinkgravisom> Actually that doesn't work, basically your entire structure is fucked.
22:07:27 <colloinkgravisom> Like I said, make another unsafe module that exports the constructor, forget all this typeclass nonsense, and re-export it without the constructor in a Trustworthy module.
22:07:37 <colloinkgravisom> If you're going to use Safe Haskell you might as well use it as it's intended to be used.
22:07:59 <Sgeo> What's so bad about the typeclass? Although it does break printf
22:08:16 * colloinkgravisom is even more done than he was the first time.
22:08:28 -!- cheater has quit (Ping timeout: 276 seconds).
22:08:37 <zzo38> elliott: That is why you have to do it the say I specified, I think. I am unsure but I think, at least, the way I specified is the only mathematically elegant way that works and yet doesn't allow unsafe operations.
22:08:59 <Sgeo> *Capabilties> makeCap (\a b -> putStrLn (a ++ b)) >>= \c -> runCap $ (c "Hi" "Bye")
22:10:46 <colloinkgravisom> zzo38: makeLIO seems reasonable enough, but exporting the constructor from an unsafe module is more reasonable still.
22:10:50 <Sgeo> colloinkgravisom, I'm going to probably add more typeclass shenanigans
22:10:58 <colloinkgravisom> Sgeo: Yes, that is because you are inexperienced.
22:11:03 <colloinkgravisom> There is a reason you're not meant to do these kinds of things.
22:11:21 <colloinkgravisom> I will let you fuck up and learn yourself, since clearly telling you doesn't do anything...
22:11:26 <Sgeo> So that forkCap = makeCap forkIO :: Cap () -> Cap ThreadId, rather than IO () -> Cap ThreadId
22:11:48 <Sgeo> Although this is not strictly speaking needed, it would make it easier
22:11:49 <colloinkgravisom> forkCap = makeCap (forkIO . runCap)
22:11:54 <colloinkgravisom> THAT WAS SO HARD!
22:12:07 <zzo38> Yes, you could do it like that, and have two modules, if that is what you want to do. But I think that awy lacks the way to make it automatically safe; in case you want it to be able to make it automatically marked as save
22:12:09 <colloinkgravisom> Thank GOD we have Sgeo's typeclass shenanigans to break inference and give complicated type errors and ...
22:13:38 <Sgeo> Without the complicating shenanigans for making makeCap forkIO just work, I still don't see a way to get rid of the typeclass shenanigans
22:14:43 <colloinkgravisom> Sgeo: You don't want that to do what it does, because it's ridiculous, difficult to understand, will require overlapping instances (and probably even then not work), and basically be terrible in every way.
22:14:50 <colloinkgravisom> But have fun!
22:14:57 <zzo38> Even exporting the safe module without the constructor, you can still make up a smart constructor in an unsafe module: unsafeLIO :: IO x -> LIO x; unsafeLIO = extract . unsafePerformIO . makeLIO . Identity;
22:15:24 <Sgeo> Overlapping Instances is a bad thing in your opinion, I take it?:
22:15:38 <colloinkgravisom> Sgeo: In my opinion?
22:15:47 <colloinkgravisom> Sgeo: It's one of the few extensions everyone can agree probably shouldn't even exist.
22:15:59 <kallisti> Sgeo: it doesn't make sense that you want the function to be implemented in a certain way, when it can easily be written another way without the typeclasses.
22:16:39 <kallisti> you're basically making your entire system completely complicated so that you can write makeCap forkIO, when that's not really what you want in the first place.
22:16:39 <Sgeo> kallisti, I don't see the way to write it without the typeclass
22:17:06 <Sgeo> But what I have is currently survivable without the Overlapping Instances, but I was planning on adding Overlapping Instances
22:17:13 <Sgeo> Either way, the typeclass is still there
22:17:18 <monqy> bad
22:17:23 <monqy> remove it and use a brain
22:17:50 <kallisti> forkCap = makeCap (forkIO . runCap)
22:17:51 <monqy> (the brain is for coming up with a way to do whatever you want to do without the typeclass (unless what you want to do is bad))
22:18:09 <colloinkgravisom> Sgeo: Your dedication to trying to make this terrible idea become a reality is as impressive as it is misguided.
22:18:47 <kallisti> canFork <- forkCap; f canFork
22:19:08 <colloinkgravisom> canned forks
22:19:20 <Sgeo> So, without typeclasses, how do I take a function who, after several applications of arguments, returns an IO, and make that into a function who, after several applications of arguments, returns a Cap
22:19:26 <monqy> immersed in fork fluid
22:19:32 <colloinkgravisom> Sgeo: you can't. you don't want to.
22:19:38 <colloinkgravisom> tough, deal with it
22:19:51 <monqy> Sgeo: why would you want to do that....
22:20:02 <monqy> Sgeo: why
22:20:17 <colloinkgravisom> monqy: bCUZ ITS SUPER EASY NOW!!
22:20:52 <Sgeo> It means I get a makeCap that doesn't require uncurrying
22:21:05 -!- cheater has joined.
22:21:21 <colloinkgravisom> Sgeo: or you could export the constructor from an unsafe module like you're meant to do with safe haskell (HOW MANY TIMES DO I HAVE TO WRITE THIS) and then it becomes trivial!
22:22:33 <Sgeo> Oh, I see
22:24:35 <Vorpal> colloinkgravisom, nice nick
22:24:40 <kallisti> I still think it would make sense to generalize Cap to work with any type (not just a -> IO () whatever) and then wrap in some kind of structure that supports application
22:25:08 <Vorpal> colloinkgravisom, but why instead of elliott?
22:25:16 <kallisti> because `words
22:25:24 <colloinkgravisom> Vorpal: I'm Colloinkgravisom of Hexham.
22:26:21 <SimonDectro> That doesn't narrow it down much.
22:26:24 <SimonDectro> That's like half the channel.
22:26:55 <kallisti> I wonder
22:26:59 <kallisti> if I go to sleep right now
22:27:01 <kallisti> how long I'll sleep
22:27:05 <colloinkgravisom> 3 minutes
22:27:28 <kallisti> probably like 4 hours, just because my brain tries to undermine all of my conscious attempts to fix my sleeping habits.
22:28:22 <colloinkgravisom> kallisti: do what i've started doing, get tired at night and then wake up well-rested in the morning
22:28:37 <kallisti> I don't know if I can endure until the night..
22:29:10 <kallisti> ^rainbow :)
22:29:10 <fungot> :)
22:29:15 <colloinkgravisom> ^rainbow2
22:29:15 <fungot> ...too much output!
22:29:22 <colloinkgravisom> kallisti: btw the secret
22:29:24 <colloinkgravisom> to having the above happening
22:29:31 <colloinkgravisom> is to be sleep-deprived very carefully to set it up
22:29:40 <SimonDectro> ???
22:29:51 <kallisti> colloinkgravisom: oh yes I know what you mean
22:29:54 <kallisti> because I've done it before.
22:29:55 <SimonDectro> That rainbow wasn't very rainbic.
22:30:36 <kallisti> colloinkgravisom: so I think if I wake like 2 or 3 hours before I go to sleep
22:30:39 <colloinkgravisom> kallisti: you want to wake up around 4 pm, try and pull an all-nighter, fail at about 2 pm the next day, thus sleeping until about midnight, then go to bed the next day at about 4 pm; you will wake up at about 2 am and 4 am; get up at 4 and you should have no problems staying up until about midnight
22:30:47 <kallisti> then tomorrow, I will be tired by reasonable hours.
22:30:52 <colloinkgravisom> kallisti: then you will wake up the next morning and magic happens
22:31:21 <colloinkgravisom> i swear to god, this is the _only_ _way_ I can sleep normally; if I do that then a regular pattern works until I mess it up
22:31:34 <colloinkgravisom> SimonDectro: Sure it was.
22:31:59 <colloinkgravisom> Also, 20 over 1.5.
22:32:48 <kallisti> colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm.
22:33:22 <fizzie> SimonDectro: It's more rainbic than...
22:33:25 <fizzie> ^rainbow █████████████████████████████████
22:33:26 <fungot> ...
22:33:33 <SimonDectro> Wow
22:33:40 <fizzie> Uh, well, um, right.
22:33:43 <fizzie> ^rainbow █████████████████████████
22:33:43 <fungot> ...
22:33:47 <colloinkgravisom> lool
22:33:54 <fizzie> How the how early is that "...".
22:33:59 <fizzie> ^rainbow ███████████████
22:33:59 <fungot>
22:34:03 <colloinkgravisom> lol
22:34:04 <colloinkgravisom> <kallisti> colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm.
22:34:11 <fizzie> Oh, right, it does every byte separately.
22:34:20 <fizzie> Well, yes. It is more rainbic than that.
22:34:26 <fizzie> ^rainbow ########################
22:34:26 <fungot> ########################
22:34:26 <colloinkgravisom> kallisti: you need to wake up at 4 pm (fully-rested, having gone to bed at about 5 am to 8 am or so) to start my ten-step plan, sry
22:34:35 <colloinkgravisom> fizzie: Oh, _that's_ why it fails.
22:34:37 <colloinkgravisom> Byte-wise IO.
22:34:39 <iconmaster> ^rainbow ooooh pretty
22:34:39 <fungot> ooooh pretty
22:34:51 <iconmaster> ^rainbow fungot
22:34:51 <fungot> fungot
22:34:52 <kallisti> colloinkgravisom: no fuck you THERE ARE OTHER WAYS
22:35:11 <colloinkgravisom> kallisti: You'll come around eventually.
22:35:12 <kallisti> if I wait a few more hours before I pass out then I can wake up really early tomorrow and then get tired at reasonable hours.
22:35:58 <colloinkgravisom> kallisti: Won't happen.
22:36:06 <colloinkgravisom> That kind of thing only works once, man.
22:36:10 <colloinkgravisom> My 10-step plan is Long Term Assurance.
22:36:14 <colloinkgravisom> LONGURANCE
22:36:21 <colloinkgravisom> `word 50
22:36:25 <HackEgo> st asinquilisombed tospegyrager galickesonsvolutshytenalloacand gerphordcrtion minstl scyodionatz dus muflart yu stralory chu sing lat hourt modeibciumga dured rinwasponinarech inm tastoendry moto ridillficcvcion mustins etherlarie ma pangesaking sectoptbunts steekmserg guarufeliternrendcd sup amance dinargewooites niissonholy lic din asis langlown coev catrolacartazcllemillikurgequalledd beaus apubadarent
22:36:43 <colloinkgravisom> dinargewooites
22:36:48 <colloinkgravisom> `macro
22:36:53 <HackEgo> OYSTER'S
22:36:56 <colloinkgravisom> oyster's
22:37:10 <Vorpal> <fizzie> Oh, right, it does every byte separately. <-- I guess what with UTF-8 support in C11 I could start tweaking cfunge to do that?
22:37:16 <Vorpal> just have to wait for gcc
22:37:19 <Vorpal> to catch up
22:37:38 <colloinkgravisom> Vorpal: It doesn't provide any UTF-8 functions, so I'm not sure why you picked that excuse.
22:38:13 <colloinkgravisom> Vorpal: It's not like cfunge is likely to contain any UTF-8 literals.
22:38:25 <pikhq> The UTF-8 function support is all on libc.
22:38:37 <pikhq> I give even odds of musl being the first one to handle it.
22:39:38 <fizzie> There are no UTF-8 functions specified for libc, either. Except of course if they want to provide some as non-standard extensions. At least as far as I know.
22:39:41 <colloinkgravisom> pikhq: There are none.
22:39:42 <colloinkgravisom> BOLD.
22:40:09 <pikhq> Oh, there aren't any?
22:40:11 <pikhq> That's retarded.
22:40:14 <fizzie> There's the usual "multibyte characters of the current locale" functions, of course, but those aren't new.
22:40:14 <pikhq> Sorry, Retarded.
22:40:41 <zzo38> Make Unicode one of the possible locales then.
22:40:49 <pikhq> zzo38: It already is.
22:41:12 <colloinkgravisom> I doubt that.
22:41:16 <pikhq> Personally, I'm on en_US.UTF-8
22:41:18 <colloinkgravisom> UTF-8, maybe, but I doubt there's a Unicode locale.
22:41:28 <fizzie> The only thing in <uchar.h> are mbrtoc16, c16rtomb, mbrtoc32, c32rtomb; those convert to/fro locale-specific multibyte and char16_t/char32_t, which can be UTF-16/UTF-32, though aren't necessarily.
22:41:30 <pikhq> colloinkgravisom: Well. Yeah, there's no such thing as a "Unicode locale".
22:41:40 <pikhq> The closest you could get would be a C.UTF-8 type thing.
22:41:52 <fizzie> There's also no standard locale except "C", still.
22:42:12 <colloinkgravisom> DAMMIT SOMEBODY ACCEPT MY ANSWER
22:43:46 <colloinkgravisom> kallisti: Pls modify reality so that people accept my answers.
22:44:45 * colloinkgravisom is but a poor Colloinkgravisom.
22:44:56 <zzo38> What answers?
22:45:40 <colloinkgravisom> My sour cereal answers.
22:45:48 <colloinkgravisom> zzo38: Is this your website? http://sourcereal.com/
22:47:20 <zzo38> No
22:47:25 <pikhq> colloinkgravisom: Which answer?
22:47:36 <pikhq> That C11 is fundamentally broken?
22:51:32 <colloinkgravisom> pikhq: no
22:55:56 <colloinkgravisom> kallisti is a mouse.
22:58:41 <colloinkgravisom> 10 over 1
23:02:27 -!- PiRSquaredAway has joined.
23:04:24 <colloinkgravisom> IT SUCKS TO BE MADE OF DEATH :-( --chinese philosopher horatio
23:04:58 <oerjan> colloinkgravisom: i think you must be confusied
23:06:54 <colloinkgravisom> oerjan: who
23:06:57 <colloinkgravisom> who who who who who
23:06:57 <colloinkgravisom> who
23:07:50 <colloinkgravisom> WOW!!!
23:08:19 <oerjan> no, hu is the president
23:09:22 <colloinkgravisom> HELLO WELCOME TO AMERICA
23:11:15 <colloinkgravisom> HELLO GOODBYE FROM AMERICA
23:11:40 <colloinkgravisom> AMERICA
23:18:47 <colloinkgravisom> ffff. 10 over 0.7
23:19:12 <oerjan> the addiction is entering the ugly phase
23:19:35 <colloinkgravisom> maybe i can trade drugs for units
23:21:28 <colloinkgravisom> this is the worst thing ever
23:21:41 <colloinkgravisom> oerjan: YOU SHOULD UPVOTE M no that would be bad
23:21:43 <colloinkgravisom> bad and wrong
23:21:45 <colloinkgravisom> bad & wrong
23:22:12 * colloinkgravisom a small cry
23:23:47 <iconmaster> how did you find sourcereal? That site's great.
23:23:51 -!- oerjan has quit (Quit: Good night, and good luck.).
23:24:08 -!- cheater has quit (Ping timeout: 240 seconds).
23:24:31 <colloinkgravisom> iconmaster: ask monqy, he's the one who gave us the gift of sour cereal
23:24:43 <iconmaster> Mmmm, sour cereal
23:24:44 <colloinkgravisom> googling it produces basically no links so it's STEAHLTH
23:24:46 <colloinkgravisom> staehlth
23:24:49 <colloinkgravisom> wow, words are difficult
23:25:03 <iconmaster> (at first I though it meant "source real")
23:25:14 <colloinkgravisom> i think everybody thinks that :P
23:27:15 <iconmaster> This site is the best thing ever.
23:27:28 <colloinkgravisom> 10 over 0.55 :'(
23:27:29 * colloinkgravisom addict.
23:27:41 <colloinkgravisom> iconmaster: every time I think I've seen all its wonders I notice a sentence I missed before
23:31:59 -!- iconmaster has quit (Quit: DAMN YOU LIGHTLINK).
23:34:39 <colloinkgravisom> 10 over 0.433
23:36:14 -!- cheater has joined.
23:36:54 <colloinkgravisom> YES!
23:37:22 <monqy> !logs
23:38:18 <colloinkgravisom> monqy: hi
23:38:29 <monqy> hi
23:38:38 <colloinkgravisom> hi
23:38:43 <monqy> i myself forgot exactly how i found sourcereal
23:39:25 <monqy> i remember the subject of sour cereal came up in a discussion with kallisti and i searched for sour cereal and found sourcereal but I can't remember anything more
23:40:05 <colloinkgravisom> oh is that actually how you found it
23:40:08 <colloinkgravisom> ok kallisti wins
23:49:32 <PiRSquaredAway> `log .*
23:50:04 <HackEgo> shuf: memory exhausted
23:51:39 -!- NihilistDandy has joined.
23:53:23 -!- PiRSquaredAway has changed nick to PiRSquared17.
2011-12-27
00:04:16 -!- NihilistDandy has quit (Quit: http://haskell.org).
00:05:25 -!- NihilistDandy has joined.
00:10:26 <Vorpal> <colloinkgravisom> Vorpal: It doesn't provide any UTF-8 functions, so I'm not sure why you picked that excuse. <-- iirc fizzie said it had unicode support?
00:10:36 <Vorpal> like u8"foo"
00:11:15 <Vorpal> `log u8
00:11:23 <Vorpal> `pastelogs u8
00:11:25 <Vorpal> `pastelog u8
00:11:26 <Vorpal> dammit
00:11:34 <HackEgo> 2008-06-24.txt:20:45:55: <AnMaster> however "extern inline" and "inline" without extern have reversed meanings beteween gnu89 and C99 iirc
00:11:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3080
00:11:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30914
00:12:09 <Vorpal> wait, 2011-12-24.txt:13:07:23: <fizzie> Anyway, for string literals "foo" is in char with unspecified encoding, L"foo" is in wchar_t with unspecified encoding, u"foo" and U"foo" are in char16_t and char32_t, respectively, with unspecified encoding unless those macros are defined; and, finally, u8"foo" is also in char, but explicitly UTF-8 encoded.
00:12:17 <Vorpal> colloinkgravisom, fizzie ^
00:12:22 <Vorpal> I trusted him
00:12:31 -!- twice11 has left.
00:12:50 <Vorpal> anyway it wouldn't apply here, due to SOCK doing byte IO anyway
00:13:04 <colloinkgravisom> I TRUSTED YOU FIZZIE
00:13:08 <colloinkgravisom> I TRUSTED YOU
00:13:17 <Vorpal> colloinkgravisom, INDEED
00:13:18 <colloinkgravisom> Vorpal: Anyway, I said it had UTF-8 literals approximately one line below, jesus christ.
00:13:26 <colloinkgravisom> That doesn't mean it has any functions.
00:13:34 <Vorpal> colloinkgravisom, well... that is stupid
00:14:41 <colloinkgravisom> Vorpal: Well, you could write a perfectly cromulent UTF-8 library in fully portable C99; what you _couldn't_ do is write any kind of literal that has any kind of guarantee of being UTF-8, AFAIK.
00:14:49 <colloinkgravisom> So it adds the thing you couldn't technically do.
00:14:56 <colloinkgravisom> It's just that nobody actually has a problem with that and the library would be useful.
00:15:12 <Vorpal> well true
00:15:36 <Vorpal> colloinkgravisom, fuck WG14 (iirc?) again
00:17:12 <colloinkgravisom> Does C even need updates? Why are they publishing new standards.
00:17:26 <colloinkgravisom> Probably the only reason the working group even exists any more is to employ people.
00:18:08 <Vorpal> heh
00:18:43 <Vorpal> colloinkgravisom, well, someone need to spend a year talking about how to best to correct a minor typo that didn't actually change the meaning of the standard
00:18:51 <Vorpal> it is a vitally important job
00:18:57 <Vorpal> it must be performed
00:20:52 <colloinkgravisom> Vorpal: --Vorpal "Funge-108" Vorpal
00:21:10 <Vorpal> colloinkgravisom, that died out
00:21:34 <Vorpal> colloinkgravisom, anyway you have to admit Funge-98 is way less precise than C99
00:21:51 <colloinkgravisom> Mycology is more precise :)
00:23:38 <Vorpal> colloinkgravisom, yes but there are two issues with it: 1) it is a test suite, not a carefully worded spec, thus making it more work to figure out why something went wrong 2) it is not actually official as such, thus meaning it doesn't carry the force of an official spec
00:23:46 * Sgeo has a lot of trouble seeing reasons to avoid typeclass abuse if it makes things easier.
00:23:57 <monqy> im dead inside now
00:24:01 <monqy> again
00:24:01 <Vorpal> because it is abuse?
00:24:30 <monqy> because it doesn't make things easier, because there is a better way, because ;_;
00:24:41 <colloinkgravisom> Sgeo: hint: when you do terrible things and argue above your level of expertise and demonstrate extended ignorance over a period of time without devoting a large amount of effort to trying to understand why many others who are more experience than you are telling you to not do something
00:24:42 <colloinkgravisom> Sgeo: nobody
00:24:43 <colloinkgravisom> Sgeo: will
00:24:44 <colloinkgravisom> Sgeo: want
00:24:44 <colloinkgravisom> Sgeo: to
00:24:45 <colloinkgravisom> Sgeo: help
00:24:47 <colloinkgravisom> Sgeo: you
00:25:05 <colloinkgravisom> save the questions for before you ignore everybody
00:25:14 -!- nys has joined.
00:29:43 <pikhq> colloinkgravisom: There is precisely one encoding, and that is UTF-8.
00:30:24 <pikhq> C does not ship with a cromulent UTF-8 library, it ships with an ASCII library and a wishy-washy "wide character" library.
00:30:29 <pikhq> Thus, C is fundamentally broken.
00:30:49 <Vorpal> pikhq, precisely one encoding for what?
00:30:57 <pikhq> Vorpal: Text.
00:31:33 <pikhq> (yes, I'm aware there's technically other encodings, but as far as I'm concerned there's UTF-8, pointless isomorphisms with UTF-8, and broken)
00:31:47 * Vorpal forces pikhq to use some weird DOS code page
00:32:10 <colloinkgravisom> pikhq: imagine if there were people like you in 1991
00:32:26 <Vorpal> colloinkgravisom, that would have saved a /lot/ of trouble
00:32:29 <pikhq> Vorpal: NO DON'T MAKE ME USE LEGACY JIS
00:32:51 <Vorpal> pikhq, you have to use CP864
00:32:56 <Vorpal> it is for arabic
00:33:02 <pikhq> colloinkgravisom: '91? That predates UTF-8.
00:33:04 <Vorpal> you have to learn that language now
00:33:12 <colloinkgravisom> Vorpal: either you don't understand what i'm saying or are weird
00:33:15 -!- TheLittleOne has joined.
00:33:20 <colloinkgravisom> pikhq: '91 was when unicode 1.0 was published
00:33:25 <pikhq> colloinkgravisom: Yup.
00:33:35 <Vorpal> colloinkgravisom, I mean, people doing it right earlier on would have saved a lot of trouble
00:33:41 <colloinkgravisom> pikhq: "there is precisely one encoding and that is <EXISTING CHARACTER ENCODING>"
00:33:52 <Vorpal> oh right
00:33:54 <Vorpal> like that
00:34:04 <pikhq> colloinkgravisom: Hell, I would even accept UTF-16 *if* it got to be ubiquitous.
00:34:05 <colloinkgravisom> (yeah, yeah, unicode is a character set, not an encoding)
00:34:10 <Vorpal> https://en.wikipedia.org/wiki/Template:Character_encoding <-- what a mess
00:34:14 <zzo38> Unicode has many problems, in my opinion
00:34:30 <Vorpal> pikhq, it is on windows
00:34:32 <pikhq> zzo38: Yes, but it has fewer problems than essentially all the alternatives.
00:34:36 <colloinkgravisom> pikhq: my point is that the zealotry doesn't really help because if we build systems that can't handle changing encoding then they won't be able to adapt to anything better than unicode
00:34:39 <pikhq> Vorpal: In the API.
00:34:44 <colloinkgravisom> which has the effect of entrenching unicode forever
00:34:48 <Vorpal> pikhq, that and ASCII. At least you can detect which is which from the byte order mark
00:34:51 <colloinkgravisom> and surely stagnancy is not a property we should aim for.
00:34:56 <colloinkgravisom> nobody could claim that unicode is perfect
00:35:28 <pikhq> colloinkgravisom: What I'm *trying* to say is that we should try not to encourage further use of legacy encodings.
00:35:33 <Vorpal> indeed unicode have many problems, starting with there being multiple encodings of it
00:35:50 <pikhq> And C not having a reasonable handling of UTF-8 built in is one of those.
00:35:59 <pikhq> Erm.
00:36:08 <pikhq> Is one thing that encourages further use of legacy encodings.
00:36:13 <colloinkgravisom> pikhq: well, I'm not sure C actually has an ASCII library.
00:36:19 <colloinkgravisom> isalpha is locale-dependent, after all
00:36:22 <Vorpal> colloinkgravisom, what about string.h?
00:36:28 <Vorpal> hm
00:36:35 <pikhq> colloinkgravisom: Strictly speaking it has an "8-bit character set" library that on common systems amounts to an ASCII library.
00:36:37 <Vorpal> well ctype.h too
00:36:38 <colloinkgravisom> unfortunately, to take advantage of that, "unsigned char" has to be able to store every character you care about
00:36:44 <colloinkgravisom> pikhq: 8-bit! 8-bit!
00:36:48 <colloinkgravisom> pikhq: char doesn't have to be 8 bits!
00:36:55 <pikhq> colloinkgravisom: Minimum 8 bits.
00:37:08 <Vorpal> colloinkgravisom, it has to be 8 bits or larger and a multiple of 2 bits iirc?
00:37:08 <colloinkgravisom> i'm saying that you could have a 32-bit unsigned char with correct isalpha() behaviour, etc.
00:37:11 <Vorpal> or something like that
00:37:14 <colloinkgravisom> C's deficiency is tying everything else to characters
00:37:17 <pikhq> Vorpal: Just 8 bits or larger.
00:37:18 <Vorpal> perhaps power of two bits
00:37:23 <colloinkgravisom> so you'd be restricted to >=32-bit types, and a lot of space would be wasted, etc.
00:37:31 <pikhq> And anything more than that is only found on the Deathstation 9000.
00:37:34 <colloinkgravisom> but I don't think C actually forbids a Unicode implementation at all
00:37:35 <zzo38> LLVM is designed better than C.
00:37:39 <Vorpal> pikhq, hm. What were the old POSIX restrictions on char?
00:37:58 <Vorpal> pikhq, before it decided "exactly 8 bits due to intersection of old rules and C99 rules"
00:38:08 <colloinkgravisom> pikhq: which is presumably why wchar_t started existing: so that you could implement decent character semantics without the knock-on effects of a larger char
00:38:09 <pikhq> I dunno.
00:38:27 <colloinkgravisom> I have a hunch that text handling is outside of C's domain in the first place, though
00:38:31 <pikhq> colloinkgravisom: Of course, wchar_t itself has problems.
00:38:35 <Vorpal> I believe wchar_t is 16 bits
00:38:39 <colloinkgravisom> s/char/byte/g and remove all the functions that purport to operate on text
00:38:40 <pikhq> UTF-32 is a variable-width encoding.
00:38:43 <Vorpal> and it is a pain to interface with
00:38:44 <Sgeo> colloinkgravisom, helpful: Not shouting at me constantly
00:38:46 <colloinkgravisom> and people can use a unicode library if they want more
00:38:53 <colloinkgravisom> the problem there is that IO is system-dependent :/
00:38:54 <Vorpal> I used ncursesw at one point
00:38:57 <Vorpal> quite a PITA
00:38:58 <pikhq> Vorpal: wchar_t is *typically* 16 bits.
00:39:15 <colloinkgravisom> Sgeo: yeah what i just said to you was all full of the rare sight known as a "lowercase shouting"
00:39:23 <Vorpal> (I needed Swedish output)
00:39:45 <pikhq> colloinkgravisom: Meh; C is a bad language if you want portability anyways.
00:39:52 -!- TheLittleOne has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
00:39:54 <colloinkgravisom> Sgeo: it's called exasperation, you're responding to criticism and advice by just ignoring the bits you don't like and insisting on going with what you are, and then inciting people to re-defend what they've already defended without you having attempted to rebut them
00:40:01 <pikhq> At a minimum you need POSIX.
00:40:02 <colloinkgravisom> it wears thin quickly
00:40:13 <Vorpal> pikhq, it is what current systems are built upon sadly
00:40:13 <colloinkgravisom> pikhq: yeah. iirc C doesn't even have directory handling.
00:40:23 <Vorpal> at some layer all common systems today are C
00:40:23 <colloinkgravisom> at all.
00:40:30 <pikhq> colloinkgravisom: Yup.
00:40:41 <colloinkgravisom> i don't think you quite need POSIX though :) more like intersection(POSIX, Windows)
00:40:44 <pikhq> colloinkgravisom: That's so you can implement a conforming C system for DOS 1.0.
00:40:52 <colloinkgravisom> which is basically C with bare minimum system interfaces
00:41:16 <Vorpal> colloinkgravisom, problem is, POSIX call it foo(char*, int) while windows calls it bar(int, HANDLE, char*)
00:41:40 <colloinkgravisom> Vorpal: eh... mcmap compiles on both POSIX and Windows save the platform-specific header files
00:41:44 <colloinkgravisom> and implementation files
00:41:50 <colloinkgravisom> and it does /networking/
00:41:54 <colloinkgravisom> admittedly glib smooths over some differences
00:42:06 <zzo38> Can the Haskell type newtype T v f x = T (T x f v -> f x); have join?
00:42:09 <Vorpal> colloinkgravisom, indeed. Also windows use almost-bsd-style sockets
00:42:10 <Vorpal> not quite
00:42:14 <colloinkgravisom> void socket_init(void);
00:42:14 <colloinkgravisom> socket_t make_socket(int domain, int type, int protocol);
00:42:14 <colloinkgravisom> void console_init(void);
00:42:14 <colloinkgravisom> void console_cleanup(void);
00:42:14 <colloinkgravisom> mmap_handle_t make_mmap(int fd, size_t len, void **addr);
00:42:15 <Vorpal> but very similar
00:42:15 <colloinkgravisom> mmap_handle_t resize_mmap(mmap_handle_t old, void *old_addr, int fd, size_t old_len, size_t new_len, void **addr);
00:42:18 <colloinkgravisom> void sync_mmap(void *addr, size_t len);
00:42:20 <colloinkgravisom> + definitions of socket_t and mmap_handle_t
00:42:22 <colloinkgravisom> is all mcmap needs that isn't common
00:42:23 <Vorpal> colloinkgravisom, apart from network you run into more differences
00:42:24 <pikhq> Vorpal: Windows uses ported BSD sockets.
00:42:30 <pikhq> Vorpal: Not just BSD-style.
00:42:36 <Vorpal> pikhq, I thought function names differed?
00:42:38 <colloinkgravisom> pikhq: well...
00:42:41 <colloinkgravisom> socket_t make_socket(int domain, int type, int protocol)
00:42:41 <colloinkgravisom> {
00:42:41 <colloinkgravisom> return WSASocket(domain, type, protocol, 0, 0, 0);
00:42:41 <colloinkgravisom> }
00:42:42 <pikhq> Vorpal: It's actually a port of the 4.4 BSD stack.
00:42:43 <colloinkgravisom> you need that
00:42:48 <zzo38> Can it be made a category if type argument are moved?
00:42:50 <Vorpal> pikhq, heh
00:42:56 <Vorpal> and what colloinkgravisom said
00:42:57 <pikhq> *With* a tiny couple of additions to integrate better with Win32 oddness.
00:42:59 <colloinkgravisom> pikhq: windows doesn't have socket()
00:43:02 <colloinkgravisom> so yaeh
00:43:03 <pikhq> And Win16.
00:43:03 <colloinkgravisom> *yeah
00:43:18 <Vorpal> colloinkgravisom, anyway try output anything but ASCII or colours to the console, as far as I remember you will run into issues on windows then
00:43:18 <colloinkgravisom> zzo38: dunno
00:43:30 <colloinkgravisom> Vorpal: not colours, those have to be done with api calls
00:43:35 <colloinkgravisom> or maybe you can load that ansi.sys thing to make it work
00:43:36 <Vorpal> colloinkgravisom, ah
00:43:46 <colloinkgravisom> basically windows supports all the ansi stuff but only via syscalls :P
00:43:46 <zzo38> ANSI.SYS is only for DOS programs, I think
00:43:49 <Vorpal> colloinkgravisom, anyway the windows console is stuck in DOS codepages iirc
00:43:52 <colloinkgravisom> zzo38: ah, ok
00:44:03 <Vorpal> colloinkgravisom, from what I remember of trying to output Swedish chars during a lab at university
00:44:04 <colloinkgravisom> Vorpal: hmm, that would surprise me. there's powershell and all that which reuses the terminal
00:44:12 <colloinkgravisom> would seem distinctly 90s if that didn't do unicode.
00:44:14 <colloinkgravisom> it's .NET and all.
00:44:45 <pikhq> Strange. At a *minimum* I'd expect it to do Windows legacy codepages.
00:44:47 <Vorpal> colloinkgravisom, I /think/ you can do some wchar_t stuff to make it work. Except you still need different code for Windows and Linux to get something like åäö properly output
00:45:05 <pikhq> Actually, I bet it infers which charset to use
00:45:09 <Vorpal> but with char? It is code page mapping of those chars
00:45:27 <colloinkgravisom> Vorpal: well that's the c interface not the console :P
00:45:39 <Vorpal> colloinkgravisom, possibly
00:45:47 <Vorpal> colloinkgravisom, I just know it is a PITA
00:45:49 <pikhq> DOS executables -> DOS codepage, Win32 command line -> Windows legacy codepage or Unicode, depending on what the resources say
00:46:00 <Vorpal> pikhq, well it could be windows legacy codepage
00:46:22 <Vorpal> pikhq, what it wasn't was UTF-8, UTF-16 or even the same encoding that visual studio used when you wrote the letter in the file
00:46:31 <Sgeo> colloinkgravisom, I'm pretty sure you started out speaking in a hostile way, and misunderstanding what I was doing. Even though I see a way to proceed without typeclass hackery, your attitude does not help me realize that.
00:46:55 <Vorpal> pikhq, if you do puts("åäö"); in visual studio you ain't going to get that out
00:47:13 <pikhq> Vorpal: Recent Visual Studio is almost certainly using a UTF.
00:47:19 <Vorpal> pikhq, most certainly
00:47:24 <Vorpal> pikhq, I think it was vs2005
00:47:27 <Vorpal> don't remember
00:47:29 <Vorpal> could be 2008?
00:47:39 <pikhq> I mean, jeeze, Windows *95* supported UTF-16.
00:47:47 <colloinkgravisom> Sgeo: sigh. you've moved from phase I, denial, into phase II, indignancy. i would be less harsh if your behaviour wrt terrible ideas was not so completely predictable. like i said: whatever, code what you want, but at least i have dibs on saying i told you so when it doesn't work like you want or how it should for the reasons I said.
00:47:59 <colloinkgravisom> Sgeo: i didn't misunderstand what you were doing at all, also.
00:48:00 <pikhq> (long filenames are encoded via UTF-16)
00:48:13 <Vorpal> colloinkgravisom, what is phase III?
00:48:17 <colloinkgravisom> i said it was incomprehensible; that doesn't mean i didn't understand what you were trying to do.
00:48:28 <colloinkgravisom> Vorpal: dunno. i usually stop listening before that happens.
00:48:32 <Vorpal> colloinkgravisom, :D
00:50:14 <Vorpal> colloinkgravisom, for science you must check the next time
00:55:48 <colloinkgravisom> Sgeo: here is the last i will say on the forkCap thing: haskellers expect the text of a program to portray its meaning. they expect a single expression to be abstract and mean one thing; building other expressions out of them should not drastically change the meaning of a subexpression. this is a directly anti-magic philosophy: we (and by "we", i mean "people actually experienced with haskell") expect code to mean what it says, and say w
00:55:49 <colloinkgravisom> hat it means. when we see "makeCap forkIO", we expect makeCap to do some transformation on an opaque value of type (IO () -> IO ThreadId). we do not expect "makeCap (forkIO . buildIOActionFromGivenString)" to cause a fundamental change in meaning just because someone broke the semantics of the language with dangerous and easy-to-misuse extensions. but by "inspecting" the types like this, you introduce such a fundamental meaning change. a
00:55:49 <colloinkgravisom> nd indeed, we do not expect "makeCap (id :: a -> a)" to mean one thing, but "makeCap (id :: IO () -> IO ())" to mean another. again, your "solution" (if it works; I would expect it to blow up on id, actually, due to the polymorphism) breaks this. even the "n-argument" thing breaks this: "makeCap (id :: a -> a)" vs. "makeCap (id :: (a -> b) -> a -> b)". such a thing is interesting only as a fun perversity, a "what not to do". to call it "
00:55:54 <colloinkgravisom> easier" because it obscures meaning, makes abstraction far more difficult and confusing, and acts in a brittle, unpredictable manner that "looks" at its arguments in ways we do not expect well-behaved black-box abstractions to... is one of the worst applications of the word "easier" i can think of. and it's not like you have any real excuse for any of this, either, as i already presented a dirt-simple solution with no hackiness at all th
00:55:59 <colloinkgravisom> at properly used the capabilities of the facility you are trying to utilise, Safe Haskell.
00:57:30 -!- itidus20 has joined.
00:58:16 <Sgeo> Thank you for the Safe Haskell IO a -> Cap a solution, btw
00:58:55 <Sgeo> But I do feel uneasy with it, because it seems almost too easy that someone might write a Cap () to do whatever with it and claim that this usage is safe
00:59:15 <colloinkgravisom> you can do the exact same thing with makeCap.
00:59:55 <colloinkgravisom> of course in the ideal object-capability solution nobody can synthesise a capability like that, they can only compose new ones out of the ones they've been given. it's just that the IO functions in Haskell represent the capability to do anything.
01:00:04 <colloinkgravisom> obviously constructing capabilities from that is a very risky business.
01:00:14 <colloinkgravisom> there's no way to avoid that if you're embedding capabilities like this.
01:00:30 <colloinkgravisom> which is why you have to minimise these "points of failure".
01:00:32 -!- itidus21 has quit (Ping timeout: 252 seconds).
01:00:53 <Sgeo> I don't see the issue with makeCap though. Unless someone uses unsafePerformIO, the capability they create can't just be used by some malicious Cap
01:01:40 <colloinkgravisom> do { let cap = Cap (print 42); ... } === do { cap <- makeCap (print 42); ... }
01:02:07 <colloinkgravisom> your only use of IO in the original was to restrict capability creation to maximally-privileged things (which happen to be the same things that can execute IO actions, coincidentally)
01:02:12 <colloinkgravisom> Safe Haskell already has this capability.
01:02:37 <colloinkgravisom> anyway
01:02:37 <colloinkgravisom> <Sgeo> But I do feel uneasy with it, because it seems almost too easy that someone might write a Cap () to do whatever with it and claim that this usage is safe
01:02:47 <colloinkgravisom> "to do whatever with it" is way too vague to actually answer
01:02:58 <colloinkgravisom> so unless you have an actual concrete example of how this is less secure (it isn't, in any way)...
01:04:37 <Sgeo> launchMissilesCap :: Cap (); launchMissilesCap = Cap launchMissiles -- I think I need to understand Safe Haskell a bit better. But suppose someone wrote a library that did this
01:04:41 <Sgeo> And marked it as Safe
01:05:04 <colloinkgravisom> Sgeo: so what you're saying is
01:05:08 <colloinkgravisom> if you install malicious libraries
01:05:11 <colloinkgravisom> and provide them to user code
01:05:12 <Sgeo> Well, I guess it would need to be Trustworthy to be used by a untrusted code?
01:05:14 <colloinkgravisom> your security is violated?
01:05:15 <colloinkgravisom> DAMN!
01:05:25 <Sgeo> colloinkgravisom, ^^question
01:05:35 <colloinkgravisom> i don't know much about safe haskell, check the docs, but it's irrelevant
01:05:58 <colloinkgravisom> the whole point of Cap is that you only pass it around and don't offer global things because that disrupts the object-capability modfel
01:05:59 <colloinkgravisom> model
01:06:06 <colloinkgravisom> if you install something that maliciously violates this by using an unsafe module
01:06:12 <colloinkgravisom> turns out your security is violated
01:06:15 <colloinkgravisom> if you want to feel better about it
01:06:18 <colloinkgravisom> call the Cap constructor UnsafeCap
01:06:27 <colloinkgravisom> the module already has Unsafe in the name, so if you REALLY need that extra hint
01:06:33 <colloinkgravisom> it's not like such code couldn't just use unsafePerformIO in the first place
01:06:42 <colloinkgravisom> which is on the exact same level of safety as the Cap constructor from your POV
01:06:46 <Sgeo> But that same unsafe module needs to be used for the top-level program to make its legitimate capabilities
01:07:22 <colloinkgravisom> yes, because IT'S A PRIVILEGED MODULE!
01:07:26 <colloinkgravisom> great power, great responsibility, etc. etc. etc.
01:07:43 <colloinkgravisom> obviously you cannot give power to create arbitrary capabilities without giving the power to abuse it
01:07:52 <colloinkgravisom> Safe Haskell is not a substitute for NOT INSTALLING MALICIOUS LIBRARIE
01:07:52 <colloinkgravisom> S
01:08:01 <colloinkgravisom> and exposing them to untrusted code
01:08:02 <zzo38> Is the compiler capable of automatically marking modules as safe?
01:10:11 <Sgeo> colloinkgravisom, in case you're wondering what makeCap id does: Makes a capability that allows something that has it to execute arbitrary IO
01:10:19 <Sgeo> (currently)
01:10:30 <colloinkgravisom> Sgeo: basically you're saying that the IO creation doubles as a way to stop you declaring top-level ones. but it doesn't really, because Cap.Unsafe and its contents (the constructor) is on the exact level of unsafety as System.IO.Unsafe.
01:10:33 <Sgeo> At least, I think so
01:10:49 <colloinkgravisom> yay, you can't predict how your own hard-to-understand hack magic works!
01:10:52 <colloinkgravisom> always a good sign
01:12:29 <Sgeo> colloinkgravisom, but there's more of a community aversion to abuse of unsafePerformIO than there is to abuse of UnsafeCap, especially since UnsafeCap needs to be used anyway in legitimate capacity.
01:13:31 <Sgeo> I guess, though, that people will consider any libraries that abuse UnsafeCap to be literally worthless and ignore them, though
01:14:30 -!- itidus20 has quit (Read error: Connection timed out).
01:14:55 <colloinkgravisom> Sgeo: but UnsafeCap should never ever be used in a top-level definition
01:15:39 <colloinkgravisom> anyway unsafePerformIO is used legitimately too
01:15:46 <colloinkgravisom> there are rules, they have to be followed, it's as simple as that
01:15:59 <colloinkgravisom> even a fully object-capability system has to have a carefully-written implementation to expose the top-level capabilities without bugs
01:17:29 <Sgeo> colloinkgravisom, what about by the untrustworthy code that gets the capabilities to do whatever as an argument? Is that not a top-level def.. derp. But that's still a type of something -> Cap whatever at the top level
01:17:45 <Sgeo> (Although not a use of UnsafeCap at the top level)
01:17:52 <colloinkgravisom> Sgeo: the something is what matters
01:17:59 <colloinkgravisom> there's also a value of type Cap a -> Cap a at top level
01:18:01 <colloinkgravisom> :t id
01:18:02 <lambdabot> forall a. a -> a
01:18:03 <colloinkgravisom> THE HORRORS OF ID!!!
01:18:11 <colloinkgravisom> there's also a function of type
01:18:15 <colloinkgravisom> (IO a -> a) -> (IO a -> a)
01:18:19 <colloinkgravisom> but that doesn't mean you can extract a value out of IO
01:18:44 <colloinkgravisom> the point of Cap is just restricting the only values of type (Cap a) (apart from trivial (return x) and the like) that can be constructed to ones that are passed in as parameters
01:18:57 <Sgeo> There's a value of type Cap a -> Cap (). There's also a value of the same exact type made with UnsafeCap
01:21:07 <colloinkgravisom> Sgeo: what is your point
01:21:46 <Sgeo> That looking at a type is insufficient to see whether abuse of UnsafeCap is going on
01:22:09 <colloinkgravisom> you're really quite massively Missing The Point
01:22:13 <colloinkgravisom> such a value would not be an abuse of UnsafeCap
01:22:17 <colloinkgravisom> it's not an abuse if it provides nothing unsafe
01:22:39 <colloinkgravisom> the only unsafe thing is exposing an actual capability (which is a term that only makes sense within your system; broadly for you it seems to be "any actual IO effect") to something not passed it
01:22:45 <colloinkgravisom> that's it
01:22:47 <colloinkgravisom> and it's irrelevant
01:22:51 <colloinkgravisom> because like I said
01:22:55 <colloinkgravisom> any case where you could say
01:22:59 <colloinkgravisom> foo = UnsafeCap . readFile
01:23:02 <colloinkgravisom> you could just as well say
01:23:07 <colloinkgravisom> foo = unsafePerformIO . makeCap readFile
01:23:11 <colloinkgravisom> (if that even types with your hack...)
01:23:41 <colloinkgravisom> and since Cap.Unsafe is on THE EXACT SAME SAFETY LEVEL, and must be used with THE EXACT SAME CAUTION as System.IO.Unsafe, because they do the SAME THING: exposing IO actions in contexts where it is not safe-by-default to do so
01:23:45 <colloinkgravisom> it is irrelevant
01:24:19 <Sgeo> *Capabilties System.IO.Unsafe> :t unsafePerformIO . makeCap $ readFile
01:24:19 <Sgeo> unsafePerformIO . makeCap $ readFile :: FilePath -> Cap String
01:26:29 <colloinkgravisom> that's not what my code said.
01:26:38 <colloinkgravisom> and I was not really interested in the answer.
01:26:49 <colloinkgravisom> btw, Cap is the wrong name, call it CapIO or something
01:27:13 <colloinkgravisom> Cap doesn't really represent capabilities, it's just an IO monad with a convenient wrapper so that you can't use Haskell's non-object-capability libraries
01:34:58 -!- sebbu2 has quit (Read error: Connection reset by peer).
01:35:29 -!- sebbu2 has joined.
02:03:43 -!- derdon has quit (Remote host closed the connection).
02:05:37 <quintopia> where the hell does one find a name like colloinkgravisom
02:05:47 * quintopia too lazy to read up
02:10:22 <colloinkgravisom> quintopia: `words
02:10:24 <colloinkgravisom> `words
02:10:26 <colloinkgravisom> `words 15
02:10:31 <HackEgo> uite
02:10:32 <HackEgo> lprom hortal affore stanzkur cripth suppo diopseud nehangiti heretaturg nec bel fordfinin kev nunane frtheodii
02:10:37 <colloinkgravisom> `word 50
02:10:40 <colloinkgravisom> (note: word =/= words)
02:10:41 <HackEgo> to pembaress subftraptayhei dinver witchraur bsclfseueno latowpre farmetor asters peron excens monres niesteigeumedeidetic torectonlogodickedj co edessac ne sumop phanty kaltylvilbp ing seed bamparibury gopackenia thcral ii fionio rooklee wel ren ats semer mulere nues ber ohathro hephebratatersavandous sowerotfoluu inocy phigbera cludawhivocadopiren nain volmorowinac gaischicisa bourfinonsob yoe cheathaliolinfintegui diungstlerd sions chafle
02:11:02 <colloinkgravisom> ah,
02:11:03 <colloinkgravisom> `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction 25
02:11:03 <quintopia> oo fun
02:11:05 <colloinkgravisom> is what produced colloinkgravisom
02:11:14 <HackEgo> sortónics pristat porvente lenlauca leindia gar gegnetsertis pontroya ellerka uppinkstis cre stau endra pondovàclon iyillejari isés codeter ölteftwat cantitlir orallnotavere omeofy speräks crecun shvillej revol
02:11:17 <colloinkgravisom> well, it was "colloinkgravisomed".
02:13:40 -!- nys has quit (Quit: quit).
02:14:21 <colloinkgravisom> quintopia: btw the full title is Colloinkgravisom of Hexham tyvm
02:14:39 <quintopia> well of course, m'lord
02:15:20 <colloinkgravisom> quintopia: the house of Colloinkgravisom has a long history, marred only by the fact that nobody can spell our name
02:16:10 <quintopia> i have never said anything untoward about the coloingravisomes, m'lord
02:24:54 -!- androidgravisom has joined.
02:25:10 <androidgravisom> sup
02:25:27 <quintopia> whoa
02:25:39 <quintopia> what sort of android
02:27:01 <androidgravisom> it's a "scroll excel" 7" tablet which is under suspicion of being THE CHEAPEST
02:27:22 <androidgravisom> But! Hey, 1 ghzes!
02:27:48 <quintopia> hurray tablet!
02:28:13 <androidgravisom> i think this thing is using vga output :|
02:28:56 <androidgravisom> it's trying so hard to be an ipad. so hard
02:29:14 <quintopia> wtf
02:29:24 <quintopia> das bs
02:29:42 <androidgravisom> which part
02:29:51 <androidgravisom> WOW THI ONSCREEB KYVOARD SUCK VALLS
02:30:21 <quintopia> does it not swype?
02:30:34 <androidgravisom> wtf is swype
02:31:25 <quintopia> the best OSK interface
02:31:39 <androidgravisom> how do i get that
02:31:51 <quintopia> iunno
02:32:14 <quintopia> it came preinstalled on this thing
02:32:34 <androidgravisom> oh good this thibg comrs bundled with anf i quote "advanced task killer 3"
02:32:47 <androidgravisom> 3 versions of task killing
02:33:05 <androidgravisom> new innovations in shit i sgouldnt hace to do in the first place
02:34:32 <androidgravisom> etf this tuihg desny cone qih android narket hkw xo i get aps onto it
02:34:36 <androidgravisom> oh ny god
02:34:54 <androidgravisom> thisbiz nakijg me resllu appreciate ny iphobe keyboard
02:35:54 -!- androidgravisom has quit (Quit: Page closed).
02:35:54 <quintopia> yeah this came with a decent application manager preinstalled. task killers are things that kill programs running in the background. you know, like operating system services :P
02:36:19 <colloinkgravisom> quintopia: i stand by my "shit i shouldn't have to do in the first place" assessment
02:36:56 <colloinkgravisom> quintopia: oh good, it comes with its very own application installer
02:37:08 <colloinkgravisom> can i just go to like google.com and get an androidmarket.ipk
02:37:13 <colloinkgravisom> i don't really know how this stuff works
02:37:35 <colloinkgravisom> this application installer is AD SUPPORTED holy shit
02:37:46 <quintopia> colloinkgravisom: you dont need a task killer. most apps have some way to kill them, and those that dont can be killed by the app manager (which is like any system monitor really)
02:38:05 <colloinkgravisom> quintopia: yeah, which is why it's the first thing in the appliaction grid thing :P
02:38:08 <colloinkgravisom> MOST IMPORTANT
02:38:26 <colloinkgravisom> wow this camera is the most washed out thing ever
02:38:40 <colloinkgravisom> i cant hardly tell its not greyscale
02:38:40 <quintopia> i bet its all in the softward
02:38:50 <quintopia> apply better filters
02:39:43 <colloinkgravisom> ok android market let's do this shit
02:39:51 <colloinkgravisom> this form factor is insane
02:39:52 <colloinkgravisom> it's like
02:39:57 <colloinkgravisom> 30:9
02:40:24 <colloinkgravisom> hmmm
02:40:24 <quintopia> lul
02:40:30 <colloinkgravisom> is the android market an actual application
02:40:31 <colloinkgravisom> or just a website
02:40:44 <quintopia> both
02:40:55 <colloinkgravisom> ok
02:40:59 <colloinkgravisom> i'm not seeing the application part on the website
02:41:26 -!- GreaseMonkey has joined.
02:42:58 <quintopia> i cant find its real name
02:43:08 <quintopia> its just called Market v3.4.4 here
02:43:47 <colloinkgravisom> quintopia: ahahaha apparently uh
02:43:52 <colloinkgravisom> the devs of a device have to enter an agreement w/ google
02:43:53 <colloinkgravisom> to get it
02:43:55 <fizzie> "There's no access to the official Android Market built-in, but you can get apps from other app stores such as Handango or Opera Mobile Store. Most budget tablets don't have the official Android app store onboard because Google isn't too keen on certifying cheap kit." -- CNET
02:44:04 <colloinkgravisom> noiiiiiiice
02:44:14 <colloinkgravisom> googling "install android markaet" shows people putting it on ~unauthorised devices~
02:44:18 <colloinkgravisom> is that easy i wonder...
02:44:22 <quintopia> gasp
02:44:57 <colloinkgravisom> quintopia: yeah ILLEGITIMATE ACTIVITIES
02:44:58 <colloinkgravisom> im rebel
02:45:11 <fizzie> But it's "3D". (In that it can play something something 3D over its HDMI out.)
02:45:13 <colloinkgravisom> application settings -> "Hidden google application", with lowercase "g", no description
02:45:16 <colloinkgravisom> should i turn it on
02:45:18 <colloinkgravisom> y/n
02:45:38 <quintopia> hmm
02:45:41 <colloinkgravisom> fizzie: also you have to buy your own hdmi cable to do that
02:45:46 <quintopia> party rock is in the house tonight
02:45:52 <fizzie> Butt of course.
02:45:56 <quintopia> and we gonna make you lose your mind
02:46:00 <colloinkgravisom> "To get the Android Market on this tablet click on settings, select applications and select hidden Google application. Go back to home screen and keep your finger on a empty space, an add to home screen pops up select widgets and select market icon , you can now sign in or make a new account by selecting the market icon on your home screen."
02:46:03 <colloinkgravisom> fizzie: holy shit
02:46:05 <colloinkgravisom> did they like
02:46:08 <colloinkgravisom> smuggle it on illegally
02:46:11 <colloinkgravisom> hidden by this setting
02:46:15 <quintopia> haha
02:46:19 <quintopia> that is hilarious
02:46:41 <fizzie> That's the awesomest if.
02:47:15 <colloinkgravisom> the answer is
02:47:16 <colloinkgravisom> yes
02:47:21 <colloinkgravisom> god bless america
02:48:42 <colloinkgravisom> im into the market
02:48:45 <colloinkgravisom> fuck yes hidden google application
02:48:51 <colloinkgravisom> how
02:48:54 <colloinkgravisom> do they get away with this
02:49:11 <colloinkgravisom> it looks like i have to keep this hideous widget on my homescreen to open it tho
02:49:46 <fizzie> Apparently the same setting exists on the "Ainol Novo 7 Advanced Tablet".
02:50:34 <colloinkgravisom> quintopia: whats good irc for the androod
02:50:59 <colloinkgravisom> androirc and andchat are the top two results obviously one of these must be the best per loic
02:51:07 <quintopia> i use irssi connectbot myself, but andchat is what most peeps use
02:51:16 -!- cheater has quit (Ping timeout: 240 seconds).
02:51:27 <colloinkgravisom> hmm i think andchat is the one sgeo uses, maybe i'll go with androirc :)
02:51:30 <colloinkgravisom> or just
02:51:32 <colloinkgravisom> vnc in to this laptop
02:51:35 <colloinkgravisom> that would be the most practical
02:53:34 <colloinkgravisom> i love how
02:53:40 <colloinkgravisom> andchat asks me for the encoding to use
02:53:41 <colloinkgravisom> before like
02:53:42 <colloinkgravisom> letting me connect
02:53:43 <colloinkgravisom> or anything
02:54:49 -!- androidgravisom has joined.
02:54:53 <quintopia> DECIDE NOW AND FOREVER HOLD YOUR PEACE
02:55:07 <androidgravisom> sup
02:55:30 <quintopia> did you figure out where to get swype
02:55:39 <colloinkgravisom> can't i just rely on fizzie
02:55:45 <colloinkgravisom> also how do i like
02:55:48 <colloinkgravisom> go to my homescreen without quitting apps
02:55:54 <colloinkgravisom> i take it this is something this thing can do
02:55:58 <colloinkgravisom> that my ancient iphone can't
02:56:09 <fizzie> (I be sleep.)
02:56:22 <colloinkgravisom> damn
02:56:25 <quintopia> hit the home button
02:56:30 <colloinkgravisom> also i should probably charge this thing
02:56:31 -!- androidgravisom has quit (Read error: Connection reset by peer).
02:56:34 <colloinkgravisom> it keeps just sleeping
02:56:37 <colloinkgravisom> afterl ike 5 seconds
02:56:39 -!- androidgravisom has joined.
02:56:46 <colloinkgravisom> no man i just exited you
02:56:47 <colloinkgravisom> oh wahtever
02:56:50 <colloinkgravisom> *what
02:56:58 <quintopia> then the app sucks
02:57:59 <androidgravisom> This thibg doesnt zeem ti gace swype
02:58:08 <androidgravisom> Oh wait
03:00:05 <colloinkgravisom> ok i'm installing
03:00:06 <colloinkgravisom> the installer
03:00:51 <colloinkgravisom> ok i've installed the installer
03:00:53 <colloinkgravisom> now i'll install it
03:00:56 <colloinkgravisom> quintopia: this better be worth it
03:02:15 <quintopia> colloinkgravisom: it is, i think, once you get used to it. make sure you size it as small as you can though, cuz it gets hard to use when you make it bigger.
03:02:32 <quintopia> also, turn on the line thing that shows where you've swiped
03:02:34 <colloinkgravisom> well this screen is only 7 inches so
03:02:37 <colloinkgravisom> it couldn't get very big.
03:02:42 <colloinkgravisom> i'm gonna go through the tutorial thing
03:02:49 <colloinkgravisom> i take it that i basically just draw out the letters i want right?
03:02:54 <colloinkgravisom> that's what a precursory googling suggested
03:02:55 <colloinkgravisom> like
03:02:57 <colloinkgravisom> draw a line
03:02:59 <colloinkgravisom> on a keyboard
03:03:02 <colloinkgravisom> or sth
03:03:02 <quintopia> yep
03:03:08 <quintopia> one line per word
03:03:14 -!- cheater has joined.
03:03:22 <quintopia> type out words that arent in the dictionary and add them
03:04:12 -!- androidgravisom| has joined.
03:04:17 -!- androidgravisom has quit (Read error: Connection reset by peer).
03:04:35 <colloinkgravisom> this tutorial isnt interactive at all :(
03:05:00 <quintopia> sad day
03:06:11 <androidgravisom|> Swyping all the way
03:06:25 <androidgravisom|> Oh this ain't bad at all
03:06:38 <androidgravisom|> Wow
03:07:14 <androidgravisom|> This is nicer than the iPhone keyboard
03:08:16 <androidgravisom|> I think I'll install an SSH thing now
03:08:46 <androidgravisom|> Thanks for the recommendation
03:08:58 <androidgravisom|> Re swype
03:09:15 <androidgravisom|> Only have speech Oh neat test speech
03:09:23 <androidgravisom|> Oh Neek eight speed
03:09:27 -!- cheater has quit (Read error: Operation timed out).
03:09:31 <androidgravisom|> Only because speech recognition
03:09:42 <androidgravisom|> I have a few cases use here
03:09:51 <androidgravisom|> I would have
03:10:00 <androidgravisom|> A field today
03:10:09 <androidgravisom|> If Susie was
03:10:19 <androidgravisom|> Yeah
03:10:32 <colloinkgravisom> quintopia: behold my attempt at saying "Oh neat, it has speech recognition." and "I'd have a field day if fizzie was here."
03:10:36 <colloinkgravisom> well, attempts, plural
03:14:01 <quintopia> luls
03:14:15 <quintopia> i use the speech recognition to write texts sometimes
03:14:19 <quintopia> always works well for me
03:14:26 <quintopia> but fails miserably for my sister
03:14:28 <quintopia> so
03:14:31 <colloinkgravisom> it seems to want en-US input
03:14:33 <colloinkgravisom> i'm just too british
03:14:47 <quintopia> probably, error exists between chair and mobile device
03:15:57 <colloinkgravisom> awesome, ssh'd in
03:16:22 <colloinkgravisom> quintopia: is there a way to tell swype not to assume im typing dictionary words into this shell :P
03:16:50 <quintopia> just type on it like a regular keyboard if you dont want to use dictionary words
03:16:55 <colloinkgravisom> fair enough
03:17:00 <colloinkgravisom> i guess it relies pretty crucially on the dictionary
03:17:14 <colloinkgravisom> btw i dont think i can set the size of it
03:17:15 <colloinkgravisom> or at least
03:17:17 <colloinkgravisom> i don't know how to
03:17:24 <quintopia> yeah. read the patent for it. it's pretty fascinating.
03:18:36 -!- elliott has joined.
03:18:38 <elliott> sup
03:18:58 <elliott> androidgravisom ismyhome
03:19:00 <elliott> oh
03:19:08 <elliott> no surprising
03:19:09 <elliott> er
03:19:15 <elliott> autospacing
03:19:23 <elliott> in Connecticut
03:19:26 <elliott> LOL
03:19:30 <colloinkgravisom> connecticut :D
03:19:31 <colloinkgravisom> connectbot
03:20:13 <colloinkgravisom> so is android 2.3 the newest thing
03:21:59 -!- elliott has quit (Client Quit).
03:22:09 -!- androidgravisom| has quit (Quit: Bye).
03:23:06 <colloinkgravisom> i'm so excited that this thing comes with flash
03:23:10 <colloinkgravisom> i get to experience the
03:23:13 <colloinkgravisom> mobile flash experienec firsthand
03:24:50 -!- cheater has joined.
03:27:16 * colloinkgravisom decides to torture the flash player
03:34:29 -!- casa has joined.
03:35:57 <Vorpal> colloinkgravisom, you have a new phone? What brand/model?
03:37:39 <colloinkgravisom> Vorpal: tablet actually. <androidgravisom> it's a "scroll excel" 7" tablet which is under suspicion of being THE CHEAPEST <androidgravisom> But! Hey, 1 ghzes!
03:38:05 <Vorpal> I never heard of either the brand or the model
03:38:09 <colloinkgravisom> Vorpal: it's so legit that the android market app, which google only licenses for use to more respectable models, is accessible by turning on a setting named "Hidden google [sic] application" and tapping in a blank space on the home screen
03:38:15 <colloinkgravisom> Completely Legal(tm)
03:38:20 -!- casa has quit (Quit: Saliendo).
03:38:29 <Vorpal> colloinkgravisom, wtf
03:38:40 <colloinkgravisom> it's amazing :D
03:38:49 <Vorpal> colloinkgravisom, so is the hardware bad too?
03:38:58 <colloinkgravisom> it's... not that bad, really
03:39:02 <colloinkgravisom> i mean
03:39:05 <colloinkgravisom> it's nothing amazing
03:39:07 <colloinkgravisom> and the form factor is a bit weird
03:39:14 <colloinkgravisom> but the screen is basically ok, the plastic quality is decent
03:39:24 <Vorpal> what is the form factor then?
03:39:39 <colloinkgravisom> oh man, you can get svg antivirus for android. that's what i've always wanted: a mobile i have to worry about viruses with
03:39:55 <colloinkgravisom> Vorpal: http://image.ebuyer.com/UK/P600-0294945-06.jpg
03:39:59 <Vorpal> svg?
03:40:00 <colloinkgravisom> it's either very portrait or very widescreen
03:40:00 <Vorpal> avg?
03:40:02 <colloinkgravisom> depending on your pov
03:40:04 <colloinkgravisom> 7"
03:40:06 <colloinkgravisom> and er yeah avg
03:40:16 <Vorpal> 7" is small for a tablet
03:40:22 <Vorpal> it is like... a very large phone?
03:40:29 <colloinkgravisom> Naked Scanner Free - "See through your friends' clothes!!! Trick your friends taht you can see them naked!!! Sexy girl, man and fat!!! included."
03:40:32 <Vorpal> and damn that looks sheep
03:40:36 <colloinkgravisom> what an amazing app
03:40:43 <Vorpal> colloinkgravisom, what? really?
03:40:47 <Vorpal> that is pre-installed!?
03:40:49 <colloinkgravisom> yes :D
03:40:51 <colloinkgravisom> er
03:40:52 <colloinkgravisom> no
03:40:54 <colloinkgravisom> that would be amazing
03:40:56 <Vorpal> oh
03:40:56 <colloinkgravisom> this isj ust in the store thing
03:40:59 <Vorpal> oh
03:41:02 <colloinkgravisom> Vorpal: it's less cheap than it looks there actually, the plastic is actually black
03:41:05 <Vorpal> colloinkgravisom, in the official android store?
03:41:10 <colloinkgravisom> yes
03:41:12 <colloinkgravisom> the market thing is kinda lawless
03:41:14 <colloinkgravisom> i mean
03:41:20 <colloinkgravisom> compared to apple's at least
03:41:25 <Vorpal> well yes
03:41:36 <Vorpal> the apple one is draconian though
03:41:48 <colloinkgravisom> ShakeBoobs. only description is "shake the girls' boobs". these are in like the top 30 apps
03:41:58 <colloinkgravisom> along with twitter and opera and all kinds of respectable things
03:42:04 <Vorpal> ouch
03:42:07 <Vorpal> poor google
03:42:30 <Vorpal> colloinkgravisom, the obvious solution would be to add a safesearch style option
03:42:43 <Vorpal> or is there one and you turned it off?
03:42:48 <colloinkgravisom> what, and miss out on ShakeBoobs?
03:42:51 <colloinkgravisom> i haven't switched any settings
03:43:01 <Vorpal> colloinkgravisom, I meant to have that as an /option/.
03:43:07 <colloinkgravisom> oh man. angry birds. do i dare. do i dare find out what all the fuss is about
03:43:07 <Vorpal> for those so inclined
03:43:15 <Vorpal> colloinkgravisom, angry birds is old
03:43:19 <colloinkgravisom> old and popular
03:43:30 <Vorpal> colloinkgravisom, I played that with snes light guns once iirc at a friend's place
03:43:33 <Vorpal> god that was ages ag
03:43:34 <colloinkgravisom> what
03:43:34 <Vorpal> ago*
03:43:39 <colloinkgravisom> with
03:43:41 <colloinkgravisom> snes light guns?
03:43:43 <Vorpal> yes
03:43:48 <colloinkgravisom> i'm sceptical of this claim
03:43:50 <Vorpal> https://en.wikipedia.org/wiki/Light_gun
03:43:54 <colloinkgravisom> http://en.wikipedia.org/wiki/Angry_Birds
03:43:56 <colloinkgravisom> i'm talking about this thing
03:44:05 <Vorpal> oh that one
03:44:15 <Vorpal> colloinkgravisom, I confused it with that duck hunting game
03:44:16 <Vorpal> XD
03:44:18 <colloinkgravisom> lol
03:44:19 <Vorpal> birds
03:44:29 <colloinkgravisom> duck hunt i think you mean
03:44:31 <Vorpal> yes
03:44:42 <Vorpal> duck hunt, played that with snes light gun once
03:44:47 <Vorpal> the accuracy was /terrible/
03:44:55 <colloinkgravisom> vorpal
03:44:59 <Vorpal> yes?
03:45:00 <colloinkgravisom> should i install minecraft pocket edition
03:45:02 <colloinkgravisom> ironically
03:45:17 <colloinkgravisom> oh! there's a free demo
03:45:20 <Vorpal> colloinkgravisom, I saw a guy at university running the free demo version of it on a phone
03:45:22 <colloinkgravisom> i don't even have to wallow in indecision then
03:45:25 <Vorpal> well, it looked like classic
03:45:30 <Vorpal> with somewhat different blocks
03:45:35 <Vorpal> and the controls were super-awkward
03:45:42 <colloinkgravisom> yeah but you know what they say about classic
03:45:44 <colloinkgravisom> that's one step away from classique
03:45:54 <Vorpal> colloinkgravisom, classic on /computer/ is far far better
03:46:03 <colloinkgravisom> oh man, it makes the same menu sounds.
03:46:09 <colloinkgravisom> NOSTALGIA YO.
03:46:12 <Vorpal> heh
03:46:14 <colloinkgravisom> i have to say though
03:46:20 <colloinkgravisom> the swype keyboard thing is better than the iphone's
03:46:23 <colloinkgravisom> ofc it's a third-party app but still :P
03:46:27 <Vorpal> swype?
03:46:43 <Vorpal> how the hell do you pronounce that?
03:46:45 <colloinkgravisom> "swipe"
03:46:46 <Vorpal> as swipe?
03:46:48 <Vorpal> ah
03:46:51 <colloinkgravisom> yeah you basically draw a line on a qwerty keyboard
03:46:53 <colloinkgravisom> to type the word
03:47:01 <colloinkgravisom> it works better than it sounds like it would
03:47:08 <Vorpal> what if the letters are at different ends of the keyboard?
03:47:12 <zzo38> They should make it with physical keyboard
03:47:15 <colloinkgravisom> Vorpal: you just move across and it figures it out
03:47:36 <colloinkgravisom> lmao this pocket edition has the biome sidegrass bug
03:47:42 <colloinkgravisom> and it's a completely different codebase
03:47:44 <Vorpal> colloinkgravisom, what happens if there are multiple alternatives
03:47:44 <colloinkgravisom> wtg mojang
03:47:56 <colloinkgravisom> Vorpal: you can select afterwards, but i've not had to yet
03:47:59 <Vorpal> colloinkgravisom, how do you know it is a completely different codebase?
03:48:00 <colloinkgravisom> in my few minutes of use, admittedly
03:48:04 <colloinkgravisom> and because they've said so
03:48:08 <Vorpal> I mean sure some stuff, like the input code, has to be different
03:48:10 <Vorpal> oh
03:48:12 <Vorpal> that is insane
03:48:18 <colloinkgravisom> not really
03:48:27 <colloinkgravisom> minecraft proper could hardly run well on today's phones
03:48:31 <Vorpal> well okay
03:48:34 <colloinkgravisom> also: the codebase sucks :P
03:48:39 <Vorpal> well yes
03:49:06 <colloinkgravisom> oh it's classic but blocks take time to destroy
03:49:10 <colloinkgravisom> what a neato innovation!!
03:49:12 * Sgeo intends to sleep tonight
03:49:19 <colloinkgravisom> ah. some blocks are not in the demo version.
03:49:38 <colloinkgravisom> Vorpal: hey, it has a unified sp/mp architecture
03:49:41 <colloinkgravisom> that's gotta count for something
03:49:47 <Vorpal> colloinkgravisom, anyway the issue with the side grass is that to solve it you either need like two extra triangles per side slightly in front of the brown area, or you drop the tricks you can do with monochromatic textures
03:49:50 <colloinkgravisom> (you just flick "server is visible" on from within a game to let people join, it seems)
03:49:58 <Vorpal> wait, those trick won't work anyway
03:50:08 <Vorpal> because minecraft doesn't use modern shaders
03:50:15 <colloinkgravisom> "scanning for wifi games" wtf is this only for local network games
03:50:15 <Vorpal> it is the old stateful opengl iirc
03:50:30 <Vorpal> colloinkgravisom, P2P minecraft?
03:50:32 <colloinkgravisom> oh you can turn on fancy graphics it seems
03:50:56 <Vorpal> colloinkgravisom, on a phone the controls where /really/ awkward
03:51:03 <Vorpal> colloinkgravisom, might be better on a larger pad
03:51:14 <Vorpal> and of course accuracy with touch screen is terrible compared to mouse
03:51:22 <Vorpal> might be a question of how used you are to it
03:51:25 <colloinkgravisom> it's just minecraft, you don't need supreme accuracy
03:51:26 <Vorpal> but also I have big fingers
03:51:27 <colloinkgravisom> but the controls are
03:51:28 <colloinkgravisom> eeeeeeh
03:51:32 <Vorpal> as already established
03:51:48 <colloinkgravisom> quintopia: is that cyanogen thing i've heard about applicable to this device
03:51:54 <colloinkgravisom> i really don't know what i'm doing
03:51:54 <colloinkgravisom> at all
03:51:59 <Vorpal> colloinkgravisom, look, my hand can if I stretch it reach from ctrl to enter on a full sized PC keyboard
03:52:10 <Vorpal> as in the far ctrl
03:52:16 <colloinkgravisom> i love how blatantly this thing's look is ripping off the ipad
03:52:19 <colloinkgravisom> like
03:52:33 <Vorpal> it looks worse designed
03:52:40 <Vorpal> at least it looks like a matte surface
03:52:43 <colloinkgravisom> it has the black front/whiteish back thing, and the same kind of name positioning on the back
03:52:51 <colloinkgravisom> it's not
03:52:52 <colloinkgravisom> glossy
03:52:56 <colloinkgravisom> glossy and fingerprint-lovin'
03:53:01 <Vorpal> ouch
03:53:05 <Vorpal> glossy sucks
03:53:08 <Vorpal> due to fingerprints
03:53:18 <colloinkgravisom> that's why you get an oreo-phobic one!
03:53:28 <Vorpal> colloinkgravisom, I assume it isn't that?
03:53:35 <Vorpal> due to being like the cheap one
03:53:38 <colloinkgravisom> naturally
03:53:44 <colloinkgravisom> "break the bricks" what an exciting name for a breakout clone
03:54:17 <Vorpal> colloinkgravisom, if you want to play some good breakout I can recommend lbreakout2 on linux
03:54:22 <Vorpal> iirc it is in ubuntu repos and so on
03:54:24 <colloinkgravisom> i've played lbreakout2
03:54:26 <Vorpal> ah
03:54:30 <Vorpal> colloinkgravisom, and you liked it?
03:54:34 <colloinkgravisom> this is in the android store tho
03:54:37 <colloinkgravisom> Vorpal: it's nice enough
03:54:39 <Vorpal> heh
03:54:41 <colloinkgravisom> i'm not the biggest breakout fanatic
03:54:57 <colloinkgravisom> my favourite thing about android has to be that they've like
03:54:57 <Vorpal> colloinkgravisom, I like the addon level sets with all-explosive tiles and so on
03:55:08 <colloinkgravisom> eliminated the whole "quit application"/"opened application" stuff
03:55:12 <Vorpal> or like all "add the drop-through protection/extra ball"
03:55:13 <colloinkgravisom> and everyone immediately jumped to resurrect it by
03:55:16 <colloinkgravisom> (a) putting quit buttons in their apps
03:55:18 <Vorpal> the results look so amazing
03:55:22 <colloinkgravisom> (b) inventing apps for the sole purpose of killing other apps
03:55:46 <Vorpal> colloinkgravisom, well, having a task manager can be useful sometimes
03:55:49 <Vorpal> like if an application hangs
03:56:00 <colloinkgravisom> "copy music to your phone with a USB cable" really now, really.
03:56:10 <zzo38> Does it have Astrolog?
03:56:11 <Vorpal> colloinkgravisom, can't you just use bluetooth for it?
03:56:18 <colloinkgravisom> Vorpal: maybe, that's just what it says
03:56:24 <Vorpal> colloinkgravisom, on the box or what?
03:56:30 <colloinkgravisom> when i open "Music"
03:56:33 <zzo38> Does it have GPS?
03:56:38 <colloinkgravisom> no
03:56:38 <Vorpal> oh
03:56:38 <colloinkgravisom> to both
03:56:42 <colloinkgravisom> well it might have gps but i doubt it
03:56:54 <Vorpal> colloinkgravisom, does it have tilt sensors?
03:57:11 <colloinkgravisom> well it can tell when i'm holding it sideways
03:57:14 <colloinkgravisom> so... maybe?
03:57:16 <Vorpal> colloinkgravisom, be careful when playing pinball then!
03:57:32 <colloinkgravisom> heh
03:58:05 <Vorpal> colloinkgravisom, can you explain why in http://image.ebuyer.com/UK/P600-0294945-06.jpg it says "Outputs 3D videos" on the computer screen photo on the box?
03:58:15 <Vorpal> it doesn't make any sense
03:58:17 <colloinkgravisom> because it outputs 3d videos
03:58:24 <Vorpal> colloinkgravisom, huh? how?
03:58:27 <Vorpal> two cameras?
03:58:36 <colloinkgravisom> hdmi, one presumes
03:58:48 <Vorpal> colloinkgravisom, so uh... what?
03:58:56 <Vorpal> isn't that up to the video?
03:59:11 <Vorpal> as long as your monitor supports whatever 3D glass technology you want to use
03:59:14 <colloinkgravisom> presumably it's just "has support for whatever hdmi protocol is used for 3d"
03:59:23 <Vorpal> hm
03:59:41 <Vorpal> HDMI is horrible IMO. Long live DVI and DP
04:00:00 <colloinkgravisom> what's wrong with hdmi
04:00:01 <zzo38> They are all horrible. NTSC is better
04:00:08 <Vorpal> colloinkgravisom, all the DRM stuff
04:00:18 <colloinkgravisom> does anybody actually force you to use that
04:00:21 <Vorpal> zzo38, that isn't a cable type
04:00:24 <zzo38> Make NTSC stereovision protocol consisting of a synchronization signal followed by alternating frames for each channel
04:00:27 <Vorpal> colloinkgravisom, but it has support it
04:00:28 <colloinkgravisom> yes. do that
04:00:30 <colloinkgravisom> do what zzo says
04:00:31 <Vorpal> support for it*
04:00:34 <colloinkgravisom> Vorpal: so does x86
04:00:42 <colloinkgravisom> any sufficiently generic platform has drm support
04:00:53 <Vorpal> colloinkgravisom, well this one isn't generic and it has support for it
04:00:59 <quintopia> colloinkgravisom: yes probably
04:01:03 <colloinkgravisom> so?
04:01:18 <Vorpal> colloinkgravisom, so too tired to argue about it further
04:01:32 <colloinkgravisom> hdmi has pretty obviously already won anyawy
04:01:35 <colloinkgravisom> at least against dvi/dp
04:01:48 <Vorpal> colloinkgravisom, depends on where. Not for computer monitors
04:01:56 <Vorpal> for TV yes
04:01:59 <zzo38> Yes, HDMI is bad due to DRM, but other thing too
04:02:10 -!- Klisz has joined.
04:02:11 <Vorpal> DVI is the best one IMO
04:02:12 <zzo38> So I just use VGA or NTSC
04:02:23 <kallisti> 18:39 < monqy> i remember the subject of sour cereal came up in a discussion with kallisti and i searched for sour cereal and found sourcereal but I can't remember anything more
04:02:24 <Vorpal> zzo38, problem is they don't give digital signal
04:02:27 <kallisti> ha
04:02:28 <kallisti> haaaaaaaahaaaaaa
04:02:34 <kallisti> haahahahaha elliott I WIN
04:02:43 * kallisti WILL TAKE HIS CASH PRIZE NOW
04:02:49 <Vorpal> zzo38, anyway the refresh rate of NTSC is lower than that of PAL isn't it?
04:03:37 <zzo38> Vorpal: Yes it is true they don't give digital signal. And because of that, they cannot mix it up. If the signal is defective it *must* be converted using time base correction or whatever else is wrong with it
04:03:51 <Vorpal> zzo38, eh?
04:04:01 <Vorpal> zzo38, the problem with it not being digital is that you get noise
04:04:04 <Vorpal> which is annoying
04:04:16 <zzo38> Yes, that is true; you can get noise.
04:04:23 <Vorpal> zzo38, which is utterly annoying
04:04:36 <Vorpal> thus why I use digital connectors for my computer monitor
04:04:44 <zzo38> The other way to fix digital protocols is to simplify it so much that nobody can implement DRM or encryption or whatever because that would violate the protocol and everything
04:04:56 <Vorpal> I doubt that works
04:05:02 <colloinkgravisom> lord knows violating the protocol has stopped people before
04:05:03 -!- Sgeo has quit (Read error: Connection reset by peer).
04:05:06 <Vorpal> anyway there is analogue encryption protocols
04:05:29 <zzo38> Use trademarks to prevent people from violating the protocol
04:05:36 <Vorpal> doubtful it would work
04:05:52 <zzo38> Because, then if they do it wrong, they are not allowed to claim it is a proper cable/protocol!
04:05:57 -!- Sgeo has joined.
04:06:13 <Vorpal> anyway my GPU has outputs for all the major monitor connections
04:06:36 <Vorpal> DVI-I, DVI-D, HDMI, 2xDP
04:06:37 <Vorpal> iirc
04:06:46 <Vorpal> and an DVI-I<->VGA converter
04:07:19 <Vorpal> 1x DP
04:07:25 <Vorpal> so 5 connectors in total
04:07:37 <Vorpal> I believe it can support up to 5 concurrent displays too
04:07:39 <Vorpal> never tested
04:09:40 <colloinkgravisom> christ
04:09:42 <colloinkgravisom> look at the time
04:09:47 <Vorpal> yes?
04:09:49 <Vorpal> 05:09
04:09:52 <Vorpal> colloinkgravisom, what about it
04:09:54 -!- kallisti_ has joined.
04:09:58 <colloinkgravisom> why aren't i sleeping
04:10:08 <Vorpal> colloinkgravisom, sleep schedules are for weenies
04:10:42 <colloinkgravisom> i had one going for days!
04:10:48 <Vorpal> :D
04:10:56 <Vorpal> colloinkgravisom, you lost it
04:11:01 <kallisti_> colloinkgravisom: I still think sugar with sour sugar stuff would actually be delicious.
04:11:07 <kallisti_> s/sugar/cereal/
04:11:21 <monqy> excellent excellent yes
04:12:11 <kallisti_> because sour cereal is spices it's important to get the right amount.
04:13:14 <Vorpal> you mean sour grass basically?
04:13:16 -!- kallisti has quit (Ping timeout: 268 seconds).
04:13:25 <Vorpal> kallisti_, ^
04:13:32 <kallisti_> Vorpal: WOAH
04:13:35 * kallisti_ BLIND
04:13:36 <Vorpal> kallisti_, what?
04:13:37 <Vorpal> "Cereals are grasses (members of the monocot family Poaceae, also known as Gramineae)[1] cultivated for the edible components of their grain (botanically, a type of fruit called a caryopsis), composed of the endosperm, germ, and bran."
04:13:43 <Vorpal> says wikipedia
04:13:44 <kallisti_> oh, lol
04:13:47 <colloinkgravisom> ...
04:13:58 <kallisti_> I thought you were pinging me to inform me my other nick had disconnected.
04:14:00 <Vorpal> oh you interpreted it like THAT
04:14:22 <kallisti_> yes it's strange to receive a "^" before the thing that you're informing me of.
04:14:26 <Vorpal> so since it is grass I guess you can get high on cereal?
04:14:28 <kallisti_> since it typically... points at the thing
04:14:36 <kallisti_> Vorpal: ....... -_-
04:14:37 <Vorpal> <kallisti_> yes it's strange to receive a "^" before the thing that you're informing me of.
04:14:38 <Vorpal> wrong
04:14:42 <Vorpal> <Vorpal> you mean sour grass basically?
04:14:42 <Vorpal> * kallisti has quit (Ping timeout: 268 seconds)
04:14:42 <Vorpal> <Vorpal> kallisti_, ^
04:14:57 <kallisti_> oh
04:15:00 <Vorpal> you just disconnected in between
04:15:07 <Vorpal> kallisti_, so yes you are BLIND
04:15:22 <kallisti_> and, no, I don't mean DAT FIRE ASS NASTY DANK SHIT.
04:15:31 <Vorpal> heh?
04:15:38 <kallisti_> I mean like sour sugar.
04:15:50 <Vorpal> what?
04:15:52 <colloinkgravisom> quintopia: so would cyanaanaoynoaynoanygen get me all the google apps this thing is too ashamed to include
04:16:01 <Vorpal> kallisti_, since when is cereal sugar?
04:16:04 <kallisti_> Vorpal: in sweden do they have sour canady?
04:16:26 <kallisti_> also in sweden, are certain cereals (like the cold cereal you eat in a bowl with milk) coated in sugar?
04:16:27 <Vorpal> kallisti_, I think so? I don't like it. Generally in the form of rather sour jelly thingies
04:16:38 <kallisti_> now imagine, you put the sour sugary stuff from those candies
04:16:42 <kallisti_> on some kind of cereal
04:16:42 <Vorpal> kallisti_, you mean like muesli?
04:16:46 <kallisti_> ...
04:16:49 <kallisti_> SO UNAMERICAN
04:16:52 <kallisti_> but yes similar.
04:17:29 <Vorpal> muesli is generally all-organic fair-trade stuff without sugar
04:17:33 <kallisti_> AMERICAN MUESLI: http://en.wikipedia.org/wiki/Frosted_Flakes
04:17:38 <kallisti_> WE PUT SUGAR IN EVERYTHING OKAY
04:17:40 <kallisti_> THIS IS TRADITION
04:17:46 <Vorpal> kallisti_, this is very strange to me
04:17:58 <Vorpal> kallisti_, we only put sugar where it belongs
04:18:12 <kallisti_> no it's actually really good, but also we have unsugary cereals and those are good as well.
04:18:16 <Vorpal> kallisti_, we don't get quite as fat either
04:18:26 <quintopia> colloinkgravisom: cyanogenmod is a desktop environment sort of thingy. a home screen/app screen replacement? widget dock? i've not used it.
04:18:37 <quintopia> but i think the answer is "no"
04:19:16 <kallisti_> Vorpal: that's because you expend immense amounts of energy keeping your body warm in the lifeless arctic wasteland tundra that you decided to take residence in.
04:19:44 <Vorpal> kallisti_, anyway I'm sure sugar can be put on most things it is just that it probably a) tastes horrible in many cases b) is unhealthy in most cases
04:20:02 <kallisti_> well we don't actually put sugar on everything
04:20:14 <kallisti_> but... that's not as incredibly inaccurate as it should be.
04:20:14 <Vorpal> kallisti_, do you know what the gulf stream is?
04:20:17 <kallisti_> yes.
04:20:31 <Vorpal> kallisti_, that is why Sweden is not a "lifeless arctic wasteland tundra"
04:20:39 <Vorpal> kallisti_, we get heated up by it
04:21:18 <Vorpal> kallisti_, cold yes, but not tundra
04:21:59 <Vorpal> afaik there are no tundra areas in Sweden unless you count some high altitude mountain areas with glaciers. But then Switzerland has those too, and it is much further south
04:22:24 <kallisti_> Vorpal: ..
04:22:46 <Vorpal> kallisti_, and I live much further south
04:22:47 <kallisti_> I'm just going to continue saying ridiculous things and Vorpal is going to continue believing that I mean it.
04:22:58 <colloinkgravisom> <quintopia> colloinkgravisom: cyanogenmod is a desktop environment sort of thingy. a home screen/app screen replacement? widget dock? i've not used it.
04:23:01 <Vorpal> kallisti_, the ground isn't even frozen today
04:23:03 <colloinkgravisom> quintopia: googling says yr very wrong
04:23:05 <Vorpal> it is like +2C
04:23:12 <Vorpal> kallisti_, it is a very warm winter this year
04:23:18 <quintopia> colloinkgravisom: ok
04:23:24 <kallisti_> Vorpal: same here in fact.
04:23:28 <Vorpal> kallisti_, I take everything serious unless otherwise noted.
04:23:32 <colloinkgravisom> quintopia: it's a rom apparently
04:23:40 <kallisti_> right now it's 48 degrees.
04:23:46 <Vorpal> kallisti_, what unit?
04:23:53 <kallisti_> last year at this time it was below freezing
04:23:59 <Vorpal> kallisti_, I accept SI units and celcius
04:24:10 <Vorpal> that means I'm fine with Kelvin
04:24:26 <kallisti_> !insanetemp 48
04:24:34 <Vorpal> really?
04:24:48 <Vorpal> colloinkgravisom, what was the convert tool command?
04:25:00 <Vorpal> to convert from insane temperature
04:25:04 -!- azaq23 has quit (Quit: Leaving.).
04:25:09 <kallisti_> Vorpal: Celsius, obviously. I'm boiling alive.
04:25:16 <kallisti_> in winter.
04:25:25 <Vorpal> kallisti_, come on that is not boiling. Boiling is 100 C
04:25:27 <quintopia> !sanetemp 48
04:25:38 <kallisti_> 48 F is 8.8 C
04:25:43 <Vorpal> ah
04:25:43 <quintopia> yeah
04:25:52 <kallisti_> which is insanely warm for this time of year
04:26:05 <Vorpal> also the problem with all these units for temperature is that they don't even share a zero
04:26:07 <kallisti_> compared to usual, which is still pretty warm compared to most temperate climates.
04:26:18 <Vorpal> that means it is actually convert and add
04:26:25 <Vorpal> as in, not just a scaling factor
04:26:59 <Vorpal> both a scaling factor and a translation
04:27:07 <quintopia> the problem with all these units for temperature is all these units for temperature
04:27:13 <quintopia> that's the only problem
04:27:21 <Vorpal> hm translation sounds so weird in 1D
04:27:32 <quintopia> Vorpal: use 2D then
04:27:35 <colloinkgravisom> i'm hungry but i should really sleep. help.
04:27:36 <Vorpal> quintopia, really K is the only sane one
04:27:40 <Vorpal> quintopia, 2D temperature?
04:27:42 <Vorpal> lol
04:27:52 <kallisti_> colloinkgravisom: eat and then go to sleep. porbelm sloved
04:28:03 <Vorpal> kallisti_, how does that help
04:28:07 <colloinkgravisom> kallisti_: it's too early man
04:28:09 <colloinkgravisom> i'd end up going to bed at
04:28:12 <colloinkgravisom> double bad o'clock
04:28:14 <quintopia> Vorpal: i'm trying to find the multiplier in projective geometry
04:28:14 <colloinkgravisom> instead of the current
04:28:16 <colloinkgravisom> bad o'clock
04:28:35 <quintopia> its easy for C to F
04:28:47 <kallisti_> colloinkgravisom: sleep, so that your metabolism slows down, and then wake up in the morning at not so bad o' clock and eat a hearty English breakfast
04:28:50 <quintopia> [9/5,32]
04:29:01 <Vorpal> quintopia, hm what is the matrix for it? Can't you just do it in x and w with w as the homogeneous coordinate?
04:29:12 <Vorpal> or is that what you did?
04:29:16 <quintopia> yeah
04:29:23 <Vorpal> right
04:29:24 <quintopia> just put 1 as the second coord
04:29:27 <quintopia> temp as the first
04:29:40 -!- DCliche has joined.
04:29:42 <Vorpal> quintopia, I /am/ familiar with OpenGL, 1 as second coord is obvious
04:29:52 <quintopia> F to C is [5/9,-160/9]
04:29:56 <kallisti_> Vorpal: it solves his problem but demonstrating that it's silly because eating is not very time consuming.
04:30:15 <kallisti_> s/but/by/
04:30:16 <Vorpal> kallisti_, depends on what you eat
04:30:43 <colloinkgravisom> kallisti_: anything is time consuming when its 4:30 am
04:30:44 <Vorpal> kallisti_, some marine shelled animals who's name I forgot can take fairly long to eat
04:30:47 <Vorpal> and to prepare
04:30:50 <quintopia> hurray, it's only multiplication now
04:30:53 <quintopia> :P
04:31:01 <Vorpal> quintopia, it is a matrix multiplication however
04:31:08 -!- Klisz has quit (Ping timeout: 240 seconds).
04:31:13 <Vorpal> quintopia, anyway it is a division too, to get the useful value out
04:31:25 <Vorpal> you need to divide x with w surely
04:31:26 <quintopia> yeah, but it's a dot product...the easiest kind of matrix multiplication!
04:31:29 <Vorpal> unless I missed something
04:31:49 <quintopia> no, no division
04:31:51 <kallisti_> I just ate this http://www.bk.com/en/us/menu-nutrition/category1/menu-item1/index.html
04:31:55 <kallisti_> notice how it actually has sugar in it.
04:31:57 <quintopia> a single number results from the dot product
04:31:58 <Vorpal> quintopia, anyway don't you need a 2x2 matrix?
04:32:00 <kallisti_> they put sugar, in hamburgers.
04:32:08 <Vorpal> quintopia, oh
04:32:10 <Vorpal> right
04:32:11 <Vorpal> I see
04:32:19 <Vorpal> quintopia, I guess that is a special case for this size?
04:32:27 <quintopia> nope
04:32:40 <quintopia> dot products always give magnitudes :P
04:32:40 <Vorpal> quintopia, I'm used to doing M*V and then divide each component in V by the last one.
04:32:50 <Vorpal> I guess that would work here too
04:33:41 <Vorpal> quintopia, I don't know why dot product work here. But that makes it very convenient
04:34:06 <Vorpal> works*
04:34:27 <quintopia> it works because that is what homogeneous coordinates were designed to do...
04:34:44 <Vorpal> quintopia, I have to say I only used them for opengl
04:34:49 <quintopia> ah
04:35:12 <Vorpal> quintopia, so my knowledge of them is limited to what I need for 3D graphics
04:35:19 <Vorpal> or 2D
04:35:29 <quintopia> well
04:35:35 <Vorpal> you can obviously use a 3x3 matrix for xyw
04:35:40 <quintopia> let me ever know if you get into quantum computers ;)
04:35:53 <Vorpal> quintopia, I hope not. I don't understand quantum
04:35:54 <quintopia> my syntax is failing as well
04:36:24 <kallisti_> Vorpal: http://imgs.xkcd.com/comics/world_according_to_americans.png
04:36:49 <Vorpal> kallisti_, I doubt most americans know the shapes that well
04:37:01 <quintopia> that's the joke
04:37:15 <colloinkgravisom> Vorpal: are you serious
04:37:18 <Vorpal> oh right, I didn't read the text at the top
04:37:37 <Vorpal> colloinkgravisom, come on, those islands in the Mediterranean? I couldn't tell you their placement
04:37:54 <colloinkgravisom> things i've learned today: the best way to get Vorpal to miss that you're mocking him is to do it directly
04:38:14 <Vorpal> colloinkgravisom, I'm locked into serious-mode
04:38:54 <Vorpal> though I could tell you more about the European countries, and to some degree elsewhere as well
04:39:11 <colloinkgravisom> huh, ssh uses elliptic curve by default these days
04:39:38 <Vorpal> yeah
04:40:08 <Vorpal> wait is "boxing day" not an American term?
04:40:14 <Vorpal> I thought that was generic English
04:40:19 <Vorpal> as in both American and Brittish
04:40:25 <Vorpal> and probably NZ, AU and so on too
04:40:33 <kallisti_> it's not an American thing, no.
04:40:44 <colloinkgravisom> In the United States, where the day is often known simply as "the day after Christmas", business owners give gifts to people who make deliveries. Although the traditional gift is a fifth of Scotch, because fewer people drink these days the trend is towards non-alcoholic gifts.[5][6] It was formerly more widely observed in the United States, and was more widely known as Boxing Day.[7][8]
04:40:47 <Vorpal> kallisti_, what do you call that day then?>
04:40:49 <Vorpal> s/>//
04:41:11 <colloinkgravisom> what do you call march 28th
04:41:18 <monqy> whats that
04:41:20 <kallisti_> In the United States, where the day is often known simply as "the day after Christmas", business owners give gifts to people who make deliveries. Although the traditional gift is a fifth of Scotch, because fewer people drink these days the trend is towards non-alcoholic gifts.[4][5] It was formerly more widely observed in the United States, and was more widely known as Boxing Day.
04:41:23 <pikhq> colloinkgravisom: The 28th of March.
04:41:29 <Vorpal> colloinkgravisom, trying to remember the significance of that day
04:41:35 <quintopia> i call it mar 28
04:41:39 <quintopia> it's shorter
04:41:42 <Vorpal> colloinkgravisom, but probably yyyy-03-28
04:41:43 <Vorpal> :P
04:41:44 <pikhq> kallisti_, colloinkgravisom: Never heard of such a tradition.
04:41:52 <kallisti_> pikhq: neither have I.
04:42:15 <pikhq> I'm only aware of Boxing Day as a UK thing.
04:42:30 <kallisti_> colloinkgravisom: uh... March 28th?
04:43:26 <Vorpal> kallisti_, how well do you know the world map?
04:43:33 <kallisti_> not very.
04:43:43 <monqy> maps are boring
04:43:53 <Vorpal> monqy, depends on the projection
04:43:59 <kallisti_> I can successfully associate countries with continents, which is uncommon for Americans I think.
04:44:37 <monqy> I can't think of a map I'm any good at
04:44:50 <Vorpal> speaking of projections: https://www.xkcd.com/977/
04:45:07 <kallisti_> also in North American and Eurasia I can place a number of countries, with some countries being associated to general regions without the exact placement known.
04:45:22 <kallisti_> south american is a little fuzzy. Africa is very fuzzy.
04:45:28 <kallisti_> Australia is easy. :P
04:45:43 <Vorpal> kallisti_, well I can do that with ease. Might miss out on some smaller ones. Like if they are above AU or in the Caribbean area
04:45:58 * pikhq likes the Dymaxion projection.
04:46:23 <Vorpal> pikhq, I prefer projecting onto a globe
04:46:35 -!- lambdabot has quit (Ping timeout: 248 seconds).
04:46:43 <kallisti_> Vorpal: I find your patronizing attitude annoying.
04:47:07 <Vorpal> kallisti_, I did not intend to do that
04:47:27 <Vorpal> kallisti_, I was just stating what I believe is a fact. I did not intend to offend you
04:48:16 <kallisti_> offended isn't really the word.
04:48:18 <pikhq> Vorpal: That's not a projection, that's just a scale model.
04:48:27 <pikhq> And, yes, that is preferable by far.
04:48:32 <Vorpal> I know
04:48:51 <Vorpal> pikhq, anyway it is an almost-identity projection onto a sphere
04:49:03 <Vorpal> pikhq, where did it say the projection had to be onto a flat surface
04:49:11 <kallisti_> dude you guys suck mercator projection is the best. If you need any other visual aid your MIND IS SMALL
04:49:39 <kallisti_> "A map projection is any method of representing the surface of a sphere or other three-dimensional body on a plane."
04:49:41 <pikhq> Vorpal: That's generally implied in the term "projection" when referring to maps...
04:49:52 <Vorpal> pikhq, which one is the equvitriangular one now again?
04:50:03 <colloinkgravisom> <kallisti_> Vorpal: I find your patronizing attitude annoying.
04:50:05 <colloinkgravisom> join the club
04:50:06 <pikhq> Equvitriangular?
04:50:14 <Vorpal> pikhq, eh equvirectangular
04:50:18 <Vorpal> mixed that up
04:50:30 <pikhq> Oh, equirectangular.
04:51:09 <pikhq> There's a few sorts.
04:51:30 <pikhq> Plate carrée?
04:51:34 <Vorpal> perhaps
04:51:43 <zzo38> Astrolog includes a map of the world, including Mollewide, and also includes a globe of the world, and can plot the equatorial positions of planets and their ascendant/descendant on the world map, and can plot the constellations on a map and on a globe
04:51:47 <Vorpal> pikhq, I was thinking of the one found in hugin the panorama tool
04:51:53 <Vorpal> it is just called equirectangular
04:52:18 <Vorpal> not sure which one that is
04:52:27 <pikhq> That's a class of projections.
04:52:36 <zzo38> It can also draw ley lines on the world map
04:52:39 <Vorpal> pikhq, hm
04:52:49 <Vorpal> pikhq, what about a plain cylindrical projection?
04:53:03 <Vorpal> as in straight out onto a cylinder which is then unrolled
04:53:27 <pikhq> Class; Gall-Peters being a typical one.
04:53:31 <Vorpal> hm
04:53:36 <Vorpal> hugin is too imprecise
04:53:52 <Vorpal> Miller Cylindrical is listed there
04:54:05 <Vorpal> I wonder what a Triplane projection is...
04:54:06 <pikhq> (the projection there can vary based on aspect ratio and preferred parallels)
04:54:40 <kallisti_> map projections: the most interesting thing ever.
04:54:41 <zzo38> It doesn't include the tropics though.
04:54:45 -!- colloinkgravisom has quit (Ping timeout: 248 seconds).
04:55:06 <Vorpal> kallisti_, it is pretty interesting yes
04:55:14 <zzo38> Also, there is one map with positions of planets shown, the one without that has no equator either.
04:55:24 <Vorpal> kallisti_, wait you are joking. You said you preferred Mercator
04:55:41 <kallisti_> indeed
04:55:58 <kallisti_> I like to imagine antarctica as this huge mass of land larger than everything.
04:56:10 <Vorpal> pikhq, btw I don't understand dymaxion
04:56:12 <Vorpal> how does it work
04:57:22 <zzo38> But it ought to include the tropics, because the tropics are the declination of the beginning of the corresponding astrological signs on the ecliptic
04:57:34 <kallisti_> Vorpal: approximate the globe onto a polyhedron
04:57:38 <kallisti_> then unfold it.
04:57:41 <Vorpal> I see
04:58:08 <Vorpal> zzo38, why would anyone in here care about astrology?
04:58:17 <Vorpal> it is pointless
04:58:24 -!- Darth_Cliche has joined.
04:58:26 <Vorpal> and doesn't worek
04:58:27 <Vorpal> work*
04:58:55 <kallisti_> "He attributed the north-up-superior/south-down-inferior presentation of most other world maps to cultural bias."
04:58:58 <kallisti_> loool
04:59:03 <kallisti_> north, just a cultural artifact, man.
04:59:31 <Vorpal> kallisti_, anyway map projections are interesting. Consider if you have a texture and want to project it onto a sphere. You will get different size on the pixels in different places
04:59:47 <Vorpal> kallisti_, well it is
04:59:49 <zzo38> Vorpal: The astrological signs are really a unit of measurement on the ecliptic. Cancer=90 degrees, Capricorn=270 degrees. And possibly you know about the Tropic of Cancer and Tropic of Capricorn on the world map?
05:00:14 <Vorpal> kallisti_, there is absolutely no reason you couldn't paint the other end of the compass red
05:00:31 <Vorpal> zzo38, yes but they don't really interest me
05:01:23 <kallisti_> pikhq: dymaxion is good.
05:02:02 <Vorpal> yeah it is
05:02:10 <Vorpal> I like the butterfly projection too
05:02:12 <Vorpal> soo pretty
05:02:21 <Vorpal> I never heard of it before I saw that xkcd though
05:02:31 -!- DCliche has quit (Ping timeout: 276 seconds).
05:05:00 <zzo38> If you say people born under this sign are like this and with that sign should take advice like that, that is obviously nonsense; but astrological signs by themself are a valid units of measurement, although not very good because they make it hard to add and subtract.
05:06:09 <zzo38> (But, then, the months on the calendar can also make it hard to add and subtract, in mostly the same way that astrological signs are hard to add and subtract)
05:06:29 <pikhq> Good ol' Buckminster Fuller.
05:06:43 <zzo38> Yes! This is true!! Did you know that?
05:07:31 <pikhq> zzo38: Yeah, I actually was aware that the astrological signs did have that basis.
05:09:03 <zzo38> So now you can understand the tropics on the map, too.
05:09:05 <Vorpal> months are silly
05:09:10 <Vorpal> I prefer year-day
05:10:20 <zzo38> Another way is to use Julian day numbers (unrelated to the Julian calendar).
05:14:53 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
05:16:30 -!- NihilistDandy has joined.
05:27:31 <kallisti_> challenge: invent a map projection that looks like a penis, and write a huge paper about it to convince people that it's actually not penis shaped it just LOOKS that way.
05:27:53 <kallisti_> bonus points if it's actually useful and accurate on many different measurements.
05:29:39 <zzo38> I would say such thing would be bad (at least, I would hate it and so would many people, but do so if you want to anyways I don't care) if it isn't actually useful and accurate on many different measurements. But if it is useful in these uses, then yes try these challenge see what happen you might make good thing.
05:31:36 <Vorpal> kallisti_, oh the zzoian grammar there
05:33:14 <kallisti_> tthere is absolutely no way a penis-shaped map is going to be useful.
05:33:36 <zzo38> Yes, I also doubt it is ever going to be useful.
05:33:57 <zzo38> But it is possible, even in past, people said their airplane would never work but it work anyways.
05:34:03 <kallisti_> lol
05:34:51 <zzo38> I have no intention to invent such a map projection or write such a paper.
05:35:15 <zzo38> (That is your problem, not mine.)
05:36:21 <Vorpal> kallisti_, I suggest more equality between the sexes. Try a vagina-shaped one instead
05:37:09 <Vorpal> kallisti_, there are way too many penis joke compared to vagina jokes
05:37:24 <zzo38> I doubt that will be useful either but still you can try if you want to do so.
05:37:36 <Vorpal> I don't intend to try it
05:38:34 * Vorpal listens to some Greig
05:38:58 <Vorpal> Op. 40 II. Sarabande: Andante
05:39:20 <Vorpal> got this CD for xmas
05:39:22 <Vorpal> quite nice
05:42:27 <Vorpal> I wonder what wikipedia will be like in 100 years
05:43:54 -!- lambdabot has joined.
05:52:41 <pikhq> Vorpal: It will come with the words "Don't Panic" in large, friendly letters.
05:54:32 -!- augur has quit (Remote host closed the connection).
06:00:55 -!- Darth_Cliche has changed nick to Klisz.
06:05:10 -!- PiRSquared17 has quit (Quit: will be back soon).
06:11:16 <kallisti_> > text . join . zipWith (\x y -> '\ETX':x:y:[]) (cycle "0123456789") $ "I wish this would work"
06:11:17 <lambdabot> 0I1 2w3i4s5h6 7t8h9i0s1 2w3o4u5l6d7 8w9o0r1k
06:12:36 <zzo38> Yesterday, I was playing short D&D game session. My brother wasn't doing much during that session, I did most of the things. But still not much because it is short session. He did only fight a electric web and help me to pry a plate off of a door when I ask (at first I try doing it by hand but that doesn't work)
06:12:57 <kallisti_> `haskell import Control.Monad; main = putStrLn . join . zipWith (\x y -> '\ETX':x:y:[]) (cycle "0123456789") $ "I wish this would work"
06:13:00 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
06:13:10 <kallisti_> !haskell import Control.Monad; main = putStrLn . join . zipWith (\x y -> '\ETX':x:y:[]) (cycle "0123456789") $ "I wish this would work"
06:13:19 <kallisti_> :(
06:21:28 <Vorpal> pikhq, hah
06:23:28 <Vorpal> kallisti_, what do you expect it to do?
06:25:35 <Vorpal> night
06:30:16 -!- Vorpal has quit (Ping timeout: 276 seconds).
06:39:47 -!- MDude has changed nick to MSleep.
06:44:29 -!- PiRSquared17 has joined.
06:49:52 <kallisti_> @tell Vorpal I expect it to do what it looks like it does, but lambdabot filters control codes.
06:49:52 <lambdabot> Consider it noted.
06:57:49 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:08:20 -!- itidus21 has joined.
07:10:49 <NihilistDandy> kallisti_: What are you trying to do?
07:11:37 <kallisti_> spam beautiful rainbows.
07:11:43 <kallisti_> ^rainbow like this!
07:11:43 <fungot> like this!
07:11:54 <NihilistDandy> Ah
07:12:14 <NihilistDandy> I guess you could write your own little bot to do it
07:12:48 <NihilistDandy> hello
07:12:54 <NihilistDandy> :|
07:13:04 <NihilistDandy> Just tried a simple script. Obviously did not work
07:14:08 <PiRSquared17> ^rainbow PiRSquared17 PiRSquared17
07:14:08 <fungot> PiRSquared PiRSquared
07:15:38 <itidus21> ^rainbow magi matio plakestic pawn jugliabita anked nium posin winita
07:15:38 <fungot> magi matio plakestic pawn jugliabita anked nium posin winita
07:17:41 -!- PiRSquared17 has changed nick to PiRSquaredAway.
07:25:53 <NihilistDandy> kallisti_: Did you try that in ghci?
07:32:35 <kallisti_> no.
07:32:40 <kallisti_> but I know it works.
07:32:43 <kallisti_> because I tried it elsewhere.
07:32:55 <kallisti_> (I already have my own little bot to do it)
07:33:49 <NihilistDandy> aha
07:42:08 <kallisti_> `paste bin/frink
07:42:11 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27399
07:42:28 <kallisti_> `paste /hackenv/lib/frink
07:42:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.185
07:43:08 <kallisti_> `frink miles -> km
07:43:20 <HackEgo> 25146/15625 (exactly 1.609344)
07:57:34 -!- kmc has joined.
08:03:23 -!- augur has joined.
08:05:36 <zzo38> I figured out another use of <>>= operator I made up, which is, like this: "Hello, World! The answer is 42." <>>= guard . (/= ' ')
08:05:54 <zzo38> And of course you can use it with any MonadPlus
08:09:05 <zzo38> So, <>>= can be used with IO monad and with list monad. It can also be used with other monads but I have not used <>>= with any others
08:10:44 -!- marapreykhus has joined.
08:10:53 <marapreykhus> Wait
08:10:57 -!- marapreykhus has changed nick to Ngevd.
08:10:59 <Ngevd> Hello!
08:23:29 -!- Ngevd has quit (Ping timeout: 240 seconds).
08:27:35 -!- NihilistDandy has changed nick to NihilistDandy|aw.
08:28:03 -!- Ngevd has joined.
08:29:14 <zzo38> Is there a name for the applicatives where the "optional" function is lossy? IO is one of them (error messages get lost), but list isn't.
08:30:35 -!- zzo38 has quit (Remote host closed the connection).
08:36:38 -!- Ngevd has quit (Ping timeout: 248 seconds).
08:40:40 -!- Ngevd has joined.
08:41:24 -!- Ngevd has quit (Remote host closed the connection).
08:47:47 -!- oerjan has joined.
08:51:10 <oerjan> 23:49:32: <PiRSquaredAway> `log .*
08:51:10 <oerjan> 23:50:04: <HackEgo> shuf: memory exhausted
08:51:11 <oerjan> hm
08:51:13 <oerjan> `log
08:51:23 <HackEgo> 2010-05-06.txt:18:43:36: <Phantom_Hoover> Conservapedia was pretty funny back in the day.
08:51:43 <oerjan> `cat bin/log
08:51:47 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ grep -P -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi \
08:52:30 <oerjan> ah so without an argument it chooses the file first?
08:53:49 -!- monqy has quit (Quit: hello).
08:54:05 <oerjan> technically shuf -n 1 should be implementable without memory overflow.
08:54:38 -!- Slereah has quit (Ping timeout: 240 seconds).
08:55:44 -!- Slereah_ has joined.
09:02:43 <kallisti_> head: write error: Broken pipe
09:02:46 <kallisti_> what's up with this..
09:03:16 <kallisti_> frink '$expr'| head -n $linelimit | head -c $charlimit
09:03:21 <oerjan> ceci n'est pas un pipe
09:03:25 <kallisti_> note this is inside a perl qx
09:03:36 <kallisti_> so the $'s are perl variables
09:04:11 <oerjan> is $expr escaped properly
09:05:02 <oerjan> oh wait write error
09:05:21 <oerjan> presumably head -c closes its end before head -n finishes reading?
09:05:35 <kallisti_> hmmm yes that could be it.
09:05:49 <kallisti_> but I don't know if it does..
09:05:56 <oerjan> er
09:05:59 <oerjan> *writing
09:06:34 <kallisti_> I'll try reversing them
09:06:37 <kallisti_> in the pipeline
09:07:29 <kallisti_> yes that fixed it.
09:07:47 <fizzie> oerjan: They probably haven't bothered with special cases; and "shuf" itself of course isn't.
09:08:22 <oerjan> it sounds really stupid for head to be sensitive to that though, given that it's going to do the exact same thing against it's incoming pipe
09:08:27 <oerjan> *its
09:09:52 <itidus21> ceci n'est pas une intelligence consciente
09:16:56 -!- jix has quit (Quit: leaving).
09:18:06 -!- jix has joined.
09:20:45 * kallisti_ thinks it would be nice if lists were overloaded in Haskell.
09:21:11 <kallisti_> basically so that : and [] are typeclass methods and list literals/notation is overloaded to work with any kind of list-like structure.
09:21:19 <kallisti_> of course it would break the whole :-is-capitalized thing
09:24:51 <kallisti_> actually wait, no it wouldn't
09:25:13 <kallisti_> er, yes it would. :P
09:25:19 <kallisti_> if you wanted to continue using the convenient : notation.
09:25:27 <kallisti_> otherwise you could just use a toList method.
09:25:39 <kallisti_> but then all of Data.List still only works with linked lists.
09:26:30 <oerjan> * kallisti WILL TAKE HIS CASH PRIZE NOW
09:26:42 <oerjan> that's that toy money on top of the t-rex, right?
09:27:20 <kallisti_> yes
09:31:29 <oerjan> <kallisti_> I'm just going to continue saying ridiculous things and Vorpal is going to continue believing that I mean it. <-- sounds like a plan
09:38:32 -!- kallisti_ has changed nick to kallisti.
09:41:15 -!- Ngevd has joined.
09:41:21 <Ngevd> Hello!
09:41:54 <kallisti> hi
09:42:25 <oerjan> morn du
09:49:38 <oerjan> !haskell import Control.Monad; main = putStrLn . join . zipWith (\x y -> '\ETX':x:y:[]) (cycle "0123456789") $ "I wish this would work"
09:49:49 <oerjan> ah no bot
09:50:17 <fizzie> No bot is better than bad bot, like the saying goes.
09:50:44 <fizzie> fungot: Are you a friend or a foe?
09:50:45 <fungot> fizzie: it's just so stupid that ' stty erase h' has more bizarre results. it was, that he was overcome with the vastness, profundity, and fnord
09:51:35 <oerjan> let that be a lesson to those who try stty erase h
09:52:24 <oerjan> > ord '\ETX'
09:52:24 <lambdabot> 3
09:53:25 <oerjan> Like this?
09:54:01 <fizzie> ^rainbow I think his version also used the color code 0, white.
09:54:01 <fungot> I think his version also used the color code , white.
09:54:52 <fizzie> Heh, the 0 got lost there, since there was nothing separating it from the preceding number.
09:55:18 <fizzie> (The above only cycles 2..9 to avoid black too.)
09:56:33 <oerjan> 3Test
09:56:51 <fizzie> Away to find the pot of gold at the end of
09:56:52 <oerjan> what's the background one
09:56:53 <fizzie> ^rainbow2
09:56:53 <fungot> ...too much output!
09:57:14 <fizzie> You just put in ^CN,Mfoo
09:58:35 -!- Ngevd has quit (Quit: Goodbye).
09:59:52 <oerjan> ^ul (( )( )):^!S(~:^:S*a~^~*a*~:^):^
09:59:52 <fungot> ...too much output!
10:01:24 <oerjan> ^ul (( )( )):^!S(~:^:S*a~^~*a*~:^):^
10:01:24 <fungot> ...too much output!
10:04:06 <oerjan> ^ul ((0)(1)):^!S(~:^:S*a~^~*a*~:^):^
10:04:06 <fungot> 011010011001011010010110011010011001011001101001011010 ...too much output!
10:05:45 -!- monqy has joined.
10:05:46 * oerjan wonders if those numbers show up for everyone
10:12:46 -!- GreaseMonkey has changed nick to int21h.
10:12:54 -!- int21h has changed nick to outbf.
10:13:27 -!- outbf has changed nick to movewd0c00004.
10:13:54 <oerjan> an assembly of nicks
10:16:00 -!- kmc has quit (Quit: Leaving).
10:23:56 -!- movewd0c00004 has quit (Quit: The Other Game).
11:15:43 -!- oerjan has quit (Quit: leaving).
11:19:23 -!- itidus20 has joined.
11:21:41 -!- itidus21 has quit (Ping timeout: 240 seconds).
11:34:46 -!- Ngevd has joined.
11:36:48 -!- itidus20 has quit (Read error: Connection timed out).
11:39:16 <Ngevd> Hello!
11:45:56 -!- Taneb has joined.
11:45:56 -!- Ngevd has quit (Read error: Connection reset by peer).
11:53:02 <Madoka-Kaname> ^help
11:53:02 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
11:53:08 <Madoka-Kaname> ^show rainbow2
11:53:08 <fungot> ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
11:53:43 <Madoka-Kaname> ^ul ((0)(1)):^!S(~:^:S*a~^~*a*~:^):^
11:53:43 <fungot> 011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010010110 ...too much output!
11:54:06 <Madoka-Kaname> What is that exactly?
12:13:00 -!- monqy has quit (Quit: hello).
12:32:08 <Taneb> > (ap (zipWith id . map (*)) id) [1..10]
12:32:10 <lambdabot> [1,4,9,16,25,36,49,64,81,100]
12:33:20 <Madoka-Kaname> > map (ap (*)) [1..10]
12:33:21 <lambdabot> No instance for (GHC.Enum.Enum (a -> a))
12:33:21 <lambdabot> arising from a use of `e_1110' ...
12:33:34 <Madoka-Kaname> @hoogle (a -> a -> b) -> a -> b
12:33:34 <lambdabot> Data.Foldable foldl1 :: Foldable t => (a -> a -> a) -> t a -> a
12:33:35 <lambdabot> Data.Foldable foldr1 :: Foldable t => (a -> a -> a) -> t a -> a
12:33:35 <lambdabot> Prelude foldl1 :: (a -> a -> a) -> [a] -> a
12:33:48 <Madoka-Kaname> @pl (\f x -> f x x)
12:33:48 <lambdabot> join
12:33:52 <Taneb> You want join
12:33:53 <Madoka-Kaname> > map (join (*)) [1..10]
12:33:54 <lambdabot> [1,4,9,16,25,36,49,64,81,100]
12:34:23 <Taneb> For the record, I am lagging, but I seem to be able to say things and read the logs
12:34:28 <Taneb> But not the chat?
12:34:36 -!- Taneb has quit (Read error: Connection reset by peer).
12:34:56 -!- Taneb has joined.
12:35:53 <Taneb> My idea was weird and lame
12:37:01 <Taneb> > const (map (^2) [1..10]) "this does the same function"
12:37:02 <lambdabot> [1,4,9,16,25,36,49,64,81,100]
12:40:18 <Madoka-Kaname> > map (^2) [1..10] --this does the same function
12:40:19 <lambdabot> [1,4,9,16,25,36,49,64,81,100]
12:42:15 <Taneb> I like my way of doing comments.
12:57:27 <fizzie> Madoka-Kaname: The Thue-Morse sequence: 0 1 10 1001 10010110 1001011001101001 and so on. At least that's what it looks like.
13:00:21 -!- derdon has joined.
13:00:46 -!- Ngevd has joined.
13:03:09 -!- Taneb has quit (Ping timeout: 240 seconds).
13:03:35 -!- Ngevd has quit (Read error: Connection reset by peer).
13:03:53 -!- Ngevd has joined.
13:07:01 -!- Taneb has joined.
13:07:01 -!- Ngevd has quit (Read error: Connection reset by peer).
13:16:25 -!- Taneb has quit (Read error: Connection reset by peer).
13:16:50 -!- Taneb has joined.
13:17:26 -!- pikhq_ has joined.
13:17:46 -!- pikhq has quit (Ping timeout: 255 seconds).
13:19:24 -!- zzo38 has joined.
13:25:12 -!- Taneb has quit (Ping timeout: 268 seconds).
13:26:25 -!- Ngevd has joined.
13:44:27 -!- Ngevd has quit (Read error: Connection reset by peer).
13:45:17 -!- Ngevd has joined.
13:47:56 -!- cheater has quit (Ping timeout: 240 seconds).
13:50:56 -!- Taneb has joined.
13:51:43 -!- Ngevd has quit (Ping timeout: 248 seconds).
14:01:10 -!- Taneb|Hovercraft has joined.
14:01:10 -!- Taneb has quit (Read error: Connection reset by peer).
14:01:59 -!- cheater has joined.
14:10:27 -!- iconmaster has joined.
14:19:41 -!- elliott has joined.
14:25:11 -!- sebbu3 has joined.
14:25:12 -!- sebbu3 has quit (Changing host).
14:25:12 -!- sebbu3 has joined.
14:26:16 -!- cheater has quit (Ping timeout: 240 seconds).
14:26:38 -!- sebbu2 has quit (Ping timeout: 255 seconds).
14:34:44 -!- derdon has quit (Remote host closed the connection).
14:38:44 -!- cheater has joined.
14:43:36 -!- incomprehensibly has joined.
14:43:49 <elliott> > '\xFF'
14:43:50 <lambdabot> '\255'
14:44:10 <quintopia> > 'elliott'
14:44:11 <lambdabot> <no location info>:
14:44:11 <lambdabot> lexical error in string/character literal at chara...
14:44:32 <quintopia> its true, lambda. we dont have any location info
14:45:33 <elliott> colloinkgravisom of hexham
14:45:36 -!- elliott has changed nick to colloinkgravisom.
14:45:38 <colloinkgravisom> that's totally location info
14:46:06 <colloinkgravisom> 11:53:34: <Taneb> Any ideas for a Minecraft puzzle/adventure map?
14:46:06 <colloinkgravisom> 11:53:53: <Taneb> Specifically the grand finalay of a long one
14:46:15 <colloinkgravisom> Taneb|Hovercraft: Dude.
14:46:20 <colloinkgravisom> Taneb|Hovercraft: That's not how you spell finale.
14:47:09 <Taneb|Hovercraft> Yes but I didn't want to find the accent
14:47:19 <colloinkgravisom> There... is... no... accent?
14:47:35 <colloinkgravisom> 04:58:55: <kallisti_> "He attributed the north-up-superior/south-down-inferior presentation of most other world maps to cultural bias."
14:47:35 <colloinkgravisom> 04:58:58: <kallisti_> loool
14:47:35 <colloinkgravisom> 04:59:03: <kallisti_> north, just a cultural artifact, man.
14:47:39 <Taneb|Hovercraft> Is there not?
14:47:45 <colloinkgravisom> kallisti: Er, you do realise that north=up is as arbitrary as north=down?
14:47:45 <quintopia> yes there is. he totally speaks with an accent.
14:47:47 <Taneb|Hovercraft> Wow, that changes EVERYTHING!
14:48:08 <colloinkgravisom> 04:58:08: <Vorpal> zzo38, why would anyone in here care about astrology?
14:48:09 <colloinkgravisom> 04:58:17: <Vorpal> it is pointless
14:48:09 <colloinkgravisom> 04:58:26: <Vorpal> and doesn't worek
14:48:09 <colloinkgravisom> 04:58:27: <Vorpal> work*
14:48:23 <colloinkgravisom> @tell Vorpal I think you will find there is not universal agreement about this in the channel.
14:48:24 <lambdabot> Consider it noted.
14:48:32 <quintopia> zzo only knows
14:49:32 <Taneb|Hovercraft> I hope Vorpla joins the channel and says something really either obvious or controversial straight away
14:49:36 <Taneb|Hovercraft> *Vorpal
14:49:52 <Taneb|Hovercraft> As in, says something straight away, not joins straight away
14:50:19 <quintopia> your modifier was correctly placed, and as such, your meaning was understood
14:50:28 -!- NihilistDandy|aw has quit (Quit: Leaving...).
14:50:42 <Taneb|Hovercraft> I almost didn't understand me
14:50:48 <colloinkgravisom> 07:42:08: <kallisti_> `paste bin/frink
14:50:48 <colloinkgravisom> 07:42:11: <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27399
14:50:48 <colloinkgravisom> 07:42:28: <kallisti_> `paste /hackenv/lib/frink
14:50:48 <colloinkgravisom> 07:42:31: <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.185
14:50:50 <colloinkgravisom> `file lib/frink
14:50:53 <HackEgo> lib/frink: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
14:51:02 <colloinkgravisom> kallisti: It's compiled Java.
14:52:07 <colloinkgravisom> 09:26:30: <oerjan> * kallisti WILL TAKE HIS CASH PRIZE NOW
14:52:07 <colloinkgravisom> 09:26:42: <oerjan> that's that toy money on top of the t-rex, right?
14:52:11 <colloinkgravisom> @tell oerjan Yes.
14:52:12 <lambdabot> Consider it noted.
14:52:31 <colloinkgravisom> `addquote <fungot> fizzie: it's just so stupid that ' stty erase h' has more bizarre results. it was, that he was overcome with the vastness, profundity, and fnord
14:52:32 <fungot> colloinkgravisom: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp
14:52:35 <HackEgo> 779) <fungot> fizzie: it's just so stupid that ' stty erase h' has more bizarre results. it was, that he was overcome with the vastness, profundity, and fnord
14:55:36 <colloinkgravisom> fungot: :D
14:55:37 <fungot> colloinkgravisom: am i that much bad. take up, boy; open't. so, now go with, do miscarrie, thou had'st bin resolute pompey
14:59:19 <iconmaster> So, I finished my article for Bloux today finally. Now, for the implemenation.
14:59:19 <lambdabot> iconmaster: You have 1 new message. '/msg lambdabot @messages' to read it.
15:00:05 <colloinkgravisom> hmm, looks fun
15:00:44 <iconmaster> I still need to work on what logic sub-commands I will give the user
15:00:49 <iconmaster> not too many, i think
15:04:36 -!- MDude has joined.
15:07:49 -!- MSleep has quit (Ping timeout: 240 seconds).
15:08:32 -!- MSleep has joined.
15:09:49 -!- MDude has quit (Ping timeout: 240 seconds).
15:15:52 <zzo38> I played pinball game today, and I earned fifty-eight extra balls. The score reels only show five digits but I earned over one million points (it can display the score to you separately from the reels if you ask for game stat)
15:16:08 -!- Taneb|Hovercraft has changed nick to Ngevd.
15:16:28 <Ngevd> You're either much better at pinball than I am or have found a really broken machine
15:17:28 <zzo38> It is actually a computer game. Normally you also get 2 more extra balls for beating the high score, but I don't like that feature so I removed it.
15:20:41 -!- Vorpal has joined.
15:21:01 <Vorpal> is the topic in the channel in Latin?
15:21:01 <lambdabot> Vorpal: You have 2 new messages. '/msg lambdabot @messages' to read them.
15:21:27 <zzo38> Vorpal: I doubt it
15:21:28 <Vorpal> <lambdabot> colloinkgravisom said 32m 42s ago: I think you will find there is not universal agreement about this in the channel.
15:21:31 <Vorpal> about what?
15:21:43 <colloinkgravisom> http://codu.org/logs/log/_esoteric/2011-12-27#144808colloinkgravisom
15:21:44 <Ngevd> The usefullness of astrology
15:22:02 <Vorpal> ah
15:22:32 <Vorpal> colloinkgravisom, apart from the people who are into esoterica I very much doubt anyone here seriously believe in astrology
15:22:45 -!- MDude has joined.
15:22:47 <zzo38> About whether or not astrology is pointless. Even if it is agreed that divination doesn't work, that doesn't necessarily mean astrology is full of solely completely useless and wrong data.
15:22:54 <colloinkgravisom> Vorpal: Feel free to continue digging your own hole after I try and nudge you out of it.
15:23:18 <zzo38> You have to dig a hole by hand please, not by tools
15:23:46 <Vorpal> colloinkgravisom, I would have assumed that people here are too smart to believe it. But of course I may be wrong.
15:24:16 <colloinkgravisom> Vorpal: Is this what you think not digging yourself deeper looks like?
15:24:36 <Vorpal> colloinkgravisom, I don't care about offending someone who believes in astrology.
15:25:00 <colloinkgravisom> Vorpal: My palm is now firmly welded to my face.
15:25:10 <zzo38> I don't believe it either; I know better than both the people who do believe in astrology and the people who argue against it saying the position of the sun is wrong or whatever.
15:25:17 -!- MSleep has quit (Ping timeout: 240 seconds).
15:25:54 <Sgeo> colloinkgravisom, I was under the impression that a person in here who believed in astrology changed his mind?
15:25:55 <zzo38> (If you don't know better, I suggest you remove that userbox from your Wikipedia)
15:25:57 <Vorpal> colloinkgravisom, good, that saves effort in future facepalming
15:26:40 <Vorpal> Sgeo, who was that?
15:26:43 <zzo38> Sgeo: I don't know. But I do know that oerjan made some horoscope for the first message of Agora Nomic, but without really understanding any of it
15:27:23 <zzo38> They simply used the default settings, made a screenshot of the horoscope, and copied the interpretation text.
15:30:34 * colloinkgravisom wonders how long it'll take for Vorpal to feel stupid, decides it'll be forever.
15:34:05 <zzo38> (Some have suggested combining astrology with psychotherapy in a way that doesn't require any of its divinatory predictions to be correct.)
15:35:12 <Vorpal> zzo38, I'm somewhat suspicious of that claim, but I lack the knowledge of what they are suggesting to make any sort of more precise statement about that.
15:36:39 <zzo38> As one person replied to Steiner (1945:210) when asked why she goes to an astrologer with her tropubles instead of to a psychologist: "An astrologer doesn't pry into all your secrets."
15:36:47 <zzo38> ("Tropubles" is in the original text)
15:37:08 <Vorpal> well, if astrology worked they kind of would pry into your secrets XD
15:39:42 <zzo38> Vorpal: O, yes. I suppose astrological psychotherapy is the way it is, then, because it is designed not to work and that is why it works. "Research indicates that, in factual terms, all astrological techniques are equally invalid. So use whatever technique you like, simple or complex, logical or crazy, it makes no difference. The only thing that matters is that you and your clients should like it."
15:40:24 -!- xandy| has joined.
15:40:27 <Vorpal> well sure that works
15:40:28 <colloinkgravisom> `welcome xandy|
15:40:33 <HackEgo> xandy|: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
15:41:05 <zzo38> xandy|: Look in wiki please, in case you didn't already (some people might find the wiki first and then the IRC)
15:41:05 -!- hagb4rd has joined.
15:41:29 <Vorpal> colloinkgravisom, we could make a bot that kept track of who had been in here earlier and automatically told them that if they were new.
15:42:14 <zzo38> Vorpal: Did it get cut off?
15:42:25 <Vorpal> zzo38, what getting cut off?
15:42:44 <zzo38> The message is supposed to " at the end, the one that I wrote
15:42:50 <Vorpal> it had that
15:43:00 <zzo38> OK
15:43:17 <Vorpal> zzo38, my irc client line add line breaks if a message is too long
15:44:30 <zzo38> I didn't think it was too long, I just wanted to make sure. Usually if a message fills up to three lines on my screen, it won't get cut off. So that is what I use
15:57:21 <zzo38> "The placebo effect is held to be the underlying reason why any successful psychotherapy works."
15:57:47 <zzo38> "Thus a gelatine capsule filled with sugar, and given with the assurance that it will bring sleep, will actually do so for about one person in three (Melzack & Wall 1983)."
15:57:57 <zzo38> "Placebos are effective even when people know they are receiving them (Levine & Gordon 1984), which should help astrology's effectiveness even when people believe there is nothing in it."
15:57:58 -!- nys has joined.
15:59:00 <zzo38> "Indeed, the split is so wide that many psychologists now refer to the "scientist-practitioner gap," where "gap" is actually more like "war"."
15:59:06 -!- nys has quit (Remote host closed the connection).
16:00:15 <zzo38> Skafte (1969), a psychologist and counsellor, tested the effect of introducing popular astrology (and palmistry and numerology) into personal and vocational counselling, for example by saying "a person born under your sign is supposed to enjoy travel -- does this sound like you?" The words were chosen to avoid implying validity and to promote dialogue.
16:00:27 -!- nys has joined.
16:01:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
16:03:07 -!- Sgeo has joined.
16:15:34 -!- derdon has joined.
16:15:41 <Sgeo> Apparently, Leslie Nielsen and Liam Neeson are not the same person.
16:17:56 <zzo38> Who told you they *were* the same person?
16:18:02 -!- nys has quit (Quit: quit).
16:23:50 <Sgeo> No one, but the names are so similar that when I saw either name, I thought "Guy from Airplane!"
16:43:43 -!- Klisz has joined.
16:53:45 -!- SimonDectro has changed nick to Gregor.
16:55:23 <Gregor> Wow, I've been SimonDectro for quite a while X-D
16:55:55 <Gregor> `words --help
16:55:59 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
16:56:23 <Gregor> `words --canadian-english-insane 40
16:56:27 <HackEgo> wood expurli avoudcappe sporally nitrain sulfover bebapp weave noneygregai ansensha liquoid piquel unad grancedalecturn centejud cretterorbit disessed vaitetrance rement fura sutummete hemetrop circular remut marlstere unopathima curtratin suppresting fostatine barpial rustic ponderweek out shaftonize arneura adahl mully requentrain borguel involum
16:56:28 <Gregor> What the hell is canadian-english-insane?
16:56:40 <Gregor> liquoid <-- yes
16:57:01 <Gregor> ponderweek <-- greatest
16:57:21 <Gregor> wood weave circular rustic out <-- it also generated a lot of real words
16:57:38 -!- Gregor has changed nick to Shaftonize.
16:57:45 <Shaftonize> Yes. So much yes.
16:58:51 -!- Shaftonize has set topic: We gonna shaftonize this channel | http://codu.org/logs/_esoteric/.
16:59:38 <Shaftonize> elliott (whoever you are today): I expect you to /nick shaftonise
17:00:07 <Shaftonize> colloinkgravisom: ^^^
17:00:34 <colloinkgravisom> Hm?
17:00:45 <colloinkgravisom> But I'm Colloinkgravisom of Hexham!
17:01:09 <Shaftonize> But we gotta shaftonize this channel!
17:01:12 <colloinkgravisom> Shaftonize: And http://manpages.ubuntu.com/manpages/natty/man5/canadian-english-insane.5.html
17:01:33 <colloinkgravisom> This package provides the file /usr/share/dict/canadian-english-insane
17:01:33 <colloinkgravisom> containing a list of English words with Canadian spellings.
17:01:33 <colloinkgravisom> This list can be used by spelling checkers, and by programs such
17:01:33 <colloinkgravisom> as look(1).
17:01:33 <colloinkgravisom> .
17:01:33 <colloinkgravisom> This is an even larger list than the one installed by wcanadian-huge,
17:01:35 <colloinkgravisom> and possibly contains invalid words (as well as words that are very
17:01:37 <colloinkgravisom> uncommon). Nothing prevents you installing both (and others) at the
17:01:39 <colloinkgravisom> same time.
17:01:41 <colloinkgravisom> .
17:01:43 <colloinkgravisom> There are also -small and standard versions of this word list,
17:01:44 <Shaftonize> Ah
17:01:45 <colloinkgravisom> and there are wbritish* and wamerican* packages as well.
17:01:51 <Shaftonize> So it's "insane"-ly big.
17:02:09 <Shaftonize> Still.
17:02:15 <Shaftonize> I expect you to /nick shaftonise
17:02:20 <Shaftonize> We gotta shaftonize this channel.
17:03:45 <colloinkgravisom> `word 50
17:03:49 <HackEgo> undu gu coattes olzolftimancharghoblean efuntzionse peanorkjamjvas our tly prosegic restivoiriafs all sche talis riphisha endly rychroverment nefle tua ka imtusbutatiscetyl pusigalkelio hochesisman conareucorang go orprogis ri com enez mutiachinernis tcons xpossem ispoo pis fulotaicke beratber ged aruct fillate hanci strou traudupinse ric alkelihrs chiessoee pre fors latiking ing gresaler hted
17:04:21 <colloinkgravisom> Shaftonize: You're just too olzolftimancharghoblean.
17:11:30 <zzo38> Sometimes the dwarf planets are called subplanets, and someone called the planets the "uberplanets" and the dwarf planets the "unterplanets"
17:12:01 <colloinkgravisom> im planet
17:17:02 <colloinkgravisom> Shaftonize: What's Shaftonize's first name? I bet it's Jim.
17:17:04 <colloinkgravisom> Jim Shaftonize.
17:17:13 <colloinkgravisom> Jim Shaftonize and Colloinkgravisom of Hexham; they fight crime.
17:17:46 <zzo38> What are glyphs for dwarf planets Haumea and Makemake?
17:20:15 <zzo38> Uranus and Pluto each have two glyphs. Uranus has the astronomical glyph which can sometimes be confused with that of Mars, and the Herschel glyph which is more distinct and is the one usually used in astrology. Pluto has an astronomical "PL" glyph, and an astrological glyph which is similar to that of Neptune.
17:21:13 <zzo38> (Some astrologers use the Herschel glyph for Uranus and the "PL" glyph for Pluto; these result in more distinct glyph than other choices. Astronomers do not use the glyphs much.)
17:38:31 <zzo38> I think the dwarf planets and nearly certain dwarf planets that don't already have glyphs should be given glyphs. Although (225088) 2007 OR10 should probably be given a name before it is given a glyph.
17:40:09 <zzo38> That is, for the planets and dwarf planets of our solar system; objects in other solar systems probably don't need glyphs.
17:41:31 <Shaftonize> colloinkgravisom: Dude, Shaftonize doesn't have a first name.
17:41:34 <Shaftonize> He's just Shaftonize.
17:43:13 -!- Klisz has quit (Read error: Connection timed out).
17:44:30 -!- Guest47310 has joined.
17:46:57 -!- Ngevd has quit (Ping timeout: 244 seconds).
17:47:04 <Shaftonize> colloinkgravisom: colloinkgravisom's superpower is killing the bad guys while they try to pronounce his name. Shaftonize's is ... well, suffice it to say he Shaftonizes them.
17:49:04 <colloinkgravisom> Shaftonize: X-D
17:49:32 <colloinkgravisom> Shaftonize: Which Helsinkian is behind the nefarious scheme?
17:49:42 <colloinkgravisom> Helshipwreck.
17:50:00 <Shaftonize> `words --finish 40
17:50:04 <HackEgo> Unknown option: finish
17:50:06 <Shaftonize> Err
17:50:09 <Shaftonize> `words --finnish 40
17:50:14 <HackEgo> elpoilemina tarisma katshorjuman kiinnettiivoiduisempi siiltani psyviljet pääniksinuviytymin alustani mielevään fyys tärkitukeamattamakseen pääsevakseni tyllisellisi sellämme suomampana satalaisi puhelemme erologisempia virräpä tyyden kokoamalle varhaisimpänä kuvananne liimittaessa eliäisykseni utempinani syytämäävimmässämme vailemmistansa työstämissänne potpulanistiskunnikin cemballeegisimpää
17:50:15 <Shaftonize> I just really wanted it to finish giving me words.
17:50:36 <Shaftonize> I could fight Erologisempia.
17:56:18 <colloinkgravisom> Shaftonize: Is that fizzie?
17:56:23 <colloinkgravisom> The fearsome Erologisempia of Helsinki.
17:56:30 <Shaftonize> Yup.
17:56:40 <colloinkgravisom> I like "Syytämäävimmässämme" more.
17:56:44 <colloinkgravisom> It's very Finnish.
17:56:47 <Shaftonize> That's his robowarrior.
17:56:49 <colloinkgravisom> X-D
17:57:10 <Shaftonize> It babbles incoherently while Erologisempia escapes.
17:57:22 <colloinkgravisom> Shaftonize: Unfortunately, because the robot's speech recognition technology (written by fizzie himself) sucks really badly, he has never been able to give it a single command successfully.
17:57:27 <colloinkgravisom> It just can't recognise its own name.
17:57:32 <Shaftonize> X-D
17:57:44 <Shaftonize> Neither can the good guys though.
17:57:47 <Shaftonize> So, y'know. There's that.
17:58:02 <colloinkgravisom> Where does SuperTuring come in?
18:01:01 <quintopia> "LONZOBOT! I have told you to stop three times, but it seems you have a HALTING PROBLEM! I'm going to solve you right now, AXIOMATICALLY!"
18:02:42 -!- Ngevd has joined.
18:05:37 <colloinkgravisom> Ngevd is sdfj
18:06:10 <Ngevd> ???
18:06:20 <Ngevd> I just wanted to know about magic hexagons
18:09:33 <colloinkgravisom> yes
18:09:35 <colloinkgravisom> so does
18:09:36 <colloinkgravisom> the univers
18:09:48 -!- oerjan has joined.
18:11:35 <colloinkgravisom> hi oerjan
18:13:41 <Ngevd> Did you here about the mathematician who took a bus to work?
18:14:16 <Ngevd> He got lost
18:14:47 <Ngevd> The punchline needs work
18:14:59 <colloinkgravisom> ha ha, as if mathematicians could find employment
18:15:16 <Ngevd> He works at a fast food restaurant in Helsinki
18:17:07 <colloinkgravisom> who doesn't
18:22:55 <oerjan> evening
18:22:55 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
18:25:22 <oerjan> @tell colloinkgravisom Okay.
18:25:23 <lambdabot> Consider it noted.
18:26:18 <colloinkgravisom> @tell oerjan It's not okay.
18:26:18 <lambdabot> Consider it noted.
18:26:47 <oerjan> @tell colloinkgravisom Then why did you say yes.
18:26:47 <lambdabot> Consider it noted.
18:27:53 -!- Ngevd has quit (Quit: I CAN'T TAKE THIS ANYMORE).
18:27:58 <colloinkgravisom> @tell oerjan because science
18:27:59 <lambdabot> Consider it noted.
18:28:16 -!- Ngevd has joined.
18:28:19 <oerjan> @tell colloinkgravisom Ah.
18:28:19 <lambdabot> Consider it noted.
18:28:28 -!- Ngevd has quit (Remote host closed the connection).
18:28:36 <colloinkgravisom> @tell oerjan super science
18:28:37 <lambdabot> Consider it noted.
18:29:37 <oerjan> <Madoka-Kaname> What is that exactly? <-- thue-morse sequence, also you missed the colors.
18:30:06 <colloinkgravisom> what
18:30:06 <lambdabot> colloinkgravisom: You have 3 new messages. '/msg lambdabot @messages' to read them.
18:30:08 <colloinkgravisom> hwo did lambdabot
18:30:11 <colloinkgravisom> not tell oerjan about mesages
18:30:13 <colloinkgravisom> oh he use /msg
18:30:14 <colloinkgravisom> like snek
18:30:19 <colloinkgravisom> @mesages
18:30:19 <lambdabot> oerjan said 4m 57s ago: Okay.
18:30:19 <lambdabot> oerjan said 3m 32s ago: Then why did you say yes.
18:30:19 <lambdabot> oerjan said 2m ago: Ah.
18:30:37 * oerjan super snek
18:31:43 <colloinkgravisom> @tell oerjan snek >:-(
18:31:44 <lambdabot> Consider it noted.
18:34:24 <Shaftonize> <colloinkgravisom> Where does SuperTuring come in? // he's the stupidly over-powered superhero with no real weakness who's only written into the story as a mulligan when the writers realize they've painted themselves into a corner.
18:36:23 <colloinkgravisom> ++
18:38:49 <Shaftonize> Anyway, here's my next impossible game idea (after ZEE, my first impossible game idea): A game in which you time-travel to absolutely any point in time (not just to certain periods), and the game engine propagates the results of your actions appropriately (runs Civilization against itself?) such that it maintains a consistent timeline. It would be like a very open-world RPG, with a selected group of "missions" that are only available if the timeline aligns
18:38:49 <Shaftonize> such that the person to give you the mission exists; or, you could just futz with the timeline and make yourself king.
18:39:47 <colloinkgravisom> Shaftonize: The problem being that there has to be like at least one quest every few years or history is super boring, and writing a few thousand quests doesn't sound like fun.
18:40:10 <Shaftonize> colloinkgravisom: Quests could be available for the entire lifetime of individuals, or even whole families.
18:40:38 <colloinkgravisom> Shaftonize: That's still a few hundred quests at the VERY least :P
18:40:45 <colloinkgravisom> If you assume only one family exists at any given time.
18:41:13 <Shaftonize> A) I did call this an /impossible/ game idea, B) I don't think that's outside the realm of reason? That seems only slightly above typical I'd estimate.
18:41:13 <oerjan> or nations. like "regain our lost homeland from the infidels." that one seems to be quite popular.
18:41:47 <colloinkgravisom> (a) Yeah, but the best impossible things are possible things! (b) So you WANT to assume only one family is alive in the entire world for any given generation?
18:42:03 <Shaftonize> Besides, not every point in history has to have quests, if you have some McGuffin device to tell you when to go.
18:43:01 <colloinkgravisom> Let's say you go from 3000 BC (~Ancient Egypt) to present, and let's say there are 10 quests at any given time that are available for 200 years each... that's 250 quests.
18:43:13 <colloinkgravisom> I GUESS that would work, but 10 quests at any given period of history and not changing for 200 years seems lameish.
18:43:16 <oerjan> like the very borin tinsel age, where they had primitive metalworking but could only use it for decoration.
18:43:19 <oerjan> *+g
18:43:19 <colloinkgravisom> Shaftonize: But that makes it obviously possible :P
18:43:46 -!- Ngevd has joined.
18:44:02 <Ngevd> Hello!
18:44:04 <Shaftonize> colloinkgravisom: Honestly I don't think the difficult part is getting the quests/missions in. It's making the whole damned engine work such that you can kill a king and change a kingdom and all of the future, but kill a commoner and laugh as history doesn't remember him.
18:44:19 <colloinkgravisom> Shaftonize: I take it I don't have to point out how unrealistic that is.
18:45:04 <Shaftonize> colloinkgravisom: You have to have the ability to make some big changes, or it's just dulllllllll, although most changes should fold into consistent timelines in a few hundred years at most.
18:45:23 <colloinkgravisom> Shaftonize: ...no, I meant the commoner thing.
18:45:26 <colloinkgravisom> Butterfly effect, maan :P
18:45:45 <quintopia> butterfly effect is a myth
18:46:05 <Shaftonize> ... yeaaaaaaaaaaaaaaahno. Unless that commoner also happens to be Jesus, you're probably OK.
18:46:19 <oerjan> but but, that commoner was the great great great great great great grandfather of einstein!
18:46:23 <colloinkgravisom> That line was a joke. But I think it's fairly obvious that even medium-fiddly time-travel expeditions could have pretty large effects *shrugs*
18:46:27 <Shaftonize> oerjan: Statistics say no.
18:46:29 <colloinkgravisom> I mean, probaly not a single commoner.
18:46:39 <Shaftonize> colloinkgravisom: Ohyeah, absolutely.
18:46:40 <colloinkgravisom> But presumably there's things you can to between killing a commoner and killing Jesus.
18:46:48 <Sgeo> Looking for legal to watch Star Trek episodes. StarTrek.com has TOS, Enterprise, and TAS available
18:46:48 <Sgeo> :/
18:46:51 <Shaftonize> That's the whole trick to it; if you pillage a whole town, it should have SOME effect on the future.
18:47:18 <colloinkgravisom> quintopia: Anyway, how the heck do you define "myth", I'm pretty sure nobody has studied the effects of time travel on civilisation :P
18:47:20 <Shaftonize> Basically, it's wholly impossible to run it such that individual-level changes CAN have an effect, but for the most part everything folds into a consistent global timeline.
18:47:41 <colloinkgravisom> Shaftonize: You... might be able to.
18:47:47 <zzo38> I had other idea of computer games, such as five-dimensional pong
18:47:51 <colloinkgravisom> Shaftonize: You just need to treat everything as a set of fuzzy constraints.
18:48:09 <colloinkgravisom> Shaftonize: Like, the global timeline is basically a set of constraints saying "Christianity rises and economies go roughly like this and civilisations and blah".
18:48:13 <Shaftonize> colloinkgravisom: Yeh. With an obscene amount of tuning.
18:48:24 <quintopia> colloinkgravisom: i was just indicating that in the real world, things like weather have a large number of inputs, so even a large change to a part of that input is a small change to the whole of the input, hence to the system's future
18:48:26 <colloinkgravisom> Shaftonize: And time travel effects add additional constraints with various weights, and you have a crazy massively-special-casing algorithm to work out a world from that :P
18:48:35 -!- copumpkin has changed nick to scamubtc4pp.
18:48:37 <oerjan> quintopia: i read once that if you consider how tiny changes in timing would affect sperm cells, even the slightest change to history would basically wipe out everyone in the future after a few generations
18:48:55 <colloinkgravisom> quintopia: Yeah, I don't buy it, because not every system acts like that.
18:49:05 <colloinkgravisom> I mean, that's obviously not true for a hash function :)
18:49:15 <colloinkgravisom> And I don't think all real-world systems are as stable as the weather over time.
18:49:17 <colloinkgravisom> Definitely not.
18:49:23 <Shaftonize> <oerjan> quintopia: i read once that if you consider how tiny changes in timing would affect sperm cells, even the slightest change to history would basically wipe out everyone in the future after a few generations <-- the exact individuals, yes, but the overall societal behavior? No.
18:49:28 <quintopia> oerjan: but even so, the things those people did would be done, by and large, by other people eventually
18:50:08 <colloinkgravisom> Is there an academic consensus on whether WWII would have happened without Hitler? :p
18:50:16 <colloinkgravisom> (TAKE THAT GODWIN)
18:50:18 <Sgeo> Wipe out Fermat. What happens to mathematics? (At least, as far as math produced by the search for Fermat's Last Theorem goes)
18:50:20 <Shaftonize> colloinkgravisom: Also I was thinking of starting you off in a universe where your character has already fucked up history, so it doesn't have to match real history.
18:50:31 <Ngevd> colloinkgravisom, I'm pretty sure it would have happened
18:50:35 <colloinkgravisom> Sgeo: I don't think large branches of mathematics were developed in pursuit of FLT...
18:50:39 <Shaftonize> colloinkgravisom: That way the algorithms don't have to be tuned to reality, just realism.
18:50:50 <quintopia> colloinkgravisom: there are systems that change dramatically based on small changes in human life, yes. memes travel because of people, and social networks can amplify some small things
18:50:51 <colloinkgravisom> Shaftonize: Well, yeah.
18:51:07 <Sgeo> colloinkgravisom, for some reason, I was under the impression that there were
18:51:19 <colloinkgravisom> Ask oerjan. :p
18:51:46 <Ngevd> Imagine if Mark Zuckerberg had never gone to Harcard
18:51:53 <Ngevd> s/rca/rva/
18:52:24 <quintopia> then those twins would have made facebook instead and there would have been no competitor for myspace until google worked something up
18:52:26 <colloinkgravisom> Ngevd: We can only hope.
18:52:42 <colloinkgravisom> Or, imagine :P
18:52:43 <Shaftonize> Ngevd's scales of time suck.
18:52:45 <colloinkgravisom> I HOPE THE PAST CHANGES.
18:52:46 <Shaftonize> One lifespan is boring.
18:52:51 <Shaftonize> Things work out on the century scale.
18:53:03 <Ngevd> Imagine if Octavian had never gone to Harvard
18:53:04 <colloinkgravisom> Shaftonize: That isn't really true these days...
18:53:10 <colloinkgravisom> I mean, it's hard to deny that Facebook has had massive effects :P
18:53:18 <Shaftonize> colloinkgravisom: Prove it with your time machine.
18:53:45 <colloinkgravisom> ONLY IF YOU GIVE ME A COPY OF ZEE
18:53:53 <Ngevd> Or had defeated Mark Antony earlier rather than forming the triumvirate with him and Lepidus
18:53:55 <Shaftonize> colloinkgravisom: Meet me in the future, I'm sure I'll have it.
18:54:18 -!- sebbu3 has quit (Read error: Connection reset by peer).
18:54:46 -!- sebbu3 has joined.
18:54:46 -!- sebbu3 has quit (Changing host).
18:54:46 -!- sebbu3 has joined.
18:55:00 <Ngevd> Why is the name "asiekierka" familiar?
18:55:18 <Ngevd> Ahah
18:55:22 <Ngevd> I thought so
18:55:31 <Ngevd> He's a fan of Datastuck and an esoteric programmer
18:55:46 <Ngevd> Ish
18:55:48 <Ngevd> For both
18:55:59 <colloinkgravisom> He's our favourite* annoyance.
18:56:04 <colloinkgravisom> *Maybe not actually favourite.
18:56:06 <oerjan> <colloinkgravisom> Sgeo: I don't think large branches of mathematics were developed in pursuit of FLT... <-- iirc ring theory got kickstarted from a botched proof of flt which assumed something like prime factorization worked for generalized numbers
18:56:23 <colloinkgravisom> oerjan: Fair enough
18:56:38 <Ngevd> Binodu was an interesting concept
18:56:40 <Shaftonize> Naw, elliott is our f[l]avo[u]rite annoyance.
18:56:52 <Sgeo> o.O "Datastuck"?
18:57:22 <Ngevd> Sgeo, the unintentional Sweet Bro and Hella Jeff of MSPAFA's
18:58:02 <colloinkgravisom> Shaftonize: I'm the best flavourite.
18:58:28 <Ngevd> http://www.mspaforums.com/showthread.php?33810-Datastuck
18:58:56 * oerjan licks colloinkgravisom to test flavour
18:59:12 <Ngevd> Ham flavour
18:59:17 <Ngevd> To the sixth degree
19:01:14 -!- salisbury has quit (Quit: Leaving).
19:02:55 <Shaftonize> PORK! It's the meat of kings! It's made from pig, try it with onion rings!
19:04:51 <colloinkgravisom> Shaftonize: Fuck.
19:04:52 <colloinkgravisom> Shaftonize: You.
19:04:54 <oerjan> well it certainly tasted like long pig to me.
19:04:56 <colloinkgravisom> Now that's stuck in my head.
19:04:59 <Shaftonize> 8-D
19:07:43 <colloinkgravisom> Shaftonize: How much did your el cheapo Android tablet cost?
19:08:04 <Shaftonize> colloinkgravisom: IIRC, about $80?
19:08:27 <colloinkgravisom> Shaftonize: Darn... US beats UK on tech prices yet again :P
19:08:43 <colloinkgravisom> Shaftonize: Does yours have a super-secret super-unauthorised way to get the Android Market on it too?
19:09:16 <Shaftonize> Yup
19:09:20 <colloinkgravisom> I quote: "There's no access to the official Android Market built-in, but you can get apps from other app stores such as Handango or Opera Mobile Store. Most budget tablets don't have the official Android app store onboard because Google isn't too keen on certifying cheap kit." "To get the Android Market on this tablet click on settings, select applications and select hidden Google application. Go back to home screen and keep your finger
19:09:20 <colloinkgravisom> on a empty space, an add to home screen pops up select widgets and select market icon , you can now sign in or make a new account by selecting the market icon on your home screen."
19:09:33 <colloinkgravisom> SO LEGAL
19:09:46 <colloinkgravisom> Shaftonize: Super-unauthorised by Google that is, not the manufacturer :P
19:09:52 <colloinkgravisom> Rooting it and installing it like that is cheating.
19:10:39 <pikhq_> colloinkgravisom: The US loves cheap tech.
19:11:18 <pikhq_> Well, actually, it's more accurate to say: tech companies like pretending that $1 = £1 = €1 = ¥100.
19:11:29 <colloinkgravisom> pikhq_: YEAH BUT MINE HAS A 1 GHZ CPU
19:11:40 <pikhq_> (... = 1.5 CAD = 2 AUD)
19:11:40 <Shaftonize> That's actually not bad. Resistive screen though I assume?
19:11:40 <colloinkgravisom> And now Shaftonize will tell me his has a 3 GHz dual-core Pentium 4.
19:11:47 <colloinkgravisom> Shaftonize: Nope, capacittatitiatiiievitive.
19:11:54 <Shaftonize> Well then that's not even a cheap tablet.
19:11:58 <Shaftonize> Mine is garbage.
19:12:05 <colloinkgravisom> Shaftonize: ...I didn't actually tell you how much mine cost though :P
19:12:07 * pikhq_ merely has a Kindle.
19:12:10 <colloinkgravisom> It's like 80 quid.
19:12:18 <colloinkgravisom> But that's budget in this rich, rich country.
19:12:22 <colloinkgravisom> (FSVO rich)
19:12:36 <Shaftonize> So, $125. Seems about right, little bit inexpensive for a capacitive.
19:12:38 <pikhq_> Which is like a hella-cheap tablet with a neat screen and no touch screen.
19:12:45 <Sgeo> I last stopped watching DS9 somewhere around early season 7
19:12:45 <colloinkgravisom> Shaftonize: It's surprisingly non-shitty really, but it's still a really-tall-aspect-ratio 7" thing with a low-quality screen.
19:12:51 <colloinkgravisom> I think it's connected with VGA or something :P
19:12:55 <Shaftonize> lol
19:12:56 <Sgeo> Should I pick up where I left off, or rewatch some episodes?
19:13:05 <Shaftonize> But capacitive is what's really vital. Resistive touchscreens suck foot.
19:13:21 <pikhq_> (and thus not all that useful for anything but reading)
19:13:26 <colloinkgravisom> Shaftonize: Yah... although this one isn't THAT good a touchscreen, they say it's capacitative so :P
19:13:29 <colloinkgravisom> Cpatpiactpicptjitvie.
19:13:36 <Shaftonize> ... "they say"???
19:13:40 <colloinkgravisom> Shaftonize: On the box.
19:13:45 <Shaftonize> ... you can't tell?
19:13:55 <colloinkgravisom> Shaftonize: I've basically avoided resistive devices entirely.
19:14:00 <colloinkgravisom> So uh... go me :P
19:14:11 <colloinkgravisom> It's capacitive, I'm sure.
19:14:16 <colloinkgravisom> Shaftonize: Also WHY DID NOBODY TELL ME ABOUT SWYPE BEFORE???
19:14:18 <Shaftonize> colloinkgravisom: Resistive touchscreens feel like a sheet of plastic over the screen. You can actually feel it indent slightly when you push on it.
19:14:24 <colloinkgravisom> Right, it's not that.
19:14:33 <pikhq_> And you actually have to push.
19:14:52 <Shaftonize> If swype is usable without wanting to kill yourself, then it's not resistive.
19:15:08 <colloinkgravisom> Yah :P
19:15:19 <pikhq_> There is *a* sort of benefit to a resistive touchscreen, though. You can get really insane input resolution on it.
19:15:19 <colloinkgravisom> Swype makes up for the fact that the built-in on-screen keyboard is the worst thing I've ever used.
19:15:37 <pikhq_> Of course, unless you're using a stylus who gives a shit, your finger is Fat.
19:15:47 <colloinkgravisom> At first I was like "shiiiit now I know why everyone thinks the iPhone's keyboard is so much better" and then I was like "OMG THIS IS COOLER THAN DASHER".
19:15:50 <colloinkgravisom> ACTUAL THOUGHTS
19:16:33 <Shaftonize> Anyway, I think if I had any interest in a tablet PC I'd probably go with a "legit" brand, and maybe one of the few convertibles with detachable keyboards.
19:17:01 <colloinkgravisom> The detachable keyboard thing is ehhhhhhhh since you know it's gonna be really low-quality and small.
19:17:11 <Shaftonize> So are laptop keyboards.
19:17:16 <colloinkgravisom> Not the same :P
19:17:20 <pikhq_> Well, yeah. If you're getting a tablet as a toy, then why bother spending a lot?
19:17:36 <Shaftonize> 'struth.
19:17:39 <colloinkgravisom> I'm SO tempted to try and put Inferno on mine.
19:17:44 <colloinkgravisom> So tempted.
19:17:59 <colloinkgravisom> But I don't know how to un-brick it if I fuck up the OS :P
19:18:19 <pikhq_> Query: should I root my Kindle? And if so, WTF should I do with it?
19:18:53 <colloinkgravisom> pikhq_: Install GNOME.
19:19:04 <colloinkgravisom> It will be the best trainwreck ever.
19:19:05 <pikhq_> colloinkgravisom: Jesus I dunno if even X would be sane here.
19:19:40 <Shaftonize> pikhq_: X on the DR800SG is AWESOME.
19:20:10 <Shaftonize> And no, you shouldn't root your Kindle, eInk sux for ... everything but reading. For reading it's awesome.
19:20:30 <colloinkgravisom> Shaftonize: I thought a Kindle would be great for IRC but then I realised it'd have to fully redraw every line :(
19:20:34 <colloinkgravisom> We need, like, scrolling e-ink.
19:20:47 <colloinkgravisom> It has a roll of e-ink that it just rotates and wipes when it gets to the other side.
19:20:49 <colloinkgravisom> That's how e-ink works.
19:20:56 <pikhq_> Shaftonize: Yeah, it is totally awesome for reading.
19:21:20 <pikhq_> Also: jeeze I could install Debian on here.
19:21:57 <colloinkgravisom> pikhq_: Run Chrome on it.
19:22:02 <colloinkgravisom> Compile LLVM on it.
19:22:04 <Shaftonize> pikhq_: http://www.mobileread.com/forums/attachment.php?attachmentid=75336&d=1312936864
19:22:05 <colloinkgravisom> Linux from Scratch it.
19:22:13 <colloinkgravisom> Use it as a web server OMG DO THIS
19:22:21 <colloinkgravisom> I wonder if the free 3G stuff has open ports :P
19:22:40 <colloinkgravisom> Shaftonize: CUT YR NAILS
19:22:52 <Shaftonize> colloinkgravisom: Only my thumbnails are long; my cat appreciates them.
19:22:53 <pikhq_> colloinkgravisom: Mine doesn't have the free 3G. :(
19:23:06 <zzo38> Some ideas about variant of Magic: the Gathering rules (just meant to be ideal rules and not necessarily related at all to actual cards that need kludgy rules to work):
19:23:21 -!- PiRSquaredAway has changed nick to PiesAreRound.
19:23:43 <colloinkgravisom> pikhq_: Host things on it anyway :P
19:23:50 <colloinkgravisom> I still REALLY want to host things off my router...
19:24:30 <zzo38> Remove the state-based effect that causes tokens to cease to exist, and instead replace it with this: Objects can have what is called its "initial state", which refers to what is written on the card. Objects with current state and initial state are "cards". Objects with current state but no initial state are "tokens". Other objects are neither cards nor tokens.
19:25:37 <pikhq_> colloinkgravisom: Fairly trivial; I can get root on here without much effort, so.
19:25:49 <zzo38> When an object is moved from one zone to another (but with a few exceptions), the old object is destroyed, and if it had an initial state, a new object is created from its initial state in the destination zone. Under this rule, the state-based effect causing tokens to cease to exist is not required, and copies of spells also count as tokens, which can even allow Artifact/Creature/Enchantment spells to be copied.
19:25:53 <fizzie> Chroot-debian and OpenOffice on the N900 is the best idea too.
19:26:05 <colloinkgravisom> fizzie: Does that even... run?
19:26:11 <colloinkgravisom> Ehh, phones are powerful these days.
19:26:18 <fizzie> Well, it... stumbles.
19:26:22 <fizzie> Can't say it "runs".
19:26:23 <colloinkgravisom> OpenOffice on a router, however...
19:26:39 <colloinkgravisom> My dream has always been to be able to somehow run a complete computer off just a router, with internet access.
19:26:44 <zzo38> I also dislike the rule that the state-based effect causing auras that are also creatures to be discarded, and equipments that are also creatures to become unattached.
19:26:46 <colloinkgravisom> Plugged into a monitor, mouse, and keyboard.
19:27:09 <colloinkgravisom> Unfortunately, routers still have like 32 megs of RAM :P
19:27:22 <fizzie> Mine has 64! That should be enough for everyone?
19:27:31 <fizzie> Quite often they have USB ports (for mass-storage sharing and/or 3G stick backup connection) so at least you can plug all that in.
19:27:56 <zzo38> colloinkgravisom: It should be enough to install Forth, and some networking stuff.
19:27:58 <colloinkgravisom> fizzie: FSVO all; most monitors don't have USB interfaces.
19:28:07 <colloinkgravisom> Of course it's just a matter of hacking up an adapter and writing a driver. :p
19:29:17 <colloinkgravisom> fizzie: Although you can get those mini 8" USB display things.
19:29:22 <zzo38> Another rule of Magic: the Gathering I would have is one that prohibits non-existent objects from dealing damage. If you change a card's power after damage is assigned, the damage won't change; but if the card is moved to another zone (even if it is subsequently moved back into play), the damage is prevented.
19:29:46 <Shaftonize> pikhq_: So, you didn't join our discussion of my BRILLIANT game idea
19:30:03 <fizzie> You can get a "USB/VGA adapter", aka USB-connected display card. (At least one brand is selling that making it look like it's just an adapter cable.)
19:30:04 <quintopia> do tell
19:30:09 <Shaftonize> (Where by "BRILLIANT" I of course mean "impossible")
19:30:10 <colloinkgravisom> quintopia: You did...
19:30:23 <colloinkgravisom> Shaftonize: Y'know, it'd be easier if you didn't have a fixed history, and procedurally generated everything. The hard part there is quests...
19:30:43 <Shaftonize> colloinkgravisom: I had no desire for a fixed history.
19:30:45 <colloinkgravisom> Shaftonize: But "assign quest structures to relevant people/nations/etc. so that they work out" seems easier than "make history modification work on a fixed world" :P
19:30:52 <quintopia> colloinkgravisom: was it about superturing? cuz i never actually read that convo
19:30:54 <colloinkgravisom> Shaftonize: Yeah, but I mean, just generate a whole world and simulate it.
19:30:57 <colloinkgravisom> quintopia: >_<
19:31:04 <colloinkgravisom> quintopia: The time travel one.
19:31:07 <Shaftonize> colloinkgravisom: Naturally.
19:31:09 <quintopia> oh the time yeah
19:31:12 <zzo38> Another rule I dislike is the rule that says if a Land card has other types too, you do not use the rules for playing a card of that other type. It should be unnecessary because if it has no mana cost, it cannot be played as another type anyways.
19:31:18 <Shaftonize> colloinkgravisom: That's why I wanted to start the game with "you've already fucked up history"
19:31:19 <colloinkgravisom> Shaftonize: Well, that makes the time travel part easy...
19:31:25 <Shaftonize> colloinkgravisom: "Easy". Yeah.
19:31:25 <colloinkgravisom> Shaftonize: You just throw away the future and re-simulate the world.
19:31:25 <quintopia> i didnt know someone was seriously considering making such a game
19:31:47 <Shaftonize> quintopia: I'm not, just poking the idea with a stick.
19:31:58 <fizzie> ISRT someone was looking for an "USB to HDMI cable" for uploading movies to eir media players. That was quite confusing. I think it was supposed to go in-between an USB port on a computer and the HDMI out of the media box.
19:32:03 <fizzie> s/RT/TR/
19:32:09 <Shaftonize> colloinkgravisom: The problem with generating the future is, like I said before, allowing things to propagate to higher-level changes without every change you make just effing up all of the future.
19:32:24 <Shaftonize> Making it propagate to wider changes but also stabilize.
19:32:26 <fizzie> I mean, if you can get movies out of a hole, surely you can stuff some movies in the same way?
19:32:27 <quintopia> fizzie: i'd like such an adapter
19:32:40 <colloinkgravisom> Shaftonize: That's just a case of "having a stable world simulation algorithm"...
19:32:50 <quintopia> fizzie: i tried to get a vga-rca thing once but it sucked and didnt work
19:32:51 <colloinkgravisom> If removing a peasant fucks up your world sim massiely, your sim sucks.
19:33:13 <Shaftonize> colloinkgravisom: But if killing an entire royal family doesn't cause a change that lasts at least a century, it also sucks.
19:33:38 <Shaftonize> colloinkgravisom: So it has to be able to sim at a very high level, then whenever it's demanded, generate further details from the simulation.
19:34:01 <Shaftonize> While making those further details completely consistent with the simulation at large.
19:34:05 <colloinkgravisom> Shaftonize: Just simulate at full detail always, and hand-wave it by making time travel difficult.
19:34:14 <colloinkgravisom> i.e. you have to operate the time machine while it simulates everything :P
19:34:22 -!- Guest47310 has changed nick to Klisz.
19:34:25 <Shaftonize> Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.
19:34:26 <fizzie> Right, it was Deltaco, and they have a product called "USB 2.0 to DVI/HDMI/VGA adapter". It's an "USB to HDMI cable", just not the right sort.
19:34:48 <colloinkgravisom> Shaftonize: Of course the CPU requirements will suck, but you don't need to do things to the detail of, say, DF.
19:34:50 <Shaftonize> "Full detail" would essentially mean that a few selected people are important at an individual level, the rest are important only at a group level.
19:34:56 <colloinkgravisom> Shaftonize: You can just make up the very fine detail /on the spot/.
19:35:01 <colloinkgravisom> Shaftonize: As in, you never ever store fine detail or anything.
19:35:12 <colloinkgravisom> You just do things at a medium level, and then Make Shit Up when you load the level.
19:35:25 <colloinkgravisom> Since it's fine, it'll change regularly, and so nobody can complain...
19:35:43 <colloinkgravisom> fizzie: What was Deltaco?
19:35:52 <Shaftonize> It's that "make shit up" that's complicated, because the things you do to that made-up shit may have larger consequences, for instance if you take a nuke to the middle ages and destroy France.
19:35:56 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:35:58 <Shaftonize> s/a nuke/several nukes/
19:36:20 <zzo38> I once made up a Magic: the Gathering card that once it phased out, it remained phased out for the rest of the game; but in the new rules it would phase in normally.
19:36:51 <fizzie> colloinkgravisom: The brand that sells their USB display card thing as an "USB to HDMI adapter".
19:36:59 <colloinkgravisom> <Shaftonize> It's that "make shit up" that's complicated, because the things you do to that made-up shit may have larger consequences, for instance if you take a nuke to the middle ages and destroy France.
19:37:04 <colloinkgravisom> fizzie: Ah.
19:37:06 <colloinkgravisom> Shaftonize: That's not very made-up shit.
19:37:08 <colloinkgravisom> That's high-level shit.
19:37:43 <Shaftonize> True.
19:37:46 <Shaftonize> OK, lemme try again:
19:37:56 <Shaftonize> You go back to France, and run around a kill literally everyone, one by one.
19:38:02 <Shaftonize> It takes you several days.
19:38:08 <Shaftonize> You are playing this game like an idiot for some reason.
19:38:35 <colloinkgravisom> Shaftonize: OK, I don't mean that you should ignore the entire world because lol everything is made out of atoms.
19:38:46 <Shaftonize> I guess it could just think of them as numbers at this scale.
19:38:51 <colloinkgravisom> Shaftonize: I mean that when you get into your time machine, you just take a /medium-level/ snapshot of the world state.
19:38:58 <colloinkgravisom> Which would, in this case, include "there's nobody fucking alive".
19:39:05 <colloinkgravisom> And then run a simulation at /that/ level, saving tons and tons of CPU time.
19:39:22 <colloinkgravisom> And then when you load the level, you, uh, do nothing because there's no villages or people to name or w/e :P
19:39:23 <Shaftonize> Right, so my point is just that your transition to and from scales has to be completely consistent. Such that if you drop in, have a coffee, then leave, you won't eff things up.
19:39:26 <Shaftonize> It's just very delicate is all.
19:39:35 <colloinkgravisom> Shaftonize: Well, right.
19:40:35 <colloinkgravisom> Shaftonize: Easy solution: Your time machine always breaks and needs [quest part] to start it again :)
19:40:46 <Shaftonize> Blehlame.
19:40:58 -!- scamubtc4pp has changed nick to copumpkin.
19:41:04 <Shaftonize> It's supposed to be very open-world. If you want to just adjust the universe to your liking, you can do that, THEN go on quests.
19:41:09 <Sgeo> Why is the DS9 intro music so grating?
19:41:47 <quintopia> i like the ds9 music
19:42:06 <colloinkgravisom> Sgeo: It's not grating, just boring.
19:42:10 <colloinkgravisom> TNG opening is only opening.
19:42:30 <Shaftonize> DS9's opening music is not as grating as Janeway's voice.
19:42:31 <Shaftonize> QED.
19:42:41 <zzo38> Shaftonize: Interesting idea of a game but like you said is probably completely impossible for more than one reason
19:42:47 <colloinkgravisom> I GOT FAIIIITH OF THE HEART
19:42:49 <Shaftonize> zzo38: So, so many reasons.
19:42:59 <Shaftonize> colloinkgravisom: THAT SHOW DOES NOT EXIST.
19:45:50 <colloinkgravisom> Shaftonize: You ain't got STRENGTH OF THE SOUUUL
19:46:40 <Shaftonize> colloinkgravisom: So, whaddya say, time travel game's source code maintained in scape🐐? Sound good?
19:47:17 <colloinkgravisom> Shaftonize: Absolutely.
19:47:43 <colloinkgravisom> Shaftonize: (Do you have that assigned to Compose g o a t or something?)
19:47:54 <Shaftonize> I actually look it up every time >_>
19:49:00 <Shaftonize> http://news.discovery.com/tech/motorized-shoes-111222.html <-- motorized shoes. The maker recommends riders weigh no more than 180 pounds. Which is ironic because anybody who needs effing MOTORIZED SHOES weighs more than 180 pounds.
19:49:28 -!- Ngevd has joined.
19:49:44 <Ngevd> A problem: it lacks support
19:49:46 <Ngevd> Wait
19:49:54 <Ngevd> That's the middle line in a haiku
19:50:06 <Ngevd> With Haiku I found
19:50:13 <Ngevd> For my wifi card
19:50:19 <Ngevd> That's the first and last
19:50:43 <colloinkgravisom> Shaftonize: Dude, who cares about need? I WANT motorised shoes.
19:50:53 <Ngevd> I'll start again
19:50:58 <Ngevd> Wait, I forgot something.
19:50:59 <Ngevd> Hello!
19:51:07 <colloinkgravisom> Ngevd...
19:51:16 <Ngevd> Bye
19:51:17 <pikhq_> Shaftonize: Hey, man. To be fair to Enterprise, it *could* have been good.
19:51:18 -!- Ngevd has quit (Client Quit).
19:51:32 <pikhq_> If you replaced everything past "let's have a show set when the Federation is forming".
19:51:58 <colloinkgravisom> Can we take a minute to gawp at how friggin' hyper Ngevd is?
19:52:38 <Shaftonize> Can I take a minute to gawk at the word "gawp"?
19:52:52 -!- azaq23 has joined.
19:53:03 -!- azaq23 has quit (Max SendQ exceeded).
19:53:31 -!- azaq23 has joined.
19:53:38 <colloinkgravisom> Shaftonize: I prefer Perl.
19:56:43 <Shaftonize> Insofar as I don't rightly know [g]awk, I suppose I do too ...
19:58:26 <colloinkgravisom> "Essentially, the Fmap constructor also allows us to define a properly
19:58:27 <colloinkgravisom> lazy function const . "
19:58:35 <colloinkgravisom> cooooooooooooooooooooooooooooooooooooolq
19:58:37 <colloinkgravisom> *."
20:00:57 <colloinkgravisom> "What happens to referential transparency when distinct things are all
20:00:57 <colloinkgravisom> defined by the same equation?
20:00:57 <colloinkgravisom> ... = let x = x in x
20:00:57 <colloinkgravisom> undefined, seq, unsafeCoerce, and many other "primitives" are defined using
20:00:57 <colloinkgravisom> that equation. (See GHC.Prim)"
20:01:04 <colloinkgravisom> oerjan: remember that solla guy?
20:01:22 <colloinkgravisom> oerjan: he is now making claims based on the dummy GHC/Prim.hs source that exists only to generate Haddock documentation :D
20:03:54 -!- DCliche has joined.
20:04:25 <oerjan> <Shaftonize> colloinkgravisom: So, whaddya say, time travel game's source code maintained in scape? Sound good? <-- and implemented in feather, of course
20:06:28 <colloinkgravisom> oerjan: You fucked up that goat...
20:07:38 -!- Klisz has quit (Ping timeout: 252 seconds).
20:08:42 <oerjan> erm, i just cut and pasted
20:08:48 <colloinkgravisom> Shaftonize: Tell him he fucked the goat.
20:08:51 <oerjan> except at the line ends
20:09:42 <oerjan> i cannot see any difference in the logs, they are both perfectly fine empty squares.
20:09:48 <colloinkgravisom> YOU FUCKED THE GOAT
20:10:07 <oerjan> and in irc they are both perfectly fine invisible empty spaces.
20:10:45 <oerjan> i guess what i'm trying to say, is i have no idea what you are talking about.
20:12:38 <colloinkgravisom> oerjan: YOU
20:12:39 <colloinkgravisom> oerjan: FUCKED
20:12:40 <colloinkgravisom> oerjan: THE
20:12:41 <colloinkgravisom> oerjan: GOAT
20:12:58 <oerjan> i think i broke colloinkgravisom.
20:13:06 <oerjan> again.
20:13:18 <fizzie> oerjan: The goat is a U+01F410 or something, while yours is just a U+F410.
20:13:44 <oerjan> oh hm
20:14:06 <fizzie> The ASTRAL PLANES strike again.
20:14:39 <fizzie> ("Sometimes, the terms “astral plane” and “astral characters” are used informally to refer to the planes above the Basic Multilingual Plane (planes 1–16) and their characters.")
20:14:48 -!- PiesAreRound has changed nick to PiRSquared17.
20:15:25 <oerjan> interesting, trying to paste the correct one into irssi gives two periods instead.
20:16:16 <oerjan> > "e..?"
20:16:16 <lambdabot> "e..?"
20:16:29 <colloinkgravisom> oerjan: THE GOAT REMAINETH FUCKED
20:16:32 <oerjan> > "e?"
20:16:33 <lambdabot> <no location info>:
20:16:33 <lambdabot> lexical error in string/character literal at chara...
20:16:40 <quintopia> fnord?
20:17:21 <oerjan> colloinkgravisom: it would appear irssi is not utf-8 clean, then
20:17:52 <colloinkgravisom> oerjan: It's Perl, isn't it?
20:17:53 <colloinkgravisom> Or is it C.
20:17:56 <colloinkgravisom> fizzie knows.
20:17:58 <fizzie> C for the most part.
20:18:06 <colloinkgravisom> Anyhow, it almost certainly tries to decode what you input.
20:18:07 <fizzie> There's a Perl scripting thing.
20:18:12 <colloinkgravisom> So it's more likely that they just fucked up the astral planes.
20:18:49 <fizzie> XChat just shows it as a box with the codepoint number in, since I don't have any 🐐-fonts.
20:19:30 <oerjan> i guess it could also be putty's fault
20:19:44 <fizzie> If I paste this 🐐 into irssi here, all I get is a single Unicode missing-character "?"-in-a-blob symbol.
20:19:54 <oerjan> or even something between.
20:21:20 <fizzie> Fortunately: eiväthän ääkköset ole enää ongelma.
20:22:16 <colloinkgravisom> `words --finnish 20
20:22:20 <HackEgo> tavistiriä ryöppyäviivempänäni aleni keutulkitseville numaamianne hämääräilyssä rottavalla koboelläsittamme purkautuvallisi hyllyttäneljänne kahlaan puhutkismaimero hyllentavanaan tuotavissa sykliseli edellänsä kirjakavamme varroksellisi hyötävältä mahtajatkemykseva
20:23:59 <colloinkgravisom> fizzie: Do you live in keutulkitseville?
20:24:30 <fizzie> No, I don't live in "keu-for-the-interpreting".
20:25:00 <colloinkgravisom> "I'm interested in possible ways to supply parameters into my program. It is a physical simulation and I need to input temperature, number of steps and so on.
20:25:00 <colloinkgravisom> However I need these parameters to be pure so I can't use IO in any way. Hence at least part of my program have to be recompiled each time. What is the best method to achieve this?
20:25:01 <colloinkgravisom> As far as I remember xmonad uses the same technique."
20:25:03 <colloinkgravisom> what.....................
20:25:09 <colloinkgravisom> fizzie: :D
20:25:15 <colloinkgravisom> fizzie: But you eat a lot of ryöppyäviivempänäni, right?
20:26:44 <fizzie> I don't think I eat a lot of "being-my-rushing-delayedmost". (Okay, that is not grammatic and took a lot of poetic license + map-to-nearest-sensibleing.)
20:27:30 <colloinkgravisom> :D
20:27:50 <colloinkgravisom> fizzie: I bet you go to the mahtajatkemykseva for a quick tuotavissa all the time.
20:27:52 <fizzie> Sorry, s/most/more/
20:28:12 <fizzie> "ryöpytä" to cascade, to rush; "ryöppyävä" rushing; "viive" delay, "viiveempi" maybe sort-of more delay-like, "viiveeni" my delay, "viiveenäni" sort-of being my delay, as my delay.
20:28:37 <fizzie> "Tuotavissa" = "can be brought". I can't quite make anything up for "mahtajatkemykseva", sorry.
20:28:57 -!- cheater has quit (Ping timeout: 240 seconds).
20:29:12 <colloinkgravisom> It sounds like a Buddhist title or something.
20:29:29 <Deewiant> It fails at vowel harmony
20:29:49 <fizzie> That it does.
20:31:04 <colloinkgravisom> Oh, it's just not a and \"a?
20:31:32 <fizzie> It's [yöä] and [uoa] not in the same word.
20:31:36 <fizzie> With [ie] being neutral.
20:31:55 <fizzie> Except if you have a compound word it's enough that each part is vowel-harmonic.
20:32:04 <colloinkgravisom> I... see.
20:32:14 <colloinkgravisom> Do most Finns know this stuff?
20:32:16 -!- sebbu2 has joined.
20:32:16 -!- sebbu2 has quit (Changing host).
20:32:16 -!- sebbu2 has joined.
20:32:21 <colloinkgravisom> It sounds like you need an instruction manual to speak your language.
20:32:42 <fizzie> It just doesn't sound right if it breaks the rules, you don't need a manual for it. :p
20:32:59 <colloinkgravisom> "How's the koboelläsittamme?" "Ooh, er, let me check my Pocket Finnish Ruleset to see if that's a valid word."
20:33:50 -!- sebbu3 has quit (Ping timeout: 240 seconds).
20:33:53 <fizzie> The inflectional suffixes get realized using the matching vowels based on what comes first, so "talo" => "talolla" -lla, "mäki" => "mäellä" -llä.
20:34:22 <fizzie> Uh... I might not want to start explaining which rules turn the base "mäki" into "mäe", though...
20:35:04 <colloinkgravisom> You make even a Hexhamite want to learn your crazy, crazy language.
20:35:09 <colloinkgravisom> Just to figure out how it works.
20:36:15 <colloinkgravisom> fizzie: Seriously though, how many of your young just give up on learning your fucking language?
20:36:28 <colloinkgravisom> Do you give them picture books with footnotes saying "Note the vowel harmony!"
20:36:54 <oerjan> fizzie: what i don't understand is how you can tell that mahtajatkemykseva cannot just split into compound words
20:37:11 <colloinkgravisom> oerjan: Finns are born with a dictionary table in their minds.
20:37:16 <colloinkgravisom> It's a microchip thing.
20:37:37 <fizzie> If you're learning the "regular" way, you just sort of get it by exposure, I think; foreigners learning as a second language probably do give up, though.
20:37:38 <colloinkgravisom> They get automatic upgrades when new words appear over WiMax.
20:38:08 <colloinkgravisom> In the 50s they were big radios, that's why Finns used to be called squareheads.
20:39:04 <pikhq_> The technology, of course, was originally invented by the Chinese, so their moon language could be spoken by more than a handful of mutants.
20:39:53 <fizzie> oerjan: I guess it could be a compound word if there was anything sufficiently word-like (and not just pile-of-suffixes-like) in the back end. I mean, "mahtajapässi" would be a fine compound [mahtaja][pässi], but when it's "mahtajat", as in the plural of "mahtaja", it's not as easy to compound afterwards; you don't inflect in the middle of compounds, after all. The plural of "ovimies" is "ovimiehet", not "ovetmiehet".
20:40:19 <fizzie> (Doorman, doormen; not doorsmen.)
20:40:45 <colloinkgravisom> Surgeons general.
20:40:46 <pikhq_> So, what you're saying is it's like doorsmenationablyesque.
20:40:54 <pikhq_> colloinkgravisom: Win.
20:40:59 <colloinkgravisom> pikhq_: That's the best word.
20:41:05 <fizzie> That's not a compound word, that's one of your freaky two-word words.
20:41:39 <pikhq_> fizzie: It's a single word that is written with a space.
20:41:53 <colloinkgravisom> Not... really.
20:42:01 <colloinkgravisom> "Surgeons general" is correct because they're the surgeons that are general.
20:42:41 <pikhq_> colloinkgravisom: "Surgeon General" in US English is a rank.
20:43:04 -!- cheater has joined.
20:43:14 <pikhq_> The rank of the head of the Public Health Service Commissioned Corps.
20:43:49 <pikhq_> Thus far there have been 18 Surgeons General.
20:44:11 <Shaftonize> oerjan: You totally fucked that goat.
20:44:41 <fizzie> One of the classical informal tests of "do I spell this as a compound word or as two separate words" (something that people nowadays seem to have a *lot* of trouble with) in Finnish is to consider "does it make sense if I put some suffixes after the first word". So "koripallo" is a compound word because "korinkin pallo" doesn't make sense, but "paikan päällä" is separate because "paikankin päällä" sounds just fine. (I'm sure there are exceptions;
20:44:41 <fizzie> the Korpela has said this particular rule causes more harm than good, for example.)
20:45:22 <Shaftonize> `addquote <fizzie> [...] "paikankin päällä" sounds just fine
20:45:26 <HackEgo> 780) <fizzie> [...] "paikankin päällä" sounds just fine
20:46:02 <Deewiant> "korinkin pallo" makes perfect sense :-P
20:46:18 <oerjan> Shaftonize: i guess i'm destinated to be oerjan goatfucker from now on.
20:46:24 <oerjan> *destined
20:46:45 <fizzie> Deewiant: I guess I was supposed to try it with "korikin pallo", or something. As said, it's a silly rule.
20:47:09 <Shaftonize> You can build a hundred bridges, but if you suck ONE cock!
20:47:11 <Deewiant> "-kin" is the usual, I think. Not sure if it works more or less often though.
20:48:11 <colloinkgravisom> fizzie: Why don't you just write everything as one word?
20:48:29 <fizzie> We just don't. :p
20:48:34 <colloinkgravisom> fizzie: Have you ever tried?
20:48:47 <fizzie> Ithinkthatmightbesortofhardtofollowandlookstupidtoo.
20:48:51 <pikhq_> Is Finnish mora-timed or something? "päällä" just seems really strange otherwise.
20:49:03 <Shaftonize> That would be German.
20:50:10 <fizzie> pikhq_: "Finnish, -- are commonly quoted as examples of syllable-timed languages."
20:50:28 <pikhq_> So, basically yes.
20:50:56 <fizzie> I don't know what's strange about "päällä". Doubling a phoneme basically gives a length increase, and that's that.
20:51:04 <fizzie> "All phonemes except /ʋ/ and /j/ can occur doubled phonemically with the result being a phonetic increase in length. Consonant doubling always occurs at the boundary of a syllable in accordance with the rules of Finnish syllable structure.
20:51:04 <fizzie> Some example sets of words:
20:51:04 <fizzie> tuli = fire, tuuli = wind, tulli = customs"
20:51:17 <pikhq_> fizzie: It seems strange *unless* you've got timing like that.
20:51:17 <oerjan> ppäääällllää
20:52:20 <Deewiant> Syllable-timed isn't the same thing as mora-timed.
20:52:57 <pikhq_> No, merely similar.
20:53:00 <fizzie> (And doubled plosives are pronounced with a longer stop, in case that wasn't clear from the above.)
20:55:25 <pikhq_> I probably should've said "syllable", though; it's really pretty rare that morae are considered important in a language...
20:55:59 <oerjan> language morals
20:56:45 <fizzie> http://www.cs.tut.fi/~jkorpela/Finnish.html has Korpela's short introduction of Finnish for foreigners. It's probably factually more correct than a randomly chosen native speaker.
20:57:00 <fizzie> It's also not very long.
20:57:07 <fizzie> (That's why it's called short.)
20:57:39 <colloinkgravisom> fizzie: Please tell me that Korpela guy is a celebrity in Finland.
20:57:56 <fizzie> He's a... pseudo-celebrity in some circles, I think?
20:57:57 <Deewiant> In some circles.
20:59:09 <fizzie> He's sort-of famous for his non-friendly dismissal from his job at our university, for example.
20:59:58 <fizzie> Also of http://reminder.tontut.fi/reminder.jpg
21:00:06 <fizzie> "Et vaan osaa!" = "You just can't!"
21:00:21 <fizzie> (Wasn't this mentioned in Wikipedia at some point? Or at least Uncyclopedia or something?)
21:00:58 <colloinkgravisom> You just can't what?
21:01:27 <fizzie> As in, "you just don't know how to do it", that would perhaps be more accurate.
21:02:01 <colloinkgravisom> Did he get dismissed for breaking vowel harmony.
21:02:14 <colloinkgravisom> It's not just a good idea, it's the LAW.
21:02:27 * colloinkgravisom suddenly realises he has no idea what he's referencing with that.
21:03:07 <oerjan> colloinkgravisom: some matter of gravity.
21:03:20 <oerjan> which probably itself references something.
21:04:19 <colloinkgravisom> "The rest is mostly explained by my education (pure mathematics and a little physics, philosophy, and statistics) and my employment at Helsinki University of Technology Computing centre from 1974 to 2001. (So what happened in 2001? See the site history.)"
21:04:28 <colloinkgravisom> Ooh, time for the JUICY DETAILS. If it doesn't involve vowel harmony I'm quitting IRC.
21:04:38 -!- Klisz has joined.
21:04:51 <colloinkgravisom> "work effectively terminated by the employer's actions 2001-01-17" THAT TELLS ME NOTHING
21:04:52 <fizzie> It involves character set issues. :p
21:05:09 <colloinkgravisom> fizzie: Please tell me you're serious.
21:05:35 <oerjan> he was a character too set in his ways
21:05:47 <colloinkgravisom> Now that you mention it, I distinctly recall either you or Deewiant linking to some probably-web-browser encoding settings dialogue in Finnish and saying something with the letters "Korpela" in it nearby.
21:05:47 -!- ais523 has joined.
21:05:58 <fizzie> Well, almost. I'm not sure if the saga is explained anywhere in English. The official reason was "neglecting duties", but he disputes that.
21:06:06 <colloinkgravisom> Did he get fired for configuring his browser's default character set wrongly.
21:06:19 * colloinkgravisom cracked the Finnish mystery.
21:06:53 <fizzie> I, uh... tried to translate a Finnish thing with Google. It didn't... go well: http://translate.google.com/translate?sl=fi&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Feverybo.dy.fi%2Fotax_legendat.html
21:07:25 -!- DCliche has quit (Ping timeout: 244 seconds).
21:07:31 <colloinkgravisom> http://koti.kapsi.fi/juanttil/yucca/ This seems to translate... marginally better.
21:07:34 <colloinkgravisom> (Found a link.)
21:07:45 <fizzie> Yes, it's more about the dismissal.
21:08:06 <fizzie> The first page is about former-TKK-internal-newsgroups phenomenology.
21:08:16 <colloinkgravisom> "And that's exactly how things stand was: "Jukka Korpela F6suhde Teknillisess ty = = E4 = E4, college p = E4ttyy." Um.
21:08:21 <colloinkgravisom> *""
21:08:32 <colloinkgravisom> Finns are weird.
21:09:13 <Shaftonize> "You chef postings removed from the request. "
21:09:16 <Shaftonize> Damn it.
21:09:17 <colloinkgravisom> Remember that you represent the guild there on the road. Good
21:09:17 <colloinkgravisom> viinapää does not mean that pulled that much booze, and is dill
21:09:17 <colloinkgravisom> team, but that would take even that much alcohol, can behave
21:09:17 <colloinkgravisom> smartly. Nobody is offering Swedish piss in the glass, no one will pull the
21:09:17 <colloinkgravisom> äksiä on the floor and everything behaves intelligently anyway. Kill is already below
21:09:17 <colloinkgravisom> Otaniemi känniääliömaine horrible, and it's reputation to spread
21:09:19 <colloinkgravisom> and internationally.
21:09:30 <Shaftonize> Who's removing my chef postings.
21:09:31 <Shaftonize> Bastards.
21:09:43 <colloinkgravisom> Do not you just can not! And part of the multi-else. The most famous was a link to this message http://reminder.ton.tut.fi/, but later also http://tinyurl.com/ely2 - however, these have now stopped working. Today is http://www.ely2.com . When someone does something to the part of him can be a short concise way to say "reminder" or "ely2". The fact that, Jukka K. Korpela, there is no self that behind the image, but it is made by someone e
21:09:43 <colloinkgravisom> lse over. Korpela, however, the picture is quite striking, because he has become famous for the fact that he knows, and knows very wide range of almost everything.
21:10:00 <colloinkgravisom> "the fact that he knows, and knows very wide range of almost everything." ;; so it's all Finns, not just fizzie and Deewiant?
21:10:24 <oerjan> http://www.thegravityposter.com/historyof_01.html
21:10:57 <colloinkgravisom> "So I had to reconstruct my site. Naturally, this was also an opportunity, or a necessity, to consider its organization and content too. Several friendly people had set up copies, or "mirrors", of my site, although they had to be based on incomplete data. Anyway, there was no immediate need to establish a new "home", since most of my material was somehow accessible. There was a lot to think about, and a lot to go through, and I had some
21:10:57 <colloinkgravisom> decisions to make. Given that (under Finnish and EU legislation) I am the copyright owner of my material, HUT having got just the right to use it (which the decision-makers decided to prevent), I had the opportunity to sell it, perhaps as part of making a contract with a new employer."
21:10:58 <oerjan> ah page 2 shows it was indeed referencing something earlier
21:11:05 <fizzie> oerjan: Hey, what's your country code for telephonistic dialling from the outside world?
21:11:12 <colloinkgravisom> fizzie: He, er, considered selling his personal website to get a job?
21:11:18 <colloinkgravisom> Am I reading this right?
21:11:24 <fizzie> colloinkgravisom: I don't know about that. Let me check that.
21:11:37 <fizzie> Where's it from?
21:11:41 <colloinkgravisom> http://www.cs.tut.fi/~jkorpela/sitehist.html
21:13:59 <fizzie> Oh, it's one of those English pages. In that case I guess your reading is as good as mine.
21:14:27 * colloinkgravisom just assumed that only the Finns can properly interpret the wise Korpela or something like that.
21:14:34 <oerjan> fizzie: +47
21:14:48 <fizzie> oerjan: Ooh, you're, like, right next to Sweden there.
21:14:58 <fizzie> I... guess you are geographically, too.
21:15:09 <colloinkgravisom> `addquote <fizzie> oerjan: Hey, what's your country code for telephonistic dialling from the outside world? <oerjan> fizzie: +47 <fizzie> oerjan: Ooh, you're, like, right next to Sweden there. <fizzie> I... guess you are geographically, too.
21:15:12 <HackEgo> 781) <fizzie> oerjan: Hey, what's your country code for telephonistic dialling from the outside world? <oerjan> fizzie: +47 <fizzie> oerjan: Ooh, you're, like, right next to Sweden there. <fizzie> I... guess you are geographically, too.
21:15:18 <fizzie> Us +358:ans are sort-of distant, you see.
21:15:20 <colloinkgravisom> fizzie: Hey, you haven't kicked the ?-space habit yet.
21:15:23 <fizzie> Thanksies.
21:15:27 <fizzie> Apparently not.
21:15:39 <colloinkgravisom> `addquote Note that the previous quote is, in fact, correctly spaced.
21:15:43 <HackEgo> 782) Note that the previous quote is, in fact, correctly spaced.
21:16:17 <colloinkgravisom> oerjan: What's your code for telephonistic dialling from the outside world that isn't the country code?
21:16:23 <fizzie> Oh, wait, this phone number already had the country code. The "(0047)" double-zero-not-a-plus notation just confused me.
21:16:24 <colloinkgravisom> That's not your full telephone number, so you have absolutely no reason not to tell us.
21:16:45 <colloinkgravisom> fizzie: What do your (post-country-code) telephone numbers look like in Finland?
21:16:50 <colloinkgravisom> Ours are quite interesting.
21:17:27 <colloinkgravisom> Most things are an 01xx area code and then a bunch of numbers but there's also 020 (which I think is London) and 070 (mobiles) and also 0800 is free-dial stuff but there's also 08000 which... might actually just be 0800 numbers with an 0 after them, I'm not sure.
21:20:05 <fizzie> colloinkgravisom: Our area codes in common use for regular people are: 02,03,05,06,08,09,013,014,015,016,017,018,019 (landlines; there used to be a lot more, they got combined in 1996); 040,041,042,044,0450,0451,0452,0453,0458,046,050 (mobiles; they used to be operator-specific, but nowadays you can move your number on and on, so it's no longer strictly true).
21:20:16 <fizzie> The landline numbers are geographical regions.
21:20:36 <fizzie> And then there is a confusing set of prefixes for companies.
21:20:43 <fizzie> A 010 and a 020 prefix, at least.
21:21:46 <oerjan> norway dropped local area numbers and also the initial zero many years ago; i guess the initial part of landline numbers may still count as an area code of sorts.
21:22:51 <fizzie> 010 and 020 are for I think "same cost no matter where you're calling from" company phone numbers; they were marketed for being cheap for customers ("it's like making a local call no matter where you are") except that they're significantly more expensive than regular landline numbers when calling from a mobile phone, and most people only do the mobile thing nowadays, so...
21:22:56 <colloinkgravisom> Wow, we have area codes as long as 016977.
21:23:11 <colloinkgravisom> fizzie: We have those, too.
21:23:37 <colloinkgravisom> Starting mostly with 08 I think.
21:24:03 <fizzie> colloinkgravisom: We have some five-digit area codes for special cases. E.g. 04542, 04543 and 04544 are owned by Nokia. (The corporation, not the town.)
21:24:17 <colloinkgravisom> http://en.wikipedia.org/wiki/Big_Number_Change ;; the big places got their prefixes all en-flattened.
21:24:34 <oerjan> most numbers are 8 digits, although there are shorter ones.
21:24:34 <colloinkgravisom> fizzie: What do they do with all /those/? Test phones?
21:24:53 <colloinkgravisom> http://en.wikipedia.org/wiki/Ballymoney ;; the best town name.
21:24:59 <fizzie> No clue, they're just on this list of operator prefixes.
21:25:05 <fizzie> Maybe they just have so many phones.
21:25:12 -!- Shaftonize has changed nick to Gregor.
21:25:34 <fizzie> The corporate phone I got from Nokia for my one summer there had a regular 050 mobile number, though.
21:25:45 <Gregor> I wonder how much they pay the voice actors for The Sims {1,2,3}.
21:26:15 <colloinkgravisom> Gregor: They don't; they're just shaftonised after the recording.
21:26:30 <Gregor> Mmm.
21:26:32 <Gregor> Makes sense.
21:26:40 <fizzie> The old (landline) area codes started with 9; there was 90 for Helsinki, and every other place had three-digit numbers.
21:26:49 <colloinkgravisom> Gregor: The workers refer to this as "getting shafted".
21:27:08 <fizzie> But there were something like 50 of them, as opposed to the current 13.
21:27:42 -!- Phantom_Hoover has joined.
21:28:00 <colloinkgravisom> fizzie: What's your emergency phone number called?
21:28:02 <colloinkgravisom> Phantom_Hoover: Say hi.
21:28:23 <Phantom_Hoover> hi
21:28:23 <lambdabot> Phantom_Hoover: You have 34 new messages. '/msg lambdabot @messages' to read them.
21:28:29 <colloinkgravisom> I'd like to thank the academy.
21:28:30 <Phantom_Hoover> Impressive.
21:28:53 <fizzie> colloinkgravisom: 112, but 911 also works. (Also it used to be 000 up until 1992, and it might still work for all I know.)
21:29:03 <Phantom_Hoover> I hope you have the 24 lost to lambdabot's thread timeout logged.
21:29:12 <colloinkgravisom> Phantom_Hoover: Yes, aren't you lucky?
21:29:43 <colloinkgravisom> fizzie: It's 999 here. We're not smart enough to remember more than one digit.
21:29:51 <colloinkgravisom> fizzie: Do you guys have a talking clock?!
21:30:14 <fizzie> colloinkgravisom: It's called "Neiti Aika", i.e. "Miss Time".
21:30:23 <fizzie> Where "Miss" is the prefix for an unmarried lady.
21:30:25 <colloinkgravisom> You don't want to miss it, you want to know what it is.
21:30:31 <colloinkgravisom> Yes I'm not an idiot.
21:30:53 <colloinkgravisom> "In Finland the speaking clock service is known as Neiti Aika in Finnish or Fröken Tid in Swedish, both of which literally translate as 'Miss Time'."
21:30:55 <colloinkgravisom> FROKEN TID.
21:31:29 <fizzie> 352310 calls in 1938; 1300 calls in 2006.
21:31:35 <fizzie> Perhaps in the meantime people have bought: CLOCKS.
21:31:40 <colloinkgravisom> X-D
21:32:25 -!- monqy has joined.
21:34:33 <colloinkgravisom> The way I recorded it was in jerks as it were. I said: "At the Third Stroke" (that does for all the times), and then I counted from One, Two, Three, Four, for the hours, we even went as far as twenty-four, in case the twenty-four hour clock should need to be used, and then I said "...and ten seconds, and twenty seconds, and thirty, forty, fifty seconds", and "o'clock" and "precisely". The famous "precisely". So what you hear is "At the T
21:34:33 <colloinkgravisom> hird Stroke it will be one, twenty-one and forty seconds".[11]
21:34:54 <colloinkgravisom> fizzie: Did you know: the 24 hour clock has 25 hours?
21:35:02 <colloinkgravisom> Since they recorded for the 24th hour and all.
21:35:44 <Deewiant> In some locales they prefer "24:xx" to "00:xx", and given that they didn't record "Zero", that's probably what they would've gone with.
21:37:16 <colloinkgravisom> Deewiant: Seriously? Which locales?
21:37:23 <Deewiant> Dunno.
21:37:47 <Deewiant> I've also seen instances of using "24:00" but "00:01".
21:38:49 <oerjan> didn't someone say japanese tv schedules used 25: and 26:
21:40:21 <pikhq_> I don't recall seeing someone say that here, but that's correct.
21:41:42 <pikhq_> I'm not entirely sure where it comes from.
21:42:06 <ais523> Deewiant: I've seen someone use both 24:00 and 00:00 in the same sentence before
21:42:21 <monqy> me too
21:42:25 <ais523> because the times were matched to days
21:42:36 <fizzie> oerjan: Also it seems that your zip/postal codes are just four digits. Is that true and/or a problem with web forms?
21:42:46 <Deewiant> ais523: Right, that too.
21:43:12 <pikhq_> I suppose it makes sense, though? Use "day" to map to a waking period.
21:43:13 <ais523> fizzie: UK postcodes are one or two letters, one or two digits, (by convention a space), one digit, two letters
21:43:28 <fizzie> ais523: Oh, right, yours were weird, too.
21:43:40 <ais523> not really; they're much more specific than most country's postcodes
21:43:43 <pikhq_> (obviously, 25:00 is going to be for late-night programming, such as essentially all anime)
21:43:50 <ais523> postcode + house number is enough for an address in the UK
21:43:50 -!- calamari has joined.
21:43:59 <ais523> one postcode maps to a range of 10 houses or so
21:44:12 <fizzie> ais523: We stayed in a hotel with postcode W1T 5AY, that was... witty...
21:44:14 <ais523> also, the first bit of the postcode is put on road name signs
21:44:21 <oerjan> fizzie: yes, just four digits
21:44:35 <ais523> fizzie: hmm, that's not a well-formed postcode
21:44:48 <fizzie> I may have miscopied it, let me check.
21:44:51 <ais523> the T is invalid there, it should be missing or a digit
21:45:19 <fizzie> ais523: http://www.radissonedwardian.com/london-hotel-gb-w1t-5ay/gbgrafto "130 Tottenham Court Road, London W1T 5AY".
21:45:21 <pikhq_> ais523: Hmm. That's about as specific as the ZIP+4 in the US.
21:45:22 <fizzie> ais523: That's what they say.
21:45:24 <ais523> hmm
21:45:33 <ais523> it could be that W1 ran out of room
21:45:39 <ais523> it's a pretty famous postcode area
21:45:41 <colloinkgravisom> fizzie: Wit say!
21:45:53 <ais523> so it wouldn't surprise me if it had to be extended with letters in order to fit in more houses than usual
21:46:04 <colloinkgravisom> <ais523> postcode + house number is enough for an address in the UK ;; btw, why DO we have to write longer addresses than that?
21:46:27 <ais523> colloinkgravisom: in case there are typos
21:46:27 <pikhq_> (ZIP+4 refers to a 9-digit post code, that the post office would really prefer you use; most people, though, only use a 5 digit code.)
21:46:29 <colloinkgravisom> I was always told that IT MAKES IT EASIER FOR THE DELIVERERS but that sounds like bullshit.
21:46:38 <ais523> you don't; if you write house number + postcode, it will get delivered
21:46:45 <colloinkgravisom> (What's the gender-neutral form of postman, anyway? "Postperson" is weird.)
21:46:48 <ais523> but if they misread it at all, it'll go to completely the wrong place
21:46:57 <ais523> colloinkgravisom: informally "postie"; I'm not sure if there's a formal term
21:46:59 <colloinkgravisom> ais523: That just sounds like MORE FUN OPPORTUNITIES to me.
21:47:03 <monqy> postdude
21:47:17 <ais523> I don't think I ever have seen a female postman, anyway
21:47:23 <ais523> so I suspect it's still a male-dominated job
21:47:29 <fizzie> Quite a little is enough for "an address" in Finland, but the post office doesn't exactly appreciate. The "student guild" room of the CS students has an impressive array of postcards sent with really obscure addresses. (Though maybe they're just gotten wise and carry all the weirdly-addressed mail there?)
21:47:30 <colloinkgravisom> A female postman sounds unlikely :P
21:47:31 <ais523> that said, you tend not to have very many distinct postmen
21:47:39 <colloinkgravisom> monqy: Yes! Postdude.
21:47:42 <colloinkgravisom> Postbro.
21:47:56 <ais523> postentity
21:47:58 <pikhq_> If you're a dick, you could probably get away with name & ZIP here.
21:48:00 <colloinkgravisom> Postx.
21:48:15 <colloinkgravisom> Oh, "postal carrier" works.
21:48:17 <colloinkgravisom> If a bit verbose.
21:48:30 <ais523> wow that sounds so excessively formal
21:48:35 <monqy> postarrier
21:48:57 <colloinkgravisom> ais523: Well, there's also "mail carrier". :p
21:49:05 <colloinkgravisom> "Postperson" is seeming rather less awkward by the second.
21:49:43 <oerjan> posthuman
21:49:57 <monqy> postwhatever
21:50:02 <fizzie> "postard".
21:52:34 -!- NihilistDandy has joined.
21:52:57 <colloinkgravisom> Postaggle.
21:55:27 <oerjan> in soviet russia, compost.
21:56:23 <colloinkgravisom> Post...moc?
21:58:55 <Phantom_Hoover> <colloinkgravisom> "Postperson" is seeming rather less awkward by the second.
21:58:57 <oerjan> postmooks
21:59:01 <Phantom_Hoover> Isn't that what Mathnerd thought he was?
22:01:46 <oerjan> colloinkgravisom: aka posthumus. wait, that's prehumus. whoops.
22:02:25 <kallisti> 09:47 < colloinkgravisom> kallisti: Er, you do realise that north=up is as arbitrary as north=down?
22:02:50 * oerjan listens carefully
22:03:07 <kallisti> colloinkgravisom: yes, but north and south as up or down are not arbitrarily chosen, and so it's still useful to have a reference direction for one of them.
22:03:28 <monqy> english
22:04:08 <colloinkgravisom> I don't see how that invalidates what you quoted (not that I agree with what it's trying to express, necessarily); it's perfectly plausible to say that north was chosen as up because the pioneering mapmakers were from those areas, or something. (I don't know what the actual facts are in this situation, though.)
22:04:23 <colloinkgravisom> Just saying that "ha ha, they're saying that up is arbitrary!" doesn't really mean anything.
22:04:44 <oerjan> incidentally some medieval maps had east up iirc
22:05:06 <NihilistDandy> http://etymonline.com/index.php?term=north
22:05:21 <NihilistDandy> oerjan: The eymology link explains that
22:05:27 <NihilistDandy> *etymology
22:05:48 <NihilistDandy> Plausibly, at least
22:06:30 <oerjan> NihilistDandy: er, not really?
22:06:51 <NihilistDandy> "possibly ult. from PIE *ner- "left," also "below," as north is to the left when one faces the rising sun"
22:06:59 <NihilistDandy> So if north is left, east is up
22:07:41 <kallisti> colloinkgravisom: I just got the impression that he was claiming north/south were /entirely/ culturally fabricated and not based on useful non-cultural information like, say, the earth's axis of rotation.
22:08:16 <oerjan> i say that's a dubious connection, that's a gap of thousands of years between the etymology and the maps
22:08:29 <kallisti> that's true.
22:08:32 <colloinkgravisom> Well, okay, but "He attributed the north-up-superior/south-down-inferior presentation of most other world maps to cultural bias." very clearly says "up"/"down".
22:09:00 <Phantom_Hoover> At least some old maps had east at the top.
22:09:11 <Phantom_Hoover> 'Old' meaning 'medieval' here.
22:09:23 <NihilistDandy> If it makes you feel any better, the etymology of west suggests "down"
22:09:41 <colloinkgravisom> Phantom_Hoover: <oerjan> incidentally some medieval maps had east up iirc
22:09:59 <Phantom_Hoover> Where'd this start from?
22:10:32 <kallisti> I guess the Dymaxion map actually makes little circles around the geographic poles so.. that's good. I suppose I inferred too much.
22:11:38 <colloinkgravisom> Phantom_Hoover:
22:11:39 <colloinkgravisom> 04:58:55: <kallisti_> "He attributed the north-up-superior/south-down-inferior presentation of most other world maps to cultural bias."
22:11:39 <colloinkgravisom> 04:58:58: <kallisti_> loool
22:11:40 <colloinkgravisom> 04:59:03: <kallisti_> north, just a cultural artifact, man.
22:11:44 <colloinkgravisom> Talking about map projections.
22:11:48 <colloinkgravisom> Presumably that's about Gall-Peters or whatever.
22:12:14 <colloinkgravisom> Oh, no.
22:12:17 <colloinkgravisom> Dymaxion.
22:12:22 <Phantom_Hoover> (North/south = up/down is kind of natural anyway, because we distinguish the vertical from other directions and align the axis of the map that way, and there's far more 'interesting' land in the northern hemisphere, so putting it at the top kind of makes sense too.)
22:12:33 -!- PiRSquared17 has left ("Bye").
22:12:51 <kallisti> colloinkgravisom: yeah Gall-Peters still uses north as up.
22:13:03 <colloinkgravisom> Phantom_Hoover: How is that not literally admitting it's a cultural bias? :p
22:13:22 <monqy> the interesting land should fall to the bottom
22:13:24 <colloinkgravisom> I mean, OK, the Northern hemisphere is more detailed, but that's a kind of ridiculous justification.
22:13:28 <monqy> and the boring land should float to the top
22:13:34 <monqy> because that's how it works right
22:13:36 <colloinkgravisom> yes
22:13:38 <colloinkgravisom> that's called gravity
22:13:45 <colloinkgravisom> this is why vorpal is in the stratosphere and i'm underground
22:13:59 <kallisti> colloinkgravisom: the important shit should be on top dude. Like the USA, and Great Britain!
22:14:12 <NihilistDandy> AMURKA
22:14:21 <colloinkgravisom> The Dymaxion projection would be better if it just unfolded the sphere directly.
22:14:23 <colloinkgravisom> (Cue Phantom_Hoover.)
22:14:28 <Phantom_Hoover> kallisti, and everywhere except for some of South America and some of Africa.
22:14:43 <kallisti> nah too many non-white people.
22:14:56 <Phantom_Hoover> There's a reason most people think the equator is a long way to the north of where it actually is.
22:15:19 <colloinkgravisom> Phantom_Hoover: You forgot Australia.
22:15:22 <colloinkgravisom> And Antarctica.
22:15:22 <oerjan> ...they do?
22:15:33 <colloinkgravisom> oerjan: I think people assume the Equator is the line dividing the Americas.
22:15:34 <colloinkgravisom> AT LEAST I DID
22:15:35 <NihilistDandy> I vote that we use a series of tractor beams to arrange the new rotation of the Earth perpendicular to the current culturally biased model~
22:15:38 <kallisti> because they wouldn't expect so much interesting shit in the same place.
22:15:43 <colloinkgravisom> It's the most natural place!!!
22:15:56 <kallisti> they'd expect it eventually distributed.
22:16:05 <kallisti> the earth should be evenly interesting.
22:16:13 <kallisti> evenly rather
22:16:23 <Phantom_Hoover> <colloinkgravisom> oerjan: I think people assume the Equator is the line dividing the Americas.
22:16:58 <Phantom_Hoover> Or they just go for the line which roughly bisects the landmass less Antarctica.
22:17:28 <colloinkgravisom> Anyway, "everywhere except for some of South America and Africa" is obviously unfair.
22:17:34 <colloinkgravisom> The northern hemisphere is definitely prettier, though. :p
22:17:35 <kallisti> lol
22:18:22 <kallisti> ITT: the secret culture bias towards north REVEALED.
22:18:25 <Phantom_Hoover> "Fuller argued that in the universe there is no "up" and "down", or "north" and "south":"
22:18:35 <kallisti> and here I thought it was a ridiculous notion.
22:18:38 <Phantom_Hoover> Was Fuller known for being generally crazy?
22:18:48 <pikhq_> Phantom_Hoover: The term is "eccentric".
22:18:51 <pikhq_> And yes.
22:18:54 <Phantom_Hoover> I've kind of got him and Dyson confused.
22:18:59 <zzo38> There is. Up and down correspond to gravity. North and south celestial poles correspond to the Earth.
22:19:08 <NihilistDandy> Unfair to whom? I don't think I know of many cultures complaining that they're second-class because of their north-south distinction. I think what pisses them off is all the oppression and genocide.~
22:19:26 <zzo38> Do you know another idea of computer game? One of my other idea is, game based on story of events in D&D game I have been playing in.
22:19:40 <NihilistDandy> "I'm put out by the social implications of my area's arbitrary placement in the world model." #firstworldproblems
22:19:53 <kallisti> the oppression is just a natural result of their southerliness
22:19:58 <NihilistDandy> Clearly
22:20:01 <colloinkgravisom> Phantom_Hoover: He was super weird.
22:20:13 <colloinkgravisom> I can't bring myself to dislike him though?
22:20:24 <kallisti> he made a cool map.
22:20:27 <kallisti> what's to dislike?
22:20:30 <pikhq_> He documented his life rather extensively.
22:20:36 <colloinkgravisom> Phantom_Hoover: Anyway I don't think that quote is necessarily nonsense with a charitable interpretation.
22:20:39 <kallisti> notice that he put AMERICA AT THE CENTER OF THE MAP
22:20:39 <pikhq_> Writing in his diary every 15 minutes from 1920 to 1983.
22:20:40 <kallisti> BIAS
22:20:57 <colloinkgravisom> Phantom_Hoover: He's just saying there's no correct orientation of space.
22:20:57 <Phantom_Hoover> 'North' is unquestionably a well-defined, useful concept.
22:21:14 <colloinkgravisom> Phantom_Hoover: Yes, on the Earth.
22:21:15 <Phantom_Hoover> And no, but there's definitely a privileged orientation of the surface of the globe.
22:21:20 * kallisti is going to make a map that can be construed to have absolutely no cultural bias
22:21:23 <colloinkgravisom> "the Universe" obviously means "in the entire Universe" here.
22:21:24 <pikhq_> Basically, his life is the best documented we'll have until we start having constantly recording video cameras on everyone.
22:21:29 <kallisti> the landmasses of the world are scattered out on the perimeter
22:21:35 <pikhq_> kallisti: Centered around Antarctica?
22:21:35 <kallisti> the center is antarctica.
22:21:37 <kallisti> yes
22:21:57 <Phantom_Hoover> 'The universe has no privileged directions, therefore any subset of the universe has no privileged directions!'
22:21:57 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/e/ee/Dymaxion_map_ocean2.png So, the oceanic Dymaxion?
22:22:04 <colloinkgravisom> Wait water doesn't actually spiral the wrong way out the sink in the southern hemisphere???
22:22:07 <colloinkgravisom> Phantom_Hoover: I FEEL BETRAYED BY SCIENCE???
22:22:28 <Phantom_Hoover> It does in a very carefully-controlled sink.
22:22:30 <colloinkgravisom> Wait, maybe I should feel betrayed by John Linnell instead.
22:22:36 <colloinkgravisom> Maybe I'll just blame everyone.
22:22:46 <kallisti> pikhq_: maybe...
22:22:47 <zzo38> OK, centered around Antarctica might be OK, try that
22:23:20 <oerjan> colloinkgravisom: also bumblebees can fly
22:23:25 <kallisti> colloinkgravisom: do their toilets flush in the opposite direction?
22:23:30 <kallisti> this is the important thing
22:23:33 <Phantom_Hoover> No.
22:23:36 <kallisti> NOOOOOOO
22:23:37 <colloinkgravisom> oerjan: Wait is that a thing I'm not supposed to believe?
22:23:57 <Phantom_Hoover> Of course, over here our toilets don't have a direction when they flush.
22:24:04 <NihilistDandy> colloinkgravisom: http://en.wikipedia.org/wiki/Bumble_bee#Flight
22:24:12 <colloinkgravisom> Phantom_Hoover: Things in the other hemisphere still look upside down though right?
22:24:14 <oerjan> colloinkgravisom: it has been proved by science that bumblebees cannot possibly fly, duh.
22:24:18 <Phantom_Hoover> Yes.
22:24:28 * colloinkgravisom begins penning his autobiography, "Everything I Know About Spheres I Learned From Ana Ng"
22:24:41 <colloinkgravisom> NihilistDandy: Oh right that.
22:24:45 <pikhq_> colloinkgravisom: :D
22:24:47 <oerjan> who's ana ng
22:24:57 <pikhq_> oerjan: It's a song by They Might Be Giants.
22:25:13 <pikhq_> https://www.youtube.com/watch?v=MEjutUbgpH8
22:25:41 <Phantom_Hoover> International link plz.
22:25:50 <colloinkgravisom> http://www.youtube.com/watch?v=7dQLkxz6c2E
22:25:55 <oerjan> <kallisti> colloinkgravisom: do their toilets flush in the opposite direction? <-- yes, which is good since their toilets are upside down
22:25:58 <colloinkgravisom> (Supremely low quality.)
22:26:35 <NihilistDandy> I don't want the world, I just want your half
22:32:55 <NihilistDandy> Do you know how many species of bumblebee there are?
22:33:07 <colloinkgravisom> 4.3
22:33:41 <oerjan> some hundred maybe
22:33:56 <NihilistDandy> http://www.nhm.ac.uk/research-curation/research/projects/bombus/subgenericlist.html
22:33:57 <colloinkgravisom> "On the occasion of a leap second, such as at 23:59:60 on December 31, 2005, there is a one second pause before the beeps, thus keeping the speaking clock in sync with Coordinated Universal Time."
22:33:58 <NihilistDandy> It's a lot
22:34:02 <colloinkgravisom> Phantom_Hoover: The most disorienting thing?
22:35:31 <NihilistDandy> The checklist is apparently drawn from an unpublished catalogue of 2800 names
22:37:13 <pikhq_> colloinkgravisom: Better than UNIX time.
22:38:26 -!- oerjan has quit (Quit: Good night).
22:38:28 <kallisti> hmmm, I wonder how SBCL gets such fast speeds from Lisp code.
22:39:01 <colloinkgravisom> hmmm, I wonder how gcc gets such fast speeds from C code.
22:39:14 <kallisti> colloinkgravisom: well, that's a bit more obvious than Lisp.
22:39:21 <pikhq_> Not really.
22:39:35 <pikhq_> GCC does some really insane shit to C.
22:39:39 <kallisti> Lisp is dynamically typed, for one.
22:39:44 <kallisti> so I'm wondering what it does
22:40:41 <NihilistDandy> It probably lies a lot. Spacetime Bending Common Lisp
22:40:54 <colloinkgravisom> kallisti: Untrue.
22:40:59 <colloinkgravisom> Common Lisp has a type system.
22:41:06 <colloinkgravisom> As well as optional static declaration of types.
22:41:07 <kallisti> oh okay.
22:41:12 <colloinkgravisom> Lisp compilers rely on these in part to produce efficient code.
22:41:23 <kallisti> that makes more sense.
22:41:44 <kallisti> I was wondering why SBCL was faster than Haskell in the benchmark game; all the code probably uses static annotations.
22:41:47 <colloinkgravisom> (Not that they can't be inferred sometimes.)
22:41:48 <kallisti> *GHC
22:42:05 <kallisti> colloinkgravisom: that another possibility I considered.
22:42:08 <Phantom_Hoover> There's an example in Practical Common Lisp of the difference in the assembly of a function with and without type declarations.
22:42:19 <colloinkgravisom> (declaim (optimize (speed 3) (safety 0) (debug 0)))
22:42:29 <colloinkgravisom> --pidigits.lisp
22:42:39 <Phantom_Hoover> Type declarations are additional to that bit, though.
22:42:39 <monqy> yikes!!
22:42:59 <Phantom_Hoover> (the <type> <expr>) IIRC
22:43:35 <colloinkgravisom> Phantom_Hoover: Yeah,
22:43:36 <colloinkgravisom> (loop with iterations of-type fixnum = (ash 1 (+ max-depth min-depth (- d)))
22:43:36 <colloinkgravisom> for i of-type fixnum from 1 upto iterations
22:43:36 <colloinkgravisom> sum (+ (the fixnum (check-node (build-btree i d)))
22:43:36 <colloinkgravisom> (the fixnum (check-node (build-btree (- i) d))))
22:43:36 <colloinkgravisom> into result of-type fixnum
22:43:38 <colloinkgravisom> finally
22:43:40 <colloinkgravisom> (format t "~D trees of depth ~D check: ~D~%"
22:43:42 <colloinkgravisom> (the fixnum (+ iterations iterations )) d result))))
22:43:44 <colloinkgravisom> Plus in the declarations of functions and structs, obviously.
22:43:52 <colloinkgravisom> (LOOP is so grand.)
22:44:22 <colloinkgravisom> kallisti: The Lisp programs are more readable than the Haskell ones. :p
22:44:30 <Phantom_Hoover> ; 35: 4C8D1C25E0010020 LEA R11, [#x200001E0] ; GENERIC-+
22:44:30 <Phantom_Hoover> ; 3D: 41FFD3 CALL R11
22:44:40 <Phantom_Hoover> Efficient.
22:44:46 <colloinkgravisom> http://shootout.alioth.debian.org/u32q/program.php?test=pidigits&lang=ghc&id=4 ;; wow, not a single pointer manipulation!
22:45:14 <Phantom_Hoover> Although I suspect that x86 insanity makes that faster than an explicit call.
22:45:19 <colloinkgravisom> Phantom_Hoover: I'm currently trying to comprehend the information that you've actually read, comprehended, and been interested in the various assembly outputs of a program under different amounts of optimisation.
22:45:32 <colloinkgravisom> Also, I doubt it.
22:45:35 -!- monqy has quit (Quit: hello).
22:46:00 <kallisti> colloinkgravisom: the Haskell you linked isn't too unreadable.
22:46:15 <Phantom_Hoover> colloinkgravisom, I'm sorry, you said a lot of words just there but they didn't go into my brain.
22:46:20 <colloinkgravisom> kallisti: That's why Is aid "wow".
22:47:01 <kallisti> colloinkgravisom: NihilistDandy noted that quotRem appears to faster than divMod on x86
22:47:04 <kallisti> perhaps they should have tried that.
22:47:09 <kallisti> +be
22:47:10 <colloinkgravisom> ...no shit?
22:47:19 <colloinkgravisom> Of course it's faster, quotRem is a single machine instruction. Or, maybe two.
22:47:20 <kallisti> why would that be?
22:47:24 <colloinkgravisom> But they don't do the same thing.
22:47:26 -!- monqy has joined.
22:47:35 <colloinkgravisom> So replacing one with the other will hardly help if you care about the behaviour on negative numebrs.
22:47:36 <colloinkgravisom> numbers
22:47:36 <NihilistDandy> colloinkgravisom: Don't they?
22:47:38 <Phantom_Hoover> They do for nonnegative integers.
22:47:41 <kallisti> colloinkgravisom: ah yes, if negatives are important then yes.
22:47:48 <NihilistDandy> Well, sure
22:47:59 <Phantom_Hoover> Are they, for this application?
22:48:32 <colloinkgravisom> NihilistDandy: If they did the same thing, they wouldn't have two names :)
22:48:36 <colloinkgravisom> Phantom_Hoover: Dunno, I'd have to actually read the program.
22:48:42 <colloinkgravisom> <colloinkgravisom> NihilistDandy: If they did the same thing, they wouldn't have two names :)
22:48:44 <colloinkgravisom> Don't mention map/fmap.
22:48:51 <NihilistDandy> lol
22:49:13 <Phantom_Hoover> Excuse me, fmap does different things to map.
22:49:32 <colloinkgravisom> Phantom_Hoover: Um?
22:49:37 <colloinkgravisom> > map f [a,b,c]
22:49:38 <lambdabot> Ambiguous type variable `b' in the constraints:
22:49:38 <lambdabot> `GHC.Show.Show b'
22:49:38 <lambdabot> a...
22:49:40 <colloinkgravisom> >_<
22:49:41 <colloinkgravisom> > map f [a,b,c] :: [Expr]
22:49:43 <lambdabot> [f a,f b,f c]
22:49:43 <colloinkgravisom> > fmap f [a,b,c] :: [Expr]
22:49:44 <lambdabot> [f a,f b,f c]
22:49:48 <kallisti> different
22:49:54 <kallisti> one is polymorphicer.
22:50:04 <Phantom_Hoover> Sure, but try mapping over Maybe.
22:50:09 <Phantom_Hoover> *on a
22:50:09 <kallisti> lol
22:50:12 <colloinkgravisom> Phantom_Hoover: kallisti: You're both morons.
22:50:13 <Phantom_Hoover> Whatever.
22:50:16 <colloinkgravisom> (=) :: a -> a -> Prop
22:50:20 <Phantom_Hoover> colloinkgravisom, no, I am being pedantic.
22:50:25 <colloinkgravisom> In (map = fmap), fmap is necessarily restricted to f ~ [].
22:50:29 <colloinkgravisom> It's called unification.
22:50:40 <Phantom_Hoover> fmap does things map does not; hence, it does different things to map.
22:50:41 <kallisti> colloinkgravisom: but fmap has more POTENTIAL
22:50:42 <kallisti> maaan
22:50:55 <Phantom_Hoover> We're talking about the things they do, not propositional equality.
22:51:10 <colloinkgravisom> Phantom_Hoover: Shut up English "plays Cave Story on easy" pansy.
22:51:15 <colloinkgravisom> THE CAT IS OUT OF THE BAG NOW, CHANNEL!!!
22:51:32 <Deewiant> Pansy!!
22:51:38 <Phantom_Hoover> colloinkgravisom, excuse me I showed with LOGIC that easy mode = Scottish mode on account of making everyone else English.
22:51:57 <NihilistDandy> lol
22:52:16 <Phantom_Hoover> Hard mode makes you English, of course.
22:52:30 <colloinkgravisom> Deewiant: Look at his rationalisation.
22:52:47 <colloinkgravisom> Deewiant: He even fixed the sprite back to being red (Cave Story+'s easy mode Quote is yellow apparently???) to hide his shame.
22:53:15 <kallisti> Hard Normal Daddy.
22:53:20 <Phantom_Hoover> Red is SCOTTISH
22:54:01 <NihilistDandy> kallisti: Yes, and?
22:54:26 <kallisti> NihilistDandy: Sometimes I just like to reference things to see if anyone knows wtf I'm talking about.
22:54:33 * kallisti is listening to it.
22:54:34 <NihilistDandy> I do.
22:54:49 <kallisti> COOL
22:55:01 <NihilistDandy> Squarepusher
22:55:05 <kallisti> normally I would then proceed to have some kind of conversation but I kind of need to eat food before I die.
22:55:08 <kallisti> yes that's the one.
22:55:12 <NihilistDandy> Also, a good plan
22:55:19 <NihilistDandy> *-,
22:55:25 <colloinkgravisom> Squarepusher??? Is that an esolang like the BYTEPUSHER the kids are drinking these days????????
22:55:52 <kallisti> no squarepusher is a bit more retro these days.
22:56:08 <NihilistDandy> Retrolangs.org
22:56:09 <colloinkgravisom> I thought I put enough question marks in to avoid being taken seriously ffs.
22:56:26 <kallisti> colloinkgravisom: never
22:56:49 <kallisti> colloinkgravisom: http://www.youtube.com/watch?v=LxBvMMPd4lg SO RETRO
22:59:36 <kallisti> yes clearly you are shock.
22:59:41 <kallisti> this is why it is silent now.
22:59:53 <kallisti> enthralled by the groove.
23:00:42 <colloinkgravisom> kallisti: I am aware of the existence of Squarepusher, dude.
23:01:19 <kallisti> colloinkgravisom: I wasn't suggesting you weren't? it was obvious that you knew. YOUR HIPSTER CRED HAS NOT BEEN DISCREDITED.
23:02:25 <kallisti> let us all be friendship hipsters together. <3
23:02:47 <NihilistDandy> We were friends before it was cool
23:03:09 <NihilistDandy> We use a really obscure social networking utility. You've probably never heard of it
23:03:32 <colloinkgravisom> Augh I just used that snowclone in /msg in the hopes that it had been beaten to death enough for my use of it to be obviously joking.
23:03:33 <colloinkgravisom> I hate you NihilistDandy.
23:04:05 <NihilistDandy> HIPSTERMEMEISONLYMEME
23:04:14 <NihilistDandy> Don't call me Ariel, my name is Helvetica, no?
23:04:26 -!- ais523 has quit (Remote host closed the connection).
23:04:36 * kallisti goes by the name Lucida. Lucida Console.
23:06:00 <colloinkgravisom> Lucida Console would be a really good cyberpunk protagonist name.
23:07:23 <kallisti> colloinkgravisom: we you like to co-author a cyberpunk novella in which every character is the name of a typeface?
23:07:28 <kallisti> s/we/would/
23:07:34 * Sgeo missed the Humble Bundle by minutes
23:07:42 <NihilistDandy> Akzidenz Grotesk will be based on me
23:07:44 <kallisti> oh there's like a time limit on that shit?
23:08:17 <Phantom_Hoover> Sgeo, eh.
23:08:54 <zzo38> How can the radio explode whenever it is turned on, except when the television is also turned on?
23:09:05 <Phantom_Hoover> The only two worth a look were Cave Story+ and GSB; the former isn't really worth it given that the original's free, and the latter isn't as good as it sounds.
23:09:34 <kallisti> says the guy who plays it on easy..
23:09:38 <kallisti> (ha ha ha)
23:10:05 <colloinkgravisom> Phantom_Hoover: But Super Meat Boy?
23:10:07 <Deewiant> SMB wasn't worth a look?
23:10:18 <zzo38> kallisti: O, in the Vancouver Theatre Sports that is what they did, the character are named after typefaces, except for the main character, and the people who have not been given names for the story at all.
23:10:19 <Phantom_Hoover> Oh, right.
23:10:28 <Phantom_Hoover> Bloody outdated shaders.
23:10:39 -!- cheater has quit (Ping timeout: 240 seconds).
23:13:24 <NihilistDandy> SMB had a practically unsecured database for a backend
23:13:37 <colloinkgravisom> NihilistDandy: SO YOU'VE SAID
23:13:47 -!- calamari has quit (Quit: Leaving).
23:14:24 <NihilistDandy> lol
23:15:48 <Gregor> NihilistDandy knows. He shaftinized it.
23:16:20 <NihilistDandy> I'm getting my degree in shaftinization.
23:16:37 * Gregor nods sagely.
23:16:56 <Phantom_Hoover> NihilistDandy's degree is actually in art history.
23:17:07 <Phantom_Hoover> He hangs around here and #haskell to hide the shame.
23:17:08 <NihilistDandy> OH THE SHAME~
23:17:19 <zzo38> Sometimes you change your name? elliott still did not put it back how it was before?
23:17:44 <Phantom_Hoover> I'm actually andreou.
23:18:24 <Phantom_Hoover> My degree is in Mathematics with Spanish.
23:18:30 <zzo38> Phantom_Hoover: If so, why did you use a new account?
23:18:50 <Phantom_Hoover> zzo38, I was tired of all of the responsibilities.
23:18:54 <Phantom_Hoover> You know Aladdin?
23:18:57 <Phantom_Hoover> Basically, that.
23:19:11 <colloinkgravisom> X-D
23:20:24 <Phantom_Hoover> (Mathematics with Spanish was an actual choice offered by Warwick.
23:20:26 <Phantom_Hoover> *)
23:20:29 <Phantom_Hoover> It was astonishing.
23:20:32 <Phantom_Hoover> wait
23:20:43 <zzo38> Some class of chess variants are named after typefaces, such as Schoolbook Chess and Univers Chess. I can suggest to make Computer Modern chess it has many parameter you have to decide before you play the game, each game they have a few different strategy and so on, too.
23:20:43 <Phantom_Hoover> Ian Stewart is a professor at Warwick.
23:20:49 <Phantom_Hoover> OH GOD WHAT HAVE I DONE
23:21:56 <NihilistDandy> My brother is attempting to double major in math and playwriting.
23:22:27 <NihilistDandy> Where I'm just going the more respectable route of plain old math. Possible double major in CS.
23:22:53 <zzo38> Can you major in writing plays about mathematics?
23:23:03 -!- cheater has joined.
23:24:03 <NihilistDandy> One can only hope.
23:25:35 <Gregor> I'll bet if #esoteric banded together, we could make the time-travel game, and it would kick arse!
23:25:40 <Gregor> Chances of this happening: Zero!
23:28:06 <fizzie> I'll bet if #esoteric banded together, we could make an amazing amount of bickering.
23:28:15 <zzo38> If you are actually andreou then prove it!
23:28:41 <Gregor> fizzie: That too.
23:28:51 <zzo38> I'll bet if #esoteric banded together, ... that is difficult.
23:28:58 <Phantom_Hoover> zzo38, I would, but there are too many integrals involved.
23:30:17 <kallisti> fizzie: what? we would never bicker
23:30:30 <kallisti> the fact that you would even make that grand assumption angers me greatly.
23:30:41 <kallisti> fizzie: the notion is absurd.
23:31:01 <kallisti> diiiiiiiiiiii
23:40:08 -!- calamari has joined.
23:40:49 -!- pikhq_ has quit (Ping timeout: 240 seconds).
23:41:00 -!- pikhq has joined.
23:52:31 -!- calamari has quit (Read error: Connection reset by peer).
23:55:04 <kallisti> I'd like to see something like the computer benchmark game except with restrictions on submissions to make them as "typical" as possible.
23:55:24 <colloinkgravisom> that would be doomed to even more subjectivity than the current one suffers from
23:56:03 <kallisti> well, I think it would more closely resemble the efficiency of well-written programs "in the wild"
23:56:22 <kallisti> that aren't micro-optimized to hell.
23:56:28 <kallisti> but
23:56:36 <colloinkgravisom> I mean on the part of the maintainer.
23:56:37 <kallisti> choosing the restrictions is difficult.
23:56:41 <kallisti> oh, yes.
23:56:46 <colloinkgravisom> f.e. he tends to reject programs that use too different algorithms, IIRC.
23:56:59 <Gregor> s/too //
23:57:01 <colloinkgravisom> Which is very subjective; some solutions use parallelism and some don't and that's accepted.
23:57:04 <colloinkgravisom> Gregor: See ^
23:57:18 <Gregor> Mmm, fair enough.
23:57:37 * colloinkgravisom has grown to instinctively dislike the guy behind the benchmarks game because he tends to be a jerk on the internet. :p
23:58:10 <colloinkgravisom> (Admittedly, I probably wouldn't notice normal-sounding comments as much.)
23:58:52 <kallisti> colloinkgravisom: accepting parallelism makes sense because it allows you to compare the quad-core vs. single core case
23:59:05 <kallisti> and see how well a language takes advantage parallelism
23:59:14 <kallisti> +of
23:59:18 <kallisti> *implementation
23:59:26 <colloinkgravisom> kallisti: They're still algorithmic differences.
23:59:54 <kallisti> oh I see what you mean
23:59:57 <kallisti> yes it is arbitrary.
2011-12-28
00:00:15 <kallisti> to disallow based on algorithmic differences, but I guess that makes it easier to compare?? I don't know.
00:00:32 <colloinkgravisom> ...
00:00:36 <Madoka-Kaname> Well.
00:00:40 <colloinkgravisom> I meant that it's subjective to decide what constitutes an algorithmic difference.
00:00:49 <kallisti> oh, sort of.
00:00:59 <colloinkgravisom> The maintainer claims to have a policy of rejecting differing algorithms, but allows programs with and without parallelism for the same task.
00:01:02 <colloinkgravisom> Which is an algorithmic difference.
00:01:03 <Madoka-Kaname> I suppose, a good way of choosing to accept or not might be "shortest non-trivial, non-overly-naive solution"
00:01:08 <Madoka-Kaname> But that's highly subjective.
00:01:43 <kallisti> yeah that's pretty much meaningless without further criteria.
00:02:02 <Madoka-Kaname> non-trivial means you're not calling sort.
00:02:10 <Madoka-Kaname> non-overly-naive means you're not bogosorting
00:02:56 <kallisti> wat
00:03:03 <colloinkgravisom> What if calling sort is the fastest implementation of sort
00:03:12 <kallisti> "no using libraries"
00:03:17 <kallisti> that's silly.
00:03:27 <Madoka-Kaname> kallisti, well.
00:03:33 <Madoka-Kaname> I suppose that's if the problem is "sort this list"
00:04:10 <Madoka-Kaname> How about "no making the library do the entire job" so it's a comparison of things implemented in the language and not the standard library.
00:04:46 <kallisti> Haskell's sort is implemented in Haskell.
00:04:51 <kallisti> so that's still fairly arbitrary.
00:05:03 <kallisti> but I can see the rationale, I guess.
00:05:40 <kallisti> it's the same reason I'd like all of the Python-C API, Haskell FFI, etc entries to not be counted.
00:07:19 <colloinkgravisom> Madoka-Kaname: Is the benchmark game not a competition to see who's language is fastest and shortest?
00:07:29 <colloinkgravisom> It is surely a testament to an implementation if
00:07:31 <colloinkgravisom> main = interact sort
00:07:38 <colloinkgravisom> produces an extremely fast sorting program.
00:07:54 <Madoka-Kaname> But it doesn't say much about programming in the language.
00:08:05 <kallisti> sure it does.
00:08:20 <kallisti> people are likely to use sort when programming in Haskell and in need of a sorting algorithm.
00:08:27 <Madoka-Kaname> At least.
00:08:38 <Madoka-Kaname> It doesn't say much about programming non-trival things in the language.
00:08:51 <Madoka-Kaname> You might be able to pull things like that off easily, but, more complex, and things fall apart.
00:08:53 <Sgeo> And HQ9+ can't be beat when it comes to 99 bottles of beer on the wall
00:08:56 <kallisti> people are less likely to write everything in C and then hook up to the language implementation.
00:09:54 <Sgeo> Actually, it can, probably. 99 bottles of beer on the wall require a character.
00:10:12 <colloinkgravisom> <Madoka-Kaname> But it doesn't say much about programming in the language.
00:10:13 <colloinkgravisom> Is it meant to?
00:10:19 <monqy> Sgeo: language where everything is 99 bottles of beer on the wall?
00:10:26 <colloinkgravisom> There are a fixed set of simple problems; the idea is to get bragging rights by showing your implementation fastest and shortest.
00:10:34 <Sgeo> monqy, or at least, the empty program
00:10:41 <colloinkgravisom> If you have a very fast standard-library sort, then it would be against the purpose of the game not to use it.
00:10:47 <monqy> the empty program is a thing, after all
00:11:06 <Sgeo> Homespring special-cases it
00:11:12 <kallisti> I think the language benchmark game is indicative of what is at least possible in terms of performance, but isn't really indicative of what "normal programs" do.
00:12:01 <kallisti> the second one is very difficult to determine.
00:12:15 <colloinkgravisom> No shit.
00:12:23 <colloinkgravisom> There are warnings plastered all over the site saying exactly that.
00:12:32 <kallisti> even if you have a large sample of wild programs, how do you categorize them so that you can determine that program in language X does the same thing as program in language Y.
00:13:13 <Phantom_Hoover> <Sgeo> Homespring special-cases it
00:13:22 <Phantom_Hoover> 'Special-cases' seems a bit odd in that context.
00:13:38 <colloinkgravisom> Phantom_Hoover: It actually does, though?
00:14:14 <kallisti> homespring is interesting in that the null program is not a quine. :)
00:15:02 <Phantom_Hoover> colloinkgravisom, but everything is a special-case, isn't it?
00:15:20 <Phantom_Hoover> Why is doing nothing on the null program any less of a special case?
00:15:39 <monqy> but it doesn't do nothing?
00:15:51 <colloinkgravisom> Phantom_Hoover: I don't think you know what Homespring is?
00:15:59 <colloinkgravisom> Phantom_Hoover: Homespring does not do nothing on the null program.
00:16:03 <Phantom_Hoover> I know that.
00:16:19 <Phantom_Hoover> It prints "In Homespring, the null program is not a quine.", or words to that effect.
00:16:50 <colloinkgravisom> Yes.
00:16:58 <colloinkgravisom> But Homespring isn't just a collection of special cases?
00:17:02 <colloinkgravisom> It's an actual language.
00:17:12 <colloinkgravisom> One whose semantics presumably do not print out that string on the null program.
00:17:14 <colloinkgravisom> So it's a special case.
00:18:53 <Sgeo> Has anyone written a Homespring quine?
00:19:20 <colloinkgravisom> I doubt it.
00:19:53 -!- Patashu has joined.
00:20:43 <kallisti> colloinkgravisom: http://shootout.alioth.debian.org/u32/performance.php?test=threadring I find it kind of interesting that he includes the GHC program but not the Java 7 server program
00:21:48 <kallisti> which is listed as an "interesting alternative"
00:23:24 <colloinkgravisom> ...
00:23:35 <colloinkgravisom> Those are alternate implementations of programs whose main implementations appear in the previous table.
00:23:50 <kallisti> yes I understand that.
00:24:12 <Phantom_Hoover> <colloinkgravisom> It's an actual language.
00:24:12 <Phantom_Hoover> <colloinkgravisom> One whose semantics presumably do not print out that string on the null program.
00:24:37 <Phantom_Hoover> I... don't see how you can infer the behaviour of the null program based on the behaviour of all the other programs.
00:24:51 <kallisti> you can't. it's a special case.
00:26:18 <colloinkgravisom> Phantom_Hoover: Um, an inductive definition?
00:26:30 <colloinkgravisom> Phantom_Hoover: Consider defining the semantics of BF as [Ins].
00:26:40 <Phantom_Hoover> Go on.
00:26:43 <colloinkgravisom> The semantics of the null program is to do nothing.
00:26:54 <colloinkgravisom> The semantics of add followed by program p is to increment [...] followed by the semantics of p.
00:26:55 <colloinkgravisom> And so on.
00:26:58 <colloinkgravisom> It's called a base case.
00:27:09 <kallisti> hmm, interesting, Haskell beats everything on the thread-ring challenge except for Erlang on the x86 Ubuntu Intel Q66000 one core.
00:27:18 <kallisti> er
00:27:19 <kallisti> x64
00:27:41 <colloinkgravisom> Phantom_Hoover: Obviously given a black box homespring-without-null-program interpreter you can't deduce the behaviour; it's a property of the mathematical specification.
00:27:50 <colloinkgravisom> kallisti: Haskell's threading is really good.
00:28:04 <kallisti> colloinkgravisom: that wasn't the interesting art.
00:28:04 <Phantom_Hoover> Null program does whatever. (inst:insts) is the base case.
00:28:07 <kallisti> +p
00:28:17 <kallisti> colloinkgravisom: I was wondering why Erlang wins in that case.
00:28:36 <colloinkgravisom> kallisti: Erlang also has really good threading.
00:28:41 <colloinkgravisom> Phantom_Hoover: What?
00:28:45 <colloinkgravisom> Phantom_Hoover: You don't know what a base case is.
00:28:49 <colloinkgravisom> :t foldr
00:28:50 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> b
00:28:54 <colloinkgravisom> Second argument is base case.
00:28:57 <colloinkgravisom> First argument is induction step.
00:29:03 <Phantom_Hoover> colloinkgravisom, I know how inductive definitions and recursion work, thank you very much.
00:29:14 <colloinkgravisom> Phantom_Hoover: Yes, so don't make statements in direct contradiction of those.
00:29:47 <kallisti> colloinkgravisom: the same Erlang program runs much slower on all the other machines. And then suddenly is the fastest on this particular machine.
00:29:50 -!- cheater has quit (Ping timeout: 240 seconds).
00:29:58 <colloinkgravisom> kallisti: Oh. I parsed your statement differently.
00:29:58 <Phantom_Hoover> But you seem to be picking one specific model and saying it's the only legitimate one, in such a way that I've lost track completely of what I was saying.
00:29:59 <kallisti> this is still pretty strange to me, regardless of "X language has good threading"
00:30:04 <colloinkgravisom> kallisti: Are the others >1-core?
00:30:10 <colloinkgravisom> I think Erlang's VM is single-threaded.
00:30:18 <kallisti> colloinkgravisom: one other is 1-core.
00:30:19 <colloinkgravisom> Phantom_Hoover: No, you're just not really making any sense.
00:30:30 <colloinkgravisom> Phantom_Hoover: Of course you can deduce the behaviour of the null program given a specification of the language.
00:30:33 <kallisti> http://shootout.alioth.debian.org/u32/performance.php?test=threadring
00:30:38 <colloinkgravisom> Homespring's spec specifically says that the null program is handled specially.
00:30:42 <kallisti> vs
00:30:43 <kallisti> http://shootout.alioth.debian.org/u64/performance.php?test=threadring
00:30:45 <colloinkgravisom> Specially, i.e. not according to the rules defined elsewhere.
00:30:48 <colloinkgravisom> kallisti: Dunno then.
00:30:52 <Phantom_Hoover> colloinkgravisom, if the language doesn't specify what the null program does, you can't deduce that.
00:31:47 <colloinkgravisom> Phantom_Hoover: No shit?
00:32:01 <Phantom_Hoover> This is basically what I am saying?
00:32:03 <kallisti> colloinkgravisom: the only difference is that it's 64-bit. Could Erlang be faster on a 64-bit machine for some reason?
00:32:25 <colloinkgravisom> Phantom_Hoover: The point is that any reasonable definition will, and you haven't given any evidence that Homespring's spec doesn't, so it just seems like you're complaining about a perfectly valid use of "special case" that the original document itself uses for the sake of it.
00:32:27 <colloinkgravisom> kallisti: Maybe.
00:32:42 <kallisti> *single-threaded 64-bit
00:32:50 <kallisti> s/single-threaded/one core/
00:33:01 <Phantom_Hoover> I have once again lost track of what you're saying completely.
00:33:53 <zzo38> "Hoyle On Poker: A Dead White Guy Teaches You How To Think Like One"
00:34:36 <zzo38> Wild cards must be less than seventeen per deck.
00:36:43 <kallisti> colloinkgravisom: also, Haskell performs comparatively poorly on another threading task. http://shootout.alioth.debian.org/u64q/performance.php?test=chameneosredux
00:38:38 <kallisti> but I'm not really sure what "symmetrical thread rendezvous" is
00:38:43 <kallisti> sounds romantic.
00:39:04 <kallisti> maybe Haskell is not very good at love? :(
00:39:26 <Vorpal> I think I need lighter headphones in the future.
00:39:53 <Vorpal> err, wrong channel
00:40:39 <colloinkgravisom> I think I need lighter headphones in the future.
00:40:57 <Sgeo> Err, wrong person
00:41:17 <Vorpal> lol
00:41:46 <kallisti> "allocate and deallocate many binary trees" so you have to force them to be garbage collected in Haskell?
00:41:54 <Vorpal> colloinkgravisom, /anyway/ the reason was that I just had my headphones on for like 5 hours straight due to watching a live stream and then listening to a podcast
00:41:56 <kallisti> -- normally you would ensure the branches are lazy, but this benchmark
00:41:56 <kallisti> -- requires strict allocation.
00:41:57 <kallisti> ah
00:42:10 <Vorpal> colloinkgravisom, but I didn't intend to discuss that in this channel
00:42:17 <Vorpal> colloinkgravisom, it would be so sgeo to discuss that
00:42:18 -!- cheater has joined.
00:43:10 <colloinkgravisom> Vorpal: It's kind of beautiful that "Sgeo" and "Vorpal" are both adjectives now.
00:43:23 <colloinkgravisom> My name is too long to fall prey to such slander.
00:43:49 <colloinkgravisom> kallisti: The Haskell benchmark game programs would be better if the maintainer wasn't biased like that :)
00:44:03 <colloinkgravisom> TBH, I would just not restrict the algorithms at all.
00:44:15 <colloinkgravisom> If someone comes up with a massively better algorithm, is it really unreasonable to expect everyone else to copy it?
00:44:57 <kallisti> a lot of these benchmarks are DNA-related
00:45:10 <kallisti> this should be called "How well programs compute DNA stuff"
00:45:19 <Vorpal> colloinkgravisom, heh
00:45:26 <Madoka-Kaname> More like "how well programs compute string manipulation"
00:45:38 <Vorpal> <colloinkgravisom> My name is too long to fall prey to such slander. <-- that is a very elliott thing to say
00:46:19 <colloinkgravisom> Vorpal: Shut up you colloinkgravisom piece of shit.
00:46:26 <colloinkgravisom> You're so Phantom_Hoover.
00:46:26 <kallisti> colloinkgravisom: I guess it's a testament to JAva's garbage collection that it actually performs better than C++ on the allocate/deallocate binary trees.
00:46:31 <colloinkgravisom> JAva.
00:46:42 <Phantom_Hoover> How might one be Phantom_Hoover.
00:46:56 <Phantom_Hoover> Does it involve being incredibly witty, charming, suave and good-looking?
00:47:07 <colloinkgravisom> Phantom_Hoover: No, just gay and vampiric.
00:47:09 <colloinkgravisom> Like Twilight.
00:47:37 <kallisti> Phantom_Hoover: witty, charming, suave, and good-looking is more about being kallisti, really.
00:47:44 <kallisti> literally "to the fairest"
00:48:14 <kallisti> or well, Wikipedia says "to the most beautiful" but that's because Wikipedia is racist.
00:51:16 -!- hagb4rd2 has joined.
00:51:36 <kallisti> they should add another parameter to the language benchmark game, where they image the programmer's brain while programming and quantify how much joy they are experiencing.
00:52:45 <kallisti> PHP would rank worst.
00:53:23 -!- calamari has joined.
00:53:30 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:55:17 <kallisti> Python would rank releatively high because lolzealots. All male Ruby fans would actually have erections while programming.
00:57:18 <kallisti> I guess that's unfair to say though, because all languages have this inexplicable overzealous following (except maybe PHP, no one actually likes PHP)
00:57:33 <Sgeo> kallisti, even the people in ##php don't like PHP
00:58:24 <kallisti> Sgeo: Just wait until you can subscript arbitrary expressions.
00:58:31 <kallisti> then they'll be like "OMG SO EXPRESSIVE"
00:58:45 <zzo38> Yes, it is true; I don't really like PHP either.
01:00:19 <kallisti> Sgeo: didn't they even give it a name or something?
01:00:23 <kallisti> like it's something special.
01:00:57 <colloinkgravisom> nothing is as special as the paamayim nekudotayim
01:01:02 <colloinkgravisom> http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php
01:01:19 <colloinkgravisom> which actually appears in error messages
01:01:21 <colloinkgravisom> with no hint as to what it is at all
01:02:44 <kallisti> huh.
01:03:13 <zzo38> "Paamayim Nekudotayim" is double colon
01:03:18 <kallisti> I guess perl has some equally colorful terminology.
01:03:49 <kallisti> can't call method on non-blessed hashref or whatever.
01:04:15 <Sgeo> kallisti, yes
01:04:39 <Sgeo> I know the abbreviation is FAD
01:05:05 <Sgeo> <TML> Sgeo: !+fad
01:05:05 <Sgeo> <php-bot> Sgeo, Want to be able to access array elements like this: function()[0]? It's called function array dereferencing, and it's coming in PHP 5.4.
01:05:06 -!- iconmaster has quit (Quit: DAMN YOU LIGHTLINK).
01:05:23 <colloinkgravisom> which is on rc4!!!
01:07:00 <Sgeo> They are now talking about disadvantages of FAD
01:07:03 <Sgeo> Particularly abuse
01:07:06 <kallisti> lol
01:07:14 <Sgeo> "is dreading having to debug code that looks like $foo()->bar()[1]->baz('bat')[0]"
01:07:26 <kallisti> wow
01:07:27 <kallisti> really?
01:07:46 <kallisti> PHP programmers are worse than Python programs when it comes to aversion to nested expressions, I guess.
01:08:25 <colloinkgravisom> Sgeo: don't tell them about functional programming
01:08:29 <colloinkgravisom> (no, really: don't)
01:08:46 <kallisti> or Perl.
01:08:49 <kallisti> don't tell them about Perl.
01:09:11 <colloinkgravisom> kallisti: "PHP is language defined by a tool built by some guys who saw a Perl interpreter once and thought it was really neat. They thought that it would just rock to make a similar tool that lived in a webserver and whose default operation was print."
01:09:35 <kallisti> where is this from.
01:09:55 <colloinkgravisom> http://catseye.tc/about/php.html
01:10:32 <kallisti> "One of the most interesting aspects [of PHP version 2] included the way while loops were implemented. The hand-crafted lexical scanner would go through the script and when it hit the while keyword it would remember its position in the file. At the end of the loop, the file pointer sought back to the saved position, and the whole loop was reread and re-executed."
01:10:37 <kallisti> loooool
01:13:37 <NihilistDandy> "I would have to say the single greatest software engineering achievement of PHP is how it taught us all that programming should never be done without having constantly within arm's reach a book with a photo of the author's face on it."
01:14:01 <NihilistDandy> This is why Haskell hasn't caught on, yet. Unless Bonus is an elephant
01:15:55 <kallisti> it actually kind of blows my mind that PHP is faster than Perl in the benchmark game.
01:16:30 <NihilistDandy> Benchmarks are only a good measure of surprise
01:17:00 <colloinkgravisom> `addquote <NihilistDandy> Benchmarks are only a good measure of surprise
01:17:03 <HackEgo> 783) <NihilistDandy> Benchmarks are only a good measure of surprise
01:17:07 <zzo38> PHP is still slow. Even though, some of my programs are PHP implementation of other programming language, such as FurryScript and Icoruma. That makes it very slow. I might eventually rewrite Icoruma in C or Haskell.
01:17:16 <colloinkgravisom> ("A good measure of only surprise" would haev been better, though.)
01:17:37 * NihilistDandy shrugs
01:18:32 <colloinkgravisom> *have
01:19:57 <NihilistDandy> http://catseye.tc/about/cplusplus.html
01:20:08 <NihilistDandy> Gratuitous expertise is a phrase I will be using daily from now on
01:20:19 <kallisti> I was hoping for more than "mostly harmless" on "About Python"
01:20:20 <NihilistDandy> I may put that on a résumé
01:21:25 <colloinkgravisom> kallisti: Can you think of anything *better* to say about Python?
01:21:43 <NihilistDandy> "Perl is what happens when you play Katamari Damacy with the Unix toolchain."
01:22:13 <kallisti> this is an accurate description.
01:23:50 <zzo38> Yet, the IRC client I am using is written in PHP and it runs sufficiently fast.
01:24:06 <zzo38> (It processes every single keystroke, even.)
01:24:30 <kallisti> hax
01:24:39 <NihilistDandy> Yeah, clients that process every kysroke are overtd
01:25:13 <colloinkgravisom> :D
01:25:44 <zzo38> Well, it has to process every keystroke in order to work.
01:25:54 <Phantom_Hoover> <colloinkgravisom> kallisti: Can you think of anything *better* to say about Python?
01:26:04 <Phantom_Hoover> Something something something Sierpinski numbers?
01:26:31 <NihilistDandy> And Scheme's better at that, anyway
01:27:02 <colloinkgravisom> Phantom_Hoover: Wait, how do they relate to Python?
01:27:09 <NihilistDandy> I think I'm having an acid flashback
01:27:28 <colloinkgravisom> NihilistDandy: Better at what?
01:27:31 <Phantom_Hoover> colloinkgravisom, they were invented as a result of an amusingly stupid example in the Python docs.
01:27:54 <Phantom_Hoover> It mentioned that it allowed you to add a set of numbers between C and R, and we were wondering what that would be.
01:27:56 -!- cheater has quit (Read error: Operation timed out).
01:28:12 <NihilistDandy> colloinkgravisom: Sierpinski numbers :D
01:28:47 <colloinkgravisom> Phantom_Hoover: Ohh, right.
01:29:11 <colloinkgravisom> Phantom_Hoover: Are the Sierpinski numbers actually closed under anything, though.
01:29:15 <Phantom_Hoover> Nope.
01:29:28 <colloinkgravisom> Phantom_Hoover: How... good?
01:29:49 <Phantom_Hoover> Weeeellll, I don't recall if I actually proved that they weren't closed under multiplication, but I strongly suspect they weren't.
01:42:54 -!- itidus21 has joined.
01:43:14 -!- cheater has joined.
01:51:19 <colloinkgravisom> Gregor: What fun things can I do with this loltablet :P
01:51:28 <colloinkgravisom> I have absolutely no idea what to do with it.
01:57:02 <kallisti> http://www.cracked.com/article_18983_5-complaints-about-modern-life-that-are-statistically-b.s..html
01:57:14 <kallisti> colloinkgravisom: turn it into a touchscreen synthesizer.
01:57:20 <colloinkgravisom> kallisti: is that an obnoxious or non-obnoxious Cracked article.
01:57:25 <kallisti> non-obnoxious
01:57:26 <colloinkgravisom> Also dude the screen is only 7 inches
01:57:35 <colloinkgravisom> But developing Haskell stuff on it could be cool I guess.
01:57:39 <kallisti> colloinkgravisom: optimize for efficient screen space use.
01:57:47 <kallisti> when designing your synthesizer.
01:58:17 <colloinkgravisom> Phantom_Hoover: Pls verify veracity of obnoxiousness claim,.
01:58:20 <colloinkgravisom> *clam.
01:58:35 <kallisti> colloinkgravisom: it's like, informative and stuff.
02:00:33 <Gregor> colloinkgravisom: That's kinda the issue, isn't it.
02:01:17 <colloinkgravisom> Gregor: SO TEMPTED TO INSTALL INFERNO ON IT
02:01:35 <colloinkgravisom> Sorry, *HELLAPHONE
02:01:37 <colloinkgravisom> Hellablet.
02:01:59 <kallisti> sweet mac book pro and hellablet
02:04:46 <colloinkgravisom> kallisti: Sorry I am ragequitting this article because they're dissing Sugar Sugar which is the BEST WORST SONG EVER.
02:05:14 <Phantom_Hoover> <colloinkgravisom> Phantom_Hoover: Pls verify veracity of obnoxiousness claim,.
02:05:19 <Phantom_Hoover> Non-obnoxious.
02:05:26 <colloinkgravisom> "[Rock music] is deplorable. It is tribal. And it is from America. It follows ragtime, blues, jazz, hot cha-cha and the boogie-woogie, which surely originated in the jungle. We sometimes wonder whether this is the negro's revenge."
02:05:26 <colloinkgravisom> Read more: 5 Complaints About Modern Life (That Are Statistically B.S.) | Cracked.com http://www.cracked.com/article_18983_5-complaints-about-modern-life-that-are-statistically-b.s._p2.html#ixzz1hn6RlHL9
02:05:31 <colloinkgravisom> OK they won me back over with Daily Mail quotes.
02:05:32 <colloinkgravisom> ARGH
02:05:32 <colloinkgravisom> YOU
02:05:33 <colloinkgravisom> FUCKING
02:05:33 <colloinkgravisom> COPY PASTE
02:05:35 <colloinkgravisom> SCRIPT
02:05:35 <colloinkgravisom> ASS
02:05:37 <colloinkgravisom> OF
02:05:39 <colloinkgravisom> SHIT
02:05:52 <zzo38> Put GPS+Astrolog in that computer
02:05:56 <colloinkgravisom> zzo38: ok
02:06:32 <zzo38> (Astrolog has no GPS input; but source-codes is available (although not free-software/open-source, probably due to licensing issues with other parts it was combined with), so it could be modified to have it)
02:07:15 * Phantom_Hoover → sleep
02:07:16 -!- Phantom_Hoover has quit (Quit: Leaving).
02:07:16 <kallisti> colloinkgravisom: but they're dissing Sugar Sugar while BRINGING UP AN INTERESTING POINT ABOUT POPULAR MUSIC COMPARED TO TIMELESS CLASSICS.
02:07:21 -!- derdon has quit (Remote host closed the connection).
02:07:24 <zzo38> Normally, if you push "n" it uses the current date/time and takes the coordinates from the default setting (which you can change), but if it have GPS, then it can be made to, instead, take the coordinates from the GPS.
02:07:41 <zzo38> Possibly it can take the time from the GPS too, if it is possible to do so.
02:08:02 <colloinkgravisom> I wonder if GPS does give time info.
02:09:06 <kallisti> colloinkgravisom: do you like Radiohead?
02:09:06 <zzo38> Astrolog even has a world map on it, and the ability to draw on any chart. Maybe it will sometimes be useful with that kind of computer.
02:09:19 * kallisti is one of those asshole radiohead fans.
02:10:01 <colloinkgravisom> Asshole Radiohead: famous asshole, band.
02:10:13 <colloinkgravisom> Their asses are holes, their radios heads.
02:10:18 <colloinkgravisom> Their surgeons general.
02:10:39 <kallisti> colloinkgravisom: that's a sweet ass-car
02:10:53 <colloinkgravisom> More like a sweet xk-cd.
02:11:02 <kallisti> well, yes.
02:11:23 <kallisti> it's also the only one I would describe as "GOOMH Randall"
02:11:41 <colloinkgravisom> Describing anything like that is unforgivable sin.
02:12:12 <kallisti> colloinkgravisom: recall that it was actually your linking to xkcdsucks that made me familiar with the term
02:12:15 <kallisti> so you can blame yourself.
02:13:30 * colloinkgravisom is unable to read "GOOMH" as anything but a single word "goomh" pronounced "goomh".
02:13:35 <kallisti> same.
02:13:43 <kallisti> GOOMH elliott.
02:13:55 <zzo38> Are you able to make Astrolog with GPS input on Android based computer?
02:13:57 <colloinkgravisom> Goomh Colloinkgravisom.
02:14:00 <colloinkgravisom> zzo38: Probably?
02:14:05 <colloinkgravisom> Isn't Astrolog Windows-only.
02:14:22 <kallisti> `words --eng-gb --finnish 50
02:14:28 <HackEgo> absorman poilem munifeby isopergekry fponn poppim fnfpeach pera lolustam vina nouthangeke sorrbv quirallato scsista elwinderiut noure sekened artaterive laiser lysoidassur bestoarvoimmat seueatteell yhemprobo mowned pros cemenen latiii buryhmivationikiot ski suutorimen her virarchesf lenrecollessum wybui alencziansagni iljaaotta direämmembreet eldobbatii äußerdidalwa old fennari törkeämmte ihorj firmuseva deanamremque
02:14:42 <kallisti> fnfpeach
02:14:56 <kallisti> laiser
02:15:11 <zzo38> No, Astrolog is also available for DOS and UNIX as well as Windows.
02:15:57 <kallisti> Sgeo: you've been lazy with the direämmembreets lately
02:16:44 <colloinkgravisom> fennari
02:16:50 <kallisti> you should have known that, while I was making fun of you constantly for updating us about MSPA, I actually used it as a source of information at the same time.
02:16:50 <colloinkgravisom> ihorj: international house of real jews
02:17:18 <zzo38> Will you need a compiler C into Java to do so?
02:18:25 * kallisti imagines the horribleness of that.
02:18:41 <colloinkgravisom> zzo38: No, Android runs Linux, it just has a srtipped down libc and few traditional tools.
02:18:51 <Sgeo> kallisti, I don't see any updates
02:19:00 <colloinkgravisom> But the UI stuff is Java, so you have to write some Java glue code, presumably with JNI or whatever.
02:19:01 <Sgeo> kallisti, and I'm not always by IRC
02:19:01 <kallisti> Sgeo: you missed the last one, or didn't ping me or something
02:19:04 <colloinkgravisom> I know people do Android stuff in C.
02:19:05 <kallisti> Sgeo: jerk
02:19:13 <Sgeo> kallisti, what, you want me to write a bot?
02:19:21 <kallisti> I want you to do whatever it takes
02:19:23 <kallisti> to inform me
02:19:25 <kallisti> eventually
02:19:29 <kallisti> not necessarily instantaneously
02:19:33 <kallisti> but within a reasonable timeframe.
02:19:36 <kallisti> or I will be upset.
02:19:40 <kallisti> and think of you as a lesser person.
02:19:52 <colloinkgravisom> Wow, people actually do coffee enemas.
02:19:57 <kallisti> colloinkgravisom: yep
02:20:18 <zzo38> Is there a standard processor code or do you need to compile native code differently for different devices?
02:20:36 <Sgeo> kallisti, ok, when I'm updated away from IRC, I'll try to remember to update #esoteric eventually
02:20:40 <colloinkgravisom> zzo38: I don't think there's any actual Android device that runs something that isn't ARM.
02:20:43 <colloinkgravisom> IIRC the x86 port isn't really official.
02:21:07 <kallisti> colloinkgravisom: also: sears catalogs used to sell vibrators.
02:21:57 <kallisti> One of the first vibrators was a steam-powered device called the "Manipulator", which was created by American physician George Taylor, M.D.[2] This machine was a rather awkward device, but was still heralded as some relief for the doctors who found themselves suffering from fatigued wrists and hands.
02:22:03 <kallisti> looooool
02:22:03 <kallisti> I find this notion hilarious.
02:23:04 <kallisti> The "pelvic massage" was especially common in the treatment of female hysteria during the Victorian Era, as the point of such manipulation was to cause "hysterical paroxysm" (orgasm) in the patient. However, not only did they regard the "vulvular stimulation" required as having nothing to do with sex, but reportedly found it time-consuming and hard work.
02:23:09 <kallisti> we've come so far.
02:31:56 <zzo38> There are unofficial Android variants such as Replicant (which removes all proprietary Google stuff from the system), so will many softwares work with it?
02:32:26 <colloinkgravisom> probably
02:39:10 -!- androidgravisom has joined.
02:42:31 <androidgravisom> I'm going to buy the Wolfram Alpha app and NOBODY CAN STOP ME
02:42:45 <monqy> oh no
02:43:12 <androidgravisom> Apart from kallisti or someone who I guess could theoretically talk me out of it.
02:44:00 <androidgravisom> Or the battery running out which it seems like it might soonish.
02:44:28 <kallisti> androidgravisom: wat
02:44:30 <kallisti> what the fuck
02:44:32 <kallisti> are you even thinking
02:44:35 <kallisti> why would you spend MONEY
02:44:37 <kallisti> on a THING
02:44:39 <kallisti> that
02:44:44 <kallisti> is a) not going to be all that useful to you
02:44:47 <kallisti> b) freely available on the internet
02:45:57 <androidgravisom> Um dude it will let me calculate the number of calories in one solar mass of hamburgers with a COMPLETELY STREAMLINED USER INTERFACE
02:46:12 <androidgravisom> Q.E.D.?
02:46:31 <androidgravisom> Also it's under 2 pounds.
02:47:18 <kallisti> two pounds too many.
02:47:52 <androidgravisom> I said under; it's like 1 pound 20 pence.
02:48:20 <kallisti> not worth it.
02:48:41 <androidgravisom> You're not worth it.
02:49:13 <androidgravisom> NBC gig grill jerk used Maghull cashbox shriek org leash go padraig gothic etc period
02:49:24 <androidgravisom> JFK Fagan finish Dougherty offtrack habitation orthodOX captor disposal
02:49:41 <androidgravisom> Stream of Bruno Garth FL JFK fashion poster ricochet fibrinogen hard SC wb JFK
02:49:55 <kallisti> hm W|A has improved a little bit since last I used it to do calculus homework for me.
02:50:18 <androidgravisom> Fibrinogen is a word?
02:51:53 <kallisti> wtf "hepatisis patient height" is a valid query.
02:52:05 <kallisti> *hepatitis
02:52:59 <androidgravisom> But not "your mom's girth".
02:53:28 <androidgravisom> That doesn't fit in a bignum.
02:54:03 <androidgravisom> I should go to sleep soon.
02:54:59 -!- cheater has quit (Ping timeout: 255 seconds).
02:59:48 <kallisti> Result: 1.1×10^-26 kW/Cal (kilowatts per dietary Calorie) (2007 estimate)
03:00:05 <kallisti> when I asked wolfram alpha "Germany electricity consumption / calories in a solar mass of Burger King hamburgers"
03:00:09 <androidgravisom> Oh Lord.
03:00:21 <androidgravisom> The screen is glitching.
03:02:56 -!- androidgravisom has quit (Remote host closed the connection).
03:06:45 <Vorpal> kallisti, wow
03:08:12 -!- incomprehensibly has quit (Quit: Leaving.).
03:08:39 -!- cheater has joined.
03:09:11 <kallisti> also that's apparently 2.73e-27 hertz?? what?
03:09:18 <Vorpal> kallisti, what is?
03:09:21 <kallisti> that figure
03:09:29 <Vorpal> how can it be in hertz?
03:09:31 <kallisti> maybe I misunderstand the "unit conversions" section.
03:09:32 <Vorpal> that makes no sense
03:09:52 <kallisti> http://www.wolframalpha.com/input/?i=Germany+electricity+consumption+%2F+calories+in+a+solar+mass+of+Burger+King+hamburgers
03:09:57 * Vorpal looks
03:10:11 <Vorpal> You have: kW
03:10:11 <Vorpal> You want:
03:10:11 <Vorpal> Definition: kilo W = 1000 kg m^2 / s^3
03:10:13 <Vorpal> well
03:10:16 <Vorpal> there are seconds there?
03:10:29 <Vorpal> You have: cal
03:10:29 <Vorpal> You want:
03:10:29 <Vorpal> Definition: calorie = cal_IT = 4.1868 J = 4.1868 kg m^2 / s^2
03:10:30 <Vorpal> and there
03:10:48 <Vorpal> I don't know if they cancel each other out?
03:10:52 <zzo38> Once someone entered "how much beer can i drink" and it came up with an answer in units of inches to the sixth power. Now it gives different output because it interprets the input differently. But in both cases it is not what is intended.
03:10:57 <kallisti> ah yes
03:10:58 <Vorpal> You have: kW / cal
03:10:58 <Vorpal> You want:
03:10:58 <Vorpal> Definition: 238.8459 / s
03:10:59 <Vorpal> oh yeah
03:10:59 <kallisti> they do.
03:11:02 <kallisti> when you divide
03:11:05 <Vorpal> kallisti, indeed
03:11:07 <kallisti> that leaves you with s^-1
03:11:13 <kallisti> which is hertz
03:11:17 <Vorpal> indeed
03:11:31 <Vorpal> kallisti, for these things units(1) is better than Wolfram Alpha :P
03:11:40 <kallisti> now to interpret what the hell that means.
03:11:57 <zzo38> But how it gets another different answer from what it was last time I tried before.
03:12:02 <Vorpal> kallisti, I don't think the whole sodding thing means anything :P
03:12:08 * kallisti thinks about hertz and how they could relate to german electricity consumption per calories in a solar mass of burger king hamburgers
03:12:34 <Vorpal> kallisti, shouldn't you get an unit-less ratio out of this?
03:12:41 <kallisti> no
03:12:46 <Vorpal> why not
03:12:46 <kallisti> both of those quantities have units.
03:12:51 <Vorpal> well yes
03:12:55 <kallisti> that are not directly inverse.
03:13:01 <kallisti> therefore there is a unit.
03:13:05 <kallisti> in the result of dividing them.
03:13:12 <zzo38> It asked if I wanted to make it interpret it as a multiplication, so I selected that option and it came up with an imaginary number of square drinks (I don't know what kind of unit that is?)
03:13:14 <kallisti> er, not directly equal rather
03:13:17 <kallisti> since you're dividing
03:13:24 <kallisti> if you were multiplying inverses you would get a unitless quantity.
03:13:25 <Vorpal> kallisti, oh right, is that "german electricity consumption per year"?
03:13:35 -!- androidgravisom has joined.
03:13:51 <kallisti> KW-hours per year
03:13:56 <androidgravisom> kallisti: http://stackoverflow.com/questions/8651316/is-there-a-functional-representation-for-strict-evaluation
03:14:06 <Vorpal> and kWh just means some number of J
03:14:18 <zzo38> And it still cannot compute ecliptic coordinates
03:14:29 <Vorpal> and cal translates into J as well iirc
03:14:31 <Vorpal> which mean J/y / J
03:14:34 <zzo38> (Even though their blog once mentions ecliptic coordinates)
03:14:39 <Vorpal> which cancels out to give hertz
03:14:41 <Vorpal> indeed
03:15:42 <kallisti> androidgravisom: well? you better get to answering
03:15:47 <kallisti> if you want your SO rep to go up.
03:16:03 <kallisti> you should explicitly mention how seq has side-effects.
03:16:08 <kallisti> this is important.
03:16:09 <androidgravisom> <Vorpal> kallisti, for these things units(1) is better than Wolfram Alpha :P
03:16:16 <androidgravisom> Drink!!!!!
03:16:18 <kallisti> lol
03:16:20 <androidgravisom> Seem
03:16:21 <kallisti> Drink!!!!!!
03:16:22 <androidgravisom> Seem
03:16:23 <Vorpal> androidgravisom, at least I find it easier to use
03:16:25 <androidgravisom> Seem
03:16:28 <androidgravisom> Seem
03:16:29 <Vorpal> also I don't get the reference
03:16:31 <androidgravisom> Erm
03:16:36 <androidgravisom> Frink
03:16:39 <kallisti> lol
03:16:42 <Vorpal> ah
03:16:42 <androidgravisom> Finally.
03:16:44 <Vorpal> frink
03:16:45 <Vorpal> right
03:16:51 <androidgravisom> Seem!
03:16:52 <Vorpal> androidgravisom, seem? really?
03:16:57 <androidgravisom> Yes.
03:17:11 <Vorpal> androidgravisom, I guess that keyboard app wasn't that good when you type names of things
03:17:24 <androidgravisom> For "erm".
03:17:28 -!- DCliche has joined.
03:17:39 <androidgravisom> The paths are almost identical, so...
03:17:46 <Vorpal> right
03:17:47 <kallisti> `frink kW/kilocalorie
03:17:51 <androidgravisom> But it's really quite lovely in general
03:17:56 <Vorpal> right
03:18:00 <kallisti> why is hackego so slooooowww...
03:18:00 <HackEgo> 2500/10467 (approx. 0.23884589662749595) s^-1 (frequency)
03:18:08 <Vorpal> kallisti, because iirc it runs on codu
03:18:18 <Vorpal> which is slooow
03:18:22 <kallisti> `run time frink kW/kilocalorie
03:18:34 <HackEgo> 2500/10467 (approx. 0.23884589662749595) s^-1 (frequency) \ \ real.0m8.490s \ user 0m8.660s \ sys.0m0.250s
03:18:39 <androidgravisom> Frink is slow to start up to boot
03:18:57 <Vorpal> what else can frink do?
03:19:03 <androidgravisom> Everything.
03:19:05 <kallisti> runs in 3 seconds on my machine.
03:19:08 <Vorpal> apart from that?
03:19:09 <androidgravisom> Seriously.
03:19:11 <kallisti> user time.
03:19:22 <androidgravisom> Google the dogs, they're amazing
03:19:26 <Vorpal> is it in ubuntu repos?
03:19:26 <androidgravisom> Lol
03:19:34 <kallisti> no
03:19:41 <Vorpal> right, got a link then?
03:19:47 <kallisti> http://google.com
03:19:48 <zzo38> I wanted bohlen-pierce music, so I typed in "bohlen-pierce" and its answer is 7646 km
03:20:00 <kallisti> androidgravisom: don't worry, I've got this covered.
03:20:18 <kallisti> androidgravisom: you can save yourself from trying to use your shitty keyboard to talk to Vorpal.
03:20:21 <androidgravisom> Vorpal: no, it's (the single best) closed source thing I've ever used
03:20:32 <androidgravisom> Thankfully it's fully extensible.
03:20:33 -!- Klisz has quit (Read error: Operation timed out).
03:20:33 <Vorpal> oh closed source, right
03:20:38 -!- DCliche has changed nick to Klisz.
03:20:51 <kallisti> androidgravisom: better than dwarf fortress?
03:20:53 <Vorpal> 64-bit version around? Or do I need to mess with 32-bit libraries?
03:21:00 <androidgravisom> kallisti: fsvo sorry
03:21:03 <androidgravisom> Sorry
03:21:06 <androidgravisom> Sorry
03:21:08 <androidgravisom> Sit
03:21:10 <kallisti> lol
03:21:11 <Vorpal> heh
03:21:23 <Vorpal> androidgravisom, that typing thing sucks I think
03:21:23 <androidgravisom> Virtual: it's java
03:21:32 <Vorpal> virtual? really?
03:21:32 -!- cheater has quit (Ping timeout: 276 seconds).
03:21:33 <Vorpal> who is that
03:21:42 <androidgravisom> Nah, it's fifty times better than iPhone keyboard
03:21:46 <Vorpal> well okay
03:21:54 <kallisti> my blackberry keyboard is awesome.
03:22:00 <androidgravisom> It doesn't know your nicks though
03:22:04 <androidgravisom> :p
03:22:06 <Vorpal> androidgravisom, but compare to an actual keyboard. It is less bulky sure, but typing accuracy seems terrible
03:22:17 <androidgravisom> Only because I'm going way too far
03:22:22 <androidgravisom> Fast
03:22:31 <Vorpal> androidgravisom, I should so change to a nick like ][_a328ds
03:22:32 <androidgravisom> I only started using it yesterday
03:22:46 <zzo38> It seems wrong so I entered "what is wrong with you" and its answer is "Human Discourse: Additional functionality for this topic is under development..."
03:23:18 <androidgravisom> Remember when I used to show incoherent babble with my iPhone every night?
03:23:28 <Vorpal> androidgravisom, I tried to forget
03:23:31 <androidgravisom> Now I use a computer instead.
03:23:42 <androidgravisom> Windsor.
03:23:46 <androidgravisom> Windsor.
03:23:49 <Vorpal> ....
03:23:51 <androidgravisom> Windsor.
03:23:57 <Vorpal> come on
03:23:57 <androidgravisom> Timeout
03:24:02 <zzo38> So now make up a open-source/free-software version of a similar thing, so that everyone can correct it if it has these kind of problem
03:24:07 <kallisti> lol
03:24:29 -!- PatashuXantheres has joined.
03:24:51 <Vorpal> androidgravisom, idea: read line then decide if you actually want to send it.
03:24:53 <Vorpal> (You might even if it is wrong, for the comedic value. I assume that is what you are doing actually)
03:25:05 <androidgravisom> Btw I'm deliberately trying to say things I know won't be in its dictionary for comedy purposes
03:25:15 <androidgravisom> :p
03:25:18 <Vorpal> figures
03:25:29 <Vorpal> androidgravisom, what were you trying to say instead of "Windsor"?
03:25:35 <Vorpal> actually "timeout"?
03:25:40 <androidgravisom> Ringgit.
03:25:43 <androidgravisom> Sigh
03:25:45 <Vorpal> no
03:25:49 <androidgravisom> Rimshot
03:25:57 <Vorpal> Ringgit is not even a real word
03:26:11 <Vorpal> how could that be in the dictionary
03:26:15 <Vorpal> that makes /no/ sense
03:26:16 <androidgravisom> That sigh was actually an argh
03:26:22 <Vorpal> hah
03:26:46 <Vorpal> oh god, I'm actually laughing out loud thanks to this but there are people sleeping in the next room
03:26:47 <Vorpal> :(
03:26:50 -!- Patashu has quit (Ping timeout: 240 seconds).
03:27:10 <androidgravisom> Just sooooo playing for the comedic presuppose please
03:27:31 <Vorpal> ?
03:27:33 <Vorpal> what?
03:27:39 <androidgravisom> Sooooo? SERIOUSLY?
03:27:43 <Vorpal> presuppose? seriously?
03:27:51 <androidgravisom> That's not a word exclamation marks
03:28:08 <Vorpal> heh
03:28:18 <Vorpal> it wrote out "exclamation marks"?
03:28:22 <kallisti> `words --eng-all 25
03:28:26 <androidgravisom> No, admittedly
03:28:29 <HackEgo> formode postaft prepa eul grit ambiecurr olbau zre poult rich nob ping flyiatherasyah curly hratysell blach sedenting ceri ocapu uni vexegel colefficefn bach yol baitj
03:28:29 <androidgravisom> I did that
03:28:29 <Vorpal> androidgravisom, aww
03:28:53 <kallisti> what would cause the real time to faster than the user time.
03:28:57 <androidgravisom> Let me try and type that word output
03:28:57 <Vorpal> androidgravisom, "<androidgravisom> Just sooooo playing for the comedic presuppose please" <-- what /were/ you trying to say?
03:29:11 <Vorpal> type that word output?
03:29:14 <Vorpal> right
03:29:56 <kallisti> "User+Sys will tell you how much actual CPU time your process used. Note that this is across all CPUs, so if the process has multiple threads it could potentially exceed the wall clock time reported by Real."
03:30:00 <kallisti> ah
03:30:09 <androidgravisom> Dormouse p post period will get it Albrecht play are our rich Nov ping gooseflesh curly hardshell blah assenting CEO I pappy uni verbal Colleen Bach tool batik
03:30:17 <androidgravisom> GOOSEFLESH
03:30:23 <Vorpal> androidgravisom, ...
03:30:50 <Vorpal> androidgravisom, this is too absurd to be funny. Because there is no way I can even guess what was meant
03:31:20 <androidgravisom> I was reproducing the output of the words program
03:31:21 <Vorpal> androidgravisom, and gooseflesh seems fairly reasonable
03:31:26 <androidgravisom> Badly.
03:31:29 <Vorpal> androidgravisom, ah
03:32:07 <Vorpal> androidgravisom, I have to say a real keyboard is superior. Just imagine writing haskell code with that thing of yours
03:32:12 <Vorpal> that would just be terrible
03:32:22 <Vorpal> or any sort of code even
03:32:37 <androidgravisom> Not a real keyboard that would fit into 7 inches
03:32:38 <monqy> cobol?
03:32:46 <Vorpal> androidgravisom, well obviously
03:32:56 <androidgravisom> Anyway, it's just need an appropriate dictionary
03:33:02 <androidgravisom> For Haskell
03:33:12 <Vorpal> androidgravisom, I'm just saying that for many tasks a device with a real keyboard, such as a laptop, is superior
03:33:31 <monqy> but tablets are the future
03:33:33 <itidus21> sorta like a c64 basic dictionary? :-D
03:33:33 <Vorpal> I'm writing on a laptop atm
03:33:39 <androidgravisom> Okay? I don't think that's a controversial opinion
03:33:44 <Vorpal> it is not as good as a desktop keyboard.
03:33:50 <androidgravisom> Sooooo I'm knot sure what your point is
03:33:54 <androidgravisom> Sooooo
03:33:57 <androidgravisom> Wow
03:33:59 <Vorpal> <androidgravisom> Okay? I don't think that's a controversial opinion <-- I'm not aiming to be controversial
03:34:04 -!- cheater has joined.
03:34:10 <Vorpal> <androidgravisom> Sooooo I'm knot sure what your point is <-- wut?
03:34:10 <androidgravisom> It assumes I want so by default now
03:34:15 <androidgravisom> Ha, then it doesn't
03:34:21 <Vorpal> androidgravisom, what did you actually want?
03:34:29 <androidgravisom> So
03:34:31 <Vorpal> can't you type it out slowly
03:34:39 <androidgravisom> Just pronounce the line
03:34:46 <androidgravisom> It remains coherent
03:34:54 <Vorpal> androidgravisom, well knot -> not obviously
03:35:26 <zzo38> Yes, I do agree they ought to have physical keyboard
03:35:47 <Vorpal> androidgravisom, you could fit a keyboard into that thing
03:35:59 <androidgravisom> No you couldn't
03:36:00 <Vorpal> androidgravisom, remember those old thinkpads with keyboards that folded out?
03:36:04 <Vorpal> you could do that
03:36:11 <androidgravisom> Tearaway
03:36:16 -!- DCliche has joined.
03:36:18 <androidgravisom> Yeaaaaah
03:36:26 <Vorpal> tearaway keyboard?
03:36:26 <Vorpal> nah
03:36:31 <androidgravisom> Lol
03:36:32 <Vorpal> I don't think that is a good idea
03:36:39 <androidgravisom> I'm trying speech recognition again
03:36:42 <Vorpal> https://en.wikipedia.org/wiki/IBM_ThinkPad_Butterfly_keyboard
03:36:44 <Vorpal> androidgravisom, ^
03:36:48 <androidgravisom> It seems to be better now that = British
03:36:57 <androidgravisom> Wow this is actually coherent
03:37:02 <Vorpal> it is
03:37:06 <androidgravisom> Busy I apologise for everything
03:37:11 <Vorpal> apart from the =
03:37:11 <androidgravisom> Is
03:37:13 <Vorpal> and now it fails
03:37:18 <androidgravisom> Busy
03:37:28 <androidgravisom> F I ZZIE
03:37:48 <androidgravisom> Actually plants that outlet by letter
03:37:48 <Vorpal> "androidgravisom, [...] I apologise for everything"
03:37:51 <Vorpal> right
03:37:57 <Vorpal> that works
03:38:04 <androidgravisom> I was apologising to FI ZZ ie
03:38:07 -!- calamari has quit (Ping timeout: 252 seconds).
03:38:07 <Vorpal> you are sorry for everything you did?
03:38:19 <Vorpal> <androidgravisom> Actually plants that outlet by letter <-- what
03:38:20 <Vorpal> was that
03:38:21 <androidgravisom> For my comments about speech recognition
03:38:26 <Vorpal> ah
03:38:28 <androidgravisom> I was apologising for those
03:38:32 <Vorpal> ah
03:38:48 <Vorpal> I do think "<androidgravisom> Busy I apologise for everything" is quote-worthy though
03:38:51 <androidgravisom> It was I actually pronounce that out letter by letter
03:39:27 <androidgravisom> She should ship
03:39:54 <Vorpal> that sounds dirty
03:39:55 <androidgravisom> Book shop shop shop a couple couple of
03:39:56 -!- Klisz has quit (Ping timeout: 248 seconds).
03:40:07 <Vorpal> a tounge twister or some kind?
03:40:18 <Vorpal> tongue*
03:40:37 <androidgravisom> I don't think it wants me to say duck
03:40:39 <androidgravisom> Duck
03:40:41 <androidgravisom> Duck
03:40:45 <androidgravisom> Duck
03:40:47 <Vorpal> fuck?
03:40:49 -!- cheater has quit (Ping timeout: 240 seconds).
03:40:51 <androidgravisom> Yes
03:40:55 <kallisti> what the duck.
03:41:03 <Vorpal> androidgravisom, that is silly
03:41:09 <androidgravisom> I don't give a flying.
03:41:10 <Vorpal> androidgravisom, try other vulgar language?
03:41:11 <androidgravisom> Lol
03:41:23 <androidgravisom> It cut off the"duck"
03:41:35 <Vorpal> come on, where did that space go?
03:41:54 <androidgravisom> Kids shopping but I don't give
03:42:00 <Vorpal> ...
03:42:01 <androidgravisom> LOL
03:42:15 <Vorpal> where did "Kids shopping" come from?
03:42:28 <androidgravisom> No clue
03:43:00 <Vorpal> does google provide the speech recognition software?
03:43:21 <Vorpal> it actually seem better than the built in one on OS X from my experience with that one
03:43:31 <Vorpal> unless it just sucks at accents that badly
03:43:36 <androidgravisom> It's dragon
03:43:48 <androidgravisom> I think it's a Swype specific thing
03:43:48 <Vorpal> until it took an arrow to the knee?
03:43:52 <androidgravisom> Due
03:43:53 <androidgravisom> Site
03:43:56 <androidgravisom> Due
03:43:58 <androidgravisom> Due
03:44:00 <androidgravisom> Die
03:44:14 <androidgravisom> Die die die die die
03:44:26 <androidgravisom> Tasty
03:44:30 <Vorpal> ...
03:44:31 <Vorpal> lol
03:44:48 <Vorpal> androidgravisom, anyway you said dragon
03:44:52 <Vorpal> what did you expect
03:45:09 <androidgravisom> I keep going in feet
03:45:17 <androidgravisom> And keep dragging my feet
03:45:18 <Vorpal> you are?
03:45:26 <androidgravisom> I keep dragging my feet
03:45:33 <androidgravisom> I keep track on my feet
03:45:39 <Vorpal> really
03:45:44 <androidgravisom> You think
03:46:00 <Vorpal> wait is this repeating whatever it think you said and see if ends up consistent?
03:46:07 <androidgravisom> I keep driver Matthew
03:46:11 <Vorpal> that could be fun
03:46:15 <Vorpal> and what
03:46:32 <androidgravisom> No, but I'll try that now
03:46:44 <Vorpal> why is it that software failing at speech recognition is so funny?
03:47:03 <androidgravisom> I'm great grandson and I approve this message
03:47:12 <androidgravisom> I'm great grandson and I approve this message
03:47:18 <Vorpal> hm
03:47:20 <androidgravisom> I agree Branson and I approve this message
03:47:31 <Vorpal> working out great so far
03:47:43 <androidgravisom> I agree Bronson and I approve this message
03:47:55 <androidgravisom> I agree Johnson and I approve this message
03:47:56 <Vorpal> tell me what the original was instead of "great grandson" btw. Using typing or something
03:48:05 <androidgravisom> I agree Johnson and I approve this message
03:48:14 <androidgravisom> "photoluminescent"
03:48:19 <Vorpal> heh
03:48:24 <androidgravisom> "colloinkgravisom"
03:48:28 <Vorpal> oh
03:48:30 <Vorpal> :/
03:48:35 <androidgravisom> I agree Johnson and I approve this message
03:48:36 <Vorpal> I thought it was "photoluminescent"
03:48:43 <Vorpal> "photoluminescent" is so much better
03:48:48 <androidgravisom> I'm totally messed it and I approve this message
03:48:57 <Vorpal> it certainly did!
03:48:58 <androidgravisom> Went to the lesson
03:49:05 <Vorpal> what it cut it short!?
03:49:07 <androidgravisom> Virtually no less
03:49:07 <Vorpal> :(
03:49:15 <androidgravisom> Forgiveness
03:49:31 <Vorpal> no you shall not be forgiven for your mangling of the message
03:49:32 <androidgravisom> Photos and wanted
03:49:41 <androidgravisom> I'm sorry
03:49:43 <Vorpal> lol
03:49:58 <Vorpal> wait it turned "photos and wanted" into "I'm sorry"?
03:50:00 <Vorpal> -_-
03:50:28 -!- azaq23 has quit (Quit: Leaving.).
03:52:11 <androidgravisom> Nah
03:52:23 <androidgravisom> I was going for photoluminescent
03:52:47 <androidgravisom> Dangling guardian PDT the superior soul
03:53:01 <Vorpal> ...
03:53:02 <Vorpal> :(
03:53:30 <Vorpal> <androidgravisom> Dangling guardian PDT the superior soul <-- what was that
03:53:45 <androidgravisom> I'm not sure.
03:53:50 <Vorpal> heh
03:54:17 -!- cheater has joined.
03:59:14 <colloinkgravisom> hi
04:03:03 -!- androidgravisom has quit (Ping timeout: 252 seconds).
04:04:52 <colloinkgravisom> "Can you spot what's wrong with what I'm doing? I'm at a loss. The complaining about constructing infinite types really ticks me off because I though Haskell was all about that sort of thing. It has infinite data structures, so why the problem with infinite types? I suspect it has something to do with that paradox which showed untyped lambda calculus is inconsistent. I'm not sure though. Would be good if someone could clarify."
04:04:54 <colloinkgravisom> this guy is
04:04:57 <colloinkgravisom> dunning-kruger personified
04:05:01 <colloinkgravisom> he'd get along great with kallisti
04:06:04 <kallisti> lolwat
04:06:15 <kallisti> I would never associate myself with this uneducated trash, hmph.
04:06:36 <itidus21> i encountered that paradox while snooping around on wiki
04:06:42 <itidus21> but apparently they fixed it
04:06:48 <itidus21> or did they?
04:07:11 <colloinkgravisom> speaking of dunning-kruger
04:07:57 <itidus21> the dunning-kruger effect in educational materials
04:08:18 <kallisti> colloinkgravisom: it complains about infinite types because infinite types are /impossible/. Anyone with a brain knows this.
04:08:24 <kallisti> sheesh.
04:08:28 <colloinkgravisom> i guess that works
04:08:30 <colloinkgravisom> kallisti: ur joking too rite
04:08:33 <itidus21> all primates have brains
04:08:35 <kallisti> no.
04:08:36 <kallisti> (yes)
04:09:19 <monqy> itidus21: deep
04:09:54 <colloinkgravisom> apart from monqy
04:10:00 <colloinkgravisom> he has brane
04:10:09 <kallisti> My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a)
04:10:15 <kallisti> is that correct?
04:11:31 <colloinkgravisom> wrong and wrong
04:12:12 <monqy> :(
04:13:12 -!- const has quit (Quit: I found a 1 /dev/zero).
04:13:34 <colloinkgravisom> i found a 1 /dev/zero
04:15:14 <kallisti> colloinkgravisom: this is a hard question to google for. can you clarify?
04:16:53 <itidus21> what i have learnt so far in my time here is that mathematics of computation, cellular automata, turing machines, haskell curry, alonzo church, lisp, haskell, brainfuck .. all form a stratum of topics which you will never find in a volume of sams teach yourself c++ in 21 days
04:17:33 <kallisti> that would be a shitty C++ reference if it randomly talked about lisp and brainfuck.
04:18:17 <colloinkgravisom> s/shitty/best/
04:18:35 <itidus21> its not really a reference though so much as set of lessons
04:18:45 <colloinkgravisom> kallisti: anyway no infinite types are not really problematic. we have lists f.e.
04:18:51 <colloinkgravisom> but many programs start typing that we don't want to.
04:18:56 <colloinkgravisom> and i don't know what it does to inference
04:19:22 <kallisti> "And so, to dereference a pointer you use the * operator. Also, Alonzo Church was born in 1903."
04:19:36 <kallisti> colloinkgravisom: I assume you mean infinite type-level lists??
04:19:42 <kallisti> infinite lists do not have an infinite type in Haskell.
04:20:01 <colloinkgravisom> kallisti: is there a way to tell you you're being stupid without hurting your feelings
04:20:13 <kallisti> can you just clarify this simple point?
04:20:27 <itidus21> i don't actually understand any of the topics i listed :P
04:20:47 <itidus21> i just realize that something about them. some ineffable quality in them forms the basis of esoteric programming
04:20:50 <colloinkgravisom> [a] = Maybe (a, [a])
04:21:04 <colloinkgravisom> itidus21: no, more like it forms the basis of what we talk about
04:22:04 <itidus21> somewhere i learned that lewis carroll wrote a book about how people should learn euclid directly from euclid instead of modern textbooks
04:22:16 <itidus21> whether that is actually what the book is about i won't be sure until i've read it
04:22:45 <colloinkgravisom> you should learn lewis carroll talking about euclid directly from lewis caroll instead of internet renditions
04:23:07 <itidus21> i downloaded the book, just haven't read it yet
04:23:17 <itidus21> (yet is a bit hopeful)
04:23:17 <kallisti> colloinkgravisom: hm.
04:23:19 <zzo38> colloinkgravison: Yes that is one way.
04:24:02 <kallisti> colloinkgravisom: but that won't type in Haskell.
04:24:14 <colloinkgravisom> kallisti: yes. because infinite types are banned.
04:24:18 <itidus21> it's easy for someone to learn assembly language without ever being aware of turing or functional programming, etc...
04:24:33 <colloinkgravisom> today we learned kallisti saying "uneducated trash" is the prelude to irony
04:24:51 <kallisti> colloinkgravisom: except they're no problem becauses of lists f.e.
04:24:53 <kallisti> ?
04:25:34 <itidus21> so for someone who only knows BASIC, as perhaps included in a manual in a commodore 64 box, then assembly language might seem elite to him. but for the assembly language programmer then lambda calculus might seem elite to him
04:25:34 <colloinkgravisom> <kallisti> My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a)
04:25:34 <zzo38> You can define a recursive type by newtype
04:25:38 <colloinkgravisom> your reasons are incorrect
04:25:52 <colloinkgravisom> because lists are infinite types (behind data-type wrapping) and neither (a) nor (b) applies
04:26:09 <kallisti> colloinkgravisom: but Haskell doesn't really consider them infinite types does it?
04:26:14 <colloinkgravisom> itidus21: lambda calculus is about a billion times easier than any assembly language
04:26:28 <colloinkgravisom> kallisti: it's an abstract entity, i'll leave the psychoanalysis to you
04:26:39 <kallisti> I guess Haskell just permits a subset of infinite types that can be formed via product and sum types.
04:27:07 <colloinkgravisom> what
04:27:10 <colloinkgravisom> you're dumb
04:27:19 <itidus21> brb
04:27:31 * colloinkgravisom 's patented educational method is based on a healthy amount of superiority and burning hatred for all inferior to him
04:27:49 <kallisti> as you can see it's super effective.
04:27:53 * pikhq discovers the Kindle is pretty much a perfect manga raw reading device
04:27:58 <colloinkgravisom> kallisti: in entertaining me, yes
04:28:12 <kallisti> colloinkgravisom: really? you always seem pretty annoyed
04:28:16 <kallisti> especially if I continue being confused.
04:28:25 <monqy> that's part of the fun
04:28:38 <colloinkgravisom> it's more like... disgust
04:28:38 <kallisti> "gee, no matter how many times I tell him he's stupid or wrong, he continues being stupid and wrong! so frustrating"
04:28:58 <colloinkgravisom> like im sure in ancient times people went to watch i dont know natives rip each other apart
04:29:16 <colloinkgravisom> revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something
04:29:21 <colloinkgravisom> but the spirit is there
04:29:32 <colloinkgravisom> i'm making a lot of sense, i think i'll knock myself unconscious soon
04:30:09 <kallisti> okay so Haskell supports infinite types, but not at the type... level? I mean, I get that lists are an infinite type, but not how to word why Haskell permits it and not other infinite types.
04:30:34 <colloinkgravisom> you seem to be having trouble with the what, not why
04:31:47 <kallisti> basically you're saying because infinite data structures such as lists are isomorphic to infinite types, Haskell supports infinite types. right?
04:32:10 <kallisti> s/isomorphic/equivalent/ I guess
04:32:17 <colloinkgravisom> let me try this the third time
04:32:20 <colloinkgravisom> <kallisti> My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a)
04:32:26 <colloinkgravisom> if either of these were true, then lists could not exist
04:32:31 <colloinkgravisom> therefore your reasons are wrong
04:32:39 <kallisti> ..
04:32:47 <colloinkgravisom> infer anything about what i am trying to say beyond this at your own peril
04:34:07 <kallisti> well, it has to do with type inference as well.
04:34:51 <kallisti> since [Char] is a concrete type it doesn't have to make the inference that [Char] = Maybe (Char, [Char]) or whatever
04:35:01 <kallisti> whereas something like a = b -> a
04:35:17 <kallisti> is not concrete.
04:35:28 <colloinkgravisom> sorry, you passed my threshold of "coherent enough to bother trying to decode"
04:35:28 <monqy> what
04:35:34 <colloinkgravisom> have fun
04:35:38 <monqy> yes mine too
04:36:43 <kallisti> basically [Char] is done... there are no more inferences to make.
04:37:10 <colloinkgravisom> kallisti
04:37:10 <colloinkgravisom> stop
04:37:19 <colloinkgravisom> also its 5 a m Lauhing Out Loud !!!
04:37:19 <kallisti> colloinkgravisom: no.
04:37:35 <kallisti> I will continue being wrong
04:37:36 <kallisti> loudly
04:37:50 <colloinkgravisom> kallisti: everyone present just gave up on you so i guess if you really want to just continue saying things to no avail so that you embarrass yourself more fully on the permanent record that is the logs then
04:37:51 <colloinkgravisom> have fun!!!
04:38:14 * kallisti sighs.
04:38:52 <kallisti> #esoteric is a bad place to learn things.
04:38:58 <monqy> learn?
04:39:00 <kallisti> yes.
04:39:10 <colloinkgravisom> i've learned tons and tons here, it's just not a good place to learn really basic things
04:39:19 <kallisti> like what? what is basic about this?
04:39:24 <colloinkgravisom> everything
04:39:27 <colloinkgravisom> or rather
04:39:36 <colloinkgravisom> it's not really basic in and of itself but the parts you are stumbling on are
04:39:37 <kallisti> name things that are basic, I will look them up. problem solved.
04:39:39 <colloinkgravisom> anyway monqy tell me to go to bed thanks
04:39:44 <monqy> go to bed
04:39:55 <colloinkgravisom> kallisti: well you obviously don't understand type inference/checking so start there, try [[hindley milner]]
04:40:02 <colloinkgravisom> monqy: ok thnx when
04:40:11 <monqy> you didn't specify
04:40:19 <colloinkgravisom> help
04:40:22 <monqy> D:
04:40:40 <colloinkgravisom> we need our qdb to support bold :(
04:40:47 <colloinkgravisom> Gregor: please unfilter ctrl+b, ctrl+c, thanxkx
04:40:50 <colloinkgravisom> @tell Gregor Gregor: please unfilter ctrl+b, ctrl+c, thanxkx
04:40:51 <lambdabot> Consider it noted.
04:41:45 <colloinkgravisom> ,monqym, should i bed in 8 hr
04:41:53 <monqy> ould that be a good idea
04:42:34 <colloinkgravisom> idm idfn oidrnt ernt rent knwo
04:42:37 <colloinkgravisom> probalbklyjh nto
04:42:39 <colloinkgravisom> praobajklyhl: earlier
04:42:42 <colloinkgravisom> woduewl be beterjer
04:43:17 <monqy> 7hr
04:43:22 <colloinkgravisom> 0hr???
04:43:26 <monqy> -2 hr
04:43:44 -!- calamari has joined.
04:43:48 <colloinkgravisom> ehlp
04:43:50 <zzo38> Maybe if I make Astro-Q, I can include a function to use GPS input. (Astrolog lacks GPS input function)
04:44:18 <monqy> if you should bed in negative hours you are late to bed
04:44:42 <monqy> unless you did bed. good job.
04:45:04 <colloinkgravisom> i
04:45:05 <colloinkgravisom> didnmt
04:45:13 <monqy> oops
04:45:21 <colloinkgravisom> bleeeeeurgh bed is just so ahrd theres so many rules and restrictions and prices and values
04:45:31 <colloinkgravisom> and formfilling
04:46:08 <monqy> for me bed is easeiy i just turn things off then the floor is right there and wow blankeyts how nice
04:46:26 <zzo38> Let's make a list of proposed features of Astro-Q, whether or not any of it will be implemented.
04:47:17 <colloinkgravisom> zzo38: universe
04:47:18 <colloinkgravisom> spatial
04:47:19 <colloinkgravisom> temporal hug
04:47:20 <colloinkgravisom> mechanism
04:47:22 <colloinkgravisom> friend
04:47:26 <colloinkgravisom> (thats one feature)
04:47:27 <monqy> speech recognition
04:47:30 <colloinkgravisom> yes
04:47:35 <colloinkgravisom> on-screen keyboard robot mouse
04:47:38 <colloinkgravisom> on-screen keyboard robot cat
04:47:40 <colloinkgravisom> (they chase)
04:47:46 <zzo38> I don't understand what "spacial temporal hug mechanism friend" means.
04:47:47 <monqy> i need voice commands for my universe spatial temporal hug mechanism friend
04:47:50 <colloinkgravisom> me neither
04:47:54 <colloinkgravisom> that's for astro-q to find out
04:48:06 <kallisti> colloinkgravisom: okay, so, [a] is a monotype.
04:48:38 <colloinkgravisom> im going to turn off my computer now by
04:48:39 <colloinkgravisom> putting my nose
04:48:41 <colloinkgravisom> on the powerb utton
04:48:44 <colloinkgravisom> and smudging it in
04:48:46 <colloinkgravisom> wish me luck monqy
04:48:49 <monqy> luck luck
04:48:59 <colloinkgravisom> help i cant fit
04:49:05 <colloinkgravisom> 4t5rrttdf
04:49:05 <monqy> power button may be a bad idea
04:49:07 <monqy> is it
04:49:11 <kallisti> monqy: okay elliott is leaving, you explain things instead.
04:49:12 <monqy> i dont know expertise in this area...
04:49:18 <monqy> aklistey: what tHigns
04:49:31 <monqy> do you want "explaiend
04:49:51 <kallisti> ytygkyjfuyhtfyuuyyufuyfig
04:49:53 <kallisti> hope that helps.
04:50:00 <monqy> sorrey i cant explaijn that
04:50:06 <monqy> it is a mystery of life
04:50:11 <kallisti> Haskell allows infinite types but also doesn't allow infinite types?
04:50:14 <monqy> what
04:50:16 <kallisti> help.
04:50:19 <monqy> what
04:50:33 <zzo38> One thing I almost certainly intend to include is all the features of Swiss Ephemeris. So Astro-Q will be a superset of Swiss Ephemeris.
04:51:03 <kallisti> monqy: help.
04:51:14 <kallisti> monqy: where you paying attention earlier?
04:51:42 <zzo38> I updated my D&D recording with the latest session.
04:53:09 -!- colloinkgravisom has quit (Ping timeout: 240 seconds).
04:55:34 <kallisti> how do you describe the infinite types that Haskell allows compared to the infinite types it doesn't allow.
04:55:48 <monqy> what do you mean allows and not allows
04:56:13 <kallisti> you can have lists, which are an infinite type, but other infinite types are not allowed.
04:56:18 <monqy> liuke what
04:56:24 <kallisti> a = a -> b
04:56:28 <monqy> but you can have that
04:57:45 <monqy> i think its: newtype Ohno a = Ohno (Ohno a -> a)
04:57:50 <monqy> and then your thing would be: Ohno b
04:57:54 <monqy> ohno
04:57:59 <zzo38> You cannot have any infinite types, not even lists. But what you can have is types where some or all of its constructors have have reference to themself
04:58:13 <zzo38> And values do the same thing
04:58:34 <kallisti> yes. okay. that's what I already knew, then.
04:59:46 <monqy> kallist6ey what do you mean by infinite types
04:59:53 -!- pikhq_ has joined.
05:00:28 <kallisti> monqy: I don't know. Basically elliott said lists are infinite types and then I got confused.
05:00:43 * Sgeo has top comment on a YouTube video
05:00:46 * Sgeo feels weird
05:00:47 <kallisti> congrats.
05:00:48 <monqy> conmgratualtieosne
05:01:06 <monqy> kallisti: well if you don't wnknow what your'e asking aobut: :??????
05:01:17 <monqy> it's hard for me to help
05:01:46 <monqy> sgeo is it a bad video
05:02:10 <Sgeo> http://www.youtube.com/watch?v=fA7UqQtUS7g
05:02:30 -!- pikhq has quit (Ping timeout: 240 seconds).
05:02:40 <monqy> good top comment
05:05:00 <kallisti> I'm confused as to why "Haskell doesn't allow infinite types" is an incorrect statement.
05:06:04 <monqy> because at least to elliott infinite types means something that haskell does anllow
05:06:18 <kallisti> okay, that's what I figured.
05:07:11 <kallisti> but in Haskell, [a] is not considered infinite type..
05:07:26 <kallisti> unless a is an infinite type.
05:09:12 <kallisti> theoretically, [a] = (a, [a]) | [] ...but Haskell does not treat as equivalent to this in any way.
05:09:29 <kallisti> for the purposes of type inference.
05:10:57 <zzo38> Algebraically it is still f(x) = x f(x) + 1 and you can factor and expand and whatever
05:11:23 <kallisti> so I guess it's fair to say that Haskell can't make recursive type inferences.
05:11:26 <kallisti> but can allow infinite types.
05:12:44 <monqy> waht
05:13:12 <kallisti> how is that confusing?
05:13:17 <monqy> whats this about inferences again
05:13:18 <zzo38> Assume x and f(x) are cardinal numbers. If x is nonzero then f(x) will be infinite, I think.
05:14:48 <kallisti> monqy: basically, if Haskell infers a type to be infinite within its type system then it doesn't allow that. If you define a recursively infinite data type (which is theoretically an infinite type) with data/newtype then it can allow this.
05:15:12 <zzo38> If x=1 then f(x) is aleph zero as far as I can tell. The type [()] is like natural numbers but can also be infinite list. Its only property will be its length.
05:15:13 <monqy> ?????
05:16:02 <kallisti> monqy: I feel as though basically anything I'm about to say is going to sound like meaningless gibberish to you.
05:16:07 <monqy> yes
05:18:23 <kallisti> > let intersperse _ [] = []; intersperse _ [x] = x; intersperse s (x:y:xs) = x:s:y:intersperse s xs in intersperse '|' ["a", "b", "c"]
05:18:24 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
05:18:34 <kallisti> monqy: this is a recursive type inference. it's not allowed.
05:19:35 <kallisti> data [a] = a : [a] | [] -- syntax errors notwithstanding, this contains a recursively defined product type and that's OK.
05:19:51 <monqy> also not allowed: type Bad = [Bad]; what does htis have to do with inference
05:20:18 <kallisti> because that's the type it's trying to construct via inference.
05:20:19 <zzo38> monqy: That is because it is a macro
05:20:26 <zzo38> Kind of
05:21:08 <kallisti> monqy: it has inferred that a is a recursive type... it can't do those when they're inferred in this way (or a type alias as you just said)
05:21:46 <monqy> kallisti: but does it have anything to do with the inference or does it just happen that inference is the only way to get it to go bad
05:22:02 <kallisti> possibly the latter.
05:22:09 <monqy> possibly
05:22:17 <kallisti> I think the reason recursive data structures are allowed is because /Haskell does not consider them to be infinite types/
05:22:23 <monqy> what
05:22:33 <kallisti> -_-
05:23:35 <kallisti> because Haskell considers [a] to be... [a]. not Maybe (a, [a])
05:23:43 -!- MDude has changed nick to MSleep.
05:24:08 <kallisti> obviously if you write type [a] = Maybe (a, [a])
05:24:12 <monqy> and it only has problems if it considers stuff to be infinite types, regardless of if they actually are
05:24:13 <kallisti> haskell will complain about an infinite type.
05:24:18 <kallisti> monqy: yes
05:24:23 <monqy> no
05:24:24 <kallisti> monqy: that is what I just said.
05:24:26 <monqy> i was being
05:24:27 <monqy> joke
05:24:29 <monqy> i
05:24:30 <kallisti> oh
05:24:39 <kallisti> ?
05:25:11 <zzo38> You could probably do: newtype Bad = Bad [Bad]; bad1 :: Bad; bad1 = Bad [Bad [], Bad [], Bad [Bad [], Bad []], Bad [bad1], bad1]; O! Does this kind of mathematical structure have a standard name? ("Bad" probably isn't its standard mathematical term)
05:26:31 <kallisti> monqy: so then what is the best way to describe this different.
05:26:36 <kallisti> *difference
05:26:55 <kallisti> the difference between a recursive type inference and a recursive data type.
05:27:05 <kallisti> that makes one unacceptable and the other one okay.
05:27:08 <kallisti> HOW DO YOU SAY THIS
05:27:12 <kallisti> IN A WAY THAT DOESN'T CONFUSE PEOPLE AAAAAAAH
05:27:15 <monqy> it has to do with stuff
05:27:20 <monqy> official monqy answer
05:28:06 <kallisti> I think it has to do with Haskell not treating recursive types defined via data and newtype to be infinite types.
05:28:14 <monqy> dont
05:28:15 <monqy> say
05:28:15 <monqy> that
05:28:16 <monqy> aagh
05:28:17 <kallisti> at the type level.
05:28:18 <kallisti> ?
05:28:19 <monqy> aaagh
05:28:47 <monqy> i dont know how to explain these things
05:28:47 <monqy> im
05:28:49 <monqy> bad at explain
05:29:19 <kallisti> because at the type level [a] is not recursively defined. it's just.. [a]
05:29:28 <kallisti> there is no infinite loop.
05:29:32 <monqy> ooh
05:29:33 <monqy> i dfounfd
05:29:35 <monqy> a thing
05:29:36 <monqy> that might
05:29:37 <monqy> help
05:29:40 <monqy> maybE
05:29:47 <monqy> or is IT??
05:30:00 <kallisti> ??????????/////////
05:30:05 <monqy> it has a really dumb name its called an occurs chekc????
05:30:32 <monqy> but it might not ehlep...
05:31:36 <kallisti> yes that helps.
05:31:42 <monqy> ok
05:31:48 <kallisti> I wondered what "occurs check" meant...
05:32:08 <kallisti> I had not considered that it was a thing
05:33:46 <zzo38> What is the mathematical structure newtype X = X [X]; called? Mathematically, what typeclasses can it belong to? I think it is a monoid. Is it a semiring or anything else?
05:34:41 <kallisti> it looks to me like an ordered set.
05:34:53 <monqy> wh
05:35:06 <kallisti> ..
05:35:10 <monqy> hhh
05:35:12 <monqy> hhhhh
05:35:51 <monqy> how is it a set it can contain duplicates??
05:36:02 <kallisti> an ordered multiset. :P
05:37:01 <monqy> im not seein ght eorder
05:37:14 <kallisti> X[ X[ X [], X[], X[]], X [], X[X [], X[], X[]]]
05:37:18 <kallisti> weeeee
05:37:21 <monqy> waht
05:37:44 <kallisti> what?
05:37:56 <monqy> what
05:38:11 <kallisti> that is an example of newtype X = X [X]
05:38:11 <zzo38> One of my questions means does this *specific* mathematical structure have a name.
05:38:34 <monqy> kallisti: by ordered multiset did you mean: list??????
05:38:46 <kallisti> well, yes, it's also one of those.
05:38:57 <kallisti> but it allows arbitrary nesting.
05:39:10 <kallisti> like a set, and it has an order, like an ordered set, and can has duplicates, like a multiset.
05:40:25 <monqy> im
05:40:26 <monqy> giving up
05:40:58 <kallisti> I don't understand what's confusing about that.
05:41:15 <monqy> i;ll let future colloingkravisom sort this out, or not bother to, or whatever he wants to do,..,
05:41:40 <kallisti> *colloinkgravisom
05:42:21 <monqy> congratulatiosn won conrrrecting my words
05:42:29 * Sgeo did not get a single A this semester.
05:42:34 <monqy> oops
05:43:23 <Sgeo> 4 As and an A-
05:43:25 <Sgeo> >.>
05:43:25 <kallisti> monqy: other mistakes are permissible.
05:43:34 <kallisti> but you can't misspell colloinkgravisom.
05:43:42 <monqy> o k
05:43:42 <kallisti> it's (c) kallisti
05:43:55 <monqy> can i misspell kallisti? i already have, in the past.
05:44:03 <kallisti> yes
05:44:11 <kallisti> kallisti is not (c) kallisti
05:44:21 <monqy> callistey (C) not kallistey
05:44:36 <kallisti> colloinkgravisom however is a work of art that I (er, well, a progfram I wrewote) made
05:45:50 -!- Vorpal has quit (Ping timeout: 276 seconds).
05:53:12 -!- Sut-Heb has joined.
05:54:41 -!- Sut-Heb has left.
06:10:07 <zzo38> "Casts Aboleniency: Allows +8 on all saving rolls on sneaking an aboleth into the dinner party" [This seems a very specific kind of spell. And also not applicable to the current situation in the game.]
06:10:44 <kallisti> @tell Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or ..
06:10:44 <lambdabot> Consider it noted.
06:10:48 <kallisti> lol
06:10:52 <kallisti> @tell elliott Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or ..
06:10:53 <lambdabot> Consider it noted.
06:10:57 -!- kallisti has changed nick to Hey.
06:11:05 <Hey> hi
06:11:08 <Hey> @clear-messages
06:11:09 <lambdabot> Messages cleared.
06:11:09 <Sgeo> elliott isn't called elliott anymore
06:11:20 -!- Hey has changed nick to kallisti.
06:11:36 <monqy> once you go colloinkgravisom you dont go back..........
06:12:00 <kallisti> @tell colloinkgravisom Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or ..
06:12:01 <lambdabot> Consider it noted.
06:12:24 <monqy> also: what
06:12:45 <kallisti> newtype T = T A
06:12:57 <kallisti> T is not isomorphic to A because there is no equivalent to T _|_
06:13:24 <monqy> what
06:13:28 <kallisti> ..?
06:13:33 <monqy> precisely
06:13:39 <kallisti> indeed
06:13:47 <monqy> help
06:13:50 <kallisti> I honestly don't know how to make that more clear.
06:13:58 <monqy> it sounds
06:13:59 <monqy> confused
06:14:09 <zzo38> But newtype makes them automatically unwraps when compiled?
06:14:29 <monqy> i probably said something bad a while ago though oops....i hope it wasnt really really bad
06:14:36 <monqy> because that would be
06:14:37 <monqy> bad
06:14:54 <kallisti> zzo38: hmmm...
06:15:04 <zzo38> Maybe if you put data instead of newtype
06:15:07 <kallisti> yes.
06:15:27 <monqy> what
06:15:44 <kallisti> monqy: what is the equivalent of T _|_ for type A
06:15:51 <zzo38> But in generally you can ignore _|_ if you want to.
06:15:52 <kallisti> everything else maps to an equivalent value
06:16:05 <monqy> i dont understand your question
06:16:27 <kallisti> >_>
06:17:32 <kallisti> _|_ = _|_; T a = a; T _|_ = ???
06:17:40 <monqy> what
06:17:53 <kallisti> they aren't isomorphic
06:17:54 <kallisti> becase
06:17:55 <kallisti> of that.
06:18:05 <monqy> because of what
06:18:09 <monqy> i dont understand what you mean with that
06:19:00 <kallisti> I mean there's no bijective map between T and A.
06:19:08 <kallisti> because of...
06:19:16 <monqy> because of what
06:19:18 <kallisti> that lack of a mapping for T _|_ to something in A.
06:20:14 <monqy> so T _|_ is a value?
06:20:17 <kallisti> yes.
06:20:23 <kallisti> newtype T = T A
06:20:30 <monqy> ok
06:20:31 <monqy> maps to _|_
06:20:32 <kallisti> or, just
06:20:38 <kallisti> no _|_ maps to _|_
06:20:39 <monqy> _|_ inhabits every type
06:20:42 <monqy> what
06:20:51 <monqy> o
06:20:52 <kallisti> if _|_ mapped to T _|_
06:20:56 <kallisti> then what maps to _|_?
06:21:27 <zzo38> I think that is the difference between newtype and data, or am I wrong?
06:21:36 <kallisti> zzo38: yes it does unwrap in compilation.
06:21:44 <kallisti> so data T = T A
06:21:49 <monqy> i;ll fall back to a nitpick: dont conflate bijections and isomorphism B)
06:22:17 <kallisti> I'm not. I'm saying it usually helps to have a bijective map if there's an isomorphism
06:22:20 <kallisti> since that's like... the thing.
06:22:22 <kallisti> that you need.
06:22:35 <monqy> a thing that you need
06:22:42 <kallisti> yes one of them
06:22:45 <kallisti> a necessary thing.
06:24:07 <kallisti> zzo38: I had forgotten about the C _|_ = _|_ thing. thanks.
06:24:58 <monqy> but whats this about _|_ mapping to _|_
06:25:13 <monqy> is that a thing
06:25:21 <monqy> i guess so
06:25:22 <monqy> but
06:25:23 <kallisti> well, if T and A are sets of their values.
06:25:36 <kallisti> then to make a bijective map, the easiest starting point would be to say _|_ maps to _|_
06:26:44 <zzo38> I think you can usually just ignore _|_ for figuring out their mathematical properties. Otherwise everything would be a monad and comonad and everything else.
06:27:05 <kallisti> return _ = _|_ --yay!
06:27:19 <monqy> ignoring _|_ makes me feel good inside
06:27:24 <monqy> _|_ is scarey
06:27:25 <zzo38> Instead you can say that they mean, sometimes something is mathematically undefined
06:27:37 <zzo38> Which is why it is undefined
06:28:14 <zzo38> Like, factorial of negative integers is undefined.
06:28:39 <monqy> kallisti: oh right with that bijective map thing i was talking about: i rem,embered the point iwas trying to make with the nitpicL: but forgot to say: sometimes you can make a bijective map???
06:28:52 <kallisti> yes, you can.
06:28:54 <kallisti> that is possible.
06:28:56 <kallisti> (???)
06:29:12 <monqy> yes,,,,,,
06:30:39 <monqy> say A is natural nubmers and bottom. _|_ -> _|_; T _|_ -> 0; T 0 -> 1; ... that is assuming this whole mapping bottoms thing isnt fundamentally fdlawed
06:32:22 <zzo38> You can't map bottoms! It is not mathematically correct to do so.
06:32:27 -!- augur has quit (Remote host closed the connection).
06:32:44 <monqy> this makes me feel better
06:33:07 <monqy> because this whole mapping bottoms thing feels really dumb
06:33:14 <monqy> and bad
06:33:18 <monqy> and icky
06:34:02 <kallisti> why
06:34:04 <kallisti> hi
06:34:09 <monqy> hi
06:34:29 <monqy> it's hard to describe but
06:34:32 <monqy> it feels wrong???
06:34:32 <Sgeo> I'm going to go work on my horrible evil magic conversion code, but independently of any connection with my Cap stuff
06:34:42 <monqy> have fun
06:34:45 <Sgeo> (i.e. for the hell of it)
06:35:13 <monqy> kallisti: do you have a definition of what you maen by isomorphism/isomorphic w/r/t haskell types?
06:38:30 -!- kallisti has quit (Ping timeout: 252 seconds).
06:38:34 <monqy> oop
06:41:28 -!- NihilistDandy has quit (Remote host closed the connection).
06:46:11 -!- NihilistDandy has joined.
06:53:08 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:54:54 <NihilistDandy> Anyone in here use package.el and the marmalade repo?
07:10:41 -!- kallisti has joined.
07:10:41 -!- kallisti has quit (Changing host).
07:10:41 -!- kallisti has joined.
07:13:04 -!- sebbu3 has joined.
07:13:05 -!- sebbu3 has quit (Changing host).
07:13:05 -!- sebbu3 has joined.
07:13:22 -!- sebbu2 has quit (Ping timeout: 252 seconds).
07:15:15 <zzo38> If I make electronic device, including for selling, I have to do it as follows:
07:15:22 <zzo38> * The customer has complete freedom to use it and do what they want with it, including modification, even though that would void the warranty.
07:15:27 <zzo38> * Complete specification must be freely available.
07:15:32 <zzo38> * In most cases, no separate computer is required for its use. But it can be used, regardless of architecture or operating system, if you want to, including for user reprogramming.
07:15:36 <zzo38> * The hardware shall be designed to prevent copy protection and DRM from being implemented on it, and all specification of such is freely available and freely implementable.
07:15:40 <zzo38> * No HDMI/HDCP.
07:15:44 <zzo38> * Book can be available in paper, and in computer DVI file and even the source file in case you want to reformat it.
07:15:52 <zzo38> * It can be protected by copyleft and/or trademarks in order to avoid some bad things
07:15:58 <zzo38> * Hackers and hobbyists can possibly use these device for many interesting things.
07:16:03 <zzo38> * Don't overcomplicate things please.
07:16:07 <zzo38> * For softawre, include source codes and valid free-software/open-source, such as GNU GPL v3, or another license if it is based on another software that uses that other license that is still valid free-software/open-source.
07:16:12 <zzo38> * All business shall be accessible by postal mail, although other methods of communication are still possible.
07:17:36 <zzo38> Are they good so far?
07:18:47 <quintopia> sounds overly complicated
07:18:59 <quintopia> just promise not to sue anyone
07:19:05 <quintopia> problems all solved
07:19:22 <itidus21> lol quintopia
07:20:36 <itidus21> if promises could all be kept then there would be very few troubles in the world
07:21:15 <quintopia> but
07:21:30 <quintopia> keeping such a promise engenders good will with customers
07:21:36 <itidus21> disregard my former post
07:21:55 <itidus21> my former post was not logically sound
07:23:25 <zzo38> My idea "Hypernet" for extra-free decentralized universal anonymous encrypted multi-mode network.
07:24:30 <quintopia> free as in beer too?
07:25:07 <itidus21> i understand quite well (but not perfectly) how problems begin when any given human individual responds to his(or her) wants and needs
07:25:19 <zzo38> Yes. Free as in beer too. And free as in speech too.
07:25:37 <itidus21> the most nasty wants and needs are those which involve positioning in a hierarchy
07:27:11 <itidus21> such as, strongest kid in school, top of the chicken pecking order, boss of the company,
07:27:25 <itidus21> upper class
07:27:44 <itidus21> dominant partner in a relationship
07:27:59 <zzo38> The only purpose authorities would have in Hypernet would be specification of free standards, and would have absolutely no other purpose.
07:28:03 <itidus21> high tier level of dominance in a relationship tree
07:30:58 <itidus21> in order to acquire these hierarchical positions one acquires: money, power, fame, underlings, strength, allies
07:31:24 <itidus21> also having control of a resource that others need goes a long way
07:32:01 <Sgeo> I should attempt to understand incoherent instances
07:32:11 <Sgeo> Hopefully this last instance doesn't bring the code into that realm though
07:32:18 <Sgeo> But I'm not smart enough to guess
07:32:24 <itidus21> an ability to exploit the vulnerabilities in others (as seen with mao tse tung)
07:35:13 <monqy> Sgeo: why are you doing typeclass hasck,,,,why,,,,
07:35:25 <Sgeo> monqy, for fun!
07:35:31 <monqy> cries
07:35:43 <Sgeo> monqy, what?
07:35:53 <Sgeo> What's wrong with fooling with stuff for fun?
07:36:02 <Sgeo> This should be the last instance I need to write for this
07:36:05 <Sgeo> Then I'll post it
07:36:19 -!- calamari has quit (Quit: Leaving).
07:36:24 <Sgeo> {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances, OverlappingInstances #-}
07:37:10 <monqy> yikes
07:38:57 <Sgeo> My code compiles, but I think it's wrong
07:39:22 <itidus21> control can eventually become not a means but an end. a sense of control gained by making someone do those things which are most distant from their own will, to act most distantly against their own self interest
07:39:56 <itidus21> ^distant from their own will and close to the controllers will, distant from their own self interest and close to the controller's self interest
07:39:59 <Sgeo> Fixed, compiles
07:40:10 <Sgeo> No incoherent instances
07:40:16 <Sgeo> Now I need to find a way to test it :/
07:40:22 <Sgeo> What's a nice isomorphism between types
07:40:31 <Sgeo> Or at least, close enough that I can test on simple stuff
07:40:41 <itidus21> when it's otherwise all the same, it is important for the controller to find means to induce fear and agony in those he is controlling
07:40:42 <Sgeo> Char and Int?
07:41:22 <itidus21> like it's important for north koreans to know that their leader can control the weather (which i am reminded NKs ally china can infact do)
07:41:23 <Sgeo> http://hpaste.org/55792
07:41:30 <Sgeo> I have only compiled it, I have not tested it
07:41:51 <itidus21> but they are to be kept ignorant and having a superstitious understanding
07:42:06 <Sgeo> Kaboom
07:42:39 <itidus21> and.. the controller must be situated in such a way that all hell will break lose if he is removed
07:43:14 <Sgeo> http://hpaste.org/55793
07:43:21 <itidus21> in other words, it was in Saddam's interest to make himself a keystone which if removed would ensue a crumbling of the arch
07:44:01 <pikhq_> itidus21: I suspect in NK control really *is* a means. The targetted end: an easy fucking life for Kim Jong-Il.
07:44:40 -!- kallisti has quit (Ping timeout: 240 seconds).
07:45:02 <itidus21> it is of course the same in the software world, and in the lawyer world
07:46:56 <itidus21> on a side note it is interesting how many plastic toys are sold by cartoons, where the cartoons are exercizes in advertising toys
07:47:39 <itidus21> and, how as they age the animators of those cartoons probably think about the kind of cartoons which could be made
07:48:03 <itidus21> they must ask themselves "are we dumbing down these stories on purpose?"
07:54:06 -!- augur has joined.
08:00:46 -!- sebbu2 has joined.
08:00:47 -!- sebbu2 has quit (Changing host).
08:00:47 -!- sebbu2 has joined.
08:02:10 -!- sebbu3 has quit (Ping timeout: 240 seconds).
08:08:16 -!- aloril has quit (Read error: Operation timed out).
08:14:02 -!- aloril has joined.
08:39:59 <itidus21> but thats all speculation, sometimes things just turn around
08:52:08 -!- Ngevd has joined.
08:52:12 <Ngevd> Hello!
08:54:03 <Ngevd> I'll try last night's Haiku again
08:54:09 <Ngevd> With Haiku I found
08:54:17 <Ngevd> A problem: it lacks support
08:54:21 <Ngevd> For my WiFi card
08:55:35 <coppro> you miss the point of haiku
08:56:01 <Ngevd> I know, it needs to be about the passing of the seasons or something
08:57:07 <coppro> it must include a season reference
08:57:15 <coppro> also your morae are wrong
09:01:22 <itidus21> this is confusing
09:01:29 <itidus21> i wonder what is being talked about
09:01:36 <itidus21> screw you guys, i'm going home
09:01:53 <Ngevd> itidus21, the Haiku operating system lacks support for my WiFi card
09:01:58 <Ngevd> This is a problem
09:02:04 <itidus21> (-> (^_^) (->
09:02:19 <Ngevd> I do not understand this emoticon
09:02:36 <itidus21> bad ascii art to indicate pointing home with both hands
09:02:55 <Ngevd> Oooh
09:03:38 <itidus21> http://fc07.deviantart.net/fs46/f/2009/204/c/2/Screw_you_guys_I__m_going_home_by_h4X0ry0uL34.jpg
09:03:49 <coppro> itidus21: china can control the weather?
09:04:03 <itidus21> `log control the weather
09:04:20 <coppro> 02:41:20 < itidus21> like it's important for north koreans to know that their leader can control the weather (which i am reminded NKs ally china can infact do)
09:04:37 <itidus21> well.. i remember saying that but
09:04:40 <HackEgo> 2011-12-23.txt:00:11:16: <ais523> itidus21: well, the Chinese government can control the weather
09:04:47 <itidus21> haha..
09:04:58 <coppro> ah
09:05:03 <coppro> I smell sarcasm
09:05:43 <itidus21> `log cloud seeding
09:05:54 <HackEgo> 2011-12-28.txt:09:05:43: <itidus21> `log cloud seeding
09:06:01 <coppro> wp
09:06:19 <itidus21> `log control the weather
09:06:24 <itidus21> oops wrong command
09:06:26 <HackEgo> 2011-12-28.txt:09:03:49: <coppro> itidus21: china can control the weather?
09:06:29 <itidus21> sorry
09:06:35 <itidus21> `pastelogs control the weather
09:06:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4416
09:07:08 <zzo38> Remember two tricks of hiding the log query: [1] You can put a letter in square brackets [2] You can send the query by private
09:07:09 <coppro> lazy
09:07:33 <itidus21> lol @ 2008 reference
09:07:48 <coppro> elliott is the meat of this channel, pikhq is the salad, and zzo38 is the desert
09:11:09 <itidus21> so i have been pondering the ways brainfuck can be applied
09:11:52 <Sgeo> It can be more applied with PSOX! Apply today!
09:12:05 <itidus21> as it's wiki page explains, it acts on an array of cells
09:13:25 <itidus21> but it needs complete control over that array eh
09:14:26 -!- oerjan has joined.
09:17:16 <itidus21> like if you were to take an ascii string such as "This is a test.\0" and try to use it as a 16 cell brainfuck array, you couldn't really get very far with it
09:17:50 <itidus21> or could you...
09:18:14 <itidus21> this is where my failure to cognize the distinction between the brainfuck program and the cell array starts to hurt
09:25:11 <itidus21> like it seems to me you would run into trouble that every time you tried to store working numbers, and that doing a string length program would be quite troubling
09:26:24 <itidus21> however, if the string was just used as input, then the program could count the number of input numbers before zero was reached
09:29:32 <oerjan> itidus21: it's actually a little tricky unless you have a 0 before the first T as well, to mark the boundary on both sides (bf tapes often errror out if you go off the left edge)
09:30:47 <oerjan> assuming you have more useable tape to the right, of course
09:30:56 <oerjan> *-r
09:32:32 <oerjan> because if you don't, you will have problems about where to place your counter in such a way as to be able to find the ends of the strings as well
09:32:50 <itidus21> oerjan: the number of times i confuse the difference between the program and the cell tape never fails to amaze me
09:33:07 <itidus21> i think that is the first degree of brainfuckery
09:33:25 <oerjan> itidus21: well there _have_ been esolangs which made them equal, i think
09:34:44 <oerjan> do you know any "normal" programming languages? the cell tape is just the data for the brainfuck program which is the code
09:35:47 <oerjan> and normally when programming you try to distinguish code and data most of the time. except when you're doing tricks based on _not_ doing so.
09:35:51 <itidus21> so, it seems that for the kind of thing i was talking about, a useful extension of brainfuck would be input/output iterators for non-streaming I/O
09:37:08 <oerjan> hm or is oo kind of a subversion of that already.
09:37:55 <oerjan> itidus21: prepare for Phantom_Hoover's brick of wrath
09:38:39 <itidus21> depends what you mean by oo. do you mean object orientation?
09:38:44 <oerjan> yes.
09:38:55 <itidus21> ahh
09:39:43 <itidus21> well i couldn't say if it is or isn't
09:40:15 <zzo38> In writing the annotations for music, I have invented some of my own notations, such as for cadences. Perfect cadence is P, imperfect is P with slash through it, plagal is PL, deceptive is D, closed is a circle around it, semiclosed is half circle, and open has no enclosure. (I is the first letter of "imperfect" but the notation I means the chord on the tonic instead.)
09:40:52 <zzo38> How many of you have ever used your own notations when writing music, or thought about such thing?
09:41:53 <zzo38> Because handwritten uppercase/lowercase is sometimes confused, I don't use uppercase/lowercase roman numerals. I write them all in uppercase. I use + for major, - for minor, x for augmented, and o for diminished; but rarely use them when writing music in major keys since they are implied by the scale.
09:42:03 <zzo38> Sometimes a chord's function is different from its notes; I use double underlines to indicate this when necessary.
09:44:24 <oerjan> <coppro> elliott is the meat of this channel, pikhq is the salad, and zzo38 is the desert <-- i'm the too fat bearnaise sauce
09:45:45 <zzo38> Gregor writes some music, isn't it?
09:45:57 <oerjan> it would appear so
09:46:31 <zzo38> Has Gregor ever thought about these kind of things like what I have mentioned here?
09:47:18 <oerjan> i don't know
09:47:54 <oerjan> `log [G]regor>.*notation
09:48:01 <HackEgo> 2010-03-05.txt:20:00:11: <Gregor> AnMaster: The English word has negative connotation.
09:48:34 <oerjan> `log [G]regor>.*music.*notation
09:48:41 <HackEgo> 2010-01-19.txt:02:58:25: <Gregor> (Lilypond, if you don't know, is TeX for musical notation)
09:49:48 <zzo38> Next time, ask Gregor.
09:51:49 -!- zzo38 has quit (Quit: YES CARRIER).
09:54:00 <itidus21> `pastelogs lilypond
09:54:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20141
10:02:24 <oerjan> `addquote <zzo38> Yes, it is true; I don't really like PHP either.
10:02:27 <HackEgo> 784) <zzo38> Yes, it is true; I don't really like PHP either.
10:24:37 -!- Phantom_Hoover has joined.
10:31:39 -!- pikhq has joined.
10:31:45 -!- pikhq_ has quit (Ping timeout: 255 seconds).
10:49:16 -!- Taneb has joined.
10:49:17 -!- Ngevd has quit (Read error: Connection reset by peer).
10:58:34 <oerjan> <colloinkgravisom> revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something <-- erm, roman circus. case closed.
11:00:53 <oerjan> <colloinkgravisom> sorry, you passed my threshold of "coherent enough to bother trying to decode" <-- never go into teaching, will you? not that i expect you to.
11:02:04 <oerjan> i mean, you are refusing to mention the one piece of information kallisti misses, while he is clearly close to grasping at it, and simultaneously you are deriding him.
11:03:32 <oerjan> clearly you are not arguing in order to help, but in order to fuel your ego by exaggerating other's faults. heck you basically admitted it above.
11:04:17 <oerjan> and not only do you exaggerate other's faults, but you aim your rhetoric in such a way as to trap them further.
11:04:33 <oerjan> it's quite annoying to watch.
11:06:40 <Phantom_Hoover> *others'
11:06:57 <Phantom_Hoover> God, oerjan, you suck at grammar so much, I may even leave because I can't be bothered?
11:09:19 <Taneb> I thought of an interesting way to number combinatory logic things
11:10:13 <Taneb> It's probably been done before
11:14:21 -!- kallisti has joined.
11:16:14 <kallisti> hi
11:16:19 <Taneb> Hello!
11:16:23 -!- Taneb has changed nick to Ngevd.
11:16:25 <kallisti> Taneb: what's up?
11:16:28 <kallisti> how's the Haskell going
11:16:31 <Ngevd> Alright
11:16:40 <Ngevd> I now sort of get what an applicative functor is
11:17:19 <Ngevd> Also, I AM ABOUT TO DEACTIVATE MY LARGER FACEBOOK ACCOUNT
11:18:37 -!- Labbekak has joined.
11:19:05 <Labbekak> Hello
11:20:33 <kallisti> Ngevd: nice
11:20:36 <kallisti> Labbekak: hello
11:20:43 <Ngevd> Labbekak, hello
11:20:45 <kallisti> `welcome Labbekak
11:20:48 <HackEgo> Labbekak: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
11:20:53 <Ngevd> kallisti, it had outlived its purpose.
11:21:02 <Labbekak> Lots of spam on the wiki 0.o
11:21:10 <kallisti> Labbekak: unfortunately...
11:21:16 <Ngevd> It's a wiki with an awful captcha system
11:21:44 <kallisti> ..surely we could make a bot that automatically deletes some spam.
11:22:07 <kallisti> with all of the ridiculous talent we have.
11:22:32 <kallisti> Ngevd: also, that's cool. Applicative is a very useful thing.
11:23:07 <kallisti> do you understand the f <$> x <*> y <*> ... idiom?
11:23:37 * Phantom_Hoover remembers that he still has Ngevd on ignore.
11:23:44 <kallisti> wat why.
11:23:51 <Phantom_Hoover> LIKING MATT SMITH
11:23:51 <Ngevd> My opinions on Doctor Who
11:24:31 <Ngevd> kallisti, sort of
11:25:30 <Ngevd> I maintain my opinion that Matt Smith is a better actor for the Doctor than David Tennant
11:26:04 <kallisti> Ngevd: Essentially, Applicative abstracts the notion of function application onto a parametric type.
11:26:21 <kallisti> so if you have a function wrapped into a parametric type, Applicative allows you apply that function within that wrapping.
11:26:38 <Sgeo> Should I share my intuition of the f <$> x <*> y idiom?
11:26:42 <kallisti> yes.
11:27:04 <Sgeo> It allows you to pass someapplicative x arguments as though they were x
11:27:33 <kallisti> likewise, Functor allows you to lift a function into a parametric type.
11:27:47 <Sgeo> If x is an IO Int, and y is an IO Char, and f is :: Int -> Char -> String, then f <$> x <*> y will probably do what you want
11:28:12 -!- cheater has quit (Ping timeout: 264 seconds).
11:28:20 <Sgeo> It will be an IO String that does the action of x and the action of y then passes those to f and the program to do that is the IO String
11:28:25 <kallisti> yes, that's one way to look at it. It can be used in other situations though.
11:28:46 <Sgeo> Note that if f returns an IO whatever, than the new thing will be IO (IO whatever).
11:28:49 <Sgeo> This bit me once.
11:29:09 <kallisti> yes <*> retains the wrapping around its return value.
11:29:22 <Ngevd> Sgeo, so you'd need to do the <- thingy twice?
11:29:30 <kallisti> if you have a function that returns IO whatever, then you most likely want to use >>= instead.
11:29:41 <Sgeo> Ngevd, I could have, but join is a function that essentially does that.
11:29:44 <Sgeo> :t join
11:29:45 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
11:29:51 <kallisti> also >>= allows you to avoid that situation entirely.
11:29:52 <oerjan> <Phantom_Hoover> *others' <-- damn i had a bad feeling about that word but somehow couldn't quite recall why it was wrong.
11:29:55 <Sgeo> Or what kallisti said is probably more idiomatic.
11:30:20 <kallisti> but yes they're equivalent.
11:30:27 <Sgeo> join m_m_a = do {m_a <- m_m_a; m_a }
11:30:53 <kallisti> > [1,2,3,4] >>= id
11:30:54 <lambdabot> No instance for (GHC.Num.Num [b])
11:30:54 <lambdabot> arising from a use of `e_11234' at <in...
11:30:56 <kallisti> er
11:31:10 <Phantom_Hoover> <Ngevd> I maintain my opinion that Matt Smith is a better actor for the Doctor than David Tennant
11:31:12 <kallisti> > [[1,2],[3,4]] >>= id
11:31:13 <lambdabot> [1,2,3,4]
11:31:16 -!- SgeoN1 has joined.
11:31:20 <Phantom_Hoover> This is because you are exceptionally stupid and/or gullible.
11:31:25 <kallisti> > join [[1,2],[3,4]]
11:31:26 <lambdabot> [1,2,3,4]
11:31:27 <SgeoN1> Damn This battery so much
11:31:33 <Ngevd> Note I did not mention the episodes
11:31:34 <kallisti> join m = m >>= id
11:31:50 <Phantom_Hoover> Smith is unbearable in and of himself.
11:33:00 -!- Sgeo_ has joined.
11:33:12 <Ngevd> This is why I struggle making friends.
11:33:13 <Sgeo_> DAMN THIS BATTERY
11:33:55 <kallisti> Ngevd: is there anything that I said that confuses you?
11:34:01 <Phantom_Hoover> Ngevd, why would anyone want to be friends with someone who likes Matt Smith??
11:34:04 <Ngevd> kallisti, Not really
11:34:12 <Ngevd> Phantom_Hoover, Matt Smith would, I assume
11:34:20 <Sgeo_> > join (Just (Just 'a'))
11:34:21 <kallisti> (a much better question than "does any of this confuse you" because someone is more likely to say "yes" even though they don't mean it)
11:34:21 <lambdabot> Just 'a'
11:34:23 <Phantom_Hoover> No, he knows how awful he is too.
11:34:26 <Sgeo_> > join (Just Nothing)
11:34:27 <lambdabot> Nothing
11:34:28 <Ngevd> kallisti, but I think I'm still a bit behind
11:34:31 <Sgeo_> > join (Nothing)
11:34:32 <lambdabot> Nothing
11:34:51 -!- Sgeo has quit (Ping timeout: 240 seconds).
11:35:10 <Labbekak> > 2+2
11:35:11 <lambdabot> 4
11:35:11 <oerjan> <Phantom_Hoover> This is because you are exceptionally stupid and/or gullible. <-- * oerjan briefly ponders repeating the whole rant above to Phantom_Hoover. wait, you are all like this. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
11:35:14 <Labbekak> cool
11:35:40 <Sgeo_> Ngevd, you know that (+) adds two numbers, right?
11:35:41 <Phantom_Hoover> Labbekak, pfft.
11:35:45 <Sgeo_> > (+) 2 2
11:35:46 <lambdabot> 4
11:35:50 <Sgeo_> Watch:
11:35:52 <Phantom_Hoover> > let 2 + 2 = 5 in 2 + 2
11:35:53 <lambdabot> 5
11:36:02 <oerjan> s/repeating/redirecting/
11:36:04 <Sgeo_> > (+) <$> Just 2 <*> Just 3
11:36:05 <lambdabot> Just 5
11:36:11 <Ngevd> Sgeo_, I did not know that. I must have got it confused with ++
11:36:13 <Sgeo_> Ngevd, does that make sense?
11:36:15 <Phantom_Hoover> oerjan, no, not really.
11:36:25 <Ngevd> Sgeo_, yes
11:36:26 <Phantom_Hoover> It's justified in this case because Matt Smith.
11:36:28 <kallisti> Ngevd: lol
11:36:32 <Labbekak> > do { Nothing }
11:36:32 <lambdabot> Nothing
11:36:47 <Sgeo_> > do { return () }
11:36:48 <lambdabot> No instance for (GHC.Show.Show (m ()))
11:36:48 <lambdabot> arising from a use of `M466201207...
11:36:49 <kallisti> Ngevd: (am I the only one that detected sarcasm?)
11:37:02 <Ngevd> kallisti: (sarcasm was there)
11:37:04 <kallisti> (please say no)
11:37:09 * oerjan sits down on his lawn with his cane and recalls something the youngsters call "dissing"
11:37:35 <kallisti> Ngevd: okay so, I'll just explain the f <$> x <*> y idiom briefly
11:37:41 <Phantom_Hoover> ARE YOU A CLOSET MATT SMITH SUPPORTER
11:37:41 <kallisti> Ngevd: are you aware of <$>?
11:38:06 <Phantom_Hoover> Yes, it's an expression of the supremacy of the almighty dollar.
11:38:11 <Phantom_Hoover> Greater than all around it.
11:38:14 <Ngevd> kallisti, it takes a function and a value inside a functor and does the function on the value inside the functor?
11:38:45 <kallisti> Ngevd: yes it's fmap. that's basically what I was asking.
11:38:46 <Sgeo_> It .. kind of, but the result is wrapped in the functor
11:38:49 <Labbekak> > random (mkStdGen 949494) :: (Int, StdGen)
11:38:50 <lambdabot> (261237333865217244,75809027 2103410263)
11:38:57 <Sgeo_> :t succ
11:38:58 <lambdabot> forall a. (Enum a) => a -> a
11:39:03 <Sgeo_> > succ 1
11:39:04 <lambdabot> 2
11:39:06 <Phantom_Hoover> :t fmap
11:39:07 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
11:39:08 <Phantom_Hoover> :t <$>
11:39:09 <lambdabot> parse error on input `<$>'
11:39:11 <Sgeo_> > succ <$> (Just 1)
11:39:12 <lambdabot> Just 2
11:39:12 <Ngevd> > join (.) succ 0
11:39:14 <lambdabot> 2
11:39:17 <Sgeo_> Maybe is a functor
11:39:33 <Ngevd> I knew maybe is a functor
11:39:46 <Phantom_Hoover> Huh, it is fmap.
11:40:00 <kallisti> Sgeo_: I believe that's what he meant by "inside the functor"
11:40:05 <Sgeo_> Oh, ok
11:40:06 <Phantom_Hoover> I thought it was f (a -> b) -> f a -> f b for some reason.
11:40:06 <Ngevd> > (+1) <$> [1..5]
11:40:08 <lambdabot> [2,3,4,5,6]
11:40:14 <Sgeo_> Phantom_Hoover, that's <*>
11:40:17 <Sgeo_> :t (<*>)
11:40:18 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
11:40:21 <Phantom_Hoover> Ah.
11:40:26 <kallisti> Ngevd: okay so for example here's how you do a cartesian product.
11:40:30 -!- cheater has joined.
11:40:33 <Phantom_Hoover> Makes sense.
11:40:42 <kallisti> > (,) <$> [1..3] <*> [1..3]
11:40:42 <lambdabot> [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)]
11:41:02 <kallisti> Ngevd: first of all you apply (,) <$> [1..3]
11:41:15 <kallisti> :t (,) <$> [1..3]
11:41:16 <lambdabot> forall a b. (Num a, Enum a) => [b -> (a, b)]
11:41:31 <kallisti> this applies (,) to every value in the list [1..3]
11:41:43 <kallisti> and produces a list of curried functions. yes?
11:42:01 <Sgeo_> :t (,) <$> [1..3]
11:42:02 <lambdabot> forall a b. (Num a, Enum a) => [b -> (a, b)]
11:42:35 <kallisti> so now we have a function typed wrapped within a parametric type, namely the list type.
11:42:42 <kallisti> s/typed/type/
11:42:43 <Sgeo_> Hmm, now I'm thinking I can actually find a use for Just Right
11:43:39 <kallisti> this is the situation where applicative is useful. Applicative takes a function type wrapped within a parametric type, and extends the notion of function application "within" this wrapped type.
11:43:42 <Ngevd> kallisti, sorry, I had to brb
11:43:43 <oerjan> but there's no use if there's Nothing Left
11:44:04 <Ngevd> But I am now rb
11:44:17 <kallisti> okay. :)
11:44:21 <kallisti> catch up!
11:44:41 <Ngevd> I still keep forgetting that , is a function
11:44:59 <kallisti> oh, yes. it's kind of a special case.
11:45:18 <kallisti> , is not /actually/ an infix function.
11:45:32 <Ngevd> So, (,) <$> [1..3] is a list of functions
11:45:35 <kallisti> yes
11:46:11 <Phantom_Hoover> Of course, you *can* just look at the type signatures.
11:46:18 <kallisti> since list is an instance of Applicative, lists extend the notion of function application. So that if you have a list of functions, you can apply that list of functions to another list of values.
11:46:21 <Ngevd> And <*> applies each function on the left to each value on the right IN THIS EXAMPLE
11:46:22 -!- SgeoN1 has quit (Quit: Bye).
11:46:29 <Phantom_Hoover> f :: a -> b -> c -> d
11:46:42 <kallisti> Ngevd: yes, this is what happens in the case of list.
11:46:58 <Phantom_Hoover> f <$> x (x :: f a) :: f (b -> c -> d).
11:47:26 <Phantom_Hoover> That <*> y (y :: f b) :: f (c -> d).
11:47:28 <Phantom_Hoover> And so on.
11:47:59 <kallisti> Ngevd: but if you look at the type you can infer what happens in the general case.
11:48:03 <kallisti> :t (<*>)
11:48:04 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
11:48:25 <kallisti> in case of lists this is: [a -> b] -> [a] -> [b]
11:48:42 <Ngevd> This has actually helped a lot
11:49:07 <kallisti> Maybe is also an applicative so: Maybe (a -> b) -> Maybe a -> Maybe b
11:49:27 <kallisti> if you have a function wrapped with Just, you can apply other Maybe values to that function and receive a Maybe result.
11:49:29 <kallisti> :t ($)
11:49:30 <lambdabot> forall a b. (a -> b) -> a -> b
11:49:39 <kallisti> it's basically function application, within a parametric type.
11:52:11 <Labbekak> > last [1, 2, 3]
11:52:11 <lambdabot> 3
11:52:18 <Labbekak> sweet
11:52:28 <Ngevd> Labbekak, are you new to Haskell?
11:52:44 <Sgeo_> > last [1..]
11:52:45 <kallisti> Ngevd: hopefully that makes everything make a little more sense.
11:52:46 <Labbekak> Ngevd, yes :p
11:52:48 <lambdabot> mueval-core: Time limit exceeded
11:53:11 <Labbekak> how does whispering work?
11:53:11 <Ngevd> Labbekak, Haskell is almost the default non-esolang on this channel
11:53:21 <kallisti> Labbekak: what client are you using?
11:53:28 <Labbekak> webchat.freenode
11:53:30 <Sgeo_> qwebirc
11:53:36 <kallisti> Labbekak: in most clients you use the /msg command.
11:53:45 <kallisti> Labbekak: /msg <person> <stuff>
11:53:51 <Ngevd> /msg person message
11:53:52 <kallisti> Labbekak: and that usually opens another window
11:54:16 <Labbekak> oke thanks ;)
11:54:37 <kallisti> Labbekak: WoW?
11:54:39 <kallisti> :P
11:54:49 <kallisti> or basically any blizzard game.
11:54:52 <kallisti> with battle.net
11:55:03 <kallisti> "whispering" is the term used for private messages
11:55:05 <oerjan> 06:12:45: <kallisti> newtype T = T A
11:55:05 <oerjan> 06:12:57: <kallisti> T is not isomorphic to A because there is no equivalent to T _|_
11:55:22 <Sgeo_> o.O I already know what oerjan's going to say
11:55:25 <Labbekak> well i played some WoW yes
11:55:26 <oerjan> T _|_ = _|_ for newtypes, this is a main difference from data
11:55:33 <kallisti> oerjan: yes I realized that further.
11:55:33 <Labbekak> long time ago
11:55:41 <kallisti> oerjan: so I changed it to data. because it still applies there.
11:57:11 <Labbekak> last [1, 2, 3] * [1, 2, 3]
11:57:16 <kallisti> Labbekak: no
11:57:23 <kallisti> type error.
11:57:30 <Labbekak> :(
11:57:34 <kallisti> 3 * [1,2,3] = ?????
11:57:44 <Labbekak> APL knows :p
11:57:52 <kallisti> ah yes
11:57:55 <Ngevd> > map (* last [1,2,3]) [1,2,3]
11:57:56 -!- Sgeo has joined.
11:57:56 <lambdabot> [3,6,9]
11:58:05 -!- Sgeo_ has quit (Read error: Connection reset by peer).
11:58:05 <Labbekak> pff
11:58:07 <Sgeo> I can't even put this laptop in my lap anymore :(
11:58:16 <Ngevd> Haskell doesn't like people cheating
11:58:21 <kallisti> Labbekak: haskell has the restriction that multiplication requires the same type for both operands.
11:58:24 <kallisti> :t (*)
11:58:25 <lambdabot> forall a. (Num a) => a -> a -> a
11:58:56 <Sgeo> > last ((*) <$> [1,2,3] <*> [1,2,3])
11:58:57 <lambdabot> 9
11:59:06 <Sgeo> > (*) <$> [1,2,3] <*> [1,2,3]
11:59:07 <lambdabot> [1,2,3,2,4,6,3,6,9]
11:59:15 <Sgeo> A perfect demonstration of applicatives
11:59:22 <monqy> perfect?
11:59:27 <Ngevd> Sgeo, always the oppurtunist
11:59:47 <kallisti> cartesian product was way better, sheesh. :P
11:59:59 <kallisti> you should leave the teaching to me. :P
12:00:01 <kallisti> bahahahaha
12:00:02 <kallisti> ..
12:00:40 <Sgeo> > (*) <$> [x,y,z] <*> [x,y,z]
12:00:41 <lambdabot> [x * x,x * y,x * z,y * x,y * y,y * z,z * x,z * y,z * z]
12:00:49 <kallisti> yes that's good.
12:00:54 <kallisti> well
12:00:55 <kallisti> almost
12:01:04 <kallisti> > (*) <$> [a,b,c] <*> [x,y,z]
12:01:05 <lambdabot> [a * x,a * y,a * z,b * x,b * y,b * z,c * x,c * y,c * z]
12:01:06 <Sgeo> The spacing is bad
12:01:37 <kallisti> > Just (*) <$> Just a <*> Just b
12:01:37 <lambdabot> Couldn't match expected type `a1 -> a -> b'
12:01:38 <lambdabot> against inferred type `...
12:01:42 <Sgeo> Also, wasn't sure that a was the appropriate weird thing
12:01:46 <kallisti> hh
12:01:50 <kallisti> *huh
12:01:57 <Labbekak> > map ($ 3) [(*1), (*2), (*3)]
12:01:58 <lambdabot> [3,6,9]
12:02:00 <Sgeo> > Just (*) <*> Just a <*> Just b
12:02:01 <lambdabot> Just (a * b)
12:02:07 <kallisti> oh right
12:02:12 <kallisti> > (*) <$> Just a <*> Just b :
12:02:12 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
12:02:15 <kallisti> > (*) <$> Just a <*> Just b
12:02:16 <lambdabot> Just (a * b)
12:02:49 <Sgeo> :t pure
12:02:50 <lambdabot> forall a (f :: * -> *). (Applicative f) => a -> f a
12:03:09 <Sgeo> pure f <*> x <*> y is the same as f <$> x <*> y
12:03:32 <Sgeo> pure takes something and brings it into a functor
12:03:38 <kallisti> *applicative
12:03:44 <monqy> *Applicative
12:03:45 <Sgeo> For Maybe, it's ... kallisti's correct.
12:04:11 <kallisti> monqy: hahahaha silly humans and there significance of capitalization.
12:04:15 <Sgeo> For Maybe, it's Just. For lists, it's putting it in a singleton, like \a -> [a]
12:04:34 <kallisti> same as return for Monad, in... most cases.
12:04:43 <monqy> most cases?
12:04:50 <Sgeo> monqy, idiots exist.
12:04:50 <kallisti> most cases that appear in Haskell programs, yes.
12:04:58 <monqy> idiots? whats that
12:05:14 <Sgeo> Someone who has a pure and a return defined but they do different things?
12:05:19 <kallisti> monqy: dunno. they certainly don't exist on this channel.
12:05:21 <monqy> cries
12:05:24 -!- derdon has joined.
12:05:35 <kallisti> Sgeo: well the case I was thinking of is an Applicative that's not a Monad.
12:06:03 <Sgeo> Fair enough, I guess that's acceptable.
12:06:06 <Sgeo> But if return is defined...
12:06:15 <monqy> a bit funky with the way you worded it yeah but yeah
12:07:02 <kallisti> apologies. I imagine being slightly drunk is not the best time to be EXCELLENT MENTOR 2000.
12:07:17 <kallisti> PERFECT IN ALL WAYS AND STATEMENTS.
12:08:23 <monqy> 2000 is a lot of mentor
12:08:32 <monqy> maybe you should settle for perfect mentor 1999
12:08:39 <kallisti> too retro.
12:08:44 <kallisti> 2000 is FURUTISTSIC
12:10:08 <Labbekak> last [1..5]
12:10:10 <Phantom_Hoover> <monqy> idiots? whats that
12:10:19 <Labbekak> > last[1..5]
12:10:20 <lambdabot> 5
12:10:28 <kallisti> Ngevd: but yeah <$> and <*> make it easy to basically ignore the parametric type wrapping.
12:10:42 <monqy> huh??
12:10:44 <Phantom_Hoover> People who don't understand that monads etc. actually have laws you need to satisfy, not just type signatures.
12:10:50 <Phantom_Hoover> kallisti, ???
12:10:58 <Labbekak> last[1..(last[1..5])]
12:10:58 <kallisti> Ngevd: So, for exampke: lines <$> readFile "foo.txt"
12:11:06 <Labbekak> > last[1..(last[1..5])]
12:11:07 <lambdabot> 5
12:11:17 <Sgeo> :t enumFromTo
12:11:18 <lambdabot> forall a. (Enum a) => a -> a -> [a]
12:11:19 <kallisti> Ngevd: reads a file, splits it into lines, and returns that as the result of an IO action.
12:11:32 <Sgeo> Labbekak, [a..b] notion is syntactic sugar for a function
12:11:32 <monqy> kallisti: but you're not ignoring anything if you put a <$> in there.....
12:11:36 <Ngevd> kallisti, That would have type IO [String], right?
12:11:44 <Sgeo> [1..5] == enumFromTo 1 5
12:11:48 <kallisti> monqy: well, yes... the <$> is what makes the ignoring possible.
12:11:50 <kallisti> Ngevd: yes.
12:11:52 <Labbekak> ah
12:11:54 <Sgeo> [1..] == enumFrom 1
12:11:59 <Labbekak> > enumFromTo 1 5
12:12:00 <lambdabot> [1,2,3,4,5]
12:12:03 <Labbekak> right
12:12:04 <kallisti> monqy: it's.. well, ignoring is not the best way to describe it.
12:12:05 <monqy> kallisti: ignoring by not ignoring
12:12:06 <Ngevd> > enumTo 5
12:12:07 <lambdabot> Not in scope: `enumTo'
12:12:21 * Sgeo forgets what [1,3..] and [1,3..5] desugar to
12:12:26 <Sgeo> :t enumFromStep
12:12:27 <lambdabot> Not in scope: `enumFromStep'
12:12:30 <monqy> :t enumFromBy
12:12:31 <lambdabot> Not in scope: `enumFromBy'
12:12:33 <monqy> oop
12:12:37 <Sgeo> :t enumBy
12:12:38 <monqy> :t enumFromToBy
12:12:38 <Ngevd> > enumFromThenTo 1 3 9
12:12:38 <lambdabot> Not in scope: `enumBy'
12:12:39 <lambdabot> Not in scope: `enumFromToBy'
12:12:39 <lambdabot> [1,3,5,7,9]
12:12:40 <kallisti> monqy: but it allows you to apply functions to inner results of parametric types thereby ignoring the usual dance you would otherwise do with >>= and such.
12:12:41 <monqy> ooop
12:12:44 <Ngevd> I win
12:12:50 <monqy> oh then
12:13:14 <kallisti> perhaps that's a better way to describe what I mean.
12:13:27 <Sgeo> > take 20 (enumFromThen 1 3]
12:13:28 <Labbekak> map (+1) "Albert"
12:13:28 <lambdabot> <no location info>: parse error on input `]'
12:13:29 <Sgeo> > take 20 (enumFromThen 1 3)
12:13:30 <lambdabot> [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39]
12:13:35 <Labbekak> > map (+1) "Albert"
12:13:36 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
12:13:36 <lambdabot> arising from the literal `1...
12:13:51 <Sgeo> Labbekak, Strings are lists of Chars. Chars are not numbers.
12:13:59 <Labbekak> :p
12:14:01 <monqy> > map succ "Albert"
12:14:02 <lambdabot> "Bmcfsu"
12:14:12 <Ngevd> > map char (map (+1) (map ord "Albert"))
12:14:13 <lambdabot> Couldn't match expected type `GHC.Types.Char'
12:14:13 <lambdabot> against inferred type...
12:14:16 <monqy> > map (chr . (+1) . ord) "Albert"
12:14:17 <lambdabot> "Bmcfsu"
12:14:31 <Ngevd> > map chr (map (+1) (map ord "Albert"))
12:14:31 <lambdabot> "Bmcfsu"
12:14:32 <Labbekak> brb
12:15:37 -!- oerjan has quit (Quit: leaving).
12:15:58 <kallisti> Ngevd: (+) <$> (read . getLine) <*> (read . getLine)
12:16:18 <monqy> :t readLine
12:16:18 <lambdabot> Not in scope: `readLine'
12:16:20 <monqy> oop
12:16:26 <kallisti> Ngevd: here's an expression that reads two lines from stdin, converts them to numbers, and adds them together as the result of an IO action.
12:16:31 <Phantom_Hoover> getLine is going to be IO String.
12:16:34 <Phantom_Hoover> :t getLine
12:16:35 <lambdabot> IO String
12:16:36 <kallisti> er
12:16:39 <monqy> @hoogle Read a => IO a
12:16:40 <lambdabot> Prelude readLn :: Read a => IO a
12:16:40 <lambdabot> System.IO readLn :: Read a => IO a
12:16:40 <lambdabot> Prelude readIO :: Read a => String -> IO a
12:16:43 <kallisti> yes... my bad.
12:16:45 <monqy> ahh, readLn
12:17:01 <kallisti> Ngevd: (+) <$> readLn <*> readLn
12:17:06 * Phantom_Hoover has a pascback
12:17:22 <Phantom_Hoover> (it's a flashback but with pascal and it's really unpleasant)
12:17:36 <Ngevd> kallisti, we're ignoring errors, I presume?
12:17:44 <Ngevd> Pesky IO errors, that is
12:17:47 <kallisti> Ngevd: yes
12:17:55 <monqy> I have saved myself from pascbacks by not ever touching pascal, in the past
12:17:57 <kallisti> for those you would want to use catch, I believe.
12:18:38 <Sgeo> Is readLn any safer than read?
12:18:45 <kallisti> don't believe so.
12:18:48 <Ngevd> No, it's less safe
12:18:53 <kallisti> I think it's literally just read <$> getLine
12:19:02 <kallisti> @src readLn
12:19:02 <lambdabot> readLn = do l <- getLine; r <- readIO l; return r
12:19:13 <kallisti> @src readIO
12:19:14 <lambdabot> Source not found. You speak an infinite deal of nothing
12:19:23 <kallisti> yeah same thing I think.
12:19:34 <Sgeo> @source readLn
12:19:35 <lambdabot> readLn not available
12:19:51 <kallisti> Ngevd: no equally unsafe.
12:20:06 <kallisti> you can still catch the exception from readLn
12:20:35 <Ngevd> I have a bizarre concept of many things
12:21:04 <kallisti> me too.
12:21:21 <Ngevd> Including safety and money
12:21:34 <kallisti> safe money and unsafe money.
12:22:08 <Sgeo> unsafeBuySex
12:22:14 <monqy> sgeo.....
12:22:16 <kallisti> moniful safety and unmoniful safety.
12:31:01 <kallisti> Ngevd: oh by the way, functions are a Functor, Monad, and Applicative.
12:31:13 <Ngevd> It is very windy up here
12:31:22 <kallisti> it's pretty windy here as well.
12:31:29 <kallisti> (in Georgia (USA))
12:31:45 <Ngevd> Hmm...
12:31:49 <Labbekak> > :t chr. first
12:31:50 <lambdabot> <no location info>: parse error on input `:'
12:31:51 <Ngevd> Georgia, eg?
12:31:57 <kallisti> Labbekak: just :t
12:31:58 <Ngevd> :t chr . first
12:31:59 <lambdabot> Couldn't match expected type `Int'
12:31:59 <lambdabot> against inferred type `a (b, d) (c, d)'
12:31:59 <lambdabot> Expected type: a b c -> Int
12:32:03 <kallisti> :t first
12:32:04 <lambdabot> forall (a :: * -> * -> *) b c d. (Arrow a) => a b c -> a (b, d) (c, d)
12:32:05 <Phantom_Hoover> <kallisti> Ngevd: oh by the way, functions are a Functor, Monad, and Applicative.
12:32:06 <Phantom_Hoover> ??
12:32:13 <Phantom_Hoover> Do you mean (->r)?
12:32:16 <kallisti> ...yes.
12:32:20 <kallisti> nice nitpick.
12:32:20 <Ngevd> Which are functions
12:32:31 <kallisti> Labbekak: you want fst I think.
12:32:42 <kallisti> Labbekak: first is an Arrow thing, fst is a 2-tuple thing.
12:32:42 <monqy> it's a pretty important distinction??
12:32:53 <Ngevd> :t chr . fst
12:32:53 <lambdabot> forall b. (Int, b) -> Char
12:32:55 <monqy> i mean (->) vs (->r)
12:33:05 <Labbekak> I wasnt really thinking
12:33:07 <Ngevd> (->) isn't a function.
12:33:18 <kallisti> neither is (->r)
12:33:28 <kallisti> they're types.
12:33:29 <kallisti> >_>
12:33:33 * kallisti nitpick
12:33:43 <Ngevd> (->) does not represent the function type
12:33:51 <Sgeo> It's not (r->)?
12:33:52 <kallisti> well, yes it does.
12:33:58 <kallisti> oh... yes
12:33:59 <kallisti> it is.
12:34:02 <kallisti> it's ((->) r)
12:34:10 <kallisti> which is (r->) which is not valid Haskell.
12:34:28 <monqy> waht
12:34:43 <kallisti> monqy: is (r->) valid syntax in Haskell?
12:34:53 <monqy> that's not the wrong part
12:34:59 <monqy> iirc ((->) r) is (-> r) iirc
12:34:59 <monqy> oops
12:35:03 <kallisti> no..
12:35:07 <Sgeo> > (+) <$> (1+) <*> (2-) $ 5
12:35:08 <lambdabot> 3
12:35:09 <monqy> it's
12:35:11 <monqy> ~special~
12:35:17 <kallisti> monqy: .....no
12:35:25 <monqy> ok maybe im just tired
12:35:28 <Sgeo> Of course, lambdabot does its insane functions are numbers thing
12:35:31 <kallisti> :t return
12:35:31 <lambdabot> forall a (m :: * -> *). (Monad m) => a -> m a
12:35:36 <kallisti> :t const
12:35:36 <lambdabot> forall a b. a -> b -> a
12:35:48 <Ngevd> > const + 1
12:35:49 <lambdabot> Overlapping instances for GHC.Show.Show (a -> b -> a)
12:35:49 <lambdabot> arising from a use...
12:36:02 <kallisti> monqy: m = (b->)
12:36:06 * Phantom_Hoover realises he's forgotten which way round the function monad goes.
12:36:07 <Sgeo> Which sounds convenient, but Applicative for functions is simple enough when you develop some intuition about it
12:36:39 <Labbekak> \(l, n) -> map (chr . (+n) . ord) l
12:36:46 <monqy> kallisti: yeah im tired. i'll take your word for it because i cant think enough to do the stuff in my head
12:36:58 <kallisti> monqy: this makes me happy. :)
12:36:59 <Labbekak> > (\(l, n) -> map (chr . (+n) . ord) l) "Whatup" 5
12:37:00 <lambdabot> Couldn't match expected type `t1 -> t'
12:37:00 <lambdabot> against inferred type `[GHC....
12:37:02 <Sgeo> It's just the reader monad. The value you grab out of a function that's not fully applied is the result that the whole shebang will have when the whole shebang's argument is passed to the partially applied function.
12:37:10 <kallisti> monqy: because I'm not wrong by default.
12:37:20 <Sgeo> Wait, no
12:37:20 <kallisti> promising.
12:37:24 <Phantom_Hoover> Yeah, it's r ->.
12:37:29 <Phantom_Hoover> Oops.
12:37:33 <monqy> opse
12:37:40 <Sgeo> is the result that the function will have when the whole shebang's argument is passed to the partially applied function
12:37:49 <Sgeo> Reader monad without Reader:
12:38:21 <monqy> are you going to paste something
12:38:34 <Ngevd> Sgeo, monad?
12:38:35 <Sgeo> > do { x <- (+1); y <- (*5); return x+y} $ 1
12:38:36 <lambdabot> Occurs check: cannot construct the infinite type: a = m a
12:38:41 <Sgeo> ..?
12:38:48 <Ngevd> Reader monad without Reader
12:38:53 <Sgeo> > do { x <- (+1); y <- (*5); return (x+y)} $ 1
12:38:54 <lambdabot> 7
12:38:57 <Ngevd> I aspire to be a cruciverbalist
12:39:06 <kallisti> (>>=) f g x = g x (f x)
12:39:08 <Sgeo> > do { x <- (+1); y <- (*5); return (x,y)} $ 1
12:39:09 <lambdabot> (2,5)
12:39:17 <kallisti> I think..
12:39:18 <Sgeo> Ngevd, do you know what the Reader monad is?
12:39:40 <Ngevd> No
12:39:45 <Ngevd> I was making a joke
12:39:45 <kallisti> it reads. ha, ha.
12:39:52 * kallisti mad joke
12:40:05 <kallisti> (2x joke comob)
12:40:12 * kallisti 2x reference combo
12:40:15 <kallisti> (now 3)
12:40:25 <kallisti> aha ha
12:40:29 * Sgeo gives kallisti an A - -
12:40:46 <monqy> is that good or bad....
12:40:51 <kallisti> I can't tell.
12:40:52 <Sgeo> Worst grade imaginable
12:41:05 <Labbekak> > (\(l, n) -> map (chr . (+n) . ord) l) "Whatup" 5 -- it wont work
12:41:06 <lambdabot> Couldn't match expected type `t1 -> t'
12:41:06 <lambdabot> against inferred type `[GHC....
12:41:26 <Sgeo> Labbekak,
12:41:39 <kallisti> :t ord
12:41:40 <lambdabot> Char -> Int
12:41:45 <Sgeo> > (\l n -> map (chr . (+n) . ord) l) "Whatup" 5 -- this is how to do a multi-argument lambda
12:41:47 <lambdabot> "\\mfyzu"
12:42:02 <Labbekak> Aah oke thanks
12:42:23 <kallisti> and now I blow some peoples minds.
12:42:41 <kallisti> > (`replicateM` "abc") =<< [0..]
12:42:42 <lambdabot> ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a...
12:43:00 <Ngevd> AAAAH
12:43:01 <Labbekak> boom
12:43:02 <monqy> not the palindromes?
12:43:06 <kallisti> monqy: no
12:43:06 <Ngevd> mind.blown == true
12:43:13 <monqy> no....
12:43:13 <kallisti> but I use that to make palindromes yes.
12:43:16 <Sgeo> :t replicateM
12:43:17 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
12:43:31 * Sgeo gets it, he thinks
12:43:41 <kallisti> it has to do with how sequence works for lists.
12:43:54 <Sgeo> Well, almost get it
12:43:57 <kallisti> @src replicateM
12:43:58 <lambdabot> replicateM n x = sequence (replicate n x)
12:44:10 <kallisti> > sequence "abc" "def"
12:44:10 <lambdabot> Couldn't match expected type `m a'
12:44:10 <lambdabot> against inferred type `GHC.Types...
12:44:13 <monqy> goo
12:44:14 <kallisti> ....looool
12:44:14 <monqy> d
12:44:25 <kallisti> > sequence ["abc","def"]
12:44:26 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
12:44:38 <kallisti> > sequence ["abc","def","ghi"]
12:44:39 <lambdabot> ["adg","adh","adi","aeg","aeh","aei","afg","afh","afi","bdg","bdh","bdi","b...
12:44:45 <Sgeo> Labbekak, that is the same as:
12:44:56 <Sgeo> > (\l -> \n -> map (chr . (+n) . ord) l) "Whatup" 5 -- this is how to do a multi-argument lambda
12:44:57 <lambdabot> "\\mfyzu"
12:45:13 <Ngevd> > sequence "abc"
12:45:14 <lambdabot> Couldn't match expected type `m a'
12:45:14 <lambdabot> against inferred type `GHC.Types...
12:45:20 <Labbekak> ah yea
12:45:29 <kallisti> so for example if you have a situation where each position of a list can be a list of possibilities, and you want to determine the list of all possibilities...... this is a terrible explanation.
12:45:55 <kallisti> here look at this instead: http://sprunge.us/jFQe
12:45:58 <kallisti> good use of sequence
12:46:01 <Sgeo> But it's only a terrible explanation if you have a situation where each position of a list can be a list of possibilities!
12:46:21 <kallisti> you have a thing that's a list of the possible things at a given position in a list
12:47:12 <kallisti> and another list that's a list of the possible things at another given position in a list, etc.
12:47:12 <kallisti> > sequence ["abc", "def"]
12:47:12 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
12:47:13 <kallisti> "abc" is the list of possibilities for the first element
12:47:13 <kallisti> "def" for the second
12:47:13 <monqy> > sequence [["excellent", "good", "great"], ["work", "job", "hello"]]
12:47:13 <monqy> oh no did i mess it
12:47:13 <lambdabot> [["excellent","work"],["excellent","job"],["excellent","hello"],["good","wo...
12:47:22 <kallisti> so in http://sprunge.us/jFQe
12:47:22 <monqy> oh my connection just for a few seconds
12:47:35 <kallisti> I use sequence to output the possibilities for the letter sequences of a telephone number
12:47:53 <kallisti> (back in the day number pads on telephones had these letters on them and you could use them to spell out stuff...)
12:48:00 <monqy> i used sequence to make compliments
12:48:17 <monqy> like excellent hello
12:48:40 <kallisti> so anyway if you do sequence (replicate n ls)
12:48:43 <kallisti> where ls = "abc"
12:48:47 <kallisti> then you're basically saying
12:48:56 <kallisti> sequence ["abc", "abc", ..., "abc"]
12:48:59 <kallisti> up to n
12:49:18 <kallisti> > sequence ["abc", "abc", "abc"]
12:49:19 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
12:49:28 <kallisti> possible combinations of a, b, and c of link 3
12:49:30 <kallisti> so then...
12:49:42 <Sgeo> Ngevd, you should learn the Reader monad
12:49:50 <kallisti> (`replicateM` "abc") =<< [0..]
12:50:05 <monqy> or the Env Comonad because excitement
12:50:11 <kallisti> just concatenates all of those lists together, for every length n.
12:50:21 <kallisti> s/link/length/
12:50:39 <Ngevd> Sgeo, wait 'till I've learnt monads
12:50:49 <kallisti> oh
12:50:54 <Sgeo> Learning how to use a monad is different from learning how monads work.
12:50:55 <kallisti> yes that's a good thing to learan
12:51:32 <kallisti> s/how monads work/what a monad is/
12:51:42 <monqy> what monad work, how monad is
12:51:54 <kallisti> monqy: monad is but doesn't wor.
12:51:56 <kallisti> k
12:51:57 <kallisti> .
12:52:01 <kallisti> wor.k.
12:52:15 <monqy> is friendship a monad
12:52:24 <kallisti> no you can escape friendship.
12:52:29 -!- Labbekak has quit (Quit: Page closed).
12:52:34 <monqy> is friendship a comonad
12:52:39 <kallisti> uh...
12:52:40 <kallisti> maybe?
12:52:46 <monqy> what is dual to friendship
12:52:48 * Sgeo hits kallisti with a bunch of functions whose name begins with run
12:52:57 <kallisti> not monadic functions
12:53:02 <kallisti> not monad things.
12:53:06 <monqy> runs don't exist
12:53:08 <monqy> sorry sgeo
12:53:26 <kallisti> runList = head
12:53:30 <kallisti> LOL MONADS CAN BE ESCAPED FROM
12:53:37 <kallisti> no
12:53:38 <monqy> runlist is a filthy lie
12:53:39 <kallisti> there is no escape
12:53:41 * Sgeo did not say in general
12:53:43 <kallisti> you will die in monad forever.
12:53:58 <Sgeo> Just that it's wrong to say no monads can be escaped from for limited definitions of escape
12:54:06 <kallisti> but
12:54:10 <monqy> unsafePerformIO
12:54:13 <kallisti> you can't escape friendship monad
12:54:16 <kallisti> proven fact
12:54:16 <monqy> unsafeCoerce
12:54:16 <kallisti> QED
12:54:28 -!- pikhq has quit (Quit: See ya Sunday).
12:54:30 <kallisti> er
12:54:34 <kallisti> you can escape friendship not-monad
12:54:34 <monqy> uh
12:54:36 <kallisti> QED
12:54:42 <monqy> good
12:55:07 <monqy> with comonads you can make a friendship-friendship
12:55:23 <kallisti> monqy: ARE OUR FRIENDSHIPS FRIENDSHIPS
12:55:26 * Sgeo doesn't quite understand comonas
12:55:29 <Sgeo> comonads
12:55:34 <kallisti> Sgeo: think like monad but backwards.
12:55:36 <kallisti> flipped turnways
12:55:41 <monqy> they're pretty much the same
12:56:00 <kallisti> no they are opposites.
12:56:05 <kallisti> are opposites the same?
12:56:05 <monqy> i.e. the same
12:56:07 <monqy> yes
12:56:10 <kallisti> oh okay
12:56:12 <kallisti> they are the same.
12:56:15 <monqy> Sgeo: if you think Reader is a good example Monad, take a look at Env
12:56:31 <monqy> Sgeo: it may or may not even be conceptually simpler than Reader
12:56:39 * kallisti thinks Maybe is a good example monad.
12:56:48 <Sgeo> What is comaybe?
12:56:51 <kallisti> it's like... the bare minimum
12:56:53 <kallisti> of what you need
12:56:54 <kallisti> to be a monad.
12:56:59 <kallisti> kind of.
12:57:00 <kallisti> not really.
12:57:04 <Sgeo> kallisti, you mean, other than trivial stuff?
12:57:08 <kallisti> yes.
12:57:19 <Sgeo> The Trivial monad
12:57:27 <Sgeo> Running from his alter-ego, Identity
12:58:00 <kallisti> I don't think maybe is a comonad...
12:58:08 <kallisti> extract = ???
12:58:24 <kallisti> (partial functions are cheating)
12:58:36 <kallisti> anyway I'll bbl.
12:59:51 <monqy> I don't know of anything that could reasonably be called comaybe
13:00:00 <monqy> but Maybe is an Extend
13:00:54 <Sgeo> Maybe if I saw examples of Env in use...
13:01:12 -!- kallisti has quit (Read error: Operation timed out).
13:02:02 <monqy> Env: (some state, some value)
13:02:07 <monqy> Reader: some state -> some value
13:07:24 <monqy> I'd example but I can't think of anything interestjing
13:08:15 -!- monqy has quit (Quit: hello).
13:13:55 <Phantom_Hoover> :i Env
13:14:33 <Phantom_Hoover> <Sgeo> comonad
13:15:20 <Phantom_Hoover> ISTR from that cothings in category theory are what you get when you reverse the direction of morphisms or something.
13:16:22 <Phantom_Hoover> Like, rather than having f : X → Y, F : C → D, F(f) : F(X) → F(Y), you have F(f) : F(Y) → F(X).
13:16:35 <Phantom_Hoover> So I suppose a comonad would... hmm.
13:18:14 <Phantom_Hoover> Oh, also F(f . g) = F(g) . F(f).
13:19:52 <Sgeo> >t liftA2 (+) id id 5
13:19:58 <Sgeo> > liftA2 (+) id id 5
13:19:58 <lambdabot> 10
13:21:02 <Phantom_Hoover> Yeah, comonads are monads with all the function types reversed.
13:23:56 -!- kallisti has joined.
13:23:57 -!- kallisti has quit (Changing host).
13:23:57 -!- kallisti has joined.
13:24:25 -!- PatashuXantheres has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:25:08 <kallisti> hi my name is kallist i
13:26:29 <Ngevd> Hello, kallist. My name is Taneb|Lunch
13:26:33 -!- Ngevd has changed nick to Taneb|Lunch.
13:26:47 <kallisti> Taneb|Lunch: mmmm delicious
13:37:11 <kallisti> Taneb|Lunch: http://sprunge.us/jFQet
13:37:22 <kallisti> you should examine this awesome program.
13:37:45 <Phantom_Hoover> jFQet not found
13:37:49 <Phantom_Hoover> best program?
13:38:16 <kallisti> Taneb|Lunch: http://sprunge.us/jFQe
13:38:18 <kallisti> oopse
13:39:14 <kallisti> Taneb|Lunch: it's one of those questions that's asked on job interviews.
13:39:28 <kallisti> Given a telephone number print all of the possible character sequences that it forms.
13:46:12 -!- Taneb|Lunch has changed nick to Ngevd.
13:46:13 <Ngevd> Back
13:47:19 <kallisti> actually I don't know why I import Control.Applicative.
13:48:11 -!- incomprehensibly has joined.
13:48:18 <Ngevd> The Times Person of the Year 2011... died in 2010
13:48:23 <kallisti> `welcome incomprehensibly
13:48:26 <HackEgo> incomprehensibly:
13:48:37 <incomprehensibly> hello
13:48:41 <Ngevd> `welcome
13:48:45 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
13:48:48 <kallisti> weird.
13:48:57 <Ngevd> `cat bin/welcome
13:49:01 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
13:49:55 <incomprehensibly> `welcome test
13:49:58 <HackEgo> test: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
13:50:08 <incomprehensibly> `welcom Ngevd
13:50:11 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcom: not found
13:50:14 <incomprehensibly> `welcome Ngevd
13:50:17 <HackEgo> Ngevd: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
13:50:19 <Ngevd> `welcome incomprehensibly
13:50:23 <HackEgo> incomprehensibly: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
13:50:26 <incomprehensibly> ah
13:50:37 <incomprehensibly> back to normal
13:51:55 <kallisti> Ngevd: anyway it's a pretty un-noteworthy program, except that I use the monad over lists to do something.
13:52:43 <kallisti> also I use lookup for lists, but in a "real program" you'd usually want to use Data.Map's lookup instead.
13:53:35 <kallisti> lookup on [(a,b)] is O(n) worst case. lookup on Map a b is O(log n) worst case.
13:56:52 <kallisti> :t (M.fromList undefined <$>)
13:56:53 <lambdabot> Couldn't match expected type `a -> b'
13:56:53 <lambdabot> against inferred type `M.Map k a1'
13:56:53 <lambdabot> In the first argument of `(<$>)', namely `M.fromList undefined'
13:57:07 <kallisti> oh, yes.
13:57:13 <kallisti> :t fmap (M.fromList undefined)
13:57:14 <lambdabot> Couldn't match expected type `a -> b'
13:57:14 <lambdabot> against inferred type `M.Map k a1'
13:57:14 <lambdabot> In the first argument of `fmap', namely `(M.fromList undefined)'
13:57:20 <kallisti> oh, yes, indeed
13:57:29 <kallisti> :t (<$> M.fromList undefined)
13:57:30 <lambdabot> forall a b k. (Ord k) => (a -> b) -> M.Map k b
13:58:28 <kallisti> ah okay. But I doubt Data.Map has an Applicative instance because there's no Ord instance for functions.
14:02:56 <kallisti> oh wait it doesn't need an ord instance...
14:03:26 <Ngevd> I'm going to do something else for a bit
14:03:28 <Ngevd> Bye!
14:03:29 -!- Ngevd has quit (Quit: Goodbye).
14:04:26 <kallisti> hm weird.
14:04:41 <kallisti> ah I guess pure is difficult to define for Map.
14:05:53 <incomprehensibly> I think for a pure for lists, you need to make it an infinite list rather than a singleton
14:05:54 <incomprehensibly> right?
14:06:01 <incomprehensibly> or else <*> doesn't work right always
14:06:07 <kallisti> erm, pure for lists works fine.
14:06:10 <kallisti> > pure 1
14:06:11 <lambdabot> No instance for (GHC.Show.Show (f t))
14:06:11 <lambdabot> arising from a use of `M1276157568...
14:06:14 <kallisti> ...
14:06:18 <copumpkin> lol
14:06:31 <kallisti> > pure 1 :: [Int]
14:06:32 <lambdabot> [1]
14:07:07 <kallisti> lambdabot: why can't you read my mind???
14:08:09 <incomprehensibly> > (pure (+1)) <*> [1, 2, 3]
14:08:10 <lambdabot> [2,3,4]
14:08:12 <incomprehensibly> oh
14:08:37 <incomprehensibly> > [(+1), (+2)] <*> [1, 2, 3]
14:08:38 <lambdabot> [2,3,4,3,4,5]
14:08:48 <incomprehensibly> oh
14:08:54 <kallisti> incomprehensibly: perhaps you were thinking of zipWith ($)
14:08:57 <incomprehensibly> I thought <*> was like zipWtih ($)
14:08:58 <incomprehensibly> yeah
14:09:34 <incomprehensibly> what's a good objective-c channel?
14:09:39 <kallisti> no such thing.
14:09:43 <kallisti> (I don't know)
14:09:45 <incomprehensibly> ok
14:09:55 <incomprehensibly> because I need to ask a question somewhere
14:10:05 <kallisti> you could try #objective-c but I don't if that's a thing.
14:10:14 <incomprehensibly> nope
14:10:31 <kallisti> ... #iphone maybe? I doubt it.
14:10:36 <kallisti> try to find like an iphone dev channel
14:10:42 <kallisti> or... an objective-c channel.
14:10:45 * kallisti helpful.
14:11:07 <incomprehensibly> #iphonedev is it
14:11:12 <incomprehensibly> although I figured out my problem myself :P
14:11:26 <kallisti> that's always good.
14:19:00 <kallisti> "The Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions."
14:19:05 <kallisti> untrue, Haskell docs
14:19:13 <kallisti> (that it's helpful to think of them that way)
14:23:54 <Phantom_Hoover> incomprehensibly, have you been here before?
14:24:12 <incomprehensibly> Phantom_Hoover: yeah, I lurk a lot and occasionally talk
14:24:22 <incomprehensibly> kallisti: yeah, that pisses me off
14:24:42 <incomprehensibly> about the only place it fits is like IO and State
14:24:53 <Phantom_Hoover> It also fits in List and Maybe.
14:24:58 <incomprehensibly> for [], Maybe, etc., it's completely off
14:25:03 <incomprehensibly> it does not fit them in any way whatsoever
14:25:03 <Phantom_Hoover> Nope.
14:25:10 <incomprehensibly> a list is not an action. it's the results of an action.
14:25:12 <Phantom_Hoover> Maybe is obviously computations which can fail.
14:25:13 <kallisti> eh, it fits sort of.
14:25:18 <kallisti> it's just not /helpful/ for learning.
14:25:21 <incomprehensibly> no, Maybe is the *answers* to those computations.
14:25:25 <kallisti> "oh actions... okay what does that mean"
14:25:33 <incomprehensibly> IO actually encodes actions
14:25:42 <kallisti> incomprehensibly: Maybe represents sequencing actions that can possibly fail.
14:25:48 <incomprehensibly> as in, you have putStrLn "something" or getLine, and those are actions that you can do
14:25:52 <Phantom_Hoover> List is trickier, but when you think about it the monad represents nondeterministic computation.
14:25:53 <kallisti> list represents sequencing actions with many possible results.
14:25:54 <kallisti> it kind of fits.
14:25:57 <incomprehensibly> kallisti: yes, but a value of type Maybe a is *not* an action.
14:26:03 <incomprehensibly> a value of type list is *not* an action.
14:26:09 <incomprehensibly> so the type doesn't represent actions.
14:26:11 <kallisti> oh, well, yes.
14:26:13 <kallisti> neither is State.
14:26:13 <Phantom_Hoover> Yes, it does.
14:26:19 <incomprehensibly> Phantom_Hoover: how…?
14:26:24 <incomprehensibly> IO is like a list of instructions
14:26:26 <incomprehensibly> it encodes an action
14:26:27 <Phantom_Hoover> A value of type Maybe is an action which can either result in a value or fail.
14:26:29 <incomprehensibly> but Maybe and list do not
14:26:37 <incomprehensibly> Phantom_Hoover: how is Just 3 an action?
14:26:40 <incomprehensibly> how is Nothing an action?
14:26:48 <incomprehensibly> that's the results of an action which has already been done.
14:26:55 <Phantom_Hoover> Same way (return 3) :: IO Int is an action.
14:27:05 <incomprehensibly> return 3 can be later *executed*.
14:27:08 <incomprehensibly> same as State
14:27:14 <Phantom_Hoover> Define 'executed' here.
14:27:26 <incomprehensibly> in the case of IO, handed to the Haskell runtime and performed
14:27:35 <incomprehensibly> in the case of State, handed an input value, right?
14:27:45 <incomprehensibly> and functions are monads, right?
14:27:55 <incomprehensibly> giving them an argument is executing that action
14:27:56 <Phantom_Hoover> Yes; this came up earlier today.
14:28:04 <incomprehensibly> however, for Just 3, there's no way to execute that
14:28:15 <incomprehensibly> Maybe does not encode actions. it just encodes values that can be the results of actions.
14:29:13 <incomprehensibly> saying that Just 3 is an action is the same type of confusion as saying that getLine is a String.
14:29:22 <incomprehensibly> in the opposite direction
14:29:22 <Phantom_Hoover> How?
14:29:28 <Phantom_Hoover> getLine is manifestly not a String.
14:29:35 <incomprehensibly> yep, and Just 3 is manifestly not an action.
14:29:44 <incomprehensibly> say you have an IO (Maybe a)
14:29:48 <Phantom_Hoover> Action is not a type.
14:29:50 <incomprehensibly> *that* is an action that can succeed or fail
14:29:59 <incomprehensibly> whereas Maybe a is just the answer to that action.
14:30:08 <Phantom_Hoover> It's a concept we're assigning to certain things.
14:30:35 <incomprehensibly> and I'm saying it makes no sense to assign it to Just 3.
14:30:38 <incomprehensibly> is 3 an action?
14:31:02 <incomprehensibly> if Just 3 is an action, 3 is too.
14:31:22 <Phantom_Hoover> You seem to be saying that a monad is an action if there's a function m a -> a.
14:31:35 <kallisti> I think you're confusing "action" with "things that perform side-effects". and you think we're saying "action" means "value"
14:31:40 <incomprehensibly> no, because there is no function for that with IO
14:31:42 <kallisti> State is not an action by your own definition.
14:32:04 <incomprehensibly> ok, forget State
14:32:09 <incomprehensibly> look at Parsec
14:32:21 <incomprehensibly> although State is an action by my own definition
14:32:27 <incomprehensibly> because it encodes an action that you can later perform
14:32:33 <Phantom_Hoover> What *is* your own definition?
14:32:51 <incomprehensibly> what's yours?
14:32:56 <incomprehensibly> I just stated mine
14:33:17 <Phantom_Hoover> Does fromMaybe count as an action by your definition?
14:33:19 <kallisti> incomprehensibly: "encodes an action that you can later perform" describes any lazily evaluated expression.
14:33:26 <kallisti> you realize that State is implemented with pure code, yes?
14:33:31 <incomprehensibly> ok, then every value in Haskell is now an action
14:33:37 <incomprehensibly> kallisti: yes, I realize that.
14:33:38 * incomprehensibly sighs
14:33:39 <Phantom_Hoover> After all, it's doing no more than 'executing' State.
14:33:57 <incomprehensibly> if lazily evaluated values, thunks, etc., are actions, then every single value in Haskell is an actino
14:34:13 <incomprehensibly> but there's *still* an abstract difference between State, ->, IO, etc. than 3
14:34:13 <kallisti> foldr "executes" a list.
14:34:33 <kallisti> incomprehensibly: we're not talking about 3
14:34:36 <kallisti> we're talking about Maybe a
14:34:38 <kallisti> or [a]
14:34:47 <incomprehensibly> ok, well what's the difference between [3] and Just 3 and 3 in terms of action-ness?
14:35:48 <incomprehensibly> because if [3] is an action because of lazy evaluation, the exact same logic applies to 3.
14:36:13 <Phantom_Hoover> It occurs to me that Identity 3 is basically the same as what you're saying about 3.
14:36:42 <kallisti> hm this is basically a semantic thing around the meaning of "action"
14:37:12 <incomprehensibly> I'm saying, people are confusing levels of a hierarchy by saying that the list monad is an actino
14:37:14 <incomprehensibly> action*
14:37:33 <kallisti> I don't think [a] represents an action so much as it represents a value within an action. specifically, a value with zero or more possible values, with >> and >>= acting as a means to sequence computations over these values.
14:37:54 <incomprehensibly> lists do not represent actions.
14:38:00 <incomprehensibly> values of type IO do represent actions.
14:38:11 <Phantom_Hoover> Why?
14:38:26 <incomprehensibly> because lists are plain old values
14:38:29 <incomprehensibly> IO is also plain old values
14:38:34 <kallisti> therefore?
14:38:36 <incomprehensibly> but it's also instrucitons you can execute
14:38:37 <Phantom_Hoover> After all, IO is conceptually just State RealWorld, and State is no more esoteric than a list.
14:38:53 <incomprehensibly> yes, but State is an action you can perform
14:38:55 <incomprehensibly> so is ->
14:39:15 <incomprehensibly> I don't get what consing 3 with [] does to it that makes it an action
14:39:19 <incomprehensibly> it's still a number
14:39:24 <incomprehensibly> it doesn't tell you how to do something
14:39:48 <kallisti> if State represents an action
14:39:51 <kallisti> so does tuples.
14:40:00 <incomprehensibly> sure, you can do some godel encoding stuff and encode actions of type IO in Ints, but then you're missing the point: my definition of action is not defined by the type system
14:40:04 <incomprehensibly> it's defined by how the type is used
14:40:22 <Phantom_Hoover> kallisti, Writer is the tuple monad.
14:40:55 <incomprehensibly> so sure, you can say foldl "executes" a list, and if the list somehow encodes things that foldl can do, and you can frame it that way, then lists are actions. but lists are not being used as actions in the list monad
14:41:05 <incomprehensibly> also, the Identity monad is not an action like -> is
14:41:24 <incomprehensibly> Id is a plain old container
14:41:46 <incomprehensibly> and when you do Id 1 >>= (Id . (+1)), the value you get is just Id 2
14:42:04 <incomprehensibly> you don't get instructions describing how to take a value and add one to it
14:42:07 <Phantom_Hoover> I'm afraid that you appear to be hopelessly confused, and as I am myself slightly more hopefully confused I can't really help.
14:42:08 <kallisti> incomprehensibly: I'm saying that your own definition is inconsistent because it permits State to be an action but not a list.
14:42:19 <Phantom_Hoover> If you wait until elliott turns up, he can probably yell at you for a while.
14:42:47 <incomprehensibly> kallisti: my definition is not inconsistent because there's no boolean predicate over types that tells you whether it's an action!
14:43:02 <kallisti> so it's your own whim
14:43:02 <incomprehensibly> it's just how you use it
14:43:02 <kallisti> okay
14:43:04 <kallisti> can't argue that.
14:43:06 * incomprehensibly sighs
14:43:06 <kallisti> carry on.
14:43:09 <incomprehensibly> no, it's not my own whim
14:43:12 <incomprehensibly> it's in how the type is used.
14:43:15 <kallisti> so it has criteria
14:43:16 <incomprehensibly> so you can use lists as actions
14:43:20 <Phantom_Hoover> <incomprehensibly> kallisti: my definition is not inconsistent because there's no boolean predicate over types that tells you whether it's an action!
14:43:29 <Phantom_Hoover> Sure there is; the one in your head.
14:43:41 <incomprehensibly> Phantom_Hoover: yes, but there are more arguments than just the specification of the type
14:43:48 <incomprehensibly> such as, how it is currently being used.
14:44:03 <Phantom_Hoover> Of course, the action is not determined by the type alone, but by what return and >>= are, but that scarcely matters.
14:44:28 <incomprehensibly> there's a difference between const 3 and 3.
14:44:33 <incomprehensibly> the first is an action that returns 3
14:44:38 <Phantom_Hoover> Erm, wait, *type transformer or whatever.
14:44:41 <incomprehensibly> and the second is just the plain old 3
14:44:50 <incomprehensibly> the same thing is true of const [3] and [3]
14:44:58 <incomprehensibly> the first is a function that can return multiple values
14:45:02 <incomprehensibly> and the second *is* those multiple values
14:45:09 <incomprehensibly> const (Just 3) is the same thing
14:45:15 <incomprehensibly> it's a function that can possibly succeed or fail
14:45:17 <incomprehensibly> it happens to succed
14:45:26 <incomprehensibly> Just 3 is not an action that can succeed or fail, but the *answer* to such an action.
14:45:33 <Phantom_Hoover> You are definitely hopelessly confused here.
14:45:36 <incomprehensibly>
14:45:37 <incomprehensibly> how?
14:45:56 <Phantom_Hoover> Try going into #haskell, there should be some not very confused at all people in there.
14:46:00 <incomprehensibly> I'm making a distinction between layers of a hierarchy
14:46:05 <incomprehensibly> stop being so patronizing
14:46:24 <Phantom_Hoover> I'm not being patronising, you're just really confused.
14:46:28 <incomprehensibly> no, I'm not really confused.
14:46:29 <kallisti> incomprehensibly: IO (IO a) IO a is just a value you get form an action, not an action itself. etc.
14:46:41 <kallisti> *from
14:46:44 <incomprehensibly> if you're calling Just 3 an action, you're really confused, and I don't see how you have any grounds tro call me confused
14:46:59 <Phantom_Hoover> Unfortunately, my own definition of 'action' is itself a rather nebulous thing which can only function if you aren't looking it too closely.
14:47:02 <incomprehensibly> kallisti: yep, that's true! however, IO a is *also* an action itself.
14:47:07 <Phantom_Hoover> Schrodinger's definition, if you will.
14:47:08 <incomprehensibly> it's a hierarchy
14:47:27 <Phantom_Hoover> Where the hell did you arrive at hierarchies from.
14:47:28 <incomprehensibly> kallisti: IO (IO a) is an action that returns an action that returns another value that may or may not be an action, depending on what it is and how it's uisd
14:47:30 <incomprehensibly> used*
14:47:30 <kallisti> incomprehensibly: which suddenly fails on lists and maybe. not only does it fail, it can be demonstrated to fail because of the examples you provide above.
14:47:35 <Phantom_Hoover> Seriously, go into #haskell now.
14:47:36 <incomprehensibly> Phantom_Hoover: not tree hierarchies
14:47:38 <incomprehensibly> Phantom_Hoover: just levels
14:47:47 * incomprehensibly sighs
14:47:53 <incomprehensibly> how is Just 3 an action?
14:47:56 <incomprehensibly> can we go back to that?
14:47:57 <kallisti> incomprehensibly: >>=
14:47:57 <Phantom_Hoover> I don't know that much about monads, and kallisti knows less than he thinks he does.
14:47:58 <kallisti> and >>
14:47:59 <kallisti> and return
14:48:10 <Phantom_Hoover> s/and >>//
14:48:13 <incomprehensibly> kallisti: using >>= is performing an action
14:48:22 <incomprehensibly> but that doesn't mean Just 3 is an action
14:48:28 <Phantom_Hoover> incomprehensibly, yes, it does.
14:48:37 <incomprehensibly> Just 3 >>= (Just . (+1))
14:48:41 <Phantom_Hoover> By using >>= on Just 3, you are performing the associated action.
14:48:44 <incomprehensibly> that's not building up an action
14:48:49 <kallisti> incomprehensibly: so then IO is also not an action
14:48:49 <Phantom_Hoover> i.e. succeeding with a value or failing.
14:48:52 <kallisti> using >>= on IO a is an action
14:48:54 <incomprehensibly> Phantom_Hoover: ok, you're *performing the associated action*
14:48:57 <incomprehensibly> so Just 3 is not an action itself
14:49:01 <Phantom_Hoover> Yes, it is.
14:49:03 <incomprehensibly> it's a value, with an associated action.
14:49:30 <incomprehensibly> because Just 3 is a very different thing from the code that performs Just 3 >>= (Just . (+1))
14:49:36 <Phantom_Hoover> Maybe a contains actions which either succeed, resulting in a value, or fail, resulting in Nothing.
14:49:40 <kallisti> incomprehensibly: except when that code returns Just 3
14:49:44 <kallisti> then they're the same
14:49:45 <kallisti> suddenly
14:49:51 * incomprehensibly sighs
14:49:59 <incomprehensibly> the code is different from the value that it returns
14:50:08 <incomprehensibly> just like const 3 is different from 3
14:50:12 <incomprehensibly> just like IO a is different from a
14:50:12 <Phantom_Hoover> [a] contains actions which result in a list of values.
14:50:14 <kallisti> and id 3 is different from 3
14:50:15 <incomprehensibly> how can you not comprehend this
14:50:30 <incomprehensibly> Phantom_Hoover: no, [a] encodes those lists of values itself
14:50:51 <incomprehensibly> Phantom_Hoover: a -> [b] is an example of an action that returns multiple values
14:50:53 <incomprehensibly> or IO [a]
14:51:01 <incomprehensibly> kallisti: id 3 is equal to 3
14:51:05 <kallisti> incomprehensibly: you're not going to get anywhere by repeating yourself.
14:51:18 <kallisti> incomprehensibly: Just 3 >>= (Just . (+1)) is equal to Just 4
14:51:22 <kallisti> therefore Just 4 is an action.
14:51:29 <incomprehensibly> does not follow
14:51:38 <kallisti> k
14:51:39 <Phantom_Hoover> State r a contains actions which produce a value from some state r, and can alter r in the process.
14:51:42 <kallisti> then your definition is inconsistent.
14:51:46 <incomprehensibly> how?
14:51:56 <incomprehensibly> Phantom_Hoover: correct
14:52:12 <Phantom_Hoover> How is that different from either [a] or Maybe a.
14:52:19 <incomprehensibly> does lambdabot know about the function monad?
14:52:23 <Phantom_Hoover> Yes.
14:52:43 <incomprehensibly> > const 3 >>= (const . id)
14:52:44 <lambdabot> Overlapping instances for GHC.Show.Show (b -> a)
14:52:44 <lambdabot> arising from a use of `...
14:52:51 <incomprehensibly> > const 3 >>= (const . (+1)) ()
14:52:51 <lambdabot> Couldn't match expected type `b -> b1' against inferred type `()'
14:53:01 <incomprehensibly> > (const 3 >>= (const . (+1))) ()
14:53:01 <Phantom_Hoover> The function monad contains actions which produce a value from some constant.
14:53:03 <lambdabot> 4
14:53:53 <kallisti> as far as I can tell your definition of action is:
14:54:05 <kallisti> a) IO values b) State values c) code written with >>= and >>
14:54:11 <kallisti> which is a really useless definition of action.
14:54:22 <incomprehensibly> this is an incredibly frustrating conversation, and I am not enjoying the way you are all talking down to me. I have thought through this position, and I've used Haskell. I'm not a baby. You don't have to act like I'm one.
14:54:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:54:46 <Phantom_Hoover> incomprehensibly, I'm not.
14:55:04 <kallisti> incomprehensibly: saying you're wrong is different from talking down to you.
14:55:08 <incomprehensibly> Phantom_Hoover: "you're very confused. go talk to #haskell and they'll fix you up right quick"
14:55:18 <incomprehensibly> yeah, you're not at all
14:55:20 <Phantom_Hoover> But I barely have any idea of what I'm talking about, and kallisti doesn't have much more.
14:55:38 <Phantom_Hoover> In #haskell, there are, surprise surprise, people who know what they are talking about.
14:55:46 <incomprehensibly> ok, imagine a piece of paper that has, written on it, the words "wash your hands".
14:56:02 <incomprehensibly> now imagine a person washing their hands
14:56:13 <incomprehensibly> now imagine that person's hands before, dirty, and after, clean.
14:56:22 <Phantom_Hoover> I wish you could force people to join channels.
14:56:30 <incomprehensibly> I am in #haskell.
14:56:30 <kallisti> try invite
14:56:51 <Phantom_Hoover> I wish you could force people to talk in another channel.
14:56:56 <Phantom_Hoover> Maybe I can paste everything you say?
14:57:05 <Phantom_Hoover> Thank you.
14:59:04 <kallisti> incomprehensibly: btw in your metaphor values of type IO a are the paper saying "wash your hands"
14:59:15 <incomprehensibly> yep
14:59:22 -!- elliott has joined.
14:59:32 <elliott> i'm quitting stack overflow if this guy keeps asking terrible questions
14:59:36 <lambdabot> elliott: You have 5 new messages. '/msg lambdabot @messages' to read them.
14:59:46 <Phantom_Hoover> Oh, speak of the devil and he shall appear ten minutes after you needed him.
15:00:00 <incomprehensibly> kallisti: and Maybe a would be a type that either includes clean hands or failure
15:00:18 <incomprehensibly> elliott: what makes Just 3 an action that doesn't make 3 an action too
15:00:25 <kallisti> incomprehensibly: State does not match your metaphor
15:00:44 <incomprehensibly> kallisti: how does it not
15:00:45 <kallisti> state is not a piece of paper that encodes an action to do anything (aka it doesn't represent a side-effect to be performed)
15:00:49 <Phantom_Hoover> incomprehensibly, the fact that 3 doesn't have bind or return defined?
15:00:56 <incomprehensibly> doing something doesn't have to mean performing a side effect
15:01:05 <incomprehensibly> it can mean transforming a pure value
15:01:21 <Phantom_Hoover> You seem to have confused monads with functions.
15:01:27 * incomprehensibly sighs
15:01:31 <Phantom_Hoover> This is quite difficult, and I applaud your perseverance.
15:01:31 <incomprehensibly> you seem to have confused what I'm saying.
15:01:45 <incomprehensibly> Phantom_Hoover: you say you're not talking down to me
15:01:46 <kallisti> incomprehensibly: State does not transform anything
15:01:48 <kallisti> neither does IO
15:01:57 <kallisti> for that matter
15:01:59 <incomprehensibly> but you'er putting zero effort into understanding me, then treating me like I don't know anything
15:02:08 <incomprehensibly> you're talking down to me
15:02:11 <incomprehensibly> you're being an asshole
15:02:23 <Phantom_Hoover> incomprehensibly, I'm talking down to you now, because I dislike people who assume that because they don't understand things, those things are flawed.
15:02:23 <incomprehensibly> kallisti: watch this
15:02:32 <elliott> <incomprehensibly> elliott: what makes Just 3 an action that doesn't make 3 an action too
15:02:34 <incomprehensibly> Phantom_Hoover: I understand those things, probably better than you do.
15:02:42 <elliott> incomprehensibly: 3 is not of type (m a) for some m that is an instance of Monad.
15:03:18 <incomprehensibly> elliott: I'm disputing that action is an apt name for values of type Monad a => m a
15:03:20 * elliott usually reserves "action" for IO actions, but speaking about "monadic actions" in general is meaningful since "monadic value" is misleading (suggests the value passed to return is "inside" somehow, at least I see this perception a lot when that terminology is used)
15:03:27 <kallisti> incomprehensibly: no one has talked down to you. we said you were wrong.
15:03:32 <kallisti> those are different things.
15:03:41 <incomprehensibly> kallisti: Phantom_Hoover has talked down to me
15:03:46 <incomprehensibly> kallisti: not simply said that I'm wrong
15:04:13 <kallisti> okay.
15:04:21 <kallisti> Phantom_Hoover: shame on you.
15:04:32 <kallisti> incomprehensibly: shame on you for claiming to know more than Phantom_Hoover
15:04:42 <kallisti> elliott: shame on you for being reasonable.
15:04:51 <kallisti> kallisti: shame on you because I don't know what am I doing wrong.
15:05:00 <elliott> 14:25:48: <incomprehensibly> as in, you have putStrLn "something" or getLine, and those are actions that you can do
15:05:00 <elliott> 14:25:52: <Phantom_Hoover> List is trickier, but when you think about it the monad represents nondeterministic computation.
15:05:00 <elliott> 14:25:57: <incomprehensibly> kallisti: yes, but a value of type Maybe a is *not* an action.
15:05:00 <elliott> 14:26:03: <incomprehensibly> a value of type list is *not* an action.
15:05:01 <elliott> 14:26:09: <incomprehensibly> so the type doesn't represent actions.
15:05:03 <elliott> incomprehensibly: A value of type [a] can easily be interpreted as an action in a nondeterministic backtracking language, such as e.g. Prolog.
15:05:08 <elliott> The fact that it can also be not interpreted as this is irrelevant.
15:05:21 <elliott> (Maybe a) is an action in a partial short-circuiting language, etc.
15:05:29 <elliott> (Either e a) is an action in a language with exceptions of type e.
15:05:47 <elliott> The existence of other valid interpretations of these values does not invalidate the action interpretation.
15:05:49 <incomprehensibly> it's not an action in that short-circuiting language, it's a value that you get out of that language.
15:05:55 <elliott> And indeed that interpretation is rqequired to understand the use of do notationw ith them.
15:06:00 <kallisti> incomprehensibly: same logic applies with IO, sir.
15:06:02 <incomprehensibly> an action of that language would be, e.g., an AST. right?
15:06:08 <elliott> incomprehensibly: No, the value of type `a` would be the value you get out of that language.
15:06:11 <elliott> And no, untrue.
15:06:53 <elliott> 14:27:05: <incomprehensibly> return 3 can be later *executed*.
15:06:53 <elliott> 14:27:08: <incomprehensibly> same as State
15:06:55 <elliott> :t maybe
15:06:56 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
15:06:59 <elliott> :t runCont
15:07:00 <lambdabot> forall r a. Cont r a -> (a -> r) -> r
15:07:09 <kallisti> elliott: I failed to find a good example for lists
15:07:11 <elliott> runMaybe :: Maybe a -> r -> (a -> r) -> r
15:07:11 <kallisti> so I went with foldr
15:07:19 <incomprehensibly> what it seems like to me is that since IO is the most prominent monad, since it's used in every compilable Haskell program, etc., people often ascribe features of it to all monads
15:07:22 <elliott> incomprehensibly: Note essential identicality to runCont.
15:07:35 * elliott does not do that at all.
15:07:50 <elliott> It's very powerful to realise that monads are essentially mini programming languages, viewed from the lens of do notation.
15:08:08 <elliott> Maybe is a partial embedded DSL, IO is an imperative embedded DSL.
15:08:09 <incomprehensibly> you know the common misconceptions that monads are a language feature, or a way to cheat to put impurity in a pure language, or that monads are about side effects
15:08:10 <incomprehensibly> etc.
15:08:13 <elliott> State is a stateful embedded DSL.
15:08:23 <elliott> Cont is a call/cc-having embedded DSL.
15:08:26 <incomprehensibly> I think calling values of a monad "actions" is another misconception
15:08:34 <elliott> incomprehensibly: Yes, and I think you're wrong.
15:08:42 <kallisti> I think it's unhelpful for teaching monads, but not incorrect to say.
15:08:42 * elliott is under no confusion as to what your position is.
15:08:52 <incomprehensibly> what a monad is has nothing to do with actions
15:08:53 <kallisti> incomprehensibly: what it is it that makes a value of IO a an action.
15:08:56 <incomprehensibly> it has to do with layers
15:08:59 <incomprehensibly> unit and join
15:09:05 <incomprehensibly> adding and removing layers of a functor
15:09:13 <elliott> incomprehensibly: Yes, that is one interpretation.
15:09:16 <elliott> I am not saying monads are "about" actions.
15:09:23 <elliott> I am saying that "monadic action" is reasonable, consistent, meaningful terminology.
15:09:31 <elliott> That does not mean I think they betray some deep underlying truth about monads or anything.
15:09:44 <incomprehensibly> elliott: I'm saying that actions is an interpretation that applies to only a subset of monads, and has nothing to do with the qualities inherent in a monad, but simply with some specific applications of them
15:10:04 <elliott> <elliott> incomprehensibly: Yes, and I think you're wrong.
15:10:04 <elliott> * elliott is under no confusion as to what your position is.
15:10:17 <elliott> Please stop trying to tell me what you're saying as a substitute for actually replying to things I say.
15:10:31 <incomprehensibly> I'm not
15:10:46 <elliott> Then why are you trying to tell me what you're saying?
15:11:27 <incomprehensibly> ok, the types of runMaybe and runCont are the same
15:11:34 <kallisti> *maybe
15:11:35 <incomprehensibly> does that mean every container is an action?
15:11:38 <kallisti> no
15:11:42 <incomprehensibly> yes it does
15:11:46 <kallisti> okay.
15:11:47 <elliott> Depends what you mean by "container".
15:11:47 <kallisti> yes it does.
15:11:57 <incomprehensibly> because any container you make, if it can be nested, is an action by that definition
15:12:04 <incomprehensibly> because you can make a function of the same type
15:12:05 <elliott> Depends what you mean by "container".
15:12:11 <Phantom_Hoover> No, it means that every container for which you can define return and join is an action.
15:12:18 <Phantom_Hoover> This is not at all odd.
15:12:21 <incomprehensibly> kallisti: will you stop being so god damn condescending towards me
15:12:35 * elliott notes that he doesn't think he completely agrees with kallisti or Phantom_Hoover here, so please don't take their answers as my answers.
15:12:48 <elliott> Also, kallisti isn't being condescending? If anyone's being condescending it's Phantom_Hoover (this is a universal truth).
15:12:58 <incomprehensibly> elliott: "okay. yes it does."
15:13:07 <kallisti> incomprehensibly: you didn't supply a very good reason there.
15:13:09 <incomprehensibly> you can just hear the condescension and rolleyes exuding from his messages
15:13:15 <incomprehensibly> kallisti: I was *about to*, and I did
15:13:16 <kallisti> but I am a victim to mindless peer pressure
15:13:16 <Phantom_Hoover> Well, it does depend on what 'container' means, but it looks like you just mean any t a.
15:13:17 <kallisti> sorry.
15:13:20 <incomprehensibly> can you be the slightest bit patient?
15:13:38 <kallisti> maybe.
15:13:39 <elliott> incomprehensibly: You're mistaking kallisti being stupid and/or annoying for condescending.
15:13:48 * elliott keeper of peace.
15:14:08 <elliott> But seriously, if you're going to interpret things that uncharitably and personally this is a waste of time.
15:14:10 <incomprehensibly> ok, kallisti, I've just been informed you're being stupid and/or annoying
15:14:17 <incomprehensibly> rather than condescending
15:14:19 <incomprehensibly> sorry for the misunderstanding
15:14:21 <Phantom_Hoover> Obviously the condescension from my messages spilt over.
15:14:43 <kallisti> incomprehensibly: I hate your mother.
15:14:47 <elliott> incomprehensibly: Pretty condescending of you, no?
15:14:51 <incomprehensibly> elliott: yep
15:15:05 <incomprehensibly> because I'm incredibly frustrated with this conversation
15:15:14 <incomprehensibly> I think I'm going to give i tup
15:15:17 <incomprehensibly> it up*
15:15:42 <kallisti> yes. this is what happens when two people think they're right in different ways.
15:15:43 <elliott> incomprehensibly: Okay, we'll put it down in the history books that you lost.
15:16:00 <incomprehensibly> fine with me
15:16:08 <incomprehensibly> I don't care how #esoteric defines winning
15:16:16 <itidus21> you will also be accused of inhumanity
15:16:18 <Phantom_Hoover> Excellent, now we just wait until elliott reads oerjan's comments in the logs and get some popcorn.
15:16:19 <incomprehensibly> if they define it as poorly as they define action, it really means nothing
15:16:24 <kallisti> the conversation is about convincing the other person. it becomes frustrating when they refuse to be convinced because they're trying to convince you as well.
15:16:35 <kallisti> waste of time. this should be obvious.
15:16:42 <elliott> incomprehensibly: For someone complaining about how rude we're all being you sure are being a twerp.
15:16:45 <elliott> (Twerp: best word?)
15:16:54 <incomprehensibly> I was attempting to be respectful before
15:17:02 <elliott> Also, considering "action" is common terminology throughout the Haskell community, we're in very good company.
15:17:14 <incomprehensibly> that's what I don't like about the Haskell community
15:17:18 <incomprehensibly> the whole business with monads
15:17:44 <incomprehensibly> it's so cargo cult
15:17:59 <incomprehensibly> people use monads everywhere, and monad transformers
15:18:05 <incomprehensibly> while they *work*, they make your code uglier than most Java
15:18:05 <kallisti> yes I think monads are actions because someone told me to interpret it that way.
15:18:14 <elliott> incomprehensibly: No; that's people who look at Haskell from outside and are unable to distinguish people who know Haskell from people who dabble in it.
15:18:26 <elliott> And, ironically, that complaint only applies to certain monads.
15:18:30 <Phantom_Hoover> incomprehensibly, you know, you can just stop digging this hole.
15:18:48 <incomprehensibly> elliott: it's definitely the worst with the IO monad
15:18:53 <elliott> Yes, putting everything in IO is ugly, yes, putting everything in State is ugly, no, threading error-handling with Either is not ugly, no, modelling nondeterministic computation with [] or a probability monad is not ugly.
15:19:14 <kallisti> incomprehensibly: yes I agree. IO monad is bad for Haskell code.
15:19:16 <elliott> If you go into #haskell you will see people warned away from putting everything in IO, so unless you provide an actual basis for this cargo-culting claim...
15:19:20 <kallisti> I think we should get rid of IO.
15:19:27 <kallisti> it would make compilation much easier.
15:19:31 <elliott> kallisti: Now you *are* being a shit.
15:19:35 <kallisti> loooool
15:19:44 <incomprehensibly> kallisti: I think so too, but there are possible good replacements
15:19:49 <elliott> incomprehensibly: Anyway, it's not like we can just switch to FRP tomorrow so until then the IO monad will continue to be used more than we'd like.
15:19:53 <incomprehensibly> for instance, an FRP system would be way more desirable
15:19:57 <kallisti> elliott: just joking.
15:20:05 <elliott> incomprehensibly: Whining about cargo culting when the alternatives are still topics of active research is shitty.
15:20:07 <kallisti> I stopped taking this conversation seriously long ago.
15:20:19 <elliott> incomprehensibly: Especially since the Haskell community is one of the only communities actually actively developing FRP.
15:20:31 <elliott> (I say "one of" because I think Scala has a thing that's gaining traction.)
15:20:40 <elliott> (Otherwise it'd just be the one, singular. Well, there's that Agda thing too.)
15:20:45 <incomprehensibly> elliott: I've read too much that extols the virtues of monads and how beautifully they solve the problem of IO
15:20:50 <incomprehensibly> for instance, Simon Peyton JOnes
15:21:09 <kallisti> this is not indicative of some kind of mindless Haskell IO monad cult.
15:21:21 <elliott> incomprehensibly: The IO monad is the best way to model imperative programs I've seen; it's first-class, higher-order, etc. etc. etc.
15:21:28 <elliott> That's separate from the issue of how good it is to model IO in general.
15:21:54 <elliott> incomprehensibly: Anyway, you're obviously not actually in the Haskell community or you'd know that most people aren't satisfied with IO.
15:22:10 <incomprehensibly> what does "in the Haskell community" mean
15:22:37 <incomprehensibly> I follow Haskellers, I'm occasionally active in #haskell, etc.
15:22:44 <incomprehensibly> I guess I'm outside it because I hold different impressions than you
15:22:48 <incomprehensibly> no true scotsman
15:22:56 <elliott> incomprehensibly: Dunno, but I know that thinking everyone stuffs everything into monads and thinks IO is the best thing ever proves you aren't.
15:23:46 <incomprehensibly> I really don't want this to come across antagonistically or condescendingly, but don't try to hold the Haskell community to such a high standard
15:23:52 <incomprehensibly> it's not God, and it's not the perfectest
15:23:54 <incomprehensibly> i's just people
15:24:03 <incomprehensibly> so you don't have to rationalize all of its follies
15:24:05 <kallisti> lol?
15:24:08 <incomprehensibly> there are some bad sides to it
15:24:11 <incomprehensibly> kallisti: lol?
15:24:19 <kallisti> I just find it funny that you inferred that, somehow
15:24:21 <kallisti> from elliott just said.
15:24:24 <kallisti> +what
15:24:33 <incomprehensibly> kallisti: he's trying to redefine the Haskell community to fit all of his personal beliefs
15:24:37 <elliott> incomprehensibly: Dammit: you've uncovered my secret promotoin of the Haskell Master Race.
15:24:37 <Phantom_Hoover> incomprehensibly, the Haskell community is not perfect, therefore it must be full of Nazis!
15:24:41 <elliott> *promotion
15:24:42 <Phantom_Hoover> QED.
15:24:46 <incomprehensibly> Phantom_Hoover: yeah, that's what I said
15:24:48 <elliott> Phantom_Hoover: *SIMULTANEOUS GODWIN HIGH-FIVE*
15:24:49 <incomprehensibly> Phantom_Hoover: good job
15:24:50 * incomprehensibly pats on head
15:24:53 <itidus21> godwin's law also applies to haskell
15:24:56 <kallisti> incomprehensibly: not elliott is actually familiar with the Haskell community
15:24:56 <elliott> incomprehensibly: Oh go away.
15:25:00 <kallisti> incomprehensibly: this is not his agenda.
15:25:09 <kallisti> s/not/no/
15:25:16 <Phantom_Hoover> incomprehensibly, no, but it's implied by what you said.
15:25:21 <incomprehensibly> I'm saying, elliott is exhibiting fanboyish loyalty to a community
15:25:24 <elliott> Yes, totally.
15:25:29 <elliott> Psychoanalyse me harder!!!
15:25:30 <kallisti> incomprehensibly: if you go to #haskell they will caution you from overzealous use of IO and (I would think) monad transformers.
15:25:34 <incomprehensibly> redefining it to fit his personal beliefs whenever he disagrees with a common belief there
15:25:37 <elliott> HE DEFENDED IT AGAINST A SINGLE PIECE OF CRITICISM
15:25:45 <elliott> I sentence him to death by accusations of fanboy.
15:25:53 <elliott> incomprehensibly: but seriously though, go away.
15:26:30 <incomprehensibly> elliott: http://d37nnnqwv9amwr.cloudfront.net/entries/icons/original/000/003/617/okayguy.jpg
15:27:08 -!- incomprehensibly has left.
15:27:10 <elliott> Oh! Rage faces! Excellent!
15:27:17 <Phantom_Hoover> incomprehensibly has beaten the Kola Superdeep Borehole for deepest hole!
15:27:18 <elliott> He's assured I will never wish he comes back.
15:27:29 <elliott> Phantom_Hoover: BTW, I'm pretty sure you and kallisti were wrong too, but he was more wrong.
15:28:19 <kallisti> elliott: I pretty much agree with what you said, I just did not word it correctly.
15:28:24 <Phantom_Hoover> elliott, I said that I barely knew what I was talking about, but I knew he was wrong.
15:28:57 <kallisti> elliott: also in the process of thinking about it I changed my mind a few times.
15:28:58 <elliott> kallisti: No, you were wrong, you just aren't right enough to see how your wrongness differed from my rightness.
15:29:01 <elliott> Sorry, *supreme righteousness.
15:29:11 <kallisti> elliott: sure.
15:29:15 <kallisti> whatever you'd like to think.
15:29:35 * kallisti is wrong by default.
15:30:27 <itidus21> everyone is wrong as proven by the fact that their languages are imperfect
15:30:45 <kallisti> itidus21: you are wrong.
15:31:06 <itidus21> yes but i used a paradox :-s
15:31:14 <kallisti> SO DID I
15:31:15 <kallisti> HAHA
15:31:15 <kallisti> HA
15:31:24 * itidus21 chokes
15:31:54 <elliott> kallisti: pls stop being so dumb in logs i've had my fill of dumb for today
15:31:57 <elliott> maybe i'll just quit the internet
15:32:08 <kallisti> elliott: where.
15:32:31 <kallisti> elliott: surely I'm not being dumber than everyone else.
15:32:36 <kallisti> if it's the moment I'm thinking of.
15:32:49 <elliott> `addquote <monqy> kallisti: by ordered multiset did you mean: list??????
15:32:53 <HackEgo> 785) <monqy> kallisti: by ordered multiset did you mean: list??????
15:33:02 <kallisti> sheesh, it's like you put these unrealistic standards of perfection on me.
15:33:10 <kallisti> SUCH A BURDEN. ;_;
15:33:42 <kallisti> elliott: describe to me that ways in which that is not like an ordered multiset.
15:33:43 <elliott> 06:10:52: <kallisti> @tell elliott Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or ..
15:33:43 <elliott> i'm not responding to this
15:35:00 <kallisti> elliott: you're really bad at letting me be wrong.
15:35:07 <kallisti> my wrongness is just going to overwhelm you one day.
15:35:14 <kallisti> because you failed to explain all of these small wrongnesses
15:35:57 <elliott> 06:12:45: <kallisti> newtype T = T A
15:35:57 <elliott> 06:12:57: <kallisti> T is not isomorphic to A because there is no equivalent to T _|_
15:36:02 <elliott> congratulations this is the stupidest you've ever been
15:36:08 <elliott> > Sum undefined
15:36:09 <lambdabot> Sum {getSum = *Exception: Prelude.undefined
15:36:10 <kallisti> elliott: I forgot about newtype
15:36:12 <kallisti> doing that
15:36:15 <elliott> > undefined :: Sum ()
15:36:15 <lambdabot> Sum {getSum = *Exception: Prelude.undefined
15:36:15 <kallisti> elliott: see below
15:36:49 <kallisti> elliott: so I assume you want [a] to be constructed with newtype?
15:36:57 <kallisti> newtype [a] = Maybe (a, [a])
15:37:09 <elliott> i'm not talking to you about this
15:37:45 <kallisti> well it would make sense with newtype.
15:37:53 <kallisti> that they are equivalent
15:39:05 <kallisti> newtype [a] = Oops (Maybe (a, [a]))
15:39:35 <kallisti> elliott: it's almost like you want me to be wrong about basic things
15:39:42 <kallisti> wrong and talking to you almost daily.
15:39:46 <kallisti> about not-basic things.
15:39:52 <elliott> no i just don't feel obligated to educate you, especially when you insist you're right
15:39:59 <kallisti> I /don't/
15:40:18 <kallisti> only /sometimes/
15:40:41 <elliott> no
15:40:42 <elliott> you really do
15:40:43 <elliott> always
15:41:08 <elliott> 10:58:34: <oerjan> <colloinkgravisom> revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something <-- erm, roman circus. case closed.
15:41:15 <elliott> @tell oerjan THAT'S NOT FAIR YOU WEREN'T HALF-ASLEEP
15:41:16 <lambdabot> Consider it noted.
15:41:19 <elliott> oh god, incomprehensibly just /msg'd me
15:41:36 <elliott> <incomprehensibly> I apologize. You don't have to respond, or ever talk to me again, but I'm sorry for being a retard.
15:41:36 <elliott> <elliott> ok
15:41:36 <elliott> <elliott> hi
15:41:38 <elliott> this actually just happened
15:41:41 <elliott> and now he's offline???
15:41:48 <elliott> wh.....,,,,,
15:41:50 <elliott> Phantom_Hoover: wh,
15:41:54 <kallisti> elliott: I seriously think if you actually took effort to explain simple basic things I would quickly change my mind about something I'm wrong about it.
15:42:01 <elliott> w,,,,,,h
15:42:13 <kallisti> if you, however, conclude that I'm just going to insist I'm right /regardless of any information presented to me/
15:42:22 <kallisti> then... nothing is going to change.
15:43:07 <kallisti> I think you have the mistaken notion that I think I'm infallible. Which is abusrd.
15:45:50 <elliott> 11:00:53: <oerjan> <colloinkgravisom> sorry, you passed my threshold of "coherent enough to bother trying to decode" <-- never go into teaching, will you? not that i expect you to.
15:45:50 <elliott> 11:02:04: <oerjan> i mean, you are refusing to mention the one piece of information kallisti misses, while he is clearly close to grasping at it, and simultaneously you are deriding him.
15:45:50 <elliott> 11:03:32: <oerjan> clearly you are not arguing in order to help, but in order to fuel your ego by exaggerating other's faults. heck you basically admitted it above.
15:45:50 <elliott> 11:04:17: <oerjan> and not only do you exaggerate other's faults, but you aim your rhetoric in such a way as to trap them further.
15:45:53 <elliott> 11:04:33: <oerjan> it's quite annoying to watch.
15:45:55 <elliott> @tell oerjan I /used/ to just point out the one piece of information kallisti appeared to be missing, the problem is that doing so just makes him argue back about it and generally continue insisting he's right; combined with the fact that I was also incredibly tired at the time it was obviously not a good time to try and get an explanation out of me. also, that "admission" was what we refer to as a "joke". I /did/ point him at material I believed
15:45:55 <lambdabot> Consider it noted.
15:46:00 <elliott> would help him, based on misconceptions I perceived; the fact that I can't think of a way to explain without just having him learn these things from the ground-up may be a flaw, but whatever, it's not like I /offer/ to teach.
15:46:04 <elliott> lambdaboooooooooooot
15:46:06 <elliott> or er
15:46:08 <elliott> IRCCCCCCCCC
15:46:10 <elliott> @tell oerjan I /did/ point him at material I believed would help him, based on misconceptions I perceived; the fact that I can't think of a way to explain without just having him learn these things from the ground-up may be a flaw, but whatever, it's not like I /offer/ to teach.
15:46:10 <lambdabot> Consider it noted.
15:47:37 <kallisti> elliott: that is true. you do not offer. Perhaps I shouldn't be so insist.
15:47:40 <kallisti> I CRAVE KNOWLEGE.
15:47:48 <kallisti> like a knowlege vampire.
15:48:15 <elliott> i am perfectly happy trying to teach, but that's a different thing from trying to explain to somebody why they're wrong
15:50:10 <elliott> @tell oerjan anyway, I'm not sure why you've taken it upon yourself to repeatedly complain about me semi-passive-aggressively to the exclusion of basically all others except Phantom_Hoover to some degree. even in the face of people behaving much, much worse.
15:50:10 <lambdabot> Consider it noted.
15:50:33 <Phantom_Hoover> Wait what how do I come into it.
15:50:55 <elliott> 11:35:11: <oerjan> <Phantom_Hoover> This is because you are exceptionally stupid and/or gullible. <-- * oerjan briefly ponders repeating the whole rant above to Phantom_Hoover. wait, you are all like this. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
15:51:03 <elliott> oerjan complains about you once in a blue moon too.
15:51:19 <kallisti> elliott: from my perspective it makes perfect sense why oerjan would do such a thing.
15:51:27 <kallisti> but that's somewhat obvious I think.
15:52:58 <elliott> It would be understandable if he complained about all negative behaviour in the channel, but focusing almost exclusively on me even when there are people doing much worse is bizarre.
15:55:47 <kallisti> Well, I can't think of many regulars who contribute much negative behavior. I suppose I can be quite negative when I'm arguing with you, but otherwise that's the extent of what I contribute to that.
15:56:47 * elliott 's message to oerjan was not an invitation to analyse things deliberately left vague.
15:57:15 <kallisti> -shrug- I don't see any harm in doing so.
15:57:30 <elliott> You seem to expect me to respond to such analyses.
15:59:07 <kallisti> Well, yes, kind of. At least in some insightful way. I don't want any strife to come from it.
15:59:15 <kallisti> if you'd rather not discuss it, that's fine.
16:02:52 <kallisti> in any case, I will be consciously attempting to be more respectful to everyone in the future, because I think I've forgotten such simple things, and it's overall good for our little community for us to be respectful to each other.
16:03:27 <elliott> I think we should instead warmonger and dominate.
16:04:03 <kallisti> heh. I disagree, but in a very disrespectful way.
16:04:04 <Phantom_Hoover> To crush the channels of your enemies beneath your feet and hear the lamentations of their women.
16:04:07 <kallisti> er
16:04:09 <kallisti> respectful oops.
16:04:16 <kallisti> FREUDIAN SLIP HA
16:04:23 <kallisti> asshole dickmunchers.
16:05:37 <elliott> 11:57:11: <Labbekak> last [1, 2, 3] * [1, 2, 3]
16:05:38 <elliott> 11:57:16: <kallisti> Labbekak: no
16:05:38 <elliott> 11:57:23: <kallisti> type error.
16:05:40 <elliott> > last [1, 2, 3] * [1, 2, 3]
16:05:41 <lambdabot> No instance for (GHC.Num.Num [t])
16:05:41 <lambdabot> arising from a use of `e_1123123' at <...
16:05:43 <elliott> argh
16:05:47 <elliott> come on lambdabot, you have instances for everything else
16:06:42 <kallisti> yeah an instance to allow 3 * [1,2,3] should be easy.
16:12:29 <elliott> 12:10:44: <Phantom_Hoover> People who don't understand that monads etc. actually have laws you need to satisfy, not just type signatures.
16:12:37 <elliott> Phantom_Hoover: It is perfectly legitimate for pure and return to disagree.
16:12:50 <elliott> It's just not recommended.
16:13:36 <Phantom_Hoover> Ah, but people who don't understand the latter are unlikely to understand anything at all about that sort of thing.
16:14:02 <elliott> what
16:14:18 <Phantom_Hoover> the words made sense when i thought them??
16:14:24 <elliott> 12:18:53: <kallisti> I think it's literally just read <$> getLine
16:14:24 <elliott> 12:19:02: <kallisti> @src readLn
16:14:24 <elliott> 12:19:02: <lambdabot> readLn = do l <- getLine; r <- readIO l; return r
16:14:24 <elliott> 12:19:13: <kallisti> @src readIO
16:14:24 <elliott> 12:19:14: <lambdabot> Source not found. You speak an infinite deal of nothing
16:14:25 <elliott> 12:19:23: <kallisti> yeah same thing I think.
16:14:27 <elliott> kallisti: no
16:14:36 <elliott> readIO uses fail on parse failure
16:14:41 <kallisti> ah
16:15:01 <kallisti> isn't that just error though?
16:15:02 <elliott> 12:20:35: <Ngevd> I have a bizarre concept of many things
16:15:02 <elliott> 12:21:21: <Ngevd> Including safety and money
16:15:02 <elliott> hi
16:15:16 <elliott> kallisti: no...
16:15:24 <elliott> otherwise do { x:xs <- m; ... } would be uncatchable
16:15:27 <elliott> well
16:15:33 <elliott> not uncatchable but it'd go via the async exceptions and skldfhsdjkf
16:15:36 <elliott> i dno'tw ant to think about that
16:15:42 <elliott> @src IO fail
16:15:42 <lambdabot> fail s = failIO s
16:15:45 <elliott> @src failIO
16:15:45 <lambdabot> failIO s = ioError (userError s)
16:15:52 <elliott> @src ioError
16:15:53 <lambdabot> Source not found. :(
16:15:55 <elliott> it's just throw
16:15:57 <elliott> . IOError
16:15:58 <elliott> or something
16:15:59 <elliott> er
16:16:00 <elliott> throwIO
16:16:15 <kallisti> hmmm so error is ana async exception
16:16:27 <kallisti> whereas throw is not?
16:16:35 <kallisti> I honestly haven't taken much time to learn about Haskell exceptions.
16:16:41 <elliott> 12:33:18: <kallisti> neither is (->r)
16:16:42 <elliott> 12:33:28: <kallisti> they're types.
16:16:42 <elliott> 12:33:29: <kallisti> >_>
16:16:42 <elliott> 12:33:33: * kallisti nitpick
16:16:44 <elliott> kallisti: wrong again!
16:16:50 <kallisti> elliott: SEE BELOW
16:16:53 <kallisti> something amazing happens.
16:16:54 <elliott> (->) is a type constructor
16:16:57 <elliott> (-> r) is invalid syntax
16:16:59 <elliott> ((->) r) is a type constructor
16:17:03 <elliott> ((->) a b) is a type
16:17:05 <kallisti> elliott: something amazing happens later
16:17:05 <kallisti> read
16:17:28 <elliott> 12:34:59: <monqy> iirc ((->) r) is (-> r) iirc
16:17:28 <elliott> 12:34:59: <monqy> oops
16:17:31 <elliott> no monqy no..............
16:17:36 <kallisti> I'm right and at least 3 other people are wrong
16:17:39 <kallisti> ALMOST CONCURRENTLY
16:17:43 <kallisti> it's amazing.
16:18:05 <elliott> 12:35:28: <Sgeo> Of course, lambdabot does its insane functions are numbers thing
16:18:17 <elliott> Sgeo: would you feel awkward again if i pointed out that those instances are due to Conal Elliott
16:18:20 <elliott> like when hsftp
16:18:51 <kallisti> not only are functions numbers but numbers are functions.
16:19:01 <kallisti> > 3 4
16:19:02 <lambdabot> 3
16:20:20 <elliott> 12:52:15: <monqy> is friendship a monad
16:20:20 <elliott> 12:52:24: <kallisti> no you can escape friendship.
16:20:21 <elliott> wrong
16:20:25 <elliott> it's like the martix of soolidityi
16:20:46 <kallisti> elliott: did you note the part where I corrected myself and PH and monqy continued to be wrong for like whole seconds
16:20:49 <kallisti> did you note how amazing it was?
16:21:38 <Phantom_Hoover> <elliott> 12:52:24: <kallisti> no you can escape friendship.
16:21:42 <Phantom_Hoover> You can escape Identity.
16:21:50 <elliott> it was just garden-variety wrongness, as opposed to your hanging gardens of babylon wrongness >:)
16:22:11 <elliott> Phantom_Hoover: HE TRIED TO ESCAPE HIS IDENTITY... BUT CAN HE ESCAPE... FROM HIMSELF
16:22:14 <elliott> THE MONAD.RUNNER
16:22:16 <elliott> THIS SUMMER
16:22:34 <elliott> "Would YOU dare to extract?"
16:22:57 <kallisti> comonad jokes are not allowed
16:23:18 <elliott> 13:48:18: <Ngevd> The Times Person of the Year 2011... died in 2010
16:23:20 <quintopia> ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg sir elliott colloinkgravisom of hexham
16:23:27 <elliott> what, it's one of those sodijosdjiosdjiojoijiojoijsdfiosdjoisdjoisdjo multiple people
16:23:28 <elliott> ones
16:23:29 <elliott> so what
16:23:30 <elliott> also
16:23:32 <elliott> hi quintopia
16:23:33 <elliott> of
16:23:37 <elliott> wherever thefuck you live
16:23:46 <kallisti> Georgia apparently
16:23:52 <kallisti> THERE ARE TWO GEORGIANS
16:23:58 <elliott> OK I'm done logreading apart from the parts where the argument about action.
16:24:07 <elliott> kallisti: get in the same city/town and you can start a third clique
16:24:08 <kallisti> elliott: good idea
16:24:38 <kallisti> kallisti: yes all of the brilliant esoteric programmers come from Jasper, GA.
16:24:46 <kallisti> kallisti: indeed
16:25:31 <elliott> we should have like
16:25:35 <elliott> a hexham-helsinki diplomacy meetup
16:25:40 <elliott> Phantom_Hoover: you can be an honorary hexhite for the duration
16:25:48 <elliott> it would be
16:25:53 <elliott> beautiful crossnation friendship :')
16:25:54 <kallisti> elliott: also I really don't think my wrongness is all that remarkable, it just happens often because I'm talk a lot even when I don't know what I'm talking about.
16:26:01 <kallisti> elliott: this is my secret plan to ensure that someone corrects me.
16:26:04 <kallisti> it's brilliant.
16:26:28 <Phantom_Hoover> elliott, yes
16:26:48 <elliott> Phantom_Hoover: (It's OK we'd have Hexham become an honorary Scottish town so that it wouldn't make you a pansy.)
16:27:10 <elliott> OK first decision, do we hold it in Hexham or Helsinki.
16:27:12 <elliott> Hmm, wait.
16:27:19 <kallisti> (sad ending spoiler: all Europeans are pansies)
16:27:24 <elliott> Phantom_Hoover: Find out what the exact midpoint of the shortest path between Hexham and Helsinki is, please.
16:27:39 <Phantom_Hoover> what if it's in sweden
16:27:40 <kallisti> elliott: that might end up in the ocean somewhere.
16:27:45 <elliott> Phantom_Hoover: I don't think geography works that way.
16:27:51 <elliott> kallisti: We could have it on a ship.
16:27:55 <Phantom_Hoover> do we invade sweden
16:28:17 <kallisti> Phantom_Hoover: we can leave those questions for the risk game (actually I don't think Sweden is a country in risk)
16:28:44 <kallisti> oh I forgot to mention
16:28:56 <kallisti> I'm the honoronororary American ambassador.
16:29:08 <elliott> Phantom_Hoover: I think it's actually in Denmark?
16:29:19 <Phantom_Hoover> Can we invade Sweden anyway.
16:29:23 <kallisti> elliott: that would be convenient.
16:29:24 <elliott> Phantom_Hoover: If I give you the latitude and longitude of Hexham and Helsinki can you do the hard division part.
16:29:45 <kallisti> elliott: since that's like the place that's not ocean.
16:29:50 <kallisti> between those landmasses.
16:29:53 <Phantom_Hoover> I'm not sure if you can just divide.
16:30:01 <Phantom_Hoover> In fact I'm sure you can't just divide.
16:30:04 <elliott> Phantom_Hoover: Well um however you find the midpoint of a line I'M NOT A SCIENTIST!!!
16:30:16 <Phantom_Hoover> elliott, you're finding the midpoint of a great circle.
16:30:23 <kallisti> lol
16:30:49 <elliott> Phantom_Hoover: UM JUST PRETEND THE WORLD IS FLAT?
16:31:02 <Phantom_Hoover> USE DYMAXION
16:31:12 <Phantom_Hoover> (That would be a fairly good approximation, actually.)
16:31:13 <elliott> http://maps.google.com/maps?q=helsinki&hl=en&ll=66.018018,26.894531&spn=45.088568,173.144531&sll=58.378679,9.755859&sspn=13.524544,43.286133&vpsrc=6&hnear=Helsinki,+Finland&t=h&z=3
16:31:14 <elliott> http://maps.google.com/maps?q=Hexham,+UK&hl=en&sll=66.018018,26.894531&sspn=45.088568,173.144531&vpsrc=0&hnear=Hexham,+Northumberland,+United+Kingdom&t=h&z=13
16:31:26 <elliott> OK, I don't know which part is the latitude and longitude there.
16:31:29 <elliott> It could be ll or sll.
16:31:33 <elliott> But Hexham only has the sll one.
16:31:42 <elliott> Wait.
16:31:44 <elliott> Wikipedia has coordinates.
16:32:09 <elliott> Hexham: Coordinates: 54.971°N 2.101°W
16:32:10 <elliott> Helsinki: Coordinates: 60°10′15″N 024°56′15″E
16:32:14 <elliott> Phantom_Hoover: Go forth and calculamate.
16:32:36 <Phantom_Hoover> I don't know enough spherical geometry.
16:33:09 <elliott> Phantom_Hoover: TRY PLEASE!!!
16:33:10 <kallisti> (spoiler: I bet it's in the ocean)
16:33:18 <elliott> Phantom_Hoover: At least just pretend the world is flat and calculate it like that?? COME ON
16:33:22 <Phantom_Hoover> no, you must, ask oerjan
16:33:24 <kallisti> it's okay when I'm rich guys you can borrow my chisip
16:34:08 <Phantom_Hoover> elliott, you gave me one set of coördinates in decimal and the other in minutes and seconds you idiot.
16:34:18 <elliott> Phantom_Hoover: Those are the ones in the Wikipedia article.
16:34:23 <elliott> Phantom_Hoover: Can't you conver them yourself?
16:34:26 <elliott> convert
16:34:29 <kallisti> `frink
16:34:34 <Phantom_Hoover> No, I am too lazy?
16:34:36 <HackEgo> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 \ at frink.parser.Frink.parseArguments(frink) \ at frink.parser.Frink.main(frink)
16:34:43 <elliott> Phantom_Hoover: Helsinki: 60.170833, 24.9375
16:34:44 <elliott> HAPPY NOW?
16:35:18 <Phantom_Hoover> > (54.971+60.171)/2
16:35:19 <lambdabot> 57.571
16:35:38 <Phantom_Hoover> > (2.101+24.938)/2
16:35:39 <lambdabot> 13.519499999999999
16:35:45 <kallisti> Phantom_Hoover: YOU LACK THE COMMITMENT OF A REAL SCIENTIST.
16:35:50 <Phantom_Hoover> No idea where that actually is.
16:36:14 <elliott> http://maps.google.com/maps?ll=57.570833,13.518889&spn=0.01,0.01&t=m&q=57.570833,13.518889
16:36:17 <elliott> SWEDEEEEEEEEEEEEEEEEEEEEEEN
16:36:47 <elliott> Phantom_Hoover: That's assuming the world is flat, right?
16:37:08 <Phantom_Hoover> And assuming a particular projection.
16:37:25 <elliott> Phantom_Hoover: Which one.
16:37:27 <kallisti> tranverse mercator is what people use for coordinates or something right?
16:37:28 <Phantom_Hoover> But it's close enough that I doubt the geodesic one will be outside Sweden.
16:37:29 <Phantom_Hoover> Dunno.
16:37:45 <Phantom_Hoover> (theta,phi) → (theta,phi).
16:37:46 <elliott> http://upload.wikimedia.org/wikipedia/commons/1/15/MercTranSph.png
16:37:49 <elliott> oh my god this is amazing
16:38:13 <elliott> Phantom_Hoover: http://en.wikipedia.org/wiki/Equirectangular_projection?
16:38:17 <elliott> Hmm, maybe not.
16:39:08 <Phantom_Hoover> Yes, it is.
16:39:14 <elliott> Right.
16:39:44 <elliott> Phantom_Hoover: Are you sure the world isn't round enough to put it in Denmark.
16:39:55 <elliott> http://en.wikipedia.org/wiki/Polyconic_projection Worst map projection.
16:40:02 <Phantom_Hoover> I think the distortion might be enough to move it that far, actually.
16:40:30 <Phantom_Hoover> I don't know if there are any projections which map geodesics to straight lines.
16:40:51 <Phantom_Hoover> http://en.wikipedia.org/wiki/Gnomonic_projection
16:40:52 <Phantom_Hoover> Aha.
16:40:53 <elliott> http://www.geomidpoint.com/
16:40:57 <elliott> I'll just use this?
16:41:12 <kallisti> hm, I think latitude and longitude is actually not projected to anything.
16:41:19 <kallisti> maybe?
16:41:22 <Phantom_Hoover> Hmm, wait, that won't preserve distances.
16:41:32 <elliott> Phantom_Hoover: Er.
16:41:34 <Phantom_Hoover> elliott, but we don't know the algorithm!
16:41:35 <elliott> Phantom_Hoover: Your calculations are wrong.
16:41:43 <elliott> Phantom_Hoover: One of those Hexham coordinates is in the sea.
16:41:58 <Phantom_Hoover> Ah, centre of minimum distance should be it.
16:42:00 <Phantom_Hoover> Eh?
16:42:01 <elliott> And indeed, the midpoint is in Sweden.
16:42:10 <elliott> Phantom_Hoover: Input the coordinates into http://www.geomidpoint.com/; observe matrix of aquidity.
16:42:15 * elliott gets the numbers from Google instead.
16:43:12 <Phantom_Hoover> It's °W for those coörds, not °E.
16:43:15 <Phantom_Hoover> Change the sign.
16:43:19 -!- Ngevd has joined.
16:43:19 <elliott> Oh.
16:43:31 <Ngevd> Hello!
16:43:40 <elliott> Phantom_Hoover: Now the midpoint is in the sea.
16:44:03 <Ngevd> I'm considering unifying my amateurish interests in programming and genealogy
16:44:05 <elliott> http://en.wikipedia.org/wiki/Skagerrak
16:44:07 <Phantom_Hoover> Now then, is that in Swedish waters?
16:44:08 <elliott> This thing, in particular.
16:44:19 <kallisti> Ngevd: are you going to calculate who your ancestors are?
16:44:20 <elliott> The name is Dutch.
16:44:26 <Phantom_Hoover> No, it is not.
16:44:42 <elliott> http://en.wikipedia.org/wiki/File:Oslo_from_holmenkollen.jpg ooh
16:44:53 <elliott> "Both names Skagerrak and Kattegat are commonly held to be of Dutch origin. Skagerrak means in Dutch approximately 'Skagen Channel'. The Danish town of Skagen (The Skaw) lies at the northern tip of the Danish mainland. Rak means 'straight waterway' (compare the Damrak in Amsterdam); it is cognate to 'reach'.[1][2] The ultimate source of this syllable is the Proto-Indo-European root *reg-, 'straight'. The modern Norwegian word rak means 'straight'
16:44:53 <elliott> . There is no evidence to suggest a connection to the modern Danish word rak (meaning rabble or riff-raff)."
16:44:55 <elliott> Phantom_Hoover: SORT OF DUTCH
16:45:00 <elliott> Oh, not in Swedish waters.
16:45:01 <Ngevd> kallisti, no, there's a book about that.
16:45:08 <elliott> @tell fizzie WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:08 <lambdabot> Consider it noted.
16:45:08 <Ngevd> kallisti, Well, my dad's mum's side
16:45:10 <elliott> @tell Deewiant WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:11 <lambdabot> Consider it noted.
16:45:15 <elliott> @tell Phantom_Hoover WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:15 <lambdabot> Consider it noted.
16:45:19 <elliott> @tell Ngevd WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:19 <lambdabot> Consider it noted.
16:45:21 <Deewiant> @messages
16:45:21 <lambdabot> elliott said 10s ago: WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:21 <elliott> @tell kallisti WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:45:22 <lambdabot> Consider it noted.
16:46:10 <kallisti> elliott: I'm sorry but the United States ambassador respectfully declines on the grounds that it does not benefit the interests of the American people.
16:46:11 <lambdabot> kallisti: You have 1 new message. '/msg lambdabot @messages' to read it.
16:46:20 <elliott> OK wait.
16:46:27 <elliott> kallisti: Where are you again?
16:46:31 <kallisti> the United States
16:46:32 <Ngevd> @messages
16:46:32 <lambdabot> elliott said 1m 13s ago: WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg
16:46:39 <Phantom_Hoover> elliott, Jasper, Georgia.
16:46:39 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
16:46:46 <Phantom_Hoover> The one that looks like any other bit of woodland.
16:46:48 <kallisti> Phantom_Hoover: NO!! MY SECRET LOCATION
16:47:40 <elliott> kallisti: The three-way midpoint is... in the sea.
16:47:47 <elliott> Near Iceland and Greenland. Well, "near".
16:48:05 <elliott> Let's try adding more data points???
16:48:05 <kallisti> elliott: wow this is shocking
16:48:08 <kallisti> I would never considered
16:48:09 <kallisti> that the midpoint
16:48:10 <elliott> Phantom_Hoover: Where in Edinburgh do you live.
16:48:25 <kallisti> between some points in Great Britain, Finland, and the eastern united states
16:48:25 <Phantom_Hoover> Ahahaha nice one.
16:48:32 <elliott> Phantom_Hoover: I guess Edinburgh is small enough to just use the whole thing.
16:48:39 <kallisti> would be in some massive ocean between all of those things.
16:48:53 <elliott> Now it's still below Iceland.
16:49:18 <kallisti> elliott: isn't oerjan in Norway? invite him?
16:49:28 <kallisti> oh.
16:49:45 <kallisti> yes do that.
16:50:36 -!- Klisz has joined.
16:50:41 <Phantom_Hoover> http://www.smbc-comics.com/index.php?db=comics&id=2470#comic
16:50:49 <Phantom_Hoover> FRACTALS /= RECURSION YOU TWAT
16:51:10 <elliott> kallisti: hahahahaha
16:51:31 <kallisti> ha ha?
16:51:53 <kallisti> Phantom_Hoover: solution: stop reading shitty webcomics
16:52:15 <elliott> Oh no, they redesigned bbc.co.uk.
16:52:21 <elliott> kallisti: Excuse me SMBC is objectively good.
16:52:23 <Phantom_Hoover> Again??
16:52:30 <kallisti> Phantom_Hoover: also isn't the mandelbrot set defined recursively?
16:52:41 <elliott> NOOO THEY'VE MADE A TV SERIES OUT OF GREAT EXPECTATIONS???
16:52:43 <elliott> STOP IT BBC
16:52:48 <elliott> kallisti: no.
16:52:55 <Phantom_Hoover> "Fractals are recursive, therefore recursive things are fractals!"
16:52:55 <elliott> Phantom_Hoover: I... just the homepage.
16:52:58 <kallisti> well it's defined by iterating a function
16:53:02 <kallisti> which is... similar.
16:53:59 <kallisti> @src iterate
16:53:59 <lambdabot> iterate f x = x : iterate f (f x)
16:54:00 <kallisti> SEE?
16:54:06 <Phantom_Hoover> The relative self-similarity is the recursion.
16:54:35 <kallisti> > fix ("Recursion works because " ++)
16:54:36 <lambdabot> "Recursion works because Recursion works because Recursion works because Re...
16:55:17 <elliott> Calculation method:
16:55:17 <elliott> Midpoint (Center of gravity)
16:55:17 <elliott> Center of minimum distance
16:55:17 <elliott> Average latitude/longitude
16:55:21 <elliott> Phantom_Hoover: Wait, why didn't I choose the second one.
16:55:25 <elliott> I bet that will solve everything.
16:55:37 <kallisti> I bet it will
16:55:40 <Phantom_Hoover> I already did.
16:55:43 <kallisti> unless minimum distance stops being great circles.
16:55:43 <elliott> Ah, now it's in a different place in that same sea.
16:55:46 <elliott> I will add Jasper again.
16:55:49 <elliott> Jaspersprite, GA.
16:55:53 -!- Vorpal has joined.
16:55:53 <kallisti> lol
16:55:59 <elliott> AHA
16:56:00 <Ngevd> Is Vorpal included?
16:56:03 <Phantom_Hoover> Waitwaitwait, centre of minimum distance and centroid are the same for 2 points.
16:56:07 <elliott> It's...
16:56:09 <elliott> It's now in Edinburgh.
16:56:15 <Phantom_Hoover> Ngevd, no, because that would pull the point towards Sweden.
16:56:16 <Phantom_Hoover> elliott, are
16:56:18 <Phantom_Hoover> are you serious
16:56:19 <elliott> Using Hexham, Helsinki, Jasper and Edinburgh.
16:56:19 <Phantom_Hoover> best
16:56:21 <elliott> Phantom_Hoover: Yes.
16:56:36 <elliott> <option value="Lat: 54.971 Long: -2.101">Lat: 54.971 Long: -2.101</option>
16:56:38 <elliott> <option value="Lat: 60.171 Long: 24.938">Lat: 60.171 Long: 24.938</option>
16:56:39 <elliott> <option value="Lat: 34.468 Long: -84.429">Lat: 34.468 Long: -84.429</option>
16:56:41 <elliott> <option value="Lat: 55.953 Long: -3.188">Lat: 55.953 Long: -3.188</option>
16:56:44 <elliott> Phantom_Hoover: Try it yourself with those.
16:56:46 <Ngevd> elliott, double-weitht Hexham
16:56:50 <kallisti> is it okay if I don't show up even though my location is used in the definition?
16:57:01 <elliott> kallisti: No.
16:57:11 <Phantom_Hoover> Can you link me again.
16:57:35 <elliott> Phantom_Hoover: http://www.geomidpoint.com/
16:58:09 <elliott> http://www.geomidpoint.com/meet/ ;; this one filters the search to places with, e.g. land :P
16:58:40 <Phantom_Hoover> How do I use those <option>s?
16:58:52 <elliott> Phantom_Hoover: Copy in the latitude and longitude in the separate fields. :p
16:58:55 <kallisti> keyboard and mouse
16:58:55 <elliott> (In lat & long mode.)
16:59:02 <kallisti> awww elliott beat me to my awesome clever joke.
16:59:15 <kallisti> except instead of a clever joke
16:59:21 <kallisti> he provided useful information
17:01:48 <Ngevd> I double-weighted Hexham and Triple-wieghted Helsinki, and got... somewhere off the coast of Berwick
17:02:57 <elliott> BEERWIIIIIIICK
17:03:01 <Ngevd> Added ais523 and got... Hexham
17:03:35 <elliott> YESSSSSSSSSS
17:03:40 <elliott> Phantom_Hoover: WE MEET IN HEXHAM
17:04:02 <Ngevd> By Average Lat/Long we get somewhere in the Yorkshire Dales
17:04:08 <Phantom_Hoover> You realise that centre of minimum distance will result in one of the points a large fraction of the time.
17:04:52 <elliott> Phantom_Hoover: Oh, *that's* what it means.
17:04:58 <elliott> I thought it meant the midpoint between the shortest line between the two.
17:05:48 <Phantom_Hoover> Yeah, I can confirm that if one point is within the convex hull of all the others it'll be the centre.
17:05:50 <Ngevd> Added Gregor and got somewhere about 5 miles North of Hexham
17:06:05 <Ngevd> Ooh, we can meet in the Barrasford Arms. They do nice food
17:06:18 <Phantom_Hoover> Still using centre or switched to centroid?
17:07:05 <Phantom_Hoover> Wait, the degeneracy only occurs for 4 points.
17:07:26 <Phantom_Hoover> Wait, scratch that.
17:09:03 <Ngevd> If we include itidus21 we could get some interesting results
17:10:07 <Ngevd> For a serious UK meet-up, I would suggest Newcastle
17:10:32 <elliott> I hate Newcastle?
17:10:50 <Ngevd> Then you don't turn up and don't see me, thus solving three problems at once
17:10:51 <Phantom_Hoover> I hate Newcastle by association with the other Newcastle.
17:11:12 <Ngevd> @ping
17:11:12 <lambdabot> pong
17:11:20 <Ngevd> /Which/ other Newcastle?
17:12:09 <Phantom_Hoover> The one in Ireland.
17:12:18 <Ngevd> Oh, /that/ Newcastle.
17:12:37 <Ngevd> I was thinking of the Newcastle where 22 years ago AN EARTHQUAKE STRUCK KILLING 13
17:24:43 <elliott> 120 over 6.5 :(
17:27:36 -!- Labbekak has joined.
17:28:32 <Ngevd> I've met someone who's met someone who was in a movie with someone who was in a movie with Kevin Bacon
17:29:00 <Ngevd> I'm also two handshakes away from Tony Blair
17:30:35 <fizzie> And two cards short of a full deck.
17:30:35 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
17:30:44 -!- Labbekak_ has joined.
17:31:05 <Labbekak_> > "maybe" "no" "yes"
17:31:06 <lambdabot> Couldn't match expected type `t1 -> t2 -> t'
17:31:06 <lambdabot> against inferred type ...
17:31:29 <Ngevd> What were you trying to achieve there?
17:31:34 <Labbekak_> :p
17:31:42 <Labbekak_> in J thats a list
17:31:53 <Ngevd> Haskell isn't J
17:31:59 <Labbekak_> What?
17:32:01 -!- Labbekak has quit (Ping timeout: 258 seconds).
17:32:03 <Ngevd> > ["maybe", "no", "yes"]
17:32:04 <lambdabot> ["maybe","no","yes"]
17:32:16 <Ngevd> Now /that's/ a list
17:32:18 <Labbekak_> I was thinking Haskell would return the last string
17:32:47 <Labbekak_> > [1, 2, 3] + [4, 5, 6]
17:32:48 <Ngevd> Nah, Haskell thinks you're trying to use a string as a function
17:32:48 <lambdabot> No instance for (GHC.Num.Num [t])
17:32:48 <lambdabot> arising from a use of `e_1123456' at <...
17:33:01 <Labbekak_> how to add two lists together?
17:33:48 <elliott> Labbekak_: zipWith (+)
17:34:18 * elliott likes J too
17:34:18 <kallisti> Labbekak_: if you write a language expecting it to work like another language. Well, I can't help you. :(
17:34:34 -!- sebbu2 has changed nick to sebbu.
17:34:44 <Ngevd> > (+) <$> [1,2,3] <> [4,5,6]
17:34:44 <Labbekak_> Didn't really expect it work :
17:34:45 <lambdabot> Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc'
17:34:45 <lambdabot> agains...
17:34:50 <Labbekak_> just trying out
17:34:56 <Labbekak_> > zipWith (+) [1,2,3] [3,2,1]
17:34:57 <Ngevd> > (+) <$> [1,2,3] <*> [4,5,6]
17:34:57 <lambdabot> [4,4,4]
17:34:57 <lambdabot> [5,6,7,6,7,8,7,8,9]
17:35:05 <Vorpal> hi
17:35:09 <Labbekak_> hey
17:35:10 <elliott> Ngevd: you want ZipList
17:35:24 <elliott> > runZipList $ (+) <$> ZipList [1,2,3] <*> ZipList [4,5,6]
17:35:25 <lambdabot> Not in scope: `runZipList'
17:35:26 <Ngevd> elliott, that would depend on what I am wanting to achieve
17:35:30 <elliott> @hoogle ZipList a -> a
17:35:31 <lambdabot> Control.Applicative getZipList :: ZipList a -> [a]
17:35:31 <lambdabot> Prelude id :: a -> a
17:35:31 <lambdabot> Data.Function id :: a -> a
17:35:35 <elliott> > getZipList $ (+) <$> ZipList [1,2,3] <*> ZipList [4,5,6]
17:35:36 <lambdabot> [5,7,9]
17:36:59 <Ngevd> > [5,7,9] == [5,6,7,6,7,8,7,8,9]
17:37:00 <lambdabot> False
17:37:04 <Ngevd> SEE!?
17:37:40 <fizzie> elliott: I'm not exactly understanding your gracious invitation.
17:38:08 <fizzie> Except now that I look at the context it seems midpointy or somesuch.
17:38:33 <Labbekak_> map (product 1..) [1..5]
17:38:44 <Labbekak_> > map (product 1..) [1..5]
17:38:44 <lambdabot> <no location info>: parse error on input `..'
17:38:54 <Labbekak_> > map (product . (1..)) [1..5]
17:38:55 <lambdabot> <no location info>: parse error on input `..'
17:38:59 <elliott> fizzie: So are you coming??? It's the Hexham-Helsinki Friendship Meetup.
17:39:24 <fizzie> elliott: It looks kinda desolate.
17:40:05 <fizzie> The Hexinki-Helsham Meetup.
17:40:07 <Labbekak_> > fromTo 1 5
17:40:07 <lambdabot> Not in scope: `fromTo'
17:40:18 <elliott> fizzie: There'll be a ship.
17:40:21 <elliott> Then we'll go to Oslo.
17:40:23 <elliott> Labbekak_: enumFromTo
17:40:24 <fizzie> > [1..5]
17:40:24 <lambdabot> [1,2,3,4,5]
17:40:28 <elliott> or that
17:40:31 <Labbekak_> > enumFromTo 1 5
17:40:31 <lambdabot> [1,2,3,4,5]
17:40:48 <Labbekak_> > map (product . (enumFromTo 1)) [1..5]
17:40:49 <lambdabot> [1,2,6,24,120]
17:41:05 <Labbekak_> currying ..?
17:41:08 <Labbekak_> > (1..)
17:41:09 <lambdabot> <no location info>: parse error on input `..'
17:41:19 <Ngevd> Haskell is named after Mr. Curry himself
17:41:35 <Labbekak_> > (1..) 5
17:41:36 <lambdabot> <no location info>: parse error on input `..'
17:41:47 <fizzie> @pl \x -> [1..x]
17:41:48 <lambdabot> enumFromTo 1
17:41:50 <fizzie> Aw.
17:41:56 <elliott> > [1..] -- :p
17:41:57 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
17:42:11 <Ngevd> > take 5 ([1..])
17:42:11 <Labbekak_> whaa
17:42:12 <lambdabot> [1,2,3,4,5]
17:42:16 <Labbekak_> careful man
17:42:27 <Ngevd> Labbekak_, infinite lists a all over the place in Haskell
17:42:36 -!- copumpkin has joined.
17:42:38 <Labbekak_> I know just kidding
17:42:52 <Labbekak_> ive been reading http://learnyouahaskell.com abit
17:44:36 <Ngevd> I will go now
17:44:42 <Ngevd> My work here is done
17:44:49 -!- Ngevd has quit (Quit: fungot, can you here me?).
17:44:49 <kallisti> Ngevd: okay I am saying good bye.
17:44:56 <Labbekak_> too late
17:45:02 <kallisti> :(
17:45:18 <Labbekak_> 2 l8
17:45:23 <Labbekak_> im a wizard
17:46:13 <kallisti> Labbekak_: I figure not is a good time to compare you with my totally awesome code http://sprunge.us/hKaK
17:46:20 <kallisti> s/not/now/ HAHAHA IRONY
17:46:41 <kallisti> s/compare/some verb that involves forcing you to look at it/
17:46:57 <kallisti> wtf I need to actually pay attention when I mash buttons on this big field of buttons.
17:47:02 <elliott> I don't.
17:47:10 <Labbekak_> Well it looks cool :p
17:47:51 <kallisti> Labbekak_: the first one takes an alphabet and generates every palindrome in that alphabet.
17:48:00 <kallisti> the second one lists all of the possible brainfuck strings.
17:48:35 <kallisti> though I'm thinking about changing it back to the old version because that's a really verbose function..
17:49:08 <Labbekak_> awesome
17:49:22 <Labbekak_> what does >>= doe
17:49:25 <Labbekak_> *do
17:49:33 <kallisti> elliott: ^^^
17:50:13 <kallisti> I'm going to go get something to eat instead of witnesses the can of worms I just opened.
17:51:42 <kallisti> Labbekak_: do you know about typeclasses yet?
17:52:28 <Labbekak_> nope
17:52:43 <kallisti> if you go learn about those I (or someone else) can better explain >>=
17:52:47 <Labbekak_> ill read
17:53:00 <fizzie> @ty (>>=)
17:53:01 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b
17:53:03 <fizzie> The bot already explained it.
17:54:28 <kallisti> Labbekak_: what >>= does depends on the types it's being used with. I'll say that the way it's being used in my program that I linked is equivalent to:
17:54:33 <kallisti> (>>=) = concat . map
17:54:37 <kallisti> on lists
17:54:57 <kallisti> er
17:55:09 <kallisti> (>>=) ls f = concat (map f ls)
17:55:11 <kallisti> rather
17:59:43 <kallisti> (and, in fact, if you replace concat with join, and map with fmap, this is true for every monad)
17:59:50 <kallisti> (but I digress)
18:02:02 <kallisti> > fmap return [1,2,3,4]
18:02:03 <lambdabot> No instance for (GHC.Show.Show (m a))
18:02:03 <lambdabot> arising from a use of `M3415154960...
18:02:16 <kallisti> > fmap return [1,2,3,4] :: [[Int]]
18:02:16 <lambdabot> [[1],[2],[3],[4]]
18:02:27 <kallisti> > join $ fmap return [1,2,3,4] :: [[Int]]
18:02:28 <lambdabot> No instance for (GHC.Num.Num [GHC.Types.Int])
18:02:29 <lambdabot> arising from the literal `...
18:02:36 <kallisti> > join $ fmap return [1,2,3,4] :: [Int]
18:02:37 <lambdabot> [1,2,3,4]
18:06:05 <elliott> "Monads are a way to guarantee the order of operations in a purely functional, lazy language."
18:06:06 <elliott> sdl;opwktp4otb5i -0t4 494ti 4-ti 4-t
18:06:07 <elliott> 4=-ot
18:06:07 <elliott> 4ot
18:06:08 <elliott> ot =-o34=t- o34][etl ][
18:06:08 <elliott> e4ty
18:06:08 <elliott> e4lt]
18:06:10 <elliott> ldfgl esp[kfghp[ s
18:06:12 <elliott> ghp[kp[
18:06:14 <elliott> dkgh okhdjh
18:06:16 <elliott> hopgh
18:06:18 <elliott> dfp[hk dph p]ophk opgk[ fghkopfghkopofgh
18:06:20 <elliott> PUNCH!!!
18:07:48 <kallisti> elliott: lol
18:07:54 <kallisti> elliott: is this /published/ somewhere?
18:08:01 <kallisti> can we hunt this person down and kill them?
18:08:48 <kallisti> elliott: challenge: make the above a valid program string for an esolang
18:08:54 <kallisti> (including the PUNCH!!!)
18:08:55 <elliott> kallisti: If we killed people who are wrong, you'd be so dead.
18:09:35 <kallisti> no, I don't publish my information to people in the guise of facts.
18:09:49 <kallisti> for a wide audience
18:09:55 <kallisti> to read my expert knowlege.
18:10:39 <kallisti> (assuming that's what that is, you never answered my question)
18:11:02 <elliott> http://labs.scrive.com/2011/12/why-monads/
18:11:10 <kallisti> no don't link me...
18:11:35 <kallisti> actually I think I read this when I was learning about monads.
18:11:40 <kallisti> and I thought it was true for a while.
18:11:46 <kallisti> DO YOU SEE WHY WE MUST KILL?
18:11:48 <elliott> um
18:11:49 <elliott> 2011/12
18:11:55 <elliott> so you learned monads yesterday
18:11:58 <kallisti> lol
18:12:00 <kallisti> oh, um...
18:12:01 <kallisti> maybe not
18:12:01 <kallisti> but
18:12:03 <kallisti> this looks familiar
18:12:09 <kallisti> I remember reading something like this before.
18:12:13 <elliott> "I can't remember where I read it and the name of the company, but they designed in a "terrorizer" into their redundant setup. The terrorizer randomly killed processes. Sounds like a good way to know if the system you develop isn't redundant only in the buzz-word checklist." :D
18:14:47 <kallisti> "Finally, a monad must possess a join function that takes a ridiculous burrito of burritos and turns them into a regular burrito. Here the obvious join function is to remove the outer tortilla, then unwrap the inner burritos and transfer their fillings into the outer tortilla, and throw away the inner wrappings."
18:15:59 <kallisti> "
18:16:03 <kallisti> This is true because tortillas are indistinguishable.
18:16:05 <kallisti> I know you are going to point out that some tortillas have the face of Jesus. But those have been toasted, and so are unsuitable for burrito-making, and do not concern us here.
18:16:09 <kallisti> "
18:19:35 <elliott> @src foldl1'
18:19:36 <lambdabot> Source not found. The more you drive -- the dumber you get.
18:19:40 <elliott> @src foldl'
18:19:40 <lambdabot> foldl' f a [] = a
18:19:40 <lambdabot> foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
18:19:42 <elliott> oh, duh
18:28:32 -!- kallisti has quit (Ping timeout: 240 seconds).
18:30:37 -!- kallisti has joined.
18:30:37 -!- kallisti has quit (Changing host).
18:30:37 -!- kallisti has joined.
18:32:45 <Phantom_Hoover> http://www.cracked.com/article_19606_8-apps-designed-specifically-modern-douchebags.html
18:33:01 * Phantom_Hoover notes that the author doesn't seem to understand that creepy is open-source.
18:35:27 -!- derdon has quit (Remote host closed the connection).
18:39:12 -!- variable has joined.
18:43:09 <kallisti> "The beauty of this app is that it allows one to automate text messages and emails to a girlfriend at programmed intervals with an adjustable "relationship intensity" setting."
18:43:12 <kallisti> looooool
18:46:28 -!- Labbekak_ has quit (Quit: Page closed).
18:48:05 <kallisti> elliott: "The result of the first gets passed to the second, whose result gets passed to the third. In other words, they happen in order."
18:48:08 <kallisti> wow this guy
18:48:12 <kallisti> doesn't understand what lazy evaluation means.
18:49:09 <Vorpal> elliott, no longer on the tablet?
18:49:25 <elliott> kallisti: By the way, I'm 115.935484 times better than you.
18:49:26 <elliott> Vorpal: indeed
18:49:49 <Vorpal> elliott, why?
18:49:56 <Vorpal> the results were funny
18:50:16 <elliott> Vorpal: Well, I put it back in its box and slept.
18:50:22 <Vorpal> I see
18:50:25 <kallisti> elliott: http://labs.scrive.com/2011/12/why-monads/
18:50:26 <kallisti> can you like
18:50:27 <kallisti> maybe
18:50:29 <kallisti> write a comment
18:50:30 <elliott> Also I can't write things like http://stackoverflow.com/questions/8659345/why-is-this-simple-haskell-algorithm-so-slow/8659368#8659368 on a tablet.
18:50:31 <kallisti> explaining
18:50:35 <kallisti> how he is like
18:50:36 <kallisti> mistaken
18:50:46 <elliott> kallisti: Maybe I, like, already did, like, maybe.
18:50:52 <elliott> Like, on reddit, maybe.
18:50:52 <Phantom_Hoover> elliott, you were on a tablet?
18:51:03 <elliott> http://www.reddit.com/r/haskell/comments/ntox2/why_monads_what_i_learned_about_monads_working_in/c3bvde7
18:51:06 <elliott> Maybe, like, upvote me, like.
18:51:10 <elliott> Phantom_Hoover: Yes.
18:51:14 <elliott> Phantom_Hoover: It was DRUGS.
18:51:21 <kallisti> elliott: NO DO IT ON HIS WEBSITE
18:51:27 <elliott> (I like how Vorpal's statements make perfect sense with that interpretation of tablet.)
18:52:01 <Vorpal> elliott, which interpretation?
18:52:13 <kallisti> elliott: also he seems to suggest that the Maybe monad has an inherent ordering.
18:52:16 * Vorpal decides it was physically standing on a clay tablet
18:52:50 <elliott> Vorpal: The DRUGS one.
18:53:06 <elliott> kallisti: Well, it does force evaluation of each "statement" before the next one to WHNF (which is just Nothing vs. Just).
18:53:14 <elliott> Of course the actual values are not forced.
18:53:21 <kallisti> right.
18:54:19 <Vorpal> elliott, oh. Right
18:54:25 <Vorpal> elliott, didn't know that meaning
18:54:27 <kallisti> >> is commutative, which doesn't explain sequencing very well. Just 5 >> Nothing is not going to evaluate Just 5 at all.
18:54:35 <kallisti> *commutative for Maybe
18:56:25 <elliott> kallisti: um yes it is
18:56:33 <elliott> > undefined >> Nothing
18:56:34 <lambdabot> *Exception: Prelude.undefined
18:57:03 <elliott> > Nothing >> Just 5
18:57:04 <lambdabot> Nothing
18:58:22 <kallisti> oh hi
18:58:47 <kallisti> I misread Haskellwiki yet again!
18:59:22 -!- Ngevd has joined.
18:59:28 <Ngevd> Hello!
19:01:10 <elliott> hi
19:01:54 -!- oerjan has joined.
19:03:21 <kallisti> oerjan: speak
19:04:27 <elliott> hi welcome to america kallisti
19:04:58 <elliott> kallisti don't want no welcomes :(
19:05:21 * oerjan whistles guiltily
19:05:34 -!- ais523 has joined.
19:06:03 -!- cheater has quit (Read error: Connection reset by peer).
19:08:30 <elliott> Guilty of crimes.
19:11:33 * oerjan must have some food first
19:11:49 <Ngevd> Criminal food
19:12:06 <elliott> @tell doop test
19:12:07 <lambdabot> Consider it noted.
19:12:08 -!- elliott has changed nick to doop.
19:12:10 * doop test
19:12:11 <lambdabot> doop: You have 1 new message. '/msg lambdabot @messages' to read it.
19:12:17 <doop> hmm, weird
19:12:21 <doop> oh, right, ctcps work like that
19:12:23 <doop> @clear-messages
19:12:24 <lambdabot> Messages cleared.
19:12:28 -!- doop has changed nick to colloinkgravisom.
19:21:28 <Ngevd> Sbeezg is one of the stubbiest articles I have ever seen
19:22:24 <oerjan> so, as a manner of some attempt at self-insight as to why i behave this way toward elliott: i have a father who is exceedingly good at twisting any argument in such a way as to make me (and others) feel like they are being fools and not just wrong but guilty for disagreeing with him. therefore i tend to react violently when i perceive similar behavior in others. maybe excessively so.
19:22:35 <Phantom_Hoover> Cat's Eye languages don't need much of an article, since they're well-specified on the website.
19:23:02 -!- cheater has joined.
19:23:51 <Phantom_Hoover> oerjan, can I just point out that liking Matt Smith is something which you should feel wrong and guilty for.
19:24:13 * oerjan swats Phantom_Hoover -----###
19:24:18 <oerjan> yes, you can.
19:24:53 <oerjan> it might hurt more if i had any idea who matt smith is, apart from you mentioning he played the doctor.
19:25:48 <Phantom_Hoover> Well *you* shouldn't feel wrong and guilty for it; Ngevd should.
19:26:27 <oerjan> O KAY
19:27:41 <ais523> oh, hmm, I was thinking about Burro and got a little sidetracked
19:27:42 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
19:27:57 <ais523> the resulting language does look superficially like a BF deriv, though, so I'm not sure if I should own up to creating it
19:28:36 <Ngevd> msg me the spec?
19:28:55 <oerjan> dammit closed the wrong window X_X
19:29:29 <ais523> Ngevd: haven't written it yet
19:30:05 <ais523> that's two esolangs I've created in a week, but I haven't written the spec for either (the other one's a declarative OISC, which I proved computable but it's not completely obvious, and I'm now trying to prove TC)
19:30:26 -!- colloinkgravisom has quit (Remote host closed the connection).
19:30:30 <Ngevd> I have one finished, unpublished esolang
19:30:35 -!- elliott has joined.
19:30:57 <Ngevd> It was my first esolang, before I heard of the wiki
19:32:05 <ais523> anyway, and relatedly, anyone here know category theory better than I do? (I don't know it very well)
19:34:23 <oerjan> ais523: well if you know it _very_ badly... :P
19:40:04 <elliott> ais523: If you know it even worse than oerjan and don't want to talk to oerjan, I'M YOUR MAN.
19:40:10 <elliott> Cue Phantom_Hoover.
19:40:34 -!- calamari has joined.
19:42:02 <ais523> oerjan: well, it all started when I was trying to define a tensor for Burro
19:42:10 <ais523> but what I came up with wasn't associative
19:42:15 <oerjan> oh hm tensor
19:42:30 <ais523> I'm not sure if that's a problem, because I can't exactly remember what a tensor is
19:42:42 <elliott> Phantom_Hoover said tensor once, ask him.
19:42:45 <ais523> then I tried to make a field, but I decided that an associative * and + would destroy the categorical structure
19:43:43 <oerjan> i know a definition of tensor product of modules as a universal object, i guess that's categorical
19:44:10 <ais523> tensors are a bit like tuples, IIRC
19:44:14 <ais523> so are cartesian products
19:44:21 <elliott> ais523: cpressey is sceptical there is even a ring language
19:44:25 <ais523> and I can never remember what the distinction is (there often aren't)
19:44:27 <ais523> elliott: what's a ring, again?
19:44:27 <elliott> see http://catseye.tc/cpressey/louie.html#Potro
19:44:38 <elliott> ais523: ...it defines ring on the page :P
19:44:47 <elliott> catseye.tc: ais523 ready
19:44:52 <elliott> ais523: Anyway, fields are rings, so if rings are hard...
19:45:12 <Phantom_Hoover> <ais523> I'm not sure if that's a problem, because I can't exactly remember what a tensor is
19:45:22 <Phantom_Hoover> They're like vectors except more dimensions?
19:45:54 <ais523> elliott: hmm, I was going for completely different + and *
19:46:08 <Vorpal> Phantom_Hoover, how does that work? You can have any number of dimensions for a vector
19:46:22 <Phantom_Hoover> As in, it can be a matrix.
19:46:30 <ais523> to be precise, f+g corresponds to function | Left a -> f a | Right b -> g b
19:46:30 <Vorpal> Phantom_Hoover, ah
19:46:40 <ais523> and f*g responds to function | (a,b) -> (f a, g b)
19:46:43 <ais523> that distributes nicely
19:46:50 <oerjan> i vaguely recall the word is "rank"
19:46:57 <ais523> if you allow various equivalences between types
19:46:59 <Vorpal> Phantom_Hoover, so what do you use tensors for?
19:47:20 <elliott> ais523: that's either and (***)
19:47:37 <elliott> the obvious catamorphisms for Either and (,) I believe
19:47:40 <ais523> elliott: I'm not at all surprised that they have names
19:47:53 <elliott> ais523: what you have is completely unlike burro, anyway
19:47:57 <elliott> if you're going down that route
19:48:00 <elliott> and less interesting :p
19:48:10 <ais523> elliott: aha, it's not /that/ completely unlike burro
19:48:14 <Phantom_Hoover> Vorpal, stress?
19:48:17 <fizzie> Vorpal: You use them to do physics, from what I've seen.
19:48:19 <ais523> because the next step is to identify all the data types
19:48:29 <Phantom_Hoover> Stress... energy?
19:49:30 <Vorpal> Phantom_Hoover, I see
19:49:35 <fizzie> Phantom_Hoover: Stress levels of physics students.
19:49:41 <elliott> Strenegy.
19:49:47 <elliott> It's like synergy, but stringy.
19:50:26 <Ngevd> styngergy
19:51:02 <oerjan> :t (|||)
19:51:02 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowChoice a) => a b d -> a c d -> a (Either b c) d
19:51:27 <elliott> Ah, it's (|||) and (***).
19:51:38 <elliott> ais523: If you were using Haskell, you could represent your language as an arrow. :p
19:51:48 <elliott> Except you probably don't want arr. :(
19:51:59 <ais523> elliott: actually, that's the point, I think
19:52:08 <ais523> functions have to be arrows
19:53:02 <oerjan> ais523: not category arrows, haskell Arrows
19:53:29 <ais523> oerjan: oh, I see
19:53:35 <ais523> the same name is used for multiple things, as usual?
19:54:37 <ais523> hmm, what's the name for the type that has no values?
19:54:41 <ais523> (as opposed to (), which has one value)
19:55:04 <oerjan> yes, the haskell naming is a bit unfortunate, especially as category arrows show up in haskell as well
19:55:06 <Ngevd> ais523, impossible?
19:55:07 <ais523> "void" also has one value
19:55:17 <elliott> ais523: Void
19:55:21 <ais523> I suppose in an imperative language, "noreturn" would be a good name because that's what it'd mean
19:55:25 <ais523> elliott: nah, void is the same type as ()
19:55:26 <elliott> void doesn't have one value if you mean C
19:55:28 <elliott> it's not really a type
19:55:32 <elliott> ais523: I said Void
19:55:37 <ais523> ah, aha
19:55:43 <elliott> http://hackage.haskell.org/packages/archive/void/0.5.5/doc/html/Data-Void.html, it's the standard name
19:55:55 <ais523> OK, Haskell is now officially not allowed to name anything
19:55:58 <oerjan> ais523: haskell does not permit a type not to have the bottom value, which is all Void has
19:56:06 <elliott> ais523: other common names are ⊥, 0, ∅
19:56:29 <ais523> elliott: yep, those all seem plausible
19:57:05 <ais523> although calling the type ⊥ is calling a type and a value by the same name
19:57:22 <elliott> ais523: well in Haskell ⊥ is the only inhabitant of Void, so...
19:57:32 <elliott> but who cares? () is calling a type and a value by the same name too
19:57:37 <ais523> yes, indeed
19:57:40 <elliott> they're both ⊥, just in different contexts
20:01:30 <ais523> anyway, that's your 0; and 1 is the type with 1 value (empty tuple)
20:03:22 <elliott> ais523: what's my 0
20:03:38 <ais523> elliott: I mean, 0 and 1 for + and *, in terms of tyeps
20:03:39 <oerjan> initial and terminal objects, except that's for Set not haskell
20:03:40 <ais523> *types
20:03:42 <ais523> with the usual definition
20:04:05 <ais523> oerjan: indeed
20:04:21 <ais523> hmm, now I'm trying to remember which is which
20:04:38 <elliott> ais523: I don't see what you're talking about types for
20:04:46 <elliott> since your + and * were about functions
20:04:48 <elliott> not types
20:04:55 <oerjan> the empty set is initial and one-point sets are terminal
20:05:03 <elliott> anyway, you could have just told me that's what you were going for :P + is Either, * is (,), 0 is Void, 1 is ()
20:05:07 <elliott> the obvious laws apply
20:05:15 <elliott> same way you calculate zippers with derivatives
20:05:22 <ais523> elliott: well, the point is, that there's only one type
20:05:27 <ais523> hmm, I am at least vaguely confused
20:05:54 <ais523> the idea's to effectively have types whilst not having them
20:05:56 <ais523> like Ursala
20:06:07 <ais523> all types can be reinterpreted as each otehr
20:06:08 <oerjan> for haskell the requirement of only one function between types breaks down completely; you always have at least undefined and const undefined as separate elements due to seq
20:06:09 <ais523> *other
20:06:18 <ais523> oerjan: where does that requirement come from?
20:06:24 <ais523> I thought that wasn't generally true, or even useful
20:06:42 <oerjan> ais523: it's the definition of initial/terminal objects: only one morphism out/in
20:06:48 <oerjan> for any other object
20:06:53 <ais523> oerjan: ah, I see
20:07:15 <ais523> I thought the definition was that there were no morphisms in/out
20:12:48 <Phantom_Hoover> Consider the identity.
20:14:00 <ais523> <spambot> Court Jobs in Iraq
20:14:05 <ais523> anyone want one of those?
20:14:14 <elliott> wow, WAI is going to depend on a package I helped develop :D
20:14:15 * elliott FAMOUSE
20:14:24 <Phantom_Hoover> <oerjan> for haskell the requirement of only one function between types breaks down completely; you always have at least undefined and const undefined as separate elements due to seq
20:14:35 <elliott> oerjan: Phantom_Hoover: EXCUSEUE ME REVEL IN MY FAME???
20:15:01 <Phantom_Hoover> I thought _|_ made any category theory with Haskell ugly so you just pretend it doesn't exist and continue living happily.
20:15:39 <Phantom_Hoover> Also, what's WAI?
20:16:01 <Phantom_Hoover> ALSO: what is the package?
20:16:36 <elliott> http://hackage.haskell.org/package/wai
20:16:37 <elliott> http://hackage.haskell.org/package/vault
20:16:38 <elliott> Respectively.
20:17:21 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
20:17:32 <Phantom_Hoover> I love how the github page for WAI doesn't make it at all obvious what it actually does.
20:18:48 <elliott> It's a GitHub page, they don't have to.
20:19:32 <Vorpal> elliott, are you saying it isn't useful to tell what it is on the github page?
20:20:00 <elliott> Vorpal: No.
20:20:08 <Vorpal> good
20:25:03 <Phantom_Hoover> http://www.reddit.com/r/GEB/
20:25:15 <Phantom_Hoover> The very fact that this is a thing annoys me.
20:25:29 <Ngevd> Everything is a thing
20:25:33 <Ngevd> By definition
20:28:16 -!- MSleep has changed nick to MDude.
20:28:29 <elliott> oerjan: help MonadFix instances are so hard to write :(
20:28:38 <MDude> Godel Escher Bach in general, or discussion of it on Reddit?
20:29:39 -!- oerjan has quit (Remote host closed the connection).
20:35:20 -!- zzo38 has joined.
20:37:17 <elliott> :t takeMVar
20:37:17 <lambdabot> Not in scope: `takeMVar'
20:38:13 <Phantom_Hoover> MDude, the subreddit.
20:38:35 <Phantom_Hoover> Because it's inevitably going to be run by people who think it's so ~deep~.
20:44:22 -!- Ngevd has quit (Quit: Goodbye).
20:46:15 -!- Ngevd has joined.
21:10:23 -!- DCliche has joined.
21:14:26 -!- Klisz has quit (Ping timeout: 268 seconds).
21:16:31 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:16:47 <elliott> :t fromIntegral
21:16:48 <lambdabot> forall a b. (Integral a, Num b) => a -> b
21:23:51 -!- Phantom_Hoover has joined.
21:25:56 -!- augur_ has joined.
21:26:10 -!- augur has quit (Read error: Connection reset by peer).
21:30:05 -!- Ngevd has quit (Quit: EARLY SLEEP).
22:10:11 -!- mathMajor has joined.
22:17:03 -!- GreaseMonkey has joined.
22:20:25 -!- mathMajor has quit (Ping timeout: 268 seconds).
22:27:20 <elliott> is mathmajor a math major
22:30:38 <zzo38> I don't know
22:30:59 <elliott> ok
22:34:32 -!- azaq23 has joined.
22:34:41 -!- azaq23 has quit (Max SendQ exceeded).
22:36:20 -!- azaq23 has joined.
22:41:01 <zzo38> Is there any way to use Haskell to create Glulx executables?
22:41:47 <Sgeo> What is Glulx?
22:42:49 <zzo38> It is a virtual machine
22:43:08 <zzo38> Another machine I want to use with Haskell is MMIX
22:45:02 -!- Phantom_Hoover has quit (Quit: Leaving).
22:50:17 <zzo38> Other things I would like to have is C to Glulx, LLVM to Glulx, BASIC to Glulx, and LLVM to MMIX.
22:50:30 <zzo38> (C to MMIX is already implemented by GNU C compiler)
22:51:44 <zzo38> I think the best way to represent type-level natural numbers in Haskell is using uninhabited type (called Zero) for zero, and Maybe for successor. What do you think of this?
22:53:20 <Sgeo> > join $ Just (Just (Just (Just Nothing)))
22:53:21 <lambdabot> Just (Just (Just Nothing))
22:54:06 <Sgeo> join x = if x >= 1 then x-1 else x?
22:54:44 <Sgeo> infinity = fix Join
22:54:51 <zzo38> Yes that would do it, but it isn't really what I meant.
22:54:54 <Sgeo> (Pretty sure I saw something like that somewhere)
22:55:23 <zzo38> For *values*, Nothing would be zero, Just Nothing is one, and so on.
22:55:35 -!- Phantom_Hoover has joined.
22:55:38 <Sgeo> :t fix Just
22:55:39 <lambdabot> Occurs check: cannot construct the infinite type: a = Maybe a
22:55:39 <lambdabot> Expected type: a
22:55:39 <lambdabot> Inferred type: Maybe a
22:55:42 <zzo38> See?
22:55:43 <Sgeo> Darn
22:56:22 <zzo38> If you represent type-level natural numbers this way, there is a very easy implementation of an array with a fixed number of elements. It is simply (->)
22:57:15 <zzo38> And it is even a monad!
22:57:57 <elliott> <Sgeo> join x = if x >= 1 then x-1 else x?
22:58:01 <elliott> i doubt it
22:58:24 <Sgeo> > join Nothing
22:58:25 <lambdabot> Nothing
22:58:31 <Sgeo> > join (Just Nothing)
22:58:32 <lambdabot> Nothing
22:58:36 <Sgeo> > join (Just (Just Nothing))
22:58:37 <lambdabot> Just Nothing
22:58:49 <zzo38> Like I said, Nothing would represent zero in values.
22:58:54 <elliott> oh, right
22:58:59 <zzo38> So, the type-level natural number 5 has values 0 to 4.
23:00:12 <Sgeo> zzo38, you can't write infinity in your system. Although I guess that's part of the point?
23:00:20 <Sgeo> That it's something that exists at type-level
23:01:06 <elliott> the worst part of non-strict semantics is that it makes people talk about "infinity" :(
23:01:11 <zzo38> Sgeo: Yes, it is the point; it is supposed to be type-level numbers.
23:02:02 <ais523> elliott: just use the arbitrary number instead
23:02:19 <ais523> oh, right, in my new language, which I've forgotten the name of and will have to rename unless I remember it, there are certain types of loop that look infinite
23:02:31 <ais523> but the implementation /must/ optimise them into finite loops, according to the spec
23:02:41 <elliott> ais523: anarchy?
23:02:48 <ais523> no, not that one
23:02:56 <ais523> the one that was inspired by Burro
23:03:22 <ais523> hey, you know how much more modular BF gets simply by adding "insert tape element" and "delete tape element" commands?
23:03:27 <ais523> sadly, it's hard to make them reversible
23:03:54 <Phantom_Hoover> Can you just explain the language, rather than giving glimpses of it?
23:04:11 <ais523> no
23:04:20 <ais523> I'm glimpsing because I invented it while asleep
23:04:20 <Phantom_Hoover> It's kind of annoying just to describe some property without any details on why it arises.
23:04:24 <ais523> so remembering it is awkward
23:04:31 <ais523> and I'm not sure it's fully specced out yet
23:04:37 <ais523> I can explain the other language, though, the OISC
23:05:04 <ais523> basically, each command can be referred to (e.g. 1 for the first command, 2 for the second, 3 for the third, etc)
23:05:21 <ais523> well, they're not really commands, more like unknowns
23:05:39 <ais523> and you write, say, 2 * 3 + 4 for "the value of the second command times the value of the third command plus the value of the fourth command"
23:05:53 <ais523> that's the only form allowed, unknown * unknown + unknown (= unknown, the unknown that represents /this/ command)
23:06:00 <ais523> then, all the interp has to do is solve the inequalities
23:06:09 <ais523> and it goes into an infinite loop if there are no solutions
23:06:12 <ais523> (this last bit makes it TC)
23:06:36 <ais523> *(this last bit makes it computable)
23:06:38 <Sgeo> Going into infinite loops doesn't necessarily imply TCness
23:06:50 <ais523> Sgeo: I know, thus the correction
23:12:15 <zzo38> Is there a Haskell package for the category of walks?
23:13:30 <zzo38> Is arr like a functor from (->) to the other category?
23:15:04 <elliott> i think so
23:17:03 <zzo38> Is that a proper way to say what the laws are for the Arrow class?
23:20:41 <zzo38> Maybe, first second *** &&& should be one class, and arr should be another class which is of two categories. And then provide functions which can be used as default definitions of second and &&& when it is from the (->) category. Would that work or make sense at all?
23:22:31 <zzo38> And make them workable with datatype families so that you are not limited to only categories with the same objects as Haskell
23:25:06 <elliott> zzo38: well the problem is that without arr, you can do almost nothing with an Arrow, so you have to replace it somehow
23:25:09 <elliott> see for example http://www.cs.berkeley.edu/~megacz/garrows/
23:26:24 -!- Klisz has joined.
23:29:11 -!- DCliche has quit (Ping timeout: 240 seconds).
23:32:31 <zzo38> I see nothing about functors mention in there. I do like that idea and would like to see something like -XModalTypes in GHC it might sometimes be useful to do stuff
23:38:14 -!- monqy has joined.
23:39:53 <Phantom_Hoover> monqy!
23:39:54 -!- madbr has joined.
23:40:17 <Phantom_Hoover> madbr!
23:40:20 <zzo38> Do you know if it is possible to use ghci with Haskell programs that require a main function written in C?
23:41:25 <monqy> you can interact with the nonmain functions presumably
23:44:01 <madbr> hello
23:46:10 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
23:56:12 <elliott> zzo38: I was just saying re: splitting arr out and leaving just first, second, (***) and (&&&)
23:56:22 <elliott> because that doesn't leave a useful typeclass without adding things like garrow does
2011-12-29
00:02:16 <zzo38> Well, I wanted to generalize it so that you can use arr between any two categories by having a two-parameters class, instead of only from (->) to something else
00:11:13 -!- Phantom_Hoover has joined.
00:23:25 <zzo38> I think the brainfuck + and - are Kleisli morphisms while < and > are coKleisli morphisms. (on the (Sum Integer -> Word8) type)
00:23:28 <elliott> Phantom_Hoover: You sure are bouncing a lot today.
00:23:40 <Phantom_Hoover> WiFi is acting up.
00:23:53 <zzo38> http://sprunge.us/UBga
00:24:21 <elliott> "Probably apocryphal, but many years back I read that Lotus had shipped 40,000 units of Lotus Notes for the Mac and 60,000 were returned. The interface was so bad that even the people who had pirated it sent it back."
00:25:29 <zzo38> What is the use of sending it back if you pirated it? Simply delete it in that case. But write a review of it being bad, either way.
00:25:50 <Phantom_Hoover> You can cause some of the pain the makers of Lotus Notes caused you back upon them.
00:26:38 <zzo38> I agree if you purchased it you should send it back and request a refund. But I doubt that can work if you pirated it.
00:26:59 -!- Patashu has joined.
00:32:00 <zzo38> Is these Kleisli and coKleisli morphisms correct?
00:32:08 <ais523> if it /did/ work, no wonder all the pirates sent it back
00:37:34 <elliott> ais523: if what did work
00:37:47 <ais523> getting money back for sending back something you'd pirated
00:37:47 <Phantom_Hoover> Lotus.
00:37:51 <Phantom_Hoover> Oh.
00:52:26 -!- hagb4rd has joined.
00:53:11 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
01:22:01 -!- ais523 has quit (Remote host closed the connection).
01:22:41 * Phantom_Hoover → sleep
01:22:42 -!- Phantom_Hoover has quit (Quit: Leaving).
01:45:52 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
01:57:21 -!- NihilistDandy has joined.
02:01:21 -!- Madoka-Kaname has joined.
02:01:22 -!- Madoka-Kaname has quit (Changing host).
02:01:22 -!- Madoka-Kaname has joined.
02:33:23 <elliott> /topic
02:41:08 <Sgeo> It's an elliott!
02:43:08 <monqy> hi
02:46:46 <Sgeo> It's a monqy!
02:48:54 <monqy> hi
02:50:39 <Sgeo> It's a hi!
02:52:08 <monqy> hi
03:13:11 <elliott> hi
03:23:50 <zzo38> It's...
03:52:14 <elliott> hi
03:57:11 -!- DCliche has joined.
04:00:30 -!- Klisz has quit (Ping timeout: 240 seconds).
04:02:36 <elliott> "What the fuck good is the STANDARD if you have to pay for it?
04:02:36 <elliott> I mean, it doesn't really do much good if WG14 is actually CHARGING us for use of C11."
04:03:04 <elliott> oh my god they're actually surprised by this
04:14:50 <elliott> monqy have you ever been so tired you just fell asleep
04:30:28 <kallisti> elliott: hi I went to bed at 2 pm and now it's 11:30 pm what do?
04:31:57 <elliott> i dont know im going to bed
04:32:04 <elliott> cya nerds -----------------------------------,>
04:32:09 -!- elliott has quit (Quit: Leaving).
04:39:33 <monqy> future elliott: yes i have been so tired i involuntarily slipped unconscious (this has happened multiple times)
04:51:41 <kallisti> monqy: what would be the best way to explain to someone that bottom is not important for isomorphisms?
04:52:18 <monqy> uhh
04:52:35 <monqy> define isomorphism in such a way that bottom is not important B)
04:52:35 <kallisti> for example, someone asked on #haskell if there was a 1-tuple in Haskell. I said no because a 1-tuple of a would be isomorphic to a. Someone else said that it's not isomorphic because there's no equivalent to (_|_)
04:54:12 <monqy> Identity (laughs)
04:54:27 <Sgeo> :t (undefined)
04:54:28 <lambdabot> forall a. a
04:54:31 <Sgeo> Bluh
04:54:34 <monqy> ??
04:54:50 <Sgeo> monqy, me stupidly thinking that those parens would result in a 1-tuple
04:57:02 <monqy> oh
04:57:15 -!- Darth_Cliche has joined.
04:57:56 <kallisti> hmm I don't think any of the smart people are on #haskell right now to answer my question.
04:58:45 <kallisti> elliott completely ignored me when I mentioned that _|_ could be relevant to isomorphisms, so maybe that's an indication.
04:58:59 <kallisti> 23:58 < rwbarton> kallisti: both taking _|_ into account and ignoring _|_ can be useful to think about
04:59:02 <kallisti> yessss
05:01:25 -!- DCliche has quit (Ping timeout: 276 seconds).
05:01:47 -!- calamari has quit (Quit: Leaving).
05:27:38 -!- DCliche has joined.
05:31:09 -!- Darth_Cliche has quit (Ping timeout: 244 seconds).
05:33:22 <kallisti> `log ZipList.*Monad
05:33:48 <HackEgo> 2011-12-17.txt:04:57:22: <oerjan> well because i have several times claimed that ZipList _can_ be a Monad
05:33:54 <kallisti> `log ZipList.*Monad
05:34:04 <HackEgo> 2011-11-30.txt:10:11:38: <oerjan> oh and on ZipLists "rectangular" elements obviously are what you intuitively call rectangles, it's just that it applies more generally to any attempt to extend Applicatives to Monads, i believe.
05:34:16 <kallisti> `log ZipList.*Monad
05:34:24 <HackEgo> 2011-12-29.txt:05:34:04: <HackEgo> 2011-11-30.txt:10:11:38: <oerjan> oh and on ZipLists "rectangular" elements obviously are what you intuitively call rectangles, it's just that it applies more generally to any attempt to extend Applicatives to Monads, i believe.
05:34:43 <kallisti> `log (?i)monad.*ziplist
05:34:49 <HackEgo> 2009-06-24.txt:19:28:12: <oerjan> augur: i'm talking about a theoretical Monad instance for ZipList, lambdabot doesn't have it
05:35:07 <kallisti> `log (?i)monad.*ziplist
05:35:13 <HackEgo> 2011-12-29.txt:05:34:49: <HackEgo> 2009-06-24.txt:19:28:12: <oerjan> augur: i'm talking about a theoretical Monad instance for ZipList, lambdabot doesn't have it
05:35:28 <kallisti> `log (?i)ziplist.*diagonal
05:35:33 <HackEgo> 2011-12-29.txt:05:35:28: <kallisti> `log (?i)ziplist.*diagonal
05:35:52 <kallisti> `log (?i)instance ZipList
05:35:58 <HackEgo> 2011-12-29.txt:05:35:52: <kallisti> `log (?i)instance ZipList
05:36:01 <kallisti> `pastelogs ZipList
05:36:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5756
05:37:12 <kallisti> `pastelogs ziplist
05:37:15 <kallisti> surely there are more...
05:37:18 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30067
05:38:13 <kallisti> `pastelogs oerjan> >
05:38:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23026
05:38:40 <kallisti> hm pastelogs doesn't paste everything I see.
05:38:52 <kallisti> `pastelogs oerjan> >
05:38:57 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31141
05:39:13 <kallisti> `pastelogs oerjan> >.*ZipList
05:39:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13236
05:53:07 <kallisti> @tell oerjan You remember how you said your ZipList monad was obvious? Apparently in #haskell no one knows about it.
05:53:07 <lambdabot> Consider it noted.
06:14:35 -!- MDude has changed nick to MSleep.
06:21:18 -!- _sol_ has joined.
06:25:10 -!- _sol_ has left.
06:44:51 <zzo38> I made the file of the complete texts of Super ASCII MZX Town
06:45:04 <zzo38> http://zzo38computer.cjb.net/misc/ascmzxto_texts.txt
06:48:16 -!- augur_ has changed nick to augur.
06:56:22 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:01:18 <zzo38> Can you somehow combine Kleisli categories and coKleisli categories together into one mathematical structure? I think one use of such thing can be a way to represent brainfuck codes too (Kleisli morphisms for value adjuments and coKleisli categories for pointer adjustments)
07:06:08 -!- copumpkin has quit (Ping timeout: 252 seconds).
07:06:14 -!- copumpkin has joined.
07:41:43 -!- cheater has quit (Ping timeout: 252 seconds).
07:42:07 -!- cheater has joined.
07:44:26 -!- cheater has quit (Excess Flood).
07:45:07 -!- cheater has joined.
07:45:22 -!- azaq23 has quit (Quit: Leaving.).
07:47:23 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
07:51:01 -!- Ngevd has joined.
07:51:14 <Ngevd> Hello!
07:55:21 <kallisti> hey
07:57:58 <Ngevd> I motion that we make more interesting esolangs
07:58:26 <monqy> me too
07:58:44 <zzo38> Ngevd: OK. Then please do so.
07:58:49 <zzo38> I do agree
07:58:49 <Ngevd> Hmm
07:59:04 <kallisti> I motion that we make any kind of esolang because setting our standards too high will likely result in inaction.
07:59:13 <Ngevd> Firstly, I will prove Luigi turing-complete
07:59:40 <kallisti> Ngevd: while you're at it prove dupdog is or isn't Turing complete. kth
07:59:40 <kallisti> x
07:59:47 <zzo38> kallisti: I agree with that too.
07:59:59 <Sgeo> dupdog?
08:00:02 <zzo38> There is list of ideas, you can try to read it if you want to.
08:00:03 <kallisti> yes
08:00:36 <zzo38> Another idea is, make some esolangs using rarely-used categories from category theory or something like that
08:01:17 <Sgeo> Esolangs are a monad. #esoteric is a monad. Monad is a monad. You are a monad.
08:01:25 <monqy> sgeo..............
08:01:26 <Sgeo> Monad obsession is a monad.
08:01:39 -!- augur has quit (Remote host closed the connection).
08:01:43 <Ngevd> monqyad
08:01:44 <monqy> sgeo is bad: a monad????
08:01:45 <zzo38> Then use some comonad too
08:02:14 <kallisti> for example the dupdog category, where objects are character interpreters and composition of interpreters forms a new interpreter.
08:02:26 <kallisti> for example the dupdog language itself is mfit composed with shanty
08:02:45 <kallisti> (is totally not making shit up right now)
08:03:46 <zzo38> Or based on any other kinds of rarely-used mathematical structures; not necessarily category theory.
08:04:15 <kallisti> http://en.wikipedia.org/wiki/Rhumb_line base an esolang on these.
08:04:35 <monqy> rhumb
08:04:38 <Sgeo> We should make an esolang where all I/O is done in a monad.
08:04:47 <monqy> sgeo.............
08:04:52 <monqy> what is it with you and monads
08:04:53 <monqy> they're not
08:04:54 <monqy> that great
08:05:05 * Sgeo is being silly right now
08:05:16 <kallisti> monqy: what is it with you and not-monads.
08:05:30 <kallisti> they're not that not-not-great
08:05:49 <monqy> not-monads are often boring too
08:05:59 <kallisti> therefore universe is boring.
08:06:06 <kallisti> oftentimes
08:06:09 <monqy> yes
08:06:37 <kallisti> monqy: make the most boring esoalanggr iffof all
08:07:44 <monqy> howwwwwwwww
08:07:49 <Sgeo> An esolang that just prints the source code
08:07:52 <Sgeo> It's always a quine
08:07:59 <Sgeo> Erm, all programs are quines
08:08:03 <zzo38> Sgeo: Already exists; and there is already an article for it, too.
08:08:05 <Ngevd> Been done
08:08:11 <monqy> languages that do nothing interesting are boring, but langauges that do too much are also boring
08:08:17 <kallisti> I think unix actually comes with such an interpreter
08:08:22 <kallisti> I think it's called echo.
08:08:30 <monqy> what if I did a lot of things, none of them interesting
08:08:42 <Ngevd> You want a language that can do a lot, but you don't know how
08:09:13 <monqy> i'll embed every overused language and all of their derivatives into it
08:10:00 <Sgeo> Embed BF and the derivative of BF where + is - and [ is ] and < is > and > is < etc
08:10:11 <kallisti> Objective-Jythby#++
08:11:20 <zzo38> Sgeo: Yes there is such thing, ReverseFuck, and also ReverseReverseFuck.
08:11:50 <Sgeo> zzo38, but what about combining it in the same language as Brainfuck?
08:12:30 * Sgeo sees nothing about ReverseReverseFUcke
08:12:31 <Sgeo> Fuck
08:14:45 <kallisti> Visual Objective-Jythby#++
08:15:15 <zzo38> http://esolangs.org/wiki/RRF
08:15:33 <zzo38> There is also "Palindrome-Reverse-ReverseFuck".
08:15:48 <zzo38> In which ,]. is a valid program
08:18:38 <Ngevd> brb
08:19:12 -!- cheater has quit (Excess Flood).
08:20:00 -!- cheater has joined.
08:22:33 <Sgeo> Hmm
08:22:46 <Sgeo> Maybe it will help me get a better grasp of Haskell to implement a few esolangs
08:22:53 <Sgeo> That aren't already implemented
08:23:34 <zzo38> Invent esolang which is designed to be impossible to prove is Turing Complete even though it might still be Turing Complete.
08:23:58 <Sgeo> And/or redo my horrific crappy implementation of that one language I crappily implemented in Python
08:26:23 -!- cheater has quit (Excess Flood).
08:27:29 -!- cheater has joined.
08:27:37 <zzo38> Invent esolang which runs only backward in time and not forward
08:28:50 <kallisti> zzo38: that sounds feasible actually
08:29:24 <kallisti> though perhaps not in the way you imagine.
08:29:36 <kallisti> also it couldn't be turing complete because it would always halt.
08:29:57 <Sgeo> There's a ReverseState monad, although I guess that's different
08:29:59 * Sgeo ducks
08:30:30 <zzo38> Yes, that is different.
08:31:38 -!- oerjan has joined.
08:35:15 -!- cheater has quit (Excess Flood).
08:38:01 -!- cheater has joined.
08:40:03 -!- cheater has quit (Excess Flood).
08:40:20 <Ngevd> Back
08:40:49 -!- cheater has joined.
08:43:52 -!- mtve has quit (Ping timeout: 244 seconds).
08:45:21 -!- mtve has joined.
08:45:38 -!- cheater has quit (*.net *.split).
08:45:39 -!- copumpkin has quit (*.net *.split).
08:45:39 -!- zzo38 has quit (*.net *.split).
08:45:39 -!- HackEgo has quit (*.net *.split).
08:48:55 -!- cheater has joined.
08:49:11 -!- copumpkin has joined.
08:49:11 -!- HackEgo has joined.
08:49:15 -!- Taneb has joined.
08:51:54 -!- Ngevd has quit (Ping timeout: 252 seconds).
08:58:32 -!- cheater has quit (Ping timeout: 252 seconds).
09:00:41 -!- Taneb has changed nick to Ngevd.
09:00:55 <oerjan> *cough*
09:00:55 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
09:02:41 <oerjan> <kallisti> `log (?i)instance ZipList
09:03:10 <oerjan> `log [i]nstance monad ziplist
09:03:46 <HackEgo> No output.
09:03:54 <oerjan> wat
09:04:48 <oerjan> `log zjoin.*zipwith.*diag
09:05:02 <HackEgo> 2011-12-17.txt:05:00:42: <copumpkin> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
09:05:23 <oerjan> looks like the one
09:17:11 * Sgeo wants to try NixOS
09:18:10 <Sgeo> Although looking at the bootloader screenshot, there seems to be no way to name a configuration with a nice easy to understand name, that, say, specifies the difference between it and a previous configuration
09:18:11 <kallisti> oerjan: I found it later
09:18:46 <oerjan> ah
09:19:30 -!- Ngevd has quit (Read error: Connection reset by peer).
09:19:52 -!- Ngevd has joined.
09:21:24 <oerjan> kallisti: incidentally your ignoring _|_ discussion is relevant - i don't think that definition quite works when bottoms are involved (you might sometimes get a third law mismatch where there is a [] where there should be a _|_ or vice versa
09:21:28 <oerjan> )
09:23:04 <oerjan> iirc, which is possible i don't because i haven't thought this through completely (i thought it through enough to convince me that the Applicative laws hold precisely for ZipList even with _|_, when using the Prelude definition for zipWith.)
09:23:10 <oerjan> *myself
09:24:38 <oerjan> and also that the f <*> x = zjoin (fmap f x) correspondence holds exactly.
09:26:34 <oerjan> or that zjoin could be phrased such that they do, i'm not quite sure
09:30:40 -!- cheater has joined.
09:38:07 -!- cheater has quit (Excess Flood).
09:39:24 -!- cheater has joined.
09:42:34 -!- madbr has quit (Quit: Radiateur).
09:45:16 -!- cheater has quit (Excess Flood).
09:57:39 <oerjan> <kallisti> @tell oerjan You remember how you said your ZipList monad was obvious? Apparently in #haskell no one knows about it.
09:58:03 <oerjan> i said "obvious"?
09:58:48 <oerjan> anyway, yay 15 minutes of #haskell fame!
10:02:09 <kallisti> lol
10:02:21 <kallisti> yes your very prestigious now.
10:02:29 <kallisti> if you actually join #haskell people might even ask /questions/
10:02:35 <oerjan> eek
10:03:31 <kallisti> oerjan: the immediate reaction was "what no that doesn't work"
10:03:37 <kallisti> and then slowly it was like "oh maybe..."
10:03:43 <kallisti> then it was like "oh okay yeah this might work"
10:03:46 <oerjan> i read the logs :P
10:05:07 <oerjan> i noticed rwbarton deciphered my essential cube idea
10:05:51 <oerjan> well essential for understanding why it works. it is possible the actual implementation came first by less stringent means.
10:06:41 -!- cheater has joined.
10:11:54 -!- cheater has quit (Excess Flood).
10:12:33 -!- cheater has joined.
10:17:15 -!- cheater has quit (Excess Flood).
10:17:52 -!- cheater has joined.
10:19:52 -!- cheater has quit (Excess Flood).
10:21:07 -!- cheater has joined.
10:24:04 -!- Phantom_Hoover has joined.
10:26:48 <Phantom_Hoover> ump
10:26:53 <Ngevd> Hello
10:26:55 <Phantom_Hoover> No lambdabot?
10:26:57 <Phantom_Hoover> :(
10:27:16 <oerjan> even worse
10:27:25 <oerjan> lambdabot AND NO MESSAGES
10:27:31 * oerjan cackles evilly
10:35:07 -!- Romance has joined.
10:35:17 -!- cheater has quit (Excess Flood).
10:35:43 -!- cheater has joined.
10:38:59 -!- cheater has quit (Excess Flood).
10:39:30 -!- cheater has joined.
10:40:17 <Sgeo> @tell Phantom_Hoover fix noMessages
10:40:17 <lambdabot> Consider it noted.
10:40:30 <Phantom_Hoover> @clear-messages
10:40:30 <lambdabot> Messages cleared.
10:41:25 * oerjan notes that google instant is particularly annoying when you mistype
10:41:46 <oerjan> although this time google's autocorrection actually compensated for it.
10:42:55 <oerjan> (other times it's the autocorrection which is annoying, of course)
10:47:34 -!- cheater has quit (Excess Flood).
10:48:02 -!- cheater has joined.
10:51:03 -!- cheater has quit (Excess Flood).
10:51:34 -!- cheater has joined.
10:56:08 -!- cheater has quit (Excess Flood).
10:58:20 -!- cheater has joined.
10:59:47 <kallisti> one thing I've learned from freelancing
10:59:53 <kallisti> is that I'm a terrible negotiator.
11:00:30 -!- zzo38 has joined.
11:00:50 <Ngevd> Esolang idea!
11:01:32 <Ngevd> One or more falling object interacting with the environment!
11:02:44 <oerjan> esolangs ideas are really going downhill
11:03:11 <Ngevd> Ba-dum tish?
11:03:14 <oerjan> -s
11:03:21 <kallisti> oerjan: obviously you haven't heard of my reversible graph rewriting constraint thing.
11:03:24 <oerjan> Ngevd: always
11:03:29 <kallisti> oerjan: oh... I missed the joke.
11:03:47 <oerjan> oblivious graph rewriting
11:08:25 -!- cheater has quit (Excess Flood).
11:09:44 -!- cheater has joined.
11:11:26 -!- GreaseMonkey has quit (Quit: The Other Game).
11:13:49 -!- cheater has quit (Excess Flood).
11:16:05 <Ngevd> Alice in Wonderland is Flatland but coming from the other direction
11:16:10 <zzo38> Can this make a category and/or a monad? newtype JoustT v f x = JoustT { runJoustT :: JoustT x f v -> f x }; (I call it Joust because of something someone mentioned that it reminded them of)
11:18:02 <zzo38> I do know the lift and fmap
11:21:23 <oerjan> zzo38: i tried a bit but couldn't make it
11:21:36 <kallisti> so.... Intel or AMD?
11:21:42 <kallisti> AMD is cheaper so I think I'll be getting one of those.
11:21:50 <oerjan> if it _is_ a category, i think the argument order should be f v x
11:21:58 * kallisti is shopping for a gaming desktop
11:22:04 <zzo38> oerjan: I also tried a bit but couldn't make it. And yes, I know if it is a category you have to change the argument order
11:23:15 <Ngevd> Alice in Wonderland is based on Victorian culture with allusions to Mathematics, Flatland is based on Mathematics with allusions to Victorian Culture
11:23:48 -!- derdon has joined.
11:29:01 <Ngevd> There is at least one Shakespeare play for every English monarch from possibly Edward III (definitely his successor Richard II) right to Richard III
11:31:16 -!- cheater has joined.
11:32:37 <oerjan> i recall someone saying something like in shakespeare's play all the monarchs are monsters, except for elizabeth's ancestors, who are saints.
11:32:43 <oerjan> *plays
11:32:56 <Ngevd> Depends on the play
11:33:21 <Ngevd> Some of them were saints in one play and villains in another
11:33:27 <oerjan> aha
11:33:35 <Sgeo> Is AWObject an acceptable name for a datatype?
11:34:14 <Ngevd> And I'm wrong, there isn't a play for Edward V or IV
11:34:24 <Ngevd> But Edward V's entire reign happens in Richard III?
11:37:20 -!- oerjan has quit (Quit: Later).
11:38:32 -!- Madoka-Kaname has quit (Remote host closed the connection).
11:44:02 -!- Madoka-Kaname has joined.
11:47:51 <zzo38> Sgeo: Yes, it start with uppercase so it is acceptable.
11:53:58 -!- cheater has quit (Excess Flood).
11:55:20 -!- cheater has joined.
11:57:42 -!- cheater has quit (Excess Flood).
11:58:12 -!- cheater has joined.
12:06:35 <zzo38> Do you know whether glk_gestalt is a pure function?
12:07:31 <kallisti> Vorpal: hi what is your video card?
12:08:06 -!- cheater has quit (Excess Flood).
12:08:32 -!- cheater has joined.
12:13:04 -!- cheater has quit (Excess Flood).
12:13:52 -!- cheater has joined.
12:19:19 -!- cheater has quit (Ping timeout: 244 seconds).
12:19:47 -!- cheater has joined.
12:20:06 <Ngevd> Hmm
12:20:16 <Ngevd> I think I could do this sorta recursively
12:21:11 <Ngevd> Not really knowing how recursive types work
12:24:00 <kallisti> a recursive type is just a type with a constructor that contains a field of that type.
12:24:14 <Ngevd> I knew that
12:24:30 <Ngevd> It's the esotericy weird things that only I would ever think of that I'm struggling with
12:24:42 <kallisti> ???
12:25:03 <Ngevd> Give me a minute and no wait I'm wrong
12:25:05 <Ngevd> Damn
12:25:20 <Ngevd> Or... am I?
12:26:08 -!- cheater has quit (Excess Flood).
12:26:35 -!- cheater has joined.
12:28:46 -!- copumpkin has changed nick to Jim.
12:28:50 -!- Jim has changed nick to Bo.
12:29:25 -!- Bo has changed nick to copumpkin.
12:33:30 <zzo38> In Haskell, is a foreign exported function which is called in the C main function allowed to have a flexible constraint which requires the existence of an instance that does not exist at the time the program is compiled into object files, even though it will exist when another module imports that one and makes an executable file?
12:38:23 -!- cheater has quit (Excess Flood).
12:38:54 -!- cheater has joined.
12:43:45 <Ngevd> Yep, this definitely doesn't work
12:46:18 <Ngevd> I think I need some way of referencing thigs
12:46:42 <Ngevd> With an n before the g
12:51:47 <kallisti> Ngevd: what are you trying to do.
12:52:02 <Ngevd> Make a family tree program
12:52:19 <kallisti> okay. do you have a tree?
12:52:22 <Ngevd> No
12:52:23 <kallisti> this is a good start.
12:52:28 <kallisti> a tree is a good data structure for a tree.
12:52:33 <Ngevd> Not in this caser
12:52:38 <kallisti> go on
12:52:40 <Ngevd> Family trees are not trees
12:53:13 <Ngevd> For a start each element can have two parents and many children
12:53:24 <kallisti> okay so a graph
12:53:57 <Ngevd> I'm going to do this my own crazy way and so learn about Haskell some more
12:54:18 <Sgeo> See if you can avoid using mutation for cycles
12:54:26 <Sgeo> .../me derps
12:54:40 <kallisti> also note that it's still a tree, just not a tree where each node has one parent.
12:54:59 <kallisti> ...British incest aside.
12:55:56 <zzo38> I made up a Haskell program for category of walks
12:56:37 <kallisti> Ngevd: it's still a mathematical tree (acyclic connected graph)
12:57:18 <Sgeo> Challenge: Introduce time travel.
12:57:27 <kallisti> Ngevd: also if the problem you're having is how to efficiently move around the tree in arbitrary directions, you should look into zippers.
12:58:33 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:58:48 <zzo38> What uses are there for a category of walks?
13:02:05 -!- cheater has quit (Excess Flood).
13:02:28 <Phantom_Hoover> <kallisti> okay so a graph
13:02:58 <Phantom_Hoover> Not just a simple graph, though; there are two kinds of edge, one of which is directed.
13:03:18 -!- cheater has joined.
13:04:20 <kallisti> Phantom_Hoover: I think he just wants a tree structure where nodes have two parents, optional spouse, a list of children, and maybe a litle of siblings if that can't be exactly determined from other fields.
13:04:53 <Phantom_Hoover> Yes, hence two types of edge, one directed.
13:05:09 <Phantom_Hoover> Spouse is directionless, parent is directed.
13:06:57 <kallisti> sure.
13:10:18 -!- cheater has quit (Excess Flood).
13:15:22 -!- cheater has joined.
13:15:58 <zzo38> Maybe the marriages should be ones having children instead of nodes?
13:16:25 <Phantom_Hoover> Nah.
13:16:53 <Phantom_Hoover> Spouse/parent allows you to express all plausible situations.
13:18:47 <zzo38> OK
13:26:00 -!- cheater has quit (Excess Flood).
13:29:29 -!- cheater has joined.
13:29:45 -!- Ngevd has joined.
13:30:11 <Ngevd> Hello!
13:30:26 <Ngevd> While my internet was down, I came up with a better idea
13:34:12 <zzo38> OK
13:37:09 <zzo38> I made a implementation of category of walks that requires another type of kind (* -> * -> *) which can be another category although it does not have to be.
13:37:42 -!- zzo38 has quit (Remote host closed the connection).
13:39:12 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:40:17 -!- monqy has quit (Quit: hello).
13:40:29 -!- kallisti_ has joined.
13:41:19 -!- kallisti has quit (Ping timeout: 240 seconds).
13:48:44 <Sgeo> There's a new Category:Shameful language?
13:49:16 -!- augur has joined.
13:49:37 * Sgeo apparently has a weird definition of new
13:50:13 <kallisti_> anyone know xpath?
13:51:43 <Sgeo> "### is an esoteric programming language by User:Dagoth Ur, Mad God based on ///. To run a ### program, type a #.
13:51:43 <Sgeo> "
13:51:49 <Vorpal> kallisti_, why do you want to learn about xpath?
13:51:49 <Sgeo> "###b#ott#les#of#b#eer o#n t#he #w#all#, ###lovely ###[[Esme]]ralda ###o#n ###t#h#e #b#ee#r...
13:51:50 <Sgeo> "
13:51:56 <Sgeo> And that's it. No further explanation
13:51:57 <Vorpal> (not that I know much of it)
13:52:24 <Sgeo> "Joke language list"
13:52:41 <Sgeo> I don't get it
13:52:45 * Sgeo 's mind surrenders.
13:53:05 <Vorpal> Sgeo, that is just trolling
13:53:05 <Vorpal> IMO
13:53:31 <Vorpal> Sgeo, the language I mean, not you
13:53:37 <kallisti_> I'm wondering how I can select an element by its absolute position.
13:53:45 <kallisti_> so maybe.... //[index]? this looks wrong to me.
13:54:05 <Vorpal> kallisti_, I wouldn't know. I try to keep away from xml as much as I can
13:55:29 <Vorpal> I mean, SGML and derivatives are okay for a text markup language. But it is way to verbose to be a generic data storage format.
13:55:32 -!- cheater has quit (Excess Flood).
13:55:41 <kallisti_> where could I go to ask an xpath question?
13:55:54 <Vorpal> no clue
13:56:08 <Vorpal> kallisti_, but why are you messing with xpath?
13:56:11 <kallisti_> Vorpal: my personal preference for SGML and derivatives is absolutely irrelevant to the fact that I need to use it.
13:56:26 <Vorpal> I never understood the point of it. Isn't it like a query language for xml?
13:56:30 -!- cheater has joined.
13:56:31 <kallisti_> yes.
13:56:39 <kallisti_> Vorpal: and, because work.
13:57:44 <Vorpal> ah
13:57:51 <Vorpal> kallisti_, I feel terribly sorry for you
13:58:43 <kallisti_> eh.
13:58:49 <kallisti_> there are far worse jobs.
13:59:18 <Vorpal> well, sure
14:01:24 <kallisti_> I think I might want
14:01:29 <kallisti_> //*[index]
14:04:06 <kallisti_> oh hmmm...
14:04:10 <kallisti_> no that won't work.
14:05:45 -!- Vorpal has quit (Ping timeout: 240 seconds).
14:06:30 <kallisti_> aha
14:06:39 <kallisti_> (//*)[index] works
14:06:40 -!- Vorpal has joined.
14:06:44 <Vorpal> ...?
14:06:49 <Vorpal> what just happened
14:07:03 <Vorpal> hm looks like freenode had a problem
14:07:24 <Vorpal> -MemoServ- Memo 1 - Sent by zzo38, Dec 27 15:20:02 2011
14:07:25 <Vorpal> -MemoServ- ------------------------------------------
14:07:25 <Vorpal> -MemoServ- :Join this channel and say something really either obvious or controversial straight away
14:07:26 <Vorpal> what?
14:15:57 <kallisti_> Vorpal: actually I find xpath quite useful because it's much much easier to write a simple xpath query than it is to do the equivalent hand-rolled traversal/search .
14:18:09 <Vorpal> hm
14:18:10 <Vorpal> okay
14:18:40 -!- cheater has quit (Excess Flood).
14:19:01 -!- cheater has joined.
14:19:13 <kallisti_> ugh but this is a breadth-first order I don't know if I want that.
14:20:14 <Vorpal> kallisti_, depends on what you are doing. Breadth-first makes sense for some things
14:21:38 -!- cheater has quit (Excess Flood).
14:21:45 <kallisti_> what the hell is "document order"
14:22:16 -!- cheater has joined.
14:27:04 <Vorpal> kallisti_, as listed in the xml file?
14:27:04 <Vorpal> same order I mean
14:27:04 <Vorpal> (that seems fairly reasonable)
14:27:56 <Vorpal> kallisti_, was that correct?
14:27:59 <kallisti_> not quite
14:28:03 <kallisti_> its' some fucked up vague ordering
14:28:11 <kallisti_> that could be either breadth-first or depth-first as far as I can tell
14:31:27 <Vorpal> heh
14:33:54 <Vorpal> kallisti_, SQL makes much more sense, and even it doesn't make sense in many places
14:38:27 -!- Ngevd has joined.
14:41:11 <kallisti_> wow you know what's awesome?
14:41:13 <kallisti_> currying.
14:41:26 <kallisti_> you know what Python doesn't support without cumbersome shenanigans?
14:41:29 <Vorpal> kallisti_, well yes
14:41:31 <kallisti_> currying.
14:41:48 <Vorpal> kallisti_, you can actually do currying in python at all? I'm surprised
14:42:07 <Ngevd> Yes, you can do currying
14:42:14 <Vorpal> how?
14:42:22 <Ngevd> lambda x: lambda y: f(x,y)
14:42:30 <Vorpal> hm okay
14:42:58 <kallisti_> there are other ways
14:43:06 <kallisti_> you can write function wrappers that do it somewhat automatically
14:43:08 <kallisti_> but it's tricky.
14:43:21 <kallisti_> there's also a partial function in functools that creates such curried functions for you.
14:43:33 <kallisti_> but nothing that's simple or easy or nice.
14:44:08 <kallisti_> of course Python has some conveniences that Haskell cannot expression quite as conveniently: varargs and keyword args for example
14:44:18 <Vorpal> obviosuly
14:44:25 <Vorpal> and python is afaik dynamically typed
14:44:41 <Vorpal> which has both advantages and disadvantages
14:44:53 <kallisti_> mhm
14:45:02 <kallisti_> WOW SO MANY PROS AND CONS
14:45:18 <kallisti_> it must be tough to be a close-minded douchebag
14:45:28 <Vorpal> I wonder if it would be possible to make an imperative language with the kind of type system that haskell has
14:45:32 <kallisti_> oh wait, people are good at that despite the difficulties.
14:45:55 <kallisti_> Vorpal: well certtainly generics and templates come pretty close
14:46:08 <kallisti_> also type inference is possible.
14:46:11 <Vorpal> hm
14:46:16 <kallisti_> are you referring to typeclasses?
14:46:23 <kallisti_> I'm not sure to what extent that is possible.
14:46:46 <Vorpal> typeclasses, advanced type inference, that sort of stuff yes
14:46:50 <Ngevd> You know what I'm awful at?
14:46:53 <Ngevd> Line breaks
14:46:55 <Vorpal> I mean you can do the simple var x = new Foo(); thing that C# has
14:47:10 <Vorpal> which comes nowhere near what haskell has
14:47:13 <kallisti_> Ngevd: what?
14:47:34 <Ngevd> When I use Haskell I put way too few line breaks in
14:47:39 <Ngevd> Which makes my code hard to read
14:47:43 <Ngevd> And I get confused
14:47:47 <kallisti_> "
14:47:51 <Vorpal> heh
14:47:59 <kallisti_> what is ^M in an emacs buffer?
14:48:19 <kallisti_> it's related to linebreaks... is it
14:48:20 <Vorpal> kallisti_, CR iirc, as in CRLF
14:48:22 <kallisti_> \r maybe?
14:48:23 <kallisti_> ah
14:48:26 <kallisti_> yes
14:48:28 <Vorpal> from windows newlines
14:48:30 <Vorpal> yeah
14:48:32 <kallisti_> bah
14:48:34 -!- elliott has joined.
14:48:38 <Vorpal> Ngevd, make a line break when you hit column 80.
14:48:40 * kallisti_ whips out perl.
14:48:40 <elliott> WTF?
14:48:40 <Vorpal> that is all ;P
14:48:45 <elliott> XChat forgot all my settings.
14:48:51 <Vorpal> elliott, ouch
14:48:52 <kallisti_> elliott: lame
14:48:55 <elliott> EXCEPT my freenode server settings.
14:48:58 <kallisti_> elliott: irssi never forgets my settings.
14:48:58 <Vorpal> elliott, did you /save?
14:49:03 <kallisti_> elliott: clearly that is why it is better.
14:49:11 <Ngevd> Vorpal, so col 183 is bad?
14:49:16 <elliott> Vorpal: No? I've quit it normally like a normal person.
14:49:21 <Vorpal> Ngevd, yes. yes it is.
14:49:38 <Vorpal> elliott, hm as long as you don't kill it abnomally it should save settings.
14:49:49 <Vorpal> abnormally*
14:50:02 <Ngevd> What's the rules for indenting wheres in Haskell?
14:50:31 <elliott> Ngevd: I use
14:50:33 <elliott> foo = bar
14:50:35 <elliott> where ...
14:50:38 <elliott> ...
14:50:49 <Vorpal> Ngevd, anyway that about column 80 was a joke. Often you make a new line far before that...
14:50:57 <elliott> Vorpal: I think I killed it abnormally last time, but it had /previously saved/.
14:51:06 <elliott> Also, 80 columns isn't enough for Haskell.
14:51:09 <elliott> Well, 80 columns might be.
14:51:11 <kallisti_> Ngevd: 1) open emacs 2) press tab
14:51:11 <elliott> But not <80 cols.
14:51:13 <Vorpal> strange
14:51:30 <Ngevd> elliott, how about ifs?
14:51:41 <elliott> Ngevd: Don't use 'em :P But
14:51:42 <elliott> if foo
14:51:43 <kallisti_> Vorpal: so for my gaming desktop I am thinking this http://www.newegg.com/Product/Product.aspx?Item=N82E16814130687
14:51:44 <elliott> then ...
14:51:45 <Vorpal> elliott, I know I killed xchat many times in weird ways. Usually X crashing or such. And I never had that issue.
14:51:46 <elliott> else ...
14:51:46 <kallisti_> is what I want.
14:52:16 <Vorpal> kallisti_, that site loads slowly from here
14:52:20 <kallisti_> Vorpal: do you think this is overkill or a decent choice?
14:52:21 <kallisti_> ah okay.
14:52:30 <Vorpal> really slowly
14:52:32 <Vorpal> still just a white page
14:52:50 <kallisti_> it has to travel all the way across Europe.
14:52:55 <kallisti_> that's a long journey.
14:53:02 <Ngevd> My comments are really insightful: "very long line! aaaaaah!"
14:53:03 <Vorpal> that is a lot of GPU memory.
14:53:33 <Vorpal> kallisti_, it will probably be enough from what I remember of the nvidia product line
14:53:39 <Vorpal> which isn't that much
14:53:45 <Ngevd> With that comment, the line is 210 characters long
14:53:46 <kallisti_> Vorpal: I'm almost positive it will be enough
14:53:52 <Vorpal> kallisti_, I never heard of EVGA
14:53:57 <kallisti_> Vorpal: the reviews are basically "lol I can run everything max settings no problems"
14:54:00 <Vorpal> no idea if they make good quality stuff
14:54:05 <elliott> http://en.wikipedia.org/wiki/EVGA_Corporation
14:54:21 <kallisti_> Vorpal: eh, I've seen bad reviews on some of their products as the result of failures.
14:54:30 <Vorpal> hm
14:54:51 <kallisti_> but this one has gotten pretty good reviews
14:55:09 <kallisti_> actually most of the bad reviews were because of SLI or whatever it's called
14:55:15 <Vorpal> https://en.wikipedia.org/wiki/EVGA_Corporation#Customer_Service_Support <-- how suspect
14:55:21 <kallisti_> people were complaining because their motherboard didn't support SLI.
14:55:30 <Vorpal> mhm
14:55:32 -!- cheater has quit (Ping timeout: 276 seconds).
14:55:43 <Ngevd> What's the best way to find the lowest empty key in a Map
14:55:44 <Ngevd> ?
14:56:08 -!- cheater has joined.
14:56:33 <Vorpal> kallisti_, also there is no sound level listed for the fan
14:56:45 <Vorpal> kallisti_, so if you want a quiet system you might run into issues
14:57:00 <kallisti_> hm
14:57:21 <kallisti_> well I /could/ try liquid cooling on the CPU
14:57:26 <kallisti_> that would cut down on noise a bit.
14:57:31 <elliott> good luck with that.
14:57:35 <Vorpal> kallisti_, the GPU fan will be much louder than the CPU one probablyu
14:57:37 <Vorpal> probably*
14:57:48 <kallisti_> is it possible to liquid cool those? :P
14:58:00 <Vorpal> kallisti_, I wouldn't risk liquid cooling a computer
14:58:04 <Vorpal> but maybe
14:58:13 <kallisti_> it's... a pretty common thing, I thought.
14:58:15 <Vorpal> I lack the expertise to answer that question
14:58:18 <elliott> you realise that liquid cooling is (a) not the quietest method without spending tons and tons of money (b) a huge pain to set up
14:58:25 <kallisti_> elliott: nope
14:58:32 <elliott> it's also (c) not actually that risky but w/e
14:58:45 <Vorpal> elliott, still it is more risky than air cooling.
14:58:57 <Vorpal> what you want is completely passive cooling ;P
14:59:23 <Vorpal> However the heatsink would probably end up larger than the computer
14:59:39 <kallisti_> Cons: The fan can get bit loud when gaming.
14:59:55 <elliott> Vorpal: many things are more risky than other things
15:00:04 <Vorpal> kallisti_, doesn't in my system
15:00:05 <elliott> it's disingenuous to go on that basis if the absolute risk is still low
15:00:09 <Vorpal> my GPU fan is very quiet
15:00:18 <elliott> Vorpal: of course it doesn't because he's not talking about your gpu jfc
15:00:24 <Vorpal> and I never got it to run above 50% fan speed
15:00:25 <kallisti_> Pros: takes on everything with no problems
15:00:26 <kallisti_> fan is silent
15:00:28 <kallisti_> lol
15:00:31 <Vorpal> it idles at about 19%
15:00:37 <kallisti_> GOING BY CUSTOMER REVIEWS IS DIFFICULT
15:00:56 <Vorpal> elliott, indeed I'm just mentioning that as a data point
15:01:06 <kallisti_> Vorpal: what is your card.
15:01:10 <kallisti_> is it $400
15:01:21 <kallisti_> is it one of those ungodly $700 things
15:01:25 <elliott> kallisti_: you also realise you could just buy an aftermarket cooler
15:01:30 <Vorpal> kallisti_, Radeon HD 6850. Made by ASUS
15:01:30 <kallisti_> elliott: no.
15:01:40 <kallisti_> elliott: I literally do not spend much time thinking about computer shopping
15:01:49 <kallisti_> elliott: until I need to
15:01:50 <kallisti_> such as now.
15:01:51 <elliott> kallisti_: i can't wait to hear the story of how your computer blew up
15:01:54 <elliott> s/ $//
15:01:59 <kallisti_> never
15:02:19 <Vorpal> kallisti_, and I don't remember how much it cost
15:02:31 <kallisti_> Vorpal: does it play everything ever on max settings with no problems?
15:02:32 <kallisti_> this is key.
15:02:55 <elliott> i want my computer to play everything on max settings. and be silent forever. and cost less than $700
15:03:01 <elliott> --kallisti
15:03:01 <kallisti_> yes.
15:03:04 <kallisti_> also: no
15:03:05 <Vorpal> kallisti_, well, most things. If I run fraps it tends to slow down a bit.
15:03:13 <kallisti_> just play everything on max settings and not be too loud.
15:03:21 <kallisti_> cost can be like... I don't care.
15:03:37 <kallisti_> Vorpal: help what is fraps
15:03:43 <Vorpal> kallisti_, but without that it runs witcher 2, gta iv and skyrim fine on max. Well not witcher 2 but you need a dual-GPU setup to do that. It runs witcher 2 max minus supersampling fine
15:04:22 <kallisti_> hm okay.
15:04:27 <Vorpal> kallisti_, fraps is a program on windows that measures FPS in any directx application. Also it can take screenshots and capture what you are playing into a video
15:04:37 <kallisti_> I see.
15:04:46 <Vorpal> kallisti_, it does slow down games a bit though
15:04:58 <kallisti_> this will be useful as I will be maintaining a very popular Starcraft 2 livestream
15:05:01 <kallisti_> (not really)
15:05:14 <Vorpal> kallisti_, I don't think fraps would work for a livestream
15:05:46 <Vorpal> I used it for screenshots mostly
15:06:38 <kallisti_> yeah I think I'll go with this one why not.
15:06:53 <Vorpal> kallisti_, anyway wrt noise, I have a very good computer case with sound reducing multi-layer stuff and so on
15:07:15 <kallisti_> sounds expensive.
15:07:16 <Vorpal> kallisti_, Antec P183
15:07:27 <Vorpal> well, it is nicely organized inside as well
15:07:34 <elliott> i hate the p183 beacuse its so much fucking uglier than the p182
15:07:39 <Vorpal> elliott, is it?
15:07:51 * kallisti_ literally has almost zero opinions about computer hardware.
15:07:56 <Vorpal> elliott, don't they look about the same except for it having a USB3 port?
15:07:57 <Vorpal> iirc
15:08:03 <elliott> http://tech-reviews.co.uk/images/reviews/p183/main.jpg
15:08:03 <elliott> http://xsreviews.co.uk/modules/FCKeditor/Upload/Image/AntecP182/stock.jpg
15:08:04 <elliott> no
15:08:19 <Vorpal> well okay
15:08:48 <kallisti_> wow that's an expensive case.
15:08:50 <Vorpal> kallisti_, also: dust filter and many harddisk slots
15:08:57 -!- monqy has joined.
15:09:18 <Vorpal> kallisti_, and there are rubber things to reduce hdd vibrations
15:09:23 <Vorpal> very nice case
15:09:26 -!- Patashu has quit (Ping timeout: 255 seconds).
15:09:31 <Vorpal> kallisti_, and I would say it is worth the money
15:09:39 <kallisti_> p182 is actually more expensive.
15:09:44 <Vorpal> is it? heh
15:09:55 <Vorpal> I wonder why
15:10:45 <Vorpal> kallisti_, note however that the PSU goes at the bottom in P183. Which is fine except that my PSU uses flat cables with connectors mounted on the side and is designed to be mounted at the top. it is a bit awkward in some places
15:10:51 <Vorpal> especially with the HDD power
15:11:10 <Vorpal> I have a modular Corsair PSU
15:11:48 <Vorpal> actually it is only the hdd power that ends up awkward really
15:11:59 <kallisti_> I imagine I'll need a high-watt PSU given the graphics card (that I may not actually buy I haven't decided)
15:12:34 <Vorpal> kallisti_, if you buy an efficient PSU (80+ Gold certified or whatever it is called) then you won't waste much power due to having a too powerful PSU
15:12:49 <Vorpal> besides that gives you some headroom if you want to upgrade components
15:13:08 <elliott> <Vorpal> is it? heh
15:13:08 <elliott> <Vorpal> I wonder why
15:13:11 <Vorpal> I mean, I have a 750 W PSU. I could probably throw in several more HDDs without any issue.
15:13:14 <elliott> discontinued iirc, or at least just less popular
15:13:19 <Vorpal> ah
15:13:44 <Vorpal> elliott, I would have thought the price would go down as they tried to get rid of any left over stock then
15:13:46 <elliott> also, don't get a 750 watt psu if you don't have to. the fans will be louder even at lower loads
15:13:58 <elliott> people buy way too overpowered psus out of paranoia
15:14:20 <Vorpal> elliott, the fans on this one are really quiet. I tested when I put it together. I can't hear the fan basically.
15:14:42 <Phantom_Hoover> Ooh, thermodynamics.
15:14:48 <kallisti_> also for processor I am considering the AMD Phenom II X4 970 (3.5 GHz quad core, though apparently some X4's have two extra cores that you can unlock??)
15:14:56 <Vorpal> elliott, anyway iirc I end up on a max theoretical consumption of around 600 W with my current setup.
15:15:11 <Vorpal> idle is far lower of course
15:15:16 <Phantom_Hoover> elliott, what about those things where you have stuff that boils at CPU temperature.
15:15:52 <elliott> Phantom_Hoover: Your mom boils at CPU temperature? Also hi.
15:15:58 <elliott> TOPICAL: How's vax.
15:16:01 <elliott> Your vacuum.
15:16:02 <elliott> That is.
15:16:09 <Phantom_Hoover> It sucks?
15:16:12 <kallisti_> Vorpal: I would like you to inject my mind with your opinions on this processor.
15:16:15 <elliott> :D
15:16:25 <kallisti_> Vorpal: because I am computer purchasing nub
15:16:45 <kallisti_> (convenient link for opinion forming: http://www.newegg.com/Product/Product.aspx?Item=N82E16819103894)
15:16:58 <Vorpal> kallisti_, I have an intel CPU. Because they run cooler given the same computing power. At least that was true when I bought my CPU. They are more expensive though.
15:17:02 <kallisti_> wow heatsink and fan included!
15:17:23 <kallisti_> Vorpal: yes I was mostly going with cost, but I guess efficiency ends up being cheaper in the long run.
15:17:38 <Vorpal> kallisti_, well couldn't answer that. I'm mostly after a quiet system.
15:17:52 <Vorpal> my system is only slightly louder than my thinkpad laptop at idle
15:18:06 <kallisti_> my laptop is loud
15:18:08 <kallisti_> always
15:18:09 <Vorpal> kallisti_, I have a core i7, 4 core at 3.4 GHz. I tend to do some heavy single-thread computations though.
15:18:11 <kallisti_> I need to clean the fan.
15:18:44 <Vorpal> kallisti_, my laptop idles at 0 RPM on it's fan if it is a cold day. If it is a hot day it idles on 1500 RPM. :P
15:18:47 <kallisti_> I tend to do HEAVY DUTY MULTI-CORE NATURAL LANGUAGE STATISTICAL COMPUTING
15:18:51 <kallisti_> so I need all the power I can get.
15:18:51 <Vorpal> I don't think it has a step in between
15:18:59 <Vorpal> in practise both are completely silent
15:19:43 <Vorpal> my desktop is not completely silent, but very quiet
15:19:58 <kallisti_> I bet my desktop will be loud
15:20:13 <Vorpal> I am considering replacing the case fans though. They are stock and not as quiet as they could be.
15:20:19 <elliott> 04:14:50: <elliott> monqy have you ever been so tired you just fell asleep
15:20:20 <elliott> 04:39:33: <monqy> future elliott: yes i have been so tired i involuntarily slipped unconscious (this has happened multiple times)
15:20:25 <elliott> monqy: i swear to god i meant to type "so cold"
15:20:27 <elliott> like
15:20:32 <elliott> only now do i realise that i did not actually type "cold"
15:20:36 <elliott> but "tired"
15:20:38 <kallisti_> especially when I play starcraft II, skyrim, and magicka on three monitors.
15:20:45 <kallisti_> (I won't actually attempt to do that)
15:20:56 <monqy> speaking of sleeping involuntarily it may happen today. excitement.
15:21:21 <Vorpal> kallisti_, you have a multi monitor setup? No idea if such a GPU would be enough then
15:21:22 <elliott> 05:53:07: <kallisti> @tell oerjan You remember how you said your ZipList monad was obvious? Apparently in #haskell no one knows about it.
15:21:23 <Phantom_Hoover> On the topic of being cold, I'm fairly sure my breath is misting up again.
15:21:32 <Vorpal> Phantom_Hoover, indoors?
15:21:33 <kallisti_> Vorpal: I currently have absolutely zero setup.
15:21:33 <Vorpal> wtf
15:21:37 <elliott> kallisti_: no fucking shit, the whole reason oerjan is interested in it is because the prevailing opinion is that it's impossible
15:21:44 <Vorpal> kallisti_, what do you use atm?
15:21:47 <Phantom_Hoover> What is it?
15:21:52 <elliott> Phantom_Hoover: ?
15:21:54 <kallisti_> elliott: okay?
15:22:01 <Phantom_Hoover> ZipList.
15:22:31 <kallisti_> Vorpal: dell inspiron something... Core i3 2.1 GHz dual core hyperthreaded
15:22:52 <Vorpal> kallisti_, not too bad actually.
15:23:04 <elliott> @src ZipList
15:23:04 <lambdabot> Source not found. Wrong! You cheating scum!
15:23:05 <Vorpal> kallisti_, I mean compared to what I had before I upgraded
15:23:05 <elliott> gah
15:23:12 <elliott> Phantom_Hoover: newtype ZipList = ZipList { getZipList :: [a] }
15:23:13 <kallisti_> it works for my purposes. Except not anymore because I want to play viji games.
15:23:15 <Vorpal> kallisti_, which was something from 2006
15:23:21 <Vorpal> kallisti_, viji?
15:23:23 <kallisti_> yes.
15:23:39 <Vorpal> kallisti_, what is viji?
15:23:47 <elliott> Phantom_Hoover: instance Applicative ZipList where pure = ZipList . repeat; ZipList (f:fs) <*> ZipList (x:xs) = ZipList (f x : getZipList (fs <*> xs))
15:23:51 <kallisti_> elliott: I was replying to a previous statement where oerjan said the ZipList monad should be obvious to anyone who has tried to figure it out.
15:23:54 <monqy> some people have trouble saying video
15:24:09 <Phantom_Hoover> :t repeat
15:24:10 <lambdabot> forall a. a -> [a]
15:24:15 <Vorpal> monqy, oh I see
15:24:20 <Vorpal> monqy, doesn't make sense when typing
15:25:16 <elliott> kallisti_: why are you assuming people in #haskell have tried to figure it out...
15:25:24 <elliott> most people don't try to do things everyone says is impossible
15:25:51 <kallisti_> elliott: I'm not. it was a casual statement. I don't know why you're scrutinizing it so much.
15:26:13 <elliott> it amused me, that's all :p
15:26:27 <kallisti_> Vorpal: I got this laptop about a year and a half ago. Before that I was using an old Dell desktop from 2004 maybe? It was a celeron and had 256 MBs of memory before I installed 2 GBs
15:26:29 <elliott> i mean oerjan's ziplist shenanigans don't really make much sense if you don't know why he's doing them
15:27:02 <kallisti_> elliott: I knew the prevailing opinion was that it was not a monad.
15:27:06 <kallisti_> this is why I brought it up in #haskell
15:27:08 <kallisti_> because someone mentioned
15:27:12 <kallisti_> that it is impossible.
15:27:21 <kallisti_> and I was like "BRB #ESOTERIC LOGS"
15:27:39 <kallisti_> (not really)
15:27:45 <kallisti_> (good paraphrase)
15:29:56 <Vorpal> kallisti_, ah
15:31:51 <kallisti_> I wonder what I did
15:31:58 -!- cheater has quit (Excess Flood).
15:31:58 <kallisti_> before I started using find.
15:32:20 <kallisti_> or actually *sh in general
15:32:33 <kallisti_> I bet I clicked on stuff with a mouse a lot.
15:32:35 -!- cheater has joined.
15:42:03 <kallisti_> Vorpal: how is witcher 2?
15:42:48 <Vorpal> kallisti_, it is a well put together RPG
15:43:02 <Vorpal> kallisti_, I can't think of any major issue with it.
15:44:02 <Vorpal> kallisti_, it is obviously a PC game originally rather than a console port: the graphics are good and the menu system makes sense with a keyboard and mouse
15:44:07 <Vorpal> unlike for example skyrim
15:46:28 <Vorpal> kallisti_, I would strongly recommend it, but note that it is a mature game and is rated as such. Don't let kids play it.
15:47:04 <Vorpal> (and unlike many other games rated mature it is not actually immature!)
15:47:08 <elliott> unless they're cool kids
15:47:10 <elliott> in which case let them play it
15:47:13 <Vorpal> hah
15:48:21 <Vorpal> anyway there are hard moral choices. And nothing is censored. But it doesn't make immature jokes all over the place like Saints Row 3 does for example. Rather it simply depict a harsh world.
15:48:25 <Vorpal> depicts*
15:48:29 <Vorpal> if you see what I mean
15:48:31 <Ngevd> Goodbye, I have a sudden desire to play console Sandbox Fighter/Platformer/Stealth games set in cities I have named esolangs indirectly after
15:48:40 <elliott> hi
15:48:46 <elliott> whattsss
15:48:47 <elliott> up
15:48:48 <Vorpal> Ngevd, lol?
15:48:52 -!- Ngevd has quit (Quit: Assassin's Creed Revelations).
15:48:56 <Vorpal> hah
15:49:03 <Vorpal> I'm trying out that game atm
15:49:12 <Vorpal> well kind of.
15:49:15 <Vorpal> I'm cleaning too
15:49:26 <Vorpal> I just got to the start of the prologue
15:50:12 <Phantom_Hoover> I'm seeing Vorpal dusting with one hand and trying to play Assassin's Creed with the other.
15:50:28 <Vorpal> Phantom_Hoover, hah not quite
15:50:35 <Vorpal> I paused the game actually
15:50:40 <Vorpal> and with my third hand I'm chatting on irc
15:51:05 <Vorpal> anyway I suck at the game atm. Can't get my head around the controls. They are not the standard ones
15:51:12 <Vorpal> right click to run, wtf man?
15:51:16 <elliott> `addquote <Phantom_Hoover> I had a dream last night where I got hit by a van but the van had a brain uploader in it and I was uploaded and I angsted because I was stuck spending eternity with singularitarians?
15:51:20 <HackEgo> 786) <Phantom_Hoover> I had a dream last night where I got hit by a van but the van had a brain uploader in it and I was uploaded and I angsted because I was stuck spending eternity with singularitarians?
15:52:02 <Vorpal> I dreamed I was trying to report a bug in the haskell syntax highlighting of xchat. Wtf.
15:52:30 <elliott> well xchat's haskell syntax highlighting is really bad
15:52:35 <Vorpal> elliott, indeed
15:55:07 <Vorpal> elliott, in the dream the auto indention for C# was really broken as well. It used tab if the line started with a keyword, otherwise space.
15:56:09 <Phantom_Hoover> When I try to indent my C# code with a tab in XChat, it just displays this list of nicks.
15:56:10 <Phantom_Hoover> WTF?
15:56:17 <Vorpal> lol
15:56:19 <elliott> Vorpal: i'm starting to think i should use a different editor instead
15:56:25 <elliott> xchat is too bloated, it even has an IRC client!
15:56:29 <Vorpal> heh
15:56:29 <elliott> what kind of editor has an IRC client?
15:56:45 <Phantom_Hoover> Vim?
15:56:51 <Gregor> *ba-dum tsh*
15:56:51 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
15:56:55 <Gregor> For effs
15:56:56 <Gregor> @messages
15:56:57 <lambdabot> colloinkgravisom said 1d 11h 16m 4s ago: Gregor: please unfilter ctrl+b, ctrl+c, thanxkx
15:57:12 <Gregor> elliott: No. Thanxkx.
15:57:15 <elliott> Gregor:
15:57:20 <elliott> ^rainbow2 Fuck you
15:57:20 <fungot> ...too much output!
15:57:22 <elliott> Oops
15:57:23 <elliott> ^rainbow Fuck you
15:57:23 <fungot> Fuck you
15:57:41 <Gregor> I'm confused by the fact that I know my client can display colors, yet it's not willing to.
15:57:44 <Phantom_Hoover> Wait, when did +c get taken on?
15:57:44 <Gregor> Foo?
15:57:47 <Phantom_Hoover> *off
15:57:56 <elliott> Phantom_Hoover: A while ago.
15:58:17 <elliott> Gregor: Anyway, I want them unfiltered because I wanted to `addquote with bold because something funny happened that was funny because of bold.
15:58:29 <Gregor> elliott: Cry me a river.
15:58:40 <elliott> Gregor: You suck.
15:58:43 <Gregor> 8-D
15:58:52 <elliott> Gregor: So much for the world's most hackable IRC bot!!!
15:59:37 <Gregor> The reduction in hackability resulting from this restriction still yields it the world's most hackable.
16:00:25 <Gregor> I want to go to sleep, but it's 11AM.
16:00:32 <Gregor> HAHAHAZZZZZZ*off to work*
16:00:38 <elliott> Gregor: Just you wait
16:00:40 <elliott> Gregor: Until I wrote
16:00:46 <elliott> ColorId
16:00:50 <elliott> *ou
16:00:52 <elliott> oops how embarsing
16:01:15 <Vorpal> wtf the controls in this game are so broken
16:01:16 <Vorpal> shift to loot and pick up?
16:01:16 <Vorpal> right mouse button to run.
16:01:21 <Vorpal> this is so utterly non-standard
16:01:40 <Vorpal> most games use e to pick up, shift or ctrl to run.
16:03:34 -!- cheater has quit (Excess Flood).
16:03:39 <Vorpal> wait what, right mouse button and space to jump? while just space is walk fast
16:03:44 <Vorpal> there is no logic to this even
16:03:46 <Vorpal> ...
16:03:58 -!- cheater has joined.
16:04:24 <kallisti_> Vorpal: sure there is.
16:04:27 <kallisti_> if it's like a platformer
16:04:31 <kallisti_> then you jump around a lot while running.
16:05:02 <Vorpal> kallisti_, eh
16:05:05 <kallisti_> admittedly it's non-standard
16:05:09 <kallisti_> but standardness is BORING
16:05:13 <kallisti_> games are about FUN
16:05:14 <Vorpal> very non-standard indeed
16:05:16 <kallisti_> dawg
16:05:34 <Vorpal> kallisti_, I think oblivion's swapping of space and e is enough for me
16:05:37 <elliott> kallisti_: You appear to be under the impression that Vorpal can experience fun.
16:05:42 <elliott> He actually plays games to feel really standard.
16:06:04 <Vorpal> elliott, I play games to have fun. Awkward controls doesn't make the game fun
16:06:30 <elliott> Vorpal: Just like Gregor says "smell" and means "fnarf", you say "fun" and mean "comfortingly standard".
16:06:36 <elliott> This is an Official Fact.
16:07:28 <Vorpal> also it use checkpoints, not quicksave
16:07:36 <kallisti_> my god
16:07:44 <kallisti_> it's like an old school game
16:07:46 <kallisti_> or like magicka
16:07:53 <kallisti_> EVIL WOORLD WHAT IS WQRONG
16:09:26 <Phantom_Hoover> <elliott> Vorpal: Just like Gregor says "smell" and means "fnarf", you say "fun" and mean "comfortingly standard".
16:09:38 <Phantom_Hoover> I thought fnarf was what Gregor did instead of taste?
16:09:42 -!- cheater has quit (Excess Flood).
16:09:53 <elliott> Er, maybe.
16:09:54 <elliott> Same thing.
16:10:08 -!- cheater has joined.
16:10:23 -!- pumpkin has joined.
16:11:13 <Vorpal> and far between the checkpoints
16:11:13 <Vorpal> kallisti_, I have nothing against hard games, and nothing against checkpoints if they are placed in reasonable places
16:11:15 -!- copumpkin has quit (Ping timeout: 248 seconds).
16:12:52 -!- cheater has quit (Excess Flood).
16:15:38 -!- pumpkin has changed nick to copumpkin.
16:15:43 -!- cheater has joined.
16:15:43 -!- cheater has quit (Excess Flood).
16:16:16 -!- cheater has joined.
16:32:11 -!- kallisti_ has quit (Ping timeout: 240 seconds).
16:32:37 -!- kallisti has joined.
16:32:37 -!- kallisti has quit (Changing host).
16:32:38 -!- kallisti has joined.
16:40:02 -!- ais523 has joined.
16:51:51 <elliott> hi ais523
16:52:26 <ais523> hi elliott
16:53:02 <elliott> hi ais523
16:55:31 <ais523> elliott: sorry, I've been busy with AceHack rather than esolangs
16:58:42 <elliott> hi
16:58:52 <elliott> i've been busy with nothing
17:00:52 <kallisti> I've been busy with busy.
17:01:57 <elliott> the best kind of busy
17:01:58 -!- MSleep has changed nick to MDude.
17:05:16 <kallisti> elliott: you know what sucks about Python?
17:05:20 <kallisti> it's neither Haskell nor Perl.
17:05:26 <kallisti> these are serious disadvantages.
17:08:52 <kallisti> for example, it requires explicit conversions between data types, but with none of the compile-time benefits of requiring those.
17:09:04 <kallisti> THIS IS BOTH UNLIKE PERL AND UNLIKE HASKELL
17:09:09 <kallisti> badd
17:09:34 <elliott> http://stackoverflow.com/questions/2324087/is-jquery-faster-than-javascript
17:09:40 <kallisti> ..
17:09:50 <kallisti> is
17:09:50 <kallisti> what?
17:10:01 <quintopia> :D
17:10:17 <kallisti> is Django faster than Python?
17:10:40 <kallisti> that's ridiculous on at least two levels.
17:10:42 <kallisti> possibly more.
17:10:50 <monqy> is monads faster than haskell
17:10:51 <Deewiant> Is Apache faster than PHP?
17:10:58 <elliott> Deewiant: yes
17:11:10 <ais523> kallisti: you can interpret it as "if I'm writing a JavaScript program, will it be faster if I use idiomatic jQuery, or idiomatic non-jQuery?"
17:11:14 <elliott> Deewiant: but only when interpreted
17:11:41 <elliott> monqy: no, monads is about order of operations, that's more constraint so it has to work it out so it's slower
17:11:42 <Deewiant> What about lighttpd?
17:11:44 <elliott> for maximum speed use unsafeperformio
17:11:46 <kallisti> ais523: yes that's semi-reasonable, but it still depends on implementation I would think.
17:12:01 <elliott> Deewiant: lighttpd is usually compiled to PHP code and run under Apache, so it's faster than both.
17:12:09 <Deewiant> I see.
17:12:16 <elliott> Deewiant: but only if you use jquery
17:12:49 <kallisti> ais523: I would imagine JQuery either helps or doesn't hurt at all.
17:12:57 <ais523> kallisti: not necessarily
17:12:57 <kallisti> but would not make your program slower.
17:13:02 <kallisti> but that's just a guess.
17:13:11 <ais523> doing document.write("abc"); is almost certainly faster than the jQuery idiomatic way to do just that
17:13:30 <kallisti> oh, okay. see I wouldn't think jQuery needs an idiomatic way to do that.
17:13:38 <elliott> ais523: I doubt document.write is very fast, because it's strongly deprecated.
17:13:44 <ais523> elliott: well, OK, indeed
17:13:46 <elliott> So not many people will care about optimising it.
17:14:10 <elliott> ais523: jQuery does have a really heavily-optimised CSS selector library IIRC, so it's quite likely to be faster than rolling your own DOM traversal loop in some cases
17:14:40 <kallisti> does JQuery make any use of xpath?
17:15:11 <kallisti> xpath doesn't seem as commonly used as it probably could be..
17:15:28 <elliott> http://stackoverflow.com/questions/799961/most-efficient-way-to-turn-x-y-into-true
17:16:06 <ais523> elliott: oh, a line of code I saw in NetHack today, simplified/anonymised because I can't remember the details: !(!!x ^ !!y)
17:16:28 <ais523> I /think/ it simplifies to !x == !y; I don't know if that's easier to understand or not than the original
17:16:31 <elliott> ais523: :(
17:16:38 <elliott> well ^ is just !=
17:16:39 <kallisti> elliott: what a weird exercise in futility.
17:16:43 <elliott> so it's !(!!x != !!y)
17:16:45 <elliott> so
17:16:47 <elliott> !!x == !!y
17:16:48 <elliott> so x == y
17:16:52 <elliott> but x and y are coerced to booleans
17:16:55 <elliott> so it's
17:16:59 <elliott> (bool)x == (bool)y
17:17:00 <ais523> elliott: yep, it's (bool)x==(bool)y
17:17:01 <Deewiant> So !!x == !!y
17:17:03 <Deewiant> :-P
17:17:05 <elliott> Deewiant: yes :)
17:17:07 <ais523> or in C89, !x == !y
17:17:14 <ais523> (! is simpler than !! in this case)
17:17:17 <elliott> oh, indeed
17:17:26 <Deewiant> Depends on the situation a bit
17:17:33 * elliott has written {foo ^= true} before
17:17:45 <elliott> I'd rather "foo !=;" though :)
17:17:51 <Deewiant> The optimizer might be able to optimize out !! but not ! in some cases, I think
17:18:33 <elliott> Deewiant: huh? like when?
17:18:59 <elliott> @src sum
17:18:59 <lambdabot> sum = foldl (+) 0
17:19:13 <elliott> sum [0..] doesn't seem to stack overflow in my GHC
17:19:16 <elliott> I guess strictness analysis
17:19:33 <Deewiant> Hmm. If the compiler already knows the values are 0 or 1, it should be able to optimize out both... so I guess not, after all.
17:23:21 <kallisti> elliott: I believe sum is written strictly anyway.
17:23:28 <kallisti> using foldl'
17:23:45 <elliott> kallisti:
17:23:49 <elliott> <elliott> @src sum
17:23:50 <elliott> <lambdabot> sum = foldl (+) 0
17:24:05 <kallisti> elliott: we all know how accurate @src can be
17:24:30 <kallisti> > sum [0..]
17:24:35 <lambdabot> mueval: ExitFailure 1
17:24:35 <lambdabot> mueval: Prelude.undefined
17:24:36 -!- Ngevd has joined.
17:24:37 <elliott> kallisti: Um, that's the Report definition.
17:24:41 <Ngevd> Hello!
17:24:41 <elliott> kallisti: Using foldl' would change semantics.
17:25:00 <elliott> Deewiant: How do I put `foo` in monospaced text with reddit markdown, thanks infinite giver of knowledge
17:25:08 <elliott> ``blah `foo` buh`` works but not ```foo```
17:25:11 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `blah: not found
17:25:18 <Ngevd> I really need to get out of the habit of watching end credits all the way through
17:25:43 <Deewiant> elliott: `` `foo` ``
17:25:51 <Deewiant> elliott: And it won't include the spaces
17:25:54 <kallisti> elliott: ah well it doesn't use foldl at all actually
17:25:58 <kallisti> it uses an accumulating parameter.
17:25:59 <Deewiant> elliott: (Sez http://daringfireball.net/projects/markdown/syntax )
17:26:08 <kallisti> http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/Data-List.html#sum
17:26:40 <elliott> Deewiant: Ha ha, thinking that daringfireball's description of Markdown syntax is implemented universally BUT I'LL TRY IT THX
17:26:41 <Ngevd> This has got to be the least elliott-friendly Haskell program ever. It even doesn't work!
17:27:03 <elliott> Deewiant: Golly, it worked
17:27:12 <Deewiant> elliott: I've yet to run into problems with that spec in Pandoc :-P
17:28:12 <elliott> Deewiant: reddit uses snudown which is a fork of sundown which is a fork of upskirt, and used to use Discount which is its complete own thing :P
17:28:18 <Ngevd> :t test :: NotRealType
17:28:19 <elliott> I think nobody's managed to agree on a table syntax yet.
17:28:25 <lambdabot> Not in scope: `test'
17:28:25 <lambdabot> Not in scope: type constructor or class `NotRealType'
17:28:51 <Ngevd> There are two good reasons why that doesn't work
17:29:16 <Deewiant> elliott: Alright, didn't know that. I'm not exactly a hardcore Reddit commenter/markdown user so I just go by daringfireball when I want to do something I'm not used to :-P
17:29:53 * elliott MARKDOWN SCIENTIST
17:30:49 <Deewiant> (And by Pandoc when I want to do something that's not in daringfireball; that's only happened on my website thus far, hence Pandoc.)
17:31:51 <kallisti> Ngevd: how's your horrible family tree thing going?
17:32:20 <Ngevd> kallisti, elliott-unfriendily
17:32:38 <kallisti> did you do something horrible or did you just use a tree like a sane person?
17:32:43 <Ngevd> But I'm now using a combination of Data.Graph and Data.Map
17:32:43 <elliott> "Also, you should always use braces! [...] There is no hanging-else ambiguity in the above code." --Stack Overflow user, criticising code from K&R
17:32:48 <monqy> horrible family tee thin--oh dear
17:32:53 <kallisti> Ngevd: that works.
17:32:56 <Ngevd> type FamilyTree = (Map Int Person, Graph)
17:32:57 <elliott> KERNIGHAN AND RITCHIE WHADDO THEY KNOW
17:33:02 <elliott> Ngevd: "data" dude
17:33:06 <elliott> don't... don't use tuples
17:33:10 <elliott> like that
17:33:34 <Ngevd> I told you about the elliott-unfriendliness
17:33:38 <Ngevd> I WARNED you dog
17:33:41 <monqy> uhh Ngevd what hpappens when there are cycles,,,
17:33:50 <monqy> i dont think familys work like that...
17:33:52 <kallisti> monqy: no cycles allowed
17:33:55 <elliott> monqy: future proofing
17:33:59 <kallisti> (unless you're British HAHAHAHAHAH)
17:34:28 <kallisti> (I can't really talk I live in THE SOUTHERN UNITED STATES)
17:35:24 <kallisti> Ngevd: also what is Int?
17:35:37 <Ngevd> It's... in Prelude
17:35:40 <kallisti> no I mean
17:35:41 <kallisti> what
17:35:43 <kallisti> is the key of your map
17:35:46 <kallisti> why is it int
17:35:53 <Ngevd> So it's easier for Graph
17:35:58 <kallisti> but what is it
17:35:59 <Ngevd> As Vertex is defined as Int
17:36:02 <Ngevd> Arbitary
17:36:09 <elliott> http://stackoverflow.com/questions/8626109/how-can-i-get-what-my-main-function-has-returned
17:36:15 <Ngevd> Completely Arbitary
17:36:23 <elliott> Ngevd: use fgl dude
17:36:26 <elliott> http://hackage.haskell.org/package/fgl
17:36:33 <elliott> Data.Graph is ~not very good~
17:36:50 <kallisti> I'm not entirely sure he needs a graph..
17:37:17 <Ngevd> The graph is used to check who's whose child
17:37:31 <monqy> eh?
17:37:36 <elliott> kallisti: sure he does
17:37:37 <elliott> i mean
17:37:54 <elliott> a tree structure falls down at the first incest
17:37:59 <elliott> and Ngevd is british :P
17:38:06 <kallisti> I guess.
17:38:24 <kallisti> Ngevd: okay but why are you looking up people by integers in both a Map
17:38:26 <kallisti> and in a Graph
17:38:32 <elliott> istr that the mormons actually have a standard format for family trees that can't actually represent incest because they're mormons
17:38:42 <elliott> i guess they just restructure the family trees???
17:38:52 <elliott> kallisti: because a Graph just stores Ints
17:38:57 <elliott> you need to be able to correlate them with the actual people
17:39:03 <elliott> this is why Ngevd should use fgl :P
17:39:15 <kallisti> elliott: I'm saying I think he has his map backwards
17:39:20 <kallisti> it should be like Map Int Person
17:39:21 <kallisti> er
17:39:23 <kallisti> Map Person Int
17:39:24 <kallisti> oopse
17:39:26 <elliott> no
17:39:27 <elliott> it shouldn't
17:39:30 <elliott> you get an Int out of the graph structure
17:39:34 <Deewiant> Let me guess: type Person = String??
17:39:34 <elliott> you need to look up the person it corresponds to
17:39:38 <kallisti> elliott: oh I see.
17:39:53 <elliott> Deewiant: i bet type Person = (String, Int, Float, Double, Rational, [Any])
17:39:58 <elliott> *(Rational, [Any]))
17:40:06 <Ngevd> Person = (Maybe String, Maybe String, Maybe Gender) except as a data
17:40:21 <kallisti> lies
17:40:24 <Deewiant> What're the two Strings
17:40:28 <monqy> maybe gender?
17:40:32 <elliott> Ngevd's nameless somethingless genderless ancestor
17:40:32 <Ngevd> First name and Surname
17:40:43 <elliott> (Nothing, Just "", Nothing) -- this is me
17:41:01 <Deewiant> Ngevd: http://www.w3.org/International/questions/qa-personal-names
17:41:04 <elliott> Ngevd: also you realise that
17:41:06 <elliott> there we go
17:41:07 <elliott> thanks Deewiant
17:41:20 <Deewiant> Ngevd: Or, as it was put on reddit: "When your program asks for a 'first name' or 'last name', you're doing it wrong"
17:41:22 <monqy> (Just (repeat 'a'), Nothing, Just undefined) -- me
17:41:26 <Ngevd> Using Nothing as unknown, and empty as ACTUALLY NONE
17:41:39 <elliott> yeah Ngevd should just use a single String for names
17:41:53 <elliott> but he won't because the best way to get him to continue doing what he's doing is to tell him what he's doing is bad and propose a better solution :P
17:42:01 <Deewiant> Or a list of strings, for preferred transliterations and such, I guess
17:42:25 <elliott> that's properly overkill for personal use software
17:42:26 <Deewiant> Or a map from language codes to strings
17:42:28 <kallisti> or a Name where Name is a bunch of constructors for different kinds of names. :3
17:42:39 <Ngevd> Hmm... I possibly have Sri Lankan and/or Arab ancestors...
17:42:45 <Ngevd> kallisti, I like that idea
17:42:58 <kallisti> awww yeah
17:43:05 <kallisti> that means you probably shouldn't do it though.
17:43:07 <elliott> Ngevd: he was joking.
17:43:09 <elliott> don't do that.
17:43:13 <kallisti> at least going by elliott's logic.
17:44:11 <Ngevd> I think I'd prefer to keep it to Western names that are likely to appear in the UK and the Netherlands
17:44:16 <Ngevd> FOR NOW
17:44:19 <kallisti> Ngevd: racist
17:45:21 <elliott> Ngevd: why not just use a String
17:45:28 <elliott> uk people have middle names too
17:45:46 <Ngevd> BECAUSE...
17:45:47 <Ngevd> Hmm
17:46:00 <Deewiant> Wikipedia: "A limit to the number of given names is unknown to the Dutch law, so in theory one could give a child an endless series of names. In the Netherlands however, five is usually the limit."
17:46:02 <kallisti> well if it were complex software and would presumably do something with those names
17:46:05 <kallisti> based on surname ec
17:46:09 <kallisti> *etc
17:46:11 <Ngevd> Some people in my family tree have names that lack an instance in the Show class?
17:46:12 <monqy> type Person = Unique
17:46:26 <monqy> what
17:46:39 <ais523> Deewiant: presumably you can't give someone infinitely many given names
17:47:02 <monqy> is that a challenge
17:47:20 <Deewiant> I'd say you can, but no systems or software in place would understand
17:47:22 <kallisti> I suppose you could give them an inductive name generating proof as a name.
17:47:55 <monqy> name dependent on time of day
17:47:59 <Ngevd> "Each name in the baby name book with ISBN ..., repeat when you get to the end"
17:49:03 <monqy> I wonder: the most ridiculous name in a baby name book
17:49:15 <Ngevd> "monqy"
17:49:23 <Ngevd> Who would call their kid "monqy"
17:49:51 <elliott> Ngevd: just use a String, dude
17:50:00 <Ngevd> I mainly have it as two strings so I can search by first name or surname
17:50:09 <elliott> :t isPrefixOf
17:50:10 <lambdabot> forall a. (Eq a) => [a] -> [a] -> Bool
17:50:11 <elliott> :t isSuffixOf
17:50:12 <lambdabot> forall a. (Eq a) => [a] -> [a] -> Bool
17:50:17 <Ngevd> Aaah!
17:50:19 <monqy> :t isInfixOf
17:50:19 <lambdabot> forall a. (Eq a) => [a] -> [a] -> Bool
17:50:20 <elliott> > "Taneb " `isPrefixOf` "Ngevd Taneb"
17:50:21 <lambdabot> False
17:50:23 <elliott> oops
17:50:25 <elliott> > "Ngevd " `isPrefixOf` "Ngevd Taneb"
17:50:27 <lambdabot> True
17:50:30 <elliott> > " Taneb" `isSuffixOf` "Ngevd Taneb"
17:50:31 <lambdabot> True
17:50:47 <monqy> "vd Ta" `isInfixOf` "Ngevd Taneb"
17:50:49 <elliott> > " Middlename " `isInfixOf` "Ngevd Middlename Taneb"
17:50:50 <lambdabot> True
17:51:00 <Ngevd> "Taneb" is strictly speaking a... fratrinomic? of me
17:51:09 <kallisti> http://hackage.haskell.org/packages/archive/regex-pcre/0.94.2/doc/html/Text-Regex-PCRE.html
17:51:12 <Deewiant> > all (`isInfixOf` "Ngevd Taneb") ["Ngevd ", " Taneb"]
17:51:13 <lambdabot> True
17:52:44 <Ngevd> I think the only bit of this program elliott will have to actually make an effort to object to is the definition of Gender
17:52:52 <Ngevd> data Gender = Male|Female deriving (Eq, Show)
17:53:16 * elliott is turning over a new leaf of complaining about Ngevd's programs.
17:53:23 <elliott> What I'm going to do is propose ridiculous unworkable solutions.
17:53:30 <elliott> Ngevd: I suggest you define Person as a String, and store JSON in it.
17:53:39 <elliott> Encoded in Mork.
17:53:40 <kallisti> Ngevd: the LGBT community is not pleased with your definition of gender.
17:53:42 <Deewiant> Ngevd: You know "gender" is the psychological term, so you should include transsexuals and whatnot
17:53:55 <monqy> I stand by Person = Unique
17:54:03 <elliott> Deewiant: His definition already encompasses male and female trans* people
17:54:30 <Deewiant> elliott: If he wants to include only the latest info, sure
17:54:44 <kallisti> monqy: yes I agree unique comparable opaque symbols are a good substitute for information about a person.
17:54:48 <elliott> Deewiant: He doesn't handle name changes either; [Person] would probably be the best way to handle that
17:55:01 <elliott> Deewiant: Although what I'd do is store the current Person, and a list of historical changes
17:55:09 <monqy> kallisti: because that's what people are right
17:55:12 <kallisti> monqy: "computer, give me data about this person." "well... it's not any of these other people."
17:55:27 <elliott> kallisti: :D
17:55:28 <Deewiant> elliott: Right, a list of people would probably be best
17:55:41 <elliott> Deewiant: I know that when *I* change my name, I become a new person.
17:55:49 <Deewiant> Yep
17:56:02 <monqy> I change my name whenever I become a new person
17:56:36 <kallisti> I name my change whenever I become a new person.
17:56:49 -!- copumpkin has quit (Read error: Operation timed out).
17:57:36 <kallisti> I name a new person whenever I become my change
17:57:51 <monqy> have I ever become my change?
17:57:55 <Ngevd> Just picturing that now
17:58:06 <elliott> Just picturing that cow
17:58:22 <kallisti> that just cow picturing
17:58:33 <elliott> Picturing that just cow
17:58:41 <kallisti> yesssss
17:58:43 <kallisti> so good
17:58:45 <kallisti> so just
17:58:46 <Ngevd> "Right, this is 19.99. Here's a 20 quid note. Crap, I'm a penny. That new person is Terrence"
17:58:49 <elliott> So cowly.
17:58:52 <Ngevd> :t Just "Cow"
17:58:53 <lambdabot> Maybe [Char]
17:58:53 <elliott> Ngevd: X-D
17:59:00 <monqy> just just cow picturing
17:59:38 <elliott> Cow tools
17:59:50 <monqy> tool cow
18:00:29 <elliott> Just picturing that tool cow's justs
18:00:32 <elliott> Wait, fuck
18:01:43 <kallisti> fuck, wait.
18:01:45 -!- copumpkin has joined.
18:03:04 <elliott> Fuck weight
18:04:31 <kallisti> Famous musician Fuck Waits
18:06:14 <Vorpal> Impression of Assassin's Creed Revelations so far: The controls are utterly weird. Apart from that it is so far quite a nice game. I heard there were some worse parts later on though.
18:06:58 <Vorpal> (I never played any other game in the franchise)
18:07:06 <kallisti> oh I was about to ask
18:07:11 <kallisti> are the controls any different from the other games
18:07:16 <kallisti> they're probably very similar though.
18:07:17 <Ngevd> Yes
18:07:31 <Ngevd> For XBox 360, anyway
18:07:32 <kallisti> I found the controls very intuitive actually
18:07:37 <Vorpal> Ngevd, I'm playing on PC
18:07:39 <kallisti> each button maps to a different concept.
18:08:01 <kallisti> at least on an Xbox control.
18:08:03 <Vorpal> Ngevd, but wtf: right mouse button to run. Shift to loot. e to shoot. space to walk fast.
18:08:06 -!- derdon has quit (Remote host closed the connection).
18:08:12 <Vorpal> and the climbing stuff is awkward
18:08:15 <Ngevd> Vorpal, that's not on XBox...
18:08:18 <Vorpal> might be better on a console. I don't know
18:08:26 <Vorpal> Ngevd, I don't have an xbox.
18:08:33 <kallisti> Vorpal: oh wait is right mouse button run or is it "loud mode" or whatever.
18:08:46 <Ngevd> Left stick to walk, left stick + right trigger to run
18:08:49 <Vorpal> kallisti, well it is high profile mode, which results in running
18:08:49 <Deewiant> It's not "run", it's "high profile"
18:08:58 <kallisti> Vorpal: ah yes okay
18:09:03 <Vorpal> plus it alters meanings of other controls
18:09:04 <kallisti> that's not too difficult to get used to.
18:09:22 <Vorpal> kallisti, it is kind of weird when you are used to the standard PC RPG keyboard layout
18:09:32 <kallisti> Vorpal: dude if they made shift high profile
18:09:35 <kallisti> you would hate it so much
18:09:40 <kallisti> because you use high profile all the time.
18:09:41 <Vorpal> kallisti, well probably
18:09:51 <Ngevd> What would be handy is Text.GEDCOM
18:10:05 <Vorpal> kallisti, no I don't use it all the time technically. Not when trying to keep a low profile
18:10:10 <Vorpal> but sure, otherwise yes
18:10:28 <kallisti> if I remember the controls correctly you use it quite a bit when climbing.
18:10:58 <Vorpal> shift is drop down isn't it? I haven't manage to learn climbing yet. I'm currently running around and trying to get used to it
18:11:04 <Vorpal> before I continue further into the story
18:11:47 <kallisti> Vorpal: the way it works on an xbox control is that each of the face buttons loosely correspond to a body part.
18:12:06 <Vorpal> huh weird boxes on the walls here.
18:12:31 <Vorpal> kallisti, hm. Well actually it says e is head in the options for example. But from what I can tell e is just shoot
18:12:34 <Deewiant> It's the same thing on PC, it just works out weirder because they're around the keyboard/mouse instead of 4 buttons (with logical directions like upper = head, lower = feet)
18:12:43 -!- Ngevd has quit (Quit: NEED TO FOOOOCUUUUUS).
18:13:00 -!- Romance has quit (Quit: Client exited).
18:13:17 <Vorpal> kallisti, also a lot of the time I want to climb something (when I'm on the ground and am about to start a climb "sequence") I end up doing a wall jump instead
18:13:21 <Vorpal> what am I doing wrong
18:13:27 <kallisti> you're pressing jump I think
18:13:40 <kallisti> which is also sprint
18:14:00 <elliott> <Ngevd> What would be handy is Text.GEDCOM
18:14:04 <elliott> Yes! That's the broken Mormon standard.
18:14:06 <Vorpal> kallisti, but high profile + space is how you start a climb as well
18:14:06 <Vorpal> but sometimes it does a wall jump instead
18:14:28 <Vorpal> kallisti, maybe it is something in the timing?
18:14:30 <Vorpal> I'm not sure
18:14:37 <Vorpal> it is annoying the hell out of me though
18:14:39 <elliott> Wow, it doesn't actually support recording children not of a marriage?
18:14:40 <elliott> Awesome
18:14:42 <kallisti> I recall having that problem and fixing it by not holding down the sprinty button all the time.
18:14:53 <Vorpal> hm
18:14:58 <Deewiant> Vorpal: Some walls can't be climbed, if the guy has nothing to hang on to at the apex he just jumps off it instead
18:15:07 <kallisti> or rather pressing it impulsively.
18:15:14 <Vorpal> Deewiant, I can climb the wall. It is just it takes like 4 tries
18:15:23 <Deewiant> Also if you let go and then press it again, he jumps on the second press, I think
18:15:28 <Vorpal> hm
18:15:28 <elliott> "The guy", name of all videogame protagonists ever.
18:15:28 <kallisti> yes
18:15:42 <Deewiant> Typically I just hold down both right mouse button and space bar and rarely let go of either :-P
18:15:44 <Vorpal> Deewiant, I'm pressing space firmly for like half a second
18:15:50 <Vorpal> actually tapping it seems to work better hm
18:16:06 <Deewiant> I suggest holding it down until you're sure the guy isn't going to jump
18:16:18 <Vorpal> hm
18:16:26 <Deewiant> So like, three seconds, or something :-P
18:16:30 <Vorpal> that kind of works. Uses the hookblade as well
18:16:44 -!- shachaf has quit (Remote host closed the connection).
18:17:14 -!- copumpkin has quit (Read error: Operation timed out).
18:17:52 <kallisti> I think Assassin's Creed would be much better if they had stopped using Ezio quite so much as the protagonist.
18:18:00 <Vorpal> hm
18:18:01 <kallisti> and continued going to new characters.
18:18:15 <Vorpal> kallisti, didn't one of the games have another guy yeah?
18:18:23 <Deewiant> Yes, the original :-P
18:18:29 <Vorpal> how does the inventory work, can you get encumbered?
18:18:38 <Deewiant> Nope
18:18:44 <kallisti> lol encumbered
18:19:05 <elliott> My only experience with Assassin's Creed is (a) seeing that video of how long it takes to quit and (b) seeing people complain about the two-layer plot thing
18:19:28 <kallisti> "Vorpal, this is Legend of Zelda." "Cool, it has an inventory. Can you get encumbered?"
18:20:05 <Deewiant> That quitting thing was only in the original, and there was always alt-f4...
18:20:22 <elliott> Deewiant: Alt-F4, the safest method of quitting anything.
18:20:33 <kallisti> yep
18:20:41 <kallisti> stress tested by myself for over a decade now.
18:20:54 <ais523> alt-f4 doesn't quit quite a few things in this computer
18:21:02 <Deewiant> It's safe in programs that tell you when they save data (and actually do it when they tell you they're doing it) :-P
18:21:03 <ais523> it closes the window, but some things keep running even with one of their windows closed
18:21:15 <ais523> Deewiant: well, alt-f4 isn't sigkill or anything
18:21:27 <ais523> on Windows, it's WM_CLOSE, windows are entirely capable of handling or even ignoring that message
18:21:34 <ais523> most word processors do, for instance
18:21:38 -!- copumpkin has joined.
18:22:25 <Vorpal> <kallisti> "Vorpal, this is Legend of Zelda." "Cool, it has an inventory. Can you get encumbered?" <-- lol
18:22:34 <Vorpal> and yes I typoed that
18:22:40 -!- cheater has quit (Excess Flood).
18:23:04 -!- cheater has joined.
18:23:23 <elliott> Wtf guy, you just copied my answer wholesale and reworded it :-(
18:23:36 <Deewiant> ais523: Indeed? Libreoffice doesn't, at least.
18:23:46 <ais523> Deewiant: seriously?
18:23:52 <Vorpal> also hay stacks are apparently magical
18:24:03 <Deewiant> ais523: I just started it and pressed alt-f4 and it went away. :-P
18:24:05 <ais523> Deewiant: sure it doesn't pop up a box "you have unsaved changes, do you want to save them?" or the like?
18:24:11 <Vorpal> there is /no/ way that 50 meter fall or so would have worked with a tiny haystack at the bottom in real life
18:24:12 <ais523> Deewiant: oh, you have to edit the document first
18:24:20 <ais523> it has no reason to interrupt alt-f4 if you just saved
18:24:27 <ais523> or if you never changed the document to start with
18:24:29 <Deewiant> ais523: Well that, of course.
18:24:33 <Deewiant> I thought you meant they ignored it.
18:24:40 <ais523> Vorpal: videogame characters are normally very good at surviving falls
18:24:43 -!- copumpkin has changed nick to [\|-\{}].
18:24:46 <elliott> Is it possible to create an unkillable user-level-permissions Windows program
18:24:57 <elliott> Barring the fancy lower-than-OS-level kernel debugger stuff
18:25:06 <ais523> elliott: I don't think so, the task manager's "end process" option can't be interrupted in any way
18:25:14 <Vorpal> hah yeah
18:25:18 <elliott> ais523: You can stop the user accessing the task manager
18:25:21 <elliott> By covering the whole screen, f.e.
18:25:23 <Deewiant> ais523: It can by being asleep in a syscall though, right?
18:25:27 <elliott> And blocking those key events or whatever
18:25:27 <ais523> elliott: task manager is always on top
18:25:29 <Vorpal> also what made part of the map suddenly display. Oh was that the "viewpoint sync" thing?
18:25:31 <ais523> Deewiant: hmm
18:25:33 <ais523> not sure
18:25:36 <elliott> ais523: OK, by closing any open task manager windows or w/e
18:25:37 <Vorpal> kallisti, ^
18:25:40 <ais523> elliott: hmm
18:25:42 <Vorpal> bbl food
18:25:46 <elliott> I know you can replace Windows' WM too, so that could force the task manager to disappear
18:25:47 <Vorpal> I just hope the game saved...
18:25:50 <elliott> There's blackbox for Windows and everyting
18:25:52 <ais523> presumably the task manager is using some sort of syscall that other programs could use
18:26:07 <Deewiant> ais523: I'm pretty sure I've run into programs that refuse to die even from process explorer's kill (which seems to work better than the task manager in my experience)
18:26:11 <kallisti> Vorpal: yes
18:26:21 <kallisti> Vorpal: that's how you uncover things on the map
18:26:23 <elliott> You could also have e.g. ten processes that keep each other alive
18:26:24 <ais523> Deewiant: wouldn't surprise me, I'm not a Windows expert
18:26:32 <elliott> And make it fast enough that you can't kill them all before they respawn
18:26:37 <ais523> elliott: that's known as a forkbomb, right?
18:26:45 <kallisti> Vorpal: one of the first things I do is go hunting viewpoints. it's strangely enjoyable.
18:26:49 <kallisti> just climbing around the city.
18:26:50 <elliott> ais523: No, constant number of processes
18:26:53 <elliott> Just supporting each other
18:26:56 <Gregor> (Esoteric!) Anybody know of an in-browser Common Lisp REPL?
18:26:57 <ais523> elliott: limited forkbomb, then
18:27:01 <elliott> lol
18:27:10 <ais523> I know I once accidentally crashed a Windows computer by somehow making IE6 into a forkbomb by mistake
18:27:12 <elliott> Gregor: No, but I bet codepad or something has it
18:27:14 <ais523> (that's how buggy IE6 is)
18:27:23 <elliott> Gregor: Common Lisp isn't fashionable enough for that :)
18:27:56 <Gregor> elliott: Yeah, I know, but I just want one piece of information regarding its eval >_>
18:27:58 <ais523> I checked repl.it, but it doesn't have it
18:28:06 <Gregor> Foo
18:28:10 <Gregor> Neither does codepad
18:28:13 <ais523> it does have a few esolangs, though
18:28:37 <elliott> Gregor: apt-get install sbcl
18:28:40 <elliott> sbcl
18:28:42 <elliott> (eval 'x)
18:28:50 <Gregor> Yeah yeah
18:29:01 <ais523> we should have an uncommon lisp and a rare lisp too
18:29:03 <ais523> that are less used
18:29:43 <Gregor> ais523: We do, they're called Racket and [whatever Lisp was for a Lisp machine and had a C compiler]
18:30:06 <elliott> Gregor: Symbolics Lisp Machine Lisp
18:30:07 <Gregor> Nowait, it wasn't a Lisp machine, just a Lisp OS.
18:30:21 <elliott> Gregor: Or Open Genera Lisp :P
18:30:21 <Gregor> Or ... it was?
18:30:27 <elliott> Gregor: ZETA C was for Symbolics machines.
18:30:31 <elliott> Nowait
18:30:31 <Gregor> Oh.
18:30:35 <elliott> TI Explorer
18:30:36 <elliott> Sorry
18:30:41 <Gregor> *brain axplote*
18:30:42 <elliott> Which were Lisp Machines
18:30:44 <Gregor> Well, those are all Rare Lisp.
18:30:51 <Vorpal> kallisti, right
18:30:52 <Vorpal> <kallisti> Vorpal: one of the first things I do is go hunting viewpoints. it's strangely enjoyable. <-- what do they look like in general?
18:30:52 <Vorpal> this one was a minaret thingy with a springboard thingy
18:30:57 <elliott> So, ZetaLisp
18:31:25 <kallisti> Vorpal: tall places
18:31:29 <kallisti> with a thing
18:31:31 <kallisti> that you stand on
18:31:33 <kallisti> that hangs over
18:31:34 <kallisti> the tall thing
18:31:47 <kallisti> ?
18:31:48 <Vorpal> kallisti, the springboard thingy in other words?
18:31:51 <kallisti> yes
18:31:53 <elliott> Deep OH SHIT THAT FUCKER JUST UNACCEPTED MY ANSWER
18:31:58 <elliott> NO NO NO NO NO NO NO NO NO NO NO MY REP MY REP
18:32:15 <kallisti> Vorpal: also in previous games I think there was a bird's nest or something above any piles of hay.
18:32:17 <ais523> elliott: calm down, it's just a number
18:32:26 <elliott> ais523: NOOOOOOOOOOOOOOOOOOOOOO MY LIFE IS OVER
18:32:36 <kallisti> Vorpal: so you could escape from a rooftop chase and such.
18:32:42 <elliott> Actually it's mostly annoying because I got votes after hitting the cap that would put me back over 200 but they got eaten by the limit :P
18:33:19 <elliott> wtf, is <(foo) POSIX?
18:33:52 -!- [\|-\{}] has changed nick to copumpkin.
18:34:34 <ais523> coppro: was that previous nick leetspeak? or just nonsensical?
18:34:38 <ais523> if it is leetspeak, I can't parse it
18:34:56 <ais523> or, hmm, now I'm trying to read it as a regex
18:35:01 <ais523> it's correct as a regex, but not particularly sensible
18:35:07 <Vorpal> kallisti, well there are "leap of faith" thingies indicated by pigeons. That end in a haystack
18:35:36 <kallisti> Vorpal: you can find those on non-leap-of-faith thingies as well.
18:35:41 <kallisti> unless that's what a leap of faith is
18:35:43 <kallisti> I don't remember
18:35:50 * elliott waits for ais523 to realise he's an idiot.
18:35:53 <Vorpal> kallisti, btw there is a easter egg in witcher 2. In the prologue there is a dead guy with clothes like the guy in the first assassin's creed game half a meter from a haystack.
18:36:05 <ais523> *copumpkin:
18:36:10 * elliott stops waiting.
18:36:10 <ais523> elliott: it completed as cheater first time
18:36:36 <ais523> and I didn't think it'd get it wrong twice
18:36:59 -!- pumpkin has joined.
18:37:01 -!- pumpkin has quit (Changing host).
18:37:01 -!- pumpkin has joined.
18:37:10 <elliott> pumpkin: ITALY?!
18:37:17 <elliott> Good thing you have that cloak to hide that shameful secret.
18:37:20 <ais523> Vorpal: several games with fall damage allow you to cancel the fall damage by doing some sort of move just above the ground
18:37:49 <Vorpal> true
18:38:24 <Vorpal> ais523, for example in terraria there at least 5 ways that doesn't involve the official "cancel fall damage" accessory :P
18:38:31 <Vorpal> two of them are probably bugs
18:39:09 -!- copumpkin has quit (Ping timeout: 252 seconds).
18:39:14 <kallisti> in super smash brothers there is no fall damage, also you can phase through platforms magically.
18:40:40 <Vorpal> kallisti, strange marker on map, that isn't listed in the legends thingy for the map: like a square rotated 45 degrees and then split into 4 quaters, alternate black and white
18:40:43 <Vorpal> any idea what it is?
18:40:45 <elliott> kallisti: just like in real life
18:44:24 <ais523> elliott: you just need an appropriate sandwich
18:44:26 <elliott> accept my answer accept my answeeeeeeeeeeeeeeeeeeeeeeeeer
18:44:28 <elliott> ais523: :D
18:45:46 <kallisti> Vorpal: I don't remember
18:45:47 <kallisti> but uh
18:45:52 <kallisti> pretty sure there's a map legend
18:46:03 <kallisti> o
18:46:03 <kallisti> h
18:46:05 <kallisti> uh
18:46:09 <kallisti> probably just some generic marker thing?
18:46:13 <Vorpal> I went there and saw nothing interesting
18:46:13 <Vorpal> kallisti, yes I checked that
18:46:13 <Vorpal> and the icon was not listed
18:46:46 <Vorpal> kallisti, for what?
18:47:29 <kallisti> idk tias lol
18:47:31 <Deewiant> IIRC it's for one of the collectible memory things or something... I'm pretty sure it was in the map legend in one of the previous games :-P
18:48:08 <kallisti> now... what's really an awkward game to control on PC
18:48:11 <kallisti> is Prototype.
18:53:25 <Vorpal> kallisti, the answer is: nothing as far as I can see
18:53:29 <Vorpal> or hm, some beggars?
18:55:26 <Vorpal> ah found it
18:55:40 <Vorpal> it is an "animus data fragment"?
18:55:42 <Vorpal> kallisti, wth are they good for?
18:55:43 <Vorpal> collectibles?
18:58:05 <elliott> oh, it's actually impossible for me to recoup the rep with votes, since I hit the cap with votes... gross
18:58:48 <Deewiant> Vorpal: I think the first N of them unlock the desmond memories on the island you started on
18:59:00 <Deewiant> After that, beats me, probably just collectibles
18:59:26 <Vorpal> Deewiant, ah
18:59:40 <Deewiant> (You can check what N is back on the island)
18:59:52 <Vorpal> the animation when you press tab to get the full screen map is cool the first few times, after that you just wish it was faster...
19:00:22 <Vorpal> I wish I could set a custom compass marker or such to keep track of where I was going
19:00:35 -!- Ngevd has joined.
19:00:45 <Vorpal> "set marker" seems to set it on your current location
19:00:47 <Vorpal> how useless
19:00:53 <Ngevd> Hello!
19:00:57 <Vorpal> eh wtf now it worked
19:00:59 <Vorpal> whatever
19:02:51 <pumpkin> elliott: yeah
19:02:59 <pumpkin> elliott: I'm a fake italian
19:03:16 <Ngevd> pumpakinno
19:03:18 -!- pumpkin has changed nick to copumpkin.
19:04:45 <Ngevd> copumpakinno
19:14:35 -!- cheater has quit (Excess Flood).
19:15:41 -!- cheater has joined.
19:16:11 <Vorpal> Deewiant, question: I have like a thin ledge on a round tower and have to jump sideways to another. How to not fall to ground? (This is in an early mission where you are taught how to use the hookblade)
19:16:21 <Vorpal> I fail at jumping sideways and catch the new ledge bit
19:16:34 <Deewiant> Shift catches
19:16:38 <Vorpal> ah
19:16:45 <Vorpal> nope
19:16:51 <Vorpal> I flew right out and died
19:16:51 <Vorpal> again
19:16:56 <Vorpal> and tried to use shift
19:16:58 <Deewiant> Well, I'm not sure of the situation
19:17:06 <Vorpal> Deewiant, should I hold shift when I start the jump?
19:17:26 <Deewiant> I use shift just as I'm at grabbing distance of the ledge
19:18:08 <Vorpal> hm problem is the tower is round and I seem to jump straight to the side
19:18:14 <Vorpal> so I can never actually get close enough
19:18:30 <Deewiant> Oh, like that
19:18:43 <Deewiant> Whenever you're scaling just one building you never want to jump manually, pretty much
19:18:45 <Vorpal> Deewiant, want me to take a screenshot?
19:19:02 <Vorpal> Deewiant, well I need to move sideways somehow
19:19:02 <Vorpal> but how
19:19:03 <Deewiant> If he doesn't jump automatically by being in high profile and moving to the side, you can't get across that bit like that
19:19:09 -!- kallisti has quit (Ping timeout: 252 seconds).
19:19:25 <Vorpal> aha, that works
19:20:02 <Deewiant> Right, don't overthink it :-)
19:20:10 <Deewiant> Most climbing is fairly automatic
19:20:19 <Vorpal> hm
19:20:43 -!- sebbu2 has joined.
19:20:43 -!- sebbu2 has quit (Changing host).
19:20:43 -!- sebbu2 has joined.
19:20:59 -!- kallisti has joined.
19:20:59 -!- kallisti has quit (Changing host).
19:20:59 -!- kallisti has joined.
19:21:08 <Deewiant> Vorpal: See http://www.virtualshackles.com/64
19:21:53 -!- sebbu has quit (Ping timeout: 240 seconds).
19:23:18 <Vorpal> also this game is cutscene heavy
19:27:14 <Vorpal> wait what, since when did this turn into tower defense?
19:27:14 <Vorpal> wtf
19:27:16 <Vorpal> defence*
19:27:45 <Vorpal> Deewiant, heh
19:27:53 <Vorpal> Deewiant, I assume the girl is from Mirror's Edge?
19:28:06 <Deewiant> Yes
19:28:18 <Vorpal> which I take it is harder?
19:28:27 <Deewiant> Well, it's a different game
19:29:00 <Deewiant> But that comic /is/ a more-or-less accurate description of the respective difficulties when it comes to the act of climbing a surface
19:32:48 -!- oerjan has joined.
19:33:01 <Vorpal> WHY did this game just turn into rather mediocre tower defense
19:33:03 <Vorpal> defenceÄ
19:33:05 <Vorpal> defence*
19:33:18 <Vorpal> what did they think... it doesn't belong in the game
19:33:39 -!- cheater has quit (Excess Flood).
19:33:41 <Phantom_Hoover> Which game.
19:33:57 <Ngevd> Assassin's Creed Revelations
19:34:06 -!- cheater has joined.
19:34:38 <Ngevd> The Tower Defense are much worse than the Just Cause-like segment later
19:34:42 <monqy> something needed defending and they had a few spare towers
19:35:01 <Vorpal> Ngevd, "just cause"?
19:35:04 <Vorpal> hm
19:35:37 <Vorpal> Ngevd, are there more sections like that?
19:36:01 <Ngevd> There's a couple of Burnout-like segments, one of which you'll have already seen?
19:36:08 <Vorpal> Ngevd, burnout?
19:36:14 <Vorpal> I'm not familiar with that game
19:36:16 <oerjan> <kallisti_> elliott: I was replying to a previous statement where oerjan said the ZipList monad should be obvious to anyone who has tried to figure it out.
19:36:30 <Ngevd> Series of console sort-of-racers
19:36:40 <Ngevd> The point is to destroy everyone else's car
19:36:41 <Vorpal> Ngevd, oh right. The cart thingy
19:36:43 <oerjan> it is not entirely impossible i was wrong at that point, and hadn't realized a fix was needed yet
19:36:57 <Vorpal> Ngevd, well okay, that was less annoying than tower defence though
19:37:14 <Ngevd> Yeah, the tower defence is awful
19:40:36 <Vorpal> plus I don't really enjoy the tower defence genre anyway
19:48:13 -!- sebbu2 has quit (Ping timeout: 240 seconds).
19:50:48 -!- sebbu2 has joined.
19:50:48 -!- sebbu2 has quit (Changing host).
19:50:48 -!- sebbu2 has joined.
19:58:39 * elliott sends off the longest bug report EVAR
19:59:19 <Ngevd> elliott, to whom?
19:59:44 <elliott> Heinrich Apfelmus
20:02:30 -!- oerjan has quit (Quit: Lost terminal).
20:04:22 -!- oerjan has joined.
20:04:47 <elliott> hi oerjan
20:04:52 <oerjan> hi
20:04:58 <Ngevd> Hello.
20:05:14 <oerjan> looks like the router is nearly toast :(
20:05:41 <Ngevd> ...Do you have any butter?
20:05:56 <Ngevd> Or butter substitute
20:06:06 <elliott> oerjan: your ISP will likely offer a replacement if you got it from them
20:06:09 <elliott> unless it's your fault :P
20:06:18 <oerjan> elliott: yes, they were going to send one
20:06:28 <elliott> yay
20:06:30 -!- cheater has quit (Excess Flood).
20:06:38 <elliott> oerjan: failing that you can freeload off my wifi
20:06:42 <elliott> i do not mind.
20:06:46 <Ngevd> What does Excess Flood even mean?
20:06:51 <oerjan> but i'm going to have to continue expecting losing connection several times a day until it arrives
20:06:54 <elliott> it means cheater's client is spamming the server somehow
20:07:06 <elliott> and will likely continue to do so forever, since he's been quitting like that for literal months
20:07:52 -!- cheater has joined.
20:09:06 <elliott> hmm, I suppose in a way it's 260
20:09:20 * elliott rationalisation
20:11:35 <Ngevd> The most recent xkcd isn't very funny
20:11:50 <Gregor> You typo'd there.
20:11:53 <Phantom_Hoover> Ngevd finally catches on.
20:12:02 <Gregor> "The most recent [300 xkcds aren't] very funny"
20:12:10 -!- cheater has quit (Excess Flood).
20:12:12 <coppro> actualy I think the number is somewhere closer to 440
20:12:17 <coppro> bah, typo
20:12:18 <coppro> 44
20:12:30 <Ngevd> I mean, most of the recent ones I can sorta tell how they're meant to be funny
20:12:36 -!- cheater has joined.
20:12:43 <Phantom_Hoover> Ngevd, he seems to have a problem separating things that happen to him from comic material.
20:12:47 <Gregor> pooppy: I was estimating based on ... well, nothing.
20:12:51 <elliott> Gregor: 300 xkcds ago was 696.
20:12:53 <coppro> actually http://xkcd.com/989/ was pretty good
20:12:56 <elliott> You're quite a way off.
20:13:13 <Phantom_Hoover> The xkcdecay was in the 400s, right?
20:13:13 <Gregor> elliott: Yeah, that's well into shit territory. I stopped counting quite a while ago *shrugs
20:13:21 <elliott> Phantom_Hoover: Roughly
20:13:32 <elliott> I mean, it's more of a slow decline than anything else.
20:14:03 <coppro> mmhmm
20:14:28 <Phantom_Hoover> 100 comics is time enough for a slow decline, surely?
20:14:36 <Phantom_Hoover> I mean, it represents the better part of a year.
20:14:52 <Gregor> When it comes to XCKD, it represents the /worse/ part of a year.
20:14:53 <Gregor> *ba-dum tsh
20:15:02 <Gregor> Why do I keep missing terminal stars...
20:15:20 <Phantom_Hoover> I suppose Ngevd just can't realise when things are terrible.
20:15:45 -!- cheater has quit (Excess Flood).
20:16:20 -!- cheater has joined.
20:21:24 -!- cheater has quit (Excess Flood).
20:22:00 -!- cheater has joined.
20:24:21 <Vorpal> Deewiant, kallisti: how do I reduce the "templar awareness" thingy?
20:24:48 <Ngevd> Bribing heralds
20:25:05 <Deewiant> [something I can't remember], bribe heralds, kill messengers (or whatever they're called)
20:25:13 <Vorpal> Ngevd, can't seem to do that. Do I need to unlock it somehow?
20:25:24 <Ngevd> Can you see a herald?
20:25:26 <Vorpal> or can I only do that above some certain level
20:25:28 <Deewiant> Oh, in the earlier ones the first one was rip wanted posters
20:25:37 <Deewiant> But I never saw any in revelations
20:25:43 <Ngevd> Vorpal, you have been able to do that for two games
20:25:55 <Vorpal> Ngevd, hm what button (on PC)=
20:25:58 <Vorpal> s/=/?/
20:26:01 <Ngevd> No idea
20:26:03 <Deewiant> You can do it above 50% awareness only, I think
20:26:06 <Deewiant> Since it removes 50%
20:26:08 <Vorpal> also this is the only game in the franchise I played
20:26:09 <Vorpal> ah
20:26:14 <Deewiant> I'm not sure though
20:26:19 <Deewiant> It might've been 25%
20:26:24 <Vorpal> Deewiant, any problems with having about 25% awareness?
20:26:31 <Deewiant> It doesn't matter at all until it goes to 100%
20:26:36 <Vorpal> ah
20:26:46 <Deewiant> At that point you get to play more tower defence
20:27:50 <Vorpal> Deewiant, okay I definitely want to avoid that
20:28:30 <Vorpal> Deewiant, are anything in the bookshops worth buying?
20:28:49 <Deewiant> Not IIRC
20:29:12 <Ngevd> Only if you're going for 100%
20:29:22 <Ngevd> And I would buy armour and weapons first
20:30:27 <Vorpal> wow I did the "renovate a shop" and the awareness just rose quite a bit.
20:30:42 -!- azaq23 has joined.
20:30:42 <Vorpal> hm need to find a herald now, and they are not on the map
20:30:50 -!- azaq23 has quit (Max SendQ exceeded).
20:31:11 <Deewiant> If they're not on the map you can't use them yet, IIRC
20:31:19 -!- azaq23 has joined.
20:31:23 <Deewiant> Not sure though
20:31:26 <Vorpal> ouch
20:31:27 <Deewiant> They might only show up when you're close
20:31:34 <Deewiant> ("yet" = not enough awareness)
20:32:40 <Vorpal> ah
20:33:52 <Vorpal> huh, I have to manage assassins. Come on, this game is awkwardly trying to mix genres
20:33:54 -!- cheater has quit (Excess Flood).
20:34:23 -!- cheater has joined.
20:38:56 -!- Vorpal has quit (Read error: Connection reset by peer).
20:39:39 -!- Vorpal has joined.
20:47:42 -!- Vorpal has quit (Ping timeout: 240 seconds).
20:49:19 -!- GreaseMonkey has joined.
20:52:05 <oerjan> ais523: there's some wiki spam
20:52:16 <ais523> thanks; I'm in the middle of something but will clean it up later
20:54:54 -!- Vorpal has joined.
20:55:04 -!- cheater has quit (Excess Flood).
20:55:26 -!- cheater has joined.
20:59:06 <Vorpal> ...
20:59:59 -!- Vorpal has quit (Excess Flood).
21:01:22 -!- zzo38 has joined.
21:06:12 -!- Vorpal has joined.
21:06:23 <Vorpal> <Vorpal> Deewiant, kallisti, Ngevd: is there any in-game explanation for that "eagle sense". I mean I can see no obvious reason why the guy would have such a "magical" thing
21:06:31 <Vorpal> that probably didn't go through
21:07:10 <Ngevd> It's because he's descended from Those Who Came Before
21:07:38 <Vorpal> I guess that makes more sense later on?
21:07:53 <Deewiant> You really should play all the games in order :-P
21:08:02 <Ngevd> I've never played the first...
21:08:05 <Deewiant> Or at least watch the endings to all the previous ones, I guess
21:09:49 <Vorpal> Deewiant, meh
21:09:50 <Vorpal> Deewiant, I want the best graphics available
21:10:26 <Deewiant> Congrats, you're a superficial person
21:10:30 <Vorpal> heh
21:10:50 <Phantom_Hoover> Use small, articulated models.
21:10:50 <Vorpal> Deewiant, who?
21:10:57 <elliott> back
21:11:04 <elliott> <Vorpal> Deewiant, meh
21:11:04 <elliott> <Vorpal> Deewiant, I want the best graphics available
21:11:04 <elliott> <Deewiant> Congrats, you're a superficial person
21:11:09 <Vorpal> Deewiant, anyway I'm not sure I like the game enough to even play it to the end.
21:11:15 <elliott> Deewiant: When I said "standard" I actually meant "standard and HI-DEF"
21:11:23 <elliott> Vorpal's revised definition of fun.
21:11:29 <Ngevd> http://notalwaysright.com/stop-and-stair/12288
21:11:59 <Vorpal> elliott, that doesn't even make sense
21:12:06 <Phantom_Hoover> He knows what he likes, and he likes his glossy rocks.
21:17:22 * Phantom_Hoover notes that the Cave Story+ Wii trailer has at least one significant spoiler in it.
21:18:51 <monqy> :(
21:23:42 <Vorpal>
21:23:44 <Vorpal> eh
21:31:25 -!- cheater has quit (Excess Flood).
21:33:30 -!- cheater has joined.
21:41:56 -!- ais523 has quit (Remote host closed the connection).
21:43:53 -!- cheater has quit (Excess Flood).
21:44:29 -!- cheater has joined.
21:47:52 -!- cheater has quit (Read error: Connection reset by peer).
21:48:25 <Ngevd> I really need to get around to reinstalling Ubuntu
21:53:27 <Ngevd> Goodnight
21:53:30 -!- Ngevd has quit (Quit: Goodbye).
21:54:02 <elliott> At 22:00?
21:54:34 <zzo38> Oops! Did you mean 25:00?
21:55:02 <elliott> Yes, thanks.
22:23:13 <zzo38> Do you have nothing against hard games?
22:23:37 <zzo38> And hard computer games too?
22:25:19 <elliott> I hate hard computers.
22:25:42 <monqy> i only compute if they squish to the touch
22:26:23 -!- madbr has joined.
22:26:41 <oerjan> a good computer is a gas
22:27:20 <zzo38> I made the file of the complete texts of Super ASCII MZX Town
22:27:39 <zzo38> Tell me what you can learn or guess or confuse from such things: http://zzo38computer.cjb.net/misc/ascmzxto_texts.txt
22:29:10 <zzo38> (Despite "* UNREGISTERED ** Press F1 for help, Enter for menu", no registration is required. It is a memory artifact from the old DOS MegaZeux)
22:29:20 <madbr> "*This* music: Microsoft
22:29:22 <madbr> "
22:29:28 <madbr> canyon.mid? :D
22:29:40 <elliott> fizzie: Pls make fungot model ^
22:29:40 <fungot> elliott:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov
22:30:19 <monqy> .?
22:30:30 <zzo38> madbr: No. It is the secret music in Windows 95 (you need to make a folder on the desktop and rename it to various things, and then when opened it plays music), converted from MIDI to MOD format.
22:30:56 <oerjan> one can only guess what torturous horrors anmaster did to fungot.
22:30:56 <fungot> oerjan: or is it just me, or i: yet, you rogue! and if you wish! we shall hold this position to the last man! big fire where lavos fall from sky! we
22:32:23 <madbr> zzo38: maybe you should've asked the dudes in espernet #mod_shrine to make you a song :3
22:32:53 <zzo38> madbr: Yes I could have done. I didn't know about that one.
22:33:12 <elliott> oerjan: made it put a . after its colon without a space
22:33:48 <Sgeo> There's an interpreter for Funciton in C#
22:33:48 <oerjan> elliott: gruesome!
22:33:57 <Sgeo> Wonder if it can be ported to Haskell >.>
22:35:26 * Sgeo walks away quickly
22:36:34 <elliott> You don't "port" C# code to Haskell, you rewrite it.
22:36:59 <madbr> seen worse
22:37:03 <madbr> c++ to js
22:37:19 <monqy> eh?
22:37:34 <zzo38> Do you know if there are MML compilers that can output MOD or S3M or XM formats?
22:37:52 <quintopia> i've never heard of mml
22:37:53 <madbr> zzo38: never seen that no
22:38:22 <madbr> zzo38 : seems like a weird idea since mod/s3m/xm is easier to write than MML in first place
22:38:31 <madbr> imho
22:38:41 <zzo38> Maybe to you it is.
22:39:11 <zzo38> I know about one MML compiler which seems to be very good with some good features, called SakuraMML, but it is only for MIDI and does not work on my computer.
22:40:07 <madbr> I've seen MOD to NES or SNES converters but not the other way around
22:40:46 <madbr> except maybe snex9x mod output but that was really rough
22:41:14 <quintopia> i assume you mean music macro language
22:41:22 <quintopia> no music markup language
22:41:32 <zzo38> Yes, I mean music macro language
22:41:44 <madbr> quintopia: yeah the one used by japanese chiptuners
22:42:29 -!- Sgeo has quit (Quit: Leaving).
22:42:53 -!- Sgeo has joined.
22:43:23 <madbr> zzo: you mean sakuraMML does mml->midi or midi->mml?
22:44:08 <quintopia> zzo38: you should make one
22:44:25 <zzo38> madbr: It does MML -> MIDI
22:44:41 <zzo38> quintopia: OK, maybe I will make it
22:45:48 <madbr> hm
22:45:48 <quintopia> which has the most features/capabilities? of IT,S3M,MOD,XM, and MML?
22:46:06 <madbr> they're kinda orthogonal
22:46:14 <zzo38> quintopia: It depends on the MML variant being used. Different programs have somewhat different MML variants
22:46:38 <madbr> mod etc are sample based
22:46:43 <quintopia> so there isnt one that encompasses the abilities of the others?
22:46:57 <madbr> MOD was originally the format of an AMIGA music routine
22:47:08 <madbr> that was popular because it had a nice tool
22:47:23 <madbr> S3M is a mod extension
22:47:30 <madbr> XM is a mod+s3m extension
22:47:38 <madbr> IT is a mod+s3m+xm extension
22:48:18 <madbr> s3m/xm/it came from PC programs so they have progressively more channels and features etc
22:48:34 <zzo38> Some idea I have, is how I could use some compressions such as the compiler figuring out where to add loops, change speeds when notes have a lot of empty frames between them, and so on.
22:50:02 <madbr> zzo38: s3m/xm/it already have a compression scheme that doesn't save blank space
22:50:22 <zzo38> madbr: I know; I read the format specification.
22:50:40 <madbr> so speed change isn't useful except for like MOD
22:50:54 <Vorpal> Deewiant, how do I take over a den?
22:51:09 <madbr> you could do the loops but you're probably a lot better off just zipping the MOD
22:51:11 <Vorpal> Deewiant, I'm at the den's location, and I see no prompt or such
22:51:25 <Deewiant> There's an early mission that shows you how
22:51:40 <Deewiant> Climb to the tower and light the fire
22:51:48 <Deewiant> After killing the leader
22:51:49 <Vorpal> Deewiant, I press shift and nothing happens
22:51:52 <Vorpal> ah the leader
22:51:53 <Vorpal> right
22:51:57 <Vorpal> I probably missed that
22:52:01 <Vorpal> oh well, time to find him
22:52:02 <madbr> zzo: is there a variant of MML that outputs to some kind of sampler?
22:52:15 <zzo38> madbr: I don't know.
22:52:30 <madbr> If yes you could probably do mod/etc->MML
22:53:21 <Vorpal> Deewiant, any hint on finding the leader?
22:53:23 <zzo38> I want to input MML, output some format.
22:53:48 <madbr> Guess you could do your own MML->IT converter
22:53:52 <Deewiant> Vorpal: Eagle vision, highlighted in gold IIRC
22:54:30 <Deewiant> Or, if you want to do it manually: clearly more "officer-looking" than the others, usually in a patrol with some others
22:54:42 -!- quintopia has quit (Ping timeout: 252 seconds).
22:55:14 <madbr> zzo38: with some system for compiling in sample data
22:55:20 <zzo38> Actually it look like, empty rows are still included in S3M file, 0=end of row there seem no skip rows command. gopher://zzo38computer.cjb.net:70/0textfile/music/s3m-form.txt
22:55:42 <zzo38> madbr: Yes. My idea is to have two ways: One way is reference external file, second way is to enter the mathematical formulas for them.
22:55:44 <Vorpal> Deewiant, I might have killed the guy without identifying him. Did I just bug the game?
22:55:47 <madbr> zzo38: there's a "pattern delay" effect too
22:56:09 <madbr> zzo38: going to be hard to make a snare out of mathematical formulas!
22:56:11 <Deewiant> Vorpal: No, that's fine.
22:57:03 <madbr> ah but yeah you could use a formula
22:57:04 <madbr> I see
22:57:33 <Vorpal> Deewiant, it says the den is in hiding :/
22:57:39 <Vorpal> and I should wait until tomorrow
22:57:40 <Vorpal> wtf
22:57:56 <Deewiant> Ah, hmm, I wonder if that's what happens if the leader is a coward-type and you let him get away
22:58:05 <Deewiant> Never let that happen myself so beats me
22:58:07 <Vorpal> Deewiant, that could have happened
22:58:26 <Vorpal> well at least I got the view point
22:58:31 <madbr> zzo38: guess it could work
22:59:53 <madbr> zzo38: I bet most formulas would just get you FM synthesis stuff :D
23:02:44 <Vorpal> Deewiant, the tunnel system is annoying, in how you select the destination from a list rather than allowing you to click directly on the map icon for that on the map that is shown right next to the list!
23:03:28 <Deewiant> Yep
23:04:12 -!- quintopia has joined.
23:04:13 -!- quintopia has quit (Changing host).
23:04:13 -!- quintopia has joined.
23:11:20 <Vorpal> the game just froze, dammit
23:11:41 <Vorpal> and I died as a result
23:12:19 <elliott> rip
23:12:49 <Vorpal> you just restart at last checkpoint
23:14:23 -!- oerjan has quit (Quit: Lost terminal).
23:14:27 <zzo38> You roll the dice. You rolled zero.
23:14:52 <zzo38> You found a talking tree. Tree: O! Suddenly I learned speeching English!!
23:15:00 <elliott> :D
23:15:53 <zzo38> These are some of the texts in this game. There is no checkpoint; you can make save game file at any time and have multiple save files (highly recommended)
23:16:14 <zzo38> Do you know about Washizu Mahjong game?
23:17:20 -!- Klisz has joined.
23:19:11 <zzo38> Or about computer game?
23:19:23 <zzo38> I have Akagi DS game, it include Washizu Mahjong as well.
23:20:31 <zzo38> Make your own game based on these texts and see if they are difference?
23:20:44 <Phantom_Hoover> "I still maintain the point that designing a monolithic kernel in 1991 is a
23:20:44 <Phantom_Hoover> fundamental error. Be thankful you are not my student. You would not get a
23:20:44 <Phantom_Hoover> high grade for such a design :-)
23:20:44 <Phantom_Hoover> (Andrew Tanenbaum to Linus Torvalds)"
23:20:51 <Phantom_Hoover> Fortune has made me hate Tanenbaum now.
23:22:59 <zzo38> Did you know? MEDIUM_SIZE_MONSTER is bad and evil but BIG_MONSTER is good so BIG_MONSTER can help you to beat MEDIUM_SIZE_MONSTER too, in this game.
23:23:17 <zzo38> Can you find the beam-me-up-scottifier?
23:23:40 <zzo38> Remember! All Nice Ring Don't Free.
23:24:23 <zzo38> Do you require a life-size model of the Earth because a normal globe is not big enough?
23:26:32 <elliott> Yes.
23:26:37 <elliott> In fact I need it to be larger-than-life.
23:45:00 <elliott> [Haskell-cafe] On the purity of Haskell
23:45:00 <elliott> By Chris Smith - 3:30pm - 15 authors - 55 replies
23:45:04 <elliott> oh nooooooo
23:45:10 <elliott> "Warning - it may look like trolling at various points. Please keep going
23:45:10 <elliott> to the end before making a judgement."
23:45:12 <elliott> oh nooooooooooooooooooooooo
23:51:40 <elliott> Argh, people are promoting the State World model of IO in this thread.
23:53:48 <zzo38> State World model?
23:54:47 <Vorpal> Deewiant, that game locks up a lot...
23:55:01 <Deewiant> Never for me IIRC
23:55:28 <elliott> People like to claim that IO a is defined like RealWorld -> (a, RealWorld), because GHC's definition resembles this (actually it's State RealWorld# -> (# a, State RealWorld #)), but this isn't true at all; the "State" parameters are actually tricks to stop the compiler reordering operations in GHC, and are eliminated at compile-time; as a formal model, it can't handle tons of IO things, such as concurrency.
23:55:48 <elliott> Also it's a ridiculous model anyway since a Haskell program blatantly can't just send back a new real world to replace the current one with.
23:56:00 <zzo38> Then try to play my games instead, in case it don't locks up a lot?
23:56:14 <Vorpal> I'm not interested in those genres
23:57:09 <zzo38> elliott: Actually I think it is (State# RealWorld) not (State RealWorld#) and as far as I know they are abnormal types in many ways
23:57:18 <elliott> zzo38: Err, right, yeah
23:57:39 <elliott> They just exist so that the compiler thinks each action depends on the previous being evaluated so it doesn't reoder things, I believe
23:57:50 <zzo38> Yes, I think so
23:57:51 <elliott> The (->) being used is actually the arrow of /impure/ functions there
23:59:13 <zzo38> What method of scoring do you prefer at five pin bowling?
23:59:40 <elliott> I, er, don't.
2011-12-30
00:00:36 <Phantom_Hoover> zzo38, reticent Millwall.
00:01:12 <zzo38> What does reticent Millwall mean? I don't actually know the names of any of the systems
00:02:14 <Phantom_Hoover> Well, it's a modification of Millwall such that it doesn't end up at O(\zeta(n)) in the case of pseudoretrocausal scores.
00:02:19 <Phantom_Hoover> Hence reticent.
00:02:34 <zzo38> I don't even know what Millwall means
00:03:04 <Phantom_Hoover> Honestly, you don't know about Millwall?
00:03:37 <zzo38> Yes it is true I don't know. It might correspond to something that I understand but don't know the name of.
00:04:25 <Phantom_Hoover> It's just ablative exponentiation combined with Chiswick normalisation.
00:04:36 -!- calamari has joined.
00:04:46 <elliott> zzo38: The key part of millwall is w(x) = \tau 2^-x - \zeta(e+pi)^(i pi x)
00:04:58 <elliott> \tau 2^-x being the Chiswick normalisation ofc
00:05:21 <zzo38> elliott: O, OK. But I still don't know if that has anything to do with five pin bowling.
00:05:28 <elliott> You take the integral of that and floor the result and plug it into the standard Chernobyl construction
00:05:36 <elliott> Oh, five pin bowling?
00:05:44 <elliott> I thought we were talking about theoretical physics.
00:05:49 <zzo38> Yes, five pin bowling is what I was asking about
00:05:56 <elliott> Oh.
00:06:01 <elliott> I don't know, then.
00:06:06 <Phantom_Hoover> Unfortunately fivepin bowling isn't subject to the Katamari degeneracy, so there's no closed form for the integrand.
00:06:17 <zzo38> Katamari?
00:06:44 <Sgeo> Phantom_Hoover, elliott kallisti update
00:06:51 <Sgeo> It's an [S]
00:06:53 <Phantom_Hoover> Where U(C) = U(«C»), ofc.
00:07:38 <Phantom_Hoover> Won't load for me.
00:07:44 <Phantom_Hoover> I do hope the hosting hasn't folded again.
00:11:15 -!- Phantom_Hoover has quit (Quit: Leaving).
00:11:28 -!- Phantom_Hoover has joined.
00:14:09 <Phantom_Hoover> http://www.reddit.com/r/math/comments/nuob8/what_are_some_applications_of_prime_numbers_in/
00:14:39 -!- madbr has quit (Ping timeout: 252 seconds).
00:15:37 -!- sebbu2 has changed nick to sebbu.
00:17:08 <Sgeo> Phantom_Hoover, http://mspandrew.tumblr.com/post/14993719073/it-loads-just-fine
00:17:32 <zzo38> It loads backward and sideways
00:17:55 <Phantom_Hoover> Nope.
00:17:56 <elliott> http://www.reddit.com/r/math/comments/nuob8/what_are_some_applications_of_prime_numbers_in/c3c52bw http://www.reddit.com/r/math/comments/nuob8/what_are_some_applications_of_prime_numbers_in/c3c3f60
00:17:58 <Phantom_Hoover> Still doesn't load.
00:17:59 <elliott> Phantom_Hoover: so cool ;__;
00:18:03 <Phantom_Hoover> I guess I'll have to wait.
00:18:41 <elliott> Advice on teaching yourself. Please help. (self.math)
00:18:43 <elliott> Oh, the irony.
00:19:08 <quintopia> that thing about the cicadas is p awesome. i never knew that.
00:19:19 -!- madbr has joined.
00:21:00 <Sgeo> Everyone who saw the new Homestuck flash: Take a good look at Prospit
00:21:04 <Sgeo> >.>
00:21:05 <hagb4rd> 2 percent really doesn't seem to be much.. i wonder how they found out
00:21:52 <elliott> Sgeo: stfu until anyone other than you has seen it at the very least
00:22:32 <Sgeo> elliott, I wasn't aware I was the only one who saw it
00:22:35 <Sgeo> I did say update >.>
00:22:45 <elliott> Sgeo: and then Phantom_Hoover said "it doesn't load"
00:23:06 <Sgeo> elliott, but it does load
00:23:09 <quintopia> hagb4rd: it implies that there would be 2% more of the 17yr locusts than the 15yr locusts every 15 years or so. that advantage can add up in terms of population.
00:23:15 <Sgeo> At least for me
00:23:29 <hagb4rd> fascinating
00:23:45 <elliott> Sgeo: OK, that's n=1
00:23:49 <quintopia> also, if a predator does figure out how to explot the composite-locust, there is a boon for that predator, which would further improve the advantage.
00:24:24 <hagb4rd> they must have watched cicadas for about hundred years
00:25:42 <Phantom_Hoover> For a hundred years, they watched us. Counting the years in our life cycle. Factorising. In hindsight, they were really slow at that.
00:25:58 <hagb4rd> hehe
00:26:50 <hagb4rd> thats water for my mill
00:27:03 <elliott> Phantom_Hoover: Can we breed cicadas in an environment with computer-controlled predators to crack RSA?
00:27:06 <elliott> Is this the best idea ever?
00:27:27 <zzo38> What time is it on the moon?
00:27:49 <Phantom_Hoover> elliott, no, we use computer controlled cicadas.
00:27:51 <Phantom_Hoover> Duh.
00:32:44 -!- Vorpal has quit (Ping timeout: 276 seconds).
00:34:11 <quintopia> why might a tar -xvz just lock up and not print anything?
00:35:33 <Deewiant> If you don't use -f or stdin to give it input?
00:36:02 -!- Vorpal has joined.
00:36:52 <quintopia> yeah of course. pathname already provided.
00:45:17 <calamari> quintopia: I've noticed that with modern versions you don't have to specify the compression type.. tar -xvf filename works great
00:51:40 <quintopia> oh
00:51:44 <quintopia> i forgot the f
00:51:46 <quintopia> thanks
00:52:29 -!- hagb4rd2 has joined.
00:53:08 -!- hagb4rd has quit (Disconnected by services).
01:03:27 -!- DCliche has joined.
01:03:46 <elliott> Deewiant: Can you get Pandoc included as a GHC boot lib, thx
01:05:16 * Phantom_Hoover → sleep
01:05:18 -!- Phantom_Hoover has quit (Quit: Leaving).
01:06:42 -!- Klisz has quit (Ping timeout: 240 seconds).
01:12:39 <elliott> what is this λ calculus you talked about? Sounds interesting, is it a kind of mathematica for functional programming? Thank you for your hints! – makelc Mar 7 at 8:15
01:16:09 <elliott> http://symbolhound.com/ oh awesome
01:24:27 <quintopia> hey baby, what's your abs(n)/n
01:28:35 <elliott> lmfao, there's a closed Stack Overflow question ... asked by Alan Kay
01:30:33 <Sgeo> Xanadu is still a thing being worked on, right?
01:33:01 <Sgeo> http://xanarama.net/
01:33:14 * Sgeo wonders if it works in WINE
01:33:57 <Sgeo> "that I will not redistribute the software, or keys to the software, in violation of copyright"
01:34:04 <elliott> <Sgeo> Xanadu is still a thing being worked on, right?
01:34:05 <elliott> Ha!
01:34:15 <Sgeo> " to render my firstborn to be brainwashed and enslaved in Xanadu's underground dungeons"
01:35:41 <Sgeo> Copyright 2007
01:36:16 <Sgeo> It's not rendering properly, I think
01:36:44 <Sgeo> I agree to give them my firstborn, and for what?
01:37:00 <elliott> Sgeo: Let me attempt to disambiguate my statement somewhat: Xanadu will never, ever be released, not even if everyone working on it stopped dying tomorrow and lived until the sun burned out.
01:37:31 <elliott> Personally I think this is a good thing as I object rather heavily to some of the principles behind it, but it's not like anyone would use it anyway...
01:38:03 <elliott> "We should be able to fly documents in 3D gaming space (using today's incredible gaming graphics)-- http://transliterature.org/index_files/tlit-FlyingIslandDocuments.png" hahaha christ
01:38:37 <Sgeo> I don't know much about it other than it's worse vaporware than Duke Nukem 3d
01:38:51 <elliott> So is everything, that game was released on schedule.
01:38:54 <elliott> Well, to my knowledge.
01:39:40 <Sgeo> Duke Nukem 3d stopped being a good example for stuff
01:39:44 <Sgeo> Boo :(
01:39:58 <Sgeo> Oh, wait
01:40:05 <elliott> Sgeo: I'm sorry, I'm not going to be able to avoid calling you an idiot.
01:40:05 <Sgeo> Not Duke Nukem 3d. Duke Nukem Forever
01:40:21 <elliott> Xanadu is better than Duke Nukem Forever, I will grant it that.
01:40:55 <Sgeo> It is?
01:41:54 <elliott> Sgeo: Well, Duke Nukem Forever is widely acknowledged as completely and utterly terrible and unsalvagable, so... I feel safe betting on that.
01:42:25 <Sgeo> Oh, in terms of quality
01:42:35 <Sgeo> In terms of development time, Xanadu's longer, isn't it?
01:43:06 <elliott> DNF wasn't started in 1960, so... yes.
01:51:56 -!- Patashu has joined.
01:58:52 -!- elliott has set topic: nobody azerty | http://codu.org/logs/_esoteric/.
02:00:13 -!- Gregor has set topic: nobody azerty | shellac my colemak | http://codu.org/logs/_esoteric/.
02:01:55 <elliott> dvorak shmorak
02:02:35 -!- Gregor has set topic: nobody azerty | shellac my colemak | I implore: That? 'tis Dvorak? | http://codu.org/logs/_esoteric/.
02:02:57 <elliott> dude
02:02:58 <elliott> youre ruining it
02:03:49 -!- Gregor has set topic: nobody azerty | shellac my colemak | I implore: That? 'tis Dvorak? | BAD KEYBOARD LAYOUT PUN TIME IS BAD KEYBOARD LAYOUT FUN TIME | http://codu.org/logs/_esoteric/.
02:03:50 * quintopia ruins it more by pronouncing it like the composer's name
02:03:59 <quintopia> HAHAHA TRY RHYME IT NOW BITCH
02:04:02 <Gregor> quintopia: So ... incorrectly?
02:04:25 -!- elliott has set topic: pachelbel used dvorak | http://codu.org/logs/_esoteric/.
02:04:34 <quintopia> Gregor: so incorrectly even you can't stop it
02:04:39 -!- Gregor has set topic: pachelbel used dvorak | (if you know what I mean) | http://codu.org/logs/_esoteric/.
02:04:43 <madbr> dvorak ballsack
02:04:51 <elliott> i hate you all
02:05:20 <Gregor> 8-D
02:05:33 -!- quintopia has set topic: pachelbel used dvorak | (if you know what I mean) | As canon fodder? | http://codu.org/logs/_esoteric/.
02:05:57 -!- Gregor has set topic: pachelbel used dvorak | (if you know what I mean) | As canon fodder? | (if you know what I mean) | http://codu.org/logs/_esoteric/.
02:06:16 -!- elliott has set topic: unmitigated awfulness | http://codu.org/logs/_esoteric/.
02:06:24 <elliott> topic is now most accurate topic; future edits disallowed
02:07:29 -!- elliott has set topic: {{pp-dispute}} | unmitigated awfulness | http://codu.org/logs/_esoteric/.
02:07:41 <elliott> you can only view the topic's source now
02:08:25 -!- quintopia has set topic: {{pp-dispute}} | unstipulated godawfulness | http://codu.org/logs/_esoteric/.
02:08:33 <elliott> quintopia: de-sysopped
02:08:34 -!- elliott has set topic: {{pp-dispute}} | unmitigated awfulness | http://codu.org/logs/_esoteric/.
02:08:47 -!- elliott has set topic.
02:08:52 <elliott> i just deleted the topic
02:09:03 <quintopia> i must be ranked higher than you
02:09:12 <elliott> i hacked the system
02:09:13 <elliott> with my
02:09:18 <elliott> ``3l1t3''
02:09:20 -!- Gregor has set topic: Log URL (md5sum compressed): d12f6451164ee3a49c57aad146bf6f9b.
02:09:20 <elliott> ``hax0r skills''
02:09:24 <elliott> as they call them
02:09:24 -!- quintopia has set topic: http://codu.org/logs/_esoteric/.
02:09:28 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `3l1t3'': not found
02:09:28 <Gregor> :(
02:09:31 <elliott> Gregor: yes
02:09:35 -!- elliott has set topic: Log URL (md5sum compressed): d12f6451164ee3a49c57aad146bf6f9b.
02:09:44 <elliott> MD5 is even feasibly crackable (I think) so nobody can complain :P
02:10:04 * quintopia complains
02:10:12 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `hax0r: not found
02:10:44 <elliott> Aren't there sites where you can submit plaintexts to be added into an MD5 lookup database
02:10:52 <elliott> We could do that
02:11:34 <Gregor> Topic changes are in the logs now.
02:11:41 <Gregor> So they can just look the URL up.
02:11:44 <elliott> :D
02:12:28 <elliott> fizzie: Vorpal: Can I have that logs-into-SQL script
02:12:38 <elliott> Actually hmm, wouldn't help me here I don't think
02:14:36 -!- quintopia has set topic: Log URL (md5sum compressed): d12f6451164ee3a49c57aad146bf6f9b | Plaintext Log URL is available by grepping the logs.
02:16:09 <Gregor> TECHNICALLY you can get the URL by typing !logs
02:16:50 <quintopia> shhhh
02:17:32 <elliott> wtf its almost 2012
02:17:36 <elliott> how fast does time
02:17:43 <Sgeo> !logs
02:17:59 -!- quintopia has set topic: Log URL (md5sum compressed): d12f6451164ee3a49c57aad146bf6f9b | Plaintext Log URL is available by asking a bot (the required command is in the logs).
02:18:53 <quintopia> apparently that isnt the right command
02:19:25 <elliott> yes
02:19:25 <elliott> it is
02:20:04 <zzo38> Please correct the topic message don't do like that?
02:21:16 <zzo38> I got rid of all my other HaskGlk stuff because I did it wrong so I try to start over. This time done properly.
02:21:49 <zzo38> Is this correct? module Glk where { class GlkMain x where { glkMain :: x -> IO (); }; runMain :: GlkMain () => IO (); runMain = glkMain (); }
02:21:59 <zzo38> Would something like that even work?
02:22:22 <zzo38> (I know that FlexibleContexts extension is required and I have enabled it)
02:23:48 <elliott> How about
02:24:02 <elliott> zzo38: class GlkMain a where { glkMain :: IO a }
02:24:06 <elliott> Then you don't need FlexibleContexts
02:24:12 <elliott> Just main = glkMain will work.
02:24:25 <elliott> (Because it defaults to (), etc.)
02:25:30 <zzo38> elliott: That is no good, because what I need to do, main is in C, and glk_main is in C, which calls a Haskell function which must be defined in this library, and then need to be imported by another program, and then it make the executable.
02:26:37 <elliott> zzo38: Well, OK, but it's still simpler than your original solution
02:26:45 <elliott> You just use glkMain :: IO () directly instead of runMain
02:27:08 <zzo38> Well, OK.
02:28:08 <zzo38> But I think I will still need FlexibleContexts and it seem I might even need the context on a foreign exported function. Is that allowed?
02:28:39 <zzo38> Because, when the library is being compiled, there will be no instance!
02:29:02 <elliott> Hmm
02:29:09 <elliott> Are you sure yuo can even export runMain like that
02:29:19 <elliott> I think it'll reject it with the context
02:29:21 <elliott> And fail without it obviously
02:29:27 <zzo38> Actually, neither of those functions were the ones I wanted to export.
02:29:37 <elliott> Hmm, what would you export to C then?
02:29:45 <zzo38> But the one I need to export, needs to do other stuff including calling that one.
02:30:00 <elliott> Well, does it still have the context?
02:30:05 <elliott> If so I think it'll run into the same problem
02:30:28 <elliott> The context will end up as passing a typeclass dictionary, so exporting it to C like that would be like trying to export a function without one of its arguments, I think.
02:31:16 <zzo38> As far as I know, it will require the context because otherwise the library will not be able to compile due to lack of instances
02:31:29 <elliott> Right. So I don't think you will be able to export it.
02:31:43 -!- NihilistDandy has joined.
02:32:05 <elliott> I think having the user define the entry point for where C calls in and exporting it is unavoidable.
02:34:20 <zzo38> Is it possible to make up an extension to GHC that would allow it to work?
02:35:29 <elliott> You could... add support for enumerating all instances of a class in IO or something, but that doesn't really fit with how GHC does instances at all.
02:35:59 <elliott> I think the best solution would be to supply a glk-glue.hs that users have to compile with their program, that imports GlkMain.glkMain which the user creates.
02:43:21 -!- madbr has left.
02:48:02 -!- DCliche has changed nick to Klisz.
02:53:07 <zzo38> How exactly should that work?
02:56:53 <elliott> zzo38: e.g.
02:57:22 <elliott> import GlkMain; foreign export exported_glk_main ...; exported_glk_main = ... set things up and call glkMain ...
02:57:28 <elliott> it could be as simple as = libraryCall glkMain ofc
02:57:37 <elliott> then the user just writes a GlkMain.glkMain as opposed to a Main.main
02:57:44 <elliott> and does ghc --make GlkMain.hs glk-glue.hs
02:57:49 <elliott> and whatever else is needed to be linked to, etc.
02:59:11 <zzo38> Will the C codes that are already written in the library be able to call it like that?
03:00:43 -!- Sgeo_ has joined.
03:01:40 <zzo38> Other issue is that some Glk libraries will implement Unicode, some won't, and there might be some different versions, there will be functions lacked..... Although I suppose I could avoid those issues by calling those functions through the dispatch layer
03:02:26 -!- Gregor has set topic: Log URL (md5sum compressed): d12f6451164ee3a49c57aad146bf6f9b | You can learn the plain text log URL and more by visiting your local library! Knowledge is power!.
03:03:13 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:03:17 <zzo38> WinGlk does not even implement the latest version of the Glk specification at this time
03:08:40 <zzo38> How do I use C union types in Haskell?
03:09:54 <zzo38> Or even C structure types?
03:18:28 <kallisti> Vorpal: I think the animus fragments are for like backstory or something.
03:18:52 <kallisti> @tell oerjan oh you make corrections? I pulled the >>+ from the logs on the same day you mentioned the obviousness.
03:18:52 <lambdabot> Consider it noted.
03:25:29 <zzo38> Maybe I should just write wrapper functions in C instead, which can be written to be meant for use with Haskell program, and then import those into Haskell
03:28:30 <elliott> kallisti: what?
03:31:47 -!- Slereah_ has quit (Ping timeout: 268 seconds).
03:32:04 -!- Slereah_ has joined.
03:47:12 <zzo38> How can I tell Mozilla not to load any images or anything else until after the entire HTML has been loaded?
03:50:29 -!- DCliche has joined.
03:52:38 -!- Klisz has quit (Ping timeout: 252 seconds).
03:54:25 <kallisti> zzo38: there was an extension I once had that did something like that.
03:54:28 <kallisti> I don't recall the name
03:54:34 <kallisti> but it was one of those generic "speed up" extensions
04:25:32 <elliott> Hmm, I really want a Chrome extension that saves the entire opened tabs (in all windows) as a bookmark folder.
04:28:08 <kallisti> :t unfoldr
04:28:09 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
04:28:31 <kallisti> :t random
04:28:32 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g)
04:34:23 <elliott> hi kallisti
04:36:37 <kallisti> hi
04:36:53 <kallisti> elliott: I'm trying to convince someone that randomly generated a string of 10 characters has nothing to do with alpha conversion.
04:36:57 <kallisti> *generating
04:37:17 <kallisti> and also he's using GADT because it "helps him see the type signature" but he's doing it wrong. :(
04:39:13 <elliott> kallisti: where
04:39:22 <elliott> also you're still on watch for misusing gadts mister
04:39:40 <kallisti> elliott: facebook
04:39:42 <kallisti> elliott: I am?
04:39:47 <kallisti> I haven't even used them yet.
04:39:57 <elliott> yeah with your signal stuff, trying to stuff discrete and continuous signals into single data type
04:40:09 <elliott> (btw you basically just reinvented frp (which i was too tired to realise at the time), so you're in good company)
04:40:27 <elliott> (in frp, Behavior a ~ Time -> a, and Event a ~ [(Time,a)] -- continuous and discrete signals, respectively)
04:43:38 <kallisti> elliott: I noticed that later as I was reading about FRP
04:44:46 * elliott has managed to convince himself that some-form-of-FRP solves just about every need he has of a programming system, which is great, because I can procrastinate with impunity thanks to its research status
04:45:20 <kallisti> elliott: lol
04:46:08 <elliott> I realised that discrete stream processing a la iteratees is just arrowised (or, well, signal-transformer style) FRP with discrete time :)
04:46:57 <kallisti> elliott: excellent
04:47:47 <elliott> pro: I can apply all the FRP knowledge out there to stream processing
04:47:51 <elliott> con: stream processing is now an unsolved problem
04:48:59 <elliott> kallisti: what fucking time is it over there
04:49:25 <kallisti> 11:49 PM
04:49:42 <elliott> i thought that's when you woke up
04:50:17 <kallisti> elliott: oh yeah actually I realized something similar recenly, when someone in Haskell mentioned that Nat -> a can be considered isomorphic to Stream a
04:50:23 <kallisti> (if you ignore _|_)
04:50:32 <kallisti> elliott: I woke up about an hour ago.
04:50:35 <elliott> well that's obvious. and i don't think there are any extra _|_s
04:52:03 <kallisti> and so Stream a is just an Event with a constant interval between every Time
04:52:27 <elliott> well an infinite Event.
04:52:38 <kallisti> yes that too
04:52:45 <elliott> but note that no sane FRP implementation since Fran actually implements the types like that
04:52:46 <elliott> (because
04:52:48 <elliott> they're slow)
04:52:55 <elliott> also because they let you do too much
04:52:59 <elliott> consider Behavior a -> Behavior b
04:53:04 <elliott> it can look into the future of the behaviour it's given
04:53:07 <elliott> and into the far past
04:53:10 <elliott> so it's not really streaming
04:53:18 <elliott> congratulations, you're now up to the point where nobody knows how to solve this
04:53:21 <elliott> (well OK there are proposals)
04:53:23 <kallisti> I assume it can also blow memory / call stack
04:53:31 <elliott> er yes but I don't see how that's relevant
04:53:48 <kallisti> relevant to the part where you mentioned those implementations are inefficient
04:54:09 <elliott> well...yes... but you can't stop a program blowing memory/call stack
04:54:17 <elliott> they're inefficient even for efficient implementations of Behaviors and Times
04:54:18 <elliott> er
04:54:19 <elliott> and Events
04:55:08 <kallisti> yeah I guess "lol THEY CAN ASPLODE COMPUTER" is sort of a trivial point...
04:58:42 <elliott> 75 rep already today. oh no. all those upvotes are going to go down the drain later on
04:59:07 <kallisti> looool
04:59:39 <kallisti> elliott: just think of all the things you could do with that wasted rep
04:59:42 <kallisti> like... have more rep.
04:59:44 <kallisti> and then...
04:59:45 <kallisti> ????
05:00:07 <elliott> yes
05:00:15 <elliott> my dream
05:00:26 <elliott> http://stackoverflow.com/badges/146/legendary
05:00:28 <elliott> is to earn this
05:00:47 <kallisti> should be easy
05:00:53 <kallisti> imagine if it were "150 times consecutively"
05:01:42 <kallisti> elliott: I told this guy about De Bruijn indices and he... seems reluctant.
05:01:44 <elliott> well
05:01:45 <elliott> http://stackoverflow.com/users/1097181/ehird?tab=reputation
05:01:53 <elliott> i've slipped exactly one day
05:01:56 <elliott> SOUNDS EASY TO ME
05:02:07 <elliott> kallisti: defriend
05:02:15 <kallisti> I have no idea why his "randomly generate 10 variable names" is going to be easier than De Bruijn indices.
05:02:23 <kallisti> it literally makes ALPHA CONVERSION SO EASY
05:02:52 <elliott> you don't
05:02:52 <elliott> have
05:02:53 <elliott> to alpha convert
05:02:56 <elliott> that's the point of de bruijn
05:03:01 <kallisti> right
05:05:01 <kallisti> how are free variables typically represented?
05:05:33 <kallisti> ah I see
05:07:21 <elliott> you don't
05:07:24 <elliott> or well
05:07:33 <elliott> variable indices greater than the number of nested lambdas
05:07:42 <kallisti> yes that's what it looks like
05:07:57 <kallisti> could you do like.. negatives instead or is that less convenient?
05:10:54 <kallisti> I don't know if I understand what the index for free variables signifies
05:12:33 <kallisti> as far as I can tell it just identifies it. so in term with a "lambda depth" of 3, any 4 would be referring to the same free variable
05:12:42 <kallisti> and any 5 would be referring to a different free variable.
05:12:49 <elliott> uh
05:12:55 <elliott> in \e, 0 is the parameter
05:12:59 <elliott> and every other variable is increased by 1
05:13:09 <elliott> for someone advocating de bruijn you don't seem to know anything about it :P
05:13:19 <kallisti> hm Wikipedia starts at 1
05:13:34 <kallisti> so \x. x
05:13:39 <kallisti> is \ 1
05:13:43 -!- DCliche has changed nick to Klisz.
05:14:57 <kallisti> elliott: also that's irrelevant to what I was talking. those are bound variables. I get those.
05:15:21 <kallisti> but would it be bad to use negative indices instead for free variables?
05:15:37 <elliott> well you could never bind them...
05:15:44 <elliott> whereas you can bind free vars by doing (\e)x
05:17:10 <kallisti> maybe I don't get the point of free variables then...
05:17:55 <kallisti> also what does (\e) signify?
05:18:09 <kallisti> that doesn't look like a complete lambda term to me.
05:18:45 <elliott> e is the expression you want to bind the free variable of
05:18:55 <elliott> for instance let's say we have (\1 0) with free variable 1
05:19:03 <kallisti> okay
05:19:04 <elliott> and we want to bind 1 to be print
05:19:07 <elliott> we could do
05:19:19 <elliott> \((\1 0) 0) print
05:19:29 <elliott> = \print 0
05:19:41 <elliott> or more simply
05:19:44 <elliott> we have 0 (no lambda)
05:19:50 <elliott> and want to bind its free variable to print
05:19:53 <elliott> (\0) print
05:20:09 <kallisti> huh, why have I never seen this ever. :P
05:20:16 <kallisti> maybe I didn't pay attention to that.
05:20:55 <kallisti> oh okay.
05:20:57 <kallisti> nevermind
05:21:44 <kallisti> I was misinterpreting your syntax above
05:21:58 <kallisti> I wasn't reading (\e)x in the de bruijn notation.
05:22:11 <kallisti> since there was letters involved.
05:23:00 <kallisti> hmmm okay....
05:23:19 <kallisti> couldn't you have an arbitrary order to how you assign free variables though?
05:23:22 <kallisti> for example
05:23:26 <kallisti> \x. y z
05:23:33 <kallisti> could be \ 1 2
05:23:38 <kallisti> or \ 2 1
05:23:40 <kallisti> right?
05:27:22 <elliott> there are two forms
05:27:25 <elliott> well wait
05:27:30 <elliott> well sure whatever
05:27:38 <elliott> i don't know why you'd use de bruijn for free variables
05:27:41 <elliott> people usually use names for those
05:27:57 <kallisti> I was just going by the Wikipedia article, which assigns indices to them
05:28:10 <kallisti> but yeah it would probably be easier to use -1 for the index and just keep the name floating around
05:29:55 * kallisti is wondering what the most efficient algorithm for assigning De Bruijn indices in Haskell is.
05:30:25 <kallisti> whast I'm thinking of is probably horrible...
05:31:25 <elliott> MAKE ME GO TO BED
05:31:27 <elliott> <kallisti> but yeah it would probably be easier to use -1 for the index and just keep the name floating around
05:31:28 <elliott> no just
05:31:33 <elliott> data Lam = Free String | Bound Int | ...
05:31:42 <kallisti> or that
05:31:53 <elliott> most efficient is easy
05:32:24 <elliott> rewr env (VLam name e) = Lam (rewr (Map.insert name 0 (Map.map succ env))))) e))))
05:32:28 <elliott> or well
05:32:30 <elliott> efficient enough anyway
05:33:04 <kallisti> elliott: that's basically what I was thinking, though not quite so concise.
05:33:10 <kallisti> my idea was "lol use a Map"
05:37:05 <kallisti> and you'd want a datatype to represent the syntax tree and a data type to represent the tree after de bruijnifying right?
05:40:02 <elliott> if you mean you want a data type for the named and de bruijn representation, then yes duh
05:40:09 <elliott> unless you want to process strings :P
05:43:28 <elliott> kallisti: help can't sleep need rep
05:53:59 <kallisti> elliott: work on your #esoteric rep
05:54:20 <kallisti> by...
05:54:21 <kallisti> ..
05:54:25 <kallisti> I don't know
05:55:17 <elliott> killing everyone
05:57:29 <kallisti> yes good
05:57:35 <kallisti> elliott: he still wants to alpha convert. ;_;
05:57:50 <elliott> defriend
05:57:50 <elliott> sheesh
05:57:54 <elliott> i told you to do that hours ago
05:58:06 <kallisti> none of my other RL friends know Haskell at all. :P
05:58:46 <elliott> and the one you do is terrible
05:58:50 <elliott> friendship improvement drive
05:59:21 <kallisti> he's at least realized that randomly generating 10 variables names for each variable does absolutely nothing for him.
06:00:08 <kallisti> he's an electrical engineering major so I guess I can excuse him for being bad at programming.
06:00:22 <elliott> http://en.wikipedia.org/wiki/Train_(unidentified_sound) this freaks me out way more than bloop
06:02:27 <kallisti> elliott: Julia sounds freakier to me.
06:03:11 <elliott> http://en.wikipedia.org/wiki/Whistle_(unidentified_sound) aaaaaaaaaah god
06:03:27 <elliott> (turn up volume)
06:03:48 <kallisti> lol
06:04:11 <kallisti> wtf upsweep is weird too
06:04:23 * kallisti should make some electronic noise music with upsweep in the background
06:04:26 <kallisti> yeaaaah
06:04:28 <kallisti> actually
06:04:31 <kallisti> I could make a whole album
06:04:33 <elliott> "The sound appears to be seasonal, generally reaching peaks in spring and fall, but it is unclear whether this is due to changes in the source or seasonal changes in the propagation environment. The source can be roughly located at 54° S 140° W, near the location of inferred volcanic seismicity, but the origin of the sound is unresolved. The overall source level has been declining since 1991 but the sounds can still be detected on NOAA's equato
06:04:34 <elliott> rial autonomous hydrophone arrays.[1]"
06:04:38 <elliott> ha ha oh boy nightmares
06:04:56 <kallisti> with each of these sounds
06:04:57 <elliott> http://toolserver.org/~geohack/geohack.php?pagename=Upsweep_(unidentified_sound)&params=54_S_140_W_scale:40000000 oh great, the source is out in the middle of fucking nowhere
06:05:02 <elliott> that makes me feel so much better
06:05:04 <elliott> see like
06:05:12 <elliott> if it was off the coast of ireland or something
06:05:13 <elliott> i'd be like
06:05:17 <elliott> sure w/e can't be anything too serious
06:05:29 <elliott> but satan could rise from the deep there and nobody would notice
06:06:51 <elliott> kallisti: http://www.listentothedeep.com/acoustics/index.html
06:06:54 <elliott> hear the next bloop AS IT HAPPENS
06:06:57 <kallisti> elliott: http://matt.might.net/articles/cek-machines/ hmmm have you heard of these?
06:06:59 <calamari> vlc implemented a crt tv emulation deinterlacing mode called "phosphor".. but I don't have it :(
06:07:01 <elliott> the best way to be completely fucking terrified!
06:07:26 <elliott> calamari: Just port VLC to VICE, it has really good C64-on-an-NTSC-TV emulation.
06:07:42 <elliott> kallisti: I think I've seen that article.
06:07:57 <kallisti> elliott: sounds like...
06:08:01 <kallisti> a lot of watery static
06:08:54 <calamari> sounds like.. a magnetohydrodynamic movie prop!
06:09:24 <kallisti> Most of the Haskell in this article is not idiomatic.
06:09:25 <kallisti> For examples, data constructors take tuples instead of expanding the components into fields.
06:09:28 <kallisti> bad bad bad
06:13:48 <kallisti> elliott: hmmm does "free variable" have a kind of contextual definition as well?
06:13:51 <kallisti> for example:
06:13:59 <kallisti> \x. \y. x
06:14:10 <kallisti> could you say that x is a free variable in the inner lambda?
06:14:21 <kallisti> but bound in the whole expression?
06:14:25 -!- calamari has quit (Quit: Leaving).
06:16:42 -!- MDude has changed nick to MSleep.
06:17:28 <elliott> kallisti: if you... wanted to?
06:17:45 <kallisti> elliott: I ask because this CEK machine thing uses "free variable" in this way.
06:18:06 <kallisti> "The type D contains values. For the basic lambda-calculus, there is only one kind of value: the closure. A closure is a lambda term paired with an environment that defines the values of its free variables."
06:24:33 * kallisti elliott I feel my interpreter class for my programming language for work is getting kind of ridiculous
06:25:08 <elliott> http://en.wikipedia.org/wiki/Oymyakon why would you live her
06:25:10 <elliott> e
06:25:27 <kallisti> because you were born there .
06:25:34 <elliott> why
06:25:39 <kallisti> good question
06:25:42 <kallisti> interesting philsophical
06:25:44 <kallisti> question
06:25:46 <kallisti> I often wonder
06:25:55 <kallisti> "why did I end up being me? and not something else."
06:26:02 <kallisti> this concept of identity blows my mind.
06:26:38 <kallisti> consciousness. I AM JUST MATTER WHY DO I EXIST AS THIS REACTIVE PRESENCE.
06:27:19 <quintopia> kallisti: Dust
06:27:31 <elliott> ha
06:27:32 <elliott> ha
06:27:35 <elliott> kallisti: http://toolserver.org/~geohack/geohack.php?pagename=Extreme_points_of_Earth&params=48_52.6_S_123_23.6_W_type:landmark&title=Point+Nemo
06:27:42 <elliott> pacific pole of inaccessibility
06:27:48 <elliott> that's like RIGHT NEXT to the source of that sound*
06:27:49 <elliott> *fsvo right next
06:28:16 <elliott> i'm telling you
06:28:18 <elliott> SATAN CUOLD RISE
06:28:20 <quintopia> s=severe or small?
06:28:45 <quintopia> oh, some
06:30:50 <elliott> "Since the Earth is a spheroid, its center (the core) is thousands of kilometres beneath its crust" thanks wp
06:36:51 <kallisti> elliott: is that because it's a spheroid or because the earth has thousands of kilometres of volume.
06:38:00 <kallisti> "Because the earth is a spheroid and has thousands of cubic kilometres of volume, its center is thousands of kilometres beneath its crust" -- MoreAccuratepedia
06:44:23 <kallisti> any reason why Haskell randomly decided that Ordering constructors have all caps.
06:44:29 <kallisti> EQ LT GT instead of Eq Lt and Gt
06:44:48 <kallisti> I guess they're abbreviations, but most abbreviations in Haskell don't do that.
06:45:07 <elliott> why IO and not Io
06:45:25 <monqy> e-qual
06:47:47 <kallisti> I guess for acronyms it typically is capitalized
06:48:00 <kallisti> but yes, EQ is not an acronym.
06:48:08 <kallisti> but
06:48:11 <kallisti> LT GT and Eq
06:48:12 <kallisti> would be
06:48:13 <kallisti> dumb
06:50:15 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:51:36 <elliott> fuck you
06:51:38 <elliott> sleep person
06:51:40 <elliott> i
06:51:40 <elliott> hate you
06:54:39 <elliott> wow
06:54:41 <elliott> its still dark
06:54:45 <elliott> kallisti should i catch a sleep
06:54:49 <elliott> ebfbore it runs out
06:55:29 <elliott> monqy??
06:55:33 <monqy> hi
06:55:54 <elliott> should i
06:55:55 <elliott> catch a sleep
06:55:56 <monqy> sleep may be a good idea, but only if you are tired
06:55:58 <elliott> efbore it runs out
06:56:00 <elliott> im nto
06:56:01 <elliott> really tired
06:56:03 <elliott> but im kinda tired
06:56:09 <monqy> sleepeing in the day time is fine too
06:56:14 <monqy> today i napped
06:56:21 <monqy> no shame
06:56:35 <elliott> i cant sleeep too much ebcause ill run out of stack oevrflow reputaewiotn ;_;
06:56:47 <elliott> oh 20 rep just came in
06:56:48 <elliott> maybe i will
06:57:06 <elliott> monqy tell me to sleep
06:57:07 <elliott> with bold text
06:57:09 <elliott> that usually works
06:57:25 <monqy> slep??
06:57:30 <elliott> but
06:57:32 <elliott> the marks
06:57:33 <elliott> of questioning :(
06:57:48 <monqy> selp
06:58:08 <elliott> kallisti
06:58:12 <elliott> tell me to slep
06:58:47 <elliott> ^ul (go to sleep)S
06:58:47 <fungot> go to sleep
06:58:52 <elliott> ok that's good fungot
06:58:52 <fungot> elliott: i am just as confused. you just don't know
06:58:58 <elliott> but you are acold emotionallynes robot :(
06:59:00 <elliott> fungot: :DDD
06:59:00 <fungot> elliott: if that is not used commonly and carries with it an array subscript was too easy heh one time i figured if it's possible, notify the notary.
06:59:36 <elliott> monqy: :(
06:59:43 <monqy> :(
06:59:50 <elliott> maybe ill just
06:59:51 <elliott> give up on sleep
06:59:55 <elliott> thanks to
06:59:57 <elliott> the lack of support
07:00:01 <elliott> of my TRUE FRENZ :'(
07:01:02 <elliott> you all
07:01:02 <elliott> suck
07:01:07 <monqy> :[
07:01:19 <kallisti> sprunge is the best thing ever
07:03:11 <elliott> monqy: tel me an slep ;-;
07:03:12 <elliott> ops
07:03:13 <elliott> ;_;
07:03:15 <monqy> an slep
07:03:16 <elliott> i made bad emoticon
07:03:20 <monqy> oops
07:04:19 <elliott>
07:04:22 <elliott> i hate you all hate you all hate
07:05:10 <elliott> monqy: im going to go to bed NO THANKX TO U AND UR MEDLING KIDS
07:05:21 <monqy> is bed a slep
07:05:23 <monqy> or just a bed
07:05:31 <monqy> just a bed is bad, but slep a bed is good
07:05:36 <elliott> FUCK YOUUUUUUUUUUUUUUUUUUU
07:05:42 <elliott> YOU CANT BETRAY ME THEN DEMAND THE ANSWERS
07:05:44 <elliott> :_______;
07:05:44 <monqy> sometimes i just a bed then slep in the day
07:05:50 -!- elliott has quit (Quit: A SINGULAR CRY).
07:06:02 <kallisti> :t sequence
07:06:03 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a]
07:11:13 <kallisti> > sequence ["abc", "def"]
07:11:14 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
07:19:04 <kallisti> > replicateM 5 "AKQJ0123456789"
07:19:06 <lambdabot> ["AAAAA","AAAAK","AAAAQ","AAAAJ","AAAA0","AAAA1","AAAA2","AAAA3","AAAA4","A...
07:19:23 <kallisti> lol
07:19:38 -!- Vorpal has quit (Ping timeout: 276 seconds).
07:20:24 <kallisti> > filter ((==1).length.group) $ replicateM 5 "AKQJ0123456789"
07:20:28 <lambdabot> mueval-core: Time limit exceeded
07:20:37 <kallisti> hm
07:21:02 <kallisti> > length $ filter ((==1).length.group) $ replicateM 5 "AKQJ0123456789"
07:21:06 <lambdabot> 14
07:21:09 <kallisti> lol no
07:21:30 <kallisti> > group "AAAAA"
07:21:32 <lambdabot> ["AAAAA"]
07:21:37 <kallisti> > group "AAAAQ"
07:21:38 <lambdabot> ["AAAA","Q"]
07:21:49 <kallisti> oh
07:21:54 <kallisti> > length $ filter ((/=1).length.group) $ replicateM 5 "AKQJ0123456789"
07:21:57 <lambdabot> 537810
07:22:01 <kallisti> > filter ((/=1).length.group) $ replicateM 5 "AKQJ0123456789"
07:22:02 <lambdabot> ["AAAAK","AAAAQ","AAAAJ","AAAA0","AAAA1","AAAA2","AAAA3","AAAA4","AAAA5","A...
07:23:09 <zzo38> What is it called when you make a variant of an existing Alternative (or MonadPlus) that reverses <|>
07:23:46 <zzo38> Often, "T" is used for a ten in a deck of cards, if that is what you are trying to do
07:25:05 <kallisti> yes
07:25:59 <kallisti> > filter ((==2).length.group) $ replicateM 5 "AKQJ0123456789"
07:26:00 <lambdabot> ["AAAAK","AAAAQ","AAAAJ","AAAA0","AAAA1","AAAA2","AAAA3","AAAA4","AAAA5","A...
07:26:18 <kallisti> that's all four-of-a-kinds and full houses
07:26:59 <kallisti> :t (&&&)
07:27:00 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c')
07:28:26 <kallisti> > filter (\h -> length (group h) == 2 && all ((/=4).length) h) $ replicateM 5 "AKQJ0123456789"
07:28:27 <lambdabot> Couldn't match expected type `[a]'
07:28:27 <lambdabot> against inferred type `GHC.Types...
07:28:45 <zzo38> But you should use 'T' for ten
07:29:07 <kallisti> > filter ((\h -> length h == 2 && all ((/=4).length) h).group) $ replicateM 5 "AKQJ0123456789"
07:29:09 <lambdabot> ["AAAKK","AAAQQ","AAAJJ","AAA00","AAA11","AAA22","AAA33","AAA44","AAA55","A...
07:29:14 <kallisti> okay fine
07:29:25 <kallisti> > filter ((\h -> length h == 2 && all ((/=4).length) h).group) $ replicateM 5 "AKQJT98765432"
07:29:27 <lambdabot> ["AAAKK","AAAQQ","AAAJJ","AAATT","AAA99","AAA88","AAA77","AAA66","AAA55","A...
07:29:46 <kallisti> @pl ((\h -> length h == 2 && all ((/=4).length) h).group)
07:29:46 <lambdabot> ap ((&&) . (2 ==) . length) (all ((4 /=) . length)) . group
07:31:00 <zzo38> Yes, that is better, before you had fourteen cards anyways. Now they are in descending order properly
07:32:05 <kallisti> > filter ((\h -> length h == 2 && any ((==4).length) h).group) $ replicateM 5 "AKQJT98765432"
07:32:06 <lambdabot> ["AAAAK","AAAAQ","AAAAJ","AAAAT","AAAA9","AAAA8","AAAA7","AAAA6","AAAA5","A...
07:32:14 <kallisti> four of a kinds.
07:32:38 <kallisti> I guess actually I need to sort them first
07:33:04 <kallisti> > filter ((\h -> length h == 2 && any ((==4).length) h).group.sort) $ replicateM 5 "AKQJT98765432"
07:33:06 <lambdabot> ["AAAAK","AAAAQ","AAAAJ","AAAAT","AAAA9","AAAA8","AAAA7","AAAA6","AAAA5","A...
07:33:16 <kallisti> > filter ((\h -> length h == 2 && all ((/=4).length) h).group.sort) $ replicateM 5 "AKQJT98765432"
07:33:18 <lambdabot> ["AAAKK","AAAQQ","AAAJJ","AAATT","AAA99","AAA88","AAA77","AAA66","AAA55","A...
07:33:31 <kallisti> actually no
07:33:36 <kallisti> sorting them gives me duplicates
08:08:52 <zzo38> catMaybe = (>>= maybe empty pure); In what cases does catMaybe . optional = id fails? I think it fails when there are error messages associated with it? And the list monad has no error messages so it succeeds with that one.
08:08:55 <Sgeo_> YouTube is WTFy
08:09:13 <Sgeo_> I go to watch a video of This is Gallifrey, music info says "Martha Triumphant"
08:09:24 <Sgeo_> I go to Martha Triumphant, underneath is "Donna's Theme"
08:09:28 <Sgeo_> http://www.youtube.com/watch?v=-HANl6jQxxQ
08:12:38 <zzo38> When looking at the continuation monad definitions, I notice it seems to be similar to the type for double nots
08:12:54 <Sgeo_> double nots?
08:13:10 <zzo38> (And will be, if in ((a -> r) -> r) if r is uninhabited type!)
08:13:22 <Sgeo_> Donna's Theme is The Stowaway, apparently
08:13:49 <Sgeo_> http://www.youtube.com/watch?v=REwOudgPQTI&feature=related gets the song right
08:13:51 <Sgeo_> I'm in shock
08:13:52 <zzo38> But there is also codensity monads, which is similar but r is universally quantified instead of being a parameter. That is the other way too.
08:13:57 <Sgeo_> Maybe it's just the channel
08:14:58 <zzo38> Actually I think the codensity monad *is* the double nots.
08:15:22 <zzo38> Well, kind of.
08:24:57 <zzo38> Is this a proper implementation of category of walks? data Walk w x y where { WalkId :: Walk w a a; WalkTo :: w a b -> Walk w b c -> Walk w a c; }; instance Category (Walk w) where { id = WalkId; WalkId . z = z; z . WalkId = z; z . WalkTo x y = WalkTo x (z . y); }; makeWalk :: w x y -> Walk w x y; makeWalk = flip WalkTo WalkId;
08:30:45 <zzo38> Is it supposed to have a different name?
08:44:32 <copumpkin> Star
08:44:44 <copumpkin> or reflexive transitive closure
08:44:58 <copumpkin> http://www.cse.chalmers.se/~nad/listings/lib/Data.Star.html#553
08:46:16 <zzo38> I do not understand an Agda code much.
08:46:35 <copumpkin> http://www.mail-archive.com/haskell-cafe@haskell.org/msg19411.html is a little more comprehensible, but he instantiated your w variable
08:46:50 <copumpkin> search for ReduceEventually
08:47:13 <copumpkin> but the usual name I've seen for it is reflexive, transitive closure
08:47:25 <copumpkin> of a relation (w in your version)
08:48:36 <kallisti> hi scrutinize my lambda calculus stuff: http://sprunge.us/SjJZ
08:50:46 <zzo38> That one doesn't appear to have a Category instance. Also, when I named it "Walk" I was thinking that w could be a digraph, which is why I called it that, although of course w can be any type of the kind (* -> * -> *). And I think it is not a functor from (w) to (Walk w) but is a functor the other way around. Is it? Maybe I am wrong?
08:51:39 <zzo38> (Where x and y are the nodes and the constructors of w are the edges)
09:14:59 <zzo38> Do you know anything else about this kind of thing related to these way too?
09:17:57 <kallisti> :t shows
09:17:58 <lambdabot> forall a. (Show a) => a -> String -> String
09:20:23 <kallisti> lol apparently λ in a string doubles as an escape character?
09:20:31 <kallisti> > " λ"
09:20:32 <lambdabot> " \955"
09:20:36 <kallisti> oh hmmm
09:20:47 <kallisti> maybe it's an error in emacs syntax highlighter
09:20:59 <zzo38> Can you fix it?
09:21:07 <kallisti> I don't know.
09:25:27 <Sgeo_> lambdabot may have different behavior due to bleh
09:25:59 <Sgeo_> Well, GHCi does not consider it to be an escape character
09:29:23 -!- oerjan has joined.
09:32:04 <oerjan> boo!
09:32:04 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
09:32:39 <oerjan> <kallisti> @tell oerjan oh you make corrections? I pulled the >>+ from the logs on the same day you mentioned the obviousness.
09:32:54 <oerjan> it wasn't a correction, it was a theory of why i'd say something that stupid :P
09:33:03 <oerjan> which might itself be wrong, of course
09:35:53 <oerjan> <kallisti> lol apparently λ in a string doubles as an escape character? <-- erm show for Strings gives Unicode points outside ASCII as escape characters, i think.
09:35:57 <oerjan> > "Ø"
09:35:58 <lambdabot> "\216"
09:37:59 <oerjan> oh hm i probably misunderstood what you were asking
09:39:59 <oerjan> 08:24:57: <zzo38> Is this a proper implementation of category of walks? data Walk w x y where { WalkId :: Walk w a a; WalkTo :: w a b -> Walk w b c -> Walk w a c; }; instance Category (Walk w) where { id = WalkId; WalkId . z = z; z . WalkId = z; z . WalkTo x y = WalkTo x (z . y); }; makeWalk :: w x y -> Walk w x y; makeWalk = flip WalkTo WalkId;
09:40:04 <oerjan> 08:30:45: <zzo38> Is it supposed to have a different name?
09:41:34 <oerjan> yes, that looks isomorphic to http://hackage.haskell.org/package/thrist-0.2.1
09:44:36 <oerjan> zzo38: ^
09:46:13 <zzo38> oerjan: O, yes, OK. But I didn't think it should be arr? I think it is a functor the other way around instead or what, I don't know?
09:47:28 <oerjan> zzo38: well the arrow instance requires w / ~> to be an arrow
09:48:45 <oerjan> and you need something similar to map back from Walk w to w, i think
09:48:49 <kallisti> I used to make arrow instances, then I took an arrow to the knee.
09:50:29 <zzo38> oerjan: I did see that. But still, it doesn't look like it is really a functor from another category to this one, as far as I can tell. It looks like to me, it is a functor the other way around
09:52:45 <zzo38> I did look at the RULES pragma for Control.Arrow and isn't it supposed to be arr is some kind of functor from one category to another?
09:53:07 <zzo38> (As opposed to fmap, which is an endofunctor)
09:53:35 <oerjan> zzo38: it looks to me like a free construction, which means there should be a free walk functor (not necessarily Functor) one way, and an underlying w functor the other way, which are hopefully an adjoint pair in the category sense
09:53:42 <kallisti> oerjan: I mean backslash not escape character
09:53:49 <kallisti> oerjan: but it's an emacs syntax highlighting thing
09:53:56 <oerjan> kallisti: ok
09:54:06 <kallisti> if I put a lambda before an end quote it continues treating the stuff after the end quote as a string
09:54:09 <kallisti> as though it had been escaped
09:55:00 <oerjan> zzo38: also, where there is an adjoint pair there will be a category monad, not necessarily a Monad
09:55:22 <oerjan> (since it's probably defined on the subcategory of w a b objects)
09:55:44 <kallisti> oerjan: hi http://sprunge.us/FgOU
09:56:00 <kallisti> I made the untyped lambda calculus in Haskell. See if it's wrong.
09:56:25 <kallisti> make it better, etc.
09:56:34 <zzo38> But it won't hold arr id = id arr x . arr y = arr (x . y) (This second one is called "compose/arr" in Control.Arrow) At least, it is the case in mine, whether or not theirs is
09:57:19 <oerjan> zzo38: ah right, it only holds if you identify obvious compositions, i guess.
09:57:20 <kallisti> oerjan: I hope you don't mind my gratuitous use of case expressions, I find them less annoying than writing "f x y" over and over when I don't actually pattern match x or y ever.
09:57:49 <kallisti> and in the case of showDBForm I didn't feel like writing that name 4 times.
09:57:51 * kallisti lazy.
09:58:08 <zzo38> oerjan: I think a functor the other way around works though.
10:03:10 <oerjan> kallisti: your showDBForm needs parentheses for right nested applications
10:03:22 <kallisti> oh indeed
10:03:29 <zzo38> For example: class (Category c1, Category c2) => CatFunctor c1 c2 where { funct :: c1 x y -> c2 x y; }
10:03:52 <zzo38> So it is really a generalization of arr, but without first
10:06:23 <kallisti> oerjan: when beta reducing what do I need to do to non-substituted indices?
10:06:28 <kallisti> is it okay to leave them alone?
10:06:51 <oerjan> * kallisti lazy. <-- heard of copy/paste? :P
10:06:57 <kallisti> oerjan: never
10:07:11 <kallisti> I seriously need at least like 4 copy paste buffers I think.
10:09:36 <kallisti> I just realized my reduceSteps function doesn't show you the last reduction. :(
10:10:16 <kallisti> > catMaybes [Nothing, Nothing..]
10:10:17 <lambdabot> <no location info>: parse error on input `]'
10:10:25 <kallisti> > catMaybes [Nothing, Nothing..Nothing]
10:10:26 <lambdabot> A section must be enclosed in parentheses
10:10:26 <lambdabot> thus: (`Nothing..` Nothing)Not...
10:10:30 <oerjan> kallisti: your reduce seem to be missing the case of App f x where f needs to be reduced recursively
10:10:38 <oerjan> *seems
10:11:18 <kallisti> oh you mean when f is the variable being substituted or?
10:11:33 <oerjan> no, when f is itself an App
10:12:27 <kallisti> erm...
10:12:51 <kallisti> are you... sure?
10:14:36 <oerjan> quite sure. how would you ever get App (App (Abs (Abs 0)) (Free "a")) (Free "b") reduced with your reduce?
10:14:42 * oerjan hopes he got that right
10:15:20 <kallisti> 0 should be Bound 0 but okay.
10:15:25 <kallisti> hmm
10:16:07 <oerjan> (aka (\x y -> y) a b, he hopes)
10:16:35 <kallisti> oh hmmm.
10:17:39 <kallisti> oops
10:18:46 <oerjan> <kallisti> > catMaybes [Nothing, Nothing..Nothing] <-- (1) . after a capitalized identifier gets interpreted as module qualification (2) there is no Enum instance for Maybes
10:19:33 <kallisti> > catMaybes (repeat Nothing)
10:19:38 <kallisti> looool
10:19:39 <lambdabot> mueval: ExitFailure 1
10:19:39 <lambdabot> mueval: Prelude.undefined
10:20:24 <kallisti> is there something like iterate except it stops on a Nothing?
10:20:48 <oerjan> takeWhile isJust . iterate f
10:20:54 <monqy> I was just about to say
10:21:10 <kallisti> also needs a catMaybes
10:21:36 <monqy> catMaybes .
10:21:42 <oerjan> i cannot recall anything succinct
10:21:43 <Sgeo_> @src catMaybes
10:21:43 <lambdabot> catMaybes ls = [x | Just x <- ls]
10:21:45 <kallisti> monqy: thanks. :>
10:21:53 <Sgeo_> Oh, so it doesn't use fromJust. Good
10:22:06 <monqy> why would it use fromjust
10:22:14 <monqy> you know what catmaybes does right
10:22:21 <Sgeo_> map fromJust . filter isJust
10:22:31 <monqy> that's a rather bad way to put it
10:22:39 <monqy> or maybe a good one
10:22:45 <Sgeo_> Is there a better way to do it without list comprehensions?
10:22:46 <monqy> ~who knows~
10:23:57 <kallisti> oerjan: hmmm so....reduce (App f x) = App (reduce f) x
10:24:19 <oerjan> kallisti: yeah
10:24:44 <oerjan> your canReduce needs adjustment too
10:24:49 <kallisti> ah yes
10:25:21 <kallisti> oerjan: how do you feel about my where clause inbetween two cases of a function. :P
10:25:30 <oerjan> kallisti: you could use the trick of returning a Maybe which gives Nothing if there was nothing reduced
10:25:42 <kallisti> oerjan: yes that's what I was doing
10:25:48 <kallisti> that's why I asked the above thing about iterate and Maybes :P
10:25:53 <oerjan> ok then :)
10:26:20 <Sgeo_> Hmm, I guess recursion could work for a safe catMaybes?
10:26:38 <monqy> safe?
10:26:39 <Deewiant> ?ty \f -> fst . until (isNothing.snd) (\(x,Just prev) -> (prev, f x)) . (id &&& Just)
10:26:40 <lambdabot> forall a. (a -> Maybe a) -> a -> a
10:26:44 <kallisti> oerjan: hmmm please tell me I don't have to if-then-else though :(
10:27:51 <oerjan> kallisti: i think your subst Bound case is wrong, iirc
10:28:02 <monqy> also: sgeo:
10:28:07 <kallisti> oerjan: yes I was wondering what I should do with indices when I'm substituting.
10:28:08 <monqy> :t concatMap maybeToList
10:28:08 <lambdabot> forall b. [Maybe b] -> [b]
10:28:34 <monqy> "a good catMaybes" - monqy
10:28:40 <monqy> unless it does something weird
10:28:42 <monqy> then it's bad
10:28:43 <monqy> -monqy
10:28:48 <oerjan> kallisti: i think you need to increment things in sub when entering an abstraction
10:28:49 <Sgeo_> :t concatMap
10:28:50 <lambdabot> forall a b. (a -> [b]) -> [a] -> [b]
10:29:06 <kallisti> oerjan: oh okay.
10:29:11 <kallisti> oerjan: how sure are you about that?
10:29:16 <Sgeo_> monqy, cool
10:29:33 <oerjan> not very, i'm not particularly familiar with debruijn indexes :P
10:29:36 <kallisti> oerjan: "increment things" so you mean every bound variable?
10:29:40 <oerjan> yes
10:29:47 <oerjan> oh wait
10:29:48 <kallisti> hmmm
10:30:02 <oerjan> hm, yes.
10:30:51 <oerjan> oops hm wait
10:30:54 <kallisti> lol
10:30:56 <kallisti> can we get like
10:30:57 <kallisti> an example.
10:30:59 <kallisti> to play with.
10:31:19 <oerjan> actually i think i'm retracting that.
10:31:46 <oerjan> since you are only reducing at top level, every bound variable in sub will be bound _inside_ sub
10:31:55 <kallisti> yes
10:32:07 <oerjan> and those should obviously not be renumbered
10:32:10 <kallisti> I'm doing only one beta reduction step.
10:32:16 <kallisti> at the top level of the expression
10:32:51 <oerjan> as long as you don't do any reductions inside abstractions, it should be fine
10:33:04 <oerjan> but i hope you'll be testing it well ;P
10:33:09 <kallisti> oh yes of course
10:33:13 <kallisti> I am master tester
10:33:22 <kallisti> (not really I hate testing)
10:36:52 <oerjan> also if you use Maybe you can probably use unfoldr
10:37:20 <kallisti> oh right
10:37:22 <kallisti> I always forget about that
10:37:25 <kallisti> :t unfoldr
10:37:26 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
10:37:26 <oerjan> or wait hm
10:37:42 <oerjan> it's always tricky whether you get it right at the end then
10:38:01 -!- GreaseMonkey has quit (Quit: The Other Game).
10:38:30 <kallisti> reduceSteps = catMaybes . takeWhile isJust . iterate maybeReduce . Just . indexify
10:38:33 <kallisti> where
10:38:36 <kallisti> maybeReduce (Just e)
10:38:36 <kallisti> oerjan: hi make this less terrible
10:38:38 <kallisti> | canReduce e = Just (reduce e)
10:38:41 <kallisti> | otherwise = Nothing
10:38:43 <kallisti> maybeReduce Nothing = Nothing
10:39:04 <kallisti> I am bad with Maybe, maybe?
10:39:17 <oerjan> kallisti: you don't use canReduce with the Maybe solution
10:39:27 <kallisti> I don't?
10:39:27 <oerjan> you let _reduce_ return a Maybe
10:39:36 <kallisti> oh hmmmm
10:39:39 <kallisti> I don't like that as much
10:39:45 <kallisti> but it makes sense.
10:39:59 <oerjan> but it's the easiest way to avoid the duplication of work between canReduce and reduce
10:40:20 <kallisti> yes
10:40:23 <kallisti> by eliminating canReduce :P
10:40:39 <kallisti> okay a maybe is fine.
10:40:51 -!- Ngevd has joined.
10:40:55 <Ngevd> Hello!
10:41:30 <kallisti> oerjan: except now I have to unwrap the maybe everytime I iterate
10:41:39 <kallisti> oh wait monad
10:41:46 <monqy> thanks monad
10:42:32 <oerjan> > let collatz 1 = Nothing; collatz x | even x = Just $ x `div` 2 | otherwise = Just $ 3*x+1 in unfoldr ((id &&& id) . collatz) 19
10:42:34 <lambdabot> Couldn't match expected type `Data.Maybe.Maybe (a, b)'
10:42:34 <lambdabot> against infe...
10:42:36 <oerjan> argh
10:42:40 <oerjan> oh hm
10:43:02 <oerjan> > let collatz 1 = Nothing; collatz x | even x = Just $ x `div` 2 | otherwise = Just $ 3*x+1 in unfoldr ((id &&& id) <=< collatz) 19
10:43:05 <lambdabot> Couldn't match expected type `Data.Maybe.Maybe (a, b)'
10:43:05 <lambdabot> against infe...
10:43:09 <oerjan> ga
10:43:20 <oerjan> h
10:43:40 <Deewiant> ?ty (id &&& id) . Just
10:43:41 <lambdabot> forall a. a -> (Maybe a, Maybe a)
10:43:56 <Deewiant> ?ty Just . join (,)
10:43:56 <kallisti> reduceSteps :: LCExpr -> [DBForm]
10:43:57 <lambdabot> forall a. a -> Maybe (a, a)
10:43:57 <kallisti> reduceSteps = catMaybes . takeWhile isJust . iterate (>>=reduce) . indexify
10:43:59 <kallisti> much better
10:44:01 <kallisti> but now I have to fix:
10:44:10 <kallisti> reduce (App f x) = Just (App (reduce f) x)
10:44:25 <kallisti> more bind or maybe I guess?
10:44:43 <oerjan> flip App x <$> reduce f
10:44:52 <kallisti> ah yes.
10:45:02 <kallisti> too bad flip is GROSS
10:45:06 <kallisti> I'll use it anyway
10:45:27 <oerjan> App <$> reduce f <*> Just x
10:45:29 <oerjan> hm
10:45:37 <kallisti> choices, choices...
10:45:55 <oerjan> :t flip
10:45:56 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
10:46:15 <kallisti> remember I don't have that flip. :P
10:46:20 <oerjan> lambdabot's extended flip is actually what would work there
10:46:35 <kallisti> I like the applicative one.
10:46:52 <oerjan> it probably doesn't have the right precedence, though
10:46:52 <kallisti> mainly because I have an unwarranted phobia of using flip.
10:47:07 <oerjan> oh hm of course
10:47:16 <oerjan> (`App` x) <$> return f
10:47:19 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:47:20 <kallisti> well yes
10:47:25 <kallisti> but I don't really like that either.
10:47:31 <kallisti> that's my usual solution to flip though
10:47:38 <oerjan> *reduce
10:48:54 <kallisti> the only problem now is that I have no way to show steps in normal lambda calculus notation without performing alpha conversion (I think?)
10:49:03 <kallisti> or, well, I could assign a unique character based on DB index
10:50:03 <oerjan> @hoogle Functor f => (b -> c) -> (a -> f a) -> f c
10:50:04 <lambdabot> Control.Parallel.Strategies ($|) :: (a -> b) -> Strategy a -> a -> b
10:50:04 <lambdabot> Control.Parallel.Strategies ($||) :: (a -> b) -> Strategy a -> a -> b
10:50:04 <lambdabot> Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c)
10:50:09 <oerjan> oops
10:50:14 <oerjan> @hoogle Functor f => (b -> c) -> (a -> f b) -> f c
10:50:14 <lambdabot> Control.Parallel.Strategies ($|) :: (a -> b) -> Strategy a -> a -> b
10:50:14 <lambdabot> Control.Parallel.Strategies ($||) :: (a -> b) -> Strategy a -> a -> b
10:50:14 <lambdabot> Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c)
10:50:20 <oerjan> that one seems to be missing
10:50:27 <kallisti> wat Control.Monad doesn't have <$> anymore>
10:50:31 <oerjan> @hoogle (b -> c) -> (a -> f b) -> f c
10:50:32 <lambdabot> Control.Parallel.Strategies ($|) :: (a -> b) -> Strategy a -> a -> b
10:50:32 <lambdabot> Control.Parallel.Strategies ($||) :: (a -> b) -> Strategy a -> a -> b
10:50:32 <lambdabot> Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c)
10:50:47 <oerjan> kallisti: it never did, it's in applicative
10:50:51 <kallisti> oh right
10:50:55 <oerjan> and also in functor itself
10:51:37 <kallisti> reduceSteps = catMaybes . takeWhile isJust . iterate (>>=reduce) . Just . indexify
10:51:40 <kallisti> there we go
10:53:16 <kallisti> my Haskell functions are usually one of three things 1) long lines of combinators 2) monsterous recursive case/guard things 3) do notation glue stuff
10:53:45 <oerjan> > let collatz 1 = Nothing; collatz x | even x = Just $ x `div` 2 | otherwise = Just $ 3*x+1 in unfoldr (\x -> (id &&& id) <$> collatz x) 19
10:53:46 <lambdabot> [58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]
10:53:49 <oerjan> finally
10:54:07 <oerjan> kallisti: ^ that's the general structure for using unfoldr for such things
10:55:33 <oerjan> hm i guess this doesn't give the _initial_ value.
10:56:35 <kallisti> oerjan: hi what should my LC expression trees derive
10:56:41 <kallisti> Eq, Show, Read, Typeable, ...?
10:57:12 -!- azaq23 has quit (Quit: Leaving.).
10:58:04 <oerjan> i guess.
10:58:31 <kallisti> oh I need DeriveDataTypeable for that apparently
10:59:03 <kallisti> I would think it's generally good practice to derive Typeable, though I could see it being unecessary sometimes (probably in this case)
10:59:48 <oerjan> well it's the sort of thing that's useful for library users, i guess
10:59:55 <kallisti> yes
11:00:00 <kallisti> this is a LAMBDA CALCULUS LIBRARY
11:00:01 <kallisti> obviously
11:04:13 <kallisti> http://www.youtube.com/watch?v=TaXqU7hVVhI
11:05:27 <zzo38> Do you know how to make glyphs for the dwarf planets in our solar system which do not currently have glyphs assigned? (at least, Wikipedia doesn't have them)
11:07:22 <zzo38> Have you read the latest of my D&D recording? One thing it is supposed to be like is a story, like you can just read the text as a novel. (Although, there are also additional things such as footnotes and game data, in case you are interested in that too)
11:08:24 <zzo38> My character's inventory (including money) seem to change a lot (relatively)
11:10:12 <kallisti> --showReduceSteps :: LCExpr -> [String]
11:10:12 <kallisti> --showReduceSteps = map showDBForm . reduceSteps
11:10:13 <kallisti> --showFullReduce :: LCExpr -> String
11:10:14 <kallisti> --showFullReduce = last . showReduceSteps
11:10:22 <kallisti> I think these functions are probably unecessary.
11:10:27 -!- zzo38 has quit (Quit: Do you like inverted qualia?).
11:23:49 <oerjan> @tell zzo38 <zzo38> When looking at the continuation monad definitions, I notice it seems to be similar to the type for double nots <-- http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#Correspondence_between_classical_logic_and_control_operators is probably relevant
11:23:50 <lambdabot> Consider it noted.
11:28:07 * Sgeo_ reads about conduits
11:28:41 -!- Phantom_Hoover has joined.
11:37:17 -!- olsner has joined.
11:37:49 <olsner> so my local library has the plain text log url for #esoteric?
11:39:07 <oerjan> no, that's just the beginning of the process. you will have to find a secret portal and rescue a princess.
11:40:04 <oerjan> just a hint: if someone tells you the princess is in another castle, don't believe them, they're planted spies.
11:42:58 <kallisti> olsner: what?
11:43:15 <kallisti> are you sure they don't just have "internet access and computers"
11:43:19 -!- Ngevd has joined.
11:43:39 <kallisti> oh topic
11:43:40 <kallisti> nv
11:43:40 <kallisti> m
11:43:44 <Ngevd> Hello!
11:43:48 <olsner> oerjan: there are castles!?
11:43:53 <oerjan> yeah libraries cannot afford real books these days
11:44:00 <kallisti> Ngevd: hi. Look what I did. http://sprunge.us/CWOb
11:44:06 <kallisti> Ngevd: I've gone and made the lambda calculus.
11:44:34 <oerjan> olsner: of course there are castles, have you not paid attention in your history classes?
11:44:36 <Ngevd> In a language that already features a form of Lambda Calculus?
11:44:42 <kallisti> Ngevd: yes
11:44:47 <Ngevd> Yay!
11:44:55 <kallisti> well, typed lambda calculus.
11:44:57 <kallisti> this one is untyped.
11:45:14 <Ngevd> :t \m n f -> m (n f)
11:45:15 <lambdabot> forall t t1 t2. (t1 -> t2) -> (t -> t1) -> t -> t2
11:45:28 <olsner> oerjan: nope
11:45:30 <Ngevd> But yeah, Haskell can't handle the S I I
11:45:33 <olsner> I don't trust history
11:45:38 <Ngevd> :t ap id id
11:45:39 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b
11:45:39 <lambdabot> Probable cause: `id' is applied to too few arguments
11:45:39 <lambdabot> In the second argument of `ap', namely `id'
11:45:58 <oerjan> olsner: good policy. however, you can also find castles in tourist guides
11:45:58 <Ngevd> Can kallisti calculus?
11:46:06 <kallisti> wat
11:46:16 <oerjan> (not the castles themselves, directions to them)
11:46:23 <olsner> oerjan: you can't go in those castles though, they're too flat
11:46:29 <Ngevd> Can kallisti's implementation of lambda calculus handle \x -> x x?
11:46:30 <olsner> also not real
11:46:45 <kallisti> Ngevd: probably, since it's an untyped lambda calculus evaluator.
11:47:04 <oerjan> Abs (App (Bound 0) (Bound 0))
11:47:24 <kallisti> oerjan: eventually I'll have a parser for it.
11:47:30 <kallisti> but I don't feel like it right now.
11:47:33 <oerjan> yay
11:47:49 <kallisti> also I'll have it spit out notation for each step by assigning unique variable names and stuff.
11:48:20 <oerjan> @pl ap id id
11:48:20 <lambdabot> join id
11:49:08 <Ngevd> Wow, that makes MIBBLLII developement much easier!
11:49:26 <kallisti> what does?
11:49:28 <kallisti> and what is MIBBLLII?
11:49:45 <Ngevd> join id, it's a brainfuck-disguised combinatory logic esolang
11:50:07 <oerjan> @pl ap id id (ap id id)
11:50:10 <lambdabot> ap id id (ap id id)
11:50:10 <lambdabot> optimization suspended, use @pl-resume to continue.
11:50:26 <Ngevd> Instead of saying <>> I can say ,>
11:50:46 <kallisti> I wonder if this is what most Haskell LC evaluators do
11:50:56 <kallisti> (iteratively apply beta reduction)
11:51:16 <kallisti> or maybe they write the evaluation in one big function?
11:54:25 <kallisti> hmmm just got an idea for a language:
11:54:33 <kallisti> what would happen if you this LC expression:
11:54:54 <kallisti> (\x. y) (x x)
11:54:55 <kallisti> became
11:54:59 <kallisti> y y
11:55:05 <kallisti> reverse LC :P
11:55:05 <Ngevd> I could probably make my downhill esolang a CA
11:57:54 <Sgeo_> elliott was criticizing conduit but I don't remember how
11:59:32 <Sgeo_> Oh
11:59:35 <oerjan> Sgeo_: i think he dislikes the underlying impurity
12:00:02 <Sgeo_> If I take what he said literally, he's wrong
12:00:11 <Sgeo_> "00:00:56: <elliott> Sgeo: For one apparently you have to be in IO and use mutable variables to maintain any kind of internal state but it's ok because you're going to be in IO all the time anyway!
12:00:11 <Sgeo_> "
12:00:17 <Sgeo_> conduits work with ST
12:00:19 <kallisti> possible candidate esolang names: goosereduce, reducearound, calculus the lambda, the calculus lambda, lambda the calculus, reduceagoose
12:00:26 <kallisti> man I'm so good with names.
12:00:38 <Ngevd> adbmal
12:00:48 <kallisti> yes that's good.
12:00:52 <oerjan> `words 50
12:01:01 <oerjan> kallisti: WE HAVE METHODS
12:01:05 <HackEgo> blait dea our lie teinstata canage ling ready deflti bri see min dor beere pathe kurallammy mong apegulige coll sprii chaspatio acl cher aan erre behambrigh ligetally white barquitsu 3344.2 ardshutio prohilie lypock pasted ear uponcia txy iiide oouric urrilledg king nulatth haw ence belit frusinher matoirn aleneth eorredisport sembelfa
12:01:28 <kallisti> acl
12:01:30 <Sgeo_> oerjan, the Yesod blogposts talked about how the impurity makes things simpler, but if we're usually not touching the underlying mechanisms, how does it make it simpler?
12:01:35 <kallisti> advanced calculus lambda
12:02:07 <oerjan> Sgeo_: i've not read most of the conduit posts
12:02:39 <kallisti> also 3344.2 whut
12:02:42 <kallisti> that's not a word.
12:03:00 <oerjan> it's not a word it's a free number
12:03:12 <kallisti> ARGH MUST REDUCE
12:03:24 <kallisti> well, I've got Nothing.
12:03:36 <olsner> @numberwang 3344.2
12:03:37 <lambdabot> Unknown command, try @list
12:03:41 <olsner> `numberwang 3344.2
12:03:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: numberwang: not found
12:03:49 <olsner> ^numberwang 3344.2
12:03:53 * oerjan recalls from his childhood books a talking squid by the number of 1030.25
12:03:54 <olsner> argh, which bot is that again
12:03:59 <kallisti> egobot I believe
12:04:12 <olsner> I must know if 3344.2 is numberwang!
12:04:30 <kallisti> tias
12:04:31 <oerjan> he was named after the battle of stiklestad
12:04:34 * Sgeo_ blinks at there being two HasRef (ST s) instances
12:04:56 <Sgeo_> Oh, for lazy and strict
12:05:02 * kallisti blinks at Sgeo's announcement of this.
12:05:15 * kallisti blinks at olsner not checking numberwang
12:05:21 <kallisti> !numberwang 3344.2
12:05:26 <kallisti> oh
12:05:33 <kallisti> that would be because there's no egobot
12:05:35 <olsner> the relevant bot is not present_
12:05:38 <olsner> ?
12:05:41 <kallisti> _:(
12:06:04 <olsner> argh! xfce's layout switcher forgets the layout at random intervals
12:06:50 <kallisti> @tell zzo38 I recall that you were interested in giving Haskell a more extensible syntax. If you look at Perl 6 you can see that it provides a way to redefine language syntax. Perhaps you could look at this for inspiration on how this could be done in Haskell.
12:06:50 <lambdabot> Consider it noted.
12:07:42 <oerjan> it's particularly expressive about the lexical syntax of comments
12:07:45 * oerjan ducks
12:08:11 <olsner> cool stuff, I should learn perl6 some day
12:08:37 * kallisti is still in his comfy perl5 shoes.
12:08:44 <kallisti> perl 6 is scary and strange.
12:09:06 <olsner> "comfy"? enjoy your clogs...
12:09:52 <kallisti> olsner : resident Perl hater
12:10:12 * oerjan may be altogether too comfy in haskell these days
12:10:43 <kallisti> yes, you might forget that things mutate sometimes!
12:10:57 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA mutants
12:11:55 <kallisti> I got thrown off by this particular bit of Python code: i = iter(ls); for x,y in itertools.izip(i,i): ...
12:12:02 <kallisti> which is similar to zip`ap`tail
12:12:23 <kallisti> at first I was skeptical that it would work, thinking it would be like join zip i
12:12:34 <kallisti> ...because I forgot iterators mutate.
12:14:52 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:17:23 -!- Ngevd has joined.
12:18:44 <kallisti> oerjan: is LC LR (hahaha acronyms)
12:18:52 <Phantom_Hoover> LR?
12:18:52 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
12:18:56 <kallisti> left recursive
12:19:00 <kallisti> the notation
12:19:03 <kallisti> of lambda calculus
12:19:06 <kallisti> is it left recursive?
12:19:08 <oerjan> kallisti: LR(1)? certainly.
12:19:18 <Phantom_Hoover> Best message.
12:19:20 <Phantom_Hoover> Bessage.
12:19:33 <oerjan> perhaps even LL(1)
12:19:33 <kallisti> oerjan: but I still should be able to use Parsec to parse it, yes..
12:19:36 <kallisti> I'll just have to do that thing
12:19:37 <kallisti> that you do
12:19:40 <kallisti> to fix it.
12:19:43 <kallisti> that I don't remember the name of
12:19:47 <oerjan> kallisti: erm you don't know what LR means do you :P
12:19:59 <kallisti> oerjan: I have a very vague idea.
12:21:07 <kallisti> basically that it can recurse before terminals... or whatever.
12:21:36 <kallisti> ??/
12:22:37 <kallisti> help there are a lot of topics in CS.
12:23:05 <oerjan> http://en.wikipedia.org/wiki/LR_parser it's not an abbreviation for left recursion
12:23:16 <kallisti> oh okay
12:23:20 <kallisti> well I meant LR as in left recursion
12:24:00 <oerjan> kallisti: well yes you'll have the application chains, but you can use the chainl1 combinator for them
12:24:07 <oerjan> @hoogle chainl1
12:24:07 <lambdabot> Text.ParserCombinators.ReadP chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a
12:24:08 <lambdabot> Text.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a
12:24:08 <lambdabot> Text.ParserCombinators.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a
12:24:24 <kallisti> cool
12:24:51 <kallisti> oerjan: I've seen elliott use LR to mean left recursion therefore it is totally legit. :P
12:25:15 <oerjan> RIGHT...
12:25:18 <kallisti> ..
12:25:26 <kallisti> that
12:25:29 <kallisti> is so bad.
12:25:45 <kallisti> it brings tears of joy and pain to my eyes.
12:25:52 <oerjan> er was i punning, i didn't notice
12:26:14 * oerjan unconscious pun
12:26:14 <kallisti> yes you recursed right into punning.
12:26:43 <oerjan> well as long as it wasn't a freudian penis.
12:26:55 <kallisti> was that a pun too? I'm so confused.
12:27:02 -!- Vorpal has joined.
12:27:12 <oerjan> i think that may be a matter of definition
12:27:24 <kallisti> oh I see.
12:27:35 <kallisti> you freudian slipped in the word "freudian slip", right?
12:27:38 <kallisti> *phrase
12:27:45 <kallisti> HSSAHAHAHA HAA
12:28:05 <oerjan> i have no idea what you are fucking about.
12:28:17 <kallisti> me neither.
12:29:04 <Phantom_Hoover> Poking at the old freudian slits, are we?
12:31:02 <kallisti> Not I. I have good oral standing.
12:32:52 -!- monqy has quit (Quit: hello).
12:33:45 -!- olsner has quit (Ping timeout: 255 seconds).
12:34:05 * kallisti considers also supporting De Bruijn notation.
12:37:09 <Sgeo_> o.O something that ehird didn't know
12:37:21 <kallisti> what?
12:37:25 <Sgeo_> (existence of online parsers in Haskell)
12:37:25 <kallisti> unpossible.
12:37:36 <Sgeo_> http://www.reddit.com/r/haskell/comments/nsarm/conduits_part_3_sinks/c3bm3ab
12:38:06 <kallisti> proof that elliott isn't omniscient.
12:38:14 <kallisti> (or that he's tricking us into thinking he is mortal)
12:38:17 * Sgeo_ sees the UU thing every time he looks at the list of Hackage packages
12:38:49 <Sgeo_> Because someone decided it's so great, it doesn't fit in any categories, or something
12:39:15 <kallisti> oerjan: I considering using GADTs for the expression tree but I don't think I'll get much benefit from it.
12:40:04 <kallisti> basically it prevents the first field of an abstraction term from being anything other than a variable term.
12:40:07 <kallisti> but that's it.
12:40:41 <kallisti> that could be fixed by... not using variable terms in the first field of abstraction terms.
12:40:57 <kallisti> and just using strings or whatever
12:44:32 <oerjan> you _could_ just use another data or newtype definition for variables
12:45:34 <kallisti> noep
12:45:36 <kallisti> this works fine.
12:46:03 <oerjan> BUT IT IS NOT COMPLETELY TYPE-SAFE
12:46:07 <kallisti> though later I might add a String field to Bound so that I can write better output
12:46:10 <kallisti> oerjan: it is now
12:46:24 <kallisti> I switched LCAbs LCExpr LCExpr to LCAbs String LCExpr
12:46:59 <oerjan> ooh
12:48:21 -!- cheater has joined.
12:54:12 -!- oerjan has quit (Quit: Later).
12:54:40 -!- cheater has quit (Read error: Connection reset by peer).
12:58:21 <Phantom_Hoover> "You could argue that Donald Knuth is a mathematician." — someone in /r/math.
12:58:40 <Ngevd> Who was Knuth again?
13:04:51 <itidus21> lol
13:05:20 <itidus21> knuth wrote the art of computer programming and invented some kind of up arrow notation
13:05:28 <itidus21> i dunno what else
13:05:32 <itidus21> also tex
13:05:38 <itidus21> latex
13:06:30 -!- Phantom__Hoover has joined.
13:07:56 <Sgeo_> Will elliott start yelling at me if I start writing code with conduits?
13:08:34 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:08:36 <itidus21> wiki says he is a mathematician, computer scientist, programming language designer, typographer, donald knuth, writer, pioneer, academic and combinatorialist
13:09:07 <Phantom__Hoover> Anyone arguing that he's not a mathematician is an idiot.
13:09:17 <Phantom__Hoover> What he does is unquestionably mathematics.
13:09:21 <itidus21> donald knuth is in the category donald knuth
13:09:29 <itidus21> @_@
13:09:31 <Ngevd> Wow, he is!
13:09:35 <Phantom__Hoover> He is the Platonic essense of Donald Knuth.
13:09:42 <Phantom__Hoover> *essence
13:12:24 <Ngevd> Samoa, always on the winners' side of the international date line
13:12:55 <Phantom__Hoover> Isn't there only one side of the international dateline?
13:12:59 <Phantom__Hoover> *date line
13:13:55 <Ngevd> Not if you treat the world as two roughly hemispherical bodies, connected at the Greenwich median and the international date line
13:14:41 <Phantom__Hoover> Ah, but then you're defining which side of the international date line you're on based on a second line.
13:15:28 <Ngevd> Yes, which, when taken with the mean international date line, forms a great circle
13:15:33 <Ngevd> s/median/meridian/
13:19:14 -!- sebbu has quit (Ping timeout: 240 seconds).
13:23:42 -!- Phantom__Hoover has quit (Remote host closed the connection).
13:23:54 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
13:24:16 -!- Phantom_Hoover has joined.
13:31:09 -!- derdon has joined.
13:34:10 -!- sebbu has joined.
14:10:34 -!- Ngevd has quit (Ping timeout: 248 seconds).
14:23:23 -!- Ngevd has joined.
14:23:56 -!- Ngevd has quit (Client Quit).
14:32:21 -!- Patashu has quit (Ping timeout: 252 seconds).
15:09:41 -!- Ngevd has joined.
15:10:13 <Ngevd> Well, my "annoying elliott" version of my genealogy program is off to a... start
15:12:53 <Ngevd> Also, hello!
15:13:06 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
15:15:06 -!- elliott has joined.
15:20:26 <elliott> helo
15:20:41 <Ngevd> Hello
15:21:32 <Ngevd> For the record, I meant version for the purpose of annoying elliott, not version which is for elliott who is annoyin
15:21:33 <Ngevd> g
15:26:58 <elliott> 09:48:49: <kallisti> I used to make arrow instances, then I took an arrow to the knee.
15:27:01 <elliott> kallisti: cease breathing
15:28:53 <elliott> 10:22:45: <Sgeo_> Is there a better way to do it without list comprehensions?
15:29:08 <elliott> Sgeo_: concatMap (maybe mzero pure) :p
15:29:28 <elliott> 10:28:08: <monqy> :t concatMap maybeToList
15:29:29 <elliott> 10:28:08: <lambdabot> forall b. [Maybe b] -> [b]
15:29:29 <elliott> also that
15:29:37 <elliott> those are what the list comprehension reduces to
15:29:59 <elliott> 09:55:44: <kallisti> oerjan: hi http://sprunge.us/FgOU
15:30:14 <elliott> @ask kallisti why TF are you doing substitution. half the point of de bruijn is that you can just carry an argument stack
15:30:14 <lambdabot> Consider it noted.
15:33:07 <Sgeo_> @src concatMaybe
15:33:08 <lambdabot> Source not found. My pet ferret can type better than you!
15:33:09 <Sgeo_> @src concatMaybes
15:33:09 <lambdabot> Source not found. Have you considered trying to match wits with a rutabaga?
15:33:15 <Sgeo_> @src catMaybes
15:33:16 <lambdabot> catMaybes ls = [x | Just x <- ls]
15:33:32 <Sgeo_> @undo (\ls -> [x | Just x <- ls]
15:33:32 <lambdabot> Unbalanced parentheses
15:33:35 <Sgeo_> @undo (\ls -> [x | Just x <- ls])
15:33:35 <lambdabot> (\ ls -> concatMap (\ a -> case a of { Just x -> [x]; _ -> []}) ls)
15:43:22 <elliott> 12:00:02: <Sgeo_> If I take what he said literally, he's wrong
15:43:23 <elliott> 12:00:11: <Sgeo_> "00:00:56: <elliott> Sgeo: For one apparently you have to be in IO and use mutable variables to maintain any kind of internal state but it's ok because you're going to be in IO all the time anyway!
15:43:23 <elliott> 12:00:11: <Sgeo_> "
15:43:23 <elliott> 12:00:17: <Sgeo_> conduits work with ST
15:43:39 <elliott> Sgeo_: yes, because storing all state in STRefs is so much better. all my haskell programs live in ST and use STRefs as locals.
15:43:53 <elliott> oh, and of course you can't use the ST stuff with any stream from the real world ever
15:45:49 <elliott> 12:24:51: <kallisti> oerjan: I've seen elliott use LR to mean left recursion therefore it is totally legit. :P
15:45:52 <elliott> while hallucinating perhaps
15:52:44 -!- MSleep has changed nick to MDude.
15:57:11 <kallisti> http://i.imgur.com/Ayb5T.jpg
15:57:12 <lambdabot> kallisti: You have 2 new messages. '/msg lambdabot @messages' to read them.
15:57:17 <kallisti> at first I thought it was urine
15:57:19 <kallisti> but then
15:57:25 <kallisti> I realized it was far worse.
16:12:17 <elliott> Holy shit, this feature request is the most mammoth thing ever.
16:12:31 <Ngevd> For what is the feature request for?
16:12:38 <elliott> You know it's bad when you end up with bulleted lists and subheadings.
16:12:42 <elliott> Ngevd: https://github.com/HeinrichApfelmus/reactive-banana/issues/22
16:14:15 -!- derdon has quit (Remote host closed the connection).
16:34:30 <kallisti> elliott: ar...ar...argument stack?
16:35:16 <kallisti> I think that might break my do-one-beta-reduction-at-a-time-with-no-state-inbetween model, unless I wrap the DBForm type into a type with an added stack.
16:36:14 <Ngevd> elliott, that's quite some feature request, reply, and reply to the reply
16:37:33 <elliott> kallisti: The term you're looking for is small-step.
16:39:37 <kallisti> ah.
16:40:09 <Ngevd> Wikipedia: '"Pimply-faced youth" redirects here. For youths who have pimples, see Puberty.'
16:41:06 <kallisti> anyway the main purpose of this, if there even was one, was to show successive beta reductions. I'm guessing this is still possible with an argument stack but I haven't really thought much on how it would work.
16:41:22 <kallisti> because, I'm mid-going-back-to-sleep
17:01:26 <quintopia> i've discovered how to make the world a friendlier place
17:01:50 <quintopia> any time one would use the word "fuck", one uses "hug" instead
17:01:50 <Ngevd> Kill people?
17:02:00 <Ngevd> That's a hugging awful idea.
17:02:01 <Ngevd> Hug, man
17:02:13 <elliott> go hug yourself
17:02:17 <quintopia> it's hugging great
17:03:05 <quintopia> elliott: you can just hug off, you bastard
17:03:52 <Ngevd> quintopia, I think if this idea is put into practice it would just bring down the word "hug"
17:04:11 <quintopia> that would be gay
17:05:26 <augur> no no having sex with people of the same gender would be gay
17:06:09 <Ngevd> with /only/ people of the same gender
17:06:25 <quintopia> once upon a time, so would be decking the halls and making the yuletide merry
17:06:26 <elliott> ngevd doesn't huga nyone
17:06:30 <elliott> *anyone
17:06:30 <quintopia> but not anymore
17:09:26 -!- augur has quit (Remote host closed the connection).
17:24:19 <Phantom_Hoover> hug
17:26:37 <elliott> You can't say hug in #jesus.
17:27:02 <Ngevd> How about #god?
17:28:47 <elliott> more like #dog!!!
17:28:50 <kallisti> :)
17:28:52 <kallisti> ::P
17:28:55 <kallisti> ::::)
17:28:59 <kallisti> :>:+
17:29:53 -!- bitc has joined.
17:31:49 <elliott> `welcome bitc
17:31:52 <HackEgo> bitc: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:31:58 * elliott wonders if bitc is using an IRC client written in Bit-C.
17:32:52 <bitc> nope :)
17:37:27 <elliott> lame!
17:37:44 <Ngevd> So, what brings you to this neck of the web, bic?
17:37:46 <Ngevd> *bitc
17:37:50 <elliott> In the future we'll buy software written in Bit-C with bitcoins and then proceed to bitch about it.
17:38:02 <elliott> Also every word will inexplicably start with bitc.
17:38:55 <Ngevd> bitchug, that would be crazy!
17:39:40 <bitc> i am looking for the language with no predefined tokens at all.
17:39:43 <kallisti> Let's take a little break from math now and examine the Von Neumann construct from a philosophical/metaphysical perspective. The Von Neumann construction is amazing in the sense that it requires only 3 elements: {"0","{","}"}. 0 is ultimately connected with emptiness and nothingness, a very basic characteristic of the universe. The two other symbols, "{" and "}" are ultimately connected with the properties of consciousness,
17:39:49 <kallisti> loooooooool
17:40:10 <itidus21> i tried to make 0xHAM work but i couldn't
17:40:17 <kallisti> In a sense the first step of creation is consciousness "recognizing" the vast emptiness of space. As soon as this happens, the emptiness "separates" into "something" (that which has perceived the emptiness) and the emptiness itself. As soon as we have two things, a boundary is created: The 3rd element. The sequence thus is:
17:40:23 <kallisti> this is great.
17:40:39 <kallisti> (from: http://ioannis.virtualcomposer2000.com/math/Naturals.html)
17:41:23 <Ngevd> bitc, remind me, what is a predefined token?
17:41:29 <Ngevd> I'm not good at these words
17:41:41 <itidus21> sounds like chinese philosophy
17:41:59 <Ngevd> itidus21, you're on the wrong #esoteric
17:42:21 <itidus21> or am i
17:42:25 <itidus21> dun dun dunnnn
17:43:23 <itidus21> so i click the link and see a yin yang...
17:43:31 <itidus21> why am i not surpised
17:43:52 <bitc> Ngevd, that is a keyword or any fixed sequence of bits with meaning associated with them before beginning to write the program. for example the = sign (which makes us all think of the same thing), the while keyword or any \" signed string literal..
17:44:05 <Ngevd> Ah, one of those
17:44:07 <itidus21> note 7: Tao Te Ching: (tr. Mair 1990:9): "The Way (nothingness) gave birth to unity (God), Unity gave birth to duality (Firstborn), Duality gave birth to trinity, Trinity gave birth to the myriad creatures.".
17:44:31 <Ngevd> bitc, Unnecassary?
17:44:33 <itidus21> and note 9: Tao Te Ching, Chapter 42: "Tao begets one; one begets two; two begets three; three begets all things.".
17:45:06 <bitc> Ngevd, i think so
17:48:05 <elliott> bitc: Well, if you don't want semantics, you'll have a hard time finding a language :)
17:48:23 <elliott> However, Feather is like that.
17:48:34 <elliott> (And for once I'm not joking when I say that...)
17:48:48 <Ngevd> You'll have a hard time finding Feather
17:49:12 <itidus21> Ngevd: i guess you're right.. wrong esoteric
17:49:16 <bitc> Ngevd, gotta go building the time machine..
17:49:54 <elliott> bitc: Forth may interest you, though.
17:50:28 <elliott> In that Forth's initial semantics are very trivial, and language constructs are implemented by completely taking over the parser.
17:51:41 <Ngevd> I can never remember if Forth is an actual esoteric language
17:52:01 <kallisti> > map (x -> read (replicate x "1") ^ 2) [1..]
17:52:02 <lambdabot> Pattern syntax in expression context:
17:52:02 <lambdabot> x -> read (replicate x "1") ^ 2
17:52:07 <kallisti> > map (\x -> read (replicate x "1") ^ 2) [1..]
17:52:07 <lambdabot> Couldn't match expected type `GHC.Types.Char'
17:52:08 <lambdabot> against inferred type...
17:52:22 <kallisti> oh
17:52:30 <kallisti> > map (\x -> read (replicate x '1') ^ 2) [1..]
17:52:31 <lambdabot> [1,121,12321,1234321,123454321,12345654321,1234567654321,123456787654321,12...
17:53:43 <kallisti> > inits [1,2,3]
17:53:44 <lambdabot> [[],[1],[1,2],[1,2,3]]
17:54:30 <Ngevd> > read (replicate 11 '1') ^ 2
17:54:31 <lambdabot> 123456790120987654321
17:55:03 <kallisti> heh, nice.
17:55:09 <kallisti> it starts over in the middle.
17:55:51 <Ngevd> > read (replicate 10 '1') ^ 2
17:55:52 <lambdabot> 1234567900987654321
17:56:04 <Ngevd> Just as I thought... the 10 carrie
17:56:05 <Ngevd> s
17:56:54 <kallisti> @hoogle Int -> Char
17:56:54 <lambdabot> Data.Char chr :: Int -> Char
17:56:55 <lambdabot> Data.Char intToDigit :: Int -> Char
17:56:55 <lambdabot> Data.Text index :: Text -> Int -> Char
17:57:23 <Ngevd> > intToDigit 11
17:57:24 <lambdabot> 'b'
17:57:29 <Ngevd> > intToDigit 17
17:57:30 <lambdabot> *Exception: Char.intToDigit: not a digit 17
17:57:33 <Ngevd> > intToDigit 16
17:57:34 <lambdabot> *Exception: Char.intToDigit: not a digit 16
17:57:36 <Ngevd> > intToDigit 15
17:57:37 <lambdabot> 'f'
17:58:19 <kallisti> > map (\x (read $ map intToDigit [1..x]) * 9 + x + 1 -> ) [1..]
17:58:20 <lambdabot> <no location info>: Parse error in pattern
17:58:26 <kallisti> > map (\x -> (read $ map intToDigit [1..x]) * 9 + x + 1 -> ) [1..]
17:58:27 <lambdabot> <no location info>: parse error on input `)'
17:58:33 <kallisti> > map (\x -> (read $ map intToDigit [1..x]) * 9 + x + 1) [1..]
17:58:34 <lambdabot> [11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,*Exception:...
17:59:10 <kallisti> > map (\x -> (read $ map intToDigit [0..x]) * 9 + x + 1) [0..]
17:59:11 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,*Exceptio...
17:59:54 <Ngevd> With coin flips, I generally say "edge", as I normally don't care about the outcome, and if it lands edge it'd be awesome
18:00:57 <kallisti> > map (\x -> (read . take x $ cycle ['0'..'9']) * 9 + x) [1..]
18:00:59 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,111111110...
18:01:14 <kallisti> hmmm I'm not sure how to repeat the pattern
18:02:10 <kallisti> > map (\x -> (read . take x $ cycle (['0'..'9']++['9'..'0']) * 9 + x) [1..]
18:02:11 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
18:02:16 <kallisti> > map (\x -> (read . take x $ cycle (['0'..'9']++['9'..'0'])) * 9 + x) [1..]
18:02:18 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,111111110...
18:02:55 <kallisti> > map (\x -> (read . take x $ cycle (['0'..'9']++"0")) * 9 + x) [1..]
18:02:56 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,111111110...
18:02:59 <kallisti> hm, no.
18:03:35 <kallisti> maybe you can't?
18:03:42 <kallisti> not with this method.
18:04:53 <kallisti> > 1234567890 * 9
18:04:54 <lambdabot> 11111111010
18:05:00 <kallisti> > 1234567890 * 9 + 11
18:05:00 <lambdabot> 11111111021
18:05:07 <kallisti> > 12345678910 * 9 + 11
18:05:08 <lambdabot> 111111110201
18:05:09 <kallisti> lol
18:05:16 <kallisti> > 1234567891 * 9 + 11
18:05:17 <lambdabot> 11111111030
18:05:28 <Ngevd> > 123456789- * 9 + 101
18:05:30 <lambdabot> <no location info>: parse error on input `*'
18:05:35 <Ngevd> > 1234567890 * 9 + 101
18:05:36 <lambdabot> 11111111111
18:05:42 <kallisti> oh hm
18:06:42 <kallisti> so I'm just missing part of the formula
18:08:58 <kallisti> > 11111111111 - (101-11)
18:08:59 <lambdabot> 11111111021
18:09:29 <kallisti> > 11111111111 - 101
18:09:30 <lambdabot> 11111111010
18:09:38 <kallisti> > (11111111111 - 101) / 9
18:09:39 <lambdabot> 1.23456789e9
18:09:56 <kallisti> ...yes, indeed
18:10:08 <kallisti> > (11111111111 - (101-11)) / 9
18:10:09 <lambdabot> 1.2345678912222223e9
18:10:17 <Ngevd> > let f 1 = 1; f n = 10 * (f (n - 1)) + 1 in map f [1..]
18:10:18 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,111111111...
18:10:36 <kallisti> I..
18:10:40 <kallisti> cheater.
18:10:58 <Ngevd> I was never told the rules
18:11:05 <kallisti> I don't even know the rules
18:11:11 <kallisti> the rules were to continue the above pattern.
18:11:14 <kallisti> I guess.
18:11:32 <kallisti> 1 * 9 + 2 = 11
18:11:33 <Ngevd> > let f 1 = 1; f n = 10 * (f (n - 1)) + 1 in map ((^2) . f) [1..]
18:11:35 <lambdabot> [1,121,12321,1234321,123454321,12345654321,1234567654321,123456787654321,12...
18:11:38 <kallisti> 12 * 9 + 3 = 111
18:11:46 <kallisti> 123 * 9 + 4 = 1111
18:11:48 <kallisti> etc
18:12:04 <kallisti> oh duh
18:12:07 <Ngevd> > 123456789 * 9 + 9
18:12:09 <lambdabot> 1111111110
18:12:13 <Ngevd> > 123456789 * 9 + 10
18:12:14 <lambdabot> 1111111111
18:12:28 <kallisti> 123456789 * 10 + 10
18:12:28 <Ngevd> > 1234567990 * 9 + 11
18:12:30 <lambdabot> 11111111921
18:12:42 <kallisti> > 123456789 * 10 + 10
18:12:43 <lambdabot> 1234567900
18:12:45 <Ngevd> > 12345678900 * 9 + 11
18:12:46 <lambdabot> 111111110111
18:12:54 <Ngevd> > 1234567900 * 9 + 11
18:12:55 <lambdabot> 11111111111
18:13:17 <Ngevd> > 12345679011 * 9 + 12
18:13:18 <lambdabot> 111111111111
18:13:29 <Ngevd> > 123456790123 * 9 + 13
18:13:30 <lambdabot> 1111111111120
18:13:47 <Ngevd> > 123456790122 * 9 + 12
18:13:48 <lambdabot> 1111111111110
18:13:51 <Ngevd> > 123456790122 * 9 + 13
18:13:53 <lambdabot> 1111111111111
18:14:04 <Ngevd> > 1234567901233 * 9 + 14
18:14:05 <lambdabot> 11111111111111
18:14:10 <kallisti> hm, okay.
18:14:10 <Ngevd> > 12345679012344 * 9 + 15
18:14:11 <lambdabot> 111111111111111
18:14:17 <Ngevd> > 123456790123455 * 9 + 16
18:14:18 <lambdabot> 1111111111111111
18:14:39 <kallisti> I don't feel like coding that. :P
18:14:43 <Ngevd> I do
18:15:00 <kallisti> > 1234567890123456789000 * 9
18:15:01 <lambdabot> 11111111011111111101000
18:15:45 <kallisti> > 123456789012345678900 * 9 + 19
18:15:46 <lambdabot> 1111111101111111110119
18:15:48 <kallisti> > 123456789012345678900 * 9
18:15:49 <lambdabot> 1111111101111111110100
18:15:52 <kallisti> hm
18:16:10 <kallisti> > 1234567890123455 * 9 + 16
18:16:11 <lambdabot> 11111111011111111
18:16:36 <kallisti> uh what am I doing wrong.
18:16:45 <fizzie> The 8.
18:16:48 <kallisti> oh.
18:17:00 <kallisti> the 8 decides to disappear for some reason
18:17:04 <kallisti> I NO LONGER LIKE THIS DIGIT SEQUENCE
18:17:52 <Ngevd> > let f 0 = 1; f n = 10 * (f (n - 1)) + n in map f [0..]
18:17:53 <lambdabot> [1,11,112,1123,11234,112345,1123456,11234567,112345678,1123456789,112345679...
18:18:07 <Ngevd> > 12 * 9 + 3
18:18:09 <lambdabot> 111
18:18:17 <Ngevd> > let f 1 = 1; f n = 10 * (f (n - 1)) + n in map f [1..]
18:18:18 <lambdabot> [1,12,123,1234,12345,123456,1234567,12345678,123456789,1234567900,123456790...
18:18:41 <kallisti> Ngevd: working with the base directly, must be nice.
18:18:43 <kallisti> (cheater)
18:19:52 <kallisti> > 123456789 * 8 + 9
18:19:53 <lambdabot> 987654321
18:20:54 <kallisti> ah, I see why the 8 disappears now.
18:21:53 <kallisti> > 1234567900 * 8 + 9
18:21:54 <lambdabot> 9876543209
18:22:10 <kallisti> > 1234567890 * 8 + 9
18:22:11 <lambdabot> 9876543129
18:22:13 <Ngevd> > let f n = read (replicate n '1') - n `div` 9 in map f [1..]
18:22:14 <lambdabot> [1,11,111,1111,11111,111111,1111111,11111111,111111110,1111111110,111111111...
18:22:35 <Ngevd> > let f n = read (replicate n '1') - n + 1 `div` 9 in map f [1..]
18:22:37 <lambdabot> [0,9,108,1107,11106,111105,1111104,11111103,111111102,1111111101,1111111110...
18:22:56 <Ngevd> > let f n = (read (replicate n '1') - n) `div` 9 in map f [1..]
18:22:57 <lambdabot> [0,1,12,123,1234,12345,123456,1234567,12345678,123456789,1234567900,1234567...
18:23:55 <kallisti> I like the palindrome one.
18:24:42 <kallisti> > (^2) . read . flip replicate '1' <$> [1..]
18:24:44 <lambdabot> [1,121,12321,1234321,123454321,12345654321,1234567654321,123456787654321,12...
18:25:29 <Ngevd> > (^2) . read . flip replicate '1' <$> [12]
18:25:31 <lambdabot> [12345679012320987654321]
18:25:51 <kallisti> and once again the 8 disappears
18:25:52 <kallisti> damn you base 10
18:28:13 -!- oerjan has joined.
18:28:50 <kallisti> oerjan: hi
18:28:52 <kallisti> > (^2) . read . flip replicate '1' <$> [1..]
18:28:54 <lambdabot> [1,121,12321,1234321,123454321,12345654321,1234567654321,123456787654321,12...
18:28:56 <kallisti> how do you fix this so that
18:29:01 <kallisti> it continues being awesome
18:29:07 <kallisti> > (^2) . read . flip replicate '1' <$> [10..]
18:29:09 <lambdabot> [1234567900987654321,123456790120987654321,12345679012320987654321,12345679...
18:29:12 <kallisti> :(
18:29:38 <Phantom_Hoover> "It should be done away with in my opinion. Do you realize how many foreigners with immunity get away with terrible crimes such as murder? It is appalling. You can bet if an american commited a crime on foreign soil they would be punished. America is just too soft on criminals domestic or otherwise."
18:29:54 <Phantom_Hoover> The thing this person is shooting their mouth off about is /diplomatic immunity/.
18:30:27 <elliott> Phantom_Hoover: X-D
18:30:35 <elliott> The famous policy where we invite diplomats over for killing sprees.
18:31:03 <Phantom_Hoover> The famous policy where we consider any foreigner a diplomat and are surprised when noöne else does this.
18:31:06 <elliott> "The car on the right is double parked. Since it has Diplomatic License Plates, the driver would not be obliged to pay any citation issued." --[[Diplomatic immunity]]
18:31:16 <elliott> I want one of those license plates.
18:31:28 <Phantom_Hoover> Cracked has an article on this.
18:31:31 <elliott> "Illustrating how widespread this problem is that in France, between November 2003 and 2004, there were 2,590 cases of diplomatic cars caught speeding by automatic radars. The Autobahn 555 in Cologne, Germany was nicknamed the "Diplomatenrennbahn" (Diplomatic Raceway), back when Bonn was the capital of West Germany, because of the numerous diplomats that used to speed through the highway under diplomatic immunity."
18:31:32 <elliott> holy shit
18:31:35 <elliott> this is amazing?
18:31:44 <Phantom_Hoover> "Take the Libyan embassy worker in London who, in April 1984, decided to open fire at a mob of anti-Gadhafi protesters outside his embassy, fatally wounding a police officer and injuring 10 others. The police laid siege to the embassy for 11 days, at which point the government stepped in, allowed the ambassador and his staff to leave the premises -- and promptly kicked them out of the country, with a nice long fuck you t
18:31:44 <Phantom_Hoover> o take back to Gadhafi. The countries' diplomatic relations were torn apart, but no one was ever convicted of the shootings."
18:32:00 <elliott> ...wow.
18:32:16 <Phantom_Hoover> I note that this was not a case of getting away with it due to diplomatic immunity; instead, it's just a "normal criminal proceedings weren't followed".
18:34:33 <oerjan> <elliott> The famous policy where we invite diplomats over for killing sprees. <-- i hear vlad tepes had a penchant for this.
18:34:51 <Phantom_Hoover> http://en.wikipedia.org/wiki/Vlad_tepes
18:34:59 <Phantom_Hoover> OMG I did not realise he looked like that.
18:39:34 <oerjan> <Ngevd> Not if you treat the world as two roughly hemispherical bodies, connected at the Greenwich median and the international date line
18:39:50 <oerjan> suggestion: get great britain to move across the international date line
18:41:22 <oerjan> <Ngevd> For the record, I meant version for the purpose of annoying elliott, not version which is for elliott who is annoyin <-- yeah those are easy to confuse
18:41:51 <Ngevd> I am in the Western hemisphere, so I'd end up a day ahead
18:41:58 <oerjan> 15:26:58: <elliott> 09:48:49: <kallisti> I used to make arrow instances, then I took an arrow to the knee.
18:42:01 <oerjan> 15:27:01: <elliott> kallisti: cease breathing
18:42:16 <Ngevd> I used to breath, but then I took an arrow to the lung
18:42:31 <oerjan> i feel so left out, i only get to know this meme _after_ everyone is fed up with it.
18:42:37 <elliott> :D
18:43:02 <oerjan> elliott: hey are you laughing at me or Ngevd, this is important
18:43:18 <oerjan> also *breathe
18:43:26 <Ngevd> Bah
18:43:49 <elliott> oerjan: you
18:43:53 <oerjan> yay
18:43:55 <elliott> ngevd am dum
18:44:00 * oerjan does a little victory dance
18:44:45 <oerjan> admittedly it _is_ possible everyone was fed up with this meme from its birth
18:44:57 <oerjan> well fsvo everyone
18:45:47 <oerjan> i used to be good at haskell, but then i took an arrow to m'nads
18:46:11 * elliott has set mode +o elliott
18:46:16 * elliott has set mode +b oerjan*!*@*
18:46:24 * elliott has kicked oerjan (I hate you and everything you stand for.)
18:46:47 <oerjan> why thank you, i'll be here all week except when my router croaks
18:47:35 <elliott> It's like that wossname in h2g2 where the wossname body part killed the wossname poet. Phantom_Hoover will remember.
18:47:56 <kallisti> http://en.wikipedia.org/wiki/File:Accidents.png
18:48:15 <oerjan> ah yes the second worst poet in the universe
18:49:51 <elliott> > (maxBound - minBound)
18:49:52 <lambdabot> Ambiguous type variable `a' in the constraints:
18:49:53 <lambdabot> `GHC.Num.Num a'
18:49:53 <lambdabot> ari...
18:50:05 <elliott> > (maxBound - minBound) :: Int
18:50:06 <lambdabot> -1
18:50:11 <elliott> darn.
18:50:13 <elliott> er wait
18:50:15 <elliott> > (maxBound - minBound) :: Word
18:50:16 <lambdabot> 18446744073709551615
18:50:21 <elliott> > maxBound :: Word
18:50:22 <lambdabot> 18446744073709551615
18:50:31 <elliott> right, ofc
18:50:32 <kallisti> elliott: I only used it because I felt the punniness warranted it.
18:50:33 <elliott> bu t hmm
18:50:37 <elliott> > (maxBound - minBound) :: Int8
18:50:37 <lambdabot> -1
18:50:39 <elliott> > minBound :: Int8
18:50:40 <lambdabot> -128
18:50:41 <elliott> > maxBound :: Int8
18:50:42 <lambdabot> 127
18:51:00 <elliott> > 127 - (-128)
18:51:01 <lambdabot> 255
18:51:13 <elliott> right.
18:51:27 <kallisti> and here elliott learns about one's complement.
18:51:30 * kallisti ahems.
18:52:17 <oerjan> O_o
18:53:43 <oerjan> *chirp*
18:53:53 <kallisti> lol
18:54:19 <oerjan> kallisti: you might want to check your terminology.
18:54:26 <Ngevd> Could someone explain Monads?
18:54:33 <kallisti> oerjan: why?
18:54:34 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
18:54:36 <Ngevd> I want to learn them next
18:54:53 <oerjan> kallisti: it's not _one's_ complement
18:54:53 <kallisti> Ngevd: m >>= f = join (fmap f m)
18:54:54 <fizzie> kallisti: Now you broke him.
18:55:01 <kallisti> there that's monads.
18:55:16 <Ngevd> oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
18:55:53 <oerjan> Ngevd: well monads are a bit like vestlandslefse
18:56:26 <kallisti> oerjan: well yes, it's not. I guess two's complement would have made more sense, but I was implying that one's complement is what elliott seemed to expect.
18:56:36 <kallisti> perhaps I... did that wrong. :P
18:56:56 <kallisti> Ngevd: there, do you get monads now>
18:57:04 <Ngevd> Not... really
18:57:14 <kallisti> good.
18:57:47 <kallisti> another way to think about it would be:
18:57:50 <elliott> > ((-128) + 127) / 2
18:57:51 <lambdabot> -0.5
18:57:55 <kallisti> join m = m >>= id
18:58:12 <kallisti> but that's probably not the direction you want to go.
18:58:16 <kallisti> when starting out.
18:58:25 <elliott> Ngevd: you have learn you a haskell, right?
18:58:26 <oerjan> `? monad
18:58:29 <HackEgo> Monads are just monoids in the category of endofunctors.
18:58:30 <elliott> it explains monads
18:58:43 <elliott> don't try to understand them before reading the previous chapters, it's just a waste of time since your knowledge won't be up to it yet
18:58:48 <elliott> once you do get there they'll be trivial
18:59:05 -!- iconmaster has joined.
18:59:09 <Ngevd> I like the sound of the voice my brain assigns oerjan
18:59:43 <kallisti> Ngevd: think of monads as burritos
18:59:56 <Ngevd> What's a burrito again?
19:00:02 <kallisti> ...wat
19:00:06 <kallisti> do..
19:00:07 <kallisti> are
19:00:25 <kallisti> do british people not have burritos?
19:00:39 <Ngevd> We probably do, but Hexham's pretty damn remote
19:00:51 <Ngevd> The nearest Mexican restaurant is 21 miles away
19:01:22 <oerjan> ok, think of monads as haggis
19:01:33 <Ngevd> I know what haggis is
19:01:37 <kallisti> what
19:01:38 <elliott> trolling people with joke monad explanations is not really helpful if they don't already know what a monad is.
19:01:51 <kallisti> elliott: it's not hurtful either.
19:01:54 <Ngevd> The nearest Scottish restaurant is right here
19:01:56 <elliott> sure it is.
19:01:59 <Ngevd> I'm enjoying this
19:02:00 <kallisti> maybe if they're stupid.
19:02:17 <kallisti> they'll try to apply their logic of burritos to monads.
19:02:18 <kallisti> or something.
19:02:34 <elliott> kallisti: awesome, that gives me one (1) free card to call you stupid the next time you make a mistake
19:02:37 <oerjan> ok, think of monads as haggis in a spacesuit in the middle of the ocean
19:02:41 <elliott> what now oerjan
19:02:49 <kallisti> elliott: do you need anymore of those cards?
19:02:55 <kallisti> I think you have enough.
19:02:56 <elliott> oerjan confiscated them
19:03:10 <kallisti> Ngevd: Hexham isn't... remote
19:03:16 <kallisti> it has a substantial population
19:03:30 <kallisti> even my town has a mexican restaurant. YOUR COUNTRY IS WRONG.
19:03:31 <Ngevd> kallisti, it's remote in terms of Mexican restaurants
19:03:32 <elliott> hexham is in the texan desert
19:03:45 <Ngevd> We have at least two Italian restaurants
19:03:51 <kallisti> we have one I think
19:03:56 <kallisti> and a pizza place, if that counts (it doesn't)
19:03:58 <Ngevd> And a Greek restaurant
19:04:02 <kallisti> nope
19:04:03 <Phantom_Hoover> I agree, Hexham definitely isn't remote.
19:04:04 <Ngevd> And a French restaurant
19:04:06 <kallisti> nope
19:04:17 <kallisti> French people have food? why haven't we Americanized it yet.
19:04:23 <fizzie> I don't think there's a Mexican place in the similarly sized "city" in Finland I know of.
19:04:31 <kallisti> these are sad statements
19:04:32 <kallisti> sad cities.
19:04:54 <kallisti> do Spanish people not eat burritos?
19:04:59 <kallisti> I guess not.
19:05:00 <Phantom_Hoover> <oerjan> ok, think of monads as haggis
19:05:13 <Phantom_Hoover> They're horrible, but everyone pretends to like them to save face?
19:05:51 <kallisti> you guys are so easily traumatized by programming concepts. There's a lot of "horrible" and "bad" things, apparently.
19:06:01 <kallisti> even though... monads aren't really all that horrible?
19:06:05 <Ngevd> http://goo.gl/lMdak
19:06:22 <fizzie> This is their main "restaurant": http://www.tinatahti.fi/index.php?pinc=3 -- yes, it's the "Photos" page, and it's empty.
19:06:29 * oerjan swats Ngevd for using url shorteners -----###
19:06:37 <Ngevd> It's a bloodly long URL!
19:06:40 -!- Ngevd has quit (Quit: dinner).
19:07:14 <kallisti> oerjan: what's wrong with URL shorteners?
19:07:34 <kallisti> @tell Ngevd http://g.co/maps/5h4nd
19:07:38 <oerjan> Phantom_Hoover: precisely!
19:07:59 <kallisti> fizzie: lol
19:08:02 <kallisti> lazy bastards
19:08:03 <oerjan> kallisti: you cannot easily see where they lead
19:08:24 <kallisti> oerjan: sorry next time I'll paste http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&geocode=&q=restaurant+in+hexham&aq=&sll=53.800651,-4.064941&sspn=14.745606,43.286133&vpsrc=0&ie=UTF8&start=0&hq=restaurant&hnear=Hexham,+Northumberland,+United+Kingdom&t=m&z=16
19:08:33 <fizzie> That's like, less than 512 characters.
19:08:36 <fizzie> Not long by any means.
19:08:54 -!- HackEgo has quit (*.net *.split).
19:08:56 <lambdabot> Consider it noted.
19:08:56 -!- bitc has quit (Quit: Page closed).
19:08:57 <elliott> <oerjan> kallisti: you cannot easily see where they lead
19:09:02 <elliott> and they're fragile. although i admit goo.gl will probably not die any time soon
19:09:30 <fizzie> goo.gl follows the "+ convetion" of put-a-+-at-the-end-and-you'll-get-a-page-with-the-expansion, but that's one extra step to take.
19:09:33 -!- TeruFSX_ has quit (Ping timeout: 244 seconds).
19:10:00 <elliott> That's a convention?
19:10:17 <fizzie> Well, I think one of the others did it too.
19:11:10 <fizzie> bit.ly, at least.
19:13:57 <kallisti> fizzie: have you ever ate Mexican food?
19:14:01 <kallisti> is this like
19:14:07 <kallisti> a thing that you do.
19:14:10 <kallisti> sometimes.
19:14:57 <fizzie> Oh, there's quite many Mexican places *here*, just not in the comparable-to-Hexham-maybe-except-in-#esoteric-ness-and-many-other-things-I-guess place.
19:14:58 <elliott> fizzie: More like BIT TOO LIBYAN FOR ME.
19:15:30 <fizzie> They do run j.mp too; though maybe that's BIT TOO NORTHERN MARIANA ISLANDS FOR YOU.
19:15:44 <elliott> Yes, precisely.
19:15:59 <elliott> fizzie: *JUST TOO
19:16:09 <fizzie> Right, I sort of got that too late.
19:16:32 <elliott> We should outlaw URL shorteners.
19:17:16 <kallisti> "comparable-to-Hexham-maybe-except-in-#esoteric-ness-and-many-other-things-I-guess"
19:17:19 <kallisti> ...what?
19:18:03 <fizzie> I just mean it's got about as many people in it, but I don't think there's anyone doing #esoteric from there, while from Hexham we've got, what, hundreds of guys?
19:18:10 <fizzie> And gals.
19:18:23 <fizzie> And I guess it's a bit colder?
19:18:31 -!- xandy| has quit (*.net *.split).
19:18:31 -!- coppro has quit (*.net *.split).
19:18:31 -!- Zwaarddijk has quit (*.net *.split).
19:18:31 -!- ineiros has quit (*.net *.split).
19:18:41 -!- Slereah_ has quit (Read error: Connection reset by peer).
19:18:50 <kallisti> fizzie: what does that have to do with Mexican restaurants and eating at them..
19:19:00 <elliott> kallisti: To quote Italian physicist Noam Chomsky, "damn it feels good to be a gangsta".
19:19:20 <kallisti> elliott: ....
19:19:25 -!- itidus21 has quit (*.net *.split).
19:19:32 -!- Slereah_ has joined.
19:19:38 <kallisti> You forgot the rest of that quote
19:19:58 <kallisti> "A real gangsta-ass nigga plays his cards right"
19:20:58 <fizzie> kallisti: "<fizzie> I don't think there's a Mexican place in the similarly sized "city" in Finland I know of." See, just because they don't have Mexican restaurants doesn't mean what passes for civilization around here wouldn't have them.
19:21:21 -!- Ngevd has joined.
19:21:24 <Ngevd> Hello!
19:21:45 <elliott> fizzie: The interesting thing is that that place is actually Hexham.
19:21:53 <elliott> fizzie: Finland is topologically grafted to the UK.
19:21:58 -!- EgoBot has joined.
19:21:58 -!- HackEgo has joined.
19:21:58 -!- TeruFSX has joined.
19:21:58 -!- xandy| has joined.
19:21:58 -!- coppro has joined.
19:21:58 -!- Zwaarddijk has joined.
19:21:58 -!- ineiros has joined.
19:22:11 <elliott> Whenever anyone ends up in a really cold place, they just assume they've wandered into Scotland.
19:22:14 <elliott> (Ask Phantom_Hoover.)
19:22:19 -!- itidus21 has joined.
19:22:32 <elliott> As Scotland is uninhabitably bitter and ugly, they immediately turn round.
19:23:19 -!- Slereah_ has quit (*.net *.split).
19:23:19 -!- aloril has quit (*.net *.split).
19:23:19 -!- MDude has quit (*.net *.split).
19:23:19 -!- jix has quit (*.net *.split).
19:23:20 -!- Phantom_Hoover has quit (*.net *.split).
19:23:20 -!- mtve has quit (*.net *.split).
19:23:20 -!- lambdabot has quit (*.net *.split).
19:23:20 -!- sebbu has quit (*.net *.split).
19:23:20 -!- copumpkin has quit (*.net *.split).
19:23:20 -!- Madoka-Kaname has quit (*.net *.split).
19:23:20 -!- lifthrasiir has quit (*.net *.split).
19:23:20 -!- yiyus has quit (*.net *.split).
19:23:20 -!- SimonRC_ has quit (*.net *.split).
19:24:07 -!- Slereah_ has joined.
19:24:07 -!- sebbu has joined.
19:24:07 -!- Phantom_Hoover has joined.
19:24:07 -!- copumpkin has joined.
19:24:07 -!- Madoka-Kaname has joined.
19:24:07 -!- mtve has joined.
19:24:07 -!- aloril has joined.
19:24:07 -!- MDude has joined.
19:24:07 -!- jix has joined.
19:24:07 -!- lambdabot has joined.
19:24:07 -!- lifthrasiir has joined.
19:24:07 -!- yiyus has joined.
19:24:07 -!- SimonRC_ has joined.
19:24:31 <Phantom_Hoover> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
19:24:32 <Phantom_Hoover> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
19:24:36 * Phantom_Hoover sobs
19:25:14 <fizzie> Apparently it's actually just 0°C in Lieksa right now. But this has been a weird crazy-mild early-winter in Finland so far. Last November was in the top three warmest Novembers in the last 50 years.
19:25:17 <Phantom_Hoover> 19:22:11: <elliott> Whenever anyone ends up in a really cold place, they just assume they've wandered into Scotland.
19:25:34 <Phantom_Hoover> Funny, since it hasn't been particularly cold here for about a year.
19:26:09 <fizzie> And the September-November period was the warmest since 1938.
19:27:01 -!- Slereah_ has quit (Ping timeout: 257 seconds).
19:27:48 <elliott> Phantom_Hoover: he says, from inside his insulated Scottish space suit.
19:27:54 <elliott> (They're made out of cardboard.)
19:28:09 <Ngevd> It's because the annual high pressure front in Siberia which means that the Gulf of Mexico doesn't stop giving the UK heat hasn't developed
19:28:09 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
19:28:31 -!- iconmaster has quit (Quit: Ayup, this is a quit message.).
19:28:47 -!- Slereah_ has joined.
19:31:11 <fizzie> Normally the place looks like this: http://www.vastavalo.fi/albums/userpics/14685/normal_P1167142.jpg (Okay, not all of it; but the national park there is a popular spot for photos in winter-themed Christmas cards.)
19:32:21 <elliott> That's prettey.
19:32:29 <kallisti> fizzie: hmmm
19:32:35 <kallisti> ...my car windshield gets a little frosty here.
19:32:37 <kallisti> most winters.
19:33:10 <kallisti> sometimes it even snows!
19:33:43 <fizzie> http://en.wikipedia.org/wiki/Koli_National_Park -- I'm actually a bit surprised the Wikipedia article doesn't have a winter picture, I think it's an equally iconic sight.
19:34:03 <kallisti> `frink F[55] -> C
19:34:15 <fizzie> (Who keeps putting all these panoramic pictures in every Wikipedia article of a place ever?)
19:34:15 <HackEgo> 12.77777777777777778
19:34:25 <kallisti> current temp according to google
19:35:20 <Ngevd> `frink C[4] -> F
19:35:31 <HackEgo> 39.2
19:35:38 <Ngevd> ditto
19:38:41 <kallisti> fizzie: stop having a somewhat reasonable highway system.
19:38:55 <kallisti> http://upload.wikimedia.org/wikipedia/commons/1/1f/Map_of_Finland-en.svg
19:39:40 <fizzie> The "1st class roads", at least up north, might not quite be what you'd call "highways".
19:40:21 <fizzie> http://www2.liikennevirasto.fi/alk/kelikamerat/kamera-C1454101.html -- do you call this a highway?
19:41:14 <fizzie> (It's the red-yellow road from Map_of_Finland-en.svg near the "Inari" place up there in the north.)
19:41:16 <kallisti> does anyone actually live in north Norway?
19:42:02 <oerjan> yes, some people do.
19:42:11 <kallisti> fizzie: that's not too different from state highways near rural areas where I live.
19:42:15 <oerjan> (aka "most of my family")
19:42:27 <Ngevd> BUT NOBODY ELSE
19:42:48 <fizzie> http://en.wikipedia.org/wiki/Honningsv%C3%A5g -- 2367 family members of oerjan.
19:42:53 <Vorpal> kallisti, I think Assassin's Creed Revelations get repetitive after a while. It was fun for a few hours once I got the hang of the controls.
19:43:04 <Ngevd> Henxe "Johansenland"
19:43:19 <elliott> I am currently 132.387097 times better than kallisti and 195.428571 times better than Ngevd.
19:43:24 <Vorpal> oerjan, what does "Honningsvåg" mean?
19:43:25 <kallisti> Vorpal: that's a common complaint of the series, actually. Especially with the first game.
19:43:35 <Vorpal> oerjan, something wave or something scale?
19:43:35 <Ngevd> elliott, define "better"
19:43:57 <Vorpal> kallisti, hm
19:44:04 <Ngevd> Because I'm very negative on the megafonzie scale
19:44:11 <oerjan> Vorpal: i dunno, that's etymology
19:44:18 <oerjan> Vorpal: er wait
19:44:33 <kallisti> Vorpal: I always found it fun to play. But I never owned it I just played it occasionally on other people's consoles.
19:44:47 <oerjan> våg means, er, damn what's the english word
19:44:53 <elliott> vagina
19:44:53 <Vorpal> kallisti, it just lack variation. Parkour sure looks amazing but if it is just basically hold right-click w and space and tap shift every now and again...
19:44:54 <elliott> hth
19:45:02 <Vorpal> oerjan, wave? scale?
19:45:05 <kallisti> Vorpal: the second game had quite a bit more variety than the first, I think. I especially enjoyed the "assassin's tombs" which were basically especially difficult platformer-puzzles.
19:45:14 <Vorpal> oerjan, that is what våg means in Swedish
19:45:46 <oerjan> Vorpal: neither, those are bølge and vekt
19:45:51 <Vorpal> ah
19:45:59 <Vorpal> oerjan, so what is weight then?
19:46:06 <oerjan> Vorpal: oh it _can_ mean wave
19:46:10 <Vorpal> heh
19:46:13 <kallisti> Vorpal: I could see the slightly more cumbersome PC controls becoming monotonous.
19:46:15 <oerjan> Vorpal: vekt is
19:46:34 <Vorpal> oerjan, as well as scale?
19:46:41 <fizzie> oerjan: We just recently reserved one of these things ->http://www.rorbuer.no/en <- for three nights near next Easter.
19:46:59 <oerjan> Vorpal: but the relevant meaning for place names is "bay"
19:47:10 <Vorpal> kallisti, not sure I'm such a fan of platformer puzzles. Especially if they are in the dark. I had problems with that thing in a lighthouse in this game due to not being able to see clearly wtf was going on.
19:47:12 <oerjan> so, honey bay
19:47:30 <Vorpal> kallisti, like I couldn't see the dark grey ledge against the dark grey stone
19:47:38 <Vorpal> so I couldn't figure out where to jump
19:47:52 <oerjan> (btw i don't know that any of my family lives as far north as finnmark)
19:47:59 <Vorpal> oerjan, ah
19:48:07 <Vorpal> oerjan, which would be vik in Swedish
19:48:07 <kallisti> Vorpal: in the second game it was somewhat challenging to maintain a steady pass through the city without falling.
19:48:21 <Vorpal> hm
19:48:37 <kallisti> dunno I enjoyed it. But I didn't play it for hours.
19:48:39 <Vorpal> kallisti, also the city control mini game is just boring
19:48:45 <kallisti> no idea what that is.
19:48:47 <Vorpal> but you end up needing that income
19:48:48 <kallisti> must be new.
19:48:59 <Vorpal> kallisti, you never played this incarnation?
19:49:08 <Vorpal> I was under the impression you had
19:49:09 <kallisti> nope
19:49:14 <kallisti> I played the second game
19:49:18 <kallisti> and a little of the first.
19:49:39 <oerjan> Vorpal: yes vik and bukt are other words for it, våg is i think typically northern norwegian
19:49:53 <Vorpal> kallisti, basically you can send assassin's out to other cities around the Mediterranean to level up and gain influence over the city (giving you income from said city)
19:50:14 <oerjan> <Vorpal> oerjan, as well as scale? <-- and yes.
19:50:19 <Vorpal> oerjan, isn't bukt basically a less "sharp" vik?
19:50:40 <Vorpal> in Swedish I think it is
19:51:25 <kallisti> Vorpal: oh hm apparently they changed the combat system quite a bit in the third game.
19:51:28 <Vorpal> oerjan, what is "honning" then? I hope that is the Norwegian word for "honey" because that is what I first thought when I saw it "honey wave" XD
19:51:39 <Vorpal> (it is honung in Swedish)
19:51:56 <Vorpal> kallisti, I see. Can't compare it to previous incarnations
19:52:01 <Vorpal> kallisti, how do they differ?
19:52:38 <kallisti> The combat system has been modified. Striking first and offensive actions are more deadly in Brotherhood than previous games where counter-attacks were the most efficient. Before, this made the player wait until the AI struck, which slowed down the pace of fighting. The AI in this game is thus more aggressive and enemies can attack simultaneously.
19:52:56 <Vorpal> hm
19:52:56 <kallisti> To dispatch them, Ezio can use melee and ranged weapons at the same time, as well as introducing the hidden pistol in combat. After killing one enemy the player can start an execution streak to dispatch multiple enemies quickly.
19:53:17 <Vorpal> yes I noticed those streaks
19:53:26 <Vorpal> however, I can't say I'm good at them
19:53:29 <oerjan> <Vorpal> oerjan, isn't bukt basically a less "sharp" vik? <-- dunno
19:53:35 <Vorpal> never been good at combo-based combat
19:54:31 <oerjan> Vorpal: yes honning means honey although it feels strange for that to be prevalent that far north...
19:54:34 <kallisti> I recently played Batman: Arkham City which is basically all combo based
19:54:38 <kallisti> it's incredibly easy though
19:54:49 * kallisti can get 50x combos consistently
19:54:51 <oerjan> so possibly it's a distortion of something else
19:54:54 <Vorpal> kallisti, anyway there was a level where you had to freerun above water to race a boat below you with templars in it to the end. It was tricky until I figured out I basically had to hold right mouse, space and forward, and tap shift a few time to use the hookblade. Oh and steer a bit with the mouse to change the camera angle
19:55:07 <Vorpal> kallisti, maybe you are just good at that?
19:55:23 <Vorpal> anyway the combo combat made me decide to not play that game
19:55:42 <Vorpal> oerjan, you mean it is too cold for honey up there?
19:55:50 -!- PiRSquared17 has joined.
19:55:57 <oerjan> Vorpal: finnmark is more well-known for mosquitos than bees :P
19:56:00 <Vorpal> heh
19:56:32 <oerjan> and yes, iirc much of finnmark is genuinely arctic climate
19:56:36 <Vorpal> ah
19:56:44 <Vorpal> so where is this, wikipedia has no map
19:56:48 <kallisti> Vorpal: that sounds annoying, I'm bad with PC controls on games like that.
19:57:03 <Vorpal> kallisti, hm?
19:57:07 <Vorpal> kallisti, which part?
19:57:37 <Vorpal> kallisti, anyway I'm bad with gamepads. I used them for a handful of hours in my entire life
19:57:51 <Vorpal> (which is why I'm bad at them probably)
19:57:59 <Vorpal> I can manage an snes pad though XD
19:59:09 <kallisti> Vorpal: it looks to me like Revelations didn't really improve much on the gameplay.
19:59:17 <Phantom_Hoover> Wait, is Finnmark a real place.
19:59:18 <Vorpal> hm
19:59:19 <oerjan> Vorpal: http://maps.google.no/maps?hl=no&safe=off&q=honningsv%C3%A5g&gs_upl=719484l722234l7l723609l11l6l0l2l2l1l656l2219l2-2.3.0.1l8l0&bav=on.2,or.r_gc.r_pw.,cf.osb&biw=1074&bih=624&wrapid=tlif132526983959310&um=1&ie=UTF-8&hq=&hnear=0x45c9a941d0d2fa49:0xbda760a333169846,Honningsv%C3%A5g&gl=no&ei=ihf-Ts3QMM2q-Abyi7HKAQ&sa=X&oi=geocode_result&ct=title&resnum=2&ved=0CD0Q8gEwAQ
19:59:20 <kallisti> whereas AC to AC2 to Brotherhood were all improvements in gameplay.
19:59:27 * oerjan whistles innocently
19:59:33 <Phantom_Hoover> Not just a humorous combination of Finland and Denmark.
19:59:39 <Vorpal> oerjan, "Den här anslutningen är inte tillförlitlig" lol
19:59:47 <oerjan> Vorpal: what?
20:00:11 <Vorpal> oerjan, the certificate is not for google.no according to my browser. Just for google.com, google.co.uk and a shitload of other ones
20:00:13 <Vorpal> XD
20:00:23 <oerjan> Vorpal: i got no complaint
20:00:26 <Vorpal> weird
20:00:28 <kallisti> Vorpal: still AC is an awesome series. The first game was pretty much groundbreaking.
20:00:36 <Vorpal> kallisti, well sure
20:00:43 <Vorpal> kallisti, I'm not saying it wasn't
20:00:47 <oerjan> Vorpal: but then it's not https
20:00:51 <kallisti> Vorpal: YES YOU ARE OBVIOUSLY YOU ARE
20:00:56 <kallisti> :)
20:00:57 <Vorpal> oerjan, wtf why did I get https
20:01:09 <Vorpal> it redirects me to https?
20:01:40 <kallisti> "a number of new features have been attempted to make Revelations feel new and different from its predecessors. In that quest for broader variety and a unique identity from the earlier games, Revelations makes some missteps that are hard to ignore. However, the game offers more of what has been great about the franchise, and that should be enough to bring most fans to the table, even if it a poor starting point for new play
20:01:50 <kallisti> Vorpal: you should probably really play the old games
20:01:54 <Vorpal> oerjan, ah up there
20:02:02 <Vorpal> kallisti, hm
20:02:16 <kallisti> Vorpal: though playing Revelations may have spoiled you already. :P
20:02:18 <oerjan> <Phantom_Hoover> Wait, is Finnmark a real place. <-- yes it's norway's northernmost mainland county
20:02:24 <Vorpal> kallisti, possibly
20:02:24 <Phantom_Hoover> O.o
20:02:33 <Vorpal> Phantom_Hoover, why are you surprised?
20:02:38 <Vorpal> is the word odd to you?
20:02:38 <elliott> Phantom_Hoover: I was surprised too.
20:02:51 <oerjan> Phantom_Hoover: the morphemes are the same as in finland and denmark, i think
20:02:53 <Phantom_Hoover> Because if I was going to make up a fake Scandinavian country, it would probably be called Finnmark.
20:02:58 <PiRSquared17> Finnmark ... ?
20:03:14 <Phantom_Hoover> PiRSquared17, the bastard child of Finland and Denmark.
20:03:17 <Phantom_Hoover> It's in Norway.
20:03:18 <Vorpal> heh
20:03:42 <fizzie> Sort of the wrong direction, considering Denmark.
20:03:55 <Vorpal> Phantom_Hoover, what about Lappland? That is a Swedish county. (fizzie: I believe it is a Finnish county too?)
20:04:01 <PiRSquared17> lol
20:04:15 <kallisti> Vorpal: I'd recommend AC2 and Brotherhood at least.
20:04:44 <fizzie> Finnmark should be somewhere in South-Sweden.
20:04:50 <Ngevd> I've never played AC1
20:04:58 <fizzie> (Or is that where Denland is?)
20:05:06 <Ngevd> I've played Assassin's Creed: Altair's Chronicles
20:05:15 <Ngevd> For DS
20:05:15 <oerjan> Phantom_Hoover: heh i recall the yafgc comic seemed to have wanted a fake viking country and called it nordland, which is _another_ of our counties. the one where most of my family lives, btw
20:05:29 -!- quintopia has quit (Remote host closed the connection).
20:05:33 <Phantom_Hoover> One for the nuke list?
20:05:37 -!- quintopia has joined.
20:05:42 <oerjan> NO COMMENT
20:06:19 <elliott> The new klist.
20:06:44 <fizzie> Vorpal: We abolished counties at the end of 2009, but yes, we had a Lappland (Lappi in Finnish).
20:06:45 <Vorpal> Ngevd, DS? Sounds horrible
20:07:01 <kallisti> Vorpal: I really think they should have stopped focusing on Ezio and maybe added a third character.
20:07:08 <oerjan> Phantom_Hoover: finnmark is both the largest and (one of?) the least populated counties, something like alaska is for the us i think
20:07:08 <Vorpal> fizzie, I assume you still have län?
20:07:08 <kallisti> well, besides Desmond.
20:07:22 <Vorpal> kallisti, possibly
20:07:53 <fizzie> Vorpal: I was assuming län to be the closest representative of English 'county'; those are exactly what we no longer have.
20:08:55 <elliott> You *destroyed Lapland*?
20:09:09 <fizzie> elliott: Well, Germans had already burned it...
20:09:13 <Vorpal> fizzie, eh, we have län and landskap
20:09:24 <Vorpal> landskap no longer fills any official function
20:10:02 <Vorpal> well I think there might still be a heraldic symbol or such per landskap. Anyway that is the old old old system.
20:10:12 <Vorpal> fizzie, what do you have instead of län then?
20:10:21 <oerjan> fizzie: wait the germans burned lapland? they also burned finnmark.
20:11:16 <Vorpal> curse those bastards
20:11:18 <fizzie> oerjan: It's a bit of what they do. This was the time when we no longer were such good friends any more, and told them to go away.
20:11:39 * elliott wonders what the most elegantest pure memo table for rationals are
20:11:45 * elliott considers scaring oerjan away by pinging him after saying that.
20:11:56 <elliott> `addquote <oerjan> fizzie: wait the germans burned lapland? they also burned finnmark. <fizzie> oerjan: It's a bit of what they do. This was the time when we no longer were such good friends any more, and told them to go away.
20:12:00 <HackEgo> 787) <oerjan> fizzie: wait the germans burned lapland? they also burned finnmark. <fizzie> oerjan: It's a bit of what they do. This was the time when we no longer were such good friends any more, and told them to go away.
20:12:07 <Vorpal> why is some neighbour shooting fireworks atm.... Come on that is for tomorrow...
20:12:30 <oerjan> elliott: that continued fraction tree thing?
20:12:33 <elliott> I think Arcane Sentiment may be dead :(
20:12:43 <Ngevd> The Scots burnt Hexham
20:12:44 <elliott> oerjan: oh, stern-brocot?
20:12:50 <Ngevd> So did the Vikings
20:12:52 <oerjan> that was it
20:12:54 <Ngevd> And the Scots
20:12:54 <fizzie> Vorpal: We had a big reorganization of the "län" structure in 1997, in which several were merged to go from 12 to 6; and since 2010 those went away too. Now they just have six "aluehallintovirasto", "regionförvaltningsverk", which I guess do some of the same things.
20:12:57 <elliott> oerjan: that's a good idea! thanks
20:13:03 <Vorpal> fizzie, hm wikipedia translates landskap with province and län with county it seems.
20:13:11 <Phantom_Hoover> <Vorpal> why is some neighbour shooting fireworks atm.... Come on that is for tomorrow...
20:13:15 <Phantom_Hoover> The Germans are moving in.
20:13:21 <Vorpal> Phantom_Hoover, oh crap
20:13:22 <Phantom_Hoover> Sweden had it too easy last time.
20:13:34 <elliott> oerjan: oh it's as simple as just Rational -> a = (a, Rational -> a, Rational -> a)
20:13:36 <elliott> cool
20:13:52 <Vorpal> Phantom_Hoover, I just asked them if they were german. They said nein, should I trust them?
20:14:19 <Vorpal> elliott, speaking of other strangly named provinces: Medelpad
20:14:33 <Vorpal> that one always sounded odd to me, as a Swede
20:14:38 <elliott> oerjan: otoh the actual function for (Rational -> a) -> memoised form is probably ugly :(
20:14:45 <elliott> Vorpal: metapod
20:15:03 <Vorpal> heh
20:15:24 <Vorpal> also it seems landskap were replaced with län in 1634
20:15:40 <Vorpal> yet people still refer to the landskap when they say where they are from and such
20:16:45 <Vorpal> (also the plural of a Swedish word in an English sentence ends up awkward, so I skipped that there)
20:16:58 <kallisti> Vorpal: I guess the hookblade probably makes it easier to traverse the city.
20:17:14 <Vorpal> kallisti, somewhat, It gives you a bit of extra reach. Not that much really
20:17:30 <elliott> oerjan: UNLSES I'M MISSING SOME GREAT INSIGHT COUGH COUGH
20:17:34 <Vorpal> kallisti, especially useful when scaling towers and such in high profile mode.
20:17:36 <kallisti> do you start the game being able to jump upward while climbing?
20:17:53 <Vorpal> kallisti, eh you get the hookblade like 4 missions into the game or so
20:17:57 <kallisti> this is not a thing you could do in the first game, and you could only do it in AC2 after learning it from someone.
20:18:01 -!- MDude has quit (Ping timeout: 240 seconds).
20:18:04 <kallisti> Vorpal: no I think this is different.
20:18:07 <Vorpal> kallisti, and I don't think you can do that
20:18:08 <oerjan> elliott: well you'd have to construct the stern-brocot tree and annotate each node with its corresponding a, no?
20:18:17 <Vorpal> kallisti, you kind of can do it with the hookblade though
20:18:23 <kallisti> Vorpal: really? it would kind of make sense assuming linear continuity between sequels.
20:18:36 <Vorpal> kallisti, well maybe you can. I usually always use the hookblade when scaling
20:18:45 <Vorpal> since it is automatic if you have it equipped
20:18:56 <Vorpal> and I prefer that as a weapon anyway (compared to the sword)
20:19:43 <kallisti> my favorite weapon is unarmed. :)
20:19:54 <kallisti> in AC2 anyway
20:20:00 <Vorpal> that works for beating up people but not for killing them?
20:20:22 <oerjan> elliott: you could probably annotate it with the rational itself and apply fmap for trees
20:20:39 <elliott> oerjan: well yes but usually there's a more direct way of doing it... i.e. memo f = Tree (f 1) (memo (f . g)) (memo (f . h))
20:20:44 <elliott> i'm just not smart enough to figure out what g and h are :P
20:20:46 <Vorpal> kallisti, also initial starting-game cut scene sucked. It was so blatantly not using the in-game engine.
20:21:15 <Vorpal> kallisti, I was obviously ray traced, or possibly photon mapped. And used much more high def models
20:21:29 <oerjan> elliott: hm oh. well iirc the subtrees are parametrized by the bounding rationals at each end, aren't they?
20:21:38 <Vorpal> I despise games doing that. Thankfully all the remaining cut scenes are with the in game engine
20:21:40 <Vorpal> at least so far
20:21:55 <oerjan> -inf and inf for the large one, that needs some special handling
20:22:18 <kallisti> Vorpal: so you're complaining that it was.... too high definition?
20:22:36 <Vorpal> kallisti, I'm complaining that it wasn't the same definition as the rest of the game!
20:22:43 <kallisti> ah yes.
20:22:43 <elliott> oerjan: well you just need a map from the rationals to the rationals on the left and the rationals on the right of the tree
20:22:50 <elliott> (from the top)
20:22:53 <Vorpal> kallisti, besides it was upscaled on my monitor
20:23:09 <kallisti> Vorpal: apparently you learn the climb leap in Brotherhood as well. even though Ezio learns it in AC2. weird.
20:23:12 -!- derdon has joined.
20:23:14 <fizzie> oerjan: Based on the interwebs, the Germans burned your place while on their way out of the Finnish Lapland, after having burned it too. And it was the same Lothar Rendulic guy.
20:23:17 <Vorpal> kallisti, heh
20:24:07 <fizzie> He seems to have been really keen on the burning.
20:24:23 <Vorpal> kallisti, also I would love to see a photon mapped game :P
20:24:33 <Phantom_Hoover> <Vorpal> kallisti, also initial starting-game cut scene sucked. It was so blatantly not using the in-game engine.
20:24:34 <Phantom_Hoover> <Vorpal> kallisti, I was obviously ray traced, or possibly photon mapped. And used much more high def models<Vorpal> I despise games doing that. Thankfully all the remaining cut scenes are with the in game engine
20:24:47 <oerjan> elliott: hm well so we need a g such that g(-inf) = -inf, g(inf) = 0, g((a+b)/(c+d)) = (g a + g b)/(g c + g d), does that exist...
20:24:49 <Phantom_Hoover> You have really outdone yourself, you know.
20:24:57 <kallisti> lol
20:25:08 <elliott> oerjan: you realise -inf \not\in \mathbb{R} and so you don't have to handle it in g :P
20:25:11 <oerjan> iirc that (a+b)/(c+d) is the combining function for those trees
20:25:13 <Vorpal> Phantom_Hoover, you keep to your shiny rocks I keep to my immersion breaking cut-scenes.
20:25:42 <kallisti> Vorpal: I take it your not a fan of the Final Fantasy series?
20:25:45 <elliott> Vorpal: you realise the shiny rock thing was mocking you
20:25:47 <kallisti> or Starcraft.
20:25:50 <oerjan> elliott: well it's mathematically simplest to find g that way, i suspect
20:25:56 <Vorpal> kallisti, I was fine with the one I played. Which was for SNES.
20:25:56 <elliott> oerjan: fair enough :P
20:25:59 <kallisti> though starcraft 2 does have some in-engine cutscenes.
20:26:02 <Phantom_Hoover> elliott, no, they were mocking dumb prevailing HD trends.
20:26:08 <Vorpal> kallisti, and I never played starcraft
20:26:17 <Phantom_Hoover> Such as making all the rocks pearlescent to show off how good your lighting engine is.
20:26:25 <elliott> Phantom_Hoover: i mean you talking about shiny rocks after Vorpal complained
20:26:28 <elliott> also
20:26:30 <elliott> aii is so hd you guys
20:26:30 <Phantom_Hoover> Ah.
20:26:31 <elliott> so hd
20:26:48 <Phantom_Hoover> Is it infinity d.
20:27:09 <Vorpal> kallisti, but really I can accept most sort of graphical qualities as long as it is consistent within the game.
20:27:27 <kallisti> Vorpal: based on things I'm reading it seems that the climbing in Revelations is significantly less interesting because it requires fewer buttons.
20:27:42 <elliott> Phantom_Hoover: y
20:27:58 <elliott> Vorpal: -vorp "i didnt play ac1 because i wanted top gfx qual" vorp
20:28:04 <Vorpal> kallisti, that is one reason I despise Rage. (Apart from the mediocre gameplay that is). Things like the skydome and the weapon you hold are superb. Things like the fence right next to you is really really low-def
20:28:15 <Vorpal> kallisti, hm okay
20:28:23 <kallisti> Vorpal: for example to jump while climbing you have to press jump and then grab to grab the ledge above.
20:28:23 <Vorpal> elliott, at the time yes.
20:28:30 <Vorpal> elliott, I might play ac1 later on *shurg*
20:28:35 <Vorpal> depends on what I feel like
20:28:43 <Phantom_Hoover> Vorpal, HOW THE HELL CAN YOU PLAY MINECRAFT
20:28:53 <Phantom_Hoover> Do you use one of those ghastly photorealism packs?
20:28:54 <Vorpal> Phantom_Hoover, that should be answered above
20:29:04 <oerjan> argh food ->
20:29:21 <elliott> hi oerjan
20:29:22 <Phantom_Hoover> So paintings scour at the very core of your being, because they are of a different resolution to everything else?
20:29:23 <fizzie> Vorpal: To have FMVs was sort of a selling point for games at one point, after distribution media (CD) made that possible.
20:29:25 <elliott> `quote flamewar
20:29:29 <HackEgo> 324) [After a long monologue] <oklopol> i think i have to escape this heated discussion before it becomes a flamewar
20:29:35 <Vorpal> kallisti, from what I seen shift is always drop while climbing (and grab while jumping and such)
20:29:46 <Vorpal> fizzie, FMV?
20:30:01 <fizzie> Vorpal: "A Full motion video (FMV) is a video game narration technique that relies upon pre-recorded video files (rather than sprites, vectors, or 3D models) to display action in the game. While many games feature FMVs as a way to present information during cutscenes, games that are primarily presented through FMVs are referred to as full-motion video games or interactive movies."
20:30:22 <elliott> FMV = Fuck Mr. Vorpal
20:30:31 <elliott> science(tm)
20:30:35 <elliott> science facts(C)(R)
20:30:39 <elliott> science(tm) facts(C)(R)
20:30:45 <Vorpal> anyway iirc the nwn1 movies between the chapters were okay because they used a completely different art style. They showed stuff like grey scale silhouettes, or maps.
20:30:46 <elliott> (science(tm) facts(C)(R))(SM)
20:30:58 -!- kallisti has quit (Read error: Operation timed out).
20:31:06 <elliott> oerjan: ok maybe i'll just do the construct the tree thing :P
20:31:12 <Vorpal> fizzie, right
20:31:22 <Vorpal> fizzie, not a fan of those indeed
20:31:30 <fizzie> It had movies? I don't recall those at all. (Not that I'm disputing the fact.)
20:31:43 <Vorpal> fizzie, not on linux
20:31:59 <Vorpal> fizzie, there was .txt with the narration from the movies somewhere iirc
20:32:09 <Vorpal> because they couldn't license the codec for linux
20:32:13 <Vorpal> you can watch them with mplayer
20:32:26 <Vorpal> iirc they are .bik files or something. It works with some mplayer installations
20:32:33 <Vorpal> like on my desktop but not on my laptop
20:32:46 <fizzie> The modern Sonic games I think all have pre-rendered cutscenes.
20:32:54 <Vorpal> ouch
20:33:11 <Vorpal> fizzie, wait why, as far as I remember Sonic is not aiming for a realistic look /anyway/
20:33:42 <fizzie> They're not *realistic*, just more glitzy than the in-game 3D. Better water reflections and so on.
20:33:49 <Vorpal> heh
20:34:06 <Vorpal> all this tends to be pointless anyway due to compression artifacts and upscaling
20:34:07 <elliott> is bik bink
20:34:08 <elliott> yeah
20:34:18 <Vorpal> elliott, I don't know what bink is
20:34:25 <fizzie> Vorpal: Chrono Trigger's PSX version has "anime"-style animated cutscenes, incidentally.
20:34:27 <elliott> does anyone
20:34:28 <elliott> remember
20:34:29 <elliott> TOONSTRUCK
20:34:33 <elliott> if nobody remembers
20:34:36 <elliott> im severing all our friendships
20:34:37 <Vorpal> fizzie, I played that game on snes
20:34:45 <Vorpal> elliott, the name sounds familiar
20:34:56 <elliott> that had FMV up the wazoo :P
20:35:04 <Vorpal> elliott, I don't think I ever played it
20:35:09 <Vorpal> just heard the name somewhere
20:35:14 * Vorpal searches for it
20:35:27 <Vorpal> elliott, well wp says it is a point and click
20:35:46 <Vorpal> nah I never played it
20:36:07 <fizzie> Vorpal: I played it on an emulator. :p But anyway, the PSX version is pretty close to identical (no graphical upgrades or anything there; some random bonus features) except for the "anime cut scenes created by original character designer Akira Toriyama's Bird Studio and animated by Toei Animation".
20:36:27 <Vorpal> I see
20:36:39 <fizzie> And I think the DS port includes the cutscenes too.
20:36:51 <Vorpal> fizzie, I think I saw a youtube video of the cut scene where Ayla (sp?) was introduced.
20:37:09 <Vorpal> and I went like, "really, that much bare skin"
20:37:14 -!- kallisti has joined.
20:37:14 -!- kallisti has quit (Changing host).
20:37:14 -!- kallisti has joined.
20:37:46 <fizzie> Vorpal: Well, you know, there's quite a lot of skin in http://www.videogamesprites.net/ChronoTrigger/Party/Ayla/ too.
20:37:58 <Vorpal> fizzie, presumably I didn't realise how much there was from the upscaled smoothed sprite
20:38:02 <kallisti> what wait codu is still down?
20:38:09 <kallisti> this explains why the logs are this checksum stuff.
20:38:13 <Vorpal> codu is down?
20:38:22 <elliott> "Access to the webpage was denied
20:38:22 <elliott> It is likely that the server hosting the webpage has been overloaded or encountered an error. In order to avoid causing too much traffic and making the situation worse, Chromium has temporarily stopped allowing requests to the server."
20:38:23 <Vorpal> no hackego is here?
20:38:24 <elliott> :'(
20:38:27 <elliott> you betray me chrome
20:38:29 <Vorpal> ah
20:38:40 <Vorpal> elliott, chrome does what?
20:38:49 <elliott> Vorpal: it tells you how to turn it off on the next line :P
20:38:50 <Vorpal> I assume there is a button to resume that?
20:38:51 <Vorpal> ah
20:38:53 <Vorpal> good
20:39:01 <kallisti> Vorpal: it enforces good manners on the web. how horrible.
20:39:11 <elliott> not that I will bother, because refreshing youtube's 500 page was not productive
20:39:11 <Vorpal> hah
20:39:19 <elliott> i will instead refresh this denied page
20:39:41 <kallisti> oh no I just misremembered the stalker mode URL
20:39:55 <Vorpal> fizzie, also why the tail, I always wondered
20:40:05 <kallisti> 15:29 < kallisti> I think tabletop RPGs have the best graphics ever.
20:40:06 <kallisti> 15:29 < kallisti> and the gameplay engine is remarkably varied. :> :> :>
20:40:13 <kallisti> said before disconnected. important words.
20:40:25 <Vorpal> har har
20:40:55 <kallisti> also if I really want them I can have shiny rocks.
20:41:07 <kallisti> I can just imagine all the rocks to be really shiny.
20:41:08 <elliott> finally
20:41:09 <elliott> http://www.youtube.com/watch?v=xERRV7JmZk8#t=1m15s
20:41:49 <Vorpal> kallisti, game you should play at some point: Bastion.
20:41:54 <kallisti> elliott: what a lame ringtone on that phone.
20:41:54 <Vorpal> it is so unique
20:43:03 <kallisti> elliott: why are so many awesome people in this thing.
20:43:31 <elliott> because it is an awesome game
20:45:01 <kallisti> elliott: this guy draws for a living like I program for a living.
20:45:19 <elliott> lol
20:45:35 <kallisti> "must focus on bunnies"
20:48:01 -!- augur has joined.
20:49:43 <kallisti> malevelator
20:52:06 <Gregor> <---> I was never sure what the emotion was honestly
20:52:06 <Gregor> <---> So I just imagined you actually saying what you wrote and I think that got me there most of the time
20:52:06 <Gregor> <---> I'd even add some of your drawn out voice-quavers. :)
20:52:17 <Gregor> ^^^ A story about me not using the tongue-face smiley.
20:52:36 <Gregor> Apparently I have "drawn out voice-quavers"
20:52:39 <Gregor> Whatever that means.
20:52:58 <elliott> I believe I have heard Gregor's voice exactly once.
20:53:18 <Gregor> My voice is awesome[1]!
20:53:21 <Gregor> [1]: Not actually awesome
20:54:05 <elliott> kallisti: btw the sprite actually has animations for like everything that happens in the game
20:54:15 <elliott> i can't imagine how long it took to film it all
20:55:07 <kallisti> elliott: aha I thought that voice was familiar. that bird-guy that they talk to at the beginning is also a character called Choose Goose in Adventure Time.
20:55:12 <kallisti> that voice actor has a very distinct voice.
20:55:58 <kallisti> http://www.imdb.com/name/nm0071818/
20:55:58 <kallisti> wow
20:55:59 <elliott> forever destined to be a bird
20:56:01 <kallisti> that's a lot of things
20:56:05 <fizzie> Vorpal: Oh, speaking of Sonic and realism, I guess the 2006 Sonic has a sorta-wannabe-realistic-ish human too, http://www.youtube.com/watch?v=6_yFxEnqLr8
20:56:35 <fizzie> I guess that game is a bit of a "did not happen" for many people, though.
20:56:48 <elliott> kallisti: flux is homer btw
20:56:59 <kallisti> what
20:57:02 <kallisti> flux? homer?
20:57:13 <kallisti> you must think I've been paying a lot of attention
20:57:23 <elliott> kallisti: the purple guy
20:57:29 <elliott> is voiced by Dan Castellaneta
20:57:33 <kallisti> oh
20:57:38 <kallisti> Homer Simpson
20:57:43 <kallisti> I was thinking of the Greek..
20:57:47 <elliott> X-D
20:57:51 <elliott> that too.
20:59:50 <Vorpal> fizzie, sec
21:00:28 <Vorpal> fizzie, my reaction: wait that isn't a final fantasy game?
21:00:44 <fizzie> Vorpal: No, that's a Sonic game.
21:00:55 <Vorpal> really, I haven't seen sonic yet
21:01:03 <fizzie> He'll be in the video.
21:01:06 <Gregor> Oh, it doesn't have Sonic in it.
21:01:25 <fizzie> You should see the touching Sonic/Elise kiss scene, which also is in the game.
21:02:07 <Gregor> Touching/creepy
21:02:38 <Vorpal> fizzie, this... this is wrong on so many levels
21:02:40 <fizzie> Well, you know, they're both consenting adults and so on. (Though IIRC Sonic's dead at that point, so maybe he's not so consenting.)
21:03:13 <elliott> Also he's a hedgehog.
21:03:26 <Vorpal> fizzie, also is that a tron hedgehog in that video you linked?
21:03:27 <Vorpal> what
21:03:39 <fizzie> elliott: Yeah, so in Hedgehog Years he's a senior, I think.
21:03:48 <fizzie> Vorpal: That's a hedgehog from the future.
21:03:56 <Vorpal> right
21:03:57 <Vorpal> carry on
21:03:59 <elliott> It's like Vorpal has never seen a future hedgehog before.
21:04:00 <fizzie> Vorpal: You see, chaos control, time travel.
21:04:04 <Phantom_Hoover> elliott, he's an *adult* hedgehog.
21:04:23 <kallisti> elliott: http://www.youtube.com/watch?v=_xATi_9seuk
21:04:39 <Vorpal> elliott, I haven't. I never played much sonic. I played a level or two at a friend's house once
21:05:12 <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op.
21:05:40 <Vorpal> fizzie, err...
21:05:40 <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:06:04 <elliott> `addquote <Vorpal> fizzie, also is that a tron hedgehog in that video you linked? <fizzie> Vorpal: That's a hedgehog from the future. [...] <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op. <Vorpal> fizzie, err... <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:06:06 <Vorpal> fizzie, so the retcon was in the same work as it retconned?
21:06:07 <HackEgo> 788) <Vorpal> fizzie, also is that a tron hedgehog in that video you linked? <fizzie> Vorpal: That's a hedgehog from the future. [...] <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op. <Vorpal> fizzie, err... <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:06:21 -!- aloril has quit (Ping timeout: 240 seconds).
21:06:42 <elliott> fizzie: So is that game better or wose than the Shadow one (neither of which I have played)
21:06:46 <Vorpal> elliott, that isn't quote-worthy IMO
21:06:54 -!- Ngevd has quit (Ping timeout: 240 seconds).
21:06:54 <Phantom_Hoover> `delquote 788
21:06:57 <Phantom_Hoover> `quote 777
21:06:58 <HackEgo> ​*poof* <Vorpal> fizzie, also is that a tron hedgehog in that video you linked? <fizzie> Vorpal: That's a hedgehog from the future. [...] <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op. <Vorpal> fizzie, err... <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:07:01 <HackEgo> 777) <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
21:07:14 <fizzie> It's a three-main-characters-with-storylines game. Sonic does what Sonic does; Silver (the future hedgehog) does telekinesis and self-levitation with psychic powers; and Shadow does... uh, kickboxing, or something.
21:07:22 <elliott> `addquote <Vorpal> fizzie, also is that a tron hedgehog in that video you linked? <fizzie> Vorpal: That's a hedgehog from the future. [...] <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op. <Vorpal> fizzie, err... <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:07:22 <Vorpal> elliott, I heard that sonic generations is pretty okay btw
21:07:25 <HackEgo> 788) <Vorpal> fizzie, also is that a tron hedgehog in that video you linked? <fizzie> Vorpal: That's a hedgehog from the future. [...] <fizzie> Vorpal: Anyway, the final cutscene retroactively erases the whole game's events from the timeline, so canonically speaking the game's a no-op. <Vorpal> fizzie, err... <fizzie> Vorpal: The future hedgehog has telekinesis, though, obviously.
21:07:27 <elliott> I'm a fascist, sorry.
21:07:30 <Vorpal> elliott, which is iirc the last one
21:07:38 <elliott> Vorpal: Is that the nth-reboot one?
21:07:52 <Vorpal> elliott, not sure I don't really follow the sonic franchise
21:07:56 <elliott> No, that was 4.
21:08:27 <Vorpal> elliott, I think it has both modern style and classical style levels or something like that
21:08:30 <elliott> I wonder how much aspirin Sonic takes for his headaches.
21:08:40 <Vorpal> hah
21:08:48 <fizzie> elliott: I haven't watched an LP of the Shadow game. I've just watched the 2006 Sonic, the Unleashed were-hog game, the really bizarre Sonic and the Black Knight thing, and the second-to-latest Sonic Colors one.
21:08:54 <elliott> Eagerly awaiting Sonic 5: Darker and Edgier: The Addiction.
21:08:57 <fizzie> Vorpal: I just bought Generations the other day. :p
21:09:14 <fizzie> (It was a Daily Deal at -66%, how could I resist.)
21:09:14 <Vorpal> fizzie, was Sonic and the Black knight cannon or a fan made thingy?
21:09:24 <Vorpal> fizzie, and is it a Monty Python reference?
21:09:29 <Phantom_Hoover> It was a cannon.
21:09:30 <Vorpal> fizzie, hah
21:09:33 <Phantom_Hoover> Sonic gets shot out of it.
21:09:33 <Vorpal> Phantom_Hoover, hm
21:09:36 <elliott> "Sonic and the Black Knight was de-listed in 2010, following on from Sega's decision to remove all Sonic titles with average Metacritic scores from retail stores in order to increase the value of the brand after positive reviews for Sonic 4 and Sonic Colors.[5]"
21:09:51 <Phantom_Hoover> lol
21:09:59 <Vorpal> elliott, well now /that/ is a jerk move
21:10:01 <fizzie> Vorpal: They're all real games; but it's bizarroid. It's like this fairytale-themed thing.
21:10:06 <elliott> Vorpal: FSVO jerk move
21:10:14 <elliott> Sega aren't exactly obligated to sell games they don't thinka re good :P
21:10:14 <Vorpal> elliott, well yes. There are far worse ones
21:10:19 <elliott> *think are
21:10:38 <Vorpal> fizzie, I see
21:10:45 <elliott> http://upload.wikimedia.org/wikipedia/en/c/c7/SBKCanyon1.jpg ;; HARDCORE RAILROAD GRINDING
21:10:45 <fizzie> Colors was all right. The dialogue is amusingly self-satirical, and it doesn't take itself at all seriously.
21:10:49 <elliott> So metal.
21:10:54 <Vorpal> fizzie, so is the generation one any good?
21:11:11 <Vorpal> fizzie, I was thinking about it but decided not to due to not really playing much sonic before.
21:11:16 <elliott> fizzie: That's usually a recipe for trying too hard. :p
21:11:33 <elliott> fizzie: At least Rayman 3 suffered a bit from all the sarcastic lampshading.
21:11:49 <fizzie> elliott: Well, it wasn't too grating.
21:11:50 <elliott> (But it was good enough on its other merits to not suffer too badly, so...)
21:11:55 <Vorpal> fizzie, I was thinking of picking up Alice Madness Returns recently
21:11:58 <Vorpal> didn't do it though
21:12:18 <Vorpal> I have a fairly limited budget. I did pick up Terraria and Bastion and a few other things though
21:12:24 <elliott> american mcgee's alice is so obnoxious
21:12:30 <Vorpal> elliott, oh?
21:12:39 <fizzie> Vorpal: So far it seems good; I've only played through the first three of the ten areas. Each area has two acts, first with "classic-style" mostly-2D Sonic with the classic-like controls, and the second with "modern" Sonic doing the current 2D/3D switcharoo with modern controls (homing attack and whatever).
21:12:44 <Vorpal> elliott, the platforming looked fairly fun from a youtube video I saw
21:12:46 <elliott> IT'S LIKE ALICE IN WONDERLAND BUT GRITTY AND EDGY YOU GUYS!!! RATED TEEN
21:12:47 <Phantom_Hoover> I preferred his Strawberry Shortcake.
21:13:13 <Vorpal> elliott, don't see the issue with that
21:13:17 <elliott> ~gothhicke~
21:13:23 <Vorpal> hah
21:13:23 <elliott> ~GOHTIQUE~
21:13:24 <elliott> ~GOHTIKKKUE~
21:13:27 <Vorpal> right
21:13:42 <Phantom_Hoover> Got Hickey.
21:13:49 <elliott> VINCENT VAN GOTHIC
21:13:55 <Vorpal> elliott, anyway I think you would love Terraria
21:14:01 <Vorpal> if you haven't already played it
21:14:26 <Vorpal> fizzie, does sonic work well without a gamepad?
21:14:28 <Phantom_Hoover> elliott, wait, did you play it or what.
21:14:53 <elliott> Vorpal: I doubt it.
21:14:58 -!- Klisz has joined.
21:15:00 <Vorpal> elliott, in reply to what line?
21:15:03 <fizzie> Vorpal: I don't really know, I guess a pad might be a good idea. I've been playing it with the PS3 controller I have.
21:15:05 <elliott> Terraria.
21:15:07 <Phantom_Hoover> I love how any ~modern reinvention~ of Alice in Wonderland feels the need to stick the Jabberwock in somewhere.
21:15:15 <Vorpal> elliott, it isn't like minecraft at all actually. It is more RPGish
21:15:16 <fizzie> Vorpal: All the areas are thematically lifted from earlier Sonic games; so far there's been Green Hill Zone from Sonic 1, Chemical Plant from Sonic 2, and Sky Sanctuary from Sonic & Knuckles. The rest are from the moderner games which I haven't played.
21:15:23 <Phantom_Hoover> elliott, I was totally offered a free copy of Terraria from a guy at school!
21:15:31 <Vorpal> Phantom_Hoover, did you say yes or no
21:15:32 <Phantom_Hoover> I told him to go away because he was Annoying Homestuck Guy.
21:15:38 <Vorpal> ..
21:16:01 <elliott> Vorpal: Yes, exactly: It lacks most of the elements I find interesting about Minecraft (e.g. isolation, overworld exploration) and amplifies the stupid RPG stuff Notch keeps adding.
21:16:09 <elliott> (Not intending any kind of chronological relation, just comparing.)
21:16:23 <Vorpal> elliott, it isn't trying to be minecraft though
21:16:24 <Phantom_Hoover> Weren't you praising the addition of that very stupid RPG stuff shortly after it was added?
21:16:26 <oerjan> elliott: ok thinking about it and looking at the wikipedia page (which doesn't seem to have a formula), i think possibly g x | x <= 0 = x-1 | otherwise = -1/(x+1); h x | x < 0 = 1/(1-x) | otherwise = 1+x
21:16:42 <Vorpal> Phantom_Hoover, I seem to remember that as well
21:16:51 <elliott> Vorpal: <elliott> (Not intending any kind of chronological relation, just comparing.)
21:17:02 <elliott> Phantom_Hoover: Nnno, I said the idea is nice.
21:17:02 <fizzie> Vorpal: Also the dickiest move: the PS3/Xbox360 versions of Generations contain the first MegaDrive/Genesis "Sonic the Hedgehog" game as an unlockable add-on; but the PC/Steam version doesn't. Some have speculated that's because Sega's still selling the original game in Steam as "SEGA Classics" series title.
21:17:09 <elliott> It's not nice as part of Minecraft and it turned out to be badly-executed.
21:17:16 <Vorpal> fizzie, ouch
21:17:17 <elliott> But it could make an interesting game itself, if it wasn't cra.
21:17:18 <elliott> p
21:17:19 <elliott> .
21:17:32 <Phantom_Hoover> Although ISTR liking the new terrain gen too until I actually looked at it up close.
21:17:33 <fizzie> I had read it's in there from the Generations Wikipedia article, and was all like "ooh, where can I unlock this thing".
21:17:45 <Phantom_Hoover> Well, actually, until walking through it for more than 100 metres.
21:17:45 <fizzie> Apparently the answer is "nowhere".
21:17:52 <Vorpal> fizzie, ouch
21:18:14 <fizzie> OTOH, it wouldn't have frustration-reducing savestates, like an emulator copy. :p
21:18:23 <fizzie> (But it'd be Legal(tm) and all that.)
21:18:25 <Vorpal> Phantom_Hoover, just upscaling the biome size in the old one might have worked
21:18:41 -!- aloril has joined.
21:18:46 <Phantom_Hoover> Weeellll, you'd still not've had proper oceans.
21:18:52 <Vorpal> hm
21:18:57 <fizzie> You have to pay more pretend-money (that you get from playing) to unlock infinite continues in it, separately, after unlocking the game itself.
21:19:01 <Phantom_Hoover> But they'd be an acceptable tradeoff for keeping interesting land.
21:19:14 <fizzie> (And that's just continues from start of the "zone".)
21:19:19 <Vorpal> Phantom_Hoover, so special case ocean somehow?
21:19:42 <Vorpal> fizzie, heh
21:19:50 <Phantom_Hoover> I'm kind of divided on that one.
21:19:55 <Vorpal> hm
21:19:58 <oerjan> elliott: ^^^
21:20:05 <elliott> oerjan: oh sorry
21:20:11 <elliott> oerjan: i pushed that to my stack but it got lost
21:20:14 <Phantom_Hoover> On the one hand, it seems like a good way to do it; on the other hand, special-cased biome terrain is exactly why the new terrain gen is crap.
21:20:19 <Vorpal> Phantom_Hoover, or add more detail to it in some way?
21:20:19 <oerjan> heh
21:20:34 <elliott> oerjan: that seems simple enough. although I _did_ switch to trying to figure out how to construct the tree recursively :P
21:20:45 <elliott> Phantom_Hoover: The only solution is EC terrain gen.
21:20:45 <Vorpal> hm
21:21:08 <Phantom_Hoover> elliott, clearly.
21:21:14 <fizzie> Vorpal: Also I just won "Men of War: Vietnam" from Steam's ongoing "gift pile" thing. What the doop am I supposed to do with *that*? ("The new, story-driven campaign lets you taste the explosive mix of the jungle, Hueys and rock-n-roll in 1968. The US campaign focuses on a team of elite special ops soldiers, and each one of them has a personality.")
21:21:16 <elliott> Phantom_Hoover: WHICH YOU NEED TO KEEP THINKING ABOUT
21:21:22 <elliott> Phantom_Hoover: BTW I want jungles, work out how I can have jungles somehow.
21:21:26 <Vorpal> fizzie, heh
21:21:30 <Phantom_Hoover> It's called 'biomes'.
21:21:53 <fizzie> I guess I could play it for the personalities?
21:22:02 <Vorpal> fizzie, I only won some coal + a coupon for a game I already own!
21:22:24 <fizzie> It's technically worth 30 eur. (Well, except for today, it's a daily deal at 7.49 eur at the moment.)
21:22:32 <elliott> fizzie: Sell it! OH WAIT.
21:22:46 <Vorpal> fizzie, actually I seem to have 3 coupons and 5 coal. If you want to trade or such for something? I don't know what Men Of War is though
21:22:59 <Vorpal> isn't it some hard core milsim?
21:23:01 <Vorpal> or such
21:23:04 <fizzie> Well, purely going on the name, I think you shoot people.
21:23:19 <elliott> Vorpal: It's spelled "Muslim".
21:23:20 <fizzie> I quoted the description above.
21:23:23 <elliott> And that's racist.
21:23:27 <Vorpal> right
21:23:37 <elliott> http://upload.wikimedia.org/wikipedia/en/5/56/Men_of_War.jpg ;; looks legit
21:23:46 <elliott> Except this one is 'NAM.
21:23:58 <Vorpal> fizzie, I have coupons for VVVVVV and RedOrchestra2 if you want. I'm not going to use either. VVVVVV I already know (what a dick move of Valve to give me that thus)
21:24:03 <fizzie> I do also have a "-25% off any Valve game, valid Jan 2nd through March 1st" coupon too, which is kind-of useless.
21:24:12 <Vorpal> fizzie, I have that too yes
21:24:19 <Vorpal> fizzie, err -33%
21:24:20 <Phantom_Hoover> elliott, shortly after, the man was killed due to not being able to see anything above him.
21:24:21 <Vorpal> not -25%
21:24:32 <elliott> `addquote <Phantom_Hoover> oh jesus my mother is trying to ship bear grylls with miranda hart aerio;jghaeirugha
21:24:35 <fizzie> Vorpal: They come in many amounts, yes. My wife's brother has a -50% one.
21:24:35 <HackEgo> 788) <Phantom_Hoover> oh jesus my mother is trying to ship bear grylls with miranda hart aerio;jghaeirugha
21:25:09 <Vorpal> fizzie, well, interested in trading any of the ones I have?
21:25:10 <fizzie> Vorpal: Also he won the "Valve Complete Pack" thing, which is technically worth 200 eur or so; except he had all the games already, so...
21:25:11 <elliott> Vorpal: What a dick move, they didn't give you a free game.
21:25:24 <elliott> fizzie: 200 eur? Naw
21:25:25 <elliott> Oh, worth.
21:25:34 <elliott> What, it's 24.99 pounds right now.
21:25:36 <fizzie> elliott: Well, you know, mathematically speaking.
21:25:39 <Vorpal> elliott, they could have given me a coupon for a game I didn't already own in steam!
21:25:41 <elliott> That's... that's cheaper than anything.
21:25:42 <fizzie> It's discounted at the moment. :p
21:25:58 <elliott> fizzie: Can I buy Steam games without having to actually set it up right now? :P
21:26:05 <Vorpal> elliott, no
21:26:17 <elliott> Vorpal: But there's an online store!
21:26:17 <fizzie> elliott: You need an account, but I don't think you need to install the client.
21:26:30 <elliott> fizzie: Aweeeeeesooooooome when does the discount end.
21:26:35 <fizzie> Vorpal: I don't really know. Red Orchestra 2 sounds really not very different from Men of War, and I've got VVVVVV already.
21:26:43 <Vorpal> fizzie, anyway I don't think I will do any of the daily objectives today.
21:26:53 <fizzie> Vorpal: What, not even the SpaceChem one?
21:26:58 <Vorpal> fizzie, is it hard?
21:27:07 <Vorpal> fizzie, I only done the tutorial in that game
21:27:11 <Vorpal> fizzie, it is not really my genre
21:27:28 <Phantom_Hoover> It's frustrating as hell after a bit.
21:27:39 <Vorpal> Phantom_Hoover, I meant the objective
21:27:42 <Vorpal> not the game itself
21:27:43 <fizzie> Vorpal: Oh, well, in that case it might be quite a lot of playing. It's... something like 1/4th of the way through the game, so it's not *terribly* far, but it's not right at the start either.
21:27:50 <Vorpal> fizzie, ouch
21:27:54 <fizzie> (The objective is just "reach this point".)
21:27:59 <Vorpal> I see
21:28:12 <Vorpal> I wish it was a shorter game
21:28:16 <Phantom_Hoover> Trying to build robust systems is like eating pomegranate wearing boxing gloves.
21:28:45 <Vorpal> fizzie, anyway if you want a red orchestra 2 coupon?
21:28:46 <fizzie> elliott: I'm guessing the discount will end on Jan 2nd, but that's just a guess. I'm sure they'll discount it during the next holiday whatever too, though.
21:28:56 <fizzie> Vorpal: <fizzie> Vorpal: I don't really know. Red Orchestra 2 sounds really not very different from Men of War, and I've got VVVVVV already.
21:29:00 <kallisti> can someone explain what "robust" means?
21:29:03 <Vorpal> fizzie, oh right
21:29:19 <Vorpal> fizzie, anyway Red Orchestra 2 is iirc super-realistic
21:29:19 <Phantom_Hoover> kallisti, "won't jam up under any possible set of inputs specified in the level".
21:29:20 <kallisti> for me scalable and fault tolerant comes to mind.
21:29:26 <Vorpal> fizzie, think ARMA realism level
21:29:57 <fizzie> Vorpal: I guess I'd be interested if I wanted to shoot people in Europe instead of Vietnam.
21:30:07 <Vorpal> kallisti, he means a game
21:30:10 <Vorpal> in a game*
21:30:13 <Vorpal> specific one too
21:31:00 <Vorpal> fizzie, did you pick up bastion btw?
21:31:16 <Vorpal> fizzie, I think it is quite discounted still even though it isn't a daily deal. And it is so worth it
21:31:24 <Vorpal> (if you love rpgs)
21:31:39 <fizzie> Vorpal: Based on Wikipedia, I guess Men of War is sort of tactics thing where you command more than one dude? Or something. And Red Orchestra is a first-person shooter, I think. Anyway, neither sounds very much like what I'd play.
21:32:07 <Vorpal> right
21:32:19 <kallisti> Vorpal: right I was just asking what "robust" actually means in the context of software in general.
21:32:21 <fizzie> And no, I didn't; did consider it, though. Maybe I'll consider some more.
21:32:45 <Vorpal> fizzie, watch some youtube video of it. It is probably on my top-two list of the games this year
21:32:56 <Vorpal> (shared first place with witcher 2)
21:33:17 <Phantom_Hoover> I would play Men of War if it was a strategy game where you control individual zooids in a Portuguese Man o' War.
21:34:02 <kallisti> zoids like Zoids?
21:34:10 <kallisti> *zooids
21:34:17 <Vorpal> fizzie, what about terraria?
21:34:30 <kallisti> http://en.wikipedia.org/wiki/Zoids
21:34:43 <Vorpal> according to steam I played 11 hours of bastion and 10 of terraria. And I bought both just a few days ago
21:35:48 <Vorpal> and since I completed bastion twice (once in new game+) during that time, it really doesn't take long to play. Yet it is so awesome
21:36:14 <Vorpal> I wonder if skyrim measures how long you played...
21:36:16 * Vorpal checks
21:36:35 <elliott> Phantom_Hoover: Dude... let's make that game.
21:36:41 <Vorpal> wut
21:36:44 <Vorpal> it crashed
21:36:49 <Vorpal> fuck you Bethesda
21:37:03 <Vorpal> it crashed on the main menu
21:37:22 <Vorpal> ah now it works
21:38:02 <Vorpal> hm nope
21:38:09 <Vorpal> no time spent playing
21:38:09 <kallisti> hihihi
21:38:11 <Vorpal> however
21:38:19 <Vorpal> it says 302 days passed, 81 hours slept and 692 hours waited. I guess you could calculate from that
21:38:25 <Vorpal> how much I actually spent playing it
21:38:35 <elliott> 302 days
21:38:43 <Vorpal> elliott, 302 in-game days
21:38:45 <Vorpal> ...
21:38:51 <elliott> no real
21:38:56 <Vorpal> alas no
21:38:58 <fizzie> Vorpal: The weirdest thing was the other day, I had successfully done that And Yet It Moves objective, so the Steam-installed copy worked just fine; then it suddently started to day "Fatal-ISV: (..\..\source\dgl\bitmapPng.cc @...", "Error reading PNG file: incorrect data check" after the loading screens, then quit away. Two days later, it again worked just fine.
21:39:15 <fizzie> s/to day/to say/
21:39:22 <Vorpal> fizzie, wtf
21:39:51 <fizzie> And it wasn't just a single-time fluke, I tried to start it four times consecutively and always got the same PNG file error.
21:40:02 <Vorpal> right
21:40:06 <fizzie> Though I guess it's possible Steam might have done some sneaky updating-on-the-background there.
21:40:17 <Phantom_Hoover> elliott, OK: pneumatophores are basic structural units; dactyloooids are your military; gonozooids are needed for construction; and gastrozooids produce resources.
21:40:18 <Vorpal> I hate that yes. You have to change that /per game/
21:40:22 <Vorpal> which is horrible
21:40:25 <elliott> Phantom_Hoover: Yes.
21:40:36 <Vorpal> Phantom_Hoover, which game is this?
21:41:04 <Phantom_Hoover> Siphonophore: Lord of the Sea.
21:41:14 <Vorpal> never heard of it, is it indie?
21:41:34 <Vorpal> "Siphonophorae or Siphonophora, the siphonophores, are an order of the Hydrozoa, a class of marine invertebrates belonging to the phylum Cnidaria."
21:41:35 <Vorpal> right
21:41:43 <Vorpal> Phantom_Hoover, I thought the names were too weird :P
21:42:10 <elliott> Phantom_Hoover: *Man o' War: Lord of the Sea
21:42:36 <elliott> Phantom_Hoover: Slogan: THIS SIPHONOPHORE AIN'T NO CEPHALOPHORE
21:42:47 <Phantom_Hoover> Man of War — Lord of the Sea.
21:43:12 -!- copumpkin has quit (Remote host closed the connection).
21:43:15 <Phantom_Hoover> elliott, if you lose, your man o' war is shown carrying its head.
21:43:23 -!- copumpkin has joined.
21:43:53 <Vorpal> fizzie, If I ever made a game and sold it on steam it would have loads of weird achievements. Like "Opened main menu" and even getting an achievement for getting your first achievement or something like that
21:44:14 <fizzie> They should put Achievement Unlocked and Achievement Unlocked 2 on Steam.
21:44:26 <fizzie> And then make each achievement there a daily objective.
21:44:30 <fizzie> Lots of coal for everyone.
21:44:30 <Vorpal> ah yes, I had forgotten about those
21:44:31 <elliott> fizzie++
21:44:40 <Vorpal> I should play one of them some time
21:44:47 <elliott> `quote killing myself repeatedly
21:44:50 <HackEgo> 44) <Deewiant> I spent the last minute or so killing myself repeatedly
21:44:51 <elliott> The game's legacy.
21:45:03 <fizzie> The second one had unlockable scenarios and all.
21:45:16 <Vorpal> fizzie, which one should I play?
21:45:35 <fizzie> The first one's of course the first, and you do get the idea from it just fine.
21:45:41 <fizzie> The second one is just more of the same, really.
21:46:09 <Vorpal> it seems to be available on several sites?
21:46:11 <Vorpal> wut
21:46:15 <elliott> There should just be an achievement for getting an achievement, and so once you get your first achievement your screen fills up with achievement messages and you run out of RAM and your computer crashes and when you go to look at your achivement counter it says א‭‎‏‬₁.
21:46:22 <elliott> Vorpal: Most Flash games are.
21:46:33 <Vorpal> elliott, okay which place should I go to for it
21:46:39 <elliott> The one that makes you happiest inside.
21:46:46 -!- Ngevd has joined.
21:46:49 * elliott did it on armorgames.
21:46:51 <Vorpal> well I don't know which ones are trustworthy
21:46:52 <Vorpal> right
21:46:56 <Vorpal> that is the top result anyway
21:46:58 <elliott> http://jmtb02.com/achievementunlocked/ is maybe better.
21:47:00 <elliott> Straight from TEH SOURCE.
21:47:06 <elliott> But it's Officially(tm) an Armor Games thing.
21:47:32 <Vorpal> oh god
21:48:22 <Vorpal> wut
21:48:34 -!- copumpkin has quit (Quit: Leaving...).
21:48:58 <Vorpal> what is the goal?
21:49:16 <fizzie> To get all the achievements.
21:49:54 <Vorpal> every block you touch gives an achievement...
21:50:01 <elliott> Not true.
21:50:11 <elliott> You can see the full list at the right. :p
21:50:17 <fizzie> Not every. And it calms down quite a lot once you've gotten 50 or 60% of hem.
21:50:20 <Vorpal> right
21:50:21 <Vorpal> not all
21:50:22 <Vorpal> most
21:50:49 -!- rodgort has quit (Read error: Operation timed out).
21:51:04 <fizzie> The second game has some rather curious ones, like the "have it open in two tabs at once" thing, where the second tab shows a completely different thing where you can achieve a couple more achievements.
21:51:17 <Vorpal> scrolling achievement list list achievement
21:51:19 <Vorpal> oh my
21:51:35 <Vorpal> fizzie, how can the game determine that?
21:51:43 <Vorpal> fizzie, after all I'm using a sandboxing browser
21:51:45 <Vorpal> (chrome)
21:51:47 <fizzie> I don't know; it's Flash.
21:52:14 <fizzie> I haven't checked whether it works in Chrome. I'd suppose it does, though.
21:52:24 <fizzie> Maybe it uses the Flash persistent storage thing.
21:52:26 <fizzie> Who knows.
21:52:31 <Vorpal> what are the numbers?
21:52:45 <fizzie> Integers.
21:52:49 <Vorpal> fizzie, yes but why
21:52:54 <fizzie> You can visit them in different order, for example.
21:53:02 <fizzie> The achievement names give hints.
21:53:30 <Vorpal> ah
21:53:55 <elliott> fizzie: Isn't there an achievement in #1 for reloading the page?
21:53:57 <elliott> Or was that #2.
21:54:34 <fizzie> Could be. There's all kinds of meta-stuff.
21:54:49 <fizzie> Like the "Bandwidth Exploiter: Preload the game", which I haven't figured out how not to get.
21:55:00 <fizzie> IIRC I've always just initially gotten it automatically.
21:55:06 <elliott> fizzie: That's the joke. :p
21:55:13 <elliott> You get the sponsorship screen one immediately too.
21:55:15 <elliott> And the main menu one.
21:55:29 <elliott> Flash people call all loaders "preloaders".
21:55:34 <fizzie> I guess.
21:55:42 <fizzie> "Preload" just makes it sound like something special.
21:55:55 -!- rodgort has joined.
21:56:14 <elliott> Phantom_Hoover: Guess how much SO rep I have (NO PEEKING). kallisti: Also you.
21:56:18 * elliott gloat.
21:56:20 * elliott goat.
21:56:36 <Phantom_Hoover> elliott, five tillion.
21:56:50 <elliott> Phantom_Hoover: NO BUT SERIOUSLY???? It's more than that I mean come on.
21:57:13 -!- copumpkin has joined.
21:58:35 <elliott> SHEESH.
22:00:38 <fizzie> "Clear! You Finished in 644 Seconds". Well, that was a nice and well-wasted ten minutes and a bit.
22:00:53 <fizzie> Also not much of a score. :p
22:01:29 <fizzie> The first time took quite a bit longer though.
22:02:35 <kallisti> elliott: all the rep
22:02:42 <elliott> kallisti: NO
22:02:43 <elliott> AS A NUMERIC
22:02:43 <elliott> VALUE
22:03:04 <kallisti> "100 goats"
22:03:08 <kallisti> Perl counts right?
22:03:22 <elliott> kallisti: AS ANEUREMNRCUMCIC
22:03:23 <elliott> VALUE
22:03:27 <kallisti> THIS IS A NUMERIC CONTEXT
22:03:28 <elliott> SITHHEAD!!!
22:03:28 <kallisti> THEREFORE
22:03:34 <kallisti> NUMERITC VALUE
22:03:49 <elliott> So... 100?
22:03:57 <kallisti> maybe
22:04:24 <elliott> fizzie: Ban kallisti.
22:04:30 <fizzie> Bankai.
22:04:39 <kallisti> for some reason the silent g in poignant unnerves me.
22:05:14 <fizzie> For some reason the murderous but bouncy insects of poing-ant unnerve me.
22:05:27 <elliott> @tell catseye Become cpressey dammit!
22:05:28 <lambdabot> Consider it noted.
22:05:37 <elliott> @tell cpressey FELIX IN ACTION: http://stackoverflow.com/a/8684400/1097181
22:05:38 <lambdabot> Consider it noted.
22:05:57 -!- zzo38 has joined.
22:06:23 <elliott> He's going to get that in like five years.
22:06:34 <kallisti> uh sorry Google I don't think pungent and poignant are synonyms.
22:07:05 <elliott> kallisti: GUESS A NAUMAAUMBUMBER
22:07:20 <kallisti> elliott: jiffreysnop
22:07:25 <elliott> Phantom_Hoover: UGUES A NUMBER
22:07:26 <kallisti> `words 25
22:07:33 <HackEgo> pappliatic engraphage poston mel jag esque beggy eite basto belocheta ant elufe baldank schesaun rec pula disan exha graphil henkehrbur escam sylhel trivabi embulbecom rejani
22:08:06 <Phantom_Hoover> 25
22:08:09 <Phantom_Hoover> 34946
22:08:26 <fizzie> "I bought Spiritual Survival During the Y2K Crisis last year at a Thrift Store and here is the bookmark that was left inside it: http://users.ics.tkk.fi/htkallas/diagrammatis.jpg" -- cracked.com. That's some serious religious research going on there. (Didn't want to direct-link their image.)
22:08:32 <elliott> Phantom_Hoover: NEITHER OF THOSE
22:08:37 <elliott> In fact it is between those.
22:09:01 <kallisti> > "elliott: " + (unwords $ map show [0..])
22:09:02 <lambdabot> No instance for (GHC.Num.Num [GHC.Types.Char])
22:09:03 <lambdabot> arising from a use of `GH...
22:09:09 <kallisti> > "elliott: " ++ (unwords $ map show [0..])
22:09:11 <lambdabot> "elliott: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
22:09:16 <kallisti> elliott: here I've produced all the numbers
22:09:16 <elliott> fizzie: Is it bad that my first thought was "that would make good album art"?
22:12:50 -!- MSleep has joined.
22:14:30 <kallisti> I loved diagrams like this in my literature class
22:14:42 <kallisti> they were always a huge mess of lines and circles and vague concepts.
22:14:48 <zzo38> That diagram is difficult for me.
22:14:48 <lambdabot> zzo38: You have 5 new messages. '/msg lambdabot @messages' to read them.
22:14:56 <fizzie> kallisti: Did they always end up in "RELATIONAL ANARCHY !!" too?
22:15:00 <kallisti> no
22:15:10 <kallisti> they were usually about Freedom and Love and stuff like that.
22:15:26 <elliott> fizzie: Hey, you've DONE SOMETHING to zem.fi. (The non-zem.fi URL of that made me curious.)
22:15:41 <elliott> Also you have a host called β.zem.fi for some reason.
22:16:07 <kallisti> zzo38: it's a FSA, the initial state is Resekah (see the double circle)
22:16:19 <elliott> Ohh, I know what happened. fizzie was setting up a new computer and it asked for the hostname and he said "beta" but you know how it is with speech recognition.
22:16:52 <kallisti> also finnish accents.
22:16:55 <zzo38> kallisti: Doesn't it say "REBEKAH"?
22:17:05 <kallisti> zzo38: oh. yes
22:17:06 <fizzie> elliott: Yes, it's a bit messed up right now. With the faster-and-cheaper tubes came non-static IPs, and I didn't want to have the main "zem.fi" A record change all the time, so I put the local stuff into β.zem.fi which is a CNAME of a lower-TTL dynamically updated record, and let that prgmr VPS hold the main "zem.fi" thing. Maybe one day I'll put a website(tm) up there.
22:17:16 <kallisti> zzo38: I am bad at Bible.
22:17:18 <oerjan> in which elliott finally gouds [sp?] fizzie to use his op powers
22:18:03 <oerjan> *goad
22:18:17 <zzo38> Even if it is FSA, it is still difficult, there is all sorts of different lines, shapes, overlapping stuff, and so on.
22:18:23 <kallisti> "wandered off into a rape" huh, wonder how that happened.
22:18:27 <fizzie> elliott: Anyway, "beta.zem.fi" also works, I just had this weird hankering of some IDNs. It doesn't really work in e.g. this Chromium; since it thinks I don't read Greek, or some-such, it just shows "xn--nxa" instead of "β".
22:18:42 <elliott> fizzie: Apache's error message is where I saw it; it does the ponycode too.
22:18:48 <elliott> How "lame".
22:19:05 <kallisti> zzo38: Biblical characters are more difficult than computers.
22:19:14 <fizzie> Firefox whitelists by TLD, so IDNs in ".fi" get shown properly.
22:19:40 <fizzie> I don't think the TLD strategy really makes sense to apply for IDNy stuff in the not-the-second-level-domain-name.
22:19:59 <kallisti> the TLD kind of mystifies me...
22:20:12 <kallisti> like, what kind of server farm is handling all that traffic?
22:20:15 <elliott> fizzie: Maybe we should stop relying on visual appearance of glyphs for security. :p
22:20:20 <kallisti> or is that how it even works?
22:20:21 <elliott> kallisti: http://www.root-servers.org/
22:20:30 <elliott> kallisti: DNS results are cached at basically every level.
22:20:37 <elliott> Most requests you make won't ever get outside your ISP.
22:21:03 <fizzie> Firefox folks whitelist TLDs which have a published "policy" for either disallowing similar-looking glyphs, or dealing with the confusion.
22:21:08 <elliott> kallisti: But the root servers still get hammered with traffic most people can't even dream about because of bad configurations.
22:21:18 <elliott> (Do the root servers run on any special hardware config, I wonder, or just beefy commodity stuff?)
22:21:41 <fizzie> Some (many) of them are in anycast IPs that get routed to the nearest of N actual servers, at least.
22:21:52 <fizzie> And they don't run stock BIND from what I recall. :p
22:22:01 <zzo38> There is a mode to always show ASCII domain names. My program always show ASCII domain names anyways
22:22:11 <kallisti> elliott: how does my computer know where to send DNS queries to?
22:22:17 <elliott> kallisti: Your router tells it.
22:22:30 <elliott> Via DHCP.
22:22:31 <elliott> kallisti: Most likely it tells you to get your DNS results from your router.
22:22:39 <elliott> And your router talks to your ISP's DNS server.
22:22:40 <fizzie> http://en.wikipedia.org/wiki/Root_servers#Root_server_addresses -- 9 out of 13 are distributed to multiple places.
22:22:47 <kallisti> oh yes DHCP
22:22:51 <kallisti> that thing that also mystifies me.
22:22:54 -!- MSleep has changed nick to MDud.
22:22:58 -!- MDud has changed nick to MDude.
22:23:13 <fizzie> I see there's a K and I instance in Finland.
22:23:14 <elliott> kallisti: It's just a protocol for "hey, gimme an IP and a DNS server IP". :p
22:23:30 <elliott> It would be very awesome if every DNS query had to go through a single root server, to a TLD server, to a hosting company, though.
22:23:31 <kallisti> where does your router get the IP for the TLD?
22:23:38 <kallisti> ISP?
22:23:46 <elliott> kallisti: It doesn't, it just talks to the ISP.
22:23:51 <elliott> The ISP will know where the root servers are, of course.
22:23:54 <kallisti> ah okay.
22:23:58 <kallisti> that makes more sense.
22:24:06 <elliott> I believe it's only the tier-something ISPs that actually do DNS stuff, but don't quote me on that.
22:24:26 <fizzie> elliott: Those, and people like Vorpal who want to run their own DNSSEC-enabled resolvers. :p
22:24:36 <elliott> fizzie: Those whats?
22:24:38 <elliott> Oh, right.
22:24:47 <kallisti> elliott: how does my router know the IP for my ISP network hub thing.
22:24:51 * kallisti is so good at networking.
22:24:51 <elliott> fizzie: Vorpal has a measure of 0 or something.
22:25:02 <elliott> kallisti: Well, your router's sole purpose is kind of to talk to your ISP. :p
22:25:31 <fizzie> Initial DHCP request (before the client has an address at all) is sent to 255.255.255.255, and thus picked up by the DHCP server on the link.
22:25:42 <fizzie> DHCP also carries all kinds of random crap; my current ISP sticks NTP time server addresses there.
22:25:44 <kallisti> hm okay.
22:26:06 <kallisti> so it just broadcasts a DHCP request.
22:26:59 * kallisti is now wondering how broadcast addresses work.
22:27:09 * elliott decides to defer to fizzie now as he's exhausted his expertise.
22:27:32 <elliott> kallisti: The DHCP request probably doesn't go to every host on the internet, mind you :P
22:27:37 <kallisti> well yes
22:27:38 <fizzie> kallisti: That depends on what the IP's going over on. E.g. on Ethernet they're sent as broadcast frames, which are picked up by everyone on the link.
22:27:40 <kallisti> on the local network
22:27:42 <kallisti> er
22:27:44 <elliott> I'm pretty sure the ISP will just respond to any DHCP stuff addressed to 255.255.255.255.
22:27:44 <kallisti> the step above
22:27:46 <kallisti> the local network
22:27:49 <kallisti> or whatever
22:27:50 <elliott> That's sent over the wirezz.
22:27:56 <elliott> Oh, wait.
22:28:01 <elliott> I misread what kallisti was talking about.
22:28:11 <kallisti> ah okay that's how broadcast works.
22:28:18 <fizzie> And right, no-one routes 255.255.255.255 forward. It's just that the client doesn't know the network-specific broadcast address it should use at that point.
22:28:38 <elliott> fizzie: I think the inability to send packets to the entire internet is one of internetworking's greatest failures.
22:28:43 <elliott> I mean, multicast would be so simple.
22:29:02 <fizzie> elliott: Also you could then deprecate all other addresses, and then routing would be so simple too.
22:29:08 <kallisti> elliott: yes I agree I should be able to command my botnet to flood every router in the world with spam packets.
22:29:14 <elliott> fizzie: Yes.
22:29:23 <elliott> kallisti: Well, *one* packet to the entire internet would probably not do THAT much.
22:29:32 <elliott> (I don't know, maybe it would, ask fizzie.)
22:29:39 <kallisti> but I'm spamming packets constantly
22:29:42 <elliott> fizzie: Also we'd save so much space in IP packets, just drop the IP fields.
22:29:44 <kallisti> as fast as possible
22:29:50 <elliott> fizzie: And we'd never have to upgrade.
22:30:12 <kallisti> on (potentially) hundreds of network nodes (help I am bad at network terminology)
22:30:29 <elliott> WHOLE HUNDREDS?
22:30:31 <kallisti> YES
22:30:33 <elliott> That's some mighty big botnet, dude.
22:30:33 <kallisti> HUNDREDS
22:30:37 <kallisti> THOUSANDS MAYBE
22:30:43 <kallisti> how big do botnets get?
22:30:53 <elliott> Storm: 160,000 to 50 million.
22:30:57 <elliott> kallistinet: HUNDREDS TO THOUSANDS
22:31:12 <elliott> (The Storm estimates are a bit... wide: "Some have estimated that by September 2007 the Storm botnet was running on anywhere from 1 million to 50 million computer systems.[1][2] Other sources have placed the size of the botnet to be around 250,000 to 1 million compromised systems. More conservatively, one network security analyst claims to have developed software that has crawled the botnet and estimates that it controls 160,000 infected computer
22:31:12 <elliott> s.")
22:31:35 <fizzie> kallisti: Anyway, after it's gotten an IP once, as long as the "lease" for the IP it gets is still valid (those tend to be valid for a day or so), the DHCP client keeps just periodically contacting the DHCP server it knows about and saying "is it okay if I keep this address a bit longer?", and the initial "I don't know who I am and where I am" discovery process doesn't really happen except if the router's been off-link for a long while. (I do think the
22:31:35 <fizzie> clients also ask about expired leases if they're not *too* old.)
22:32:16 <fizzie> I guess if you were a dicky DHCP server you could enforce non-stable addresses, though.
22:32:43 <fizzie> "No, no, you've had that address for like a week already, give someone else a turn with it. Share and enjoy!"
22:32:51 <elliott> Someone link to that vulgar DNS comic, that will answer every question.
22:33:07 <kallisti> "the operators of the botnet began to further decentralize their operations, in possible plans to sell portions of the Storm botnet to other operators."
22:33:12 <kallisti> I would totally buy a botnet.
22:33:26 <fizzie> Think about all the bitcoins you could mine.
22:33:52 <elliott> Storm could easily take over the bitcoin network even if it's only 160k strong, couldn't it?
22:34:03 <elliott> I mean, you only need to control over half the nodes to completely break the chain thing, IIRC.
22:34:15 <fizzie> Also it would be awesome if the bitcoin mining earning potential would be >= the botnet rent you have to pay. Doesn't sound too likely, though.
22:34:31 <elliott> Failing that 160k to 50 million computers with ordinary CPUs and maybe even semi-decent GPUs is... pretty powerful.
22:34:36 <kallisti> botnet rent?
22:34:44 <kallisti> what if I just /buy/ it.
22:34:49 <elliott> BBC did that.
22:35:01 <elliott> http://news.bbc.co.uk/1/hi/programmes/click_online/7938201.stm
22:35:03 <fizzie> From what I've understood, normally people just rent.
22:35:06 <elliott> The most legal thing.
22:35:13 <kallisti> elliott: dude if I get botnet what do?
22:35:35 <elliott> kallisti: Use it to take down the spammers you work for.
22:35:54 * elliott idly dreams of using Storm to DDOS spammers.
22:36:05 <kallisti> shhh, you're not supposed to talk about that.
22:36:30 <elliott> But I did!
22:36:38 <elliott> Maybe I was JOKING.
22:36:43 <kallisti> MAYBE
22:36:45 <elliott> Maybe you just RUINED IT and INCRIMINATED YOURSELF.
22:36:55 <kallisti> maybe I was joking too, huh?
22:38:08 <kallisti> elliott: I wonder if Storm has ever DDOS'd 4chan
22:38:55 <elliott> kallisti: You realise they're used for money-making illegal activities, not for shits and giggles.
22:39:04 <kallisti> yes
22:39:55 -!- shachaf has joined.
22:40:08 <kallisti> I find the software behind such a system fascinating, despite its purpose.
22:41:01 <fizzie> I wonder if the good old Back Orifice still exists.
22:41:14 <kallisti> that it reacts to repeated malware requests by launching a DOS attack. I imagine it's also capable of patching itself otherwise it would quickly disappear.
22:41:57 <fizzie> It used to be so that you could just probe dialup network ranges with the standard BO port, and find about three to five computers with that wide open within each /24.
22:42:05 <fizzie> Presumably it's all more professional now.
22:42:19 <Vorpal> <elliott> I believe it's only the tier-something ISPs that actually do DNS stuff, but don't quote me on that. <-- looking at the DHCP config my ISP has it's own one
22:42:40 <Vorpal> <elliott> The ISP will know where the root servers are, of course. <-- that is a "well known" list
22:42:53 <elliott> Yes, it is.
22:42:56 <fizzie> Everyone *has* a DNS server, but it's anyone's guess whether they forward to their transit providers, or do full recursive queries themselves.
22:43:15 <elliott> What the fizzie bot said.
22:43:20 <Vorpal> fizzie, right
22:44:53 <elliott> :t replicate
22:44:54 <lambdabot> forall a. Int -> a -> [a]
22:46:19 <fizzie> Incidentally, the root servers only tell resolvers where each TLD's own name servers are. So [ABCDEFGHIJKLM].root-servers.net only answers queries of the form "where's .fi?" by saying "at [abcdefghi].fi, with these IP addresses", and then those servers handle all queries of "so where's foo.fi then?"
22:46:59 <elliott> fizzie: I want to see traffic statistics/hardware info, but am too lazy to google. :(
22:47:01 <fizzie> .com and .net are both hosted on [abcdefghijklm].gtld-servers.net, while .org is on Afilias' nameservers, and so on.
22:47:41 <fizzie> "A survey in 2003 [2] reports that only 2% of all queries to the root servers were legitimate. Incorrect or non-existent caching was responsible for 75% of the queries, 12.5% were for unknown TLDs, 7% were for lookups using IP addresses as if they were domain names, etc. Some misconfigured desktop computers even tried to update the root server records for the TLDs."
22:47:47 <fizzie> Most of what they get is just crap. :p
22:48:03 -!- derdon has quit (Remote host closed the connection).
22:48:22 <fizzie> [2] is a link to report titled "Wow, That's a Lot of Packets".
22:48:50 <fizzie> "Organizations operating Root DNS servers report loads exceeding 100 million queries per day." --Wow, That's a Lot of Packets.
22:49:13 <fizzie> It looks stupid in an attribution line like that.
22:49:26 -!- sebbu2 has joined.
22:49:26 -!- sebbu2 has quit (Changing host).
22:49:27 -!- sebbu2 has joined.
22:49:50 -!- sebbu has quit (Ping timeout: 255 seconds).
22:49:50 <oerjan> we shall now have to make a report titled "It looks stupid in an attribution line like that."
22:49:58 <elliott> fizzie: What, only 100 million?
22:50:08 <elliott> How big's a DNS query this side of Neptune?
22:50:13 <Vorpal> elliott, per root server I presume?
22:50:42 <fizzie> Mostly they're a single UDP packet, so less than 1500 bytes.
22:50:58 <elliott> So 140 gigabytes a day at the worst.
22:51:00 <kallisti> "A second variant of the virus, discovered in December 2008, added the ability to propagate over LANs through removable media and network shares.[18] " -- Conficker article
22:51:01 <elliott> Pfft.
22:51:03 <kallisti> that's... insane.
22:51:11 <Vorpal> elliott, "exceeding" it says
22:51:12 <Vorpal> hm
22:51:24 <elliott> Vorpal: Anything under a terabyte a day is peanuts!! :P
22:51:34 <Vorpal> true
22:51:55 <elliott> I mean, that's only 1.7 megs/sec.
22:51:58 * kallisti puts flash drive in infected computer and is now carrying a computer virus with him to any other computer he uses.
22:52:13 <Vorpal> elliott, root servers has an easy job really. The hard work is for TLD servers I expect
22:52:15 <elliott> kallisti: This is why you always wear a condom.
22:52:32 <kallisti> is that code for linux?
22:52:33 <elliott> Vorpal: Yes, let's get fizzie to dig up TLD server reports.
22:52:46 <Vorpal> elliott, I didn't say that
22:53:00 <fizzie> There's a well-known traffic amplification attack, to flood DNS servers with a very short query which generates a very long response, and a spoofed source address. If the answer is (say) 50 times longer than the query, if you send a megabyte's worth of queries per second, the spoofed source will get 50 megabytes/sec of spurious DNS answers from all around the interwebs.
22:53:09 <elliott> Vorpal: No, I was being serious, let's.
22:53:12 <Vorpal> elliott, but anyway on properly configured systems stuff like .com .net and so on will be cached pretty quickly
22:53:24 <elliott> fizzie: That sounds fun. Is that practical these days?
22:53:31 <Vorpal> elliott, there are many more entries under .com than under the root
22:53:40 <Vorpal> thus I expect much much higher load there
22:54:23 -!- oerjan has quit (Quit: Good night).
22:54:30 <fizzie> Oh, I'm sure it still works up to some degree, though maybe not quite that well. You do need to find "open resolver" style DNS servers.
22:55:51 <fizzie> And I'm pretty sure responsible such (like, say, Google's ones, which probably have fat pipes) have some sort of "do not send more than K packets/second to a single client" limits.
22:56:32 <fizzie> It's not like DNS traffic in a regular situation should consume much bandwidth at all.
22:57:16 <elliott> Unless you're using BITTORRENT OVER DNS.
22:57:25 <elliott> Oh. http://www.netrogenic.com/dnstorrent/
22:57:34 <elliott> Aw, it just works for .torrent files.
22:57:35 <elliott> Not the data itself.
22:57:57 <Vorpal> elliott, wait you joked about it and didn't know it existed?
22:58:18 <elliott> Well... yes.
22:58:30 <Vorpal> ah
22:58:31 <fizzie> You can do "IP over DNS" to use (some) non-free Wifi networks without paying.
22:58:40 <Vorpal> heh
22:58:43 <fizzie> They can't block all DNS traffic, or their own login pages wouldn't work.
22:58:53 <zzo38> fizzie: Yes I have thought of the same kind of idea
22:58:57 <elliott> Oh, how shocking, the dot-p2p thing doesn't load any more.
22:59:02 <kallisti> reading the Wikipedia article on Conficker is like "How to write a botnet: the book"
22:59:04 <fizzie> If they do happen to allow arbitrary DNS traffic, as long as you have a cooperative name server somewhere, you can talk over that.
22:59:09 <zzo38> Actually, even for use with ones that you do not ordinarily have to pay.
22:59:15 <zzo38> In case the login page won't work
22:59:31 <fizzie> http://thomer.com/howtos/nstx.html
22:59:34 <fizzie> That's the old thing.
22:59:38 <zzo38> Or in case some other things are blocked for some reason
23:00:10 <fizzie> And the linked-to iodine is a newer thing.
23:00:37 <fizzie> Packaged in Debian and everything.
23:00:53 <fizzie> It's sort of impolite for the DNS server, though.
23:01:08 <fizzie> Well, and impolite for the network operator too, of course, especially if they expect people to pay.
23:01:27 <Vorpal> heh
23:01:36 <fizzie> But at least one of the systems (maybe NSTX?) caused quite huge loads on (at least some) DNS servers.
23:01:54 -!- Ngevd has quit (Ping timeout: 240 seconds).
23:02:01 <fizzie> Possibly iodine tries to reduce that, I haven't checked.
23:03:23 <Vorpal> was looking at the current daily deals. This one sounds like it has a pretty wide scope: "Universe Sandbox"
23:03:26 <Vorpal> elliott, ^
23:04:10 <Vorpal> some pretty good stuff in the deals today though. 75% off all GTA games for example
23:05:23 <zzo38> One one WiFi that says "Free WiFi (except HTTP, HTTPS, MSN, and people who smoke inside this building while using this WiFi service)"
23:06:42 <Vorpal> so you could just ssh tunnel
23:07:08 <zzo38> Well, yes, you could use SSH tunnel.
23:07:29 <zzo38> If you don't have one then too bad
23:07:50 <fizzie> I seem to hear "AirPort Network", "JepJepJoo", "Macverkko", "THOMSON", "TS", "zuHause" and "ZyXEL" to my desk. These are all other people's private networks, though. (Except the THOMSON one in fact seems open. Curious.)
23:08:28 <zzo38> (Except for smoking is not allowed even SSH tunnel, because that is due to smoking laws instead of internet)
23:08:57 <fizzie> Oh, there's also "jepjep" in addition to "JepJepJoo". Wonder if those are related.
23:09:19 <fizzie> And the "zuHause" folks must be Germans, probably planning to burn down the building.
23:09:50 <Vorpal> fizzie, I can see 44 networks if I place my laptop in the window
23:09:53 <Vorpal> otherwise around 12
23:10:12 <Vorpal> fizzie, there are no networks around here on channel 13 though so I picked that one
23:10:16 <fizzie> There's a different set in different rooms.
23:10:21 <Vorpal> well yes
23:10:33 <fizzie> Channel 13's one of those that are not valid globally, IIRC.
23:10:55 <Vorpal> also this is is not a very urban area. Villaområde, whatever that is in English
23:11:07 <Vorpal> fizzie, exactly
23:11:14 <Vorpal> it is valid in Sweden though
23:11:35 <fizzie> Also in Finland.
23:11:56 <fizzie> "Except not on Fridays, due to bad luck." (Okay, not really. But wouldn't that be screwy?)
23:12:36 <zzo38> I suppose if you want to, you could make a WiFi network that disables channel 13 on Friday
23:13:10 <Vorpal> ...
23:13:57 <fizzie> Apparently the regulatory situation for the 5 GHz channels is ever more complicated than for regular old 2.4 GHz.
23:14:38 * Sgeo_ wonders if Befunge-98 is easier to implement in Haskell due to laziness
23:14:54 <Sgeo_> A whatever by whatever array that defaults to 0 or something
23:15:12 <Sgeo_> ...is defaults to 0 a sensible thing for Haskell arrays to do
23:15:21 <fizzie> It should default to 32, anyway. :p
23:15:42 <Vorpal> fizzie, heh
23:15:47 <Sgeo_> Although hmm, would it try to store every box in memory at once, that's no good
23:15:47 <Vorpal> fizzie, well I have a 11g network
23:16:09 <fizzie> And I don't really think functional datastructures are "easier" (than what?), based on how long it seems to take for elliott to finally finish that CCBI-killing Fungespace for Shiro. :p
23:16:30 <fizzie> The new VDSL2 box does some 11n stuff.
23:17:05 <fizzie> With 50M downstream, it probably doesn't help all that much, though; and anyway the old iBooks and the N900 don't do 11n either.
23:17:39 <fizzie> (Except that according to speedtest.net I seem to be getting around 68M downstream, I don't know what's up with that. Not that I'm exactly complaining.)
23:23:39 <fizzie> The box has a statistics page with byte counters that seem to be saturating 32-bit, because the numbers are stuck at 2147483647. I'm not sure if that's better or worse than 32-bit with wraparound. At least there (if you poll often enough) you can compute running totals yourself.
23:23:46 <kallisti> fizzie: ooooh wicked burn
23:24:22 <fizzie> kallisti: Yes, I'm expecting like eight pointed comments about speech recognition in retaliation.
23:24:38 <kallisti> fizzie: well I think the issue was that he was inventing a non-standard data structure from scratch, iirc.
23:27:24 -!- olsner has joined.
23:27:39 <kallisti> I guess a "non-functional" data structure in the context of Haskell would be, say, an opaque pointer to a mutable array.
23:28:09 <kallisti> basically a non-ADT
23:30:23 <elliott> Back.
23:30:25 -!- Patashu has joined.
23:31:00 <elliott> <fizzie> And I don't really think functional datastructures are "easier" (than what?), based on how long it seems to take for elliott to finally finish that CCBI-killing Fungespace for Shiro. :p
23:31:25 <elliott> fizzie: Only because I'm trying to do an extreme optimisation while staying pure and immutably.
23:31:28 <elliott> *immutable
23:31:50 <elliott> If I wasn't trying to emulate Oleg, it'd be done in the 3 days Shiro 1 was. :p
23:32:45 <elliott> <Vorpal> was looking at the current daily deals. This one sounds like it has a pretty wide scope: "Universe Sandbox"
23:32:46 <elliott> Vorpal: Olde
23:33:14 <elliott> <fizzie> Oh, there's also "jepjep" in addition to "JepJepJoo". Wonder if those are related.
23:33:18 <elliott> Warring Wi-Fi clans.
23:33:24 <elliott> <Vorpal> fizzie, I can see 44 networks if I place my laptop in the window
23:33:30 <elliott> Vorpal: I thought you lived in nowheretown.
23:34:09 <elliott> Sgeo_: Anyway, the problem with constructing fungespace up-front is that just moving through spaces allocates unfreeable memory.
23:34:18 <elliott> Only inserts should do that, preferably.
23:35:06 <elliott> Phantom_Hoover: Guess how many reps out of 200 I made today!
23:35:10 <kallisti> 200!
23:35:27 <elliott> Wrong! The correct answer is 305.
23:35:47 <olsner> 305? that's not over 9000, nor is it (probably) numberwang
23:35:52 <shachaf> > product [1..200]
23:35:53 <lambdabot> 788657867364790503552363213932185062295135977687173263294742533244359449963...
23:36:05 <shachaf> kallisti clearly thinks highly of you, elliott.
23:36:17 <elliott> shachaf: That was yesterday.
23:36:35 <shachaf> Oh, today isn't over yet?
23:36:45 <shachaf> Do you know what I hate, by the way?
23:36:54 <elliott> Happiness?
23:36:59 <olsner> perl?
23:37:01 <olsner> python?
23:37:01 <elliott> Relational databases?
23:37:04 <shachaf> People who make "you said <number> exclamation mark therefore you meant factorial ha ha ha!" jokes.
23:37:17 <elliott> Yes, I too hate at least one person who has made one of those jokes.
23:37:17 <olsner> i.e. elliott
23:37:27 <elliott> olsner: I'm way above that, man.
23:37:33 <shachaf> It's exactly the same joke each time.
23:37:37 <elliott> OK, slightly above.
23:38:36 <shachaf> Turns out the server running my IRC client was down.
23:39:08 <kallisti> why do you have a server running your IRC client?
23:39:11 <elliott> This is why reasonable people IRC directly; then when their IRC server is down, they can't use their computer at all.
23:39:31 <shachaf> I kept thinking the network I'm using was blocking outgoing SSH connections.
23:39:37 <shachaf> Which it *was*, some of the time, I think.
23:41:57 <shachaf> Now I need to reörder all my channels.
23:41:58 <shachaf> Ugh.
23:42:04 <shachaf> Did that Unicode character not go through?
23:42:26 <shachaf> The one between "re" and "rder".
23:42:39 <olsner> worked for me yes
23:42:41 <olsner>
23:42:47 <elliott> Worked.
23:42:55 <shachaf> Doesn't work here.
23:42:58 <shachaf> Great.
23:43:06 <shachaf> Now even most of Unicode is broken.
23:45:31 <olsner> well, obviously... everything is broken you see
23:52:23 <zzo38> If you have viewed the Agora Horoscope, have you wondered what all those lines on the chart are doing, what the numbers are doing, what "Placidus houses" means, why the glyphs for Pluto and Uranus are different to what you knew before, and what "Node" means?
23:54:56 * Phantom_Hoover → sleep
23:54:58 -!- Phantom_Hoover has quit (Quit: Leaving).
23:55:10 <elliott> Pfft, it's not even midnight.
23:55:21 <zzo38> At least, in here is not even midnight.
23:59:16 <zzo38> ?messages
23:59:16 <lambdabot> itidus21 said 8d 17h 14m 9s ago: welcome back
23:59:16 <lambdabot> itidus21 said 8d 17h 13m 17s ago: it was funny for me at the time since you were joining and leaving at a high rate. but the joke has expired
23:59:16 <lambdabot> oerjan said 5d 14h 14m 1s ago: btw, fmap' shows that T is also a contravariant functor in its first argument.
23:59:16 <lambdabot> oerjan said 12h 35m 26s ago: <zzo38> When looking at the continuation monad definitions, I notice it seems to be similar to the type for double nots <-- http://en.wikipedia.org/wiki/Curry%E2%80%
23:59:16 <lambdabot> 93Howard_correspondence#Correspondence_between_classical_logic_and_control_operators is probably relevant
23:59:18 <lambdabot> kallisti said 11h 52m 25s ago: I recall that you were interested in giving Haskell a more extensible syntax. If you look at Perl 6 you can see that it provides a way to redefine language syntax.
23:59:20 <lambdabot> Perhaps you could look at this for inspiration on how this could be done in Haskell.
23:59:34 <kallisti> lolwat
23:59:40 <kallisti> oh right
23:59:50 <zzo38> ?messages
23:59:50 <lambdabot> You don't have any new messages.
2011-12-31
00:00:15 <elliott> HAPPY 2011.997260274 EVERYBODY!
00:00:24 * elliott parties
00:01:08 <olsner> now that is a milestone worth celebrating
00:01:44 <elliott> fizzie: iodine would be a lot more interesting if you didn't need a server :)
00:02:57 <olsner> iodine, the ip-over-dns thing?
00:03:10 <elliott> yeah
00:03:31 <olsner> been thinking about setting that up ... it's missing a nice android app though
00:04:52 <zzo38> I think there should be something like Astrolog for portable devices with GPS
00:05:29 <elliott> hmm, what else can you tunnel IP over
00:05:33 <elliott> How about AP identifiers?
00:05:43 <elliott> Can commodity hardware broadcast one of those?
00:06:09 <elliott> You'd just base-64 encrypted packets as the SSIDs, and then get the response from the other machine symmetrically.
00:06:21 <elliott> Kind of, um, pointless though.
00:07:11 <fizzie> It's not as funky if it only goes as far as the radio connection would anyhow reach.
00:08:33 <fizzie> hostap sends the regular AP advertisement frames; quite a few chipsets can't do the AP mode though, at least without suitable firmware.
00:08:36 <shachaf> What if you could, like, tunnel IP packets *over other IP packets*?
00:09:18 <elliott> I don't suppose you could somehow convince DNS servers to send a DNS query to a server that happens to also be a valid HTTP packet.
00:09:18 <fizzie> You might confuse people looking at their "wlan networks" lists. And passing wardrivers.
00:09:45 <fizzie> They normally only converse over UDP, so that'd be quite a feat.
00:09:53 <elliott> HTTP over UDP. :p
00:11:20 <elliott> fizzie: How about IP over DHCP?
00:11:54 <fizzie> There's a "UHTTP" draft, I can't recall in which context I saw it. It's not quite that, though; it's a HTTP derivative for unidirectional broadcast-only scenarios.
00:13:16 <fizzie> I suppose that would work, but not *through* someone's DHCP server really; and if they let you to talk to your arbitrary DHCP server, chances are you could send any UDP traffic to that port and run OpenVPN/something.
00:13:45 <elliott> :(
00:14:38 <fizzie> Maybe some DHCP option would cause the DHCP server to do something externally observable, though can't think of anything right now.
00:14:57 <olsner> shachaf: ip over ip? wild!
00:15:22 <fizzie> And communication to the other direction (so that you could affect the DHCP server's response from some external source) would probably be even trickier.
00:15:58 <olsner> if you find a DoS attack that you can reverse at will, do morse code by controlling the length of their outages
00:16:16 <fizzie> IP over any other IP would smell as sweet.
00:17:20 <zzo38> There is IP over carrier pigeon, it is very slow but it has been done.
00:17:29 <olsner> (or not morse code, but a better code for arbitrary binary data)
00:18:56 <elliott> fizzie: IP over, umm, umm...
00:18:59 <elliott> Umm.
00:19:15 <olsner> IP over twitter?
00:19:20 <elliott> Maybe... IMAP?
00:19:36 <elliott> Ooh, ooh, how about NTP?
00:20:13 <fizzie> There are some firewalls that don't really do stateful packet filtering, but just rely on the fact that you need a TCP 'SYN' packet to establish an outgoing connection; thusly they allow non-SYN TCP under the impression that it's an "established connection". You could tunnel through firewalls like that with IP-over-broken-TCP.
00:20:41 <elliott> X-D
00:21:19 <zzo38> Astrolog does not support hour angles. I know some programs allow the 0 degrees to be set to other objects such as the North Node, but it should allow any object. And then if you also allow negative harmonic factors, then selecting equatorial coordinates with Zenith at 0 and -1 harmonic factor, that should display hour angles.
00:21:21 <elliott> C'mooon, IP over NTP, work with me here.
00:21:30 <fizzie> IP-over-NTP has the same problem as IP-over-DHCP that in general the servers just respond, they don't forward your questions along.
00:22:05 <Gregor> IP over DHCP is considerably more feasible (also: actually implemented, IIRC) than IP-over-NTP ...
00:23:34 <fizzie> How's that at all useful? Or does that really go "through" an un-collusive DHCP server?
00:23:42 <elliott> I guess what we're learning here is that the only bidirectional highly-connected ubiquitous global public system is DNS :P
00:23:51 <elliott> Probably because having two of them is really painful.
00:23:57 <shachaf> elliott: There's also IP.
00:23:58 <elliott> (Although so is having one.)
00:24:13 <elliott> shachaf: Well, that's not really the same kind of distributed system, is it? I suppose it's similar.
00:24:22 <elliott> I don't think IP routers do the same kind of caching, though :P
00:24:27 <shachaf> They should!
00:24:38 <elliott> Clearly we should extend IP so that it can do DNS.
00:24:52 <shachaf> Maybe IP should be content-addressed.
00:25:06 <elliott> Also that.
00:25:57 <elliott> fizzie: Tell me how to do DNS over IP!
00:26:09 <fizzie> "IP over DHCP" is kind of hard to Google for, because it's all full of talk about getting an IP address "over" (as in, via) DHCP.
00:26:23 <olsner> "When DHCP server is on an other VLAN, when swyx phones don't become an IP adress and DHCP relay is configured on the switch, you have to delete."
00:26:37 <olsner> is one thing I found googling for it... sounded interesting, but not related to IP-over-DHCP
00:26:53 <olsner> especially curious about the need to delete
00:27:12 <fizzie> elliott: Well, you could start by defining an UDP-based protocol, and then setting up a set of well-known-address servers that would serve as the root of the distributed database...
00:27:35 <fizzie> (In other words, DNS runs over IP.)
00:28:14 <elliott> FireFly: It was a joke.
00:28:16 <olsner> fizzie: it is possible that it was some sort of joke
00:28:20 <elliott> YEAH FIREFLY
00:28:23 <elliott> TAKE THAT
00:29:49 <FireFly> :<
00:30:54 <olsner> ip over ntp might be interesting when considered as steganography - though it might be hard to explain the amount of ntp traffic you need to generate to "update your clock"
00:31:36 <fizzie> olsner: Perhaps you just *really* care about the time.
00:32:04 <shachaf> How about IP over Ethernet?
00:32:25 <shachaf> elliott: Should I install Arch?
00:33:06 -!- monqy has joined.
00:33:44 <olsner> fizzie: yeah, so it shouldn't be hard to convince people that you're just clinically insane and obsessed about losing time, and not at all involved in clandestine operations
00:35:38 <fizzie> olsner: Certainly easier than, say, steganography over innocuous-looking IRC comments. (Also there is NOTHiNG going on here, and the unusual letter casing earlier was not at all significant.)
00:37:05 <fizzie> Also, X+jS5u5nNU01u9fCFXtEVb5sr4dXQjhuSL3E1BsMmUA=. Just thought I should mention.
00:39:35 <olsner> indeed
00:39:49 <olsner> IP over IRC then?
00:40:13 <fizzie> I'd almost guesstimate that would have been done.
00:40:22 <olsner> yeah, it should've been
00:41:00 <fizzie> http://offog.org/ideas/ip-over-everything.html
00:41:11 <fizzie> The linked-to 'ipox' sounds like it has.
00:41:33 <fizzie> It's not being very openy, but still.
00:42:04 <Sgeo_> What is with people named Oleg?
00:42:07 <Sgeo_> Or is this the same Oleg?
00:42:32 <olsner> though I think Ethernet over IRC is a better fit: each channel corresponds to an ethernet segment, clients that have joined several channels can act as switches/bridges, and somewhere there could be routers
00:42:58 <olsner> Sgeo_: different olegs
00:43:09 <Sgeo_> How many Olegs are there?
00:43:20 <olsner> I think Oleg is a fairly common russian and/or slavic name
00:43:24 <Sgeo_> 2 or 3, I think. THE Oleg, ipox Oleg, and esolangs Oleg
00:43:35 <Sgeo_> I don't know if ipox Oleg and esolangs Oleg are the same
00:44:09 <Sgeo_> But User:Oleg is not THE Oleg, right?
00:44:15 <olsner> esolangs oleg is unknown to me
00:44:47 <Sgeo_> http://esolangs.org/wiki/User:Oleg
00:45:29 <olsner> that appears to be an Oleg Mazonka
00:45:59 <olsner> the "THE Oleg" is (iirc) Oleg Kiselyov or something similar
00:46:51 -!- azaq23 has joined.
00:47:47 <olsner> anyway.. speaking of IP-over-anything, the way it should work is that your OS figures out what's accessible and whatever that is (an open wifi allowing only NTP access?) it'll hook you up to the interwebs somehow
00:53:25 <Gregor> WTF kind of wi-fi only has NTP access >_>
00:53:58 <olsner> one where IP-over-NTP is required
00:54:50 <Gregor> lol
00:55:28 <elliott> back
00:55:34 <elliott> <shachaf> elliott: Should I install Arch?
00:55:39 <elliott> shachaf: Onto Ethernet? Yes.
00:55:56 <elliott> <fizzie> olsner: Certainly easier than, say, steganography over innocuous-looking IRC comments. (Also there is NOTHiNG going on here, and the unusual letter casing earlier was not at all significant.)
00:56:00 <elliott> fizzie: WHAT LETTER CASIIIING
00:56:47 -!- PiRSquared17 has quit (Quit: ChatZilla 0.9.88 [Firefox 11.0a2/20111230042026]).
00:56:49 <elliott> Gregor: the time wifi
00:56:53 <elliott> tifi
00:56:55 <elliott> witi
01:02:19 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:02:42 <elliott> fizzie: That base64 is binary. :/
01:05:11 <olsner> elliott: it's just bait to keep you from finding the hidden messages
01:08:23 <olsner> hmm, I think it's sleepytime
01:12:03 <olsner> now, I do wonder how much power my laptop drains in sleep/standby mode.. will 9870mWh last until morning or should I plug it in before going to sleep?
01:17:17 -!- olsner has quit (Ping timeout: 268 seconds).
01:36:59 -!- Sgeo_ has quit (Remote host closed the connection).
01:37:46 -!- Sgeo has joined.
01:38:02 <Sgeo> elliott, kallisti update
01:39:31 -!- DCliche has joined.
01:42:42 -!- Klisz has quit (Ping timeout: 240 seconds).
01:45:24 -!- GreaseMonkey has joined.
01:47:53 <zzo38> http://esolangs.org/wiki/User:Zzo38/Astro-Q (PLEASE DO NOT MOVE THIS DOCUMENT TO MAIN NAMESPACE. IT DOES NOT BELONG THERE. KEEP IT UNDER MY USER NAMESPACE)
01:58:59 -!- kallisti has quit (Ping timeout: 260 seconds).
02:02:59 -!- kallisti has joined.
02:03:00 -!- kallisti has quit (Changing host).
02:03:00 -!- kallisti has joined.
02:03:56 -!- tswett has joined.
02:04:17 <elliott> zzo38: why caps
02:04:30 <tswett> `echo Warrigal is awesome
02:04:33 <HackEgo> Warrigal is awesome
02:04:40 <tswett> HackEgo: you're awesome, too.
02:04:47 <elliott> whos wargl
02:05:16 <zzo38> elliott: It is in capitals on that page, too. I made it like that to ensure that people pay attention to that message instead of moving it to the main namespace
02:05:33 <tswett> elliott: only the most awesome guy you've ever heard of.
02:05:50 <elliott> zzo38: why do you think people would do that though, i've never seen that happen on esowiki
02:06:16 * elliott thinks the admins might object to the existence of the page, though
02:06:27 <zzo38> That is why I put that note there.
02:06:56 <zzo38> There are other subpages of my userpage as well which some esolang wiki people might not like, too, possibly.
02:07:03 <elliott> huh? what is why you put the note there?
02:07:46 <zzo38> http://esolangs.org/w/index.php?title=Special%3APrefixindex&from=User%3AZzo38&namespace=0
02:07:59 <elliott> ok...
02:10:03 <zzo38> Did you read this article too? http://esolangs.org/wiki/User:Zzo38/FurryScript
02:10:34 <elliott> yes, that one is about an esolang though :P
02:11:43 <zzo38> Sort of
02:12:06 <zzo38> I designed as a domain-specific language, actually, but it could be considered esolang too
02:12:29 <zzo38> Really I just put it there to document it since some people have asked me to document it there on wiki, in a subpage of my user page.
02:13:58 <zzo38> Did you see this one too? http://esolangs.org/wiki/User_talk:Zzo38/FurryScript
02:15:53 <Sgeo> elliott, what do you think about Nix?
02:16:20 <elliott> Sgeo: do you mean nix or nixos
02:16:22 <elliott> or nixpkgs
02:16:36 <Sgeo> I'm curious about your opinion on all of them
02:17:04 <Sgeo> Although I'm a bit fuzzy on the difference between nix and nixpkgs. Is nixpkgs just a central repository for nix?
02:17:07 <Sgeo> nix packages
02:17:56 <elliott> nixpkgs is a cross-platform collection of nix derivations
02:18:11 <elliott> that can either work as a bootstrapped closed system (i.e. no outside dependencies past a bootstrap) or using host compilers etc.
02:19:12 <elliott> anyway
02:19:28 <elliott> nix is a raelly good idea and lightyears ahead of any existing package managers, although i disagree with several design decisions
02:19:30 <elliott> *really
02:20:03 <elliott> nixpkgs I... don't really have an opinion on, it's not really interesting beyond being a source of packages to use with nix. i guess they're okay, but it tends to lag behind a bit too much for my tastes
02:20:22 <elliott> nixos is a good generalisation of nix's basic concept to operating system services but i'm not sure it's ready for prime time, and i again disagree with some design decisions
02:26:24 <zzo38> Do you know how to disable CPUID stuff for ARM processors?
02:35:57 * Sgeo is going to try putting Nix on the school computer
02:36:12 <Sgeo> BECAUSE I CAN (maybe)
02:36:27 <Sgeo> Also, maybe it will enable me to get Haskell on there finally
02:44:15 <elliott> Sgeo: I wouldn't recommend it just to get GHC/Haskell pkgs.
02:44:32 <Sgeo> elliott, you mentioned bootstrapping stuff, right?
02:44:36 <elliott> I don't think there's a decent solution for getting a full up-to-date Hackage set with Nix.
02:44:37 <elliott> Sgeo: Huh?
02:44:45 <elliott> How is that relevant?
02:44:48 -!- MDude has changed nick to MSleep.
02:44:52 <Sgeo> If I get nix's version of gcc with glibc or whatever working, maybe I can get Haskell working
02:45:02 <Sgeo> I think my school's system uses some obsolete ... stuff
02:45:14 <elliott> I don't know if that method is supported outside of NixOS.
02:45:15 <Sgeo> I couldn't compile GHC from source (well, from source and binary)
02:45:22 <elliott> What binary version?
02:45:35 <Sgeo> I don't remember
02:45:39 <elliott> I see.
02:46:03 <Sgeo> ....and Nix did not compile
02:48:02 <Sgeo> In file included from nixexpr.hh:6,
02:48:02 <Sgeo> from nixexpr.cc:1:
02:48:02 <Sgeo> symbol-table.hh:5:29: tr1/unordered_set: No such file or directory
02:48:02 <Sgeo> In file included from nixexpr.hh:6,
02:48:02 <Sgeo> from nixexpr.cc:1:
02:48:13 <Sgeo> And then a bunch of errors after that that I can only assume are connecte
02:48:15 <Sgeo> d
02:48:25 -!- PiRSquared17 has joined.
02:48:31 <PiRSquared17> Finnmark
02:48:41 <elliott> yes
02:48:50 <elliott> Sgeo: your C++ library is too old
02:49:02 <elliott> Sgeo: getting ghc compiled properly will be a lot easier.
02:49:26 <Sgeo> I think it's too old for that
02:49:53 <elliott> ok, i'll defer to your expert opinion.
02:50:01 <Sgeo> As in, I tried it
02:50:13 <Sgeo> Or at least, I tried what I thought was the way to compile it properly
02:50:23 <elliott> yes, but you didn't tell us what went wrong, and there's no guarantee you did it correctly...
02:50:26 <Sgeo> Although maybe you're referring to with the assistance of another machine
02:50:33 <elliott> no
02:50:40 <elliott> although you do have a perfectly good one right there
02:50:45 <elliott> you're typing on it :p
02:51:07 <Sgeo> The times I tried it, I was on a Windows machine at school, so I couldn't use that to help
03:00:01 <elliott> does anyone know how long war and peace took to write
03:00:04 <elliott> this is important info
03:01:06 <elliott> @tell fizzie Chrome thinks your GitHub profile is one of my favourite sites because "github" completes to it. Thought you should know.
03:01:07 <lambdabot> Consider it noted.
03:01:26 -!- Sgeo_ has joined.
03:03:45 <elliott> Sgeo how long did war and peace take to write
03:03:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:06:48 <elliott> :(
03:07:23 * Sgeo_ thought you were quizzing him for some reason
03:08:43 -!- Darth_Cliche has joined.
03:08:54 <elliott> no i actually need the info for science reasons
03:12:38 -!- DCliche has quit (Ping timeout: 255 seconds).
03:12:45 <elliott> sheesh ill look it up myself
03:13:00 <Gregor> Time to push debug info into the Fythe AST format ...
03:13:27 <Gregor> WITH MAGIC
03:13:55 <elliott> ok six years
03:14:02 <elliott> no thanks to Sgeo_
03:14:14 <elliott> i'm going to be waiting an awfully long time
03:19:44 <Sgeo_> I should make my schedule for next semester
03:19:53 <Sgeo_> I'm already closed out of philosophy classes :(
03:21:35 * elliott f5s github wildly
04:01:34 <kallisti> elliott: bad manner
04:01:39 <kallisti> LDLDLDLDLDLDLDLD
04:04:10 <elliott> kallisti: waht
04:05:22 <kallisti> :D
04:09:24 <kallisti> I want to play a good strategy RPG
04:09:44 <kallisti> I guess Dragon Age is an example of such a game.
04:10:01 <kallisti> preferably real-time or semi-real-time
04:14:11 <elliott> kallisti: skiram
04:20:13 <itidus21> i suggest to everyone joining #freenode-newyears .. why? i dunno
04:20:25 <monqy> i dont want to ;_;
04:21:09 <itidus21> good idea.. best not to
04:21:28 <zzo38> I suggest to don't joining #freenode-newyears .. unless you really want to do so.
04:22:00 <itidus21> well.. my comment is more about making it known :P
04:23:17 <elliott> but its like infinite hours until new years
04:23:48 -!- cheater has joined.
04:23:52 <zzo38> Have you play Dungeons & Dragons game?
04:24:14 <zzo38> Did you play Scrabble or flower card or D&D at new year eve?
04:24:47 <itidus21> i was spamming. lets overlook it.
04:25:46 <zzo38> What did you watch at new year eve, anyways?
04:39:54 <elliott> :t mapM_
04:39:55 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m ()
04:44:35 <elliott> @hoogle mapM_
04:44:35 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
04:44:35 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
04:44:35 <lambdabot> Data.Foldable mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
04:44:40 <elliott> @hoogle void
04:44:40 <lambdabot> Foreign.Marshal.Error void :: IO a -> IO ()
04:44:40 <lambdabot> Control.Monad void :: Functor f => f a -> f ()
04:44:40 <lambdabot> package void
04:45:24 <itidus21> thats an awesome language
04:46:43 -!- GreaseMonkey has quit (Quit: The Other Game).
04:55:28 <kallisti> elliott: skyrim is in absolutely no way a strategy game.
04:56:12 <kallisti> (note that "having strategies" doesn't count as a strategy game. Most games have those. )
04:56:31 <zzo38> Then play skiram instead of skyrim
04:57:19 <kallisti> ...
04:57:26 <kallisti> you mean this: http://www.youtube.com/watch?v=Lh1-z_UhHhk (turn volume down)
04:57:39 <kallisti> Loks like grate gam
04:58:22 -!- itidus21 has quit (Ping timeout: 276 seconds).
05:00:37 -!- NihilistDandy has joined.
05:04:00 <zzo38> class Swap s where { swap :: s x y -> s y x; } Laws: swap . swap = id
05:06:30 <kallisti> looks good.
05:07:07 <kallisti> What would you call a function where f . f . f = id
05:07:45 <zzo38> kallisti: I don't know.
05:08:56 <kallisti> I'm tempted to call it like a "2-cycle inversion" or something terrible like that.
05:09:06 <zzo38> If you extended it to three maybe it is Rot like how Forth has a ROT command
05:10:07 <elliott> http://stackoverflow.com/questions/8686376/recursive-haskell-and-stack-overflow Haskell can't evaluate infinite loops in finite time
05:10:12 <elliott> this is why nobody uses Haskell in the Real World!
05:11:47 <kallisti> lolwat
05:11:59 <kallisti> I wonder the "exact same code in Python" looks like
05:12:35 <kallisti> +what
05:14:08 <kallisti> >>> def countStairs(n): countStairs(n-1) + countStairs(n-2) + countStairs(n-3)
05:14:08 <kallisti> ...
05:14:09 <kallisti> >>> countStairs(5)
05:14:20 <kallisti> (...several lines down...)
05:14:26 <kallisti> RuntimeError: maximum recursion depth exceeded
05:14:34 <kallisti> sanity restored.
05:15:08 <kallisti> oh I forgot the return.
05:15:18 <kallisti> maybe Python will optimize out the recursion. :>
05:15:52 <Sgeo_> Python doesn't have TCO
05:16:04 <kallisti> oh really?
05:16:14 <kallisti> I didn't know. >:)
05:16:56 <monqy> tco is unpythonic
05:17:15 <kallisti> optimizations in general are unpythonic, I believe.
05:17:34 <zzo38> I have a music file containing the following notice: "a word of wisdom: if your nose is running, and your feet are smelling, check to see if you're upside down..."
05:17:55 -!- itidus21 has joined.
05:17:57 <kallisti> heh
05:18:10 <zzo38> (It appears in the sample names menu)
05:20:24 <zzo38> What is a generalized mathematical structure having a zero and a successor called? (Simply such that every one has a successor; not that they are infinite or that every element can be reached in this way)
05:22:35 -!- itidus21 has quit (Ping timeout: 252 seconds).
05:24:29 -!- itidus21 has joined.
05:28:46 <elliott> "You, sir, are awesome." Pffft, as if compliments encourage me. All I care about is making my little number go up!!!
05:29:05 <elliott> One day someone will present me with a number marked "how awesome you are" and give me a button I can press to increase it, and that will be the end of my productive life.
05:31:52 <zzo38> class C t where { z :: t; s :: t -> t; }; No laws (other than always being fully defined). What kind of mathematical structure is this?
05:32:03 <elliott> c
05:33:15 <zzo38> No
05:35:06 -!- centrinia has joined.
05:35:48 <kallisti> `run perl -v
05:35:51 <HackEgo> ​\ This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi \ (with 53 registered patches, see perl -V for more detail) \ \ Copyright 1987-2009, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be found on \ this system using
05:36:04 <elliott> `welcome centrinia
05:36:07 <elliott> it's tradition
05:36:08 <HackEgo> centrinia: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
05:36:29 <centrinia> Wow, I started a tradition.
05:36:40 <zzo38> centrinia: Are you sure?
05:36:57 <centrinia> Maybe elliott started it.
05:36:59 <kallisti> `run echo 0 > share/awesome; (echo '#!/usr/bin/perl'; echo 'use v5.10;open my$f,"share/awesome";$_=1+<$f>;print"How awesome you are: ";say;select$f;say;close') > bin/awesome; chmod +x bin/awesome
05:37:03 <HackEgo> No output.
05:37:04 <kallisti> `awesome
05:37:07 <HackEgo> How awesome you are: 1
05:37:15 <kallisti> elliott: ^
05:37:49 <elliott> `run echo inf >share/awesome; rm bin/awesome
05:37:50 <kallisti> better get to work.
05:37:52 <HackEgo> No output.
05:37:56 <elliott> optimised
05:38:07 <kallisti> elliott: but now can't see how awesome you are.
05:38:12 <elliott> `cat share/awesome
05:38:15 <HackEgo> inf
05:38:22 <kallisti> elliott: that's an unspecified quantity
05:38:25 <elliott> the system can't handle my awesomeness so it forgets the label
05:38:28 <elliott> not my fault im too cool
05:38:28 <kallisti> it needs to say "how awesome you are: inf"
05:38:44 <elliott> `run echo 'how awesome you are: inf' >share/awesome
05:38:48 <HackEgo> No output.
05:38:48 <elliott> so awesome i even patched the software's bugs
05:39:07 <kallisti> there are no bugs in the software
05:39:11 <kallisti> the specification is the code itself.
05:39:23 <kallisti> which now no longer exists..
05:39:31 <kallisti> (in the current working copy)
05:40:11 <elliott> "GHC actually has a cache of small values of type Int and Char, so in many cases these take no heap space at all. A String only requires space for the list cells, unless you use Chars > 255." ;; huh, i did not realise this
05:40:49 <kallisti> doesn't GHC also automatically unbox values when such is possible?
05:40:54 <kallisti> and reasonable.
05:41:01 <shachaf> Doesn't GHC typically store small strings in memory as C-style strings?
05:41:15 <kallisti> o.o?
05:41:25 <shachaf> I mean, along with the list cells.
05:41:30 <shachaf> I thought it did for some reason.
05:41:52 <zzo38> Let's playing D&D game of player characters named "Also" and "Kjugobe"?
05:42:10 <kallisti> it would have to determine that it doesn't grow indefinitely I would think otherwise that wouldn't be very efficient.
05:42:19 <kallisti> or, well, hmm
05:42:33 <kallisti> no because strings are immutable anyway.
05:42:43 <elliott> shachaf: Well, it compiles them to C strings inteh binray and linked-listifies them at runtime, IIRC.
05:42:45 <elliott> Wow I can't type.
05:42:54 <elliott> Otherwise GHC executables would be even bigger.
05:43:15 <zzo38> If there is something wrong then correct it please
05:43:25 <elliott> I would but I am lazy.
05:43:31 <elliott> Oh, you mean about what you said?
05:43:56 <kallisti> I wonder how the file IO functions like getContents work. I would think it reads in larger chunks than characters.
05:45:20 <Sgeo_> elliott, would you be mad if I, say, made ftphs-conduit instead of ftphs-enumerator?
05:46:35 <elliott> Sgeo_: My extremely controversial opinion is that I really don't care one bit.
05:47:10 <shachaf> elliott: Oh.
05:47:20 <shachaf> At runtime.
05:49:12 <elliott> kallisti: (hGetContents h) is just (unsafeInterleaveIO . join $ ((\c -> (c:) <$> hGetContents h) <$> getChar) `catch` \e -> if isEOFError e then return [] else throwIO e)))))))) or whatever.
05:49:29 <elliott> i.e. a trivial getChar loop but with unsafeInterleaveIO at every node.
05:49:42 <shachaf> elliott: What happens if you combine this small-cache thing with kmc's mutability hack?
05:50:03 <kallisti> elliott: I don't actually know what unsafeInterleaveIO does.
05:50:22 <elliott> shachaf: Let's not find out.
05:50:31 <shachaf> elliott: Oh, come on.
05:50:31 <elliott> kallisti: return . unsafePerformIO
05:50:38 <shachaf> That's against the spirit of this channel.
05:50:45 <kallisti> elliott: lolwat. weird.
05:50:48 <shachaf> You gotta do it, man.
05:52:40 <Sgeo_> kallisti, From an IO a, it gives an IO a, where doing the IO gives back an "a", but it's lazy and the original IO won't be performed until a is looked at similarly to ordinary laziness.
05:53:30 <elliott> Sgeo_: You're encouraging my pedantic hat.
05:54:05 <Sgeo_> ?
05:54:27 <elliott> kallisti: It transforms an action into one that has no side-effects and returns immediately; when forced, the value it returns causes the original action to be executed, and evaluates to its result.
05:54:28 <shachaf> Sgeo_: elliott is saying that you're being so imprecise it hurts.
05:54:33 <shachaf> Or something along those lines.
05:54:44 <kallisti> elliott: ah
05:54:57 <elliott> My pedantic hat transforms clear statements into ones with twenty repetitions of "action that when executed returns".
05:55:23 <Sgeo_> elliott, your statement is clearer IMO
05:55:52 -!- centrinia has quit (Quit: Leaving).
05:56:14 <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :)
05:57:29 <Sgeo_> unsafeInterleaveIO has fans? (Besides me when I first learned about it)
05:57:50 <elliott> Well, not "fans". There are of course people who believe its use legitimate.
05:58:11 <Sgeo_> I saw a function somewhere that seemed to be a legitimate use of unsafeInterleaveIO
05:58:18 <Sgeo_> Oh, right, fixIO
05:58:27 <elliott> A common argument that I almost believe is that it's essentially just forkIO-style concurrency; IO actions are nondeterministic, so it's not actually impure to have effects in the spawned thread execute only when a value is forced.
05:59:01 <Sgeo_> http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/System-IO.html#fixIO
05:59:15 <elliott> i.e. Let's say we have { data Var a; new :: IO (Var a); write :: Var a -> a -> IO (); read :: Var a -> a } where writes after the first one fail.
05:59:24 <elliott> And read blocks until a write.
06:00:13 <elliott> unsafeInterleaveIO m = do { sync <- new; value <- new; forkIO (evaluate (read sync) >> m >>= write value); return (unsafePerformIO (write sync ()) `seq` read value) }
06:00:38 <elliott> It's essentially just concurrency, the impurity is isolated in the part where IO gets knowledge of when a pure value is forced.
06:00:52 <elliott> But IO can do that sort of thing anyway; observable sharing and whatnot.
06:01:05 * elliott is only *almost* convinced of this, though.
06:01:25 <shachaf> elliott: Isn't part of it that the IO might not be executed at all?
06:01:57 <elliott> shachaf: Well, yes. But to make my implementation a bit more abstract:
06:02:12 <Sgeo_> Should I write my own indefinite-precision number library for the learning experience?
06:03:08 <elliott> shachaf: unsafeInterleaveIO m = do { value <- new; let result = read value; forkIO (waitUntilForced result >> m >>= write value); return result }
06:03:32 <elliott> shachaf: If you agree that the Var interface is pure, then the only question is whether waitUntilForced is pure.
06:03:37 <elliott> Erm.
06:03:40 <elliott> shachaf: If you agree that the Var interface is pure, then the only question is whether waitUntilForced is "semantics-breaking".
06:03:55 <elliott> (I'm not sure I agree the Var interface is pure, but I think waitUntilForced is as benign as things we do in IO all the time.)
06:04:27 <elliott> (I mean, you can still use Var to control whether a pure value is _|_ or not from IO.)
06:04:40 <elliott> (But in a sense that's morally indistinguishable from it just taking a really long time to evaluate if you never write to it.)
06:04:54 <elliott> shachaf: So I don't see how whether the IO is ever executed or not is really relevant.
06:05:05 <shachaf> This Var thing is kind of like IVar, isn't it?
06:05:24 <shachaf> Maybe I should actually read what you're saying instead of assuming things about it.
06:05:42 <elliott> shachaf: It's exactly IVar. :p
06:05:51 <elliott> But yes, that would be good.
06:06:09 <shachaf> Isn't the usual IVar implementation in Haskell given with read :: IVar a -> IO a?
06:06:09 <elliott> Oh, hmm.
06:06:13 <elliott> It's not data-ivar IVars.
06:06:18 <kallisti> elliott: do you think it would be possible to make Haskell orthagonally persistent?
06:06:20 <elliott> Right, this is IVar with read outside of IO.
06:06:29 <elliott> kallisti: Orthogonal persistence is a property of systems, not languages.
06:06:33 * shachaf is iffy about this IVar-with-read-outside-of-IO thing.
06:06:46 <elliott> shachaf: Yes, but for the moment accept it on faith.
06:06:54 <kallisti> elliott: do you think it would be possible to change the GHC runtime system so that it's orthagonally persistent?
06:06:59 <elliott> That and waitUntilForced are all you need to accept to believe that unsafeInterleaveIO is just another concurrency mechanism.
06:07:29 <kallisti> elliott: in a way that you could... like... turn on as a language extension perhaps? or an IO action or....?
06:07:47 <shachaf> waitUntilForced as in "wait until (read var) is evaluated"?
06:07:50 <elliott> kallisti: I don't know much about the GHC runtime, but I dunno, since it's thoroughly entrenched in C and traditional operating systems... maybe, since the number of C structures it uses is limited, and youc ould swap out the allocator... I'm not really interested in that, though. Also you're misspelling orthogonally.
06:07:51 <shachaf> No, I don't like that at all.
06:08:20 <elliott> shachaf: Oh, hmm, my implementation is broken. But it's trivial to fix without introducing new primitives.
06:08:25 <elliott> shachaf: What do you think of observable sharing?
06:08:32 <elliott> That's possible to do solely from IO.
06:08:48 <elliott> And that "breaks" Haskell's semantics in similar ways; you can observe things you Can't(tm) about pure values.
06:08:48 <shachaf> That's at least one more level of evil than concurrency primitives.
06:08:56 <shachaf> Sure, you "can" do anything from IO.
06:09:01 <elliott> shachaf: It's an implication: "if waitUntilForced is OK, then this is just concurrency".
06:09:03 <zzo38> I think they are all wrong. Better way, make separate parts of the program, one is IO, and then another program takes the execution of that program as an IO to make a new IO from that, so that way include all threading and "undefined" use error and memory manage and so on, so that both sides are mathematically correct even though their combination, if combined directly, isn't.
06:09:15 <elliott> shachaf: You "'can'"?
06:09:18 <elliott> I'm not sure what you're getting at.
06:09:20 <shachaf> But I think you'll agree that putStrLn is more benign than writing into /dev/mem.
06:09:45 <elliott> Sure. I'm not denying that. I'm just asking why, or if, you think waitUntilForced is less benign than observable sharing.
06:10:06 <shachaf> I'm not sure I said that.
06:10:24 <elliott> (Were I Conal, I would win by pointing out that the fact that you can do anything in IO means we have no idea what Haskell programs actually mean and then riding a unicorn off into the sunset.)
06:10:29 <elliott> shachaf: That's why I said "or if". Sheesh :P
06:10:44 <shachaf> elliott: I was trying not to Godwin Conal into this discussion, man.
06:11:05 <elliott> I parenthical-Godwinned him.
06:11:07 <shachaf> There's probably a law involving Conal and discussions of IO in Haskell.
06:11:09 <zzo38> What do you think my suggestion means (if anything)?
06:11:40 <shachaf> elliott: Anyway, I think observable sharing is less benign than concurrency primitives.
06:11:57 <shachaf> I don't know what "benign" actually means, of course.
06:11:59 <elliott> shachaf: Why do you believe I'm saying unsafeInterleaveIO is as benign as concurrency primitives in stock Haskell?
06:12:13 <shachaf> Why do you believe I believe that?
06:12:25 <elliott> What I am saying is: If you accept Var and waitUntilForced as OK, then unsafeInterleaveIO *literally is* a concurrency feature. (Not even a primitive.)
06:12:38 <shachaf> Oh, well, sure.
06:12:39 <elliott> shachaf: Because you keep answering my questions as if you do.
06:12:42 <shachaf> You gave an implementation up there.
06:12:50 <elliott> Well, yes, that's the point.
06:12:55 <shachaf> Well, right.
06:13:03 <shachaf> Are we arguing about *that*?
06:13:04 <elliott> I'm just saying that Var and waitUntilForced both seem a lot less horrible than unsafeInterleaveIO.
06:13:05 <shachaf> That would be silly.
06:13:14 <elliott> Which is why I almost believe unsafeInterleaveIO is OK.
06:13:26 <elliott> But I don't really, because I don't totally believe in Var.
06:13:35 <shachaf> Why does waitUntilForced seem less horrible than unsafeInterleaveIO?
06:13:38 <elliott> Ah, this is Var: http://hackage.haskell.org/packages/archive/sink/0.1.0.1/doc/html/Data-Sink.html
06:14:08 <shachaf> elliott: Your implementation *does* use unsafePerformIO.
06:14:10 <shachaf> Oh, wait, it doesn't.
06:14:51 <shachaf> "Sinks are a more flexible alternative to lazy I/O (unsafeInterleaveIO)."
06:14:53 <elliott> shachaf: Actually, waitUntilForced I have zero qualms about. It's Var I find suspect. But it doesn't seem horrible because reacting to pure values in side-effectful ways is sort of the entirety of what IO does. I have absolutely no qualms -- beyond my standard qualms about IO, I mean, if we're in the sin bin, might as well use it -- about IO-based observable sharing, and waitUntilForced actually seems more benign than that to me.
06:15:18 <shachaf> I'm not sure I'd want my thing to be called "more flexible alternative to unsafeInterleaveIO".
06:15:40 <elliott> shachaf: Well, Var is blantantly less powerful than unsafeInterleaveIO, because you'd have to just immediately do the IO to make use of it like that :)
06:16:55 <elliott> shachaf: Actually, you don't even really need waitUntilForced.
06:17:45 <elliott> entangle :: IO ((), ()); entangle = do { v <- new; return (unsafePerformIO (write v ()), read v) }
06:18:23 <elliott> unsafeInterleaveIO m = do { value <- new; (trigger, wait) <- entangle; forkIO (evaluate wait >> m >>= write value); return (trigger `seq` read value) }
06:18:59 <shachaf> I'm pretty sure anything called "entangle" isn't benign at all.
06:19:06 <elliott> Glad we're on the same page!
06:19:09 <elliott> I really want to put that on Hackage now.
06:19:23 <shachaf> As long as it, like, starts with acme-, man.
06:21:50 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
06:22:41 <zzo38> How much mathematically correct do you think my suggestion is, compared to the other way?
06:23:50 <elliott> entangle :: IO ((), ())
06:23:50 <elliott> entangle =
06:23:50 <elliott> fmap ((`putMVar` ()) &&& takeMVar >>> both unsafePerformIO) newEmptyMVar
06:23:53 <elliott> shachaf: Beautiful, no?
06:24:10 <monqy> :t both
06:24:10 <lambdabot> Not in scope: `both'
06:25:56 <zzo38> Does window have two hose?
06:26:40 <elliott> monqy: join (***)
06:26:59 <elliott> shachaf: I've decided that isn't worthy of the name entangle.
06:27:08 <elliott> shachaf: I shall now construct an entangle where
06:27:29 <elliott> After (a, b) <- entangle, forcing either "a" or "b" only terminates when the other is.
06:27:32 <elliott> That is, err, they synchronise.
06:29:12 <monqy> what would be worthy of the name entongle
06:30:00 <zzo38> What is the mathematical name for a kind of mathematical structure like I described above "class C"?
06:31:28 <elliott> i don't know :(
06:31:29 <elliott> sorry
06:32:14 <zzo38> Do you know someone know mathematics better?
06:32:35 <elliott> monqy: do you like my revised entangle i think its: grate
06:33:26 <monqy> i dont know what its about ;_; black magicks???
06:33:44 <elliott> monqy: entangle returns a pair of ()s; forcing each () blocks until the other is forced
06:33:54 <elliott> that is, evaluating either terminates only when both are evaluated
06:34:09 <monqy> wonderful
06:34:38 <quintopia> sounds like a mutex-like thing
06:35:31 <elliott> quintopia: yes but this is with pure values :')
06:35:33 <elliott> they're just
06:35:35 <elliott> quantum magic
06:36:18 <zzo38> To me it seems mathematically incorrect; the result of the program should always have an answer according to its input, not according to the number of times it is used.
06:36:23 <quintopia> i think it doesnt sound much like the behavior of quantum entanglement
06:36:56 <elliott> monqy: here's my next trick......
06:37:01 <elliott> cross :: IO (a -> b, b -> a)
06:37:07 <elliott> guess what it doe
06:37:08 <elliott> s
06:37:18 <monqy> oh no
06:37:23 <elliott> :D
06:39:17 <kallisti> lolwat
06:40:00 <elliott> *Main Control.Parallel> (f, g) <- cross :: IO (String -> Int, Int -> String)
06:40:00 <elliott> *Main Control.Parallel> let x = f "hi"; y = g 42 in x `par` y `par` (x, y)
06:40:00 <elliott> (42,"hi")
06:40:00 <elliott> *Main Control.Parallel> (f, g) <- cross :: IO (String -> Int, Int -> String)
06:40:00 <elliott> *Main Control.Parallel> let x = f "hi"; y = g 42 in (x, y)
06:40:00 <elliott> (
06:40:03 <elliott> monqy: isn't it beautiful
06:40:25 <zzo38> Quantum entanglement is still mathematicall correct, however.
06:41:27 <elliott> shachaf: You gotta think cross is benign.
06:41:28 <elliott> It's the benignest.
06:41:40 <monqy> its spookey
06:41:55 <itidus21> what does it do?
06:42:36 <elliott> it um
06:42:39 <elliott> i'm not even sure how to explain it
06:42:45 <itidus21> does it do anything?
06:42:47 <elliott> one function feeds the value into the other
06:42:50 <elliott> in
06:42:53 <elliott> a very unsanitary way
06:43:17 <itidus21> is it a swap, or something far more diabolical?
06:43:27 <elliott> its
06:43:29 <elliott> dibblocal
06:44:59 <itidus21> rumor has it that cross is an abominantion
06:45:21 <zzo38> I think my "class C" resembles the first six Peano axioms on http://en.wikipedia.org/wiki/Peano_axioms so maybe it is a "Peanoid"
06:45:37 <zzo38> Is that even a word?
06:46:08 <monqy> its piano
06:46:29 <zzo38> Can you play piano?
06:46:31 <elliott> monqy: here's a wonderful thing you can build with cross
06:46:33 <elliott> tell :: IO (a -> (), a)
06:46:33 <elliott> tell = do
06:46:33 <elliott> (f, g) <- cross
06:46:33 <elliott> return (f, g ())
06:46:45 <elliott> oh wait that doesn't work quite right
06:46:49 <itidus21> Peanon aksioomat ovat matematiikassa italialaisen matemaatikko Giuseppe Peanon esittmt yhdeksn aksioomaa, jotka mrittvt luonnolliset luvut. Aksioomat perustuvat funktioon S, jolle S(a)=a+1 (merkitn mys Sa=a+1) kaikilla luonnollisilla luvuilla a.
06:47:08 <monqy> yes
06:47:23 <zzo38> Good.
06:47:23 <elliott> *Main Control.Parallel> (f,x) <- tell :: IO (Int -> (), Int)
06:47:24 <elliott> *Main Control.Parallel> f 42
06:47:24 <elliott> ()
06:47:24 <elliott> *Main Control.Parallel> x
06:47:24 <elliott> 42
06:47:27 <elliott> i fixed it
06:48:45 <elliott> shachaf: Hey, I could combine these with kmc's mutation hack.
06:49:04 <elliott> vary :: IO (a, a -> IO ()) -- you can write multiple times
06:51:27 <zzo38> Is there a better name than "peanoid"?
06:51:59 <copumpkin> elliott: not IO (IO a, a -> IO ()) ?
06:53:41 <elliott> copumpkin: Hell no!
06:53:51 <elliott> copumpkin: This all got started with entangle :: IO ((),()); guess what it does.
06:53:52 <copumpkin> oh ok
06:54:18 <copumpkin> sounds useful
06:54:57 <elliott> That's not a guess. :(
06:55:50 <copumpkin> um
06:55:52 <Sgeo_> elliott, kallisti update
06:56:05 <copumpkin> it does all sorts of evil shit with unsafeperformio and then gives you a ()
06:56:15 <elliott> copumpkin: Sheesh! It gives you TWO ()s.
06:56:18 <elliott> copumpkin: Two ENTANGLED ()s.
06:56:21 <copumpkin> zomg
06:56:23 <elliott> Entangled with value ().
06:56:31 <copumpkin> they sound extremely useful
06:56:40 <copumpkin> both of them
06:56:48 <elliott> copumpkin: Either one only evaluates to () when both are being forced.
06:56:53 <elliott> It's a synchronisation primitive!
06:57:13 <elliott> You both just look at your ()s at the right time, and once it's in WHNF you know you've both looked at it.
06:57:14 <copumpkin> lol
06:57:23 <elliott> entangle = do
06:57:24 <elliott> a <- newEmptyMVar
06:57:24 <elliott> b <- newEmptyMVar
06:57:24 <elliott> return (sync' a b, sync' b a)
06:57:24 <elliott> where sync' x y = unsafePerformIO $
06:57:24 <elliott> putMVar x () >> (takeMVar y `onException` takeMVar x)
06:57:43 -!- Darth_Cliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:58:32 <Sgeo_> elliott, shall I assume you read updates when I say update?
06:59:06 <elliott> I don't read kallisti's new updated code.
06:59:12 <elliott> He's too defective to be fixed by incremental patching.
06:59:17 <elliott> But it's good to know someone's on the job.
06:59:18 <Sgeo_> lol
07:06:28 -!- PiRSquared17 has quit (Quit: Bye ...).
07:10:55 <kallisti> elliott: ;_;
07:16:16 <elliott> ok im slep
07:16:20 <elliott> zzzs
07:17:10 <monqy> z
07:20:37 -!- elliott has quit (Ping timeout: 240 seconds).
07:26:09 <kallisti> how are extensions implemented?
07:26:28 <kallisti> are they just patched into GHC or is there like an API.
07:43:50 -!- itidus21 has quit (Ping timeout: 252 seconds).
07:49:46 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
07:58:19 <Sgeo_> kallisti, update
08:11:15 <zzo38> Do you know the "two envelopes problem"? I think if you are allowed to open it, the solution is to count the money, and if it is odd then you have to switch. But, if the smaller money is even then the larger money will be a multiple of four, and so on. Is the people offering you the envelopes trying to trick you?
08:24:43 -!- zzo38 has quit (Remote host closed the connection).
08:26:43 <shachaf> @tell elliott Aw, I was eating dinner while you were innovating.
08:26:43 <lambdabot> Consider it noted.
08:31:38 -!- azaq23 has quit (Read error: Connection reset by peer).
08:46:20 <coppro> my vim-like project will be called atto
08:49:21 <kallisti> attoboy
08:56:21 <coppro> it will be done when elliott's next project is
08:58:32 <shachaf> coppro: @to?
08:58:50 -!- itidus21 has joined.
09:01:23 <kallisti> "western side of the international dateline" is that in absolute terms or relative to the way "east" and "west" are usually framed.
09:02:16 <kallisti> oh okay
09:02:18 <kallisti> absolute terms
09:02:25 <kallisti> by moving west of the date line they're in the eastern time zones.
09:04:29 <kallisti> imagine how much European commerce would get fucked up if the date line was suddenly shifted to the prime meridian.
09:12:34 <itidus21> so a thought just occured to me while reading the trolley problem on wiki..
09:13:15 <coppro> shachaf: ?
09:13:22 <coppro> oh
09:13:27 <coppro> hmm... I like it
09:13:29 <coppro> @to
09:13:29 <lambdabot> Maybe you meant: todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell do
09:13:37 <coppro> lol
09:13:41 <coppro> brilliant
09:13:51 <coppro> my project name sets off lambdabot
09:14:02 <itidus21> a trolley is heading to kill 5 people on some track.. but those 5 people have the power to divert the trolley to kill 1 person
09:14:51 <itidus21> so here my pondering is, should the 5 people accept their fate, or kill the 1 by diverting the trolley
09:16:45 <coppro> congratulations, you discovered moral dilemmas
09:17:01 <itidus21> now this opens up an interesting aspect of the trolley problem.. of supposing that in the regular trolley problem, the person could ask the people involved what they think
09:21:54 <itidus21> i would also try to take into account the side-effects of the decision
09:22:48 <itidus21> like, it may be that someone has a big stash of money waiting for you if you choose one decision over the other
09:22:59 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
09:23:10 <itidus21> or you may owe a debt to one party
09:25:16 <Sgeo_> kallisti, update
09:29:34 -!- Ngevd has joined.
09:29:48 <Ngevd> Hello!
09:30:00 <Sgeo_> Ngevd, updates
09:30:29 <Ngevd> Thank you
09:31:24 <Sgeo_> You're welcome
09:31:53 <Ngevd> Site won't load...
09:33:35 -!- zzo38 has joined.
09:38:58 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:44:40 -!- sebbu2 has quit (Read error: Connection reset by peer).
09:44:51 -!- olsner has joined.
09:47:20 -!- sebbu2 has joined.
09:47:20 -!- sebbu2 has quit (Changing host).
09:47:20 -!- sebbu2 has joined.
10:03:30 -!- Ngevd has joined.
10:10:28 <Ngevd> Hello!
10:11:48 <zzo38> Once a long time ago, my sister was attempting to use my computer without my permission. The computer wasn't on, and didn't require a floppy disk to boot. However, she took a blank disk from my cupboard, inserted it into the computer, and then pushed the disk eject button. She did this over and over again, until finally she turned to me and said: "I put the disk in and push the START DISK button, but it just comes back out! Am I doing something
10:12:30 <Ngevd> Ah, the days when computers didn't do what computers did
10:14:35 <olsner> zzo38: you got cut off at "Am I doing somethin"
10:14:40 -!- oerjan has joined.
10:16:10 <zzo38> g wrong?"
10:16:52 <Ngevd> I remember the first time I used a computer
10:17:00 <olsner> so, had she ever successfully used any computer before then?
10:17:16 <Ngevd> I was three or maybe four
10:17:33 <zzo38> olsner: I don't remember now.
10:18:56 <Ngevd> If I learnt COBOL, I'd be a second-generation COBOL programmer
10:27:13 <oerjan> @hoogle (r,r) -> a -> Array r a
10:27:13 <lambdabot> Data.Array listArray :: Ix i => (i, i) -> [e] -> Array i e
10:27:13 <lambdabot> Data.Array accumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e
10:27:13 <lambdabot> Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e
10:27:30 <oerjan> > listArray (1,10) (repeat 0)
10:27:31 <lambdabot> array (1,10) [(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0),(8,0),(9,0),(10,0)]
10:27:59 <oerjan> <Sgeo_> ...is defaults to 0 a sensible thing for Haskell arrays to do <-- looks easy enough to make, anyway
10:28:40 <oerjan> of course it only makes sense for values of Num class
10:29:52 <oerjan> oh hm i think unboxed arrays might default in that way
10:30:17 <oerjan> @hoogle (r,r) -> a -> UArray r a
10:30:18 <lambdabot> Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e
10:30:18 <lambdabot> Data.Array.MArray newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)
10:30:18 <lambdabot> Data.Array.IArray accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(i, e')] -> a i e
10:31:14 <oerjan> i might be able to investigate this further if not for this barking dog sucking out my brain cells.
10:39:17 -!- Phantom_Hoover has joined.
10:41:48 * oerjan swats FireFly -----###
10:52:19 <zzo38> What is this about FireFly?
10:52:34 <oerjan> i noticed him in the logs
10:52:45 <oerjan> also he's so very swattable. it's in the name.
10:55:26 <oerjan> <kallisti> What would you call a function where f . f . f = id <-- period 3
10:56:47 <oerjan> (it's an element of the permutation group of its domain)
10:57:08 <oerjan> hm also order 3, then
11:07:06 <zzo38> Do you know the name of a generalized kind of mathematical structure satisfying the first six Peano axioms (as given in that Wikipedia article)?
11:07:16 <oerjan> > let countStairs = [1,1,1] ++ map (sum . take 3) (tails countStairs) in countStairs
11:07:18 <lambdabot> [1,1,1,3,5,9,17,31,57,105,193,355,653,1201,2209,4063,7473,13745,25281,46499...
11:08:16 <itidus21> ah i see what you did there
11:08:20 <zzo38> I called it a "peanoid" but maybe there is a different name
11:08:40 <itidus21> so thats a fibonacci-3 :-?
11:08:56 <itidus21> im sure it has better name
11:09:10 <oerjan> zzo38: 2-5 are axioms of predicate logic with equality, i think, so rather implicit in any normal set theory structure
11:09:24 <oerjan> (well, axioms or propositions)
11:09:33 <zzo38> oerjan: Yes; that leaves axioms 1 and 6
11:10:58 <oerjan> zzo38: then you only have a constant and a monic predicate, which i think gives a decidable theory
11:11:09 <oerjan> er wait
11:11:13 <oerjan> *function
11:11:31 <oerjan> it's a rather simple algebraic variety.
11:11:40 <oerjan> don't know if it has a name
11:12:02 <zzo38> That is why I suggested "peanoid" but maybe there can be better name, I don't know
11:12:35 <zzo38> (Like they have "groupoid" and that stuff)
11:13:18 -!- sebbu2 has changed nick to sebbu.
11:14:02 <oerjan> zzo38: http://en.wikipedia.org/wiki/Peano_axioms#Interpretation_in_category_theory might be somewhat relevant, even if not exactly the same
11:15:20 <oerjan> or is it really, that looks complicated
11:16:50 <zzo38> I did see that, and I think that isn't really what I was looking for.
11:17:51 <zzo38> They are talking about a specific category there.
11:17:59 <oerjan> oh wait s/algebraic variety/variety (universal algebra)/, if you're looking up on wikipedia
11:20:08 <oerjan> http://en.wikipedia.org/wiki/Algebraic_structure calls it "pointed unary system"
11:21:41 <zzo38> I know I saw on the Peano axioms article, pointed unary systems. That kind of category does still mean something to me, but I am not trying to make a category.
11:22:20 <oerjan> zzo38: no this second link is not category theory, it's just the same term used for the algebraic structure
11:22:42 <zzo38> OK
11:23:52 <zzo38> Yes I can see that.
11:24:35 <oerjan> <itidus21> so thats a fibonacci-3 :-? <-- it was discussed in http://stackoverflow.com/questions/8686376/recursive-haskell-and-stack-overflow which elliott linked to
11:24:45 <zzo38> A pointed unary system is a bit more generalized kind that can have "one or more distinguished elements, often 0, 1, or both"
11:25:04 <oerjan> i just made the list version
11:25:52 <zzo38> But yes, it is still a pointed unary system.
11:26:54 <oerjan> i've heard "pointed set" as a set with a single distinguished element, so i think it's usually 1 unless otherwise specified
11:27:32 <zzo38> However, mine has exactly one distinguished element which the structure provides (it could have others, although the others are not provided by my structure)
11:28:36 <oerjan> yeah
11:34:34 <zzo38> Is there a Haskell library providing such a class?
11:35:05 <oerjan> i don't know
11:35:32 <oerjan> Pointed is something else, iirc
11:39:37 -!- PatashuXantheres has joined.
11:39:49 <oerjan> <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :) <-- the advantage of unsafeInterleaveIO is in the better guarantees against unwanted execution
11:41:02 <oerjan> e.g. since it isn't a pure result, it cannot be inlined by ghc's optimizer
11:41:14 -!- Patashu has quit (Ping timeout: 240 seconds).
11:41:22 <oerjan> *inlined in multiple places
11:42:37 -!- PatashuXantheres has quit (Read error: Connection reset by peer).
11:42:53 <zzo38> Yes, I think Pointed is something else.
11:54:04 -!- Patashu has joined.
12:00:10 -!- zzo38 has quit (Remote host closed the connection).
12:09:25 -!- lahwran has joined.
12:10:07 <lahwran> uhhhh
12:10:15 <lahwran> google doesn't know about that md5sum ...
12:10:21 <lahwran> :(
12:10:26 -!- readme has joined.
12:11:17 <Ngevd> http://codu.org/logs/_esoteric/
12:11:17 <oerjan> `log topic.*codu
12:11:59 <HackEgo> No output.
12:12:03 <oerjan> wat
12:12:33 <oerjan> `log | http://codu
12:12:55 <HackEgo> shuf: memory exhausted
12:13:01 <oerjan> sheesh
12:13:29 <oerjan> `log solidity.* | http://codu
12:13:52 <HackEgo> 2011-12-25.txt:09:33:27: <oerjan> kallisti: you know i just looked it up on http://codu.org/projects/hackbot/fshg/index.cgi/rev/d30da6e6e1c6?revcount=240
12:14:09 <oerjan> ....wat
12:14:16 <oerjan> oh duh
12:14:26 <oerjan> `log [|] http://codu
12:14:32 <HackEgo> 2011-11-20.txt:17:06:18: -!- elliott_ changed the topic of #esoteric to: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | http://codu.org/logs/_esoteric/
12:14:45 <oerjan> oh well
12:14:53 -!- oerjan has set topic: http://codu.org/logs/_esoteric/.
12:15:43 <oerjan> `welcome lahwran
12:15:46 <HackEgo> lahwran:
12:15:53 <oerjan> >_<
12:15:56 <oerjan> `welcome lahwran
12:15:59 <HackEgo> lahwran:
12:16:05 <oerjan> wtf
12:16:08 <lahwran> haha
12:16:14 <oerjan> HackEgo really isn't working well today
12:16:18 <oerjan> `welcome
12:16:21 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
12:17:24 <oerjan> `@ oerjan echo What do you mean I'm not working?
12:17:27 <HackEgo> oerjan: What do you mean I'm not working?
12:17:55 -!- readme has quit (Quit: Lost terminal).
12:20:05 <fizzie> fungot: Please help your fellow bot-friend HackEgo get better.
12:20:05 <fungot> fizzie: i am just as confused. you just don't encourage, because even though mr van den burg for an enormously well done.' granny handed it to me, for there are elements that go to/ head by a cliff similarly composed, but including many nodular and stalactiform concretions: i found " 640? 1. a `while' and `write in' or ' ' land" into either, man! you have a whip? why do
12:20:06 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
12:21:13 <fizzie> I suppose it was pointles to expect any help from that direction.
12:22:27 <oerjan> ^style
12:22:27 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
12:23:48 <fizzie> "granny" probably from discworld, and then there are some very darwinistic elements.
12:23:56 <fizzie> Especially the / bug.
12:26:11 <fizzie> ^style darwin
12:26:11 <fungot> Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy)
12:26:32 <fizzie> fungot: What's all this "men are descended from apes" nonsense?
12:26:33 <fungot> fizzie:/ love :) a dog by a turkey; selection :) mate by female birds; shewn by birds in confinement well know that many tropical plants and other productions will have retreated from both sides towards/ equator, to fnord
12:27:04 <fizzie> / = the, :) = of.
12:28:40 <fizzie> fungot: Man, Darwin sure was ony happy guy?
12:28:41 <fungot> fizzie: distribution :) coral-reefs, and their being found near barmouth, is quite helpless, and/ tentacle moves. see pfeffer, :( fnord." here it is impossible to doubt that/ reefs are distant from/ nearest or fnord source, together with their modification through natural selection
12:28:41 <oerjan> that's a pretty bad bug
12:28:59 <fizzie> I don't know what :( is.
12:29:21 <Ngevd> In?
12:29:31 <fizzie> Very possible.
12:29:46 <fizzie> fungot: What's in where?
12:29:46 <fungot> fizzie: pot 1: 36: 22 4? 8.
12:29:54 <fizzie> "Ah."
12:33:53 <fizzie> 00022550 55 4f 54 50 51 55 45 53 54 50 53 4c 41 53 48 74 |UOTPQUESTPSLASHt|
12:33:53 <fizzie> 00022560 68 65 6f 66 61 6e 64 69 6e 74 6f 61 69 74 68 61 |heofandintoaitha|
12:33:53 <fizzie> 00022570 74 6f 6e 69 73 61 73 77 69 74 68 62 79 68 61 76 |tonisaswithbyhav|
12:34:22 <fizzie> the, of, and, in, to, a, i, that, on, is, as, with, by, ...
12:34:37 <fizzie> And the punctuation goes
12:34:41 <fizzie> ^source
12:34:41 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
12:36:07 <fizzie> Hmm...
12:36:48 <fizzie> If I'm reading it right, it's just /, :), and anything after that should work out right.
12:37:08 <fizzie> And it gets "and" right.
12:37:20 <fizzie> Maybe Darwin was just being frowny there.
12:40:58 <oerjan> i see an "in" too
12:41:15 <oerjan> also "to", "a"
12:47:42 <fizzie> But the punctuation is messed up too
12:48:07 <fizzie> So the :( was some other punctuation for reals; don't have time to check out what.
12:48:21 <fizzie> (To the shops now.)
12:53:32 -!- olsner has quit (Ping timeout: 240 seconds).
13:06:59 -!- olsner has joined.
13:07:10 -!- oerjan has quit (Quit: LAteerrrrrrrrr).
13:18:11 -!- sebbu2 has joined.
13:18:11 -!- sebbu2 has quit (Changing host).
13:18:11 -!- sebbu2 has joined.
13:19:55 -!- sebbu has quit (Ping timeout: 240 seconds).
13:26:10 -!- ais523 has joined.
13:27:17 -!- Madoka-Kaname has joined.
13:27:17 -!- Madoka-Kaname has quit (Changing host).
13:27:17 -!- Madoka-Kaname has joined.
13:27:35 <kallisti> @tell oerjan aha. a permutation group.
13:27:36 <lambdabot> Consider it noted.
13:28:01 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:30:07 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:32:08 <ais523> haha: http://www.theverge.com/microsoft/2011/12/29/2667941/microsoft-windows-phone-sms-bug-fix
13:32:18 <ais523> now /that's/ an impressive vulnerability to make by mistake
13:32:53 <ais523> (apparently, you can reboot a Windows phone, and break the SMS handling software even beyond a reboot, with a specially crafted text message)
13:33:17 <ais523> my guess is some sort of vulnerability in encoding handling, but I don't know
13:44:41 <kallisti> ais523: I spent a good portion of yesterday trying to find multi-byte character exploits in an IRC bot that emulates sed's s command
13:44:49 <kallisti> so that I could execute arbitrary sed on it. no luck though.
13:45:28 <kallisti> the bot owner has foiled me by only looking at strings as single byte sequences. :P
13:45:47 <ais523> heh
13:46:16 <ais523> kallisti: just the bit inside the ///? or does the bot let you put letters afterwards?
13:46:25 <kallisti> it only allows some options
13:46:40 <kallisti> I tried the opotion r and e options.
13:46:51 <kallisti> er, I'm not sure what opotion was supposed to be.
13:48:52 <kallisti> oh and by r I mean w
13:49:04 <kallisti> I SHOULD GET MORE SLEEP BUT I DON'T THINK THAT IS HAPPENING
13:49:08 <kallisti> and I have a lot of work to do.
13:50:13 <ais523> hmm, I'm unsure if I was asleep overnight; I probably was for bits of it
13:51:26 -!- Deewiant has quit (Ping timeout: 240 seconds).
13:56:57 -!- Ngevd has joined.
13:57:01 <kallisti> Ngevd: heyo
13:57:08 <Ngevd> Hello
14:16:23 -!- monqy has quit (Quit: hello).
14:39:35 -!- olsner has quit (Quit: Leaving).
14:50:10 -!- sebbu2 has changed nick to sebbu.
14:58:44 <Ngevd> kallisti, what's up?
15:02:31 <Phantom_Hoover> sebbu!
15:02:49 <Phantom_Hoover> <ais523> my guess is some sort of vulnerability in encoding handling, but I don't know
15:02:49 <sebbu> ?
15:02:52 <Ngevd> Phantom_Hoover, you aren't kallisti and sebbu isn't up
15:03:00 <Phantom_Hoover> If it was a buffer overflow...
15:03:16 <ais523> sebbu: Phantom_Hoover's two lines before you ?ed are unrelated, I think
15:03:31 <ais523> Phantom_Hoover: it'd be quite impressive to buffer overflow in a text message
15:03:34 <ais523> char buffer[141];
15:03:39 <ais523> see, no buffer overflow there ;)
15:03:44 <sebbu> it's 16:03, hard not to be up
15:03:46 <Phantom_Hoover> Exactly.
15:04:01 <Phantom_Hoover> sebbu, you don't pay much attention to this channel, do you?
15:04:02 <kallisti> Ngevd: work.
15:04:13 <sebbu> ais523, irc raws can be 512 utf-16 characters long
15:04:13 <Phantom_Hoover> Being asleep at four in the afternoon is not uncommon.
15:04:33 <sebbu> i'm not the siesta type
15:04:37 <Phantom_Hoover> sebbu, we're talking about SMSes.
15:04:42 <sebbu> oh
15:04:59 <sebbu> what if someone send a text of several sms ?
15:05:14 <Phantom_Hoover> That doesn't make much sense?
15:05:14 <sebbu> does it concatenate them before or after your buffer ?
15:05:19 <Phantom_Hoover> A text is one SMS, isn't it?
15:05:27 <sebbu> not mandatory
15:05:50 <sebbu> if i write 142 characters, it'll use 2 sms
15:06:11 <Phantom_Hoover> http://en.wikipedia.org/wiki/Concatenated_SMS
15:06:13 <ais523> Phantom_Hoover: mobiles automatically split a text into multiple SMS and rejoin it, nowadyas
15:06:37 <sebbu> they already did that 7 years ago
15:06:44 <sebbu> didn't use much my mobile before then
15:06:49 <Phantom_Hoover> Still, buffer overflowing with that is impressive.
15:07:00 <ais523> we don't know if it was a buffer overflow or something else
15:07:03 <ais523> yet
15:07:06 <sebbu> beside, it's 160, not 140 ;)
15:08:00 <sebbu> [16:03:32] <Phantom_Hoover> sebbu, you don't pay much attention to this channel, do you? <-- i only use brainfuck & D as esoteric languages :p
15:08:23 <sebbu> (and some others which aren't much used, but not exactly esoteric)
15:08:28 <Phantom_Hoover> ais523, I know; the point is that a buffer overflow would be hilarious.
15:08:55 <fizzie> It's also only 160 if you stick to the 7-bit GSM alphabet.
15:10:09 <Ngevd> There's no programming languages on wikipedia called H or I
15:10:32 <sebbu> I T U aren't used if i remember well, H should be
15:11:14 <Ngevd> N and O aren't
15:11:17 <Ngevd> A isn't?
15:11:27 <Ngevd> P also isn't?
15:11:34 <Ngevd> T is
15:11:52 <Ngevd> U to Y aren't
15:12:11 <Ngevd> A,H,I,N,O,P,U,V,W,X,Y
15:12:19 <sebbu> A is Assembler, oftern used as asm
15:13:07 <Ngevd> There's an esolang V
15:13:10 <ais523> although asm gets the .s extension
15:13:26 <Ngevd> And Y
15:13:41 <Ngevd> H,I,N,O,P,U,W,X
15:14:37 <sebbu> http://forum.osdev.org/viewtopic.php?f=13&t=14992&start=0 H exists
15:14:59 <Ngevd> I NO U P WX
15:15:22 <Ngevd> PIX NO WU
15:16:14 <sebbu> there's algol-n & n-lang
15:16:28 <sebbu> http://gitorious.org/n-lang
15:17:01 <Ngevd> IOPUWX
15:17:19 <Ngevd> http://blog.radicalbreeze.com/?p=213
15:17:23 <Ngevd> I exists
15:18:46 <Ngevd> O and P... probably don't
15:18:52 <Ngevd> But there is P''
15:19:03 <Ngevd> Or is that a computational model, rather than a language?
15:19:16 <Ngevd> Bah, doesn't count either way
15:19:34 <Ngevd> U does
15:19:34 <Ngevd> http://init.org.pk/papersandpublications/P5.pdf
15:19:38 <sebbu> i think all exists
15:19:43 <sebbu> +letters
15:19:55 <Ngevd> Can't find O or P
15:28:39 -!- derdon has joined.
15:41:16 -!- Vorpal has joined.
15:57:31 -!- Ngevd has quit (Quit: Goodbye).
16:08:51 -!- elliott has joined.
16:11:19 -!- oerjan has joined.
16:12:46 <oerjan> boo!
16:12:46 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
16:14:59 <kallisti> oerjan: it's a very interesting message
16:15:00 <kallisti> you'll find
16:15:15 <oerjan> @clear-messages
16:15:15 <lambdabot> Messages cleared.
16:15:19 <oerjan> *MWAHAHAHA*
16:15:47 * oerjan whistles menacingly
16:17:35 <oerjan> this group of messages has been permuted out of existence.
16:28:11 -!- nooga has joined.
16:28:18 <nooga> ha!
16:28:36 <oerjan> ha factorial
16:29:38 <elliott> oerjan: shachaf hates you
16:29:38 <lambdabot> elliott: You have 6 new messages. '/msg lambdabot @messages' to read them.
16:29:47 * oerjan cackles evilly
16:30:18 <elliott> 11:07:16: <oerjan> > let countStairs = [1,1,1] ++ map (sum . take 3) (tails countStairs) in countStairs
16:30:24 <elliott> oerjan: excuse me i am now allergic to countStairs
16:30:36 <elliott> lahwran: hey
16:30:39 <elliott> you're not lambdabot
16:30:49 <oerjan> elliott: but you linked it in the first place!
16:30:51 <elliott> stop tab-completing i type la<tab>
16:31:44 -!- Klisz has joined.
16:32:57 <kallisti> I wish I could put a tab in my nick.
16:33:33 <elliott> 11:39:49: <oerjan> <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :) <-- the advantage of unsafeInterleaveIO is in the better guarantees against unwanted execution
16:33:35 <kallisti> I could name myself a<tab>
16:33:38 <elliott> oerjan: um that is the real implementation
16:34:26 <oerjan> elliott: only with a heap of NOINLINE flags, surely
16:34:38 <kallisti> elliott: that's not what the code looked like when I checked the source...
16:35:18 <kallisti> there were more #'s
16:37:10 <elliott> oerjan: {-# INLINE unsafeInterleaveIO #-}
16:37:11 <elliott> unsafeInterleaveIO :: IO a -> IO a
16:37:11 <elliott> unsafeInterleaveIO m = unsafeDupableInterleaveIO (noDuplicate >> m)
16:37:22 <elliott> {-# INLINE unsafeDupableInterleaveIO #-}
16:37:22 <elliott> unsafeDupableInterleaveIO :: IO a -> IO a
16:37:22 <elliott> unsafeDupableInterleaveIO (IO m)
16:37:22 <elliott> = IO ( \ s -> let
16:37:22 <elliott> r = case m s of (# _, res #) -> res
16:37:23 <elliott> in
16:37:25 <elliott> (# s, r #))
16:37:35 <elliott> proving unsafeDupableInterleaveIO equivalent to return . unsafeDupablePerformIO left as exercise to reader
16:37:36 <oerjan> elliott: my point isn't about the real implementation really, that can of course depend on knowing what ghc does under the hood. my point is that unsafeInterleaveIO will _always_ be guaranteed to only run its action once and share its result among its users, even if return . unsafePerformIO doesn't.
16:37:47 <elliott> also note INLINE flags :P
16:37:55 <elliott> oerjan: well yes
16:38:13 <elliott> oerjan: my comment was meant as an acknowledgement that some people do not even think it's unsafe
16:41:04 <oerjan> <elliott> also note INLINE flags :P <-- heh. but that's not return . unsafePerformIO, which would need NOINLINE.
16:42:16 -!- Sgeo_ has changed nick to Sgeo.
16:44:33 <kallisti> import Control.Monad; import System.Posix.Process; import System.IO.Unsafe; main = fix (forever . unsafeInterleaveIO . forkProcess)
16:45:20 <kallisti> oops Data.Function
16:45:57 <oerjan> in any case, that wouldn't fork anything afaict
16:46:00 <elliott> oerjan: um... unsafeDupableInterleaveIO is exactly that
16:46:07 <elliott> just expanded out
16:46:14 <kallisti> oerjan: yep. it's very safe.
16:46:17 <oerjan> elliott: O KAY
16:46:20 <elliott> oerjan: it's perfectly safe because the return will put it in a lambda...
16:46:49 <elliott> return a = IO (\s -> (# s, a #))
16:46:54 <oerjan> elliott: erm i'd say i have a hunch that noDuplicate does the work of NOINLINE there.
16:47:05 <oerjan> (sheesh.)
16:47:10 <elliott> oerjan: dude... unsafePerformIO uses noDuplicate
16:47:14 <elliott> it's unsafeDupablePerformIO that doesn't
16:47:23 <elliott> unsafePerformIO :: IO a -> a
16:47:23 <elliott> unsafePerformIO m = unsafeDupablePerformIO (noDuplicate >> m)
16:47:30 <elliott> {-# NOINLINE unsafeDupablePerformIO #-}
16:47:30 <elliott> unsafeDupablePerformIO :: IO a -> a
16:47:30 <elliott> unsafeDupablePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
16:47:51 <oerjan> elliott: yes, i recall something about ghc doing that despite it not being mandated by the standard
16:47:56 <elliott> ok unsafeDupableInterleaveIO differs in that it takes the State RealWorld# from the world it gets, but w/e
16:48:02 <elliott> oerjan: it is mandated
16:48:10 <elliott> istr
16:48:18 <oerjan> istr it isn't.
16:49:14 <oerjan> that is, istr a discussion that unsafePerformIO is permitted to duplicate but that ghc doesn't.
16:50:08 <elliott> good thing i'm checking the report :P
16:50:14 <elliott> where the FUCK is unsafePerformIO
16:50:40 <kallisti> so how safe is GHC's unsafePerformIO since it doesn't duplicate.
16:51:09 <ais523> elliott: *F**K
16:51:12 <elliott> kallisti: ...
16:51:26 <kallisti> elliott: ...
16:51:42 <elliott> i'm jumping out the window, please give all my money to ais523 and kallisti to make them feel guilty ->
16:52:10 <ais523> elliott: good thing you're on the ground floor
16:52:18 <elliott> I... am?
16:52:26 <oerjan> elliott: ffi isn't it?
16:52:44 <elliott> i checked every foreign module, i'll grep the pdf
16:53:28 <elliott> oerjan: it's... not in the pdf at least
16:53:49 <oerjan> elliott: hm did they replace it with a different function? a vague bell is ringing
16:53:52 <elliott> all I can find is unsafeLocalState...
16:54:04 <elliott> but that sez "It is expected that this operation will be replaced in a future revision of Haskell." and also it barely allows you to do anything
16:54:47 <oerjan> or hm is the bell that they left something out of the report...
17:01:07 <elliott> ISTR people saying unsafePerformIO is standard now, but maybe that was just my own echoes :)
17:01:41 <elliott> oerjan: hm what's the most elegant way to get [x,y,z,...] as [(x,y),(y,z),(z,...
17:02:05 <elliott> with the last element not becoming the first element of a tuple if the list is odd-length
17:02:06 <elliott> :t groupBy
17:02:07 <lambdabot> forall a. (a -> a -> Bool) -> [a] -> [[a]]
17:02:13 <elliott> nope
17:03:25 <Sgeo> > groupBy (==) "hello"
17:03:26 <lambdabot> ["h","e","ll","o"]
17:03:31 <elliott> aka group
17:03:34 <elliott> @hoogle [a] -> [(a,a)]
17:03:34 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
17:03:35 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
17:03:35 <lambdabot> Data.Graph.Inductive.Query.Monad apply :: GT m g a -> m g -> m (a, g)
17:03:42 <elliott> > zip [1,2,3] [2,3]
17:03:43 <lambdabot> [(1,2),(2,3)]
17:03:48 <elliott> > zip [1,2,3,4] [2,3,4]
17:03:49 <lambdabot> [(1,2),(2,3),(3,4)]
17:03:55 <elliott> aha
17:04:12 <Sgeo> @src groupBy
17:04:13 <lambdabot> groupBy _ [] = []
17:04:13 <lambdabot> groupBy eq (x:xs) = (x:ys) : groupBy eq zs
17:04:13 <lambdabot> where (ys,zs) = span (eq x) xs
17:04:13 <elliott> > ap zip (drop 1) [1,2,3,4]
17:04:17 <elliott> > ap zip (drop 1) [1,2,3,4]
17:04:17 <lambdabot> mueval-core: Time limit exceeded
17:04:18 <lambdabot> [(1,2),(2,3),(3,4)]
17:04:24 <Sgeo> :t span
17:04:25 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
17:04:25 <elliott> > (zip <*> drop 1) [1,2,3,4]
17:04:26 <lambdabot> [(1,2),(2,3),(3,4)]
17:04:34 <quintopia> > group "mississippi"
17:04:35 <lambdabot> ["m","i","ss","i","ss","i","pp","i"]
17:04:37 <elliott> > (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:04:39 <lambdabot> [(2,2),(2,0),(0,1)]
17:04:43 <Sgeo> span id [False, False, True, True]
17:04:45 <Sgeo> > span id [False, False, True, True]
17:04:47 <lambdabot> ([],[False,False,True,True])
17:05:08 <elliott> > map (fromEnum . uncurry (==)) . (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:05:10 <lambdabot> [1,0,0]
17:05:13 <elliott> > sum . map (fromEnum . uncurry (==)) . (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:05:15 <lambdabot> 1
17:06:26 <elliott> > sum . (zipWith (fromEnum . uncurry (==)) <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:06:27 <lambdabot> Couldn't match expected type `b -> a'
17:06:27 <lambdabot> against inferred type `GHC.Ty...
17:06:29 <oerjan> @quote aztec
17:06:29 <lambdabot> quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers
17:06:34 <oerjan> elliott: ^
17:06:36 <elliott> :t zipWith (fromEnum . uncurry (==)) <*> drop 1)
17:06:37 <lambdabot> parse error on input `)'
17:06:40 <elliott> :t zipWith (fromEnum . uncurry (==)) <*> drop 1
17:06:40 <lambdabot> Couldn't match expected type `b -> c' against inferred type `Int'
17:06:41 <lambdabot> In the first argument of `(.)', namely `fromEnum'
17:06:41 <lambdabot> In the first argument of `zipWith', namely
17:06:45 <elliott> oh
17:06:48 <elliott> :t zipWith (fromEnum .: (==)) <*> drop 1
17:06:49 <lambdabot> forall a. (Eq a) => [a] -> [Int]
17:06:57 <oerjan> elliott: ^^
17:07:10 <elliott> oerjan: wtf are you pinging me repeatedly for, I saw it
17:07:14 <elliott> I'm already using that?
17:07:25 <elliott> :t sum . zipWith (fromEnum .: (==)) <*> drop 1 . map length $ [[1,2],[3,4],[],[4]]
17:07:26 <lambdabot> Couldn't match expected type `[a -> b]'
17:07:26 <lambdabot> against inferred type `[a1] -> [Int]'
17:07:26 <lambdabot> In the second argument of `(.)', namely
17:07:28 <Sgeo> :t zip `ap` tail
17:07:29 <lambdabot> forall b. [b] -> [(b, b)]
17:07:30 <oerjan> hm i suppose
17:07:39 <elliott> :t sum . ap (zipWith (fromEnum .: (==))) (drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:07:41 <lambdabot> Int
17:07:43 <elliott> > sum . ap (zipWith (fromEnum .: (==))) (drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:07:45 <lambdabot> 1
17:07:47 <elliott> excellent
17:08:00 <Sgeo> > zip `ap` tail [1,2,3]
17:08:01 <lambdabot> Couldn't match expected type `[a] -> [b]'
17:08:01 <lambdabot> against inferred type `[t]'
17:08:05 <Sgeo> > zip `ap` tail $ [1,2,3]
17:08:06 <lambdabot> [(1,2),(2,3)]
17:08:10 <Sgeo> Hmm!
17:08:18 * Sgeo actually has use for that, maybe
17:08:19 <elliott> :t curry (uncurry (==) . length &&& length)
17:08:20 <lambdabot> Couldn't match expected type `(a, b)' against inferred type `[a1]'
17:08:20 <lambdabot> In the second argument of `(.)', namely `length'
17:08:20 <lambdabot> In the first argument of `(&&&)', namely `uncurry (==) . length'
17:08:25 <elliott> :t curry (uncurry (==) . (length &&& length))
17:08:26 <lambdabot> Couldn't match expected type `(a, b)' against inferred type `[a1]'
17:08:26 <Sgeo> No idea how to remember that though
17:08:26 <lambdabot> In the first argument of `(&&&)', namely `length'
17:08:26 <lambdabot> In the second argument of `(.)', namely `(length &&& length)'
17:08:29 <elliott> sheesh
17:09:47 <elliott> context for all this: http://stackoverflow.com/questions/8689188/count-consecutive-sublists-with-same-length
17:10:13 <elliott> :t sum . ap (zipWith $ fromEnum .: (==)) (drop 1) . map length
17:10:14 <lambdabot> forall a. [[a]] -> Int
17:10:19 <elliott> perfect i think.
17:11:06 <elliott> oerjan: hm should I keep the $ there or nest parens
17:11:09 <elliott> i usually don't do $ in parens
17:11:10 <elliott> feels wrong
17:13:30 <oerjan> > map length . group . map length $ [[1,2],[3,4],[],[4]]
17:13:32 <lambdabot> [2,1,1]
17:13:55 <elliott> > map length . group . map length $ [[1,2],[3,4],[3,3],[],[4]]
17:13:56 <lambdabot> [3,1,1]
17:14:01 <elliott> huh
17:14:10 <elliott> > sum . map (subtract 1 . length) . group . map length $ [[1,2],[3,4],[3,3],[],[4]]
17:14:12 <lambdabot> 2
17:14:38 * elliott steals, posts as comment :P
17:14:54 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa
17:15:14 <Vorpal> :t group
17:15:15 <lambdabot> forall a. (Eq a) => [a] -> [[a]]
17:15:39 <elliott> oerjan: hey i wrote the subtract 1 and sum parts!
17:15:51 <elliott> ok who is going on an upvote spree of my stuff
17:15:54 <elliott> is it Sgeo, is it oerjan
17:15:58 <elliott> or do people just really like my questions today
17:16:26 <Sgeo> I don't remember the last time I upvoted you
17:16:29 <Sgeo> If I ever have
17:16:37 <elliott> clearly it must be oerjan
17:16:38 -!- iconmaster has joined.
17:17:04 <oerjan> elliott: subtract 1 = pred, btw
17:17:21 <kallisti> lol
17:17:23 <elliott> oerjan: I don't like using pred like that
17:17:28 <elliott> because of the Enum constraint
17:17:37 <elliott> no but seriously if anyone here is upvoting my stuff en masse, please reverse it
17:17:42 <oerjan> but you're using length, so the type is fixed :P
17:17:47 <elliott> oerjan: IT'S HABIT :'(
17:18:25 <elliott> oh well it can't be oerjan he hasn't cast any votes :D
17:18:28 <elliott> otoh it could be kallisti
17:18:39 <elliott> as he's upvoted the same number of questions that i just got upvoted
17:18:41 <elliott> and was last seen 25 seconds ago
17:18:57 * oerjan isn't voting, he may not even have enough reputation to vote. or maybe it's that i haven't actually bothered to log in properly.
17:19:10 <Sgeo> Oh, on SO
17:19:31 <elliott> kallisti: plz don't upvote my stuff unless you actually think it's worthwhile independent of me being on my crazy rep spree, it's not exactly much of an achievement to get 200 rep every day by way of having people I know upvote it all :P
17:19:37 <shachaf> elliott: I hate oerjan?
17:20:16 <elliott> shachaf: He made a factorial joke.
17:20:26 <shachaf> Are you kidding? Achievement unlocked: Voting ring!
17:20:52 <elliott> ok kallisti is evidently just going to ignore me
17:20:59 <shachaf> Why do I hate factorial jokes?
17:21:05 <shachaf> Oh, wait, wait, that.
17:21:17 <kallisti> http://stackoverflow.com/questions/8502201/remove-file-if-it-exists-in-haskell/8502391#8502391
17:21:19 <shachaf> No, obviously I don't include oerjan in the people I hate.
17:21:31 <kallisti> oh nvm
17:21:36 <kallisti> I thought deprecated was typo'd
17:21:40 <oerjan> yay factorial
17:21:41 <kallisti> but there was a smudge on my screen. :P
17:21:42 <Sgeo> Factorial jokes? As in, saying "9 factorial?" when someone says 9!?
17:21:47 * Sgeo has done that
17:21:47 <elliott> Sgeo: yep
17:21:48 <kallisti> elliott: but no I haven't upvoted anything ever.
17:21:56 <elliott> kallisti: dude, your vote totals are on your fucking profile.
17:22:05 <kallisti> and?
17:22:08 <elliott> all time by type month
17:22:08 <elliott> 3up2question3
17:22:08 <elliott> 0down1answer
17:22:18 <elliott> you've upvoted 3 things
17:22:21 <kallisti> therefore: not upvoting you
17:22:38 * kallisti mad
17:22:38 <elliott> coincidentally, I just got two upvotes on my questions that haven't been touched in days in rapid succession
17:22:57 <elliott> sigh
17:22:59 <elliott> kallisti: whatever
17:23:06 <kallisti> must be your reverse psychology convincing people in this channel to upvote stuff.
17:24:00 <elliott> kallisti: why are you even bothering to deny it anyway
17:24:08 <kallisti> lol, what?
17:24:38 <kallisti> surely you're trolling right now. There is absolutely no way you are capable of such a huge logical blunder.
17:24:49 <elliott> dude, I got an upvote on an answer and two questions in rapid succession after they were left untouched for ages, your vote total just became 3, and you were active 20 seconds ago when i checked your profile immediately afterwards
17:24:53 <elliott> reverse them
17:25:13 <kallisti> elliott: those upvotes were already there.
17:25:58 <kallisti> I *have not given a shit about stackoverflow in a while* I became active to see your "awesome answers"
17:26:51 <kallisti> I'm bothering to deny it because it's not true.
17:28:18 <kallisti> unless I entered some kind of subconscious torpid state where I visited three of your answers and upvoting them
17:28:44 <elliott> ok i guess somebody else just made 3 votes on dead questions and answers in rapid succession :P
17:28:44 <kallisti> perhaps some sort of subconscious man-love fugue.
17:29:07 <kallisti> yep
17:29:25 <kallisti> that is SO TOTALLY UNLIKELY
17:31:03 <elliott> also my awesome answers are too awesome to have quotes around them thx
17:31:42 <oerjan> `awesome
17:31:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: awesome: not found
17:31:52 * oerjan cry
17:32:41 <oerjan> needed more transfinite ordinals, anyway
17:32:43 <elliott> oh thank god, a mod in /r/haskell finally notices that tr0lltherapy is a shit-posting moron
17:33:04 <oerjan> shall we have a therapeutic ban?
17:33:30 <ais523> sorry, I've been too busy with multiplayer AceHack
17:33:31 <elliott> oerjan: yes, ban kallisti
17:33:32 <ais523> it's surprisingly awesome
17:33:44 <elliott> ais523: can i play
17:33:50 <oerjan> but i have no proof that kallisti is tr0lltherapy
17:33:55 <elliott> my motto is "kill everybody else"
17:34:04 <elliott> oerjan: you have no proof god exists and you still ban him!!!
17:34:06 <elliott> wait.
17:34:13 <ais523> elliott: no unless you compile it yourself (the only server's whitelist-based), and no because PvP isn't implemented
17:34:16 <kallisti> oerjan: this is just a subconscious defensive reaction to my subconscious man-love upvote fugue conspiracy.
17:34:22 <kallisti> disregard.
17:34:23 <elliott> ais523: worst game
17:34:23 <ais523> (I'm not sure whether I want to /disallow/ it or not, it just isn't /implemented/)
17:34:35 <oerjan> kallisti: when are you subconsciously marrying?
17:34:35 <elliott> ais523: make it a setting?
17:34:45 <ais523> elliott: but it isn't /implemented/
17:34:49 <ais523> setting might make sense
17:34:50 <elliott> ais523: when it is
17:34:56 <ais523> just not sure what'd happen if different people set it to different values
17:35:07 <elliott> off: moving into player displaces like pet; on: pvp?
17:35:12 <kallisti> oerjan: unfortunately I think elliott's subconscious is too young to marry.
17:35:20 <ais523> elliott: moving into player is currently impossible
17:35:23 <ais523> the game will just disregard the command
17:35:30 <oerjan> kallisti: ah.
17:35:57 <kallisti> er... what
17:36:02 <kallisti> no man-love conspiracy here.
17:36:03 <kallisti> never.
17:36:05 <elliott> ais523: lame
17:36:08 <kallisti> that's what I meant to say.
17:36:25 * kallisti silent stalks elliott's SO page and upvotes every single answer.
17:36:28 <Vorpal> ais523, which game is this?
17:36:42 <elliott> acehack
17:36:44 <Vorpal> ah
17:37:56 <oerjan> ais523: you missed User:JBethJenkinsm
17:37:58 <kallisti> why is "subconscious torpid manlove fugue" so fun to say.
17:38:08 <ais523> oerjan: thanks
17:38:35 <oerjan> kallisti: because it makes your subconscious dance with joy
17:38:38 <ais523> http://esolangs.org/wiki/User:JBethJenkinsm
17:38:38 * elliott reads tr0lltherapy's comments for his two minute's hate
17:38:53 <elliott> "haskell's brittle types are often hostile to changes in the real world, like unicode
17:38:53 <elliott> i now used typed racket...which is far less brittle imo" :D
17:39:02 <ais523> oerjan: I was too jumpy after almost accidentally deleting some genuine esolangs
17:39:06 <elliott> [on batman] "this stupid character has been beaten to death. kill him and make a movie about something that hasn't been made four times before"
17:39:29 <elliott> ais523: you may wish to ping graue again.
17:39:35 <kallisti> elliott: "hostile to changed in the real world, like unicode" ......what?
17:39:37 <elliott> this spam is never gonna stop on its own
17:39:42 <kallisti> let me double that for emphasis:
17:39:44 <kallisti> .........WHAT?
17:39:54 <ais523> elliott: I have done, I got no reply
17:39:59 <kallisti> maybe triple with more ellipsis:
17:40:02 <ais523> kallisti: sounds like one of our spambots
17:40:02 <kallisti> ...................WHAT!!?
17:40:04 <elliott> ais523: err, do you know what the word "again" means?
17:40:18 <iconmaster> I should invent as esolang titled "Administaration Jobs Globally Apply" and watch someone accidentally delete it
17:40:24 <elliott> kallisti: i believe its something like "if you['re an idiot and write your program with bytestring then converting it to text takesl ike 5 minutes which is too much a penalty for using the wrong data type for what you mean"
17:40:33 <elliott> iconmaster: ais523 is too cunning for that
17:40:35 <ais523> elliott: probably better if someone else pings him, so he knows it's not just me being awkward
17:40:37 <elliott> I've trained him
17:40:44 <elliott> ais523: fair enough, I will
17:40:47 <ais523> iconmaster: elliott creates pages with spammy names quite a bit
17:41:11 <iconmaster> ah beat to it I see
17:41:16 <elliott> (quite a bit = twice)
17:42:18 <Sgeo> What's wrong with Typed Racket?
17:42:46 <Sgeo> Although I guess it lives in a mostly dynamically-typed ecosystem, which seems like it could be annoying
17:43:37 <kallisti> elliott: 5 minutes? is that an exaggeration?
17:44:11 <elliott> well if you have a huge program you gotta sed the imports
17:44:15 <elliott> and not all functions are in both i guess
17:45:09 <Sgeo> "HSQL doesn’t provide parameterized SQL statements at all" W. T. FUCKING. F.
17:45:26 <elliott> what the fucking f
17:45:36 <kallisti> what the fucking fuck.
17:45:41 <elliott> [Haskell-cafe] Are all monads functions?
17:45:41 <elliott> By Chris Smith - 5:26am - 6 authors - 6 replies
17:45:47 <elliott> hey oerjan i hate you f or making me read hasekel-cafe
17:46:07 <elliott> apparently WriterT is a function.
17:46:09 <elliott> they actually say this
17:46:11 <elliott> in the post
17:46:14 <kallisti> what the fucking fuck is fucking with all the fucking fucking?
17:46:18 <oerjan> elliott: yeah that question was awkward :P
17:46:33 <elliott> i guess if you assume every monad is a function
17:46:37 <elliott> then m (a, w) is a function too :P
17:46:43 <oerjan> WriterT, ErrorT, Either, [], Maybe...
17:46:51 <elliott> oerjan: everything is a function in haskell q.e.d.
17:46:59 <elliott> it's just church encodings, maan
17:47:00 -!- derdon has quit (Remote host closed the connection).
17:47:06 <Sgeo> Reader and State are functions, so I guess if those are the only examples one can think of offhand...
17:47:08 <oerjan> elliott: maaaan
17:47:19 <elliott> - Is it reasonable to present monads to newcomers by saying : monads are
17:47:19 <elliott> basically always functions. 'return x' will then be a function that always
17:47:19 <elliott> return 'x' regardless of its input and >>= is a special composition for
17:47:19 <elliott> this occasion.
17:47:22 <oerjan> Sgeo: Cont too
17:47:24 <elliott> PLEASE NEVER PRESENT MONADS TO NEWCOMERS
17:47:53 <oerjan> kallisti: fuck if i know
17:48:02 <Sgeo> And functions are monads
17:48:11 <Sgeo> Well, a monad
17:48:34 <Sgeo> ^^probably not the correct way to phrase that
17:49:05 <kallisti> GADTs are functions over functions with functions on functions around functions within functions over functions before functions after functions between functions inside functions
17:49:41 <kallisti> see? Haskell is easy.
17:49:47 -!- quintopia has quit (Ping timeout: 252 seconds).
17:50:24 <elliott> Sgeo: ((->) r) is a monad
17:50:26 <elliott> hth
17:50:40 <elliott> [[
17:50:41 <elliott> Maybe and [] have still the same meaning: they can be seen as functions:
17:50:41 <elliott> - they represent the result(s) that might or might not have a computation
17:50:41 <elliott> - *they have to be called/ran/executed* (wichever term you prefer) through
17:50:41 <elliott> Data.Maybe.maybe or Data.List.foldX, so that we can extract some value out
17:50:41 <elliott> of them.
17:50:43 <elliott> It's just that their input is () (void). But in Haskell, the type:
17:50:45 <elliott> () -> Maybe a
17:50:47 <elliott> is useless, Maybe a is sufficient.
17:50:49 <elliott> Maybe in that case "procedure" is then a better term than function.
17:50:51 <elliott> ]]
17:50:53 <elliott> oerjan: ouch, i thought that would be the end of it.
17:51:13 <elliott> haskell-cafe seems to be filled with people who program in haskell but don't know haskell
17:51:31 <elliott> "But still, I maintain my previous view." THIS IS BECAUSE YOU'RE DUMB
17:52:09 <ais523> elliott: sounds like a good place for me
17:52:13 <ais523> except I don't program in Haskell much
17:52:31 * Sgeo was about to rant about a monad tutorial on Reddit, but ehird already did
17:52:34 <shachaf> Maintaining one's previous view is the first skill to being an Internet person.
17:52:38 <Sgeo> Well, rant in here, which is useless
17:53:12 <Sgeo> Although that's not the way I would have thought of to poke that hole
17:53:24 <oerjan> shachaf: i agree! oh wait
17:53:54 <shachaf> elliott: By the way, everthing is a function in Haskell, remember?
17:54:07 <shachaf> Some thigns are just zero-argument functions.
17:54:10 <oerjan> ye olde zero argumetn functions
17:54:18 <elliott> shachaf: <elliott> oerjan: everything is a function in haskell q.e.d.
17:54:47 <elliott> hmm, 60 over 6
17:54:56 <shachaf> elliott: Curses.
17:55:33 * shachaf is off to the "airport" in a few minutes.
17:55:54 <elliott> The "airport".
17:56:57 <shachaf> If you know what I mean.
17:57:00 <shachaf> (I mean the airport.)
17:57:14 <shachaf> (But not immediately.)
17:57:29 -!- quintopia has joined.
17:57:29 -!- quintopia has quit (Changing host).
17:57:29 -!- quintopia has joined.
18:01:07 <ais523> happy Australian Mailman Mailing List Reminders Day!
18:02:06 <elliott> yay
18:02:24 <ais523> yay at me getting the name right?
18:02:28 <elliott> hmm, shouldn't it be Australian mailman mailing list mailing list reminders day?
18:02:40 <elliott> ((Australian (mailman (mailing list))) ((mailing list) reminders)) day
18:02:51 <ais523> seems needlessly formal
18:04:13 <oerjan> > do x<-"test";;;;[x]
18:04:14 <lambdabot> "test"
18:04:28 <ais523> ";;;;"?
18:04:37 <oerjan> that's what i was testing :P
18:05:01 <oerjan> > let x = 2;;;;;;;in x
18:05:01 <lambdabot> 2
18:05:17 <oerjan> > do x<-"test";;;;[x];;;
18:05:18 <lambdabot> "test"
18:07:00 <oerjan> > case 1 of 1 -> 1;;;;2 -> 2;;;
18:07:01 <lambdabot> 1
18:07:22 <fizzie> Oh no, so many sea creatures.
18:07:27 <oerjan> > case 1 of ;;;;;;1 -> 1;;;;2 -> 2;;;
18:07:28 <lambdabot> 1
18:07:42 <oerjan> > let ;;;;;;x = 2;;;;;;;in x
18:07:43 <lambdabot> 2
18:07:54 <oerjan> > do ;;;;x<-"test";;;;[x];;;
18:07:55 <lambdabot> "test"
18:08:33 <oerjan> > let { f = x where ;;;;;x=2;;;; } in f
18:08:34 <lambdabot> 2
18:08:45 <oerjan> looks like it applies to all the blocks
18:09:28 <elliott> > if ;;;; 42 then ;;; 29 else ;;; 1
18:09:29 <lambdabot> <no location info>: parse error on input `;'
18:09:31 <elliott> > if 42 then ;;; 29 else ;;; 1
18:09:32 <lambdabot> <no location info>: parse error on input `;'
18:09:34 <elliott> :(
18:09:42 <elliott> > if 42 ;; then 29 ; else 1
18:09:43 <lambdabot> <no location info>: parse error on input `;'
18:09:46 <elliott> :(
18:10:26 <oerjan> > if 42 ; then 29 ; else 1
18:10:27 <lambdabot> <no location info>: parse error on input `;'
18:10:58 <oerjan> i thought that was a new addition in 2010?
18:11:05 <oerjan> > do if 42 ; then 29 ; else 1
18:11:06 <lambdabot> <no location info>: parse error on input `;'
18:11:07 <elliott> oh wait
18:11:10 <elliott> lambdabot is on ghc 6 still iirc
18:11:58 <oerjan> > do {;;;;x<-"test";;;;[x];;;}
18:11:59 <lambdabot> "test"
18:12:07 <elliott> :D
18:12:34 <elliott> 35 over 6 :)
18:12:58 <oerjan> elliott: looks like you might turn in early? ;)
18:15:23 -!- kallisti has quit (Ping timeout: 252 seconds).
18:15:30 <elliott> kallisti: look at that comedic oerjan jokemaker. ha ha ha.
18:15:34 <elliott> yes, while /quat.
18:17:17 -!- kallisti has joined.
18:17:17 -!- kallisti has quit (Changing host).
18:17:18 -!- kallisti has joined.
18:18:17 <oerjan> quit quat quut
18:21:24 <ais523> oerjan: heh, that's actually plausible
18:21:38 <ais523> it's wrong, but it could be right if I didn't know it was wrong
18:21:46 <oerjan> well quu is sadly underrepresented
18:21:56 <ais523> oerjan: hmm
18:22:06 <ais523> q u consonant is even rarer than q non-u in English
18:22:14 <ais523> although I imagine that quu is pretty rare too, indeed
18:22:23 <ais523> it's perfectly pronounceable, and there's no more obvious way to write it, though
18:22:34 <elliott> qut
18:22:49 <elliott> squit squat squoot
18:23:46 -!- kallisti has quit (Ping timeout: 252 seconds).
18:29:04 -!- olsner has joined.
18:29:42 <elliott> @hoogle reify
18:29:42 <lambdabot> Language.Haskell.TH.Syntax reify :: Name -> Q Info
18:29:42 <lambdabot> Language.Haskell.TH reify :: Name -> Q Info
18:29:42 <lambdabot> package reify
18:30:25 <oerjan> i doubt reflection is included in hoogle, if that's what you're looking for
18:30:32 -!- kallisti has joined.
18:30:32 -!- kallisti has quit (Changing host).
18:30:32 -!- kallisti has joined.
18:30:52 <elliott> no
18:32:56 -!- kallisti has quit (Remote host closed the connection).
18:35:14 -!- kallisti has joined.
18:37:08 <elliott> oerjan: there's a guy in trondheim i want you to eliminate
18:37:30 <elliott> he's guilty of submitting a slightly better answer than mine less than a minute after i do, after i spend about ten minutes researching the question
18:37:36 <kallisti> elliott: what happens when you answer all the questions?
18:42:07 -!- itidus20 has joined.
18:42:54 -!- TeruFSX_ has joined.
18:43:56 -!- xandy| has quit (Ping timeout: 252 seconds).
18:44:19 -!- Zwaarddijk has quit (Ping timeout: 252 seconds).
18:44:24 -!- Zwaarddijk has joined.
18:45:02 -!- itidus21 has quit (Ping timeout: 252 seconds).
18:45:03 -!- EgoBot has quit (Ping timeout: 252 seconds).
18:45:03 -!- HackEgo has quit (Ping timeout: 252 seconds).
18:45:05 -!- ineiros has quit (Ping timeout: 252 seconds).
18:45:13 -!- HackEgo has joined.
18:45:14 -!- EgoBot has joined.
18:45:26 -!- Madoka-Kaname has quit (Ping timeout: 252 seconds).
18:45:26 -!- olsner has quit (Read error: Connection reset by peer).
18:45:26 -!- TeruFSX has quit (Ping timeout: 252 seconds).
18:45:27 -!- coppro has quit (Ping timeout: 252 seconds).
18:46:08 -!- Klisz has quit (Ping timeout: 252 seconds).
18:46:11 -!- ineiros has joined.
18:46:17 -!- xandy has joined.
18:46:27 <oerjan> `log zjoin.*scanl1
18:46:41 <HackEgo> 2011-12-17.txt:05:00:24: <elliott> zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
18:47:08 -!- coppro has joined.
18:47:08 <oerjan> <elliott> oerjan: there's a guy in trondheim i want you to eliminate <-- hm?
18:48:09 -!- Madoka-Kaname has joined.
18:48:10 -!- Madoka-Kaname has quit (Changing host).
18:48:10 -!- Madoka-Kaname has joined.
18:48:17 <kallisti> look at oerjan, pretending he's not a deadly assassin.
18:48:50 <elliott> oerjan: <elliott> he's guilty of submitting a slightly better answer than mine less than a minute after i do, after i spend about ten minutes researching the question
18:48:55 <oerjan> > let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:48:56 <lambdabot> Couldn't match expected type `Control.Applicative.ZipList
18:48:56 <lambdabot> ...
18:49:03 <oerjan> oops
18:49:15 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:49:16 <lambdabot> Couldn't match expected type `[[[a]]]'
18:49:17 <lambdabot> against inferred type `Simpl...
18:49:41 <oerjan> ah
18:49:55 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:49:56 <lambdabot> ([1,8],[1,8])
18:50:23 <oerjan> elliott: too bad i'll never know who it is, then
18:50:59 <elliott> oerjan: oh. well he goes to that university of yours :P
18:51:12 <elliott> that godless, commie, liberal, SO-rep-stealing university.
18:51:22 * oerjan wonders if it's that guy he thought he saw the other day
18:52:06 <ais523> oerjan: you thought you saw someone, but didn't know who it was?
18:52:08 <elliott> hammar
18:52:14 <ais523> and that made you doubt whether you saw them or not in the first place?
18:52:20 <oerjan> elliott: ah that it was
18:52:34 <elliott> oerjan: YOU MISSED A PERFECTLY GOOD REPHEIST OPPORTUNITY!
18:52:51 <elliott> Most SO outsiders don't know this, but you actually have to buy a device that plugs in via USB and dispenses physical rep.
18:52:55 <elliott> That's the real currency.
18:52:58 <oerjan> elliott: what's a repheist
18:53:01 <elliott> A heist of rep.
18:53:06 <oerjan> ah
18:53:07 <elliott> Like a hatheist, but for rep.
18:53:24 * Sgeo is finally able to replicate the "Click closes tab" thingy
18:53:25 <elliott> Epheists believe that god exists but is ephemeral, or something.
18:53:36 <Sgeo> Pressing on the upper-right corner of the pad does that
18:53:55 <Sgeo> How to change this behavior?
18:54:46 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[undefined]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:54:48 <lambdabot> ([1],[1*Exception: Prelude.undefined
18:54:54 <elliott> Sgeo: it's probably assigned to middle-click?
18:54:54 <oerjan> there you go
18:55:03 <elliott> oerjan: er oh dear
18:55:06 <elliott> did you just prove it broken?
18:55:16 <oerjan> elliott: when bottoms are involved, yes
18:55:20 <Sgeo> How do I unassign it from middle-click?
18:55:27 <elliott> Sgeo: what os
18:55:31 <elliott> oerjan: well, so is IO
18:55:33 <Sgeo> Because LXDE's keyboard&mouse thing doesn't have the option
18:55:35 <Sgeo> elliott, Lubuntu
18:55:50 <elliott> Sgeo: look for a synaptics conf file in /etc/X11/xorg.conf.d
18:55:58 <oerjan> elliott: i still hope it's repairable, though
18:56:05 <elliott> https://wiki.archlinux.org/index.php/Touchpad_Synaptics might help also
18:56:22 <elliott> oerjan: well ok. i wouldn't call that completely broken though, since most standard monads violate the laws when bottoms are involved
18:57:15 <kallisti> why is Jack so much better than PulseAudio.
18:57:59 <Sgeo> I don't seem to have an /etc/X11/xorg.conf.d
18:58:21 <elliott> Sgeo: ls /etc/X11
18:59:03 <Sgeo> http://pastie.org/private/rc2k4sviciszh6jlvifwyg
18:59:42 <elliott> ah
18:59:45 <elliott> dunno, try google :P
18:59:53 <oerjan> elliott: it's just that with the strict behavior of Prelude zipWith (which ghc's rewriting rules supposedly don't quite preserve btw), ZipList _does_ afaict fulfil the Applicative laws completely even with bottom; so it would be nice to have a similar Monad instance.
19:00:04 <elliott> HAPPY 2011.99942922374, EVERYBODY!!!
19:00:25 <elliott> oerjan: the strict behaviour?
19:01:31 <oerjan> elliott: when you zip two lists that both end at the same length, the first list determines whether it ends as [] or bottom
19:01:40 -!- olsner has joined.
19:02:10 <elliott> oerjan: hmm... does this mean zip `ap` tail isn't safe for []?
19:02:12 <oerjan> > zip [1,2] (3:4:undefined)
19:02:13 <lambdabot> [(1,3),(2,4)]
19:02:15 <elliott> in the presence of rewrite rules
19:02:20 <oerjan> > zip (3:4:undefined) [1,2]
19:02:21 <lambdabot> [(3,1),(4,2)*Exception: Prelude.undefined
19:03:16 <Sgeo> There's no way to tell whether zip is being too strict or whether that's just because that tried to be printed.... wait, what, why would that be an exception
19:03:16 -!- olsner has quit (Read error: Connection reset by peer).
19:03:21 <Sgeo> It should have been truncated
19:03:35 <Sgeo> > length $ zip (3:4:undefined) [1,2]\
19:03:36 <lambdabot> <no location info>: parse error on input `\'
19:03:38 <Sgeo> > length $ zip (3:4:undefined) [1,2]
19:03:38 <oerjan> elliott: hm...
19:03:38 <lambdabot> *Exception: Prelude.undefined
19:03:41 <Sgeo> !!!
19:03:42 <elliott> it should have? how exactly do you propose that happens?
19:03:43 <kallisti> Sgeo: ????
19:03:47 <oerjan> > (zip`ap`tail) []
19:03:48 <lambdabot> []
19:03:50 <elliott> is it meant to magically realise the first list ends in _|_
19:03:55 <elliott> and notice the other one ends
19:03:58 <oerjan> > (zip`ap`tail) [x,y,z]
19:03:59 <lambdabot> [(x,y),(y,z)]
19:04:00 <elliott> you can only do that sort of thing with unamb
19:04:11 * Sgeo misparsed 3:4:undefined as [3,4,undefined]
19:04:12 <elliott> oerjan: well obviously lambdabot might not trigger the rewrite rule :P
19:04:16 <elliott> Sgeo: clap
19:04:46 <oerjan> elliott: i assume it happens too rarely to be a problem...
19:04:48 <ais523> Sgeo: in Prolog notation, it'd be [3,4|undefined]
19:05:06 <Sgeo> > zip [1,2] (3:4:undefined)
19:05:07 <lambdabot> [(1,3),(2,4)]
19:05:13 <Sgeo> o.O hmm
19:05:22 <oerjan> elliott: also i don't know any examples, i just noticed a comment in the ghc source for zip and zipWith's rewriting rules
19:05:30 <Sgeo> Haskell needs more unamb
19:05:40 <oerjan> when trying to look up the exact ghc behavior
19:05:41 <elliott> Sgeo:
19:05:41 <elliott> @src zip
19:05:42 <lambdabot> zip (a:as) (b:bs) = (a,b) : zip as bs
19:05:42 <lambdabot> zip _ _ = []
19:05:49 <elliott> patterns are matched left-to-write
19:05:51 <elliott> right
19:06:12 <elliott> unamb is more audacious than my entangle, anyway :P
19:06:31 <elliott> seeing as you can produce decidedly impure results with it
19:06:54 <kallisti> elliott: would lazy patterns do anything to correct that?
19:06:57 <Sgeo> It would be nice if Haskell unambed stuff by default, such as ... did... something, with that definition
19:07:09 <elliott> Gregor: Could I convince you to convert some clog logs to glogbot format without actually logging a channel actively?
19:07:17 <elliott> kallisti: No, they would make zip crash and burn when it reached the end of the list.
19:07:24 <elliott> Sgeo: I'll tell the committee right away.
19:07:35 <Gregor> elliott: Uhh ... why?
19:07:45 <Gregor> elliott: You realize the converter is open, no?
19:07:47 <elliott> Gregor: tunes' pre-2011 logs are in an annoying zip file >_>
19:07:53 <elliott> I want the nice web interface to #haskell pre-2011.
19:08:40 <Gregor> Ahhhhhhhhhhhhhhhhhh
19:10:15 <elliott> riverrun, past Eve and Adam's, from swerve of shore to bend1
19:10:15 <elliott> of bay, brings us by a commodius vicus of recirculation back to2
19:10:15 <elliott> Howth Castle and Environs.3
19:10:15 <elliott> Sir Tristram, violer d'amores, fr'over the short sea, had passen-4
19:10:15 <elliott> core rearrived from North Armorica on this side the scraggy5
19:10:16 <elliott> isthmus of Europe Minor to wielderfight his penisolate war: nor6
19:10:18 <elliott> had topsawyer's rocks by the stream Oconee exaggerated themselse7
19:10:20 <elliott> to Laurens County's gorgios while they went doublin their mumper8
19:10:22 <elliott> all the time: nor avoice from afire bellowsed mishe mishe to9
19:10:24 <elliott> tauftauf thuartpeatrick: not yet, though venissoon after, had a10
19:10:26 <elliott> kidscad buttended a bland old isaac: not yet, though all's fair in11
19:10:28 <elliott> vanessy, were sosie sesthers wroth with twone nathandjoe. Rot a12
19:10:30 <elliott> peck of pa's malt had Jhem or Shen brewed by arclight and rory13
19:10:32 <elliott> end to the regginbrow was to be seen ringsome on the aquaface.14
19:10:34 <elliott> The fall (bababadalgharaghtakamminarronnkonnbronntonner-15
19:10:36 <elliott> ronntuonnthunntrovarrhounawnskawntoohoohoordenenthur-16
19:10:38 <elliott> nuk!) of a once wallstrait oldparr is retaled early in bed and later17
19:10:40 <elliott> on life down through all christian minstrelsy. The great fall of the18
19:10:42 <elliott> offwall entailed at such short notice the pftjschute of Finnegan,19
19:10:44 <elliott> erse solid man, that the humptyhillhead of humself prumptly sends20
19:10:46 <elliott> an unquiring one well to the west in quest of his tumptytumtoes:21
19:10:48 <elliott> and their upturnpikepointandplace is at the knock out in the park22
19:10:50 <elliott> where oranges have been laid to rust upon the green since dev-23
19:10:52 <elliott> linsfirst loved livvy.24
19:10:54 <elliott> Joyce's works enter public domain at midnight, happy copyright infringement day!
19:11:30 <oerjan> what, a copyright actually expiring? impossible! i guess they'll soon reverse that.
19:11:59 <elliott> ulysses isn't quite mickey mouse
19:12:04 <Sgeo> My == and /= are going to be partial functions
19:12:12 <elliott> ok
19:12:13 <Sgeo> :/
19:12:24 <Gregor> elliott: I don't have the disk space >_>
19:12:36 <elliott> Gregor: WTF is taking up all your fucking disk space?
19:12:44 <Gregor> Lots of shit <_<
19:12:54 <elliott> Gregor: I run a fucking Minecraft server that backs up every 6 hours and I have so much space free!
19:13:05 <elliott> (OK, nobody has connected to it since the update, but still :P)
19:13:20 <elliott> Sgeo: wait is this for the infinite precision real thing
19:13:26 <elliott> because uh
19:13:33 <elliott> yes it's true that you can't compare infinite digits in finite time
19:14:05 <elliott> ais523: yay, just got my reminder
19:14:35 <ais523> elliott: I get two
19:14:39 <ais523> one as ais523, one as callforjudgement
19:15:06 <elliott> ais523: that's like having a birthday on christmas and getting twice the presents :/
19:15:10 <elliott> not fair, forward one to an orphan
19:15:20 <ais523> but I keep trying to tell people not to give me Christmas presents
19:16:14 <Gregor> Lesse what ncdu says ...
19:16:49 <ais523> elliott: you can sign up a second account to the lists, you know?
19:17:02 <elliott> ais523: that's like opening presents before christmas day!
19:17:05 <ais523> incidentally, it's callforjudgement that does all the receiving; either can send
19:17:23 <ais523> which is why you typically get original messages to Agora from me from ais523, and replies from callforjudgement
19:18:07 <elliott> I never noticed
19:18:09 <oerjan> lessee join [[[1,2],[3,4]],[undefined]] = [[1,2]] is a given, the undefined is too deep. map join [[[1,2],[3,4]],[undefined]] = [[1,4], undefined] is also a given. oh dear i'm not sure this can be fixed.
19:19:06 <elliott> oerjan: you realise you haven't even proved the laws work when ignoring _|_ like a reasonable person :P
19:19:20 <oerjan> elliott: i haven't?
19:19:43 <ais523> what are you trying to prove as what?
19:19:48 <elliott> oerjan: well, i never saw you do so.
19:19:58 <elliott> ais523: ziplist monad
19:20:50 <kallisti> elliott: when you write sudo cat blah > file
19:20:55 <kallisti> blah is being written to file as a super user right?
19:21:02 <elliott> Phantom_Hoover is a wasp discuss
19:21:04 <elliott> kallisti: no
19:21:11 <elliott> sudo is just another program.
19:21:29 <kallisti> ah I see.
19:22:07 <ais523> kallisti: it's (sudo cat blah) > file, not sudo (cat blah > file)
19:22:20 <ais523> usual method to redirect to files, writing them as root, is to use tee
19:23:21 <oerjan> elliott: well i believe that f <*> x = zjoin ((`fmap` x) `fmap` f) and zjoin . zjoin = zjoin . fmap zjoin, and that these two equations are precisely what's needed to have a join extending any Applicative to a Monad.
19:23:35 <elliott> oerjan: oh you believe. ok that's as good proof
19:23:38 <elliott> *good as
19:24:12 <oerjan> elements of the form ((`fmap` x) `fmap` f) are the rectangular lists, btw
19:24:19 <oerjan> *lists of lists
19:24:35 <Gregor> elliott: Culprit: All these damned chroots :)
19:24:40 <elliott> wow if i don't get 5 rep in 4.5 hours i'm gonna kill someone
19:24:47 <elliott> Gregor: hardlinks?
19:24:51 <ais523> elliott: it's StackOverflow, it's not that serious…
19:25:03 <elliott> ais523: yes i meant i'm literally going to kill someone thank you for interpreting me correctly :) :) :)
19:25:05 <oerjan> r.i.p. ais523
19:25:16 <Gregor> elliott: Remember when I installed chroots and it broke friggin' everything?
19:25:16 <elliott> whens the trains to bham run
19:25:18 <Gregor> Erm
19:25:20 <Gregor> s/chroots/hardlinks/
19:25:23 <ais523> elliott: it's not even serious enough to make jokey death threats on IRC
19:25:26 <elliott> Gregor: Yeah, because you used a shitty script :P
19:25:39 <elliott> ais523: --ais523 "nomic has ruined my sleep schedule" ais523
19:25:49 <Gregor> elliott: Suggest a non-shitty script.
19:25:49 <ais523> elliott: it only ruins it on occasion
19:25:52 <elliott> Gregor: with nix you would automatically get the benefits of hardlinking >:)
19:26:01 <elliott> ais523: I only want to kill people for rep on occasion
19:26:18 <elliott> Gregor: http://linux.die.net/man/1/hardlink?
19:26:38 <elliott> Only run it on /usr of chroots tho :P
19:26:40 <elliott> Nothing mutable.
19:27:08 <ais523> I typically use ln for hardlinking
19:27:21 <ais523> also, I forgot it was possible to compare files
19:27:32 <ais523> for a moment, I thought it was like comparing funcitons
19:27:34 <ais523> *functions
19:27:40 <kallisti> guys...
19:27:48 <oerjan> Sgeo: the lack of terminating == for computable reals is a well-known thing.
19:27:52 <kallisti> my mom didn't know what "nocturnal" meant.
19:27:57 <ais523> hmm, that manpage is worrying
19:28:06 <ais523> because it doesn't explain what it does aobut symlinks
19:28:07 <ais523> *about
19:28:12 <oerjan> Sgeo: basically, there's a theorem that says any always terminating function on computable reals must be continuous.
19:28:15 <ais523> kallisti: what nationality is she?
19:28:24 <kallisti> American, of course.
19:28:26 <kallisti> like me.
19:28:35 <ais523> oerjan: *deterministic?
19:28:46 <elliott> ais523: facepalm
19:29:01 <ais523> you can create a function that outputs at random if the answer is sufficiently close to a breakpoint
19:29:30 <elliott> oerjan: i don't think you need a result that strong, anyway
19:29:43 <Phantom_Hoover> <elliott> Phantom_Hoover is a wasp discuss
19:29:46 <elliott> although i'm not sure what weaker result you could prove it with :)
19:29:58 <Phantom_Hoover> No, how dare you suggest I'm Anglo-Saxon????
19:30:08 <Phantom_Hoover> Also I think I'm technically Catholic.
19:30:14 <elliott> No I meant a buzz wasp.
19:32:23 <Gregor> elliott: Here goes nothin'!
19:32:59 <elliott> Gregor: RIP chroots
19:33:56 <oerjan> <ais523> oerjan: *deterministic? <-- that's part of the definition of function hth
19:34:41 <ais523> oerjan: well, a function can be deterministic, but give different outputs for different representations of the same computable real
19:34:46 <ais523> so is nondeterminstic if you identify them
19:34:51 <ais523> that's what I was getting at
19:34:57 <lahwran> <elliott> [16:30:21] @messages
19:34:58 <oerjan> eek
19:34:59 <lahwran> hm?
19:35:15 <Gregor> <elliott> Gregor: RIP chroots // Probably
19:35:22 <ais523> lahwran: it's asking lambdabot if there are any messages for him
19:35:26 <oerjan> lahwran: your nick is uncomfortably close to lambdabot
19:35:34 <lahwran> ah
19:35:42 <elliott> lahwran: I did /query la<tab><enter>@messages<enter> to read lambdabot messages :P
19:35:45 <elliott> You got in the way!
19:36:03 <oerjan> lahwran: which happens to be the main bot we use here to send messages
19:36:04 <lahwran> what client?
19:36:05 <elliott> <ais523> oerjan: well, a function can be deterministic, but give different outputs for different representations of the same computable real
19:36:05 <elliott> <ais523> so is nondeterminstic if you identify them
19:36:05 <elliott> <ais523> that's what I was getting at
19:36:11 <elliott> ais523: I can't tell what you're talking about but it sounds like nonsense
19:36:32 <lahwran> elliott: you know about time-sorted tabcomplete?
19:36:36 <ais523> elliott: OK, you agree that it's possible for two computable reals to be equal, even though you can't determine the fact?
19:36:43 <elliott> lahwran: yeah, but i'd just connected :P
19:36:50 <lahwran> ah
19:36:57 <elliott> ais523: I do not believe you can write a function which distinguishes two representations of the same computable real.
19:37:08 <Gregor> Saved: 53.85 MiB
19:37:12 <Gregor> ... yaaaaaaaaaay X_X
19:37:12 <ais523> elliott: if it's operating on the representations, it's trivial
19:37:19 <ais523> and that's how you implement such functions on a computer
19:37:30 <ais523> Gregor: are you on a system where 53MiB is worth saving?
19:37:34 <Gregor> No
19:37:40 <lahwran> I can't tell who is a bot and who's not :s
19:37:44 <elliott> ais523: Statement contradicting previous statement followed by incorrect statement
19:37:49 <elliott> lahwran: We're all bots apart from lahwran.
19:37:54 <lahwran> oh, okay
19:38:02 <Gregor> elliott: Don't forget about fungot. fungot's not a bot.
19:38:03 <fungot> Gregor: prof., on/ carrot. i suppose that i meant was that on certain points along/ lines :) intersection at/ galapagos archipelago, birds :) paradise, and some to both sexes.
19:38:14 <ais523> lahwran: the easy way to see if something's a bot is to see if other bots refuse to listen to it
19:38:45 <ais523> !help
19:38:46 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
19:38:56 <ais523> ^bf ,[.,]!!help
19:38:56 <fungot> !help
19:38:56 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
19:39:00 <ais523> err, what?
19:39:02 -!- iconmaster has quit (Read error: Connection reset by peer).
19:39:10 <oerjan> ais523: well it sounds a bit like those examples of things you can compute about a turing machine's behavior, like whether it ever goes right of a certain point - and which because of rice's theorem etc. can never capture what a TM calculates
19:39:12 <ais523> I guess fungot is indeed not a bot
19:39:14 <fungot> ais523: whitsunday island is :) small size in comparison with those :) another region, whence it takes its name :) red sea. " i say my notion, but i venture to give you fnord but it has lately occurred to me that we here see that, if we suppose/ case :)/ potato, as we shall hereafter see, compared with/ cross-bred offspring between two species/ male sexual element can act not solely on/ descendants from i; so will it be pretend
19:39:34 <oerjan> *capture anything about
19:39:35 <fungot> ais523țiu}iË`r523: as producing changed conditions, schmankewitsch's experiments on. -flowers :). fnord near. fnord near. fnord :) pigs in china. -occurrence :) pencilled feathers in fowls.
19:39:52 <ais523> ^style
19:39:52 <fungot> Available: agora alice c64 ct darwin* discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
19:40:08 <Gregor> elliott: Any other brilliant suggestions :(
19:40:09 <ais523> now I'm confused
19:40:11 <elliott> @tell fizzie <fungot> ais523È›“i¼ÆÁÂÀu§¥‘–Å}i¿½Ã‹¶ª`r523: as producing changed conditions, schmankewitsch's experiments on. -flowers :). fnord near. fnord near. fnord :) pigs in china. -occurrence :) pencilled feathers in fowls.
19:40:12 <fungot> elliott: dependence :), upon/ fleece :) sheep. -in cats. -in pigeons. -in breeding fowls. -in ducks.
19:40:12 <lambdabot> Consider it noted.
19:40:22 <elliott> Gregor: How many chroots do you have
19:40:28 <ais523> elliott: and it didn't do that in response to anything of mine
19:40:33 <Gregor> Four >_> <_<
19:40:38 <ais523> hmm, I wonder if those are consecutive ASCII codes
19:40:40 <elliott> Gregor: How big are they
19:40:58 <ais523> ^bf ,[+.]!¼
19:40:58 <fungot>
19:41:06 <ais523> apparently not
19:41:22 <ais523> hmm, such a program would better be written in Easy
19:41:34 <Gregor> elliott: Smallest is 1.2GB, largest is 2.4GB (glogbot)
19:41:36 -!- itidus22 has joined.
19:41:40 <Gregor> Err, 3.4GB
19:42:32 <elliott> Gregor: Why not store past glogbot logs gzipped
19:42:49 <elliott> OK, people would have to ungzip after rsyncing, but making the web interface use zcat shouldn't be hard.
19:42:54 <elliott> And text gzips STUPIDLY well.
19:42:58 <oerjan> ais523: i think Gregor removed the ignore lists from his bots when he implemented the zero-width space method to make all the others ignore his instead
19:43:11 <ais523> ah, OK
19:43:25 <ais523> clearly I'll have to write a bot that uses zero-width-space as a command character
19:43:40 <Gregor> lol
19:43:41 <elliott> Gregor: Why does glogbot run in a chroot?
19:43:47 <elliott> It doesn't run untrusted code or anything.
19:44:00 <ais523> elliott: in case someone's trying to hack it with specially-crafted IRC messages?
19:44:05 <ais523> who knows, it works for Windows Phone
19:44:28 <Gregor> elliott: Because I can't move it now >_>
19:45:01 <elliott> Gregor: ...why not...
19:45:15 <elliott> killall glogbot; mv; ./glogbot
19:45:23 <elliott> Instantly like 1 gig saved
19:45:24 <ais523> "mv;"?
19:45:24 <Gregor> "killall glogbot" ain't a good idea.
19:45:32 -!- itidus20 has quit (Ping timeout: 248 seconds).
19:45:52 <elliott> Gregor: Have you heard of... glogbackup.
19:45:56 <ais523> $ mv
19:45:57 <ais523> mv: missing file operand
19:45:57 <ais523> thought so
19:46:00 <Gregor> elliott: Yeah, but I don't integrate them 8-D
19:46:01 <elliott> Gregor: Anyway, just trigger the watchdog thing manually.
19:46:07 <oerjan> <elliott> Gregor: Why not store past glogbot logs gzipped <-- won't this affect `log aversely?
19:46:11 <elliott> You have a Linux-based watchdog mechanism, right?
19:46:13 <elliott> i.e. non-ping based
19:46:14 <ais523> but I had to check the manpage first, just to make sure
19:46:18 <Gregor> elliott: Yes
19:46:23 <elliott> oerjan: Well, yes.
19:46:26 <elliott> Gregor: Trigger it
19:46:33 <ais523> it might have renamed the current directory over my home directory, or something like that
19:46:36 <ais523> by analogy with cd
19:47:23 -!- zzo38 has joined.
19:47:36 <zzo38> ?messages
19:47:36 <lambdabot> You don't have any new messages.
19:47:42 <zzo38> Liar.
19:47:52 <elliott> :D
19:50:14 <nooga> hah
19:50:26 <nooga> I've got a party for 15 today
19:51:12 <ais523> hmm, doesn't that mean you'd have to duplicate some roles?
19:51:25 <ais523> and I'm not sure there's enough food in the whole dungeon to keep them going very long
19:54:57 <oerjan> just stack the dwarfs in the height, it'll be fine
19:55:17 <elliott> oerjan: you've clearly played df
19:55:38 <elliott> Gregor: Sheesh, I just told you how to save like a gig and HOW DO YOU REPAY ME
19:55:38 <oerjan> surprisingly, no
19:55:44 <elliott> oerjan: C L E A R L Y
19:58:08 <Gregor> elliott: I WILL REPAY YOU WITH DEATH
19:58:12 <Gregor> ... HEY
19:58:19 <Gregor> Who put the log URL back in the /topic???
19:58:51 -!- Gregor has set topic: Log URL (sha512sum-compressed): d1fe384376eb732f625af811f9e9cdffd9071544ff885acff0dc7c6b7a29598f0a3103dec749cc825fb0e7db39fc33c1cab94be7bc72f629c360995e0a4bb58a.
19:59:05 -!- oerjan has set topic: Log URL (sha512sum-compressed): d1fe384376eb732f625af811f9e9cdffd9071544ff885acff0dc7c6b7a29598f0a3103dec749cc825fb0e7db39fc33c1cab94be7bc72f629c360995e0a4bb58a | http://codu.org/logs/_esoteric/.
19:59:16 <Gregor> :(
19:59:23 <ais523> oerjan: OK, /that/'s hilarious
19:59:38 <ais523> having the log URL in the topic is useful
19:59:46 <ais523> although arguably the SHA version is enough to satisfy Freenode
19:59:54 <ais523> !glogbot_ignore as is this, despite it not actually working
19:59:56 <EgoBot> as is this, despite it not actually working
20:00:21 -!- Gregor has set topic: Logs: http://hugeurl.geeks.org/?M2JjZjA5Njk0YzVmOGU3MGMyZjA0ZjhlOWVjMzc2ZGQmMTQmVm0wd2QyUXlVWGxWV0d4V1YwZDRXRmxVU205V01WbDNXa2M1VjFac2JETlhhMk0xWVd4S2MxZHFRbFZXYkhCUVZqQmFZV015U2tWVWJHaG9UVlZ3VlZadGNFZFpWMDE1VTJ0V1ZXSkhhRzlVVjNOM1pVWmFjVkZ0UmxSTmF6RTFWVEowVjFaWFNraGhSemxWVm0xb1JGWldXbUZrUjFaSFYyMTRVMkpIZHpGV2EyUXdZekpHYzFOdVVtaFNlbXhXVm1wT1QwMHhjRlpYYlVaclVqQTFSMXBGV2xOVWJGcFZWbXR3VjJKVV.
20:00:29 <Gregor> Err ...
20:00:32 <Gregor> That got cut off >_>
20:00:39 <elliott> It works tho
20:00:40 <oerjan> how surprising.
20:00:57 <Gregor> elliott: Doesn't seem to?
20:00:58 <zzo38> Then enter a gopher URL with an obscure DNS entry
20:01:14 -!- elliott has set topic: Logs available through content-addressed HTTP at d16921e5091fab3bd6f8d3ccd27a02af21a3220f.
20:01:21 <elliott> Gregor: Oh, indeed not
20:01:30 <Sgeo> content-addressed HTTP?
20:01:36 <elliott> Sure
20:01:47 * oerjan sigh
20:01:57 <ais523> is #esoteric-minecraft logged?
20:02:01 <Gregor> Ü
20:02:13 <elliott> ais523: yes
20:02:20 <Gregor> #esoteric-minecraft is a SECRET, you should NEVER say #esoteric-minecraft in this channel, or people might know that #esoteric-minecraft exists!
20:02:25 <elliott> Also that.
20:02:29 <elliott> (In fact, it was the cause of the anti-clog revolution.)
20:02:42 <Gregor> You will ruin everything if #esoteric-minecraft is mentioned here.
20:02:49 <elliott> Stop it. :p
20:03:07 <ais523> I take it #esoteric-blah isn't?
20:03:17 <Gregor> elliott: OK, I'll stop mentioning #esoteric-minecraft .
20:03:28 <elliott> ais523: indeed
20:03:38 <ais523> we should use #esoteric-blah more
20:03:46 -!- oerjan has set topic: Absolutely NO mention of #esoteric-minecraft! | http://codu.org/logs/_esoteric/.
20:05:26 <oerjan> dammit i thought the neighbors were smart enough to keep their dogs indoors _tonight_...
20:05:36 <ais523> are they scared of fireworks?
20:05:48 <oerjan> aren't all dogs? anyway i hear barking.
20:05:55 <oerjan> and fireworks.
20:05:55 <Gregor> They were, but now they /are/ fireworks.
20:05:59 <Gregor> (Guahahah et cetera)
20:06:42 <oerjan> (i suppose there must be _some_ dog who loves fireworks. which probably means it's even more important to keep it away from them.)
20:06:54 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
20:07:37 <fizzie> There's that "dog grabs a firework-shooting pole and carries it around, shooting fireworks everywhere" video, I think it was on the YouTube front page the other day when I went by.
20:07:37 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
20:08:54 <fizzie> http://www.youtube.com/watch?v=N9FBVli2viw -- I don't really know why it says "click here for a midget" in the corner. Sometimes the internet, it is puzzling.
20:09:40 <fizzie> (Also it just seems to be one sample of a genre.)
20:09:50 <ais523> fizzie: YouTube people trying to get more views
20:10:24 -!- Klisz has joined.
20:10:53 <oerjan> a smidget of a midget
20:10:55 <ais523> I'm a little scared of the amount of pleading and general terror that YouTubers seem to have about not getting enough comments, ratings, and subscriptions
20:11:00 <ais523> it's as bad as elliott with SO rep
20:12:09 <elliott> If I don't get 1,000,0000000000000,0 stoack oevrflow rep byt omorrow i wil say "dam nthe whole world", forward to friends+family or suffer in eternal darkness
20:12:17 * oerjan has a hunch smidget is misspelled
20:12:22 <elliott> (APPROVED BY PRESIDENT OF AMERICA)
20:13:33 <oerjan> oh it's smidgen
20:13:45 <Sgeo> elliott, does XFCE not have such crappy lack of easy to use customizability?
20:13:51 <Sgeo> Compared to LXDE
20:13:57 * Sgeo is starting to really be ticked off
20:14:53 * oerjan is mostly annoyed because this was the one evening he thought he count on not hearing that damn barking
20:15:00 <oerjan> *could count
20:15:00 <elliott> woof
20:15:37 * oerjan hits elliott with the saucepan ===\__/
20:16:12 <elliott> bark
20:25:15 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:25:20 <zzo38> Have any you written any FurryScript codes?
20:27:44 <elliott> no
20:30:35 <zzo38> Then learn?
20:31:24 <elliott> :(
20:34:17 <ais523> zzo38: but the page says that if you reach it, unless you're interested, to go to a random page instead
20:34:27 <ais523> were you expecting people to not honour that requirement?
20:35:23 <zzo38> ais523: No, I meant if you reached it *using a RANDOM PAGE function*
20:35:27 <zzo38> Maybe I should make it clear.
20:35:42 <ais523> zzo38: it says "after a random page search"
20:35:46 <ais523> and I've done at least one of those in the past
20:35:47 <ais523> so it is after
20:35:56 <oerjan> zzo38: i don't think the random page function usually goes to the User: namespace (or any other than main)
20:36:06 <zzo38> OK, I removed that note.
20:36:17 <zzo38> oerjan: Yes I think you are correct; I fixed it
20:36:36 <zzo38> And yes I agree the grammar was wrong
20:36:58 -!- Phantom_Hoover has joined.
20:37:07 -!- Phantom_Hoover has quit (Changing host).
20:37:07 -!- Phantom_Hoover has joined.
20:37:29 <oerjan> Phantom_Hoover: YOUR CLOAK IS FOOLING NO ONE
20:38:06 <ais523> hmm, I wonder what my ping to phantom hoover is like?
20:38:07 <ais523> we have the same ISP
20:38:20 <oerjan> -0.1 s
20:38:25 <elliott> ais523: (diff) (hist) . . N User:PepanoMofumo‎; 19:56 . . (+2,955) . . PepanoMofumo (Talk | contribs) (New page: Occupation interview isn't just concerning the proper attire. Nonetheless, that could make a huge difference there. Females often give a job interview attire too much of a credit. These p...)
20:38:48 <ais523> http://esolangs.org/wiki/User:PepanoMofumo
20:39:06 <Phantom_Hoover> elliott, hey, mock ais523 for his ISP too.
20:39:13 <elliott> ais523: ha ha, virgin
20:39:16 <elliott> also, virgin media user
20:39:36 <ais523> not my ISP, really
20:39:43 <ais523> I don't have my own connection, so it's borrowed
20:39:46 <ais523> luckily, it hasn't gone wrong
20:39:55 <Phantom_Hoover> no we were
20:39:55 <oerjan> yeah those virgin guys aren't exactly rocket scientists. oh wait...
20:39:56 <Phantom_Hoover> isp
20:39:58 <Phantom_Hoover> freinds
20:40:00 <ais523> the impression I get from the Internet of Virgin is that it's very good when it's working, and very bad the rest of the time
20:40:19 <Phantom_Hoover> I've... never really had a *bad* experience with it.
20:40:25 <Phantom_Hoover> It's just a bit naff.
20:40:47 <ais523> are they telling the truth when they claim to have a faster connection than everyone else's?
20:41:08 <Phantom_Hoover> Dunno, does everyone else have to wait overnight to torrent things?
20:41:28 <ais523> I assume so
20:41:31 <ais523> depends on how large the things are, ofc
20:42:30 <ais523> incidentally, the spambot's advice about interview dress is entirely sensible, apart from looking like machine-translated English
20:42:31 <elliott> well, virgin offer fibre-otpic
20:42:32 <elliott> but so does bt nowadys
20:44:01 -!- monqy has joined.
20:45:20 <zzo38> Is this document of FurryScript understandabout to you, or no good?
20:46:33 <elliott> i didn't read it
20:54:48 -!- centrinia has joined.
20:57:41 <elliott> `welcome centrinia
20:57:53 <HackEgo> centrinia: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:57:58 <centrinia> Hello elliott.
20:59:23 <Phantom_Hoover> "Or should I call you.......... DAD"
20:59:35 <zzo38> Are you sure?
21:05:44 <zzo38> s/DAD/BAD/
21:08:15 <zzo38> Tell me if you think any command missing from FurryScript, which you would find important
21:08:31 <ais523> [21:07] [wallops] And I hear that in 53 minutes it's time for FINLAND to enter the new year
21:08:46 <elliott> Rset in peace, Finland.
21:08:50 <elliott> ais523: wait, how do I get wallops?
21:08:52 <ais523> zzo38: it needs a goto-but-not-really command
21:08:54 <ais523> all languages do
21:08:57 <ais523> elliott: /mode elliott +w
21:09:01 <ais523> I have it in an onjoin script
21:09:02 <elliott> im walloped
21:09:04 <ais523> only with ais523, not elliott
21:09:14 <elliott> I just dewalloped you
21:09:17 <elliott> or would have, were I an op
21:09:26 <ais523> oper?
21:09:34 <ais523> I don't think channel op has anything to do with dewalloping other poeple
21:09:36 <ais523> *people
21:09:39 <zzo38> ais523: What is a goto-but-not-really command?
21:09:53 <zzo38> Channel operator and server operator are two different things
21:10:15 <ais523> zzo38: it's like a goto, but not really
21:10:41 <zzo38> I do have continuations
21:10:47 <ais523> hmm, that'll do
21:11:16 <zzo38> Did you read it? If you do, then you can see that it have continuations too
21:11:59 <zzo38> If anything in there is not understandable then please notify me
21:12:00 <elliott> ais523: well, I got * #esoteric :You're not a channel operator
21:12:28 <ais523> elliott: sure you didn't aim it at #esoteric rather than me?
21:12:37 <ais523> perhaps your client automatically puts the name of the current channel in the command
21:12:41 <ais523> if you aim it at someone lse
21:12:42 <ais523> *else
21:14:36 <elliott> ah, I might have mixed up the arguments
21:14:41 <elliott> but yes, I suspect it does
21:14:50 <zzo38> Ha ha! It isn't about GameCube! So now push the explode button and your TV set will explode and money will come out.
21:16:21 <Phantom_Hoover> Is it more money than the TV's worth?
21:16:35 <zzo38> I guess so.
21:20:00 <ais523> o
21:20:34 <elliott> O
21:20:56 <Vorpal> elliott, another reason I use my own DNS server: my ISP DNS keeps dying
21:24:37 <ais523> [wallops] if you'd like your country walloping let me know (assuming i'm around)
21:24:41 <ais523> it'd be nice if wallops said who they were from
21:25:43 <elliott> 28-mrmist/Wallops-
21:25:44 <elliott> they do.
21:25:56 <elliott> PEB server and bad client
21:25:57 <ais523> hmm, in that case, my client is deleting it
21:26:02 <ais523> "PEB server"?
21:26:07 <elliott> problem exists between ...
21:26:13 <ais523> aha
21:26:28 * elliott considers asking mrmist for the south pole
21:26:41 <ais523> it probably lives in UTC
21:26:47 <elliott> they use new zealand time there
21:26:50 <elliott> but the south pole has no defined timezone
21:26:51 <ais523> ah, aha
21:26:51 <elliott> obviously
21:26:55 <elliott> however
21:27:01 <ais523> indeed, but the people living there need to name times somehow
21:27:02 <elliott> its day lasts 3 months or 6 months or something in total
21:27:04 <ais523> that's why I assumed UTC
21:27:06 <elliott> so i think a new day should begin in 2012
21:27:11 <ais523> and 6 months, obviously
21:27:16 <elliott> so it would actually be meaningful
21:27:18 <elliott> ais523: oh, right
21:27:33 <elliott> ais523: the reason they use new zealand time is because they fly there from nz
21:27:39 <elliott> because... NZ is far south :
21:27:40 <elliott> :P
21:30:12 <zzo38> Is the [[StateFlip]] esolang turing-complete? It has flipping and fixed mirrors, and infinite memory.
21:33:49 <elliott> libya, lowercase.
21:42:12 <oerjan> elliott: wat
21:43:17 * oerjan suspects lahwran of being a rotidder
21:44:12 <elliott> -mrmist/Wallops- Just 30 minutes to go for Romania libya Egypt and many more!
21:45:13 <oerjan> it's camelcase because sahara
21:45:37 <ais523> oerjan: but why lowercamelcase, not uppercamelcase?
21:46:15 <oerjan> Egypt gets the upper because pyramids.
21:47:07 <zzo38> I live in Canada there are many timezones depending what province you are in.
21:47:54 <oerjan> this is when the chinese come here to gloat. except they've already gone to bed, i guess.
21:48:05 <oerjan> in their one huge timezone.
22:01:06 -!- GreaseMonkey has joined.
22:02:51 <elliott> the much of congo
22:03:29 * oerjan does the conga
22:05:50 <fizzie> Gloat gloat gloat.
22:06:01 <fizzie> We just did the thing thing future thing.
22:06:19 <elliott> yes
22:06:32 <zzo38> I think the monads and comonads that depend on a monoid can be made into indexed monads and index comonads that depend on a category.
22:06:44 <elliott> merry christmas fizzie
22:06:58 -!- DCliche has joined.
22:07:19 <fizzie> elliott: Honk you.
22:08:34 -!- Klisz has quit (Disconnected by services).
22:08:39 -!- DCliche has changed nick to Klisz.
22:13:24 <elliott> isreal
22:13:33 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=is+israel+real
22:14:41 <Phantom_Hoover> http://en.wikipedia.org/wiki/Edward_Lear
22:14:44 <Phantom_Hoover> wow
22:15:07 <elliott> Phantom_Hoover: wow?
22:15:09 <Phantom_Hoover> I will never look at The Owl and the Pussycat the same way again after seeing that photo.
22:15:48 <Phantom_Hoover> Runcible spoons aren't real??
22:15:59 <Phantom_Hoover> My parents told me that they were spoons with a bowl at each end.
22:16:54 <elliott> http://www.straightdope.com/columns/read/1228/whats-a-runcible-spoon
22:18:15 <zzo38> If you use the [()] for natural numbers, then >> is multiplication and <|> is addition
22:20:32 <fizzie> Phantom_Hoover: Your parents apparently aren't the only ones: http://www.bodgers.org.uk/bb/phpBB2/viewtopic.php?f=15&t=357&start=15 (from about the sixth message down)
22:21:54 <Phantom_Hoover> "My dictionary says -
22:21:54 <Phantom_Hoover> Runcible Spoon . . . "a fork curved like a spoon, with three broad prongs, one of which has a sharpened outer edge for cutting." "
22:21:56 <Phantom_Hoover> I
22:22:05 <Phantom_Hoover> I really want to refer to sporks as runcible spoons.
22:22:10 <elliott> You may.
22:22:23 <fizzie> Google image search for "runcible spoon" in quotes seems to return mostly sporks, anyway.
22:22:44 <ais523> fizzie: it's like a spork that's also a knife
22:23:16 <oerjan> > (mapM_ . const) [(),()] [(),(),()]
22:23:17 <lambdabot> [(),(),(),(),(),(),(),()]
22:23:31 <oerjan> zzo38: ^
22:23:34 <fizzie> ais523: Yes, a sporf.
22:23:42 <elliott> ais523: you realise the topic was just that all the definitions of runcible spoon contradict each other, right?
22:23:45 <ais523> is that the ofificial name?
22:23:50 <ais523> elliott: oh, no I don't
22:23:57 <elliott> ais523: vorpal
22:23:59 <ais523> I'm rarely paying more than tangential attention to teh channel
22:24:05 <ais523> *the
22:24:14 <ais523> just I'm better at hiding it than Vorpal
22:24:19 <ais523> and occasionally use scrollback rather than asking
22:24:20 <fizzie> I don't think it's very official-official. "A sporf is a generic term for a single eating utensil combining the properties of a spoon, fork, and knife.[1][2] One popular brand was invented by William McArthur in the 1940s in Australia and sold with the brand name Splayd, another brand with a serrated edge is the Eazi-Eater[3]"
22:24:25 <elliott> well, marginally better at least
22:24:38 * elliott wants a single utensil for all purposes
22:24:42 <elliott> including murder
22:24:42 <fizzie> knork is the knife-fork, and spife is the spoon-knife.
22:24:45 <Phantom_Hoover> elliott, actually, the topic was my parents lying to me in my childhood.
22:25:06 <elliott> Phantom_Hoover: It was a lie-to-children to protect you from the terrible secret of runcible spoons.
22:25:12 <fizzie> http://en.wikipedia.org/wiki/Lusikkahaarukka -- us Finns can't even make a spork right.
22:25:17 <elliott> SHOVING WILL PROTECT YOU FROM THE TERRIBLE SECRET OF RUNCIBLE SPOONS.
22:25:27 <Phantom_Hoover> NO PUSHING
22:25:28 <ais523> fizzie: I misread that line as being from elliott originally
22:25:34 <elliott> fizzie: Lusi...kka..haa...rukka.
22:25:37 <elliott> Seriously, Finnish?
22:25:41 <elliott> Seriously?
22:25:47 <ais523> and it didn't strike me as out of place at all that elliott would claim to be Finnish
22:25:55 <ais523> although I'd expect him to be lying if he did so
22:25:56 <fizzie> It's just "lusikka" and "haarukka" combined.
22:26:03 <elliott> Spoonfork.
22:26:04 <ais523> hmm, now I wonder why I believe elliott comes from Hexham
22:26:17 <elliott> ais523: I don't, it's an elaborate ruse to make a fool out of Ngev.
22:26:18 <ais523> given that I don't normally believe him when he claims to come from a particular location
22:26:19 <elliott> Ngevd.
22:26:23 <Phantom_Hoover> Is this the same as how you get offended when people refer to you as 'he'.
22:26:25 <elliott> Hatched as a secret plot yeras before he even came here.
22:26:41 <ais523> ah right, on the basis that Hexham is an awfully obscure and specific place to lying about having come from
22:26:45 <ais523> Birmingham, on the other hand…
22:27:03 <Phantom_Hoover> I'm actually from Glasgow.
22:27:05 <Phantom_Hoover> (hahahaha no
22:27:08 <Phantom_Hoover> )
22:28:14 <elliott> ais523: I have successfully fooled you into not believing the one true thing about me -- I'mf rom Finland.
22:28:22 <elliott> `words --finnish 15
22:28:27 <HackEgo> murooppajoisammottakus voivaan tulvollisemmat tällitseviileveämmälle suoristisemia lämmempienne ryhmitta asettumille vällämme akuttamissä suureimpieni herroksuaali jäseni kujo euraavina
22:28:33 <Phantom_Hoover> You aref rom Finland?
22:28:34 <ais523> I will laugh so much if lusikkahaarukka comes up
22:28:35 <elliott> MUROOPPAJOISAMMOTTAKUS, MOTHERFUCKERS!
22:28:38 -!- elliott has quit (Quit: Leaving).
22:28:44 <oerjan> > cycle "griffel "
22:28:45 <lambdabot> "griffel griffel griffel griffel griffel griffel griffel griffel griffel gr...
22:29:05 -!- elliott has joined.
22:29:10 <elliott> `date
22:29:13 <HackEgo> Sat Dec 31 22:29:13 UTC 2011
22:29:21 <fizzie> `words --lusikka --haarukka 15
22:29:25 <HackEgo> Unknown option: lusikka \ Unknown option: haarukka
22:29:57 <oerjan> > sequence_ . init . tails $ [(),(),(),()]
22:29:59 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()]
22:36:43 -!- DCliche has joined.
22:41:08 -!- Klisz has quit (Ping timeout: 276 seconds).
22:41:47 <lahwran> * oerjan suspects lahwran of being a rotidder
22:41:48 <lahwran> a what?
22:42:03 * oerjan whistles innocently
22:42:13 <lahwran> google doesn't know :|
22:42:45 -!- Deewiant has joined.
22:44:12 <oerjan> you can safely assume that 90% of what i say that you don't understand, is a pun.
22:44:24 <elliott> 90%?
22:44:25 <lahwran> well alrighty then
22:44:25 <elliott> 100%
22:44:29 <lahwran> puns are good
22:47:23 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:48:39 <zzo38> I don't know either
22:50:30 -!- zzo38 has quit (Remote host closed the connection).
22:56:37 -!- Phantom_Hoover has joined.
23:15:36 <Sgeo> Phantom_Hoover, elliott kallisti update
23:16:39 <Phantom_Hoover> Seen.
23:18:19 * shachaf shachaf shachaf *
23:18:32 <monqy> monqy
23:18:52 <shachaf> elliott: I just read that thread about monads being functions thanks to you.
23:19:08 <elliott> enjoy
23:19:20 <Phantom_Hoover> i
23:19:30 <shachaf> I thought having stopped to read -cafe@ would save me from that sort of thing. :-(
23:19:49 <Phantom_Hoover> wher
23:19:50 <Phantom_Hoover> e
23:19:50 <Phantom_Hoover> shachaf, monqy, believe me, you don't want to be on Sgeo's update list.
23:19:51 <shachaf> I think I need to quit the Internet or something.
23:19:53 <Phantom_Hoover> On that topic, Sgeo, add shachaf and monqy to your update list.
23:20:01 <elliott> "Answer - I only had the equivalent of the Maybe type, and I was trying
23:20:01 <elliott> to force it where the MaybeMonad should go."
23:20:01 <shachaf> What?
23:20:05 <elliott> What.
23:20:10 <elliott> I just... what.
23:20:27 <monqy> Phantom_Hoover: I was on it for an update or two but then i escaped
23:20:51 <shachaf> elliott: HE HAD THE EQUIVALENT OF THE MAYBE TYPE, AND HE WAS TRYING TO FORCE IT WHERE THE MAYBEMONAD SHOULD GO
23:21:03 <shachaf> It's not a Monad unless its name ends with "Monad", you know.
23:21:11 <Phantom_Hoover> elliott, checked micahrjohnston's twitter again; it appears that he lured someone else in to be dashed upon the rocks of his stupidity like some kind of idiot siren.
23:21:21 <elliott> shachaf: I'm more worried by the fact that adding a () -> made it work than that he couldn't define the monad int he first place.
23:21:26 <elliott> Phantom_Hoover: thanks for the update...........................
23:21:29 <elliott> i think.........
23:21:44 <elliott> oh no does this mean i'm on two update lists now
23:21:47 <elliott> >unsubscribe
23:21:48 <elliott> >unsubscribe
23:21:56 <oerjan> you need that () -> to get a jump start into the monad
23:22:08 <shachaf> elliott: Now I'm looking at that post on Reddit thanks to you.
23:22:20 <elliott> shachaf: the monads one?
23:22:21 <elliott> have fun
23:22:36 <shachaf> "I say this is trivial because this Monad isn’t very interesting. But it does guarantee an order. For instance, I can write: \n MyMonad 1 >>= MyMonad . (+) 2 >>= MyMonad . (*) 10 \n This will return MyMonad 30, because the order of operations is guaranteed."
23:22:37 <Phantom_Hoover> help i want to see stupid people??
23:22:41 -!- Klisz has joined.
23:23:06 <shachaf> Man, where would we be without monads guaranteeing orderings for us?
23:23:17 <Phantom_Hoover> oh
23:23:20 <Phantom_Hoover> are you talking about that
23:24:12 <shachaf> Both examples he gives for "guaranteeing ordering" are commutative monads.
23:25:04 <oerjan> > Just 3 <**> (Just 5 <**> Just (-))
23:25:05 <lambdabot> Just 2
23:25:23 <shachaf> @ty (<**>)
23:25:24 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b
23:25:29 <shachaf> @src <**>
23:25:29 <lambdabot> (<**>) = liftA2 (flip ($))
23:25:47 -!- DCliche has quit (Ping timeout: 244 seconds).
23:25:49 -!- Patashu has joined.
23:26:01 <elliott> shachaf: That's amazing.
23:26:18 <oerjan> amaZING
23:26:25 <Phantom_Hoover> @ty liftA2
23:26:26 <lambdabot> forall a b c (f :: * -> *). (Applicative f) => (a -> b -> c) -> f a -> f b -> f c
23:26:41 <monqy> why is this haPPENING
23:26:46 <monqy> the monads
23:26:48 <monqy> wHY
23:27:00 <shachaf> elliott: Hey, I was away from the Internet all day. I can take a bit to catch on.
23:27:04 * shachaf is now at airport.
23:27:10 <oerjan> monqy: because 2012, is end times
23:27:18 <Sgeo> shachaf, wait, that's the Reddit thing that calls monads a tool for ordering, right?
23:27:22 <oerjan> all order must cease
23:27:29 <elliott> shachaf: Catch on to what.
23:27:43 <elliott> Anyway, the () -> guarantees ordering.
23:27:46 <elliott> That arrow can't go backwards.
23:27:46 <Phantom_Hoover> OK, this is breathtakingly awful.
23:27:56 <shachaf> elliott: All the making-fun-of-monad-tutorials you've been doing.
23:28:14 <shachaf> s/on/up/
23:28:20 <oerjan> also, hippo knew jeer, everyone!
23:28:34 <Sgeo> elliott, is this on Reddit or -cafe?
23:28:51 <shachaf> It spreads everywhere.
23:28:59 <elliott> Sgeo: which part
23:29:03 <elliott> mnoads are functions in cafe
23:29:05 <elliott> monads are ordering is reddit
23:29:09 <elliott> IS HASKELA PURE??? is cafe
23:29:22 <Phantom_Hoover> Link to the functions one?
23:29:31 <elliott> http://groups.google.com/group/haskell-cafe/t/1e2a2cfb2e93bcd2
23:29:35 <oerjan> haskela, the monstrous child of haskell and ursala
23:29:47 <shachaf> elliott: Wait, what?
23:29:53 * Sgeo suddenly remembers that Ursala exists.
23:29:54 <shachaf> Oh, a 100-post thread.
23:30:02 * shachaf might just not read that.
23:30:33 * Sgeo vaguely wonders how ST is conceptually a function
23:30:45 <Sgeo> I mean, in their implementation, maybe
23:30:48 <Sgeo> But conceptually?
23:31:03 <elliott> Sgeo: Well, it's (STMap s -> (a, STMap s))
23:31:21 <Sgeo> Ah
23:31:30 <elliott> newRef :: a -> STMap s -> (STRef s a, STMap s)
23:31:33 <elliott> readRef :: ... etc.
23:31:43 <elliott> You can't implement STMap in Haskell, though.
23:31:57 <Sgeo> Not even with Dynamics?
23:32:16 <monqy> i read the first page of that groupes and
23:32:19 <monqy> wow i cant read more
23:32:27 <elliott> Sgeo: Well sure, but that's cheating.
23:32:32 <shachaf> Sgeo: That requires Typeable.
23:32:37 <elliott> Oh, rihgt.
23:32:38 <elliott> right
23:32:42 <elliott> You can do it with Any and unsafeCoerce, though.
23:32:43 <elliott> I have.
23:32:58 <elliott> You get all the ugliness of ST with none of the performance.
23:33:04 <shachaf> You can do it with, like, IORefs and unsafePerformIO, too.
23:33:08 <elliott> monqy: there's only one page of that thread
23:33:35 <shachaf> elliott: Ah, Conal asks whether Haskell is denotative.
23:33:42 <monqy> oh
23:33:53 <shachaf> Truly, -cafe@ is like clockwork.
23:34:05 <oerjan> evita toned
23:34:36 <elliott> shachaf: Hey, look at the /rest/ of that thread.
23:34:42 <elliott> Conal came in and I was like "FINALLY".
23:34:43 <Phantom_Hoover> "This explanation of monads is simple, easy to understand, and wrong."
23:34:50 <Phantom_Hoover> elliott, YOU OXFORD COMMIE BASTARD
23:34:50 <shachaf> elliott: Which part?
23:34:55 <Phantom_Hoover> WE ARE NO LONGER FRIENDS
23:34:59 <elliott> Phantom_Hoover: I love Oxford commas sorry.
23:35:05 <Phantom_Hoover> i
23:35:05 <elliott> shachaf: I assume you mean the purity one.
23:35:08 <shachaf> Right.
23:35:13 <Phantom_Hoover> /ignore elliott*!*@*
23:35:17 <elliott> Phantom_Hoover: :}
23:35:23 <shachaf> I don't object to Conal's comments or anything.
23:35:33 <oerjan> you, can, never, use, too many, commas,,,
23:36:15 <shachaf>
23:36:20 <shachaf> Ugh, Unicode.
23:36:26 <shachaf> I need to fix this.
23:36:57 <elliott> I wonder whether Phantom_Hoover has actually ignored me.
23:37:13 <elliott> @tell Phantom_Hoover hi
23:37:14 <lambdabot> Consider it noted.
23:37:30 <shachaf> elliott: Where do you have more karma? reddit or stackoverflow?
23:37:46 <Phantom_Hoover> What do you have more of? Metres or kilograms?
23:37:47 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
23:37:53 <Phantom_Hoover> @clear-messages
23:37:53 <lambdabot> Messages cleared.
23:38:03 <elliott> @tell Phantom_Hoover hi
23:38:03 <lambdabot> Consider it noted.
23:38:07 <elliott> shachaf: SO.
23:38:08 <Phantom_Hoover> @clear-messages
23:38:09 <lambdabot> Messages cleared.
23:38:09 <Sgeo> "Answer - I only had the equivalent of the Maybe type, and I was trying
23:38:09 <Sgeo> to force it where the MaybeMonad should go."
23:38:11 <shachaf> elliott: Remember Andrew Coppin?
23:38:13 <Sgeo> I don't get it
23:38:14 <elliott> But SO's grows like a billion times faster.
23:38:14 <shachaf> I wonder where he's gone.
23:38:19 <elliott> shachaf: Vaguely? What did he do.
23:38:23 <Phantom_Hoover> It's preternaturally quiet in here without elliott.
23:38:27 <shachaf> Oh, he used to post on -cafe@ a lot.
23:38:29 <elliott> @tell Phantom_Hoover hi
23:38:29 <elliott> @tell Phantom_Hoover hi
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <lambdabot> Consider it noted.
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:33 <Phantom_Hoover> @clear-messages
23:38:33 <lambdabot> Messages cleared.
23:38:34 <monqy> omg,,,
23:38:35 <elliott> shachaf: I only recently started reading -cafe.
23:38:57 <shachaf> He posted on -cafe@ to the point that dons told him to go ask his questions in IRC.
23:39:22 <elliott> :D
23:39:27 -!- oerjan has set topic: The commatose channel | http://codu.org/logs/_esoteric/.
23:39:31 <elliott> shachaf: Oh, is he the guy whose package names start with AC-?
23:40:09 <elliott> Ohh, it's MathematicalOrchid.
23:40:10 <elliott> *That* guy.
23:40:13 * Sgeo combines the two notions of Monad
23:40:23 <Sgeo> Monads are functions that have an Ord instance!
23:40:24 <shachaf> Oh, he does that?
23:40:32 <shachaf> Sgeo++
23:40:43 <elliott> instance Ord (World -> (a, World))
23:40:47 <elliott> ^rainbow Phantom_Hoover: hi
23:40:47 <fungot> Phantom_Hoover: hi
23:40:56 <Phantom_Hoover> @clear-messages
23:40:56 <lambdabot> Messages cleared.
23:40:58 <shachaf> > var "elliott: hello"
23:40:59 <lambdabot> elliott: hello
23:40:59 <oerjan> <shachaf> elliott: Remember Andrew Coppin? <-- i'm sure i saw him just the other day
23:41:23 <elliott> ^rainbow @tell Phantom_Hoover hi
23:41:23 <fungot> @tell Phantom_Hoover hi
23:42:06 <shachaf> ^rainbow ^rainbow
23:42:06 <fungot> ^rainbow
23:42:42 <Phantom_Hoover> ^choo ^choo
23:42:42 <fungot> ^choo choo hoo oo o
23:42:52 <shachaf> ^echo ^echo
23:42:52 <fungot> ^echo ^echo
23:42:52 <oerjan> ^echo ^echo
23:42:52 <fungot> ^echo ^echo
23:43:08 <monqy> ^style ^style
23:43:08 <fungot> Not found.
23:43:29 <oerjan> ^asc ^asc
23:43:29 <fungot> 94.
23:43:31 <elliott> ^rainbow hi Phantom_Hoover
23:43:31 <fungot> hi Phantom_Hoover
23:43:32 * shachaf 's flight leaves in a moment.
23:43:42 <elliott> shachaf: Are you flying to Finland for your military service?
23:43:50 <shachaf> No.
23:43:59 * Phantom_Hoover 's flight leaves in a monad.
23:44:01 <shachaf> Good bye, #esoteric. Goodbye#esoteric.
23:44:26 <ais523> hmm, is it bad that I interpreted Goodbye#esoteric as a Java method pointer?
23:44:52 <Phantom_Hoover> :t scanl
23:44:52 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
23:44:56 * oerjan waves
23:45:07 <oerjan> ais523: yes.
23:45:09 <Sgeo> Java has method pointers now?!?
23:45:34 <ais523> well, references
23:45:55 <oerjan> hoopy gnu jar
23:46:18 * Phantom_Hoover → 2012
23:46:20 -!- Phantom_Hoover has quit (Quit: Leaving).
23:46:33 <elliott> shachaf: Are you flying to 2012.
23:46:41 <elliott> Are you flying across the date line to stay in 2011.
23:48:45 * Sgeo will be back in a while
23:48:57 <Sgeo> Going outside, because my legs feel weird
23:49:32 <elliott> thanks
←2011-11 2011-12 2012-01→ ↑2011 ↑all