<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title />
		<description>Check out our blog for our latest updates. This is a blog on Web Design, SEO, Programming, Michigan Events and Business.</description>
		<link />
		
		
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/insitedesignlab" /><feedburner:info uri="insitedesignlab" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>insitedesignlab</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
				<title>Install ImageMagick with PHP on Debian</title>
				<description>&lt;p&gt;I've been working on an app lately that involves some image manipulation. Most of the time I use &lt;a href="http://php.net/manual/en/book.image.php"&gt;GD&lt;/a&gt; for image manipulation but there are a lot of things it just can't do easily.&lt;/p&gt;

&lt;p&gt;When I run into prolems GD can't solve, I turn to &lt;a href="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ImageMagick is great, it's powerful and easy-to-use. Unfortunately, it's an enormouse pain to install and set-up.&lt;/p&gt;

&lt;p&gt;It was far from easy setting it up on Debian / Ubuntu -- so here's how I did it. I hope it helps.&lt;/p&gt;

&lt;h2&gt;1. Install ImageMagick&lt;/h2&gt;

&lt;p&gt;You can get ImageMagick and its dependencies from the apt-get repository.&lt;/p&gt;

&lt;pre rel="Terminal"&gt;&lt;code&gt;
sudo apt-get update
sudo apt-get build-dep imagemagick
&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;2. Get The PHP Dev Package&lt;/h2&gt;

&lt;p&gt;In order to use PHP to interact with ImageMagick you'll need this package.&lt;/p&gt;

&lt;pre rel="Terminal"&gt;&lt;code&gt;
sudo apt-get install php5-dev
&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;3. Get the PECL Imagick Package&lt;/h2&gt;

&lt;p&gt;Now that you have the PHP Dev tools and ImageMagick, you just need the Imagick package to interface between PHP and ImageMagick.&lt;/p&gt;

&lt;pre rel="Terminal"&gt;&lt;code&gt;
pecl install imagick
&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;4. Write Some Sweet PHP / ImageMagick Code&lt;/h2&gt;

&lt;p&gt;Now you can use a ton of great tools, check out &lt;a href="http://php.net/manual/en/book.imagick.php"&gt;a list&lt;/a&gt; here!&lt;/p&gt;

&lt;pre rel="PHP" class="prettyprint"&gt;&lt;code&gt;
&amp;lt;?php
    $thumb = new Imagick();
    $thumb-&gt;readImage('myimage.gif');
    $thumb-&gt;resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
    $thumb-&gt;writeImage('mythumb.gif');
    $thumb-&gt;clear();
    $thumb-&gt;destroy(); 
?&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=Rovg_R5W7cw:sO9Rb-cNDvE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=Rovg_R5W7cw:sO9Rb-cNDvE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=Rovg_R5W7cw:sO9Rb-cNDvE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=Rovg_R5W7cw:sO9Rb-cNDvE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=Rovg_R5W7cw:sO9Rb-cNDvE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=Rovg_R5W7cw:sO9Rb-cNDvE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=Rovg_R5W7cw:sO9Rb-cNDvE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=Rovg_R5W7cw:sO9Rb-cNDvE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/Rovg_R5W7cw" height="1" width="1"/&gt;</description>
				<pubDate>Mon, 22 Apr 2013 00:00:00 -0400</pubDate>
				<link>/install-imagemagick-with-php-on-debian</link>
				<guid isPermaLink="true">/install-imagemagick-with-php-on-debian</guid>
			</item>
		
			<item>
				<title>Vim Has Ruined Text Editing For Me</title>
				<description>&lt;p&gt;I've been using vim as my full time code editor for about 4 months now.&lt;/p&gt;

&lt;p&gt;It was not an easy journey but it was definitely worthwhile.&lt;/p&gt;

&lt;p&gt;This is not a tutorial on how or why to use vim. If you're looking for something like that you should check out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/"&gt;Learn Vim Progressively&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Run 'vimtutor' in your terminal&lt;/li&gt;
&lt;li&gt;&lt;a href="http://vim.wikia.com/wiki/Vim_Tips_Wiki"&gt;Check our the wiki!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Vim Makes Things Easy... Eventually&lt;/h2&gt;

&lt;p&gt;Starting out using vim is extremely difficult. Eventually though I began to realize that a lot of the things that were tough at first led to better ways to edit text.&lt;/p&gt;

&lt;p&gt;I'm not going to get too specific but there are a few things that vim offers that I've come to expect whenever I'm editing text. I find myself getting more and more frustrated when I don't have these tools available and it's caused me to use vim for more and more of my non code editing.&lt;/p&gt;

&lt;h2&gt;Things I Need&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Jump to the beginning of a line with &lt;code&gt;&amp;#94;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jump to the end of a line with &lt;code&gt;$&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Delete a word with &lt;code&gt;dw&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Delete text till the end of the line with &lt;code&gt;D&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cut or Copy an entire line with &lt;code&gt;dd&lt;/code&gt; or &lt;code&gt;yy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jump to the top of the page with &lt;code&gt;gg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jump to the end of the page with &lt;code&gt;G&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Repeat the last task you did with &lt;code&gt;.&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;My Solution&lt;/h2&gt;

&lt;p&gt;Lately I've been looking into vim plugins that make doing other text related tasks like email, blog posts and journaling better.&lt;/p&gt;

