Friday, July 30, 2010

Well Fuck

Turns out that if I want the Kryta area to go back to the way it was, I have to finish the War in Kryta.

Things were going really well with Frozen Soil in my build, but then after getting the key, clearing Shaemoor, and opening the door, my computer crashed.  Yeah, I'm stuck on A Little Help From Above.


Frozen Soil makes it tolerable.  You have to place it right since it dies easily, but with it in use my only remaining frustrations were group sizes and the strange pattern I've noticed in Shaemoor.  The first time I pull a group, it's impossible and I'll have to retreat.  Then, after resurrecting and healing up, I re-engage and it goes easily.  Repeat for the next group.  Regardless of whether or not they have healers.

So, Frozen Soil will be stapled to my skill bar until I finish War in Kryta, but I'll have to buy a bunch of Powerstones of Courage.

Thursday, July 29, 2010

Crucial Blogger Shortcomings

The following are all sorely needed:
  • A "Report Spam" link on every comment left on a blog post
  • Captcha forced for blog authors as well
  • A comment spam filter (8/13/2010: IT EXISTS NOW YAY)
  • Links to moderated commenters' profiles from the comment moderation panel.  Also, a link to their blogs, when applicable.  The emails it sends about moderated comments have profile links...
  • A link directly to the dashboard from the navbar even when you're looking at your own blog
  • The Quick Edit link in a post should use Blogger in Draft if the user has it enabled
  • Templated HTML for inserting an image into a post
  • Ability for custom theme CSS to use theme variables
  • Toggle for target="_blank" on links
  • Ability to add extra formatting buttons that apply custom CSS classes to post content via span tags
  • A setting to specify custom CSS to be loaded in the post editor, for use with custom CSS classes applied to post content via span tags
  • The Twitter gadget needs to show retweets and link whatever #thesearecalled
  • A proper trackback system compatible with other blog software
  • The post preview click catching element needs to be positioned with position: fixed; rather than position: absolute;, and the diagonal "Preview" text should be below it, not above it.
  • Tweaks to the editor so that pressing Enter has the desired effect on the first try, and to eliminate the space it puts at the end of a line.
  • Ability to preview the short version of a post using a jump break
  • Post editor formatting button for underline
  • Some emoticons or something (should be the same height as the text so they don't mess with line spacing)

Wednesday, July 28, 2010

Crucial Twitter Shortcoming

I'd noticed this in the past, but it actually mattered this time because someone (see comments on previous post) was trying to contact me.

Twitter won't show you @mentions on your Home page from people you aren't following.  Normally this is because someone you aren't following could be having an @mention conversation with someone you are, and thus it keeps the page uncluttered.  But when someone who isn't following you @mentions you...  You have to open the @mention page to see it.

Also compounding this issue is the fact that Twitter doesn't show you how many unread @mentions you have.

Long story short, even though I'm not the guy the commenter on the post below was looking for, I'm helping with the issue.

Level Editors Suck

In the past, level editors were simple.  Open it, make a new map, design the map, script anything that needs scripting if the level editor had support for it, then save and play.  That was it.

Warcraft 2's level editor was like this.  It was really simple to use, you just drew the terrain with your mouse, added trees, water, dirt that couldn't be built on, gold mines, and start locations for each player.  That was it.

Starcraft's was basically that, but with triggers that let you script things.  Sure, they took a little bit to learn, but the design process was simple enough and triggers weren't absolutely required, so the editor still had the same accessibility.

Descent and Descent 2 both used the same editor, which was fairly complex, but the average user could still make a map with only a minor bit of effort.  This is important because these are the first 3D games I've mentioned thus far.

Also 3D, but going back to the RTS, Warcraft 3's editor looked absolutely amazing at first.  You can mess with all sorts of terrain things and design a landscape with hills, valleys, rivers, etc.  Placing start locations and other level essentials is still simple.  They upgraded the trigger system massively from the one used in Starcraft, and it shows since any trigger set can be converted into some random scripting language.  What language is this, what is its syntax like, what are the predefined objects, methods, and properties, etc.?  So I go into the help file.  Or, so I think.  Selecting Help just opens a web page in my browser that basically says that the world editor is not supported by Blizzard.  Okay, that's fine, but how about some fucking documentation?  Why leave documenting your editor to the third party hacking community?  Why not lay everything bare and say "look, here's how to use everything".  Starcraft's help file did that.  It was by no means a complete trigger tutorial, but it at the very least got you started.

Why isn't it that FPSes and other modern games have the same simplicity in their editors that older games did?

Open up Unreal Editor and churn out a simple deathmatch level in five minutes without having to first research the bare essentials of how to use the editor.  I dare you.  I made one CTF map in it, that took approximately four hours (after reading documentation, and with further documentation lookups during creation) just to get the bare basics in the level so it was playable.  You know, the layout, the flags, ammo pickups, spawn locations, etc.  It looked like shit, but that's to be expected of a first level.  When I fired it up, I discovered that the bots wouldn't move.  You have to litter your level with what it calls PathNodes so that the bots can find their way around the level.  This is eased somewhat by the fact that all pickups, flags, etc. contain a PathNode, but if the distance between them is too far, the bots won't know what to do.  Really?

Alien Swarm, an otherwise great game, was advertised as having an "easy-to-use tile-based level editor".  Upon installing the game and its SDK, I was confused.  Starting up the editor started up Hammer, which looks a lot like Unreal Editor.  Where was this "easy-to-use tile-based level editor" the game was supposed to come with?  I found out via a thread on Steam's forums that contained some of the more useful console commands that in order to get to it, you need to type a console command in-game.  That, and you have to enable cheats.  The "easy-to-use tile-based level editor" is a cheat.

So, whatever, I open up the console and type in "sv_cheats 1; asw_tilegen" and get the editor up.  It's got tiles for rooms with various configurations of doors and so forth, so I happily went about constructing a small network of hallways.  I saved it, then told it to generate the level and play it.  Upon entering the level, I see nothing but white except for my yellow player name.  My marine can fire guns and do all the emotes, but I don't get the feeling that I can move anywhere.  It's just white.  A little more inspection of the editor shows that you can make your own custom room types and save them, and they automatically get added to the tile list so you can place them.  So I make a room based on one of the preset rooms, but it lost the background graphic and was just the small graphic indicating a door to the north.  Hmm.

Also, I noted that if I right click, a weird green symbol appears in the level precisely one tile below the tile I right click on, that I can't move anywhere after that.  Apparently this is the start location.  Why didn't the level editor bitch at me when I went to build the level without a start location?  Why doesn't it appear in the tile you click on, and why can't it be moved after that?  And furthermore, why is nothing else placeable in this editor?

Apparently, Hammer is still required to actually finish the job.  In that case, why does the in-game editor have the option to save and play, and doubly, why doesn't the editor bitch at me about the level being incomplete when I go to build it?

I loaded up Hammer and tried to use it, just by feeling around in the dark hoping to find something, anything that could be used to light the way, metaphorically speaking.  Somehow I managed to create a cube and texture it, but I think it wasn't a room because weird things happened when I tried to move the camera inside it.  So basically, your guess is as good as mine on how to use this thing.  Which kind of sucks, because I was looking forward to making some levels.  Why is it that you pretty much need knowledge of 3D modelling to make levels?  Haven't they heard of providing prefabricated level elements to get people like me started?  Can't they make a level editor that's intuitive to use and that gets the job done without requiring other tools?  Sure, the quality of a quickly made level is going to be low, but at the very least LET ME MAKE A SHITTY LEVEL EASILY SO I CAN LEARN HOW TO MAKE BETTER ONES OVER TIME.

Fuck.  You'd think that with the huge community that's popped up around modifying and creating custom content for games, that there would be an intuitive editor to get people started that haven't done any of this before.  As far as documentation goes, at least Valve has an official wiki with a Getting Started tutorial.  I can work with that.

Tuesday, July 27, 2010

Impending doom

I need another hard drive.  Or, better yet, I need to put together the file server I have plans for.  Then I'd have 4TB of space to store stuff.

111.16 GB free across all three of my hard drives.  And really, the 20GB drive doesn't count because it's only Windows and various utilities.  All my actual data is on the 120GB and the 750GB.

Friday, July 23, 2010

Let the FCs resume.

I started up World Tour yesterday and re-FCed three songs (Guitar: Beautiful Disaster, Vinternoll2; Bass: No Sleep Till Brooklyn), only getting a higher score on No Sleep Till Brooklyn.  Then after entering that higher score in on ScoreHero, I was looking at my scores and noticed that I still hadn't gotten the FC of Feel The Pain on Bass.

Since it'd been a while, I played it through once to reacquaint myself.  I noticed that my drops were entirely stupid (overstrummed on a sustain at one point, and understrummed due to a brain fart).  Went through again, got an overstrum 100%.  Went back in a third time and finally got the FC.  It ended up being 4th place on PS2.  Can't really complain.

I guess I'll stay in World Tour for a while trying to get as many Bass FCs as I can.  I doubt I can get all 84, but I'll be happy with at least half.  I'm actually kind of near that right now (I'm at 38 of 84), so I might have to adjust that to 60% or so.  Even if it means playing the Tool songs again.  I don't know if I'll ever FC B.Y.O.B, but getting it 5-starred is just a matter of hitting more SP phrases.  Sweet Home Alabama is fairly easy (and fun), but is extremely chokable and has a long string of altstrumming at the end.

