2008/06/03

Hosting

This is just a quick message to let everyone know that we are now providing select web hosting. We have a virtual private server with cPanel, powered by Network Redux. We plan to migrate existing clients over to our environment as well as offer hosting to new clients and our friends.

By running our own service we should be able to offer an uncommon level of support and circumvent the pitfalls of unpredictable shared hosting. Please contact us at info@firefallpro.com with any questions. We look forward to raising the bar in a new field.

Labels: , ,

2008/06/02

Full Window Flash, Done Right

So you want to have Flash take up 100% of a browser window, but that's not enough, it also has to maintain a minimum size. This will give Flash the ability to expand and contract as the user resizes the window, but if they make it too small scroll bars will appear. Achieving this involves a multistep process in order to properly support the most browsers (Safari, Firefox, IE 5.5 through 7).

Step 1: Create Your Container HTML File

Starting out with a HTML 4.01 Strict file is essential in creating a consistent experience. It's time to get used to conforming to standards unless you want to mess around with multiple box models. No, you cannot use XHTML, no one should use it. Almost no one serves it properly and IE 6 has no clue what application/xml is. All you'll do is force IE to render in quirks mode and use its box model.

Here is the start of a HTML 4.01 strict document as generated by BBEdit.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Untitled</title>
<meta name="generator" content="BBEdit 8.7">
</head>
<body>

</body>
</html>


Step 2: Embed Your Flash with SWFObject 2.0

SWFObject 2.0 is a free JavaScript library that provides the ability to uniformly embed Flash while maintaining standards compliance and cross-browser support. I strongly urge you to check out the documentation as this article won't go into any depth about its use.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Untitled</title>
<meta name="generator" content="BBEdit 8.7">
<script src="js/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
swfobject.registerObject("flash_holder","7.0.19","swf/expressInstall.swf");
//-->
</script>
</head>
<body>
<div id="content">
<object id="flash_holder" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" style="overflow: hidden;">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<param name="scale" value="noscale">
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="flash.swf" width="100%" height="100%">
<param name="quality" value="high">
<param name="scale" value="noscale">
<!--<![endif]-->
<div>Adobe Flash is required to view this website. Please <a href="http://www.adobe.com/go/EN_US-H-GET-FLASH/" onclick="window.open(this.href); return false;">install</a> it and reload this page.</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>


Between the head tags the SWFObject JavaScript file is referenced, followed by the function call itself. Between the body tags two nested objects are used along with some IE conditional comments. If none of this makes any sense, you probably still need to read the SWFObject documentation. The important thing is to set the width and height of the both objects to 100%.

Stopping here would create a nicely embedded Flash file that will resize with the window. Though a little CSS needs to be added to make it properly fill the window.

Step 3: The CSS

CSS needs to be added to make sure the Flash fills the entire window. There are a variety of issues with full window content, the specifics which I no longer recall, so you'll just have to trust me for the most part.

Add within the head tags the following CSS:
 <style type="text/css">
<!--
html,
body,
div#content {
width: 100%;
height: 100%;
}

body {
padding: 0;
margin: 0;
background-color: #FFFFFF;
}

object { margin-bottom: -4px; }
-->
</style>


Now the Flash should take up the entire window. Though this doesn't yet solve the problem of enforcing a minimum size when a user resizes the window. The user could shrink the window down and miss important elements, but Flash has no way of telling the browser that needs to maintain a certain size. A little CSS is all it takes to address that in modern browsers.
 <style type="text/css">
<!--
html,
body,
div#content {
width: 100%;
height: 100%;
}

body {
padding: 0;
margin: 0;
background-color: #FFFFFF;
}

div#content,
object#flash_holder {
min-width: 1000px;
min-height: 750px;
}


object { margin-bottom: -4px; }
-->
</style>

There is some over-specification in there because of a Safari bug.

I purposefully said modern browsers, because IE 6 and below have no idea what min-width or min-height even is. Chances are forgoing IE 6 support is not a likely option.

Step 4: Making Up for It with JavaScript

