Changes of plan

By admin, posted on Jun 4th 2007

So there I was, knee-deep in PHP and wondering what the hell I was thinking to set myself a challenge like this. To write, basically from scratch, a new version of a quite complex web application in just over 10 days. As if that’s not mad enough, I had other clients that need to be serviced as well. Life doesn’t stop just because of my whims.

So, depsite me saying that I wasn’t going to look at the templating system for projectGenie this time round, guess what I’ve done? That’s right, rewritten the templating system. Oh, and the installer.

There is method in my madness, you see. By having a better installer means that (hopefully) people will find it easier to start playing with projectGenie. I’m forever thinking about the users, me. And by sorting out the templating system (OK, so it’s a hybrid of a proper object-oriented templating system and my old procedural system) I can produce the rest of the system screens much more easily.

I’ve also added a simple database class so that I have a single point of failure, I mean access, to the database. And the menus are now dynamic, so people who aren;t meant to see certain section now can’t. Hurrah.

Still, to think that I’ve not even started on the list of things I’d said I’d do for version Brookmeyer … it’s a ludicrous escapade. If I make it I’ll be amazed.

And they’re off!

By admin, posted on May 31st 2007

I’ve started my ridiculous escapade of getting the Brookmeyer version of projectGenie live by my birthday on the 14th of June. I’ve already made a few decisions to limit the amount of huge under-the-cover redevelopment I’ll have to do (basically the templating system will be staying much the same) and now is the time to set out my stall for exactly what features will be added/removed.

In a nutshell:

  1. The main screen (can I call it the Dashboard? Not really…) will be redesigned, with the five or six current sections being replaced by three. The main one will show all notes to all projects that you have access to, with some options to filter them. Much better.
  2. I’ll be replacing the current clunky JavaScript library with prototype and Performer.
  3. Clean URLs for people who can use them. That will be configurable by the configuration options.
  4. And speaking of configuration options, I’ll be cleaning that up quite a lot. Basically there will be a standard set of configuration options, and a much more comprehensive advanced set of options.
  5. There will be redesigns for most of the screens, especially the client, contact and project screen.
  6. I’ll add some simple reports to help you manage projects.
  7. The help section will be updated and rewritten.

Seeing as I’m not sure I’ll have time to do even that little lot, there is only a very slim chance of any of this next list happening, but we live in hope.

  1. Simple financial management for projects: a total amount for different phases of each project, then details of any (possibly multiple) payments until the fee has been paid.
  2. Simple time management showing some kind of on-screen timer. This would be per-task.
  3. Start date and end date for tasks, allowing a simple Gantt chart to be shown.

There will be more information about my progress (or lack of it) over the next couple of weeks.

Making less more

By admin, posted on May 29th 2007

As you know, 37signals are big inspirations to me (hence my 37genies skin for projectGenie). A large part of their manifesto is “a belief in the beauty of less – features, options, employees, meetings, promises” (thanks Brian). Constraints are good, they cut out the clutter.

So I’m setting myself a constraints challenge. I’m limiting myself to just 16 days to get the bulk of the new projectGenie version ready for public use. That’s right, on June 14th (my birthday, by the way) version Brookmeyer will be live for playing with on this very site.

I’m not sure what features will make it, I’ll have to pick the ones that will make the most difference. Wish me luck 🙂

BeatsBase: a case study

By admin, posted on May 25th 2007

I’m pleased to say that one of my clients’ websites was launched a few days ago. BeaTsbase, a community site for DJs has been in development since January, and it’s been a pleasure to do. Not just because Robbie has been a fantastic client, but because projectGenie greased the wheels of our communication.

Some quick stats. During the BeatsBase project 29 individual tasks were created, with a total of 721 notes added. That’s in excess of 85,000 words, or 340,000 characters! Phew, no wonder my keyboard is acting strange.

projectGenie hasn’t been our only method of communication. There have been a few dozen emails and about 10 phone calls, but it’s carried the weight for most of the project. In fact using it so intensely has helped me to see several areas it could be streamlined, as well as lots of ideas for new features.

Anyway, if you’re a DJ then you need to check out BeatsBase. And while you’re there say hi to Robbie.

Pressing words

By admin, posted on May 13th 2007

And as if the recent flurry of excitement on this website wasn’t enough, there’s a lot more changes happening. In essence, projectGenie.org is now running on the lovely WordPress blogging system. Which means, as it’s now much easier for me to update the site, you’ll be hearing a lot more from me. Possibly.

Get the flags out

By admin, posted on May 1st 2007

What’s this? No entries for 5 months then two in a week? It must be something special! And it is special, in fact it’s a whole new feature.

Flag preview in projectGenie One of the things that I find difficult in projectGenie is keeping track of where I said I would do something. I have no problem seeing what the latest tasks are, and the latest notes attached to tasks, but I remeber I said I’d do something a few days ago, and I can’t remember where I said it or what task it was.

No longer! Now when I add my "Don’t worry, I’ll look at that in a couple of days"-type notes I can just tick the ‘Flag’ checkbox and that task is flagged for me. Not anyone else, just for me. You can see a demo of this wondrous thing in the little screenshot.

