<?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>Woody Hayday &#124; Blog &#187; Web Technology</title>
	<atom:link href="http://blog.woodylabs.com/category/web-technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.woodylabs.com</link>
	<description>An exploration of life, technology and writing</description>
	<lastBuildDate>Wed, 25 Jan 2012 07:08:55 +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>1and1 Web Hosting &amp; Git &#8211; Installing it for singular dev</title>
		<link>http://blog.woodylabs.com/2012/01/1and1-web-hosting-git-installing-it-for-singular-dev/</link>
		<comments>http://blog.woodylabs.com/2012/01/1and1-web-hosting-git-installing-it-for-singular-dev/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:43:30 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[1and1]]></category>
		<category><![CDATA[ghetto first version]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=833</guid>
		<description><![CDATA[I have a new project in the works and I thought it about time to get a verioning setup working beyond locally, I don&#8217;t want to use a PaaS (like Cloud control) though for this one as its Top Secret (for now.) Yeah Yeah I know, shared web hosting, 1and1 &#8211; not so secret eh? [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I have a new project in the works and I thought it about time to get a verioning setup working beyond locally, I don&#8217;t want to use a PaaS (like Cloud control) though for this one as its Top Secret (for now.) Yeah Yeah I  know, shared web hosting, 1and1 &#8211; not so secret eh? Well behind a .htaccess passworded directory is better than sitting on AWS via a PaaS, it is, believe me.</p>
<p>The benefit of using GIT in the way below is that it maintains version history AS WELL as offering a managed host, i.e. it deals with uploading as well as versioning (in 1 git bash push.)</p>
<p>So here&#8217;s the scenario &#8211; there&#8217;s one of you, or maybe a few core founders/dev&#8217;s and you want to use GIT to version control your developments of a new web app or site. You already have a shared hosting account with 1and1 which works fine up to 20k hits a day or so, is there really need to have the thing scalable on demand from day one? No? Great, read on. If you REQUIRE scalability off the bat (I bet you don&#8217;t, really) then go find a PaaS/jump on AWS, for now here&#8217;s how to get GIT versioning (with automatic publication) working on your 1and1 shared hosting.</p>
<p>Firstly go read <a href="http://toroid.org/ams/git-website-howto" target="_blank" rel="nofollow">this</a>, its a great guide that pretty much* got me there (95% of the credit to Abhijit), there&#8217;s just a few changes to get it to work on 1and1. </p>
<h4>How I did it: GIT on 1and1</h4>
<p>Load up your FTP, get to the root of your hosting and make your main site dir, in this case we will call it AppDev1:<br />
<code>/AppDev1</code><br />
Next make two directories underneath it: &#8220;repo&#8221; and &#8220;live&#8221;, I shall explain these after you have made them:<br />
<code>/AppDev1/live<br />
/AppDev1/repo</code><br />
What these two are going to do is give you a live &#8220;root&#8221; for your web app/site as well as a GIT repository (which stores all the changes.) By separating them you keep everything simple. [live = web root folder, repo (or whatever you call it) = git bare repository.]</p>
<p>Next locally (on your machine) create a folder which you want to develop in:<br />
<code>C:/EpicNewApp</code></p>
<p>&#8230;And load up GIT BASH (assume you have) and enter the following:<br />
<code>cd "C:/EpicNewApp";<br />
git init;</code></p>
<p>Next go ahead and load your SSH client (putty) and log into your 1and1 Account (there is guidance on 1and1 under SSH accounts, if you need it.) Once logged in enter the following:</p>
<p><code>cd "/AppDev1/repo"<br />
git init --bare<br />
cat > hooks/post-receive<br />
#!/bin/sh<br />
GIT_WORK_TREE="../live" git checkout -f<br />
chmod +x hooks/post-receive</code></p>
<p><strong>*note</strong>: This differs from the aforementioned guide in the address entered under GIT_WORK_TREE, this is the only way I could get this setup to work on 1and1.</p>
<p>You can also simply stick these lines into a file called post-receive and upload the file to the &#8220;hooks&#8221; folder of your new bare repository (repo), if you are so inclined. </p>
<p>That&#8217;s it, your done with the SSH, now you can bind a remote location in GIT BASH (replace the obvious:)<br />
<code>$ git remote add web "ssh://u99999999@yourMain1and1Domain.com/~/AppDev1/repo/"</code><br />
&#8230;And go ahead and push to 1and1 (you will need your SSH password to do so.)<br />
<code>$ git push web +master:refs/heads/master</code><br />
All being well this should have pushed a version to your /AppDev1/repo folder and also updated the live files as per your changes!</p>
<p>Happy Ghetto Versioning!</p>
<p><strong>Note</strong>: As per comments, removed .git reference from link, thanks Ano.</p>
<div class="shr-publisher-833"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2012/01/1and1-web-hosting-git-installing-it-for-singular-dev/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Recent Projects, Top Freelancer People Per Hour</title>
		<link>http://blog.woodylabs.com/2011/12/recent-projects-top-freelancer-on-people-per-hour/</link>
		<comments>http://blog.woodylabs.com/2011/12/recent-projects-top-freelancer-on-people-per-hour/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 09:45:57 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Looking Back]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[freelancing]]></category>
		<category><![CDATA[people per hour]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=826</guid>
		<description><![CDATA[It was a busy November, but it paid off &#8211; completed a good few projects for some great clients, and whats more I won no# 1 Top Freelancer @ people per hour! You can read more about some of my recent projects here, although there&#8217;s only a few case studies up, the most public of [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<div align="center"><a href="http://www.peopleperhour.com/toprankedfreelancers.php?month=1320105600" target="_blank"><img class="aligncenter" title="I am Top 1 of 169,000 freelancers for November!" src="http://www.woodyhayday.com/pph/pph-TopFreelancer.png" alt="I am Top 1 of 169,000 freelancers for November!" width="150" height="110" border="0" /></a></div>
<p>It was a busy November, but it paid off &#8211; completed a good few projects for some great clients, and whats more I won no# 1 Top Freelancer @ people per hour!</p>
<p>You can read more about some of my recent projects <a href="http://www.woodyhayday.com/pph/">here</a>, although there&#8217;s only a few case studies up, the most public of the projects was a great life planning app that I built to first iteration, you can check it out (DO IT NOW!) @ <a href="http://www.5years.me" target="_blank">5years.me</a> &#8211; built in the cloud on PaaS, behind the scenes I have also helped develop a social media analytics platform that is a marketeers wet dream, maybe as it gets properly released I will divulge more on that. Needless to say November was a great month of good work for great clients &#8211; off the radar now until my big project in early 2012 <img src='http://blog.woodylabs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div align="center"><a href="http://www.woodyhayday.com/pph/php-mysql-jquery-web-application-built-cloudcontrol.png" target="_blank"><img src="http://www.woodyhayday.com/pph/life-planning-web-app-built-in-the-cloud-php-jquery-mysql-schema.png" width="640" height="320" alt="Life Planning Web App Built in the cloud (cloudcontrolled.com)" border="0" /></a></div>
<div class="shr-publisher-826"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/12/recent-projects-top-freelancer-on-people-per-hour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Did you know: Facebook short url&#8217;s already kinda exist</title>
		<link>http://blog.woodylabs.com/2011/11/did-you-know-facebook-short-urls-already-exist/</link>
		<comments>http://blog.woodylabs.com/2011/11/did-you-know-facebook-short-urls-already-exist/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 09:46:03 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Facebook Pages]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[dataspace savings]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook shorturl]]></category>
		<category><![CDATA[random occurance]]></category>
		<category><![CDATA[shorturl]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=800</guid>
		<description><![CDATA[As a side note: facebook shorturls, or at least abreviated urls exist. We all know about fb.me, but fb.com works too&#8230;. Random occurance: Was saving down facebook data into a database from the graph api, wanted to save the urls in a mixed url table but didn&#8217;t want to bother saving the whole http://www.facebook.com every [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>As a side note: facebook shorturls, or at least abreviated urls exist. We all know about fb.me, but fb.com works too&#8230;. Random occurance:</p>
<p>Was saving down facebook data into a database from the graph api, wanted to save the urls in a mixed url table but didn&#8217;t want to bother saving the whole http://www.facebook.com every time, what a waste of data. Initially I lazily abbreviated this too: fb.com/whateverthepagewas, left the acquisition stuff to its job and then went off to do something else. Coming back to the management system I accidentally clicked one of these fb.com/ links, and it worked! Facebook have set it up as a redirect. Maybe this was common knowledge but I hadn&#8217;t heard of it before&#8230;Anyhow a useful biproduct of dataspace savings!</p>
<h1 align="center">So check it out: <a href="http://fb.com/hayday">fb.com/hayday</a></h1>
<p>That will redirect you too http://www.facebook.com/hayday (my page.) &#8211; just like fb.me, but traditional-like, lol. Neat eh? Anyone else know any facebook quick wins?</p>
<div class="shr-publisher-800"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/11/did-you-know-facebook-short-urls-already-exist/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL datetime examples &#8211; first/last day of the year &#8211; dates and unix-times</title>
		<link>http://blog.woodylabs.com/2011/11/mysql-datetime-examples-firstlast-day-of-the-year-dates-and-unix-times/</link>
		<comments>http://blog.woodylabs.com/2011/11/mysql-datetime-examples-firstlast-day-of-the-year-dates-and-unix-times/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 09:09:22 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Snippets]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Transactional SQL]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[data schemas]]></category>
		<category><![CDATA[facebook data acquisition]]></category>
		<category><![CDATA[facebook graph api]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Workbench]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[Timestamps]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=797</guid>
		<description><![CDATA[For some reason I had an abstract memory of SQL SERVER 2000, timestamps and pain. Who knows why. Perhaps its a faulty memory. lol. Anyhow working with timestamps in MySQL/MSSQL these days is nothing short of simple. With MySQL Workbench free its ridiculous how far the barrier of entry for database design has come, its [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>For some reason I had an abstract memory of SQL SERVER 2000, timestamps and pain. Who knows why. Perhaps its a faulty memory. lol. Anyhow working with timestamps in MySQL/MSSQL these days is nothing short of simple. With MySQL Workbench free its ridiculous how far the barrier of entry for database design has come, its now all pleasant schema&#8217;s and error messages that make sense, gone are the days of spending half the time fixing/navigating the database system, they just work now (99% of the time) what a lucky generation of programmers! Anyhow here&#8217;s some datetime examples that you might find useful:</p>
<p>Get last day of last year &#8211; obvious, but still (+1 this for first day):</p>
<pre class="brush: sql; title: ; notranslate">SELECT DATE(CURDATE()- INTERVAL DAYOFYEAR(CURDATE()) DAY);</pre>
<p>And how useful&#8230; FROM_UNIXTIME takes a unix timestamp and makes it a friendly datetime, its like they KNOW I am coding for facebook data acquisition&#8230;Anyhow&#8230;</p>
<p>To make a GMT UNIX time-stamp for the first day of this month:</p>
<pre class="brush: sql; title: ; notranslate">SELECT UNIX_TIMESTAMP(CONVERT_TZ(DATE(CURDATE()- INTERVAL DAYOFMONTH(CURDATE()) DAY), '+0:00', 'SYSTEM'));</pre>
<p>You can switch out the dates obviously, and there are probably other ways, still, mostly pain free.  </p>
<div class="shr-publisher-797"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/11/mysql-datetime-examples-firstlast-day-of-the-year-dates-and-unix-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix/Hack to make AutoSuggest JQuery Plugin work</title>
		<link>http://blog.woodylabs.com/2011/11/fixhack-to-make-autosuggest-jquery-plugin-work/</link>
		<comments>http://blog.woodylabs.com/2011/11/fixhack-to-make-autosuggest-jquery-plugin-work/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 13:41:12 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[autosuggest]]></category>
		<category><![CDATA[client-side]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=817</guid>
		<description><![CDATA[When I came across Drew Wilson&#8217;s flashy JQuery Autosuggest plugin I happily downloaded the code and started using it within a recent project, but as I used it more and more I kept hitting a bug &#8211; don&#8217;t know if its just the version of JQuery I was tied to using or whether everyone using [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>When I came across <a href="http://code.drewwilson.com/entry/autosuggest-jquery-plugin" target="_blank">Drew Wilson&#8217;s flashy JQuery Autosuggest plugin</a> I happily downloaded the code and started using it within a recent project, but as I used it more and more I kept hitting a bug &#8211; don&#8217;t know if its just the version of JQuery I was tied to using or whether everyone using the pretty plugin suffers it. Either way there was peculiar happenings when removing elements, they would remove 75% of the time, but the other 25% they would remove only to not maintain the associated CSV list of objects properly. </p>
<p>Irritating when the thing looks so pretty out of the box. So rather than opt for one of the non-pretty options I just hacked it. Brutally I just added code to maintain an input as a csv, it needs fixing really but this does work, for now.</p>
<p><a href="http://blog.woodylabs.com/downloads/jquery.autoSuggest.fixed.csv.rar" target="_blank">Click here to download my hack/fixed version</a> which maintains a separate csv (in a designated ID &#8211; search replace &#8220;csvHolder&#8221; if you want to change its ID.)</p>
<p>Hopefully Drew can update his plugin so it works out of the box, its a really useful plugin. </p>
<p><strong>Note:</strong> This rar includes <a href="http://blog.woodylabs.com/2011/11/maintain-a-csv-with-javascript-keep-a-hidden-list/">my csv quick maintaining functions</a> which are required.</p>
<div class="shr-publisher-817"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/11/fixhack-to-make-autosuggest-jquery-plugin-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting facebook Apps/Applications/iFrame Pages on 1and1 (SSL)</title>
		<link>http://blog.woodylabs.com/2011/08/hosting-facebook-appsapplicationsiframe-pages-on-1and1-ssl/</link>
		<comments>http://blog.woodylabs.com/2011/08/hosting-facebook-appsapplicationsiframe-pages-on-1and1-ssl/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 08:28:37 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Facebook Graph API]]></category>
		<category><![CDATA[Facebook Pages]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[1and1]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook apps]]></category>
		<category><![CDATA[fan gating]]></category>
		<category><![CDATA[fan page]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=778</guid>
		<description><![CDATA[For those who run facebook fan pages you will likely know about fan gating and the importance of adding your own content to your facebook fanpage. This used to be done with the facebook static fbml app but that&#8217;s really the old way, looking forward the best way is to make its own specific app. [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>For those who run facebook fan pages you will likely know about fan gating and the importance of adding your own content to your facebook fanpage. This used to be done with the facebook static fbml app but that&#8217;s really the old way, looking forward the best way is to make its own specific app. There&#8217;s <a href="http://www.hyperarts.com/blog/adding-iframe-application-to-facebook-fan-page/" rel="nofollow" target="_blank">a bunch</a> of <a href="http://www.hyperarts.com/blog/facebook-secure-browsing-https-iframe-tabs-mixed-content-warnings/" rel="nofollow" target="_blank">really good stuff</a> out there about setting up your apps but none of it seems to deal with the middle level guys who don&#8217;t want to shell out time/capital setting up amazon hosting (probably a good idea either way) or don&#8217;t strictly have https for the domain, those that just need an interim/growth testing solution with their current hosts, specifically in this case 1and1.</p>
<p>You <em>can</em> host facebook apps on any host, but hosting somewhere unsecure (not accessible via https) will flag up the following prompt for anyone browsing to the page with secure browsing turned on (high proportion of fb users.) You CAN also use amazon cloud storage (S3) for free https file storage, up to a level, however you <em>cannot run server side code</em> (php/ASP.NET) without setting up a server with their EC service.</p>
<div align="center"><img class="aligncenter size-full wp-image-779" title="facebook-fan-page-app-creation-on-1and1-ssl" src="http://blog.woodylabs.com/wp-content/uploads/2011/08/facebook-fan-page-app-creation-on-1and1-ssl.png" alt="" width="458" height="217" /><br /><em>Not pretty eh</em>? What will that do to your conversion rates? Yep nothing good.</div>
<p><span id="more-778"></span></p>
<p>Its not just the mavericks either, for example brands like banana republic are still running http stuff, prompting the user with this message on loading their like-capture pages.</p>
<h3>Set up 1and1 shared hosting to host Secure SSL facebook apps/applications/tab pages</h3>
<p>So anyway here&#8217;s the cheap, quick way to hosting your facebook apps SECURELY using 1and1 shared hosting.</p>
<ol>
<li>Log onto admin.1and1.co.uk (or .com)</li>
<li>(Optional) Register a domain name which you don&#8217;t mind generically hosting your fb content. For me this is www.whfb.co.uk &#8211; this will only show up if users looked at the information for the frame, probably wont ever matter, but if you are running a whole host of different niche pages it might be worth it for simplicity/segmentation.</li>
<li>Go to domain management section and click &#8220;Shared SSL Encryption&#8221; under SSL option<br /><img class="aligncenter size-full wp-image-780" title="shared-ssl-for-facebook-apps-applications-1and1" src="http://blog.woodylabs.com/wp-content/uploads/2011/08/shared-ssl-for-facebook-apps-applications-1and1.png" alt="" width="364" height="83" /></li>
<li>Assign the Shared SSL Encryption to your generic domain/main domain you want to use<br /><img class="aligncenter size-full wp-image-781" title="assign-ssl-to-domain-for-creating-facebook-apps-secure" src="http://blog.woodylabs.com/wp-content/uploads/2011/08/assign-ssl-to-domain-for-creating-facebook-apps-secure.png" alt="" width="224" height="76" /></li>
<li>Setup a folder under your domain like you would with any facebook page, use the facebook php api to fangate or just put some html up there, bare in mind all objects referenced in what you put up should direct resources to &#8220;https&#8221; not http. That is if you reference &#8220;http://www.example.com/someimage.png&#8221;, switch the http for https (save your own copy of the file if you need to. Referencing images locally in the folder should work fine for http/https if you use the same domain.</li>
<li>Setup your facebook app (theres thousands of guides on this&#8230;) and set the following (under &#8220;Select how your app integrates with Facebook -&gt; Page Tab&#8221;)<br /><img class="aligncenter size-full wp-image-782" title="select-how-your-tab-app-integrates-with-facebook-http-https" src="http://blog.woodylabs.com/wp-content/uploads/2011/08/select-how-your-tab-app-integrates-with-facebook-http-https.png" alt="" width="423" height="146" /></li>
<li>Add the app to your facebook fan page and visit it, (setting it as default landing page perhaps <img src='http://blog.woodylabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) &#8211; you should not get any security messages, if you have you need to go back and check your html is pointing to any external elements via https.</li>
</ol>
<p>Chances are if you are running 1and1 shared hosting (or any other major) then you will have SSLRelays free of charge with your package, what&#8217;s more this takes about 1 minute to setup, so test with this before you stick stuff in the cloud!</p>
<div class="shr-publisher-778"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/08/hosting-facebook-appsapplicationsiframe-pages-on-1and1-ssl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automated Editor Released!</title>
		<link>http://blog.woodylabs.com/2011/08/automated-editor-released/</link>
		<comments>http://blog.woodylabs.com/2011/08/automated-editor-released/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 12:33:55 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Affiliate Marketing]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Automated Editor]]></category>
		<category><![CDATA[Small Nugget Projects]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=697</guid>
		<description><![CDATA[A nice small chunk of a project, Automated Editor is a wordpress plugin which allows you to automate some of the post editing process. Written to be lightweight and flexible it can do a lot with a little input. The plugin replaces a previous script/small app I had previously commissioned to offer automatic string replacement/removal [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.automatededitor.com/i/automated-editor-box-109-t.png" alt="Automated Editor wordpress plugin" border="0" align="left" style="margin:9px;"/><br />
A nice small chunk of a project, <a href="http://www.automatededitor.com" target="_blank">Automated Editor</a> is a wordpress plugin which allows you to automate some of the post editing process. <a href="http://www.automatededitor.com/compare-versions/" target="_blank"><img src="http://www.automatededitor.com/i/download-automated-editor-word-press-plugin.png" alt="Automated Editor wordpress plugin" border="0" align="right" style="margin:5px;"/></a>Written to be lightweight and flexible it can do a lot with a little input. The plugin replaces a previous script/small app I had previously commissioned to offer automatic string replacement/removal from posts at point of publishing. With this public release version though it has had all the bells and whistles added to it, and will do some other useful tasks such as the following:
<div style="margin-top:20px">
<ul>
<li>Replace one string with another (String replace) e.g. Replace ‘X’ with ‘Y’</li>
<li>Remove instances of a string (String remove) e.g. Remove all instances of ‘X’</li>
<li>Replace strings which match a regex rule with another string (Regex replace) e.g. Replace any numbers (^[0-9]{3}$) with ‘y’</li>
<li>Remove strings which match a regex rule (Regex replace) e.g. Remove any numbers (^[0-9]{3}$)</li>
<li>Prepend a string onto the front of a post (Prepend) e.g. Add ‘X’ to the top of a post</li>
<li>Append a string onto the back of a post (Append) e.g. Add ‘X’ to the bottom of a post</li>
<li>Add a post into a category (Add category) e.g. Add category ‘X’ to the post if its not already added.</li>
<li>Add a tag onto a post (Add tag) e.g. Add tag ‘X’ to the post if its not already added.</li>
<li>Change a posts date</li>
<li>Change a posts status</li>
</ul>
<p>(Taken from <a href="http://www.automatededitor.com/anatomy/#rules" target="_blank">here</a>.)</div>
<p>If you want to read more about the plugin you can check out this post on, <a href="http://www.automatededitor.com/what-is-the-point-in-the-automated-editor-plugin/" target="_blank">What is the point in Automated Editor</a> or go right ahead and <a href="http://wordpress.org/extend/plugins/automated-editor/" target="_blank">get it from wordpress.org</a> or buy the professional version at <a href="http://www.automatededitor.com/compare-versions/" target="_blank">AutomatedEditor.com</a>.</p>
<p>Watch this space for a few posts on how I use the plugin, (it works fantastically well when rigged up with <a href="http://blog.woodylabs.com/2009/10/auction-2-post/" target="_blank">Auction2Post</a>.)</p>
<div class="shr-publisher-697"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/08/automated-editor-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Namestation starts charging &#8211; Namestation.com review/alternatives</title>
		<link>http://blog.woodylabs.com/2011/06/namestation-starts-charging-namestation-com-reviewalternatives/</link>
		<comments>http://blog.woodylabs.com/2011/06/namestation-starts-charging-namestation-com-reviewalternatives/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 11:04:36 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=652</guid>
		<description><![CDATA[I remember it as MakeWords.com, a useful site which would usually suck hours of my life away showing me domain names I didn&#8217;t originally know I wanted/needed. It would usually come up with the results though, providing me with a decent domain for a new project or site. So when I wanted to dial in [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I remember it as MakeWords.com, a useful site which would usually suck hours of my life away showing me domain names I didn&#8217;t originally know I wanted/needed. It would usually come up with the results though, providing me with a decent domain for a new project or site. So when I wanted to dial in recently and generate some sort of short url domain for this blog and was redirected to <a href="http://www.namestation.com" target="_blank" rel="nofollow">namestation</a> I had one of those &#8220;that&#8217;s not where I left it&#8221; moments.</p>
<p>So its moved, re-branded and been closed off. That is close off for free querying/use. I can understand why this has happened, being a successful domains generation site it was probably getting heavy traffic, perhaps badly converting traffic as webmasters/domain purchasers are likely to be saavy, likely to not click through affiliate links to godaddy and likely to load a few hundred pages (each with a hundred calls to whois registries) per click through (if they do click through.) Also the dreamer kids just messing about with domain names probably added to the load. So now it costs, $9 a month to be precise, not a shocking amount but probably enough to allow its owners at least break even. </p>
<div align="center"><img src="http://blog.woodylabs.com/wp-content/uploads/2011/06/namestation-domauin-name-generation.png" alt="" title="namestation-domauin-name-generation" width="400" height="62" class="aligncenter size-full wp-image-654" /><br /><em>Namestation, Worth $9 a month?</em></div>
<p><span id="more-652"></span></p>
<p>At first I just bailed out and found a few alternative sites, nameboy first (which I remembered was far too unhelpful to bother with) then a few others, the best I found was <a href="http://www.domainsbot.com/results.aspx?q=woodyhayday&#038;com=1&#038;net=.4&#038;org=.3&#038;biz=.2&#038;me=.2&#038;bid=0&#038;backorder=0&#038;f=nbrcpva&#038;lang=en" target="_blank" rel="nofollow">domainsbot</a>, which offers the basic kind of service namestation (makewords, w/e) used too. For a start it did the job, but the fence now up around namestation made me inquisitive. </p>
<p>So I signed up. First for free, allowing use all of the services makewords used to have, bar the most important/validating feature, domain availability. You can generate all of the domains like GiantBasketballChickens.com you want but you wont know if they are available or not without checking elsewhere, unless you pay. So yeah, jump to the premium plan, $9 a month. I do wonder how they got to that price point.</p>
<p>There&#8217;s more. By far the best new feature addition of namestation is contests. Contests allow people to post their site idea and let others suggest available domain names that they could use. Contests are a fantastic idea. Contests will only work should the people wanting the ideas actually pay the people competing, but still contests are a nice addition. I should add it doesn&#8217;t cost to enter contests (suggest domain names.)</p>
<p>After you have the premium plan its mostly business as usual, makewords was good with its wordlists, namestation is better, quicker and mostly simple to use. There are a few other additions, compound words allows you to mash up two phrases nicely (although I couldn&#8217;t get much useful out of it for the first contest I challenged myself to enter) and being able to check &#8220;all extensions&#8221; for a domain is very useful for example.</p>
<p>There is a few things which aren&#8217;t so great. If you go about generating lists of domains, using say, the top 1000 words list, if you use a fairly common word then the chances are 85% of the top 1000 words have already been mixed with it (e.g. carShop, carOnline etc.) but with the current gui namestation just queries a page size at a time, which may leave you clicking nextpage and waiting on ajax 15 times before you see any Available domains. You can up the page size to 100 (see &#8220;set page size&#8221; link bottom left of results) &#8211; of course if your a premium plan user. It may reduce strain on the server this way, but loading blank pages is no fun. </p>
<div align="center"><img src="http://blog.woodylabs.com/wp-content/uploads/2011/06/the-problem-with-namestation.jpg" alt="" title="the-problem-with-namestation" width="600" height="193" class="aligncenter size-full wp-image-655" /></div>
<p>Advanced settings are useful too, but they only appear on some of the wizards, you can&#8217;t for example use compound words and limit the character count. This would be win win for both users and server strain.</p>
<p>And still there is the age old problem of .me and false firing. Its happened about 5 times in the last hour, namestation says the .me is available, godaddy/whois disagrees. This has always been a problem though, with almost every domain checking facility since .me&#8217;s were released, the problem is probably the registrars side.</p>
<p>Anyway seeing as what should of been a 20 minute search for a short url domain has somehow transformed into a long ass review and no short url domain name I thought I would throw it up there as a contest. So go dump your inspiration on <a href="http://goo.gl/1tKyT" target="_blank" rel="nofollow">this</a>, while I go and make some coffee.</p>
<div class="shr-publisher-652"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/06/namestation-starts-charging-namestation-com-reviewalternatives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackers wrecking your shared host account? Check your Website Portfolio Integrity</title>
		<link>http://blog.woodylabs.com/2011/05/hackers-wrecking-your-shared-host-account-check-your-website-portfolio-integrity/</link>
		<comments>http://blog.woodylabs.com/2011/05/hackers-wrecking-your-shared-host-account-check-your-website-portfolio-integrity/#comments</comments>
		<pubDate>Mon, 23 May 2011 11:41:32 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=616</guid>
		<description><![CDATA[10 days of perpetual issues with hackers. 10 DAYS. 100+ sites bombed randomly between every 5 minutes and 5 hours and that&#8217;s only after proper detection, who knows how far it had gone before. But from the relentless irritation some positives developed, if you are in the (precarious) position of hosting LOTS of websites on [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>10 days of perpetual issues with hackers. 10 DAYS. 100+ sites bombed randomly between every 5 minutes and 5 hours and that&#8217;s only after proper detection, who knows how far it had gone before. But from the relentless irritation some positives developed, if you are in the (precarious) position of hosting LOTS of websites on a shared hosting account or you run a shared hosting service then read on, the value of maintaining limit pushing amounts of sites on a single account really should be considered &#8211; if the loss of earnings for all the hacker downtime doesn&#8217;t wipe out the savings then the cost of repair, security hole identification and eradication probably will, not to mention the loss of face to the search engines.</p>
<div style="border: 1px solid #09C; background-color: #b5d1ea; padding: 4px; margin: 10px; text-align:center">The following is a half vent, half information dump spawned from the irritation of being hacked, again. I have written a piece of monitoring/reconciliation software (Windows based works with your ftp account) to deal with detection/fixing. If you’re in the same boat and all you want is the alpha release, skip to the bottom and <a href="http://blog.woodylabs.com/2011/05/hackers-wrecking-your-shared-host-account-check-your-website-portfolio-integrity/#respond">drop me a comment</a>.</div>
<div align="center"><img src="http://blog.woodylabs.com/wp-content/uploads/2011/05/is-wordpress-a-website-security-hole.jpg" alt="" title="is-wordpress-a-website-security-hole" width="600" height="338" class="aligncenter size-full wp-image-621" /></div>
<h3>Website hacker entrance vectors (have any security holes?)</h3>
<p><strong>Common CMS, E-Commerce systems and forums</strong> (out of date or zero day, they all have or have had vulnerabilities) &#8211; WordPress, Drupal, OSCommerce, Gallery, PHPBB, VBulletin etc. etc. Particularly relevant here are the open source systems, but they are all susceptible &#8211; how many of these do you have installed where? For me these could of been answered with &#8220;a lot&#8221; and &#8220;some places&#8221;, clarity has now been restored but more on that later.</p>
<p><strong>CMS Plugins (^^)</strong> – Often overlooked (especially by me), installed plugins can in themselves be entry vectors, often CMS’s push their communities to develop additional functionality for their system, which is a good thing, however if the system itself doesn’t deal particularly well with the security of folder structures or indeed how plugins are accessed they can offer ways in. Be careful with plugins which deal with file management and code execution (e.g. file attachers/uploaders etc.) Try to use late version highly rated plugins from reputable sources, with things like WordPress, plugins are low risk though as it has an excellent security model.</p>
<p><strong>Bespoke server-side code and CMS&#8217;s</strong> &#8211; in my experience these is often LESS likely to get hacked, firstly &#8220;hackers&#8221; in this case are more likely to be script kiddies sitting in web cafes in some of the poorer world nations, they often use known exploits on common systems rather than trawl the web, searching for one off programmer mistakes. If you are behind the bespoke stuff leave out as many foot prints as possible and triple check everything. For bespoke stuff the most likely point of entry is simple SQL Injection, use SQL parameters.</p>
<p><strong>FTP/WebDav</strong> &#8211; This really comes down to passwords as next indicated.</p>
<p><strong>Passwords</strong> – Acquired by trojans or traffic sniffers, it becomes irrelevant what security you have in place across the whole setup if you don’t look after them properly. Avoid connecting to anything unencrypted (or at all if possible) on any network you don’t 100% trust, WIFI and wired, even if it’s a friends they could have a network sniffing Trojan on an idle machine. Install good anti-virus and protection software. Use Avast (free for private use) and Spybot Search and Destroy (these two are plenty.) Be careful with providing access to other users, whether it FTP, CMS, SSH, whatever – you may trust them but do you trust their computers?</p>
<p><span id="more-616"></span></p>
<h3>Detection and Fixing – Realising you’ve been hit and fixing it</h3>
<p>So after they gain entry, what would a hacker really do? Often with web hacking the motivation is kudos, money or sabotage – all are achieved through defacing, deleting or modifying web pages/logic and/or altering/downloading databases. A nightmare from the point of view of shared hosting users.</p>
<p>Depending on how they gain entry a hacker (or their automated executing code) may search through all of the files they can access, through ftp or server-side scripts, built to identify possible files to manipulate. They may download copies of things (e.g. databases!) but will likely set about cycling through all available webpage files and doing things such as:</p>
<ul>
<li>Inserting code within the page (iframes to bad websites, links to their websites – designed to improve their search engine rankings, redirect code which just shuttles people on to their sites)</li>
<li>Replacing the file with a predesigned page (kudos fronts ‘this website was hacked by&#8230;’)</li>
<li>Replacing common server-side functions and variables (e.g. replacing all the send values on email scripts to forward emails to an account other than the owners)</li>
</ul>
<p>If you have a single site, or 10 or something the chances are you personally check them all every now and again, getting a little facetime at least once a week say. In this case your opportunity for hosting a hacked site is 7 days, not awful, not great – Google and browsers will start blocking your site if the hacker has inserted any code going to malware or similar, and otherwise may start to drop you down the rankings if your site now displays a ‘hacked by..’ page instead of your wholesome site.</p>
<p>In the case of a lot more sites on the host this can mean no detection for a longer time, if no system is in place, often first recognised through a drop in statistics/earnings (more likely earnings as in the case of iframed malware a change in the number of hits can be not hugely obvious.)</p>
<p>To add confusion to the mix it’s not unknown for hackers to mask their changes to you, it’s very easy with .htaccess files and php/asp headers (for example) to show content relative to its viewer. E.g. the hacker could shuttle people coming in from Google to a hacked page but people that access the site directly (typing it in) get shown the normal site. Furthermore they may not hit every site you have, perhaps a handful of random choices, some folders not others, a smokescreen like attack which could change each time.</p>
<p>Chances are once you get all your pages fixed and get around to looking at where the security hole is that when you recheck your sites they would have been hit again. This tells you two things, 1. The hacker is relentless (or more likely has a relentless automated program, exploiting 24/7) and 2. You have not plugged the security hole. Or if you are really unlucky you are being hacker tag teamed.</p>
<p>So anyway, detection. How do you go about knowing the integrity of your web portfolio? What if it spans 10 shared hosting accounts or 4 servers? Well likely if you own your own server you have spent the time/cash in locking everything down, what I suggest here would be useful to you guys but you may already have a better solution in place.</p>
<p>Currently there are a bunch of services which will do this for you, of which I have tried zero. “Monitoring” services are available worldwide ranging in prices drastically, for me though even the high end services didn’t offer a full set of features and were mostly hugely overpriced but for the top 50% of the portfolio, not effective for me.</p>
<p>The good things about using external monitoring services are obvious but none seemed to be able to offer realistic change monitoring (e.g. WordPress blogs may change content between &lt;div id=”whatever”&gt; and &lt;/div&gt; every hour but the rest of the page should stay almost the same.) It is important they see the addition of malicious code to good pages and not throw constant false alarms. For ‘this website was hacked by..’ pages though they probably do a good job (as well as malware detection.) Uptime monitoring is also common as part of the packages, useful without doubt.</p>
<p>I suggest another way though of monitoring an established portfolio, that is the way I have resolved my recent hacker attacks, a realistic option for shared host/anywhere-in-the-world-with-a-laptop client based use. Ultimately an extension of a few older applications I wrote to manage a growing portfolio, weathered by several hacks across accounts within the past 6 months – Hard checks of every important file.</p>
<div align="center"><img src="http://blog.woodylabs.com/wp-content/uploads/2011/05/website-integrity.jpg" alt="" title="website-integrity" width="600" height="450" class="aligncenter size-full wp-image-619" /></div>
<div align="center" style="font-size:16px;font-weight:700;margin:30px">“The best way to check the integrity of your shared hosting account is to physically check the integrity of your shared hosting account.”</div>
<p>At first I wrote my system to simply allow me to take stock of the sites and CMS’s I have in place, to work out possible security holes from behind the scenes – but it turns out it works surprisingly well in identifying breaches. By checking your actual live file structure (.htaccess, index.php, default.aspx, index.html etc.) against a known correct file structure snapshot, you take the whole http part of the checking out of the loop, effectively making it a higher level integrity check than external services can ever offer.</p>
<p>By making Checksums of every critical file (often hackers just hit index.php, index.html, default.aspx etc.) within a given ftp/file structure and then automatically rechecking at scheduled points it becomes easy to minimise your window for financial fallout from hackers. This may seem like a time/bandwidth/processor consuming task but in actuality 100 websites with WordPress installed could be checked in a few Mb of download – in terms of modern data use that’s a few browses of a facebook photo gallery. What’s more it can run in the background, only prompting you on changes to files, as frequently as you want.</p>
<p>The side benefit of producing complete hosting account checksum snapshots is you are also able to accurately backup a working copy of your hosting account. Built into the checking process this means that you can then correct hackers’ malicious changes with a click of a button.</p>
<p>This of course does not take into account more hard-file based websites, database changes or regularly altered sites. I recommend automated screenshots to cover these or the combination of external monitoring services and integrity checking.</p>
<p>I have written an alpha release of this system (named Website Integrity Checker for now) and will gladly distribute/discuss it if you drop me a comment below. A beta copy might make its way out sometime.</p>
<div class="shr-publisher-616"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/05/hackers-wrecking-your-shared-host-account-check-your-website-portfolio-integrity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Grab Tabs &#8211; Get chromium urls in a list</title>
		<link>http://blog.woodylabs.com/2011/05/grab-tabs-get-chromium-urls-in-a-list/</link>
		<comments>http://blog.woodylabs.com/2011/05/grab-tabs-get-chromium-urls-in-a-list/#comments</comments>
		<pubDate>Thu, 05 May 2011 10:18:54 +0000</pubDate>
		<dc:creator>Woody</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web Technology]]></category>

		<guid isPermaLink="false">http://blog.woodylabs.com/?p=603</guid>
		<description><![CDATA[Long story short there is a bunch of extensions for chrome/chromium which provide you with session management and tab control but frankly none of them do exactly what I wanted so I have fudged a solution by using session manager and writing a 5 minute extension: Grab Tabs. Somehow it seemed easier to write an [...]<hr /><a href="http://blog.woodylabs.com">Visit Woody Haydays Blog</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Long story short there is a bunch of extensions for chrome/chromium which provide you with session management and tab control but frankly none of them do exactly what I wanted so I have fudged a solution by using <a href="https://chrome.google.com/extensions/search?itemlang=&#038;q=session+manager" target="_blank">session manager</a> and writing a 5 minute extension: <a href="https://chrome.google.com/extensions/detail/ldoeilnidhchbjodpehhjjgjmfhjlfgp" target="_blank">Grab Tabs</a>. Somehow it seemed easier to write an extension than to find one which just worked, feature creep gets people bad!</p>
<div style="border:1px solid #09C; background-color:#b5d1ea;padding:4px;margin:10px;">***Grab Tabs is Super Simple<br />
This is a super simple extension which dumps a list of current tabs to a text box, ready to copy out to wherever.</p>
<p>There&#8217;s no need for complexity, sometimes you just need a list of the urls you have open, across windows &#8211; essential functionality for a lot of us power users.</p>
<p>Session managers are great, (I use the extension called Session Manager) &#8211; but they still lack just the brute functionality to get a list of tab urls straight out. This does that.</p>
<p>No frill, simple tab url extraction <img src='http://blog.woodylabs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </div>
<div align="center" style="font-size:24px"><a href="https://chrome.google.com/extensions/detail/ldoeilnidhchbjodpehhjjgjmfhjlfgp" target="_blank">>> Get Grab Tabs <<</a></div>
<div class="shr-publisher-603"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.woodylabs.com/2011/05/grab-tabs-get-chromium-urls-in-a-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

