October 2005

You are currently browsing the monthly archive for October 2005.

Does anyone remember that Metallica song? It was off their first album. Yeah, that’s way before they went all country and western.

Anyhoo, work continues on IP.Dynamic now that Brandon is settled with Invision Power Board maintenance and Invision Gallery is in the QA phase. The first thing I wanted to nail was the page / template search and replace functions. It’s a function I use a great deal on BBEdit and I wanted to be able to search and replace on several pages / folders at once and use full regex. It can be a real time-saver when making sweeping changes to syntax, etc.

(I also need this feature because I’ve made a few core changes and need to remove a bunch of template tags from the page content)…

Now that we’re being all professional, I wrote up the spec and worked out the logic of the feature and how it’s presented before I wrote a line of code. This enabled me to rough out the UI and save messing around with the HTML. Once the spec was complete, I wrote up a few classes and this is the result:

The UI is scrappy at the moment. That’s to be fleshed out later as well as the ajax “search in progress” screen which has an iFrame back-up for those non-ajax folk. In this example, we do a regex search and replace in test mode which shows a DIFF report of the potential changes; great for making sure you don’t screw up a bunch of files by mistake - even though IPD has a versioning / roll-back system in place.

IP Dynamic Search.mov (1.1mb)

No one codes javascript, they wrestle it into submission.

Yes, I’m fighting with javascript again. Just like Neo had Agent Smith and Mama Cass had her ham sandwich, Javascript is my nemesis.

Neo had it easy. All he had to do was be extracted from a computer generated reality, learn how to bend the rules of the computer’s programming and defeat rogue Agent programs that had super powers of their own.

He never had to make sure his DOM code worked in Safari and IE.

I’m a MacTard.

I’m a MacTard who has spent the past decade wondering why Apple doesn’t make a two button mouse. The first thing I do when I get a new Mac (which doesn’t happen very often) is junk the apple mouse and plug in my Microsoft two button with scroll wheel mouse. Some Mactards can’t bear the thought of having a Microsoft logo on their desks and stick by the single button mouse and claim that ‘hitting “control” before left clicking is just as good”. Rubbish. Modern operating systems require, nay - demand, at least two buttons and a scroll wheel.

Apple obviously refuse to spoil their aerodynamic hardware lines with two ugly buttons and have come up with the Mighty Mouse. I’m a MacTard. I bought one.

First off, it’s a nice solid unit with all the smoothness and glossyness (that’s not a word, I know) that you’d expect of the big Apple (that’s New York, I know). Curiously, it doesn’t have two buttons but rather a touch sensitive shell which still clicks on a hingle / microswitch like the old Apple mouse (does|did) but if you touch the right hand side, it performs a right-click action.

This takes a little getting used to for a few reasons. Number one is that it’s quite disconcerting at first because you’re used to an independent right switch which has a different leverage point. It feels quite hard to right click at first because the whole balance is off. Fortunately, it doesn’t take too long to become comfortable with. It just feels like you’re using different finger muscles to perform a click.
Secondly, you have to lift your left click finger from the mouse before it’ll register a right click. I do this anyway so I didn’t find that odd, but others are used to resting their left click finger on the left mouse button while performing a right click which confuses the mighty mouse.

The mouse also has two side buttons that must be squeezed together to activate the preset (via system preferences) option. It’s not very easy to do and you have to completely remove your hand from the mouse and kind of grab it from both sides. I guess the good thing is that you’re hardly likely to accidently do it.

A very welcome addition is a scroll ball in the middle of the mouse, which also doubles as a third switch. It has a slightly odd rough scrolling texture to it which I think is by design so that the user has some feedback from it. Not only does it let you scroll up and down, it also allows you to scroll left and right - great for large zoomed in documents.

Firefox users beware, the scroll ball is a nightmare. Firefox decides that a left and right scroll should activate your history back and forward actions. On more than one occasion, I was making a post, went to scroll down to hit preview and due to a slight horizontal movement with the ball ended up three pages back - or worse, submitted the post a few times. Fortunately, a search in Google came up with a fix.

I took some tinkering (and I couldn’t find any real solutions online), but this does the trick:

1. In Firefox, type about:config in the URL. This gets you to Firefox’s configuration file where you can do a bunch of things (it’s worth having a look around)
2. Find the line mousewheel.horizscroll.withnokey.action and double click on it. In the box that pops up enter the number 0 (the default is 2), and click Ok.

Done. You don’t even need to restart the browser. That did the trick for me. The horizontal scroll is still intact, but now it scrolls the page side to side

All in all, after some adjustment, it’s a capable mouse. I don’t think it’s worth evangelizing over as some rabid Mac fans have done - but it does the job with some style and the scroll ball is a welcome addition.

Howdy ya’ll. Have you had a nice day?

I recently returned from a whirlwind trip to our corporate headquarters in Virginia and my body is still adjusting to the 10,000 mile -5/+5 time zone change a week on.

We got a lot done in a very productive week and it was great to meet some of the new techs in person. You don’t really appreciate how big IPS is until you visit the headquarters. We’ve got room for around 60 employees and the air-conditioning power to make a polar bear feel cold.

We discussed a lot about development and how to move into a more professional methodology. As you’re probably aware, Brandon Farber relocated (along with his wife and two children) to VA to become part of the IPS team. Brandon has huge experience with IPB and is a very tidy coder who has some great feature ideas and concepts.
Brandon is taking over the day-to-day IPB maintenance and will play a part in large future releases. This frees me up to work on IP.Dynamic and on the more architectural elements of our product line-up.

This change has forced us to rethink how we handle development and future releases. Adam, Rikki and Josh have been using SVN (subversion, a CVS-like system) for a while - and now I’ve joined the party with Brandon. This allows us to check-in our own code changes without killing each other’s code. We’ve also set up a main trunk and point release branches to ‘freeze’ releases and to allow a quick rollback point if things go badly wrong.

We’ve also implemented development changes at a management level. Firstly, and most importantly, we’ve set up a QA (quality assurance) department which will be handed a release before it’s made public. The QA team will go over the release and either green-light it, or send it back for changes. This will mean much less production bugs and a much better end result.

The second change is that we don’t write a line of code without a product specification (I’m writing the IP.Dynamic and IPB 3.0.0 specs currently). These specifications are like blue-prints for the product and explain the features and how the features work (Joel Spolsky has some interesting things to say on product specs).
Writing out these specifications has already saved time coding by working out the raw logic before touching BBEdit. Often, I’ve found myself re-working bits of code simply because the logic doesn’t work or I’ve changed my mind on how a feature should work. The spec irons out all those mistakes. Another plus is that we have one blue-print to work from. The PR department will know which features are planned and how they work, so developers won’t get a call from downstairs asking “Hey, is this going to be a feature in a future version?…” anymore. This is a good thing.

As a footnote to SVN, I am comfortable with the command line interface, but found svnX a joy to work with. This is a Mac OS X GUI for SVN and makes refreshing, committing, adding files and viewing changes much easier.

Click on the image below for a large version. Or not. The choice is yours.

About Me

Me
I'm a web developer (PHP / MySQL / DOM) based in the UK. I am the co-founder and C.S.A of Invision Power Services, Inc.

Last.fm Chart

XBox Live

Spam Monitor