The Last Word

December 25th, 2005 by Xore

Irritated.

And what a pleasant time of year to need to rant. Something about spending sufficient amounts of time with [some of] my siblings over the holidays tends to bring out the worst in us all. I’m not saying i’m not at least partially to blame, but in recent years, i’ve been making an effort to arrive on better terms with my siblings, and often it just gets shoved back in my face with a paper cut and a splash of vinegar. We’re grown-ups, right? I’d like to think so, anyways.

Sibling squabbles nearly always degenerate into irresolute arguments where one side is unwilling to give for reasons more of stubbornness than correctness, and someone inevitably says “You’re just trying to get the last word in”.

Rawr.

I admire this pseudo-argument in that it has a catch that, if responded to, plays directly into the hands of whoever says it. Disagree with it, and you’re in denial, or agree with it, and you’ve as good as admitted that your arguments hold no validity. Superficially and implicitly, anyway. When you think about it, however, neither of these conclusions can logically be derived from that argument, as it has nothing to do with the previous argument at hand.

Of course, I also utterly despise this pseudo-argument (and never use it: if i’m wrong, take a free whack-the-camel card) in that anyone who utters it is completely hypocritical. In delivering it, a person effectively succeeds in (or is making an attempt at) getting that last word in.

Really, it’s just an overly wordy way of saying “shut up” to a person, leaving it’s deliverer in an assumed state of argumentative victory. If you want me to shut up, tell me to shut up. Or tell me that you’re interested in continuing the argument at a more convenient time. Or tell me you aren’t interested in continuing the argument, so long as you cede that neither of us have won.

Better yet, if you can, prove me wrong. I’ll thank you for it.

Revenge of the heap

December 3rd, 2005 by Xore

You win some, you lose some

Sometimes, losing just isn’t enough.

Cash Mod 2.2.3

November 22nd, 2005 by Xore

In light of certain changes to phpBB between 2.0.17 and 2.0.18, it has come to my attention that for certain automated installers, portions of the Cash Mod Installation process will fail.

In light of this, I have updated Cash Mod to version 2.2.3, and submitted it to the phpBB MOD Validation Team.

In addition to being 2.0.18 compliant, Cash Mod 2.2.3 boasts several other primary changes:

  • 8 new language packs

    In addition to English, French, and Dutch, we now have the following languages included:

    • Chinese Traditional (Taiwan)
    • Czech
    • German
    • Italian
    • Norwegian
    • Portuguese (Brazilian)
    • Russian
    • Spanish

    I’m glad to see there is such a great international interest in Cash Mod! If you want to submit Cash Mod translations in your native language, feel free to let me know, and i’ll give you an address you can email your translations to, I’d love to see even more translations be available for Cash Mod users

  • Events fix
    A few people have taken to testing out the API, including the events code. There was a bug in that I had specified an include() before a define() it was dependent on, which caused some errors. I’ve moved the include() back past the define() now, so all should be good.
  • Installation Error Messages
    If you fail to install Cash Mod properly, there are a few error messages that you’re likely to run into quicker and faster than any others. I’ve altered these error messages to give better hints regarding what must be done to complete the installation
  • DIY Instructions
    As per EasyMod finally includes the manual instructions block that i’ve been lobbying for, i’m making use of it to flash up front to the user that they need to run that sql_install.php script, otherwise it will break things in unfortunate and unpleasant ways

Anyway, it should hopefully be released soon on phpBB.com

Many thanks to the translators who’ve spent time writing these translations, and to you, the users, who’ve made Cash Mod the success it currently is.

I am drunk

November 18th, 2005 by Xore

But that’s ok

I have about a full pitcher in me at this point. 3 pints of Winter Ale (@ SFU pub) and 2 pint’s of Black Plague (@ cafe deux soleils). Enough, in fact, that i can in fact enjoy reggae music. Apparently. Normally, i hate reggae, but there is a live band playing some Mostley Marley at Cafe deux soleils, and i’m buzzed enough to enjoy it.

woo.

