Archive for the 'php projects' Category

Military Signatures

I loved this latest project. It all started when I helped a fellow named Jay on experts-exchange with an issue that had been challenging him for quite some time. After he had his solution, he actually contacted me through a post on this blog asking me to give him a call. I did so, and thus began our partnership.


Jay had gotten this idea of putting together customized signature logos for military men and women, where they could display their name, rank, badges, ribbons, and other stats about themselves inside a cool stylized image. But while he’s an impressive graphic artist and has an excellent sense of proportion and design within his signatures, he needed more help with the behind-the-scenes coding than simply posting on experts-exchange could afford him.
Anyway, Jay agreed to match my normal hourly rate of pay, and I in turn did my best to not only give him code that did what he asked for, but code which could be easily understood by him, extended, and reused without his having to know too much about the underlying algorithms I employed.

Among the things I did for him, I:


  • gave him a way to define blocks of space within a signature for badges and for ribbons
  • constructed a CMS for adding his images and a simple API for calling them back out
  • turned his forms into database-driven affairs that would write large portions of themselves based on the art residing in the database
  • built a system for saving a member’s selections on the signature-building form and then auto-populating the fields each time the member returned
  • developed a way of adding attachments to ribbons (these can be like a set of stars that denote a particular award has been won multiple times) that even allows users to see an instant preview of their ribbon before building the signature
  • built a queue implementation that prevents server memory overload by making sure only one signature gets built at a time (GD operations are fairly memory intense, and too many at once can cause the server to grind to a halt)
  • created a javascript that sends the form selections back to the server and initiates the image creation without forcing a page reload

sigsample3.pngI’m very pleased to see that Jay’s idea has really started to explode in popularity. And he’s the sort of dedicated individual who will take the tools I’ve given him and constantly be turning out new innovations for his site. His thousands of members love all the work he puts into it, and scores of new signups join every day. His site membership has doubled in just the past 2 weeks. And he still hasn’t spent his first dime on advertising. His traffic is increasing entirely through the viral dissemination of these signatures.

I think they look awesome, and I’m really digging the chance to be part of something that looks like it could be huge.

Check out the site –


March 14 2008 | php projects and worth mentioning | No Comments »

My First AJAX project

One of the things which I feel has held back some of my web applications from their true potential has been my lack of javascript knowledge, and AJAX methods especially. I finally decided to do something about this, so I bought a book “AJAX and PHP” from Amazon last week. It arrived this past Friday and I’ve been having a blast learning this technology.

Happily, AJAX isn’t anything technically “new” it’s just a way of using 2 languages that I already have a grasp of. After playing with the examples in the book, I decided to get my feet wet by converting one of my old scripts into AJAX in order to improve its speed.

Basically, this was a component of EdocWizard (mentioned here) which allowed people to select the appropriate subjects for their eDocs. The subjects are all based on what are called BISAC codes, which simply stands for Book Industry Standards And Communications. The official list of codes can be found at the Book Industry Study Group’s website. I have them backed up to my database, and there’s currently just over 3000 different codes recognized. Amazon allows publishers to pick up to 4 subject codes for each eDoc.

These subject codes are broken up into categories, and originally, I simply made the user wait while the entire 3000+ codes were copied from the database into javascript arrays, and then I had functions that could switch out the display to show the appropriate subjects based on the category the user had selected. My intent was to make it fast to switch between categories without forcing a page reload. It worked, but depending on connection speed it could take a long time for the complete page to finish loading. In retrospect, I should’ve simply forced a page refresh.

Anyway, none of that matters now that the tool has been converted to use AJAX. Check it out by using the form below.

October 08 2007 | ajax and php projects | No Comments »

The ISR interview widget for affiliates

In my current full-time job as webmaster for Inside Success Radio, I don’t often get a lot of opportunity to do really cool new programming. However, I had a blast with my latest project, and I was proud enough of it that I’m going to share it here.

