<?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>Justin Carmony</title>
	<atom:link href="http://www.justincarmony.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.justincarmony.com/blog</link>
	<description>Web Designer &#38; Software Engineer</description>
	<lastBuildDate>Sun, 13 May 2012 20:36:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Video: Look At Your Data &#8211; John Rauser &#8211; Velocity 2011</title>
		<link>http://www.justincarmony.com/blog/2012/05/13/video-look-at-your-data-john-rauser-velocity-2011/</link>
		<comments>http://www.justincarmony.com/blog/2012/05/13/video-look-at-your-data-john-rauser-velocity-2011/#comments</comments>
		<pubDate>Sun, 13 May 2012 20:36:25 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[web performance]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1127</guid>
		<description><![CDATA[Last year I saw some videos from Velocity 2011 that were really enlightening, and today I wanted to re-watch one of them. Of course, I hadn&#8217;t bookmarked them, or remembered which conference they were from. So after some searching and remembering, I found the video. &#8220;Look at Your Data&#8221; by John Rauser. It is an ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Last year I saw some videos from Velocity 2011 that were really enlightening, and today I wanted to re-watch one of them. Of course, I hadn&#8217;t bookmarked them, or remembered which conference they were from. So after some searching and remembering, I found the video. &#8220;Look at Your Data&#8221; by John Rauser. It is an excellent video and understanding your performance data and how to get more from it. I&#8217;ve embedded it below, but I would encourage everyone to checkout <a href="http://www.youtube.com/view_play_list?p=C394849408B5F203">all the videos they posted from Velocity 2011</a>, its a bunch of great stuff. </p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/coNDCIMH8bk" frameborder="0" allowfullscreen></iframe></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/05/13/video-look-at-your-data-john-rauser-velocity-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP-FPM, Nginx, PHP_VALUE, and Multiple Values</title>
		<link>http://www.justincarmony.com/blog/2012/04/23/php-fpm-nginx-php_value-and-multiple-values/</link>
		<comments>http://www.justincarmony.com/blog/2012/04/23/php-fpm-nginx-php_value-and-multiple-values/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 05:34:57 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[xhgui]]></category>
		<category><![CDATA[xhprof]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1125</guid>
		<description><![CDATA[Quick little post on a problem I had while trying to use XHGui with my Nginx/PHP-FPM setup. I needed to be able to pass the auto_prepend_file and auto_append_file settings to PHP-FPM from Nginx. In apache you can declare multiple php_value settings. However, when I did the same in nginx, it would only reflect the second ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Quick little post on a problem I had while trying to use <a href="http://phpadvent.org/2010/profiling-with-xhgui-by-paul-reinheimer">XHGui</a> with my Nginx/PHP-FPM setup. I needed to be able to pass the auto_prepend_file and auto_append_file settings to PHP-FPM from Nginx. In apache you can declare multiple php_value settings. However, when I did the same in nginx, it would only reflect the second setting. Turns out you need to set all of your php_value&#8217;s in Nginx in a single string, and you separate them by new line characters. Here is how it should look:</p>
<code class="code">location ~ \.php$ {
        expires off;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www//httpdocs/$fastcgi_script_name;
        fastcgi_param  PHP_VALUE   &quot;auto_prepend_file=/var/www/xhprof/external/header.php \n auto_append_file=/var/www/xhprof/external/footer.php&quot;;
    }</code>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/04/23/php-fpm-nginx-php_value-and-multiple-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A New Chapter In My Career &#8211; Deseret Digital Media</title>
		<link>http://www.justincarmony.com/blog/2012/04/22/a-new-chapter-in-my-career-deseret-digital-media/</link>
		<comments>http://www.justincarmony.com/blog/2012/04/22/a-new-chapter-in-my-career-deseret-digital-media/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 03:49:22 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[Dating DNA]]></category>
		<category><![CDATA[deseret digital media]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1123</guid>
		<description><![CDATA[As several people know by now, I have accepted a position at Deseret Digital Media as Director of Development. For those who don’t know, Deseret Digital Media is owned by the LDS Church, and is in charge of all the web &#038; mobile technology for the church’s for-profit companies. This includes KSL.com, DeseretBook.com, DeseretNews.com, and ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>As several people know by now, I have accepted a position at <a href="http://deseretdigital.com/" target="_blank">Deseret Digital Media</a> as Director of Development. For those who don’t know, Deseret Digital Media is owned by the <a href="http://www.lds.org/?lang=eng" target="_blank">LDS Church</a>, and is in charge of all the web &#038; mobile technology for the church’s for-profit companies. This includes <a href="http://www.ksl.com/" target="_blank">KSL.com</a>, <a href="http://deseretbook.com/" target="_blank">DeseretBook.com</a>, <a href="http://www.deseretnews.com/home" target="_blank">DeseretNews.com</a>, and several others. I will be the Director of Development for Deseret News’s website, mobile applications, etc. </p>
<p>For the last four years I’ve been working at <a href="http://www.datingdna.com/?a=home" target="_blank">Dating DNA, LLC</a> as the CTO, and have enjoyed every moment. It has been a great ride and a lot of work. When I started we had one website on one server. Dating DNA now has over 40 iPhone Apps, several APIs powering the apps, and dozens of servers and services. It has been a challenging and rewarding experience scaling and doing just about everything from the servers to the front-end. From only a thousand users to reaching millions of users and devices, it has been a wonderful experience.</p>
<p>The Dating DNA team has been a great to work with. Our small company of five people has accomplished so much over the years, and I feel we do really good work. We get along and work well together. </p>
<p>The decision to leave Dating DNA has been a hard one.  I frequently was asked by others companies to send in resumes and come down for interviews, but I always told them I was very happy with my current job. While the job had it’s challenges, it also had a lot of it’s own perks. Working from home &#038; not having to commute was definitely one of those great perks. </p>
<p>However, Deseret Digital Media (DDM) is a great company that is growing quickly, and seemed like it could be a really great fit, so when asked to send in my resume I did. After several weeks, I was called back and went through a rigorous gauntlet of 13 interviews by phone and in-person. I’ll later write a post on what a wonderful job they did throughout the interview process, and they really tested my technical knowledge and management experience.</p>
<p>The more I went through the interviews, the more I personally found out what DDM is like, and the more I realized that it would be a good fit for me. So I was excited when they extended an offer, and I accepted. </p>
<p>I will miss Dating DNA, and I wish them the best of luck and success. I would like nothing better than for the company to explode with success and revenues, with everyone becoming millionaires, even if I had left before that happened.</p>
<p>I’ll still be helping Dating DNA with their transition to their new guy. I’ve known him for awhile, and I couldn’t think of a better person to step in and fill my role.</p>
<p>I promise to keep everyone up-to-date on how things go with Deseret Digital Media, but I am very excited and have the highest hopes of it being a great experience. They have a lot of very talented, smart, and great people working there, and I’m humbled and honored they’ve extended the opportunity to me to join their team.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/04/22/a-new-chapter-in-my-career-deseret-digital-media/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Standing on the Shoulders of Giants</title>
		<link>http://www.justincarmony.com/blog/2012/04/10/standing-on-the-shoulders-of-giants/</link>
		<comments>http://www.justincarmony.com/blog/2012/04/10/standing-on-the-shoulders-of-giants/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 15:43:06 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[thank you]]></category>
		<category><![CDATA[utos]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1119</guid>
		<description><![CDATA[A few weeks back I had the opportunity to be on the Voices of the Elephpant podcast to talk about Redis and the Utah Open Source Community with Cal Evans. You can listen to the episode on the VotE website. Cal had sent me the questions before hand, and so I had jotted down a ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>A few weeks back I had the opportunity to be on the Voices of the Elephpant podcast to talk about Redis and the Utah Open Source Community with <a href="http://blog.calevans.com/">Cal Evans</a>. You can <a href="http://voicesoftheelephpant.com/2012/04/10/interview-with-justin-carmony/" target="_blank">listen to the episode on the VotE website</a>.</p>
<p>Cal had sent me the questions before hand, and so I had jotted down a few things to mention during them. However, when we got to talking about the Utah Open Source Community, I forgot to mention one of the things I had written down to say, and that is this: I would not be where I am in my career, and would not have this great FOSS community in Utah, if it where not for the Shoulders of the Utah FOSS Giants that I stand on. (<a href="http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants" target="_blank">Standing on the Shoulders of Giants</a>)</p>
<p>I had written three names down that I wanted to mention during the podcast. These three individuals were people who have had a great impact not only in the UTOS community, but in my own personal life and career as well. Because I was a bonehead and forgot then, I&#8217;d like to do it now. <img src='http://c747925.r25.cf2.rackcdn.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Clint Savage (aka Herlo)</h3>
<p>Clint is the founder of the Utah Open Source Foundation, he was also the guy who roped me into volunteering with UTOS for their conference. He was the guy who took the idea of a Utah Conference for Open Source and made it a reality. He spearheaded and helped organize the first three years, each growing larger than the year before, and getting better and better. He saw a vision inside his crazy head of a thriving community, and helped  make it a reality.</p>
<h3>Victor Villa (aka Mindjuju)</h3>
<p>Victor was the President of the Utah PHP Usergroup (UPHPU) when I first started to attend in 2008. He was one busy cat with his work, and he had worked out a deal with his employer at the time to let the UPHPU group meet at their offices every month. Victor was always thinking of ways to make the meetings better, which were already great. He&#8217;d use his awesome A/V-fu to record the Audio, Video, and Screens of the presenters and then spliced them all together in a well produced video. He would ask, pester, and begged people to present so we always would have an awesome presentation every month. Every month, without fail, he was there. Come hail, snow, sickness, work emergencies, no matter what, he had those meetings month after month for several years.</p>
<p>Victor had the opportunity to change employers and get a better gig close to home, so as we lost our old venue he handed over the reigns of the Utah PHP Usergroup to another great guy, he didn&#8217;t take a break. He was soon after appointed the President of UTOS after Clint Savage needed to step down as he was traveling a lot. </p>
<p>Metaphorically speaking, if UTOS was a &#8220;child&#8221;, Clint had raised it up in it&#8217;s infancy to being a young adult ready to go to the next level. Victor was the guy to kick the &#8220;kid&#8221; in the butt and got it in a proper suit and tie ready to enter the business world. Victor worked tirelessly to get all the paperwork in order for its Non-Profit status (which is no small feat), and worked hard to make this upcoming UTOS Conference just as great as those before it. I know several of the &#8220;core-team&#8221; members of UTOS this last year had to step down due to lives being too busy, mine included, and he has had to do so much work. He has had a full-time job, gone back to school full-time, and also organizing Utah&#8217;s largest open source conference. Someone needs to give this man a gold medal! He is just such a great, strong pillar in the Open Source Community in Utah.</p>
<p>(A big thank you and shout-out needs to go to his wife, Tiff, as well. She puts up with us stealing her husband night after night, so we need to order two gold medals!)</p>
<h3>Mac Newbold</h3>
<p>The final person is Mac Newbold, the current president of the UPHPU group. He took over the reigns for Victor Villa, and orchestrated our current (and awesome) venue at C7&#8242;s Datacenter. I also believe he was the President of the UPHPU many years ago before Victor, so he has been involved with the UPHPU community for a very long time (the UPHPU group has been meeting since before 2004 I believe). He now has the great privilege of trying to cat-herd monthly presentations. </p>
<p>I know how busy all three of these guys are, and the sacrifices of time they give to the community. So I would like to sincerely say: thank you! Each one of you have had such a positive impact on my personal and professional life. </p>
<p>There are so many more great members in our local community, I wish I had time to write about every single one. If you live in Utah, I highly recommend to come out sometime to one of our local usergroup meetings, or even the yearly conference! And make sure to introduce yourself so we all can get to know you better! <img src='http://c747925.r25.cf2.rackcdn.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/04/10/standing-on-the-shoulders-of-giants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, Sessions, __sleep, and Exceptions</title>
		<link>http://www.justincarmony.com/blog/2012/03/23/php-sessions-__sleep-and-exceptions/</link>
		<comments>http://www.justincarmony.com/blog/2012/03/23/php-sessions-__sleep-and-exceptions/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 16:48:43 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[Errors]]></category>
		<category><![CDATA[exceptions]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sessions]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1117</guid>
		<description><![CDATA[Today I ran into a problem where my PHP Application would throw this fatal error: Fatal error: Exception thrown without a stack frame in Unknown on line 0 Which is so much fun, because it doesn&#8217;t have a line number, so I had no direction as to what exactly was causing the problem. Some quick ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Today I ran into a problem where my PHP Application would throw this fatal error:</p>
<p><strong>Fatal error: Exception thrown without a stack frame in Unknown on line 0</strong></p>
<p>Which is so much fun, because it doesn&#8217;t have a line number, so I had no direction as to what exactly was causing the problem. Some quick googling came up with <a href="http://www.compdigitec.com/labs/2009/08/02/solving-fatal-error-exception-thrown-without-a-stack-frame-in-unknown-on-line-0/">this website</a> stating the following error:</p>
<blockquote><p>Most often, the error will appear if you use an exception handler combined with an error reporting to exception handler by converting it to an ErrorException, then there a suddenly a whole new magnitude of ways to throw errors within the exception handle, especially if E_NOTICE, E_STRICT and/or E_WARNING errors are converted. This form most often occurs when you use variables without first initializing them. This error may be preventable by wrapping the exception handler within a try/catch block.</p>
<p>A second form of this error occurs when you attempt to throw an exception in a destructor. This is well documented in the PHP manual, but this can still be triggered if you accidentally throw an exception:</p>
<p><strong>Manually</strong> &#8211; calling “throw new Exception(‘hello world’)’ in a destructor</p>
<p><strong>Implicitly</strong> &#8211; calling a function that throws an exception (e.g. calling function foo() which throws an exception)</p>
<p><strong>Error handler (ErrorException)</strong> &#8211; instating a user-defined function as an error handler which throws an ErrorException (which is still an error)</p></blockquote>
<p>The problem was that the code I was working with wasn&#8217;t using a registered exception handler, nor a destructor. So I went through the controller I was working with and commented out each line, and one by one brought each line back. After a few minutes I found the problem: I had a class that would save itself to the Session, and that class also had a __sleep method which is invoked on serialization (<a href="http://php.net/manual/en/language.oop5.magic.php">see PHP manual</a>). Because I hadn&#8217;t manually closed my php session with session_write_close() (<a href="http://php.net/manual/en/function.session-write-close.php">PHP Manual</a>), PHP would close the session when cleaning up &#038; closing the request, which is executed outside of the stack. My __sleep() function had an error and would throw an exception, leading to the Fatal Error.</p>
<p>It was a little tricky to track down, but made complete sense once I found it.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/03/23/php-sessions-__sleep-and-exceptions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>httpie &#8211; A Pretty Way to cURL for APIs</title>
		<link>http://www.justincarmony.com/blog/2012/02/23/httpie-a-pretty-way-to-curl-for-apis/</link>
		<comments>http://www.justincarmony.com/blog/2012/02/23/httpie-a-pretty-way-to-curl-for-apis/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 16:14:34 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1110</guid>
		<description><![CDATA[Thanks to Ben Ramsey for sharing this nifty little tool called httpie. What it does is it makes calling APIs from the CLI easy as pie. With curl you&#8217;d see something like this: Where as with httpie, its a simple: This is great for working with JSON based APIs. It also will pretty up the ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Thanks to Ben Ramsey for sharing this nifty little tool called <strong>httpie</strong>. What it does is it makes calling APIs from the CLI easy as pie. With curl you&#8217;d see something like this:</p>
<pre class="brush: bash; title: ; notranslate">

curl -i -X PUT -H 'Content-Type:application/json; charset=utf-8' \
-d '{&quot;hello&quot;:&quot;world&quot;}' http://httpbin.org/put
</pre>
<p>Where as with httpie, its a simple:</p>
<pre class="brush: bash; title: ; notranslate">

http PUT httpbin.org/put hello=world
</pre>
<p>This is great for working with JSON based APIs. It also will pretty up the output:</p>
<p><img src="https://github.com/jkbr/httpie/raw/master/httpie.png" alt="httpie output" /></p>
<p>Website: <a href="https://github.com/jkbr/httpie">https://github.com/jkbr/httpie</a></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/02/23/httpie-a-pretty-way-to-curl-for-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a Distributed Workforce Work</title>
		<link>http://www.justincarmony.com/blog/2012/01/31/making-a-distributed-workforce-work/</link>
		<comments>http://www.justincarmony.com/blog/2012/01/31/making-a-distributed-workforce-work/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 04:30:16 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[distributed workforce]]></category>
		<category><![CDATA[employees]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1097</guid>
		<description><![CDATA[I&#8217;ve been mulling over this blog post in my mind for quite awhile. I&#8217;ve been working exclusively for distributed companies since 2008. Also know as telecommuting and virtual workforce, it basically is when you have employees working for you regardless of location. Whether it is home, a co-working space, or another office space they prefer, ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been mulling over this blog post in my mind for quite awhile. I&#8217;ve been working exclusively for distributed companies since 2008. Also know as telecommuting and virtual workforce, it basically is when you have employees working for you regardless of location. Whether it is home, a co-working space, or another office space they prefer, its when an employee can work for a company other then the office.</p>
<p>I&#8217;ve met and talked with several companies that have had a great success with this approach. Toni Schneider, CEO at <a href="http://automattic.com/">Automattic</a>, has written about the <a href="http://toni.org/2010/03/08/5-reasons-why-your-company-should-be-distributed/">5 reasons why your company should be distributed</a>. </p>
<p>But on the flip side, I&#8217;ve met a few developers, managers, and owners who have horror stories of how it &#8220;didn&#8217;t work out at all.&#8221; They talk about how these workers were too distant from their team, how they didn&#8217;t communicate well, and struggled to get them to produce. </p>
<p>These are legitimate concerns and challenges face businesses. However, I think there is one key thing businesses can do to help minimize these challenges and make their attempts to bring in a distributed workforce a reality. At to show how it can be done, we&#8217;ll use our fictional company, Muppets Software Inc:</p>
<h3>Our Example: The Muppets</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/836_D_03870_R.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/836_D_03870_R-300x200.jpg" alt="" title="DISNEY THE MUPPETS" width="300" height="200" class="alignnone size-medium wp-image-1098" /></a></p>
<p>Muppets Software is a company that produces the finest websites. They have a small office out in California and are doing pretty well. Their team consists of:</p>
<p><strong>Kermit &#8211; The Manager</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Kermit-the-frog.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Kermit-the-frog-150x150.jpg" alt="" title="Kermit-the-frog" width="150" height="150" class="alignnone size-thumbnail wp-image-1101" /></a></p>
<p><strong>Fozzie &#8211; Lead Developer</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Fozzie2.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Fozzie2-150x150.jpg" alt="" title="Fozzie2" width="150" height="150" class="alignnone size-thumbnail wp-image-1102" /></a></p>
<p><strong>Rizzo &#8211; Junior Developer</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/RizzoTheRat.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/RizzoTheRat-150x150.jpg" alt="" title="RizzoTheRat" width="150" height="150" class="alignnone size-thumbnail wp-image-1103" /></a></p>
<p><strong>Gonzo &#8211; Lead Sys-Admin</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Gonzo2.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Gonzo2-150x150.jpg" alt="" title="Gonzo2" width="150" height="150" class="alignnone size-thumbnail wp-image-1104" /></a></p>
<p><strong>Miss Piggy &#8211; Sales</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Miss-piggy-the-muppets.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Miss-piggy-the-muppets-150x150.png" alt="" title="Miss-piggy---the-muppets" width="150" height="150" class="alignnone size-thumbnail wp-image-1105" /></a></p>
<p>Things are going very well, but they are getting too busy, and to expand they need to bring on another developer. After a great deal of searching, they find an excellent candidate: </p>
<p><strong>Beaker &#8211; Awesome Developer</strong></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Beaker.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2012/01/Beaker-150x150.jpg" alt="" title="Beaker" width="150" height="150" class="alignnone size-thumbnail wp-image-1106" /></a></p>
<p>There is only one problem, he lives in New York and can&#8217;t move to California. But he seems perfect, so Kermit decides to try having him be a remote worker. Fozzie and Rizzo think he&#8217;ll be good, so they hire him. It starts off pretty well at first, and they assign Beaker to help Fozzie with the new Sesame Street website. They decide to use a ticket system to help better manage what they need to get done, and set off to work.</p>
<p>After a time it seems Beaker would drop the ball and not get something done. It would be 4 PM in California, and Fozzie couldn&#8217;t get ahold of Beaker, so he would just have Rizzo do it. The next day Fozzie talked to Beaker, to find out Beaker hadn&#8217;t been in the impromtu meeting where this change was requested and didn&#8217;t know about it. </p>
<p>As time goes on, Gonzo starts to get annoyed with Beaker. It seems he would always come into the office with a list of things asking to be done. Since company policy says only Gonzo can make changes on production servers, he is suppose to be the only one to do it. Fozzie and Rizzo both have access to the production servers, and they have an unspoken agreement that the developers can make small changes to production servers as long as they stick their head in Gonzo&#8217;s cube and run it by him first. Of course, Beaker is unaware of this fact, so he continues to write requests to Gonzo.</p>
<p>Its coming down to crunch time with the Sesame project, and Miss Piggy is worried that they&#8217;ll miss their deadline. She keeps asking for last minute changes to make the site better for the client, so several nights she buys pizza for the office and she stays up late with the Developers to work overtime. She even calls Beaker to have him help out, but he is always the one to leave early, and seems the least effective out of everyone.</p>
<p>After the Sesame project, Gonzo, Fozzie, Rizzo and Miss Piggy talk with Kermit about their concerns with Beaker. They say he is a nice guy, but its been hard working with him. They say there isn&#8217;t one big incident, but rather it is just an overall vibe. </p>
<p>Kermit calls up Beaker and has a nice chat with him. Beaker says he feels bad the others feel this way, and shares some of his frustrations as well. He has a hard time staying up so late with the team on these late-night pushes, and many times tickets aren&#8217;t updated with the information he needs. Kermit sees his point, but doesn&#8217;t really know what to do to solve the problems. They&#8217;ve talked many times about keeping the ticket system up-to-date, but when things get busy, its so easy for the in-house employees to forget.</p>
<p><strong>What to do?</strong></p>
<p>I&#8217;ve seen and heard these problems, and I&#8217;ve even been in Beaker&#8217;s shoes in the past with a short-term project. </p>
<p>The bottom line is that it boils down to a problem with communication. It is so hard for remote developers to keep up with everything when there is a lot of communication that is happening outside of his reach. He isn&#8217;t at lunch with the other co-workers, or around the water cooler. He listens mostly to the meetings since it is so hard to get a word in without being there.</p>
<p>So what would be my recommendation? <strong>Turn your entire company into a distributed company.</strong></p>
<p>Wait, what? I&#8217;m not suggesting a company immediately close it&#8217;s offices. But allow the rest of your employees telecommute as well. I&#8217;d say at least 3 out of the 5 days a week. </p>
<p>As a manager, this is a scary thing. But what this does is naturally change the communication channels. So instead of awkward channels of communication forced on the employees to use, these channels become the channels of communication that empower their own work. They get to enjoy the benefits of telecommuting, regardless of where they live, just like Beaker.</p>
<p>When everyone uses the same channels of communication, all of a sudden being 10 miles away or 1000 miles away does not matter. It will become a much more natural process to send emails, update tickets, and chat online. Even when people are in the office, these channels will tend to stay the primary methods of communication.</p>
<p>Almost all of the most successful distributed companies are 100% distributed, not just 10%. I really do think that is the key. Even with Dating DNA, where I lived in Utah and the rest of the team (all 3 of them) lived in San Diego, we were a very distributed team. Our iPhone Dev only met face-to-face with the owner/project manager of the company once or twice a year, even though they lived 15 minutes from each other. Even when we go to expand our team, I like knowing that if we found the perfect match for a new employee, we can hire them regardless of physical boundaries.</p>
<p>Now, this isn&#8217;t a silver bullet approach. There is a lot more to making a distributed workforce work. <strong>However,</strong> I think the <strong>key</strong> is for this paradigm shift in thought: we&#8217;re not just hiring a remote worker, we becoming a distributed company.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/01/31/making-a-distributed-workforce-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMS Nagios Notifications with PHP &amp; Twilio</title>
		<link>http://www.justincarmony.com/blog/2012/01/30/sms-nagios-notifications-with-php-twilio/</link>
		<comments>http://www.justincarmony.com/blog/2012/01/30/sms-nagios-notifications-with-php-twilio/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 01:12:14 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[twilio]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1089</guid>
		<description><![CDATA[I&#8217;ve had a few requests to share my Nagios SMS notifications using Twilio. I&#8217;m almost embarrassed to share them, since they are so dead simple. There was another plugin out there to do the same, but it was a lot more advanced and more work to setup, so I wrote my own in PHP. In ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a few requests to share my <a href="http://www.nagios.org/">Nagios</a> SMS notifications using <a href="http://www.twilio.com/">Twilio</a>. I&#8217;m almost embarrassed to share them, since they are so dead simple. There was another plugin out there to do the same, but it was a lot more advanced and more work to setup, so I wrote my own in PHP.</p>
<p>In the past I would just use my iPhone&#8217;s email-to-txt email address. However, when I received the txt message, it wasn&#8217;t formated very pretty, and it would have a different &#8220;From Number.&#8221; So if we had a crazy day, I would have 20-30 message threads in my iPhone all about Nagios. I&#8217;ve been lazy in the past, and didn&#8217;t clear them out until I had about 200 of them, and it was a lot of &#8220;swipe, delete, swipe, delete, swipe, delete&#8221; to get rid of them.</p>
<p>What I like out this setup is with Twilio, I can buy a phone number for $1 a month. So all my notifications come through the same number. I&#8217;m also planning a way to call/text the number and it will read/send the current status and list the hosts that are down.</p>
<p>First thing is to get your Twilio account setup. Its pretty easy, and when I signed up (a long time ago) I got $30 in credit, not sure if they are doing that still for new customers. Either way you can add a credit card and say how much credit you want to add when your account dips below a certain amount. </p>
<p>Now, you can buy a number and set it up. Even if you&#8217;re only sending text messages, Twilio wants you to have a &#8220;SMS Request URL&#8221; before you can send any text messages. So I just put in a URL to my site that does nothing (yet). You&#8217;ll need to grab your Account SID and Token.</p>
<p><strong>How it Works</strong></p>
<p>I threw <a href="https://github.com/JustinCarmonyDotCom/Nagios-SMS-Requests-with-PHP-Twilio">the code up on GitHub</a>. There are a few things you&#8217;ll need to do:</p>
<p>First in sendTextMsg.php change your configurations to match your phone number, account SID and token. Here is the entire sendTextMsg.php file:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

require('twilio-php/Services/Twilio.php');

/* Start Configs */

$sid = &quot;A123.....&quot;;
$token = &quot;29d6b9f.......&quot;;
$twilio_number = '4045550101';

/* End Configs */

# Get the Argvs
$phone  = $argv[1];
$msg    = $argv[2];
$msg    = str_replace('\n', &quot;\n&quot;, $msg);

$client = new Services_Twilio($sid, $token);
try
{
    $message = $client-&gt;account-&gt;sms_messages-&gt;create(
        $twilio_number, // From a valid Twilio number
        $phone, // Text this number
        $msg
    );
} catch (Exception $ex)
{
    var_dump($ex);
}
</pre>
<p>As you can see, it is super simple. All you need to do is put this script somewhere with the Twilio PHP libraries (or just use my github code with all of it in there). Then, in your Nagios configurations add the commands:</p>
<code class="code">define command{
    command_name    notify-host-by-txt
    command_line    /usr/bin/php /path/to/sendTxtMsg/sendTxtMsg.php &quot;$CONTACTPAGER$&quot; &quot;Nagios Alert\nType: $NOTIFICATIONTYPE$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nWhen: $LONGDATETIME$&quot;
}

define command{
    command_name    notify-service-by-txt
    command_line    /usr/bin/php /path/to/sendTxtMsg/sendTxtMsg.php &quot;$CONTACTPAGER$&quot; &quot;Nagios Alert\nType: $NOTIFICATIONTYPE$\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nWhen: $LONGDATETIME$&quot;
}</code>
<p>Then you need to add it to your contacts:</p>
<code class="code">define contact {
        contact_name                    justin
        alias                           Justin Carmony
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        
        # Add the new commands to your list
        service_notification_commands   notify-service-by-email,notify-service-by-txt
        host_notification_commands      notify-host-by-email,notify-host-by-txt
        email                           justin@example.com
        
        # Add a pager number, cause we rock it old school 
        # like that: http://static.howstuffworks.com/gif/restaurant-pager-motorola.jpg
        pager                           4045551234
}</code>
<p>Simple, easy, and works very well. You can test the script by simply executing the command:</p>
<code class="code">php /path/to/sendTxtMsg.php 4045551234 &quot;This is my test.\nI am awesome.\n&quot;</code>
<p>Enjoy!</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/01/30/sms-nagios-notifications-with-php-twilio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debugging Nginx Configuration Trick</title>
		<link>http://www.justincarmony.com/blog/2012/01/13/debugging-nginx-configuration-trick/</link>
		<comments>http://www.justincarmony.com/blog/2012/01/13/debugging-nginx-configuration-trick/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 02:24:49 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[syste]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1081</guid>
		<description><![CDATA[Today I had an issue where I was trying to debug a problem with an nginx configuration, I came up with a simple trick. One of the hardest parts of nginx configurations, especially with rewrites, is you might not know which &#8220;location&#8221; directive is not working as expected. In PHP, sometimes you would just add ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Today I had an issue where I was trying to debug a problem with an <a href="http://nginx.org/">nginx</a> configuration, I came up with a simple trick. One of the hardest parts of nginx configurations, especially with rewrites, is you might not know which &#8220;location&#8221; directive is not working as expected.</p>
<p>In PHP, sometimes you would just add something like this:</p>
<pre class="brush: php; title: ; notranslate">
echo &quot;I'm here!&quot;;
exit();
</pre>
<p>However, in Nginx configuration files, it isn&#8217;t as easy&#8230;</p>
<p>&#8230; or is it?</p>
<p>One thing that works well is the rewrite directive. You can append variables to the URL to be rewritten. Another great thing is a rewrite statement can go just about anywhere. So lets say we were trying to debug this location statement:</p>
<code class="code">location ~ /api/.*\.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/www/$fastcgi_script_name;
}</code>
<p>Now lets say its returning a 404, and I&#8217;m not 100% sure what the actual value of $fastcgi_script_name is. I can add this to it:</p>
<code class="code">location ~ /api/.*\.php$ {
    ## ADD HERE
    redirect ^ http://www.google.com/?q=$fastcgi_script_name last; break;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/www/$fastcgi_script_name;
}</code>
<p>This will redirect your HTTP request to Google.com and put the value in the query textfield. Bingo, I can easily see the actual value! Pretty helpful when you have a large, complex server definition.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/01/13/debugging-nginx-configuration-trick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Letter to Senator Lee</title>
		<link>http://www.justincarmony.com/blog/2012/01/13/letter-to-senator-lee/</link>
		<comments>http://www.justincarmony.com/blog/2012/01/13/letter-to-senator-lee/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 19:19:47 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[pipa]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[sopa]]></category>
		<category><![CDATA[utah]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=1079</guid>
		<description><![CDATA[My letter to Senator Lee: Senator Lee, My name is Justin Carmony, and I am the C.T.O. for Dating DNA, LLC, a company that makes iPhone Apps. This is my first time writing a senator, but I feel it is important to convey my thoughts on SOPA and PIPA. We have struggled with people downloading ...
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em>My letter to Senator Lee:</em></p>
<p>Senator Lee,</p>
<p>My name is Justin Carmony, and I am the C.T.O. for Dating DNA, LLC, a company that makes iPhone Apps. This is my first time writing a senator, but I feel it is important to convey my thoughts on SOPA and PIPA.</p>
<p>We have struggled with people downloading our Apps from 3rd Party Websites and not paying for them. We are able to monitor and track these &#8220;cracked&#8221; apps when they connect to our services, and these &#8220;cracked apps&#8221; number in the hundreds of thousands over time. That is potentially millions of dollars in lost revenue. </p>
<p>However, I do NOT support SOPA, PIPA, or bills like it that give &#8220;blacklist&#8221; or &#8220;takedown&#8221; authority without due process.</p>
<p>Even though we struggle with piracy, these bills will do very little in preventing unauthorized distribution of copyrighted materials. However, they are extremely dangerous in terms of abuse against legitimate businesses. Even though the cost of piracy can be great, we already have tools and laws to help us minimize piracy. We work hard at providing a great service, and we&#8217;ve even successfully turned &#8220;pirates&#8221; into &#8220;legal, legitimate customers.&#8221; SOPA &#038; PIPA will do very little in helping us stop real piracy, but will also expose us to &#8220;takedowns claims&#8221; without any oversight or due process.</p>
<p>There is already testimonies on legal records of Media Companies such as Warner Music and Universal Music group admitting to using DMCA to take down content they had no copyright ownership to. Their motives instead were to silence groups being critical of them. (see &#8220;A Business Person&#8217;s SOPA Primer&#8221; &#8212; <a href="http://avoidingagoatrodeo.com/2011/12/26/a-businesspersons-sopa-primer/">http://avoidingagoatrodeo.com/2011/12/26/a-businesspersons-sopa-primer/</a>)</p>
<p>Please, as my elected representative, pull your support of SOPA. Our small business would not survive a &#8220;takedown&#8221; if a competitor used SOPA with false claims. We depend on the internet to keep us in business. I hope you can see, and understand, that due process and legal oversight should still apply to the internet.</p>
<p>Thank you,</p>
<p>Justin Carmony<br />
Utah Citizen</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2012/01/13/letter-to-senator-lee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching using memcached
Content Delivery Network via Rackspace Cloud Files: c747925.r25.cf2.rackcdn.com

Served from: www.justincarmony.com @ 2012-05-17 21:27:52 -->
