<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Cyclonic Studios Blog</title>
	
	<link>http://www.cyclonicstudios.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 30 Aug 2009 21:24:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CyclonicStudiosBlog" /><feedburner:info uri="cyclonicstudiosblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Targeting Browsers (Namely the Different Versions of IE) with Only CSS</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/JQhi8-YRKk8/</link>
		<comments>http://www.cyclonicstudios.com/web/targeting-browsers-namely-the-different-versions-of-ie-with-only-css/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 19:07:28 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[strategies]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.cyclonicstudios.com/?p=150</guid>
		<description><![CDATA[Internet Explorer 6 has been in use for a whopping eight years, during which time the internet has grown both in size and in usability. So here we are, with 25% of people still using IE6 which hardly even begins to support modern CSS techniques.

For a long time, designers have found different ways to target [...]]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer 6 has been in use for a whopping eight years, during which time the internet has grown both in size and in usability. So here we are, with 25% of people still using IE6 which hardly even begins to support modern CSS techniques.<br />
<br />
For a long time, designers have found different ways to target IE6 and its slightly improved (but still seriously lacking) predecessor, IE7, and feed them different CSS to fix any bugs that the browsers have with normal, up-to-date styling. A popular trick is to use IE&#8217;s conditional comments to give IE6 and/or IE7 a different stylesheet. This works fine, except that it means that you need to make two stylesheets for your designs. There is a way that is less widely known that exploits the star-html hack combined with CSS 2.1  selectors to differentiate between IE6 and IE7. It looks like this:<br />
</p>
<pre><code class="css">
element {
/* Standards-Compliant Properties Here
}

* html element {
/* IE6 Properties Here
}

*+html element {
/* IE7 Properties Here
}
</code></pre>
<p>
Basically, IE6 and IE7 both think that there is an element above the html element, which is nonexistent in other browsers. So the <code>* html</code> selector is used to target IE6 and 7. To single out IE7, a CSS 2.1 selector (<code>*+html</code>) which is unsupported by IE6 can be used.<br />
<br />
The CSS-only technique is a lot less of a pain than using a separate ie6.css file for all of your hacks. Anyway, that&#8217;s just a helpful hint I just figured out.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/JQhi8-YRKk8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/targeting-browsers-namely-the-different-versions-of-ie-with-only-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/targeting-browsers-namely-the-different-versions-of-ie-with-only-css/</feedburner:origLink></item>
		<item>
		<title>Web Design From Scratch’s Anti-Spam Method</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/K1VytvaI6dQ/</link>
		<comments>http://www.cyclonicstudios.com/web/web-design-from-scratchs-anti-spam-method/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 04:30:03 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[strategies]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.cyclonicstudios.com/?p=133</guid>
		<description><![CDATA[I just wrote a post about how to make sure that someone using your contact form is human, which utilized a validation image. While this is effective, it requires the user to spend an annoying 10 seconds deciphering the text and typing it in. Web Design From Scratch has a very clever solution.

The trick is [...]]]></description>
			<content:encoded><![CDATA[<p>I just wrote a post about how to make sure that someone using your contact form is human, which utilized a validation image. While this is effective, it requires the user to spend an annoying 10 seconds deciphering the text and typing it in. <a href="http://www.webdesignfromscratch.com/">Web Design From Scratch</a> has a very clever <a href="http://www.webdesignfromscratch.com/javascript/human-form-validation-check-trick.php">solution</a>.<br />
<br />
The trick is to use javascript to make sure that the user is interacting with the form, by waiting for the user to focus or click on the form itself. Once it sees that the form has been interacted with in a human-like way, it sets a flag in a hidden input field. If the person browsing is not using javascript, then a <code>&lt;noscript&gt;</code> tag is used to show a normal CAPTCHA form which is checked by PHP only if the other input flag returned false.<br />
<br />
Sure, there are other ways (the &#8220;hidden&#8221; empty input field) that work just fine, but this is certainly a clever way of going about it. It exploits a real difference between spambot and human.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/K1VytvaI6dQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/web-design-from-scratchs-anti-spam-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/web-design-from-scratchs-anti-spam-method/</feedburner:origLink></item>
		<item>
		<title>CushyCMS: Not Much, but Great at What it Does</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/igtHUjXPVBU/</link>
		<comments>http://www.cyclonicstudios.com/web/cushycms-not-much-but-great-at-what-it-does/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 17:34:35 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[cool websites]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.cyclonicstudios.com/?p=129</guid>
		<description><![CDATA[I am in the process of redesigning/remaking a site for a non-profit organization. Their site is, as of now, a collection of static HTML pages which are unintelligible to the average non-profit worker. On top of wanting a new look for their site, they are looking for a way to edit their pages&#8217; content without [...]]]></description>
			<content:encoded><![CDATA[<p>I am in the process of redesigning/remaking a site for a non-profit organization. Their site is, as of now, a collection of static HTML pages which are unintelligible to the average non-profit worker. On top of wanting a new look for their site, they are looking for a way to edit their pages&#8217; content without screwing up all the HTML and without having to directly edit any files at all. They have no need for a blog, an online application, or anything that is more than just blurbs and information.<br />
<br />
I could use edit forms combined with PHP and a database in a password protected area of the site; I could use an in-depth content management system like Drupal to handle the editing user interface for me. But all I need is a way to change the content of the HTML pages every once in a while.<br />
<br />
The perfect solution is <a href="http://www.cushycms.com">CushyCMS</a>. CushyCMS is actually hardly a content management system. All it is, is a way to edit specific parts of an HTML file using a WYSIWYG editor. You don&#8217;t have to install anything on your site; in fact, all you have to do is add <code>class="cushycms"</code> to the tags containing parts of the page you want editable. The coolest thing is that you can add the class to any type of tag (div, p, h1, span, even image) and have it be editable. Then you go to CushyCMS&#8217;s website, give it your FTP information, and you can start editing your content right away.<br />
<br />
A great feature of Cushy is that you can add &#8220;editors&#8221; who can edit pages of your choice and have their own login. So you can give all the clients&#8217; workers the ability to edit their own pages hassle-free, without worrying about all the technical stuff like FTP and HTML.<br />
<br />
CushyCMS makes it impossibly easy to give your site client-friendly capabilities without using any back-end coding at all. I would recommend using it to anyone that is making a site for clients who plan to only change little bits of content on their site at a time (a &#8220;Current News Story&#8221; page perhaps).<br />
<br />
As a CMS, Cushy is no Wordpress, but it is great at making content easy for clients to edit.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/igtHUjXPVBU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/cushycms-not-much-but-great-at-what-it-does/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/cushycms-not-much-but-great-at-what-it-does/</feedburner:origLink></item>
		<item>
		<title>Validating a Contact Form with PHP and the GD Library</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/q6m-KWB836w/</link>
		<comments>http://www.cyclonicstudios.com/php/validating-a-contact-form-with-php-and-the-gd-library/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:03:12 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.cyclonicstudios.com/?p=119</guid>
		<description><![CDATA[Sorry about my last post, I was misinformed about the security of the $_SESSION superglobal. This time we&#8217;re going to make a user validation box to make sure that it is a human sending the contact request (not a spambot). This is the most reliable way to prevent spam.

To follow this tutorial, you&#8217;ll need a [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry about my <a href="http://www.cyclonicstudios.com/php/making-a-secure-contact-form-with-php-and-jquery/">last post</a>, I was misinformed about the security of the $_SESSION superglobal. This time we&#8217;re going to make a user validation box to make sure that it is a human sending the contact request (not a spambot). This is the most reliable way to prevent spam.<br />
<br />
To follow this tutorial, you&#8217;ll need a free font (make sure its FREE, not free for personal use) to use in our validation image. There probably aren&#8217;t going to be many spambots with image-to-text capabilities, but try to find a font that isn&#8217;t too easily interpreted by a computer. I used <a href="http://www.dafont.com/acidic.font">Acidic</a>, which is fairly readable for a human but very difficult for a computer to interpret.<br />
<br />
We&#8217;re going to start out by making our form, just with simple HTML. In the form we&#8217;re going to have a text box for the contacter&#8217;s email, a textarea for the message, a validation image and text box, and submit button.<br />
</p>
<pre><code class="html">
&lt;form id=&quot;contact&quot; name=&quot;contact&quot; method=&quot;post&quot; action=&quot;contact.php&quot;&gt;
&lt;h2&gt;Contact Me&lt;/h2&gt;

	Email:
&lt;input type=&quot;text&quot; name=&quot;contact_email&quot; id=&quot;contact_email&quot; /&gt;
	&lt;textarea name=&quot;contact_text&quot; id=&quot;contact_text&quot;&gt;

	&lt;/textarea&gt;
	&lt;img src=&quot;valid_image.php&quot; width=&quot;100&quot; height=&quot;30&quot; alt=&quot;Type this text in the box below.&quot;/&gt;
&lt;input type=&quot;text&quot; name=&quot;validate&quot; /&gt;
&lt;input type=&quot;submit&quot; id=&quot;contact_submit&quot; name=&quot;contact_submit&quot; value=&quot;Send&quot; /&gt;
&lt;/form&gt;

</code></pre>
<p>
As you can see, the image is actually a PHP file, valid_image.php. In this file, we are going to come up with a random validation string, store it in a session variable, and draw an image with the text in the font we chose. For this to work, you need to give the <code>imagettftext()</code> a relative path to the font from where valid_image.php is saved. If it is the same directory, than just &#8220;yourfont.ttf&#8221; will do.<br />
</p>
<pre><code class="php">
&lt;?php
session_start();
header(&quot;Content-type: image/png&quot;);
// make the random 5-character string
$rand = &quot;&quot;;
for ($i=0;$i&lt;5;$i++) {
	$rand .= chr(rand(97,122));
}
$_SESSION['validate'] = $rand;
$width = 100;
$height = 30;
$image = @imagecreate($width,$height);
$bgcolor = imagecolorallocate($image,255,255,255); // put your background color here
$textcolor = imagecolorallocate($image,0,0,0); // put your text color here
imagefilledrectangle($image,0,0,$width,$height,$bgcolor);
imagettftext($image,25,0,0,$height,$textcolor,&quot;acidic.ttf&quot;,$rand);
imagepng($image);
imagedestroy($image);
?&gt;
</code></pre>
<p>
So now we have an image with the string, and a session variable holding the string. Now, when the request is sent to contact.php, we will compare the session variable to the value given in the form. If they are the same, then the contacter is a human that could read the image.<br />
<br />
Your contact.php should be saved in the same directory as your form (or you could edit the action attribute of the form), and it should look like this:<br />
</p>
<pre><code class="php">
&lt;?php
session_start();
if (!empty($_POST['validate'])) {
if ($_POST['validate'] == $_SESSION['validate']) {
	unset($_SESSION['validate']);
	if (!empty($_POST['contact_text']) &amp;#038;&amp;#038; !empty($_POST['contact_email'])) {
		$to      = 'webmaster@example.com';
		$subject = 'Contact Request from '.$_POST['contact_email'];
		$message = $_POST['contact_text'];
		$headers = 'From: '.$_POST['contact_email'].&quot; rn&quot; .
			'Reply-To: '.$_POST['contact_email'].&quot;rn&quot; .
			'X-Mailer: PHP/' . phpversion();
		mail($to, $subject, $message, $headers);
		echo &quot;Thanks for contacting me!&quot;;
	} else {
		echo &quot;Please enter both your email and a message.&quot;;
	}
} else {
	echo &quot;Your validation code was incorrect.&quot;
}
}
?&gt;
</code></pre>
<p>
<a href="http://stevelove.org">Steve Love</a> gave me a good tip to unset the session variable after use so that it could not be reused. Thanks!</p>
<p>This tutorial was mainly about the validation technique, but if you want to make this form asynchronous, you can follow the last few steps of my <a href="http://www.cyclonicstudios.com/php/making-a-secure-contact-form-with-php-and-jquery/">last tutorial</a>, to implement the jQuery and AJAX.<br />
<br />
Thanks for reading!</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/q6m-KWB836w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/php/validating-a-contact-form-with-php-and-the-gd-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/php/validating-a-contact-form-with-php-and-the-gd-library/</feedburner:origLink></item>
		<item>
		<title>Making a Secure Contact Form with PHP and jQuery</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/P3udURZbGqo/</link>
		<comments>http://www.cyclonicstudios.com/php/making-a-secure-contact-form-with-php-and-jquery/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 17:11:51 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=104</guid>
		<description><![CDATA[Its always nice when a site gives you an opportunity to contact the webmaster. You should always make sure, when you are building a website, to give your users opportunity to do this. One way to go about doing this is just giving out your email address. Unfortunately, putting your email address up on your [...]]]></description>
			<content:encoded><![CDATA[<p>Its always nice when a site gives you an opportunity to contact the webmaster. You should always make sure, when you are building a website, to give your users opportunity to do this. One way to go about doing this is just giving out your email address. Unfortunately, putting your email address up on your site makes it easy form spam bots to find it and start sending you all sorts of emails. The best way is to make a contact form.</p>
<p><br class="spacer_" /></p>
<p>To follow this tutorial, you&#8217;ll need the <a href="http://jquery.com/">jQuery Library</a>.</p>
<p><br class="spacer_" /></p>
<p>Let&#8217;s start out web 1.0, with just a simple form with a submit button. You&#8217;ll want a simple HTML form that looks like this:</p>
<p><code lang="html4strict"><br />
<form id="contact" action="contact.php" method="post">
<h2>Contact Me</h2>
<p>	Email:</p>
<input id="contact_email" name="contact_email" type="text" />
	<textarea id="contact_text" name="contact_text"><br />
	</textarea></p>
<input id="contact_submit" name="contact_submit" type="submit" value="Send" />
</form>
<p></code></p>
<p><br class="spacer_" /></p>
<p>So now that we have a form, we&#8217;ll need a PHP page to process that form. What we&#8217;ll do is take the message, put it into an email and email it to you (you&#8217;ll need to put your email, or whatever email you want to receive contact requests). Put this code into a &#8216;contact.php&#8217; file:</p>
<p><br class="spacer_" /></p>
<p><code lang="php"><br />
<?php<br />
	if (!empty($_POST['contact_text']) &#038;&#038; !empty($_POST['contact_email'])) {<br />
		$to = 'webmaster@example.com';<br />
		$subject = 'Contact Request from '.$_POST['contact_email'];<br />
		$message = $_POST['contact_text'];<br />
		$headers = 'From: '.$_POST['contact_email']." \r\n" .<br />
			'Reply-To: '.$_POST['contact_email']."\r\n" .<br />
			'X-Mailer: PHP/' . phpversion();<br />
		mail($to, $subject, $message, $headers);<br />
		echo "Thanks for contacting me!";<br />
	} else {<br />
		echo "Please enter your email and a message.";<br />
	}<br />
?><br />
</code></p>
<p><br class="spacer_" /></p>
<p>Basically, that code checks to make sure that both <code>$_POST['contact_email']</code> and <code>$_POST['contact_text']</code> are defined, and then it constructs an email to you (webmaster@example.com). In the message is the text that they entered. Then it prints a friendly message.</p>
<p><br class="spacer_" /></p>
<p>The only problem with what we have so far is that the contact form is very vulnerable to automatic spam. Not quite as bad as putting your email out there, but it is still pretty easy for spammers to just send a request to your &#8216;contact.php&#8217; page and bombard you with emails. There is a way to prevent this from happening. It involves using PHP&#8217;s $_SESSION superglobal to make sure that the contact-er is using your contact form, and not just a single request to contact.php. You need to add a little PHP code to your contact form to make this work. Because we are going to use the session superglobal, we need to set up the session at the top of your pages. In both the page holding the form AND contact.php, put this code at the top:</p>
<p><code lang="php"><br />
<?php session_start(); ?><br />
</code></p>
<p><br class="spacer_" /></p>
<p>Now, what we&#8217;re going to do is make a random string (an md5 hash of a random number between 1 and 10000), and put it into the form as a &#8216;hidden&#8217; input field. We also store the hash in a session variable, so we can compare the two in contact.php. Here&#8217;s what your form should look like now.</p>
<p><code lang="php"></p>
<form id="contact" name="contact" method="post" action="contact.php">
<h2>Contact Me</h2>
<p>	Email:<br />
<input type="text" name="contact_email" id="contact_email" />
	<textarea name="contact_text" id="contact_text"></p>
<p>	</textarea><br />
	<?php<br />
	$randhash = md5(rand(0,10000));<br />
	$_SESSION['contact_key'] = $randhash;<br />
	?></p>
<input type="hidden" name="contact_key" value="<?php echo $randhash; ?>" /></p>
<input type="submit" id="contact_submit" name="contact_submit" value="Send" />
</form>
<p></code></p>
<p><br class="spacer_" /></p>
<p>(Notice the PHP lines and the new &#8216;input&#8217; tag).</p>
<p>And now in contact.php, we need to make sure that the two keys are the same. This is what contact.php should look like:</p>
<p><code lang="php"><br />
<?php<br />
session_start();<br />
if (isset($_POST['contact_key'])) {<br />
	if ($_POST['contact_key'] == $_SESSION['contact_key']) {<br />
		if (!empty($_POST['contact_text']) &#038;&#038; !empty($_POST['contact_email'])) {<br />
			$to      = 'webmaster@example.com';<br />
			$subject = 'Contact Request from '.$_POST['contact_email'];<br />
			$message = $_POST['contact_text'];<br />
			$headers = 'From: '.$_POST['contact_email']." \r\n" .<br />
				'Reply-To: '.$_POST['contact_email']."\r\n" .<br />
				'X-Mailer: PHP/' . phpversion();<br />
			mail($to, $subject, $message, $headers);<br />
			echo "Thanks for contacting me!";<br />
		} else {<br />
			echo "Please enter your email and a message.";<br />
		}<br />
	}<br />
}<br />
?><br />
</code></p>
<p><br class="spacer_" /></p>
<p>Great! Now we have a functioning contact form. The only problem is, when people use the form, they are sent to a boring page with only text in it. So let&#8217;s make the form asynchronous with javascript. jQuery javascript, actually. The script will wait for the form submit button to be pushed, and then will use AJAX to send a request to contact.php, thus sending the contact request. When that finishes, it will append the response text to the form to give the contact-er a result (good if all fields were filled in, bad if they forgot their email or a message). All you need to do is put a little bit of code into your page with the form.</p>
<p><code lang="javascript">contactform = $('form#contact');<br />
contactform.submit(function() {<br />
	$.post('/contact.php', $(this).serialize(), function(data) {<br />
		$('form#contact').append("<br />"+data);<br />
	});<br />
	return false;<br />
});<br />
</code></p>
<p>So there we go. Somebody can, with javascript enabled, just press the send button and send the contact request to your email asynchronously, without your putting your email out to be picked up by spam bots. The best thing about this is that when somebody isn&#8217;t running javascript in their browser, they will still be able to use the form effectively.</p>
<p>Obviously you&#8217;d want to style up your form and maybe change around the &#8217;submit&#8217; event to make it a little more stylish, but we have here a solid, secure AJAX-PHP contact form which will help make your site more user-friendly and accessible.</p>
<p>UPDATE: If you want to make sure that your form is validated, check out <a href="http://www.cyclonicstudios.com/php/validating-a-contact-form-with-php-and-the-gd-library/">this</a> tutorial. </p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/P3udURZbGqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/php/making-a-secure-contact-form-with-php-and-jquery/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/php/making-a-secure-contact-form-with-php-and-jquery/</feedburner:origLink></item>
		<item>
		<title>Taking on a Game Development Project</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/ffMOMfN3Poo/</link>
		<comments>http://www.cyclonicstudios.com/flash/taking-on-a-game-development-project/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 03:28:37 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[strategies]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=93</guid>
		<description><![CDATA[
I just started making a flash game, my first one in a while, and my first by Cyclonic Studios. I decided that I would organize this project as well as I could. My previous games, while not being very good (you can play one here), were also terribly unorganized and I found that after I [...]]]></description>
			<content:encoded><![CDATA[<p><br class="spacer_" /></p>
<p>I just started making a flash game, my first one in a while, and my first by Cyclonic Studios. I decided that I would organize this project as well as I could. My previous games, while not being very good (you can play one <a href="http://www.itch.com/games/wires/" target="_blank">here</a>), were also terribly unorganized and I found that after I had finished them, it was very hard for me to go back and change things.</p>
<p><br class="spacer_" /></p>
<p>So this time, I am putting loads of effort into designing everything to be well and sensibly made. Here are some things that I am focusing on.</p>
<p><br class="spacer_" /></p>
<h3>1. A Solid Game Idea</h3>
<p>It is of upmost importance to know what your doing well before you start. You should know how the game is going to look, how the player is going to play the game, and how you are going to make everything work. Before you sit down at your computer and start coding away, you should make sure that you know those three things. How things will <strong>look</strong>, <strong>play</strong>, and <strong>work</strong>.</p>
<p><br class="spacer_" /></p>
<h3>2. A Solid Game Engine</h3>
<p>When you start coding your game, you have to decide how organized everything will be. I find that making a game engine is a good way to keep things organized. Here are a few musts for a game engine:</p>
<ul>
<li><strong>A Global Class. </strong>A Global class is great for object oriented programming and is basically a class that every single object you make has a reference to. With this in place, you can call functions and access global properties even from a remote object that couldn&#8217;t normally do these things. For instance, if the enemies in your game split into more enemies when they die, it would be useful if all you had to do was add a few lines to your enemy &#8220;die&#8221; code to add more enemies. Just a simple <code>global.makeEnemy(blah,blah,blah);</code> would do the trick, and also make it so that every single other instance of every other class could see that a new enemy was made.</li>
<li><strong>A UI Class. </strong>Just a class to handle all user interface stuff. When I&#8217;m making games, I use lots of code to make my interfaces faster and easier to manage. The UI class makes code-based interfaces much simpler, because you can easily show menus, pages, etc. with just a function call. Example: <code>ui.displayMenu(blah,blah);</code> or <code>ui.menu.addButton("Play",function() { play(); });</code> (I use that last one all the time; its surprisingly useful). And even if you don&#8217;t build most of your menus with code, a UI class also makes it easier to display menu sprites and movieclips.</li>
<li><strong>A Display Class. </strong>When you make a game with lots and lots of sprites, movieclips and bitmaps, a single class that draws all of them makes your code much cleaner. Its especially great for people like me who don&#8217;t want all their objects extending Sprites, which takes up more memory and is, in my opinion, a shortcut. Instead, you just have one class extending a sprite, Display.as. </li>
</ul>
<p><br class="spacer_" /></p>
<h3>3. A Solid Sense of Patience</h3>
<p>Once you&#8217;ve got your idea and your engine, its time to start making your game. I think that coding games is very enjoyable, but inevitably you&#8217;ll have some times when patience is crucial: fixing that bug, drawing this button, and doing everything else that just isn&#8217;t&#8230;well, fun.</p>
<p><br class="spacer_" /></p>
<p>Anyway, happy game development!</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/ffMOMfN3Poo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/flash/taking-on-a-game-development-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/flash/taking-on-a-game-development-project/</feedburner:origLink></item>
		<item>
		<title>CSS 2.1/3: Wouldn’t it be Great?</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/O6U14ReScKs/</link>
		<comments>http://www.cyclonicstudios.com/design/css-213-wouldnt-it-be-great/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 19:30:47 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=77</guid>
		<description><![CDATA[I would be one happy web designer if every single person on the web decided to leave Internet Explorer in favor of standard-compliant browsers like Firefox, Safari, Chrome, and even IE8.

A tooltip could be done easily, no javascript required:
a.tooltip:hover:after {
  display:block;
  position:absolute;
  top:-1em;
  content:attr(href);
  border:1px solid #000;
  background-color: #ccc;
}
(This [...]]]></description>
			<content:encoded><![CDATA[<p>I would be one happy web designer if every <em>single</em> person on the web decided to leave Internet Explorer in favor of standard-compliant browsers like Firefox, Safari, Chrome, and even IE8.</p>
<p><br class="spacer_" /></p>
<p>A tooltip could be done easily, no javascript required:</p>
<pre lang="css">a.tooltip:hover:after {
  display:block;
  position:absolute;
  top:-1em;
  content:attr(href);
  border:1px solid #000;
  background-color: #ccc;
}</pre>
<p>(This actually doesn&#8217;t work quite as well in Firefox 3.0, but it does in Safari and Chrome).</p>
<p>Instant Semantic Forms:</p>
<pre lang="css">input[type="text"] {
	border:2px solid #fcc;
}
label {
	cursor:pointer;
}
label:hover + input[type="text"], input[type="text"]:hover {
	border:2px solid #ccf;
}
input[type="text"]:focus {
	border:2px solid #aaf;
	background-color:#eef;
}</pre>
<p>With this XHTML:</p>
<pre lang="html4strict">
<form>
	<label for="text">Text:</label>
<input id="text" name="text" type="text" />
</form>
</pre>
<p>You should try that out in compliant browsers, its actually pretty neat.</p>
<p>Or say I wanted a semi-transparent background. One line:</p>
<pre lang="css">
.transparent_back { background-color:rgba(0,0,0,0.5); }
</pre>
<p>Or if I wanted a box with a border background image:</p>
<pre lang="css">
div.with_border {
	border-image: url(images/borderimage.png) 5 5 5 5 round round;
}
</pre>
<p>Just so you know, the code that is needed to do that for most browsers takes at least five elements or a really big image and three elements. The border image here can be an 11&#215;11 pixel square (two 5 pixels for the corners and 1px to be repeated on the sides) and just one element, making it easier on both the DOM and the bandwidth.</p>
<p><br class="spacer_" /></p>
<p>It is absolutely amazing how much easier fancy web design would be if we could actually use these techniques. Until then (I&#8217;m guessing 8-10 years), we&#8217;ll just have to stick with annoying hacks and javascript to do this for us. Oh, and if your reading this and using Internet Explorer, go to <a href="http://www.getfirefox.com/">getfirefox.com</a> or <a href="http://www.google.com/chrome/">google.com/chrome</a> to get the most out of the internet. CSS 3 all the way.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/O6U14ReScKs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/design/css-213-wouldnt-it-be-great/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/design/css-213-wouldnt-it-be-great/</feedburner:origLink></item>
		<item>
		<title>Topsy: A Cool Idea</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/TNu4rXnSEfk/</link>
		<comments>http://www.cyclonicstudios.com/web/topsy-a-cool-idea/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 22:05:10 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[cool websites]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=67</guid>
		<description><![CDATA[If you haven&#8217;t already, you should check out Topsy, a new search engine powered by tweets on Twitter. As opposed to using brute force and following links like Google and all the other search engines out there, Topsy parses every single tweet for links, and adds them to its database. So instead of giving you [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t already, you should check out <a href="http://topsy.com">Topsy</a>, a new search engine powered by tweets on Twitter. As opposed to using brute force and following links like Google and all the other search engines out there, Topsy parses every single tweet for links, and adds them to its database. So instead of giving you just the most relevant results (boring), like Google, Topsy dishes out the sites that the most people are talking about.</p>
<p><br class="spacer_" /></p>
<p>Topsy is where Twitter meets Digg, and I think there is nowhere that this site can go but up. It will be interesting to see what happens to it as Twitter becomes more and more widely used to spread websites.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/TNu4rXnSEfk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/topsy-a-cool-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/topsy-a-cool-idea/</feedburner:origLink></item>
		<item>
		<title>10 Great Sites for Learning Graphic Design</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/CilcI9C3gMY/</link>
		<comments>http://www.cyclonicstudios.com/web/10-great-sites-for-learning-graphic-and-web-design/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 17:31:19 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[graphic design]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=30</guid>
		<description><![CDATA[There are a lot of great websites out there with boatloads of information on beautiful web design. You probably know of a lot of them, but here are some of the best:

1. Smashing Magazine

Smashing Magazine is very popular among web designers and graphic designers alike. It makes sense, because the tutorials, freebies, and collections are [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of great websites out there with boatloads of information on beautiful web design. You probably know of a lot of them, but here are some of the best:</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.smashingmagazine.com/">1. Smashing Magazine</a></h3>
<p><img class="alignnone size-full wp-image-48" title="Smashing Magazine" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/smashingmag.png" alt="Smashing Magazine" width="253" height="92" /></p>
<p>Smashing Magazine is very popular among web designers and graphic designers alike. It makes sense, because the tutorials, freebies, and collections are consistently high-quality. Subscribing to Smashing Magazine is a great way to learn and get a lot from the web design community.</p>
<p><br class="spacer_" /></p>
<h3>2. <a href="http://net.tutsplus.com/">Nettuts</a>, <a href="http://psd.tutsplus.com/">Psdtuts</a> &amp; <a href="http://vector.tutsplus.com/">Vectortuts</a></h3>
<p><img class="alignnone size-full wp-image-58" title="Tuts Plus" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/tutsplus.png" alt="Tuts Plus" width="500" height="44" /><br class="spacer_" /></p>
<p>If your looking for tutorials on web or graphic design, the Envato Network&#8217;s Nettuts, Psdtuts and Vectortuts are the best place to start. They have practically endless amounts of tutorials on Photoshop, Illustrator, and Web Development.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.webdesignerdepot.com/">3. Webdesigner Depot</a></h3>
<p><img class="alignnone size-full wp-image-54" title="Webdesigner Depot" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/webdesignerdepot.png" alt="Webdesigner Depot" width="330" height="164" /></p>
<p>Webdesigner Depot is another site filled with articles written by people from the web design community. There are some great articles here about design, web development, graphics, and inspiration. There is, in my opinion, a little more variety in the posts here than on other sites.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://blog.spoongraphics.co.uk/">4. Blog.SpoonGraphics</a></h3>
<p><img class="alignnone size-full wp-image-50" title="Blog.SpoonGraphics" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/spoongraphics.png" alt="Blog.SpoonGraphics" width="242" height="152" /></p>
<p>Blog.SpoonGraphics is the blog of a very talented graphic web designer. Chris Spooner writes tutorials expaining most of what he knows. There are some really nice, detailed Illustrator tutorials on this blog, along with lots of freebies and collections.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://veerle.duoh.com/">5. Veerle&#8217;s Blog</a></h3>
<p><img class="alignnone size-full wp-image-53" title="Veerle's Blog" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/veerlesblog.png" alt="Veerle's Blog" width="336" height="124" /></p>
<p>Veerle&#8217;s Blog covers a very wide spectrum in terms of content. Everything from science to CSS tricks to architecture, Veerle&#8217;s Blog&#8217;s got it. Its a fun read, because you never really know what kind of thing will be published next.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.tutorial9.net/">6. Tutorial9</a></h3>
<p><img class="alignnone size-full wp-image-51" title="Tutorial9" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/tutorial9.png" alt="Tutorial9" width="256" height="88" /></p>
<p>Tutorial9 is a site dedicated to Photoshop, Photography, and Web/Blogging tutorials. All of the tutorials are very high quality, and there are tons of them. Tutorial9 also gives you access to lots of free resources, like icons, photos, and vector packs. A great site to subscribe to!</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.fudgegraphics.com/">7. FudgeGraphics</a></h3>
<p><img class="alignnone size-full wp-image-44" title="fudgegraphics" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/fudgegraphics.png" alt="fudgegraphics" width="537" height="57" /></p>
<p>FudgeGraphics is the blog of the talented graphic designer, Franz Jeitz. There are lots of freebies on this site, including brushes, textures and wallpapers. Franz also writes tutorials, focusing on photoshop, sharing some of his tricks. All of his articles are interesting and useful; a good read!</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.spoonfeddesign.com/">8. Spoonfed Design</a></h3>
<p><img class="alignnone size-full wp-image-49" title="spoonfed" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/spoonfed.png" alt="spoonfed" width="325" height="141" /></p>
<p>Spoonfed Design is a great site to look for tips, tricks and tutorials about illustrator, photoshop, freelancing, and web design. This is another great addition to your arsenal of tutorial sites. Featuring a daily inspiration and a community blog, SFD is a great site to always have your eye on.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://www.myinkblog.com/">9. My Ink Blog</a></h3>
<p><img class="alignnone size-full wp-image-45" title="myinkblog" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/myinkblog.png" alt="myinkblog" width="457" height="140" /></p>
<p>My Ink Blog is truly &#8220;a resource for all things graphic and web design.&#8221; Here there are tutorials, interviews, freebies, and some really interesting and intriguing articles. A very useful resource at My Ink Blog is Andrew Houle&#8217;s &#8220;MyInkTrail,&#8221; which is a great way to find new, helpful RSS feeds.</p>
<p><br class="spacer_" /></p>
<h3>And of Course, <a href="http://cyclonicstudios.com/">10. Cyclonic Studios</a></h3>
<p><img class="alignnone size-full wp-image-43" title="cyclonicstudios" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/cyclonicstudios.png" alt="cyclonicstudios" width="461" height="127" /></p>
<p>(I had to include some self-endorsement). I just started blogging a day ago, so there isn&#8217;t a ton here yet, but I promise for a post a day, whether it be inspiration, a collection like this, tip and tricks, or a tutorial. Drop by every once in a while, or you could subscribe to my feed and follow me on twitter to stay up to date!</p>
<p><br class="spacer_" /></p>
<p>Thanks for reading, I hope this helped you find some new sites about graphic design and web development. Later!</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/CilcI9C3gMY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/10-great-sites-for-learning-graphic-and-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/10-great-sites-for-learning-graphic-and-web-design/</feedburner:origLink></item>
		<item>
		<title>5 Simple Ways to Make an Ugly Website</title>
		<link>http://feedproxy.google.com/~r/CyclonicStudiosBlog/~3/aJ5salI_eTM/</link>
		<comments>http://www.cyclonicstudios.com/web/5-simple-ways-to-make-an-ugly-website/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 16:04:20 +0000</pubDate>
		<dc:creator>Cyclonic</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[graphic design]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://cyclonicstudios.com/?p=8</guid>
		<description><![CDATA[Hi, this is Graham. This is actually my first real entry, so subscribe to my feed, and share it in as many ways as you can (don&#8217;t worry, I&#8217;ve got links at the bottom).
Anyway, my first lesson is how to make a hideous website. There are plenty of very poorly designed sites out there. So [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, this is Graham. This is actually my first real entry, so subscribe to my feed, and share it in as many ways as you can (don&#8217;t worry, I&#8217;ve got links at the bottom).</p>
<p>Anyway, my first lesson is how to make a hideous website. There are plenty of very poorly designed sites out there. So here&#8217;s a couple tips to help you on your way to a really terrible-looking site.</p>
<p><span id="more-8"></span></p>
<h3>1. The more hues in your gradients, the better!</h3>
<p>Gradients than span across the color table generally detract from any color scheme you might have had. Oh, and its really handy because Photoshop comes packaged with a couple of these gradients.</p>
<div class="mceTemp">
<dl id="attachment_9" class="wp-caption alignnone" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-9" title="badgradients" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/badgradients.png" alt="Wide-Spectrum Gradients" width="500" height="300" /></dt>
</dl>
</div>
<div class="hr">&nbsp;</div>
<h3>2. <strong>Use gifs for all your images.</strong></h3>
<p>Nothing like a 256-color palette to make your website unattractive. Gifs use dithering to make the gradients appear smooth, but it is nothing like the perfect smoothness of a PNG.</p>
<div class="mceTemp">
<dl id="attachment_10" class="wp-caption alignnone" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-10" title="gifvspng" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/gifvspng.png" alt="Just admire the quality!" width="500" height="300" /></dt>
</dl>
</div>
<div class="hr">&nbsp;</div>
<h3>3. <strong>Use compressed JPEGs.</strong></h3>
<p>Compressed JPEGs look even worse than gifs. The compression algorithm gives JPEGs a signature fuzzy-outline look.</p>
<div class="mceTemp">
<dl id="attachment_11" class="wp-caption alignnone" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-11" title="compvsuncomp" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/compvsuncomp.png" alt="Quantity over Quality!" width="500" height="300" /></dt>
</dl>
</div>
<div class="hr">&nbsp;</div>
<h3>4. <strong>Make your text hard to read.</strong></h3>
<p>Content really only matters a little, right? So why not use fonts crunched together so tightly and so small you can&#8217;t read what they say?<br />
<span style="font-size: 4pt; font-stretch: -50; line-height: 4pt;">This content is actually very important, so its good that there are CSS properties that let us fit the most possible text into a small space; who cares if people need a microscope to read your text! Content really only matters a little, right? So why not use fonts crunched together so tightly and so small you can&#8217;t read what they say? This content is actually very important, so its good that there are CSS properties that let us fit the most possible text into a small space; who cares if people need a microscope to read your text! Content really only matters a little, right? So why not use fonts crunched together so tightly and so small you can&#8217;t read what they say? This content is actually very important, so its good that there are CSS properties that let us fit the most possible text into a small space; who cares if people need a microscope to read your text!</span></p>
<div class="hr">&nbsp;</div>
<h3>5. <strong>Use very overused fonts.</strong></h3>
<p>Millions of people use Comic Sans and Papyrus, why shouldn&#8217;t I?</p>
<p><img class="alignnone size-full wp-image-12" title="overused" src="http://cyclonicstudios.com/wp-content/uploads/2009/06/overused.png" alt="overused" width="500" height="100" /></p>
<div class="hr">&nbsp;</div>
<p>Make sure to use all these techniques in your next web design to make it as amateur as possible. Thanks for reading!</p>
<p>Disclaimer: I have a sarcastic sense of humor. The images used in this entry were meant to look really, really bad.</p>
<img src="http://feeds.feedburner.com/~r/CyclonicStudiosBlog/~4/aJ5salI_eTM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyclonicstudios.com/web/5-simple-ways-to-make-an-ugly-website/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.cyclonicstudios.com/web/5-simple-ways-to-make-an-ugly-website/</feedburner:origLink></item>
	</channel>
</rss>
