Author Archive for Mark

After rounding the world four times and getting the piercings, but only having three earrings to show for it because he's too picky about what he'll actually put back in his ear, Mark attempted to settle down back in his hometown of Knoxville, Tennessee. This, of course, did not happen because, quite apparently, he has been biologically implanted with a PsychoMagnet™ which makes even the most stable of people batshit crazy. Mark is currently "hiding" in wildly public places, and making as much noise as possible, while throngs of anonymous nutjobs accuse him of every salacious deed imaginable, such as the unseasonable rainfall of 2011, the murders of several prominent people who are still very much alive, and the 1915 sinking of the Lusitania. Mark is a carnivorous smoker who is Politically agnostic, unable to reproduce, refuses all manners of Internet dating, and generally believes that Murphy was an optimist.

Invision Power Board Code Bug

March 1st, 2007 at 11:37 am by Mark
Tags: , , , , , ,

     Yesterday, I was called to fix this bug, which caused a SQL error when users would go to the Stats / Leaders page:

Error:

mySQL query error: SELECT m.id, m.name, m.email, m.hide_email, m.location, m.aim_name, m.icq_number,
  f.id as forum_id, f.read_perms, f.name as forum_name, c.state
  FROM ibf_members m, ibf_categories c
  LEFT JOIN ibf_moderators mod ON((m.id=mod.member_id or (mod.is_group=1 and mod.group_id=m.mgroup)))
  LEFT JOIN ibf_forums f ON(f.id=mod.forum_id)
  WHERE c.id=f.category AND c.state != 0

mySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘mod ON((m.id=mod.member_id or (mod.is_group=1 and mod.group_id=m.mgroup)))’ at line 4

     Not too difficult to spot that first LEFT JOIN is broke … Editing the query in ~/sources/misc/stats.php, line 255, and surrounding `mod` with backticks did the job.

     Although, it’d be nice if customers would keep their software versions up-to-date…

More on Software

February 28th, 2007 at 3:32 pm by Mark
Tags: , , , , , , , ,

     (“Mark, why so much work talk?”  Because it’s easier to work and laugh than to think about things that are bothering me.  And besides, I’ve only rarely spoken about what I actually do for a living, anyway.) 

     A few days ago, Swankpad’s forum got weird.  Something happened and every post title was set to the same value.  Today, I found out for certain that exactly what code modification was causing it.
     Instead of adding code for upgrades and Mods to phpBB, it’s preferable to use a Patch File for software upgrades, and a neat little thing called EasyMOD to add in any future mods.  EasyMOD is great, and generally makes fewer mistakes than going through many thousands of lines of code to make changes (although, an uninstall feature would be nice!).

     There was a new mod called Akismet Spam Butcher for phpBB that I decided to install last week, just for the heck it — too many spammers.  Though the plugin doesn’t actually *do* anything, it was more of a proof-of-concept for using Akismet with phpBB.  I wanted to see how well it worked in adding Spam flags to the database — which is all it does at present.
     (In all honesty, if you can keep people from registering, that alleviates the spam issue altogether.  😉 )

      Anyway … Take a look at this SQL statement, from phpBB with Akismet Spam Butcher added via EasyMOD:

$sql  = ($mode != “editpost”) ? “INSERT INTO ” . TOPICS_TABLE . ” (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote, topic_spam) VALUES (‘$post_subject’, ” . $userdata[‘user_id’] . “, $current_time, $forum_id, ” . TOPIC_UNLOCKED . “, $topic_type, $topic_vote, $post_spam)” : “UPDATE ” . TOPICS_TABLE . ” SET topic_title = ‘$post_subject’, topic_type = $topic_type ” . (($post_data[‘edit_vote’] || !empty($poll_title)) ? “, topic_vote = ” . $topic_vote : “”) . ” , topic_spam = $post_spamWHERE topic_id = $topic_id”;

     Sometimes it’s just glaringly obvious where the problem is.

     One Edit, and every post in entire bloody forum gets the post title you edited.

     (Hint:  “$topic_spam = 0”)

     *shakes head*

#—–[ IN-LINE FIND ]———————————
# Yes, we’re still working within the same FIND
# Note that the space here is important, you will need to be sure there is
# a space between what’s there and what we’ll add next
#
 WHERE topic_id = $topic_id”;
#
#—–[ IN-LINE BEFORE, ADD ]————————
#
, topic_spam = $post_spam

     Looks like EasyMOD was the culprit… but then again, I probably would’ve done the syntax a little differently due to the spaces.

     Removing the Spam Butcher anyway … I found a more elegant solution. 😉