&lt;p&gt;It seems like the easiest solution is just to use vim for everything.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=eNBbqSXW43I:IfOHyL3gGdM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=eNBbqSXW43I:IfOHyL3gGdM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=eNBbqSXW43I:IfOHyL3gGdM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=eNBbqSXW43I:IfOHyL3gGdM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=eNBbqSXW43I:IfOHyL3gGdM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=eNBbqSXW43I:IfOHyL3gGdM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=eNBbqSXW43I:IfOHyL3gGdM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=eNBbqSXW43I:IfOHyL3gGdM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/eNBbqSXW43I" height="1" width="1"/&gt;</description>
				<pubDate>Thu, 18 Apr 2013 00:00:00 -0400</pubDate>
				<link>/vim-has-ruined-text-editing-for-me</link>
				<guid isPermaLink="true">/vim-has-ruined-text-editing-for-me</guid>
			</item>
		
			<item>
				<title>Terminal-Fu</title>
				<description>&lt;p&gt;Recently, I started working for &lt;a href="http://www.barracudanetworks.com"&gt;Barracuda Networks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I spend &lt;em&gt;a lot&lt;/em&gt; of time in the terminal at work now, which is totally awesome.&lt;/p&gt;

&lt;p&gt;I've been learning some great pro-tips lately and I think they're worth a share!&lt;/p&gt;

&lt;h2&gt;1. Jump To The Beginning / End of the Line&lt;/h2&gt;

&lt;p&gt;Say you've got a long line in your terminal&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Username$: vim /path/to/a/super/long/file.txt&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then you realize you mispelled something at the beginning of the line! No worry, just use&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Ctrl + a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;to jump to the beginning of the line and then you can just type&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Ctrl + e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;to jump back to the end!&lt;/p&gt;

&lt;h2&gt;2. Search Your Terminal History&lt;/h2&gt;

&lt;p&gt;So often you'll need to re-use a command that you used recently, or maybe you just can't remember how a certain command goes.&lt;/p&gt;

&lt;p&gt;It's pretty cool that you can just type &lt;code&gt;history&lt;/code&gt; like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Username$: history&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;in the terminal and it will give you a list of the last commands you used.&lt;/p&gt;

&lt;p&gt;Way cooler, however, is the interactive, fuzzy search through your history by hitting&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Ctrl + r&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then just start typing something you need from your history and it'll find it for you.&lt;/p&gt;

&lt;p&gt;Some cool notes on &lt;code&gt;Ctrl + r&lt;/code&gt; are that you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hit tab to bring the search result into your current line ( for editing )&lt;/li&gt;
&lt;li&gt;Hit Ctrl + r again to find another appropriate selection&lt;/li&gt;
&lt;li&gt;Hit Ctrl + Shift + r to go back if you pass the result you want&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;3. Escape Period&lt;/h2&gt;

&lt;p&gt;Ever find yourself needing to type in the same long string twice? Maybe a file path or a long program name?&lt;/p&gt;

&lt;p&gt;Commonly I find myself doing something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vim ~/.bashrc
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Imagine the time I waste typing &lt;code&gt;~/.bashrc&lt;/code&gt; twice!&lt;/p&gt;

&lt;p&gt;Here's a cool trick. At anytime in your terminal hit &lt;code&gt;Esc + .&lt;/code&gt; ( that's escape period ) and it will automatically paste in the last string you typed. It's not 100% accurate but it's pretty great!&lt;/p&gt;

&lt;h2&gt;4. Multiplex Like a G&amp;trade;&lt;/h2&gt;

&lt;p&gt;If you're a terminal champion -- eventually you will run out of screen space. I tried to make it work for a while but eventually you need more than will fit on 2 ( or 3 ) screens!&lt;/p&gt;

&lt;p&gt;What's the solution?&lt;/p&gt;

&lt;p&gt;Have tons of terminals inside each terminal!&lt;/p&gt;

&lt;p&gt;Terminal Multiplexers, namely Screen and Tmux, allow you to have a bunch of terminal sessions inside one terminal ( think internal tabs ) and navigate between them with ease.&lt;/p&gt;

&lt;p&gt;Both Screen and Tmux are pretty sweet, but screen hasn't been supported in forever so just save yourself some pain and go with tmux. I'm going to write a tmux post soon with install instructions and some basic usage but just know it's sweet for now!&lt;/p&gt;

&lt;h2&gt;Use the Amazing Tools in Front of You&lt;/h2&gt;

&lt;p&gt;Last thing. If you're using the terminal a lot, you should really check out all of the amazing tools sitting in front of you -- they'll make your life way better! I recommend reading about and regularly using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grep&lt;/li&gt;
&lt;li&gt;Htop&lt;/li&gt;
&lt;li&gt;Ack&lt;/li&gt;
&lt;li&gt;Ps&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;Scp&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Just look them up with a quick 'man grep' and start living better!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=7cjl0q7hbG0:_NBnKg7JiTg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=7cjl0q7hbG0:_NBnKg7JiTg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=7cjl0q7hbG0:_NBnKg7JiTg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=7cjl0q7hbG0:_NBnKg7JiTg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=7cjl0q7hbG0:_NBnKg7JiTg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=7cjl0q7hbG0:_NBnKg7JiTg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=7cjl0q7hbG0:_NBnKg7JiTg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=7cjl0q7hbG0:_NBnKg7JiTg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/7cjl0q7hbG0" height="1" width="1"/&gt;</description>
				<pubDate>Wed, 20 Mar 2013 00:00:00 -0400</pubDate>
				<link>/terminal-fu</link>
				<guid isPermaLink="true">/terminal-fu</guid>
			</item>
		
			<item>
				<title>Deploying Your Website</title>
				<description>&lt;p&gt;This weekend I gave a presentation at the &lt;a href="http://www.meetup.com/ann-arbor-php-mysql/"&gt;Ann Arbor PHP Meetup&lt;/a&gt; on website deployment.&lt;/p&gt;

&lt;p&gt;We covered three basic methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File Transfer Protocol (FTP)&lt;/li&gt;
&lt;li&gt;Rsync&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;File Transfer Protocol&lt;/h2&gt;

&lt;p&gt;Built in the early 70's, File Transfer Protocol ( or FTP ) was designed to transfer files from one host to another over the internet.&lt;/p&gt;