So I guess my ultimate goal in GH:WT Expert Bass is to have a sizable portion of the setlist FCed and the rest 5-starred.  Also if I can get Pull Me Under unlocked, I could sightread that.  I haven't bothered with career mode in a while and certain songs make career mode crash when the game is run off the hard drive...

Wednesday, July 21, 2010

Working Guitar Controllers GET!

As I mentioned previously, a friend had some PS2 guitar controllers he wasn't using, having switched over to RB2 on the Wii.  He dropped them off yesterday after we played some Alien Swarm (damn, that game is fun) and then I proceeded to distract myself from 7 PM to midnight reacquainting myself.

What he gave me: a GH2 Gibson SG, and a GH3 Kramer Striker.

The Kramer, as previously noted, needs hardwiring, and already has a paper shim.  If you look carefully along the left side of the neck you'll see his paper shim sticking out of it, I'll be replacing that with an entirely internal one when I hardwire it.

I did the reacquainting with the SG, since newer controllers have a select button that's over there. While I've almost gotten used to activating with the side of my hand, I still vastly prefer just using my ring finger on the Kramer.

The SG does have one issue: the strum bar can bounce back up and cause an overstrum.  This generally only occurs when I whack the strum bar and don't leave my hand on it to move it back slowly, which does affect my gameplay.  I found that I have a really hard time strumming and then whammying SP sustains with it, because I'd usually get an overstrum.  I don't really know what can be done to fix that, but at least the SG has regular phillips head screws instead of the annoying torx ones on the Kramer.

If I can't get the SG working to my liking, I can always just open it up and gank the rubber bit beneath the fret buttons to put it in my other Kramer...  assuming it's the same size of course.  It looks like it should be though, just from external inspection.

I also like the body of the Kramer a lot more.  The SG's just feels uncomfortable where my right arm rests on it, whereas I never noticed anything with the Kramer.  I'll have to see if this Kramer has the half-dead-from-factory whammy bar that my original one did.

I can play Guitar Hero again.  Yay.

Edit (2:25 AM): Hardwired the Kramer and replaced the external paper shim with an internal one.  Just for shits and giggles I tested it out in GH3's cheats menu before hardwiring, it was indeed in need of it as four of the five frets would flicker if the neck was moved even slightly.  Well, that's all taken care of now, works like a charm and the whammy bar is better than my original Kramer's.

Monday, July 19, 2010

Alien Swarm

Similar to how I got Portal, Alien Swarm is free today on Steam (The SDK and dedicated server are also free!).  Get it while you can.

I'd heard about this a few days ago, and wondering what exactly it was, I read an article, found that it was originally a UT2k4 mod, so I downloaded and installed that to see what it was like.  After having gotten the Steam version, I can say this: the two are vastly different control-wise.  Specifically, the Steam version is a couple metric megafucktons better.  You don't have to switch marines for every little menial task anymore.  There isn't any stupid right click menu anymore.  You can order your tech guy to seal or unseal a door without changing marines.  More complex things (that the specific marine has to do, like hacking panels or healing) still require switching, but that's excusable.

The AI is a lot better too.  In the UT2k4 mod, the AI marines liked nothing better than just standing about half a screen away from you not doing anything while you were busy trying to kill things.  Now they actually fire at things.  They also run into a nearby heal beacon if they need healing, which is nice.

The Steam version has a much greater emphasis on multiplayer, to the extent that the single player is only a practice mode.  To contrast, there were single player campaigns in the UT2k4 mod.

My main issue with the game is that changing weapons with the scroll wheel is WAY TOO SENSITIVE.  Most of the time, I end up re-selecting what I originally had selected.  Which is a huge problem when I'm controlling the healer and trying to drop a heal beacon and then go back to shooting things.  I ended up wasting two beacons.  It was this way in the UT2k4 mod as well, which is strange given that I have no problems switching weapons in regular UT2k4 gameplay with the scroll wheel.

