:: Archive for April, 2005 ::

gCards 1.44 Released…And the Abbreviated History of Greg and PHP

Posted on April 16th, 2005 in gCards, PHP by Greg

I just posted up a new release of gCards, the PHP ecard script I wrote about a year and a half ago. I haven’t done a good job at all of fixing bugs over the last year and I have all but stopped reading the forums, but the application – aside from the major news bug (which was actually a small fix) – is very stable now.

I started gCards as a project to learn how to write a PHP app. I wanted to have some background in programming – I work at an enterprise software company as a product manager. In this job I spend about half of my time working directly with engineers. I thought it would be useful to get a better understanding of the issues of design and implementation of software. I bought a PHP book and started reading it, but I quickly got bored running through the chapters and decided it would be better to make a little project for myself that would give me exposure to a wide variety of aspects of PHP programming. I decided on an ecard application because:

  • I like photography and I had a very lame ecard page up on my site – I forget now which script I was using
  • An ecard script would need to involve the following technologies
    • Database to store the card information and the sent cards
    • Image resizing to create thumbnails
    • Security to prevent public access to the admin interface
    • Dynamic front-end pulling information from the database
    • Creating and sending dynamic emails
  • It was more fun the reading through the book

So I started working on it and quickly had something up quickly. I had used a couple scripts which I had found on hotscripts so I figured it would only be fair to post my completed effort on the site for others to use. I never really expected people to download it and use it. In the first couple days, several hundred people downloaded the application. It was very rough around the edges and many people reported bugs which I dutifly fixed, all the while learning how to write a PHP app.

In addition to bugs, people were asking about features. My goal had been to create a simple and dynamic PHP script for my website, so I tried to stick with that goal – I only wanted to implement features that made sense for me and that would keep the script simple. So I added things like WYSWIG (first HTMLArea then FCKeditor) editors for writing. A couple other things I didn’t need for my site I decided to add – one example was internationalization – gCards has been translated into more than 20 languages.

Since I first created gCards, I have created several other applications:

  • A enhancement database, customer database, and several other internal applications for Selectica, the enterprise software company I work for
  • The backed for both the intranet and website of Selectica
  • A website for my friend Michael’s band, Boys on Trial
  • A website for Kiesandahl and Calhoun, a fine art gallery in New York
  • A document / file management application
  • A blog for my brother, that I used at his site
  • Mailing list management for my mom’s company, Redstone Studios

Over the course of this work, my skillz have increased quite a bit, and now I find it difficult to wade through the hackish code that gCards is comprised of. It works, but it isn’t a very nice application from the code perspective. PHP, HTML, and SQL are intermixed with no separation between data and logic. If I wrote the same application now it would be OOP and it customization of the user interface would be a much cleaner thing. I don’t have enough time to rewrite it…between work, travel, and entertaining my girlfriend…I don’t have much time for gCards.

I think that the most important reason for the (relative) success of gCards was it’s ease of use. Too much open source software is difficult to install, use, or understand. It’s not the most beautiful application, but it’s much better than most of the competition. As a product manager at my company it is my job to design usable software that accomplishes its goals. That’s what I tried to do with gCards. So despite it’s hackish origins and it’s moderately ugly looking code, I think gCards was redeemed by it’s ‘keeping it simple’ approach. I hope people like using it, and I plan to continue to fix bugs whenever I have the time…but that time is few and far between.

The beauty of open source software, of course, is that the source is out there for everyone to see. So if there’s something you want to add, or a fix that you think needs fixing…..fix away!

Thanks for reading this completely incomprehensible post!

WordPress – the great and the not so great

Posted on April 14th, 2005 in PHP, WordPress by Greg

When I first stumbled across WordPress (which I’m using to power my website), I was very pleasantly surprised by the excellent administration environment, and just how easy it was to setup and use. Before I even decided what tool I was going to use for my website, I had come up with a basic design and color scheme that I was going to use. I managed to stay pretty close to what I wanted, but there were several things that made it a bit trickier than expected.

In order to get my custom ‘skin’ for WordPress I needed to create a theme – this is pretty easy as a theme is really only composed of a few pages. The template tags used to create a theme are relatively straightforward and I was able to get something up and running very quickly. The difficulty is that the template tags are aimed at very novice users, which means that they hide a lot of complexity. And while hiding complexity is often great, it also means added complexity when you try to do something that is a little outside of the feature set.

For example, WordPress has a feature called ‘Pages’ where you can create regular posts that act more like static pages and aren’t blog-like. In addition to not sitting within the standard blog flow, pages can have child pages so you can build a hierarchy of pages. An example of ‘Pages’ on my site is the ‘About‘ page you can see linked on the left. If I wanted to I could write a sub-page called About Me with sub-pages for My Education, My Resume, and My Hobbies. Now I don’t really have anything on this page, so I guess I’m giving a bad example – but you’re smart, you can imagine it.

While it was possible to create a hierarchy of pages, the only place to show it was really in the navigation bar on the left. Obviously this isn’t acceptable if you have several levels of nesting – the left column isn’t big enough. You can limit the ‘depth’ of the tree, but then the lower levels aren’t shown anywhere, and a page that no one can get to just isn’t too useful. I wanted two additional things:

  1. To show a breadcrumb under the page name which would have links to all of the parent pages
  2. To show a list of child pages

I understand that Pages were only introduced in the current release of WordPress, but these seem like two very obvious requests. The unfortunate thing with doing these is that the API provided by WordPress is so targetted at its own templating that it requires a developer to talk directly to the database to get data. Most of the template tags return data with HTML embedded, so if you want to use the data for another purpose they become useless. Using the WordPress plugin functionality I was able to write a class which augmented the standard Pages feature set with some useful functions.

I understand that the template functions return HTML to simplify things for the user, but it would be great if there were some lower-level functions which returned information as data (i.e. returning an array of child pages) so that the user can choose what to do with them. So while it might be easier to write:


I would personally rather write:

$children = $page->getChildren();
foreach ($children as $child) {
      //  do something

I think that this actually ends up being more readable because it’s not as spooky – you can see exactly how the data is being rendered on the page, and if you need to make a change to it you can do it write on the template instead of changing the source code of the API.

But….overall I’m very happy with using WordPress and how flexible the system is. I wish the team continued success with the project!


Posted on April 14th, 2005 in Music by Greg

The Pixies are coming back to California (woooooo hoooo, wooooo hooooooo). They’re going to play 2 shows in on May 30th at the Warfield in SF…I just have to pray that I can get some general admission tickets because I really don’t want to be sitting up in the balcony for the Pixies.

I saw them last summer when they played the Greek Theatre in Berkeley and it was a great show. I wrote about it here.

Tickets don’t go on sale until the 17th of April, so…shhhhhhh, don’t tell anyone 🙂

New Site Design

Posted on April 12th, 2005 in Site Updates, WordPress by Greg

After a couple years with the same front page for my website I got a little bored with it…so I decided to switch it up a little bit and change around the format of my site. I thought it might be fun to do a bit of writing on the site, so I did some quick searching for a ‘blog’ or ‘content management’ solution and my final choice was WordPress.

I threw together a quick WordPress theme, augmented the “pages” feature with some missing functionality via a plugin, and ftp’d the thing up. Pretty easy. More details later on my thoughts about WordPress, it’s themes, and ease of use.

I’m hoping to put a wide variety of writing up here…as an outlet for my tech dorkiness, musical thoughts, ramblings, photography, and other things that no one will read. If a real person is actually reading this – add a comment and say hi.

Hope to write soon.

– Greg