Before the live band came on, they were playing ladytron. and not just random ladytron, they actually had a ladytron album on, evident by the fact that they had multiple ladytron tracks on, in a row, from what was the same album.

I am drunk.

Xore armed with a Kleenex VS A Manly Cold armed with a Sledgehammer… Lound Tooo! Feit!!!

November 16th, 2005 by Xore

So, yesterday i stayed home, because i didn’t have to be anywhere. I turned on my area heater and turned my room into a sauna, pumped myself full of decongestants, vitamin C, herbal Tea, and a cup of coffee or three to keep myself primed, then set down to a day of hacking. For various values of hacking, wherein at least two of the following definitions apply:

=========================

Hack:

  • To cut or chop with repeated and irregular blows
  • To write or refine computer programs skillfully.
  • To cough roughly or harshly.
  • To drive a taxicab for a living.

=========================

Apparently my code re-write was successful in more ways than one: The programming interface is much cleaner now, and i must have cleared up a missing memory leak or something, as a test run on 10 iterations actually resolved without a memory overload term signal. Above and beyond that: I decided to take a chance and run 11 iterations: This took around 89 minutes, but exited successfully. I guess 37.5 million (estimated) isomorphism checks are going to take a while… If i ran the 12th iteration, i project that there would be just shy of a billion isomorphism checks, and it would take a day and a half. The 13th iteration would take more than a month. The 14th would take around 3 years. O((5^2)^n) strikes again!

Being well pleased with myself, I decided to learn more about Makefiles and started tinkering around with the one i was using for this project. I somehow ended up recursively deleting my working directory and results directory. Oops. Good thing jEdit keeps it all buffered and safe for retrieval. That saved my ass in a non-trivial fashion. Props to jEdit for being an awesome text editor, the best thing i’ve come across since i abandoned EditPlus in my move away from windows.

I must now smite the Evil Kleenex Fiend, and hopefully banish him to the Threefold Snowy Plane of Pillowy Softness.

My Nose Is Possessed by the Ghost of Poor Plumbing

November 10th, 2005 by Xore

I now seek out the Great Tylenol in the Sky, that it may give me the strength to finish my quest, locating the long lost city of ghost plumbers, at the End of All Things.

Sun Shine that Bright Blue Light

November 10th, 2005 by Xore

Before anything else, i feel it is important to make the following declaration of inebriation:
std::stack<beer> inebriation;

that is all.

On the right, there’s a new entry in my code section, I added a phpbb Pather utility, for people who move their boards (say, from one directory or server to a different location) and as a result have login/admin access problems because the redirect requires outdated config values. This enables you to update your server_name, server_port, and script_path without needing to access the admin panel first (which you can’t do, since the redirect is broken… ). You need to have a valid administrator password for it to work, though.

My next version may do server/path/port autodetection & recommendations for ease of use.

I’ve recently taken the opportunity to convert large portions of code to a more general format for the purposes of generalization and expandability. This includes relearning c++ templating, multiple inheritance, and polymorphism. Which is not to say that i didn’t know what these things were, merely what the exact c++ syntax for these things are. One thing i noticed as being vitally lacking was the formalized concept of an interface, as i’d previously used in java code. The way around this is of course, to have an abstract base class (ABC), but implementing this is annoying when you end up multiply-inheriting two parent classes that share a parent class of their own. The key “word” (cough*hack*cough) here is “virtual”.

C++ templates are also annoying like nothing else, since they make compile times massive… all the code is in the header files.

Rediscovering C++ for the third time makes me feel somewhat n00bish. I think i’ll stop talking about it.

<random> bijections are cool </random>

My thinkgeek order has arrived in Seattle and should land at it’s final destination (one of my relatives) sometime in the next 24 hours. I’ll probably be heading down there this weekend to pick it up.

Of minor amusement is that a global replacement of s/int/long/; across my current project codebase yields a nontrivial amount of sprlongf()s. I think my code needs to take some “personal time” for itself.