Even though IE 6 doesn't support the CSS that would make this process complete doesn't mean it has to get any more difficult. I created a JavaScript function called minsize()* to emulate the absent behavior.
<head>
...
<script src="js/minsize.js" type="text/javascript"></script>
...
</head>

The function takes the ID of the element you want to set minimum dimensions to, followed by the width, then the height. It should be wrapped in a IE conditional statement and placed at the end of the document before the closing body tag.
<!--[if lte IE 6]>
<script type="text/javascript">
minsize('content',1000,750);
</script>
<![endif]-->


*Please do not redistribute this file. The credits within need to remain intact. I also ask to be notified of any changes or improvements so I can update and repost the file as needed.

Step 5: Dealing with "Click to Activate"

Certain versions of IE will display a message around a Flash embed saying that it must be clicked to activate. This is due to that whole patent mess. Microsoft eventually licensed the patent so not every version of IE is effected. This can also be solved with another JavaScript workaround that should be included at the end of the document before the closing body tag, wrapped in IE conditional comments.
<!--[if lte IE 7]>
<script src="js/clicktoactivate.js" type="text/javascript"></script>
<![endif]-->


Step 6: Putting It All Together

With everything put together Flash should not only take up the entire window, but maintain minimum widths in most browsers, at least the ones I've tested (Safari, Firefox, IE 5.5 through 7.). That should be just about everyone.

Here is what it all looks like together:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Untitled</title>
<meta name="generator" content="BBEdit 8.7">
<style type="text/css">
<!--
html,
body,
div#content {
width: 100%;
height: 100%;
}

body {
padding: 0;
margin: 0;
background-color: #FFFFFF;
}

div#content,
object#flash_holder {
min-width: 1000px;
min-height: 750px;
}

object { margin-bottom: -4px; }
-->
</style>
<script src="js/minsize.js" type="text/javascript"></script>
<script src="js/scripts.js" type="text/javascript"></script>
<script src="js/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
swfobject.registerObject("flash_holder","7.0.19","swf/expressInstall.swf");
//-->
</script>
</head>
<body>
<div id="content">
<object id="flash_holder" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" style="overflow: hidden;">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<param name="scale" value="noscale">
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="flash.swf" width="100%" height="100%">
<param name="quality" value="high">
<param name="scale" value="noscale">
<!--<![endif]-->
<div>Adobe Flash is required to view this website. Please <a href="http://www.adobe.com/go/EN_US-H-GET-FLASH/" onclick="window.open(this.href); return false;">install</a> it and reload this page.</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
<!--[if lte IE 7]>
<script src="js/clicktoactivate.js" type="text/javascript"></script>
<![endif]-->
<!--[if lte IE 6]>
<script type="text/javascript">
minsize('content',1000,750);
</script>
<![endif]-->
</body>
</html>


I hope you've enjoyed scrolling to the end of this document as much as I did writing it. Here are the referenced files:

Completed HTML
minsize.js (1.0.001)
clicktoactivate.js
SWFObject

Please send me comments on how I can improve this process or minsize.js. I will try to keep this document up-to-date and expand it if necessary.

Labels: , , , , , ,

2008/05/16

Take that down and I will be done with craigslist.

Oh the audacity... A response from Mr. Shawn G Hill of Superior Design Enterprises!


From: shawn@sdeonline.us
Subject: Blog Comments
Date: May 9, 2008 10:08:17 PM EDT
To: info@firefallpro.com

Hello,

I noticed today that you have posted an extremely unnecessary and insulting comment about my company.

I do not have the time to read every ad in the WEB DESIGN category so I have a bot scan that category looking for new postings.

That blog post could hurt my small company. I wasn’t trying to piss you off. I was just trying to get to clients looking for web design help.

I will make a deal with you. Take that down and I will be done with craigslist.

Be Good,
Shawn G Hill
http://www.sdeonline.us

Labels:

2008/05/08

Facebook Rehab