Also, for one reason or another (I believe I had issued a follow order at the time...) I lost a marine (only one) in the practice level because he didn't fucking follow the rest of the group.  I was trying to get him to weld a door shut (with Faith selected, using Shift+4), but the door kept opening instead.  I decided to just run, since this was right at the end of the practice mission, and he didn't follow and died.

One thing I can say: don't overlook flares.  Their purpose, despite their name and obvious visual effect, is to give your weapons autoaim.  If you're getting rushed, toss a flare into the enemies and fire away.

Overall, Alien Swarm looks like it'll be a really fun co-operative multiplayer experience.

Sunday, July 18, 2010

Beat Hazard

So as much as I don't like Steam, it does have its uses.  There are free weekends of games all the time, and plenty of free demos to be had.  Earlier today I downloaded (and immediately exhausted) the demo for Beat Hazard.

Beat Hazard is a twin stick shooter.  Which is interesting because even though Steam can't find my PS2 controller->USB adapter as a joystick for some reason, the game found it just fine.  I immediately had gripes with...  The PS2 controller's analog sticks.  My thumbs slip off of them way too easily.  The game really wants an Xbox 360 controller (and uses its button graphics and controller picture), but fortunately it worked with the PS2 controller, as I don't have a 360 controller.

Everything about Beat Hazard's gameplay revolves around music.  The graphics, the enemies, the bosses, everything.  Furthermore, even though it comes with some music (which I didn't play), you can choose your own audio tracks.  It supports a wide variety of audio formats: MP3, WAV, AIFF, OGG, and FLAC.  Due to patented decoder licensing costs, support for iTool formats like m4a and aac are an extra dollar's worth of DLC on top of the game's cost, which seems reasonably inexpensive, and thus worth it if you have music in those formats.

The type of music matters greatly.  Metal is pretty damn difficult, with several boss encounters per song, whereas something lighter like Green Day will be easier.  The two Lonely Island tracks I played were both really easy and also very low-scoring.

Of course, there's powerups.  What would a shooter be without powerups?  Here's what you get:
  • Power: Increases your weapon's power.
  • Volume: Increases the volume of the music, and the amount of color in the game's graphics.
  • +1: Increases your score multiplier.
  • Bomb: Gives you another bomb to use.
  • Beat Hazard: I'm not exactly sure what this does, but when you max your power and volume, you get this.
In addition, you get multiplier bonuses for surviving for a while, and for not shooting for a while.  It's pretty easy to max the volume and power, so most of the gameplay will be spent collecting score multiplier powerups.

The game's instructions explains exactly how it works in much greater detail than I really care to remember.  All you really need to know is that the more involved the song is, the harder it's going to be.  I counted several boss encounters triggered more or less exactly when Galneryus' drummer was doing really fast double bass.

The soft parts can be difficult too, because even at full power, your weapon fire rate reacts to the music.  So if you know there's a soft part coming up, try and kill as much as you can before your fire rate goes down (and then get a bunch of daredevil bonuses by not firing).

The game tracks your cumulative score and uses it to give you extra bonuses, such as reduced multiplier loss when you die, powerups when you start a song, and more powerups from bosses.  In the ten songs the demo let me play, I managed to get high enough to have a volume, power, and multiplier powerup at the beginning of the song, and bosses were bleeding powerups.

Twin stick shooters are generally decent games.  The added gameplay mechanic of making everything depend on the music keeps it fresh and different from other twin stick shooters like Geometry Wars, Smash TV, and I MADE A GAME WITH ZOMBIES IN IT.  It feels a bit easier than the aforementioned games, but the difficulty really is dependent on the music.  I played on Normal and had very few problems, but I'm used to twin stick shooters.

The ten track restriction in the demo is really constricting, I would have liked the opportunity to experience a bit more of my collection.  In addition, it won't let me see what rank I got to in the ten songs I played (even though it showed me after each song).  Once it's expired, pretty much the only thing the demo can be used for is its visualization mode, entered by pressing V on your keyboard at the title screen.  Despite the displayed controller buttons for the visualization mode and next track, I found that every controller button entered the menu instead, so I had to use the keyboard.  I don't know what the game's mouse+keyboard controls are, because as soon as I found that I could configure my PS2 pad, I did that and didn't look back.

The game itself is $10 on Steam (excluding any sales, of course), with an extra dollar getting you support for Apple's audio formats due to accursed software patents.  I wish it supported APE audio.  Maybe I should transcode all my lossless Galneryus to FLAC, I dunno.  Regardless, it's an inexpensive and enjoyable game with as many levels as you have audio tracks.

more Guild Wars stuff

So instead of watching any Rozen Maiden I started up Guild Wars and finished capturing monk elites.  I'll be working through the Factions/Nightfall elites for the core classes next, before grabbing assassin/ritualist/dervish/paragon elites.  Money is literally not an issue, I make enough from drops and the occasional break from capping (say, to farm whatever item Nicholas the Traveler wants each week) to cover it.

I'll take the opportunity to fangasm about the recent unveiling of the ranger class in Guild Wars 2.  You can read all about it here, but I'll summarize in my fangasms.

Also, jump break.

Saturday, July 17, 2010

Marathon Frontier

Marathonned Macross Frontier.  It was really good.  It's one of those ones that even though it's really good, there's so many reasons that you can't really put your finger on any one specific one and say "that's the reason this series is good".

I lol'd at them basically producing Macross Zero at one point.  That was hilarious.

I don't really have a good screencap like I did for F/SN.  I'd planned on posting that picture, whereas here there wasn't really anything that I could screencap as I watched (it's not like I watch with my finger hovering on the save screencap key).

There was a temporary panic when I went to watch the series and noticed I was missing episode 18.  Luckily, I found the batch torrent from the group I'd gotten it from (anyone remember Menclave?), pointed it at all my complete files, and got episode 18 within an hour or so.  The significance of episode 18 and why I'd be missing it is simple.  Since I set up automated downloads using Azureus' RSS Feed plugin, I'd had it properly configured to get the episodes.  But between episode 17 and episode 18, Gekkostate left the joint project, so my filter no longer matched.  I guess I didn't notice until episode 19 came out, what with Menclave's slow releases and all.

Next up... I guess Rozen Maiden desu.

Also, my strict comment moderation settings caught some chinese linkspam.  Unfortunately, from the comment moderation panel, there's no way to get to a user's profile and then their blog, so it's useless for reporting the fuckers.  Another thing Blogger needs to fix.

Friday, July 16, 2010

Resuming the Anime Marathon

Yeah, it's been a while.  I'm actually behind on everything that I decided I'd watch this season.  But at least after this weekend my backlog should be down to just the two series I archived from spring season (and Tsukihime).

Anyway, I marathonned Fate/Stay Night.  You know, the show that gives us this valuable bit of wisdom:

Next up is Macross Frontier.

Tuesday, July 13, 2010

Plastic Possibilities

Being engineering-minded, I think I've come up with a possible solution to reanimate my guitar controller.  I probably won't do it, due to lack of materials and funds to obtain said materials, but I've gone over it in my head a few times and it seems like it'd work.

The problem is that rubber piece.  The spots that get the most wear are the thinnest.  So, we remove it entirely.  Pull each of the pads off of it and throw it away.

Then, carefully superglue each pad to the middle of each button.  There isn't a lot of plastic to work with, but super glue bonds pretty easily to just about anything, so it shouldn't matter.  I could superglue some paper to the bottom side of each button to give a better surface.  Preferably cardstock, so it's sturdy.

Next, I'd need some high rebound foam.  I think I have my terminology right here.  I want the foam to push the buttons back quickly after I release them.  Very quickly.  Instantly, if possible.  Cut the foam down to suitably small pieces, and situate them on the fret PCB with more superglue.

Then screw the whole thing back together and hope.

This could quiet down the fret buttons as well.  Honestly I'm not sure why they're so loud.

What I'll do instead: someone I know has a GH3 wireless Kramer that he's willing to part with, I'll just get that from him and fix it up.  It needs hardwiring and a paper shim.

What would be even better: get a job, save some money, buy Xbox 360 slim and 360 versions of GH/RB games, as well as various DLC.  Then get some Ions with cymbals, a double bass pedal set, and a real bass trigger with a Roadie Kick Box RB.  Basically just send a bunch of money over to Ryan at and have him ship me the best drum controller setup possible, that turns into real electronic drums by simply using a different brain.

Next up: Radical Dreamers

I don't know if I'll get around to finishing the Chrono Trigger notes posts I had planned, but what I do know is that I'm playing Radical Dreamers next.

Radical Dreamers is kind of a sequel to Chrono Trigger, but stars the two main characters from Chrono Cross.  It kind of bridges the gap between the two.  Radical Dreamers is a text adventure game with simple, sometimes animated pictures in the background.  Battles are fought with textual choices for what to do next (i.e. "Attack!", "Jump back!" or "Hit the deck!").  It's sort of a visual novel, but with more emphasis on the novel part than the visual part.

Yeah, I've already played some of it.  I'm avoiding using a walkthrough or other guide for it.  I made it pretty far before I died horribly in what I guess I could call a boss fight.  I hadn't been using save states, so I'll have to start over again.  Yeah, this one's only playable on an emulator.  It was one of a few games released for the Satellaview, a Japanese-only SNES cartridge that let you download games, which was basically Nintendo's answer to the Sega Channel.  It was never released outside of Japan and has faded into obscurity, save for ROM archiving sites and an English translation patch.  The game's save function crashes when I try to use it, so I really have no choice but to use save states.

I don't really know much about the game.  There isn't the same amount of stuff to do as in Chrono Trigger or Chrono Cross, so once I beat the main story and then the side stories, that'll be it.  No characters to max out or anything.

I already know this in regards to Chrono Cross: I'm not recruiting Kid.  Recruiting her prevents you from getting Glenn, who despite the name is unrelated to a certain amphibious hero in Chrono Trigger.  For one, his hair's yellow, not green.  Second, the era in which the amphibious hero originates is over 400 years before the beginning of Chrono Cross.  He wields a sword, and by using the game's dimensional travel mechanics, you can get him two of his best sword and he'll happily dual-wield for you.

Also, no way in fucking hell am I going to max everyone out in Chrono Cross.  There's like 40 recruitable characters.  Fuck that.  I'll probably just play through to the true ending.  It's not like there's an extras mode to unlock by getting endings or anything.

Monday, July 12, 2010

Fuck This Shit

CAINE is depending solely on me to migrate the forums from lulzbb to Simple Machines.  I honestly thought I could do it.  Really.  So here's the history of CAINE's forums, as they pertain to the migration.  No dates, because I forget them.

We decided we needed forums, so our webmaster (the person with access to CAINE's account on the student webserver) bartered for some storage space and installed phpbb 3.  It didn't work out.  I found a free web host with PHP and MySQL and set up phpbb2, because phpbb3 wouldn't install on the server.  That took off.  Then we figured that having a real domain name would be better than something like "" or whatever it was (doesn't exist any more, I let my account expire).  L eventually bought us, where the forums are now housed.

L and I, both being into programming, immediately started hacking apart phpbb2 and making it fit our needs more.  I focused on mainly stupid shit, like coloring usernames according to access level (i.e. administrators, moderators, and regular users all had different colors) and dicking around with the theme until it looked like 4chan.  I was a lot more of a /b/tard back then than I am now.

One of the most useful hacks was image posting.  Forum activity really took off when we could upload a picture alongside a post.  We're currently on the third iteration of the RANDOM PICTURE THREAD, which gets closed when it reaches 100 pages.