Robinhood: Free Stocks for your Referrals!

Intelligent Design, Take 2

February 28th, 2007 at 5:37 am by Mark
Tags: , , , ,

     As if Monty didn’t have enough to say about Intelligent Design last year… Check this out… 

     SayUncle Interviews TN State Senator Raymond Finney:

SayUncle: Let’s get the question everyone is wondering out of the way: are you retarded?

Senator Finney: Uh, no.

     Oh yeah, that rules.  😉

     The “Yeah, God put those [dinosaur] bones there to test our faith,” bit was hilarious.  I can remember hearing that when I was a kid from several people, being that I was such an avid Paleo-archaeologist at the age of six.
     The simple explanation was that there couldn’t have been any dinosaurs, since they weren’t mentioned in the Bible.  Strangely, neither were Planets, Meteors or Giraffes, so they must not exist, either.  *shrug*

Simplicity Rules the Day

February 27th, 2007 at 9:16 pm by Mark
Tags: , , , , , ,

     Before I start this little rant, I just wanna say, this is not to ridicule Chris — he’s certainly worth his salt.  This was just an example — and a rather basic one, at that, given that this was more of an oversight than a faux pas — of something that’s been getting on my nerves for years.

     Every once in a while, someone’ll do something, semi-cool with a piece of software, but their execution makes it appear that they’ve forgotten why a given function works the way it does.  It happens a lot these days, and I’m glad I’m old enough to remember “why” things are like they are.

     A case in point — and Chris is a brilliant guy, mind you, and again, I’m not bashing him — was the beginnings of a WordPress plugin (blog software, for the initiated) to show extra formatting buttons in the Text Editor.

function st_addAdvanced($buttons) {
    unset($buttons[22]);
    array_push($buttons, ‘wp_adv’);
    return $buttons;
}

     It’s a pretty elegant little function.  It takes an array called $buttons, and changes the last value to ‘wp_adv’ and returns it.  Unfortunately, it makes things look ugly because of the way the $buttons array is used elsewhere in the code.
     He says, “Ahh, there are some formatting issues to take care of.”

     I’ve always had this bizarre K.I.S.S. approach to programming anyway.  I mean, hey, why bother calling two other functions, unset() and array_push() when I can do what I need with a single, local variable?

function st_addAdvanced($buttons) {
    $x=$buttons[21];
    $buttons[21]=’wp_adv’;
    $buttons[22]=$x;
    return $buttons;
}

     Sure, I could’ve used two, and said, “$a=$buttons; $x=a[21]; $a[21]=’wp_adv’; $a[22]=$x; return $buttons;” to save keystrokes…. but… I’d be wasting as much memory as I gained CPU by foregoing the functions.

     But that’s basically my argument about most Developers these days.  It’s a pretty serious can of worms for me to open, because I know I’ll have developers coming from all over to tell me I’m full of it…  Even though I was writing Assembler before their parents ever met, and have some pretty cool — working, useful, debugged — software under my belt…. Joke ’em if they can’t take a f… *shh*

     Seriously, it’s no wonder our CPU and Memory requirements are so ridiculously high these days.  There’s an API or a DLL or a Library for freaking everything!  Layers upon layers, upon more layers, with repositories and snippets and widgets and scripts galore!

     Our Universities teach this method, often telling people, “Do it this way!” without telling people “Why it should be done this way.”  The “simpler” things get, the more abstract they become.
     They’re not churning out programmers and problem solvers.  They’re churning out memorize-and-regurgitate linkers who can’t write code without the assistance of a Visual Integrated Development Environment.

     Hey … Wasn’t the whole point of all this Link Library, Visual garbage to make software development easier?  Faster?  More bug free?

     I used to sit down with vi, edit or Notepad and it’d take me a couple of days to write a program.

     I can use all these neato-keen, new-fangled hooks and VIDEs, and it’ll still take me a couple of days to write a program…
     But it might take weeks to debug.

     Most developers do the same thing… And spend a lot of time setting up their VIDE.  Or getting a bit of code they copied off the internet to work.  Or…

     But, hey … I’m probably full of it, right?

     As employers, educators and policy makers, we need to get back to basics.  Yes, teach how.  But teach why, as well.

Robinhood: Free Stocks for your Referrals!

Hotties of Blogdom

February 27th, 2007 at 2:34 am by Mark
Tags: , , , ,

     It was smart-ass-ness that made me do it.

     New Blogroll section at right… 😉