<?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>Jason Haruska</title>
	<atom:link href="http://haruska.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://haruska.com</link>
	<description></description>
	<lastBuildDate>Thu, 22 Dec 2011 14:13:31 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Split pdf scan into grayscale jpeg for check deposits</title>
		<link>http://haruska.com/2011/12/22/split-pdf-scan-into-grayscale-jpeg-for-check-deposits/</link>
		<comments>http://haruska.com/2011/12/22/split-pdf-scan-into-grayscale-jpeg-for-check-deposits/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 14:10:56 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://haruska.com/?p=137</guid>
		<description><![CDATA[Banks are now letting you deposit checks via scanned images. Problem is they need a very specific format. My bank requires One side of the check per scan Grayscale 300 dpi jpeg format under 1 MB I have a nice &#8230; <a href="http://haruska.com/2011/12/22/split-pdf-scan-into-grayscale-jpeg-for-check-deposits/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Banks are now letting you deposit checks via scanned images. Problem is they need a very specific format. My bank requires</p>
<ol>
<li>One side of the check per scan</li>
<li>Grayscale</li>
<li>300 dpi</li>
<li>jpeg format</li>
<li>under 1 MB</li>
</ol>
<p>I have a nice Fujitsu ScanSnap that outputs a multipage full color pdf. So, I wrote an automator script to take that pdf and split it, convert it to grayscale, save as jpeg while reducing the dpi. Now, you can scan all of your checks to deposit in a single scan and run the automator app.</p>
<p>Grab it from github:</p>
<ul>
<li><a href="https://github.com/haruska/pdf-to-grayscale-jpegs/zipball/master">Download Zip File</a></li>
<li><a href="https://github.com/haruska/pdf-to-grayscale-jpegs">View Source</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2011/12/22/split-pdf-scan-into-grayscale-jpeg-for-check-deposits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consider Donating To Your Favorite Open Source Projects</title>
		<link>http://haruska.com/2009/12/15/donate-to-opensource/</link>
		<comments>http://haruska.com/2009/12/15/donate-to-opensource/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 23:51:24 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=4</guid>
		<description><![CDATA[It&#8217;s that time of year again where people seem to be extra generous. Consider donating to small software projects that have made your life easier this year. Some of my favorites include: redmine rubber rubinius mms2r cucumber Thanks for all &#8230; <a href="http://haruska.com/2009/12/15/donate-to-opensource/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s that time of year again where people seem to be extra generous. Consider donating to small software projects that have made your life easier this year. Some of my favorites include:</p>
<ul>
<li><a href="http://www.redmine.org/">redmine</a></li>
<li><a href="http://github.com/wr0ngway/rubber">rubber</a></li>
<li><a href="http://rubini.us/">rubinius</a></li>
<li><a href="http://github.com/monde/mms2r">mms2r</a></li>
<li><a href="http://cukes.info/">cucumber</a></li>
</ul>
<p>Thanks for all the great software!</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/12/15/donate-to-opensource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote Pair Programming with Screen and Vim</title>
		<link>http://haruska.com/2009/09/29/remote-pair-programming-with-screen-and-vim/</link>
		<comments>http://haruska.com/2009/09/29/remote-pair-programming-with-screen-and-vim/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 23:56:38 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=7</guid>
		<description><![CDATA[There have been quite a few blog posts around the ruby community on pair programming. Obie Fernandez thinks it isn&#8217;t for every programmer while Josh Susser thinks it isn&#8217;t right for every project. I tend to agree with Josh and disagree with Obie. Obie &#8230; <a href="http://haruska.com/2009/09/29/remote-pair-programming-with-screen-and-vim/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>There have been quite a few blog posts around the ruby community on <a href="http://www.extremeprogramming.org/rules/pair.html">pair programming</a>. <a href="http://blog.obiefernandez.com/content/2009/09/10-reasons-pair-programming-is-not-for-the-masses.html">Obie Fernandez thinks it isn&#8217;t for every programmer</a> while <a href="http://blog.hasmanythrough.com/2009/9/23/pair-programming-isnt-right-for-all-projects">Josh Susser thinks it isn&#8217;t right for every project</a>. I tend to agree with Josh and disagree with Obie. Obie has writing style that seems to make the assumption that his company&#8217;s methods aren&#8217;t just the best but the gold standard. In this case he does have a good method for pair programming. However, it isn&#8217;t the only nor the best method. The best is whatever works for your situation given the programmer you&#8217;re working with.</p>
<p>It isn&#8217;t an <a href="http://www.extremeprogramming.org/">extreme programming</a> requirement that you&#8217;re running on Mac. If you&#8217;re deploying on Linux and you&#8217;re using Ruby on Rails and vim for your development then logically Linux would be the best OS choice on which to develop. If you&#8217;re still sold on TextMate, I&#8217;d recommend trying emacs but it is your choice. In that case, you have to compromise your development OS choice and go with Mac.</p>
<p>Everyone I happen to pair program with can use vim. Some of us use Mac others Linux. We also enjoy the flexibility of either going in to the office or working remotely. We&#8217;ve tried a couple of different solutions for remote pair programming:</p>
<ul>
<li>iChat screen share
<ul>
<li>Easiest network setup</li>
<li>OS X only</li>
<li>Bandwidth hog (need large pipe on both ends)</li>
<li>Sends raw keyboard signals (dvorak/qwerty pairs hard)</li>
</ul>
</li>
<li>Skype video screen share
<ul>
<li>Easiest network setup</li>
<li>Beta OS Support (OS X and Windows only ATM)</li>
<li>Bandwidth hog</li>
</ul>
</li>
<li>VNC and Skype voice
<ul>
<li>Platform agnostic</li>
<li>VNC requires NAT traversal</li>
<li>Bandwidth heavy (less than iChat)</li>
</ul>
</li>
<li>SSH, Screen and Skype voice
<ul>
<li>Platform agnostic</li>
<li>Very low bandwidth usage</li>
<li>Familiar terminal environment</li>
<li>GUI text editors not supported</li>
<li>may require NAT traversal</li>
</ul>
</li>
</ul>
<p>We started by trying screen sharing software. This works pretty well with large bandwidth pipes on both ends. Sometimes the screen repainting can be enough of a delay to break co-understanding. This is especially true when using vim navigation. All screen sharing (iChat, Skype video, VNC) seemed to have this issue.</p>
<p>We found that all we were really trying to share was the text editor. With some <a href="http://www.linux.com/archive/feature/56443">helpful tips from Linux.com</a>, we were able to get screen with a shared session working. This can be done on any machine where both developers have SSH access. In the following example, John and Pete ssh into a common machine and share a terminal screen session.</p>
<p><strong>User john:</strong></p>
<pre class="brush: bash; gutter: false; first-line: 1">ssh john@common-machine 
screen -S pairprog 
Ctrl-a :multiuser on 
Ctrl-a :acladd pete</pre>
<p><strong>User pete:</strong></p>
<pre class="brush: bash; gutter: false; first-line: 1">ssh pete@common-machine 
screen -x john/pairprog</pre>
<p>We found it as responsive as any other remote terminal and had the added benefit of not dedicating the developers&#8217; laptops to the task. This is useful for when you&#8217;re researching how to solve a problem or looking up API documentation while pairing. Our team found this method of pair programming so useful, we considered it even when in the office. It allows developers to stay in their environments they&#8217;re comfortable with and get real work done.</p>
<p>I hope Obie&#8217;s post won&#8217;t discourage &#8220;the masses&#8221; from pair programming. Figure out what works for you and make it happen. Pair programming has lots of benefits both to the code base and the participating developers. Similar to TDD, it doesn&#8217;t just happen overnight. Pair Programming is a skill that developers need to constantly get better at to succeed.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/09/29/remote-pair-programming-with-screen-and-vim/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Polymorphic Include Plugin Updated</title>
		<link>http://haruska.com/2009/09/17/polymorphic-include-updated/</link>
		<comments>http://haruska.com/2009/09/17/polymorphic-include-updated/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 00:02:26 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=9</guid>
		<description><![CDATA[I spent some time over the past two days cleaning up the polymorphic_include plugin. The most significant was adding unit tests. I wrote it a year ago so that I could eager load polymorphic associations using :include directives in ActiveRecord. This is &#8230; <a href="http://haruska.com/2009/09/17/polymorphic-include-updated/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I spent some time over the past two days cleaning up the <a href="http://github.com/haruska/polymorphic_include">polymorphic_include</a> plugin. The most significant was adding unit tests.</p>
<p>I wrote it a year ago so that I could eager load polymorphic associations using :include directives in ActiveRecord. This is mostly useful in a search results page.</p>
<p>Adding tests presented an interesting challenge because it is coded as a rails plugin. It&#8217;s pretty nasty to test because it uses alias_method_chain to modify the calls to :find and :find_every when a polymorphic exception is thrown.</p>
<p>It isn&#8217;t as useful for Rails versions greater than 2.1 because they&#8217;ve mostly addressed this issue. However, some queries still throw exception and this plugin tries to correct that. See the README file for more info.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/09/17/polymorphic-include-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change to Jekyll and Github Pages</title>
		<link>http://haruska.com/2009/07/26/change-to-jekyll-and-github-pages/</link>
		<comments>http://haruska.com/2009/07/26/change-to-jekyll-and-github-pages/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 00:03:41 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=11</guid>
		<description><![CDATA[It seems a lot of geeks with a blog tend to spend more time changing the supporting software and layout of the site more than just writing posts. I am no exception. This weekend I followed in the footsteps of &#8230; <a href="http://haruska.com/2009/07/26/change-to-jekyll-and-github-pages/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It seems a lot of geeks with a blog tend to spend more time changing the supporting software and layout of the site more than just writing posts. I am no exception. This weekend I followed in the footsteps of coworkers <a href="http://nirvdrum.com/">nirvdrum</a> and <a href="http://graysky.org/">graysky</a> and converted my blog to <a href="http://github.com/mojombo/jekyll/tree/master">Jekyll</a>. I actually took the additional step of no longer hosting it myself, instead prefering the ease of <a href="http://pages.github.com/">github pages</a>. Here&#8217;s what I did to move away from a self-hosted Typo blog</p>
<h3>Fork the mojombo.github.com project</h3>
<p>It&#8217;s a <a href="http://github.com/mojombo/mojombo.github.com/tree/master">good example site</a> that is under MIT license (except the content itself of course). Added benefit is you don&#8217;t have to mess around with the layout just yet.</p>
<ol>
<li>Delete all copyrighted content</li>
<li>Change Tom&#8217;s information to yours where applicable</li>
<li>Change the CNAME to yourdomain.com</li>
</ol>
<h3>Migrate posts from Typo</h3>
<p>I had to make some changes to mojombo&#8217;s converter for typo 5+. So, grab my version of jekyll or patch your gem install. <a href="http://github.com/haruska/jekyll/commit/47cd66244c6de2e90bf0d9f4d78c87dcb3e22032">Here is the diff</a></p>
<p>With the changes applied, the migration is pretty straight forward.</p>
<h3>Modify permalinks and update feedburner</h3>
<p>Modify your permalinks in jekyll to match your old typo install so readers don&#8217;t lose their way.</p>
<h3>Check in all changes to github</h3>
<p>You should change your project name to &lt;github-username&gt;.github.com and commit those chages up to github. Also, FYI you need a paid account for CNAMEs to work on github.</p>
<h3>Update your domain&#8217;s DNS</h3>
<p>You need two entries</p>
<ol>
<li>A-record yourdomain.com to 65.74.177.129</li>
<li>Cname www.yourdomain.com to yourdomain.com</li>
</ol>
<p><span class="Apple-style-span" style="font-size: 10px; letter-spacing: 1px; line-height: 26px; text-transform: uppercase;">Add disqus for comments</span></p>
<p>Since these are static pages, the preferred way to add commenting to your blog is through disqus. Actually, I&#8217;ve grown to prefer disqus even if it is self hosted.</p>
<ol>
<li>Add your website at http://disqus.com/add</li>
<li>Add the generated javascript to the bottom of your post layout</li>
</ol>
<p>That should be all you need to get started. I&#8217;d recommend changing your layout so your blog doesn&#8217;t continue to look like mojombo&#8217;s blog. However, this isn&#8217;t strictly necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/07/26/change-to-jekyll-and-github-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashery: Post-Mortem</title>
		<link>http://haruska.com/2009/06/16/mashery-post-mortem/</link>
		<comments>http://haruska.com/2009/06/16/mashery-post-mortem/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 00:05:04 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=13</guid>
		<description><![CDATA[I work for a small VC-backed company in the mobile social media space. Something we want to offer is a public API to open up our community to development of 3rd party tools. Although we have the technical capabilities to &#8230; <a href="http://haruska.com/2009/06/16/mashery-post-mortem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I work for a small VC-backed company in the mobile social media space. Something we want to offer is a public API to open up our community to development of 3rd party tools. Although we have the technical capabilities to build an infrastructure in-house, I had a look at <a href="http://mashery.com/">Mashery</a> to outsource some of the ongoing work. We were looking for:</p>
<ul>
<li>proxy front end that can scale up as our API use grows and have a caching strategy to reduce the load on our servers</li>
<li>ability to throttle on a per app (or developer key) basis to anticipate server load</li>
<li>developer documentation that is easy to update and publish, skinned to look like our site</li>
<li>ability for developer feedback</li>
<li>analytics on the usage of the API</li>
<li>OAuth support</li>
</ul>
<p>Looking at Mashery&#8217;s offering, they seemed like a good fit. That was a month ago. Today, none of those things are fully baked. Nothing of their offering is self-service so everything requires customization. Most tasks run serially and take a minimum of 3-5 business days.</p>
<p>We should have known at the beginning. After the website erred out on purchase attempt, I was assigned an account rep who wanted to set up a conference call. After attempting to explain their cost as a &#8220;request per second per developer key&#8221;, I counted them out. That type of pricing model wouldn&#8217;t work with us mainly because all of our installs of, say, an iPhone app would have the same developer key. That prompted <a href="http://twitter.com/haruska/status/1858461676">this tweet</a>.</p>
<p>To be fair, the CEO got right back to me (as a side note, I guess it proves Twitter is a good way to get feedback to a company.) He seemed as confused as I was and explained they were changing their pricing model <em>that day</em>. Long story short, we signed up on a monthly basis based on the new, more straightforward pricing scheme (they&#8217;ve yet to publish as of this writing.)</p>
<p>One point of contention was OAuth was not a part of their standard package. It was considered an advanced custom feature. It was odd because OAuth is quickly becoming the best practice for accessing user generated content. I would expect a market leader to be driving best practices, not behind on them.</p>
<p>However, OAuth alone would double the monthly fee and require a custom $2500 setup. We decided to implement that ourselves. Again, it isn&#8217;t that we couldn&#8217;t, we just didn&#8217;t want to spend the time. This also complicated matters. Now we&#8217;d have to pass valid consumer keys to Mashery so they could still perform their throttling function. This never happened&#8230;we weren&#8217;t able to get to this discussion before aborting the relationship.</p>
<p>Next pain point was on the skinned development documentation. It took them over a week to &#8220;provision&#8221; us a portal. And when they did, it wasn&#8217;t skinned. After pointing back to the contract, our rep agreed to skin the portal. We sent over a screenshot and was told it would be skinned in 7-10 business days. In short, don&#8217;t expect public facing documentation for three weeks after your first monthly payment.</p>
<p>The next hurdle was reporting. Our rep attempted to explain to us their wacked-out URI-based reporting scheme. You had to define which parts of your URL path was important to your calls. Long story short, they don&#8217;t support Ruby on Rails RESTful type urls. For example, they couldn&#8217;t figure out how to make these different calls for reporting:</p>
<ul>
<li>/pictures.xml</li>
<li>/pictures/39290.xml</li>
<li>/pictures/39290/comments.xml</li>
</ul>
<p>The first one is a collection of all pictures. The second is retrieving the single picture with ID 39290. The last one is retrieving the comments attached to the picture 39290. I guess the problem was with ID wildcarding.</p>
<p>Because of this &#8220;unusual&#8221; URL scheme, we were given a statement of work for $1000 and <em>five</em> business days to implement what amounts to a regular expression in your code. We were told repeatedly that <em>no</em> customer has asked for anything so strange in reporting.</p>
<p><span style="text-decoration: line-through;">So, we refused to pay the ransom and asked for a refund. They&#8217;ve refused the refund. Apparently, they consider us &#8220;2 days from success&#8221;. We&#8217;re out a couple of thousand dollars and a month&#8217;s headache for the effort. At least we figured it out early. I would suggest having them prove themselves to you before plunking down any money. At the least, ask for a 30-day guarantee. Don&#8217;t let them develop their 1/2 baked product on your dime.</span></p>
<p><strong>Update 6/18/09</strong></p>
<p>After much back and forth with Mashery on twitter and email they have agreed to refund our money. They were gracious and took the time to understand our frustrations. In the end we have different opinions of how the process should work but I think we both have a better understanding of where each other are coming from.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/06/16/mashery-post-mortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a git repo for a private project</title>
		<link>http://haruska.com/2009/04/10/creating-a-git-repo-for-a-private-project/</link>
		<comments>http://haruska.com/2009/04/10/creating-a-git-repo-for-a-private-project/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 00:11:41 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=16</guid>
		<description><![CDATA[I seem to be doing this more frequently whenever hacking on a new project. It&#8217;s easy to set up a master repo on a remote server that you have ssh access to, I just always forget the commands. Here they &#8230; <a href="http://haruska.com/2009/04/10/creating-a-git-repo-for-a-private-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I seem to be doing this more frequently whenever hacking on a new project. It&#8217;s easy to set up a master repo on a remote server that you have ssh access to, I just always forget the commands. Here they are for reference:</p>
<p>Create a new local repo:</p>
<pre><code>mkdir myproject 
cd myproject 
git init touch README 
git add . 
git commit -m"first checkin" 
cd .. </code></pre>
<p>Create a bare tree</p>
<pre><code>git clone --bare myproject myproject.git 
touch myproject.git/git-daemon-export-ok </code></pre>
<p>Upload to remote machine (in this case a &#8220;/src&#8221; folder already on the server)</p>
<pre><code>scp -r myproject.git server.domain.com:/src/ </code></pre>
<p>Check back out from remote repo</p>
<pre><code>rm -rf myproject 
git clone server.domain.com:/src/myproject.git </code></pre>
<p>You should be all set. Your &#8220;master&#8221; is now on your remote server. You can branch, push, pull, etc the same as you would on github or similar.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/04/10/creating-a-git-repo-for-a-private-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ubuntu postfix setup on verizon fios</title>
		<link>http://haruska.com/2009/01/30/ubuntu-postfix-setup-on-verizon-fios/</link>
		<comments>http://haruska.com/2009/01/30/ubuntu-postfix-setup-on-verizon-fios/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 00:14:32 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=19</guid>
		<description><![CDATA[It took me more googling than it should have to figure out how to setup a home server to relay email through verizon&#8217;s smtp server. Here&#8217;s what I did. First, you need a fully qualified domain name (FQDN). This can &#8230; <a href="http://haruska.com/2009/01/30/ubuntu-postfix-setup-on-verizon-fios/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It took me more googling than it should have to figure out how to setup a home server to relay email through verizon&#8217;s smtp server. Here&#8217;s what I did.</p>
<p>First, you need a fully qualified domain name (FQDN). This can be set in ubuntu by:</p>
<pre><code>sudo /bin/hostname myserver.domain.com </code></pre>
<p>Next, install postfix and mailutils:</p>
<pre><code>sudo apt-get install postfix mailutils </code></pre>
<p>Set up your /etc/postfix/main.cf. Here&#8217;s what mine looks like:</p>
<pre class="brush: bash; gutter: true; first-line: 1">smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = myserver.domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = myserver.domain.com, myserver, localhost.localdomain, localhost

relayhost = [outgoing.verizon.net]
smtp_connection_cache_destinations = outgoing.verizon.net
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:username@verizon.net:password
smtp_sasl_security_options = noanonymous
default_destination_concurrency_limit = 4
soft_bounce = yes

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; white-space: normal;">
</span></pre>
<p class="brush: bash; gutter: true; first-line: 1">restart postfix and you should be all set</p>
<pre><code>/etc/init.d/postfix restart </code></pre>
<p>to test from the command line, use mail</p>
<pre><code>myserver&gt; mail email@isp.com
Cc: 
Subject: Testing postfix
test
^D</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/01/30/ubuntu-postfix-setup-on-verizon-fios/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>A More Mindful Approach to Apple</title>
		<link>http://haruska.com/2009/01/05/a-more-mindful-approach-to-apple/</link>
		<comments>http://haruska.com/2009/01/05/a-more-mindful-approach-to-apple/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 16:04:04 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=22</guid>
		<description><![CDATA[It has been two years since my migration from linux to os x. Today, I&#8217;m starting the migration back. Two years ago I was bit by the Apple bug. I had been using Linux for the ten years previous and &#8230; <a href="http://haruska.com/2009/01/05/a-more-mindful-approach-to-apple/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It has been two years since my migration from linux to os x. Today, I&#8217;m starting the migration back.</p>
<p>Two years ago I was bit by the Apple bug. I had been using Linux for the ten years previous and always liked it. I was never a zealot about it the way others in the community were, rather I found it to be good for 80-90% of what I do on a daily basis. Plus, I grew to really like using open source. I was able to contribute where I could and hopefully solve someone else&#8217;s issue in exchange for all this great software being maintained.</p>
<p>The nagging part in linux is that other 10% &#8212; handling of media and unsupported by vendors. None of it is the fault of Linux developers. Indeed, that is why I care so deeply about creative commons and anti-DCMA issues. However, it is still an issue the average Linux user needs to deal with daily.</p>
<p>Then came the MacBook. It did that other 10% beautifully. Apple actually had deals with the media companies and the promise of all of it &#8220;just working&#8221; was too much to resist. Besides, it is based on BSD and had a bash shell &#8230; maybe it really was the best of both worlds.</p>
<p>Problem is, it doesn&#8217;t &#8220;just work&#8221;. No consumer hardware does, especially laptops. Any vendor telling you otherwise is being dishonest. After joining the Mac community, I began hearing whispers about hardware issues. It seems the biggest problem isn&#8217;t that the hardware or software fails, it&#8217;s proving to Apple that there is an issue.</p>
<p>Coming from a community with open bug tracking software, open code, and at least knowing someone else is having the issue, I found Apple&#8217;s process extremely disturbing. Every issue I&#8217;ve had it was like Apple trying to pull a Jedi Mind Trick on me &#8211; &#8220;You have no issue&#8221; they would tell me. The customer is forced to prove beyond a shadow of a doubt that there is, in fact, a problem with their perfect hardware and software. Only then, will they admit there is a problem&#8230; but not if they&#8217;re actually working on it.</p>
<p>It&#8217;s maddening. File a bug, it&#8217;ll get closed as a duplicate of another bug you can&#8217;t see. Hope you were the first to file! Having hardware issues? Prove it for a &#8220;genius&#8221;. Don&#8217;t want to get charged the $200 repair for the video card? You better mention you know about the recall from nvidia.</p>
<p>And that&#8217;s my issue. I know no software is perfect. I wish Apple would stop pretending their software is. Give your users more information on their problem, maybe even an ETA on when it will be fixed. Doesn&#8217;t it bother anyone else that their &#8220;critical security updates&#8221; notes just say &#8220;various fixes to improve stability&#8221; ?</p>
<p>So the new tag-line for Apple is &#8220;It just works, until it doesn&#8217;t. Then, good luck&#8221;</p>
<p>To be fair, Linux has its share of problems. Actually, probably a lot more than Apple. The difference is how the community investigates and fixes the problems. That&#8217;s what I&#8217;m more interested in. So I&#8217;ll take the additional issues as long as I know they&#8217;re being worked on. At worst, I could work on it myself.</p>
<p>Today, I begin the migration back to Linux. It won&#8217;t be easy. In the past two years, I&#8217;ve bought into the Apple products hook, line, and sinker. Thanks to my great company, I currently have in my possession a MacBook, MacBook Pro, AppleTV, and two iPhones.</p>
<p>The reason I have two laptops is the MacBook Pro&#8217;s video card keeps dying. Or it wakes from sleep in my bag and melts. I haven&#8217;t had the time to go back to the genius bar and get it fixed again.</p>
<p>I&#8217;m pretty sure I&#8217;m not Apple&#8217;s target market, so this shift shouldn&#8217;t bother them much. What should bother them is the new MacBook Pros came out and nobody in the office wanted one. That&#8217;s a first. It should scare the hell out of them.</p>
<p>Moving forward &#8211; the other MacBook will dual boot OS X and Ubuntu. The AppleTV just got boxee installed on it, making that hardware actually useful. And the iPhone? Well, it looks like I&#8217;ll have to jailbreak it. It seems linux can wirelessly sync to that piece of hardware.</p>
<p>For my next hardware purchases when all this Apple hardware dies: Dell laptop with Ubuntu pre-installed, blackberry (or google phone) and a popcorn hour box.</p>
<p>For software, there are two things I need to figure out how to replace &#8211; Aperture and iChat screen sharing. I think both can be resolved with some research. We&#8217;ve really liked the iChat sharing for pair programming at work and I wouldn&#8217;t want to lose that feature.</p>
<p>So, I&#8217;m off. Something feels right about it. I&#8217;ll probably receive some ridicule at the all-Mac office but it&#8217;s the right choice for me. I hope other linux refugees realize they aren&#8217;t bound to one vendor for their hardware and software soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2009/01/05/a-more-mindful-approach-to-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>modifying snippets of erb during processing</title>
		<link>http://haruska.com/2008/11/26/modify-erb-during-processing/</link>
		<comments>http://haruska.com/2008/11/26/modify-erb-during-processing/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 16:04:56 +0000</pubDate>
		<dc:creator>haruska</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://67.20.106.202/?p=24</guid>
		<description><![CDATA[Today we ran into an interesting problem that turned out to have an elegant solution. We had a list of links that we wanted displayed as comma separated. Long story short, the resulting output contained spaces before the commas (i.e. &#8230; <a href="http://haruska.com/2008/11/26/modify-erb-during-processing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Today we ran into an interesting problem that turned out to have an elegant solution. We had a list of links that we wanted displayed as comma separated. Long story short, the resulting output contained spaces before the commas (i.e. Dick , Mary , and Jane). We wanted to take that output and run a regex replace on it.</p>
<p>Turns out this is pretty easy to do in rails. We added the following to our helper file</p>
<pre class="brush: ruby; gutter: true; first-line: 1">def suppress_comma_spacing(&amp;block)
  res = capture(&amp;block)
  concat(res.gsub(/\s+,/m, ','), block.binding)
end</pre>
<p>then wrapped the code whose output needed modification in a code block in the erb file (trivial example below)</p>
<pre><code>&lt;% suppress_comma_spacing do %&gt;
 &lt;%= link_to "Dick", user_path(dick) %&gt; , &lt;%= link_to "Mary", user_path(mary) %&gt; , and &lt;%= link_to "Jane", user_path(jane) %&gt;
&lt;% end %&gt; </code></pre>
<p>The result is Dick, Mary, and Jane with the spaces before the commas stripped. Capture allows you to get the processed erb from executing the block. Pretty useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://haruska.com/2008/11/26/modify-erb-during-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
