« May 2005 | Main | July 2005 »

Tuesday, June 28, 2005

Alpha, Beta, Gamma

I get some some perverse enjoyment from bug fixing. I think it's because I'm able to be very productive in a very short space of time. There's few things as rewarding as knocking off a few dozen bug reports before lunch. For the most part the bugs we get reported are relatively minor and trivial which allows me to whip through them.

So far, the IPB 2.1 alpha release has gone very well. I'm surprised by the low number of reported bugs but this is tempered with the fact that it was only released to our customers, and only installable by those customers who had the free time, will and zend optimizer installed. Even still, I'm pleased with how well its gone.

It's unusual for us to release an alpha. I wanted to make this release because of all the new toys IPB 2.1 brings and early testing of the client side scripting will save us a major headache later on. I could have labelled it a "beta" but, unlike some project managers, I prefer to wait until the feature set is all but complete.

I really don't think it'll be long before we hit the first "proper" beta release. The few bugs reported so far combined with the few sections left to complete should see a release within the next few weeks and I don't anticipate a very long beta testing phase.

All in all, IPB 2.1 is shaping up to be a great release and I'm interested to see what the modification community make of the new back-end code and components system.

June 28, 2005 | Permalink | Comments (37) | TrackBack

Thursday, June 16, 2005

[IPB 2.1] Log In Authentication

I've almost finished this section of IPB off (the last major feature before the first alpha "technology preview" release) and I'm fairly pleased with its implementation.

In a nutshell, it allows one to add different methods of authenticating the username / password combo when a member logs in. There are two options available. Pass-Through and On-Fail.

Pass-Through simply queries the non-IPB authentication modules for each log in attempt. If the username and password doesn't authorise, we return a fail and the member is told their log in attempt failed. If the authentication was approved and a member (linked via username) is found in the IPB database, the member is loaded and returned. If a member is not found in the IPB database, then (assuming this log in auth module allows member creation) IPB starts the process of creating the member in the IPB DB which is finished when the member completes their (First log in) form.

On-Fail will attempt to authorise via IPBs database first. If a member is found and the authorisation is processed, then the member is returned. If there is no member found, then the non-IPB module is queried as per pass-through.

In addition, one can replace the log in form with their own HTML or add HTML to the log in form (for alternative log in methods, such as PassPort). One can also enter a URL for the member to manage their account (changing password, etc) and a URL to register. This is ideal if you want to keep all your registrations in an existing site / CMS.