Basically, we run an internet talk radio website, and we have members who pay to listen to our exclusive content. Each interview is broken up into 3 segments, with the first segment telling the guest’s story, and then the second segment giving their expert advice (and this is the stuff people are willing to pay for), and a third segment where they offer predictions about developing trends in their fields. Our experts span the gamut from business and finance to parenting and romance. With multiple subtopics, it’s pretty easy to see how content from our site could be a valuable addition to anyone’s weblog.

So anyway, after I happened to mention to my boss that I knew how to write WordPress widgets, he asked me if we could use a widget to let someone easily add a feed from our site to their own blog, and get some free links back in the process. I said that I could, and after we hammered out the specs, we came up with this pretty little widget.

You can see the result of this effort in my own sidebar there to the left. It includes just a tiny amount of information about the guest, a feed for listening to the first segment of the interview, and then a link inviting people to our VIP page, where by giving us just their name and email address we’ll let them listen to the entire interview for free. In addition, we offer them a free trial membership. After the trial period expires, they can pay each month to continue to get access to our huge library of content as well as all of our new shows that we add every week.

Now, the exciting feature for the blog owner is that the link to the VIP page includes an affiliate id. If a person signs up as a member and starts paying us each month, we pay a 35% commission on every payment. With just a few new users each month, this can quickly become a great passive income source. In addition, the blog owner specifies the keywords and topics relevant to their own visitors, ensuring that the interviews displayed will be ones their traffic is most likely to be interested in. The featured interview changes each day. As a handy guide, the widget control lets the blog owner know how many interviews in the database currently match their preferences. They can narrow or generalize their settings as appropriate.

The exciting feature for Inside Success Radio of course is that we get numerous links back to our site to improve our search engine rankings. We get 1 link back to the homepage, 1 link to the homepage of the particular radio show being featured, and 2 links back to the guest’s own promotional page. The other cool thing is that if we want to promote one particular guest on a particular day, we can modify the feed on our end such that if the widget’s keyword, category, and radioshow preferences match, then that guest we’re promoting will be sure to show up as the featured interview. This way we can quickly get dozens of backlinks and traffic all at once. Isn’t that a cool idea?

Anyway, if you think you’d like to have it on your own blog, you can either become a member yourself and request an affiliate id, or else feel free to use mine – 405203. (Hey, it never hurts to ask, right?)

Here’s what bloggers see when configuring their feed:
Options for configuring the ISR feed widget

September 27 2007 | open-source and php projects | No Comments »

Edoc Wizard – beautiful in (almost) every way has a neat program to let publishers sell ebooks online, which they call “eDocs”. Back when the eDoc program first came out my current boss Randy Gilbert registered for the program, got a vendor code and a pdf with instructions on how to use it. It was not user-friendly. It was so difficult, in fact, that until he hired me, he never placed a single eDoc on Amazon, even though he really wanted to. In its own instructions Amazon said that there was an easy way and a hard way to get eDocs posted.

The easy way was to pay some third-party company a hundred bucks per eDoc to place them online for you. However, Randy had already spent about $50 apiece getting his radio interviews transcribed, and he really didn’t think it made sense to spend another $100 apiece just to get them into the Amazon eDoc program. And certainly, with no clear idea how to get them sold once they were there, combined with the fact that Amazon gets 50% of every sale, he was probably justified in that opinion.

The hard way, on the other hand, required putting together a metadata file by hand for each eDoc to be uploaded. Randy’s no fool, but he had neither the time nor the patience to figure this out himself. And besides, he wasn’t interested in paying someone to create a new metadata file each time a new eDoc was supposed to go online. He wanted an automated system to quickly get lots of these products online.

When I first came to work for Randy, the only language I was competent with was Java. So, I built a Java applet that could guide someone through the process of entering the information about each eDoc, save that information to a database, and then convert that information into the metadata file according to Amazon’s instructions. It worked, and the applet can still be used for that purpose today.

After we got a good number of his transcripts online, Randy started getting noticed by other internet marketers who wanted to get their ebooks onto Amazon as well. My solution was good for a single user to create a metadata file and then manually ftp that metadata file to Amazon, along with the eDocs and their covers. It was not so good for having a large number of people using it, keeping their edocs separate, and managing overrides from sales.

