« November 2004 | Main | January 2005 »

December 30, 2004

Response to: "You Relentless Cock," an Essay by Will Pardue

On Boxing Day, Will posted this as a comment on my RSS feed on LiveJournal
(which, by the way, is by far the best example of a misfeature in the history
of stupid programming).

I am not technically sophisticated enough to know why your blog sucks, but
I do have a couple observations. In a powerpoint friendly format.

Point by point:

It means more to you to read your own blog that to have others read it

There are lots of different perspectives that bloggers can have about their
blog. Some people have purposes, intentions, and target audiences for their
blogs. Clearly, I’m not one of those people. Let’s consider the three cases
alluded to in Will’s statement:

Case 1: “It matters more to me to have others read my blog than for me to read
my blog.”

In this case, we have your trailer-trash livejournal whore. The kind of
person who posts about the aspects of their life they find confusing or
amazing, for the benefit of other people. In extreme cases, you wind up with
someone who has either no self-esteem (someone who needs advice from strangers
on day-to-day life), someone with too much self-esteem (someone who thinks
that the world benefits from knowing their innermost thought and ideas) or
someone who just happens to think that the boring details of their life are
very interesting (a Christian, I guess).

I definitely don’t think that what I post is there for public consumption
because it is delicious, inherently interesting, or informative. I’m not
really sure why I have a blog, but sharing my wisdom really isn’t it. I find
it strange and cool that people like to have me on their friends pages, when I
typically post monstrous, asinine things like this. You aren’t being paid to
have me on your friends page, if it’s offending you, you can take me off. And
so forth.

Case 2: “It matters far more to me that I read my posts than that you do.”

I guess this is true of me. At the same time I try and achieve some level of
interaction with people when they choose to interact with me. I like have an
avenue of expression that forces me to write in complete sentences from time
to time, and I would say I like writing for the sake of writing. I don’t put
an especially large amount of thought into whether or not I have readers,
which leads to case three which I think is really where I’m at:

Case 3: “I don’t give a rats ass whether anyone is listening or not.”

And the reason I think I’m here is this: I haven’t ever gone through my own
archives. I thought it would be a nice place to keep personal notes and such
of my own devising, but now I’m leaning more towards a Wiki for that kind of
thing. In general, here are my rules for deciding when and what to post:

  1. If I haven’t posted in a week or so, I should post something.
  2. If I am spending a lot of time thinking about something, I’ll post about
    that. Even if it’s food.
  3. If I encounter something interesting in the global entertainment morass,
    I’ll post about that, to share it.
  4. If I feel inspired to write about nothing, I’ll write about nothing.

I don’t care much whether you like it or not, because your liking it or not
liking it has essentially no effect on my enjoyment level. When I started
this blog, I had no readers. I will probably lose most of my readers
eventually the way Schlake does, by stating his opinion and offending people.
I may or may not gain more. I certainly am not going to play the LiveJournal
popularity game.

I think that may lead to another case…

Case 4: “I’m going to play the LiveJournal popularity game, while posting
things that are alternately inane and terrifically offensive, just to see how
much I can make my friends list fluctuate.”

That seems like fun, but too many people playing that game would get boring
for me. Slashdot got boring for me, too. There’s nothing else here to base a
score on apart from friends and the quantity thereof, but it’s just not for
me.

You blog what you eat

This is the funniest criticism I can recall anyone ever levying in my
direction. :)

On the one hand, Schlake does this too. Unlike me, he also occasionally eats
truly interesting things, because he has income that’s essentially
inexhaustible, only one other hobby, and a lot of time spent on it already.
So he really has the upper hand there. But he’s also into the LiveJournal
trailer-trash game, so I think the intent behind posting about food for him is
a combination of “this is really interesting” and “this is intended to put you
to sleep.”

I try to post about food when I think it’s something other people might be
interested in or when other people might have noteworthy commentary about it.
Cathy has commented a few times on my food issues, and she usually has
something interesting or insightful to tell me. Schlake has a few times as
well. So I guess I see it as peer-to-peer health discussion: have you tried
this? what was it like? what did I do wrong with it? you know what’s better,
is to do this… Besides, if you can’t bother to be concerned with what you
eat, how can you be bothered to turn off the television and think for yourself
at all?

I’m not shure but my suspicions were confirmed by Jarrod that your RSS
infects other blogs with sloppy text formatting

