The Myriad Blog

Author: Peter Schultheiss


Learn More About Climate

| Posted by Peter Schultheiss on August 1st, 2009 at 03:50 pm

Learn More About Climate

Climate change is one of the most serious issues facing contemporary society and is rapidly taking center stage as a global concern. CU-Boulder is a leader in energy and climate change research and environmental stewardship and is, thus, eniquely positioned to provide leadership in addressing this issue at a local level.

To address climate change in Colorado, CU-Boulder partnered with Landlocked Films and Sovereign Pictures to create a series of educational videos that would help demystify the science behind climate change. These videos will be broadcasted, one per week, in the fall of 2009.

Our job was to create a website to support this important initiative by delivering the videos, news and other resources in an accessible online format. To view our work (and to learn more about climate change) please visit:


Conflict Between Apache URL Rewriting and Basic Authentication

| Posted by Peter Schultheiss on May 7th, 2009 at 04:04 pm

The Apache module mod_rewrite provides a rule-based rewriting engine that is used by most MVC frameworks (i.e. CakePHP and Zend Framework) and content management solutions (i.e. Drupal and WordPress.)

The benefits of using a rewrite engine include:

  • Making website URLs more memorable to users
  • Making website URLs more relevant to search engines
  • Masking the inner workings of the site by hiding file extensions

I ran into an issue the other day where I needed to run a legacy application that was being protected by basic .htaccess authentication. The legacy application was located in a subdirectory.

Typically, you would just add the following line of code to your .htaccess file to instruct the rewrite engine to ignore the directory:

RewriteEngine off

Unfortunately, this won't work as expected. For basic authentication, the server writes a "401 Unauthorized" header and then looks for an error document based on a pre-defined path. Most of the time, the error document won't exist in the directory that you want to protect, so the request gets handled by the rewrite engine which throws a 404 error.

The solution to this problem is pretty straightforward. You need to add a single line of code to your .htaccess file instructing Apache to ignore the error document. When you're done, the code should look something like this:

ErrorDocument 401 "Unauthorized Access"

RewriteEngine off

AuthType Basic
AuthName "Administration"
require valid-user
AuthUserFile "/home/user/.htpasswds/public_html/admin/passwd"

Hopefully this will save somebody a bit of aggravation.


Fixing the IE7 Z-Index Bug

| Posted by Peter Schultheiss on February 24th, 2009 at 09:15 am

Dynamic drop down menus have always been a headache for web developers, mostly due to quirky rendering behavior across different browsers. IE7 presents a unique challenge with the way it renders z-index stacking orders.

Even though I had all of my z-index values correct, drop down menus were being placed underneath a relatively positioned <div> that occured further down the page.

There is a very elegant solution to this problem that requires jQuery and a few lines of javascript code at the bottom of the page. The following code traverses through your <div> tags assigning the ones at the top of the page a higher value. Worked like a charm for me!

