<?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>DreamScape</title>
	<atom:link href="http://dreamhost.com/dreamscape/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhost.com/dreamscape</link>
	<description>Powered by DreamHost!</description>
	<lastBuildDate>Thu, 23 May 2013 15:00:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>DreamCon Speaker Series #7: Mike Schroder</title>
		<link>http://dreamhost.com/dreamscape/2013/05/23/dreamcon-speaker-series-7-mike-schroder/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/23/dreamcon-speaker-series-7-mike-schroder/#comments</comments>
		<pubDate>Thu, 23 May 2013 15:00:02 +0000</pubDate>
		<dc:creator>Shredder</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[dreamcon]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9522</guid>
		<description><![CDATA[Howdy there! Shredder here. It’s super-exciting to announce that I’ll speaking at DreamCon! I’ll be giving a general WordPress introduction, and also walking y’all through the wonders of wp-cli. wp-cli is a great command line tool that lets power users manage WordPress with ease. It uses WordPress itself to perform its functions, which means that [...]]]></description>
				<content:encoded><![CDATA[<p>Howdy there! Shredder here. It’s super-exciting to announce that I’ll speaking at <a href="http://dreamhost.com/dreamcon/">DreamCon</a>! I’ll be giving a general WordPress introduction, and also walking y’all through the wonders of <a href="http://wp-cli.org">wp-cli</a>.</p>
<p>wp-cli is a great command line tool that lets power users manage WordPress with ease. It uses WordPress itself to perform its functions, which means that in most cases, the same code gets run as it would if you were controlling WordPress via its admin screens directly! The open source project was started by Andreas Screten and is now lead by Cristi Burcă, who is widely known as <a href="http://www.scribu.net">scribu</a> within the WordPress community.</p>
<p>You can do all sorts of cool things with wp-cli by running the <code>wp</code> command via SSH in your WordPress directory. A few include:</p>
<ul>
<li>View Plugin Status: <code>wp plugin status</code></li>
<li>Update All Plugins: <code>wp plugin update-all</code></li>
<li>Install Plugin: <code>wp plugin install &lt;plugin-name&gt;</code></li>
<li>Change Theme: <code>wp theme activate &lt;theme-name&gt;</code></li>
<li>Import/Export Database: <code>wp db import/export</code></li>
</ul>
<p>Of course, the coolest bit is that you can also write custom commands for wp-cli, so that you can make client site management more automated or integrate it with your plugins to perform common tasks via the command line.</p>
<p>During the course of the talk, we’ll go over basic WordPress management with wp-cli, followed by a walkthrough with the creation of a simple plugin, so that you can leave understanding what wp-cli is, and hopefully with some ideas as to how it can make your life with WordPress better.</p>
<p>Can’t wait? For a quick overview and more information, check out the <a href="http://wp-cli.org">official wp-cli site</a> and <a href="http://github.com/wp-cli/wp-cli/">wp-cli on GitHub</a>. See you at DreamCon!</p>
<h2>About the Speaker:</h2>
<h3>What do you do at DreamHost?</h3>
<p>I’m a developer that contributes to WordPress core and works on WordPress specific projects here at DreamHost. I also get to hang with the awesome WordPress community online and at events, to help us stay connected and informed on how to best optimize DreamHost servers and services for WordPress. It’s also fun to contribute to related projects, like wp-cli and plugins which help both the community and DreamHost all at once. Hurray collaboration!</p>
<h3>What’s one interesting fact we don’t know about you?</h3>
<p>I lived in southern Spain for four years while growing up. There I learned Spanish and gained a deeper love for sailing.</p>
<h3>What shows are on your DVR?</h3>
<p>Although I don’t have a DVR, I’ve been enjoying both the current Doctor Who and BBC’s Sherlock quite thoroughly.</p>
<h3>What’s your go-to cocktail?</h3>
<p>I don’t have very many mixed drinks, and generally go with a whisky neat instead.</p>
<h3>What Pandora station are you listening to these days?</h3>
<p>Currently Bon Iver. Before that was Radiohead, which I highly recommend as a Pandora seed – lots of great related music there.</p>
<h3>What’s your alma mater?</h3>
<p>The University of Michigan. Go Blue!</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/23/dreamcon-speaker-series-7-mike-schroder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Security: User validation and sanitization for the beginner</title>
		<link>http://dreamhost.com/dreamscape/2013/05/22/php-security-user-validation-and-sanitization-for-the-beginner/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/22/php-security-user-validation-and-sanitization-for-the-beginner/#comments</comments>
		<pubDate>Wed, 22 May 2013 18:30:22 +0000</pubDate>
		<dc:creator>Jerry Warren</dc:creator>
				<category><![CDATA[Software and App Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[secruity]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9535</guid>
		<description><![CDATA[First and foremost: reading this post will take some working knowledge of PHP.  Though, not much is needed since this is intended for  beginners. Importance of securing your site In the day and age of computers where the internet is vastly huge and extends sooo far…. there are people who want to be malicious. This [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left"><i><a href="http://dreamhost.com/dreamscape/?attachment_id=9544" rel="attachment wp-att-9544"><img class="size-full wp-image-9544 alignleft" alt="1" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/1.jpg" width="36" height="26" /></a></i><i>First and foremost: reading this post will take some working knowledge of PHP.  </i><i>Though, not much is needed since this is intended for  beginners.</i></p>
<p><b>Importance of securing your site</b></p>
<p>In the day and age of computers where the internet is vastly huge and extends sooo far…. there are people who want to be malicious. This pretty much sums up why you want to have security on everything nowadays. PHP security isn’t just an option anymore, it’s a necessity. Sites are getting hacked every day and as you build a site using PHP, you need to be aware of how to keep it safe from the bad guys.</p>
<p><b>What is PHP security?</b></p>
<p>PHP security is securing your site in PHP, to help prevent the bad guys from unauthorized access to your site’s data to keep its integrity and insuring availability as needed. You can start doing this in PHP with validating and sanitizing data on your site, which is what I will be writing about today.</p>
<p>Keep in mind, that since this is a beginner’s post on basic validation and sanitization, you will want to extend further out from this post to learn more about keeping your site secure because as Master Yoda says, <i>“</i><i>Much to learn, you still have.” </i></p>
<p><img class="wp-image-9559 alignnone" alt="security" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/security.gif" width="456" height="332" /></p>
<p><b>Validating User Input and Some Sanitization</b></p>
<p>Validating user input is the first and one of the most important steps to securing your site. Validating means verifying the data coming into your script is type of data you want, is in the correct format that you want, and is the right length. Without checking these, your site is vulnerable and depending on what exactly your script does, can lead to your site going down, displaying bad information, giving the bad guys access to getting information from users., and much more.</p>
<p><b>Knowing the data coming in</b></p>
<p>The first step in validating your data is to know what data is supposed to come in. If someone is trying to hack your site, there can be extra data that comes in, and if you are accepting any data coming in, then you are allowing the person the ability to start doing what they want.</p>
<p>Let’s imagine that you have a user form that accepts adding comments on a page. You have fields for someone to add a comment that includes their name, email address, comment they want to leave, and a hidden field of the page ID they are leaving a comment on. When the user submits a comment, it will go to a script that processes the comment, and adds it to a database.</p>
<p>Now that we have an idea of what information will be coming to our script, we need to verify that we have the correct data, type of data, that we have a limit on the length of data, and that we are not using anything beyond the data we need.</p>
<p>Since this comment form is going to be sent to our script as a <a href="http://www.php.net/manual/en/reserved.variables.post.php">POST</a> variable, we do not want to loop through each field of the <a href="http://www.php.net/manual/en/reserved.variables.post.php">POST</a> without knowing it is what we want. Here’s an example of a <a href="http://www.php.net/manual/en/reserved.variables.post.php">POST</a> variable that is sent to our script:</p>
<blockquote><p>Array<br />
(<br />
[name] =&gt; Jerry<br />
[email] =&gt;jerryw@fake.dreamhost.com<br />
[comment] =&gt; This is a test comment that is coming to our site<br />
[submit] =&gt; Post Comment<br />
[page_ID] =&gt; 37<br />
)</p></blockquote>
<p>This shows that we have exactly the data we asked for, but if a hacker wanted to add extra information in there like an extra field, then there could be possibilities for corrupting your site. For a form like this, I would recommend that you call each field, so you know you are only using what your script needs. For example, instead of looping through <a href="http://www.php.net/manual/en/reserved.variables.post.php">$_POST</a>, you can call each field like this:</p>
<blockquote><p>$_POST[ ‘name’ ]
$_POST[ ‘email’ ]</blockquote>
<p>This will help to accept only the data you are expecting and ignore the rest.</p>
<p>Next, you want to know what the data is support to be. For example, the $_POST[ ‘page_ID’ ] is going to be an integer, because it is just a page id that is a number. So, we know we do not want to accept any special characters or letters for this. We know that the $_POST[ ‘email’ ] is an email address, so we will want to check the format of this to make sure it is a valid email address. For the comment, we will say in this example that we do not want to allow comments over 256 characters.</p>
<p><b>Checking the type of data and cleaning it up</b></p>
<p>Now that we know the data that we are accepting, and we know what it is allowed to be, let’s take a look at checking the type of data that is coming in.</p>
<p>Most data that comes in from a post is considered a string, however you might fields like currency coming in, or as in this example, there is page id, which we know is only supposed to be a number.</p>
<p>First, when we get data coming in, we want to check if our data is there we need, and we want to check if it has something there. Here is a way you can check if a field actually came through.</p>
<blockquote><p>if ( isset( $_POST[ 'name' ] ) )<br />
$name = strip_tags( trim( $_POST[ 'name' ] ) );</p></blockquote>
<p>Here we check if the name is there with the <a href="http://php.net/manual/en/function.isset.php">isset()</a> function. This checks if the variable is there and also checks to verify the variable is not NULL. I also introduced two other functions <a href="http://php.net/manual/en/function.strip-tags.php">strip_tags()</a> and <a href="http://php.net/manual/en/function.trim.php">trim()</a>. The <a href="http://php.net/manual/en/function.strip-tags.php">strip_tags()</a> function strips all HTML and PHP tags from a variable. Since we know that name is just the name of a person, and does not need to have links, or possibly some malicious code, we do not need to have any tags. So if a person was to add &lt;a href=”http://www.google.com”&gt;Jerry&lt;/a&gt;, it would only let the string ‘Jerry’ to be assigned to the variable. The <a href="http://php.net/manual/en/function.trim.php">trim()</a> function just trips any whitespace from beginning and end of the string ( note: If you take a look at this function on the PHP website, you can learn about other characters that you can remove with this function, however for this post, we are just going to strip the whitespace).</p>
<p>Next we will check the type of our page ID. There are two ways this can technically be done (note: there are a few other ways that I will not be going over in this post). First, we can actually test if the page ID is a integer by using this:</p>
<blockquote><p>if ( is_int( $_POST[ 'page_ID' ] ) )<br />
$pageID = $_POST[ 'page_ID' ];</p></blockquote>
<p>This uses the <a href="http://php.net/manual/en/function.is-int.php">is_int()</a> function from PHP to test if the $_POST[ ‘page_id’ ] is actually an integer. If it is, then it assigns the variable to $pageID. There are similar functions that you can use, like <a href="http://www.php.net/manual/en/function.is-bool.php">is_bool()</a>, <a href="http://www.php.net/manual/en/function.is-float.php">is_float()</a>, <a href="http://www.php.net/manual/en/function.is-numeric.php">is_numberic()</a>, and some others. We won’t get too much into these other functions, but there is plenty of information about these on the PHP website. I did include a link at the bottom of this post for you to their site.</p>
<p>The other way to do this is to just assign the $_POST[ ‘page_ID’ ] to the variable using <a href="http://us3.php.net/language.types.type-juggling#language.types.typecasting">type cast</a>. Type casting is basically forcing the variable to the type that type. Here’s an example:</p>
<blockquote><p>$pageID = (int) $_POST[ 'page_ID' ];</p></blockquote>
<p>Using the (int) forces the page_ID to be an integer. So, if the value coming in is a string, instead of the integer like it is supposed to be, then it will force it to be an integer or zero (0) if not an integer. You could then test if the value equals 0, and return an error if it is.</p>
<p>Now, let’s take a look at the comment section. The comment section will be allowed to add tags, in case they want to add a link as a comment, that can help support your page, so we do not want to use the <a href="http://php.net/manual/en/function.strip-tags.php">strip_tags()</a> function, since this would take their &lt;a&gt; tag out of the comment section. To accomplish this, we will want to use the <a href="http://php.net/manual/en/function.htmlentities.php">htmlentities()</a> function. This function will convert characters to HTML entities. For instance, the character ‘&lt;’ would be translated to ‘&amp;lt;’. Here is an example of how we do this for the comment section:</p>
<blockquote><p>if ( isset( $_POST[ 'comment' ] ) )<br />
$comment = htmlentities ( trim ( $_POST[ 'comment' ] ) , ENT_NOQUOTES );</p></blockquote>
<p>Here we check if the comment field came through, and if it did, then we assign it to the variable $comment using the <a href="http://php.net/manual/en/function.htmlentities.php">htmlentities()</a>. So, if any tags are included, they will be converted. Let’s say someone adds the link:</p>
<blockquote><p>&lt;a href=&#8221;http://dreamhost.com/&#8221;&gt;Awesome Hosting&lt;/a&gt;</p></blockquote>
<p>After if goes through the <a href="http://php.net/manual/en/function.htmlentities.php">htmlentities()</a> function above, it will be this:</p>
<blockquote><p>&amp;lt;a href=&#8221;http://dreamhost.com/&#8221;&amp;gt;Awesome Hosting&amp;lt;/a&amp;gt;</p></blockquote>
<p>This is using the ENT_NOQUOTES option. If you take a look at the function on the PHP website, there are other options you can try out, depending on what you would like to do.</p>
<p><b>Checking the length of the variables</b></p>
<p>Though, this might not seem like it is that important, checking the length of your variables is quite important. Without checking variables, a user could cause buffer overflow issues. Not only that, but if you have a table in your database with name as a comment, and it can only have 256 characters. If the user writes in 356 characters, then part of their post will be cut off. However if you check for the length, then you can let the user know that they need to shorten their comment.</p>
<p>To check the length of a string, you would use the function <a href="http://php.net/manual/en/function.strlen.php">strlen()</a>. This function returns the length of a string for you. Here’s an example:</p>
<blockquote><p>if ( strlen( $_POST[ 'comment' ] ) &lt;= 256 )<br />
$comment = htmlentities ( trim ( $_POST[ 'comment' ] ) , ENT_NOQUOTES );</p></blockquote>
<p>Here, we are check if the length of $_POST[ ‘comment’ ] is shorter than or equal to 256, and if it is, then we assign it to the variable. Another option, to check that the string length is enough to be a comment is something like this:</p>
<blockquote><p>if ( strlen( $_POST[ 'comment'] ) &gt;= 1 &amp;&amp; strlen( $_POST[ 'comment' ] ) &lt;= 256 )<br />
$comment = htmlentities ( trim ( $_POST[ 'comment' ] ) , ENT_NOQUOTES );</p></blockquote>
<p>This will check to make sure the length of the comment is more than one character and less than 256 characters and then assigns the variable.</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9558" rel="attachment wp-att-9558"><img class="size-full wp-image-9558 alignnone" alt="3" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/3.gif" width="640" height="199" /></a></p>
<p><b>Is the format correct from the user?</b></p>
<p>Making sure the format is crucial to your site to verify that the information can be used correctly later, but also for error control on your site. In this post, we are going to use the PHP function <a href="http://php.net/manual/en/function.preg-match.php">preg_match()</a> with regular expressions to accomplish this.</p>
<p>Before I get into the actual commands that we will be using, I wanted to let you know that I will not be explaining regular expressions in this post. If you would like to learn more about it, there are plenty of tutorials out there on how to use these. For this post we will be grabbing our regular expressions from <a href="http://regexlib.com/">http://regexlib.com</a>, which has quite a few different regular expressions that you can use. Check the site out and do a search on a regular expression you need.</p>
<p>The <a href="http://php.net/manual/en/function.preg-match.php">preg_match()</a> function searches a variable for a regular expression pattern to see If it matches. For example, let’s check if our email address is a valid email address:</p>
<blockquote><p>if ( preg_match( &#8216;/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/&#8217;, $_POST[ 'email' ] ) )<br />
$emailAddress = trim( $_POST[ 'email' ] );</p></blockquote>
<p>This takes a regular expression, which in this case is ‘^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$’, and checks the $_POST[ ‘email’ ] to verify that it matches that pattern. According to the regexlib.com site, it will match the following formats:</p>
<blockquote><p>joe@aol.com | joe@wrox.co.uk | joe@domain.info</p></blockquote>
<p>If the user does not use one of the above formats, then it will return false, and the $emailAddress variable will not get assigned the email address. The <a href="http://php.net/manual/en/function.preg-match.php">preg_match()</a> makes it possible to check the format of any variable, as long as the regular expression is correct. To use it, you can do like above:</p>
<blockquote><p>if ( preg_match( &#8216;/&lt;ENTER EXPRESSION HERE&gt;/&#8217;, &lt;INSERT VARIABLE HERE&gt; ) )</p></blockquote>
<p>Make sure that when using it this way that you add the forward slashes to the front and back of the regular expression as shown above.</p>
<p><b>Sanitizing your data: a little more information</b></p>
<p>Sanitizing data is another necessity needed with PHP security. In our last section, Validating User Input and Some Sanitization, we did some sanitization as part of cleaning; when we validated our data by checking if it matches the data that we want. I want to touch on two more topics to help protect your site and help keep it from the bad guys.</p>
<p><b>MySQL Injection</b></p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9557" rel="attachment wp-att-9557"><img class="size-full wp-image-9557 alignnone" alt="2" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/2.png" width="666" height="205" /></a></p>
<p>I won’t dig too deep into this, as it can be a whole other topic on its own. So, I will just do a quick explanation of this.</p>
<p>What is MySQL Injection? If you don’t know what MySQL injection is, it is exactly as it sounds. Basically, the bad guys try to manipulate your site to add SQL into your SQL command to get more information, modify, or delete data in your database.  Here’s an example of a simple SQL injection:</p>
<blockquote><p>$userID = $_POST[ 'user_id' ]; //  This is a value of &#8220;&#8216; OR 1&#8242;&#8221;;<br />
$query = &#8220;SELECT * FROM users WHERE user_id = &#8216;$userID&#8217;&#8221;;<br />
//output: SELECT * FROM users WHERE user_id = &#8221; OR 1&#8221;</p></blockquote>
<p>The above shows a script that has not been secured, so the creator of the script has inputted the $_POST[ ‘user_id’ ] right into the SQL for the site. Some bad guy came along and decided to change the value in the hidden form from a number to ‘OR 1’. Now, if this was used to query for one user, it will actually pull all the users from the table because when you change the script to WHERE user_id = ‘’ OR 1, it will pull all the rows from the table.</p>
<p>Wow, so how do we stop these trickery people? Lucky for you, this is a beginner’s guide, so we have the perfect beginner’s method for you. PHP has a function called <a href="http://php.net/manual/en/function.mysql-real-escape-string.php">mysql_real_escape_string()</a> that helps prevent from injection. Of course, don’t forget that before you use this function, you will still want to validate all the data and sanitize it, to make sure it is clean. Let’s say we have validated all the data for our comment form, and now want to add it to the database. But….. let’s also say I am an evil doer and try to inject some secret stuff into your site maliciously. So, I actually put the page_ID as ‘ OR 1’ as we talked about earlier and you forgot to sanitize the page_ID. This is just a simple idea because I know you wouldn’t really forget to do that J</p>
<p>Since we used our <a href="http://php.net/manual/en/function.mysql-real-escape-string.php">mysql_real_escape_string()</a> function, we have prevented the injection. Here is an example:</p>
<blockquote><p>$pageID = mysql_real_escape_string( $_POST[ 'page_ID' ] ); //  This is a value of &#8220;&#8216; OR 1&#8242;&#8221;;<br />
$query = &#8220;SELECT * FROM pages WHERE page_id = &#8216;$pageID&#8217;&#8221;;</p>
<p>//output: SELECT * FROM pages WHERE page_id = &#8216;\&#8217; OR 1 \&#8221;</p></blockquote>
<p>As you can see by the output of this, the ‘ Or 1 ‘ actually became \’ OR 1 \’, which has prevented the modification of the WHERE, which has stopped extra data from coming out. Again, this is a first step to stopping injection and I do suggest that you read up more on preventing this. PHP now has other methods of accessing a database that include mysqli and PDO, which have their own way of preventing MySQL injection.</p>
<p><b>Just a dab of Cross-Site injection</b></p>
<p>I figured if we went over so much already, I would write an extra little bit on Cross-Site injection. Cross-Site injection is when the bad guys inject data into your site, which will later be sent to the client-side, to maliciously get data from users, modify your site in a way to change data, or delete just data. Cross-Site injection is huge security vulnerability.</p>
<p>How can you help to prevent this? Well, to start you can use that trusty <a href="http://php.net/manual/en/function.htmlentities.php">htmlentities()</a> function that we used earlier. Using this will make sure that any data that your echo out, will safer and pesky hackers won’t be able to inject into your site so easy. Here is an example:</p>
<p>Let’s say that a user comes to your site and adds a comment to your page and adds the following as their code:</p>
<blockquote><p>&lt;iframe src=&#8221;http://bad-dude-hacker-mafia.com/xss-injection.php&#8221; height=0 width=0 /&gt;</p></blockquote>
<p>If we did nothing to protect our site correctly, and this was displayed on the page every time someone viewed it, they can accomplish things like collecting data, showing information on your site, and so forth. But, if we use our <a href="http://php.net/manual/en/function.htmlentities.php">htmlentities()</a> function, we can prevent this from working:</p>
<blockquote><p>echo htmlentities ( trim ( $comment ) , ENT_NOQUOTES );<br />
//Output: &amp;lt;iframe src=&#8221;http://bad-dude-hacker-mafia.com/xss-injection.php&#8221; height=0 width=0 /&amp;gt;</p></blockquote>
<p>As you can see by the output, this might display as text, but it won’t actually open the bad-dude-hacker-mafia.com site and no havoc has been created.</p>
<p><img class="size-full wp-image-9541 alignleft" alt="5" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/5.jpg" width="140" height="107" /></p>
<p><b>Summary</b></p>
<p>In summary, you have learned how to help your PHP site be more secure by using validation, sanitization, MySQL injection prevention, and some Cross-Site injection sills. Remember that this is only the beginning and I have barely touched the surface. There is plenty of information out there on how to protect your site, and the more you know, the better off you are.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><b><i>Pass on what you have learned, Luke. There is&#8230; another&#8230; Sky&#8230; walker. “- Yoda</i></b></p>
<p align="center">Yeah, Yoda’s pretty wise……</p>
<p><b> </b></p>
<p><b>Some hot links for you:</b></p>
<p><a href="http://phpsec.org/">http://phpsec.org/</a></p>
<p><a href="http://www.php.net/manual/en/">http://www.php.net/manual/en/</a></p>
<p><a href="http://php.net/manual/en/security.php">http://php.net/manual/en/security.php</a></p>
<p><a href="http://www.sitepoint.com/php-security-blunders/">http://www.sitepoint.com/php-security-blunders/</a></p>
<p>&nbsp;</p>
<p><b>Links to images:</b></p>
<p><a href="http://www.awwwards.com/gallery/1141/geek-humor">http://www.awwwards.com/gallery/1141/geek-humor</a></p>
<p><a href="http://xkcd.com/327/">http://xkcd.com/327/</a></p>
<p><a href="http://joyreactor.com/tag/hackers">http://joyreactor.com/tag/hackers</a></p>
<p><a href="http://timothylive.net/blog/tag/xkcd/">http://timothylive.net/blog/tag/xkcd/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/22/php-security-user-validation-and-sanitization-for-the-beginner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DreamObjects Apps</title>
		<link>http://dreamhost.com/dreamscape/2013/05/21/dreamobjects-apps/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/21/dreamobjects-apps/#comments</comments>
		<pubDate>Tue, 21 May 2013 15:00:37 +0000</pubDate>
		<dc:creator>Justin Lund</dc:creator>
				<category><![CDATA[Software and App Development]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud storage]]></category>
		<category><![CDATA[DreamObjects]]></category>
		<category><![CDATA[public cloud]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9501</guid>
		<description><![CDATA[DreamObjects is our cloud storage product we’ve touted since January.  More specifically, it’s object storage, which is a bit different than “standard” storage you’d use at home or work.  Some of the features of object storage that make it unique are that it doesn’t provide a file system and that it’s generally accessed via an [...]]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><a href="http://dreamhost.com/cloud/dreamobjects/">DreamObjects</a> is our cloud storage product we’ve touted since January.  More specifically, it’s object storage, which is a bit different than “standard” storage you’d use at home or work.  Some of the features of object storage that make it unique are that it doesn’t provide a file system and that it’s generally accessed via an API providing the ability to create, read, replace and delete files.</p>
<p dir="ltr">Without the restrictions of a file system or physical hardware, you’re free to store as many files as you like without worrying about RAID configurations or hitting disk capacity limits.  This virtually limitless storage system makes it great for backing up and archiving data.  And since the API is <a href="https://en.wikipedia.org/wiki/RESTful" target="_blank">RESTful</a>, data stored is accessible via the web making it ideal for web content.</p>
<p dir="ltr" style="text-align: center"><a href="http://dreamhost.com/dreamscape/?attachment_id=9511" rel="attachment wp-att-9511"><img class="aligncenter  wp-image-9511" alt="dreamobjects-diskicon" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/dreamobjects-diskicon.png" width="358" height="358" /></a></p>
<p dir="ltr">Object storage is still fairly new.  As an API-based product, there aren’t as many applications available yet as there are for traditional web-based storage, like SFTP and WebDAV.  Fortunately, that’s starting to change pretty quickly.</p>
<p dir="ltr">There are more and more apps that support connecting to DreamObjects.  You can find out about those in our <a href="http://wiki.dreamhost.com/DreamObjects_Third-Party_Applications" target="_blank">wiki</a>.  I want to highlight a few recent additions (just to be clear, we are not receiving any compensation from these apps).</p>
<h3>ExpanDrive</h3>
<p dir="ltr"><a href="https://www.expandrive.com/expandrive">ExpanDrive</a> allows you to connect to external servers like they’re USB flash drives.  I’ve been using ExpanDrive, since back in the day (i.e. 2008), to connect to my web server via SFTP and it would show as a mounted drive on my desktop.  Fast-forward five years and I’m still using ExpanDrive to connect to my web server, and now with version 3, to DreamObjects.  On top of that, new features are added quickly and the support is great.</p>
<p dir="ltr">The folks at ExpanDrive are gracious enough to give our customers <strong>50% off</strong> the newest version that supports connecting to DreamObjects.  Use the promo code <strong>DREAMOBJECTS</strong> to get the discount, but do it soon because the <span style="text-decoration: underline">promo expires May 25th</span>.  There’s a free trial too, so try before you buy.  Works for Windows and Mac.</p>
<h3>iFiles</h3>
<p dir="ltr"><a href="http://www.ifilesapp.com">iFiles</a> is a file manager for the iPhone with numerous connectivity options.  Thanks to customer requests, they added support for DreamObjects.  As the product manager, my heart fluttered!  To make things a bit easier, I documented setting it up in our <a href="http://wiki.dreamhost.com/How_to_Use_iFiles_with_DreamObjects" target="_blank">wiki</a>.  Make sure you copy your access and secret keys and put them in a note or email them to yourself &#8211; you don’t want to be typing those by hand!  iPhone only.</p>
<h3>Transmit</h3>
<p dir="ltr"><a href="http://panic.com/transmit/">Panic’s Transmit</a> has been around since Stuffit files were used on a Mac.  It’s a great FTP client for OS X and thanks to an update earlier this month, it now connects to DreamObjects.  Wow is it speedy!  Check out the <a href="http://wiki.dreamhost.com/How_to_Use_Transmit_with_DreamObjects" target="_blank">wiki</a> for configuration settings.  There’s a seven day free trial and it’s Mac only.</p>
<p dir="ltr"><a href="http://dreamhost.com/dreamscape/?attachment_id=9509" rel="attachment wp-att-9509"><img class="aligncenter size-full wp-image-9509" alt="stuffit" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/stuffit.jpg" width="120" height="128" /></a></p>
<p dir="ltr">These are just a few of the apps that are now compatible with DreamObjects.  We’re working on adding to this list so you have lots of options.  I realize there’s a lack of Linux and Android apps, but we’re working on that too!</p>
<p><b id="docs-internal-guid-65125290-b4cf-2382-c264-02e926846e2b"><br />
</b>If there’s an app you’d like to see work with DreamObjects, let us know and we’ll do what we can to contact the developers.  Customer requests are the best way to push new features.  Or maybe you’ve got an app that you’d like to connect with DreamObjects &#8211; let me know, I’m happy to help!</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/21/dreamobjects-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Storage Story</title>
		<link>http://dreamhost.com/dreamscape/2013/05/20/a-storage-story/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/20/a-storage-story/#comments</comments>
		<pubDate>Mon, 20 May 2013 17:39:13 +0000</pubDate>
		<dc:creator>Kyle Bader</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[ceph]]></category>
		<category><![CDATA[DreamObjects]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9377</guid>
		<description><![CDATA[A whirlwind tour through the various storage technologies used by DreamHost over the years. These days we’re hoping to change how people think about storage by introducing them to Ceph. Ceph is a distributed object store and filesystem designed to provide excellent performance, reliability, and scalability. This talk will describe the Ceph architecture and the [...]]]></description>
				<content:encoded><![CDATA[<p>A whirlwind tour through the various storage technologies used by DreamHost over the years. These days we’re hoping to change how people think about storage by introducing them to Ceph. Ceph is a distributed object store and filesystem designed to provide excellent performance, reliability, and scalability. This talk will describe the Ceph architecture and the impact it has on systems operations. The DreamObjects Ceph cluster weighs in at over 2 petabytes of raw storage capacity while the initial DreamCompute cluster boasts over 3. Chef has helped DreamHost automate the configuration and management of large Linux based storage clusters atop commodity hardware. Ceph and Chef allow us to manage these clusters with two engineers who also share bandwidth with other projects.</p>
<p>&nbsp;</p>
<p class="post-video"><iframe width="500" height="281" src="http://www.youtube.com/embed/AXyI2MULkdI?wmode=transparent?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p class="post-video"><iframe src="http://www.slideshare.net/slideshow/embed_code/20365445" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe>
<div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/kbader/a-storage-story-chef-conf2013" title="A storage story #chef conf2013" target="_blank">A storage story #chef conf2013</a> </strong> from <strong><a href="http://www.slideshare.net/kbader" target="_blank">Kyle Bader</a></strong> </div></p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/20/a-storage-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DreamCon Speaker Series #6: Ralph Castro</title>
		<link>http://dreamhost.com/dreamscape/2013/05/16/dreamcon-speaker-series-6-ralph-castro/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/16/dreamcon-speaker-series-6-ralph-castro/#comments</comments>
		<pubDate>Thu, 16 May 2013 18:56:03 +0000</pubDate>
		<dc:creator>Ralph Castro</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[dreamcon]]></category>
		<category><![CDATA[Speaker]]></category>
		<category><![CDATA[technical support]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9487</guid>
		<description><![CDATA[Curious about what DreamHost looked like back in the old days? Well than you might just want to stop by my DreamCon Session!  Let me take you on a journey through the  history of DreamHost customer service and technical support growth!  I will discuss everything from the Wild West days of 3 support members to our [...]]]></description>
				<content:encoded><![CDATA[<p>Curious about what DreamHost looked like back in the old days? Well than you might just want to stop by my <a href="http://www.dreamhost.com/dreamcon/">DreamCon Session!</a>  Let me take you on a journey through the  history of DreamHost customer service and technical support growth!  I will discuss everything from the Wild West days of 3 support members to our current technical support team, which includes social support and our anti-abuse department.  I will also discuss the change of how we work as we integrated our first CEO.</p>
<p>It has been a long, fun, and strange trip of learning about the hosting business works.  This is a learning experience that many start ups have gone through, and I am excited to share our story with you!  Hope to see you there!</p>
<p><b>What do you do at DreamHost?</b></p>
<p>I am the Vice President of Technical Support</p>
<p><b>What projects do you work on? What do you do on a regular basis?</b></p>
<p>I oversee and guide all decisions that lead to improving the customer support experience.</p>
<p><b>What’s one interesting fact we don’t know about you?</b></p>
<p>I love music and love to sing and dance.  I love sports and coach youth football.</p>
<p><b>What shows are on your DVR?</b></p>
<p>On my DVR is Game of Thrones; I have been a fan of the series from the beginning.  I have had to wait for every book to be released, which if you&#8217;ve had to wait for a George R.R. Martin book you know you&#8217;ll be waiting.  But the pay off has always been amazing and I&#8217;m happy for his success with the series.  It&#8217;s fun to watch the characters come to life on the show as well.</p>
<p><b>What’s your go-to cocktail?</b></p>
<p>Actually it&#8217;s beer and it is any IPA, I love them.</p>
<p><b>What Pandora station is you listening to these days?</b></p>
<p>I don&#8217;t listen to Pandora, but I credit it for helping me find my favorite band a while ago.  Muse!  Good stuff!</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/16/dreamcon-speaker-series-6-ralph-castro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brewing Up a Python Deployment</title>
		<link>http://dreamhost.com/dreamscape/2013/05/15/brewing-up-a-python-deployment/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/15/brewing-up-a-python-deployment/#comments</comments>
		<pubDate>Wed, 15 May 2013 15:00:42 +0000</pubDate>
		<dc:creator>Ryan Petrello</dc:creator>
				<category><![CDATA[Software and App Development]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9280</guid>
		<description><![CDATA[When my family bought me a &#8220;brew-beer-at-home&#8221; kit years ago, they didn’t know what they were getting themselves into.  My first batch tasted a bit like carbonated cereal, but once I got some experience under my belt, the obsession took off. These days, our cars stay in the driveway because our garage is filled with [...]]]></description>
				<content:encoded><![CDATA[<p>When my family bought me a &#8220;brew-beer-at-home&#8221; kit years ago, they didn’t know what they were getting themselves into.  My first batch tasted a bit like carbonated cereal, but once I got some experience under my belt, the obsession took off. These days, our cars stay in the driveway because our garage is filled with containers of barley, temperature-controlled fermenters, and other beer-making paraphernalia. At some point, my appreciation for all things zymurgy intersected with my love for software (especially when <a href="http://python.org/">Python</a> is involved) and I started developing <a href="http://www.draughtcraft.com/">DraughtCraft</a>, a website used by &#8220;home-brewers&#8221; to create and share recipes for beer they&#8217;ve crafted at home.</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9284" rel="attachment wp-att-9284"><img class="alignnone  wp-image-9284" alt="Screen Shot 2013-04-29 at 12.22.51 PM" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/04/Screen-Shot-2013-04-29-at-12.22.51-PM.png" width="525" height="233" /></a></p>
<p>You&#8217;ve undoubtedly got your own passions &#8211; though they may not involve transforming gourds into alcoholic beverages. As <a href="http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of">more</a> and <a href="http://opensource.washingtontimes.com/blog/2010/jan/8/how-we-create-and-deploy-sites-fast-virtualenv-and/">more</a> folks are using Python to publish online, you might find yourself considering it, too. Luckily, running Python applications on DreamHost is pretty simple. Here are some pointers based on my own experience.</p>
<p><i>This guide is targeted toward shared hosting customers, but it&#8217;s also applicable to VPS and dedicated machines, too!</i></p>
<h3><b>Set Up a Virtualenv</b></h3>
<p><a href="http://www.virtualenv.org/">virtualenv</a> is a powerful tool that helps set up isolated Python environments. <i>Always</i> start Python deployments with a fresh virtualenv &#8211; it helps avoid headaches in the long run.</p>
<p>$ virtualenv my-python-app</p>
<p>New python executable in my-python-app/bin/python</p>
<p>Installing setuptools&#8230;&#8230;&#8230;&#8230;done.</p>
<p>Installing pip&#8230;&#8230;&#8230;&#8230;&#8230;done.</p>
<p>To actually <i>use</i> the virtualenv, you&#8217;ll need to activate it:</p>
<p>$ source ~/my-python-app/bin/activate</p>
<p>(my-python-app)$</p>
<h3><b>Serve Python via Passenger</b></h3>
<p>There are a few ways to run Python applications on DreamHost shared accounts, including a CGI-to-WSGI adapter (very slow) and a FastCGI-to-WSGI adapter (faster, but still hard to work with).</p>
<p>Most Python web frameworks (like <a href="http://flask.pocoo.org/">Flask</a>, <a href="http://www.djangoproject.com/">Django</a> and <a href="http://pecanpy.org/">Pecan</a>) are compatible with <a href="https://www.phusionpassenger.com/">Passenger</a> via WSGI support, which is what we recommend for shared hosting customers. Enabling Passenger support can be accomplished from the <a href="https://panel.dreamhost.com/index.cgi?tree=domain.manage&amp;">Manage Domains</a> section of the DreamHost panel, and more detailed instructions for configuring your Python application can be found in the <a href="http://wiki.dreamhost.com/Passenger_WSGI">DreamHost Wiki</a>.</p>
<p>If you&#8217;re a VPS or dedicated customer, you’ve got a few more options. I highly recommend serving Python applications via <a href="http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html">uWSGI</a> or <a href="http://gunicorn.org/%23quickstart">gunicorn</a> behind the <a href="http://nginx.org/">nginx</a> HTTP server.</p>
<h3><b>BYOPython (If You Like)</b></h3>
<p>DreamHost&#8217;s shared accounts come with Python 2.6 installed. If you&#8217;ve got special needs (or just want a more recent version), installing and making your own is pretty easy to accomplish if you can navigate a Linux shell. To get started, <a href="https://panel.dreamhost.com/index.cgi?tree=users.users&amp;">enable <i>shell access</i></a> for your user account in the DreamHost panel. From there, you can download, compile, and install a custom Python into your home directory.</p>
<h3><b>Store Your Data with DreamHost</b></h3>
<p>Most web applications store their critical data in a database. Luckily, DreamHost shared hosting comes with <i>unlimited</i> MySQL5 databases. We also offer pre-optimized MySQL VPS&#8217;s, and dedicated machines for power users who want to explore other options (like PostgreSQL or <a href="http://wiki.dreamhost.com/MongoDB">MongoDB</a>) or manage things themselves.</p>
<h3><b>We Speak Hacker</b></h3>
<p>At DreamHost, we embrace geek culture. Experimentation is highly recommended, and we love getting our hands dirty. If you&#8217;re looking for a step-by-step guide to Python deployment on DreamHost, take a look at Rick Copeland&#8217;s <a href="http://www.ricksresources.com/2012/07/install-python-27-dreamhost/">very thorough series</a> on Python WSGI App Deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/15/brewing-up-a-python-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Cooperative Learning Yesterday Leads to Democratic Workplaces Today</title>
		<link>http://dreamhost.com/dreamscape/2013/05/14/how-cooperative-learning-yesterday-leads-to-democratic-workplaces-today/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/14/how-cooperative-learning-yesterday-leads-to-democratic-workplaces-today/#comments</comments>
		<pubDate>Tue, 14 May 2013 15:00:43 +0000</pubDate>
		<dc:creator>Ed Wesley</dc:creator>
				<category><![CDATA[Business Management]]></category>
		<category><![CDATA[democracy]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[work environment]]></category>
		<category><![CDATA[worldblu]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9448</guid>
		<description><![CDATA[I graduated with a BA in Education in 1994. Back then, the world of teacher education focused on high-level achievement through a concept called cooperative learning. Cooperative learning means exactly what it sounds like! In its most basic definition, it’s a method where teachers assign a task to students, asking them to solve problems as [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left" align="center">I graduated with a BA in Education in 1994. Back then, the world of teacher education focused on high-level achievement through a concept called <i>cooperative learning</i>. Cooperative learning means exactly what it sounds like! In its most basic definition, it’s a method where teachers assign a task to students, asking them to solve problems as a team instead of as individuals.</p>
<p style="text-align: left">The idea of cooperative learning stems from pre-World War II research which found that people work better when they are not in competition. Researchers and Education theorists, like John Dewey and Kurt Lewin, further developed the theory in the 1940s stating that, “<i>in order to maintain and build a democratic society, our children must practice the skills required for task completion in democratic cooperative learning settings” </i>(Sharan, 2010).</p>
<p>Today’s workforce is filled with former students of this education system—a system where we were taught that our opinion matters. And we were taught the skills to hold each person accountable for their individual contributions.</p>
<p>Ironically, when these same students enter the workforce, many are put into positions where they’re told what to do, when to do it, and have little to no say in the way the company they work for makes decisions. Today’s generation of workers enter into most corporate America environments and cultures, and find the complete opposite of a cooperative atmosphere, freedom, and democracy in the workplace.</p>
<p>On the HR side of the company, this presents a challenge.</p>
<p>We face a changing world and a changing generation of workers—a generation demanding more freedom at work. Is giving in to their demands a viable option for both meeting the needs of the employee and the company?</p>
<p><b><i>Imagine a company where democracy is the cornerstone of how the organization operates and a staple in the workplace. </i></b></p>
<p>What would it be like to work at a place where employees are intrinsically motivated and engaged to produce their personal best?  What would happen to employee morale if leadership were transparent with financial and other decisions, and where “Open Door” is not a catch phrase, but the standard?</p>
<p><b><i>Exit Power and Control Model of leadership, enter DreamHost!</i></b></p>
<p>DreamHost is a democratic company. We believe that everyone should have a voice and be heard (including our customers)! We believe choice doesn’t just appease employees-it empowers them. Freedom at work makes employees want to work harder and participate in groups more actively than they would if they were working at a place under leadership using the command and control model.</p>
<p>The large majority of employees here will tell you they <i>love</i> working at DreamHost. We believe it’s because, as leadership, we are committed to the Principles of Democracy laid out by WorldBlu organization.</p>
<p><b>We are proud to be a WorldBlu company! </b></p>
<p>Heard of it? We did not have to pay a registration fee to join like one of those <i>other</i> membership organizations. Instead, in order to be on <b><i>WorldBlu Most Democratic Workplaces</i></b> list, each employee takes survey based on ten principles of freedom in the workplace, and measures how leadership of the company are doing against the principles. It’s about democracy in the workplace. We have made the list for a proud 6 years in a row.</p>
<p>On May 14-16, other WorldBlu companies will have a pow-wow in Denver. Leaders from companies like Zappos, WD-40, New Belgium Beer, and Davita will all be there. At the meeting, I will speak on how fear ruins progress and my own personal transformation from a command and control mindset to one of freedom in the workplace. Leading with fear or creating environments driven by fear makes employees shut down. This is something most leaders know, but still end up practicing it. But leading with trust, equality, and with values will foster more respect in employees and a workplace where people want to be!</p>
<p>For more information on WorldBlu go to <a href="http://www.worldblu.com">www.worldblu.com</a>.</p>
<p>&nbsp;</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9450" rel="attachment wp-att-9450"><img class="alignnone size-full wp-image-9450" alt="2013_6years_" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/2013_6years_.jpg" width="2435" height="2435" /></a></p>
<p>Ed Wesley</p>
<p>Organizational Development and Training Manager</p>
<p>Sharan, Y. (2010). Cooperative Learning for Academic and Social Gains: valued pedagogy, problematic practice. European Journal of Education, 45,(2), 300-313</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/14/how-cooperative-learning-yesterday-leads-to-democratic-workplaces-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How DreamHost’s Customer Experience Team is Working to Make Your Lives Easier</title>
		<link>http://dreamhost.com/dreamscape/2013/05/13/how-dreamhosts-customer-experience-team-is-working-to-make-your-lives-easier/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/13/how-dreamhosts-customer-experience-team-is-working-to-make-your-lives-easier/#comments</comments>
		<pubDate>Mon, 13 May 2013 15:00:22 +0000</pubDate>
		<dc:creator>jrobison</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[customer experience]]></category>
		<category><![CDATA[customer service]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=8483</guid>
		<description><![CDATA[Hello everybody! I’m John and I help manage the relatively new &#8220;Customer Experience&#8221; team here at DreamHost. I’ve been at DreamHost for over 13 years in total and the vast majority of that time has been spent interacting with our customers. When the opportunity arose to help build a new team that is focused on making [...]]]></description>
				<content:encoded><![CDATA[<p><b>Hello everybody!</b></p>
<p>I’m John and I help manage the relatively new &#8220;Customer Experience&#8221; team here at DreamHost. I’ve been at DreamHost for over 13 years in total and the vast majority of that time has been spent interacting with our customers. When the opportunity arose to help build a new team that is focused on making customers happy, I was really excited!</p>
<p>We already have an <i>amazing</i> Tech Support Team so you are probably wondering, &#8220;How does The Customer Experience Team differ from Tech Support?&#8221;</p>
<p>Well that is what I am here to talk about today!</p>
<p><b>We both work to identify issues that are important for customers</b>, both in terms of bugs or design improvements, and we’re happy to help out when a particular issue needs a little extra time and attention.</p>
<p>That said, we do handle some things a bit differently. While our brethren are masters of technical knowledge, we’ve been able to lighten the load on them by taking over account approvals and sales messages, in addition to other less technical tasks</p>
<p><b>We’re also involved in some outreach programs! </b>You may have talked to one or more of us on the phone. We’ve been calling customers who are near the end of the two-month grace period, who are close to having their accounts suspended, as well as notifying customers about the recent data center migration. We’ve also lent a hand in other situations where it was best to pick up a phone and make sure we’ve connected with a group of customers (such as the aforementioned migration project).</p>
<p><b>Here are some other ways our team is working to help DreamHost customers:</b></p>
<ul>
<li>One of our team members has just begun a project to help customers who are outgrowing shared hosting find the right level of service for their current needs.</li>
<li>We have another team member talking to customers who have recently signed up to check-in and find out how their experience has been so far.</li>
<li>We even thought it would be fun to call up the folks who had issued the most support tickets over the last month to make sure everything was going OK. It turns out that they really like us and were just getting some extra help from our support team!</li>
</ul>
<p><b>While that covers most of our day-to-day, we also get to help other teams with larger projects that will make life better for you guys! </b>For example, we&#8217;re developing an improved <a href="http://dreamhoststatus.com/">status page</a> and streamlining the way we gather and implement customer suggestions. We’ve even had a hand in adding features to our hosting product like as CloudFlare and some other exciting things that I can’t mention just yet!</p>
<p>I think the best part of the last year, though, was getting the opportunity to meet many of you at our <a href="http://dreamhost.com/reachout/">Reachout and Touch You Tour</a> stops across America!  Not only was it fascinating to hear all of the different ways in which people use our services, but just getting to make personal connections was really fantastic. I talked to long-time customers who absolutely love our support and some folks who had just barely signed up and were learning to create their first site with WordPress! And, of course, some people were just plain fun to hang out with (shout out to Brian in NY/NJ &#8211; you and your friends made a lasting impression). I can’t wait to see what this year’s events have in store. That, and working with awesome and talented friends, is what gets me excited to come to work every day and see what we can do to make our service a great experience!</p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/13/how-dreamhosts-customer-experience-team-is-working-to-make-your-lives-easier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customer Spotlight: Angsty G</title>
		<link>http://dreamhost.com/dreamscape/2013/05/10/customer-spotlight-angsty-g/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/10/customer-spotlight-angsty-g/#comments</comments>
		<pubDate>Fri, 10 May 2013 15:00:15 +0000</pubDate>
		<dc:creator>@missmariss</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[customer]]></category>
		<category><![CDATA[loyalty]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9411</guid>
		<description><![CDATA[I stubbled upon Angsty G&#8217;s website when I was getting ready to post it on our Daily Dream sometime last year.  I immediately become obsessed with her work!  Even better&#8230; she is a DreamHost customer!  I was so happy when she agreed with so much enthusiasm to do a customer spotlight with us! Where can [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9416" rel="attachment wp-att-9416"><img class="alignnone size-full wp-image-9416" alt="1" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/1.jpg" width="2000" height="1300" /></a></p>
<p><strong>I stubbled upon Angsty G&#8217;s website when I was getting ready to post it on our Daily Dream sometime last year.  I immediately become obsessed with her work!  Even better&#8230; she is a DreamHost customer!  I was so happy when she agreed with so much enthusiasm to do a customer spotlight with us!</strong></p>
<p><b>Where can we find your website?</b></p>
<p>On the Internet, for sure! Or <a href="http://www.angstyg.com/">www.AngstyG.com</a>, more specifically.</p>
<p><b>Tell me about Angstyg Design..</b></p>
<p>It&#8217;s a love story about me and my trusty laptop, and the sad necessity of income in a layout-eats-layout world. It&#8217;s my second try at freelancing. There&#8217;s no conventionally &#8216;professional&#8217; face to it. I hate referring to myself in third person, or doing that thing where people fiddle with personal pronouns to make it seem like there are multiple people under the banner, pecking away at keyboards and answering phones, when really it&#8217;s just one dude checking his email a lot. That&#8217;s gross. AngstyG is just me — there it is.</p>
<p><b>Well you are extremely talented! How did you get started in the design business?</b></p>
<p>I got into graphics doing Buffy fan art when I was a teenager. Fast-forward five years and I&#8217;d gotten good enough to land a graphics designer position at a local screen-printing company. The pay was crap, and I traded my time between recreating logos and doing manual labor in the form of folding shirts and degreasing screens. I haven&#8217;t had a job since that wasn&#8217;t related to graphics or web development in some way.<b> </b></p>
<p><b>Oh man&#8230; you just tugged at my heart strings. Buffy the Vampire Slayer was my favorite tv show growing up!</b></p>
<p><b>How would you define your design style?</b></p>
<p>Totally fluid. I go through phases all the time. Sometimes I crave delicate ornate designs and other times I crave bold, grungy stuff. It really just depends on my mood or inspiration. I&#8217;m just coming out of a massive art nouveau phase, for instance. I&#8217;m also in a complicated relationship with vintage and retro styles. I get bored really easily, so I&#8217;m always halfway onto the next thing before the previous thing is finished, but I&#8217;m not <i>fickle</i>, okay. I&#8217;m <i>creatively promiscuous</i>.</p>
<p><b>What work do you enjoy doing the most?</b></p>
<p>Book covers, at the moment. I&#8217;ve done websites and other virtual mediums for so long that having something to physically hold is sort of trippy. I&#8217;d love to fill up a bookshelf one day. I also have an affinity for horror designs, which is sadly a very uncommon job for me to encounter. I&#8217;d also love to illustrate and paint&#8230; if I weren&#8217;t so terrible at it.</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9413" rel="attachment wp-att-9413"><img class="alignnone size-full wp-image-9413" alt="Pageflex Persona [document: PRS0000035_00024]" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/4.jpg" width="1000" height="738" /></a></p>
<p><b>What is your dream project?</b></p>
<p>Charity design and development work is very fulfilling to me since I&#8217;m low-income and can rarely spare money to give away. I&#8217;m always excited to get into a non-profit project if time and resources allow it (and sometimes when they don&#8217;t). LGBTQ rights, animal rescue, women&#8217;s rights, cancer research, and domestic violence are a few causes most close to me. I&#8217;d love to do something big for one of those.</p>
<p><b>Where do you go for inspiration?</b></p>
<p>I have a whole variety of clients, so I usually look up the competitors and see what&#8217;s trendy right now. Sometimes I mimic it and sometimes I go against it. It just depends on how adventurous the client is feeling. For my personal stuff, I can go a little slower, so I just build up and save ideas until I can&#8217;t wait a second longer to execute them.</p>
<p><b>How do you start planning your designs before you start drafting them?</b></p>
<p>Trial and error. I&#8217;m a real fly-by-the-seat-of-my-pants&#8217;er, so I usually don&#8217;t. I just open up Photoshop and start playing around. Sometimes nothing sticks, but eventually everything will slot into place and make sense in my head, and I just go for it. Writing is a hobby of mine, and I&#8217;m the same way with that. Outlines never fare well with me.</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9415" rel="attachment wp-att-9415"><img class="alignnone size-full wp-image-9415" alt="2" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/2.jpg" width="600" height="450" /></a></p>
<p><b>How long have you been with DreamHost?</b></p>
<p>A little over 2 years now.</p>
<p><b>Why did you choose DreamHost?</b></p>
<p>I used 1and1 for years, but I eventually started getting actual traffic (what a novelty!), and my shared server proved to be temperamental. My site would crash if a dozen people even looked at it the wrong way. I serenaded it once, hoping to gain some favor, but it was no dice. It 500&#8242;ed all over the place.</p>
<p>Then, in 2010, I did a charity auction project and the chairwoman was using Dreamhost. I was terrified because the charity was super popular and necessitated constant, unobstructed uptime so folks could bid on time-sensitive items. The auction only ran for seven days and got more traffic in a week than most sites get in a lifetime. It never went down. We raised almost $150,000 for pediatric cancer research that week. A month later, I packed my bags and gave 1and1 the finger.</p>
<p><b>That all makes me and everyone at DreamHost very happy!</b></p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9417" rel="attachment wp-att-9417"><img class="alignnone size-full wp-image-9417" alt="5" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/5.jpg" width="997" height="725" /></a></p>
<p><b>Do you use any tools in the DreamHost Panel you use?</b></p>
<p>I have a client who uses the announce lists weekly. I also have promo codes for the affiliate program and am usually kicking around phpmyadmin for one reason or another. I also use the domain search exclusively. Back in the day I used search any old place, but then one of my ideas got snatched up by a sniper who parked it and wanted to charge me $4,000. I realized where you search matters, like, pretty hardcore.</p>
<p><strong>So happy to hear you are a part of our affiliate program!</strong></p>
<p><b>Do you have any suggestions for DreamHost? Anything you would like to see, use, and change?</b></p>
<p>The only real qualm I&#8217;ve ever had is with regards to outgoing SMTP, since Dreamhost is very spam savvy and limits the amount of emails that can be sent from a website. However, I understand and appreciate the purpose of this, so I do my best to work around it when possible.<b> </b></p>
<p><b>If you were a super hero, who would you be and why?</b></p>
<p>I asked my significant other and his reply was, &#8220;You&#8217;d have to be hot and smart, maybe Jean Grey.&#8221; Then I said Rogue was totally cooler and he was like, &#8220;But Rogue has ~issues~,&#8221; and I was all, duh she&#8217;s a very complex multifaceted character, though to be fair she&#8217;s probably a lot more fulfilling to read than to be.</p>
<p>And then he and my BFF reminded me that Buffy totally qualifies as a superhero, so yeah. That! Slayers do it better.</p>
<p><strong>I would have chosen the exact same superheros.  Rogue is my favorite Xmen and Buffy is so badass!</strong></p>
<p><b>Where else can we find Angstyg online? </b></p>
<p>I&#8217;m on twitter @AngstyG, but I curse like a sailor and talk about terrible porn quite often. Just.. you know, a disclaimer.</p>
<p><a href="http://dreamhost.com/dreamscape/?attachment_id=9414" rel="attachment wp-att-9414"><img class="alignnone size-full wp-image-9414" alt="3" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/3.jpg" width="529" height="879" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/10/customer-spotlight-angsty-g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DreamCon Speaker Series #5: Rick Boruki</title>
		<link>http://dreamhost.com/dreamscape/2013/05/09/dreamcon-speaker-series-5-rick-boruki/</link>
		<comments>http://dreamhost.com/dreamscape/2013/05/09/dreamcon-speaker-series-5-rick-boruki/#comments</comments>
		<pubDate>Thu, 09 May 2013 19:09:39 +0000</pubDate>
		<dc:creator>rickborucki</dc:creator>
				<category><![CDATA[DreamHost Updates]]></category>
		<category><![CDATA[dreamcon]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://dhwordpress.dreamhost.com/dreamscape/?p=9427</guid>
		<description><![CDATA[Search engine marketing: Where do you begin? Do you know where you are? Do you know where you can be found? Do you know where you want to be? These are all great questions for website owners to ask and discover the answers to when it comes to search engine marketing. Don’t worry. We’re going [...]]]></description>
				<content:encoded><![CDATA[<p align="center"><a href="http://dreamhost.com/dreamscape/2013/05/09/dreamcon-speaker-series-5-rick-boruki/seo/" rel="attachment wp-att-9432"><img class="alignnone  wp-image-9432" alt="SEO" src="http://dreamscape-com-media.objects.dreamhost.com/dreamscape/files/2013/05/SEO.jpg" width="1440" height="720" /></a></p>
<p align="center"><b>Search engine marketing: Where do you begin?</b></p>
<p>Do you know where you are? Do you know where you can be found? Do you know where you want to be? These are all great questions for website owners to ask and discover the answers to when it comes to search engine marketing.</p>
<p>Don’t worry. We’re going to help answer these and many more questions during my session at DreamCon.  You won’t want to miss it.</p>
<p>We’ll address the latest opportunities and issues when it comes to search marketing, highlighting the latest news from Google and Bing.  But, guess what? There are also many ways to get your business noticed outside of the “big guys.”. In my session we’ll delve into the many search options that are available, and try to uncover the options that will work best for you and your business.</p>
<p>We’ve made our list and checked it twice, and soon we’ll be sharing that list of search marketing to do’s with you. We’ll get you on your way to becoming the search star that we know you can be.</p>
<p>We can’t wait to see you get you started&#8230; and then start seeing results.</p>
<p><b>And now, here’s a little about me and my role at DreamHost:</b></p>
<p><i>What do you do at DreamHost? What projects do you work on? What do you do on a regular basis?</i></p>
<p>Wow, let’s see, what don’t I do when it comes to online marketing? We run a very lean organization in the marketing department at DreamHost. I’m responsible for:</p>
<ul>
<li>Search and display marketing</li>
<li>Affiliate marketing</li>
<li>SEO programs</li>
<li>Email marketing</li>
<li>Strategic online partner marketing</li>
<li>Social advertising</li>
</ul>
<p>Among other things…</p>
<p>Sound fun? Well, it actually is. I can confidently say that there’s never a dull moment and always a new challenge every day.</p>
<p>One of the big projects that I am working on right now is enhancing our affiliate rewards program. DreamHost was built on customer referrals, which we are very proud of, but it’s about time we give the program a “makeover.” Look for new and exciting things coming soon!</p>
<p><em>Facebook, Twitter, Instagram or Pinterest?</em></p>
<p>Twitter is my favorite social app.  I like keeping things short, sweet and to the point!</p>
<p><i>What’s your alma mater?</i></p>
<p>Go Broncos of Western Michigan University!</p>
<p><i>What’s your favorite LA eatery?</i></p>
<p>California Shabu is sooo addicting, I love it. For all of you who don’t mind cooking your own food, it’s delicious, healthy and a very social meal.</p>
<p>&nbsp;</p>
<p><em>All graphic, names, and logos used are trademarks of their respective companies and are hereby acknowledged. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://dreamhost.com/dreamscape/2013/05/09/dreamcon-speaker-series-5-rick-boruki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic
Content Delivery Network via Amazon Web Services: S3: dreamscape-com-media.objects.dreamhost.com

Served from: dreamhost.com @ 2013-05-23 14:44:32 -->