I’m still unclear on how or why I should give a fuck about this. HTML only
puts line breaks where one of these tags exists: BR, P, DIV. So, as far as
HTML is concerned, my whole blog could be on a single “line” because HTML does
not have lines.

I also happen to use a technology called Textile, which is basically HTML
short-hand. Textile lets me write more natually, without all the very
unfriendly XML shit all over the place. Textile then takes some little escape
codes and makes the whole document into valid XHTML body text. My blogging
software then inserts this text into the website, and that’s what you see on
the site or get in RSS.

I use Firefox at home and Safari at work (and soon, at home as well), and I
find that neither of them produces anything weird either on my site or on my
friends page, or yours or Jarrod’s. So I really have no idea what behavior
you’re seeing that’s got your panties in such a knot, but I suspect you’ve got
pages that are as wide as my longest paragraph in a single line. I don’t know
what could cause that especially, but my suspicions lie with the LiveJournal
default CSS. At any rate, I’m typing this one up in Emacs with a word
wrap. If you or Jarrod read this and it looks right, let me know
and I’ll write my posts in Emacs to alleviate the problem for
you. Even though it’s not a “real” problem. Unless it fucks up
the formatting on my blog’s webpage.

You are a relentless cock

Of course, you realize there is no way I could see that as a problem.

Let me know if you still have a problem with the way I run things.

Posted by FusionGyro at 08:20 PM | Comments (1) | TrackBack

December 29, 2004

Project SOULTRAIN Notes

I got a book, “Managing AFS (Andrew File System)” for Christmas, and now I’m rethinking some aspects of how Project SOULTRAIN should work. I’m not longer thinking about a costly and shitty RAID array, so much as a costly and weird network of about three little computers. AFS has some pretty serious advantages over something simple like a RAID array:

This also enables me to use Prolog as my querying system, as I can put the database as a Prolog source file in the filesystem, and anyone who wants to search will just run some program which utilizes the file. The file is then cached locally, reducing the load on my server, and we get to have the beauty of Prolog for the database, meaning that relationships which are hard to model in SQL can be used to the fullest possible extent.

Each album will be an AFS “volume” of size ~800 MB, which is to say, a 700 MB CD image (assuming FLAC wasn’t really able to compress it at all) + 100 MB of Ogg or MP3 rips. I’ll provide tools which will generate whatever formats you like.

This has interesting ramifications. For one, it means I’ll be using Kerberos here, and I’ll also be doing cross-realm authentication with Kerberos. I’ll have three groups of users: shell users, audiophiles, and archivists. Shell users will be for people who want accounts on my personal computer (me and Alex, basically), audiophiles will be anyone I trust who wants to have access to the music, and archivists will be people who have permission to run my archiving command.

The archiving command will basically create the disk image and populate the Prolog database. In the process it will have to create an AFS volume (with a name like “a.death01” for the first Death album to be archived, “a.andromeda03” for the third Andromeda album to be archived, or “a.godspeed_yo05” for the fifth Godspeed You Black Emperor! album to be archived) This mapping will need to be stored somewhere else, either in LDAP or an SQL database, I’m really rather torn. This might also mean that “archivist” isn’t implementable as a group, there can only be “afsadmin” and I wouldn’t be able to restrict it further, but I’m not really sure. It would be nice, because I anticipate getting Dressel in on this, and having him run a fileserver at his place, archiving into my AFS, and then us replicating for each other.

I’m going to draw up some more detailed notes before the night is out. I’ve sworn not to fuck up the BSD box before the Mac gets back from Apple (it’s being shipped out tomorrow, yay for paying for service). Unfortunately, OpenAFS server can’t be run on FreeBSD due to the brain-damaged way they implemented it. I’d like to implement something like AFS 2, someday when I have thousands of hours of free time and a huge network to experiment with. AFS2 would be just like AFS1, except:

Apart from these concerns, AFS is pretty much the shit of the hour. NFS4 is going to be closer, but still not have the whole unified tree thing which I like quite a bit about AFS. DFS apparently misses the point by quite a bit, and is pay-ware and really expensive. Coda doesn’t work, and neither does InterMezzo or that other wacky network filesystem that those same guys were working on. Additionally, AFS works on a variety of platforms (indeed, I could run an AFS client on the BSD box, but what I need right now is servers).

