[ Page 1 of 2 ]
From: Luke Kanies Date: 21:03 on 17 Aug 2007 Subject: Rubygems require perl? I hate gems, but stupid Rails really wants to use them. Not just that, but a really recent version. I hate ports, but I've got a Mac and it doesn't have real package management. I have an older version of rubygems installed with ports, and I need to upgrade. So: luke@phage(1) $ sudo port upgrade rb-rubygems ---> Fetching perl5.8 ---> Attempting to fetch perl-5.8.8.tar.bz2 from http://www.cpan.org/ src/5.0/ ^C Uh, WTF? I don't know who to specifically hate, but there's plenty there all right. -- To be pleased with one's limits is a wretched state. -- Johann Wolfgang von Goethe --------------------------------------------------------------------- Luke Kanies | http://reductivelabs.com | http://madstop.com
From: Luke Kanies Date: 02:12 on 10 Nov 2006 Subject: RubyGems deciding version formats I currently spend all my time in Ruby, but I fortunately don't have to deal much with RubyGems. I say fortunately, because, like all software, it's hate-worthy. I personally think it's a bit more hate- worthy than it should be, and here's an example. Some people run released versions of my software. Some people use the software directly from Subversion. It's important to know which they're using when they're filing bugs, so I want some way to differentiate them. So, reasonably, I add 'svn' on to my version number. *I* don't mind. Ruby doesn't mind. But oh now, RubyGems declares that I cannot have a version number that looks like that: Malformed version number string 0.20.0-svn Yeah, thanks. This means I can't even use my Rakefile for anything, because it can't even create the gem task (which it always does, even if it won't be executing it). Stupid gems.
From: Luke Kanies Date: 19:33 on 25 May 2006 Subject: Solaris packaging sucks, too As was already discussed this week, packaging should consist of a packaging technology and a package retrieval/install technology, whether they're integrated or not. Solaris stupidly has no retrieval tech builtin, and their packaging software itself is pretty braindead. People are now starting to use packages compiled by Blastwave or SunFreeWare, which each provide a pkg-get script that will retrieve and install packages for you. Of course, those scripts behave completely differently, and the package repositories are entirely incompatible, but whatever. So, I pick Blastwave for various reasons. You go to install a single package, it basically works, other than asking you all kinds of inane questions that amount to "are you sure?". Then, six months later, you go to upgrade a package, ruby in this case. Because Sun's package system is stupid, the current package has to be removed, rather than just being replaced. You get a bunch of warnings that other packages depend on this package, and you just ignore those warnings. It downloads the ruby package, tries to install ruby, and fails, because you need to upgrade some other package. Note that you now do not have an installed ruby package. Okay, so you upgrade the prerequisite package and go to install ruby again. This is where it gets really ridiculous: The package retrieval now fails because it's already been retrieved once. The script isn't smart enough not to download the package again, and upon downloading it again it's not smart enough to replace the existing, uncompressed package, it just bails entirely. So, now you have to go and manually delete the package, go to upgrade again, get told another package needs to be upgraded, and you're stuck. You're only reasonable choice at that point is to upgrade all packages, even though it's not at all what you want. Oh, and yeah, you're going to be asked a whole bunch of stupid questions -- you have to sit there synchronously saying "yes, yes, yes, yes, yes, yes, yes, yes" to the stupid computer. Grrr.
From: Luke Kanies Date: 19:54 on 20 May 2006 Subject: OS X packaging is an embarrassment So I picked up a MacBook yesterday, for various reasons but mostly because my 12" powerbook feels really slow these days. After getting my accounts moved over, which took a while (mostly because I have 45GB of music), I went about making it resemble the *nix workstation I know and love. These days, that mostly involves getting X11 installed and then getting RXVT working. I tried Apple's Terminal for a while, but I can't change the ANSI colors and the defaults suck when having a dark background, and it's difficult to automatically tile them, which I always do. So, I install X11 and DarwinPorts. Hmm, nothing works. Ah, DarwinPorts can't find a compiler. Ok, go into XCode and install the compiler. Or, well, install both of them. Nope, still doesn't work. Ok, link gcc-4.0 to gcc. Nope, still doesn't work. Look at the build log, realize it's missing "as". Do some searching, realize that I need another package. This is where I realize, OS X is an embarrassment. See, the DarwinPorts package was a normal OS X package. If OS X had a real packaging system, then the DarwinPorts package would have been able to say, hey, this won't work, you're going to need these 7 packages. Instead, because OS X's packaging is basically a glorified tarball, you just have to try it, and then figure out the failures yourself. Of course, it's not just in the Unix world where OS X's packaging falls flat on its face. "Just drag it into the applications folder" is a nice install method, but it sucks from then on. What packages do I have installed? Have they changed? Are there updates available? No idea, no way to find out, unless maybe it's an Apple package directly. And, of course, even though my motivation for buying this machine was because my 12" feels really slow, this machine feels just about as slow. Particularly, if I am doing more than one thing at a time -- say, Firefox is loading a tab, and I switch workspaces -- then the whole machine bogs down just as badly as my 12" did. I/O seems to just kill OS X. I'd love to think that OS X could be free of software hate, but I don't see it happening any time soon. Give me apt and a decent package manager, and then a kernel that doesn't somehow manage to make a dual-proc 2ghz machine feel dog-slow, and then we'll talk.
From: Luke Kanies Date: 16:42 on 04 Jan 2006 Subject: Automatic Bug Reporting So, just for kicks, I try out Evolution again, because I'm apparently a masochist. As usual, it crashes in less than five minutes. Okay, sure, I'll file one of those autobugs. Okay, weird, it has to update something; whatever. Ooh, now I get to file the bug, I just need to select the app. Okay, I select Evolution, and what does it say? "No bug information for that application, please choose another." Um, right. Yeah.
From: Luke Kanies Date: 20:08 on 16 Nov 2005 Subject: Non-interactive vs. interactive I don't know whether to blame Ruby, Unix, or everyone who could have fixed this but didn't, but... There seems to be this stupid assumption in Unix that all external commands are used in an interactive way. "No," you say, "that's what system() and `` are for." No, if that's what those commands were for, then those commands would make it easy to capture stderr. You see, when I have to non-interactively use external commands, I literally never want stderr to go to the console, and I pretty much always want to capture it so I can log it, and the whole Unix system seems predicated on me not being able to do so. Yes yes, I know, I can tack '2>&1' onto my command, and that will send stdout and stderr to the same place. Sure, except now I can't log the error messages at a different level, and nearly everything behaves quite differently when any shell metacharacters are present. In this case, I'm encountering either a stupid Ruby bug or a stupid Ruby design decision -- Ruby uses EUID to evaluate commands directly but UID to evaluate them in a subshell -- but it's Unix's fault for stupidly assuming that there will always be a human at the helm watching the console. It might not have been a stupid assumption in 1982 or whatever, but it sure is now. So, just wanting stderr causes literally every single program to behave differently, using subshells instead of executing directly. "Oh," you say, "but you can just redirect them manually." Yeah, I sure can manually create new files for stderr, and then read those back in after every command, because everyone knows that temporary files are hallmarks of both high performance and good programming. If I do that, my code to handle capturing stderr will be longer than my code to do what I'm actually doing, which is just stupid. And I can't really afford to use temporary files in this case (not for performance reasons but because I don't want to have to deal with deciding where to put them and how to clean them up). The real answer is, there are plenty of ways around this insane design decision, and Ruby seems to have a nasty bug here, but it is still a stupid design decision and it needs to be rethought. Oh, what's that, you're complaining because you'll have to change system calls that haven't changed since K&R? Suck it. There is never a good time for crappy designs outliving their welcome. Oh, and yeah, I know Ruby has a 'popen3', but for some retarded reason that command throws away the exit code which (guess what?) I also need. Stupid stupid stupid.
From: Luke Kanies Date: 23:22 on 12 Oct 2005 Subject: Blogging sucks How is it that people can be so geeky and so geek-illiterate at the same time? Who the hell writes HTML any more? Don't we have, like, 100 simple markup languages that make it 10x easier and better? Really. I've been writing a software product (deserving of much hate, I am sure) recently, and have had little luck finding people with whom to discuss the trials and trevails of this process. So, I decided to begin recording the conversations I have with myself, at the least so that I have them to look back over, and maybe even to draw some more interest onto the software. Unfortunately, blog software seems to largely suck. (I know, I hear you gasping with surprise -- who knew?) First, it seems to be a pretty simple setup -- I write something, it gets put online. Ok, there are some other features -- comments (can get quite complicated), categories, pinging (don't ask), and tags. Ok, I understand. But what's the most important thing, the one thing you figure they'd get right? That's right, text editing. I write a lot of code snippets in my entries (because, you know, I'm writing code and developing a language) and I can't seem to get code snippets to show up well at all. Really. They look like crap, in addition to looking nothing like what I want. There's lots of hate here, and my options appear to be 1) don't blog, 2) do the writing but do it in a vacuum with no connectedness to the rest of the blog world, 3) use shitty software, 4) host something myself and hack it till it works. All of these suck. I understand the blog software is written for people who want to post pictures, not code snippets, and want to write using WYSIWYG not Vim, but please, this isn't that hard.
From: Luke Kanies Date: 06:50 on 27 Sep 2005 Subject: Debian bugs So, I'm currently being stupid enough to try to write a cross-platform automation tool, which involves managing services, which involves init scripts. And, of course, one of the services I'm managing is Apache 2, and I'm running that on Debian. So, I write my tool to use Apache's init script's restart function. Hmm, that can't be right, I call the init script with 'restart' and it prints the usage message but exits with a zero return code. Well, sure enough, it's not "right", but that's what's happening -- the init script doesn't support 'restart', yet exits with 0 after printing the usage message. Ah, I think, Apache expects me to use apache2ctl, so I try that. Well, I don't have the status.cgi set up, so I get a 404. Except that apache2ctl also exits with a zero code on a 404! Okay, this sucks. Time to submit a bug. Go to bugs.debian.org, search for 'apache2 init'. Okay, even though debian doesn't allow spaces in package names, it thinks I'm looking for a package with that name; that's stupid. So, I delete the 'init' and look again; nope, no package of that name, either. A little verification with apt-cache, and yeah, the name is definitely 'apache2'. Ah! Stupid little web page, you searched for 'apache2 ', didn't you? Delete the space, search, there it is. Of course, the stupid site has no way to just search for keywords -- it's certainly much easier to make the humans do the work, we wouldn't want to make our computers break a sweat. Grr.
From: Luke A. Kanies Date: 03:56 on 11 May 2005 Subject: NVidia hate I know this won't win any awards for stupid error codes, but still... After trying Xinerama for a while to see if it reduced the temperature of my video card (it didn't), I finally had to log out again, so I was going to switch back to TwinView, since it's slightly faster (being in hardware, rather than software, or something). And even though the exact same config worked a couple of months ago (other than some judicious commenting to disable xinerama and enable twinview), this is the error message I got: (WW) NVIDIA(0): TwinView cannot be enabled when a GPU is shared between (WW) NVIDIA(0): multiple X screens. Now, for those who don't know what TwinView is, it's, well, it's something that NVidia provides to, well, allow a GPU to be shared between multiple X screens. Yes, that's right, this function doesn't work when you try to use it; otherwise, it works fine. Yes, I'm assuming I broke the config somehow, but, geez, how does this kind of error even get added to the driver? It's just astounding. Back to Xinerama and it's slow crappiness, I guess...
From: Luke Kanies Date: 18:11 on 21 Apr 2005 Subject: MP3 players? Linux? I'm not sure, but I know there's hate I don't know why MP3 players and audio are so hard; I really don't. Getting MP3s to work on Gentoo was hours and hours of work, and it only got worse when I wanted to use my external USB headphone amp. But I'm doing something theoretically simple here: I want to play music on my computer, in the least obtrusive and most efficient manner, I want hotkeys to control the playing, and I want simple mechanisms to manage what music I'm playing. So, I've been using XMMS for years, even though its usability is about, oh, 1992. But recently its complete uselessness when it comes to playlists became too much for me. So, I tried rhythmbox again, for about the ninth time. It only lasted about 2 weeks (it just periodically stopped playing with some kind of weird error, it has about 1/10 the prefs it needs, it does absolutely rediculous things with refresh while it's loading the MP3 library, and it finally just played static constantly), but it highlighted another annoying-ass aspect of using mp3 players: I always set up hotkeys for forward, reverse, and pause, because I do them often and I hate having to switch around finding the stupid mp3 player. Well, obviously, I have to switch the hotkeys when I switch mp3 players. So, today, I finally wrote an abstraction for the two players in question, so I can just modify the script (basically just switching default players) and the hotkeys will automatically work, because they're just pointing to my script. Yes, I could have just had the script search through the process table to see which one was running, but I didn't feel like it. This just seems bloody stupid, but I'm not sure who's to blame. Me, for demanding too much? (Nope.) The mp3 players for sucking so much? Metacity, for having such absolutely retarded mechanisms for setting hotkeys (2 years and it _still_ requires me to set the key and command separately, within GConf)? Gnome, for not having a good, integrated mp3 player, or even better, a good mechanism for integrating any mp3 player, or any app? Linux, for not having an even lower-level good mechanism for integrating mp3 players, or any other apps? All OSes, because they basically all lack this feature? I mean, come on; classes of applications (like mp3 players) are members of a class because they share similar features. In some cases those features are not exposed externally (e.g., one might not generally refer to an internal feature of both Gimp and Photoshop in the same way, although it seems like it'd be great to be able to call a filter in either one through an external interface), but in many cases each member of the class has similar features that you want to call from outside the app, say, through hotkeys. Why the hell don't OSes recognize this and make it simple to register applications as members of a class, with the same interface? Then allow the user to pick which member to use, and then send most/all actions through that interface, and the stupid interface is responsible for finding the correct command on the correct app? Why do the damn operating systems expect me to know how everything works? I want music played through my computer, and I want hotkeys that allow me to quickly pause or fast-forward, and I want some mechanism for managing my music. I frankly don't care how this is done, but I categorically don't want to spend 5 hours a month just making sure it all fucking works. Stupid computers.
[ Page 1 of 2 ]
Generated at 10:26 on 16 Apr 2008 by mariachi