Gruedorf: Sandbox Sitta

This week I completed the autoschema tool that’s been long overdue to maintain a healthy database state across the four sandboxes used for development.

I also cleaned up layout errors and corrected a bug in screenshot uploading. Also improved the search result page.

Three minor files section tasks left: A directory link/listing, build the legacy 301 redirect table, and give the files frontpage some polish.

Next major task after that: the Gallery Controller.

Gruedorf: the Swampening

Between putting in incredible hours at work, and a few Magic: the Gathering pre-release events in the last week, I haven’t had much time for gruedorfing.

However, I still got 14 commits in.  (All of them Friday morning.)

The work done was all in finalizing the /downloads/complete-new-os/ page, and tracking down and fixing errors that had cropped up in the upload process.

The second item distresses me, presently, since a solid upload system was the main impetus for the rewrite.  finding out that uploads are still fragile and very prone to breaking with forward development, combined with the fact that I don’t have a testing strategy for roundtrip uploads, means I’m kinda nervous.

So, anyone out there have a good solution for a round-trip integration test where you upload, via flash and javascript, a unique file, and then verify that the file exists on a unix filesystem, and then verify that a corresponding database entry and further corresponding webpage works?

Moving forward, I’ll be working on an administrative page to allow file owners/admins to associate file instances as older/newer versions of the same file.

Uploads, Downloads, and the Management Thereof.

After some prodding, I managed to get the dorf back into gruedorf. Let the games resume.

Since last I posted about beta.vrpg, 58 revisions have occurred. In that time:

  • I got file submissions up.
  • I got (simple, title-based) file searches up.
  • I got most of the file details page up (thread spawning, screenshot uploading pending).
  • I did a lot of database reworking and massaging, mainly to get to a point where…
  • …single file entries can have multiple physical files attached, so one game can have file links to every OS it’s released on

Oh, and I made a Silly 500 Internal Service Error page.

Definitely the most important part of this work.

Going forward will be finishing the file management side of things (letting you deprecate old versions of files in favor of new ones, showing a browsable history, letting you edit and delete files you own), and cranking out the community-based side of things (ie, image uploading and talkback threads on file pages.) After that, advanced search options and a browsable file index, and the section should be complete.

I’m mainly excited to see a upload system that hasn’t seen a failure yet. This was one of the major failures of the current vrpg that prompted the rewrite. I used swfupload for the actual UI/handling of the upload, and integrating it went very smoothly.

beta is the new gamma

Work continues apace on

Actually, it’s quite brisk now. Almost 60 revisions have passed in the last week.

Gayo and crew have banged on the forums, and I patched several oversights. Locally I’ve moved on to the new downloads section, which I’m looking forward greatly to finishing. Mainly so there can be an upload script that works for most users and gives progress feedback.

Are all webapps 98% mundane crap? I’ve been doing them for almost a decade now, and I think I have an answer.

(The answer is “yes”.)

Forever Forums.

I foolishly regret saying the end of my work on the forums was, in fact, nigh.

I am getting close to done.  It’s just that the management of forums also requires work on the teams/games sections of the website that I was hoping to put off until later.

Here’s a list of things accomplished since my last post:

  • Added uservoice to the layout of beta (and production!) for feedback.
  • Generalized forum displaying.
  • Added forum url_key setting.
  • added /forum/find (so you can find forums you’re allowed to see, and add them to your main listing)
  • added breadcrumbs to the forums.
  • created functions to list all visible forums to the current user.
  • Added SEO stuff to the template.
  • Added nofollows to links that performed actions rather than showing pages.
  • Updated to YUI 2.7
  • fixed an annoying bug where a forum with no messages (ie, a newly created forum) wouldn’t render at all.
  • Created a service to look up usernames that was integrated with a YUI autocomplete widget.  This’ll mainly be of use moving forward with the team creation page.

Currently on revision 225 in the SVN repository.

The good news is that I have more time to work on this, as my train-based commutes now let me think and hack!