And when I’ve done whatever it was I said I’d do, or it turns out that the action is no longer needed, I can just un-flag it (de-flag, perhaps?) and the flag is gone. Simple!

The flags are set on a per-task and per-user basis, so that means that I can flag whatever tasks I want for me, and other users can flag other tasks just for them. If you want to get your hands on this feature then sorry, you’re going to have to wait for the official release of the Brookmeyer version.

Clocking in

By admin, posted on Apr 23rd 2007

Wow, it’s been nearly 5 months since I last wrote on here. What can I say, I’ve been busy. In fact I’ve been more than busy, I’ve been burning ever candle at every end I could find, but loving it (mostly!)

You may well be wondering what’s happening with projectGenie at the moment, and the answer is not much. I’ve added a few little updates to the demo site. In no particular order they are:

Not much, I know, but it’s something. For the ‘Brookmeyer’ version which hopefully I’ll get chance to work on some time this year, I’ll be rewriting the entire system to be much more modular, as well as incorporating my lovely JavaScript library to do all the eye candy stuff. I also want to give the option for clean URLs on servers that support it. And plenty more besides that, including reports, statistics etc. Goody goody. In the meantime please download ‘Anderson’, with the little tweaks mentioned above and watch this space.

To finish off I’ll share an excerpt from a nice email I got from a projectGenie user:

“First, major kudos for projectGenie! It is EXACTLY what I’ve been looking for to help me run my web design business.”

A spring clean

By admin, posted on Dec 2nd 2006

Yes, I know it’s nowhere near spring, but I wanted to have a bit of a shuffle round. SO I’ve redesigned the front page of projectGenie to be broken into 6 (5 if you’re a client) panes with a quick list of the recent changes to each data type in the system. That’s tasks, bugs, announcements, milestones, projects and (for the owner company only) memos.

Obviously that called for a bit of a change with the CSS files, and while I was doing that I noticed that the Pillarbox style was completely broken in Internet Explorer (surprise surprise). I’ve never really liked that style, it was only created because I thought I ought to have a red one, so I’ve scrapped it. That’s right – no more Pillarbox style.

Of course, if you want a red style then you’re more than welcome to hack your own.

Tab clear

By admin, posted on Nov 24th 2006

I had a quick though when waiting for different pages of a projectGenie pane. If you didn’t know (where have you been?) projectGenie allows you to view lists of information in neat little panes, and if there are too many items it paginates them, like this:

projectGenie pane pagination

Each time a page number is clicked it loads the content for the new pane in the background using AJAX niftyness. It’s cool, it’s very web 2.0. And it can be really slow. So what’s the answer?

Well, as far as I see it if I can reduce the number of calls to the database while still providing the slick in-page pagination effect then that would be great. And I can, and here’s how.

Preloading content

Let’s say I load *all* the items in the list, yes, even if there’s 200 of them. Don’t worry, we’re not going to display them all, just fetch them. So we’ve got our recordset of 200 database rows, and we want to split them into neat pane-pages of 20 per page. Easy, we just set up a little function to group the records into a single <div> when they are fetched from the database into chunks of 20. Like so:

(For this example any code executed by the system is in [square brackets] and any HTML output is in green.)


[Fetch 200 records from the database]
<div>
[Start looping]
Output the row details

If the counter has got to 20 then </div> <div>
[End looping]
</div>

So when we load all of this generated HTML into a content area we end up with something a lot like this:


<div id="pane1">
  <div>
    Line 1
    Line 2
    ...

    Line 20
  </div>
  <div>
    Line 21
    Line 22
    ...

    Line 40
  </div>
  ...etc
</div>

Using Javascript to do all the in-page manipulation (like what it is meant to do)

Now we can make Javascript set all of them invisible except the first one. We can also get Javascript to count the number of children of our content area (id = ‘pane1’) and built a pagination list for us. Then, when we click each of the links, Javascript would capture that event and make only the relevant child div of the content pane visible. Neato.

And there are other good points to this technique. Firstly it’s very accessible and degradeable. If someone doesn’t have Javascript enabled then they get everything displayed right in front of their eyes (not so good for really long sets of data). And it’s also great for print, because when you print the page you can make your print CSS file print all the rows of data in one long list.

So, it needs a bit of work but I like the idea of this.

Keeping up with the Jones’

By admin, posted on Oct 22nd 2006

The masters of simple web-based software, 37Signals, are hard at work upgrading their information management software, Backpack. Actually, it’s not hard work for them as they use a ridiculously easy development framework.

So, what are they doing? Well, drag-and-drop ordering for one thing. Slick.

Is this the way of the future? Certainly it would seem so, but then drag-and-drop has long been a staple feature of desktop software but only recently been possible in a browser. Anything that new and cool is bound to seem really impressive. The fact is that we as web developers are still catching up with desktop developers in any number of important areas.

However, and this is why I love this job so much, we kick their arses in any number os ways, too. We write software that needs no installation, can be upgraded and patched at a single location, is usable by computers with very limited resources, can be accessed by mobile phones and PDAs, is instantly interoperable with millions of other software systems, and looks better than anything they can produce. So, drag-and-drop is a pretty nifty feature, but it’s the nature of web apps themselves that really turns me on.

< previous next >

What next?

On the blog

With extra AJAX goodness