00:18:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:26:07 * oerjan detects an off-by-one error :P
00:28:05 <CakeProphet> oerjan: (implying that you shouldn't have been born, or that you needed another sibling... but that one is less of a sick burn)
00:29:14 <oerjan> well my parents _were_ married just about a month before i was born. draw your own conclusions.
00:31:24 <CakeProphet> though my conclusion is that marriage doesn't matter very much.
00:31:32 <CakeProphet> except for the legal consequences, which matter a lot.
00:32:44 <oerjan> also, this was in 1970, a time when marriage definitely mattered.
00:33:31 <oerjan> it would basically have been unthinkable for them to _plan_ it this way at that time.
00:34:08 <Sgeo> "No public logging! What happens in #emacs stays in #emacs "
00:34:31 <Sgeo> (Note: The .. not actually all that funny stuff is over)
00:34:50 <CakeProphet> oh yeah. #emacs is a riot. Lots of kinky ASCII porn.
00:34:57 <oerjan> yeah if you want the world to search for your private secrets, tell them in #esoteric.
00:36:09 <oerjan> that's weird my browser locked up but seems to not be using CPU
00:37:11 <CakeProphet> some kind of resource bottleneck/deadlock, I guess?
00:38:33 <CakeProphet> there's always a possibility that it was a ghost. Perhaps you have a haunted computer
00:39:28 <oerjan> oh it's haunted all right, i just cannot recall this particular failure mode before.
00:39:33 <CakeProphet> if that is the case then you may have a computer capable of hypercomputation.
00:40:18 <CakeProphet> via ghost-power.. kind of like an oracle, but spookier.
00:43:32 <CakeProphet> hmmm, so doesn't the fact that humans are reasonably effective at solving the halting problem for a given language suggest that it's impossible to replicate human intelligence via Turing-complete computation?
00:44:34 <CakeProphet> well, I suppose since we're not perfect at it, and we can't solve it for languages that are unknown to us..
00:44:47 <oerjan> no, because we are not reasonably effective at it.
00:45:30 -!- augur has quit (Remote host closed the connection).
00:46:24 -!- copumpkin has joined.
00:46:28 <oerjan> it is easy to construct problems we cannot solve. things like "loop through even numbers > 2 until you find one which is not the sum of two primes" just more varied.
00:48:41 <oerjan> now let's see if reloading previous browser session locks it up again.
00:49:44 <oerjan> evidence so far is ... hm it moved.
00:51:06 <oerjan> now it's locked up _and_ using CPU. :(
00:53:28 <oerjan> gah it was a huge pdf file
01:05:28 -!- augur has joined.
01:11:50 -!- NihilistDandy has joined.
01:43:38 -!- variable has quit (Quit: I found 1 in /dev/zero).
01:43:52 -!- MDude has quit (Read error: Connection reset by peer).
01:44:14 -!- MDude has joined.
01:48:57 -!- CakeProphet has quit (Ping timeout: 264 seconds).
01:58:08 -!- cheater_ has quit (Ping timeout: 255 seconds).
02:01:59 -!- MDude has quit (Read error: Connection reset by peer).
02:02:21 -!- MDude has joined.
02:11:13 -!- cheater_ has joined.
02:27:07 -!- NihilistDandy has quit (Read error: Connection reset by peer).
02:29:22 -!- azaq23 has joined.
02:39:32 -!- Nisstyre has quit (Ping timeout: 255 seconds).
02:47:05 -!- TeruFSX has joined.
02:50:28 -!- jcp has quit (Quit: No Ping reply in 120 seconds.).
02:50:28 -!- javawizard has changed nick to jcp.
02:51:03 -!- jcp|other has joined.
02:53:19 -!- Nisstyre has joined.
02:54:23 -!- cheater_ has quit (Ping timeout: 255 seconds).
02:58:23 -!- TeruFSX has quit (Ping timeout: 276 seconds).
03:07:10 -!- cheater_ has joined.
03:08:08 -!- clog has quit (Ping timeout: 276 seconds).
03:08:34 <oerjan> oh no, we have been unclogged!
03:13:54 -!- copumpkin has changed nick to draino.
03:14:11 -!- Nisstyre has changed nick to Rainbow_Dash.
03:14:24 -!- draino has changed nick to copumpkin.
03:14:28 -!- Rainbow_Dash has changed nick to Nisstyre.
03:14:40 -!- azaq231 has joined.
03:16:05 -!- azaq23 has quit (Ping timeout: 252 seconds).
03:16:43 -!- zzo38 has joined.
03:19:08 <zzo38> Someone mentioned that my optimization/compression problem was related to LZW. I don't know for sure.
03:21:24 -!- TeruFSX has joined.
03:37:40 <zzo38> Do any other literate programs exist that can help with my problem?
03:43:22 -!- MDude has changed nick to MSleep.
04:05:24 <Sgeo> Can someone please shed some light on http://www.reddit.com/r/AskReddit/comments/izm57/what_do_you_consider_to_be_the_greatest_unsolved/c27z4vt?context=3 ?
04:07:02 <oerjan> "selectable as an axiom, or counter-axiom" _implies_ unprovable.
04:07:46 <oerjan> and true & false applies to _models_, not axiomatic theories.
04:08:18 <oerjan> again, by godel's completeness theorem, if something is unprovable, then it is false in some model.
04:08:47 <oerjan> provable <=> true in all models
04:09:24 <oerjan> (models of the given axioms)
04:09:27 <Sgeo> I feel like I understand less now
04:10:08 <Sgeo> (Yes, that must be an illusion, generated by an unperceived lack of understanding, yada yada)
04:10:12 <oerjan> well, (1) the continuum hypothesis _is_ independent. this means that it is (2) not provable, _and_ (3) not disprovable.
04:10:43 <oerjan> (2) again is equivalent to it being false in some model of the rest of set theory
04:10:58 <oerjan> (3) then is equivalent to it being false in some model etc.
04:11:48 <oerjan> *(3) then is equivalent to it being _true_ in some model etc.
04:12:03 <Sgeo> So what' are "true but unprovable" statements for a system of axioms?
04:12:10 <Sgeo> Or does that not apply to CH?
04:12:51 <oerjan> there is no such thing, truth only applies _inside_ a model of the axioms, unless it holds for _all_ models, in which case its provable.
04:13:53 <oerjan> models here technically mean set theoretic models, which may be a little circular for this particular question
04:14:10 <Sgeo> Can you post some of this on reddit?
04:14:24 <oerjan> i still have no account
04:15:30 <oerjan> oh hm or are you referring to that "this assumption is widely believed to be true."
04:16:08 <oerjan> which is the only instance of "true" in what you responded to
04:16:51 <oerjan> and that refers to a different kind of truth than the truth of the continuum hypothesis
04:17:48 <oerjan> it refers to whether ZF is consistent, which is believed to be true presumably because it's intuitive and no one has managed to construct an inconsistency
04:19:08 <Sgeo> No, that's not what I was referring to
04:19:51 <oerjan> however, this means that the consistency of ZF is itself believed to be a true but unprovable statement.
04:21:30 <oerjan> (we know that _if_ it is true then it is unprovable, by godel's _in_completeness theorems)
04:21:55 <pikhq_> Much like scientific theories, one can only disprove the consistency of an axiomatic system.
04:22:47 <oerjan> pikhq_: well unless you prove it in a stronger system.
04:23:26 <pikhq_> Though that leaves it still in doubt, because the stronger system itself could be inconsistent. :)
04:24:20 <oerjan> and i'm not entirely sure if there are some systems weaker than peano arithmetic (weak enough not to allow godel's proof) but still expressive enough to talk about their own consistency, and then maybe prove it.
04:24:34 <oerjan> i cannot recall hearing of any examples
04:26:11 <oerjan> since "expressive enough to talk about their own consistency" is _approximately_ what you seem to need to get godel's proof in the first place
04:29:31 <oerjan> there's a kind of "intended model of natural numbers" which people end up referring to when speaking about the latter kind of truth.
04:30:12 <oerjan> which is a model no one can know what is, since it has no complete axiomatization.
04:45:30 -!- pikhq has joined.
04:48:30 -!- pikhq_ has quit (Ping timeout: 252 seconds).
05:02:26 -!- BeholdMyGlory has quit (Remote host closed the connection).
05:31:39 <oerjan> ooh nerdgasm http://scienceblogs.com/startswithabang/2011/07/were_going_to_see_a_black_hole.php
05:34:55 <oerjan> (although you need the rest to understand _why_ it's so cool
05:50:44 <Sgeo> Why only radio waves?
05:50:55 <Sgeo> What's special about radio waves that that technique works so well?
05:51:43 -!- zzo38 has quit (Remote host closed the connection).
05:52:55 <oerjan> perhaps it's because their frequency is so low that ordinary circuitry can handle them...
05:53:51 <Sgeo> There was a Star Trek fan fic in some anthrology that had some sattelite that moved around the galaxy
05:54:49 <Sgeo> http://memory-beta.wikia.com/wiki/What_Went_Through_Data%27s_Mind_0.68_Seconds_Before_the_Satellite_Hit
05:55:52 <pikhq> It seems that the limiting factor on that technique is data storage and/or bandwidth.
05:56:24 <pikhq> And radio frequencies are just about pushing the upper limit on that.
05:57:26 -!- TeruFSX has quit (Ping timeout: 252 seconds).
05:57:35 <oerjan> bah there had to be something in the comments to make it less awesome :(
05:59:11 <oerjan> george monser calculates that the event horizon will only occupy a couple of pixels...
06:01:06 <Sgeo> By "a couple", you mean "1 or 2"
06:15:08 <fizzie> There's a good summary of them reasons why it works for radio in http://en.wikipedia.org/wiki/Aperture_synthesis
06:15:14 <fizzie> "Aperture synthesis is possible only if both the amplitude and the phase of the incoming signal is measured by each telescope. For radio frequencies, this is possible by electronics, while for optical lights, the elecromagnetic field cannot be measured directly and correlated in software, but must be propagated by sensitive optics and interfered optically.
06:15:20 <fizzie> Accurate optical delay and atmospheric wavefront aberration correction is required, a very demanding technology which became possible only in the 1990s. This is why imaging with aperture synthesis has been used successfully in radio astronomy since the 1950s and in optical/infrared astronomy only since the 2000 decade."
06:15:55 <fizzie> The more obvious article ("astronomical interferometer") is far less concise.
06:21:36 <pikhq> fizzie: So, magic.
06:25:26 <oerjan> smangic (official term from comments :P)
06:28:45 <oerjan> (the reddit comments, that is)
06:41:26 -!- copumpkin has quit (Ping timeout: 252 seconds).
06:41:43 -!- copumpkin has joined.
06:50:44 -!- ais523 has joined.
06:59:32 -!- ais523 has quit (Read error: Connection reset by peer).
07:00:34 -!- ais523 has joined.
07:03:30 -!- monqy has quit (Quit: hello).
07:41:38 -!- Nisstyre has quit (Ping timeout: 240 seconds).
07:43:04 <pikhq> http://www.youtube.com/watch?v=Gzj1OF7d9m4 It's somewhat amusing seeing people enter a Walmart for the first time.
07:43:31 <ais523> I don't think I've ever been to a Walmart
07:43:47 <ais523> they don't exist under that name in the UK, and the supermarkets owned by them probably don't operate much like their US equivalents
07:44:12 <pikhq> You can purchase just about everything in a Walmart.
07:44:30 <ais523> hmm, I can tell I was tired last night
07:44:34 <ais523> because I wrote the following line of code: if ((htole32(rv) & 0xffff) == 0x80cd)
07:44:38 <pikhq> Shy of, like, a car, or lumber, or something...
07:45:01 <ais523> (rv is a long that has been read from a process's text segment)
07:45:21 <ais523> you can buy firewood in petrol stations, in the UK
07:45:33 <ais523> I'm not entirely sure why it's stocked there, it just sort-of became traditional
07:45:43 <ais523> and you can't get it anywhere else, because everyone knows you go to petrol stations to get it
07:45:53 <ais523> I suppose it makes sense to have one sort of shop for selling every type of fuel
07:46:04 <pikhq> That actually makes rather a lot of sense.
07:46:40 <pikhq> Except that here in America, we believe in having one sort of shop for selling every type of thing.
07:47:04 <ais523> the problem is that you can't easily fit those onto street corners
07:47:27 <ais523> in the UK, the trend recently has been to have small supermarkets, that sell just things that people would buy frequently, fitting into relatively small areas
07:47:34 <ais523> although they're big-name supermarkets rather than corner shops
07:48:04 <pikhq> This is a non-issue when your urban design is based around the idea of having a 50 acre parking lot in front of a 40 acre store.
07:48:28 <ais523> but then, umm, you'd need a car just to drive to the supermarket
07:48:57 <pikhq> Guess what auto ownership rates are like?
07:49:12 <ais523> I think there's a small supermarket within a minute's walk at all the places I tend to be (work, home, etc)
07:49:29 <ais523> hmm, this reminds me, I only have two days left on my bus pass
07:49:38 <ais523> (I buy it for several months at a time)
07:49:56 <pikhq> *Freakishly*, I happen to be about a mile away from a supermarket.
07:50:26 <pikhq> This is an exceptionally short distance for anything to be.
07:51:25 <ais523> I suppose that the UK has a huge population density compared to most places in the word
07:51:38 <ais523> I discovered today that London has a substantially greater population than Norway, which surprised me
07:52:16 <pikhq> Actually, I think in *this* case it's just the US having fairly low population density.
07:53:14 <pikhq> Outside of the major population centers, you could without much trouble be at least a mile away from anyone else.
07:53:18 <ais523> it varies a lot by state, I think
07:54:25 <pikhq> Anyways. Everyone has cars, and there's a lot of space, so there's no incentive to make dense, walkable cities.
07:58:42 <cheater_> pikhq: i've always found it crazy how spread out everything in usa is
07:59:01 <ais523> pikhq: if you had dense, walkable cities, you wouldn't have to use cars
07:59:32 <pikhq> ais523: Yes. And if we didn't already have to use cars, we would have reason to have dense, walkable cities.
07:59:58 <cheater_> ais: that's silly, it doesn't work like that
08:00:00 <ais523> even not needing a car for some things is a benefit
08:00:11 <ais523> e.g. it takes me a couple of hours to walk to work, so I generally need to take a bus
08:00:24 <ais523> but if, say, I want to buy food, or go to the bank, that's within reasonable walking distance
08:00:24 <pikhq> And it doesn't help that the car companies bought up all the public transit and ruined it in the early 1900s.
08:00:42 <cheater_> ais: nowadays people need to commute, it's a requirement of our way of life. it takes a special dedication for someone not to commute at all.
08:00:50 <ais523> the public services are moderately ruined here
08:00:55 <cheater_> even i have to commute every now and then.
08:00:58 <ais523> but even so, they're still cheaper than cars, by a factor of about 2
08:01:13 <cheater_> and i can find pretty much anything within walking distance.
08:01:19 <pikhq> What do the opportunity costs on that look like?
08:01:26 <pikhq> The bus that goes by here runs twice a day.
08:01:46 <ais523> on a popular bus route, it's about once per 15 minutes offpeak, and once every 5 minutes or so at rush hour
08:01:54 <ais523> the least popular bus routes generally run once an hour
08:02:06 <ais523> but tend to be pretty accurate with their timings, and have easily memorizable timetables
08:02:30 <pikhq> I've only seen that performance in the handful of dense, relatively walkable cities.
08:02:42 <cheater_> in london the important ones even run once an hour at night
08:02:55 <ais523> they used to do that in Birmingham too
08:02:57 <pikhq> Otherwise, the buses are utterly unusable.
08:03:07 <ais523> instead, they just stop a little past midnight, and start up again at 5am
08:03:15 <pikhq> To the point that it would be quicker to walk.
08:03:24 <cheater_> pikhq: london isn't walkable at all. you're most likely to work within 40 minutes of commuting from where you live.
08:03:26 <pikhq> In a land where it can be 8 miles to the grocery store.
08:03:55 <ais523> yep, unlike utilities, workplaces tend to be rather further away
08:04:06 <pikhq> cheater_: Only 40?
08:04:21 <ais523> in London, people generally use the Tube, even though it's really bad for medium-length distances (you can spend as long going down and up to reach it, as you would walking along the surface)
08:04:29 <Sgeo> I like being within walking distance of stuff
08:04:51 <ais523> in Birmingham, the train seems most common if you live near a train line (which I do, but it's only about 30% likely), or the bus otherwise
08:04:58 <cheater_> pikhq, that's 40 minutes each way
08:04:59 <pikhq> cheater_: Impressive in such a highly-populated city.
08:05:04 <pikhq> cheater_: Yes, I know.
08:05:27 <cheater_> pikhq, funnily enough the "last mile" is the most expensive.. the tube itself usually takes a fraction of the time, but takes you the longest way
08:05:36 -!- oerjan has quit (Quit: leaving).
08:06:03 <cheater_> OTOH the tube makes you ill and deaf, so i don't like it.
08:06:04 <ais523> cheater_: did you know that the escalators that reach the Tube system in London run about twice as fast as escalators elsewhere in the UK, such that they need a little practice to use safely?
08:06:17 <ais523> it's an attempt to cut down on that effect
08:06:50 <cheater_> ais523, it's a rush, i like the escalators
08:07:07 <ais523> (they also tell tourists/people who don't know what they're doing to keep to one side, so that they don't block the commuters from running up/down the escalators in the direction they're going to get places even faster)
08:07:19 <ais523> I like them too; I've been to London often enough that I know how to use them
08:07:34 <cheater_> in brixton you have an escalator that starts out almost right at the entrance and goes all the way to the platform
08:07:41 <cheater_> and it's like 2-3 stories high
08:08:05 <Sgeo> It's bizzare. A bunch of webchat idiots were in both #chicken and #jesus
08:08:09 <cheater_> yeah, people have to yield if they're not on the side
08:08:13 <Sgeo> Not in #chicken anymore they banned webchat users
08:08:26 <cheater_> Sgeo, what's #chicken and why is this combination bizarre?
08:08:48 <Sgeo> It's... just a really weird combination for a bunch of people to be present in, imo
08:09:39 -!- ais523 has quit (Read error: Connection reset by peer).
08:09:46 <pikhq> cheater_: Presumably Chicken Scheme.
08:10:09 <cheater_> the transit system in berlin was very shitty
08:10:30 -!- ais523 has joined.
08:10:32 <cheater_> munich also has a much higher population density, it's like zone 3 in london
08:10:40 <pikhq> Probably doesn't help that the transit system in Berlin spent a few decades having to work around the Wall.
08:11:07 <fizzie> ais523: What I thought was a bit strange was that the tube walkways had all these "keep to the right" signs, yet you drive cars on the wrong side of the road.
08:11:09 <cheater_> pikhq, berlin transit is pretty much ubahn and sbahn, it has nothing to do with the wall.
08:11:28 -!- Nisstyre has joined.
08:11:35 <cheater_> the roads were build before the wall, so that's no problem either.
08:11:43 <ais523> fizzie: the reason you drive on the left is that most people are right-handed, so you can get onto your horse from the sidewalk without your sword getting in the way
08:11:54 <pikhq> Except they couldn't do much improvement on them.
08:11:57 <fizzie> ais523: But why do you walk on the right, then?
08:12:08 <ais523> the walk on the left/right seems arbitrary
08:12:15 <ais523> I think it's because people naturally go right when faced with obstacles
08:12:19 <ais523> so that they can attack them more easily
08:12:52 <cheater_> ais523, that's wrong, it's the usual on rhd roads for slow cars to be on the right side
08:13:38 <ais523> the general rule in all road systems I've seen, in a range of countries, is that slow cars are adjacent to the sidewalk/pavement, fast cars nearer the centre
08:13:54 <pikhq> How optimistic of you.
08:14:03 <cheater_> i guess that's one way for the british to admit imperial arbitrations are failing and they need to make themselves compatible with the rest of the world
08:14:33 <pikhq> Slow cars are inevitably side-by-side and going the same speed.
08:14:42 <cheater_> i've also noticed another funny imperial/metric thing
08:14:53 <ais523> in Hungary, motorways don't have slip roads; instead, the speed limit on the rightmost lane (it's drive-on-the-right) gets reduced gradually to a very slow speed, then it just has a normal junction with another road, then it gets increased more quickly back up to full motorway speed again
08:14:56 <pikhq> Driving past a "Slow Traffic Keep Right — It's The Law!" sign.
08:15:48 <fizzie> ais523: You can also buy firewood from (many) petrol stations in Finland, too. It feels logical.
08:16:03 <fizzie> They sell "that sort of stuff".
08:16:24 <cheater_> it is that the Schuko is specified in inches, whereas BS 1363 is specified in meters. how crazy is that?
08:16:34 <cheater_> it's like the bizarro world of electric engineering
08:16:36 <fizzie> Also coals for barbequeueing.
08:16:42 <ais523> pikhq: in the UK, slow cars in the inside lanes generally get mown down by lunatics
08:16:52 <ais523> it's not really an ideal way of enforcing the law, but it works moderately well
08:16:57 <pikhq> ais523: You have no idea how happy that idea makes me.
08:16:58 <ais523> also, lorries are banned from the inside lane in a motorway
08:17:17 <pikhq> Seriously, that makes me ecstatic.
08:17:21 <ais523> in fact, you're not meant to keep to the inside lane except to overtake, but people do it anyway (keeping in the middle lane is fine)
08:17:45 <cheater_> ais523, have you ever lived in hungary?
08:17:58 <ais523> cheater_: only for a week
08:18:10 <cheater_> fizzie, it makes lots of sense since the items you use for barbecue are of petrochemical origin.
08:18:12 <ais523> I can't speak more than a couple of words of Hungarian, and they're mostly ones that can easily be inferred
08:18:22 <cheater_> oh, i am learning italian now.
08:18:26 <ais523> although I can pronounce it pretty well (it's a phonetic language, so it can be pronounced even without knowing what the words mean)
08:18:40 <fizzie> People here generally tend to return to the outer lines after overtaking, at least on "proper" highways as opposed to these in-city things, but of course our roads aren't usually very busy.
08:18:41 <cheater_> i'm wondering if i should translate the source of the latest program to italian
08:19:56 <cheater_> ais523, why would they do that with the Schuko and BS 1363?
08:20:56 <pikhq> cheater_: Maybe it has something to do with how soda is sold by the liter in the US?
08:22:37 <pikhq> Nah, more likely Germany just wanted to fuck with us.
08:23:09 <cheater_> why would the british make the BS1363 metric then?
08:23:24 -!- ais523_ has joined.
08:23:49 -!- ais523 has quit (Disconnected by services).
08:23:50 -!- ais523_ has changed nick to ais523.
08:25:01 <pikhq> The British have a well-documented propensity for fucking with people.
08:27:24 <pikhq> Also, BS1363 isn't metric.
08:28:18 <pikhq> 1/4 inch wide by 5/32 inch high pins aren't metric. :)
08:28:53 <cheater_> i've measured one, it's spot-on metric
08:29:20 <pikhq> They have retroactively assigned it to 6.35mm by 3.975mm.
08:29:45 <pikhq> Though a more round 6.25mm by 3.9mm would be within tolerances.
08:30:19 <pikhq> (which are ±0.13mm and ±0.075mm)
08:33:57 <fizzie> I wouldn't be surprised if Schuko was also retroactively metricized; Wikipedia lists the pin separation at "19 mm", which is 0.748 inches, suspiciously close to 3/4.
08:34:37 <pikhq> Yeah, that seems quite plausible.
08:35:49 <ais523> the standard pin spacing in electronics, if you're assembling the circuit by hand, is a deciinch
08:36:04 <pikhq> In the name of not-confusing-you, the US's connector, NEMA 1 or 6, is non-metric.
08:36:06 <ais523> umm, I think that needs a diaeresis
08:37:07 <pikhq> (NEMA is a group of electrical socket standards; only 1 and 5 are in common domestic use. 1 is ungrounded, 5 is grounded.)
08:37:48 <cheater_> some are closer to metric-like, some are closer to imperial-like, however in all three the longer dimension of the base of the small pins (the ones carrying hot and neutral) are spot-on 6 mm!
08:39:09 <pikhq> So, what you're saying is that they're way out of spec in the name of metric? :P
08:40:02 <pikhq> That should be 6.35±0.13mm.
08:40:23 <cheater_> it's definitely not 6.2 or more.
08:50:17 <cheater_> i wonder.. why do more people not use banner style indent? it's so confenient
08:50:49 <cheater_> OTBS seems to be the prevalent one, but it makes no sense in braceless languages.. and even in braced languages, once i started using it, it makes much more sense
08:52:14 <pikhq> In the braced languages, OTBS is perceived as being part of the syntax.
08:53:30 <pikhq> ais523: The closing bracket is at the same indent level as the previous statements.
08:54:09 <ais523> putting the closing bracket on the same line as the last statement makes more sense than that
08:54:16 <Sgeo> I think I used to do that
08:54:16 <ais523> I find myself doing that more and more nowadays
08:54:34 <ais523> I don't use Lisp, but any writing out of ASTs by hand is going to end up with huge numbers of stacked parens
08:54:36 <cheater_> i don't like it because the closing can get lost
08:54:39 <ais523> and I've been doing that quite a bit
08:56:11 <cheater_> i started using it because, well, in python basically you have very few situations where you actually have braces, and i was using that for a long time
08:56:33 <cheater_> then i've had some heavy bash-style projects and using OTBS for the fi and done and so on just didn't make sense, so i started using banner style for that
08:56:49 <cheater_> and then i noticed that it also applies to python, when you're using multiple lines for function calls etc
08:56:52 <pikhq> Absolutely *nothing* in Bourne makes sense.
08:56:55 <pikhq> And with that, sleep.
09:27:09 <ais523> gah, this web page about Unicode is really hard to read, because it sprinkles Unicode everywhere gratuitously because it can
09:27:20 <ais523> my browser interprets the encoding fine, but my fonts are missing many of the characters in question
09:53:28 -!- itidus20 has joined.
09:54:12 -!- Slereah has quit (Ping timeout: 276 seconds).
09:54:28 -!- GuestIceKovu has joined.
10:03:15 <Sgeo> So, just downloaded some crappy card game program
10:03:27 <Sgeo> Try it, there's an option for setting the random seed
10:03:34 <Sgeo> That.... sounds abusable
10:06:09 <fizzie> It's also quite common. Doesn't the Windows-bundled FreeCell also allow it? (With the old one having 32000 possible games, of which all but one are solvable, or something like that.)
10:06:31 <Sgeo> fizzie, Barbu is not a single player game
10:07:07 <fizzie> Oh, well, that's rather different.
10:07:25 <Sgeo> http://i.imgur.com/Xua00.png
10:08:23 <fizzie> Not the prettiest dialog ever.
10:11:21 -!- ais523 has quit (Ping timeout: 255 seconds).
10:14:37 -!- ais523_ has joined.
10:15:47 <ais523_> gah, it's annoying having to use webchat on the wired connection here
10:16:05 <ais523_> especially as the CAPTCHA requires unblacklisting script from Google
10:16:39 <ais523_> luckily, I found a NoScript setting that lets me turn off a temporary-allow without reloading the page, so that I can have Google blocked except when typing the CAPTCHA
10:17:21 <itidus20> so if you had a reasonably perfect reality simulation... would you have to follow real world patent laws? :D
10:17:46 <itidus20> eg.. is it illegal to build a patented device from physical space in a virtual space
10:18:28 <itidus20> the courts will have fun with that one oneday
10:20:59 -!- azaq231 has quit (Read error: Operation timed out).
10:23:02 -!- FireFly has joined.
10:24:51 <itidus20> So.. perhaps the mystery of society is that society is a living list composed of beings who are theoretically equal but actually cardinal
10:25:13 <itidus20> and it is their dire burden to organize that list among themselves
10:25:27 <itidus20> for the good of themselves and the good of the list
10:26:16 -!- azaq23 has joined.
10:32:03 -!- clog has joined.
10:48:53 -!- clog has quit (Ping timeout: 240 seconds).
11:03:13 <coppro> I just fixed a bug in a C++ standard library using the unary + operator
11:11:16 <cheater_> are there set theories with non-linear order relations on cardinality?
11:11:34 <cheater_> coppro, what does the unary + operator do again?
11:12:03 <coppro> cheater_: does nothing except perform integral promotion
11:12:09 <coppro> which, in this case, was exactly what I needed
11:14:42 <cheater_> For example, it can be used to force widening from smaller integral types to int, or ensure that an expression's result is treated as an rvalue and therefore not compatible with a non-const reference parameter. I submit, however, that these uses are better suited to code golf than readability
11:15:04 <fizzie> Given that this is C++, if it's not a primitive type, you can never know what the unary + will do to it.
11:15:34 <ais523_> coppro: I wrote this earlier: if ((htole32(rv) & 0xffff) == 0x80cd)
11:15:42 <ais523_> I was very tired, the line of code makes no sense in all sorts of ways
11:16:01 <ais523_> coppro: can you imply what's going on there from context?
11:16:13 <ais523_> or, well, imply the context from the code?
11:16:33 <coppro> I mean you're checking the low bits
11:16:56 <ais523_> well, the most obvious bug is that I don't htole16 the 0x80cd
11:17:10 <ais523_> I'm not checking the low bits, I'm checking the first two bytes of rv
11:17:17 <ais523_> which is why there's a byte order conversion there
11:17:35 <ais523_> and the reason is, the read command I have always reads four bytes at a time on x86 (eight on x86_64)
11:18:09 <ais523_> the more subtle bug is, that CD 80 is an x86-specific asm instruction, so I may as well just hardcode the endianness because the code wouldn't work anyway on a different processor
11:18:17 <ais523_> it just feels wrong to hardcode something like that
11:18:32 <ais523_> although I don't know why I'm uneasy about hardcoding endianness, but not about hardcoding literal machine code
11:18:42 <fizzie> Ha, it in fact looked like an x86 opcode, but I hadn't managed to find the list fast enough.
11:19:18 <coppro> CD is interrupt, right?
11:19:19 <ais523_> perhaps so that if it gets ported to another processor, I can just copy the code, changing the machine code, and it won't break even if it happens to be big-endian
11:19:30 <ais523_> and on Linux, CD 80 = syscall
11:19:44 <coppro> isn't there a separate syscall instruction?
11:19:57 <ais523_> the syscall instruction is int 0x80
11:20:17 <ais523_> I don't think there's a single instruction which means "do syscall", it's done via the interrupt vector as interrupts get you into kernel mode
11:20:45 <coppro> There is a syscall instruction on newer processors
11:20:49 <fizzie> There's both "syscall" and "sysenter", from AMD and Intel.
11:20:52 <ais523_> there's also a trick in this code that I only discovered by stracing strace
11:20:55 <ais523_> does Linux actually use it?
11:21:00 <ais523_> if so, I'll have to look up its machine code too
11:21:05 <fizzie> On x86-64 it at least is used.
11:21:12 <ais523_> this code's 32-bit specific
11:21:18 <coppro> ais523_: The 'correct' way to syscall on a modern Linux machine is by jumping into linux-gate.so
11:21:23 <ais523_> I may port it to 64-bit someday, but it involves naming individual registers
11:21:27 <ais523_> coppro: I'm not trying to make a syscall, though
11:21:40 <coppro> which is a magic shared library loaded into memory by the kernel at a fixed address which contains the syscall instruction, selected by processor to be whatever is fastest
11:21:47 <ais523_> I'm trying to, when a different process makes a syscall, wind its IP back a bit and change its registers so it makes another syscall
11:22:18 <ais523_> I ended up replacing read() and write() with state machines, they can make up to five syscalls to emulate what read() and write() normally do
11:22:20 <ais523_> all in the name of determinism
11:22:35 <coppro> linux-gate.so has some magic
11:22:49 <ais523_> gah, more magic's the last thing I need, I have enough of that stuff already in here
11:23:32 <coppro> http://lkml.org/lkml/2002/12/18/218
11:23:43 <ais523_> I'm already accessing a file via /proc/*/fd because that's the only accessible name for it on the system
11:24:18 <ais523_> Linux just subtracts two from the IP too?
11:24:33 <ais523_> that means that all the testing to see if I can get away with subtracting 2 from the IP is unnecessary
11:25:15 <coppro> http://www.trilithium.com/johan/2005/08/linux-gate/
11:26:04 <ais523_> oh, so /that's/ what VDSO stands for
11:26:05 <fizzie> Fortuitously sysenter's also two bytes long.
11:26:53 <ais523_> hmm, it also tells me how to get at auxv
11:27:07 <ais523_> the kernel initializes part of it with 16 random bytes, I need to go and make them deterministic again
11:28:31 <ais523_> it doesn't help that the auxiliary vector is undocumented, and referenced only in the ELF loader
11:28:47 <ais523_> (I've been grepping kernel sources far too much for this project)
11:30:31 <fizzie> ais523_: Anyway, do you actually need to mangle the EIP there? Isn't it just enough to do PTRACE_SYSCALL, then on the syscall entry stop just PTRACE_SETREGS the arguments and the syscall number to what you want and the PTRACE_SYSCALL again to get to the exit point? Why do you need to re-execute the actual instruction?
11:30:47 <ais523_> fizzie: because I need to replace one syscall with five
11:30:58 -!- itidus20 has quit (Quit: Leaving).
11:31:07 <ais523_> replacing one with one is easy, and doesn't require redoing syscall instructions at all
11:32:04 <ais523_> (it's not quite a simple 1-with-5, either; it's actually replacing 1 with 1, 2, 4, or 5, depending on return values, which is why I need the state machine)
11:33:49 <ais523_> I wonder if I should borrow strace's trick for ptracing child processes and still letting the parent get a wait() notification
11:33:59 <ais523_> (it basically works by anticipating when the child's about to exit, and detaching just in time)
11:34:24 <ais523_> I've already borrowed its trick for replacing fork with sys_clone so that the child can be traced too
11:34:42 <ais523_> (using an argument pattern that's documented, but not available via the clone(2) wrapper)
11:35:38 <fizzie> ais523_: It sounds like it should be possible to replace that one syscall with something that is configurable enough so that you can hook whatever complicated code you need to do at the other end of it, but maybe I won't start guessing without knowing the details.
11:35:41 <fizzie> (All this assuming you wish to stay strictly on the userland side.)
11:36:06 <ais523_> I'd write a kernel module if I had to, but I don't think it's necessary
11:36:30 <ais523_> and I may as well explain what I'm doing in Stage 1 of the project (which is likely the hardest stage): trying to create a framework for running programs in a completely reproducable way
11:36:49 <ais523_> so that given the same input, you get the same output, even if the program does something bizarre like catting /dev/random or printing out the values of pointers
11:38:04 <fizzie> Remember to account for accessing the processor performance counters with the RDTSC opcode. (Though it's possible that's a privileged operation? Or maybe not. It's supposed to be rather low-overhead.)
11:38:45 <ais523_> oh, ouch, you can do that?
11:38:57 <ais523_> I may have to just hope that code doesn't do that
11:39:05 <ais523_> single-stepping every instruction is intolerably slow
11:39:23 <ais523_> besides, it breaks on SMP systems, IIRC, and programs tend to avoid it for that reason
11:44:45 <Sgeo> Yay, I introduced another person to the inability to decide on a language that is my life
11:44:53 <ais523_> hmm, what do virtualisation programs do about RDTSC?
11:45:14 <ais523_> Sgeo: pick PHP, that way at least you can be certain you made the wrong choice
11:48:33 <fizzie> ais523_: At least the AMD-V hardware virtualization system lets you do an "instruction intercept" for RDTSC.
11:48:48 <fizzie> And if it's doing full software emulation it can of course do whatever.
11:49:06 <ais523_> yep, I'm hoping to avoid having to do full software emulation
11:51:18 <ais523_> it'd be nice if this worked for arbitrary programs, but I mostly just want to get the subset that people actually use working
11:51:32 <ais523_> for instance, cat almost works, I'm just missing deterministic support for open
11:51:35 <fizzie> The hardware virtualization systems would probably let you control everything, but you probably can't do that from a user-mode process (at least VirtualBox needs the vboxdrv module, which I think does something related) and it would be a lot more complicated than just some system-call trapping.
11:51:54 <ais523_> you can singlestep, but not stop on instructions of your choice
11:52:21 <ais523_> hmm, what about setting a breakpoint everywhere that looked like a RDTSC instruction? does setting breakpoints on data do anything?
11:52:39 <ais523_> if it's implemented by replacing instructions, it wouldn't work in case it overwrote data or a misaligned instruction
11:52:42 -!- ttm_ has quit (Ping timeout: 276 seconds).
11:52:50 <ais523_> but somehow I think it's implemented a safer way
11:52:52 <fizzie> You might run out of (hardware) breakpoints.
11:53:19 <ais523_> they'd have to be hardware breakpoints
11:53:41 <ais523_> I'm trying to do all this stuff without really knowing what I'm doing
11:55:13 <ais523_> also, there's something so wrong about typing "strace strace", even though there's no obvious reason why it wouldn't chain
11:55:57 <fizzie> I think there are four breakpoint control registers, but I don't know anything about any kernel interfaces for accessing that stuff.
11:56:18 <ais523_> I didn't notice one in the list of syscalls
11:56:23 <ais523_> so I'll just go download gdb source, and look there
11:56:57 <fizzie> I was just about to suggest that.
11:57:23 <ais523_> bleh, apt-get source is hanging, presumably because it's using the wrong proxy
11:57:57 <fizzie> There are some undocumented features in the x86(-64) hardware breakpoint system which lets it do... I forgot what it was, some form of data-dependent breakpointing in hardware that's not officially supported.
11:58:36 -!- Taneb has joined.
11:58:38 <fizzie> "Since they depend on hardware resources, hardware breakpoints may be limited in number; when the user asks for more, GDB will start trying to set software breakpoints. (On some architectures, notably the 32-bit x86 platforms, GDB cannot alsways know whether there's enough hardware resources to insert all the hardware breakpoints and watchpoints. On those platforms, GDB prints an error message only when the program being debugged is continued.)"
11:58:52 <ais523_> I'll download it with Firefox instead
11:59:02 <fizzie> GDB's "software breakpoints" are based on opcode replacement.
11:59:07 <Taneb> I sent off for a new AC adapter for my laptop
11:59:12 <ais523_> opcode replacement definitely won't work
11:59:16 <Taneb> Waited a couple of weeks
11:59:28 <Taneb> And they sent me the wrong thing
11:59:56 -!- itidus20 has joined.
12:00:21 <fizzie> ais523_: You should be writing for a Harvard arch, then you could freely replace opcodes without worrying about messing up data.
12:01:02 <ais523_> I can actually tell where the text, rodata and bss segments were in the executable, by looking at mmap
12:01:34 <ais523_> I can save on required breakpoints somewhat by only setting them in executable segments
12:01:38 <ais523_> and moving them around on every call to mprotect
12:02:43 <fizzie> The RDTSC problem might not be very important in practice, at least for "sensible" programs. I think it's mostly used as a high-precision timer for "interactive" things, and even there it's a bit discouraged practice since it's not a monotonic clock in a SMP system, so well-behaved programs should be using the OS interfaces instead.
12:03:19 <ais523_> a high-precision timer for interactive things is exactly the sort of thing I need to stabilise
12:03:27 <ais523_> time is one of the hardest things to get reproducible
12:03:55 <ais523_> btw, anyone know how to modify a file's inode change time? as far as I can tell, the only way to do so is to set the system clock, change the inode, then put the system clock back again, and that's obviously ridiculous
12:04:11 <ais523_> I think I'll just pretend it's equal to the modification time on read, much simpler that way
12:04:44 <fizzie> ais523_: Unmount, manipulate bits, remount. :p
12:04:59 <ais523_> the fs I'm using isn't backed by an actual device
12:05:15 <ais523_> which is mounted in a separate namespace so that, from the point of view of other processes, it can't be named
12:05:52 <ais523_> except by going through /proc
12:06:12 <ais523_> (the other way round, there's no way to name files on the main system's file system at all, except by breaking a chroot, which is exactly what I want)
12:06:27 <fizzie> I don't think there's an actual interface for setting the ctime, though. You may need to just fake the value returned by stat.
12:07:01 <fizzie> (Or use a FUSE filesystem instead of a tmpfs.)
12:07:04 <ais523_> (I suspect it's partly because setting the ctime should, logically, update the ctime to the current time immediately afterwards)
12:07:22 <ais523_> I'm using a tmpfs because it's there, and it's convenient
12:08:30 <ais523_> and has almost the right semantics
12:09:56 <fizzie> Reading the ptrace manpage made me wonder what exactly is the difference between PTRACE_SYSCALL and PTRACE_SYSEMU. Is it just that the latter doesn't stop at syscall exit, the assumption being that you're not going to actually perform a syscall as the child but instead fake it in the tracing parent and return the results directly?
12:10:26 <ais523_> fizzie: PTRACE_SYSEMU basically changes the int 0x80 (or sysenter) into a nop
12:10:38 <ais523_> the kernel doesn't do the syscall, just leaves the registers as they are
12:11:07 <ais523_> if I need to remove a syscall, I can do so by changing orig_eax to some nonimplemented number on the call, then changing the return value from -ENOSYS to whatever I want on the return
12:11:29 <ais523_> I haven't needed to do that yet, but suspect I may end up having to at some point
12:11:58 <fizzie> I suppose you want PTRACE_SYSCALL since you want to execute your syscalls as if the child were calling them, instead of just faking them in the tracing process.
12:12:16 <ais523_> and because you can emulate SYSEMU with SYSCALL, but not vice versa
12:12:26 <ais523_> especially as the vast majority (well, more than half) of syscalls go through unchanged
12:12:59 <ais523_> hmm, do you know of any way to interrupt a long sleep (like select(NULL, NULL, NULL, 100000);)?
12:13:16 <ais523_> I haven't tried any methods yet; I'm hoping that it works to send SIGTRAP to the process, then use ptrace to replace it with SIG_0
12:13:44 <ais523_> in theory that should cause the select to keep on going, but I doubt it can because there was an actual signal there
12:13:54 <fizzie> Sending signals sounds likely to work, that's what usually breaks long-running syscalls.
12:14:24 <ais523_> yep, the solution is likely to involve signals somehow
12:14:31 <ais523_> the man pages say that they're only interrupted by handled signals
12:14:50 <ais523_> although, that seems inaccurate, as you'd expect, say, an unhandled SIGINT to exit the process and interrupt the syscall in the process
12:14:51 <fizzie> There's that system call restart mechanism that was described/mentioned in the linux-gate text.
12:15:03 <ais523_> system call restart's used in a different set of cases, I think
12:15:18 <ais523_> so I'm wondering what happens if you signal the process, then use ptrace to unsignal the process again (which is possible)
12:15:26 <ais523_> do you get EINTR, or restart, or something else?
12:18:32 <fizzie> I'm not sure I'd like to hazard a guess. I don't even know what happens first when you send a handled signal to a process that's currently being PTRACE_SYSCALL'd; whether it will stop at the "syscall exit" SIGTRAP-alike or what.
12:18:55 <ais523_> that should be easy to test, at least
12:20:47 <fizzie> The syscall restart mechanism at least works in user code (it's just the return address that changes) and presumably you get the ptrace "syscall exit" trap at that point, so you can there decide whether to allow the restart to happen or not. But I don't really know the exact order of things happening, i.e. when will the signal get (a) delivered to ptrace or (b) handled if you let it be.
12:21:50 <ais523_> I sent SIGINT to sleep(1), and got a syscall return with value -516 (there doesn't seem to be an errno 516), followed by SIGINT arriving
12:22:15 <ais523_> it seems it was using nanosleep to do its sleeping
12:22:50 <ais523_> in particular, -516 does not seem to be -EINTR, which is -4
12:23:22 <fizzie> The 512 sounds like a flag.
12:24:07 <ais523_> let me try it again using a syscall that sleep(1) will ignore
12:24:51 <ais523_> I sent it SIGCHLD, and it returned -516, then received SIGCHLD, ignored it, then called syscall 0
12:25:25 <ais523_> it does look very much like the -512 is a sign that the syscall should be restarted, if the program is interested in restarting it
12:25:26 <fizzie> So it gets "physically" interrupted in all cases, but auto-restarted if the signal is not handled.
12:26:37 <ais523_> according to signal(7), nanosleep is interrupted and returns EINTR if interrupted by a signal handler
12:26:48 <ais523_> but that wasn't a signal handler, it was SIGCHLD, which sleep(1) has no reason to handle because it never forks
12:27:16 <fizzie> The 'strace' command prints the return value -- when I "sleep 1000" + kill -CHLD it -- as "ERESTART_RESTARTBLOCK (To be restarted)"
12:27:20 <ais523_> all I need to do to force an EINTR, then, is to replace the -516 with -4, I bet
12:27:27 <ais523_> and I can get a success return by replacing it with 0
12:27:45 <ais523_> strace is great for making sense of things
12:28:04 <ais523_> in fact, I've been expanding syscall arguments that represent flags just by compiling them into a small test program and stracing them
12:29:35 <fizzie> Good way of letting someone else have to handle the dirty work of gathering lists of all those flags and their meanings.
12:30:22 <ais523_> I dread trying to deal with ioctl
12:30:57 <ais523_> at least it can only be used on character special devices, which cuts down the number of cases somewhat; if I don't mknod a device, then nothing can ioctl at it
12:31:04 -!- CakeProphet has joined.
12:31:04 -!- CakeProphet has quit (Changing host).
12:31:04 -!- CakeProphet has joined.
12:31:45 <ais523_> perhaps I'll go and censor anything in my code that gives away why I'm writing it, and post source somewhere
12:31:47 <ais523_> it'll take a while, though
12:32:04 <fizzie> linux/errno.h has values 512..516 as ERESTARTSYS, ERESTARTNOINTR, ERESTARTNOHAND, ENOIOCTLCMD and ERESTART_RESTARTBLOCK with a comment "These should never be seen by user programs. -- Note that ptrace can observe these at syscall exit tracing, but they will never be left for the debugged user process to see."
12:32:59 <fizzie> Also for some improbable reason there's a set of NFSv3 errors in the same file.
12:33:04 <ais523_> hmm, I should try to track down that suspected kernel bug I saw earlier
12:33:34 <fizzie> #define EJUKEBOX 528 /* Request initiated, but will not complete before timeout */ <- Interestingly named.
12:35:21 <ais523_> hmm, I should look into the implementation of syscall(2) some time
12:39:01 <ais523_> fizzie: gdb/i386-nat.c seems to do the debug register accesses
12:39:06 <ais523_> it seems that you can only set four hardware break/watchpoints
12:39:23 <ais523_> which is a little annoyingly low
12:39:23 <fizzie> Yes, there's DR0 .. DR3 registers for it.
12:39:51 <ais523_> and DR6 and DR7 are status and control
12:42:18 <ais523_> the actual interface for setting the debug registers for another process in Linux appears to be to poke into the context-switched-out version of the registers using ptrace, so that they get set as the process context switches back in
12:43:56 <ais523_> aha, it's "u_debugreg" in struct user
12:43:57 -!- ttm_ has joined.
12:44:31 -!- clog has joined.
12:46:13 -!- ais523_ has quit (Quit: Page closed).
12:52:33 <Sgeo> Another auto-generated book: http://www.barnesandnoble.com/w/nomic-lambert-m-surhone/1025063254?ean=9786130549695&itm=13&usri=nomic
12:53:08 <Sgeo> How does the cover know that it's Suber if it's autogenerated?
12:53:17 <Sgeo> But... HIGH QUALITY WIKIPEDIA ARTICLES
12:54:24 <Sgeo> http://www.barnesandnoble.com/w/road-rules-lambert-m-surhone/1028378779?ean=9783639996302&itm=1&usri=lambert%2bm%2bsurhone
12:55:02 <Sgeo> Um, clicking the cover gives a different picture
13:03:22 <Taneb> You know who has an underappreciated job?
13:03:29 <Taneb> Tech support people
13:18:33 -!- copumpkin has quit (Ping timeout: 252 seconds).
13:18:57 -!- copumpkin has joined.
13:32:57 -!- derrik has joined.
13:40:17 -!- azaq23 has quit (Quit: Leaving.).
13:41:35 -!- azaq23 has joined.
13:43:07 -!- Taneb has quit (Ping timeout: 260 seconds).
13:55:17 -!- Taneb has joined.
13:58:40 -!- itidus21 has joined.
14:02:17 -!- itidus20 has quit (Ping timeout: 258 seconds).
14:14:02 -!- itidus21 has changed nick to itidus20.
14:24:05 -!- azaq23 has quit (Quit: Leaving.).
14:25:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:26:41 -!- MSleep has changed nick to MDude.
14:30:52 -!- BeholdMyGlory has joined.
14:55:02 -!- copumpkin has joined.
15:34:42 -!- itidus20 has quit (Quit: Leaving).
15:43:11 -!- monqy has joined.
15:45:06 -!- itidus20 has joined.
16:18:14 <Lymee> @pl fracf = \x y -> (color iters) $ (mandelbrot iters) x y
16:18:15 <lambdabot> fracf = (color iters .) . mandelbrot iters
16:35:46 -!- MigoMipo has joined.
16:38:37 -!- Phantom_Hoover has joined.
16:43:18 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
17:47:38 -!- TeruFSX has joined.
18:15:33 -!- olsner has quit (Ping timeout: 276 seconds).
18:15:59 -!- TeruFSX has quit (Read error: Connection reset by peer).
18:44:05 -!- itidus21 has joined.
18:46:19 -!- itidus20 has quit (Ping timeout: 258 seconds).
18:49:16 -!- itidus21 has changed nick to itidus20.
18:56:12 <Taneb> I know own an inflatable toy electric guitar
18:56:38 <pikhq> How can one know own?
18:56:52 <Taneb> That was a slip of the finger.
18:57:07 <Taneb> In fact, s/know/now/
18:57:43 <Taneb> Is that how it's done?
19:10:50 -!- olsner has joined.
19:40:55 -!- derrik has left.
20:28:40 <Taneb> I've got TVTropes out of my top six websites on chrome on this computer!
20:30:22 <Taneb> And now I am anxiously awaiting a mildly embarrasing video of myself to be uploaded to the internet
20:42:42 -!- zzo38 has joined.
20:46:56 <Taneb> I've had an idea for an esoteric programming language
20:47:34 <Taneb> Gonna make a page in user namespace
20:47:48 <zzo38> OK. What idea is that?
20:48:16 <Taneb> You know Binary Combinatory Logic and Binary Tag System and things?
20:48:39 -!- quintopia has quit (Ping timeout: 240 seconds).
20:48:58 -!- quintopia has joined.
20:48:58 -!- quintopia has quit (Changing host).
20:48:58 -!- quintopia has joined.
20:50:27 <Taneb> Basically, it's 2^n of those
20:50:42 <Taneb> It's a variety pack of binary turing tarpits with no IO
20:51:03 <Taneb> I'm going to call it... BINARY VARIETY PACK
21:13:11 <Taneb> http://esoteric.voxelperfect.net/wiki/User:Taneb/Binary_Variety_Pack
21:14:13 -!- Taneb has quit (Remote host closed the connection).
21:20:14 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:32:12 -!- Nisstyre has quit (Ping timeout: 255 seconds).
21:32:59 -!- Nisstyre has joined.
21:44:11 -!- Nisstyre has quit (Quit: Leaving).
21:53:48 <Zwaarddijk> anyone here remember a novelty abstract strategy game from the 1990s where there was like height differences between different squares on the board, and the pieces were different-sized semispheres?
22:04:44 <GuestIceKovu> I was mostly playing Red Alert back then as far as strategy games go
22:04:50 -!- GuestIceKovu has changed nick to Slereah.
22:15:24 -!- Nisstyre has joined.
22:19:41 <fizzie> Slereah: Yes, in the 1990s they could only afford a single Empire.
22:20:37 <Slereah> Well, obviously, the only empire was MINE
22:25:14 <Zwaarddijk> i recall that game from some old popular science magazine adverts
22:25:25 <Zwaarddijk> and now I've gotten intrigued as to what the rules may have been
22:25:33 <Zwaarddijk> how the differences of elevation may have affected the gameplay
23:09:32 -!- oerjan has joined.
23:13:58 -!- TeruFSX has joined.
23:28:45 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:46:47 -!- elliott has joined.