Fuller Web Development JavaScript, PHP, and Python Web Development by Braydon Fuller

New Events Section on Mochilla.com

We just got up a new events section for Mochilla.com. I added a ‘date’ column to the existing documents mysql table and an interface to be able to add/edit events via the browser. It took about a day and half to complete.

Screenshot of the new Mochilla.com events page.

Memory Optimizations for Mochilla.com

I just spent the last two days optimizing the Python backend for the Mochilla.com website. We are running the website on a 256MB VPS at Slicehost. They have been getting a larger number of hits the last week because of their new Timeless video they are releasing, and several people have been embedding the videos on their websites. All this was causing the server to lockup and need to be restarted a couple of times a day. So the initial outdated code that was running the site before has been trimmed down and there has been a dramatic increase in speed on the website and a reduction of the amount of memory it requires. I’ve done away with using classes for various objects, and the data is stored in a dictionary instead. I’m also using straight SQL to get data from the database rather than using an expression language or an ORM that would just add another level of complexity. I’ve also consolidated various tables that really should be one as all the information is being queried at once anyways. It’s a small but large move, that has made the website much lighter weight and easier to manage.

Browsing is now faster and the server is more stable with higher amounts of traffic, take a look: Mochilla.com

The database now has this schema:


mysql> show tables;
+--------------------+
| Tables_in_mochilla |
+--------------------+
| documents          |
| templates          |
| uri                |
+--------------------+
3 rows in set (0.06 sec)

mysql> describe documents;
+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| oid        | int(11)       | NO   | PRI | NULL    | auto_increment |
| modified   | datetime      | YES  |     | NULL    |                |
| created    | datetime      | YES  |     | NULL    |                |
| parent_oid | int(11)       | YES  |     | NULL    |                |
| html       | varchar(1000) | YES  |     | NULL    |                |
| image      | varchar(1000) | YES  |     | NULL    |                |
| video      | varchar(1000) | YES  |     | NULL    |                |
| audio      | varchar(1000) | YES  |     | NULL    |                |
| uri        | varchar(100)  | YES  |     | NULL    |                |
| name       | varchar(100)  | YES  |     | NULL    |                |
| weight     | int(11)       | YES  |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+
11 rows in set (0.46 sec)

mysql> describe templates;
+----------+---------------+------+-----+---------+----------------+
| Field    | Type          | Null | Key | Default | Extra          |
+----------+---------------+------+-----+---------+----------------+
| vid      | int(11)       | NO   | PRI | NULL    | auto_increment |
| name     | varchar(100)  | YES  |     | NULL    |                |
| source   | varchar(255)  | YES  |     | NULL    |                |
| parent   | int(11)       | YES  |     | NULL    |                |
| children | varchar(1000) | YES  |     | NULL    |                |
+----------+---------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> describe uri;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| location | varchar(1000) | NO   | PRI | NULL    |       |
| oid      | int(11)       | YES  |     | NULL    |       |
| vid      | int(11)       | YES  | MUL | NULL    |       |
| children | varchar(1000) | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec

Detecting Mobile Devices and Flash with JavaScript

For the Walldogs website we ran into some strange issues dealing with Flash. This is a non-issue for browsers that support the HTMLVideoElement, however not every browser does yet, so we must deal with the reality.

Usually when you put an object or embed tag for Flash in the DOM in Internet Explorer it will prompt you to install the plugin, and it does this pretty easily. However there are some instances where installing Flash just isn’t possible and the prompt would or not appear at all, or they may have the wrong version of Flash. So for mobile phones, and 64-bit machines with 64-bit browsers, and browsers running old versions of Flash, there would have been a road block to viewing the site.

We need to address situations were JavaScript is available but Flash is not and the browser doesn’t support the HTMLVideoElement. So on the Walldogs site I used two JavaScript libraries to determine a few things: SWFObject.js to determine if Flash is installed and what version, and MDetect.js to see if the website is being viewed from a mobile device. So if someone is viewing the website without Flash, the are not required to install it to get basic information from the website, it skips the video and goes straight to the page, and a message on the top of the page that gives notice to the visitor that they are viewing the website with missing features and to install a browser that will support it.

If you’re on a mobile device or using a browser that uses JavaScript, doesn’t support the HTMLVideoElement, and you don’t have Flash installed, take a look at the Walldogs website (currently staging). Then take a look at it in a browser that does support the HTMLVideoElement.

New VPS Server

I have just moved my VPS which hosts the websites braydon.com, universvideo.org, and my mail server. If everything goes as planned it should be a seamless transition; it took two days to make sure everything was moved correctly. The DNS information should all be updating now.

Update (2/25/2010): Installed Postgrey, for email greylisting with Postfix. Tested incoming emails from various free email services online; they all work. I highly recommend using greylisting a first line of defense against spam email, it cuts down my incoming spam by about 80%, and is really easy to install with Postfix.

New Portfolio Website

We just put up a new website this morning for Diego Chamorro. It is a portfolio website using Indexhibit.

CHAMORROSTUDIO.COM

The landing page for chamorrostudio.com

Mochilla Website Update

We just got up a new landing page, and product page for the Timeless Concert Series new Box-Set to be released soon. It was a quick turn-around of about 2 days from initial call to having the new page up. This work included, setting up a development site, modifying an already existing template file, and style sheets, and making a graphic for the homepage.

MOCHILLA.COM

View of the new Mochilla.com landing page.

Pink Cloud Events TEDActive Video Update

Just updated the Pink Cloud Events website with a new video. My work consisted of encoding the video into 3 different sizes of both Mp4, and Ogg using FFMPEG, and FFMPEG2THEORA at optimal bitrates. Both Mp4 and Ogg filesizes are nearly identical in filesize and quality. This implementation of the video on the web uses the default HTML5 video player controls provided by the browser. I then use JavaScript to detect if HTML5 <video> is available and if not I replace it with a Flash video player, except for Safari which is known to have poor HTML5 video playback support. This was a quick turn-around of one day.

PINKCLOUDEVENTS.COM

The poster image of the new video.

Interactive Video Website for the Walldogs

Logan and I have been hard at work for a couple of weeks getting this new site up and ready. There are still a few bugs we need to work out with a few browsers, but if you’re using Firefox, Chrome, Safari there shouldn’t be many problems. The website uses a lot of JavaScript for the timing of events, and for DVD menu like navigation. Take a look, and be entertained.

Update: Browser issues should be resolved, if you spot anything please let me know, and what browser you are using.

WALLDOGS.NET

Walldogs website landing page finished rendering.


Wordpress Video Plugin for VTech

MUSIC.VTECHPHONES.COM

View of inserting video into a post from the WordPress Media Library

Zine Plugins

Featuring and changing the order of Posts in Zine

← Before