<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Intraspirit</title>
    <link>http://intraspirit.net</link>
    <description>Intraspirit Feed</description>
    <language>en-us</language>
    <generator>Symphony (build )</generator>
    <atom:link href="http://intraspirit.net/rss/" rel="self" type="application/rss+xml"/>
    <item>
      <title>A Simple FuzzyFinder Improvement</title>
      <link>http://intraspirit.net/scratchpad/a-simple-fuzzyfinder-improvement/</link>
      <pubDate>Sun, 20 Dec 2009 13:25 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/a-simple-fuzzyfinder-improvement/</guid>
      <description>&lt;p&gt;I've been using Vim, full-time, for a little over a year now. Since I started using Vim, I've been on a constant quest to customize and improve the way I use it. Today, I'm going to share a quick hack I have in place for &lt;a href="http://www.vim.org/scripts/script.php?script_id=1984"&gt;FuzzyFinder&lt;/a&gt;; what I consider to be my cornerstone plugin.&lt;/p&gt;

&lt;p&gt;Below is the hot-key configuration I currently have in place for FuzzyFinder:&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
map &amp;lt;leader&amp;gt;F :FufFile&amp;lt;CR&amp;gt;
map &amp;lt;leader&amp;gt;/ :FufFileRecursive&amp;lt;CR&amp;gt;
map &amp;lt;leader&amp;gt;f :FufFileWithCurrentBufferDir&amp;lt;CR&amp;gt;
map &amp;lt;leader&amp;gt;d :FufDir&amp;lt;CR&amp;gt;
map &amp;lt;leader&amp;gt;b :FufBuffer&amp;lt;CR&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Notice the "FufFileRecursive" command in there; that is custom addition. Below is the modification that I've made to add it.&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
call fuf#defineLaunchCommand('FufFileRecursive', s:MODE_NAME, '"**/"')
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="http://github.com/brettbuddin/dotfiles/blob/master/vim/autoload/fuf/file.vim#L40"&gt;~/.vim/autoload/fuf/file.vim&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That line will add a command to Vim called "FufFileRecursive" which will tell FuzzyFinder to look recursively inside the current working directory for whatever you type next. As you've probably guessed, this would be insane to run while in your home directory or from root, but when ran inside your project's root directory it can be very powerful. &lt;/p&gt;

&lt;p&gt;I usually call "FufDir" first, which will let me move to a specific directory, and then the recursive file find command to find whatever files live inside of that directory. TextMate users will notice that this very similar to their Cmd+T command, and it is.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comic Strip Fix</title>
      <link>http://intraspirit.net/scratchpad/comic-strip-fix/</link>
      <pubDate>Thu, 24 Sep 2009 12:00 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/comic-strip-fix/</guid>
      <description>&lt;p&gt;I thought I'd take a minute to talk about a small project I've been toying with as of late. The application is called &lt;a href="http://comicstripfix.com"&gt;Comic Strip Fix&lt;/a&gt;, and it aims to put an end to some of the frustrations I have with my &lt;strike&gt;compulsive&lt;/strike&gt; daily reading of web comics. It polls a list of supported comic sites throughout the day and serves up the most recent strips.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://intraspirit.net/image/comical.png" alt="Comic Strip Fix" class="pulled-one framed" /&gt;&lt;/p&gt;

&lt;p&gt;During the course of a typical day, I check all of the comics in my browser's bookmark folder dedicated to that purpose. Some of these comics have updated since my last visit and others have not. What I've found is that navigating to so many different websites, a lot of cases not having any fresh content for me to consume, wastes a lot of time. I know several friends of mine who read &lt;strong&gt;many&lt;/strong&gt; more comics than I do and I can't imagine how much more time they are wasting.&lt;/p&gt;

&lt;p&gt;I looked around for a better solution, but in order to solve my time and energy issues, I realized two important aspects of the problem that I would also have to solve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variance in how the strips are presented on the many websites&lt;/li&gt;
&lt;li&gt;Variance in how the strips are represented in RSS feeds&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Variance in Comic Site Designs&lt;/h3&gt;

&lt;p&gt;While having a distinct design and style is a great thing, and I don't condone same-ness in most cases, I'm just trying to consume information. A certain degree of same-ness is necessary for me to not feel taxed while perusing the many sites. This is not only limited to the visual design, but also how you navigate to the comic strips on the websites. For some artists, the comics are the focal point and strips are presented on the home page. For others, the particular comic in question is nested someplace else in the site.&lt;/p&gt;

