Computer Programmer

PHP, MySQL, Perl, CGI, javascript, DHTML, HTML, CSS, databases, web programmer.
Chris Fortune's portfolio on one page.

This page is for the search engines, if you want the eye candy, see the...
database-driven version of this website

TitleDescriptionExample
Ultimate CouponsThis PHP database driven website helps online shoppers save money using free coupons and coupon codes, sales and special deals, comparison shopping, and other methods. Written totally in Symfony MVC framework.
Ultimate Coupons
Web calendarAdded new functionality to CalendarScript web calendar. Among the changes:
  • Zip Code Proximity Search
  • Display itineraries in colored rows
  • Deep user-proofing throughout
  • Employee Travel Days and Rest Days
MVC FrameworkHere's a website that is built upon the venerable CakePHP MVC (Models, Views, Controllers) framework. Think of it as RubyOnRails, except better because it's written in a known language (PHP). Talk about Fast production times!!

The job was to create an internal website to share employee experiences. This company sends it's advertising creative people on excursions and trips, to disrupt their headspace and put them in the customers' shoes. it's very successful. Anyway, they wanted me to build them the foundation, then their programmers would take over the graphics and views, so that's what we have here, an unfinished website. Very cool framework. I would love to do another project with CakePHP...(hint hint)

SWAT Disruption Website

sign on with member / 1111

Complex Web Robot

Deep redesign of Object Oriented Distributed Robot-Fed Content Management System.

Owner came to me with a big problem: He had bought a large, complex, and expensive "website generation" program and had already spent the money on advertising, thinking the program was good to go. The release date was coming soon, but the program was running very slowly!! I determined that the server was being asked to do too much work, so I redesigned the program architecture and code to offload much of the work to the customers' servers. Now users can generate encrypted PHP scripts and upload them by FTP to their servers, which do the work of dynamically generating the websites. Problem solved, 250 happy customers, one very happy owner :)

Search engine scraperSimilar to scroogle.com. A PHP "scraper" that queries one of the Big 3 search engines, sucks the html from the first page, puts the data into an associative array, and displays it to the screen. Voila, no ads, no images.

Test scraper

Atlantic City Weekly Newspaper CMSInstalled and repaired a custom content management system from one of their other newspapers (philladelphiaweekly.com)

acweekly.com

Vacation Rental SiteThis site uses some beautiful graphic art design and professional photography to advertise a local home for vacation rental.

www.a1nelsonvacationrentals.com

Screen ScraperThis is a perl program that visits a govt website and spiders through all the pages, looking for real estate information. It then "scrapes" that data from the website pages, formats it, and inserts it into a mysql database, being careful not to create duplicate rows. The resulting information can be downloaded in spreadsheet format with the click of a mouse.
Screen Scraper
PHP bounce handlerI tried to find a PHP app or class that would parse bounced email messages, but couldn't, so I made my own. It will recognize and parse any RFC1892 compatible bounce (multipart/report).
PHP Bounce Handler
Flash - REDA 100% Flash website for this important advertising agency in the UK. Quality came first, and loving care was given. A truly superb website.
RED Strategic Management
E-mail VerifierThis is a low-level Linux/Perl script to test the validity of sender's mail addresses. Used for anti-spam purposes.
Email.verify.cgi
Scare the crap outa ya!Ever felt that an unseen evil force was taking over your computer?
Well, now it's visible ...
(Save all open files and )
C L I C K         H E R E
Forms engineI use this php class to generate forms on the fly, based on an underlying database. I did some elaborations (and mangling) on the DBtable2form class, by Gamaiel Zavala. It was built for a multi-page survey that required that the user go back and forth. The idea is that it generates html/php code that will fill in the form values when the user returns to the previous page. I abstracted the data to a 3d array structure in the function formArray(). Future improvement: create code snippets for the database query at the top of each page.
DBTable2Form2.class
Anti spam programThis is a spam blocker I wrote that runs on the server and periodically sweeps email from user's POP accounts. It works amazingly well to stop spam. Most anti spam software filters the email for text, or compares it to a list of known spammers, but those methods will always fail eventually as spammers learn to avoid detection. My program forces senders to authenticate themselves, thereby eliminating all machine-produced email or email with a false return address, which accounts for over 99% of all spam. There is also functionality for blacklists, whitelists, RBL's, Bayesian Filtering, DCC, Vipul's Razor, and Anti-virus! Overall it's just a great program!
The Spam Eater
mystery houseA quick website built for a very talented local musician. Features MP3 downloads and DHTML
mysteryhouse.ca
IP address / username managerThis little tool is a quick web interface to match IP address ranges with usernames.
IP address / username manager
website from an emailThis website is generated from a weekly horoscope email! Every week, the astrologer sends an email to the website, where it is piped to a perl script and converted into HTML. The previous week's horoscope is automatically archived.
website from an email