Each log in module comes with three files: "auth.php" which is the module which performs the authentication. "conf.php" a configuration file to accept SQL details and such (didn't think that it was wise to use the settings database to store sensitive info ) and "acp.php" a file which manages the installation and other ACP tasks relating to that log in module suite.

All in all, I think this is a very flexible system and will open IPB right up for use on large corporate sites with an existing membership database and small sites where an existing product is already being used.

Of course, it also allows us to complete our "Converge" project - although this has gone through several key changes over the past six months or so. Expect more Converge news soon.

First movie: This shows a phpBB user (from a test DB I had installed) logging into IPB for the first time. Note how they are asked to complete a "Your first log in" form.
abs-login.mov (Quicktime .mov 1.1mb)

Second movie: Not terribly exciting, but shows the ACP controls for the different pre-installed log in types. Note several are flagged as "not installed" this is because the install script hasn't been run which asks for LDAP and SQL details and thus are not able to be selected until the install program has been run.
acp-loginauth.mov (Quicktime .mov 4.8mb)

June 16, 2005 | Permalink | Comments (376) | TrackBack

Monday, June 13, 2005

Creep: The most stupid film of the year

I watch a fair amount of films. Some are bad, some are good, some are stupid and some are sad. Rarely do I feel like telling the world about how bad a film is, this is one of those rare occasions. Rather than blather on about how stupid the film is on individual points, I'll give you a brief run through of the movie's highlights.

Creep: This contains what we traditionally call "spoilers". However, nothing can spoil this film, so feel free to read on even if you haven't yet watched the movie. It'll save you 83 minutes of your life that you won't get back at the end.

Prologue sequence. Some sewer engineers are happily meandering along some underground tunnels. They're indulging in some toilet humour. They come across a blocked pipe and clear it. They find a hole in a wall that leads to more tunnels. Despite hearing strange knocking noises and inane screeching, they do what every blond girl has done in every slasher movie; they go to investigate. Now, personally, I would have run in the opposite direction but that's just me. Cue scary music and eerie visuals. Cut to one engineer laying on the floor while his friend walks over to him. We follow his gaze past his friends shoulder to see a partially disfigured woman being dragged off. Being in a sewer is almost certainly the correct place to soil ones underpants and I assume he does so.

The film starts with our heroine at a party. I think her name is Kate. It's largely unimportant because no one ever calls her by her name, but we'll refer to her as Kate for brevity. We don't know who she is, what she does or why she's at a party although we accept that, as there is music, alcohol and people it must be a party. Kate tells her friends (again, a leap of logic because they are not introduced as her friends, but they communicate in a friendly way) that she knows where George Clooney is (another party), and as George Clooney is famous she wants to meet him. This is the only sensible part of the entire plot and to be honest we're already on shaky ground.

As her friend left the party early she has to make her own way there. Cue outside shot of a random London street with her waving her hand trying to attract a taxi. She does this for approximately 8 seconds before giving up (anyone who has tried to flag a taxi late at night in London knows that you're required to wave your hand around frenetically for at least 40 minutes before successfully commandeering a cab).

Frustrated at not immediately being able to hail a taxi, she takes a nice walk down into London's underground system (Charring Cross, fact finders). She has a small altercation with the ticket vending machine, purchases a ticket from a tramp (sorry, home-challenged person) and strides purposely down the escalator (descalator as it's going down?).

She takes a seat next to the platform's curved wall and glances at the electronic information board which tells her, rather helpfully that there is "8 minutes for the 'last train'". There are a few people waiting around for the "last train". She takes a pull on her mini-bar sized bottle of vodka for no apparent reason and falls into a deep sleep.
It's such a deep sleep that she fails to wake up to the noise of fifty ton of underground train hurtling towards her. She also fails to wake up at the noise of the doors opening and the recorded announcements telling you to "mind the gap". She also fails to wake up for the recorded announcement telling you to "mind the closing doors". She also fails to wake up as the train speeds off into the distance. Why doesn't she wake up? How can anyone fall into such a deep sleep in a matter of minutes? Oh - yes, she had a mouthful of vodka which sent her into a coma.

She eventually awakens at an unspecified time. The platform is deserted. She looks bemused. Or frightened. It's very hard to tell as her entire facial expression repertoire is limited to scowling and frowning. She goes for a jolly jaunt around the station finding locked doors to each exit. Obviously the night guard, on his nightly "pre-locking-of-doors" sweep saw her sleeping and figured she was a tramp as she had on a brand new yellow party frock, expensive shoes and handbag and left her to it. Helpful chap.

Mysteriously a train arrives for no apparent reason. Even though the entire plot is based around her missing the last train, fortunately for her, there's another train after the last one. She boards it. It is empty. It speeds off into the distance. (Now, there's a whole sub-plot here involving a bloke she met at the party trying to rape her but it's so inane and pointless I can't be bothered to mention it). The train stops mid-tunnel. The lights go off. Now, up until this point Kate had been speaking in a rather convincing American accent but as she stumbles around in the dark proffering assorted salutations, she seems to be slipping into an interesting Norwegian accept. We eventually find out she's supposed to be German.

Someone or something is following her. She runs through the train to the empty driver's compartment and escapes through the door. She takes a quick jog down the tunnel (managing to avoid the live rail by chance) and makes it back to the platform. She does some more station searching and finds an open vent hatch or something like it. Bravely she climbs into it and finds two homeless people. She has a nice comfy chat with them (it transpires the homeless girl is the one she bought the ticket from and wisely invested the profit in mind altering substances and is now orbiting the planet Zob with a variety of her multi-coloured imaginary friends). Jimmy says some stuff in a broad Scottish brogue and agrees, upon payment of £50 to take her to the stations control room (apparently, jumping up and down in front of a security camera mouthing "help" hasn't occurred to her yet). Jimmy bravely leaves his drugged out better half safe with the knowledge that at best there's a rapist out and about and at worst there's a maniacal killer with a predilection for rodents on the loose.