&lt;p&gt;Comic Strip Fix aims to remove these differences and provide a seamless way to view comic strips; all while trying to honor the extra commentary and information surrounding the strip (example: xkcd's anchor title-text).&lt;/p&gt;

&lt;h3&gt;Variance in Feeds&lt;/h3&gt;

&lt;p&gt;For years, the RSS feed reader scene has surrounded the idea of same-ness, and for most textual information the idea has worked well. However, comics, and other similar media types, don't seem to fit well into the model; and to be frank, feels very brute-forced. Examining the feeds provided for most comics, I am astounded with the amount of variability there is in the way artists are representing their information.&lt;/p&gt;

&lt;p&gt;This fact influenced a very early design decision in the architecture of the application: to provide each comic supported with its own, specific, implementation for retrieving the strip information. While this does mean that users can't add their own comics to the system, it also means that those that are added will get the specific attention they need to maintain the site's consistency. I am willing to sacrifice high growth and customization for consistency.&lt;/p&gt;

&lt;h3&gt;Get Involved and Help Out&lt;/h3&gt;

&lt;p&gt;In order to mitigate the growth issues of keeping the list of comics controlled, I have published the &lt;a href="http://github.com/brettbuddin/comical"&gt;source code&lt;/a&gt; for the application on Github. If you are a programmer, love web comics as much as I do and want to help write drivers for comics that you enjoy keeping up with, fork away! If you aren't a programmer, you can still help out by providing me with feedback of how we're doing and suggesting comics that you'd like to see supported; just &lt;a href="mailto:brett@intraspirit.net"&gt;drop me a line&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have some ideas for how to make the site even better, and will be working on those as soon as I find some extra free-time. I hope you find the site as useful as I do and enjoy using it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goodbye, OnWired</title>
      <link>http://intraspirit.net/scratchpad/goodbye-onwired/</link>
      <pubDate>Fri, 28 Aug 2009 09:00 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/goodbye-onwired/</guid>
      <description>&lt;p&gt;Today is my last day at &lt;a href="http://onwired.com"&gt;OnWired&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I started working at OnWired less than a month out of college. Over the last year I have learned a lot about my craft and the business details that surround it. Here, I have experienced many triumphs and pitfalls of agency life—what to do and what not to do—and I'm grateful for that experience. More importantly, however, I've been able to further solidify ideas of who I am as a programmer and what intrigues me as an individual. Like everything else though, there is a conclusion, and the time has come for me to move on.&lt;/p&gt;

&lt;p&gt;Over the course of the last few months, I've been burning the candle from both ends—doing day-job work during the day and freelance in the evenings. For a while there, I basically became a work-a-holic. I realized that the reason I was doing freelance work wasn't for the paycheck, it was because I wanted to be involved in the work. With other opportunities looming, it was simply time to make a decision.&lt;/p&gt;

&lt;h3&gt;Where to next?&lt;/h3&gt;

&lt;p&gt;It is because of these, and maybe a few other, reasons that I've chosen to take up freelancing full-time. I feel that this is the only time in my life that I'll be able to make such a leap. I'm young and have very few personal and financial commitments—free to fly. This is a big step for me—both personally and professionally. There are lots of unknowns, but I take comfort in knowing I'm happy, have few regrets and have a clear view of who I am and what I want.&lt;/p&gt;

&lt;p&gt;If you have a project that you'd like to work on with me, or would just like to say hello, please don't hesitate to &lt;a href="mailto:brett@intraspirit.net"&gt;get in touch&lt;/a&gt;. &lt;strong&gt;I'd love to hear from you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wish the OnWired team the best of luck and safe travels on the interweb high seas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pulling a Magnolia</title>
      <link>http://intraspirit.net/scratchpad/pulling-a-magnolia/</link>
      <pubDate>Sun, 26 Jul 2009 00:40 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/pulling-a-magnolia/</guid>
      <description>&lt;p&gt;Several months ago, I stumbled across what I thought to be a huge breath of fresh air in the world of bookmarks: &lt;a href="http://bookmarks2.com"&gt;Bookmarks2&lt;/a&gt;. I thought to myself, "Bookmarks I can sync between machines without complex forms and social crap? Count me in!". I used it extensively over that period of time&amp;#8212;bookmarking everything I came across for further reading. All was well.&lt;/p&gt;

&lt;p&gt;&amp;#8230;Until about 4 weeks ago when Bookmarks2 suddenly went down. The website said they would be down for about two days and would be back online soon. Days turned to weeks. So I decided to send them an email asking what was going on. Last week, I finally received a reply, but not the one I was expecting:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hi, we apologize that the website has not worked for three weeks. Unfortunately, the failure has taken place in our database. We know it is not acceptable, however we can do nothing. We took all measures so that these kinds of problems will not appear again. We hope for your understanding.&lt;/p&gt;
  
  &lt;p&gt;P.S. If you wish to continue working with the website you will need to register again.&lt;/p&gt;
  
  &lt;p&gt;Best Regards,
  Bookmarks2 team&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My favorite part of this response is the hasty post scriptum of having to register again&amp;#8212;as if "Oh, by the way, we did indeed lose &lt;strong&gt;everything&lt;/strong&gt;!" It doesn't look like I am the &lt;a href="http://twitter.com/JonathanHungate/status/2785931269"&gt;only one&lt;/a&gt; who received this either. What's more surprising to me though is that, since the site has come back online, I see no trace of an explanation or apology on the website itself. It's one thing to lose everyone's data, but it's even more screwed up to pretend like it never happened.&lt;/p&gt;

&lt;h3&gt;Pinboard&lt;/h3&gt;

&lt;p&gt;I've since moved on; registering an account with &lt;a href="http://www.pinboard.in/"&gt;Pinboard&lt;/a&gt;. I had to pay about $3 to register (a price derived from the number of total users on the website), but I believe it to be worth it, because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I'm a paying customer.&lt;/li&gt;
&lt;li&gt;They give a damn about my data; as evidenced by their &lt;a href="http://www.pinboard.in/tos/"&gt;Terms of Service&lt;/a&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your bookmarks will be backed up nightly to an off-site datacenter.&lt;/p&gt;
  
  &lt;p&gt;If there is a significant outage, you will receive a full explanation of the circumstances and what measures will be taken to prevent a recurrence.&lt;/p&gt;
  
  &lt;p&gt;If the site ceases operation, you will receive an opportunity to download your stored data in a format suitable for import into other bookmarking services.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, if you too have been burned by Bookmarks2's incompetence, head over to &lt;a href="http://pinboard.in"&gt;Pinboard&lt;/a&gt; and grab an account.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Symphony and Nginx Rewrite Rules</title>
      <link>http://intraspirit.net/scratchpad/symphony-and-nginx-rewrite-rules/</link>
      <pubDate>Thu, 02 Jul 2009 22:01 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/symphony-and-nginx-rewrite-rules/</guid>
      <description>&lt;p&gt;Before I started working on this website, I had switched my server over to Nginx. I originally installed it as an experiment and something new to toy with, but it quickly grew on me. Configuration was a snap, something that was never the case with Apache, and &lt;a href="http://blog.phusion.nl/2009/04/16/phusions-one-year-anniversary-gift-phusion-passenger-220/"&gt;it had Passenger&lt;/a&gt;. Never having much use for the extensive modules that are available for Apache, I decided to keep it.&lt;/p&gt;

&lt;p&gt;I quickly ran into a problem, however, when I started the development of the new Intraspirit. I liked what Symphony had to offer, but the rewrite rules seeded at installation were in an .htaccess file for Apache. &lt;strong&gt;Ouch.&lt;/strong&gt; I spent a few nights reading the &lt;a href="http://wiki.nginx.org/Main"&gt;Nginx Wiki&lt;/a&gt; to learn some Nginx rewrite-foo.&lt;/p&gt;

&lt;p&gt;Here's what I ended up with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
server {
  listen 80; 
  server_name intraspirit.net;
  root /path/to/public/;
  index index.php;

  access_log /path/to/access.log;
  error_log /path/to/error.log;

  location / { 
    if (!-e $request_filename) { rewrite ^(.*[^/])$ $1/ permanent; }
    if (!-e $request_filename) {
      rewrite ^/symphony/(.*)$ /symphony/index.php?page=$1 last;
      rewrite ^/(.*)/(?:?(.*))?$ /index.php?page=$1$2 last;
    }   
  }   

  location ~ .php$ {
    try_files $uri @symphony;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/public/$fastcgi_script_name;
    fastcgi_param  QUERY_STRING     $query_string;
    include        /opt/nginx/conf/fastcgi_params;
  }   

  location @symphony {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME  /path/to/public/index.php;
    fastcgi_param  QUERY_STRING     page=$request_uri;
    include        /opt/nginx/conf/fastcgi_params;
  }   
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/139873/"&gt;Gist #139873&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have purposely omitted the JIT image manipulation rules from my configuration, because I don't have much need for that extension. If anyone has adjustments that they would make to this configuration, please let me know.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hi. I've Returned.</title>
      <link>http://intraspirit.net/scratchpad/hi-ive-returned/</link>
      <pubDate>Thu, 25 Jun 2009 23:28 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/hi-ive-returned/</guid>
      <description>&lt;p&gt;It is with great happiness that I welcome you to what I hope will be the start of a new age for Intraspirit, myself and my career as a developer. It has been nearly 4 years since I had a decent home of my own, and I can definitely say that it's good to be back. I don't want to bore you with the details or glorious statements of the future, because I've already written some of them in &lt;a href="/about/"&gt;other places&lt;/a&gt;, but let me just say this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hello and Welcome to (the new) Intraspirit.&lt;/strong&gt; Let the tomfoolery begin!&lt;/p&gt;

&lt;p&gt;P.S. I'd like to thank to my friend and colleague &lt;a href="http://elysiumburns.com"&gt;Sean&lt;/a&gt; for helping me get this design right—radical, sir.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Embracing the Stand-up Desk Lifestyle</title>
      <link>http://intraspirit.net/scratchpad/embracing-the-stand-up-desk-lifestyle/</link>
      <pubDate>Mon, 22 Jun 2009 02:39 -0500</pubDate>
      <guid>http://intraspirit.net/scratchpad/embracing-the-stand-up-desk-lifestyle/</guid>
      <description>&lt;p&gt;Several months ago I began having intense back pain in the evenings. Wondering why I was in pain, I began to closely investigate my daily routine. After about two days of researching myself, I found the culprit: It was because I was sitting all day.&lt;/p&gt;

&lt;p&gt;Being a programmer, I often fall into the trap losing myself in concentration. "Getting into the zone", as it is commonly called, has very profound affects on the way my attention is spent. There have been many days where I will simply forget to eat because I was in the zone. Unfortunately, this state of concentration causes another problem: bad posture. As my mind would slowly drift into the Nirvana of ones and zeros, I would lose track of the way my body was supporting itself—leaning on things and slouching all over the place.&lt;/p&gt;

&lt;p&gt;Convinced that bad posture was my problem, I began searching the web for answers. I stumbled across a &lt;a href="http://www.37signals.com/svn/posts/1001-standing-versus-sitting"&gt;post&lt;/a&gt; by Jamis Buck outlining his decision to start standing while working. I thought what he had done was a reasonable solution for the problem so I scavenged my apartment for books and boxes to create a makeshift desk of my own. After about 4 hours into the experiment, I realized that I liked it. So began the arduous task of finding a decent stand-up desk.&lt;/p&gt;

&lt;p&gt;Now, you may be thinking that this part would be fairly easy, and it mostly is. However, for a frugal guy like me that wasn't sure that he would even stick with the whole stand-up desk idea, it proved to be fairly difficult. I looked around at websites selling very large, and heavy, wooden structures that cost thousands of dollars. Those definitely weren't for me so I took a trip to the Charlotte Ikea in hopes of finding salvation. What I ended up building cost around $200.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://intraspirit.net/image/stand-up-desk.jpg" alt="Vika Grevsta with Vika Byske legs" class="pulled-one framed" /&gt;&lt;/p&gt;

&lt;p&gt;The desk you see above is an Vika Grevsta table top with four Vika Byske legs. After setting the legs how I need them, which for me is around 42" in length, and nudging the bottoms of the legs outward towards each corner to stabilize it, I can say that I'm happy. I've spent about a month with this desk now, and I can easily see positive differences in my productivity, stamina and when I decide when to take breaks. Just in case I do get tired of standing and need to sit and rest, I have a barstool with a back tucked away under the desk.&lt;/p&gt;

&lt;p&gt;Now, go try the stand-up lifestyle for yourself.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
