00:01:35 -!- pikhq has joined. 00:04:36 -!- pikhq_ has quit (Ping timeout: 260 seconds). 00:40:32 -!- kallisti has joined. 00:40:37 where is the log that shows up at boot? 00:51:12 wl isn't working...... 00:55:39 -!- kallisti has quit (Changing host). 00:55:40 -!- kallisti has joined. 00:56:38 -!- kallisti has quit (Quit: leaving). 00:59:21 -!- derdon has quit (Remote host closed the connection). 01:08:04 -!- cheater has quit (Read error: Operation timed out). 01:14:11 -!- azaq23 has quit (Ping timeout: 244 seconds). 01:22:15 -!- cheater has joined. 01:23:37 -!- azaq23 has joined. 01:36:16 -!- azaq23 has quit (Quit: Leaving.). 01:50:37 -!- kallisti has joined. 01:50:38 ....so 01:50:42 why isn't there a laptop 01:50:51 with a touchpad keyboard? 01:50:53 so that 01:51:10 the OS can provide an arbitrary virtual interface? 01:51:32 it would be like a giant Nintendo DS. 01:51:38 Cost? 01:51:46 OS support being shaky? 01:51:56 It'd be a second screen, but. 01:51:56 I suppose it's not practical yet. 01:52:00 It'd need to be treated way differently 01:52:03 but damn it would be cool. 01:52:06 Like, you wanna use it on Linux? 01:52:10 Hope GNOME supports it 01:52:11 Go buy a goddamn iPad. 01:52:11 sure. 01:52:16 no ipad is different 01:52:22 Plus, lack of tactile sensation. 01:52:25 I'd want a touchscreen, and touchscreen keyboard. NEEDS TWO PARTS 01:52:29 Would make it harder to use, esp for touch typers. 01:52:44 buy _two_ ipads. 01:52:50 so like, when I switch over to insert-IDE it throws me a keyboard customized for the programming language. 01:52:56 with any relevant unicode symbols. 01:53:07 Actually, Acer made a cheap gimmick exactly like that 01:53:08 kallisti, that sounds... 01:53:12 Kinda hard to use. 01:53:21 Remebering a new layout because you switched programs? 01:53:30 Lack of tactile sentation, again, doesn't help. 01:53:38 that's true. 01:53:55 @google acer iconia 01:53:56 Oh, many people won't be hurt-- they hunt and peck anyways. 01:53:59 get on that, rearchers 01:53:59 http://www.acer.com/iconia/ 01:53:59 Title: Acer AspireOne Happyt 01:54:03 But, people already familiar with computers? 01:54:04 touchscreen interfaces with tactile sensation. 01:54:04 Yeah, uh 01:55:21 I think it would be a step in the right direction. with a single touchscreen it's difficult to cram both control and display elements into the same space. 01:55:51 with two you would have a display screen with some control elements like an ipad or whatever, and then a lower screen specifically for control. or however else you'd want to set it up. 01:55:51 (The emulator people would appreciate it) 01:56:50 basically I want the ASCII era of concrete syntax to go away. 01:57:33 where things like, say, improved record semantics, gets bogged down by a sudden lack of conveniently placed keys on a standard keyboard. 01:58:26 That needs to become standard first. 01:58:44 Otherwise, you make it very troublesome for people who have standard keyboards, can't afford touchpad ones, or just prefer standard ones. 01:58:51 After all. 01:58:52 sure, that's a given. 01:59:02 A touchpad keyboard would need pressure detection or something. 01:59:08 Or else, you can't rest your fingers on it. 01:59:14 Plus, lots of things of that nature. 01:59:17 What is the warranty on a touchpad keyboard 01:59:21 Ten months? 01:59:43 the screen should just zap you whenever you're on top of a key 01:59:45 to let you know it's there. 01:59:47 gives you a feel for it. 02:00:02 I prefer physical keyboard with ASCII and that stuff. I like the original IBM PC keyboard with the function keys on the left. The only problem with that one is no indicator LEDs. 02:00:13 is this iconia an actual thing you can buy 02:00:14 well, if you wanted to limit it to JUST keyboard-style stuff 02:00:27 or in theory could ever buy 02:00:32 you could have a fixed grid of raised buttons, but with some sort of display mechanism to change the keys? I don't even know. 02:00:46 http://www.artlebedev.com/everything/optimus/ 02:01:30 only $2,068 02:01:44 48x48 pixel color OLED screen under every key 02:01:57 I think you don't need to display on every key. That would waste energy and program size a lot it seems. 02:02:14 yeah, clear keys above a single commodity display makes a lot more sense 02:02:37 but anyway, why are we looking at the keyboard? 02:02:49 Who needs keycaps, anyways? 02:02:58 kmc: I suppose you are correct about that. But still I don't think you need a display for all keys even if it is the same one 02:03:05 yeah, i don't either 02:03:26 We need HOLOGRAPHIC KEYCAPS 02:04:01 i guess some people like the no-label keyboards because it forces them to learn to touch type 02:04:33 it mostly seems like a stupid way to show off 02:04:51 the copy on the Das Keyboard website certainly gives that impression 02:05:11 I've heard the Das Keyboards are actually rather high-quality keyboards, though... 02:05:20 Not really 02:05:20 So, even disregarding caps/not-caps, might be worth getting. 02:05:21 yeah 02:05:27 they have a version with labels 02:05:46 I also heard when they started out they were shitty dome keyboards, which is... Stupid. 02:06:04 $100 premium for no key labels? Screw that. 02:06:09 I suppose the one without labels might also be useful in case you need to attach your own labels to all of the keys for any reason 02:06:33 $100 to show everyone that you're a L33T H5X0R? 02:06:37 seems like a bargain 02:06:51 More efficient uses of that $100, though. 02:06:58 Although even if there is labels, you can still put other labels on top, but they would need to be opaque. Without labels already on there, you can also use transparent labels, or just direct marking on the keys 02:06:59 They sell a set of four differently-coloured keys for you to replace the WASD cluster 02:07:12 * pikhq suggests a cheap monitor which always has that Matrix-effect screensaver going) 02:07:30 Jafet: What, cause WASD is hard to find? 02:07:54 Come on, the keycaps are blank! 02:08:10 Why do you even need to find WASD that easily; the F and J are the keys you should find easily they will have raised dots to find them easily. 02:08:13 And F/J still have the indent to make them easy to find. 02:08:47 zzo38: PC games use WASD as directional keys. 02:08:59 Well, the strange thing is that they use clicking Cherry switches, so gamers wouldn't buy them anyway. I don't know whether Das has any idea what kind of niche market it wants to sell to. 02:09:06 pikhq: It depend on the game. Some use arrow keys. 02:09:19 -!- amca has joined. 02:09:23 zzo38: Not if you want to mouse and use any other keys. :) 02:09:52 they want to sell to office workers whose coping strategy is to pretend they are leet ninja rockstars 02:10:08 Hmm, that could be a significant market. 02:10:11 that and people who just want a keyboard with serious tactile response 02:10:21 there are a few others in that category 02:10:23 Jafet: How do Cherry switches compare with e.g. a Model M? 02:10:26 I have written many games for the PC, and none of them use WASD for directional keys; usually the arrow keys are used although sometimes the number pad and/or HJKL also work. 02:10:49 zzo38: It's basically the expected input scheme for first-person games, though. 02:11:13 The clicking ones are meant to evoke the Model M, but they are not buckling-spring switches, so they don't have anywhere near the durability and tactile response 02:11:42 pikhq: Well, I don't play or make first-person games; I suppose you might want to find WASD in case of first-person games possibly; but maybe you can use a joystick too? 02:12:07 unicomp makes keyboards similar to the Model M 02:12:09 Buckling-spring switches create the sound, tactile feedback and electrical signal with the same spring, so they never register incorrectly 02:12:15 some with a pointing stick too 02:12:31 Does anyone make keyboard similar to the original IBM PC keyboard with function keys on the left? 02:12:34 I thought Unicomp took over the IBM keyboard division 02:12:49 So they're rebranded Model M 02:13:00 i wonder which switch technology is used in the Kinesis Advantage 02:13:12 it's pretty loud and has decent feedback 02:13:32 If they use Cherry switches, you can be sure this fact will be advertised somewhere 02:13:42 The switches seem to be a new status symbol thingy 02:15:17 i don't think Kinesis has quite caught on to the hacker rockstar ninja aesthetic 02:15:29 their keyboards and website look like they were designed in the mid-90's 02:15:47 also the keyboards are expensive as hell, for probably no good reason 02:16:01 kmc: Labor. 02:16:07 They're hand-made. 02:16:22 i mean, define "hand-made" 02:16:29 they're not whittled by hand from old-growth plastic trees 02:16:44 I have also seen hacker keyboards, which are very good for UNIX; but lack a number pad or any way to send those codes. (I think they should make the keyboard with one key that allows you to send any code you enter) 02:16:58 how much does a kinesis factory worker make? 02:17:39 zzo38: What, the Happy Hacking? Those things are... Meh. 02:18:33 but it has "hacking" in the name 02:19:15 They're more-or-less laptop-layout boards. 02:19:20 With dome switches. 02:19:26 i use my happy hacking keyboard to comment on hacker news about the hacker lifestyle 02:19:29 For too-much. 02:20:08 i also have a standalone version of the thinkpad keyboard with trackpoint 02:20:10 that's pretty good 02:20:27 i wonder if the classic thinkpad keyboard will still exist in 5 years 02:21:05 of the 5 current models listed as "ThinkPad X series" on Lenovo's website, four have chiclet keyboards 02:21:09 Does the classic thinkpad still exist now? 02:21:23 i think so, yes 02:21:30 but the "ThinkPad" brand name doesn't mean anything 02:21:43 it just means lenovo wants to sell that model of laptop / netbook / android tablet to businesses 02:22:28 otoh, if the branding is meaningless then maybe the IdeaPads are worth looking at 02:23:15 ... Chiclet keyboards? 02:23:17 Yipe! 02:24:26 i'm also not sure the legendary ThinkPad quality isn't just nerd hipsterism 02:24:27 why you not like chiclets? 02:24:39 in 6 years of owning thinkpads I've had a lot of shit break 02:24:54 and a few bad interactions with the repair people, as well as some good ones 02:24:58 quintopia: Chiclet keyboards are about as shitty as you can get without resorting to a membrane keyboard. 02:25:24 aren't those independent properties 02:25:34 pikhq: how so 02:25:53 i think today "chiclet" just means there are gaps between the keys 02:26:16 kmc: No, "chiclet" refers to a particular keyboard switch type... 02:26:20 it's not meant to imply the terrible switch technology of the ZX Spectrum 02:27:08 Like on remote controls, calculators, and the ZX Spectrum. 02:27:42 Also, 6 years? That's all after Lenovo bought the brand. :) 02:27:51 hipster 02:28:14 Not that I could judge the quality before that, as I never owned an IBM ThinkPad. 02:28:59 the first one I owned was the X41 02:29:08 it was IBM branded and designed by IBM 02:29:17 even if Lenovo owned the company by that point 02:29:28 also the repair centers are *still* IBM 02:29:51 to open a ticket you fill out a form on an IBM website that was clearly derived from a 50 year old mainframe app 02:30:22 so I'm trying to manually configure my wlan interface now. 02:30:31 and it hangs on DHCPDISCOVER 02:30:40 kmc: Probably still is a 50 year old mainframe app. 02:30:47 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 02:30:47 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7 02:30:47 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11 02:30:47 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11 02:30:47 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12 02:30:49 yeah 02:30:49 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12 02:30:52 No DHCPOFFERS received. 02:30:54 No working leases in persistent database - sleeping. 02:31:37 ..what the hell is going on. 02:31:39 i think it's the same form you use to request repairs on your $50,000,000 zSeries mainframe installation 02:32:02 assuming you can't afford the 40U rackmount on-call service technician 02:33:14 http://en.wikipedia.org/wiki/Chiclet_keyboard "The term has also been used more recently to describe several popular low-profile, low-travel keyboards. These keyboards have small, flat, squarish keys that are separated from each other by some space on the baseplate they protrude from - a feature common to the old chiclet keyboards. They are not chiclets in the earlier sense, however, as they do not use a rubber membrane or directly moulde 02:33:14 d hard key tops as the keys themselves and instead use a more modern technology." 02:33:29 you see this usage a lot in current reporting on new models of laptop etc 02:34:04 when i search for the term i get a lot of that 02:34:10 yeah i thought that is what you meant 02:36:21 it is what i meant 02:38:43 also the thinkpad power adapters frequently break at the plug that goes into the computer 02:38:55 -!- kallisti has quit (Quit: Lost terminal). 02:39:15 this was true in the IBM days, and with the first Lenovo models, and they've recently taken steps to fix it 02:44:11 kmc: Confusing. The original sense of chiclet keyboards are still around. 02:45:42 yes 02:46:29 apple and thinkpad laptops are pretty similar 02:46:36 they both have pretty good build quality 02:46:43 they both have a dedicated fanbase who will ignore flaws 02:47:24 and they both appeal to a specific aesthetic 02:47:36 i'll admit that part of my reason for buying thinkpads is aesthetics and peer pressure 02:47:40 chiclet keyboard is worst keyboard 02:47:52 not much in the way of choice with laptops these days though 02:48:20 what specifically don't you like about chiclet keyboards (in the new sense) 02:48:51 key travel, key shape, key spacing, key switches 02:48:54 :) 02:49:05 compared to other laptop keyboards? 02:49:12 compared to any keyboards 02:49:19 i realize that travel is low on all laptops these days 02:49:26 but even so i prefer the tapered keys 02:49:31 i like them. they are slim, cheap, easily replaced, and the switches never cause me trouble 02:49:36 my fingers have a tendency to 'hang up' on the edge of the key caps 02:49:41 i like low travel 02:49:47 but even disregarding that, they just don't feel very good 02:49:57 as for switches, it's not that they are necessarily troublesome 02:50:08 it's that i have very picky taste in keyswitches these days :P 02:50:10 i think the thinkpad chiclet keys are still tapered a bit 02:50:22 you ain't finding a laptop with topres though so *shrug* 02:50:25 and i don't know what keyswitch they use 02:50:37 laptops are generally scissor switches 02:50:39 but it's not clear why a chiclet layout would require them to change that 02:50:49 yeah 02:50:54 i forgot to list one other thing i dislike about them 02:50:58 faddiness 02:51:27 the thinkpad keys i've seen have a keycap attached to a scissor, above a little plastic nipple thing which touches the circuit board 02:52:04 -!- augur has joined. 02:52:10 presumably that's normal for scissor switches 02:52:19 i never pry at laptop keys, i don't want to break them 02:52:25 "ATTENTION: Please note that this keyboard has black labeling on dark gray plastic keycaps. In low lit environments, this keyboard will appear to be blank! This keyboard is not available with higher contrast keycaps; for better visibility, please consider a white keyboard." 02:52:26 lulz 02:52:33 so i haven't been under the keycaps much 02:52:43 thatsracist.gif 02:52:52 oh, realforce? 02:52:56 yeah, it is pretty low contrast 02:53:02 looks kind of sexy 02:53:02 what's the point of that 02:53:16 appearance is really the only point 02:53:22 but i prefer blank caps because i type multiple layouts 02:53:28 and i don't really like typing on the wrong letters 02:53:43 i prefer labeled keys because i type multiple layouts ;) 02:54:04 the labels don't do you any good if they don't represent the key you are pressing :P 02:54:07 kmc: Not helpful if you type multiple layouts on the same board. 02:54:21 i'm losing some of my qwerty skill, it's been a year since i had to type it daily 02:54:25 i usually type dvorak without looking at the keys 02:54:29 but i can still get over 80 wpm 02:54:32 but sometimes i have to type a password or something in qwerty, without echo 02:54:34 Which I don't, because fuck kana layouts. 02:54:39 it used to be even with my dvorak speed though 02:54:43 and then the labels help 02:54:50 yeah 02:54:50 i can still touch type qwerty but not with great accuracy 02:54:58 i know what you mean on that count 02:55:10 touch typing is easy but single letters get hard after you're past that phase for awhile 02:55:16 yeah 02:55:22 actually i pretty much can't touch-type qwerty on the kinesis 02:55:27 i've started pairing various letters in my head though 02:55:32 because i've never done it regularly 02:55:32 i/c 02:55:33 イエユイノボメノレンミリヨジュヨゴハサテカナエクタマエ 02:55:36 ... 02:55:38 v/. 02:55:39 etc. 02:55:41 What 02:55:47 * pikhq whats 02:55:50 when i'm using dvorak and i copy/paste things i actually think ctrl+i 02:55:52 lol 02:56:02 yeah i do that, but only for some keys 02:56:24 the hardest key is a :V 02:56:26 i always get it mixed up 02:56:38 -!- sebbu2 has joined. 02:56:39 -!- sebbu2 has quit (Changing host). 02:56:39 -!- sebbu2 has joined. 02:57:05 Uh, it remains in the same place. 02:57:21 :trollface: 02:58:18 -!- Jafet has quit (Quit: Leaving.). 03:00:42 -!- sebbu has quit (Ping timeout: 276 seconds). 03:01:41 -!- Friendship has changed nick to Gregor. 03:01:52 Arrrrrrrrrgh 03:01:52 Gregor: You have 1 new message. '/msg lambdabot @messages' to read it. 03:01:58 @messages 03:01:58 elliott said 3d 8h 34m 4s ago: "ℒ was originally described to generalize the question raised by Befunge/index.php." not quite true 03:02:04 Accidentally denicked. 03:02:08 -!- Gregor has changed nick to Friendship. 03:02:14 You never saw that. 03:02:23 oh good, we're friends again <3 03:02:38 I am friends with all! I am the abstract concept of friendship! 03:03:36 So anyway, I got an email from somebody who apparently runs the blog championofbirds.com . 03:03:47 He says he wants to interview me for his blog because he found my hats site or something? 03:03:54 In short, "Guh?" 03:04:36 lol 03:04:40 that is ... interesting 03:04:47 did you ask him what kind of hats birds like? 03:12:56 -!- amca has quit (Quit: Farewell). 03:14:35 myndzi: I haven't responded, it was an email. 03:14:38 I'm too busy being baffled. 03:14:47 Does one accept this kind of invitation? 03:14:49 It's so weird. 03:15:32 it's a perfect opportunity for trolling 03:15:37 do you have a site about hats? 03:15:44 Respond by telephone. 03:15:47 codu.org/hats 03:15:50 he could be just spamming you 03:15:58 And use a payphone. 03:16:10 myndzi: To what end? 03:16:24 haha nice 03:16:31 Friendship: lulz, obviously 03:17:00 i honestly have no idea what he wants to interview you about though so i don't have any particular ideas heh 03:17:13 this is the kind of thing a pal of mine from dalnet used to turn into comedy gold all the time 03:17:20 except in his case it was over irc 03:18:04 sacring the police , that lobster would snap is claw aroung , KLAP !!! KLAP !!! V..V 03:18:11 there's one gem from such a conversation, hehe 03:18:23 The problem is that since he found me via my web site, my real name is known and hence my reputation is risked. 03:18:27 sacre rouge 03:18:34 what 03:18:53 if some guy i didn't even know wanted to interview me i wouldn't be terribly worried if he was like omg i tried to interview myndzi but he trolled me! 03:18:56 :P 03:18:59 on the other hand i understand 03:19:08 you may as well do it, could be interesting 03:19:14 and if it sucks you can always switch to trolling midway :> 03:19:15 If I loon it up and then that becomes the top search result for "gregor richards", yikes. 03:19:23 haha 03:19:38 then people will think you have a sense of humor? 03:19:38 :P 03:19:48 ur mather is SNACK LORD! 03:20:05 I think I'll just send him back this: http://codu.org/hats/NewTopHat-med.jpg 03:20:09 Say "That's my whole interview." 03:20:13 "That's the answer to every question." 03:20:52 i forgot about snack lord, that's one of my favorites 03:23:33 In my idea of new programming language I have written part of specification already. There are similarity to Haskell. But, some of my ideas are: One type of kind # might be (unsafe "i8"). And all monomorphic types of kind ? (even if they have polymorphic components) are automatically instances of (\x -> Prelude.typeOf :: x -> Prelude.Type) although it is not implied so you need to mention it explicitly if you use it. 03:24:04 (The other thing, various things are put into the prelude which isn't what Haskell does) 03:24:49 I don't know, if this seem at all sensible to you or not. 03:28:28 Oh, looka that, he's actually one of five people who runs that site >_> <_< 03:28:42 That lends it 1/5th more credence. 03:32:45 what reputation, gregor. what reputation. 03:33:15 ... :( 03:33:40 this is your first chance to MAKE A REPUTATION 03:33:46 I've made quite a name for myself in certain circles which produce content not eligible for minors or distributable in most countries. 03:33:46 and also to get more hats votes 03:34:56 i can see you wouldn't want to tarnish that, then 03:36:35 wait... 03:36:46 * oerjan suddenly realizes he doesn't know where those hats have been 03:36:59 Hooray, hat fetish! 03:39:39 you can leave your hat on 03:45:47 -!- oerjan has quit (Quit: Good night). 04:07:11 -!- Jafet has joined. 04:13:30 ...anyone? UPDATE 04:13:43 meh 04:13:50 hi sgeo 04:14:02 monqy, update 04:14:09 oh no 04:14:11 what have I done 04:14:16 I was just saying hello ;_; 04:14:32 hi monqy 04:14:38 hi 04:20:10 -!- PiRSquared17 has changed nick to Insert_non-forma. 04:22:10 -!- Friendship has set topic: It Is The Absolute Verifiable Truth & Proven Fact That Your Belly-Button Signature Ties To Viviparous Mama. | 4 corner harmonic 24 hour time cube | http://codu.org/logs/_esoteric/ | http://esolangs.org/wiki/ has moved servers!. 04:25:52 My Little Stallman: Foot Dirt is Magic 04:31:38 -!- Insert_non-forma has changed nick to PiRSquared. 04:34:33 -!- MoALTz_ has quit (Read error: Connection timed out). 04:37:02 -!- MoALTz_ has joined. 05:16:50 -!- TeruFSX has quit (Read error: Connection reset by peer). 05:22:48 -!- TeruFSX has joined. 05:24:04 -!- PiRSquared has changed nick to PiRSquaredBai. 05:36:22 Foot dirt may lead to open sores. 05:47:53 -!- MoALTz_ has quit (Read error: Connection timed out). 05:54:43 -!- cswords_ has quit (Quit: Leaving). 05:55:07 -!- cswords has joined. 07:06:01 -!- cheater has quit (Read error: No route to host). 07:06:52 -!- cheater has joined. 07:19:24 -!- pikhq_ has joined. 07:19:29 -!- pikhq has quit (Ping timeout: 252 seconds). 07:27:56 -!- TeruFSX_ has joined. 07:30:51 -!- TeruFSX has quit (Ping timeout: 260 seconds). 07:39:18 Jafet: open source and foot dirt? reminds me of richard stallman 07:44:23 -!- pikhq has joined. 07:44:25 -!- pikhq_ has quit (Ping timeout: 240 seconds). 07:54:25 -!- MoALTz has joined. 09:01:26 -!- zzo38 has quit (Quit: MAYBE DO NOT COME FROM CHOICE). 09:52:53 So. My javascript interpreter/debugger is finished. 09:53:06 I can pause the program at any point and inspect memory at will. 10:15:11 -!- Vorpal has joined. 11:01:30 -!- ais523 has joined. 11:46:14 -!- derdon has joined. 11:55:21 -!- monqy has quit (Quit: hello). 12:26:50 Would brainfuck be turing complete if we'd have to know at compile time for each loop in which memory cell we currently are? 12:28:37 -!- cswords_ has joined. 12:29:36 In beam I have the problem that I only figured a way out how to write loops which don't bother if the beam is even or odd by using the beam != store instructions which requires me to know at time of writing the program 12:29:40 what the current cell address is. 12:30:35 the other loops would require to know whether the cell's value is even or odd 12:30:50 but I can decide even/odd at runtime somehow. 12:31:20 but that'd be tediously complex :( 12:31:50 -!- cswords has quit (Ping timeout: 260 seconds). 12:34:51 -!- derdon has quit (Remote host closed the connection). 12:45:08 mRoman: I think no, because it couldn't access infinite memory 12:45:38 why not just use only even numbers? 12:45:47 BF is still complete if + and - add and subtract 2 rather than 1 12:46:01 Speaking of Beam, is the comparison in u/n modulo 256 or not? I.e. if the store is >= 256, is it always false? 12:46:03 still TC, that is 12:47:25 ais523: With unbounded tape cells, I wouldn't bet on that. I mean, it wouldn't surprise me if the TC three-cell brainfuck construction always knew in which cell it is. 12:47:59 fizzie: Yes. 12:48:12 fizzie: oh, I was thinking about the usual mod-256 version 12:48:28 bignum BF I somehow have mentally filed as a different language 12:48:29 actually 12:48:32 I blame it on too much BF Joust 12:48:34 if store >= 256 12:48:41 then beam != store is always true 12:49:00 but 12:49:04 you can switch them. 12:49:28 Switch what? 12:49:31 somehow. 12:49:48 you have a beam = (store % 256); instruction 12:49:53 and a store = beam; instruction 12:50:30 you'd need a temporary location to not lose the beam, though. 12:51:07 More imporantly, a temporary location not to lose the store, and there's no other unboundedly large place, I suppose. 12:52:09 You can't save the store. 12:52:15 memory cells are limited to 8bit 12:52:23 Yes, I know. 12:53:07 (which means we can only save (store % 256)) 12:53:07 or 12:53:17 you'd have to spread store >= 256 to different memory cells somehow. 12:54:11 But yeah. 12:54:22 Basically it's limited to 256 memory cells which are easily accessible. 13:02:23 Using only 0 and 1 should be possible 13:02:36 and it should also be possible to encode data in the control flow 13:07:55 Like 13:08:01 v-- < 13:08:02 >+'n:>>>>^ >:>>>+: 13:08:05 eh 13:08:25 http://codepad.org/HQoJOyhh <- which produces 101 13:08:56 I have a rather non-optimal but I-think-correct translation from brainfuck to Beam here. 13:09:23 oh. 13:09:25 It has an unbounded tape of 8-bit values. 13:09:25 Cool 13:09:53 It looks like this: http://sprunge.us/UORC 13:12:23 The 'XXX' at ^6 can be just an unconditional jump back to [ for easiness. 13:12:32 `(`) are you sure? 13:12:40 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: (`): not found 13:12:48 @decrements to zero 13:12:48 Unknown command, try @list 13:13:14 `(`) with an initial store value of 1 13:13:15 ie 13:13:17 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: (`): not found 13:13:20 '`(`) 13:13:37 ok, it decrements to zero 13:13:44 but control flow is redirected to left. 13:14:03 :'`(`) prints 00 13:14:21 mRoman: Initial store value is always even when that is hit. 13:14:21 :`(`) prints 0 13:14:36 mRoman: It's one of 2, 4, 6, ... always. 13:14:39 ok. 13:15:02 (Since it's at the marker cell of 3, 5, 7, ...) 13:18:38 I'll see about writing a program that performs that transformation, and try it on some loopy brainfuck code, but maybe not while I'm technically supposed to do work-stuff. 13:22:26 -!- PiRSquaredBai has changed nick to PiRSquaredHai. 13:29:13 -!- sebbu2 has changed nick to sebbu. 14:04:00 Well, it does http://sprunge.us/COCL => http://sprunge.us/VOdH correctly; code at http://sprunge.us/SePY 14:12:33 -!- ais523 has quit (Ping timeout: 260 seconds). 14:30:52 mRoman: what happens, in beam, when the control flow reaches a border ? The program exits ? 14:31:12 (i'm writing a little interpreter in python for the fun) 14:34:15 http://p.zem.fi/bf2beam.pl with a bit more formatting and the construction "documented"; I also pointed a link to that from the Wiki just for giggles, since it managed the hello world. 14:43:37 -!- cswords__ has joined. 14:47:11 -!- cswords_ has quit (Ping timeout: 260 seconds). 14:53:45 -!- MoALTz has quit (Ping timeout: 244 seconds). 14:55:39 -!- MoALTz has joined. 15:13:59 chickenz: Yes. 15:14:31 and you have to pay attention to spaces 15:14:48 (if . is a space) 15:15:05 v: 15:15:06 . 15:15:08 >^ 15:15:14 that also terminat.s 15:15:18 *terminates 15:15:25 because the second line is only 1 character long. 15:15:39 you have to place a nop there 15:15:40 like 15:15:41 v: 15:15:42 .. 15:15:44 >^ 15:15:49 (. are spaces) 15:18:31 If the brainfuck program should print Hello, hello, world. 15:18:35 Then it works \o/ 15:18:36 | 15:18:36 /< 15:18:38 ok, my interpreter already works like that 15:18:40 thanks 15:21:31 Yeah, I !bf_txtgen'd it. (Though the Perl script strips doesn't add enough spaces at the end of lines like that, will have to fix it. (Doesn't matter in the example, but would probably break nested loops. (Though those might be already broken. (I was sort-of assuming it'd be all Befungey and fill the universe with spaces.)))) 15:21:49 (Aways a while.) 15:23:43 Hm. 15:23:54 seems your perl script generates not enough spaces sometimes. 15:26:01 ui. 15:26:25 http://codepad.org/ZfxIyvc9 15:26:31 Thats the output translation of 15:26:45 ++++>++>+>+<[>[-<++++>]<<]> 15:27:02 It get's stuck in '>'p? 15:27:30 Yes, that's what I said. 15:27:52 I fixed the spaces. 15:29:29 Beam := 0 15:29:42 as it enters '>'p? 15:29:53 which then increments store all the time 15:30:42 until it exceeds the 1024 memory cells in the javascript implementation. 15:32:45 Mhm. It's supposed to hit the flagged cell that was left by the `p+P' bit. 15:34:07 I'll take a look when not in a bus with a silly phone. 15:34:18 That should search a zero cell, right? 15:35:13 eh 15:35:15 a non-zero 15:35:32 ? only lets you pass with beam != 0 15:36:20 Yes, that's the point. All the even cells it tests should be 0, except the one that was +'d before the (`). 15:36:41 After hitting that one it should go through the ?. 15:37:33 Anyway, my bus stop is like right now. -> 15:37:45 In the mean time, I'll implement break points :D 15:46:44 hehe 15:46:58 Ok. I have a breakpoint at (y,x) = (1,39) 15:47:03 which is the v 15:47:13 at which point Beam := 0 and Store := 0 15:47:24 and Memory[0] = 1; Memory[1] = 0; 15:48:11 at breakpoint (y,x) = (4,42) 15:48:18 (which is the > in '>'p?) 15:48:33 Beam := 0 Store := 1 Memory[0] := 1 Memory[1] := 0 15:49:00 Memory[0] being nonzero is just plain wrong. I suppose it has messeded up. 15:50:05 hu 15:50:06 wtf. 15:51:24 ic. 15:52:39 Oh, if it walks past the left edge of the tape in the brainfuck code, all bets are off. 15:53:18 Like the unbalanced [>[-<++++>]<<] will, presumably. 15:54:19 -!- calamari has joined. 15:54:52 oh ok. 15:54:54 -!- azaq23 has joined. 15:55:01 I haven't thought of that 15:55:08 -!- azaq23 has quit (Max SendQ exceeded). 15:56:32 -!- azaq23 has joined. 15:57:17 ok 15:57:29 ++++[>+++++[>+++++<-]<-]>>- works 15:57:35 (non-wrapping bfconstant 99) 16:01:55 -!- Phantom_Hoover has joined. 16:09:14 Nested loops work if they are balanced 16:10:02 at least those I tested from the brainfuck constants. 16:13:10 And the truth-machine translated from brainfuck works :) 16:14:15 There shouldn't be anything special about unbalanced loops either, as long as they don't try to go < past the left edge. 16:14:19 ^show rev 16:14:20 >,[>,]<[.<] 16:14:32 That, translated, with stdin "hello" produced "olleh" in the Javascript interp. 16:16:12 -!- calamari has quit (Quit: Leaving). 16:17:55 Thank you very much for that translation script. 16:24:01 Added the missing spaces. (Now there's a bit more than exactly the necessary amount, but better safe than sorry.) 16:25:18 (Dinnertime.) 16:31:35 -!- mRoman has changed nick to mroman. 16:31:38 (sports time) 16:49:22 -!- Taneb has joined. 16:53:25 -!- PiRSquaredHai has changed nick to PiRSquared17. 16:53:50 Hello! 17:03:35 oh no, /r/circlejerk is being closed 17:03:44 it was so close to becoming the singularity 17:08:47 -!- ais523 has joined. 17:10:23 -!- MDude has joined. 17:10:59 -!- elliott has joined. 17:11:23 ais523: what is it with people and trying to prove TwoDucks is computable? 17:11:37 people are trying to prove TwoDucks computable? 17:11:48 http://esolangs.org/wiki/Talk:TwoDucks a new comment posted just today 17:13:21 oh no, ESR's trying to interfere in politics 17:13:38 when isn't he? 17:13:51 -!- tzxn3 has joined. 17:14:02 ESR...? 17:14:14 Eric S. Raymond 17:14:19 El Stallman Richard? 17:14:19 Oh 17:14:31 if you don't already know, you probably don't want to 17:14:39 elliott: the problem is, I'm not convinced this will end well even if he argues a point of view I agree with, which seems possible (although far from certain) 17:15:11 Oh, I know who he is 17:15:14 Ish 17:15:22 ais523: The likelihood of you and esr agreeing on a political point is about 0 unless I've grossly misjudged your political stances. 17:15:26 Well, I've skimmed his wikipedia article at least once in the past 17:15:59 elliott: well, he's arguing something to do with regulation of the Internet 17:16:07 which is a topic that I think there's a chance greater than 0 we agree on 17:16:14 but I don't know his actual point of view on the issue, so I'm not sure 17:16:22 oh, fair enough then 17:18:07 It's not like ESR's wrong on everything, he's just right on some things and then takes it too far. 17:18:13 Waaaay too far. 17:18:28 Phantom_Hoover: that's a good description 17:19:28 Phantom_Hoover: Gun-toting islamophobic libertarianism doesn't really start at being right. 17:19:38 It might accidentally cross into the realms of rightness by mistake once in a while. 17:20:08 Wait, I think he's racist too. I lost track trying to forget his political posts. 17:20:39 -!- augur has quit (Remote host closed the connection). 17:22:27 I think I'll start saying that I use GNU/Windows, just to confuse people 17:23:10 Nah, that isn't as funny as it seemed when it was on the inside of my head 17:23:15 And to be wrong, of course. 17:24:47 Taneb: you mean GNU/NT 17:24:51 you have to put a kernel after the slash 17:25:02 Hmm, yes 17:25:17 and you probably /don't/ do that, because I don't think NT can load GNU tools without several layers in between 17:25:38 GNU/GNU, the better name for GNU/Hurd. 17:25:40 it's not like you can use bash as your init process, like you can in Linux (and occasionally have to, if your system gets borked) 17:25:43 After all, Hurd is the GNU kernel. 17:26:30 fizzie: They like to just call it "GNU" y'know X-D 17:26:37 elliott, you should totally write a toolset thing and call it Elliott. 17:26:37 right, it's just called "GNU" 17:27:05 are you sure? 17:27:06 GNU/GNU/GNU. 17:27:08 Debian calls it GNU/Hurd 17:27:18 elliott: Debian isn't the "they" to whom I was referring. 17:27:20 that's because Debain have to make sense 17:27:24 *Debian 17:27:30 in order to be taken seriously 17:27:41 Debian is serious distro 17:27:50 Yeah, but I'm pretty sure Debian agree with GNU on 90% of things. 17:27:51 Frrlz 17:27:52 almost as serious as Red Hat 17:28:06 elliott: right, but wow is the other 10% hotly argued 17:28:24 GNU hate them for having a non-free repo that's compatible with the distro, even though it technically isn't part of it 17:28:52 They still administrate and maintain it :P 17:29:34 Idonno, it took me more work than it ought to have to get rid of those shitty nouveau drivers and install NVidia's binary ones :) 17:30:08 elliott: oh, crazy and stupid situation at work 17:30:25 the project we set the GPU students can only be worked on from home if you happen to have a recentish NVidia GPU in your own computer 17:30:32 even if you remote in 17:31:02 hmm, why? 17:31:27 "Every time I tarball, my Makefile becomes corrupt and I think this is why my program isn't working when I submit. What do?" // 99-to-1 this guy is typing tar zcf Makefile 17:31:55 Friendship: Not like tar has the most intuitive of user interfaces. 17:32:10 Probably they're listing the tarfile last in analogy with mv, cp and so on 17:32:13 elliott: We give them the exact command to run :) 17:32:24 Friendship: You think people read that? 17:32:35 No, but it makes a nice excuse to scream at them. 17:33:25 elliott: actually, many nontechnical users, if you give them an exact command to run, they'll just run it 17:33:28 without understanding 17:33:43 but right, command-line interfaces could do with more standardisation 17:34:18 I like the rule (which GNU invented IIRC but don't enforce consistently) that if you give a command a filename to write, not read, it must be prefixed with -o (or >, for a different reason) 17:34:48 tarfs -z lolmytarfile.tar mnt/ ; cp -a lolmyfiles mnt/ ; fusermount -u mnt/ 17:35:10 http://www.cs.virginia.edu/~evans/cs655/readings/mockingbird.html 17:35:23 I wonder what's RMS's current distro recommendation. It's been at least GNU/LinEx and UTUTO and one third one that all have been described as "the only one with no non-free software" at one point, but I'm not sure which was the recentest one and if it's still kosher. 17:35:34 fizzie: what did you expect to be in /mnt? 17:35:36 *Friendship: 17:35:43 elliott: I prefer alligators. 17:35:52 fizzie: He uses a Lemote Yeeloong thing. 17:35:57 Because it's aaaaall free. 17:35:59 fizzie (actually fizzie this time): I think they mentioned Gobuntu at one point 17:36:02 Presumably with whatever OS it comes with. 17:36:06 actually, I'm surprised RMS doesn't use LFS 17:36:14 he's a good enough programmer to be able to maintain it 17:36:17 http://upload.wikimedia.org/wikipedia/commons/5/56/Richard_Matthew_Stallman_working_on_his_Lemote_Machine.JPG 17:36:29 ais523: I doubt he wants to 17:36:32 he doesn't really like Linux 17:36:38 oh right, fair enough 17:36:56 he has no philosophical objection to using it, but doesn't want to contribute, or something 17:37:11 He seems to have a huge jaw in that photo. :-D 17:37:38 http://stallman.org/stallman-computing.html 17:37:39 heh, that took a while to see 17:38:04 "I use a Lemote machine which has a free initialization program and a free operating system. One other advantage of this machine is that Windows has never supported it." 17:38:13 Windows supporting a machine will make rms not want to use it? 17:38:24 ais523: oh, he cheats: "I do not have a preferred GNU/Linux distro. I recommend all the ethical distros — namely, those that are 100% free software. 17:38:24 I've chosen not to have any preferences among those ethical distros. But I am not in a position to judge them on other criteria: even to try them all would be a lot work that I have no need to do." 17:38:41 ais523: that said, gnu.org links "Download GNU" to http://www.gnu.org/distros/free-distros.html 17:38:42 that's surprisingly reasonable, actually 17:38:52 so you can see the very short list they recommend 17:39:10 their front-page screenshot http://www.gnu.org/distros/screenshot.html is from Trisquel, IIRC 17:39:26 and ofc the FSF sponder gNewSense 17:39:51 ...whose website runs MoinMoin 17:40:03 has anyone ever installed MoinMoin and not immediately regretted it? 17:40:08 Urban legend: If you take a video of RMS speaking, and re-encode that to a non-free format such as MPEG4, RMS will not appear in the video. (It's like vampires and mirrors.) 17:40:49 X-D 17:40:54 fizzie: did you just invent that urban legend? 17:40:58 ais523: shhh 17:41:00 you're not allowed to ask that 17:41:03 sure I am 17:41:07 if he says yes, it won't spread 17:41:18 and if he says no, it won't spread either 17:41:20 ais523: I... maybe. But it was inspired by the RMS-speaking info-package. 17:41:30 "When you start a Lisp system, it enters a read-eval-print loop. Most other languages have nothing comparable to read, nothing comparable to eval, and nothing comparable to print. What gaping deficiencies!" 17:41:32 What? 17:41:33 But can they loop? 17:41:56 But can they do the dashes. 17:41:59 Since when did most languages not have read or print? 17:42:02 -!- Taneb has quit (Quit: g2g). 17:42:04 Phantom_Hoover: they don't 17:42:18 how many languages have a way to fully print out any object? 17:42:31 how many languages have a way to read in any object? 17:42:36 "Lisp is no harder to understand than other languages. So if you have never learned to program, and you want to start, start with Lisp. If you learn to edit with Emacs, you can learn Lisp by writing editing commands for Emacs. You can use the Introduction to Programming in Emacs Lisp to learn with: it is free as in freedom, and you can order printed copies from the FSF." 17:42:44 ais523: OK, rms tells people to learn Emacs Lisp as a first language 17:42:47 he's a danger to society 17:43:10 "I read a book about Java, and found it an elegant further development from C." 17:43:16 Does Lisp necessarily let you read and print any object? 17:43:20 "I skimmed documentation of Python after people told me it was fundametally similar to Lisp. My conclusion is that that is not so. When you start Lisp, it does `read', `eval', and `print', all of which are missing in Python." 17:43:34 Phantom_Hoover: well, not sure; but read/print also operate with the same syntax as Lisp 17:43:39 which is the most important thing 17:43:40 hmm, I'd debate that if I hadn't come across a script that had the same purpose as a CGI script written in elisp 17:43:49 "Please check with me before you allow a CD of GNU/Linux to be distributed at the event [where I'm speaking]." 17:43:50 it wasn't actually a CGI script because it wouldn't run if connected to a webserver, though 17:43:53 I think it was run manually 17:44:16 wow, RMS has a twitter account 17:44:18 although he refuses to use it 17:44:27 so why does he have one in the first place? 17:44:39 to log into websites that use Twitter's OAuth thing 17:44:41 so he can post comments 17:44:52 "I do not post on 4chan." THANKS, I WAS WONDERING 17:45:21 elliott: it's anonymous, you can't tell 17:45:39 although, some celebrities have rules so you can tell if it's them if they post elsewhere 17:45:45 I heard all messages on 4chan are posted by RMS. 17:45:54 like PJ of Groklaw's rule that if she posts anywhere else, she'll report the fact on Groklaw so that people know it's her 17:45:59 ais523: 4chan isn't necessarily anonymous, although I think /b/ is 17:46:09 i'm going to spread that urban legend 17:46:20 although, hmm, I think they only have the easily-crackable tripcode format, so probably it effectively is 17:46:33 kmc: you're doing god's work 17:46:42 wait, which one 17:46:44 elliott: Which one’s? 17:46:44 ion's or fizzie's 17:47:05 fizzie's is better 17:47:43 ion: ? 17:48:12 -!- augur has joined. 17:50:08 "Our iPad petition 17:50:09 Feb 3rd update: For every 5,000 signatures we get, we will send this giant "1984" postcard to Steve Jobs." 17:51:23 ais523: fizzie: hey, how are you meant to indent SQL? 17:51:48 you can't meaningfully indent it unless you add far too many newlines 17:51:54 to give something /to/ indent 17:52:12 Yeah, SQL is indent hell. 17:52:26 anything is better than select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp = (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '% 17:52:26 spam%' and log_title = a1.ar_title and log_namespace = a1.ar_namespace)) > 0; 17:53:52 I think you just indent it as you wish. But probably subqueries get one level, and sometimes the fixed bits like SELECT and FROM and such are in the first column. 17:54:13 http://sprunge.us/MdbS 17:54:18 OK, this is slightly better. 17:54:50 "DbD's Steve Jobs welcomes fans: http://i.imgur.com/nUtZK.jpg" Uh, that... doesn't look much like Jobs. 17:56:43 http://sqlformat.appspot.com/ 17:56:46 Yay, I can just outsource the job. 17:57:35 Yeah, that doesn’t look like Jobs. This does. http://youtu.be/aeXXwQrQiPE 17:58:39 fizzie: I don't suppose there's some "standard" way for making little subquery functions? 17:58:53 I could factor out these awful "page creation time" and "page was deleted" things. 17:59:26 Of course not, though there are things that are somewhat more or less kinda-sorta partially compatible with Oracle's PL/SQL. 17:59:27 Well, okay, I don't care how standard it is. 17:59:35 Does MySQL have such a thing? 18:01:46 Uhh, is views not what you want? 18:01:49 Actually I suppose plain SQL functions are a semi-standard thing. 18:02:03 And of course there are views. 18:02:22 Friendship: Excellent, tell me about views. fizzie: Tell me about SQL functions. 18:02:49 elliott: http://lmgtfy.com/?q=sql+views 18:03:31 That's not telling! That's pointing. 18:04:40 With a view you can make a complicated query into a sort-of-a virtual table thing, so that you can run further selects and such on it. 18:04:50 Right, I don't think that's quite what I want though. 18:04:57 The things I want to refactor are 18:04:58 (SELECT MIN(a2.ar_timestamp) 18:04:58 FROM archive a2 18:04:59 WHERE a2.ar_title = a1.ar_title 18:04:59 AND a2.ar_namespace = a1.ar_namespace) 18:05:06 parametrised on (a1.ar_title, a1.ar_namespace), and 18:05:14 EXISTS (SELECT 1 18:05:14 FROM logging 18:05:14 WHERE log_action = 'delete' 18:05:14 AND (log_namespace = 0 OR log_namespace = 2) 18:05:14 AND log_comment LIKE '%spam%' 18:05:14 AND log_title = a1.ar_title 18:05:16 AND log_namespace = a1.ar_namespace) 18:05:26 parametrised on (a1.ar_title, a1.ar_namespace) again. 18:05:52 Yeah, views only let you factor out the constant bits. 18:06:15 Friendship: Weeeell, I could make a deleted_for_spam table as a view, I think. 18:06:18 Which would vastly simplify that part. 18:06:21 And a page_creation_times table. 18:06:28 But just making a function out of those two would be nicer... 18:06:41 A function is also something you can make, yes. 18:06:56 Yeah, functions I don't know about ^^ 18:08:36 When I do "CREATE FUNCTION", does that, like... store it? 18:08:40 Because I only need it for this one thing. 18:09:00 Yes, it is saved. 18:09:25 These look quite "heavy". 18:09:29 CREATE FUNCTION creationtime(title , namespace ) RETURNS RETURN (SELECT MIN(ar_timestamp) FROM archive WHERE ar_title = title AND ar_namespace = namespace); could work. 18:09:42 How do I delete one? 18:09:49 DROP FUNCTION, I'd guesstimate. 18:10:01 Ah, DROP FUNCTION. 18:10:13 Thanks. 18:10:45 fizzie: Do I have to specify the size of the types? 18:10:49 There are temporary tables (persist for the connection, are automatically dropped then), but I'm not sure about temporary functions. 18:10:55 I'm lazy and don't want to look up how big the namespace int is :P 18:11:11 I'd think conversions happen if they don't match exactly. 18:12:51 MySQL does have a compound statement thing which would let you do more complicated logic in a function, but for result-of-a-single-select I think just RETURN (query) should work. 18:13:05 Right. 18:13:10 I'll consider doing that. 18:13:40 First things first though, time to negate the query and see what other patterns I can spot. 18:14:47 -U, --i-am-a-dummy Synonym for option --safe-updates, -U. 18:15:02 Also INDENTATION http://sprunge.us/BEaN 18:15:42 That's, um... 18:15:45 Very indented, yes. 18:15:56 Hard to argue that it's not indented. 18:16:03 " *" <-- best line. 18:16:15 [elliott@dinky esowiki]$ ssh mysql esolang_wiki --html spammers.html 18:16:17 It am feel like future. 18:16:22 *ssh solidity 18:16:38 From dinky to solidity; that's progress. 18:17:32 hey ais523, you have p7zip, right? 18:17:43 "p7zip"? 18:17:48 I don't think so 18:17:56 I think I have some 7z-related program, but I think it's called something else 18:17:59 It's 7zip. 18:18:00 err, do you have 7z(1), then? 18:18:02 that's p7zip 18:18:19 "p7zip" has a 'p' for 'port'. 18:18:23 I seem to have 7z and 7za 18:18:57 ais523: how worky is your email? 18:19:22 Yahoo! have a borked SSL cert for my usual method of accessing it 18:19:32 I can access it via the web interface, but it's somewhat obnoxious 18:19:48 as you can see from my emails to Agora 18:19:58 (obnoxious on the recipients too) 18:20:51 ais523: unobnoxious enough to download a single attachment? 18:21:05 depends on how physically large it is 18:21:14 if it's less than 20MB (possibly MiB), I should be able to manage it 18:21:26 <1meg 18:22:15 ais523: @bham, right? 18:22:18 or @yahoo? 18:22:47 oh, @bham's working fine, but I'm increasingly trying to use it as a work email 18:22:55 @yahoo is probably better 18:22:55 Unknown command, try @list 18:23:08 OK, sent message to @yahoo 18:23:16 oh, that was fast 18:23:20 it's a small file 18:23:22 I received it before your "OK, sent" 18:23:24 haha 18:23:39 it contains a list of users (+ id, email, realname and edit count) that the spammer query does /not/ catch 18:23:45 it still has some obvious spam users in them with some obvious patterns 18:23:52 including, I think, some that follow the patterns you discovered 18:23:52 heh, Yahoo! went and scanned it with Norton 18:24:03 and the pattern I couldn't manage to pin down earlier 18:24:55 "\d+ buy .*" is an obvious uncaught pattern 18:25:07 (err, make that "^\d+ buy"; I keep forgetting regexes need anchors) 18:25:39 ah, yes, indeed 18:25:51 * elliott takes this to /msg 18:25:59 * ais523 waits for the /msg 18:28:45 The wand of messages. 18:29:52 indeed 18:30:09 * ais523 thinks that this conclusively establishes that there is /no/ channel I'm currently in that's potentially safe from NetHack references 18:32:07 -!- Phantom_Hoover has quit (Remote host closed the connection). 18:34:27 -!- Phantom_Hoover has joined. 18:36:58 2010$username$email$firstname $lastname0 18:37:01 behold, one of our actual users 18:40:49 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]). 18:40:53 I wonder if $username made any edits replacing the page with $page, with summary $summary 18:41:02 check the deleted history of $title :) 18:41:19 -!- Frooxius has joined. 18:53:55 fizzie: Why's this query returning ~every user: 18:53:55 select user_id, user_name, user_email, user_real_name, user_editcount 18:53:56 from user u1 18:53:56 where exists (select 1 from user u2 where u2.user_id != u1.user_id and 18:53:56 left(replace(u2.user_email,'.',''),locate('@',replace(u2.user_email,'.',''))) = 18:53:57 left(replace(u1.user_email,'.',''),locate('@',replace(u1.user_email,'.',''))) 18:54:00 ); 18:58:52 -!- PiRSquared17 has quit (Read error: Connection reset by peer). 18:58:55 ais523: OK the SQL debugging falls to you :P 18:59:28 but I don't know SQL! 18:59:46 I suppose you've checked what the subselect returns for some J. Random User? 19:00:06 fizzie: You suppose wrong! 19:00:38 It does look like a reasonable "thing before the @, disregarding dots" comparison. 19:01:27 It could NULL out though. 19:01:33 Is (NULL = x) true for some reason? 19:01:50 oh, I think it might be 19:02:06 I don't think it is. In fact, I don't think null = null is true either. 19:02:19 right, I knew it had some special behaviour with comparisons 19:02:29 oh, is this MySQL, which doesn't distinguish between NULL and ''? 19:02:50 well, sometimes 19:03:10 mysql> select left(replace('ab@c','.',''),locate('@',replace('ab@c','.',''))); 19:03:10 +-----------------------------------------------------------------+ 19:03:11 | left(replace('ab@c','.',''),locate('@',replace('ab@c','.',''))) | 19:03:11 +-----------------------------------------------------------------+ 19:03:11 | ab@ | 19:03:11 +-----------------------------------------------------------------+ 19:03:13 Looks right to me :( 19:04:13 are you working on a SQL-based esolang? 19:05:21 nah, he's trying to delete all the spambots from Esolang's users tables 19:08:04 fizzie: Maybe it's going wrong because one person has an empty email or something? 19:09:16 Maybe, though purely going by logic I think it should work. If one person has an empty email, left(replace(u2.user_email,'.',''),locate('@',replace(u2.user_email,'.',''))) for that one person should just be '', in which case it shouldn't match the non-'' thing returned for u1.user_email. 19:09:53 Do you have any empty emails? select count(*) from user where user_email = '' or user_email is null? 19:10:28 Yes, emails are optional 19:10:35 I don't know whether they end up empty or null, is that important? 19:10:51 Not that I know of, though null is admittedly more special. 19:11:05 Still, I think that should at most lead it to report every emailless person. 19:11:15 As long as there's >1 such.) 19:11:15 +-------------------------------------------------------------+ 19:11:16 | left(replace(null,'.',''),locate('@',replace(null,'.',''))) | 19:11:16 +-------------------------------------------------------------+ 19:11:16 | NULL | 19:11:16 +-------------------------------------------------------------+ 19:11:33 fizzie: It reports a bunch of emailful and emailless users 19:11:38 Not every user however 19:11:43 That's a weird. 19:11:54 Oh, hmm 19:12:28 It looks to be my error. 19:12:32 There are indeed two rune@* users. 19:18:59 [[::If the program halts, it'll print 0, then eventually erase that and print 1. If the program doesn't halt, it'll print 0 and loop forever. So at any given point before it replaces the 0 with a 1, you can't tell whether it's going to halt or not, and since nonhalting programs never halt, you'll never be able to say for sure whether that 1 will eventually show up. So this doesn't solve the halting problem.]] 19:19:04 this person does not seem to understand twoducks at all 19:25:17 it's confusing time with metatime 19:44:17 hmm, I think that person is actually trying to apply the Feather time-travel model to TwoDucks 19:44:21 which doesn't work 19:49:28 There's at least one person who knows the Feather time-travel model? 19:49:31 I'm in shock. 19:50:02 oh, it has a very simple time travel model (it's basically meta-timeline) 19:52:00 "Veoh is a Flash video site relying on user contributed content. IO Group argued that since Veoh transcoded user uploaded videos to Flash format it became a direct infringer and the materials were under their direct control, thereby disqualifying them for DMCA safe harbor protection." 19:52:17 I hope they didn't /succeed/ 19:52:33 thankfully not 20:01:08 -!- oerjan has joined. 20:03:04 I, uh, doesn't YouTube transcode too? 20:04:44 Yes. 20:05:08 hi oerjan 20:05:21 Oi, herjan. 20:05:30 this is as crazy as the "it made a copy in memory" thing that Blizzard made to stick when they were suing Glider 20:08:08 Copies in memory are quite a popular thing to include, I believe. 20:12:13 Hey fizzie, look what you have wrought: http://sprunge.us/JXgX 20:29:43 fizzie: So, erm, would you hate me if I asked more SQL questions? 20:31:35 hello 20:31:49 oerjan: hi 20:31:50 hi oerjan 20:33:13 SQLing is a bannable offense. 20:33:19 or was that squealing 20:34:08 oerjan: Is deleting spammers? 20:34:30 ah. i guess in that case it counts as justified. 20:35:27 (what is the english term for a law not applying because of overriding emergency concerns?) 20:35:50 hmm, not sure 20:35:53 there's "duress", but that's when something's legal because you did it with a gun to your head 20:35:58 (and someone else was pointing the gun) 20:36:23 maybe the english/americans don't _have_ such a thing, and that's why their laws are so insane. 20:36:45 * oerjan logical 20:36:58 exceptional circumstances? 20:37:03 hmm, apparently not: http://en.wikipedia.org/wiki/Exceptional_circumstances 20:37:31 hm maybe i should try to look up the norwegian term and see if there's an interwiki link 20:38:30 "necessity", apparently 20:39:12 "Except for a few statutory exemptions and in some medical cases [1] there is no corresponding defense in English law." 20:39:27 so it's just the english that are insane, not the americans, check. 20:42:06 * oerjan thinks he may have insulted someone. 20:42:12 fizzie: Hmph. 20:43:59 "However case law suggests necessity is narrowed to medical cases." 20:44:11 so the US is maybe not that different anyway. 20:48:57 hm, the first time cube quote above could be interpreted as true. 20:49:03 fizzie: :'( 20:49:28 *in the topic 20:54:17 02:05:11: I've heard the Das Keyboards are actually rather high-quality keyboards, though... 20:54:19 pikhq: They're terrible. 20:55:42 -!- augur has quit (Remote host closed the connection). 20:55:46 oerjan: If you don't wake fizzie up, you'll have to answer my SQL questions. 20:56:18 02:10:11: that and people who just want a keyboard with serious tactile response 20:56:18 02:10:21: there are a few others in that category 20:56:28 kmc: There are many others in that category, and they're all better than Das 20:56:49 fizzie: WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPPPPPPPP!!!!!!!!!!!!!!!!!!!!!!!!!!!!111111111111111ELEVEN 20:57:06 oh, are we talking about keyboards now? 20:57:13 the threat might be more effective if i actually knew SQL. 20:57:35 -!- monqy has joined. 20:57:47 oerjan: You'll have to learn it. 20:58:08 02:13:00: i wonder which switch technology is used in the Kinesis Advantage 20:58:09 02:13:12: it's pretty loud and has decent feedback 20:58:15 kmc: Cherry Browns. 20:58:28 They're like the Blues (as used, badly, in the Das) but without the explicit click and slightly lighter feedback. 20:58:49 02:17:39: zzo38: What, the Happy Hacking? Those things are... Meh. 20:58:53 They use Topre switches, though. 20:59:05 02:19:15: They're more-or-less laptop-layout boards. 20:59:06 02:19:20: With dome switches. 20:59:07 Wrong. 20:59:28 (Some of the Happy Hacking models use rubber dome, but they're not the ones everyone knows.) 21:01:35 oerjan: I'll keep talking about keyboards if you don't answer my SQL questions :'9 21:01:37 *( 21:02:58 i _said_ i don't know SQL 21:03:30 oerjan: Exactly. 21:04:39 if i can tune out linux administration talk, i can tune out keyboards. 21:05:31 I was sorta away. 21:05:34 Kinda-sorta. 21:06:05 fizzie: EXCELLENT HELLO. 21:06:43 fizzie: So, say I have a SELECT query. I also have a list of (table,column)s. Those columns contain references to user_ids. I want to update all those columns to set the user_id to 0, wherever they're equal to a user_id returned by that SELECT query. 21:07:10 I could do "UPDATE table SET column = 0 WHERE column = (SELECT user_id FROM user WHERE )" but that'd duplicate the query across every (table,column) pair, and be really slow. 21:08:52 fizzie: (If this somehow helps things, I would like to delete the user records in question at the end.) 21:09:05 Should I create a view on users or something? Would that cache the results? 21:09:08 Or a temporary table? 21:09:18 ais523: With unbounded tape cells, I wouldn't bet on that. I mean, it wouldn't surprise me if the TC three-cell brainfuck construction always knew in which cell it is. 21:09:28 good to know 21:09:49 of course. i couldn't even find a way to use unbalanced loops usefully with that few cells. 21:10:55 (i certainly tried, during my failed attempt to implement a halting condition when each fractran rule had its own loop) 21:11:28 elliott: Well, uh. Probably a temporary table of the list of user_id's you want to zero would be nice, then you could quite efficiently zero those, maybe with the UPDATE ... FROM thing or some-such. 21:12:30 fizzie: I'd need a join of some sort to the temporary table, right? 21:12:34 elliott: If the database in question had proper foreign keys and those had ON DELETE SET DEFAULT behaviour and all your columns had a default of zero, then just deleting the user rows would automagically do the right thing, but I doubt MediaWiki does that. Historically MySQL and FOREIGN KEYs have been kinda iffy. 21:12:53 -!- kmc has quit (Quit: Leaving). 21:13:02 Yes, I don't think MediaWiki does the "relational integrity" thing. 21:13:21 UPDATE ... FROM basically joins the update table with the FROM-list items. If it's a regular (inner) join, you'll get one updated row for each item in your list of userids. 21:13:39 Oh, I didn't even know there was an UPDATE ... FROM. 21:14:11 Probably "WHERE column IN (SELECT user_id FROM mylistofbadguys)" or some-such might also work. I forget how that is spelled, exactly, but anyway. 21:14:44 " 21:14:44 Let's deprecate UPDATE FROM! 21:14:44 I guess that many people using UPDATE … FROM on a daily basis do so without being aware that they are violating all SQL standards." 21:15:08 fizzie: MySQL doesn't have UPDATE FROM. 21:15:16 It's a Microsoft thing, apparently. 21:15:16 Aw. 21:15:26 Well, it's not a Microsoft-*only* thing. 21:15:28 "When a FROM clause is present, what essentially happens is that the target table is joined to the tables mentioned in the from_list, and each output row of the join represents an update operation for the target table. When using FROM you should ensure that the join produces at most one output row for each row to be modified. In other words, a target row shouldn't join to more than one row from the other table(s). If it does, then only one of the ... 21:15:35 ... join rows will be used to update the target row, but which one will be used is not readily predictable. 21:15:37 Because of this indeterminacy, referencing other tables only within sub-selects is safer, though often harder to read and slower than using a join." 21:15:40 (Postgres docs.) 21:16:03 MySQL has... transactions, right? 21:16:22 Yes, though I'm not entirely sure what kind of. 21:16:36 I don't suppose there's a way to clone a table's schema under a different name. 21:16:39 (To be my temporary table.) 21:17:00 You can generate a temporary table as the result of a select. If you select *, it clones all columns. 21:17:01 I guess that's what views are for. 21:17:06 fizzie: Ooh, snazzy. 21:17:08 (If you select less, then you'll get less.) 21:17:13 There's also 21:17:14 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 21:17:14 { LIKE old_tbl_name | (LIKE old_tbl_name) } 21:18:57 I suppose you actually need to create it if you use the "INSERT INTO table SELECT ..." syntax. 21:19:12 Ooh, you can update multiple tables in one UPDATE? 21:19:14 How fancy. 21:19:23 How... pointless. 21:20:30 Oh, right; yes; so it's part of CREATE TABLE syntax. 21:20:40 "CREATE TABLE new_tbl SELECT * FROM orig_tbl;" 21:20:51 Or CREATE TEMPORARY TABLE if you want it to auto-drop when you disconnect. 21:21:04 Right. 21:21:22 If you don't list any columns after new_tbl, the names and types will be taken from whatever the select returns. 21:24:16 Anyway, the sub-select in an UPDATE statement's WHERE term should return just one line if you're testing it with =; so I think it'd be something slightly ridiculous like UPDATE table SET column = 0 WHERE column = (SELECT user_id FROM badguys WHERE user_id = column) or then with the IN operator as in UPDATE table SET column = 0 WHERE column IN (SELECT user_id FROM badguys). 21:24:26 No idea which one's faster. 21:24:39 OK guys official announcement, Whitespace is now The Worst Thing. 21:25:18 http://sprunge.us/ZHLK 21:25:22 butohdearhowamIgoingtowritelegiblynow? 21:25:32 Here's what I currently have (although me and ais523 have agreed to tweak what it does slightly). 21:26:10 That will take the user count down to 1432. 21:26:21 Then we'll need YOUR HELP(tm) rounding up the remaining spambots. 21:27:37 http://p.zem.fi/651r -- can't tell which one of those would be better even with plans, though obvsly your statistics would differ also. (That's a bit of a nonsense example.) 21:29:08 Anyway at least with "in (select ...)" where ... doesn't depend on the particular row it's only doing the sub-select once. 21:29:27 (On the other hand, in the second the subquery is just an index check.) 21:29:35 -!- zzo38 has joined. 21:30:44 http://behappyandjoyful.com/ 21:30:47 Aww, it expired. 21:31:10 Doesn't MediaWiki have some sort of a defined process of "do this if you want to programmatically remove a list of users" as opposed to manually setting a bunch of columns to zero? (Or is that in fact the process?) 21:31:10 fizzie: What's the bestest name to give all the spambots? 21:31:26 fizzie: It doesn't really support deleting users in any sort of official capacity. 21:31:40 That (table, column) was a-stolen from the "Merge User and Delete" extension. 21:31:43 Oh. I suppose that's some kind of a philosophical thing. 21:31:44 *column) list 21:31:53 fizzie: I don't think so. 21:31:55 It just can't really do it. 21:32:11 I think they consider it too brittle too bother with. 21:32:49 Though I think there *is* a "delete unused accounts" script. 21:32:56 But that thing doesn't have to bother updating any columns, by definition. 21:33:21 fizzie: Anyway, like I said, we're actually going to set them to something other than zero. 21:33:32 We're going to register a new user, and merge all the things the spammers did into that one. 21:33:36 It'll be the BIG BAD. 21:39:03 fizzie: What's the bestest name to give all the spambots? 21:39:04 Also oerjan. 21:39:07 THE PEOPLE MUST DECIDE. 21:39:14 ais523: comedy option: "MediaWiki default" 21:39:25 elliott: oh no, seriously oh no 21:39:31 :D 21:39:35 I like "deleted spambot account" 21:39:44 We don't know they're all bots! 21:40:38 oh, since we're handling the tables properly, this means we can extend it to those with undeleted edits 21:41:18 It's not a "deleted spambot account" if it's not deleted. 21:41:23 -!- Jafet has quit (Quit: Leaving.). 21:41:34 It's the account for deleted spambots. 21:42:25 "Esoteric Marketing Department". Well, maybe not. 21:43:46 ais523: hmm, can you think of any way to make the 3-duplicate-emails thing less likely to have false positives? 21:43:51 I realise it almost certainly has none 21:43:57 but it's the only clause that I'm not completely sure about 21:44:03 make it 4 duplicate emails? 21:46:10 * elliott tests 21:47:05 oh, hmm, it was already 4 21:47:42 hm is this when 4 accounts have the same email? 21:48:19 right 21:48:21 (ignoring dots) 21:48:32 if none of them have non-deleted edits you should be pretty safe, i'd think 21:48:39 that criterion isn't part of it, no 21:48:47 we've found several legit users with 2 accounts with the same email (me, ais523, evincar, Sgeo) 21:48:49 but none with 3 21:49:26 so why are Sgeo's accounts called Sgeo2 and Sgeo3? 21:49:46 or does Sgeo[1] have a different email? 21:50:01 presumably 21:50:40 hmm, verified that all users with exactly 3 accounts with the same email are spammers 21:50:52 * elliott verifies that all users with exactly 4 accounts with the same email are spammers 21:51:00 that way, we can just use more-than-2 accounts as the criterion and be as safe 21:51:36 verified 21:52:10 elliott: you could call the account "Sir Spamalot" 21:52:29 although i'm sure i've seen that somewhere 21:52:33 ais523: meh, I feel safe in saying that no legitimate user would have more than 4 accounts with the same email 21:52:47 yep, that would seem reasonable 21:52:48 well, there's a monty python musical 21:52:59 and since I just manually verified 3 and 4, we can delete all users with more than one duplicate 21:54:35 ais523: hmm, are parens valid in usernames? 21:54:42 yes, I think so 21:54:53 anything that's valid as a page name is IIRC valid as a user name 21:55:03 (someone want to register User:///?) 21:55:17 haha 21:55:20 I was thinking (deleted spam user) 21:55:54 i cannot understand elliott's recent allergy to puns 21:56:08 (WHAT DO YOU MEAN YOU'VE ALWAYS HATED THEM?) 21:56:35 food -> 21:57:48 ais523: hmm, MW appears to be inconsistent about using "user" vs. "account" 21:57:59 vs. "user account" 21:58:23 would you expect it to be consistent? 21:58:41 well, no, but I'd hope it to be 21:59:03 "The MediaWiki default user preferences are in the language file, i.e. languages/Language.php if you're using English." 21:59:05 /what/ 21:59:08 elliott: "Spam: Coarse, Uncut". (Coarse, uncut is an anagram for user account.) 21:59:49 Okay, maybe it's a bit too "subtle". 22:00:30 fizzie: Do you have any serious suggestions that don't include the OMGINACCURATE "deleted" part? :p 22:00:55 "spam group mind" 22:01:10 you _are_ merging them, after all. 22:01:44 elliott: Hey, you like really horrible nonsense articles about monads, right? 22:01:51 Did you see today's entry in the competition? 22:01:57 shachaf: No. 22:02:07 And yes. In reverse order. 22:02:23 Heh. In reverse order. 22:02:27 In reverse order, eh? 22:02:47 http://the-27th-comrade.appspot.com/blog/ahJzfnRoZS0yN3RoLWNvbXJhZGVyDAsSBUVudHJ5GOFdDA 22:02:54 there's a horrible nonsense articles about monads competition? 22:02:55 redro esrever ni ,sey 22:03:11 * ais523 notes that threatening to write a monad tutorial is about the worst threat you can make against elliott 22:03:25 [[So, to prove this ridiculous statement, I told him (upper-right corner): “Monads are conditional function calls.”]] 22:03:34 Mmm, that feeling of murderous rage in the morning. 22:03:38 Evening. 22:03:46 (It's the day, in reverse order.) 22:03:48 We need to write a monad tutorial generator. 22:03:57 wow is that font size obnoxious 22:04:06 "In Haskell, one example of a monad is the Maybe anythingElse type. It has two possible values: Nothing and Just anythingElse." 22:04:10 Two possible values! As long as anythingElse has one. 22:04:30 elliott: Are you going to quote every wrong statement in there? 22:04:30 * ion cringes 22:04:34 "So, you see that what increased the cyclomatic complexity of pymon has been achieved in Haskell without any increase in cyclomatic complexity." 22:04:35 What? 22:04:38 shachaf: No, that would be too many. 22:05:18 elliott: you don't have to write if statements that check for nullness explicitly because you can use (>>=) instead; this saves you a level of indentation 22:05:20 "And so … you have been using monads in Python, all along sneering at the “smug Haskell douchebags who brag about the size of their gonads or something”. You are one of them." 22:05:20 You know micropayments? 22:05:20 The problem with micropayments is that they give things to things you like. 22:05:20 I propose microhurtments. 22:05:29 Everyone is required to put a microhurtment button on their site. 22:05:34 Micropayments are basically a conditional function call. 22:05:35 (because you use Python and thus have to indent your if statements) 22:05:41 Whenever anyone clicks it, it costs them a small amount of money, and delivers a small, painful electric shock to the author of the article. 22:05:49 Who's with me? 22:06:00 I was with you until the "small". 22:06:19 Well, you’ll also have macropayments for big electric shocks. 22:06:37 Even this guy's name and blog title are obnoxious. 22:06:48 elliott: it'd make it possible for DOSes (or dDOSes) to kill people, probably 22:06:57 I don't want that much power in the hands of Anonymous 22:07:08 elliott: Want more irritating articles about Haskell? 22:07:19 Apparently today/yesterday was unusually productive. 22:07:24 ais523: No, to enter the microhurtment system you have to pay slightly more than the average monthly allowance of a US teenager. 22:07:29 Problem solved. 22:07:34 shachaf: Oh boy oh boy! 22:07:51 OK, "Even simple, direct, applicable understanding of monads is a Monad" is the point where I decided the article was complete bunk after all, rather than merely incorrectly worded 22:08:25 ais523: You missed the part where monads aren't conditional function calls, and pymon doesn't actually implement (>>=) on Maybe. 22:08:48 elliott: I saw that line, and assumed it was backwards, "some subset of conditional function calls are monads" 22:08:51 And also the part where everything else in the article is wrong. 22:09:16 elliott: Here's the other article: http://williamedwardscoder.tumblr.com/post/18319031919/programming-language-readability 22:09:25 is the mistake in pymon that it's missing a "then Nothing"? or something worse than that? 22:09:55 -!- Vorpal has quit (Ping timeout: 276 seconds). 22:10:02 ais523: Well, Python's None is not comparable to Maybe's Nothing. 22:10:05 err, "else Nothing" 22:10:10 There's no value to represent "Just Nothing". 22:10:14 "Even simple, direct, applicable understanding of monads is a Monad: if you grok, apply." what 22:10:25 Also Python's if is about "falsiness", not about "Noneness". 22:10:31 That too. 22:10:32 It fails on False. 22:10:34 and '' 22:10:34 and [] 22:10:35 and 0 22:10:35 elliott: I'd still say they're comparable, even though they're not quite equivalent 22:10:36 -!- derdon has joined. 22:10:43 ais523: No.Consider that you can also write a monad as return, fmap, and join. You can't do that for None Python: 22:10:45 *No. Consider 22:10:53 def return(x): return x # incorrect on None 22:11:01 def fmap(f,x): 22:11:02 they are plainly similar enough to compare, in fact you're doing that right now 22:11:03 if x is None: return x 22:11:04 so how are they not comparable? 22:11:07 else: return f(x) 22:11:10 def join(x): # impossible 22:11:11 They're comparable in a few ways that have nothing to do with monads. 22:11:16 Everything is "comparable". 22:11:20 They are not comparable enough. 22:11:22 * shachaf compares elliott and oranges. 22:11:34 In fact, they can be compared in such a way that proves that one isn't a mond. 22:11:36 *monad. 22:11:38 In fact, I just did. 22:11:47 elliott: def join(x): return x 22:11:52 shachaf: elliott's been online more recently than oranges 22:11:53 Oh, fmap is wrong too. 22:11:57 If f returns None. 22:12:05 (in fact, oranges hasn't been around for almost two years) 22:12:25 14:11 oranges was last seen on ##c 1 year, 112 days, 10 hours, 24 minutes and 55 seconds ago, saying: declare argv as const array of pointers to char 22:12:39 shachaf: Oh, but this guy is clearly an expert. "Node.js is Bad Ass Rock Star Tech", says he. 22:12:54 shachaf: err, wow, how did you guess what channel oranges would have been in so you could ask a bot? 22:13:05 preflex is in tons of cahnnels. 22:13:10 ah, I see 22:13:13 but not this one! 22:13:22 fizzie: THANKS 22:13:24 This channel is unworthy. 22:13:26 ais523: It was when mauke was here. 22:13:32 in fact, preflex and I don't share a channel 22:14:20 ais523: I guess you aren't in any of the cool channels. 22:14:34 nah, I guess /preflex/ isn't 22:15:39 btw, I was trying to implement typed underload in Anarchy 22:15:48 I think it worked, but lacking an Anarchy compiler, I'm not sure 22:16:01 then I tried to compile to OCaml by hand, which is what lead to the discussion we had a few days ago 22:16:30 was it a good discussion 22:16:59 I think so, although it was mostly just me 22:17:15 `quote flamewar 22:17:19 321) [After a long monologue] i think i have to escape this heated discussion before it becomes a flamewar 22:17:23 oerjanswap had a really neat-looking type, even if it was the wrong type 22:18:10 elliott: what's your opinion on the code formatting thing 22:18:19 ? 22:18:45 that shachaf linked 22:18:58 oh, i read the start of it and decided it was too stupid to keep reading further 22:19:01 it shows some signs of being an unfair comparison 22:19:07 it shows every sign 22:19:22 "If a list comprehension or something isn’t obvious, you could just rewrite the Python in a less-pretentious way and recover this readability." 22:19:34 it's almost as if this is a bullshit argument for readability and applies to basically every language, including Haskell 22:19:34 ha 22:19:35 ha 22:19:41 Every other sentence there is wrong. 22:19:43 "'The Python has indent and this is important to speed-reading" 22:19:45 just like the Haskell! 22:19:53 "Second is the use of short words instead of symbols." 22:19:56 just like 90% of the haskell! 22:20:00 I thought elliott would appreciate it, but I guess he's grown wiser. 22:20:05 Actually, I guess not. 22:20:08 "Python goes further than most to use short concise words; COBOL used long words" 22:20:13 the Haskell contains a lot of technically unnecessary stuff that could have been written in the Python but wasn't 22:20:15 True, yes, Python is more readable than COBOL. Is this article Python vs. COBOL? 22:20:23 (apart from type signatures, that I guess you could put in the docstrings) 22:20:25 "Python is so readable because of significant whitespace, its conciseness and use of small words instead of symbols." 22:20:30 ais523: The two pieces of code do very different things. 22:20:32 I think the Python there looks neater than the Haskell there 22:20:33 You know, all things that Haskell has (except sometimes it uses symbols). 22:20:37 but that's because it's an unfair comparison 22:20:47 Here's a slightly fairer comparison to the Python code: https://github.com/rostayob/haskell-readability/blob/master/haskell-readability.md 22:20:51 Yes, it looks like the two code samples are completely incomparable. 22:20:57 Do they even achieve the same task? 22:21:09 "Haskell is doing neither of these." You listed three, moron. 22:21:17 "Most of the training material on Haskell that I’ve read is aimed at students with no prior programming experience." 22:21:20 elliott: sort-of, the codes look like they're both used for the same purpose 22:21:24 Yes, just like LYAH and RWH! Which are... both targetted at people who know how to program. 22:21:28 As is the Wikibook (IIRC). 22:21:30 As is Write Your own Scheme. 22:21:36 As is this person is a complete idiot. 22:21:44 "You can make functional languages in the Python readability style; you don’t have to try so hard to look like algebra. You can make static fast languages in Python readability style too." 22:21:51 Links to his own post on "his dream programming language"; -1, Troll. 22:21:59 "There are as many new languages as ever; my dream programming language post got suggestions other than Haskell, including Rust, D and Tart. Those three are curly bracket languages again though. Big opportunity miss." 22:22:01 -1, Moron 22:22:08 "I lament that all languages aren’t trying to be readable the Python way; to my thinking, it ought to be goal number 0." 22:22:18 -1, Starting Lists From 0 To Make You Look Like A True Hacker 22:22:30 "The Haskell goes on to use Levenshtein distance - edit distance - (here) to offer spelling corrections. Interestingly, Dr Pete Norvig has written a neat essay on this with Python source-code. Lets focus on readability over algorithm. Compare and contrast them too." 22:22:35 -1, This Is Becoming Completely Irreleavnt 22:22:37 a reviewer for a paper I wrote actually complained that I started numbering at 0 22:22:38 *Irrelevant 22:22:48 even though 0 was different from 1, etc., as it was the thing I was trying to prove about 22:23:00 "As usual, tangents spring to mind: TDD evolving solutions is really paralleled in my old adventures in genetic programming and also Kolmogorov Complexity." 22:23:09 -1, Crank/Idiot (Can't Tell Which) 22:23:30 "(This post is inspired to explain why “looks like Python” is all through my dream programming language requirements. If you liked this, you may also like the rest of the blog ;) )" 22:23:34 -1, I Didn't and I Won't 22:23:42 "[Every blog post contains a small word-misuse for the grammar glue-chewers; this post its bare instead of bear. Do tell me if you spot any others that are accidental :) ]" 22:23:43 * ais523 wonders if cyclomatic complexity is actually useful 22:23:43 -1, What 22:23:48 Final Score: -238947928349234789234 22:23:59 now I'm trying to figure out if "its" was deliberate or not there 22:24:21 fizzie: Oi. :( 22:24:48 ais523: Given all the other mistakes in that post, does it really matter? 22:24:59 elliott: What! 22:25:15 shachaf: yes, in the "now I'll never know" sort of way 22:25:19 what other mistakes 22:25:26 fizzie: You complained that "Deleted spam account" is inaccurate. 22:25:34 YOU HAVE YET TO PROPOSE A SERIOUS ALTERNATIVE :'( 22:25:59 elliott: I don't have alternatives, I just like to complain. 22:26:22 fizzie: Sorry, I may have given the impression that giving an alternative was optional. 22:26:42 fizzie: You don't gotta give no alternative. 22:26:57 * Phantom_Hoover -> sleep 22:27:00 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 22:27:03 Stand up to the hird. 22:27:33 elliott: Did you know HURD in GNU/HURD stands for "HIRD of Unix-Replacing Daemons"? 22:27:40 ais523: SDCC has a "report cyclomatic complexity" option, the stated purpose of which is to select "bad" functions for simplification/had-assemblying. Not that that's any evidence for usefulness or anything. 22:27:48 "Spammer chimera" 22:27:54 shachaf: Yes. 22:28:04 oerjan: I DIDN'T ASK FOR NON-SERIOUS SUGGESTIONS ;_; 22:28:15 * oerjan swats elliott -----### 22:28:31 I liked the hive mind. :/ 22:28:34 > repeat '-' ++ repeat '#' 22:28:35 "--------------------------------------------------------------------------... 22:30:26 Okay, now y'all gotta vote: Deleted spam account, Deleted spam user, Deleted spam user account, Spam user, Spam account, Spam user account 22:30:37 > fix ((repeat '-'++).(>>repeat '-')) ++ repeat '#' 22:30:38 "--------------------------------------------------------------------------... 22:31:18 oerjan: NOT A VOTE 22:31:28 (i _think_ that maybe omega^omega '-'s) 22:31:32 *may be 22:31:50 that's a lot of '-'s 22:32:10 VOTE VOTE VOTE 22:32:18 elliott: "HA HA SPAMMER" 22:32:25 * shachaf has no idea what we're voting on. 22:32:58 shachaf: Yes, that's why you're not allowed to vote. 22:32:59 elliott: TOO SERIOUS TO CARE 22:33:01 Also, that's not a valid option. 22:33:05 oerjan: VOTING IS NON-OPTIONAL 22:33:06 how about a poem 22:33:10 a spammer poem 22:33:46 ais523: fizzie: Vote or experience mild discontent. 22:34:04 Actually I hereby remove "Deleted spam user account" from the vote. 22:34:06 It's ridiculous. 22:34:17 oerjan: Here's csh's opinion on your swatter: 22:34:18 % If I had a ( for every - in oerjan-swatter, what would I have? 22:34:18 Too many ('s. 22:34:39 "Deleted spam user" 22:34:40 is my vote 22:34:45 but I don't have a strong preference 22:35:05 I'll vote whatever ais523 voted, maybe that way we'll be rid of this whole naming thing? 22:35:12 No no no. That's not allowed. 22:35:21 Voting with explicit justification of vote being to end the vote is totally banned now. 22:35:28 Hey, why is oerjan getting the credit for that swatter? 22:35:36 actually, I changed my mind, I endorse eelpout 22:35:57 elliott: Oh, I thought you meant multiple votes of one opinion was not allowed. That would be an... interesting voting scheme. 22:35:59 elliott: I vote for cadmium. 22:36:12 I vote for "Annihilated atopical advertisement-oriented client configuration" 22:36:17 What exactly are we supposed to vote for? 22:36:18 what's eelpout can I vote for it 22:36:28 zzo38: what user to mark edits made by spambots as having been made by 22:36:29 can i vote for monqy 22:36:34 HLEP 22:36:38 shachaf: i increased the ordinal number of '-'s greatly 22:36:54 oerjan: Liar! 22:36:59 * ais523 hits oerjan with a swatter with nineteenth -s 22:37:05 An invalid IP address. 22:37:08 REMINDER: THE VALID OPTIONS ARE: Deleted spam account, Deleted spam user, Spam user, Spam account, Spam user account 22:37:12 Also monqy. 22:37:14 monqy is now a valid option. 22:37:16 monqy 22:37:26 * monqy 22:37:27 oerjan: Your version uses more memory than mine, so the process would be terminated sooner. 22:37:30 monqy 22:37:45 @karma monqy 22:37:45 monqy has a karma of 0 22:37:47 oerjan: 22:37:48 % Describe the dash-count of oerjan's swatter, please. 22:37:48 Unmatched '. 22:37:50 @karma+ monqy 22:37:50 monqy's karma raised to 1. 22:37:52 Deleted spam user account. 22:38:04 elliott: what do you think of zzo38's suggestion of an invalid IP address? it's quite clever 22:38:07 Wait, can I change my vote to zzo38? 22:38:11 ais523: it's as clever as it is confusing 22:38:13 shachaf: Yes. 22:38:20 zzo38 22:38:23 zzo38: But I removed that option :( 22:38:23 zzo38 22:38:23 AND monqy 22:38:39 i;m also voting for hello 22:38:51 elliott: Why? Is the name too long to fit in MediaWiki? 22:38:52 and stop using cologne blue 22:39:06 zzo38: I don't like it, because it's too many words. :( 22:39:12 Deleted spam account. 22:39:24 --THE VOTE IS NOW CLOSED-- 22:39:34 Thank you for participating. Well, thank the people who participated for participating. 22:40:05 s⃠p⃠a⃠m⃠ 22:40:14 elliott: Did anyone participate? 22:40:26 Also, open the votes so my suggested can get in. 22:40:28 shachaf: my client can't really render the crossed-out m properly 22:40:28 s⃠p⃠a⃠m⃠ 22:40:40 s⃠p⃠a⃠m 22:40:49 also, is there actually a combined character for doing that, or is that some sort of cunning combination of multiple combining characters? 22:40:54 (the m doesn't fit in the circle) 22:41:16 my client doesn't see any strange char at all 22:41:23 to the logmobile -> 22:41:38 helloerjan 22:41:51 22:41:56 elliott: did you ever look at that log where we XSSed oerjan? 22:42:03 22:42:07 ais523: i think so 22:42:14 Sounds like a toerjan horse 22:42:27 "troerjan" would work better, I think 22:42:32 also, is http://goat a valid URL? 22:42:40 it's missing the TLD, I think 22:42:46 ais523: It is if goat becomes a TLD. 22:42:46 if you ever get me with that, there will be some banning around here. 22:42:47 (and some would be goatse, and some wouldn't) 22:42:52 Which it will be, one day. 22:43:00 Trurl jan 22:43:05 elliott: that's a surprisingly bold statement to make 22:43:08 oerjan: Is there ever not banning around here when we inconvenience you in some way? 22:43:10 ais523: Many resolvers will add the local domain or whatever's in the search path; and how many networks there are without a goat? 22:43:14 ais523: You haven't seen my life plan. 22:43:20 elliott: very observant. 22:43:25 The last step is to pay a lot of money to register goat as a TLD 22:43:44 oerjan: By the way, I just made you a sysop. 22:43:47 "A room without books is like a network without a goat" -- Cicero 22:43:47 elliott: please don't actually do that 22:44:00 elliott: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA OK 22:44:11 > 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 22:44:12 102609391136443956281976666927457327617395154350170434031115347406889900446... 22:44:24 ais523: What, it's helpful! 22:44:38 elliott: but it's not helpful /enough/ 22:45:03 OK, I'll crat him instead. 22:45:14 oh, I was referring to the goat thing 22:45:21 not the sysopping oerjan thing 22:45:35 what did you /think/ I meant? 22:45:39 Oh. 22:45:41 I'm fine with sysopping oerjan 22:45:45 Well then! 22:45:46 oerjan: ENJOY. 22:45:53 ais523: But what if I want to register goat as a TLD? 22:45:55 Am I not allowed to? 22:46:00 it would be helpful 22:46:05 monqy: but not helpful /enough/ 22:46:31 things don't have to be helpful! 22:46:41 If I want to register goat and put, e.g. a picture of a goat there, that's totally OK. 22:46:53 that is not what TLDs are designed for! 22:47:01 stop polluting the TLD namespace! 22:47:10 goats aren't polution 22:47:11 goats are goats 22:47:14 goat is goats 22:47:15 goat 22:47:24 ais523: icann decided thats what they were for 22:47:30 and if companise are allowed to 22:47:33 goat should bet oo :'( 22:47:41 http://goat/o/ 22:47:46 * shachaf bets it all on oo 22:48:09 hey ais523, "Deleted spam account" or "Deleted spam user"? 22:48:15 & furthermore why (500 word minimum) 22:48:20 Apparently some squatter is squatting goat.ee 22:48:21 @dice 1d2 22:48:21 1d2 => 1 22:48:29 elliott: I thought voting was closed. 22:48:32 elliott: but I can only fit 510 characters on a line! 22:48:36 is there a goat.oo 22:48:40 ais523: OK, 1 word minimum. 22:48:48 shachaf: it is, we've gone from democracy onto dictatorship 22:49:01 And monqy is the dictator? 22:49:23 and hmm, normally I'd say "user" because it's used for the purpose of saying who did the editing, not what they edited via, but "account" seems to fit spambots better because they aren't actually people 22:49:30 a new spam user deleted summary every day 22:49:34 this is my promise 22:49:43 "keeping it fresh" 22:49:44 -!- pikhq has quit (Ping timeout: 248 seconds). 22:49:49 -!- pikhq_ has joined. 22:49:52 - monqy, promising, for the people 22:50:09 monqy: oh no, you've reminded me of why I stopped being a politician 22:50:23 (short version: I was too honest running for re-election, and only got 2 votes out of several thousand) 22:50:27 (I'm still wondering who the other one was) 22:50:39 how did you even get elected in the first place 22:50:40 did you lie 22:50:43 -!- Jafet has joined. 22:51:02 it was under a different system, in which I managed to get in unopposed several years in a row 22:51:15 so I didn't need to state my opinions at all 22:52:03 monqy: "user" or "account" 22:52:12 (I am merely consulting a few people in my role as dictator, not establishing a vote.) 22:52:36 toughe choice 22:52:49 a vote for "thing" 22:53:03 No. 22:53:04 No voting. 22:53:10 a nonvote for thing 22:53:15 a thing for thing 22:53:21 didn't Wikipedia eventually settle on the term "!vote"? 22:53:35 for things that were like votes in every way, except officially not being votes? 22:54:18 yse 22:54:19 *yes 22:54:21 it's amazing 22:54:36 The con-two-centsus. 22:54:56 Jafet: "Deleted spam user" or "Deleted spam account" & why (5 word minimum) thanks. 22:55:06 elliott: Why is my computer so loud and hot? :-( 22:55:12 And heavy. 22:55:19 And the battery life is so short. 22:55:21 I vote "Mickey Mouse". 22:55:32 Jafet: Nope! This isn't a vote. 22:55:41 shachaf: stop using it and these problems will go away 22:55:51 shachaf: Because you didn't follow my advice. 22:55:52 Except perhaps the heaviness 22:55:53 a vote for monqy and "Mickey Mouse" will be today's spam account deletion summary 22:55:58 ais523: I found your "saying who did the editing" argument convincing. 22:56:01 So I've gone for "user". 22:57:18 elliott: By the way, I'm pretty happy with it so far. 22:57:23 elliott: When do I stop being happy? 22:57:39 shachaf: Soon. 22:57:45 brb 22:57:47 Soon. 22:57:49 ais523: then I'll run the query on the DB 22:57:52 (after taking a backup, ofc) 22:58:11 how are you merging users directly on the DB? 23:05:22 !addinterp vote c printf("Your vote has been registered.\n"); 23:05:22 ​Interpreter vote installed. 23:05:34 !vote Cthulhu for president! 23:05:39 Your vote has been registered. 23:05:50 !vote 23:05:53 Your vote has been registered. 23:05:55 thanks 23:06:45 ^def vote ul (Your vote has been registered.)S 23:06:45 Defined. 23:06:46 For redundancy. 23:07:32 You could also say that they share the same record of registered votes, in a sense. 23:07:38 yeah 23:11:46 -!- kmc has joined. 23:18:32 !c printf("%d\n", strcmp("", "test")); 23:18:34 ​-1 23:18:45 !c printf("%d\n", strcmp("a", "test")); 23:18:47 ​-1 23:18:55 ais523: like this: http://sprunge.us/eeWX 23:19:37 elliott: change COMMIT to ROLLBACK first for testing 23:19:47 err, that'll do absolutely nothing, surely? 23:19:52 aren't ^ and $ identical commands? http://esolangs.org/wiki/Sortle 23:19:54 yep 23:20:03 then what's the point? 23:20:10 also, you miscapitalised "from" in "DELETE From watchlist" 23:20:18 oerjan: @ask graue 23:20:21 elliott: so you can inspect the situation before the rollback to see if it's what you expected 23:20:34 ais523: err, transactions don't work like that? 23:20:35 -!- tzxn3 has quit (Quit: Leaving). 23:20:43 they do if you do them slowly enough 23:20:52 wat 23:20:59 as in, you run it up to the rollback 23:21:01 then look at the state 23:21:06 then if it's not what you expected, rollback 23:21:23 oh, i see 23:21:28 but i was going to take a backup first 23:21:33 that's basically equivalent 23:22:15 except it's the difference between the change going live and the change not going live while you test 23:22:48 well, OK, but I'm going to set the wiki to read-only mode 23:22:56 so the worst that could happen is a minute's outage 23:24:03 ais523: anyway, do you really trust MySQL to isolate a transaction properly? :) 23:24:19 heh, I guess not :) 23:25:23 ais523: oh, and I'll keep the wiki read-only to scan through the account list to find any others we missed 23:27:21 OK, the wiki is officially read-only 23:27:22 perhaps take a backup too? 23:27:36 yes, I'm about to 23:29:24 Query OK, 3131 rows affected (37.67 sec) 23:29:26 that be a many spam 23:30:37 fizzie: I think these UPDATEs are running over every single element of the table. 23:30:42 It be a very slow. 23:31:50 A very, very slow. 23:32:05 oerjan: btw I hereby enlist you for help in going over the resulting user list to find any remaining spammers. 23:34:06 mysql> UPDATE logging SET log_user = @spam_user_id WHERE log_user IN (SELECT user_id FROM spammers) 23:34:06 -> UPDATE ipblocks SET ipb_by = @spam_user_id WHERE ipb_by IN (SELECT user_id FROM spammers); 23:34:06 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE ipblocks SET ipb_by = @spam_user_id WHERE ipb_by IN (SELECT user_id FROM ' at line 2 23:34:06 whoops 23:34:32 -!- kmc has quit (Quit: Leaving). 23:39:34 ais523: well, the rows-affected results look right 23:39:52 there are now 1371 users left, which is correct 23:40:18 (most of them are still spammers, ofc, but still) 23:40:22 commit time! 23:40:24 hmm, anyone here know how to go from a hexdump of a file to the actual file? 23:40:31 ais523: od, IIRC 23:40:34 oerjan: R U READY 23:40:40 elliott: it has a reverse-dump mode? 23:40:53 (I'm aSQLeep now, by the way.) 23:40:54 ais523: I think so 23:41:07 hmm, doesn't seem to 23:41:18 we're trying to recover a crashed website from people's browser caches 23:41:44 hmm, 23:41:45 OR u.user_name REGEXP '^\\d+ buy ' 23:41:45 hmm, I guess I can do this with a Perl oneliner 23:41:48 didn't work 23:41:52 as in, there's a ton of them still left 23:41:55 oh, hmm, might be cached 23:42:06 hmm, nope, that part just didn't work 23:42:18 http://esolangs.org/wiki/Special:Contributions/Deleted_spam_user heh 23:42:53 ais523: xxd has a reverse-dump mode; but Perl with some pack 'C*' and map hex split is what I've used. 23:43:04 fizzie: ASQLeep, eh? 23:43:22 Yes, as of now. 23:43:43 ah, it wants [[:digit:]] 23:43:44 wat 23:44:00 what? 23:44:40 OK, here we go again 23:44:42 vrooom 23:45:06 there go 48 more users :) 23:45:28 ais523: http://esolangs.org/w/index.php?title=Special:ListUsers&limit=5000 btw 23:46:15 yay, this actually worked 23:46:50 ais523: yep, but there's still a bunch left; it'd be nice to get the low-hanging ones before unlocking the DB 23:47:34 oh, I meant my reverse-hexdump thing 23:47:43 oh 23:47:57 | 2408 | Asd184900 | asd184900@asd.de | dsfgdsfgsfd | 0 | 23:47:58 hmm... 23:48:09 that matches the pattern 23:48:11 why wasn't it dropped? 23:48:16 oh 23:48:17 the email 23:48:24 meh, /me just removes the email requirement 23:48:27 nobody legit is going to have that username 23:48:42 can't you just delete the whole user database and let people re-register? 23:48:48 oh, they're all @asd.de 23:48:56 olsner: I refuse to do that 23:49:15 alright 23:50:59 ais523: haha, one of our users is called "Angela"; I wondered for a moment, but it turns out it's a spambot 23:51:07 heh 23:51:09 looks like deletion is the correct choice :P 23:52:09 ais523: how busy are you right now? 23:52:28 in the middle of this recover 23:52:56 ais523: hey, blognomic.com has some malware on it 23:53:03 some javascript redirects me to google.com 23:53:16 someone's been complaining about that recently 23:53:21 you might want to comment in the associated thread 23:53:42 I'm not sure what input I could provide, exactly 23:53:47 -!- augur has joined. 23:54:17 23:54:23 can't admins edit the template? 23:54:27 presumably removing that would fix it 23:55:23 oerjan: hey you 23:55:39 hm? 23:55:50 oerjan: how trustworthy are you 23:55:56 * oerjan isn't sure precisely what to do 23:56:02 very dubious 23:56:21 hmm, sounds good to me 23:56:23 what's your email 23:57:19 oerjan at a certain place called nvg in org 23:58:10 what, just nvg.org? 23:59:51 yes