Travel Oklahoma


Lead Developer

Live Site

I list myself as 'Lead Developer' for this site only because the original code was not mine.  After over two years of being the only developer for the site - and major changes/improvements taking place - a high percentage of the code is now mine.



If you want to know how well-designed your site is, just attempt a re-skin.

This re-skin was acutally fairly simple: two templates, a css file, and some image slicing from the agency's psd file.  The majority of the work was the new navigation elements and the new homepage slideshow elements.  Well - there were a bunch of revisions :-)

Beta testing for the new skin showed a large improvement in time-on-site.

Site Search

This site has a very complex internal search - no Google here!  It utilizes built-in dictionary matches and adaptive boolean queries.  ( in english that means AND, NOT, OR, PHRASE, and WILDCARD ).

  • AND : all terms entered must exist
  • NOT : preceding a term with minus "-" means it must NOT be in result[s]
  • OR : using dictionary matches, a search for "mount" would look for "mount" OR "mountain"
  • PHRASE : quoting a phrase requires words to be in exact order eg: "grand lake"
  • WILDCARD : very useful for plurals eg: "plural*" will match both "plural" AND "plurals"

The dictionary is the key to the search engine's flexibility - using the failed search term report, common searches can be 'helped' by matching terms that would normally not return expected results with terms that will.  The dictionary already has over 1,000 words in it for cross-matching.

By refraining from using Google for site search - as so many seem to do these days - the results are instantaneous, cleaner, better organized, and more relevant.  Plus the results are not subject to the re-indexing whim of Google's search bots.

This site actually uses a similar engine - with results styled to look like Google's.

Secure Login
Security of the administration area of a Website is an often-neglected development area.

Sometimes it is not desirable to purchase/maintain a https secure certificate.  What many people do not realize is that log-ins on a site that is not in https transmits the username/password over the internet in plain text.

The secure log-in system I developed and use for admin access is a challenge-response system that does not transmit vital information in plain text.  Instead it does a one-way hashing of the entered information with a common key and the server compares the browser's hash results with it's own for authentication.  Every log-in attempt results in different values being transmitted over the web, so a hacker cannot intercept credentials.

The log-in system also tracks failed log-in attempts and ignores attempts after an ( undisclosed ) number of failures.  After that, even a valid username/password combination does not gain access.  This blocks scripted log-in attempts.  A human user must wait an ( undisclosed ) period of time or ask for assistance from a system administrator.

Once a user gains access, their access has an automatic time-out feature. This keeps the user from leaving a computer logged in to the administration system where a passer-by may be able to gain unauthorized access if the computer is left unattended.
Dynamic Photo Cropping

A common problem with photo uploads is the lack of consistency in their aspect ( height to width ) ratio.  The upload system will automatically crop and resize images that are out of proportion for display, but the results never seem to meet an editor's expectations.  Compound that with an editor who has never used an image-editing program and you will never get satisfactory results.

We get around this problem by giving the editor an on-site cropping tool.  This allows the editor to see and set the image crop dynamically - without the complex ( and often confusing ) plethora of options you would find inside an image-editing program like Photoshop.  Result: everyone is happy.

Frame Image Generation

Not only can we set when in the video the frame is shot, we also have an image caching script that auto-generates the play button overlay:

Photo and Video Player Modals

These modals ( similar to a pop-up, but embedded in the page ) appear simple but are in actually quite complex, with a great deal of features and functionality.  Not only do they offer the standard Previous / Next buttons, they actually update the main page when you click beyond the set currently showing.  They also offer voting, save & share options, and links to related content that update as you click.  Every photo/video change re-initializes the player for tracking as well.

Dynamic Search Filters

This ajax-driven filter set allows you to drill down to what you're searching for.  As you define your search area, type filter[s] for that area are enabled or disabled dynamically.  Now when you hit "GO" to see your search results you won't get a "No results found".

php java W3C jQuery jQuery Mobile Knockout Omniture Google Analytics SVN Apache MySQL Adobe Zend MCSE