Web Site Design Blog

Blog Category: Programming
May 7, 2011

We now have a demo up featuring a video player developed by Ross Sabes.

Video Player

This player utilizes a full featured custom back-end video database management tool.

Web Video Player Admin

Each video title can support multiple files in a variety of formats (FLV, MP4, Ogg, WebM, etc…) and settings for maximum compatibility and performance across the widest possible array of devices. The player can be customized to detect the users bandwidth and play the most suitable Flash format available. If the visitor is using an iPad, iPhone or iPod the player is programmed to use the compatible MP4 format with both high and low bandwidth options if available.

Video Edit Screen

Videos can be assigned to multiple pages by the administrator.

Select Pages for the Video to Appear On

Select pages for the video to appear on.

Videos can also be tagged for search engines and other custom functionality.Tag videos for addtitional functionality

Visit the front-end here
For a demo of the back-end contact us.

This program was developed using:
MooTools
MediaBox
and MooFlow

  • Share/Bookmark
October 7, 2010

MediaBox is a very cool MooTools based JavaScript modal overlay. It has a bunch of bundled in features for displaying various types of media and galleries.

One issue that Google would not help me solve was embedded Flash not appearing in the media box in Safari. I could switch tabs then switch back and the Flash would magically appear. I assumed it was a display conflict Safari was having when everything fired at once with the loading of the MediaBox and the Flash embed. A more elegant solution may involve a listener object on the mediabox, but this seems to resolve it.

My solution was to simply delay the swfobject flash embed by half a second using setTimer();.

Here is the version that does not work in Safari (mac):
http://www.websitedesignby.com/mediabox/mediabox-flash-notimer.html

Here is the fix with the timer:
http://www.websitedesignby.com/mediabox/mediabox-flash.html

Direct link to box content containing hack/fix:
http://www.websitedesignby.com/mediabox/mediabox-flash-box.html

  • Share/Bookmark
August 13, 2010

There are 2 ways a website can be developed: either as static web pages or as dynamic (database driven) web pages. Let’s discuss both varieties:

Static Web Pages
All web pages are displayed using HTML code. Static web pages are essentially a series of linked HTML documents. To make a change to a static website one must edit the HTML code directly on each page. While this may work for a simple web site that has 3 or 4 pages, it quickly becomes inefficient as your web site grows in depth and complexity.

Database SymbolDynamic, Database Driven Web Pages
Database driven websites are fast becoming the standard for website development. The content on a dynamic website is maintained in a database. When a visitor requests information for a page, product, article or photo, that request is processed and returned by a database.

Web Site Maintenance
Typically the information in the database is maintained through a secure administrator log-in area. A well designed administrator log-in area makes it easy for anyone to update the website content without having to learn HTML or sophisticated website design software.

Content Management Area

If you are interested in developing a dynamic, database driven website, have static web pages that need to be converted or want help with an existing dynamic website please contact us for a free consultation. We will be happy to discuss the various benefits and options available to you.

You can also use the comments form below for additional discussion and questions.

  • Share/Bookmark
April 22, 2010

When I am working on a website I have a local development version that I program and test locally. When an update is implemented, it is tested locally before it is copied to the live server. Wordpress sites are treated no differently. Here is how you can make the wp-config.php portable to work in your live and local environment. Simply replace the variables below with the actual information for your web site and you will be have a wp-config.php that can happily thrive in both environments.

I defined an additional constant ‘LIVE’ that I can refer to elsewhere in my code to determine if I am on the live server or not.

wp-config.php


if($_SERVER['HTTP_HOST']==’livedomain.com’ || $_SERVER['HTTP_HOST']==’www.livedomain.com’){

define(‘DB_NAME’, ‘db_name_live’); // The name of the database
define(‘DB_USER’, ‘mysql_username_live’); // Your MySQL username
define(‘DB_PASSWORD’, ‘mysql_password_live’); // …and password
define(‘DB_HOST’, ‘localhost’); // db host
define(‘DB_CHARSET’, ‘utf8′);
define(‘DB_COLLATE’, ”);
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘LIVE’, true);

}else{

define(‘DB_NAME’, ‘name_of_db_local’); // The name of the database
define(‘DB_USER’, ‘mysql_username_local’); // Your MySQL username
define(‘DB_PASSWORD’, ‘mysql_password_local’); // …and password
define(‘DB_HOST’, ‘localhost’); // db host
define(‘DB_CHARSET’, ‘utf8′);
define(‘DB_COLLATE’, ”);
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘LIVE’, false);

}

// You can have multiple installations in one database if you give each a unique prefix
$table_prefix = ‘wp_’; // Only numbers, letters, and underscores please!

// Change this to localize WordPress. A corresponding MO file for the
// chosen language must be installed to wp-content/languages.
// For example, install de.mo to wp-content/languages and set WPLANG to ‘de’
// to enable German language support.
define (‘WPLANG’, ”);

/* That’s all, stop editing! Happy blogging. */

if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
require_once(ABSPATH . ‘wp-settings.php’);
?>

MySQL Queries

