<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Miscellaneous Ramblings &#187; technology</title>
	<atom:link href="http://onastick.wordpress.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://onastick.wordpress.com</link>
	<description>Hockey, Disc golf, devops and other assorting miscellany.</description>
	<lastBuildDate>Wed, 18 Jan 2012 17:39:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='onastick.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Miscellaneous Ramblings &#187; technology</title>
		<link>http://onastick.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://onastick.wordpress.com/osd.xml" title="Miscellaneous Ramblings" />
	<atom:link rel='hub' href='http://onastick.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The horrible state of ruby in a production environment.</title>
		<link>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/</link>
		<comments>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 04:33:49 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Revision control]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyGem]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=307</guid>
		<description><![CDATA[As a long time perl guy I was attracted by ruby.  It&#8217;s very perl like method chaining is extremely useful and intuitive.  I like ruby, but the state of  ruby applications in a production environment is horrible.  There are plenty of really good tools out there for ruby developers.  Vagrant, sahara, bundler, capistrano, etc the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=307&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a long time perl guy I was attracted by <a class="zem_slink" title="Ruby (programming language)" href="http://www.ruby-lang.org/" rel="homepage">ruby</a>.  It&#8217;s very perl like method chaining is extremely useful and intuitive.  I like ruby, but the state of  ruby applications in a production environment is horrible.  There are plenty of really good tools out there for ruby developers.  Vagrant, sahara, bundler, capistrano, etc the list goes on.  RVM and rbenv are two really good alternatives for maintaining your development environment in a sane manner.  We are in the stone ages when it comes time to go to production.  Distro support for ruby is shaky at best.  Most places are still running centos/rhel5 which leaves them with ruby 1.8.5 or if lucky ruby 1.8.7.  If you&#8217;ve upgraded to a rhel6-ish you&#8217;re fortunate enough to get wait&#8230; ruby 1.8.7.  I&#8217;m not as familiar with debian but I&#8217;m fairly certain it&#8217;s 1.8.  Ubuntu has an available 1.9.1 package but that&#8217;s officially a beta version, plus most indications is that it&#8217;s extremely buggy.  As of writing ruby is on 1.9.3.  When it comes to rubygems the situation is even worse.  Most &#8216;best practices&#8217; recommend managing everything with gems.  This introduces a world of pain especially when you start installing things that are based on ruby but provide shell level commands (rackup, unicorn, etc).  Now you&#8217;ve got two package managers trying to determine the state of a system, but one of them only knows about one part of it.  It&#8217;s a mess.<span id="more-307"></span></p>
<p>Ruby development in general is moving very fast, most developers are working on 1.9 and likely 1.9.3.  Trying to stay on 1.8 means you may be stuck with libraries/gems/tools that don&#8217;t work as well as their 1.9 counterparts.  In addition you have to put up with constant complaints from the development side about why they have to run unfrozen caveman ruby and why can&#8217;t they use the latest tool/gem/whizzbang they want.  So now you roll up your sleeves and decide to upgrade your system ruby.  The &#8216;recommended&#8217; method for updating ruby is installing from source.  I love installing from source, I also love mowing my grass.  They are both mindless pursuits that I start and autonomously go through until I complete them.  There&#8217;s no shame in compiling and I don&#8217;t shy away from it, but it has its place.  That place is not on a production server.  It doesn&#8217;t scale, it introduces error and inconsistencies and isn&#8217;t reproducible.  I don&#8217;t want any of my production servers to even have a compiler on them if I can help it.  The next best alternative is rvm.  I love the concept of rvm (though not necessarily the implementation, I prefer rbenv there).  But if you tell me to use rvm on my production servers I&#8217;m going to laugh at you and ask you to come back when you have your big boy developer pants on.  Now I&#8217;m not only building ruby on every machine I have, I&#8217;m doing fancy shell tricks to determine my execution environment.  I&#8217;m also at the mercy of random files littered in directories for what libraries I can see, what binaries I&#8217;m going to use, etc.  How is this anything but a recipe for a long night with cold pizza and a bottle of scotch that ends with updating my resume?  RVM works great when it&#8217;s your environment on your laptop, but in my infrastructure it&#8217;s just not a viable solution.</p>
<p>What about packages you say.  Excellent question.  I&#8217;m a fan of packages, rpm in specific, but I have no objections to debs either (solaris sit down over there, you don&#8217;t have packages, you have tarballs there&#8217;s a difference).  I&#8217;m comfortable building packages, I&#8217;ll bust out a specfile to deploy 5 or so bash scripts cause it&#8217;s the right thing to do.  If your OS uses packages us it, as much as you can.  Not using your native package management system is like jumping out the second story window because you didn&#8217;t want to dent the carpet on the stairs.  Ruby packaging is ugly at least from the rpm side.  The 1.8 specfile won&#8217;t cleanly rebuild 1.9 and when you do get it to work, there are all sort of library issues abi compatibility problems and a host of other things.  Not all of this is ruby&#8217;s fault.  A fair amount of it lies with people distributing rpms of other things that use ruby but not following the correct dependency management techniques.  At the end of the day that doesn&#8217;t matter, building upgraded packages for ruby is non-trivial task.  It&#8217;s also a rabbit hole.  Rebuild ruby, well there&#8217;s 6 packages there (though in a single spec) as someone decided it was awesome to break each binary out into its own package.  Now rebuild rubygems.  Using anything OS level that depends on ruby, chances are good that spec writer locked the version to 1.8 so now you&#8217;re rebuilding that as well.  Don&#8217;t forget the random ruby C library extensions as well (ruby-mysql, ruby-shadow, etc).  At a certain point you wonder if it wouldn&#8217;t be easier to just maintain your own custom distro or pull your eyelids off with plyers.</p>
<p>Here&#8217;s where the real evilness starts to creep in.  You&#8217;ve now spent hours, days, weeks trying to work through technical debt and build a standard and repeatable environment to support development and are ready to pull your hair out.  The thought starts to creep in &#8216;Maybe it would be easier to run rvm, or build it on each box, how much extra work could it be&#8217;.  People don&#8217;t build crappy infrastructures intentionally, they make one small compromise after another until they are neck-deep in debt they have no idea how to pay off.</p>
<p>At this point the python folks are grinning from ear to ear (eggs and pip and the trouble they represent are another topic for discussion) because they&#8217;ve kinda moved past this.  For one python development benefits from not being as &#8216;trendy&#8217; as ruby/rails and the like.  They also benefit from the fact that redhat engineering, as well as ubuntu engineering are pretty heavy python shops.  They have a vested interest to make sure that python doesn&#8217;t suck at the OS level.</p>
<p>So where does that leave us?</p>
<ol>
<li>Build from source / use rvm (there&#8217;s no difference between the two other than shell magic) YUCK!</li>
<li>Package everything into rpms/debs (a ton of extra work, weird corner case breakage)</li>
<li>Something else</li>
</ol>
<p>Here&#8217;s my idea on something else, until the state of distro support of ruby is saner.</p>
<ul>
<li>package ruby into its own location (/opt/ruby/$version or something that makes you happy)</li>
<li>use bundle pack and bundle install &#8211;deployment</li>
</ul>
<p>Repackaging a language it&#8217;s own prefix is not my favorite plan but till I can sanely update ruby OS wide it&#8217;ll have to do.  You still are going to need to do PATH tricks or edit the shebangs on every script in order for things to work right, but this way we&#8217;re not installing ruby 17 times b/c we run 17 apps on a single machine.  I do not install gems here, with 1 exception.  I install bundler.  If you&#8217;re working with ruby or supporting ruby and you are not using bundler then you need to be shot (here yeller, here boy&#8230; that&#8217;s a good dog).</p>
<p>Once you start using bundler, use bundle pack.  This tells bundler to install gem dependencies in the vendor/cache directory of your application.  You should then put Gemfile.lock under revision control (or include it in your deployment packaging).  This will enable you to run bundle install &#8211;deployment on your production environment.  The &#8211;deployment flag tells bundler to avoid running gem install and use the vendor/cache directory.  This keeps all of your application gems &#8216;inside&#8217; your application.  Which means you avoid messes with wrongly &#8216;activated&#8217; gems, accidental version upgrades etc.  You do need to remember to run any commands under bundle exec (like bundle exec rake db:migrate) else you&#8217;ll start running into subtle errors, but the trade-off in sanity is worth it.</p>
<p>Hopefully as ruby adoption continues this state of affairs will get better.  Better OS packages are a start.  Standards around deployment like bundler are a must.  I&#8217;d really like to see a gem-&gt;rpm/deb integration rather than continued fractured directions but I&#8217;m not sure that&#8217;s much on anyone else&#8217;s radar.  It all (almost) makes me pine for the days of installing everything with CPAN.</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/ramblings/'>Ramblings</a>, <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a>, <a href='http://onastick.wordpress.com/category/technology/'>technology</a> Tagged: <a href='http://onastick.wordpress.com/tag/deployment/'>deployment</a>, <a href='http://onastick.wordpress.com/tag/development/'>development</a>, <a href='http://onastick.wordpress.com/tag/programming/'>Programming</a>, <a href='http://onastick.wordpress.com/tag/revision-control/'>Revision control</a>, <a href='http://onastick.wordpress.com/tag/ruby/'>ruby</a>, <a href='http://onastick.wordpress.com/tag/rubygem/'>RubyGem</a>, <a href='http://onastick.wordpress.com/tag/tools/'>Tools</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/307/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=307&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>puppet and vim</title>
		<link>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/</link>
		<comments>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:54:00 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=299</guid>
		<description><![CDATA[I&#8217;ve been using vi/vim for nearly my entire professional life, and most of my computer life as well. I gave emacs an honest try for a couple of days a few years ago but just couldn&#8217;t grok the shortcuts and make it feel natural. Recently I overhauled my setup on my laptop and in specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=299&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using vi/vim for nearly my entire professional life, and most of my computer life as well.  I gave emacs an honest try for a couple of days a few years ago but just couldn&#8217;t grok the shortcuts and make it feel natural.  Recently I overhauled my setup on my laptop and in specific tuned to to what I generally spend a lot of development time on&#8230; puppet.<br />
<span id="more-299"></span><br />
First things first I turned my .vim directory into a git repo (published here http://github.com/stick/vimfiles).  This makes it pretty easy for me to keep track of what changes I made and why, till you spend a few years with it there&#8217;s a bit of black magic in how the more advanced parts of vim work.  So after I wholesale cleaned out my .vim directory I started essentially fresh.</p>
<p>First plugin I use is pathogen, it&#8217;s a must and the only plugin that actually resides in the normal places in vim&#8217;s rc directory.  Pathogen allows you to define a bundle directory (~/.vim/bundles by default) and will load plugins in whole from that tree.  That allows each plugin to have it&#8217;s own tree and you don&#8217;t get file collisions etc.  It also makes it super easy to enable or disable a plugin.</p>
<p>I won&#8217;t go into super detail on all the vim&#8217;ness that I&#8217;ve setup most of it is from this <a href="http://stevelosh.com/blog/2010/09/coming-home-to-vim/">great article</a>.  I&#8217;m not a pure developer so some of the things I don&#8217;t use but the plugins he recommends are spot on.</p>
<p>One of the core tenets in puppet is to not duplicate work, it even gets enforced to a certain degree with not being able to duplicate resources.  When you combine this the the recommended module structure and correct use of the autoloader and you will find yourself creating a lot of manifest files.  There are two things I use that help with this.  One is a template plugin, the other is snipmate.  The template plugin comes into play whenever I create a new file, I have a skeleton directory that contains stub for different filetypes.  When I edit a new file it reads in that template, interpolates a few tokens and inserts it into my new file buffer.  I always work on modules from the top of the module (makes moving easier and helps with the git side of things I think).  So in my ssh module when I do:</p>
<p><code>$ vi manifests/server.pp </code></p>
<p>I get a file that looks like:</p>
<div id="attachment_302" class="wp-caption alignright" style="width: 160px"><a href="http://onastick.files.wordpress.com/2011/03/new-manifest.png"><img class="size-thumbnail wp-image-302" title="new-manifest" src="http://onastick.files.wordpress.com/2011/03/new-manifest.png?w=150&#038;h=89" alt="Edit a new manifest file" width="150" height="89" /></a><p class="wp-caption-text">This file didn&#039;t exist prior to editing.</p></div>
<p>If you notice the header comment is mostly filled out, the class declaration is already set and a few other things.  How does this work?  Well the skeleton file has tokens in it that I have defined (called tags, which is a bit of an overload of the term).  That tag can be a simple string or you can use vi&#8217;s scripting language to a certain extent to figure things out.  In the case of the class declaration I know that I almost always work in the top dir of a module so I know what module I&#8217;m in from that. Then the autloader in puppet has very specific rules how how filenames translate to classes so I take advantage of that with a little substitute.  The template plugin I use is eteSkeleton, I liked how relatively simple it was, however I did have to fork it and fix a few things with it.  The original source is <a href="https://github.com/vim-scripts/eteSkeleton">here</a>, my fork is <a href="https://github.com/stick/eteSkeleton">here</a> and my specific tags file is <a href="https://github.com/stick/vimfiles/blob/master/skeleton/tags/eteSkeleton.tags">here</a> to see how I did the class logic.</p>
<p>I also use snipmate to create definitions, language constructs etc within manifests.  Snipmate lets you type if and get a completed if statement that you can tab through the various elements of.  Those familiar with TextMate will recognize it instantly.  My snippets file for puppet is <a href="https://github.com/stick/vimfiles/blob/master/snippets/puppet.snippets">here</a>, it was originally done by R.I. Pienaar but I modified it to match my personal syntax style etc.</p>
<p>Syntax highlighting is pretty simple, there&#8217;s a puppet.vim that&#8217;s included in the puppet source tree, it defines the groups and objects and how to highlight them, then you can control the colors through vim&#8217;s colorschemes.  I don&#8217;t change my colors from the default, I just tweak my terminal settings to brighten up some of the colors (dark blue on black specifically).</p>
<p>ftdetect/puppet.vim handles file detection of manifest files, there&#8217;s a lot of things that are keyed off of set filetype=puppet, this just matches *.pp.  There&#8217;s not really a case where I&#8217;m editing a manifest and it&#8217;s not a .pp so we don&#8217;t have to read lines or anything to determine filetype, if we did that would go here.  ftplugin/puppet.vim contains any filetype specific settings I want for puppet.</p>
<p><code>kp=pi</code> looks a little cryptic.  kp is shorthand for kewordprg (or keyword program).  This defines the program that vim will run when you press &#8216;K&#8217; (note the capital) in normal mode.  In stock vim if you try this on a word it will run man  (cword is vim-speak for word under cursor).  pi is actually shipped as part of puppet (at least it&#8217;s in the gem install) as an analog to ri (ruby documentation).  It acts exactly the same as puppet describe.  This means that in a manifest I can position the cursor on say an &#8216;exec&#8217; resource that I&#8217;m writing and hit &#8216;K&#8217; and it&#8217;ll shell out and run <code>pi exec</code> (puppet describe exec) and give me all the resource documentation for that version of puppet (assuming I&#8217;m on a box that has puppet installed).  This is great when I can&#8217;t remember the exact attribute on a resource or similar.  My only complaint is that pi doesn&#8217;t page when it returns a lot of text (see <code>pi file</code>) and it&#8217;s annoying to have to page up to start reading (I run 100% of the time in screen and have my pageup key mapped to copymode).  But wait I have a solution.  Vim always runs <code>&amp;kp </code> so I can&#8217;t really set kp to something with a pipe and pager in it.  If you try: <code>:set kp="pi  | less -F"</code> you will end up running: <code>pi exec |less -F exec</code>as kp always appends .  So in my .bashrc I define the following:</p>
<pre>function pi() {
  command pi "$@" | less -F
}</pre>
<p>This defines a local bash function called pi which calls pi with whatever arguments were passed and pipes it to less -F (-F only paging if there&#8217;s more than 1 screen of text).  The command construct in bash prevents a loop between the function and the actual command.  It also allows the path to be used rather than hardcoding <code>/usr/bin/pi</code> which would have the same net effect.  It&#8217;s a tad more portable.  Now in vim when I cursor over a resource and hit &#8216;K&#8217; I get nice puppet documentation without having to switch windows or anything.  Be aware that since it&#8217;s a locally defined function you have to set <code>set shellcmdflag=-ic </code> in your .vimrc else when vim shells out the function won&#8217;t be defined.  I could also make a shell command in my path somewhere and use that as that adding the &#8216;i&#8217; flag to the shell causes it to bg vim in certain circumstances as it&#8217;s an interactive shell now.</p>
<p>The surround plugin is great for throwing quotes or curlys around things, since puppet uses two different syntaxes for variables when they are quoted vs bare, I use that alot to wrap a variable in curlys.  The normal mapping (see surround&#8217;s documentation) to do that is: <code>ysiw}</code>.  Cryptic and hard to remember?  Yup.  Basically it&#8217;s &#8216;ys&#8217; (you surround); &#8216;iw&#8217; (inner word, :h text-objects will change your life), &#8216;}&#8217;.  The surround plugin uses the left brace to surround with spaces and the right brace to surround without.  I map this to <code>}</code> to make it easy.</p>
<p>NERD_Commenter (a very awesome plugin to do filetype/language specific comments) uses a dictionary for filetypes to define additional comment characters.</p>
<pre>let g:NERDCustomDelimiters = {
      \ 'puppet': { 'left': '#', 'leftAlt': '/*', 'rightAlt': '*/' }
      \ }</pre>
<p>This defines the comment character (and alternate comment character) for puppet filetypes.  Using NERD_Commenter you can switch between shell style and c-style comments.  Do things like visually select a block and comment it one swoop, and uncomment sections really easily.</p>
<p>Puppet resources use fat comma&#8217;s to specify parameters.  The style guide (and I tend to agree) states that all co-located fat commas should be aligned based on the longest parameter in the list.  Fixing that is tedious and annoying.  This is where the &#8216;Align&#8217; plugin comes in handy.  Align can do a million things to reformat text, but simply for this case I only use it for fat commas.   I want to select a block of text with visual select mode (greatest thing in vim ever btw).<br />
Then run <code>:Align =&gt;</code>.  This will align everything on those delimiters.  I have this mapped to = in my .vimrc.  I don&#8217;t use tabs so there might be additional settings to get it to align with tabs instead of spaces, but I think it honors expandtab and smarttab as needed.</p>
<p>I have ctags and taglist setup to integrate with puppet, but I&#8217;m finding myself not really using it much.  I tend to think in the autoloaders terms and just open a new window/etc to what I need to look up rather than use vim to jump back and forth.  If I could get it setup such that when I cursor over a statement like:<br />
<code>include ssh::server</code>and hit ] (which causes a taglookup); it would then take me to where class ssh::server was defined I would probably use it more, but since &#8216;::&#8217; isn&#8217;t a part of a word boundary that doesn&#8217;t work.  I got the ctags configuration from <a href="nasrat.livejournal.com/51482.html ">Nasrat</a> and it works great, I just haven&#8217;t really figured out how to integrate it into my coding-workflow.  If anyone has any more practical enhancements or advice leave them in the comments.</p>
<p>Syntax checking is a must.  I&#8217;ve written a couple of shell scripts to wrap around <code>puppet --parseonly</code> to check a whole module, do erb checking etc etc.  Then I found syntastic.  Syntastic is simply put&#8230; fan-fucking-tastic.  It supports doing syntax checking based on filetype so you can change things per language.  Vim has always had the &#8216;make&#8217; and &#8216;makeprg&#8217; settings but syntastic wraps that up in a nice package and gives you a way to extend it.  It also provides a function you can put in your statusline to alert you when you open (or save) a file that the file has syntax errors (and where they are).</p>
<p>A quick aside about the statusline.  I used to hate it, this ugly white line at the bottom that broke up the visual and flow of the text and really didn&#8217;t contain anything useful.  Then I discovered how to change it and fill it with all sorts of useful information.  All of my statusline settings (with the exception of setting laststatus=2 in .vimrc) are found in <a href="https://github.com/stick/vimfiles/blob/master/plugin/statusline.vim">statusline.vim</a>.</p>
<p>The code found in <a href="https://github.com/stick/vimfiles/blob/master/syntax_checkers/puppet.vim">syntax_checkers/puppet.vim</a> defines the proper makeprg and does the other syntastic setup.  The hard part is getting the errorformat set correctly.  Vim often times bails back home to it&#8217;s &#8216;C&#8217; roots and this is one of those times.  errorformat (:h errorformat for in depth information) is a pattern that will be matched against the output of the makeprg (in this case puppet apply &#8211;parseonly &#8230; ).  The difficulty is it&#8217;s not a regular expression, it&#8217;s a scanf expression.  scanf is an older c routine for matching single or multiline text and it&#8217;s a bit cryptic and confusing.  Give me a regex anyday, you combine that with how vim needs things escaped and it was a chore.  But it&#8217;s done now and hopefully I&#8217;ve saved you some time.  Puppets parse-only option it&#8217;s terribly smart.  Once it finds a single error it will stop parsing.  I talked to Luke about this and it&#8217;s a limitation of the DSL in ruby.  The parser can&#8217;t really continue once it finds and error so it doesn&#8217;t have any way to report on all the errors.  The net result is that if you sit down and bang out a manifest really fast then syntax check it, you&#8217;ll get the first error, fix it, save see the second, etc etc etc.  Still nicer than having to quit, run puppet, edit, fix, and repeat.  Be aware that forcing a syntax check each time the buffer is opened does slow vim down a bit (well not really vim, it&#8217;s just waiting on puppet), so if you notice it and it bothers you (it doesn&#8217;t me) look at syntastic documentation on how to disable it and only turn it on when you want it.  I&#8217;m toying around with seeing if I can get syntastic to check against running puppet in noop mode to catch things like duplicate definitions and other things that parser doesn&#8217;t deal with, but there&#8217;s a lot to ignore and filter through and noop mode generates a lot of output since it&#8217;s not really changing anything.  I&#8217;m also not sure if it&#8217;s all that useful at that phase, I generally do a lot of sandbox and vm testing anyway which I would still have to do.  I&#8217;m sure if someone wanted to write a specific parser for manifests that was smarter than parseonly but friendlier than noop there would be beer and scotches all around, but I tend to think most of us are more interested in writing actual manifests than something to check manifests.</p>
<p>That&#8217;s all of my puppet specific vim setup, my entire vim tree is online at http://github.com/stick/vimfiles and is mostly documented as to what various things do.  All the credit for the various plugins goes to their authors, the vim community is really good, just spend a bit getting to know vim before you jump in.</p>
<p>Happy puppeteering!</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/ramblings/'>Ramblings</a>, <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a>, <a href='http://onastick.wordpress.com/category/technology/'>technology</a> Tagged: <a href='http://onastick.wordpress.com/tag/coding/'>coding</a>, <a href='http://onastick.wordpress.com/tag/development/'>development</a>, <a href='http://onastick.wordpress.com/tag/editors/'>editors</a>, <a href='http://onastick.wordpress.com/tag/git/'>git</a>, <a href='http://onastick.wordpress.com/tag/puppet/'>puppet</a>, <a href='http://onastick.wordpress.com/tag/textmate/'>textmate</a>, <a href='http://onastick.wordpress.com/tag/vim/'>vim</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/299/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=299&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>

		<media:content url="http://onastick.files.wordpress.com/2011/03/new-manifest.png?w=150" medium="image">
			<media:title type="html">new-manifest</media:title>
		</media:content>
	</item>
		<item>
		<title>Photonecromany</title>
		<link>http://onastick.wordpress.com/2009/08/05/photonecromany/</link>
		<comments>http://onastick.wordpress.com/2009/08/05/photonecromany/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 07:00:26 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[canon]]></category>
		<category><![CDATA[dslr]]></category>
		<category><![CDATA[nikon]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=202</guid>
		<description><![CDATA[I&#8217;ve been interested in photography at various levels for some time.  I dabbled a bit in college with 35mm film but never really got into it, mainly due to cost.  Without access to your own darkroom developing film can be an expensive proposition. I&#8217;ve been doing a lot of research about dSLR&#8217;s lately in prep [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=202&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been interested in photography at various levels for some time.  I dabbled a bit in college with 35mm film but never really got into it, mainly due to cost.  Without access to your own darkroom developing film can be an expensive proposition.</p>
<p>I&#8217;ve been doing a lot of research about dSLR&#8217;s lately in prep to buy myself a dSLR.  I figured I&#8217;d detail my thoughts from a relative newbie&#8217;s perspective.  First a little bit on my parameters and intentions.</p>
<p>My budget is roughly $1000, I&#8217;m looking for a reasonable advanced camera that I can use as a learning tool.  The goal is to learn more about the technology of photography (hopefully dragging the art out of me kicking and screaming) as well as taking better pictures.  I&#8217;ll mostly be shooting sporting event type activities, (disc golf, kids in the backyard, etc) family stuff, but I do want to do a little bit of artistic photography.  Several of the new cameras have HD video as a feature.  While this isn&#8217;t real important to me, it&#8217;s a fun thing to play with.</p>
<p><span id="more-202"></span>The two front runners are the <a title="Nikon D5000" href="http://www.nikonusa.com/Find-Your-Nikon/Product/Digital-SLR/25452/D5000.html" target="_blank">Nikon D5000</a> and the <a title="Canon T1i" href="http://www.usa.canon.com/consumer/controller?act=ModelInfoAct&amp;fcategoryid=139&amp;modelid=18385" target="_blank">Canon Rebel EOS T1i</a>.</p>
<p>I spend a bit of time at Best Buy today playing with each camera.  There&#8217;s no chance I&#8217;ll buy from there since their prices are around $150 over what you can find online.  It&#8217;s really good to get some hands on time with any piece of technology you&#8217;ll end up using a lot and the brick and mortar stores provide a good avenue to do that in a largely sales free environment.</p>
<p><strong>D5000</strong></p>
<p>Camera feels good, nice and solid but not too heavy either.  I was luckier with the Nikon in that I had them it it out of the case so it didn&#8217;t have the security clamp attached.  I found button layout to be ok but not terrible intuitive.  The interface was more of the same, it has a really nifty aperture display that opens and closes as you change settings.  It&#8217;s a really nice way to provide feedback to those of us that can&#8217;t do aperture, exposure, and ISO calculations in our heads <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  The feedback is very intuitive actually changing things, not so much.  Shutter speed is changed with the click dial, pretty simple.  Aperture is modified by a button press combined with the command wheel.  ISO was nearly impossible to find, after doing some reading you have to dig through a menu or remap a button to have quick access to it.</p>
<p>The flip down LCD screen was neat, but it also seemed kinda gimmicky.  I shudder (har har) to think what happens if you break it off one day.  The 11 point auto-focus is nice and responsive.</p>
<p>While I liked the aperture graphic as a feedback/learning tool, the whole interface felt very wizard-like and over simplified.</p>
<p><strong>Canon D500/T1i</strong></p>
<p>Not quite as solid as the Nikon but certainly not cheap feeling either.  This display on the T1i is a thing of beauty.  The button interface was very intuitive, changing ISO, aperture and shutter speed were very easy to find and change in manual mode.  Mode feedback was very easy to read without being pedantic.</p>
<p>The T1i has a 9 point auto-focus system which a lot of reviews have characterized as slow, I didn&#8217;t really notice anything playing in the store but that&#8217;s a odd environment.</p>
<p>All in all I&#8217;m still a bit undecided as the two models are so close.  Now I&#8217;m on to more in depth lens research.</p>
<p>Stay tuned&#8230;.</p>
<br />Posted in Photography, Ramblings, technology Tagged: canon, dslr, nikon, Photography <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=202&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/08/05/photonecromany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>Password Manager for iPhone</title>
		<link>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/</link>
		<comments>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 03:01:05 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[passwords]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/2009/03/23/password-manager-for-iphone/</guid>
		<description><![CDATA[I&#8217;m on the hunt for a good password manager for the iPhone. But there&#8217;s a slight catch. I&#8217;m looking for something that works with fedora. I&#8217;d like to be able to sync it locally as well. There seem to be couple of things that will sync &#8220;to the cloud&#8221; but that seems to be a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=201&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m on the hunt for a good password manager for the iPhone. But there&#8217;s a slight catch. I&#8217;m looking for something that works with fedora. I&#8217;d like to be able to sync it locally as well. There seem to be couple of things that will sync &#8220;to the cloud&#8221; but that seems to be a horrible idea for passwords.</p>
<p>Anyone have suggestions?</p>
<br />Posted in Ramblings, Sysadminery, technology Tagged: fedora, iphone, passwords <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=201&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>Journey into sync</title>
		<link>http://onastick.wordpress.com/2009/01/27/journey-into-sync/</link>
		<comments>http://onastick.wordpress.com/2009/01/27/journey-into-sync/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 23:37:56 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[sync]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=193</guid>
		<description><![CDATA[I&#8217;m fairly picky when it comes to how I manage my personal data.  I like a fair amount of separation between things but I want everthing accessible.  Quite a while ago I moved my domain (for email, etc) over to google apps.  I can&#8217;t really understand why anyone with less than 3 or 4 thousand [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=193&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m fairly picky when it comes to how I manage my personal data.  I like a fair amount of separation between things but I want everthing accessible.  Quite a while ago I moved my domain (for email, etc) over to google apps.  I can&#8217;t really understand why anyone with less than 3 or 4 thousand users would run their own mail servers, but that is a post for another day.  Since I&#8217;ve been a user of google apps for a while I&#8217;ve been looking for a good way to manage my calendars.  I&#8217;ve never been totally happy with GoogleCalendar especially when compared with iCal.  I&#8217;ve used both <a title="Spanning Sync" href="http://www.spanningsync.com" target="_blank">spanning sync</a> as well as <a href="http://www.busymac.com/" target="_blank">busy sync</a>, but I never got enough use out of them to warrant paying for them.  Throw in the addition of my iphone and I just wasn&#8217;t happy with how things were setup.</p>
<p><span id="more-193"></span>Recently I&#8217;ve overhauled everything and am pretty happy with the results.  I found <a title="Nueva Sync" href="http://www.nuevasync.com" target="_blank">NuevaSync</a>, which is a (currently) free service that provides activesync services with google.  For those of you keeping score at home, activesync is the mobile sync protocol used to syncronize (ie push) mail, contacts and calendars.  It is licensed by Microsoft and is the backbone behind exchange.  This is obviously not ideal but currently it&#8217;s the only real sync protocol that the iphone supports.  SyncML is out there but isn&#8217;t supported and has some issue of it&#8217;s own.</p>
<p>NuevaSync will provide sync services for calendars and contacts (no email yet, but I don&#8217;t really want push email).  It&#8217;s reasonably painless to setup (you can actually do it all from your phone if you&#8217;d like).  Nicely you don&#8217;t have to give nuevasync your google password, they use the google auth token stuff that lets you authorize certain sites to have access to certain parts of your google account.  Setup is fairly straight forward, once you get everything setup between nuevasync and google you need to configure your phone.  Bear in mind that configuring activesync for either contacts or calendars will remove any existing calendars/contacts so make sure you backup everything before you start.</p>
<p>I went through and exported all of calendar entries from ical and did the same with my contacts.  You then configure your phone to use nuevasync as an exchange server.  They have excellent instructions and good self-debugging tools so it&#8217;s pretty straight forward.  I did run into a couple of perplexities.  First I use google apps, which nuevasync supports, but I also have a non-apps account on google that corresponds to my email address (for google reader, and a few other things that aren&#8217;t &#8216;appsified&#8217; yet).  When I was in the process of authorizing nuevasync to my google account I was presented with 2 logins (with the same email).  I had to go through a little trail and error to find the right one.  The other problem I ran into was with contacts.  It seems that if you import your contacts without putting them into a group (mainly b/c the AtoG tool to export from addressbook completely loses all your group information) but once I moved them into a group it worked like a charm.</p>
<p>Now I can add events and contacts on my phone and they get synced up into google.  I&#8217;ve since added google via caldav to my iCal which lets me see my calendar in iCal.  This is actually working out pretty well since I can make my work calendar (on my laptop) my default calendar and simplify things with work.  I still need to find a way to sync contacts between AddressBook and google but I don&#8217;t add/change them all that often so an export may work for now.</p>
<br />Posted in Ramblings, technology Tagged: iphone, sync, technology <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/193/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=193&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/01/27/journey-into-sync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>RSS Aggregators</title>
		<link>http://onastick.wordpress.com/2009/01/03/rss-aggregators/</link>
		<comments>http://onastick.wordpress.com/2009/01/03/rss-aggregators/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 17:52:16 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=186</guid>
		<description><![CDATA[I had never been much into RSS (and specificially aggregators) until I got an iphone.  Now it&#8217;s the primary way I read news.  So this holiday I spent some time redoing all my feeds, consolidating, cleaning up, etc.  I was using netnewswire on my iphone with newsgator.com since it was free and pretty good.  But [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=186&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had never been much into RSS (and specificially aggregators) until I got an iphone.  Now it&#8217;s the primary way I read news.  So this holiday I spent some time redoing all my feeds, consolidating, cleaning up, etc.  I was using netnewswire on my iphone with newsgator.com since it was free and pretty good.  But I got to the point where it just wasn&#8217;t cutting it anymore.  So I consolidated everything over to Google Reader and bought Bylines for the iphone, which has full API support of Google Reader.  So far it&#8217;s rocked.  I&#8217;ve also added a widget to the blog here that&#8217;ll show links that I mark in google reader.  This is nice because there are a lot of links I like to share but don&#8217;t deserve a post of their own.</p>
<br />Posted in Ramblings, technology Tagged: google, iphone, macosx, rss <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=186&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/01/03/rss-aggregators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
	</channel>
</rss>