L, fed up with how much shit phpbb2 is (I'll back him up, it really is a pile of shit unlike most software he calls shit), wrote a drop-in replacement called lulzbb that we've been using to this day.  Then, kind of like 4scrape, he abandoned it.  I've been the only person working on it for quite some time now.  I wrote the private messaging feature.  I improved L's in-place editing code to have a cancel button and be protected from clicking edit more than once.  Eventually I found that L had written mod controls but hadn't integrated them into the site, so I did that.

The boards still to this day lack many features, such as an admin panel, bug-free in-place post editing (certain characters will prevent a post from being edited, I haven't figured it out), bbcode buttons (the posting area is just a large text box, I get the feeling that the newer users don't really know that bbcode even exists.  The wordfilters we have, while funny, fuck with posts in weird ways on occasion.  We also need a post preview feature and other essential forum features.

So, it came up.  I had wanted to do this immediately when we got the domain, but I don't know why I didn't do it then, it would have been much easier.  We want to migrate the forums from the piece of shit we're running to something polished with features we've been lacking and the ability to expand as the userbase needs.  There's a lot of forum software out there, frankly most of it is shit.  I was a fan of Invision Power Boards until they went to a pay model.  Since then, I've taken a liking to Simple Machines.  A couple other members also liked it, so I decided we'd migrate to that.

I had preservation on my mind, so I made bold promises left and right about posts, forum structure, PMs, user accounts, and so forth being carried over.  I'd known that existing conversion scripts probably wouldn't work due to the sheer modifications we'd made to the database, and the total frontend replacement going from phpbb to lulzbb, so I said I'd write one for the purpose.

That was before the end of the spring semester.  It's July 12th.  I've done quite a lot of delving through SMF's database, comparing it to lulzbb's, and correlating fields.  SMF's database is understandably a lot larger and more involved.  It stores a lot of information that lulzbb's doesn't.  Conversion is no easy task.  I thought I was up to the challenge.  It's not looking that way.  Things I have to resolve pop up left and right.  I momentarily thought we were in the clear when while leafing through SMF's source I discovered that it allows you to log in with a password hash from a lot of other competing forum software.  It even converts the stored hash to its own format once that's successful.  It looked awesome.  It really did.

But going through, everything else just kept getting more and more complex with every step I took.  I no longer feel like I can write a migration script to convert lulzbb to SMF.  So, in vain, I tried SMF's existing phpbb2 converter, knowing full well it probably wouldn't work.  Indeed, it didn't.  It couldn't even start.

So now, I'm thinking the best option is to set the existing lulzbb forums to read-only, then wipe the main domain ( and install SMF there and just start the fuck over.  I'm tired of editing code and looking through database tables.  Under this plan, the old forums would still be accessible in read-only format on

Only problem: I don't own the domain.  I don't have access to the account that the domain is hosted on.  I have write access to the development side via group permissions.  That's it.  I'll need access to the account to set up SMF.  I don't have the money to take over ownership from L.  SMF also FTPs into itself to change file permissions when you install a mod, something I view as kind of strange but don't really know the alternative to, save for setting every single source file and directory to be world-writable.

I've been doing migration testing on my server that's sitting nearby my desktop.  Due to various issues mostly related to Arch Linux, any time I try to install something, things break.  This means I can't fully test SMF.  It's kind of a moot point, but it aggravates me that I can't seem to get all the components of a fucking web server installed and configured properly.  Also, recently I tried to update PHP, everything broke, and I had to downgrade it to get it working again.

tl;dr I'm very sorry, CAINE, but I can't do this.  I feel kind of like a dead man walking on the forums right now.  I talk big but can't back up my words with actions.  I hate making promises I can't keep, but it seems like I've done that this time.  The forum migration everyone has been waiting for isn't possible with me at the helm.  lulzbb is too different from phpbb and SMF.

Friday, July 9, 2010

Custom AdBlock Plus filters

EasyList generally gets the job done, but there are some sites where it's either overzealous or just plain doesn't do anything.  Fortunately, you can add your own custom filters.  These can be exceptions to allow overzealously blocked content, element hiding rules to get rid of more complex things you'd rather not see, and of course regular URL filters.

On ScrewAttack, EasyList basically prevents their video player from working properly.  I went in and figured out what to add exception filters for in AdBlock Plus so the videos would work, but the ads wouldn't.  Simply add the following exception rules, then refresh the page and enjoy.
@@|*$,third-party @@|*$,third-party @@|*$,third-party @@|*$,third-party
Others, like Sankaku Complex, have recently merged their ad scripts in with scripts that provide core functionality for the page, resulting in all the core functionality breaking in addition to the ads being gone.  They even have the nerve to put a red bar at the bottom of the window bitching at you for blocking ads.  The best solution for this would be a NoScript script surrogate, but it's remediable within AdBlock Plus as well.  Basically, you need four exception rules to let their scripts run:
@@|* @@|http://** @@|* @@|*
And then you need the following shitton of element hiding rules: iframe iframe iframe[align="center"] script+a[align="center"] a+div
Also, if you run NoScript (and you should be), you'll need to allow to run scripts.

Want to clean up Twitter a bit? These element hiding rules will hide promoted trends and that stupid promotion thing towards the top of the right column.
Hate those hover cards?  All the information they show is redundant and they get in the way when all you want to do is click someone's name and go to their profile.  Add this ad blocking rule to get rid of them.
That's pretty much all I've done with custom filters right there.

Edit: Sankaku just made yet another change to the site, moving their merged ad/site functionality script to a different subdomain.  The relevant exception filter above has been changed to reflect this.  This really makes a script surrogate more desirable, since Artefact knows that moving that script around messes with everyone who blocks ads.  Unfortunately, there's no way for a user to add their own script surrogates to NoScript, so I'll have to play around with removing my exception filters and using GreaseMonkey to add the missing features back in.

Edit 2 (August 1): Yet another change.  Javascript relevant to the popular articles box and the recent images browser was moved to an IP address.  The relevant filter and instructions have been added above.

Edit 3 (Also August 1): For Sankaku Complex, I have a much better solution in place now.

Edit 4 (August 4): Twitter moved p.promotion.round and added a "recommended users to follow" "feature" so your home page can be cluttered with shit you don't care about.  Twitter rules updated.  Also fixed an omission in the Sankaku exception filters.

Edit 5 (August 5): I can't believe I neglected to include the filter to block Twitter's hover cards.

Edit 6 (August 19, 2011): Updated Twitter filters for the shitty-ass new layout they're so proud of.  Just go use TweetDeck already.  Spoiler: Since I use TweetDeck, this will be the last update to the Twitter rules in this post.

Edit 7 (Also August 19, 2011): Blogger ate all the <br /> tags and carriage returns in the post.

Wednesday, July 7, 2010

I've Lost Interest In The War In Kryta

At first, it was great.  The final bit of Guild Wars' story, where the Shining Blade goes up against the White Mantle to attempt to free Kryta from the Mantle's oppressive rule.  But right from the beginning, something was missing.  Sure, there were NPCs, if you ran to a specific spot in Talmark Wilderness you could witness various scenes taking place, eventually there was the most stupidly laid out scavenger hunt ever, requiring an event item that won't come up until November and thus anyone who hoarded them from last year can get top dollar in trades.  The story was there, but one thing was missing.  One small, yet important thing.


I know that coming up with a proper quest line takes a while, but it took them forever to add this event to the game, so they could have been coming up with quests in the meantime.  They did eventually add quests, but it took a while longer than anyone really expected, and you have to see pretty much all of the mid-zone conversations before you can take them.  In addition, having to run out into a zone to see conversations happen isn't my idea of fun.  I enjoy running in Guild Wars, which both isn't the point, and at the same time brings me to my next point.

The enemies they added for the event are simply frustrating.  I know that most people have completed pretty much everything and they needed to have some challenge in there, but when you give EVERY SINGLE ENEMY a resurrection skill, you've gone beyond challenge.  It's just unreasonably difficult.  Basically, to do anything, you need a ranger with Frozen Soil and a ritualist skill that can kill an allied spirit.  It's a requirement.  This makes it not even fun for me when the enemies basically dictate what build I have to run.  There isn't really enough variance in what normal enemies bring to require build specialization per zone, so why change that now?

Also, it's impossible to run past these things.  I've tried, I got lucky once and made a test Lion's Arch to Temple of the Ages run with one death just due to not knowing what was going to be thrown at me, but I've never made it since.  In terms of actual combat, I've actually found some parts of it to be easier in Hard Mode.  This is because, like most guilds, and even though I changed to a more active one, it's still mostly inactive.  Every time I try to go back to random PUGs I remember why I stopped joining random PUGs.  The lack of coordination.  Nobody listens to you when you try to organize the group and formulate a tactic.  Everyone just runs into battle, nobody bothers with proper pulling and aggro management.  If you have any sort of imagination about your build at all, you get yelled at or booted from the group and called a n00b.  So therefore, I either go with guild/alliance groups that are coordinated with voice chat, or I take heroes and henchmen.

The areas where they put the new enemies (because it's taking place in Kryta) are balanced for parties of six people that aren't max level.  The new enemies are balanced for parties of eight max level characters.  The only reason that I find parts of War In Kryta easier in Hard Mode is because even though Hard Mode raises the levels of enemies, adjusts their skill bars and gives them unfair speed advantages in movement, attack, and skill activation (srsly raising the levels and adjusting skill bars would have been enough), it also forces henchmen to be max level, granting them more health and better armor.

Also, the new enemies are irreversibly there.  There's no way to go back to the original version of a zone.  So if you want to vanquish the zone, you have to deal with them.  If you simply want to run through the zone, you have to have either extreme luck or a vastly different build.  I basically can't run people from Lion's Arch to Temple of the Ages anymore because War In Kryta is irreversibly activated on my ranger.  Because I had the nerve to have beaten Prophecies years ago, before Factions even came out.  The other trigger for it is beating Eye of the North, which I've also done.  If I'd known that beating either of those storylines would have forced this bullshit on me, I would have refrained from doing so.  I've purposefully avoided activating it on any of my other nine characters, just so they don't have to put up with this bullshit.  I'm thinking of starting another ranger just to be a runner, even though I'll have to get skills and levels and equipment and game progress all over again.

Give us an option to disable War In Kryta, and we're good.  I really want to take part in this event because I want to see the White Mantle fall (that's the sad part, we already know the outcome of this event.  Storytelling fail), but with the enemies being too frustrating and balanced for teams that are larger and higher level than you can find in the nearby towns, it completely kills it for me.  These things are basically impossible with henchmen.  Plus, with the sheer amount of resurrection these things have, it takes forever to take a group down if you can't disable resurrection with Frozen Soil, because your group has to be attentive enough to switch targets and interrupt the resurrection.

Every time I go out into a zone, I hope in vain that GMs randomly watch people, so they can hear the complaints I type into All chat.

Tuesday, July 6, 2010

Done playing Chrono Trigger

I got the one remaining ending, Reunion, and then progressed on just so I could advance my save back to saying "The Final Battle".  In the process I got the last Moon Armor I needed and three more Prism Helms, so now everyone can have their absolute maximum level of defense.  It's a shame there isn't a charm for PrismSpecs anywhere, so I can get the two more I need for Marle and Lucca, but whatever.

Now I'll talk a bit about Extras mode since it's fully unlocked.

Without putting any effort into unlocking it, you can view the intro movie and listen to the first ten music tracks.  If you want any more than that, you'll have to work for it.

Theater lets you view the extra anime sequences they added for the PSX version.  In addition, it has no-text versions of the two videos that have text over them.

Music Box lets you listen to the game's audio.  There are 69 total tracks, which is five more than are on the Chrono Trigger Original Sound Version album (which I own).  The only letdown about this is that you can't start a song playing and then have it keep playing while you browse around the rest of the extras.  You have to stop playback to leave the Music Box.

Monster Data lets you browse around all the time periods and locations and see various useful data about each monster, such as weaknesses and what you can get by charming it.  This section is very useful if you're trying to figure out how to get through an area in the most efficient manner possible.

Endings lists all the endings, shows a screenshot from each one, and gives you extremely vague hints about achieving them.  So vague that they're not useful.  Also to make it even more useless, it only ever tells you about endings you've already achieved.  But, if you need to see which endings you still have left to get, it'll tell you.  I guess that's what this section is for.

Art Gallery is probably the last thing anyone will unlock, since you have to leave Crono dead to unlock it.  In here you can view various pictures of the characters.  Not much else to say about this.

Tech Showcase is pretty neat.  It lists all the Single, Dual, and Triple techs and shows you a picture of what each one looks like while in use.  Unfortunately it doesn't give any better insight into the effect of some techs, so it won't help you figure out what PoyozoDance does.  I still have never used that one.

Boss Data is like Monster Data, but lists all the bosses with all their data, the techs they use, and gives strategies for beating each one.  The strategies are geared much more towards a first playthrough.  It does list the hard version of Lavos that you're supposed to lose against at the end of Ocean Palace, which will help whenever I decide to go back and try to beat it there.  For bosses with separate parts, like the Dragon Tank or Giga Gaia, it shows each part's stats separately.

Treasure Map is possibly the best part of Extras mode.  It allows you to browse around every area of the game and see what's in every chest.  It even shows you where the tabs are, though I know of a magic tab and a power tab that it doesn't show.  It also tells you what you get out of each of the sealed chests, and what you get for defeating each form of Spekkio.  If you're looking for a specific item, this section will definitely help you out.  Also, this section hides something equally as useful within it: the Item List.

The Item List lets you browse around each category of items, see how much they cost, and where you can get them.  So for instance if you want to get a bunch of Barriers and Shields, it'll tell you where you can find them.  It also tells you where (and how) to get all five Triple Tech-invoking rock accessories.

As you have no doubt noticed, Extras mode does contain some very useful features, and for those alone it's worth fully unlocking.  If you think getting all 12 endings will take forever, there's actually something a lot of people overlook that makes it faster.

When you beat Lavos in a New Game +, it's time to start another New Game +, right?  Wrong.  Nothing prevents you from loading your old save normally and continuing to play.  So basically, save just before going up against Lavos, and don't save inside Lavos if it gives you a save point.  Once you beat Lavos, save your system file, then load your save and progress to the point in the story where you can challenge Lavos and get the next ending.  Just remember to save before fighting him.  I recommend using the portal in the right telepod in Leene Square to fight Lavos, as it lets you skip the miniboss mimic.  You can either save in the End of Time, or just run out of Leene Square to the world map and save right there.  If you set equipment for the Lavos fight after saving, you won't need to change it back when you re-load to go get the next ending.

The only ending that may actually take some effort even in New Game + is the developers' ending, since both methods of achieving it are fairly difficult.  Either take Lavos on with only two party members (Crono and Marle), or beat the hard version of Lavos' outer shell at the end of Ocean Palace when you're supposed to lose to it.  It has 3 times the HP there.  I personally believe it's easier to take Lavos on with just Crono and Marle than to do it at the end of Ocean Palace.  You will want to grind out some levels (make use of the conveyor belt fights in Geno Dome), and then double-check that you have a few specific pieces of equipment.  My recommendations are as follows:
  • Level: somewhere above 70, the higher the better
  • Crono: Rainbow/Haste Helm/Nova Armor/PrismSpecs (you can use a Gold Stud instead if your HyperEther supply has run low) (alternatively, use a Prism Helm and Moon Armor)
  • Marle: (weapon doesn't matter)/Prism Helm/PrismDress/Power Seal
The tradeoff between a Gold Stud and PrismSpecs is efficiency vs. power.  You'll deal 50% extra damage with PrismSpecs, but a Gold Stud will make needing to refill MP a thing of the past.  My personal recommendation is the PrismSpecs, since they make taking out the left bit in Lavos' third form easier.  Marle doesn't deal a lot of damage, so she'll spend most of the fight waiting to use items or healing spells as necessary.  Keeping her ready to do when needed so is a far better strategy than spending each of her turns as soon as they come up.  Crono deals the damage, and Marle watches his (and her own) back.

Despite the title of this post, I'm not actually done playing Chrono Trigger.  I still have more Chrono Trigger notes posts left to make...  I was trying to get around an hour of level ** gameplay into each one, but I always forget to check the timer.  Also perhaps I should post about strategies for getting each ending...

Monday, July 5, 2010

Endings GET

Not all of them, but the vast majority.  In fact, all but one.  Getting them all actually goes pretty quickly when you realize that if you save just before using the right telepod in Leene Square you can just load from there after saving your system file and continue on to the next ending.

I corrected a couple of things in the table in my previous Chrono Trigger post, so if following what it said wasn't working for you, read it again.

The only ending I have left is Reunion.  After seeing Schala use her pendant and then GTFOing 12kBC to go pwn Lavos (so I could see Crono talk), I realized I'd have to do the entire Ocean Palace, which isn't hard, just cumbersome.  Also, I was getting tired, which definitely plays a role in deciding to stop playing.

But hey, you know what?  Getting seven of the eight endings I needed to get in less than 24 hours?  I'll take that.

Sunday, July 4, 2010


Thinking back about my life, I realize that I was not really granted a lot of freedom to hang out with friends outside of school.  My parents literally did not let me do anything with any of my friends by ourselves.  Either they had to be there, or someone else's parents had to be there, whatever.  In general I was treated like I really didn't matter too much.  My parents still to this day beat the old rhetoric of "I am your parent, you will respect me", which really never worked.  Think about it, respect has to be mutual or there isn't any respect at all.  I wasn't ever treated like a person, instead I was always treated as "their son" and someone who never knows right from wrong despite being taught that every day.  Having been a logical thinking person all my life, I have seen little value in respecting someone solely because of the position they hold.  If you have no redeeming value as a human being, you don't get my respect.  Plain and simple.

Think about it.  I didn't choose my parents.  They decided they wanted a kid, and nine months later, here I was.  Expecting respect just because they're my parents when I really don't have a lot of emotional attachment to anything is unreasonable.

I mean, I do have emotional attachments.  Most of them are one-way feelings towards females who don't know I exist because I'm too shy to talk to them (the good ones are already taken anyway, or have sudden unexpected drawbacks like being smokers), or material possessions.  I have friends as well.  Friends from my grade school days that still exist and that I have contact with are rare.  Mainly because until high school I didn't really have friends.  I was that one everyone picked on.  In high school I hung out with other people that nobody would hang out with.  We all had our differences, and in the end we became hypocritical by kicking someone out, but she was really annoying.  Really, really annoying.

All of this has led to this development of an intense hatred inside me for abuse of power and technicalities.  Every time I hear about someone being falsely accused of something, I get enraged.  Especially in this day and age where all a female has to do is mention any kind of unwanted sexual tension between her and a guy, whether it exists or not, and the guy's life is immediately permanently fucked.  Even if he's proven innocent.  Think about that stripper who cried rape at the hands of the Duke lacrosse team, only to later admit that the charge was false.  Did anyone ever forgive any member of the Duke lacrosse team?  No.

So basically whenever anyone is accused of anything I try to read into it from the accused's point of view.  Most of the time news coverage is incredibly biased and will provide all sorts of information from the accuser, but very little about the accused or anything actually useful that the public could look at and form their own opinion.  As previously mentioned, any guy accused of anything sexually unwanted in nature is fucked over for life, even if the charges are false.  This is the future that feminists look forward to.  They don't want equality, they want feminine superiority.  News flash: equality among people means disregarding all differences between people.  Nobody should receive preferential treatment, no matter how discriminated against they were in the past.

I could rant endlessly about that alone, but I won't.  Instead, I want to bring to light how my mind works as I picture situations that may or may not involve me and can be entirely fictional.

Every single story I have ever written:
  • has involved a corrupt person in power being forcibly removed from power and facing justice,
  • has had a character intended to be myself as the main character,
  • has involved some level of science fiction or fantasy elements,
  • would make fairly typical endless shounen series if televised.
The very first one, which was intended to be the canon story of my character XT-8147, which was really just a Dragonball Z spinoff, involved the main character defeating a corrupt leader and taking control of a planet.  Years down the road the futility of trying to have a single governing system for an entire planet took hold and sections of the planet split apart into their own sovereign nations.  Our hero then plays an important role in organizing these separate sovereign nations' forces to defend against attacking Earthling xenophobes.

There have been some which haven't made it much past the concept stage.  Basically I had the idea for the story but never expanded upon it.  I deem it too late to go back to them now.

The most recent and thus most important one involves a group of friends who discover magic.  Being in a nation weary of outsiders after an attack on a large city, it's not long before they get called in as suspicious people and detained by the country's investigation bureau.  The detainment is basically like when you go to a rebel base within a third world country, you get blindfolded for the journey so you don't know where you are when you get there.  They basically find out that the government, fearful of their powers, plans to execute them without trial or any effort to learn about said powers.  It takes off from there.

I'm no longer actively working on it, but the government in this story is basically the bad guy.  Any other villains that come up are inconsequential, even when the fight is epic, with twist after twist.  The group sticks it to the government in the beginning after getting themselves hired as an elite secret agent task force, their employment contracts basically screw the government over at every opportunity.  The government turns on them and starts hunting them down, forcing them into hiding.  One by one they get caught and killed.  Later on, in a part of the story I planned but never wrote, the main character (once again me) finally takes the government down (from outer space) and becomes the country's new leader as the governing system is redesigned from the ground up.

There were plenty of elements the story had at one point that got revised out of it, including the element that gave it its title: "The Legend of the Fated Couple".  So in other words it's a semi-interesting story about toppling a corrupt government with no actual legend of any fated couple.

So basically, I don't like when people who have power misuse that power for personal gain or to screw someone over.  I especially don't like when a governmental situation becomes large groups with lots of money vs. the little guys, where the little guys are stepped on in every way imaginable and can't catch a break.  Kind of like America's current government, which has been fucked up for decades, especially in the area of copyright.

Seriously, think about that.  If politicians are supposed to represent their constituency and argue for or against issues that affect their constituency, wouldn't that politician's views on those issues not matter because they serve their constituency?  Instead of pushing their own political agenda, they're supposed to be the voice of their constituency, condensed into one person.  They should of course receive help in organizing important issues from local governments who should be in regular contact with their constituencies.  Basically it should fan out from the President like a tree.  The heads of the house and other governmental departments report to the President.  Representatives of each state report to a head of the house.  Local governments report to state governments, who report to the representatives.

This is exactly how America's government is laid out, yet the focus seems to be on each individual politician's agenda and views when that shouldn't matter if they're a good politician who listens to their constituents.  Political parties are counterintuitive to how an actual democratic government should be run.  It seems like America's fallen into a rut of "one party runs the country and pushes its own agenda, then the other party takes over, reverses what the previous party did, then pushes its own agenda, repeat".  The citizens, the very people our government is supposed to be "by and for" are nonexistent in this equation.  We get forgotten about because the only people who can really affect anything in our government are those with money, and the average citizens are kept just poor enough that we can't influence anything.

Saturday, July 3, 2010

Done farming tabs

In an unintentional personal record-setting 51 minute run, I got the last 10 remaining magic tabs, then progressed on to repairing the Masamune where you get Ayla for the duration of the Reptite Lair.  Maxed out her magic, pwned Nizbel, then went to the end of time, saved, and used the bucket to go fight Lavos.

Crono/Lucca/Robo is a pretty good team for every part except when Lavos mimics Azala and BlackTyrano.  I dunno, maybe I didn't use the right techs, but it took forever to kill Azala, whereas I'm used to killing him in two hits of Triple Raid or 3D Attack.  Once Azala was down, BlackTyrano was easy.  Wait for it to shut off its defense, then pummel.

The Lavos Core battle is truly amazing with this team though.  In addition to Crono spamming Luminaire, I had Lucca spamming Flare and Robo spamming Shock.  I took it down before the bits got revived.

Anyway, I'm now in the final phase of my project: fully unlocking Extras Mode.  This was really my goal all along, maxing everyone out was just to make that easier.  In the process of maxing everyone out, I got four of the endings, so now I need to go back and get the other eight.

Here's a table with all the endings, how to get each one, and which ones I've gotten.

#Ending nameHow to getGotten?
1Beyond TimeDefeat Lavos after reviving CronoYes
2ReunionDefeat Lavos before reviving CronoNo
3The Dream ProjectDefeat Lavos at the very beginning of the gameYes
4The Successor of GuardiaDefeat Lavos immediately upon getting back from 600 ADNo
5Good NightDefeat Lavos after learning magic from SpekkioYes
6Legendary HeroDefeat Lavos after beating Masa and MuneNo
7The Unknown PastDefeat Lavos after getting the Hero MedalNo
8People of the TimesDefeat Lavos after defeating NizbelYes
9The OathDefeat Lavos after Frog equips the Masamune and opens the Magic CaveNo
10Dino AgeDefeat Lavos after defeating MagusNo
11What the Prophet Seeks...Defeat Lavos after beating the Tyrano LairNo
12A Slide Show?Defeat Lavos after you see Schala use her pendant, but before you power up yoursNo

Getting to endgame (when the save says "The Fated Hour") takes about 4 hours with fully max characters, avoiding avoidable battles and running from escapable battles.  I really only need to get to that point once, for ending 2.

Thursday, July 1, 2010

Computing aspect ratio

Well, duh, it's easy, right?  Yeah, just divide the width by the height and there you go.  But what if you want to compute, say, a "pretty" (i.e. human-readable) representation of it instead of just the floating point representation?  You'll need a bit more math for that.

I wrote a command line PHP script to do exactly this because I wanted a utility that I could feed the filename of an image and have it spit out the dimensions, aspect ratio, and type, completely on my server without having to open up the samba share on my desktop and do anything graphically.

Computing it in a more human-readable representation is pretty simple.  The required mathematical operation is the greatest common denominator.  Computing that isn't obvious at first, but it's pretty simple.  There's a recursive method that's short and sweet.  I actually got it off of a comment on the reference article for mathematical functions on

Here it is, spaced out for readability:
function gcd( $n, $m )
{if ( !$m )
  return $n;
 return gcd( $m, $n % $m );
Basically, what's happening is you're computing the GCD of the second number and their modulus (remainder after division) until the second number is zero, and once it is zero, you're returning that second number (which gets continually shifted into the first argument).

So, for instance, let's say we have a 1920x1200 image.  I won't step through the recursion, but the GCD of those two numbers is 240.  So then, we divide the length of each dimension by the GCD to get a human-readable aspect ratio.  It's that simple.

1920/240 = 8
1200/240 = 5

And there you go, it's 8:5.  If you're anal about checking the answer, divide 1920 by 1200, then divide 8 by 5.  You'll get 1.6 in both cases.

This is essentially just reducing a fraction programmatically, but applied to the dimensions of an image file.

I used PHP basically so I could cheat and have it do the dirty work of figuring out the image type and parsing it to get the dimensions for me.  getimagesize() is your friend.

Note that there is a library for PHP that does provide a GCD function, but it's horrible.  You have to convert your numbers to a different type first and then cope with how they're not actually numbers after that.  I just wanted a function that operated on integers and returned an integer, so I could shove all the numbers and strings into printf() to make it look nice.

Oh hey, wallpapers...

I was just looking at my unsorted directory and noticing I've accumulated a bunch.  Since I'm not actively browsing /w/ anymore, the influx of wallpapers has gone down.  In fact, most of the recent ones were actually from Sankaku Channel, especially the large scans that I just downscaled to 2000 pixels wide so they'd be reasonable internet uploads.  This update is entirely Railgun and K-ON!!, so...  yeah.

Anyway, to business.  "TO BUSINESS!"

I used the Blogger In Draft image thing for this, that's why it looks a bit different from my previous wallpaper updates.  Predictably, I had to edit all of the markup it inserted to allow more than one image on a line (WHAT A CONCEPT) and to add target="_blank".  Also, in true Blogger style, it doesn't have an option for the thumbnail size that using the "Link to this image" feature on Picasaweb gives you, so instead of having four images per line it's three.  Inserting the images was easier, but since there's still editing to be done, I think I'll go back to just copy/pasting the linking markup out of Picasaweb.  This new image thing is yet another typical "one step forward, two steps backwards" "solution".