Another thing to be conscious of when moving between a live and local server environment with Wordpress are couple of records in the wp_options table of the database. The siteurl and liveurl records will be different in your local environment and live environment. If you copy your database from one to the other, just run the appropriate query below (with the liveurl and localurl variables changed to your actual data) depending on if you are copying from local to live or live to local.

Live to Local Query

Run query on local database.

UPDATE wp_options SET option_value=’http://localurl.com’ WHERE option_name=’siteurl’ ;

UPDATE wp_options SET option_value=’http://localurl.com’ WHERE option_name=’home’

Local to Live Query

Run query on live database.

UPDATE wp_options SET option_value=’http://liveurl.com‘ WHERE option_name=’siteurl’ ;

UPDATE wp_options SET option_value=’http://liveurl.com’ WHERE option_name=’home’

If you have any questions or suggestions, your comments are welcome below.

  • Share/Bookmark
April 14, 2010

If you do a lot of Emailing back in forth as I often do, you may want to try Google Wave.Tim the Enchanter Google Wave is still an invitation-only beta (Gmail was an invitation-only beta from 2004-2007 years before being released to the public), so you will need an invite to start using it. I have about 10 invites left, so you can drop me a note and I will send you one if you are interested in trying it and promise to post something nice in my wave. Google Wave is hard to describe as I am quite a wave newbie myself. It is an amalgamation of Email, chat, bulletin board, shared document and a live meeting.

Google WaveSince wave is currently the bleeding edge of technology, you will need a couple things besides an invite to make your web browser Wave ready. First of all I recommend using Firefox, so if you don’t have that web browser go ahead and install it. Next go install gears. Ok you should be all set! Now go visit my wave and try it out.

You will probably need to watch some of the videos and read the instructions at wave.google.com/about.html. If you have other resources and links, please share them in my wave. I am still a little perplexed by it all myself, but see some potential here. Who knows, maybe this thing will be really useful when it gets out of beta in 2013.

Thanks blog.zenika.com for sorting out the details.

  • Share/Bookmark
April 12, 2010

I am looking forward to the launch of Adobe CS5. Although I have never been an early adopter of major software releases, preferring to read others feedback and take my time to understand the benefit of new features before shelling out hundreds of dollars, this release has my attention.

Adobe Flash CS5
I just got through watching a sneak peak of Flash CS5 at gotoAndLearn.com and it looks like Adobe is hitting the suite spot when it comes to what developers are looking for.

Text handling and fonts have always been a weak point when working in Flash. I am impressed with the features in CS5 that address text flow, better multi-lingual character support and the new font palette.

Flash has established itself as the most popular video streaming platform on the web today. Being able to scrub the video on the stage and add ActionScript cuepoints will be extremely useful timesavers.

Flash’s real power lies in it’s powerful ActionScript programming language that gives developers the freedom to shape the user experience without limits. Code snippets and a host of new features make it easier for programmers to control Flash using ActionScript. The XML-based source files are interesting too. From what I can tell at this early stage it looks like Flash is opening up their traditionally closed, complied SWF files for developers to be able to edit it’s properties and library items on the fly. Not only will this help with using version control, but also unlocks some interesting possibilities with custom content management systems.

The most hype about this release is centered around it’s wide distribution feature. In a nutshell, Adobe wants to allow a project created in Flash to be deployable across any platform (web, desktop, mobile, tablet). Ahead of this release Apple has announced it will not support applications developed using 3rd party (Adobe) software on the operating system running their widely popular iPhones, iTouches and iPads. This latest plot twist in the friction between Apple and Adobe definitely puts a crimp into this feature. However even without the Apple devices this feature will make it easier for developers to port their applications created in Flash to other popular mobile devices running Google’s Android, Windows and others.

I am much more excited about the release of Adobe’s CS5 than I was for the launch of the iPad. This one looks like it might actually be worthy of the hype.

  • Share/Bookmark
September 26, 2009

Nature Song 2009

naturesong.net was redesigned in 2009 to address some issues with the shopping cart, integrate a reseller login so resellers can log in and purchase CDs at a discount and NET 30 payment terms and generally update the look and feel of the site.

The shopping cart and content management system is completely custom. I decided to create a custom system for this site because I had a clear vision of how it should work. The owner, Bill Leverick, wanted to be able to easily update the CDs available for sale. I knew there were off-the-shelf shopping carts and content management systems I could probably have used or customized. Because these products had an ‘audio sample’ component to them that we needed to attach and be able to associate audio files with multiple products, I decided to build it myself. The site integrates PayPal Website Payments Pro for it’s merchant service provider and the UPS API to get shipping information from UPS in real-time for orders with quantities above 2 CDs. The AJAX overlay for each product uses the jQuery framework to handle the JavaScript effects.

In retrospect I am happy with my decision to go completely custom with this site. It allowed me to develop exactly what the client was looking for without excess functionality that he didn’t want or need and might have confused the process. It also allowed me to address his fine-tuning requests quickly and not have to compromise because of an off-the-shelf software limitation.

Here is a quote from the owner:

Ross,
I just logged on to check out the new NatureSong site that you activated today. I am very pleased not only with the graphics, but with the built in ability for me to make necessary changes to the products. You have done a great job and I would heartily recommend you to anyone. Please feel free to use this site and my other web site, Cape Cod & New England Gift Show as examples of your work.
Thanks,
Bill Leverick

View Project

The original site I developed in 1998 can be seen here.

  • Share/Bookmark
September 26, 2009

You can now log in to post comments on my blog using FaceBook via WP-FacebookConnect.

  • Share/Bookmark
September 10, 2009

This example uses the php class developed by Mark Sandborn (now hosted at code.google.com here). I made a couple slight modifications to the class. Using Marks’ class I created this form to serve as a starting point for you to present your user with various UPS shipping options and their associated costs to integrate into your own shopping cart.

download my sourcecode for the form
Rates and Service Selection XML Tool Developers Guide from UPS

Happy coding!

  • Share/Bookmark
June 5, 2009

I know it’s lazy, but it’s handy…

date(“Y-m-d H:i:s”);

function.date.php

The following characters are recognized in the format parameter string
format character Description Example returned values
Day
d Day of the month, 2 digits with leading zeros 01 to 31
D A textual representation of a day, three letters Mon through Sun
j Day of the month without leading zeros 1 to 31
l (lowercase ‘L’) A full textual representation of the day of the week Sunday through Saturday
N ISO-8601 numeric representation of the day of the week (added in
PHP 5.1.0)
1 (for Monday) through 7 (for Sunday)
S English ordinal suffix for the day of the month, 2 characters st, nd, rd or
th. Works well with j

w Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
z The day of the year (starting from 0) 0 through 365
Week
W ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)
Month
F A full textual representation of a month, such as January or March January through December
m Numeric representation of a month, with leading zeros 01 through 12
M A short textual representation of a month, three letters Jan through Dec
n Numeric representation of a month, without leading zeros 1 through 12
t Number of days in the given month 28 through 31
Year
L Whether it’s a leap year 1 if it is a leap year, 0 otherwise.
o ISO-8601 year number. This has the same value as
Y, except that if the ISO week number
(W) belongs to the previous or next year, that year
is used instead. (added in PHP 5.1.0)
Examples: 1999 or 2003
Y A full numeric representation of a year, 4 digits Examples: 1999 or 2003
y A two digit representation of a year Examples: 99 or 03
Time
a Lowercase Ante meridiem and Post meridiem am or pm
A Uppercase Ante meridiem and Post meridiem AM or PM
B Swatch Internet time 000 through 999
g 12-hour format of an hour without leading zeros 1 through 12
G 24-hour format of an hour without leading zeros 0 through 23
h 12-hour format of an hour with leading zeros 01 through 12
H 24-hour format of an hour with leading zeros 00 through 23
i Minutes with leading zeros 00 to 59
s Seconds, with leading zeros 00 through 59
u Microseconds (added in PHP 5.2.2) Example: 54321
Timezone
e Timezone identifier (added in PHP 5.1.0) Examples: UTC, GMT, Atlantic/Azores
I (capital i) Whether or not the date is in daylight saving time 1 if Daylight Saving Time, 0 otherwise.
O Difference to Greenwich time (GMT) in hours Example: +0200
P Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3) Example: +02:00
T Timezone abbreviation Examples: EST, MDT
Z Timezone offset in seconds. The offset for timezones west of UTC is always
negative, and for those east of UTC is always positive.
-43200 through 50400
Full Date/Time
c ISO 8601 date (added in PHP 5) 2004-02-12T15:19:21+00:00
r » RFC 2822 formatted date Example: Thu, 21 Dec 2000 16:01:07 +0200
U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) See also time()

MySQL DATE_FORMAT

Specifier Description
%a Abbreviated weekday name
(Sun..Sat)
%b Abbreviated month name (Jan..Dec)
%c Month, numeric (0..12)
%D Day of the month with English suffix (0th,
1st, 2nd,
3rd, …)
%d Day of the month, numeric (00..31)
%e Day of the month, numeric (0..31)
%f Microseconds (000000..999999)
%H Hour (00..23)
%h Hour (01..12)
%I Hour (01..12)
%i Minutes, numeric (00..59)
%j Day of year (001..366)
%k Hour (0..23)
%l Hour (1..12)
%M Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r Time, 12-hour (hh:mm:ss followed by
AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%U Week (00..53), where Sunday is the
first day of the week
%u Week (00..53), where Monday is the
first day of the week
%V Week (01..53), where Sunday is the
first day of the week; used with %X

%v Week (01..53), where Monday is the
first day of the week; used with %x
%W Weekday name (Sunday..Saturday)
%w Day of the week
(0=Sunday..6=Saturday)
%X Year for the week where Sunday is the first day of the week, numeric,
four digits; used with %V
%x Year for the week, where Monday is the first day of the week, numeric,
four digits; used with %v
%Y Year, numeric, four digits
%y Year, numeric (two digits)
%% A literal “%” character
%x x, for any
x” not listed
above
  • Share/Bookmark