The bad news is I am like a week late with this Gruedorf post :(

Gruedorf means never having to say “I win!”

…but at least I’m not losing again for the moment!

Although I had a series of disractions (got sick, moved, had several time-sensitive periods at work, went to GDC, and went to Rhode Island to see my girlfriend twice) I still have managed to get a clip of vrpg work done.  Revisions 199 through 215 were all done since the last post.

Major milestones passed are: bbcode mode switching (new posts use bbcode, old posts don’t, even if edited), and custom forum creation.

Next up is forum management (adding/removing admins/mods/peons, changing details on forums you admin, changing your forum notification preferences), and searching for non-standard forums.

And then the forum stuff will be over (for now).

I’m going to sleep now and see how much of that list I can plow through when I wake up.

The Gruedorf Waltz!

Unfortunately I’ve been busy again, so I let my obligation slip by a day.  It’s been odd because I’m not sleeping in my house (due to Dethmöld) which has been making me feel a whole lot better.  But it is impacting quality time with my computer!

After Hypnogourd (the original SotS musician from 1997, and my ol’ highschool chum) dropped by recently and said, unequivocably, that it was dead.  I tried to convince him that the google analytics said it wasn’t dead, just untalkative due to the site needing maintenence, but he wouldn’t hear it.

So I sent him to to find conversation and brooded for three minutes before re-taking the coding mantle again.

My plan is as follows:

  • Finish up Forums
  • Recode a robust upload/download system as fast as possible.
  • import the existing docs system from the existing vrpg
  • release.

This week I’ve:

  • tightened up url-rewriting.
  • Converted everything to mysql_real_escape_string()
  • made sure editing posts wouldn’t double all newlines.
  • made sure editing posts wouldn’t double all slashes.
  • resolved testing issues that made not agree with my local sandbox
  • set up things to assist Overkill in getting’s codebase to run on his local sandbox.
And that’s it!  And now I get back to finishing up the outstanding forum items!

Guilty by Association, Charged With an Array of Punishments

Then I had the task of finding a BBCode parser. After vetting a few (one of which had bbcode smileys BASE 64 ENCODED WITHIN THE PHP FILE), I went with the PEAR one…

Even with my widget, I seem to miss the mark sometime in posting to gruedorf in a timely fashion. I’ll need to make a version 3 of it where it starts ringing annoyingly when alerted people get under 24 hours to go.

Even though I may be late in posting, I am not late in doing. Over the last week I’ve committed 20 new revisions to the repository. Go me.

This weeks changes bring us thread stickiness, thread deletion/undeletion, and message deletion/undeletion, all with lovely YUI dialogs for the administrator.

I also created moderson, who is like testerson but is only a moderator and not a god-like admin. peon remains sad and lonely.

I was planning on closing out the last of the forum stuff today, but I thought it’d be a good idea to move over to bbcode instead of using filtered html, for various reasons. This quickly became a thorn in my ass.

The way that the old code works on query-fetching is to have a query like:

SELECT message.*, user.username FROM ...

And then it’d unpack the results from the query like this:

list( $a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $o )
= mysql_fetch_row( $result );

$this->_id = $a;
$this->_message_board_fk = $b;
$this->_parent_fk = $c;
/// ...and so on

This served my younger, more innocent 2003-self just fine. However, my older, wiser, more curmudgeonly current iteration is bound slightly by the whippersnapper’s naive choices. For one, the moment I add a field to the `message` table (like, say, a ‘version’ field to switch upon different rendering techniques), that field’s value suddenly becomes what used to be `user.username` prior to the change. Which is… inconvenient, at the best.

Then I had the task of finding a BBCode parser. After vetting a few (one of which had bbcode smileys BASE 64 ENCODED WITHIN THE PHP FILE), I went with the PEAR one, which still needed a bit of grooming and prodding to get to work in my multi-platform, non-PATH-munging world.

After several (annoying) hours, I now have a working bbcode parser working in my CakePHP project, safe, snug, and committed as of r182. Hooray!

merry xmas, from website beta prime…

This last week has been light on the gruedorfing and more heavy on the drinking.  Oh, when will I learn?

Several hours of work, however, were invested into investigating why I couldn’t get variables from simpletest by id.  To make a long story short, form element values in simpletest won’t be accessible if the element you want is in a malformed <form>.  In this case, there was no form tag at all, and so I was SOL until I tried actually making my html valid.

Feh.  Valid HTML.

Anyways, now the insidious bastard that was test_admins_can_edit_anything() passes.  Revisions 161 and 162 of the beta vrpg codebase happened this week.  I believe this is the last of my major infrastructure blocks, now, so the rest of the forums tests should go much quicker next time I sit down and tackle fleshing out the functionality.