soeren says

Septuple-C: Mattoid

April 27th, 2006

So I think what I’m going to do is fork Septuple-C off into a CLI client, Mattoid (reference). Septuple-C’s long-term goal is to be a GUI app, which it currently isn’t by any stretch of the imagination; it is, however, fairly close to a complete command-line CyanChat client application. As such, I’m going to branch Septuple-C 1.0d15 as Mattoid 1.0a1, and hopefully work towards a final release of that by Summer.

That would make Mattoid the first application that I actually ever released. Woah.

But we’re not quite there just yet.

Posted in CCCCCCC/Septuple-C, Ruby

Share | No Comments

Septuple-C: 1.0d14

April 23rd, 2006

We’ve got idle-kick protection (’IKP’ for the acronymically-inclined). It’s hard to test if it actually works without idling a lot, but as far as I can tell, it matches the behaviour of Rushing’s client, that is, every 65 seconds, a login attempt as , (comma) is made. IKP runs in its own thread, for obvious reasons; surprisingly, I didn’t have much of a problem implementing it. In fact, most of the time was wasted not realizing that I couldn’t use my log in method, as it strips out the comma. D’oh.

Due to the ethically questionable nature, I’ll let users turn it off. Right now, that means you can edit the YAML settings file and set protectIdleKicks to false. That’s it. Thread will never run.

There’s some minor fixes as always; comments clean-up and all. Also, I’ve made Ruby’s -d useful; most ‘debug’ statements now only appear if $DEBUG is set to true.

I’m impressed with how easy it was to implement IKP. OOP really pays off. :-)

Unless someone wants it badly, I won’t realize this as a tarball; there aren’t that many changes. Enough to warrant a new version number, though. If you have Subversion on your computer, you can get this release that way; svn co http://chucker.stoneship.org/svn/ccccccc/tags/1.0d14/ ccccccc-1.0d14 will create a folder ccccccc-1.0d14 that contains the version. Come to think of it, maybe I should do a releases branch or something that will keep you on the latest tag. We’ll see.

I’m very intrigued by where this is heading.

To those who read my blog hoping something other than this possibly boring-to-them topic will come up: it will, every now and then. This just makes me happy right now. Consider it a fad, but personally, I hope it will last for some time to come.

Posted in CCCCCCC/Septuple-C, Ruby

Share | No Comments

Septuple-C: Repository with Subversion and Trac

April 22nd, 2006

Thanks to amon, we now have a repository as well as a trac installation.

So you can keep trac(k) of changes more easily now. This won’t really otherwise affect development, though, especially seeing as there’s only really one main developer, yours truly. However, it’ll make it easy to go back to older versions in case something accidentally got deleted.

In theory, you could use Trac to file support tickets, write Wiki pages and all that, and, really, go ahead, but right now, there isn’t much point. :-)

Posted in CCCCCCC/Septuple-C, Ruby

Share | No Comments

Septuple-C: 1.0d13

April 22nd, 2006

Rushing out another release that supports, to some extent, the sending of private messages, whereby ’some extent’ means I haven’t really thoroughly tested it, just like sending of room messages (which was already possible in d12; not sure about d11).

The syntax is /msg theUser,theMessage, e.g. /msg chucker,Your software is weird!. I can’t replicate IRC’s format here, because CC allows for spaces in nicknames, and it would be impossibly difficult (and not always even possible) to accurately figure out where a nickname ends and the message begins. So I’m using a comma to separate the two, rather than a space like in IRC.

Some clean-ups again; CCUsers#empty? hopefully works as expected. Maybe I should add empty? and exists? methods to all my classes. (And when I say ‘maybe’, that’s usually short for ‘I definitely should and will, but right now, I’m being lazy’.)

amon calls my code pretty; I always enjoy ego-boosts. He’s also offered to host it in a Subversion repository bezoar, his virtual server. I’ve been meaning to move to version control and should have right form the start, but I just didn’t feel like wasting my time doing that, especially as I wasn’t sure how serious this would end up becoming. But now that I’ve gotten, well, beyond a certain point (it’s no longer non-interactive, it’s split into multiple files and classes, etc.), it seems more and more useful.

So, I’ll probably use tags in the future to mark somewhat stable revisions. I doubt I’ll use branches, except perhaps temporarily for some highly experimental stuff.

Ramble, ramble, ramble. Here you go, folks.

Posted in CCCCCCC/Septuple-C, Ruby

Share | No Comments

Septuple-C: 1.0d12

April 22nd, 2006

New release. Lots and lots of changes. New class CCUsers that stores the “WhoList” (list of users that are connected and logged in) as an array of hashes. That is, there’s an ordered list of users (the array), and for each user (array item), there’s three named pieces of information (hash items): the nickname, the address, and the group.

The beauty of this is that we can have methods like “give me all users that have this particular address”. If you read the before closely, you’ll notice that this is one more thing current clients (that I know of) don’t do: trolls have a tendency to log in under multiple names in order to create the (short-lived) illusion that they are, indeed, multiple personæ. Of course, you can manually check their addresses and figure out what’s really going on (or take an educated guess, anyway*). Thanks to nicksForAddress() (which gives you all nicknames for a certain address, as an array), nicksForAddressAsString() (which does the same, but converts it into a string delimited by “, “, e.g. “chucker, someoneElse, Yet Another Person”) and, most importantly, multipleNicksForAddress?() (which returns true when given an address that multiple users/nicknames are logged in under), we can make this all a little more convenient to figure out.

What I’m picturing (should we one day have a GUI) is a tree view — rather than a linear user list — that will create a branch if an address has multiple nicknames, and underneath that branch, it will list all nicknames. If you have no idea what I’m talking about, that’s okay too. I could provide a mockup screenshot, I suppose, but maybe this helps:

  1. Aaron
  2. Dave
  3. Jill
  4. 1890354812390
    1. Someone
    2. SomeoneSupposedlyDifferent
  5. Tyler
  6. Vanessa

Notice how the fourth item in that list expands into a sub-list, and how it doesn’t show the nickname, but the address? That’s our feature at work. You easily get to see if people are trying to fool you this way.

*) There are, of course, some rare cases where multiple people will legitimately have the same address. I.e. one CC user staying at another CC user’s place. It has happened before… ;-)

So what else is there? Not much that I can think of, actually. I’ve spent most of the time trying to clean some things up — to boot, I’ve found one nasty bug whereby the settings file was updated much, much more often than it had to be — , and trying to figure out this whole Windows situation thing. Which, sadly, I still quite haven’t. It’s a little discouraging as I can’t even be sure if I will be able to publish this code on Windows in a remotely usable way. Demanding people install Cygwin on their own is simply not an option. But the current problem doesn’t occur if I use RubyScript2Exe without Cygwin, nor does it appear if I use Cygwin without RubyScript2Exe, nor if I use neither; only if I use both. Talk about confusing.

I really dig(g) the beauty in which Ruby handles OOP. Once you get into it, some things just feel so natural. Not sure if the settings file is up-to-date? Just call @settings.refresh. What about the user list? @users.refresh. Enumerate all users? @users.to_s, where to_s means “convert to String”.

This has been keeping me busy, and that’s goooooood. Windows frustrations aside, I’m quite enjoying this.

Oh yeah. New version. Here you go; enjoy.

Posted in CCCCCCC/Septuple-C, Ruby

Share | 1 Comment