00:18:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:24:37 cheater_: one | per pattern plz 00:24:40 :P 00:26:07 * oerjan detects an off-by-one error :P 00:26:47 oerjan: your mom was off-by-one. 00:27:01 can you guess which one it was? 00:27:20 wat 00:27:26 OH SNAP. 00:28:05 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:12 ok 00:29:14 well my parents _were_ married just about a month before i was born. draw your own conclusions. 00:30:00 I can't draw. 00:30:08 figures. 00:31:24 though my conclusion is that marriage doesn't matter very much. 00:31:32 except for the legal consequences, which matter a lot. 00:32:44 also, this was in 1970, a time when marriage definitely mattered. 00:33:31 it would basically have been unthinkable for them to _plan_ it this way at that time. 00:34:08 "No public logging! What happens in #emacs stays in #emacs " 00:34:10 booo1 00:34:31 (Note: The .. not actually all that funny stuff is over) 00:34:50 oh yeah. #emacs is a riot. Lots of kinky ASCII porn. 00:34:57 yeah if you want the world to search for your private secrets, tell them in #esoteric. 00:36:09 that's weird my browser locked up but seems to not be using CPU 00:36:25 bug. 00:37:11 some kind of resource bottleneck/deadlock, I guess? 00:37:58 perhaps. 00:38:33 there's always a possibility that it was a ghost. Perhaps you have a haunted computer 00:39:28 oh it's haunted all right, i just cannot recall this particular failure mode before. 00:39:33 if that is the case then you may have a computer capable of hypercomputation. 00:40:18 via ghost-power.. kind of like an oracle, but spookier. 00:43:32 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 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 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 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 now let's see if reloading previous browser session locks it up again. 00:49:44 evidence so far is ... hm it moved. 00:50:36 gah 00:51:06 now it's locked up _and_ using CPU. :( 00:53:28 gah it was a huge pdf file 01:05:28 -!- augur has joined. 01:11:50 -!- NihilistDandy has joined. 01:12:18 ping 01:13:20 6uod 01:16:36 classy 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 oh no, we have been unclogged! 03:13:54 -!- copumpkin has changed nick to draino. 03:14:04 * draino grins 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 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 Do any other literate programs exist that can help with my problem? 03:43:22 -!- MDude has changed nick to MSleep. 04:05:24 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 "selectable as an axiom, or counter-axiom" _implies_ unprovable. 04:07:46 and true & false applies to _models_, not axiomatic theories. 04:08:18 again, by godel's completeness theorem, if something is unprovable, then it is false in some model. 04:08:47 provable <=> true in all models 04:09:24 (models of the given axioms) 04:09:27 I feel like I understand less now 04:10:08 (Yes, that must be an illusion, generated by an unperceived lack of understanding, yada yada) 04:10:12 well, (1) the continuum hypothesis _is_ independent. this means that it is (2) not provable, _and_ (3) not disprovable. 04:10:43 (2) again is equivalent to it being false in some model of the rest of set theory 04:10:58 (3) then is equivalent to it being false in some model etc. 04:11:37 er wat 04:11:48 *(3) then is equivalent to it being _true_ in some model etc. 04:12:03 So what' are "true but unprovable" statements for a system of axioms? 04:12:10 Or does that not apply to CH? 04:12:51 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 models here technically mean set theoretic models, which may be a little circular for this particular question 04:14:10 Can you post some of this on reddit? 04:14:24 i still have no account 04:15:30 oh hm or are you referring to that "this assumption is widely believed to be true." 04:16:08 which is the only instance of "true" in what you responded to 04:16:51 and that refers to a different kind of truth than the truth of the continuum hypothesis 04:17:48 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 No, that's not what I was referring to 04:19:51 however, this means that the consistency of ZF is itself believed to be a true but unprovable statement. 04:21:30 (we know that _if_ it is true then it is unprovable, by godel's _in_completeness theorems) 04:21:47 *gödel 04:21:55 Much like scientific theories, one can only disprove the consistency of an axiomatic system. 04:22:47 pikhq_: well unless you prove it in a stronger system. 04:23:06 Well. Yes. 04:23:26 Though that leaves it still in doubt, because the stronger system itself could be inconsistent. :) 04:24:20 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 i cannot recall hearing of any examples 04:26:11 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 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 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 ooh nerdgasm http://scienceblogs.com/startswithabang/2011/07/were_going_to_see_a_black_hole.php 05:32:48 (at the end) 05:34:55 (although you need the rest to understand _why_ it's so cool 05:34:57 ) 05:50:44 Why only radio waves? 05:50:55 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 perhaps it's because their frequency is so low that ordinary circuitry can handle them... 05:53:51 There was a Star Trek fan fic in some anthrology that had some sattelite that moved around the galaxy 05:54:49 http://memory-beta.wikia.com/wiki/What_Went_Through_Data%27s_Mind_0.68_Seconds_Before_the_Satellite_Hit 05:55:52 It seems that the limiting factor on that technique is data storage and/or bandwidth. 05:56:24 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 bah there had to be something in the comments to make it less awesome :( 05:58:37 oerjan, hm? 05:59:11 george monser calculates that the event horizon will only occupy a couple of pixels... 06:01:06 By "a couple", you mean "1 or 2" 06:01:08 Wow :/ 06:15:08 There's a good summary of them reasons why it works for radio in http://en.wikipedia.org/wiki/Aperture_synthesis 06:15:14 "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 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 The more obvious article ("astronomical interferometer") is far less concise. 06:21:36 fizzie: So, magic. 06:25:26 smangic (official term from comments :P) 06:28:45 (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 http://www.youtube.com/watch?v=Gzj1OF7d9m4 It's somewhat amusing seeing people enter a Walmart for the first time. 07:43:31 I don't think I've ever been to a Walmart 07:43:47 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 You can purchase just about everything in a Walmart. 07:44:30 hmm, I can tell I was tired last night 07:44:34 because I wrote the following line of code: if ((htole32(rv) & 0xffff) == 0x80cd) 07:44:38 Shy of, like, a car, or lumber, or something... 07:45:01 (rv is a long that has been read from a process's text segment) 07:45:21 you can buy firewood in petrol stations, in the UK 07:45:33 I'm not entirely sure why it's stocked there, it just sort-of became traditional 07:45:43 and you can't get it anywhere else, because everyone knows you go to petrol stations to get it 07:45:53 I suppose it makes sense to have one sort of shop for selling every type of fuel 07:46:04 That actually makes rather a lot of sense. 07:46:40 Except that here in America, we believe in having one sort of shop for selling every type of thing. 07:47:04 the problem is that you can't easily fit those onto street corners 07:47:27 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 although they're big-name supermarkets rather than corner shops 07:48:04 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 but then, umm, you'd need a car just to drive to the supermarket 07:48:32 Yes. 07:48:57 Guess what auto ownership rates are like? 07:49:12 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 hmm, this reminds me, I only have two days left on my bus pass 07:49:38 (I buy it for several months at a time) 07:49:56 *Freakishly*, I happen to be about a mile away from a supermarket. 07:50:26 This is an exceptionally short distance for anything to be. 07:51:13 hmm, indeed 07:51:25 I suppose that the UK has a huge population density compared to most places in the word 07:51:27 *world 07:51:38 I discovered today that London has a substantially greater population than Norway, which surprised me 07:52:16 Actually, I think in *this* case it's just the US having fairly low population density. 07:53:14 Outside of the major population centers, you could without much trouble be at least a mile away from anyone else. 07:53:18 it varies a lot by state, I think 07:53:25 True, it does. 07:54:25 Anyways. Everyone has cars, and there's a lot of space, so there's no incentive to make dense, walkable cities. 07:56:03 supz 07:58:42 pikhq: i've always found it crazy how spread out everything in usa is 07:59:01 pikhq: if you had dense, walkable cities, you wouldn't have to use cars 07:59:32 ais523: Yes. And if we didn't already have to use cars, we would have reason to have dense, walkable cities. 07:59:54 hmm 07:59:58 ais: that's silly, it doesn't work like that 08:00:00 even not needing a car for some things is a benefit 08:00:11 e.g. it takes me a couple of hours to walk to work, so I generally need to take a bus 08:00:24 but if, say, I want to buy food, or go to the bank, that's within reasonable walking distance 08:00:24 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 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 the public services are moderately ruined here 08:00:55 even i have to commute every now and then. 08:00:58 but even so, they're still cheaper than cars, by a factor of about 2 08:01:13 and i can find pretty much anything within walking distance. 08:01:19 What do the opportunity costs on that look like? 08:01:26 The bus that goes by here runs twice a day. 08:01:46 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 the least popular bus routes generally run once an hour 08:02:06 but tend to be pretty accurate with their timings, and have easily memorizable timetables 08:02:30 I've only seen that performance in the handful of dense, relatively walkable cities. 08:02:42 in london the important ones even run once an hour at night 08:02:55 they used to do that in Birmingham too 08:02:57 but don't any more 08:02:57 Otherwise, the buses are utterly unusable. 08:03:07 instead, they just stop a little past midnight, and start up again at 5am 08:03:15 To the point that it would be quicker to walk. 08:03:24 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 In a land where it can be 8 miles to the grocery store. 08:03:55 yep, unlike utilities, workplaces tend to be rather further away 08:04:06 cheater_: Only 40? 08:04:21 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 I like being within walking distance of stuff 08:04:40 pikhq, that's the usual yes 08:04:51 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 pikhq, that's 40 minutes each way 08:04:59 cheater_: Impressive in such a highly-populated city. 08:05:04 cheater_: Yes, I know. 08:05:27 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 OTOH the tube makes you ill and deaf, so i don't like it. 08:06:04 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 it's an attempt to cut down on that effect 08:06:50 ais523, it's a rush, i like the escalators 08:07:07 (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 I like them too; I've been to London often enough that I know how to use them 08:07:34 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 and it's like 2-3 stories high 08:08:05 It's bizzare. A bunch of webchat idiots were in both #chicken and #jesus 08:08:09 yeah, people have to yield if they're not on the side 08:08:13 Not in #chicken anymore they banned webchat users 08:08:26 Sgeo, what's #chicken and why is this combination bizarre? 08:08:48 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 cheater_: Presumably Chicken Scheme. 08:10:09 the transit system in berlin was very shitty 08:10:14 you can't get anywhere 08:10:19 in munich it's much better 08:10:30 -!- ais523 has joined. 08:10:32 munich also has a much higher population density, it's like zone 3 in london 08:10:40 Probably doesn't help that the transit system in Berlin spent a few decades having to work around the Wall. 08:11:07 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 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 the roads were build before the wall, so that's no problem either. 08:11:43 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 Except they couldn't do much improvement on them. 08:11:57 ais523: But why do you walk on the right, then? 08:12:08 the walk on the left/right seems arbitrary 08:12:15 I think it's because people naturally go right when faced with obstacles 08:12:19 so that they can attack them more easily 08:12:52 ais523, that's wrong, it's the usual on rhd roads for slow cars to be on the right side 08:13:03 "rhd roads"? 08:13:14 Right-hand drive? 08:13:16 sorry, i meant lhd roads 08:13:24 i.e. "normal driving side" 08:13:38 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 How optimistic of you. 08:14:03 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 Slow cars are inevitably side-by-side and going the same speed. 08:14:42 i've also noticed another funny imperial/metric thing 08:14:53 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 Driving past a "Slow Traffic Keep Right — It's The Law!" sign. 08:15:48 ais523: You can also buy firewood from (many) petrol stations in Finland, too. It feels logical. 08:16:03 They sell "that sort of stuff". 08:16:24 it is that the Schuko is specified in inches, whereas BS 1363 is specified in meters. how crazy is that? 08:16:34 it's like the bizarro world of electric engineering 08:16:36 Also coals for barbequeueing. 08:16:42 pikhq: in the UK, slow cars in the inside lanes generally get mown down by lunatics 08:16:52 it's not really an ideal way of enforcing the law, but it works moderately well 08:16:57 ais523: You have no idea how happy that idea makes me. 08:16:58 also, lorries are banned from the inside lane in a motorway 08:17:17 Seriously, that makes me ecstatic. 08:17:21 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 ais523, have you ever lived in hungary? 08:17:58 cheater_: only for a week 08:18:10 fizzie, it makes lots of sense since the items you use for barbecue are of petrochemical origin. 08:18:12 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 oh, i am learning italian now. 08:18:26 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 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 i'm wondering if i should translate the source of the latest program to italian 08:19:56 ais523, why would they do that with the Schuko and BS 1363? 08:20:10 that makes no sense at all! 08:20:56 cheater_: Maybe it has something to do with how soda is sold by the liter in the US? 08:22:37 Nah, more likely Germany just wanted to fuck with us. 08:22:52 pikhq, no freaking idea 08:23:09 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 The British have a well-documented propensity for fucking with people. 08:25:29 that's all very weird 08:27:24 Also, BS1363 isn't metric. 08:28:18 1/4 inch wide by 5/32 inch high pins aren't metric. :) 08:28:53 i've measured one, it's spot-on metric 08:29:01 let me measure another one 08:29:20 They have retroactively assigned it to 6.35mm by 3.975mm. 08:29:45 Though a more round 6.25mm by 3.9mm would be within tolerances. 08:30:19 (which are ±0.13mm and ±0.075mm) 08:33:57 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 Yeah, that seems quite plausible. 08:35:49 the standard pin spacing in electronics, if you're assembling the circuit by hand, is a deciinch 08:36:04 In the name of not-confusing-you, the US's connector, NEMA 1 or 6, is non-metric. 08:36:06 umm, I think that needs a diaeresis 08:36:10 deciïnch 08:36:25 Erm, 5. 08:36:27 Not 6. 08:37:01 well, i've measured three 08:37:07 (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 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 So, what you're saying is that they're way out of spec in the name of metric? :P 08:39:24 ? 08:39:31 i think it might be so 08:40:02 That should be 6.35±0.13mm. 08:40:23 it's definitely not 6.2 or more. 08:50:17 i wonder.. why do more people not use banner style indent? it's so confenient 08:50:49 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 In the braced languages, OTBS is perceived as being part of the syntax. 08:52:37 what's banner indent? 08:53:30 ais523: The closing bracket is at the same indent level as the previous statements. 08:53:34 this is ( 08:53:38 banner, 08:53:41 indent, 08:53:44 style. 08:53:45 ) 08:53:51 ouch 08:53:51 Like that. 08:54:09 putting the closing bracket on the same line as the last statement makes more sense than that 08:54:16 I think I used to do that 08:54:16 I find myself doing that more and more nowadays 08:54:16 that's lisp style 08:54:19 yep 08:54:34 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 i don't like it because the closing can get lost 08:54:39 and I've been doing that quite a bit 08:54:46 well you concatenate 08:54:49 for example 08:54:52 this is ([ 08:54:58 banner, 08:55:00 style, 08:55:01 too. 08:55:03 ]) 08:56:11 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 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 and then i noticed that it also applies to python, when you're using multiple lines for function calls etc 08:56:52 Absolutely *nothing* in Bourne makes sense. 08:56:55 And with that, sleep. 09:27:09 gah, this web page about Unicode is really hard to read, because it sprinkles Unicode everywhere gratuitously because it can 09:27:20 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 So, just downloaded some crappy card game program 10:03:27 Try it, there's an option for setting the random seed 10:03:34 That.... sounds abusable 10:05:39 haha 10:06:09 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 fizzie, Barbu is not a single player game 10:07:07 Oh, well, that's rather different. 10:07:25 http://i.imgur.com/Xua00.png 10:08:23 Not the prettiest dialog ever. 10:11:21 -!- ais523 has quit (Ping timeout: 255 seconds). 10:14:37 -!- ais523_ has joined. 10:15:47 gah, it's annoying having to use webchat on the wired connection here 10:16:05 especially as the CAPTCHA requires unblacklisting script from Google 10:16:39 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 so if you had a reasonably perfect reality simulation... would you have to follow real world patent laws? :D 10:17:46 eg.. is it illegal to build a patented device from physical space in a virtual space 10:18:28 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 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 and it is their dire burden to organize that list among themselves 10:25:27 for the good of themselves and the good of the list 10:26:16 -!- azaq23 has joined. 10:32:03 -!- clog has joined. 10:32:36 What. 10:33:01 hi clog 10:48:53 -!- clog has quit (Ping timeout: 240 seconds). 11:03:03 I win 11:03:13 I just fixed a bug in a C++ standard library using the unary + operator 11:11:16 are there set theories with non-linear order relations on cardinality? 11:11:34 coppro, what does the unary + operator do again? 11:11:43 makes something positive? 11:12:03 cheater_: does nothing except perform integral promotion 11:12:09 which, in this case, was exactly what I needed 11:13:01 what is integral promotion? 11:14:42 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 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 coppro: I wrote this earlier: if ((htole32(rv) & 0xffff) == 0x80cd) 11:15:42 I was very tired, the line of code makes no sense in all sorts of ways 11:15:50 haha 11:15:52 fizzie: true 11:16:01 coppro: can you imply what's going on there from context? 11:16:13 or, well, imply the context from the code? 11:16:20 nope 11:16:33 I mean you're checking the low bits 11:16:56 well, the most obvious bug is that I don't htole16 the 0x80cd 11:17:10 I'm not checking the low bits, I'm checking the first two bytes of rv 11:17:17 which is why there's a byte order conversion there 11:17:35 and the reason is, the read command I have always reads four bytes at a time on x86 (eight on x86_64) 11:17:35 ah 11:18:09 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 it just feels wrong to hardcode something like that 11:18:21 ahaha 11:18:32 although I don't know why I'm uneasy about hardcoding endianness, but not about hardcoding literal machine code 11:18:42 Ha, it in fact looked like an x86 opcode, but I hadn't managed to find the list fast enough. 11:19:18 CD is interrupt, right? 11:19:19 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:22 yep 11:19:30 and on Linux, CD 80 = syscall 11:19:44 isn't there a separate syscall instruction? 11:19:57 the syscall instruction is int 0x80 11:20:17 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 There is a syscall instruction on newer processors 11:20:49 There's both "syscall" and "sysenter", from AMD and Intel. 11:20:52 there's also a trick in this code that I only discovered by stracing strace 11:20:52 coppro: aargh 11:20:55 does Linux actually use it? 11:20:59 ais523_: Yesish 11:21:00 if so, I'll have to look up its machine code too 11:21:05 On x86-64 it at least is used. 11:21:12 this code's 32-bit specific 11:21:18 ais523_: The 'correct' way to syscall on a modern Linux machine is by jumping into linux-gate.so 11:21:23 I may port it to 64-bit someday, but it involves naming individual registers 11:21:27 coppro: I'm not trying to make a syscall, though 11:21:40 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 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 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:19 ah ok 11:22:20 all in the name of determinism 11:22:35 linux-gate.so has some magic 11:22:49 gah, more magic's the last thing I need, I have enough of that stuff already in here 11:23:32 http://lkml.org/lkml/2002/12/18/218 11:23:43 I'm already accessing a file via /proc/*/fd because that's the only accessible name for it on the system 11:24:13 ooh wow, that's useful 11:24:18 Linux just subtracts two from the IP too? 11:24:33 that means that all the testing to see if I can get away with subtracting 2 from the IP is unnecessary 11:24:52 :D 11:25:15 http://www.trilithium.com/johan/2005/08/linux-gate/ 11:26:04 oh, so /that's/ what VDSO stands for 11:26:05 Fortuitously sysenter's also two bytes long. 11:26:06 I'd been wondering 11:26:11 it didn't seem to matter 11:26:16 but I was curious 11:26:53 hmm, it also tells me how to get at auxv 11:27:07 the kernel initializes part of it with 16 random bytes, I need to go and make them deterministic again 11:28:31 it doesn't help that the auxiliary vector is undocumented, and referenced only in the ELF loader 11:28:47 (I've been grepping kernel sources far too much for this project) 11:30:31 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 fizzie: because I need to replace one syscall with five 11:30:58 -!- itidus20 has quit (Quit: Leaving). 11:31:07 replacing one with one is easy, and doesn't require redoing syscall instructions at all 11:32:04 (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 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 (it basically works by anticipating when the child's about to exit, and detaching just in time) 11:34:24 I've already borrowed its trick for replacing fork with sys_clone so that the child can be traced too 11:34:42 (using an argument pattern that's documented, but not available via the clone(2) wrapper) 11:35:38 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 (All this assuming you wish to stay strictly on the userland side.) 11:36:06 I'd write a kernel module if I had to, but I don't think it's necessary 11:36:30 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 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:36:57 or counting pagefaults 11:38:04 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:25 It's not 11:38:45 oh, ouch, you can do that? 11:38:57 I may have to just hope that code doesn't do that 11:39:05 single-stepping every instruction is intolerably slow 11:39:23 besides, it breaks on SMP systems, IIRC, and programs tend to avoid it for that reason 11:44:45 Yay, I introduced another person to the inability to decide on a language that is my life 11:44:53 hmm, what do virtualisation programs do about RDTSC? 11:45:14 Sgeo: pick PHP, that way at least you can be certain you made the wrong choice 11:48:33 ais523_: At least the AMD-V hardware virtualization system lets you do an "instruction intercept" for RDTSC. 11:48:48 And if it's doing full software emulation it can of course do whatever. 11:49:06 yep, I'm hoping to avoid having to do full software emulation 11:51:18 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 for instance, cat almost works, I'm just missing deterministic support for open 11:51:35 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:42 yep 11:51:54 you can singlestep, but not stop on instructions of your choice 11:52:21 hmm, what about setting a breakpoint everywhere that looked like a RDTSC instruction? does setting breakpoints on data do anything? 11:52:39 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 but somehow I think it's implemented a safer way 11:52:52 You might run out of (hardware) breakpoints. 11:53:15 hmm, yes 11:53:19 they'd have to be hardware breakpoints 11:53:23 how many do you get? 11:53:41 I'm trying to do all this stuff without really knowing what I'm doing 11:55:13 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 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 I didn't notice one in the list of syscalls 11:56:23 so I'll just go download gdb source, and look there 11:56:57 I was just about to suggest that. 11:57:23 bleh, apt-get source is hanging, presumably because it's using the wrong proxy 11:57:57 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 "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:45 Hello 11:58:52 I'll download it with Firefox instead 11:59:02 GDB's "software breakpoints" are based on opcode replacement. 11:59:07 I sent off for a new AC adapter for my laptop 11:59:12 opcode replacement definitely won't work 11:59:16 Waited a couple of weeks 11:59:28 And they sent me the wrong thing 11:59:56 -!- itidus20 has joined. 12:00:21 ais523_: You should be writing for a Harvard arch, then you could freely replace opcodes without worrying about messing up data. 12:00:34 fizzie: heh 12:01:02 I can actually tell where the text, rodata and bss segments were in the executable, by looking at mmap 12:01:07 well, /proc/*/maps 12:01:34 I can save on required breakpoints somewhat by only setting them in executable segments 12:01:38 and moving them around on every call to mprotect 12:02:43 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 a high-precision timer for interactive things is exactly the sort of thing I need to stabilise 12:03:27 time is one of the hardest things to get reproducible 12:03:55 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 I think I'll just pretend it's equal to the modification time on read, much simpler that way 12:04:44 ais523_: Unmount, manipulate bits, remount. :p 12:04:59 the fs I'm using isn't backed by an actual device 12:05:02 it's just a tempfs 12:05:15 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 except by going through /proc 12:06:12 (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 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:06:48 yep, that seems simplest 12:07:01 (Or use a FUSE filesystem instead of a tmpfs.) 12:07:04 (I suspect it's partly because setting the ctime should, logically, update the ctime to the current time immediately afterwards) 12:07:22 I'm using a tmpfs because it's there, and it's convenient 12:08:30 and has almost the right semantics 12:09:56 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 fizzie: PTRACE_SYSEMU basically changes the int 0x80 (or sysenter) into a nop 12:10:31 Right. 12:10:38 the kernel doesn't do the syscall, just leaves the registers as they are 12:11:07 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 I haven't needed to do that yet, but suspect I may end up having to at some point 12:11:58 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:04 yep 12:12:16 and because you can emulate SYSEMU with SYSCALL, but not vice versa 12:12:26 especially as the vast majority (well, more than half) of syscalls go through unchanged 12:12:59 hmm, do you know of any way to interrupt a long sleep (like select(NULL, NULL, NULL, 100000);)? 12:13:16 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 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 Sending signals sounds likely to work, that's what usually breaks long-running syscalls. 12:14:24 yep, the solution is likely to involve signals somehow 12:14:31 the man pages say that they're only interrupted by handled signals 12:14:50 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 There's that system call restart mechanism that was described/mentioned in the linux-gate text. 12:14:55 (pun unintentional) 12:15:03 system call restart's used in a different set of cases, I think 12:15:18 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 do you get EINTR, or restart, or something else? 12:18:32 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:51 neither do I 12:18:55 that should be easy to test, at least 12:20:47 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 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 it seems it was using nanosleep to do its sleeping 12:22:50 in particular, -516 does not seem to be -EINTR, which is -4 12:23:14 But it is -512-4. 12:23:22 The 512 sounds like a flag. 12:23:31 aha 12:23:41 that's probably it 12:23:42 (Pure guess.) 12:24:07 let me try it again using a syscall that sleep(1) will ignore 12:24:51 I sent it SIGCHLD, and it returned -516, then received SIGCHLD, ignored it, then called syscall 0 12:25:03 which is restart_syscall 12:25:25 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 So it gets "physically" interrupted in all cases, but auto-restarted if the signal is not handled. 12:25:31 yep 12:26:37 according to signal(7), nanosleep is interrupted and returns EINTR if interrupted by a signal handler 12:26:48 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 The 'strace' command prints the return value -- when I "sleep 1000" + kill -CHLD it -- as "ERESTART_RESTARTBLOCK (To be restarted)" 12:27:20 all I need to do to force an EINTR, then, is to replace the -516 with -4, I bet 12:27:27 and I can get a success return by replacing it with 0 12:27:45 strace is great for making sense of things 12:28:04 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 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 I dread trying to deal with ioctl 12:30:57 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 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 it'll take a while, though 12:32:04 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:22 good catch 12:32:59 Also for some improbable reason there's a set of NFSv3 errors in the same file. 12:33:04 hmm, I should try to track down that suspected kernel bug I saw earlier 12:33:34 #define EJUKEBOX 528 /* Request initiated, but will not complete before timeout */ <- Interestingly named. 12:34:56 same file? 12:35:21 hmm, I should look into the implementation of syscall(2) some time 12:39:01 fizzie: gdb/i386-nat.c seems to do the debug register accesses 12:39:06 it seems that you can only set four hardware break/watchpoints 12:39:23 which is a little annoyingly low 12:39:23 Yes, there's DR0 .. DR3 registers for it. 12:39:51 and DR6 and DR7 are status and control 12:40:25 I've only used three at any given time. 12:42:18 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 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 Another auto-generated book: http://www.barnesandnoble.com/w/nomic-lambert-m-surhone/1025063254?ean=9786130549695&itm=13&usri=nomic 12:52:56 Or... huh? 12:53:08 How does the cover know that it's Suber if it's autogenerated? 12:53:17 But... HIGH QUALITY WIKIPEDIA ARTICLES 12:54:24 http://www.barnesandnoble.com/w/road-rules-lambert-m-surhone/1028378779?ean=9783639996302&itm=1&usri=lambert%2bm%2bsurhone 12:55:02 Um, clicking the cover gives a different picture 13:03:22 You know who has an underappreciated job? 13:03:29 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 @pl fracf = \x y -> (color iters) $ (mandelbrot iters) x y 16:18:15 fracf = (color iters .) . mandelbrot iters 16:23:09 Hello! 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:55:46 Hello! 18:56:12 I know own an inflatable toy electric guitar 18:56:38 How can one know own? 18:56:52 That was a slip of the finger. 18:56:58 I meant "now own" 18:57:07 In fact, s/know/now/ 18:57:43 Is that how it's done? 18:57:58 * itidus20 . o O ( "now" ++ "here" ) 18:59:57 Taneb: Yuh. 19:00:04 Oh good 19:10:50 -!- olsner has joined. 19:40:55 -!- derrik has left. 20:28:40 I've got TVTropes out of my top six websites on chrome on this computer! 20:29:36 yay 20:30:22 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 I've had an idea for an esoteric programming language 20:47:34 Gonna make a page in user namespace 20:47:48 OK. What idea is that? 20:48:16 You know Binary Combinatory Logic and Binary Tag System and things? 20:48:28 The binary ones 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 Basically, it's 2^n of those 20:50:42 It's a variety pack of binary turing tarpits with no IO 20:51:03 I'm going to call it... BINARY VARIETY PACK 21:13:11 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 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 I was mostly playing Red Alert back then as far as strategy games go 22:04:50 -!- GuestIceKovu has changed nick to Slereah. 22:04:54 And AGE OF EMPIRE 22:15:24 -!- Nisstyre has joined. 22:19:41 Slereah: Yes, in the 1990s they could only afford a single Empire. 22:20:37 Well, obviously, the only empire was MINE 22:20:41 Because I WIN 22:25:14 i recall that game from some old popular science magazine adverts 22:25:18 I never saw it with my own eyes 22:25:25 and now I've gotten intrigued as to what the rules may have been 22:25:33 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.