I finished Robert Jordan’s “Knife of Dreams” (Book 11 of the Wheel of Time series). It was everything that books 8-10 weren’t, and more. Which isn’t to say that it was particularly better than any of the first four or five books in the series, but at least it’s picking up again (we can hope). Book 4 of George R.R. Martin’s “A song of Ice and Fire” is out in hardcover, I’m going to be picking up my pre-order either “tomorrow”/thursday or friday before I head down to Seattle.

And i’m coming down with a cold. Boo.

Camel out.

Python can l-l-l-l-lick me. and X-Chat 2

November 1st, 2005 by Xore

Pardon the above puns. I’ve recently spent the better part of the past 4 hours hacking away at python and xchat’s annoying-as-hell python plugin system.

Don’t get me wrong, i like xchat, and i have a great amount of admiration for the features of the python language, but, the xchat scripting interface seriously lacks some features (such as the ability to test whether a module has been loaded or not), and the python language seriously lacks some features (such as the ability to test whether a module has been loaded or not, if def’s have been def’d or not…).

The problem exists as such: I have a script that launches on freenode-connect, that sets up some user commands that i find useful, such as shorthand raw removes, auto-voice granting and multi-channel joins on successful hostmask application. This is all written in python, because the alternatives were perl and TCL. I’m unfamiliar with TCL, and i’d sooner write in python than in perl (i may start reconsidering this last statement…). It seems however, that many of the networks i regularly connect to are unstable, such that over the course of a day, i might get disconnected a few times. When IRC detects that the network is available again, it’ll auto-reconnect me to the server, auto-launches the launcher script, and then tries to rejoin me to all the channels that i was in.

This causes several problems:
First, now i’ve rejoined all my old channels, except my hostmask is no longer in place. This is uncool to high degrees, as there are reasons why people get these hostmasks. Secondly, since some of my channels require my hostmask be set in order to join, i’m only in about half the channels i thought i was in. If for some odd reason i was afk over the course of the disconnect, then i’ll find myself missing out on portions of valid discussion. Thirdly, since xchat reloaded the auto-launch script, i now have a dual-map of all my shortcut commands, so typing something like /music or /camel will yield small-scale floods, especially after 4 or 5 disconnects. Not cool.

So, this evening, i decided to find a way to solve each of these problems. The third problem was easiest to solve, which was simply to have a wrapper loader that tries to unload any existing command modules and then, on success or fail, loads the command module, so that there can only be one in existence at a time. However, this didn’t solve my first two problems, which basically required that i somehow leave persistent data across disconnects, but preferably not by writing to file, because that would leave persistent data across chat sessions, where i might log into a different network (say, home vs school vs work) and not want the same settings to autoload. (security related)

But, since you can’t ifdef a variable in python, and python tosses errors like hardballs if you try accessing a not-explicitly-instantiated variable, this is impossible outside of having some external scope. I toyed around with this for a while and discovered that each script is loaded in it’s own separate scope, which is not capable of talking to others.

So at this point, i’ve resigned myself to the fact that i’m going to need to write a global-level script (Rather than server-specific) because it’s pretty much the only way to hack around these problems, ie, having data survive disconnects. Of course, this opens me up to one specific kind of exploit, something i really don’t like to have to do… but hopefully nobody will ever figure out exactly what that exploit is…. humm ho….

I wrote a midterm today. I got halfway through the last question when the time ran out. At the bottom i scribbled:

“The rest of this computation is left as an exercise to the marker”

After that, I returned to the common room where i spent the better part of an hour or more discussion with Jeremy and a couple others, the implications of adding a necromancer and zombies to the game “Mafia” that some of you may be familiar with. For a halloween, i suppose that was somehow… appropriate, despite all the weird looks our conversation drew.

braaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaains.

Another Week Buzzes By

October 30th, 2005 by Xore

So, here I am again on a sunday afternoon, blogging it up in my cave. (Take this opportunity to turn my room light on — now it’s less like a cave)