They run around for a bit and Jimmy explains to her about the live rail concept whereupon touching it would almost certainly involve some death and a lot of burning flesh. Jimmy spots their dog covered in blood (or pooh, it's hard to tell) trotting towards them. He takes that as a bad sign, and runs off to check on his girlfriend. Kate meanwhile has a boring conversation with the security officer via an "EMERGENCY" intercom she missed at least three times on her previous expeditions. He is of the obstreperous kind and isn't convinced that she's in real peril and they blather on for a bit. The security guard gets killed by the screeching loony who has a small rat obsession for no real reason.

Kate runs through some more botox challenged facial expressions supposedly expressing despair / annoyance / etc.

She runs around some more and finds Jimmy at home. Jimmy's girlfriend is missing (and there's blood everywhere outside the vent smeared up and down the corridor). Instead of looking for her, he decides to get high. Kate finds him, slaps him a bit and they wonder off to do something I can't remember. But it involves running around the station and swearing profusely.

Another last train turns up and Jimmy, in a Scottish rage of guilt and loss, jumps aboard carrying a crowbar. He builds up a manly sweat beating up chairs and such with the crowbar and inviting the screeching evil loony for a quick round of "kill each other". He eventually decides to stand with his back to a door and throws the crowbar away. Ironically, now he's not equipped to deal with an attack he gets killed in an amusing scene involving a twitching foot.

Kate does some more running around and eventually passes a few strung up bodies on her way to what looks like some kind of storage facility. Obviously the underground staff are used to seeing bodies everywhere and blood smeared around the place and don't question it. Or call the police. She turns out her torch in a Blair Witch moment.