So, here’s the rough outline for implementation at home, as far ahead as I can see:

  1. Install Linux on the now-BSD box
  2. Make BIND hand out some random names for the computers around here, to make Kerberos 5 work
  3. Install and make work Kerberos 5
  4. Make OpenAFS work over Kerberos 5 without the ticket translator. Prove that it works via the Mac.
  5. Set up the AFS framework I’ll need, like for the USS tool and the script which deals with making archive folders

We’ll see how it goes.

Posted by FusionGyro at 10:18 PM | Comments (1) | TrackBack

December 24, 2004

Kim

Kim messaged me tonight. Apparently, we now have a conversation every year. Tidbits:

Me: Alex left for a party. If she were here, I would have closed the window
Kim: why?
Me: she’s really mad at you
Kim: lol story of my life
Kim: :) is it the evil ex gf thing
Kim: I get that alot

Me: how old are you now? 21?
Kim: 22
Kim: i think u missed 21 cuz u were still planning my demise

Me: tell me about your life
Kim: well ..still with Rob, one more semester left till i graduate, large medical condition that causes severe pain and they cant fix and still a waitress
Me: what kind of pain?
Kim: the pain sucks… stomach pain..constant dull pain until 3-4 days of the week the constant pain turns to sharp twisting pain
Me: and they don’t think it’s GIRD?
Kim: nope
Kim: they ve ruled so much out

Kim: well im glad u got over the hating me thing
Kim :) that is awsome
Kim: I always look forward to talking to u
Kim: some things never change
Me: I’m not going to make a habit of it this time I don’t think

Kim: and good luck with Alex :)
Me: I won’t need it this time
Kim: :) im sure u wont

I’m not exactly cool with it, but it was a lot less unpleasant than I expected it would be.

Posted by FusionGyro at 01:16 AM | Comments (0) | TrackBack

December 21, 2004

Fruit

I want to eat a mangosteen. I’m not sure how to go about this, since they physically can’t be grown in America. I’m going to look at Whole Foods and related type stores, but I doubt I’ll find ‘em. If anyone can come up with another way to eat one without leaving the country, I’d like to hear it.

Open Letter to Twats (LiveJournal schmucks, ignore this)

The format of my blog is basically stolen from a pair of Movable Style templates. I don’t give a rats ass how it looks in your browser. It looks good in Firefox and great in Safari. If you think I’m installing Windows so I can make it look good for you in Internet Explorer, because you’re too lazy to install a free program that works better, faster and renders pages more attractively, and doesn’t let anyone on the planet remotely control your computer from afar, you can suck my 13-inch throbbing blue-veiner, that glows in the dark and is harder than Chinese algebra.

Let me re-iterate, this time in a more PowerPoint-esque format, so that it might penetrate your lacking skulls:

Firefox is:

Internet Explorer is:

I think even a moron wouldn’t have much difficulty with this one. In fact, my parents use Firefox, so I know that computer morons don’t have much difficulty with this one.

Posted by FusionGyro at 08:38 PM | Comments (0) | TrackBack

December 18, 2004

Update: Papaya Sucks

It smells and tastes like vomit. I hope this means, the canned stuff is just nasty and the real fruit is better. Investigation to follow.

Posted by FusionGyro at 01:13 PM | Comments (0) | TrackBack

Misc Updates

Food

Tonight, Alex and I had quail. It was really good, though kind of a pain to eat. Stringy, greasy, tasty.

Lately we’ve been eating a lot of fruit and yogurt. I finally caved and bought some plain yogurt to make lassis with. We got some mangoes, and those have been fun to, once you learn the proper way to open them:

  1. Cut the top and bottom off.
  2. Peel it with a potato peeler (unless it’s too ripe, but none of ours have been).
  3. Note the orientation of the “stone” within, which is a big flattish seed in the middle.
  4. Slice the “cheeks” of the mango off by slicing across the stone downward.
  5. Slice the meat away from the edges of the stone.

They’re also pretty easy to pick. Find a firm one that doesn’t look bruised. Ignore the color. It’s ripe when it yields a bit when you squeeze it.

Ah, the magic of the internet.

Alex and I are sort of on a tropical fruit kick, to try and find fruit that Alex likes. She apparently hates most “traditional” fruits: apples, pears, oranges, etc. She also hates a lot of weird fruit like kiwis. She seems to like mangos OK. Next we’re trying coconut, papaya, and some other weirdness we found at Wal-mart.

