<?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>Stuck Together With Tape</title>
	<atom:link href="http://www.stucktogetherwithtape.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stucktogetherwithtape.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 11 Dec 2009 12:49:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Sync Web Dev with MAMP and Dropbox</title>
		<link>http://www.stucktogetherwithtape.com/blog/2009/12/sync-web-dev-with-mamp-and-dropbox/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sync-web-dev-with-mamp-and-dropbox</link>
		<comments>http://www.stucktogetherwithtape.com/blog/2009/12/sync-web-dev-with-mamp-and-dropbox/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:00:02 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web dev]]></category>

		<guid isPermaLink="false">http://www.stucktogetherwithtape.com/blog/?p=103</guid>
		<description><![CDATA[Dropbox Initially I used dropbox, as an alternative to email, to share music tracks and ideas with band mates. So simple even our singer could work it out! It has quickly become my main tool for syncing all sorts of other data. So I decided to see if it could be used to sync multiple [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-119 aligncenter" title="dropbox-mamp" src="http://www.stucktogetherwithtape.com/blog/wp-content/uploads/2009/12/dropbox-mamp.png" alt="dropbox and mamp" width="460" height="320" /></p>
<h3>Dropbox</h3>
<p>Initially I used <a href="http://www.dropbox.com/">dropbox</a>, as an alternative to email, to share music tracks and ideas with  band mates. So simple even our singer could work it out! It has quickly become my main tool for syncing all sorts of other data.</p>
<p>So I decided to see if it could be used to sync multiple MAMP web development environments. Site files and MySQL databases.</p>
<p><span id="more-103"></span></p>
<p><a href="#thegoodshit">Ok, skip the blah, show me the method!</a></p>
<h3>Syncing Applications with Dropbox</h3>
<p>When you work on multiple computers it can be a pain to keep things in sync. But, where there&#8217;s data there&#8217;s a way to sync it with dropbox. One of the first dropbox solutions I came across was for <a href="http://agilewebsolutions.com/products/1Password">1Password</a>, my password manager of choice. 1Password holds all its data in a keychain so you can simply move the <em>1Password.agilekeychain</em> file to your dropbox and edit preferences in 1password to point to the new location. A more detailed tutorial can be found over at <a href="http://webworkerdaily.com/2008/09/29/1password-dropbox-sync/">WebWorkerDaily</a>. As of <a href="http://agilewebsolutions.com/products/1Password/whats_new">version 3</a>, this keychain file can also be opened as an HTML webpage so you can access your passwords on computers without 1password installed.</p>
<p><a href="http://culturedcode.com/things/">Things</a> requires a different approach. There is no preference option to chose the location of you data file. Instead you can move the Things data folder into your dropbox and create a symbolic link in its place. Detailed instructions can be found at this <a href="http://hocuspokus.net/2008/11/sync-your-things-database-via-dropbox">hocuspokus.net</a>. Symbolic links are basically low level Aliases. I also use a similar method to keep the <a href="http://www.tipsfor.us/2008/11/24/keep-your-address-book-in-sync-with-dropbox-mac-os-x/">address book app in sync</a>.</p>
<p>After using dropbox to sync these apps between 3 computers I was in need of a better way to sync my web development projects. I was already using dropbox to share zipped versions of site files and mysql dumps but this process was a bit tedious. Every morning I have to unarchive the files into my sites folder and re-import databases and remember to export them before I left. One solution would be to create a couple of scripts to import and export this data&#8230; but after seeing how well dropbox had worked so far, I decided to test its limits and sync a whole web development sever.</p>
<h3 id="thegoodshit">Syncing MAMP with Dropbox</h3>
<p>I use <a href="http://www.mamp.info">MAMP</a> to run my local webserver with php and mySQL. The first step is to sync Apache&#8217;s webroot. By default it&#8217;s located in the <em>/Applications/MAMP/htdocs</em> folder.</p>
<p>Click Preferences &gt; Select the Apache tab and change the location to a folder in your dropbox, I use /<em>Dropbox/Sites</em>.</p>
<p><img class="aligncenter size-full wp-image-121" title="apache-settings" src="http://www.stucktogetherwithtape.com/blog/wp-content/uploads/2009/12/apache-settings1.png" alt="apache-settings" width="600" height="265" /></p>
<p>Now all your development site files will be kept in sync through your dropbox.</p>
<p><img class="size-full wp-image-118 alignright" title="create-symbolic-link" src="http://www.stucktogetherwithtape.com/blog/wp-content/uploads/2009/12/create-symbolic-link.png" alt="create-symbolic-link" width="320" height="430" /></p>
<p>The second step is to sync MAMPs MySQL server. Unfortunately MAMP does not provide the option to define the location the database files are kept. So I followed the symbolic link method used to sync Things.</p>
<p>MAMPs database files are stored in <em>/Applications/MAMP/db</em>. Make sure you quit MAMP first, then move the db folder to your dropbox.</p>
<p>Create a symbolic link back to its original location. You can use terminal for this but I prefer to use <a href="http://www.macupdate.com/info.php/id/10433">SymbolicLinker</a> a contextual symlink plugin. It gives you a &#8220;Make Symbolic Link&#8221; option in any file or folders right click menu.</p>
<p>Thats it, you&#8217;re done. Start up MAMP and you&#8217;re up in the cloud.</p>
<h3>Steady Eddy</h3>
<p>I haven&#8217;t tested this process fully yet and may update this post if I see any trouble brewing. A few points to note though.</p>
<ul>
<li>Developing large sites with large databases is gonna fill up your dropbox pretty quickly.</li>
<li>I wouldn&#8217;t recommend developing on different computers simultaneously, dropbox is quick but not that quick. I can imagine your database could get messed up if your jumping between computers updating and deleting records. But by all means give it a go and let me know how dropbox copes!</li>
<li>For theses reasons do not totally rely on dropbox. It&#8217;s always good practive to have a local backup of your dev files as well, just incase.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.stucktogetherwithtape.com/blog/2009/12/sync-web-dev-with-mamp-and-dropbox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Winters coming, WrapUp!</title>
		<link>http://www.stucktogetherwithtape.com/blog/2009/10/winters-coming-wrapup/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=winters-coming-wrapup</link>
		<comments>http://www.stucktogetherwithtape.com/blog/2009/10/winters-coming-wrapup/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:28:09 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[wrapup]]></category>

		<guid isPermaLink="false">http://www.stucktogetherwithtape.com/?p=20</guid>
		<description><![CDATA[I&#8217;ve been using this library, or iteration of, for about a year now and have finally had time to document it properly. WrapUp is a CodeIgniter Library to manage your sites &#60;head&#62; element. Defining the doctype Setting the page title Adding meta data Adding CSS Addming Javascript files This saves alot of time getting a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using this library, or iteration of, for about a year now and have finally had time to document it properly. WrapUp is a CodeIgniter Library to manage your sites &lt;head&gt; element.</p>
<p>Defining the doctype<br />
Setting the page title<br />
Adding meta data<br />
Adding CSS<br />
Addming Javascript files</p>
<p>This saves alot of time getting a site up and running. Its also extremly handy for large sites as you can define your default meta data, css &amp; javascript in a __constructor so its is inhereted by all pages on the site.</p>
<p>A few examples of WrapUp can be found after the jump.</p>
<p><span id="more-20"></span></p>
<p>Load the library, you&#8217;ll probably want to autoload this if you are using it on the whole site.</p>
<p><code>$this−&gt;load−&gt;library('wrapup');</code></p>
<p>The WrapUp library enables you to quickly get an HTML page up and running.</p>
<p><code>$this-&gt;wrapup-&gt;head();</code></p>
<p>The <strong>head()</strong> function returns the basic html head structure as a string.</p>
<p>There&#8217;s not a lot to it but from here you can easily customise your head page, set up defaults and overide/add elements for specific pages.</p>
<p>I normally create a MY_Controller which all my classes inherit from. Then all my default head elements, css links, js files are added to the wrapup library in the MY_Controller constructor.</p>
<p><code>// set doctype to transistional<br />
$this-&gt;wrapup-&gt;set_doctype('t');<br />
// add charset meta tag<br />
$meta = array(<br />
'http-equiv' =&gt;'Content-type',<br />
'content' =&gt; 'text/html;charset=UTF-8'<br />
);<br />
$this-&gt;wrapup-&gt;add_meta(meta);<br />
// add default css stylesheet<br />
$this-&gt;wrapup-&gt;add_css('style.css');<br />
// add google jquery script<br />
$this-&gt;wrapup-&gt;add_js('jquery.min.js');<br />
// add a default page titles<br />
$this-&gt;wrapup-&gt;set_title('My Page Title');</code></p>
<p>This sets up our default page head element. I find it saves me a lot of time if I ever need to change the default style sheet for instance or the doctype. I only have to change it in one place!</p>
<p>Another feature of WrapUp is managing inline javascript and CSS. I try not to include any inline CSS due to the dreaded <a href="http://en.wikipedia.org/wiki/Flash_of_unstyled_content" target="_blank">FOUC</a> but its useful for debugging. Using WrapUp to manage you javascript enables you to generate javascript programatically (include server side variables) and group all off your javascript and send it to the browser at the bottom of the page right before closing your body tags.</p>
<p>You can add inline javascript by calling the add_js_inline() WrapUp method.</p>
<p><code>$js = 'function say_hello(){alert("hello");}';<br />
$this-&gt;wrapup-&gt;add_js_inline($js);</code></p>
<p>Inline code can then be returned in your view by calling inline() method</p>
<p><code>$this-&gt;wrapup-&gt;inline();</code></p>
<p>So that&#8217;s about it for an introduction to WrapUp, no doubt i&#8217;ll add/tweak it as I discover news needs. Checkout the full <a title="WrapUp Docs" href="http://www.stucktogetherwithtape.com/user_guide/wrapup">documentation</a> in the code vault to see other methods like add_rss()</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stucktogetherwithtape.com/blog/2009/10/winters-coming-wrapup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oi, Mind your Messages</title>
		<link>http://www.stucktogetherwithtape.com/blog/2009/10/oi-mind-your-messages/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=oi-mind-your-messages</link>
		<comments>http://www.stucktogetherwithtape.com/blog/2009/10/oi-mind-your-messages/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 22:03:15 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[notifications]]></category>

		<guid isPermaLink="false">http://www.stucktogetherwithtape.com/blog/?p=78</guid>
		<description><![CDATA[Often, I find I need to send notifications to the user (webpage) during server code. This may be a warning, notification, or a message that an action has hapend. If you&#8217;re using a MVC framework it&#8217;s not practical to exit running code or echo out the message. From a User Interface perspective it is also imperative [...]]]></description>
			<content:encoded><![CDATA[<p>Often, I find I need to send notifications to the user (webpage) during server code. This may be a warning, notification, or a message that an action has hapend. If you&#8217;re using a MVC framework it&#8217;s not practical to exit running code or echo out the message. From a User Interface perspective it is also imperative that the user knows where to look for these notifications and what they mean.<br />
<span id="more-78"></span><br />
This all lead me to develop a re-usable solution to drop into any project. As all most all of the sites I work on use CodeIgniter now, once again a CI Library was the obvious choice. <strong>Oi</strong> is notifications management system that, when stripped to its basic behaviour, has two uses.</p>
<ul>
<li>Stores new notifications added by the application</li>
<li>Returns all unread notices added by the application</li>
</ul>
<p>Pretty Simple. Added to that it will also remember notices between page redirects. So if you add a notice and then reach some code that triggers a redirect the notice will be displayed on the next page.</p>
<p>The library is now in its second incarnation. My original version supported three types of notices</p>
<ol>
<li><strong>Success</strong> (Well done, something that was meant to happen has happened)</li>
<li><strong>Message</strong> (Nothings gone wrong, nothings gone right. Just wanted to say a little something)</li>
<li><strong>Error</strong> (Oh shit, what did you do? Now i&#8217;m gonna have to tidy up after you again!)</li>
</ol>
<p>Each message would be returned as separate elements with a relevant class representing the type. This was pretty sufficient for most applications but there were times when I wanted to add more attributes (classes, titles, ids) or just needed another &#8216;type&#8217;.</p>
<p>So the new version uses the magic php method __call to provide an unlimited number of &#8216;types&#8217; via the method $oi-&gt;add_{<strong>type</strong>}($string);</p>
<p>e.g.<br />
<code>$this-&gt;oi-&gt;add_message('Well Done');</code></p>
<p>or</p>
<p><code>$this-&gt;oi-&gt;add_reallylongandimpressivesupertype('Hello');</code></p>
<p>More examples and documentation available in the <a href="http://www.stucktogetherwithtape.com/code">code</a> section</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stucktogetherwithtape.com/blog/2009/10/oi-mind-your-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Typography Template</title>
		<link>http://www.stucktogetherwithtape.com/blog/2009/10/css-typography-template/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=css-typography-template</link>
		<comments>http://www.stucktogetherwithtape.com/blog/2009/10/css-typography-template/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 18:59:26 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://www.stucktogetherwithtape.com/blog/?p=64</guid>
		<description><![CDATA[Here&#8217;s a quick HTML template to organise your CSS typography. Nothing fancy, just an HTML file containing the most common elements to start your CSS, and a basic typography stylesheet. I used the 960 grid system to reset browser CSS and control the template layout. I find this helpful as a starting point for any [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-89" title="typography-framed" src="http://www.stucktogetherwithtape.com/blog/wp-content/uploads/2009/10/typography-framed.png" alt="typography-framed" width="620" height="220" /></p>
<p>Here&#8217;s a quick HTML template to organise your CSS typography.</p>
<p>Nothing fancy, just an HTML file containing the most common elements to start your CSS, and a basic typography stylesheet. I used the <a href="http://960.gs/" target="_blank">960 grid system</a> to reset browser CSS and control the template layout.</p>
<p>I find this helpful as a starting point for any site. Before I start knocking a CSS class together to style an element up for a specific page, I refer to the sites CSS template to see if  a similar base element already defined.</p>
<p>I would encourage keeping this typography stylesheet as basic as possible. Then use general css classes to add extra style later on.</p>
<p>Both the HTML and CSS files are included in the zip after the jump.</p>
<p><span id="more-64"></span></p>
<p><a href="http://www.stucktogetherwithtape.com/download/typography.zip" target="_blank">Download CSS Typography Template</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stucktogetherwithtape.com/blog/2009/10/css-typography-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shortie v1.0 Released</title>
		<link>http://www.stucktogetherwithtape.com/blog/2009/10/shortie-v1-0-released/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=shortie-v1-0-released</link>
		<comments>http://www.stucktogetherwithtape.com/blog/2009/10/shortie-v1-0-released/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 21:37:51 +0000</pubDate>
		<dc:creator>Jim</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[shortie]]></category>
		<category><![CDATA[urls]]></category>

		<guid isPermaLink="false">http://www.stucktogetherwithtape.com/blog/?p=54</guid>
		<description><![CDATA[Recently I needed code to shorten URLS and tweet said url as a twitter update. This all needed to happen in their existing CMS built using Codeigniter. Turns out the twitter part was easy, thanks to simonmaddox&#8217;s nice twitter CI library. I got a few whiffs of a url shortening CI library around the web, [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I needed code to shorten URLS and tweet said url as a twitter update. This all needed to happen in their existing CMS built using Codeigniter.</p>
<p>Turns out the twitter part was easy, thanks to <a href="http://github.com/simonmaddox/codeigniter-twitter" target="_blank">simonmaddox&#8217;s nice twitter CI library</a>. I got a few <a href="http://codeigniter.com/forums/viewthread/113285/" target="_blank">whiffs</a> of a url shortening CI library around the web, but it looks like the code was no longer available. Oh well, a good excuse to knock up a new library!</p>
<p><span id="more-54"></span></p>
<p><a href="http://www.stucktogetherwithtape.com/code/shortie" target="_blank">Shortie</a> is a simple library that uses curl to generate short urls using a number of different services. At the moment I have added support for four services:</p>
<ul>
<li>tr.im</li>
<li>tinyurl</li>
<li>is.gd</li>
<li>u.nu</li>
</ul>
<p>Check out the <a href="http://www.stucktogetherwithtape.com/code/shortie" target="_blank">user guide</a>, which was created using an app-in-progress <strong>Dokument</strong>, for examples.</p>
<p>More about Dokument later&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stucktogetherwithtape.com/blog/2009/10/shortie-v1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