Next thing we know, she wakes up floating in a cage, neck high in sewage. We had no idea how she got there, but by this point looking for continuity or a realistic story line is a distant dream. Screeching loony (we'll call him Creep) is prodding another caged captive (one of the sewer engineers) with what looks like a harpoon spear. Presumably, screeching-loony randomly kills some, mutilates others and simply keeps a few in cages for reasons best known to himself. Fortunately for Kate, she's been chosen to float in sewage. Quite why Creep wants to keep them in a cage until they're dead is beyond me. But hurrah for Kate.

They quickly discover that the cages DON'T go down all the way down the the floor. How lucky for them. Sewer Engineer (his name is George, I think) tells Kate he can't swim. But wait, one of the cages at the end of her block is open! All she has to do is swim through fecal matter and used condoms to reach the open cage. She does so. Screeching-loony (Creep) decides to wander up and down the walkway between the cages for no real reason. George pretends to be dead so Creep will prop him with the harpoon to see if he's really dead. Again, reason and the audience are discordant. Whilst Creep is busy giving George a darn good prodding, Kate sneaks out of the cage, slips off one of her expensive stilettos and whacks Creep in the eye with it. Creep drops to the floor in pain dropping the harpoon. She helps George out of his cage. Do they pick up the harpoon and spear the freaky sonofabitch through the head and keep doing so until soft mushy stuff leaks out? No. They run away.

The successfully run away actually and discover various rooms which look like some 1950s experimental laboratory. We discover through deduction and the blindingly obvious that Creep's real name is "Craig" and he's a genetically mutated child who's grown up on his own in the labyrinthine tunnels of the underground. Aww bless, that explains his maniacal fascination with murdering people and his consternation with all living things. Apart from rats. Makes sense.

Anyhoo, a bit more running around ensues. They discover Jimmy's girlfriend covered in blood with a medical gown draped over her. They touch her foot and presume she's dead and continue running.

Apparently she's not dead as she opens her eyes. Creep comes in, pretends to wash his hands and dons a surgical gown. In, what I suppose is meant to be a chilling scene is actually so thigh slappingly funny that I almost vomited a lung. Creep puts on a pair of rubber gloves. They are obviously old and caked in blood. He puts them on in such a stupid manner that he manages to get two fingers in one finger hole and only manages them to pull them to his palm and the rest of the glove fingers are uselessly flopping around like flaccid phallics at an erectile dysfunction demonstration. This is supposed to be menacing but it's hysterical. You expect him to blow the next one up, hang it fingers down under his chin and pretend to be a turkey. Unfortunately he decides against that and slices up Jimmy's girlfriend instead. For no real reason.

Meanwhile, Kate and George find Creep's lair. George, who so far has shown about as much ambition to survive as I have to win the 1500meters at the olympics suddenly remembers he's got a daughter and decides he'd like to see her again. He too builds up a manly sweat smashing windows and inanimate objects cursing to himself. Anger spent, he throws aside his weapon and stands with his back to an open door. He bends down and we see Creep behind him.

But wait! George must have SENSED him because he turns around, picks up Creep and throws him to the ground! George sits on his chest and gives him a few casual punches to the head. Creep is laying there covered in blood looking defeated! George decides to start taunting him. Creep giggles maniacally. Kate picks up George's discarded weapon, she takes aim and brings it down with all her might! She misses fantastically. Creep now pushes George's head up towards a very large and very rusty spike! Kate, who previously swam through sewage majestically and beat Creep with her own shoes now bravely decides to throw down her weapon and gibber inanely to herself as she watches George get horribly killed.

She bravely runs away. Creep catches her. She throws a large metal object at his neck which is attached to a chain. With super powers she pulls the chain from the wall and spots a large sign next to the rail track which says "DANGER OF ELECTROCUTION!" The chain is made of metal! One end is in his neck! She's going to electrocute him!

No. She throws it like a girl and it gets stuck the other side of the tunnel. Oh no!

Wait, the third train after the last one comes speeding down the track! Whoooooooooop there goes Creeps neck!

But wait! Creep looks a bit sorry for himself. Dramatic music swells. Oh, poor Craig. Left on his own with no one apart from rats and dead bodies for company. He's not a bad person after all. We have to pity him and grieve his death. He's just misunderstood!

Cue gurgling. He collapses. Kate stumbles out onto the platform just as the morning commuters arrive for the first train of the morning (or the forth last train of the night). One be-suited business man mistakes her for a tramp and throws 50p at her. She starts crying. I presume that it's not because she's seen people horribly murdered and spend the best part of the night running trough dark neon lit corridors, it's because someone thought she was a tramp.

Oh, the dog survives if you were worried.

The End. Thank God.

June 13, 2005 | Permalink | Comments (27) | TrackBack

Thursday, June 09, 2005

[IPB 2.1] Friendly Forms, Again

I figured I'd take a quick movie of the "new" registration form which takes advantage of Ajax to check the usernames and email address haven't already been used in a registration (and are not banned by the admin).

I think it's a nice way of letting the user know about any errors and should save them a whole bunch of submit.. edit...submit...edit...submit cycles which quickly get frustrating.

One day, all web forms will be like this.

Reg-Form.mov (Quicktime .mov 1.1mb)

June 9, 2005 | Permalink | Comments (168) | TrackBack

Monday, June 06, 2005

[IPB 2.1] Friendly Forms

This is a pretty legitimate use of javascript and ajax that doesn't take too long to implement but makes completing forms a lot easier.

Basically, javascript checks to make sure that the field is not empty and doesn't contain illegal characters. Ajax enabled browsers also fire a check to the DB to see if the input already exists in the database.

The output needs a litle cleaning up but it's a pretty nice time-saving feature that also appears on the IPB 2.1 registration pages.

(The display name feature is there because of the abstracted log in procedures IPB 2.1 allows and is optional and can be turned off by the admin. The admin can also set how many name changes are allowed per 24 hour period. Also, the name changes are tracked and the 'name change' history can be shown to other members on the profile page).

Edit: Now has a "tick" and "cross" images to visually enhance which fields are correct or incorrect.

UCP-NameChange.mov ( Quicktime .mov, 388k )

June 6, 2005 | Permalink | Comments (153) | TrackBack

Wednesday, June 01, 2005

[IPB 2.1] ACP Templates Part III

I've just about finished off the ACP template editing interface.

I've polished some of the code and removed a few frame refreshes in favour of dynamically assigning images to denote whether they've been edited or not. I've also added in an Ajax function (where available) to revert the template bits without the need for a frame refresh.

I've also added in the ability to edit multiple templates at once. Just click the template bit rows of the ones you want to edit and hit the "Edit Selected" button. It all loads in the same page and, unlike IPB 2.0, it'll only save the template bits which have been altered.

Now I'm off to complete what could be the biggest feature in IPB 2.1...

ACP-Templates III (Quicktime .mov, 5.7mb)

June 1, 2005 | Permalink | Comments (175) | TrackBack