Work

I inherited the server version of iAnswer a month or so ago from Dean, who basically stopped developing it. The reason why is kind of clear when you look at the code: it’s a tangled fucking mess of booleans and case statements in an essentially asynchronous environment. Events are flying around, he’s going “are we in mode X with option Q or mode Y with option B? If so, delete the file.” It’s utterly unmaintainable.

We’re going beta tomorrow.

I have 12 “little” bugs to fix first, and then we’re releasing it to a small group of Dean’s own assholes. Then I’ll probably wind up massively refactoring it to work with the State design pattern. Dean might want back in on it then. I hope so, because I really don’t understand the structure, and interfacing with the hardware directly is something I’m not very good at or familiar with. We’ll see.

Next week: Spamfire 2 beta. This goal is much more achievable. Of course, we also have to produce 42 pages of changes for Nina’s catalog. They called us about a month ago to say we’re doing a new catalog. The price of silver combined with the sheer amount of outdated information seems to be forcing the issue with them. Originally, they wanted it in print by January first. That was a hard one to swallow, but then they backed down to January 31 when they admitted they were going to send us beads to scan.

Spamfire 2 is in great shape. It’s the first product that we will have done from start to finish since I’ve been there. That means it’s the first one that’s incorporated my database abstraction layer and Michael’s knew Cocoa Bindings-esque MFModel abstraction. In short: it took him about a week to get the interface to 90% done; the rest of the time UI-wise has been redesign, icons, and general fiddling (unavoidable). I wrote the Bayesian filter, essentially transcoding SpamBayes (thanks guys!) into REALbasic, which was strange and depressing, but I’m glad it works. Initially it was quite slow, we’ve got it operating at a reasonable speed now. The only issues that remain are basically tying it all together, implementing a transparent proxy, and fixing some of our threading code. It’s going to be rock-solid and excellent, and I’m really happy about it.

Unfortunately, SF.net has been troublesome for a few days. Navdeep was fired for four reasons Michael won’t tell me, so he’s gone and we have no idea what all he was doing to keep SF.net operational, or even what he did after he rebooted it. We’re pretty nervous, but it seems to be stable for right now. SF.net was Navdeep’s, essentially. So we went from 4 programmers down to 2 in the space of about a month. Michael seems happy with me. I am very fond of the job, but working on things I don’t know, trust or understand is iffy. I especially like it when I’m handling our new Linux server.

Ruby

I’ve got 3/4 of a Ruby C extension tutorial written. Feel free to glance at it but I’m aware of some problems with the formatting (I wrote it in Textile, because I suck or something) which I’m keen to fix but haven’t found the time. The extension itself is basically ready, but I’m stalling for various reasons.

Io

I went back to Io a couple days ago. Emailed Steve, chatted with him on AIM for a bit. Apparently NeXT people have a strong loathing of BeOS and everything Be. :) He’s a good guy, I feel bad about not having prepared the DBI layer sooner. The list traffic was starting to piss me off, so I left for a while, got caught up in other things, etc. Not sure how much interest I really have in Io the language, so much as prototyping the concept and a general need to contribute to the community in some capacity. I like Ruby better, but I keep coming back to it. I guess I like the clarity/simplicity. Some things are going to have to change before I can really consider it a worthy language:

  1. The build system needs to be unfucked.
  2. They need a real system for loading C extensions at run-time, like every other language

The build system is fucky because Io comes with the sources for the libraries it can use. Steve has a vision of a turnkey language solution, which is great and all, but it really should be a spin-off of the main language. Io claims to be small, yet the download is 20 MB compressed, nearly 100 MB decompressed. This is inconsistent. It’s also a very fragile build system, because it’s basically recursive make without Automake around to generate it. If they get a library path wrong, I have to edit about 4 Makefiles to fix it. This sucks. Oh yeah, it also means that Io winds up depending on the weird versions of these libraries that came in the package rather than, say, ones you have installed.

And it sucks more than is reasonable, because IoVM is small and doesn’t actually depend on this cruft. IoVM could be built from a regular Makefile on damn near any system. We could have a build system written in Io and it would be cross-platform and glorious.