So, I read this article today regarding "adults" and "facebook" and making this site worth your time. Like most 20-somethings, this website came out while I was still at NYU. In my post-collegiate life, one struggles to cope with the addiction that remains as part of a social-environment which, in all honesty, I'm not a part of anymore. I don't live in the dorms, attend classes, or go to club events. I work full-time. I've assumed some responsibility which didn't exist in college.

One thing however, remains the same. That is the severe addiction to Facebook. 

Why oh why? Is it the chronic newsfeed that tells me what everyone is up to? Or the status message on the right-hand toolbar that updates me on my "friend"s moods? Or perhaps playing Scrabble with my roommate across town while we sit at our desks at work?

The part that bothers me though is that I find its become extraordinarily competitive. Which friend is the most in-touch? How many people are going to Molly's party? Wow, she just commented on Sarah's page, she and her must still be close friends. Why aren't I Sarah's close friend? Tim just got a new job- how did he manage to land that gig with that degree? You subconsciously start to qualify yourself based on the actions of others which as so conveniently and constantly fed to you by your home screen newsfeed. Of course, you could hide it. But its like a gory train wreck, you have to know what's happening. 

It becomes this passive aggressive way to compete, stalk people, and assess your own value.  I wish I could just say no! 

Until then... we all exist in internet glass houses with everyone else watching and weighing in on our lives. 

Is%20Facebook%20worth%20your%20time.pdf

2008/04/19

BlogSpot SPAM Heuristics

Like many people I too get a lot of SPAM containing links to BlogSpot pages. The whole point is for a user to see a fairly trustworthy domain in an e-mail and click on it, then get quickly redirected to the intended site. I always thought it was strange because while the e-mails can not be stopped, Google could perform heuristics based scanning of the BlogSpot pages for questionable HTML and JavaScript.

Taking a few minutes, I decided to visit one of the BlogSpot SPAM sites with JavaScript off. I fully expected to see an instance of window.location, instead it was similar to:

document.write("<meta content='0;URL=http://www.example.com/?"+location.search.substring(1)+"' http-equiv='refresh'/>");

The page also was for the most part blank. It wouldn't be much of a stretch to say that many of the other BlogSpot SPAM pages were employing similar methods. I attempted to find a Google Search that would let me search only within site source code, but was unable to.

It is my hope that within Google either efforts to do this are already underway or could be considered. Even if just given the right starting point I'd be glad to help come up with a set of heuristics to quickly flag-out these sites. If anyone reading this knows of search engine that is capable of doing HTML source searching, let me know.

Labels: , , ,

2008/04/16

Recent Illiteracy Winner: Superior Design Enterprises

Many thanks to Shawn Hill at Superior Design Enterprises (www.sdeonline.us) for participating in our illiteracy contest. They glossed over our threat to any service providers that contacted us in reference to our recent job posting. They also ignored the corresponding Craig's List flag.

So thanks for playing. I hope some of your potential clients get to read this, and you seek an education.

Labels:

2008/04/02

Another Winner

Yes folks, we have another winner in the "I can't read challenge." As I mentioned in the previous post, our recent job description posted here and on Craig's List has a brief disclaimer:

"I will personally gut whoever contacts us with staffing or outsourcing solutions."

I'd like to personally congratulate Cosmos Creative Services found at www.cosmoscreatives.com. So naturally the person or bot ignored my warning and decided, "hey I'll e-mail them anyway." The message even starts out with this audacious opener:

After browsing through you craigslist ad, I believe our services match the criteria of your requirement. Please give us 2 minutes to brief you a little about us...


If you'd like to send them your thoughts please e-mail salescosmos@cosmoslearnings.com or call 828-338-2122. I'm sure they'd be happy to hear from you, just like I was happy to hear about them and their amazing services. If you do happen to speak to someone over there please be sure to let them know how you found out about them and their laser like precision.

If you would like to know more about Cosmos Creative Services please address your concerns to:


Gaurav Aidasani
60 Mass Ave
Boston, MA 02115
gauravdo@yahoo.co.in
857-919-6900

- Source: Whois


Thank you again Cosmos Creative Services, without people like you we wouldn't have awards like this and bans on lead paint.

Labels: