<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Tob Studios</title>
	<atom:link href="http://tobstudios.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tobstudios.com</link>
	<description>Building your web.</description>
	<lastBuildDate>Mon, 21 Jan 2013 20:22:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress:  Jquery&#8217;s $ variable</title>
		<link>http://tobstudios.com/2012/02/22/wordpress-jquerys-variable/</link>
		<comments>http://tobstudios.com/2012/02/22/wordpress-jquerys-variable/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 16:26:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=413</guid>
		<description><![CDATA[Your jQuery code is error free, everything should be running fine in your WordPress website, but it isn&#8217;t! You have noticed the &#8220;$ is not a function&#8221; error in your console. The problem isn&#8217;t your code, its the combination of &#8230; <a href="http://tobstudios.com/2012/02/22/wordpress-jquerys-variable/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Your jQuery code is error free, everything should be running fine in your WordPress website, but it isn&#8217;t! You have noticed the &#8220;$ is not a function&#8221; error in your console. The problem isn&#8217;t your code, its the combination of both jQuery and WordPress (more specifically prototype). Luckily its a quick fix, albeit tedious for alot of code.<span id="more-413"></span></p>
<h2>The Fix</h2>
<p>As previously mentioned the fix is actually quite simple. Just replace your &#8216;$&#8217; variable with &#8216;jQuery. This is known as Aliasing the jQuery namespace&#8221; See the example below.</p>
<h4>Before:</h4>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function () {
$(&quot;p&quot;).text(&quot;Your Code&quot;);
});
</pre>
<h4>After:</h4>
<pre class="brush: jscript; title: ; notranslate">
jQuery(document).ready(function () {
jQuery(&quot;p&quot;).text(&quot;Your Code&quot;);
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2012/02/22/wordpress-jquerys-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: jQuery the right way</title>
		<link>http://tobstudios.com/2012/02/02/wordpress-jquery-the-right-way/</link>
		<comments>http://tobstudios.com/2012/02/02/wordpress-jquery-the-right-way/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 16:10:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=418</guid>
		<description><![CDATA[Did you know that WordPress comes with the latest version of jQuery at the time of its release? While you can include jQuery into your template file manually, you may run into version conflicts and other broken features. Keep it &#8230; <a href="http://tobstudios.com/2012/02/02/wordpress-jquery-the-right-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Did you know that WordPress comes with the latest version of jQuery at the time of its release? While you can include jQuery into your template file manually, you may run into version conflicts and other broken features.<span id="more-418"></span> Keep it simple and use WordPress&#8217; own &#8216;wp_enqueue_script()&#8221; function. By using this function you tell WordPress to load its version of jQuery, if its not already loading. Plugin and theme developers alike should (and mostly do) be using this function in their projects to avoid loading multiple versions of the same file and also to avoid potential versioning conflicts.</p>
<h2>How To:</h2>
<p>To use this function to load jQuery, place this snippet of code in your template header file, before the wp_head() function. It&#8217;s that easy! Now as you update WordPress, your theme will then load the latest version of jQuery.</p>
<pre class="brush: php; title: ; notranslate">&lt;br /&gt;wp_enqueue_script('jquery');&lt;br /&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2012/02/02/wordpress-jquery-the-right-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS:  Firefox specific CSS</title>
		<link>http://tobstudios.com/2012/01/17/css-firefox-specific-css/</link>
		<comments>http://tobstudios.com/2012/01/17/css-firefox-specific-css/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 21:51:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=429</guid>
		<description><![CDATA[While you won&#8217;t need to do this very often, sometimes you need some Firefox specific CSS to fix compatibility issues. With this code you can target desktop versions of firefox, both Mac and PC. Simply place this in your CSS &#8230; <a href="http://tobstudios.com/2012/01/17/css-firefox-specific-css/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While you won&#8217;t need to do this very often, sometimes you need some Firefox specific CSS to fix compatibility issues. With this code you can target desktop versions of firefox, both Mac and PC. Simply place this in your CSS file, make a new one, or add the code in your &#8220;head&#8221; tag.<span id="more-429"></span></p>
<h2>The CSS</h2>
<pre class="brush: css; title: ; notranslate">
@-moz-document url-prefix() {
  #cssid {
     /*Firefox specific CSS here*/
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2012/01/17/css-firefox-specific-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS: Styling Submit Buttons in IE</title>
		<link>http://tobstudios.com/2011/09/21/css-styling-submit-buttons-in-ie/</link>
		<comments>http://tobstudios.com/2011/09/21/css-styling-submit-buttons-in-ie/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 20:36:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[browser compatibility]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[submit buttons]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=340</guid>
		<description><![CDATA[Here we go, you created this new flashy design for your website, paying attention to even the smallest details.  You&#8217;ve customized all aspects of your website, and it looks good.   You then turn your design into a functional xHTML website, &#8230; <a href="http://tobstudios.com/2011/09/21/css-styling-submit-buttons-in-ie/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here we go, you created this new flashy design for your website, paying attention to even the smallest details.  You&#8217;ve customized all aspects of your website, and it looks good.   You then turn your design into a functional xHTML website, in your favorite CMS or as a static website.   The website looks great in your favorite browser (Firefox/Chrome).   Now as the competent web designer you are, it&#8217;s time to test your site in other browsers.  <span id="more-340"></span> Safari, opera, both look really good, next up is Internet Explorer.  Version 8 and 9 look good, only minor changes (If you&#8217;re lucky), next is the dreaded version 7 and 6.   You breezed through the fixes for the other browsers, but now are spending hours on IE6 and 7.   This article focus&#8217; on one major issue us designers run into with fancy designs, stylized submit buttons.  In all browsers aside from IE6 and 7, they look fine.  In IE6 and 7 they probably look like this (Note: the text hasn&#8217;t been indented):</p>
<p><img class="size-full wp-image-365 alignnone" title="bad_button" src="http://tobstudios.com/wp-content/uploads/2011/09/bad_button.png" alt="" width="110" height="81" /></p>
<p>You don&#8217;t want that small string of text overlaying on the button.  You want it to look like this (Note: no more text overlayed):</p>
<p><img class="alignnone size-full wp-image-368" title="good_button" src="http://tobstudios.com/wp-content/uploads/2011/09/good_button.png" alt="" width="147" height="85" /></p>
<p>Well, luckily the fix is simple.  I&#8217;ll paste the entire CSS code for the above button, and then highlight the specific changes for IE6 and 7</p>
<p>
<pre class="brush: css; title: ; notranslate">#search input.image-button {
    background: url(&quot;../images/images/magnify.png&quot;) no-repeat scroll 50% 50% #79868F;
    border-color: #9C9C9C #9C9C9C #9C9C9C #E4E4E5;
    border-style: solid;
    border-width: 1px 1px 1px 3px;
    color: #000000;
    cursor: pointer;
    display: block;
    float: left;
    font-size: 0;
    height: 29px;
    line-height: 0;
    margin: 0 0 0 -2px;
    overflow: hidden;
    position: relative;
    text-align: left;
    text-indent: -9999px;
    text-transform: capitalize;
    width: 36px;
    z-index: 1;
}</pre>
<p>Overall a straight forward CSS declaration, but here are the specific IE6 and 7 fixes:</p>
<ul>
<li><strong>font-size:0</strong> -  This is used to reduce the font size to 0 for IE7, with IE6 this doesn&#8217;t fully eliminate the text</li>
<li><strong>Display:block</strong> &#8211; Negative indents in IE will only work with this declaration</li>
<li><strong>line-height:0</strong> &#8211; For IE6</li>
<li><strong>text-align:left</strong> &#8211; Another IE6 fix, right align doesn&#8217;t work.  I&#8217;m not sure why this is the case, another mystery of IE6</li>
</ul>
<p>I hope this helps save you time as IE6 and 7 can be extremely frustrating and time wasting!  Let me know if you have any other tips in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2011/09/21/css-styling-submit-buttons-in-ie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple Ajax Contact Form</title>
		<link>http://tobstudios.com/2011/09/21/simple-ajax-contact-form/</link>
		<comments>http://tobstudios.com/2011/09/21/simple-ajax-contact-form/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 19:49:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[basics]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[contact form]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[lesson]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=343</guid>
		<description><![CDATA[Today we’re going to learn how to make an Ajax contact form using Jquery.  This is a nearly identical implementation to what we use on our contact form.  Overall this is a simple contact form, the user inputs their name, &#8230; <a href="http://tobstudios.com/2011/09/21/simple-ajax-contact-form/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today we’re going to learn how to make an Ajax contact form using Jquery.  This is a nearly identical implementation to what we use on our contact form.  Overall this is a simple contact form, the user inputs their name, email address and message, then clicks the send button.  From there the javascript validates the data.  Once validated we use Jquery’s ajax() function to pass the data to a PHP file and finally send the message.   This form is W3C valid and compatible with IE6+, Firefox, Chrome, Safari and Opera.<span id="more-343"></span>  View the demo <a href="http://tobstudios.com/demos/contact/" target="_blank">here</a>.</p>
<h2>The Form</h2>
<p>First we will start by creating the markup for the form itself:</p>
<p>
<pre class="brush: xml; title: ; notranslate">
&lt;form id=&quot;contact_form&quot; onsubmit=&quot;return validate_form()&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
&lt;div id=&quot;contact_form_content&quot;&gt;
&lt;label id=&quot;contact_name&quot; for=&quot;name&quot;&gt;Name:&lt;/label&gt;
&lt;input onfocus=&quot;$('#name_error').fadeOut('fast');&quot; onclick=&quot;$('#name_error').fadeOut('fast');&quot; type =&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; /&gt;&lt;br/&gt;
&lt;label id=&quot;contact_email&quot; for=&quot;email&quot;&gt;Email:&lt;/label&gt;
&lt;input onfocus=&quot;$('#email_error').fadeOut('fast');&quot; onclick=&quot;$('#email_error').fadeOut('fast');&quot; type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; /&gt;&lt;br/&gt;
&lt;label id=&quot;contact_message&quot; for=&quot;message&quot;&gt;Message:&lt;/label&gt;
&lt;textarea onfocus=&quot;$('#message_error').fadeOut('fast');&quot; onclick=&quot;$('#message_error').fadeOut('fast');&quot; id =&quot;message&quot; rows=&quot;8&quot; cols =&quot;20&quot;&gt;&lt;/textarea&gt;
&lt;img id=&quot;loader&quot; src=&quot;ajax-loader.gif&quot; alt=&quot;Processing&quot; height=&quot;16&quot; width=&quot;16&quot;/&gt;
&lt;input id =&quot;submit_button&quot; type=&quot;submit&quot; value =&quot;Send&quot; name=&quot;submit&quot;/&gt;
&lt;/div&gt;
&lt;/form&gt;
</pre>
</p>
<p>As you can see, the markup is fairly straightforward, but there are a few points to highlight.  Notice that the form’s action declaration is empty, instead we use the onsubmit event to do all of the work.  Finally you may be wondering why the inputs have both onfocus and onclick events.  Those two events are present simply for browser compatibility, namely IE has trouble with the onlick event.</p>
<h2>The CSS</h2>
<p>This portion is purely optional, but can offer you a foundation for styling the entire form.  Copy this CSS as you see fit:</p>
<p>
<pre class="brush: css; title: ; notranslate">
body{
font-size:14px;
font-family: tahoma,geneva,arial;
background-color: #f2f2f2;
}
p{
text-align: center;
}
form{
width:426px;
font-size:1.4em;
margin: 0 auto;
position:relative;
}
form label{
float:left;
margin-right:40px;
text-align:right;
width:80px;
}
form input{
height:22px;
width:300px;
margin-bottom:10px;
}
textarea {
width: 300px;
}
#submit_button{
background-color: #CBDF6F;
border: 1px solid #9EB253;
cursor: pointer;
float: right;
font-weight: bold;
height: 31px;
margin-top: 10px;
width: 50px;
}
form .error{
background-color:#F2E9E1;
border:2px dashed #9EB253;
display:none;
font-size:0.7em;
font-weight:bold;
padding:4px;
position:absolute;
z-index:1;
}
form #name_error{
right: -89px;
top: -5px;
}
form #email_error{
right: -155px;
top: 34px;
}
form #message_error{
right: -111px;
top: 74px;
}
form #send_message{
left: 110px;
line-height: 2em;
padding: 10px;
text-align: center;
top: 40px;
-moz-box-shadow: 5px 5px 7px #AAAAAA;
-webkit-box-shadow:5px 5px 7px #aaaaaa;
box-shadow:5px 5px 7px #aaaaaa;
}
#loader{
display:none;
bottom: -33px;
position: absolute;
right: 65px;
}
</pre>
</p>
<p>Overall this is standard CSS code so I won’t go over the specifics.</p>
<h2>Jquery</h2>
<p>Here is the Jquery code.  Remember to have the latest version of Jquery (version 1.4.4 at time of writing) loaded in yourtag for this to work:</p>
<p>
<pre class="brush: jscript; title: ; notranslate">
function validate_form(){
        var error = 0;
        $(&quot;#name_error&quot;).detach();
        $(&quot;#email_error&quot;).detach();
        $(&quot;#message_error&quot;).detach();
        if (document.getElementById('name').value =='' || document.getElementById('name').value == null){
            $('#name').after('&lt;span class=&quot;error&quot; id=&quot;name_error&quot;&gt;Please enter your name&lt;/span&gt;');
           $(&quot;#name_error&quot;).fadeIn('slow');
            error = 1;
       }
        var _regexp = new RegExp(/^([0-9a-zA-Z]([-.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+[a-zA-Z]{2,9})$/);
        var _email = document.getElementById('email').value;
        if(_regexp.test(_email) == false) {
            $('#email').after('&lt;span class=&quot;error&quot; id=&quot;email_error&quot;&gt;Please enter a valid email address&lt;/span&gt;');
            $(&quot;#email_error&quot;).fadeIn(&quot;slow&quot;);
            error = 1;
        }
        if (document.getElementById('message').value =='' || document.getElementById('message').value == null){
            $('#message').after('&lt;span class=&quot;error&quot; id=&quot;message_error&quot;&gt;Please enter your message&lt;/span&gt;');
            $(&quot;#message_error&quot;).fadeIn(&quot;slow&quot;);
            error = 1;
        }
        if (error == 1){
            return false;
        }else{
            var name = document.getElementById('name').value;
            var email = document.getElementById('email').value;
            var message = document.getElementById('message').value;
            $(&quot;#loader&quot;).css(&quot;display&quot;,&quot;block&quot;);
            $.ajax({
                type:       &quot;POST&quot;,
                url:        &quot;/send.php&quot;,
                cache:      false,&lt;br /&gt;
                data:        &quot;name=&quot; + name +&quot;&amp;email=&quot;+email+&quot;&amp;message=&quot;+message,
                success:    function(html) {
                    $(&quot;#loader&quot;).fadeOut('fast');
                    $(&quot;#submit_button&quot;).attr('disabled', 'disabled');
                    $(&quot;#contact_form&quot;).append('&lt;span class=&quot;error&quot; id=&quot;send_message&quot;&gt;Your message has been sent!&lt;br/&gt;  We will contact you shortly&lt;/span&gt;');
                    $(&quot;#send_message&quot;).fadeIn(&quot;slow&quot;);
                    setTimeout('$(&quot;#send_message&quot;).fadeOut(&quot;slow&quot;);',2250);
                }
            });
        }
return false;
}
</pre>
</p>
<p>When the user clicks the send button, the form triggers the “validate_form()” function.  This function starts by validating each input field.  It starts with the name field which simply detects if the field is empty or not.   Next we move onto the email field which we use a regex string to determine if the field was written in a valid email format.  Finally we check to see if the message field is empty.   As the function detects errors it will display a message over the respective field and halt the script.</p>
<p>Once the form has been validated we use the $.ajax() function to process the data to the php file which sends the message.  The $.ajax() function can be daunting at first so I will explain the settings used.  Starting with the “type” setting, this specifies how we are sending the data to the PHP file.  In this example we are using the POST method, however a GET request could used instead.    The following setting, url, specifies the location of the PHP file we are going to use to send the message.  Next we choose to disable caching as each use of the form will be unique.  We then move onto the data setting, this is where the form data is placed.  As you can see we send the data in the form of 3 variables, an array could also be used.   The last setting determines what to do when the message has successfully been sent.  The “success” setting is only triggered if the message is sent, otherwise the function stops.  Assuming everything goes through correctly, we fade in a message stating the success.  We also disable the submit buttons function to stop from multiple messages being sent at once.</p>
<h2>The PHP</h2>
<p>Finally we have the PHP code to finish everything off.  In our example we placed this code in the send.php file:</p>
<p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$name = addslashes($_POST['name']);
$email = &quot;FROM: &quot;.$_POST['email'];
$message = addslashes(nl2br($_POST['message']));
$to = 'info@tobstudios.com';
$message = &quot;Name: &quot;.$name.&quot;n&quot;.$message;
if ($name != '' &amp;&amp; $email !='' &amp;&amp; $message != ''){
   if (mail($to, 'Tob Studios Contact Form', $message, $email)){
       return true;
   }else{
       return false;
   }
}
?&gt;
</pre>
</p>
<p>The PHP code is short and to the point, we take the data sent from the $.ajax() function and again validate the information (although in much less detail).  Assuming everything is valid, we then send the message using the PHP “mail” function.</p>
<h2>Conclusion</h2>
<p>This form albeit simple, offers you a solid foundation to add more complex features such as file uploads and other options.  Remember to put the “enctype=&#8221;multipart/form-data&#8221; code into your form declaration to process file uploads correctly.  Let us know your thoughts and ideas on how to improve this form in our comments section below.</p>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2011/09/21/simple-ajax-contact-form/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Choosing Your Web Platform</title>
		<link>http://tobstudios.com/2011/08/05/choosing-your-web-platform/</link>
		<comments>http://tobstudios.com/2011/08/05/choosing-your-web-platform/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 17:20:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[beginners]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[tob blog]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=315</guid>
		<description><![CDATA[&#160; &#160; As a new web designer it’s often difficult to choose which platform you’re going to develop with.  Do you use one platform for everything?  Or do you use a different platform for each project?  Truth be told, there &#8230; <a href="http://tobstudios.com/2011/08/05/choosing-your-web-platform/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-331" title="Choosing Your Platform" src="http://tobstudios.com/wp-content/uploads/2011/08/Choosing-Your-Platform.jpg" alt="" width="572" height="130" /></p>
<p>&nbsp;</p>
<p>As a new web designer it’s often difficult to choose which platform you’re going to develop with.  Do you use one platform for everything?  Or do you use a different platform for each project?  Truth be told, there is no correct answer.   In this article I will outline the tips and thought process’ Tob Studios used to determine its platforms of choice.   To begin with, Tob Studios typically uses two platforms, <a href="http://drupal.org/" target="_blank">Drupal</a> and <a href="http://wordpress.org/" target="_blank">WordPress</a>.   For highly customized projects we tend to stick with <a href="http://drupal.org/" target="_blank">Drupal</a>, while simple project are done in <a href="http://wordpress.org/" target="_blank">WordPress</a>.     As you may have guessed the Tob Studios website is built using <a href="http://wordpress.org/" target="_blank">WordPress</a> due to is simplistic nature.  So how did we arrive at these platforms?  Below I will list the topics we took into consideration for our choices.<span id="more-315"></span></p>
<p>&nbsp;</p>
<p><strong>Ease of Use</strong></p>
<p>One of the most important factors to use when choosing platforms was how easy they are to use.  Although more advanced platforms like <a href="http://www.joomla.org/" target="_blank">Joomla</a> and <a href="http://drupal.org/" target="_blank">Drupal </a>are fine for our use.  How will our customers react to them?   You’re most likely reading this for a project for a client and not for personal use.   A lot of the time the client isn’t completely technical, and they shouldn’t have to be.  The idea of choosing a platform is to make it easier for all parties to maintain the website.   Ease of use is an extremely important factor.  If you’re unsure if the platform is easy and intuitive simply ask a non-technical friend or family member to try and use the platform.  See how they react, if even with your helping tips they aren’t quite grasping the system, move onto a new one.  You may not agree with that statement but consider this.  If your client is struggling to update their website they are going to get frustrated as well as be contacting you more often for support.  I have yet to meet a single developer who enjoys doing phone support with a frustrated client.</p>
<p>&nbsp;</p>
<p><strong>Time Saving</strong></p>
<p>Typically all platforms have some form of template/theme system.  The idea behind such systems is to allow you, the programmer, to make the website more quickly and efficiently.   By using a template system you can break up your web pages into smaller files, allowing common portions to be reused throughout the website.   Typically your webpage will have a similar header and footer for all pages, so you can create header and footer files which the template system will render onto all of your content pages.  That is the general basis behind a template/theme system, but how well did the platform implement it?   Some platforms complicate this theory while others are more easy to use.  When choosing your platform, if you plan on creating custom themes, look at how the template system is setup.  Is it easy for you to use and understand?  Will it save you time?  If the answer is no, then you should move on to another one.    Some template systems such as <a href="http://www.smarty.net/" target="_blank">Smarty</a>, use their own custom coding language, which adds a small learning curve but can greatly speed up your project.  A great way to find quick answers on the system is to do search the platforms forums to see what others are saying.</p>
<p>&nbsp;</p>
<p><strong>Support</strong></p>
<p>The amount of support you have with a specific platform can be a life saver when you’re in a jam.   If you’re choosing a platform with a smaller user base it will be harder for you to find answers to the problems you will inevitably run into.   It’s extremely frustrating hitting a roadblock midway through a project and not being able to find an answer.  You’re then left with two options; do you scrap it and start over?  Or do you keep trying to find the answer yourself, which is often a time consuming decision.  Investigate the forums and communities of the various platforms; see how often they are updated and how busy they are.   Look at the support forums and see if questions are being answered or if problems are being posted without resolutions.  Do you want to risk using a platform that has very few answered problems and bugs?  Most likely not.  You want a system that has strong community support to help you out of that jam and hopefully stop you from being up at 3am.</p>
<p>Some premium platforms such as <a href="http://www.x-cart.com/" target="_blank">X-Cart </a>and <a href="http://expressionengine.com/" target="_blank">Expression Engine</a> offer premium support from the developers themselves, which can be a great help when you need something fixed immediately.  If you’re working with a mission critical system or are not completely comfortable with programming, spend the extra money to get the better support.</p>
<p>Another aspect of support is server/hosting support.  If your platform can’t run on your hosting or server then it is pretty much useless.  Many platforms use the PHP language, so make sure your server/host can run PHP code.  Other systems run on different languages, sometimes less common with hosting providers.  <a href="http://rubyonrails.org/" target="_blank">Ruby On Rails</a> and <a href="https://www.djangoproject.com/" target="_blank">Django</a> support is less common with shared hosting plans.   Will your client want to spend extra money on hosting to support those languages?  Does your clients project warrant the use of those languages or can you get the same results from a more common language?  Learn more about choosing a hosting provider in our &#8220;<a href="http://tobstudios.com/general-tips/finding-a-hosting-provider/">Find your hosting Provider</a>&#8221; article</p>
<p>&nbsp;</p>
<p><strong>Extensibility</strong></p>
<p>The extensibility of a platform is an important factor for some projects, but not all.  If you are to working on a fairly customized project you want to see how easily you can input your own code/plugins.  Many systems are very closed off so it’s extremely hard to add your own additions and changes, while others have greater extensibility.  An easy way to check is to see how many community made plugins there are available to download.  Although this isn’t a completely accurate method, it’s a good starting point.  Once more, viewing what plugins are available for your platform is a great way to save time in your next project.  Why reinvent the wheel when you can modify an existing plugin to fully meet your needs?    Many of the plugins available for projects such as WordPress, Drupal, and Joomla are open source and you can legally modify them for your project.</p>
<p>&nbsp;</p>
<p><strong>Conclusion</strong></p>
<p>As you can see there are many aspects to consider when choosing a platform, this article only highlights a few.  A good tip to remember when choosing a platform is that the platform should work for you and your clients.  You want to choose a system that will make everyone’s life easier now and in the future.   These are some of the tips that Tob Studios used when determining the platforms we develop with.  There are other aspects that may impact your choice and we invite you to put them in our comments section.  We would be happy to hear them.</p>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2011/08/05/choosing-your-web-platform/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Finding a hosting provider</title>
		<link>http://tobstudios.com/2011/08/05/finding-a-hosting-provider/</link>
		<comments>http://tobstudios.com/2011/08/05/finding-a-hosting-provider/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 01:49:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General tips]]></category>
		<category><![CDATA[hosting providers]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[tob blog]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://tobstudios.com/?p=309</guid>
		<description><![CDATA[&#160; &#160; Finding a hosting provider can be a daunting task.  First you’ll find there are thousands of different hosts, with prices ranging from Free to hundreds of dollars a month.  What makes them different and which one is right &#8230; <a href="http://tobstudios.com/2011/08/05/finding-a-hosting-provider/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="http://tobstudios.com/wp-content/uploads/2011/08/Finding-a-hosting-provider.jpg"><img class="aligncenter size-full wp-image-319" title="Finding a hosting provider" src="http://tobstudios.com/wp-content/uploads/2011/08/Finding-a-hosting-provider.jpg" alt="" width="600" height="178" /></a></p>
<p>&nbsp;</p>
<p>Finding a hosting provider can be a daunting task.  First you’ll find there are thousands of different hosts, with prices ranging from Free to hundreds of dollars a month.  What makes them different and which one is right for you?    For most people all they will ever need is the cheap 10 dollar shared hosting plans that companies such as <a href="http://www.hostgator.com/" target="_blank">Hostgator</a>, <a href="http://www.hostrocket.com/" target="_blank">Hostrocket</a> and <a href="http://www.bluehost.com/" target="_blank">Bluehost</a> offer.   With unlimited disk space, no monthly bandwidth cap, <a href="http://php.net/" target="_blank">PHP</a>, and <a href="http://www.mysql.com/" target="_blank">MySQL</a> support, these hosting packages will satisfy most customers.<span id="more-309"></span></p>
<p>&nbsp;</p>
<p><strong>What do I look for in a hosting provider?</strong></p>
<p>As I briefly mentioned above there are a few key points to look for in your host.  How much disk space does your host offer?  How much bandwidth can you use monthly with the host?   What programming languages does the host support?  For many modern web projects that require a content management system, at minimum you will require <a href="http://php.net/" target="_blank">PHP</a> support as well as some form of database support such as <a href="http://www.mysql.com/" target="_blank">Mysql</a>.   If you’re simply creating a static xHTML web page that has no web based administration section, then <a href="http://php.net/" target="_blank">PHP</a> support would offer you little to no benefit.   One of the most important factors I look for in a host is how easily can we administer our hosting package?  Does the hosting company provide you with an easy to use administration panel allowing you to add files, databases and change various other settings?  Or do you have to call your hosting provider to make all of these minor changes?  A very common administration system among shared hosting providers is called <a href="http://www.cpanel.net/" target="_blank">Cpanel</a> which gives you the ability to take control of many of your host settings.  Typically through the <a href="http://www.cpanel.net/" target="_blank">Cpanel</a>, you can upload files, add and delete Mysql databases as well as change other setttings your provider allows.   Many shared hosting providers combine their <a href="http://www.cpanel.net/" target="_blank">Cpanel</a> systems with One-Click install systems, allow you to install CMS and blogging packages right from your web browser.  If you are someone without a lot of technical knowledge, I recommend using a hosting company which uses <a href="http://www.cpanel.net/" target="_blank">Cpanel</a>.</p>
<p>&nbsp;</p>
<p>When working on an E-commerce project you have to take other things into consideration, security.  How secure is your hosting providers systems?  Although you may have your data encrypted on their servers, how secure are they?   Luckily there is a standardization that helps you determine if the hosting provider is secure enough.  When working on E-commerce projects you need to make sure your hosting package is <a href="http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard" target="_blank">PCI-compliant</a>.  Although your web platform/CMS may be <a href="http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard" target="_blank">PCI-compliant</a>, if your hosting provider is not, your just as unsecure.  Typically shared hosting plans are not <a href="http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard" target="_blank">PCI-compliant</a> and you need to seek out dedicated hosting or co-locate your own servers.    Many credit card companies will not approve your applications or will close your accounts if you are not on a <a href="http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard" target="_blank">PCI compliant</a> system.   If you&#8217;re processing credit card information on an unsecure host, your putting your customers and the credit card companies customers at risk.   Depending on the size of your project there are alternatives to spending more money on dedicated hosting or co-location.   If your company is only selling a few items you can use services like <a href="https://www.paypal.ca/" target="_blank">Paypal</a> or <a href="http://checkout.google.com/" target="_blank">Google Checkout</a> to process all of the sensitive information.   Simply create an account with either service, follow their instructions to input your items and then finally paste the code they generate for on your website.  In this fashion your website remains on a more affordable hosting plan while all sensitive information is secured by the third party service.</p>
<p>&nbsp;</p>
<p><strong>Conclusion</strong></p>
<p>There are many aspects to consider when choosing a host, however for the most part it is fairly simple.  You will find a plethora of fairly cheap hosting providers that offer unlimited disk space and bandwidth, as well as all of the features most websites.  However for specialized projects such as E-commerce implementations, you need to look for specific things in your hosting, usually increasing your monthly costs.   Some hosting providers that we’ve had great success with are <a href="http://www.hostgator.com/" target="_blank">Hostgator</a>, <a href="http://www.hostrocket.com/">Hostrocket</a>, and <a href="http://www.bluehost.com/" target="_blank">Bluehost</a>.   Do you have another host that you like?  Let us know in the comments section below.</p>
]]></content:encoded>
			<wfw:commentRss>http://tobstudios.com/2011/08/05/finding-a-hosting-provider/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