jQuery(function() {
    var intIndex = 1000;
    jQuery('div').each(function() {
        jQuery(this).css('zIndex', intIndex); intIndex -= 10;

Special thanks to Vance Lucas for posting this function on his blog.


PHP Coding Standards

| Posted by Peter Schultheiss on February 20th, 2009 at 10:06 am

All Myriad contractors should follow the PHP coding standards used by the Zend Framework.


YouSendIt - A Better Way to Email Large Files

| Posted by Peter Schultheiss on February 19th, 2009 at 03:59 pm

It's safe to say that email has become most people's default mode of communication these days. It's easy to use and usually faster then dialing a phone number. Unfortunately, email still falls short when it comes to sharing media.

The other day I received a series of photos from a client that totalled over 8MB. It took over 2 minutes to download the photos to my inbox and the network performance at the office was noticably slower during that time period.

For this reason, I recommend services like YouSendIt which let users send large files through their website. It's easy to use, just type in the recipient's email address (or multiple addresses) and upload your file. That's all there is too it, and nobody's email server has to suffer.

What's even better, YouSendIt offers a free Outlook plugin which makes it convenient to send large email attachments right from Outlook.

Other file sending services worth mentioning are, and I'm just partial to YouSendIt because of the handy Outlook plugin.


Communication Between Two Flash Movies

| Posted by Peter Schultheiss on January 28th, 2009 at 12:12 pm

We recently created banner advertisments for the Arizona Department of Transportation that involved a hot air ballon flying from a top banner to a side banner on rollover.

ADOT Banner Example

In order to acheive something like this, you need to open a Local Connection between the two movies and send a function call and (optional) argument over that connection. The following snippet of code would go in the sending movie and could be attached to a button:

on (rollOver) {
    obj_sending_lc = new LocalConnection();
    obj_sending_lc.send('_ConnA', 'traceMyName', 'Peter');

In order for this to work, we will need to add code to the receiving movie making it ready to receive this information. The following snippet of code would go in the receiving movie:

obj_receiving_lc = new LocalConnection();
obj_receiving_lc.traceMyName = function(str_argument) {

In this example, my name would be traced to the output window of the second movie. Obviously, you would want to make changes to the function name and what it does, but this will get you going quickly.

Before you try this out on your own, be forewarned that you can't run the webpage in multiple tabs (which can happen during development) as only the first one will work.


Google's Free 411 Service

| Posted by Peter Schultheiss on January 16th, 2009 at 01:56 pm

In typical Google fashion, they released another kick-ass service without any marketing or promotion. This time, it's a free 411 service called GOOG 411. It's a beautiful thing for cell phone users who are accustomed to paying upwards of $2 through their carrier. This service has actually been around for over a year, but very few people have heard of it, so I thought I'd help spread the word.

Here's how it works:

  1. Dial 1-800-GOOG-411
  2. State the Location and Business Type
  3. Connect to the Business for Free

You don't have the luxury of speaking to a real person, but the program is very accurate and easily recommended.

For more information and a video, visit the official page:


CSS Tricks: IE6 "min-height" Hack

| Posted by Peter Schultheiss on January 9th, 2009 at 11:53 am

It's very useful to be able to specify a minimum height for an HTML container. Unfortunately, IE6 does not properly support the min-height attribute. This frustrated me for a long time, but there's a solution! The following example is simple, valid and just plain works.

Say you want to enforce a minimum height of 200px on a container, simply add the following code to your identity or class:

min-height: 200px;
height: auto !important;
height: 200px;

That's all there is to it. I didn't come up with this on my own, so a special thanks goes to Dustin Diaz for publishing this hack.


Happy Holidays!

| Posted by Peter Schultheiss on December 24th, 2008 at 09:32 am

We'd like to wish our clients, friends and family a wonderful holiday season. After a long year, we're enjoying some time off and will return to work on January 2nd, 2009!


Zend Framework Version 1.7 Supports Adobe AMF, jQuery, Twitter, etc.

| Posted by Peter Schultheiss on November 19th, 2008 at 01:55 pm

The least release of the Zend Framework (Version 1.7) provides a number of new features, bug fixes and performance enhancements.

It seems that Zend is concentrating on Rich Internet Applications (RIAs) in this release as they are now providing support for Adobe's Action Message Format (AMF) which allows developers to easily share data between PHP applications and Flash (including Flex and AIR). While I haven't had the opportuity to test this out personally, I'm sure it will be a huge time saver for our developers.

Version 1.7 will also offer integration with jQuery's AJAX library. This is great for our team as we already include the jQuery library on all of our projects. In addition to outstanding AJAX support, jQuery's lightweight code base is great for HTML document traversing, event handling and animating.

Zend has also provided us with a little goodie that will make it possible for developers to add Twitter to their site without requiring the Twitter interface. Twitter is making a big impact on the Web so I'm glad that this service is available to developers.

Finally, I'd like to mention that the Zend has made done some fine tuning to improve performance. You can expect a 25% to 50% improvement in load times by upgrading your Zend library. This could be the best enhancement of all.

Thanks to the entire Zend community for making this new release available!

< Previous | 1 | 2 | 3 | Next >

Recent Projects
Our Services
Follow Us