&lt;p&gt;Today there are many great ( and free ) tools that make FTP the easiest way to move files from your computer to your web server. We took a look at &lt;a href="http://filezilla-project.org/"&gt;FileZilla&lt;/a&gt; as it's cross-platform and completely free.&lt;/p&gt;

&lt;p&gt;You can download FileZilla from the companies website and have it installed within minutes. From there, you just need to know the hostname, username and password necessary to access your website.&lt;/p&gt;

&lt;p&gt;Typically the hostname is ftp.yourwebsite.com and often times the username and password are the same as what you use to log in to your hosting provider's control panel. If you don't know the specific credentials for this, contact your web host for details.&lt;/p&gt;

&lt;p&gt;Once you're set up, you should see something like this:&lt;/p&gt;

&lt;div class="img-wrap"&gt;&lt;img src="/images/connect-to-web-host-with-filezilla.jpg" /&gt;&lt;/div&gt;


&lt;p&gt;On the left is a file broswer for &lt;em&gt;your computer&lt;/em&gt; and on the right is the same browser view for &lt;em&gt;your server&lt;/em&gt;. From here, you can move files from the left to the right to put them online, or from right to left to download them to your computer.&lt;/p&gt;

&lt;p&gt;The one major caveat with deploying your website this way is the lack of versioning. It's difficult to tell where the most recent copy of a file is and if two or more people are working on the same project, you will almost definitely run into problems with code being overwritten.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Example:
Let's say you and a coworker need to make changes to the same file, you both start out with a copy of the file locally. You make your changes ( say changing the title ) and when you're finished, you open up FileZilla and push those changes live to your server. Just then, your coworker finishes their changes ( say adding a list to the page ) and they push their changes. Since they never saw your title change, and there is no versioning, their copy of the file will overwrite yours and your changes will be lost.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;FTP Pros&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Easy to setup&lt;/li&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;FTP Cons&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Collisions&lt;/li&gt;
&lt;li&gt;Data Loss&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Rsync&lt;/h2&gt;

&lt;p&gt;Created in the late 90's, Rsync is a tool that synchronizes files from one host to another. Note the significant distinction of synchrinization vs. transference. Rsync is very capable of dealing with collisions and collaboration as it will recognize differences between the two locations.&lt;/p&gt;

&lt;p&gt;Rsync has a great deal of options, and checking out it's man page is definitely worthwhile. This can be done by typing this in your terminal:&lt;/p&gt;

&lt;pre&gt;man rsync&lt;/pre&gt;


&lt;p&gt;on a UNIX machine.&lt;/p&gt;

&lt;p&gt;It's simplest usage, however, can be seen here:&lt;/p&gt;

&lt;pre&gt;
rsync file_to_copy.txt username@yourwebsite.com:/path/to/your/directory