I mentioned this to Steve, he said someone’s working on it. But he apparently also told some French magazine that he had somebody working on DBI, like a week ago. We’ll see.

As for the extension thing mentioned, exactly that: right now, every library for Io is compiled in. Pick a flavor: VM, Server or Desktop. Server is what we’d call “normal” for most languages we use like Ruby, Python, or Perl. Desktop is like, all that plus your toolkit, your OpenGL, your crypto, etc. The goodies. High-level libraries for GUI, graphic, audio and video work. It’s very nice. VM is basically what you have in your Python or Ruby without importing any of the standard library.

It’s very interesting, but that doesn’t change the fact that it’s stupid. VM = builtins, Server = standard library, Desktop = 3rd party libraries. Oh well. I’m not like mad at Steve, and I’m sure he’s aware of how weird this stuff is, but I don’t care enough to fork the code over it and spend the time to implement it, and nobody else does either.

The aforementioned list traffic which was pissing me off basically came down to a single post. Some guy emailed Steve, telling him he should add some feature to the language. I think he wanted lines beginning with

to be considered comments. Steve was like… uh, why? The dipshit said, because he had SSI on his server, and it would make it easier for him to do CGI with Io. Change the language… so he didn’t have to do any work on his server. And this asshole was persistent about it! I guess I just get enough stupidity in my daily life, I don’t need extra. Or maybe it was just one of those days, and that was just a bit too much. I don’t remember. :)

Happenings

Yesterday, Alex and I had to go into Santa Fe. When we got back, we decided to eat at Dairy Queen, a block away from our apartment. The Socorro girl’s basketball team was there chowing down after winning some sort of tournament or something. We thought nothing of it at the time, but tonight Alex mentioned her throat is sore, I recalled Major saying that strep is going around in Socorro, and think we might be about to get strep throat.

Tonight, there were a lot of weird sirens going off outside. Eventually a fire truck with lights on it drove by, and a cop car, and a fire wagon of unspecified type. A parade, if you will. It was nice.

Everything is very nice.

Posted by FusionGyro at 01:37 AM | Comments (0) | TrackBack

December 11, 2004

Cobra Verde and The Audition

Cobra Verde is the third of the Kinski/Herzog classics I’ve seen. It’s also their last movie together, and the one with the famous suicide scene at the end which, according to Herzog, rendered Kinski unable to act anymore. It’s about slavery, and as usual, it’s both beautiful and very powerful. I strongly suggest everyone see it. It’s a hard movie to give an overview of, because so much of what makes it awesome is just seeing the acting and the settings. $12.00

The Audition was a creepy movie from Japan. I hesitate to call it horror, but I don’t really know what it should be called instead. It gets points for accurately portraying the stupidity of falling in love, at any age. It kind of lost me at the end, the coherence sort of went away. The torture is a bit much. I don’t think I got the “message” of the movie if there is one. If you want to be shocked, and have a good laugh at how screwed up love is, you should see it. $2.50

Posted by FusionGyro at 01:00 PM | Comments (0) | TrackBack

Portability?

Here’s a real brain teaser for you GPL-boasting autoconf-using fucksacks who think that just because you have a shell script sitting in front of your Makefile, it’ll work on everything from AIX to Windows NT.

If your application depends on something that’s Linux only (like say, for example, the *A*dvanced *L*inux *S*ound *A*rchitecture or ALSA for short), what’s the point of using Autoconf? A snapshot of the ./configure line for TuneIt:


checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets $(MAKE)... yes
checking for working aclocal-1.4... missing
checking for working autoconf... found
checking for working automake-1.4... missing
checking for working autoheader... found
checking for working makeinfo... found
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking for snd_pcm_open in -lasound... no
configure: error: Couldn't find ALSA soundcard drivers. You must install these first. See www.alsa-project.org or use ALSA modules in linux kernel version 2.6

Well, that’s going to be fun from fucking FreeBSD.

Look at what this does. “Does he use .o for his objects? Does he have a C compiler? Does he have install -c? Does he have stat()? What about a permission-retaining filesystem, does he have that? A scheduler, does he have that? Does he have fucking Linux 2.6?” If I have fucking Linux 2.6, I MUST HAVE THOSE OTHER THINGS.

Now granted, this is for a guitar tuner, I have no right to expect, uh, linear logical thought processing from the developer. But still.