see the perl script
get error logDisplays the last 100 lines of your server eroor log file to your web browser. Great Internet programming tool if your error log file is huge (like mine is) and you have a slow connection.
Get Error Log
get URLsRifles through a local directory, and extracts all the URL's and email addresses it can, and appends them to the appropriate files.
Get URLs
automated sales letterspits out a sales letter for each address entry in a collection of email address files. A good example of how to deal with custom data on multiple reports.
Automated Sales Letter
Just SteamThis is a website I cooked up for a pair of local inventors and steam fitters. The goal was to create an information rich website for low cost. Mission accomplished.
juststeam.ca
shopping cart with ecommerceThis is a 100% data-driven website that is hooked up to a PayPal ecommerce backend. It is an inexpensive and effective sales outlet for your merchandise. I made it so that it is easy for you to set up and administer. This one is a test website, so only Chelsea Cordura/Fleece hats have pictures. Come in and have a look around....
Online Store with Shopping Cart
work-orders organizerThis is an organization tool for a small appliance repair business. It lets Ken keep track of his customers and their work-orders. It was a school project. The username is 'guest' and the password is 'guest'
work-orders organizer
random number displayOoh. Aah. Display lots of random floating point numbers to a text box every few milliseconds. Makes web surfers really nervous, like you're reading their hard drive or something. Only works in IE so far.
Show me those random numbers!
dom compliant menu tree navbarAre you sick of gigantic javascript navigation bars that don't work in every browser? Heck, we all are, so I created this extremely light, tight little folding menu tree navigation bar good for the whole family. It is 'forward compatible', meaning that it will work with IE5, NetScrap6 and above, using the DOM so we can all get along. If your browser isn't DOM compliant, then the menu will display unfolded.
folding menu tree
universal HTML form validatorThey said it couldn't be done! This javascript takes any form field beginning with an underline character _ and validates it's input. Works for text, checkboxes, radio buttons, select-one, hidden, etc.... It can process any number of fields, so is good for large forms like the example. Not only that, but it also produces an HTML output page that allows Edit, Print or Email!! Selecting Print opens a system print dialog box. Selecting the Email option opens your email program and fills it with the results of your form. Gawd! I'm good....hireform6.htm
survey.php ~ Collects form data and dumps it to MySQL database.survey.php
admin.php~ A typical custom administration script for a website that sells various stuff in different categories. Implemented with MySQL database.admin.php
show table~ Takes a tab-delimited text file and displays it in a table on the web. The same form handles numerous different tables.show table 1 | show table 2
http file upload~ Simple file upload script. It has good error checking and displays all the variables. yada yada...http file upload
guestbook bomb~ Don't wear out your mouse, let perl annoy your friends for you. I'm not responsible for any use that this is put to!
Guestbook Bomb
redundancy remover~ Removes duplicate lines from a text file.Redundants
a form mailer~ A nice, re-uaseable CGI form mailer. Whatever form info you post to it, that's what it will display/email!
A Form Mailer
line counter~ A handy debugging tool that shows you the nth line of a text file.Line Counter
trapdoor spiderHere is an older, less auspicious web spider I wrote. You might find it interesting. The Tarantula spider is newer. Eve spider is coming soon, and she does the job much more quickly.

This is called Trapdoor because it snatches web pages one at a time, then disappears.


Enter the Trapdoor
morning mountain art galleryThis site was a real pleasure to code! The entire site is dynamically generated from a flat file database using CGI and the Perl programming language. Each page is served up hot and fresh, never seen before and never to be seen again. Features postcards, ecommerce and auctions. The site architecture is finished, designed to be completely automated, but the code is only half there because the customer bailed out. Any buyers?
jazz boulevardThis site has given Cheryl some very good market penetration. The look is reminiscent of a nightclub atmosphere... the neon sign has a spotlight playing back and forth across it. There is a lot of movement, sound and humour, as well as some Educational content. E-commerce has been arranged through third-party music websites. Cheryl's music is available in MP3 format for download.
nelson guest houseThis site was already designed and hosted, but needed a facelift. Colours and images were carefully selected for appeal, and an automated pictorial tour of the house was added. The Internet promotion of the site was a great success!
really good researchThis site demonstrates some of my html forms programming. I wish you could see the administration area, it's nice.
my portfolioChris Fortune, a freelance programmer from Nelson, British Columbia, Canada, is a Hard working computer programmer with college degree in Computer Science and six years full time experience. A specialist in Internet programming, anti-spam, Linux server administration, e-commerce, and databases, he has Reasonable Rates. On this site you will find some sample work, including websites written in XHTML, CSS, javascript, PHP, Perl, and databases in MySQL. This very website is a good example, served hot and fresh from a MySQL database on a Linux/Apache web server. Click to see all contents of this website on one page. Phone (250) 505-5012 (weekday afternoons, by email appointment only, pacific time).