#Real life example to move all files in deployment folder to the deploy folder on my host
rsync deployment/* root@a2lamp.com:/var/www/a2lamp.com/deploy
&lt;/pre&gt;


&lt;p&gt;The only real issue I have with Rsync deployment is it's lack of versioning. Although you can specify things like overwrite with the newer file, it's hard to see a deployment log with valid data in it unless you write something yourself.&lt;/p&gt;

&lt;h3&gt;Rsync Pros&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Highly Configurable&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Rsync Cons&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Lack of versioning&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Git Deployment&lt;/h2&gt;

&lt;p&gt;Released to the world in 2005, git has quickly become the de-facto startard in version control. Git does a great many things including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeps a version log of all changes to your codebase&lt;/li&gt;
&lt;li&gt;Gracefully handles merges and merge conflicts ( see example above )&lt;/li&gt;
&lt;li&gt;Allows easy script automation through hooks&lt;/li&gt;
&lt;li&gt;Lets you peel back your code to any point in time&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Git comes pre-installed on Mac's and most linux distributions but is freely available on all operating systems. There are tons of advantages to using Git but most of them fall outside of the scope of this blog post.&lt;/p&gt;

&lt;p&gt;There are three common methods for deploying code with git.&lt;/p&gt;

&lt;h3&gt;The push and pull&lt;/h3&gt;

&lt;p&gt;Perhaps the simplest way to deploy with git is to have copies of your repository both on your computer and on your web server. You can make changes locally, push them to master, and then log into your server and pull them down. I've done this before and it's far superior to FTP but we can make it even better!&lt;/p&gt;

&lt;h3&gt;The direct push&lt;/h3&gt;

&lt;p&gt;You can simplify the above process by setting your web server as master and directly pushing your code to deployment with a:&lt;/p&gt;

&lt;pre&gt;git push origin master&lt;/pre&gt;


&lt;p&gt;This works well for some projects, but sometimes you need only a subset of your codebase to go public, which brings us to step three.&lt;/p&gt;

&lt;h3&gt;The bare repo&lt;/h3&gt;

&lt;p&gt;Git offers these things called bare repositories. They are great for having a central place for your codebase although they don't provide editable files like a full repository. One thing that's commonly done is to set up three copies of your codebase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A local repository on your computer. This is where you write code.&lt;/li&gt;
&lt;li&gt;A bare repository on your server but not public facing. This is where you push code.&lt;/li&gt;
&lt;li&gt;A folder on your web server where you want your public code to go.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Git hooks&lt;/h4&gt;

&lt;p&gt;Once you have this setup you can use a git post-recieve hook. These are easy to customize and can be found in your .git/hooks/ directory of your repository. Essentially what you do is write a script that runs whenever code is pushed to the bare repository. This code can grab just the public facing files and send them to your public directory. Here's an example of a post-recieve hook I'm using for this website ( which is running Jekyll ).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
#Add these commands to the file
echo "********************"
echo "Post receive hook: Updating website"
echo "********************"

#Change to working git repository to pull changes from bare repository
#cd /var/www/insitedesignlab.com || exit
#unset GIT_DIR
#git pull origin master
#End of commands for post-receive hook

GIT_REPO=/home/m1ck3y/insite.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/insitedesignlab.com

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
cd $HOME
rm -Rf $TMP_GIT_CLONE
exit
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Basically this code just takes my public directory of my codebase ( the code I want the world to see ) and only moves that to my public folder.&lt;/p&gt;

&lt;h3&gt;Git Pros&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Secure&lt;/li&gt;
&lt;li&gt;Versioning&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Git Cons&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;None, this is seriously an awesome way to deploy!&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=CTsQM_AffDY:YltH5fo5c_E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=CTsQM_AffDY:YltH5fo5c_E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=CTsQM_AffDY:YltH5fo5c_E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=CTsQM_AffDY:YltH5fo5c_E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=CTsQM_AffDY:YltH5fo5c_E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=CTsQM_AffDY:YltH5fo5c_E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=CTsQM_AffDY:YltH5fo5c_E:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=CTsQM_AffDY:YltH5fo5c_E:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/CTsQM_AffDY" height="1" width="1"/&gt;</description>
				<pubDate>Sun, 17 Mar 2013 00:00:00 -0400</pubDate>
				<link>/deploying-your-website</link>
				<guid isPermaLink="true">/deploying-your-website</guid>
			</item>
		
			<item>
				<title>Lessons Learned From Startup Weekend</title>
				<description>&lt;p&gt;This weekend I attended my first &lt;a href="http://annarbor.startupweekend.org/"&gt;Startup Weekend&lt;/a&gt;.&lt;/p&gt;

&lt;div class="img-wrap"&gt;&lt;img src="/images/startup_weekend.jpg" /&gt;&lt;/div&gt;


&lt;p&gt;The event went from Friday at 6pm until the following Sunday at 3:30pm.&lt;/p&gt;

&lt;p&gt;The days were broken down like this:&lt;/p&gt;

&lt;h2&gt;Friday&lt;/h2&gt;

&lt;p&gt;Gather for orientation at 6pm. We checked in and had pizza and drinks in a big meeting room. &lt;a href="http://www.twitter.com/dtrenz"&gt;@dtrenz&lt;/a&gt; and some other friends from my Meetup group were there and it was fun to catch up while we ate.&lt;/p&gt;

&lt;p&gt;After we were all done eating, we were brought into the large auditorium for the 'pitchfire' event. Before we got started -- the people at &lt;a href="http://rapt.fm/"&gt;Rapt.FM&lt;/a&gt; showed us their new KickStarter video and gave a pretty inspiring presentation.&lt;/p&gt;

&lt;p&gt;Their CEO, Erik Torenberg, gave a really inspiring speech about his experiences with Startup Weekend events. He talked about his first event, driving down to Chicago with some of his friends, and the mistakes they made. He told us that his pitch was well received and he ended up being in charge of his our Startup Group. He talked about how the group completely fell apart and jokingly (I hope) said his team didn't even get the free point from the judges for participation.&lt;/p&gt;

&lt;p&gt;After that the 'pitchfire' began. Anyone that wanted could get in line and give a 60 second pitch for their startup idea. I think all in all there were 54 pitches on Friday. The ideas largely consisted of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile Applications&lt;/li&gt;
&lt;li&gt;Crowdsourcing / Crowdfunding Websites&lt;/li&gt;
&lt;li&gt;Educational Websites&lt;/li&gt;
&lt;li&gt;Games&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;When the pitches were finished, each person who pitched got a piece of paper with their startups name on it and we moved back into the meeting room to vote on our favorites.&lt;/p&gt;

&lt;p&gt;This is the first thing I think should have been done differently. The people who pitched were awkwardly wandering around the room with their sheet of paper, trying to get votes ( sticky notes that every participant received three of ). There were a few problems with this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It was really hard to find a specific startup as they wandered around the room.&lt;/li&gt;
&lt;li&gt;It was hard to talk about your favorites with hopeful pitchers standing over your shoulder.&lt;/li&gt;
&lt;li&gt;It was pretty awkward when a good 70% of them got no votes.&lt;/li&gt;
&lt;li&gt;Things got really awkward when &lt;a href="http://www.twitter.com/aiwdesign"&gt;@aiwdesign&lt;/a&gt; and I ended up some of the last people with all of our votes left.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;If I were in charge I would have had all the pitchers stand at the front of the room giving out more details of their startup. Then I would have had a nice web application that allowed for anonymous voting.&lt;/p&gt;

&lt;p&gt;When the voting was done the group in charge picked the 10 most popular and the rest of the startup ideas were tossed.&lt;/p&gt;

&lt;p&gt;Then came the second most awkward part of the evening. With the 10 groups remaining the rest of us had to decide which group to join.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everyone wanted mobile developers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think &lt;a href="http://www.twitter.com/dtrenz"&gt;@dtrenz&lt;/a&gt; was one of the few lucky enough to end up in a group with one.&lt;/p&gt;

&lt;h3&gt;Our First Big Mistake&lt;/h3&gt;


&lt;p&gt;We overcommitted ourselves. We found a group that wanted to make a mobile application for the popular game Assassin. We (despite having no experience) volunteered to use PhoneGap to publish a native app that would help facilitate playing the game.&lt;/p&gt;

&lt;p&gt;We ended up in a group of 9, sitting upstairs talking about the game and how much more fun it would be if we could add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic target assignment&lt;/li&gt;
&lt;li&gt;GPS tracking&lt;/li&gt;
&lt;li&gt;In-app purchases&lt;/li&gt;
&lt;li&gt;Facebook integration&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Our Second Big Mistake&lt;/h3&gt;


&lt;p&gt;We didn't understand our Minimum Viable Product. We got it into our heads that the MVP was a functioning mobile application. The &lt;strong&gt;real&lt;/strong&gt; MVP was a great presentation and perhaps a bit of a tech demo. Unfortunately it took us until Sunday morning to realize this.&lt;/p&gt;

&lt;h2&gt;Saturday&lt;/h2&gt;

&lt;p&gt;Honestly, Saturday was a pretty stressful day for our group. Things kept going wrong and I think we all started to feel the stress of a failing project. We met with a few really cool mentors but overall spent our time poorly and didn't get as much as we should have done.&lt;/p&gt;

&lt;p&gt;I think a few things I would have done differently are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Split off from the non-developers. They had a lot of great ideas but ultimately were very distracting.&lt;/li&gt;
&lt;li&gt;Divied the work up better. Too much time was spent waiting on someone else to finish something.&lt;/li&gt;
&lt;li&gt;Kept it cool. I tend to get anxious when things aren't going well. The other two devs I was working with did a much better job keeping it together than I did. Thanks you guys!&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We had an OK day and I left wishing I can gotten more accomplished.&lt;/p&gt;

&lt;h2&gt;Sunday&lt;/h2&gt;

&lt;p&gt;This was the day we really pulled it together. I think we realized how little time we had left before presenting and for the first time really got down to what it was we needed to present.&lt;/p&gt;

&lt;p&gt;Kelly really stepped it up and made some great looking screenshots for us. Ian did a great job and put together a demo of our game. The rest of our team really pulled it together with some great slides and a killer presentation.&lt;/p&gt;

&lt;p&gt;In minutes I watched our group turn from failed mobile app to excited entrepreneurs.&lt;/p&gt;

&lt;p&gt;Our group leader -- Chening -- got up on stage and just knocked it out of the park with a presentation.&lt;/p&gt;

&lt;p&gt;We nailed second place.&lt;/p&gt;

&lt;div class="img-wrap"&gt;&lt;img src="/images/winners.jpg" /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=ztLm6Z5OBkY:4vd-Bbao3UY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=ztLm6Z5OBkY:4vd-Bbao3UY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=ztLm6Z5OBkY:4vd-Bbao3UY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=ztLm6Z5OBkY:4vd-Bbao3UY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=ztLm6Z5OBkY:4vd-Bbao3UY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=ztLm6Z5OBkY:4vd-Bbao3UY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=ztLm6Z5OBkY:4vd-Bbao3UY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=ztLm6Z5OBkY:4vd-Bbao3UY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/ztLm6Z5OBkY" height="1" width="1"/&gt;</description>
				<pubDate>Sun, 03 Feb 2013 00:00:00 -0500</pubDate>
				<link>/lessons-learned-from-startup-weekend</link>
				<guid isPermaLink="true">/lessons-learned-from-startup-weekend</guid>
			</item>
		
			<item>
				<title>My Git Cheat Sheet</title>
				<description>&lt;p&gt;Hopefully this isn't too confusing to everyone. I've been learning a lot about git lately and have decided to use this post as a dumping ground for all the cool git tricks I pick up along the way.&lt;/p&gt;

&lt;p&gt;Want to add a trick or have a better way? Just leave it in the comments.&lt;/p&gt;

&lt;h2&gt;To Add all 'modified' files and commit at the same time.&lt;/h2&gt;




&lt;pre&gt;
git commit -a -m 'Commit message'
&lt;/pre&gt;




&lt;h2&gt;To Undo a commit and put committed files back in staging&lt;/h2&gt;




&lt;pre&gt;
git reset --soft HEAD^
&lt;/pre&gt;




&lt;h2&gt;To unstage a file&lt;/h2&gt;




&lt;pre&gt;
git reset HEAD filename
&lt;/pre&gt;




&lt;h2&gt;Blow away all changes since last commit&lt;/h2&gt;




&lt;pre&gt;
git checkout -- filename
&lt;/pre&gt;




&lt;h2&gt;To add a file ( or files ) to the last commit&lt;/h2&gt;




&lt;pre&gt;
git add filename
git commit --amend -m 'new commit message'
&lt;/pre&gt;




&lt;h2&gt;Blow away the last commit entirely&lt;/h2&gt;




&lt;pre&gt;
git reset --hard HEAD^
&lt;/pre&gt;




&lt;h2&gt;Article about not having to enter username / password everytime&lt;/h2&gt;




&lt;pre&gt;
https://help.github.com/articles/set-up-git
&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=LiaeRe4bkY4:gFBKzB3ModQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=LiaeRe4bkY4:gFBKzB3ModQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=LiaeRe4bkY4:gFBKzB3ModQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=LiaeRe4bkY4:gFBKzB3ModQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=LiaeRe4bkY4:gFBKzB3ModQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=LiaeRe4bkY4:gFBKzB3ModQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=LiaeRe4bkY4:gFBKzB3ModQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=LiaeRe4bkY4:gFBKzB3ModQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/LiaeRe4bkY4" height="1" width="1"/&gt;</description>
				<pubDate>Wed, 09 Jan 2013 00:00:00 -0500</pubDate>
				<link>/my-git-cheat-sheet</link>
				<guid isPermaLink="true">/my-git-cheat-sheet</guid>
			</item>
		
			<item>
				<title>Choosing A Text Editor</title>
				<description>&lt;div class="img-wrap"&gt;&lt;img csrc="/images/choosing-a-text-editor.jpg" alt="" /&gt;&lt;/div&gt;


&lt;h2&gt;It Doesn't Matter&lt;/h2&gt;

&lt;p&gt;Bet you weren't expecting that, but it's really the truth.&lt;/p&gt;

&lt;p&gt;As programmers, we use text editors to write code. A good text editor will help you do that more powerfully and efficiently. The thing is, 90% of text editors on the market today do both of those things magnificently.&lt;/p&gt;

&lt;p&gt;What really matters it that you identify the features you need in a modern text editor and then choose any of the dozens of editors that offer those features.&lt;/p&gt;

&lt;h2&gt;Must Have Features&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;File Browser&lt;/li&gt;
&lt;li&gt;Syntax Highlighting&lt;/li&gt;
&lt;li&gt;Automatic Indentation&lt;/li&gt;
&lt;li&gt;Line Numbering&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Find and Replace&lt;/li&gt;
&lt;li&gt;Fun Plugins&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;This is what I've come up with so far as my must-haves. 'Fun Plugins' is a bit vague but I just mean your editor should have a good developer community adding great features and keeping up with new ones.&lt;/p&gt;

&lt;h2&gt;My Suggestions&lt;/h2&gt;

&lt;p&gt;I think you should try as many editors as possible until you find one that just clicks with you. Also, I think trying a lot of editors is good because you never know when you're going to find yourself in a situation that requires the use of a particular editor.&lt;/p&gt;

&lt;p&gt;That being said, I think you should try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vim&lt;/li&gt;
&lt;li&gt;emacs&lt;/li&gt;
&lt;li&gt;Sublime Text 2&lt;/li&gt;
&lt;li&gt;Netbeans&lt;/li&gt;
&lt;li&gt;Gedit&lt;/li&gt;
&lt;li&gt;TextMate&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Try Them All&lt;/h2&gt;

&lt;p&gt;I find it quite enjoyable to play around with multiple editors. They each offer something unique and I think you'll find yourself with multiple favorites.&lt;/p&gt;

&lt;p&gt;Any other editor suggestions? Leave 'em in the comments!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=6kuBSQOpszo:k66dL422tUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=6kuBSQOpszo:k66dL422tUk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=6kuBSQOpszo:k66dL422tUk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=6kuBSQOpszo:k66dL422tUk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=6kuBSQOpszo:k66dL422tUk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=6kuBSQOpszo:k66dL422tUk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=6kuBSQOpszo:k66dL422tUk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=6kuBSQOpszo:k66dL422tUk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/6kuBSQOpszo" height="1" width="1"/&gt;</description>
				<pubDate>Sun, 06 Jan 2013 00:00:00 -0500</pubDate>
				<link>/choosing-a-text-editor</link>
				<guid isPermaLink="true">/choosing-a-text-editor</guid>
			</item>
		
			<item>
				<title>Wrapping Up 2012</title>
				<description>&lt;p&gt;It's been a crazy year.&lt;/p&gt;

&lt;p&gt;I know January is a bit late for an end of the year wrap-up but the end of the year came and went so quickly.&lt;/p&gt;

&lt;p&gt;Last year, I wrote &lt;a href="/2011-review-a-thank-you/"&gt;an article&lt;/a&gt; wrapping up the first year of this blog and highlighting some goals for 2012. Looking back on my goals I'm surprised both at how few I achieved as well as how much my priorities have shifted.&lt;/p&gt;

&lt;h2&gt;Goals For 2012&lt;/h2&gt;

&lt;p&gt;My goals for this past year were to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write an e-book and give it away to my readers. Preferably something on Search Engine Optimization or Online Marketing.&lt;/li&gt;
&lt;li&gt;Write guest posts for at least 5 blogs more popular than mine.&lt;/li&gt;
&lt;li&gt;Make friends with other starting bloggers, it gets lonely sometimes :)&lt;/li&gt;
&lt;li&gt;Write at least 100 articles. ( Twice as many as this year )&lt;/li&gt;
&lt;li&gt;Start posting video screencasts as an alternative way to deliver information.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;Publish an Ebook&lt;/strong&gt; - This has fallen completely off my radar. I like the idea of publishing work longer than a blog post but I'm not so interested in SEO and Internet Marketing right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guest Posts&lt;/strong&gt; - This still interests me, but I wrote a whopping 0 guest posts last year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make Friends&lt;/strong&gt; - This has proven quite successful! I've become involved ( now teaching ) at my local &lt;a href="http://www.meetup.com/ann-arbor-php-mysql/"&gt;PHP Meetup Group&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write 100 Posts&lt;/strong&gt; - I didn't even make sixty. Still, more than last year...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with Screencasts&lt;/strong&gt; - Still on the to-do list.&lt;/p&gt;

&lt;p&gt;Pretty depressing at first glance, but I've accomplished quite a bit in other areas.&lt;/p&gt;

&lt;h2&gt;Accomplishments In 2012&lt;/h2&gt;

&lt;p&gt;All in all this has been a pretty incredible year. In January I started a paid internship with a &lt;a href="http://wojodesign.com/"&gt;great web design firm&lt;/a&gt; which helped push my skills to the next level. Working for Wojo Design really helped my figure out what I want to do for my career ( despite it being different from what I was doing for them ).&lt;/p&gt;

&lt;h3&gt;PHP&lt;/h3&gt;

&lt;p&gt;I really thought that front-end design and WordPress were the tools for me. Then, this year, I started to develop PHP applications pretty heavily and fell in love. Back-end development has become my obsession. I've built Social Networks, Photo Sharing Applications, Blog's, Content Management Systems and I'm just getting started!&lt;/p&gt;

&lt;h3&gt;New Technologies&lt;/h3&gt;

&lt;p&gt;I recently migrated both my &lt;a href="http://www.jonkuperman.com/"&gt;personal blog&lt;/a&gt; as well as my company blog from WordPress to &lt;a href="/getting-started-with-jekyll/"&gt;Jekyll&lt;/a&gt;. It's been a really fun project and the results are amazing!&lt;/p&gt;

&lt;h3&gt;PHP Meetup Group&lt;/h3&gt;

&lt;p&gt;Our local &lt;a href="http://www.meetup.com/ann-arbor-php-mysql/"&gt;PHP Meetup Group&lt;/a&gt; has gained a lot of traction this year. It has become one of the things I most look forward to and I hope it keeps going at its current pace.&lt;/p&gt;

&lt;h3&gt;A Job&lt;/h3&gt;

&lt;p&gt;In a strange twist of fate, I landed ( my first ) full-time job at the end of this year. I've started working for a &lt;a href="http://www.medhub.com/"&gt;Medical Software&lt;/a&gt; company and so far it's pretty cool.&lt;/p&gt;

&lt;h2&gt;Goals For 2013&lt;/h2&gt;

&lt;p&gt;I'm going to try and outline a few general goals for the upcoming year. As long as I learn a lot in my field and have a ton of fun I'll be satisfied but having a written list of goals seems like the right thing to do.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gain proficiency in PHP, JavaScript, Git, and CSS.&lt;/li&gt;
&lt;li&gt;Write more.&lt;/li&gt;
&lt;li&gt;Teach More.&lt;/li&gt;
&lt;li&gt;Actually start making screencasts.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Thanks to everyone who reads and leaves comments on this blog. It's really become a huge part of my life and I can't tell you how much readership and feedback means to me!&lt;/p&gt;

&lt;p&gt;And now, the ubiquitous end of the year post is over. Thanks for bearing with me!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=u52KX7RdH-g:5Z52qykuSGI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=u52KX7RdH-g:5Z52qykuSGI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=u52KX7RdH-g:5Z52qykuSGI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=u52KX7RdH-g:5Z52qykuSGI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=u52KX7RdH-g:5Z52qykuSGI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=u52KX7RdH-g:5Z52qykuSGI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=u52KX7RdH-g:5Z52qykuSGI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=u52KX7RdH-g:5Z52qykuSGI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/u52KX7RdH-g" height="1" width="1"/&gt;</description>
				<pubDate>Wed, 02 Jan 2013 00:00:00 -0500</pubDate>
				<link>/Wrapping-Up-2012</link>
				<guid isPermaLink="true">/Wrapping-Up-2012</guid>
			</item>
		
			<item>
				<title>Getting Started With Jekyll</title>
				<description>&lt;p&gt;I've been really interested in checking out &lt;a href="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt; for a while now.&lt;/p&gt;

&lt;p&gt;According to their website:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Jekyll is a simple, blog aware, static site generator.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Yeah. That didn't clear things up for me either.&lt;/p&gt;

&lt;p&gt;Basically, Jekyll is a great little ruby program that allows you to make a blog with all the bells and whistles you're used to, and then export the entire thing into fast, secure, cachable HTML files.&lt;/p&gt;

&lt;h1&gt;Getting Started&lt;/h1&gt;

&lt;p&gt;I found the actual Jekyll install a bit confusing. So I started with this &lt;a href="https://github.com/danielmcgraw/Jekyll-Base"&gt;Jekyll Base&lt;/a&gt; project that Daniel McGraw has been working on.&lt;/p&gt;

&lt;p&gt;You should see something like this after you download it:&lt;/p&gt;

&lt;pre rel="File Structure"&gt;&lt;code&gt;
    | _layouts
    | _posts
    | README.md
    | _config.yml
    | index.html
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And that's it.&lt;/p&gt;

&lt;p&gt;Download that project from github and stash it in a folder. Next we need to install Jekyll.&lt;/p&gt;

&lt;h2&gt;Installation&lt;/h2&gt;

&lt;p&gt;Fire up that terminal ( I know it can be scary but this is pretty painless! )&lt;/p&gt;

&lt;pre&gt;
    sudo gem install jekyll
&lt;/pre&gt;


&lt;p&gt;Assuming you already have ruby installed that should take care of that. Otherwise you might have to install ruby manually but that's not for this tutorial.&lt;/p&gt;

&lt;p&gt;Next step, and this is totally optional is to install RDiscount so we can use Markdown to make blog posts.&lt;/p&gt;

&lt;pre&gt;
    sudo gem install rdiscount
&lt;/pre&gt;


&lt;p&gt;We're good to go!&lt;/p&gt;

&lt;h2&gt;The Setup&lt;/h2&gt;

&lt;p&gt;Let's move to that folder where you put Daniel's Jekyll Base.&lt;/p&gt;

&lt;p&gt;Pop open your terminal and change directory to that folder.&lt;/p&gt;

&lt;pre&gt;
    cd ~/path/to/that/folder
&lt;/pre&gt;


&lt;p&gt;Then type:&lt;/p&gt;

&lt;pre&gt;
    jekyll --server
&lt;/pre&gt;


&lt;p&gt;In order for Jekyll to update files as you edit, the terminal running jekyll --server either needs to be left on or turned on after each change and before you expect to see anything in the browser.&lt;/p&gt;

&lt;p&gt;Then open up your favorite browser and navigation to:&lt;/p&gt;

&lt;p&gt;http://localhost:4000&lt;/p&gt;

&lt;p&gt;and there you have it!&lt;/p&gt;

&lt;p&gt;If you look back in your file directory, you'll see that Jekyll added some more files and folders. For more information on what those are and why they're important, check out Daniel's post &lt;a href="http://danielmcgraw.com/2011/04/18/The-Ultimate-Guide-To-Getting-Started-With-Jekyll-Part-2/"&gt;on his personal blog&lt;/a&gt;. We're just going to jump right in!&lt;/p&gt;

&lt;h2&gt;Writing Your First Post&lt;/h2&gt;

&lt;p&gt;Open up your favorite text editor and use it to open _posts/1985-10-26-Test-Post.md. You should see something like this:&lt;/p&gt;

&lt;pre rel="Markdown"&gt;&lt;code&gt;
---
layout: post
title: Test Post
---

This is a test post writen in markdown. To learn more about markdown check out the 
[documentation](http://daringfireball.net/projects/markdown/) on 
[Daring Fireball](http://daringfireball.net/).
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Like the post says, if you want more information on Markdown, check out &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Daring Fireball&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go ahead and get your hands dirty! Use that Daring Fireball post to figure out the syntax of Markdown. Feel free to just use regular HTML if you prefer although I think you'll find Markdown very elegant. If you want to change the 'date' of the post, just change the date in the filename. When you're ready to see your post, just head over to the browser and refresh.&lt;/p&gt;

&lt;h2&gt;Deployment&lt;/h2&gt;

&lt;p&gt;I'm going to do a whole series on Jekyll deployment. For now, just know that you can take the entire contents of _site and stick them on the web via FTP. They should be all good to go.&lt;/p&gt;

&lt;h2&gt;Common Pitfalls&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Remember that jekyll --server both compiles all your Jekyll code into HTML and is needed for local viewing.&lt;/li&gt;
&lt;li&gt;Before trying anything tricky, check if there is already a &lt;a href="https://github.com/mojombo/jekyll/wiki/Plugins"&gt;plugin&lt;/a&gt; for what you're attempting.&lt;/li&gt;
&lt;li&gt;Make backups before trying to export your current blog format to Jekyll ( there are good tools but it can get messy ).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, if you're moving from a more robust platform like WordPress here are some things you'll need to figure out that Jekyll doesn't offer out of the box.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom 404 page ( use htaccess )&lt;/li&gt;
&lt;li&gt;sitemap ( Jekyll plugin )&lt;/li&gt;
&lt;li&gt;RSS Feed ( Jekyll plugin )&lt;/li&gt;
&lt;li&gt;Pretty Permalinks ( edit _config.yml )&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Good Luck Out There&lt;/h2&gt;

&lt;p&gt;Let me know in the comments if any of this was unclear or just isn't working. I'm planning on doing &lt;strong&gt;a lot&lt;/strong&gt; more posts on Jekyll so check back soon!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=zMq7zEQdBbI:s_4Znahal_c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=zMq7zEQdBbI:s_4Znahal_c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=zMq7zEQdBbI:s_4Znahal_c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=zMq7zEQdBbI:s_4Znahal_c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=zMq7zEQdBbI:s_4Znahal_c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=zMq7zEQdBbI:s_4Znahal_c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=zMq7zEQdBbI:s_4Znahal_c:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=zMq7zEQdBbI:s_4Znahal_c:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/zMq7zEQdBbI" height="1" width="1"/&gt;</description>
				<pubDate>Tue, 01 Jan 2013 00:00:00 -0500</pubDate>
				<link>/getting-started-with-jekyll</link>
				<guid isPermaLink="true">/getting-started-with-jekyll</guid>
			</item>
		
			<item>
				<title>Passing Parameters in Javascript onClick Event</title>
				<description>&lt;p&gt;I ran into a problem today.&lt;/p&gt;

&lt;p&gt;I was trying to generate a bunch of input buttons with JavaScript and have each of them do something unique onClick.&lt;/p&gt;

&lt;h2&gt;The Wrong Way&lt;/h2&gt;

&lt;pre rel="JavaScript" class="prettyprint"&gt;&lt;code&gt;
&amp;lt;script type="text/javascript"&gt;
    var temp;
    var myArr = new Array();
    myArr[0] = "Peter";
    myArr[1] = "Paul";
    myArr[2] = "Tony";
    myArr[3] = "Adam";

    function display(name) {

        alert(name);

    }

    for(var i = 0; i &lt; 4; i ++)
    {
        temp = myArr[i];
        document.write('&amp;lt;input type="button" onclick="display(temp)" value="Display"&gt;');
    }
&amp;lt;/script&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;The Problem&lt;/h3&gt;

&lt;p&gt;The issue is in JavaScript global variable. Since temp is a global variable, the onclick trigger sends the content of temp after the loop is all finished. Since Adam is the last value to be stored in temp, that's what all buttons alert. The trick is to use input name as a non-global and then pass the whole input tag to the function like so:&lt;/p&gt;

&lt;h2&gt;The Right Way&lt;/h2&gt;

&lt;pre rel="JavaScript" class="prettyprint"&gt;&lt;code&gt;
&amp;lt;script type="text/javascript"&gt;
    var myArr = new Array();
    myArr[0] = "Peter";
    myArr[1] = "Paul";
    myArr[2] = "Tony";
    myArr[3] = "Adam";

    function display(object) {

        alert(object.name);

    }

    for(var i = 0; i &lt; 4; i ++)
    {
        document.write('&amp;lt;input type="button" onclick="display(this)" name="'+myArr[i]+'" value="'+myArr[i]+'"&gt;');
    }
&amp;lt;/script&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=jR-wEEUcc58:zOUO09lUgvw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=jR-wEEUcc58:zOUO09lUgvw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=jR-wEEUcc58:zOUO09lUgvw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=jR-wEEUcc58:zOUO09lUgvw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=jR-wEEUcc58:zOUO09lUgvw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=jR-wEEUcc58:zOUO09lUgvw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/insitedesignlab?a=jR-wEEUcc58:zOUO09lUgvw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/insitedesignlab?i=jR-wEEUcc58:zOUO09lUgvw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/insitedesignlab/~4/jR-wEEUcc58" height="1" width="1"/&gt;</description>
				<pubDate>Thu, 13 Dec 2012 00:00:00 -0500</pubDate>
				<link>/passing-parameters-in-javascript-onclick-event</link>
				<guid isPermaLink="true">/passing-parameters-in-javascript-onclick-event</guid>
			</item>
		
	</channel>
</rss>
