--- Log opened Fri Mar 23 00:00:02 2012 |
--- Day changed Fri Mar 23 2012 |
00:00 | <@himi> | You poor boy |
00:00 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has joined #code |
00:00 | | mode/#code [+o Vash] by ChanServ |
00:00 | < Atreus> | Arch! |
00:02 | < maoranma> | Arch linux? |
00:02 | < Atreus> | I wanted to play too. |
00:03 | <@himi> | I've never looked at Arch, but I haven't heard anything /bad/ about them |
00:03 | < Atreus> | Basically it's slackware with package management. |
00:03 | < Atreus> | Or Gentoo with binary packages. |
00:03 | <@himi> | Ah |
00:04 | <@himi> | I always thought it was a RedHat derivative, but I guess someone out there cares enough about Slack to make it a little more likely to survive the modern world |
00:04 | < Atreus> | Actually Arch isn't derived from Slack. |
00:04 | < maoranma> | Or Hoopy with cool froods? |
00:04 | < Atreus> | They share a common ancestor though. |
00:05 | < Atreus> | Arch started as a package manager for Crux. |
00:08 | <@himi> | Funny how many people seem to want to run BSD without running BSD |
00:08 | < maoranma> | Let's see, the only things I can think off are Apophysis 7X, which allegedly should run under Wine |
00:09 | < maoranma> | And the Action Replay Code Manager and drivers |
00:09 | < maoranma> | I'm fairly certain that would require a VM |
00:09 | < ShellNinja> | Install Debian Unstable, and tell me how it functions with extended usage. I want to know. :P |
00:09 | < Atreus> | Linux has better support than BSD. |
00:10 | < maoranma> | Hell no, you run unstable and tell me what a bad idea it was |
00:10 | <@himi> | My experience has always been that Unstable is perfectly usable, aside from the occasional case where a major packaging change goes through and can cause large holdups in the update queue |
00:10 | <@himi> | Sid's not /dangerous/ to use as an everyday desktop OS |
00:11 | < Atreus> | Arch Linux testing: "Does it compile? Put it in testing." "Did anyone complain about testing breaking their system in the last month? Stick it in Core/Extra" |
00:11 | <@himi> | In fact, it's more usable than some of the alternatives out there |
00:11 | < ShellNinja> | himi: Oh, cool. Imma install that when I get a new computer, or I manage to break this installation beyond recovery. |
00:12 | < Atreus> | Arch Linux bug reporting: "The bug exists in upstream code. Not our problem. Make them fix it." |
00:12 | < maoranma> | Okay, so I have two votes Debian, one vote Arch |
00:12 | < Atreus> | My vote for Arch wasn't serious : |
00:12 | < Atreus> | I thought we were just shouting out the names of our choice distros :p |
00:12 | < maoranma> | Neither was my vote for Obama |
00:12 | < ShellNinja> | Zing. |
00:13 | <@himi> | Hey, at least your vote was constitutionally valid - I voted for the guy and I'm not even a US citizen |
00:13 | | * himi shiftyeyes |
00:13 | < Atreus> | I voted for Gordon Brown. |
00:13 | < Atreus> | How do you think I feel? |
00:13 | <@himi> | Just don't tell the Florida election commission |
00:14 | < Atreus> | (Well, New Labour...) |
00:14 | <@himi> | Atreus: I'm assuming you're French, since you seem to Hate England(tm)? |
00:14 | < Atreus> | I am ENglish. |
00:14 | < Atreus> | We are also allowed to hate England. |
00:14 | <@himi> | True |
00:14 | < maoranma> | Heh, plain Debian is 5th and Arch is 6th |
00:14 | < maoranma> | According to distrowatch |
00:15 | < Atreus> | I used Arch Linux before it was popular~ |
00:15 | < maoranma> | If he's french, he's rude to everyone, if he's english, he's required by law to be cross at everything |
00:16 | < maoranma> | Atreus: gtfo hipster |
00:16 | < Atreus> | By Jove will I write a mean letter about this to my local MP! |
00:16 | < Atreus> | "But I thought you were an anarchist and didn't believe in representative government." |
00:16 | <@Tamber> | "Yes, but then I grew up." |
00:16 | < maoranma> | Tamber: Vote plz. |
00:16 | < Atreus> | It's a quote from a sit com |
00:16 | < Atreus> | A very famous sit come. |
00:16 | | * Atreus youtubes it >.> |
00:17 | < Namegduf> | I don't believe in representative government. It's like a perfectly frictionless surface. |
00:17 | < Namegduf> | :P |
00:17 | <@Tamber> | Atreus, that's why I've probably never heard it. I don't watch TV. |
00:17 | <@Tamber> | maoranma, on? |
00:17 | < maoranma> | Namegduf: You too, vote |
00:17 | < Namegduf> | maoranma: I do |
00:17 | < maoranma> | Which linux distro I install |
00:17 | <@Tamber> | LFS. |
00:18 | < Namegduf> | LFS: Because delegation just isn't your thing. |
00:18 | < maoranma> | That's 92nd at distrowatch XD |
00:18 | <@himi> | Oh, hey |
00:18 | <@himi> | Tom's rootn'boot |
00:18 | | * Tamber wouldn't use it. It's possibly amusing/interesting to do once, but seems damn near impossible to actually manage as a usable setup. ?? |
00:19 | <@himi> | LFS as anything other than an exercise in learning will devolve into gentoo or similar |
00:19 | <@himi> | With all the associated crap |
00:19 | <@himi> | I think the LFS people realise that, so they don't try |
00:19 | <@Tamber> | I would think it'd more devolve into a bad copy of Gentoo that stagnates after the first week or so because maintaining a system like that is Hard. |
00:20 | < maoranma> | Wow, with a capital H and everything? |
00:20 | <@Tamber> | Indeed. |
00:21 | <@Tamber> | Probably fine for the people who roll their own package managers in an afternoon's exercise, before going to hack on something in assembler for their day job, though. |
00:21 | < Namegduf> | It's not so much hard as all that |
00:21 | < maoranma> | haha |
00:21 | < Namegduf> | As irritatingly time consuming |
00:21 | < Namegduf> | Like I said, it's failing to delegate work out, primarily out to a package manager |
00:21 | < Namegduf> | I consider a distro as a thing which is there to do work for me |
00:22 | <@Tamber> | Well, yes; this is what the computer is for, is it not? :) |
00:22 | < Namegduf> | Right. |
00:22 | <@himi> | I think it qualifies as capital-h-Hard - you just have to look at the difficulties that Debian have had over the years, and the insane amount of quality control they've had to implement |
00:22 | < Namegduf> | True; the other thing the distro does is resolve all those kind of interoperability issues. |
00:22 | < Namegduf> | Ship compatible versions of all software and libraries. |
00:22 | < Namegduf> | Well. |
00:22 | <@himi> | Unless you cut the problem down to something manageable it's really difficult |
00:22 | < Namegduf> | A *competent* distro. |
00:23 | < Namegduf> | (This is why I don't use Gentoo or Arch, whose philosophies don't seem to revolve around doing work for me, and in the case of Gentoo whose capability to resolve issues for me is seriously in question. |
00:23 | < Namegduf> | They're not providing the service I'm looking for. |
00:24 | <@himi> | I think you can have something like Gentoo if you cut the problem down to a basic distro with basic apps (for some values of 'basic') |
00:24 | < Namegduf> | You can have a source-based distro with a ports-like system |
00:24 | <@himi> | If you want to provide the kitchen sink as well, you have an insanely difficult problem which needs to be solved on the kind of scale that Debian has implemented over the years |
00:25 | < Namegduf> | I do not want the featureset cutting down any more than I want my calculator to have multiplication removed so I have to build it out of additions. |
00:25 | | * Tamber mostly uses Gentoo because source for everything (and, implicitly, development tools + headers, etc for everything.) ...which made sense back when I had time to actually tinker and write my own code. Less so when my day consists of "drag self out of bed at 6, drag self back into the house at 1800 and pass out by 2100" Feh. |
00:25 | < maoranma> | I should ask too, /usr; own partition or no? |
00:25 | <@Tamber> | maoranma, not. |
00:25 | < Namegduf> | Not. |
00:25 | <@himi> | Namegduf: if you don't guarantee that the stuff in ports will work properly, it's fairly easy |
00:25 | < Namegduf> | We live in a day and age where you use rescue media or a rescue partition. |
00:26 | < Namegduf> | himi: Yeah. I could setup something to match Gentoo in a day. :P |
00:26 | <@Tamber> | Namegduf, or as it's been put recently "The need for the minimal system in /bin has gone; that's what the initrd is for." |
00:26 | <@himi> | If you want to guarantee that it all works at some basic level you do a whole lot more work |
00:26 | < maoranma> | So you believe it's just entirely unnecessary? |
00:26 | <@Tamber> | (Or something like that.) |
00:26 | | * Namegduf used Gentoo for a year before dumping it because it would develop a system-breaking bug once a week. |
00:26 | < Namegduf> | maoranma: Yes. |
00:26 | <@Tamber> | It's not doing that for me! |
00:26 | <@Tamber> | ...but then, I don't have the time to update every week. :p |
00:26 | < maoranma> | Does it cause issues doing it on it's own partition? |
00:26 | <@Tamber> | So more "once an update/upgrade", than week. |
00:26 | <@himi> | maoranma: /home, /var and /tmp, posible /usr/local though that's not generally worth it |
00:27 | < Namegduf> | maoranma: No. I suggest if you're going to do that you put every other directory on its own partition, though, too. |
00:27 | <@himi> | /var and /tmp because they can fill up unpleasantly |
00:27 | <@Tamber> | maoranma, only if that partition isn't mounted automagically on boot by the initrd. |
00:27 | < Namegduf> | I mean if you're starting from the premise that more partitions == better |
00:27 | < Namegduf> | Then may as well go the whole hock |
00:27 | <@himi> | But /tmp is often just a tmpfs mount these days |
00:27 | < Namegduf> | The /var thing is a good reason. /usr/local won't do anything you don't expressly do to it; I wouldn't. |
00:28 | < Namegduf> | (On package managed distros it is expressly reserved for the user to install things) |
00:28 | < maoranma> | Hmm |
00:28 | < Atreus> | Personally I'd just go with ~ and / |
00:28 | < Namegduf> | /tmp, as they say, is tmpfs nowadays. It'd make sense if it wasn't. |
00:28 | <@himi> | Yeah, I normally just go with /var if I'm building a server, otherwise whatever |
00:28 | <@Tamber> | (Since a lot seems to rely on things in /usr now. Hence why there's a merge being discussed to bring Linux more in line with other UNIX; with everything being in /usr/, and compatibility simlinks at /bin, /sbin, /lib, etc.) |
00:28 | < Atreus> | There doesn't, really, seem to be a big point to putting everything on seperate partitions. |
00:29 | < Namegduf> | There isn't nowadays. |
00:29 | < Namegduf> | There used to be some, but those technical reasons don't apply to you. You would know if they did. |
00:29 | <@himi> | Atreus: the only reason right now is if you have something that might fill the partition |
00:29 | < Atreus> | If you want to mess around with different distros putting ~ and /var on different partitions can be handy. |
00:29 | <@himi> | Unexpectedly |
00:29 | < maoranma> | hmm |
00:29 | < Atreus> | Although /var less so. |
00:29 | <@himi> | Atreus: naah - too much stuff goes under /var/lib |
00:30 | < Namegduf> | Mixing /var across distros will break horribly |
00:30 | < Namegduf> | Mixing ~ *might* but will probably not. |
00:30 | <@himi> | Each distro really needs its own /var |
00:30 | < maoranma> | We'll assume I'll stick with whatever distro I have |
00:30 | < Namegduf> | (Different versions of applications, same settings directories) |
00:30 | < Atreus> | If that's really a problem, use different user names. |
00:30 | <@himi> | /home /should/ never be a problem - the only thing that might be problematic is setting conflicts, and apps that you install yourself |
00:31 | < Namegduf> | Atreus: That loses the whole reason for putting it on another partition, doesn't it? |
00:31 | < maoranma> | And also, assuming that I'm not going to exceed 4GB of ram, but my CPU is 64bit, should I do a 64 bit distro or just stick to a 32bit one? |
00:31 | < Namegduf> | It's not shared anymore. |
00:31 | < Namegduf> | I mean, if you want to transfer files they can mount each other. |
00:31 | <@himi> | maoranma: go x86_64 |
00:31 | < Atreus> | Namegduf: Actually, the reason I suggestd it was because a lot of distros format ALL THE THINGS! automagically. |
00:31 | <@himi> | Always |
00:31 | < Namegduf> | Atreus: Name one |
00:31 | < Namegduf> | Preferrably a common one |
00:31 | < Namegduf> | Debian doesn't |
00:31 | < Atreus> | Ubuntu's default. |
00:31 | < Namegduf> | Gentoo doesn't do anything automagically |
00:32 | < Namegduf> | Default doesn't sound very automagic |
00:32 | < Atreus> | *default behavior. |
00:32 | <@himi> | Ubuntu by default will never overwrite a partition scheme |
00:32 | < Atreus> | I don't distro hop much so I don't know what the kids are into these days. |
00:32 | < maoranma> | himi: For deb, is that amd64? |
00:32 | <@himi> | It'll resize an existing one, but it doesn't overwrite it |
00:32 | <@Tamber> | Mint can have that effect, with their confusing layout of the partition editor. (Think you've selected manual, you've actually selected "go on, have the whole disk!" kinda thing.) |
00:32 | <@himi> | maoranma: yes |
00:33 | < maoranma> | Wow, 8 DVDs |
00:33 | <@Tamber> | (At least, IIRC. Bob's screwup saved me from doing that to myself. ??) |
00:33 | <@himi> | In the x86 world you /always/ come out ahead going 64 bit (barring an occasional weirdness here and there) |
00:33 | < maoranma> | Apparently they wanted to include the internet |
00:33 | <@Tamber> | maoranma, you only need the first one. (If that.) |
00:33 | <@himi> | maoranma: grab the first, do the install from the network |
00:33 | <@Tamber> | netinst disks! |
00:33 | <@himi> | You can generally get by with just the netinst image |
00:34 | <@himi> | And if you feel like futzing around with a tftp server and so forth, you can do it without downloading /anything/ |
00:34 | < maoranma> | Yea, I only have DVDs though, but I suppose wasting space on a single disk is better than burning 8 |
00:34 | <@himi> | Debian is designed with network installation in mind |
00:35 | < Namegduf> | For Debian, get the netinstall disk |
00:35 | <@himi> | Network /everything/, really |
00:35 | < Namegduf> | Install minimal |
00:35 | < Atreus> | I know in the archlinux world it's quite popular to make /var/cache/pacman a network filesystem. |
00:35 | < Namegduf> | And then install what you want via apt once you're running. |
00:35 | < Atreus> | But that's a work around a particular problem. |
00:35 | <@himi> | The nice thing about the netinst images is that you won't then have to go in and remove references to the install DVDs when you're done |
00:35 | < maoranma> | Namegduf: I think that's what I'll do |
00:36 | < maoranma> | I don't use most of the default software anyway, hehe |
00:36 | <@himi> | Debian doesn't have defaults - the base install is /really/ base |
00:36 | < maoranma> | Like... "here is lynx and a shell, enjoy."? |
00:37 | <@himi> | It doesn't even have /rsync/, possession of which is one person I know's definition of a 'real' computer |
00:37 | < Namegduf> | It ships with enough to boot and networking tools, a shell, a package manager, and I think an SSH server. |
00:37 | < Namegduf> | i.e. enough to comfortably install what you need. |
00:37 | | * himi nods |
00:37 | < maoranma> | I'm assuming Deb defaults to using Gnome though? |
00:37 | < Namegduf> | It has no defaults. |
00:37 | < Atreus> | Inevitably netinstall distros always end up missing that -one- wireless driver/firmware that you need |
00:37 | <@himi> | You then basically say "I need to install a web server, DNS server and windows file server - apt-get install apache bind9 samba' |
00:37 | < Namegduf> | It does not ship with a desktop installed. |
00:38 | < Namegduf> | apt-get install aptitute |
00:38 | < Namegduf> | *aptitude |
00:38 | < Namegduf> | Then run aptitude |
00:38 | <@himi> | heh |
00:38 | <@Tamber> | Atreus, "netinstall the firmware you need to get that wireless card that's your only connection to the net, so you can connect to the net to netinstall the... oh"? :p |
00:38 | < Namegduf> | You have a psuedographical CLI package manager you can browse through and search with /whatever |
00:38 | | * Tamber had that fairly recently. |
00:38 | < Atreus> | I've had worse. |
00:39 | < Namegduf> | Yeah, that's why Debian's netinstall is not totally minimal. |
00:39 | < maoranma> | Oh, so I'll need to install Gnome manually? |
00:39 | < Namegduf> | Yes. |
00:39 | <@Tamber> | (Solved now with a copy of the firmware on the pendrive that's attached to the wireless USB adapter. :) |
00:39 | < maoranma> | That sounds fun |
00:39 | < Namegduf> | Google will tell you a metapackage for the full GNOME desktop |
00:39 | | * himi hit that with a laptop just the other month - with a bloody Intel chipset, curse you all |
00:39 | < Namegduf> | I remember there being one |
00:39 | <@himi> | gnome-desktop, I believe |
00:39 | < Atreus> | I've had "Boot the kernel so you can load the firmware you need to connect to the net so you can download and build a working kernel. |
00:39 | < Namegduf> | That sounds likely. |
00:39 | <@Tamber> | himi, My issue was with Ralink chipsets. ;) |
00:40 | < Namegduf> | Yeah, Linux tries not to be Windows |
00:40 | <@himi> | maoranma: you do /one/ command, and it installs everything you need |
00:40 | < Namegduf> | i.e. useless until drivers are installed via pendrive |
00:40 | <@Tamber> | [Two different ones; the latter one actually *does* work, though!] |
00:40 | < Namegduf> | But sometimes it can't help it |
00:40 | <@himi> | apt-get install gnome-desktop pulls in /everything/ the gnome-desktop needs, and sets it all up |
00:40 | < maoranma> | himi: Right, fun |
00:40 | <@himi> | You're not doing a manual install of anything |
00:40 | < maoranma> | As in, don't have to fiddle with for 12 hours |
00:40 | < Namegduf> | Yeah. |
00:40 | <@himi> | Magically, it will all Just Work(tm) |
00:40 | < Namegduf> | Debian is not a big fan of making people fiddle with shit |
00:40 | <@himi> | This is why Debian is The Best Distro |
00:41 | < Namegduf> | It is there to work for you |
00:41 | <@Tamber> | RT3070 will scan for, and find, wireless networks; but damned if I can get it to connect to one. RT73 scans, finds and connects just fine. (Which is good, because that's what my wireless adapter uses :) |
00:41 | < Atreus> | A party trick I used to pull is installing modern Arch Linux from an iso image from 2006. |
00:41 | < Atreus> | Despite the package manager on the iso being incompatible/unusable. |
00:41 | < Namegduf> | Hmm. |
00:41 | <@himi> | Tamber: yeah, that was my problem with one of it igwlan ones |
00:41 | <@Tamber> | Blech |
00:41 | < maoranma> | Atreus: Did that get you lots of chicks? |
00:41 | <@himi> | I ended up just plugging it into a wired connection |
00:41 | < Atreus> | s/chicks/dicks/ |
00:41 | < Atreus> | And no. |
00:41 | < Namegduf> | That's usually the best thing. |
00:41 | <@Tamber> | Atreus, sounds like the Fun I had trying to netboot Gentoo on the Octane. |
00:42 | < Namegduf> | Install with wired |
00:42 | < Namegduf> | To get yourself firmware |
00:42 | < maoranma> | This netinst disk is small, is it safe to make it a USB installer? |
00:42 | < Namegduf> | That's a nicer thing than the pendrive approach. |
00:42 | <@himi> | maoranma: yes |
00:42 | < Atreus> | My next door neighbour back home is a Windows man. Watching him use a linux recovery CD to fix Windows is painful. |
00:42 | < Namegduf> | Yes, but it has been a LONG time since I did it. |
00:42 | < Atreus> | Because it's full of overly complicated shell scripts. |
00:42 | < Namegduf> | So I can't advise on the methodology needed. |
00:42 | <@Tamber> | Could download the stage 3, but it was so different you couldn't actually run the executables because of glibc+kernel changes. |
00:42 | <@himi> | unetbootin worked for me |
00:42 | < Atreus> | And I just want to type the thing that does exactly what needs doing >.> |
00:42 | < maoranma> | that's what I usually use |
00:42 | < maoranma> | save me a DVD anyway |
00:43 | < Atreus> | JUST GIVE ME A BOOTABLE KERNEL AND THE NETWORK DRIVERS TO USE IT! |
00:43 | <@himi> | . . . and something to pretend it's init |
00:43 | < Atreus> | (bash, lynx and wget would be nice too) |
00:43 | <@himi> | busybox! |
00:43 | < Namegduf> | Atreus: I think Debian lacks lynx |
00:43 | < Namegduf> | But probably ships with wget |
00:43 | < Namegduf> | apt-get install lynx |
00:43 | < Namegduf> | And there you go |
00:43 | <@himi> | Screw lynx |
00:43 | < Atreus> | You can use bash instead of init iirc. |
00:43 | <@Tamber> | lynx? You need that? You don't just parse the HTML in your head?! |
00:43 | <@himi> | Use links |
00:43 | | * Tamber ducks |
00:44 | | * maoranma tosses Tamber out a window |
00:44 | <@himi> | Atreus: yeah, but if you use busybox you get a whole lot more than just the shell |
00:44 | | * Tamber is defenestrated. Deserved that. |
00:44 | < Atreus> | Your poor fenestrals. |
00:44 | | * Atreus forms the society for the protest of mistreatment of fenestrata. |
00:44 | | * Tamber likes the word 'defenestrate' |
00:45 | <@Tamber> | It sounds very pointy. |
00:45 | < maoranma> | I like fenestrata, it's good with alfredo sauce. |
00:45 | | * himi runs lynx and it loads up the lynx.isc.org site, the first line of which says "Lynx is the text web browser." |
00:45 | < Atreus> | Fenestrum, iirc, is latin for window. |
00:45 | < maoranma> | Yea |
00:45 | < maoranma> | Not A |
00:45 | < maoranma> | THE. |
00:45 | < Atreus> | Defenestration was a bad 18th century pun in a European political cartoon (Prague I think). |
00:45 | <@himi> | No qualification, no equivocation, just "the" text web browser |
00:45 | < Atreus> | >.> |
00:46 | <@Tamber> | transfenerate! |
00:46 | < Atreus> | English, being English, got Prague drunk and beat them up for their lunch money and syntax. |
00:47 | | You're now known as TheWatcher[T-2] |
00:47 | <@himi> | Holy crap, Lynx 2.8.1 was under development in 1998, and they're now up to 2.8.7 |
00:47 | < Atreus> | If English as a programming language it'd be C++. |
00:48 | < maoranma> | I figured it's be perl. |
00:48 | < maoranma> | perl, I figured it'd be. |
00:48 | < Atreus> | Or rather, it'd be C++ with support for dynamically loading Pascal at run-time. |
00:48 | <@Tamber> | himi, uses the Hurd development schedule, then? |
00:48 | <@himi> | Atreus: I prefer to think of it more like one of the lisp variants |
00:48 | < maoranma> | It'd be perl, I figured. |
00:48 | < Atreus> | himi: Not enough parans. |
00:48 | <@himi> | Not all lisp variants need parentheses |
00:48 | <@himi> | Some of them make them up as they go along! |
00:49 | <@himi> | It might actually be brainfuck |
00:49 | <@Tamber> | Ooh, mixing all the worst bits of lisp and python? :p |
00:49 | < Atreus> | English can't be perl. |
00:49 | <@Tamber> | Atreus, too many vowels? |
00:49 | < Atreus> | I've never seen anyone confuse English for line noise! |
00:49 | <@Tamber> | hee |
00:49 | < maoranma> | No, it's makes too much sense. |
00:49 | <@TheWatcher[T-2]> | Perl makes sense |
00:49 | < Namegduf> | Man, English-like programming languages. |
00:49 | < Namegduf> | Annoy me so much. |
00:49 | <@Tamber> | "I before E, except after C; and wherever else we decide it doesn't go, this week" |
00:50 | <@himi> | No, perl probably maps to some kind of creole |
00:50 | < maoranma> | Namegduf: Inform 7? |
00:50 | < Namegduf> | maoranma: I was thinking the Ruby tricks |
00:50 | < maoranma> | Or that |
00:50 | < Namegduf> | It's like that exercise where you have the word "blue" written in red. |
00:50 | < Atreus> | Tamber: A bit like a badly designed and documented API? |
00:50 | <@himi> | Atreus: so C++? |
00:50 | < maoranma> | Oh hay! I get to go back to using Inform 7 in Linux! |
00:50 | < Namegduf> | It's hard to say what colour it is because your brain parses it as English. |
00:50 | <@Tamber> | Namegduf, IDENTIFICATION DIVISION. ... |
00:50 | | * Tamber runs! |
00:50 | < Atreus> | rmFoo except when it's removeFoo except when it's remove_foo... |
00:50 | < Atreus> | himi: Full circle we have come! |
00:50 | < maoranma> | hurry up bittorrent! |
00:51 | <@himi> | But I have more respect for English than I do for C++ |
00:51 | < Namegduf> | Similarly, when reading English-like code my English parser and language parser cross over each other. |
00:51 | <@Tamber> | Atreus, except when it's rmv_Foo, or delFoo, del_foo, ... |
00:51 | <@himi> | Namegduf: YES |
00:51 | < Namegduf> | It tries to read it as English when I'm trying to parse out the constructs. |
00:51 | < Atreus> | English built up over a long and colourful history ending with the Roman receding from Britania... |
00:51 | < Atreus> | C++ has no such excuse. |
00:51 | <@himi> | Programming languages are /not/ human languages |
00:51 | < Namegduf> | Yes. |
00:52 | < Namegduf> | The other thing like that is "foo if x else bar" |
00:52 | < Namegduf> | Because I parse top to bottom, left to right |
00:52 | < Namegduf> | And it turns out my brain's language parser is really shitty at backtracking |
00:52 | < Namegduf> | And has no readahead |
00:52 | < Atreus> | foo if x else bar is okay in a list comprehension though. |
00:52 | <@himi> | heh |
00:52 | < Atreus> | Dunno why. |
00:53 | <@himi> | Human languages love context |
00:53 | < Atreus> | Or rather foo for x in y |
00:53 | < Namegduf> | Atreus: I would not be able to parse it as flow control, BUT in a list comprehension it is nicely contained and I can treat the whole thing as a block in the outer flow control. |
00:53 | < Namegduf> | for x in y is fine. |
00:53 | < Namegduf> | "for" is introducing a loop ahead of time. |
00:53 | < Atreus> | Well, foo if else isn't flow control... |
00:53 | < maoranma> | cake for desserts in menu |
00:53 | < Atreus> | I've always thought of foo if else as being C/C++'s ? operator. |
00:53 | <@himi> | I have to admit, I tend to write most languages as if they're C, so I avoid that sort of crap |
00:54 | <&McMartin> | Atreus: It is, which is why Python was so slow to add it |
00:54 | < maoranma> | If I stop responding shortly, it's because my cat has lacerated me trying to get a male mosquito |
00:54 | < Atreus> | I've always thought of foo if else as being an operator rather than flow control. |
00:54 | | * Atreus shrugs. |
00:55 | <@himi> | Distinction? |
00:56 | < Atreus> | This may not be an accurate model of what goes on in hardware land. |
00:56 | < Atreus> | But it does mean I don't have problem building a model of it in my mind. |
00:56 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection reset by peer] |
00:56 | < celticminstrel> | I call it the ?: operator. |
00:57 | < Namegduf> | Atreus: It'd be an operator which decided which statement to run. |
00:58 | | You're now known as TheWatcher[zZzZ] |
00:58 | < Atreus> | Particularly since the kind of stuff you're use foo if-else for is in an expression like "a // b + (1 if a % b>=b//2 else 0)" |
00:59 | <@himi> | Any flow control is just chained operators - some languages provide constructs that emulate a complex single operation with a single 'operator', but the distinction is all in the language definition not in the logic |
00:59 | < maoranma> | mIRC has an identifier for that, $iif |
01:04 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:04 | < Namegduf> | himi: No. |
01:05 | < Namegduf> | himi: In most imperative languages, flow control is done with statements. |
01:05 | < Namegduf> | The "if statement", for example. |
01:05 | < Namegduf> | Not the "if operator". |
01:05 | < Atreus> | I am not sure this is a useful distinction in this case. |
01:06 | | * gnolam waits for someone to Erlang everyone. |
01:06 | < Atreus> | Just because it is correct does not mean it is -useful- :p |
01:06 | <@himi> | But an if statement is made up of an operator and its arguments |
01:06 | < Namegduf> | No, it isn't. |
01:06 | < Namegduf> | it's made of a KEYWORD, followed by those things. |
01:06 | <@himi> | um |
01:06 | < celticminstrel> | Meh. |
01:06 | <@himi> | When you get down to it, you're talking about something that the machine will execute |
01:06 | < Namegduf> | And yeah, I guess it's like distinguishing between an operator and a constant. |
01:06 | < celticminstrel> | The distinction is pretty much just of terminology and convention/ |
01:06 | < Namegduf> | No, it isn't. |
01:07 | < Namegduf> | They ARE terminology. |
01:07 | < Atreus> | I am far too hungry to pay attention to this argument. |
01:07 | < celticminstrel> | Thinking of flow control statements as operators doesn't seem at all inconsistent to me. |
01:08 | <@himi> | My point was that you get exactly the same end result whether you talk about if statements or branch operations at the machine level |
01:08 | < Namegduf> | I guess your emotional response completely trumps any discussion, celticminstrel., |
01:08 | < celticminstrel> | ...? |
01:08 | < Atreus> | Don't functional languages implement/present if as a function? |
01:08 | < Namegduf> | Some might. In THOSE, they might be operators. |
01:08 | <@himi> | The language is providing a construct that maps to the operators the machine uses - the distinction is a construct of the language, not a function of the logic |
01:09 | < Namegduf> | The machine doesn't have operators. |
01:09 | < Namegduf> | It has instructions. |
01:09 | <@himi> | They're /useful/ distinctions, because they make the language easier to work with |
01:09 | < celticminstrel> | I don't really think it makes sense to say something is or isn't an operator based on which language you're speaking. |
01:09 | < Namegduf> | They make it possible to work with. |
01:10 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:10 | <@himi> | Namegduf: define operator? |
01:10 | < Atreus> | Flow control doesn't exist in assembly either. |
01:10 | < Namegduf> | Yes it does. |
01:10 | < Atreus> | You just have Jump statements. |
01:10 | < Namegduf> | Conditional jumps are flow control. |
01:10 | < Atreus> | Err, not assembly. |
01:10 | <@himi> | I'm pretty sure we're talking at cross purposes |
01:10 | < Namegduf> | They're basically the most classical form of it. |
01:10 | < Namegduf> | We're talking about language syntax. |
01:10 | < Namegduf> | Language syntax is as defined by the language spec. |
01:11 | <@himi> | You can't have a turing-complete language without flow control |
01:11 | < Atreus> | Flow control is just a model of a conditional jump. |
01:11 | < Namegduf> | In the imperative languages being discussed, the syntax has as much a distinction between an operator and a statement as English has between a full stop and a sentence. |
01:11 | < Atreus> | It's a very -useful- and can't think the word model of it. |
01:11 | < Atreus> | But it's a model none the less. |
01:12 | <@himi> | Namegduf: what exactly do you mean by operator? |
01:12 | < Namegduf> | himi: As defined by the specification of, say, C. |
01:12 | < Namegduf> | Since it is one of the languages you are making your assertions about. |
01:12 | < Atreus> | This does not mean, however, that it's the -only- model for a conditional jump. |
01:12 | < Atreus> | Intuitive! |
01:12 | < Atreus> | That's the word I was trying to think of. |
01:13 | <@himi> | What's the distinction between a keyword and an operator? |
01:13 | < Namegduf> | Uh |
01:14 | < Namegduf> | "n many languages, such as C and similar environments like C++, a keyword is a reserved word which identifies a syntactic form." |
01:14 | < Namegduf> | That works. |
01:14 | < Namegduf> | A keyword is a thing which defines the syntax of the following code. |
01:15 | < Namegduf> | At least, the relevant keyboards are, and it is a thing they can do that operators cannot. |
01:15 | < Namegduf> | *keywords |
01:15 | < celticminstrel> | Keywords can be operators. See sizeof. |
01:16 | < Namegduf> | Contradicts nothing I just said. |
01:16 | < Namegduf> | Please don't work by rough associations, it makes reasoning hard. |
01:16 | < Namegduf> | Keywords and operators are overlapping sets. Keywords can do things operators can't. |
01:16 | <@himi> | Like what? |
01:17 | < Namegduf> | Like *define the syntax of the following code. |
01:17 | <@himi> | Why can't an operator do that? |
01:17 | < Namegduf> | Because the definition of an operator relevant to this conversation, the C one, as I said we were using when we asked above |
01:17 | < Namegduf> | Says they can't |
01:18 | < Namegduf> | Also because reading halfway into a syntactic form before the form is defined is stupid and painful for both the machine and a human, so it'd be silly to make it possible |
01:18 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:19 | <@himi> | I think you'll find that my point wasn't restricted to C, it was a general point about programming languages |
01:19 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has quit [Ping timeout: 121 seconds] |
01:19 | < Namegduf> | There's no general definition of an operator. |
01:19 | < Namegduf> | So that's not possible. |
01:19 | <@himi> | C defines things one way, other languages ................ |
01:19 | <@himi> | That's my /point/ |
01:19 | | Attilla [Obsolete@Nightstar-eb2a44e1.threembb.co.uk] has joined #code |
01:19 | < Atreus> | Operator = one that operates. |
01:20 | < Namegduf> | No. |
01:20 | < Atreus> | I haz general definition! |
01:20 | | * Atreus ducks, |
01:20 | <&McMartin> | Everything is a lambda. |
01:20 | < Namegduf> | himi: I somehow doubt that, given you didn't say anything even vaguely on those lines above, but maybe you just failed to communicate. |
01:20 | <@himi> | It's up to the language definers to come up with a useful model for mapping program logic to the machine level |
01:20 | < Namegduf> | himi: At the machine level, it's all data interpreted as instructions. |
01:20 | < Namegduf> | An operator is a statement like an operator is a constant. |
01:21 | < Namegduf> | In that they're all just data. |
01:21 | <&McMartin> | The question is, "what instructions *are* those" |
01:21 | < Namegduf> | But it's irrelevant anyway. |
01:21 | <@himi> | An operator is part of a statement the same way that a keyword is part of a statement, and the only distinction to be made between them is up to the whim of the language designer |
01:21 | <&McMartin> | This is assuming your language bothers with statements at all, which, for example, C does not. |
01:22 | < Namegduf> | An operator is a part of an expression the same way that a constant is part of an expression, and the only distinction to be made between them is to the whim of the language designer. |
01:22 | < Namegduf> | Bo, sorry, but |
01:22 | < Namegduf> | Being different parts of a thing does not make two things the same |
01:22 | <&McMartin> | himi's statement is true and yours is not. |
01:22 | < Namegduf> | That doesn't make any sense at all |
01:22 | <&McMartin> | Here's how. |
01:22 | <&McMartin> | increment x 3 <-- statement |
01:23 | <&McMartin> | x + 3 <-- expression |
01:23 | <&McMartin> | add (x, 3) <-- also expression |
01:23 | <&McMartin> | (possibly statement, depending on language semantics) |
01:23 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:23 | <&McMartin> | A "good" compiler will notice all of these and use a single instruction if possible to do it, but it doesn't *have* to; it can turn it into load-operate-store or pure-operate-with-no-register-spilling if it wants. |
01:24 | < Namegduf> | His statement is only true for a very very liberal reading of "the same way". |
01:24 | <&McMartin> | But then you've got, say, (+3) x where (+3) is a partially applied function. Still semantically identical, and might even compile to the same thing sometimes, but when it *doesn't* it's going to look *loads* different. |
01:24 | < Atreus> | Come on pizza. Cook, I am hungry. |
01:24 | <&McMartin> | Well |
01:24 | < Namegduf> | Which loses any actual implication that they're the same thing. |
01:25 | <~Vornicus> | wait wait |
01:25 | <&McMartin> | The assumption here is that this *isn't* Python or Haskell. |
01:25 | < Namegduf> | Which was the point. |
01:25 | <~Vornicus> | C doesn't bother with statements? |
01:25 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:25 | <&McMartin> | Vorn: Everything in C is either a block construct or an expression. |
01:25 | <~Vornicus> | Ah ah |
01:25 | <~Vornicus> | I thought a block construct was considered a statement |
01:25 | <@himi> | I'll note I was using a relatively generic notion of statement, which was coloured by being a C programmer |
01:26 | <&McMartin> | That's a little dodgy, when you compare it to Python's or Pascal's notions of statements. |
01:26 | <~Vornicus> | where Python2 has forinstance "print" being a statement? |
01:26 | <&McMartin> | Yes. |
01:26 | <@himi> | I'm /trying/ to make an argument that isn't constrained to C and C-alikes, but I'm not making it very well |
01:26 | <&McMartin> | The thing is, the only reason that in "x + y" you can maybe treat x and + as the same is because that + is actually a function invocation. |
01:26 | <&McMartin> | In, say, C, it is not. |
01:27 | <&McMartin> | In C++, whether it is or not requires analyzing the entire program. -_- |
01:27 | <&McMartin> | In Python or Haskell it *always* is. |
01:27 | <&McMartin> | In java whether it is or not depends on whether or not x and y are strings. |
01:28 | < Namegduf> | The C89 spec is unavailable |
01:28 | < Namegduf> | THe GNU C Manual for GCC describes them as statements |
01:28 | < Namegduf> | http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Statements |
01:28 | <@himi> | If I was at home I'd use my copy of K&R, but I'm not |
01:28 | < Namegduf> | But I am unsure whether that is strictly correct or not. |
01:28 | < Namegduf> | Oh, yeah, I have one of those. |
01:29 | < Namegduf> | Appendix A9: Statements |
01:29 | <@himi> | And this is why I was referring to statements - its coloured by the language I'm most familiar with |
01:29 | < Namegduf> | Anyways. |
01:29 | <&McMartin> | The C++ book calls things like for and switch statements |
01:29 | <&McMartin> | Which I guess is OK |
01:29 | < maoranma> | But in the event someone has a gun to our heads and we need to say if it's a statement or not, we need to know |
01:30 | <&McMartin> | Anyway, yes, not all languages treat arithmetic as a special form |
01:30 | < Namegduf> | Anyways, I am realising that this argument is silly and off the original point. |
01:30 | <@himi> | But in any case, I think I'm insufficiently coherent at the moment to make this argument |
01:30 | < Namegduf> | Yes, but we were talking about C. |
01:30 | < Namegduf> | I was specifically asked what I was defining as "operator" and I said "C's definition". |
01:30 | <&McMartin> | In C, arithmetic's a special form, more or less; no operator overloads means that there's no difference between those and keywords. |
01:30 | <@himi> | Namegduf: we started talking about C and '?:', but we expanded |
01:30 | < Namegduf> | himi: And I rejected that expansion on the grounds that there's crap all you can say generally |
01:31 | < Namegduf> | The languages all use their own ideas of what these things are defined as |
01:31 | <@himi> | . . . yes |
01:32 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:32 | <@himi> | If and ?: are the same thing, but one's a flow control keyword and one's an operator as far as C is concerned |
01:32 | < Namegduf> | Define "same thing". |
01:32 | < Namegduf> | Because I think that is a problem. |
01:32 | < maoranma> | c lets you shoot yourself in the foot. perl lets you die+qq%@{[++($;=(j)x+length),${+chr}=~m~([^]/[^]+)$~,o.++($a=y=1-4=dwim=r)]}s$/% for~~24 |
01:33 | < Namegduf> | I don't understand exactly what your claim is. |
01:33 | <~Vornicus> | "if" and ?: are not at all the same thing |
01:33 | <@himi> | An if else block is functionally equivalent to ?: |
01:33 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:33 | <~Vornicus> | Nowhere near it |
01:34 | < Namegduf> | No; you can put a loop in an if, not in a ?: |
01:34 | <&McMartin> | You can't use them in the same places, no. |
01:34 | < Namegduf> | Also that, yeah. |
01:34 | <&McMartin> | If everything really were an expression in C, they'd be the same, since ?: does short-circuit. |
01:34 | < Namegduf> | if in C and ?: in C are simply not the same thing. |
01:34 | <&McMartin> | Eh |
01:35 | <&McMartin> | They're different syntaxes for the same code path, at different points in evaluation. |
01:35 | < Namegduf> | Not in terms of functional equivalence, I mean. |
01:35 | <&McMartin> | Oh? |
01:35 | <&McMartin> | What can you do in one that you can't do in the other? |
01:35 | <&McMartin> | Not "what can you *express directly*", mind. |
01:35 | <~Vornicus> | Assuming inlining? |
01:35 | <&McMartin> | Not assuming inlining, that's an implementation detail. |
01:35 | < Namegduf> | Assuming inlining is kind of a cheat |
01:35 | < Namegduf> | You can include a loop inside an if. |
01:35 | <&McMartin> | You can do a function call in a ?: that takes relevant pointers and does a loop. |
01:36 | < Namegduf> | A function call is not functionally equivalnet. |
01:36 | < Namegduf> | *functionally equivalent |
01:36 | <&McMartin> | Sure it is. |
01:36 | <@himi> | Inside the block, but not inside the if selection |
01:36 | < Namegduf> | But really now you're distorting the definition of "functionally equivalent". |
01:36 | <&McMartin> | "Evaluates to the same thing" |
01:36 | <@himi> | No |
01:36 | < Namegduf> | McMartin: if does not evaluate to anything |
01:36 | < Namegduf> | McMartin: You will need to be more precise |
01:36 | <&McMartin> | "Performs the same computation" |
01:36 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has joined #code |
01:36 | | mode/#code [+o eckse] by ChanServ |
01:36 | <&McMartin> | As noted, the only difference is *where* in the execution it happens. |
01:37 | <&McMartin> | ?: is legal exactly when you're in the middle of computing a value, if is legal in exactly all other cases. |
01:37 | < Namegduf> | Okay, in THAT sense they are functionally equivalent, yes. |
01:37 | < Namegduf> | And I don't really care to argue definition of "the same thing". |
01:37 | <&McMartin> | (See, for instance, LISP, where there is only one if form and it does double-duty) |
01:38 | < Namegduf> | So if you want to say they're the same thing, sure |
01:39 | < Namegduf> | But in terms of readability, on the original topic, syntactic forms introduced by a keyword are distinct from syntactic forms defined by an operator somewhere into the form. |
01:39 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:39 | < Namegduf> | They have different requirements for parsing- both for a machine and a human. |
01:40 | <&McMartin> | Human, maybe; machine, I dispute this. Both fit cleanly into the standard parser-generator templates. |
01:40 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:40 | < Namegduf> | You need lookahead for the latter, at the least. |
01:41 | <&McMartin> | Depends on the rest of the grammar, but standard algebraic stuff can be done in LL(1) |
01:41 | < maoranma> | http://paste.pocoo.org/show/94512/ |
01:41 | < maoranma> | Why would anyone write something like that? It's apparently some kind of chat server |
01:41 | <&McMartin> | Python aside, everything that's no more difficult than LALR(1) - which is enough for all of C - is roughly equivalent since that's the stock mechanic. |
01:41 | <&McMartin> | (Python has "whole language should be LL(1)" as a design requirement) |
01:42 | <&McMartin> | And in LALR(1) parser generators, ignoring ambiguity cleanup for now, that's... |
01:43 | <&McMartin> | expr <- expr '?' expr ':' expr |
01:43 | <&McMartin> | vs |
01:43 | <&McMartin> | expr <- 'if' expr 'then' expr 'else' expr |
01:43 | <&McMartin> | Or, I guess |
01:43 | <&McMartin> | stmt <- 'if' expr 'then' stmt 'else' stmt |
01:43 | <&McMartin> | if stmt and expr are different |
01:44 | <&McMartin> | The lookahead in a standard parser isn't to see if you're at the *beginning* of a construct, but rather if you are at the *end* of one. |
01:44 | <&McMartin> | (That's strictly LR, not LALR, but LALR is "LR plus stupid hacks that make it easier to do and don't disrupt anything anyone cares about, usually) |
01:45 | <&McMartin> | LL is for the beginning, where start-of-expression keywords make the job much easier, but that's not a *strict* requirement because as noted standard algebraic expressions can be done with LL(1) |
01:45 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:45 | <&McMartin> | That won't work with Pascal if expressions and statements have be kept separated, but fuck Pascal. |
01:46 | < Namegduf> | To be fair, I think if statements could be LL(0) while ?: cannot, right? |
01:46 | < maoranma> | Atreus: Your line noise comment made a perl programmer angry, kudos. |
01:46 | < Namegduf> | I'll admit both can be parsed without difficulty by any parser which can handle a decent language. |
01:46 | <&McMartin> | Nothing can be LL(0) |
01:46 | <&McMartin> | Well, almost nothing |
01:46 | < Namegduf> | Or a language, even. |
01:47 | <&McMartin> | LL(1) is "You know what the next statement will be based on one token of lookahead" |
01:47 | < Namegduf> | Yeah |
01:47 | <&McMartin> | LL(0) would be "you know what the next statement is going to be without looking at it." |
01:47 | < maoranma> | Which I'm rapidly discovering isn't hard to do, or this particular perl programmer is just highly abrasive. |
01:47 | < Namegduf> | That's true for if. |
01:47 | < Namegduf> | Unless you need to know in advance for else, I guess. |
01:47 | <&McMartin> | No, because at LL(0) you'd have to decide this before you saw the if. |
01:47 | < Namegduf> | So, wait. |
01:47 | <&McMartin> | LL(0) isn't a meaningful class. |
01:47 | < Namegduf> | How can expr ? expr : expr do it in one token? |
01:47 | < Namegduf> | It eats the ? in the token? |
01:47 | <&McMartin> | At the beginning, it knows it's making an expression of some kind. |
01:48 | < Namegduf> | Oh, I see. |
01:48 | <&McMartin> | Once it reaches what would be the end of an expression, it looks a token ahead, sees the "?", realizes (a) that it isn't done yet and (b) that this is therefore a conditional. |
01:48 | <&McMartin> | Since the usual precedence trick is to make expr + expr and expr * expr produce different nonterminals, it folds right into that framework. |
01:49 | < Namegduf> | Machine parsers don't give a shit about retroactively realising that things they have already parsed actually are conditional, right. |
01:49 | <&McMartin> | expr <- term + term; term <- primary * primary; primary <- id | constant, basically. |
01:49 | <~Vornicus> | My first project of 1000 lines was a programming language. |
01:49 | <~Vornicus> | It took ?: and ran with it. |
01:49 | <&McMartin> | That's also how you handle the dangling else problem |
01:50 | <&McMartin> | But this is also why I was deliberately ignoring it in this example, because it's all more heat than light and the proper solution is generally to use metadata in your parser generator to "cheat" |
01:50 | <&McMartin> | (That is, write a deliberately ambiguous grammar and hand it ambiguity resolution rules that do the right thing) |
01:51 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
01:51 | <~Vornicus> | You got proper if statements by using ?? |
01:52 | <&McMartin> | Note also that if you're not merely parsing but also doing something like turning it into a syntax tree representation, machine parsers *do* care about retroactively realizing that things they have already parsed are actually conditionals, etc, and this is one of several reasons LALR(1) is preferred for machine-generated parsers. |
01:52 | <&McMartin> | However, they're also total shit at error checking since you don't realize until pretty late in the game that stuff is messed up. |
01:52 | < Atreus> | maoranma: The things that annoy you most are the things with truth to them. |
01:52 | < Atreus> | In seriousness... who the fuck gets angry or upset about a joke about a programming language. |
01:52 | < Atreus> | It's not like I insulted your messiah. |
01:53 | < Namegduf> | Yes it is |
01:53 | | * McMartin tends towards LL(k), though Parsec and its mighty parser combinators are certainly impressive. |
01:53 | < Atreus> | Get over yourself fictitious person. |
01:53 | < maoranma> | Atreus: I think you did though. |
01:53 | < Atreus> | http://www.youtube.com/watch?v=SYkbqzWVHZI |
01:54 | < Atreus> | You know the bit where he does a jig chanting "Jehova"? |
01:54 | < Atreus> | That's my response. |
01:54 | <&McMartin> | In other news, I should probably finish up that silly code generator of mine. |
01:55 | <&McMartin> | The parser parts are done but you can't do anything meaningful with them yet. |
02:07 | < maoranma> | Code generator? |
02:08 | | * McMartin has been writing a compiler from a subset of Pascal to C64 assembly code. |
02:08 | <&McMartin> | Mainly as an excuse to do something of reasonable size in OCaml. |
02:09 | < maoranma> | Do you have a C64 to hack on? |
02:09 | <&McMartin> | Ssssort of. |
02:09 | <&McMartin> | I have VICE, and the C64 has been my 8-bit Machine Of Choice for ages. |
02:10 | <&McMartin> | Ophis - the 65xx assembler I wrote back in the day - appears to still see some use. |
02:11 | <@himi> | Why Pascal? |
02:11 | <&McMartin> | With only a few extensions I could probably make something that would sensibly target the NES. That lets you strip out a ton of the standard library |
02:11 | <&McMartin> | Pascal mainly because I'd found yacc/lex code for the parser in the public domain. |
02:11 | <&McMartin> | And because by restricting it I got exactly the parts I cared about abstracting. |
02:12 | <&McMartin> | Since the 65xx is CISC, C is actually a royal pain to compile, plus cc65 already exists. |
02:12 | <@himi> | Ah |
02:12 | <&McMartin> | (The 65xx is also very bad at memory indirection but has addressing modes that map more cleanly to non-pointer access modes) |
02:13 | <@himi> | I was thinking more about ML as the alternative, given the implementation language |
02:13 | <&McMartin> | Oh, yeah, no, that's totally not on the table here. |
02:14 | <&McMartin> | I mostly want a formula translator and a proper call stack here. BASIC would give me the former but not the latter. |
02:14 | | * himi nods |
02:14 | < maoranma> | Okay, I now have USB installer |
02:14 | <&McMartin> | The C64 is also... special... since almost everything fun is done via memory-mapped I/O. |
02:14 | <@himi> | Given the limitations of the chip, Pascal makes more sense |
02:14 | < maoranma> | Guess it's time to brave linux land once some of my stuff backs up to dropbox |
02:15 | <&McMartin> | (The other purpose is for me to test out some of my ABI design experiments) |
02:15 | <&McMartin> | But one of them turns out to require an escape analysis |
02:16 | <~Vornicus> | I seem to remember my dad having a C compiler for C64 |
02:16 | <&McMartin> | There were some in the day; it also had several very good LISP implementations. |
02:16 | <&McMartin> | And its compiled BASICs were more or less equivalent to early FORTRANs with more memory-mapped I/O. |
02:17 | <@himi> | I imagine there are C compilers for essentially every architecture ever built |
02:17 | < maoranma> | Probably |
02:17 | <@himi> | For values of "C" that map to something pretty broad |
02:17 | <&McMartin> | Yeah |
02:17 | <&McMartin> | It works *best* on MIPS-like machines, imo |
02:17 | <&McMartin> | Because the operations there map closely to C's primitives. |
02:17 | <&McMartin> | This is not a coincidence, really >_> |
02:18 | <@himi> | Why not? |
02:18 | | * himi isn't familiar with the origins of MIPS |
02:18 | | Attilla [Obsolete@Nightstar-eb2a44e1.threembb.co.uk] has quit [Ping timeout: 121 seconds] |
02:18 | <&McMartin> | Because MIPS was designed to be able to easily represent compiled code, so it introduced huge numbers of shortcuts to make the code super-pipelinable, and pipelinable in ways exploitable by compilers. |
02:19 | <&McMartin> | Like, it's the programmer's job to do instruction re-ordering to take advantage of data hazards; the instruction right after any branch will always be executed, *then* the branch happens. |
02:19 | | * himi nods |
02:19 | <&McMartin> | Human-targeted assemblers will secretly add no-ops after every branch, but a clever compiler can find some piece of work that the branch doesn't depend on that comes before it and put it after it. |
02:19 | <&McMartin> | It also exploits this to get atomic return-from-interrupt without having an actual atomic return from interrupt instruction >_> |
02:20 | <&McMartin> | But C was already the dominant language when MIPS was designed, and it's a clear influence on the chip design. |
02:20 | <@himi> | Architectures designed with compilers in mind - a major step forward, that we've blithely sidestepped in our mad rush for process-related improvements |
02:20 | <&McMartin> | To be fair, hyperthreading is pretty boss, and VLIW is a disaster. |
02:20 | <&McMartin> | There's a fine line between "architectures designed with compilers in mind" and "this chip is shit but we can fix it in the compiler". |
02:21 | <@himi> | Yeah, VLIW turned out to be nuts |
02:22 | <&McMartin> | Anyway, that reminds me that one of the things that 8-bit chips make hard is anything involving pointers or memory access |
02:22 | <&McMartin> | Because as a rule, memory locations don't fit in registers. |
02:22 | <&McMartin> | So there's a chunk of RAM that's dedicated, on 65xx chips, to holding pointers, more or less, and instructions have to route through them to do indirection. |
02:23 | <&McMartin> | However, indirection off a known start point fits in an instruction and uses an 8-bit index, and is about twice as fast. |
02:23 | <&McMartin> | I had some weird ABI plans that would exploit this by keeping the current stack frame in a fixed part of memory, but this only works if you can't take the addresses of stack variables. |
02:26 | <@himi> | It always amazed just how many different ways of doing the same thing most ISAs expose |
02:26 | <&McMartin> | Now that you mention it, a brain-dead mark-and-sweep Scheme compiler would be pretty entertaining, but a lot of assembler work to make the core library. |
02:26 | <@himi> | I think the only one that /is/ pretty much truly orthogonal is MMIX, and that's probably because, you know, Knuth |
02:27 | <&McMartin> | MIPS is darn close; you might want to look into it if you haven't checked anything out about it |
02:27 | <&McMartin> | It's basically got load 16-bit immediate and read from memory at location [Register] + [constant index] |
02:28 | <&McMartin> | No form for copy - you just add your source register with the register that is always zero |
02:28 | <@himi> | I've seen one or two things about it, but I haven't looked in detail |
02:28 | <@himi> | I'll put it on the list of things to play with |
02:28 | <&McMartin> | It's very close to three-adderss code for registers, and two-address code for Register/Memory ops. |
02:29 | <@himi> | Hm |
02:29 | <@himi> | Wouldn't that limit you to a 16-bit stack window? |
02:29 | <@himi> | Not that I expect that'd be a major issue, mind |
02:29 | <&McMartin> | I believe that's correct. |
02:30 | <&McMartin> | At least for single-instruction lookup. |
02:30 | | * himi nods |
02:31 | <&McMartin> | You could always load the offset into $Rx and then do ADD $Rx, $Rx, $SP; LD $Rx, $Rx, 0 |
02:31 | <&McMartin> | Other fun things; no CALL, just Jump-And-Link; maintaining stacks of return addresses is your job |
02:32 | <@himi> | Hey, this /is/ RISC |
02:32 | <&McMartin> | (This also means leaf routines with few locals can live entirely in caller-save registers and simply Jump Indirect to the linked register at the end) |
02:33 | <@himi> | I assume this is a 32 register ISA? |
02:33 | <&McMartin> | Yeah |
02:33 | <&McMartin> | I may have a slight bias here - Patterson and Hennessey together represent my two alma maters |
02:33 | <@himi> | Bias? Never . . . |
02:34 | <@himi> | MIPS is pretty much dead from an actual silicon perspective, isn't it? |
02:34 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has quit [Ping timeout: 121 seconds] |
02:34 | <&McMartin> | Pretty much, yeah; the only places it would be useful these days are taken by ARM. |
02:35 | | * himi nods |
02:35 | <@himi> | ARM won that war a while ago, for much the same reason x86 won everywhere else |
02:35 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has joined #code |
02:35 | | mode/#code [+o eckse] by ChanServ |
02:36 | < maoranma> | Off to install debian, back when I get irssi installed |
02:36 | <@himi> | Good luck |
02:37 | | maoranma [maoranma@490720.C448F4.E35DC0.B67F22] has quit [[NS] Quit: ] |
02:37 | <@himi> | I think the main lesson of the computer era has been this: good enough will /always/ win, in the end |
02:38 | <&Derakon> | Well, to the extent that the good enough shows up at least a little before the better. |
02:40 | <&McMartin> | ARM has, AIUI, genuine advantages as an embedded platform |
02:40 | <&McMartin> | And what little I've seen on ARM code did not look too awful. |
02:41 | <@himi> | I'm not even sure /that's/ true - x86 had better competitors around at the time they got going (for certain values of better), but they put more money into process improvements than into making a philosophically better design and they won out |
02:41 | <@himi> | McMartin: yeah, ARM is very definitely highly optimised for embedded |
02:42 | <&Derakon> | Himi: philosophically better and better in practice are different things, though. |
02:42 | <@himi> | That's kind of what I mean, though |
02:42 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has quit [Connection reset by peer] |
02:42 | <&Derakon> | Practically nobody uses Lisp these days, for example~ |
02:43 | <@himi> | Good enough turns out to be better in practise |
02:43 | <&Derakon> | Mm, you're only measuring along a fairly narrow axis, then. |
02:43 | <@himi> | um |
02:43 | <&Derakon> | I'm considering not just how "pure" the language is but how nice it is for me to implement my projects in it. |
02:43 | < celticminstrel> | [Mar 22@22:11:09] <McMartin> With only a few extensions I could probably make something that would sensibly target the NES. That lets you strip out a ton of the standard library |
02:43 | < celticminstrel> | Which standard library? Also, what's the dangling else problem, again? |
02:44 | <@himi> | A better restatement might be: don't try to optimise too far |
02:44 | <&Derakon> | Oh, well, that's certainly true. :) |
02:44 | <@himi> | Good enough in /all/ axes beats better in one |
02:45 | <&Derakon> | That works too. |
02:45 | <@himi> | Putting resources into making sure you're good enough everywhere beats focusing on one area |
02:45 | <&McMartin> | celticminstrel: NES wouldn't need anything really resembling full string handling, floating point, etc |
02:45 | <&Derakon> | And makes sense, too -- you hit diminishing returns on resources invested as you try to make your project as good as possible along a certain axis. |
02:46 | <&McMartin> | Really what you'd want for that is the ability to have records and then compile individual functions. |
02:46 | < celticminstrel> | I guess you mean Pascal standard library then? |
02:46 | <&McMartin> | Yeah |
02:46 | <&Derakon> | So you get much more "total quality" by investing up to the point of diminishing returns in all axes. |
02:46 | <@himi> | Derakon: yeah |
02:46 | < celticminstrel> | My other reading of it was "NES standard library" which lead to a "wait what" moment. :P |
02:46 | <&McMartin> | Dangling else problem: if (a) if (b) f(); else g(); |
02:46 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has joined #code |
02:46 | | mode/#code [+o eckse] by ChanServ |
02:46 | <&McMartin> | Ha |
02:46 | <&McMartin> | Yeah, quite. |
02:46 | <&McMartin> | I've done some NES development, using Ophis directly. |
02:46 | < celticminstrel> | Ah, the problem of which if the else belongs to. |
02:47 | <&McMartin> | So I *have*, if not a standard library, a standard crt0.s |
02:47 | <@himi> | I'm eyeing Intel to get this description, mind - there are other examples, but they're the one that makes my brain hurt |
02:47 | <&Derakon> | McM: in what language is that? |
02:47 | < celticminstrel> | What's that? |
02:47 | <&Derakon> | CM: common runtime library. |
02:47 | <&McMartin> | crt0.s is a gcc-ism; it's the assembler code that runs before main() begins. |
02:47 | <@himi> | Derakon: that's any language with an if-else |
02:47 | < celticminstrel> | Ah. |
02:48 | <&McMartin> | ".s" specifically means "assembler code" on most Unix systems. |
02:48 | <&McMartin> | Ophis uses .oph. |
02:48 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
02:49 | <&Derakon> | Himi: any language with if-else and no form of block dilineation. |
02:49 | <&McMartin> | and no mandatory form |
02:49 | <@himi> | Well, with optional block delineation |
02:49 | <&McMartin> | Both C and Pascal have it optionally and therefore have this problem. |
02:49 | <&McMartin> | I wrote it as C |
02:49 | <@himi> | Which seems to be pretty common |
02:49 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
02:49 | <&McMartin> | In Pascal it would be if a then if b then f() else g() |
02:51 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
02:51 | <&Derakon> | I always thought curly-less blocks in C/C++ were stupid. |
02:52 | <&Derakon> | You go to add a second line to your block and suddenly you have a bug. |
02:52 | <@himi> | Yes |
02:52 | <@himi> | Honestly, I think a lot of programmers (and language designers are generally programmers) like that sort of thing because it makes them seem cool knowing little tricks like that |
02:53 | <&McMartin> | We used to joke about a --no-l33t-features flag for C and C++ |
02:53 | <&McMartin> | Though topping that list? |
02:53 | <&McMartin> | fucking %n |
02:53 | < celticminstrel> | What about %n? |
02:54 | <&McMartin> | It exists |
02:54 | | * Derakon looks up the printf docs. |
02:54 | <&Derakon> | It...tells you the number of characters printed thus far in the string? |
02:54 | <&Derakon> | Why? |
02:54 | <@himi> | heh |
02:54 | <&McMartin> | It, um |
02:54 | <&Derakon> | (You pass in a pointer to a signed int, and instead of printing the pointer, it sticks the number of characters printed into the int) |
02:54 | <&McMartin> | Walks off the end of the varargs string and makes printf be a privilege escalation security vulnerability. |
02:55 | <&McMartin> | It means that any program with printf in it is a potential security hole. |
02:55 | <&Derakon> | Oh goody. |
02:55 | <&McMartin> | The name for the attack is "format string attack" |
02:55 | <&McMartin> | Happily, the ways of detecting it are not entirely unlike the ways of detecting SQL injection, and are at this point well-understood |
02:56 | <&McMartin> | Except for the part where you have to apply it to every program with a printf in it. |
02:57 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
02:57 | <@himi> | I'm trying to think why it just doesn't get un-implemented in any sane standard library |
02:57 | <@himi> | What on earth would you /use/ it for? |
02:58 | <&McMartin> | Measuring the lengths of printed numbers for formatting purposes? Damfino. |
02:58 | <&McMartin> | omg teh standardz, though, same reason gets() still gets implemented, with a BUGS marked DO NOT FUCKING USE THIS FUNCTION FUCKING EVER |
02:59 | <@himi> | Teh standardz should all have marked them deprecated as soon as the vulnerabilities were well understood, and taken them out a couple of versions later |
02:59 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has joined #code |
02:59 | | mode/#code [+o Vash] by ChanServ |
03:03 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
03:03 | <@himi> | I mean, this /is/ code that we're talking about - it's not like anyone building old code with a new compiler won't have the actual source code to hand to make fixes as necessary |
03:04 | <&McMartin> | Yeah |
03:04 | <&McMartin> | But the typical gcc approach would be to have a flag that enables/disables it. For all I know by now there is one. |
03:08 | <@himi> | Well, -Wall doesn't warn about %n with gcc 4.4.3 |
03:09 | <&McMartin> | It's not that %n is bad when deliberately used |
03:10 | <&McMartin> | It's that user-tainted format strings can include %n in them and smash your stack. |
03:10 | <~Vornicus> | Can it reasonably do so? Often, strings are -- that |
03:10 | <&McMartin> | See what happens if you give it argv[1] as the format string. |
03:11 | <~Vornicus> | (I meant the warn) |
03:11 | <@himi> | Yeah, it warns that the format isn't a string literal |
03:12 | <&McMartin> | That's the attack vector, so. |
03:12 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
03:12 | | * himi nods |
03:19 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
03:34 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
03:39 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
03:42 | < celticminstrel> | %n isn't actually part of the standard, is it? |
03:43 | <@ToxicFrog> | %n is C89. |
03:44 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
03:46 | | Kindamoody[zZz] is now known as Kindamoody |
03:51 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
03:53 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
03:58 | < celticminstrel> | Really? Huh. |
03:58 | < celticminstrel> | I thought it was a GNU or POSIX or something extension. |
04:01 | <@ToxicFrog> | Nope! |
04:01 | <@ToxicFrog> | Wish my dad were still around so I could ask him WTF they were thinking. |
04:05 | < celticminstrel> | Why him? |
04:11 | <@ToxicFrog> | Because he was on the ANSI C89 standards committee. |
04:15 | < celticminstrel> | Whoa, really? |
04:16 | <@ToxicFrog> | Yep. |
04:16 | <@ToxicFrog> | This was pretty nice when I was learning C! |
04:20 | < celticminstrel> | Heh! |
04:21 | | * celticminstrel found a copy of the C++ standard somewhere while learning the language in high school, and read through more or less the whole thing. |
04:21 | < celticminstrel> | (Note, by "somewhere" I mean "online".) |
04:21 | < celticminstrel> | I can't remember, did they finish that new C++ standard yet? |
04:27 | <@ToxicFrog> | Don't think so, but I haven't been paying attention |
04:35 | | Stalker [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds] |
04:59 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code |
05:14 | | * Derakon gets killed unexpectedly in Angband, proceeds to run some stats on the monster list to prove that the monster that killed him is overpowered. |
05:15 | <&Derakon> | (Monsters 50% deeper in the dungeon still don't deal more damage than it does!) |
05:33 | < Stalker> | You are assuming Angband is balanced? |
05:34 | <&Derakon> | I'm assuming it isn't gratuitously unbalanced. |
05:41 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has quit [Client closed the connection] |
05:45 | | Derakon is now known as Derakon[AFK] |
06:10 | < Rhamphoryncus> | It's balanced, but not in a normal way |
06:10 | < Rhamphoryncus> | There aren't "level appropriate" monsters to grind on through your exponential growth curve |
06:11 | < Rhamphoryncus> | Instead, it's more like a ballistic arc. You must always go forward, you only have so much time before you hit the ground |
06:18 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [[NS] Quit: Kablammo! Celticminstrel is now unavailable for comment.] |
06:48 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
07:05 | | himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Ping timeout: 121 seconds] |
08:15 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has joined #code |
08:20 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has quit [Ping timeout: 121 seconds] |
09:22 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has joined #code |
09:24 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
09:24 | | mode/#code [+o himi] by ChanServ |
09:42 | | You're now known as TheWatcher |
10:02 | | Kindamoody is now known as Kindamoody|out |
10:08 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds] |
10:20 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
10:20 | | mode/#code [+o himi] by ChanServ |
10:27 | | Tamber [tamber@furryhelix.co.uk] has quit [Ping timeout: 121 seconds] |
10:32 | | Tamber [tamber@furryhelix.co.uk] has joined #code |
10:32 | | mode/#code [+o Tamber] by ChanServ |
10:44 | | * TheWatcher hates all over documentation |
11:19 | | Rhamphoryncus [rhamph@Nightstar-5697f7e2.abhsia.telus.net] has quit [Client exited] |
11:42 | | * TheWatcher dodges writing dox by bugfixing doxygen >.> |
13:06 | | Noah [nbarr@490720.DD2C85.FBA87F.D5580D] has joined #code |
13:06 | < Noah> | God damn Intel |
13:08 | <@TheWatcher> | ? |
13:08 | < Noah> | So, I'm finally on Debian after finding a USB tether for android that worked correctly for Linux since Cyanogen Mod's apparently doesn't |
13:10 | < Noah> | Now I have to figure out how to get my wireless card working properly |
13:12 | < Noah> | At least sound is working out of the box |
13:14 | < ShellNinja> | What card do you have? |
13:16 | < Noah> | Sec |
13:16 | < Noah> | 03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02) |
13:18 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code |
13:19 | < ShellNinja> | Don't know that one. |
13:19 | < ShellNinja> | Might want to check out http://wiki.debian.org/WiFi |
13:20 | < ShellNinja> | http://wiki.debian.org/iwlwifi Might be what you need. |
13:23 | < Noah> | It's because the firmware isn't installed |
13:30 | | * TheWatcher stops reading the TPS archive, applies wrist braces, actually writes docs now, really ;.; |
13:35 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has joined #code |
13:35 | < maoranma> | Okay, tentatively saying I have wireless working |
13:35 | < maoranma> | I got it working via command line last night, but it seemed if it was idle for too long it would hang upp |
13:36 | <@TheWatcher> | Isn't that normal for wireless?~ |
13:36 | | Noah [nbarr@490720.DD2C85.FBA87F.D5580D] has quit [Ping timeout: 121 seconds] |
13:37 | | * maoranma tosses TheWatcher out a window |
13:38 | < maoranma> | Now to see if I can get the fingerprint scanner working |
14:00 | < maoranma> | can't seem to find the debian repo that has it in it |
14:03 | < maoranma> | guess I'll have to do it from source later |
14:28 | | Attilla_ [Obsolete@7D8456.47D3C7.F84632.375BF7] has joined #code |
14:29 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has quit [Ping timeout: 121 seconds] |
14:51 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has joined #code |
14:52 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has quit [Ping timeout: 121 seconds] |
14:55 | | Attilla_ [Obsolete@7D8456.47D3C7.F84632.375BF7] has quit [Ping timeout: 121 seconds] |
15:17 | | Attilla_ [Obsolete@Nightstar-76beb3a3.as43234.net] has joined #code |
15:17 | | Attilla_ [Obsolete@Nightstar-76beb3a3.as43234.net] has quit [[NS] Quit: ] |
15:18 | | Attilla [Obsolete@Nightstar-76beb3a3.as43234.net] has quit [Ping timeout: 121 seconds] |
15:39 | | RichyB [MyCatVerbs@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
15:56 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code |
16:01 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has joined #code |
16:01 | | mode/#code [+o Vash] by ChanServ |
16:34 | | Vash [Vash@Nightstar-cdeba41f.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
16:55 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
17:00 | | Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
17:01 | | Attilla [Obsolete@Nightstar-cb7c77c5.threembb.co.uk] has joined #code |
17:38 | | Kindamoody|out is now known as Kindamoody |
18:20 | | Kindamoody is now known as Kindamoody[zZz] |
18:55 | | Atreus is now known as Tarinaky |
19:14 | | RichyB [MyCatVerbs@Nightstar-3b2c2db2.bethere.co.uk] has quit [[NS] Quit: Leaving] |
19:37 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has joined #code |
20:15 | < maoranma> | Okay, so I have a sorta short list of things to fix |
20:17 | < maoranma> | Fingerprint scanner, and I have several options, so I'll have to research on that. Gotta get the middle button scrolling working for the touchpoint. Gotta see if there's anything I can do with the 1GB readydrive thing from intel I have. See if I can do something fun with the ThinkVantage button. And Nvidia drivers, for compiz |
21:07 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has quit [[NS] Quit: Leaving] |
21:07 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has joined #code |
21:13 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has quit [Ping timeout: 121 seconds] |
21:30 | | Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
21:55 | <&McMartin> | maoranma: Aren't people using mutter these days instead of compiz? |
22:02 | | eckse [eckse@Nightstar-4300ba27.dsl.sentex.ca] has joined #code |
22:02 | | mode/#code [+o eckse] by ChanServ |
22:11 | <@Ling> | They replaced compiz with something ungoogleable? |
22:11 | <@Ling> | Genius. |
22:12 | < celticminstrel> | Mutter? |
22:14 | <@Ling> | Oh except they didn't |
22:14 | <@Ling> | Mutter is just GNOME-shit |
22:18 | <&McMartin> | I don't think it's actually reasonable to treat compiz as *good*~ |
22:21 | | maoranma [nbarr@490720.DD2C85.FBA87F.D5580D] has joined #code |
22:32 | | Alek [omegaboot@Nightstar-efc8dc53.il.comcast.net] has quit [[NS] Quit: reboot. D:] |
22:43 | | Alek [omegaboot@Nightstar-efc8dc53.il.comcast.net] has joined #code |
22:43 | | mode/#code [+o Alek] by ChanServ |
23:41 | < maoranma> | got the trackpoint press to click to work on the clit mouse: echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/press_to_select |
23:41 | <@Alek> | wat |
23:49 | < maoranma> | I have a TrackPoint Style Pointer -> Nub -> Nipple Mouse -> Clit Mouse on my laptop |
23:49 | < maoranma> | And it's the soft dome type, so if you push on it, you give it an orgasm |
23:49 | < maoranma> | I mean, simulate a mouse button 1 press |
23:53 | | Derakon[AFK] is now known as Derakon |
23:58 | < maoranma> | http://xkcd.com/243/ |
--- Log closed Sat Mar 24 00:00:26 2012 |