<?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>Josh Strange</title>
	<atom:link href="http://www.joshstrange.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshstrange.com</link>
	<description>The musings of student involved in Greek life</description>
	<lastBuildDate>Mon, 29 Oct 2012 15:44:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Short review of Rdio</title>
		<link>http://www.joshstrange.com/short-review-of-rdio/</link>
		<comments>http://www.joshstrange.com/short-review-of-rdio/#comments</comments>
		<pubDate>Mon, 29 Oct 2012 15:44:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mobile app]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[Rdio]]></category>
		<category><![CDATA[Spotify]]></category>
		<category><![CDATA[subscription music]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=144</guid>
		<description><![CDATA[<p>I listen to music just about all day long at work so whatever I use has to work well. Rdio, does not. I first heard about Rdio about 3 years ago when they were still in private beta, I didn&#8217;t get in. A year or so later when they opened to the public I wasn&#8217;t very interested due to having looked at Spotify and decided the streaming music wasn&#8217;t for me. Then about a month ago I got sick of having to constantly download new music that I wanted to listen to and started looking around again. A couple guys at work used Rdio and spoke highly of it so I went ahead and bought the $10/mo plan so I could use it on my phone/desktop/web. I have been using Rdio for about a month and here are the issues ... <a href="http://www.joshstrange.com/short-review-of-rdio/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>I listen to music just about all day long at work so whatever I use has to work well. Rdio, does not. I first heard about Rdio about 3 years ago when they were still in private beta, I didn&#8217;t get in. A year or so <img class="alignright size-thumbnail wp-image-145" style="border: 0px; margin: 5px;" title="Rdio" src="http://www.joshstrange.com/wp-content/uploads/2012/10/rdio_logo-150x150.png" alt="" width="150" height="150" />later when they opened to the public I wasn&#8217;t very interested due to having looked at Spotify and decided the streaming music wasn&#8217;t for me. Then about a month ago I got sick of having to constantly download new music that I wanted to listen to and started looking around again. A couple guys at work used Rdio and spoke highly of it so I went ahead and bought the $10/mo plan so I could use it on my phone/desktop/web. I have been using Rdio for about a month and here are the issues I have noticed with the desktop/mobile client:</p>
<p>Desktop:</p>
<ol>
<li>If the network ever drops or has any minor issues then Rdio skips to the next song. This is highly annoying, it should do a better job of buffering and handling network hiccups instead of giving up and moving on to the next song.</li>
<li>Often the interface becomes unresponsive and I have to either reopen the app or right-click -&gt; reload .</li>
<li>The interface is slow even when the network is working perfectly, this is due to the &#8220;app&#8221; essentially just being the webpage in a webview wrapper. FB was guilty of this on iOS with their app as well, Rdio: Bite the bullet and write a real app please</li>
</ol>
<p>Mobile:</p>
<ol>
<li>The app does not &#8220;remember&#8221; if you have enabled shuffle/loop.</li>
<li>The app does not &#8220;remember&#8221; if you have enabled shuffle/loop.</li>
<li>The app does not &#8220;remember&#8221; if you have enabled shuffle/loop, oh oops, I forgot I had already typed that&#8230; But this is REALLY annoying, if I am quickly scanning through my playlist in my car and I hit the end of the playlist then I have to unlock my phone, launch the Rdio app if it&#8217;s not already open, select playlists, and click a song to get music playing again. A) This is not safe to do while driving and B) It is a terrible user experience, the least they could do is have the playlist open when I open the app</li>
<li>The shuffle &#8220;feature&#8221; is horribly broken. It shuffles in both directions so if I have shuffle on and I am trying to find a song I want to listen to but I click &#8220;Next&#8221; and then decide I DO want to listen to that song I cannot hit &#8220;Prev&#8221; to get back to the song. The thing that drives me nuts about this is the desktop version of shuffle works the way you expect and are used to.</li>
<li>Whenever you hit &#8220;Play&#8221; after having it paused and disconnected then it restarts the song so when I get out of my car then get back in and hit play the song restarts. Maybe this doesn&#8217;t bother other people but when I listen to 90% of a song on the way to work and then get in my car after work and it is restarted I get annoyed, the least they could do is just skip to the next song.</li>
</ol>
<p>&nbsp;</p>
<p>I am very lukewarm on the idea of subscription based music and before Apple started to allow background music from apps I wouldn&#8217;t have gone anywhere near it. However I do enjoy the community playlists, I am extremely lazy so I really like subscribing to a playlist that someone else took the time to make, that said I have a complaint with Rdio&#8217;s playlists. You either have to love the entire playlist or tough luck. There is no way to &#8220;clone&#8221; or &#8220;copy&#8221; a playlist, I want this functionality so that I can take a popular playlist that is 85% what I want and remove some songs and add others. Really I would like the ability to &#8220;branch&#8221; a playlist and remove/add songs but still have new songs that are added to the original playlist added to my &#8220;branch&#8221;, of course if I don&#8217;t like the song I could remove it.</p>
<p>Tonight after work I will canceling my Rdio subscription and signing up for Spotify to see if the grass is any greener.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/short-review-of-rdio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alfred Extension: Unmount</title>
		<link>http://www.joshstrange.com/alfred-extension-unmount/</link>
		<comments>http://www.joshstrange.com/alfred-extension-unmount/#comments</comments>
		<pubDate>Wed, 27 Jun 2012 14:04:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Alfred]]></category>
		<category><![CDATA[Alfred Extensions]]></category>
		<category><![CDATA[Alfred Powerpack]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[unDock]]></category>
		<category><![CDATA[Unmount]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=129</guid>
		<description><![CDATA[<p>This is just a quick little post about a small <a href="http://www.alfredapp.com/">Alfred</a> extension I put together that lets you easily unmount all of your drives. I take my laptop and one of two of my external drives back and forth with me to work so I am always ejecting them, I wanted a fast and easy way to disconnect them that didn&#8217;t require me opening up finder and scrolling down to click the eject buttons.</p>
<p>I bought a small App Store app, <a href="http://flyingpapersoftware.com/">unDock</a> ($1), which worked perfectly and even had the ability to set a keyboard shortcut to unmount all your drives. However, I wanted something that would work across all the macs I work on without me having to log into the app store on each one. Yes I am aware they will all need to have Alfred on them but most of ... <a href="http://www.joshstrange.com/alfred-extension-unmount/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-130" style="border: 0px; margin: 5px;" title="alfred-logo" src="http://www.joshstrange.com/wp-content/uploads/2012/06/alfred-logo-300x246.png" alt="" width="100" height="82" />This is just a quick little post about a small <a href="http://www.alfredapp.com/">Alfred</a> extension I put together that lets you easily unmount all of your drives. I take my laptop and one of two of my external drives back and forth with me to work so I am always ejecting them, I wanted a fast and easy way to disconnect them that didn&#8217;t require me opening up finder and scrolling down to click the eject buttons.</p>
<p>I bought a small App Store app, <a href="http://flyingpapersoftware.com/">unDock</a> ($1), which worked perfectly and even had the ability to set a keyboard shortcut to unmount all your drives. However, I wanted something that would work across all the macs I work on without me having to log into the app store on each one. Yes I am aware they will all need to have Alfred on them but most of the computers I use have Alfred on them so this is not an issue for me.</p>
<p>On that note I give you <a href="https://www.dropbox.com/s/r5jrzu5qs8l0udc/Unmount.alfredextension">Unmount</a>, a very simple Alfred (Applescript) extension that will unmount all your attached drives except your network and optical drives. All you have to do is type &#8220;unmount&#8221;, or whatever keyword you choose to use, and all of your drives will be ejected. It&#8217;s that simple, really thats all I&#8217;ve got, enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/alfred-extension-unmount/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to setup growl notifications for Beanstalk Deployments [Updated]</title>
		<link>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/</link>
		<comments>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 15:47:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Able Engine]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[boxcar]]></category>
		<category><![CDATA[BSGrowler]]></category>
		<category><![CDATA[Demote]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[MacGap]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Pusher]]></category>
		<category><![CDATA[PusherApp]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=111</guid>
		<description><![CDATA[<p>A few months ago I wrote a blog post on <a title="How to setup growl notifications for Beanstalk Deployments" href="http://www.joshstrange.com/2012/03/26/how-to-setup-growl-notifications-for-beanstalk/">How to setup growl notifications for Beanstalk Deployments</a> using boxcar and a small script to call out to the API. Since then I have found boxcar to not be to optimal solution so here is the updated way to setup growl notifications for Beanstalk. There are 3 main components to this project: <a href="http://pusherapp.com">PusherApp</a>, <a href="http://heroku.com">Heroku</a>, and <a href="https://github.com/maccman/macgap">MacGap</a>. This post will walk you through each step to set this up on your own system. This also provides you with an easy way to send Growl notifications to your computer for any reason. Lets get started!</p>
<p>&#160;</p>
<p><strong>Step one:</strong> Install <a href="https://github.com/maccman/macgap">MacGap</a> on your Mac. MacGap is a lightweight wrapper around webkit that exposes some system functions through its javascript library. To install it just open ... <a href="http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>A few months ago I wrote a blog post on <a title="How to setup growl notifications for Beanstalk Deployments" href="http://www.joshstrange.com/2012/03/26/how-to-setup-growl-notifications-for-beanstalk/">How to setup growl notifications for Beanstalk Deployments</a> using boxcar and a small script to call out to the API. Since then I have found boxcar to not be to optimal solution so here is the updated way to setup growl notifications for Beanstalk. There are 3 main components to this project: <a href="http://pusherapp.com">PusherApp</a>, <a href="http://heroku.com">Heroku</a>, and <a href="https://github.com/maccman/macgap">MacGap</a>. This post will walk you through each step to set this up on your own system. This also provides you with an easy way to send Growl notifications to your computer for any reason. Lets get started!</p>
<p>&nbsp;</p>
<p><strong>Step one:</strong> Install <a href="https://github.com/maccman/macgap">MacGap</a> on your Mac. MacGap is a lightweight wrapper around webkit that exposes some system functions through its javascript library. To install it just open up Terminal and run the following command:</p>
<div class="code">gem install macgap</div>
<p><strong>Step two:</strong> Signup for <a href="https://api.heroku.com/signup">Heroku</a> (It&#8217;s free and very easy) and signup for a free API account with <a href="http://pusher.com/">PusherApp</a></p>
<p><strong>Step three:</strong> Install the <a href="https://toolbelt.herokuapp.com/">Heroku Toolbelt</a> on your computer</p>
<p><strong>Step four:</strong> Login to your PusherApp account and click the &#8220;+ Add new App&#8221; Button, name your app and leave the 2 checkboxes unchecked, then click &#8220;Create App&#8221;</p>
<p><strong>Step five:</strong> Go into the dashboard for your App and click on &#8220;API Access&#8221; in the top blue bar. Here you will find all your keys that you will need in later steps</p>
<p><strong>Step six:</strong> Clone <a href="https://github.com/joshstrange/node-beanstalk-pusherapp">this repo</a> and <a href="https://github.com/joshstrange/BSGrowler">this repo</a> down to your computer make sure you clone both of them into the same parent folder to make the rest of this tutorial easier</p>
<p><strong>Step seven:</strong> Edit both BSGrowler/index.html and node-beanstalk-pusherapp/server.js to use your application keys/secret keys/app id</p>
<p><strong>Step eight:</strong> Open terminal and &#8216;cd&#8217; to the parent directory you created in step seven</p>
<div class="code">cd /path/to/parent</div>
<p><strong>Step nine:</strong> Run the following command to build BSGrowler and once it has run move the BSGrowler.app file into your Applications folder and run it. When it launches it will disappear almost immediately and only be visible in your dock</p>
<div class="code">macgap build BSGrowler</div>
<p><strong>Step ten:</strong> Now &#8216;cd&#8217; into the node-beanstalk-pusherapp folder and run the following commands. After you push the code Heroku should return a URL that you can access your app at. Look for something like this &#8220;http://stormy-meadow-XXXX.herokuapp.com deployed to Heroku&#8221;</p>
<div class="code">cd node-beanstalk-pusherapp<br />
heroku login<br />
git init<br />
git add .<br />
git commit -m &#8220;init&#8221;<br />
heroku create &#8211;stack cedar<br />
git push heroku master<br />
heroku ps:scale web=1</div>
<p><strong>Step eleven:</strong> Visit the URL that Heroku provided in step ten. You should see &#8220;Nothing to see here, move along.&#8221;, now go to http://YOUR-APP.herokuapp.com/deploy. If you followed all the instructions you should see a growl notification pop up on your screen.</p>
<p>Now all you have to do is add &#8216;http://YOUR-APP.herokuapp.com/deploy&#8217; in your beanstalk deployments post-deploy hook and you will get a Growl notification when you code has been deployed to your server.</p>
<p>You can extend this in many ways (Fork me on github &#8211; <a href="https://github.com/joshstrange/node-beanstalk-pusherapp">node-beanstalk-pusherapp</a> &amp; <a href="https://github.com/joshstrange/BSGrowler">BSGrowler</a>) such as actually utilizing the posted JSON data (<a href="http://support.beanstalkapp.com/customer/portal/articles/68163-web-hooks-for-deployments">Read more</a>). This <a href="http://stackoverflow.com/a/8743060">SO question</a> can point you in the right direction for how to build on to our Node.js app to accomplish this. Using the POST data you could change the message so that it told you who pushed the code, when it was pushed, which repo, and more.</p>
<p>I built this because at work I hated having to open up beanstalk in a new tab to check the status on the deployment. This way I just hit commit and wait for the Growl notification. I hope this helps you as well!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Demote &#8211; A Drupal plugin that might speed up your site</title>
		<link>http://www.joshstrange.com/demote-a-drupal-plugin-that-might-speed-up-your-site/</link>
		<comments>http://www.joshstrange.com/demote-a-drupal-plugin-that-might-speed-up-your-site/#comments</comments>
		<pubDate>Tue, 15 May 2012 22:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Able Engine]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Demote]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drupal for Firebug]]></category>
		<category><![CDATA[Drupal Module]]></category>
		<category><![CDATA[Promote]]></category>
		<category><![CDATA[Promote to Front Page]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=95</guid>
		<description><![CDATA[<p>Recently I was trying to track down why a Drupal site that I wrote had such slow loading times on the homepage. The issue wasn&#8217;t due to the page needing to download a lot of items, I had already looked into that. It seemed that the server was very slow to serve up the page. At first I wrote it off to being a massive site with hundreds of thousands of images and too many contrib modules, however other sites on the same server were performing fine and the server had actually been scaled up multiple times due to it needing more storage space (Yes, S3, I love it and would have used it except that at the time I did not foresee storage as being an issue and now it wouldn&#8217;t be cost effective to spend a ton of time re-writing ... <a href="http://www.joshstrange.com/demote-a-drupal-plugin-that-might-speed-up-your-site/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Recently I was trying to track down why a Drupal site that I wrote had such slow loading times on the homepage. The issue wasn&#8217;t due to the page needing to download a lot of items, I had already looked into that. It seemed that the server was very slow to serve up the page. At first I wrote it off to being a massive site with hundreds of thousands of images and too many contrib modules, however other sites on the same server were performing fine and the server had actually been scaled up multiple times due to it needing more storage space (Yes, S3, I love it and would have used it except that at the time I did not foresee storage as being an issue and now it wouldn&#8217;t be cost effective to spend a ton of time re-writing code to use S3) since on Rackspace if you want more storage you have to upgrade to the next server size.</p>
<p>So we were on a massive server, other sites worked fine, and it wasn&#8217;t due to large page elements downloading. I was stumped until I looked at the front page using <a title="Drupal for Firebug" href="http://drupal.org/project/drupalforfirebug" target="_blank">Drupal for Firebug</a>. It was showing hundreds if not thousands of nodes being loaded every time the front page was accessed. I searched, and grep-ed, all through my code trying to figure out what had gone wrong and caused all these extra nodes (that were unused) to load, but couldn&#8217;t find the cause. I was especially surprised to see nodes that were created from form submissions (Programmatically, not through the UI) being loaded as well.</p>
<p>After searching for a while I finally found out what was happening. When creating new content types I had completely ignored the &#8220;Promote to Front Page&#8221; checkbox because all the data on the site was displayed through views. I never filtered based on &#8220;Promote to Front Page&#8221; because I felt that even in a situation where I would want a to promote content I would rather write my own implementation with more extendibility than a single checkbox that is limited in what it can do. And so I ignored it thinking &#8220;What could possibly go wrong?&#8221;.</p>
<p>Let me tell you what could go wrong, on every single home page visit EVERY node that was marked as &#8221;Promote to Front Page&#8221; was loaded by Drupal, even if it wasn&#8217;t ever used. The reason this was so hard to catch was it didn&#8217;t &#8220;break&#8221; the site instantly. Instead, over time, as the site grew, and more and more nodes were &#8220;Promoted&#8221;, the front page would slow down more and more. I personally think that &#8221;Promote to Front Page&#8221; is a stupid feature only to be used by people who use Drupal &#8220;out-of-the-box&#8221; with little to no configuration. It is for this reason that I wrote a tiny (As in less that 5 lines of code) module that disables the promote &#8220;feature&#8221;.</p>
<p>All the module does is hook into either <a href="http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_nodeapi/6" target="_blank">hook_nodeapi</a> (D6) or <a href="http://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_node_prepare/7" target="_blank">hook_node_presave</a> (D7) and then set the &#8220;promote&#8221; property on the $node to 0. I know it is super simple to do but I went ahead and packaged up a D6 and D7 version so that it would be easy to turn on/off. Don&#8217;t forget that using the module alone does not fix the whole problem. You also need to run &#8220;Update node Set promote=0&#8243; against your database so that you clear out any nodes that already have promote set to 1 (Obviously don&#8217;t run that SQL query if you actually use &#8221;Promote to Front Page&#8221; on your Drupal site, Does anyone?). I hope that Demote helps speed up your site.</p>
<p><a href="http://www.joshstrange.com/wp-content/uploads/2012/05/demote-D6.zip" target="_blank">Download Demote for Drupal 6</a></p>
<p><a href="http://www.joshstrange.com/wp-content/uploads/2012/05/demote-D7.zip" target="_blank">Download Demote for Drupal 7</a></p>
<p>Update: I have updated both the modules so that the checkbox is also removed from the create content form. This way it won&#8217;t even show the checkbox and if you create nodes programmatically then it will also catch it in the hook_nodeapi/hook_node_presave hooks</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/demote-a-drupal-plugin-that-might-speed-up-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing dShr.es &#8211; Simple Dropbox sharing</title>
		<link>http://www.joshstrange.com/introducing-dshr-es-simple-dropbox-sharing/</link>
		<comments>http://www.joshstrange.com/introducing-dshr-es-simple-dropbox-sharing/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 15:14:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dShr.es]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[drop.sh]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Dropbox App]]></category>
		<category><![CDATA[DropShare]]></category>
		<category><![CDATA[dSha.re]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Github]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=71</guid>
		<description><![CDATA[<p>Over the past few days I have been working on a little side project called <a title="dShr.es" href="http://dShr.es" target="_blank">dShr.es</a>. It was originally going to be called Drop.Sh/are but after buying that domain name, creating all my graphics, and coding about 90% of it I read the <a title="Dropbox Branding Guide" href="https://www.dropbox.com/developers/reference/branding" target="_blank">Dropbox branding guide</a> which states: Do not prefix your app name with &#8220;Drop.&#8221;. So I had to go look for a new domain name. I then found dSha.re and dSh.re were open and not too expensive (I had already dropped $99 on Drop.sh). Unfortunately I do not live in Europe and therefore cannot buy &#8220;.re&#8221; domain names (Side note: If you do live in Europe I would be happy to pay for the registration fee + 20%  to get those names registered and pointed at my name servers). I finally settled on dShr.es ... <a href="http://www.joshstrange.com/introducing-dshr-es-simple-dropbox-sharing/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-72" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="dropshare-logo-128" src="http://www.joshstrange.com/wp-content/uploads/2012/04/dropshare-logo-128.png" alt="" width="128" height="128" />Over the past few days I have been working on a little side project called <a title="dShr.es" href="http://dShr.es" target="_blank">dShr.es</a>. It was originally going to be called Drop.Sh/are but after buying that domain name, creating all my graphics, and coding about 90% of it I read the <a title="Dropbox Branding Guide" href="https://www.dropbox.com/developers/reference/branding" target="_blank">Dropbox branding guide</a> which states: Do not prefix your app name with &#8220;Drop.&#8221;. So I had to go look for a new domain name. I then found dSha.re and dSh.re were open and not too expensive (I had already dropped $99 on Drop.sh). Unfortunately I do not live in Europe and therefore cannot buy &#8220;.re&#8221; domain names (Side note: If you do live in Europe I would be happy to pay for the registration fee + 20%  to get those names registered and pointed at my name servers). I finally settled on dShr.es and dShar.es.</p>
<p>dShr.es makes sharing files via Dropbox very simple. All you have to do is link your Dropbox account with dShr.es and then choose a file from your Dropbox to share. dShr.es will give you a link that you can share with friends/family/anyone. When your recipient(s) go to the provided link they can either download the file directly or copy the file to their own Dropbox.</p>
<p>dShr.es is a very simple app and all the source code is available on <a title="dShr.es Source Code" href="https://github.com/joshstrange/dShr.es" target="_blank">Github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/introducing-dshr-es-simple-dropbox-sharing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to setup growl notifications for Beanstalk Deployments</title>
		<link>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk/</link>
		<comments>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 17:00:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[boxcar]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[notifo.com]]></category>
		<category><![CDATA[notify.io]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[testflight]]></category>
		<category><![CDATA[titanium]]></category>
		<category><![CDATA[vcs]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=43</guid>
		<description><![CDATA[<p></p>
<p><strong>UPDATE:</strong> This post is out of date, please check out <a title="How to setup growl notifications for Beanstalk Deployments [Updated]" href="http://www.joshstrange.com/2012/06/14/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/">How to setup growl notifications for Beanstalk Deployments [Updated]</a></p>
<p>So recently I started playing around with git and pre/post-deployment hooks on <a href="http://bnst.lk/GTpF0I">Beanstalk</a> (10% off through that link). I have used Beanstalk in the past through work but never really dove into all of it&#8217;s features. Beanstalk, for those of you who don&#8217;t know, is SVN and GIT repository hosting but it also supports deployments which allow you to easily push code to your servers via FTP/SFTP or SSH commands that it will run on your remote server. I used SSH for deployment because I wanted to just run &#8220;git pull&#8221; on the remote server.</p>
<p>I had everything set up, branches for dev/staging/live and deployments set up for each so that just by pushing to a certain branch my code would ... <a href="http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright  wp-image-54" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="beanstalk" src="http://www.joshstrange.com/wp-content/uploads/2012/03/beanstalk-150x150.png" alt="" width="90" height="90" /></p>
<p><strong>UPDATE:</strong> This post is out of date, please check out <a title="How to setup growl notifications for Beanstalk Deployments [Updated]" href="http://www.joshstrange.com/2012/06/14/how-to-setup-growl-notifications-for-beanstalk-deployments-updated/">How to setup growl notifications for Beanstalk Deployments [Updated]</a></p>
<p>So recently I started playing around with git and pre/post-deployment hooks on <a href="http://bnst.lk/GTpF0I">Beanstalk</a> (10% off through that link). I have used Beanstalk in the past through work but never really dove into all of it&#8217;s features. Beanstalk, for those of you who don&#8217;t know, is SVN and GIT repository hosting but it also supports deployments which allow you to easily push code to your servers via FTP/SFTP or SSH commands that it will run on your remote server. I used SSH for deployment because I wanted to just run &#8220;git pull&#8221; on the remote server.</p>
<p>I had everything set up, branches for dev/staging/live and deployments set up for each so that just by pushing to a certain branch my code would get deployed but I still had the problem of not knowing WHEN my code finishes deploying. In the past I had always had a SSH window open that I would run &#8220;svn up&#8221;/&#8221;git pull&#8221; on the server whenever I committed code but using Beanstalk&#8217;s deployments seemed so much more efficient and &#8220;clean&#8221;.</p>
<p><img class="alignleft size-full wp-image-46" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="Growl_64x64" src="http://www.joshstrange.com/wp-content/uploads/2012/03/Growl_64x64.png" alt="" width="64" height="64" />My first thought was <a href="http://growl.info">Growl</a>. I had used growl in the past before to alert me so that I could allow things to run quietly in the background. Most recently I edited the <a href="http://www.appcelerator.com/products/titanium-mobile-application-development/">Titanium Mobile</a> (Cross-platform mobile apps built on JS/CSS/HTML) build scripts so that when the app was deployed to either <a href="http://testflightapp.com">TestFlight</a> (Must have for iOS developers) or installed on my android test phone via adb it would throw a growl notification. This allowed me to hit &#8220;build&#8221; and go work on something else instead of watching the output window for Titanium.</p>
<p>So I set off to find something that would work for Beanstalk and Growl. I remembered reading/testing out a global notification &#8220;service&#8221; that had a mac client that piped the notifications through growl and soon found <a href="http://notify.io">notify.io</a>. The problem was/is that notify.io seems to be hosted on GAE and it was/is always &#8220;Over Quota&#8221; (I think it is running on a free tier or something like that). Notify.io had a mac client called <a href="https://github.com/abi/Nio">NIO</a> but NIO doesn&#8217;t seem to like my version of Growl (<a href="http://itunes.apple.com/us/app/growl/id467939042?mt=12&amp;ign-mpt=uo%3D4">App Store Version</a>) as it keeps asking me to install growl. Also NIO must have the servers it talks to hardcoded so even if I could get a copy of notify.io running (<a href="https://github.com/progrium/notify-io">It&#8217;s open source</a>) I couldn&#8217;t point NIO to my instance of it. (Yes I understand that I could modify the NIO source as I had access to it but that was more that I really wanted to do to get this working)</p>
<p><img class="alignright  wp-image-50" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="notifo" src="http://www.joshstrange.com/wp-content/uploads/2012/03/notifo.png" alt="" width="67" height="67" /></p>
<p>I was back to square one. I briefly considered writing a small program that queried one of my servers and just passed messages via &#8220;<a href="http://growl.info/extras.php#growlnotify">growlnotify</a>&#8221; but I wanted more of a &#8220;push&#8221; than a &#8220;pull/polling&#8221; setup. I then stumbled on <a href="http://notifo.com/">http://notifo.com/</a>. It was targeted for mobile devices but it had a <a href="http://notifo.com/desktop">desktop client </a>and an <a href="https://api.notifo.com/">API</a> so I thought I had finally found what I was looking for. Unfortunately their mac client doesn&#8217;t work with the version of growl I have installed either (<a href="http://itunes.apple.com/us/app/growl/id467939042?mt=12&amp;ign-mpt=uo%3D4">App Store Version</a>) so once again I had struck out.</p>
<p><img class="alignleft size-thumbnail wp-image-57" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="boxcar" src="http://www.joshstrange.com/wp-content/uploads/2012/03/boxcar-150x150.png" alt="" width="150" height="150" />I then saw <a href="http://boxcar.io/">boxcar</a>, I had used boxcar with varying degrees of success on my iPhone but it did have a <a href="http://boxcar.io/download_mac">mac client</a>, <a href="http://boxcar.io/help/api/providers">an API</a>, and growl integration. I would suggest that anyone that uses boxcar on their phone (Or anywhere for that matter) create a new account just for Beanstalk so that those updates only get pushed to the mac client and don&#8217;t clog up your phone. Once I had the client installed I downloaded their <a href="https://github.com/joshstrange/Boxcar-PHP-Provider/">PHP API</a> from github and threw it up on my server. NOTE: The api provided by Boxcar (<a href="https://github.com/boxcar/Boxcar-PHP-Provider">Official API</a>) is outdated and hashes the email address which the current API does not support so I linked to my fork of the project (I have attempted a pull request). Now copy <a href="https://gist.github.com/2206333">this code</a> into blank php file named beanstalk-hooks.php and edit the needed lines. Lastly go to your beanstalk deployment server and at the bottom you can set the hooks. For the urls: http://your-server.com/path/to/beanstalk-hooks.php?pre AND http://your-server.com/path/to/beanstalk-hooks.php?post. It&#8217;s that easy.</p>
<p>Now if you have done everything correctly you will see growl notifications when your deployment starts and ends.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-61" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="growlbean2" src="http://www.joshstrange.com/wp-content/uploads/2012/03/growlbean2.png" alt="" width="320" height="80" /><img class="aligncenter size-full wp-image-62" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="growlbean1" src="http://www.joshstrange.com/wp-content/uploads/2012/03/growlbean1.png" alt="" width="310" height="80" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/how-to-setup-growl-notifications-for-beanstalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I canceled my college subscription</title>
		<link>http://www.joshstrange.com/why-i-canceled-my-college-subscription/</link>
		<comments>http://www.joshstrange.com/why-i-canceled-my-college-subscription/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 15:46:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[College Life]]></category>
		<category><![CDATA[Fraternity]]></category>
		<category><![CDATA[Able Engine]]></category>
		<category><![CDATA[APAX Software]]></category>
		<category><![CDATA[Awesome Inc]]></category>
		<category><![CDATA[Dublin Coffman High School]]></category>
		<category><![CDATA[FIJI]]></category>
		<category><![CDATA[University of Kentucky]]></category>

		<guid isPermaLink="false">http://www.joshstrange.com/?p=32</guid>
		<description><![CDATA[<p>Recently I made the decision to withdraw from the <a href="http://www.uky.edu">University of Kentucky</a>. I did not make this choice lightly, but rather spent a lot of time pouring over all the possible outcomes of my decision. You might be asking why I titled this &#8220;Why I canceled my college subscription&#8221; as no one really calls college a &#8220;subscription&#8221; but I disagree. College is but one more business out there that takes your money and provides something in response and since it is one time fee for &#8220;unlimited&#8221; access to classes it can best be classified as a subscription.</p>
<p>For the longest time I thought the life consisted of the following Born-&#62;Elementary School-&#62;Middle School-&#62;High School-&#62;College-&#62;Job-&#62;Family-&#62;Death. Yes maybe throw in a few different jobs but by and large that is how humans &#8220;live&#8221;, it&#8217;s how my parents did it, how their parents did ... <a href="http://www.joshstrange.com/why-i-canceled-my-college-subscription/">Read More &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Recently I made the decision to withdraw from the <a href="http://www.uky.edu">University of Kentucky</a>. I did not make this choice lightly, but rather spent a lot of time pouring over all the possible outcomes of my decision. You might be asking why I titled this &#8220;Why I canceled my college subscription&#8221; as no one really calls college a &#8220;subscription&#8221; but I disagree. College is but one more business out there that takes your money and provides something in response and since it is one time fee for &#8220;unlimited&#8221; access to classes it can best be classified as a subscription.</p>
<p>For the longest time I thought the life consisted of the following Born-&gt;Elementary School-&gt;Middle School-&gt;High School-&gt;College-&gt;Job-&gt;Family-&gt;Death. Yes maybe throw in a few different jobs but by and large that is how humans &#8220;live&#8221;, it&#8217;s how my parents did it, how their parents did it and so on. However as my parents found out when I was young, I always ask &#8220;Why&#8221;. Why is the sky blue, Why do I have to eat my vegetables, why do I have to go to school? That last question was always answered with &#8220;So you can get a job and be successful&#8221;. For a long time, 21 years to be exact, I believed that whole-heartedly. I worked hard in school and got good grades up until college. My first semester in college I got a 3.5 GPA and was very happy with that but the next semester it fell to a 2.21.</p>
<p>Why did my GPA fall? Was it due to joining a <a href="http://ukphigam.com">Fraternity</a>? No, because my first semester I had my highest GPA to date. Was it laziness? Maybe a little bit but how does student go from 3.5-4.0 levels of performance in high school to sub-3.0/2.0 GPA&#8217;s in college? I&#8217;ll tell you why my GPA fell: I got a job.</p>
<p>I got my first programming job near the end of my first semester in college at <a href="http://www.apaxsoftware.com/">APAX Software</a>. To a young web developer this job was amazing, someone was going to pay ME to do what I love to do. I had taught myself PHP/MySQL/JS in high school and been tasked by the school to build a few webapps for them. I stayed with APAX for a little over a year and I found myself constantly blowing off class and school work to do real work instead. Yes, college is not cheap (Especially if you are out of state) and I was practically throwing money away when I didn&#8217;t go to class but I was selfish (My parents were paying for college) and young and all I saw was that the more hours I put in at APAX the more money I saw in my pocket.</p>
<p>After working at APAX for about a year I realized I had hit a ceiling, I had maxed out the hours they would give me (less that 20hrs/week) and I was stuck in the cycle of doing the same repetitive, mindless, and boring work over and over again. So what started as an attempt to brach out and do some freelance work on the side to make ends meet, turned into me taking a job at <a href="http://ableengine.com">Able Engine</a>, where I am now.</p>
<p>Able Engine was able to provide me with lot of opportunities to grow as programmer and expand more into mobile development. I loved working on projects and the first summer I spent with them was awesome, I was making more money than at my previous job, I had all the hours I could ever want, and I got a desk to work at (Which seems trivial but I didn&#8217;t have one at APAX so it was a big deal to me).</p>
<p>Then school started up again and I had to cut back on hours to make time for classes, studying, and Fraternity. I always looked at college as a means to an end but that started to feel more and more like a lie I told myself to keep going. Then spring break my junior year rolled around and that&#8217;s when the excrement hit the turbine. I decided to stay in Lexington and work instead of go to PCB or Daytona as I had in years past, and it was by far the best week of the year (Well at least a close second to the weekend my little brothers got initiated). I was able to forget all about school and focus on work between the hours of 9am-6pm and then when I got off work that was it. I had nothing to worry about, no stress, no problems. I was free to work on side-projects of mine and hang out with my dog (Who came down for a 2-week visit).</p>
<p>Then reality set back in and school started up. I went to 2 classes and knew instantly that I was wasting my time. Nothing I had &#8220;learned&#8221; in college had benefited me in regards to my job and I was paying $5K/Semester and shouldering another $5K in loans/semester. I realized that I was literally throwing away money and digging myself into debt. I stopped and thought back to my &#8220;beliefs&#8221; on how you were supposed to live our life (Born-&gt;Elementary School-&gt;Middle School-&gt;High School-&gt;College-&gt;Job-&gt;Family-&gt;Death) and noticed that wait, I have a job. I have a job that was in the field that I love, a job that I enjoy, and a job that doesn&#8217;t care if I have a degree or not, a job that is sought after in my industry and frankly I am really good at it. I logged into myUK the next day and dropped all but one of my classes. (I am doing well in that class and it makes leaving UK easier if I don&#8217;t drop all my classes)</p>
<p>So why did I cancel my college subscription? Because I saw no value in it, it was getting me nowhere and costing me an arm and a leg. The only thing I will take away from college are my Fraternity Brothers. The cost of joining FIJI and being a Brother was pennies on the dollar when compared to tuition. I now see that all the times I remembered &#8220;good times&#8221; in college was when I was with my Fraternity, everything I did that I was proud of was because of my Fraternity, all the important people and connections I made was because I was in FIJI. So yes I am sad that I will not be an active undergraduate brother my senior year of college but it is not as if I will never see these people again. The friends I have made in FIJI will be my friends forever. FIJI is not for college days alone.</p>
<p>So what&#8217;s next for me? I will continue to work at my current company while I spend my free time developing a product with one of my FIJI Brothers, but that is a whole other blog post and still is a little ways off. I encourage you to analyze parts of your life and drill down to why you do the things you do, what motivates you and why does it motivate you? Break things down to their smallest components and answer that burning question: &#8220;Why&#8221;. Because maybe, just like like me you will see that you are wasting your time on an extra step. Never let people scaring you out of taking a risk because I know a <a href="http://en.wikipedia.org/wiki/Mark_Zuckerberg">few</a> <a href="http://en.wikipedia.org/wiki/Bill_gates">people</a> <a href="http://en.wikipedia.org/wiki/Steve_jobs">who</a> took a risk and it seems to be working out for them. In closing never let anything get in the way of your dreams and never stop dreaming, the second that you do all is lost and you will end up in a job you hate and a life full of remorse for past action and regret for lost opportunities; and that, is no way to live.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshstrange.com/why-i-canceled-my-college-subscription/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