By decree of the Dan: Autoconf, Automake and Libtool are hereby declared bunk and shit. There are exactly four platforms in this world: Gentoo Linux, *BSD (shuttup), Mac OS X, and Windows. You can strive for portability between the three UNIXes listed, but at the end of the day, you’re really only going to make it work on Gentoo and Mac OS X. The BSD fucknuts will make a port for your shit eventually if it’s worth anything and can compile on the Mac. Windows, you suck. Everyone else can eat a dick.

Oh, and another beef with Autoconf & company. Half of the developers who use that stuff don’t understand what it means. The reason why most configure scripts produce such copious and meaningless output is because the developer copied the fucking config file from some other project, and they’re not even using the defines produced by it. And another thing, what’s up with developers who don’t bother to run their Makefile.cvs before tarring up a release? Isn’t another point of Autoconf & co that it doesn’t need to be installed on the destination system? And another point, it’s a fact that using Automake forces you to live with recursive make, which sucks. Argh! Stallman you primadonna, I fucking hate you!

While I’m at it, what’s with all the free music software? None of it is complete, most of it vanishes shortly after being released with only vague references and broken links. The best guitar tuner on the market, QJackTuner, is available in CVS only, on a site that insists it’s never been checked in or updated. All the other tuners depend on Linux directly. Jack is supposed to be cross platform, and it does run but it doesn’t seem to get anything from the microphone. WTF?!!

Posted by FusionGyro at 01:41 AM | Comments (1) | TrackBack

December 02, 2004

Peas, Cyrus and Ruby

Garlic

Alex made peas tonight, adding nothing but garlic. I thought it was awesome, but it shows what a sap I am for garlic.

I Hate Cyrus

Today at work I wrote the following shell script:

function rebuild_email()
{
  while test -d /var/imap.old$x; do
      x=$(($x+1))
  done
  mv /var/imap /var/imap.old$x

  /usr/bin/cyrus/tools/mkimap
  chown -R cyrus:mail /var/imap
  sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -i
}

Can anyone guess what this does? Yes, that’s right, it rebuilds the Cyrus database! Because Cyrus is based on a wonderful library called BerkDB, the motto is “it’s so fast, you won’t even notice that your data isn’t safe!” Cyrus never loses email—because it always keeps a copy of the original delivery prior to being put in the lossy BerkDB, so that you have to run this handy little script every day or so to get your mail back on MacOS X Server. Wow!

Ruby

Though I love Python, Ruby really has its shit together in a couple areas. Firstly, there is a standard Ruby documentation system, RDoc, which can extract useful information from comments in either C extensions or pure Ruby. It produces nice Doxygen looking pages, but I’ve found it to be much more helpful with Ruby because Ruby developers still believe in natural language for explaining things.

Secondly, Ruby has a single built-in testing system, Test::Unit. Python has one too, but this is cool not in-and-of-itself.

Finally, Ruby now has a soon-to-be-standard packaging system, RubyGems. This system will remotely fetch and install libraries, following dependencies, a la CPAN but without the skank. The package (“gem”, as it were) is basically a tar ball with a script that generates a GemSpecification object. You fill in the blanks descriptively, it figures out how to install the gem (or you can use Rake or whatever). Then, after it’s installed, it runs your unit tests to ensure it’s all in working order (like CPAN) plus it generates the documentation from RDoc (like Perl). But wait! There’s more! Every Gem includes a version, so that instead of using your usual require ‘foo’ you can instead put in a requirement for the gem itself, like this: require_gem ‘my_package’, ‘> 1.0’. The require_gem works a lot like Gentoo’s versioning system: Library versions have an X.Y.Z format; when X is incremented, there are backwards incompatible changes, when Y is incremented, features are added, and when Z is incremented, bugs are fixed. This is just a convention, of course, but everyone seems to be following it. There’s also a “pessimistic comparison” operator, which lets you say “I want any version greater than X[.Y[.Z]], so long as X is the same.”

How cool is that? It’s like the best packaging system around. Plus, it comes with GemServer, which gives you a browser to look at the RDoc documentation (because it doesn’t keep the HTML around necessarily if it can generate it on the fly) and see what you have installed. In the future, it’s going to provide for a peer-to-peer gem distribution system. :)

Ruby is just awesome.

Posted by FusionGyro at 11:48 PM | Comments (0) | TrackBack