This week has (like any other week) been busy. Monday night was up late working on vacuous proofs, which i didn’t realize until Tuesday’s discussion with my supervisor. Yay me. However, I now have new direction: Getting some code up and running, hunting down bugs (const char *) returning a single character, amongst others. I don’t think i’m ever going to get around the fact that even as optimized as it is, my program produces far too many results and, even without memory leaks, my code will run out of free memory during it’s tenth generating iteration. This means i need to move to heavy file i/o, or databases. Databases ftw, although i’ve never before done database coding in a c/c++ context, this will breach new horizons i’ve been meaning to get to for a long time.

I’m organizing a group thinkgeek order to save on shipping. I’ve been meaning to make such an other for something like a year, there’s a sexy/geeky shakespeare shirt that i’ve wanted ever since i laid eyes on it. /(bb|[^b]{2})/ …. that is the question…. If you want in, and didn’t get my email, let me know via email before monday(tomorrow) at noon (or before my cmpt 414 midterm anyway…)

Yesh. I have a midterm tomorrow. BOO.

phpBB 2.0.18 got released several hours ago. Keep in mind when you upgrade your boards, that you need to apply both the code changes and run the database update. So many issues revolving around board exploits on “up to date boards” are issues of people who have performed the database update without performing the associated code updates. So many issues revolving around board exploits on “up to date boards” are issues of people who have performed the database update without performing the associated code updates. This is a big release, as it includes a backport of Olympus’s session system (db schema change, heads up for those who don’t have CREATE privileges for their database user). I notified Trel of the release, so we should be seeing the cPanel Open Installer containing the new version and updater soon.

Wordpress seems to have a bug that causes it to bork out with an HTTP 500 if you try to post anything with the word ‘CREATE’ in it. Of course, that never stopped me from doing it anyway. Makes me wonder about security exploits. joy.

Also, since some people were asking for the code i use for my “Currently Listening to”, i made a new section and a quick downloader script and slapped up the script as a WP Plugin. You can take a look here.

Time for a bit of musical nostalgia…

The Midnight Bus

October 22nd, 2005 by Xore

So i went out this evening with friends to the Mountain Shadow, a pub on the west side of burnaby mountain, easy access from SFU. My table went through 4 pitchers for 5 people, so that means i have around 80% of a pitcher in me right now. Not a lot, but no small amount either, maybe just enough to get a mild buzz. For some reason, we ended up making oragami paper cranes out of keno cards. Good Times =)

I had to wait a while at the bus stop for the midnight bus to come, which was already occupied by the time I arrived. Two hot chicks who were making out (with each other), and a third person (male) who was complaining bitterly that they weren’t making out with him. A conversation ensued in which the pair pointed out all his bad points and lack of ability… ? Apparantly there had been some action before i arrived. To compound matters, they said that this new guy (me) was probably a better make out than he was. (them:”What’s your name?” me[lying]:”My name is John” them:”he’s lying”). Suddenly, I’m hot, really good looking. Suddenly, I probably make out really well. (them:”You want to make out with us?” me[lying]:”Sorry, I’m taken”). Suddenly, my “girlfriend” is really lucky. Suddenly, I’m probably really, really *REALLY* good in bed. Suddenly, my “girlfriend” is probably *really* satisfied. All this while, the other guy is becoming increasinly vocal about how well they’re willing to make out with me (who’ve they’ve talked to for 90 seconds) instead of him (who they met at the pub and have probably talked to for 90 minutes). I got a really strong impression they wanted to take me home and eat me. Or… other things.

What can I say? They were pretty hot. Am I stupid for not wanting to take these girls up on it? Am i a prude? It’s been something like 3 years since the last time i made out with anyone, but at least at that point, i knew the girl i was making out with… I don’t want unpleasant revelations later on, perhaps finding out that a kiss came with more than just tongue. Maybe i’m just paranoid about catching something. <angst>Maybe i’m going to die without ever getting laid!</angst> Maybe if getting laid was all what i was looking for in a girl, that would have happened already. Humm Ho.

So, what’s the difference between a 23 year old virgin and a prude?

(Please no comments commending me on my staunch adherence to morals. I get too much of that from myself already as it is, if i ever got it from anyone else, i’d probably vomit)