When I became more proficient in php, I proposed to Randy that we create a new system for putting up the eDocs, one that would allow us to manage users, track sales reports from Amazon, automate the procedure of publishing documents, and store the eDocs and their cover images. He agreed, and asked me to put something together.

I designed the software requirements, set up a phased development schedule, and created a detailed process diagram and database diagram before I ever set down a single line of code. Randy signed off on the idea, agreed to fund the project at the amount I specified, and then I set to work. Initially, I expected to just create the first phase of the project myself, and then find another person or company to complete it. But when I couldn’t find anyone willing to work within the budget I had, and when my other projects started requiring less of my personal attention, I decided to just do it myself.

(Download the finalized requirements document, or the finalized process diagram)

I love Because I never allowed major changes to the scope from start to finish, and because it was so thoroughly envisioned at the outset, the final project has a wonderful consistency throughout it, and performs well with everything it is intended to do. Phase I of the development was supposed to require 2 weeks. I needed 3, mainly because I was forced to split my time with another project. In Phase II, which I began about a month later after finishing up some other unrelated work, I determined that once I started I would be more jealous with my time. I didn’t agree to take on any other new projects, and except for the occasional IT “emergency” all of my work was devoted to the project’s completion. I had originally said I would need 3 weeks for the final phase, and I finished it in 3 weeks exactly.

Currently, we’re in beta testing mode. We have our own transcripts going up still, and now we also have another internet marketer placing eDocs online. Occasionally bugs are uncovered, though with surprising rarity for a project of this scale. And at this point, we’re confident that we’re ready for deployment. It’s just a matter of deciding how to advertise and what business plan we want to use. We’re not sure if we should charge for access, or simply take a percentage of sales, or some combination of both. Once the marketing is in place, is going to be a very sweet source of income for Bargain Publishers.

To test it out yourself, though without admin controls or the ability to actually publish to Amazon, go to

Username and password are both “public”

For those features that you won’t be able to see because of limited access, check out the screenshots below. Click on the thumbnails for a larger view.

edoc wizard catalog view edocwizard user account management an edocwizard sales report Managing an account in edocwizard
managing user profiles through admin controls managing system-wide settings as an admin editing an existing product in the database an Amazon page created by a person using edocwizard

No other work that I’ve done so far demonstrates my understanding of web development at every level as clearly as this one. I’m a very strong web coder, and honestly not the best designer. While I understand css and html, I’ve never had the sort of gift with design that I’ve always enjoyed with programming, ever since I was a kid playing around with BASIC on my parents’ Commodore 64. I’d like to learn a few more tricks, but I fear I lack the sort of artistry that is innate in a great web designer. However, while my designs aren’t pretty, I try to make them intuitive and user-friendly. And while not gorgeous, I like to think they’re not especially ugly either.

Edocwizard is cross-platform compatible with Firefox and Internet Explorer.

August 31 2007 | php projects | 4 Comments »

Debt-Elimination Calculator

calculator screenshotThis project was based on a concept developed by Loral Langemeier. The idea is to help people pay off their debts by using a fixed amount of money every month as part of her “5-step debt-elimination plan”. Basically, you take all of your debts and order them in order of how many months they will require in order to be paid off. You pay off the shortest-life loan first, and then apply the payment from that loan to the next, so that both payments go toward it. As each loan gets paid off, you keep adding each payment together until the longest-life loan has the full amount from all the other loans going toward it. Basically, the more your monthly payments are on your loans, the faster you end up getting your loans paid off. (Loral herself explains the concept much better than me in her book “The Millionaire Maker“.)

So what I did was create a calculator that lets people type in each of their loans and what their payments are, and then it figures out how many months it will take to be debt free under the 5-step debt-elimination plan, showing the order the loans should be paid off, and after how many months each loan will be paid. Since Loral also recommends adding a “jump-start” amount to the first loan to be paid off, users can see the effect of applying that amount each month. To check it, go here:

The calculator was written in php, and was my first project to involve sorting multi-dimensional arrays.

August 25 2007 | php projects | 1 Comment »