<?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"
	>

<channel>
	<title>Tim Dysinger</title>
	<atom:link href="http://dysinger.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://dysinger.net</link>
	<description>Notes on Life, 'Puters and Hawaii</description>
	<pubDate>Tue, 17 Jun 2008 03:07:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Keeping your git projects up to date with sake</title>
		<link>http://dysinger.net/2008/06/07/keeping-your-git-projects-up-to-date-with-sake/</link>
		<comments>http://dysinger.net/2008/06/07/keeping-your-git-projects-up-to-date-with-sake/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 23:42:53 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Git]]></category>

		<category><![CDATA[sake]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=94</guid>
		<description><![CDATA[I have been keeping all my projects in git repositories regardless if they came from git or svn.  I probably have about 3 dozen projects at any one time in my ~/Projects dir.  Keeping them all up to date is a PITA.  So I wrote a little sake task to find them [...]]]></description>
			<content:encoded><![CDATA[<p>I have been keeping all my projects in git repositories regardless if they came from git or svn.  I probably have about 3 dozen projects at any one time in my ~/Projects dir.  Keeping them all up to date is a PITA.  So I wrote a little sake task to find them all and update them.  Here it is:</p>
<pre>desc "Recursively update your git projects"
task "git:update" do
  `find #{File.expand_path('.')} -name .git -type d`.collect { |d|
    d.chomp("/.git\n")
  }.each do |prj|
    puts(prj)
    Dir.chdir(prj)
    `git config --get svn-remote.svn.url`.empty? ?
      `git remote update` : `git svn fetch`
  end
end</pre>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/06/07/keeping-your-git-projects-up-to-date-with-sake/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deploying with Capistrano, Git and SSH-Agent</title>
		<link>http://dysinger.net/2008/04/30/deploying-with-capistrano-git-and-ssh-agent/</link>
		<comments>http://dysinger.net/2008/04/30/deploying-with-capistrano-git-and-ssh-agent/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 21:16:50 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Git]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=83</guid>
		<description><![CDATA[I deploy Rails and Ruby projects using capistrano and I manage my source control with git.  Git is most typically accessed with a ssh key and not username-password.  There is a way to proxy your key through your deploy server making it possible for capistrano to retrieve the code from a 3rd party [...]]]></description>
			<content:encoded><![CDATA[<p>I deploy Rails and Ruby projects using capistrano and I manage my source control with git.  Git is most typically accessed with a ssh key and not username-password.  There is a way to proxy your key through your deploy server making it possible for capistrano to retrieve the code from a 3rd party (gitub or gitorious or ssh-enabled git-server).  It&#8217;s called ssh agent.  Not many people use it but it&#8217;s super handy and comes built in to most flavs of Linux and OS X Leopard.</p>
<p>Assuming you have already put your desktop public key in the git server&#8217;s authorized keys or on github/gitorious you have put your ssh public key in your profile.  What you do is this:</p>
<pre>
echo &gt;$HOME/.ssh/config &lt;&lt;\EOF
Host *.mydeployservers.com
  ForwardAgent yes
Host *.myotherdeployservers.com
  ForwardAgent yes
Host *
  ForwardAgent no
EOF
chmod -R go-rwsx $HOME/.ssh
</pre>
<p>Now SSH-Agent is setup to forward your keys through the deploy server and and you are ready to do some deploying.  You may need to login to the deploy server once and try to login to the git server (github or the like) one time to accept the servers ssh key and stash in the deploy server/user&#8217;s local &#8220;known_hosts&#8221; file.</p>
<pre>
ssh myuser@mydelpoyserver.com
# (and from there)
ssh git@github.com
# the login will fail but the important part is accepting the server's ssh key
exit
</pre>
<p>Now back on your desktop you can now deploy from github or the like without &#8220;deploy keys&#8221;.</p>
<pre>
ssh-add ; #only need to do this once per login to your desktop
cap deploy
</pre>
<p> <img src='http://dysinger.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/30/deploying-with-capistrano-git-and-ssh-agent/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Replacing Braid or Piston (for Git) with 40 lines of Rake</title>
		<link>http://dysinger.net/2008/04/29/replacing-braid-or-piston-for-git-with-40-lines-of-rake/</link>
		<comments>http://dysinger.net/2008/04/29/replacing-braid-or-piston-for-git-with-40-lines-of-rake/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 13:21:12 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Git]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=91</guid>
		<description><![CDATA[I was playing around with Braid and Piston for Git and didn&#8217;t like either of them.  I didn&#8217;t feel like Piston was ready for Git and Braid seemed to complex.  I just wanted git subtrees.  Braid is doing the same thing but with more code around it.  I like simple.  It actually turns [...]]]></description>
			<content:encoded><![CDATA[<p>I was playing around with Braid and Piston for Git and didn&#8217;t like either of them.  I didn&#8217;t feel like Piston was ready for Git and Braid seemed to complex.  I just wanted git subtrees.  Braid is doing the same thing but with more code around it.  I like simple.  It actually turns out that Git has all the tools built in to do sub-tree merging and updating.  It&#8217;s really easy with a few sake (or rake) tasks.  I am using this on a rails project with more than a dozen plugins and vendor/rails.</p>
<p><em><strong>Update 6/7: I added a diff task and corrected a typo</strong></em></p>
<pre># Git Sub-Trees Sake Tasks
# http://rubyurl.com/BwnY < - Read about the technique vs submodules
#
# This works super good with Rails plugins or when you are actively working
# on two related projects.
#
# Add these tasks with:
#   sake -i http://pastie.caboo.se/213492.rb
#
# Example Usage:
#
#   sake git:subtree:remote
#     Git Repo Url? git://github.com/mislav/will_paginate.git
#     Remote Name? will_paginate
#   sake git:subtree:merge
#     Branch? will_paginate/tags/2.2.2
#     Destination? vendor/plugins/will_paginate
#   git commit -m 'merged in new 2.2.2 will_paginate'
#
# From time to time update your remotes:
#   git remote update
#   -or-
#   git fetch will_paginate
#
# View diffs:
#
#   sake git:subtree:diff
#     Branch? will_paginate/tags/2.2.3
#
# Merge in updates:
#
#   sake git:subtree:update
#     Branch? will_paginate/tags/2.2.3
#   git commit -m 'merged in new 2.2.3 will_paginate'

desc 'Add an external project as a remote'
task 'git:subtree:remote' do
  require "readline"
  url = begin
    print "Git Repo Url? "
    Readline.readline.chomp
  end
  name = begin
    print "Remote Name? "
    Readline.readline.chomp
  end
  `git remote add #{name} #{url}`
  `git config remote.#{name}.fetch refs/heads/*:refs/remotes/#{name}/*`
  `git config --add remote.#{name}.fetch refs/tags/*:refs/remotes/#{name}/tags/*`
  `git config remote.#{name}.tagopt --no-tags`
  `git fetch #{name}`
end

desc 'Merge an external project as a sub-tree'
task 'git:subtree:merge' do
  require "readline"
  branch = begin
    print "Branch? "
    Readline.readline.chomp
  end
  dest = begin
    print "Destination? "
    Readline.readline.chomp
  end
  `git merge --squash -s ours --no-commit #{branch}`
  `git read-tree --prefix=#{dest} -u #{branch}`
end

desc 'Update an existing subtree project'
task 'git:subtree:update' do
  require "readline"
  branch = begin
    print "Branch? "
    Readline.readline.chomp
  end
  `git merge --squash -s subtree --no-commit #{branch}`
end

desc 'Show subtree diff against remote'
task 'git:subtree:diff' do
  require "readline"
  branch = begin
    print "Branch? "
    Readline.readline.chomp
  end
  puts `git-diff-tree -p #{branch}`
end</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/29/replacing-braid-or-piston-for-git-with-40-lines-of-rake/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Public Ubuntu Hardy Amazon EC2 Image (AMI) Now Available</title>
		<link>http://dysinger.net/2008/04/27/public-ubuntu-hardy-amazon-ec2-image-ami-now-available/</link>
		<comments>http://dysinger.net/2008/04/27/public-ubuntu-hardy-amazon-ec2-image-ami-now-available/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 22:34:02 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[ec2]]></category>

		<category><![CDATA[Virtualization]]></category>

		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=90</guid>
		<description><![CDATA[I have prepared a new Ubuntu Hardy Amazon AMI image(s).  They are in my ubuntu-ami bucket.  I&#8217;ll start with a &#8220;small&#8221; ec2 instance image.  The public AMI is &#8220;ami-4f7a9f26&#8243;.  It is meant to be started with AKI &#8220;aki-9b00e5f2&#8243; (which comes with fuse).  The image is a bare-bones ubuntu hardy standard [...]]]></description>
			<content:encoded><![CDATA[<p>I have prepared a new Ubuntu Hardy Amazon AMI image(s).  They are in my ubuntu-ami bucket.  I&#8217;ll start with a &#8220;small&#8221; ec2 instance image.  The public AMI is &#8220;ami-4f7a9f26&#8243;.  It is meant to be started with AKI &#8220;aki-9b00e5f2&#8243; (which comes with fuse).  The image is a bare-bones ubuntu hardy standard install.  You can update it with the software you need.  I will have 64-bit versions available early next week.  The emphasis on my images is clean and tidy.  I don&#8217;t install a bunch of crud that you may or may not need.  It&#8217;s just the basics with a userdata-boot-hook (give the image a bash script at boot-time as userdata).</p>
<p>Here is how I created the image:</p>
<pre>
# Bootstrap
mkdir /mnt/ubuntu
debootstrap --arch i386 hardy /mnt/ubuntu

# Start
cat /proc/mounts >/mnt/ubuntu/etc/mtab
mount -o rbind /proc /mnt/ubuntu/proc
mount -o rbind /dev /mnt/ubuntu/dev
mount -o rbind /sys /mnt/ubuntu/sys
cat /etc/resolv.conf >/mnt/ubuntu/etc/resolv.conf
chroot /mnt/ubuntu /bin/bash

# Hostname
echo '127.0.0.1 localhost' >/etc/hosts

# Tidy
rm -rf tmp &#038;&#038; ln -sf var/tmp tmp
rm -rf opt &#038;&#038; ln -sf usr/local opt

# Locale
localedef -i en_US -c -f UTF-8 en_US.UTF-8
echo 'LANG="en_US.UTF-8"' >/etc/default/locale

# Update
cat >/etc/apt/sources.list < <\EOF
deb http://us.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
EOF
gpg --keyserver wwwkeys.pgp.net --recv-keys A70DAF536070D3A1
gpg --armor --export A70DAF536070D3A1 | apt-key add -
cat >/etc/apt/sources.list.d/debian.list < <\EOF
deb http://http.us.debian.org/debian/ unstable main contrib non-free
deb-src http://http.us.debian.org/debian/ unstable main contrib non-free
deb http://http.us.debian.org/debian/ experimental main contrib non-free
deb-src http://http.us.debian.org/debian/ experimental main contrib non-free
EOF
cat >/etc/apt/apt.conf < <\EOF
APT::Default-Release "hardy";
EOF
apt-get update
apt-get install -y libc6-xen
rm -rf /lib/tls
apt-get upgrade -y
apt-get install -y ubuntu-standard

# Modules
wget -O - \
  http://s3.amazonaws.com/ec2-downloads/ec2-modules-2.6.18-xenU-ec2-v1.0-i686.tgz | \
  tar --no-same-owner -xzC /
depmod -a
echo 'loop' >>/etc/modules

# Color
perl -p -i -e &#8217;s/xterm-color/xterm\*color/g&#8217; /etc/skel/.bashrc ~/.bashrc
apt-get install -y ncurses-term 

# TTY
rm -f /etc/event.d/tty[2-6]

# Network
shadowconfig on
usermod -p \
  `dd if=/dev/urandom count=50 2> /dev/null | md5sum | cut -d &#8221; &#8221; -f1-1` \
  root
mkdir /etc/skel/.ssh
chmod 600 /etc/skel/.ssh
cp -r /etc/skel/.ssh /root
apt-get install -y ntp openssh-server
cat >/etc/ssh/sshd_config < <\EOF
Protocol 2
StrictModes yes
MaxStartups 10:30:60
Ciphers aes256-cbc,aes256-ctr
PasswordAuthentication no
ChallengeResponseAuthentication no
Subsystem sftp /usr/lib/openssh/sftp-server
UseDNS no
EOF
cat >/etc/network/interfaces < <\EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF

# Boot
cat >/etc/rc.local < <\EOF
#!/bin/sh -e
# Root SSH Public Key
mkdir -p /root/.ssh >/dev/null 2>&#038;1
wget -q -O - http://169.254.169.254/2008-02-01/meta-data/public-keys/0/openssh-key \
  >/root/.ssh/authorized_keys
chmod -R go-rwsx /root
# Userdata Shell Script
wget -q -O - http://169.254.169.254/2008-02-01/user-data | sh
exit 0
EOF

# Fstab
cat >/etc/fstab < <\EOF
/dev/sda1 /    ext3 user_xattr 0 1
/dev/sda2 /mnt ext3 user_xattr 0 2
/dev/sda3 swap swap sw         0 0
EOF

# EC2 tools
apt-get install -y symlinks unzip ruby libopenssl-ruby1.8 curl ca-certificates
cd /tmp
wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
cd /usr/local
unzip /tmp/ec2-ami-tools.zip
ln -sf `find . -type d -name ec2-ami-tools*` ec2-ami-tools
chmod -R go-rwsx ec2*
rm -rf /tmp/ec2*

# Bundle
rm /bin/sh &#038;&#038; ln -s /bin/bash /bin/sh ; # make bash the default for ec2
modprobe loop ; # bundle image needs this
cat >/usr/local/sbin/image < <\EOF
#!/bin/bash
export EC2_AMITOOL_HOME=/usr/local/ec2-ami-tools
PATH=$EC2_AMITOOL_HOME/bin:$PATH
BUNDLE=`date '+%y%m%d%H%M%S'`
ec2-bundle-vol -r i386 -u $AMAZON_USER_ID --fstab /etc/fstab \
  -k $EC2_PRIVATE_KEY -c $EC2_CERT -b -d /mnt -s 10240 -e /root/.ssh -p $BUNDLE
ec2-upload-bundle -b $HOSTNAME -m /mnt/$BUNDLE.manifest.xml \
  -a $AMAZON_ACCESS_KEY_ID -s $AMAZON_SECRET_ACCESS_KEY
rm -rf /mnt/$BUNDLE* /mnt/img-mnt
EOF
chmod 700 /usr/local/sbin/image

export HOSTNAME=ubuntu-ami
apt-get clean
apt-get autoclean
apt-get autoremove
symlinks -cdrsv /
rm -rf /var/tmp/* ~/.bash_history
image

# Register &#038; make the ami public (on another machine)
ec2-register $HOSTNAME/XXXXXXXXXXXXX.manifest.xml
ec2-modify-image-attribute ami-XXXXXXX --launch-permission -a all

# Run
ec2-run-instances \
  -K ~/.amazon/pk.pem -C ~/.amazon/cert.pem \
  -k mykey --kernel aki-9b00e5f2 \
  ami-XXXXXXXXXXX
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/27/public-ubuntu-hardy-amazon-ec2-image-ami-now-available/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dmitri Gaskin Rocks</title>
		<link>http://dysinger.net/2008/04/25/dmitri-gaskin-rocks/</link>
		<comments>http://dysinger.net/2008/04/25/dmitri-gaskin-rocks/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 02:13:57 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@home]]></category>

		<category><![CDATA[kids]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=89</guid>
		<description><![CDATA[Kids amaze me.  Here&#8217;s a video of Dmitri Gaskin giving a Google Tech Talk on JQuery.  Good job Dmitri!  You remind me of myself when I was 12 except, when I was a kid, 6502 assembly language and Commodore&#8217;s where the in thing for kids and not web-programming.
The only problem I have [...]]]></description>
			<content:encoded><![CDATA[<p>Kids amaze me.  Here&#8217;s a <a href="http://video.google.com/videoplay?docid=-978395286272895697">video</a> of Dmitri Gaskin giving a <a href="http://research.google.com/video.html">Google Tech Talk</a> on <a href="http://jquery.com/">JQuery</a>.  Good job Dmitri!  You remind me of myself when I was 12 except, when I was a kid, <a href="http://en.wikipedia.org/wiki/MOS_Technology_6502">6502</a> <a href="http://en.wikipedia.org/wiki/Assembly_language">assembly language</a> and <a href="http://en.wikipedia.org/wiki/Commodore_64">Commodore</a>&#8217;s where the in thing for kids and not web-programming.</p>
<p>The only problem I have with Dmitri is that he likes PHP and Drupal.  He&#8217;s only 12 though.  He&#8217;ll grow out of it&#8230;  <img src='http://dysinger.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/25/dmitri-gaskin-rocks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rack: An API for Web Servers and Ruby Frameworks</title>
		<link>http://dysinger.net/2008/04/25/rack-an-api-for-web-servers-and-ruby-frameworks/</link>
		<comments>http://dysinger.net/2008/04/25/rack-an-api-for-web-servers-and-ruby-frameworks/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 00:11:58 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=87</guid>
		<description><![CDATA[
In today’s ruby web application landscape, every framework developer is writing his/her own handlers for every server he/she wants to support. This results in semi-duplicate code, if not for the web-server developer then for the framework-developer. This is the pain-point that Rack aims to solve. Rack proposes “why not have some common ground?” Java did [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>In today’s ruby web application landscape, every framework developer is writing his/her own handlers for every server he/she wants to support. This results in semi-duplicate code, if not for the web-server developer then for the framework-developer. This is the pain-point that <a href="http://rack.rubyforge.org/" target="_blank">Rack</a> aims to solve. Rack proposes “why not have some common ground?” Java did this with the Servlet <span class="caps">API 10</span> years ago. Python did this with <span class="caps">WSGI 5</span> years ago.</p>
<p>By leveraging Rack, framework developers and web-server developers gain access to one another without having to write special adapters. Today that’s WEBrick, Mongrel, <span class="caps">CGI</span>, Ebb, Fuzed &amp; Thin for web-servers and Rails, Camping, Coset, Halcyon, Maveric, Merb, Racktools::SimpleApplication, Ramaze, Sinatra &amp; Vintage for web-frameworks. (this will undoubtably be outdated by conference time). Tomorrow every new web-server and web-framework that supports Rack can be used together. You’ll be able to pick and choose the best web-server for you without changing your favorite web-framework and vice-versa.</p>
<p>“What do Rails developers really stand to gain today by leveraging Rack?” It might be the ability to run several “rackable” applications side by side inside a single web-server instance. It might be the possibility to leverage or stack applications. You can intercept requests, modify them and pass them through to other handlers. You can also have multiple rackable applications sitting next to each other that comprise one user-facing application. Don’t like file uploads with Rails? Use another web framework or the Rack <span class="caps">API</span> directly to write it and place it along side your Rails app in the same application. Want to use single-sign-on for 3 Rails apps? No problem. Rack makes it easy to tie apps together.</p>
<p>Rack Hello World ( gem install rack &amp; mongrel &amp; visit http://localhost:3000 )</p>
<pre>
%w(rubygems rack).each { |dep| require dep }
Rack::Handler::Mongrel.run(
  lambda { |e| [
      301,
      { ‘Location’ =&gt; ‘http://rubyurl.com/g6L’ },
      ’:P’
    ]
  },
  :Port =&gt; 3000
)
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/25/rack-an-api-for-web-servers-and-ruby-frameworks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Karma Yoga in Software Engineering</title>
		<link>http://dysinger.net/2008/04/22/karma-yoga-in-software-engineering/</link>
		<comments>http://dysinger.net/2008/04/22/karma-yoga-in-software-engineering/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 03:22:48 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[software process teams]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=82</guid>
		<description><![CDATA[I work in software development and it is a very competitive business.  At times I have to catch myself, when I feel an emotion, and ask myself &#8220;Why?&#8221;.  Why am I being competitive?  Why am I seeking recognition?  Why am I wanting control?  Is my argument on the design the best for the team?  Are [...]]]></description>
			<content:encoded><![CDATA[<p>I work in software development and it is a very competitive business.  At times I have to catch myself, when I feel an emotion, and ask myself &#8220;Why?&#8221;.  Why am I being competitive?  Why am I seeking recognition?  Why am I wanting control?  Is my argument on the design the best for the team?  Are my motivations the best for the project?</p>
<p>In reading about <a href="http://en.wikipedia.org/wiki/Karma_Yoga" target="_blank">Karma Yoga</a>, I realize that this is exactly what software developers need to do when writing software.  Karma Yoga means &#8220;discipline of action&#8221; and is based on the teachings of the Bhagwat Geeta, a sacred Sanskrit scripture of Hinduism.</p>
<p>Karma Yoga is described as a way of acting, thinking and willing by which one does one&#8217;s duty without consideration of personal selfish desires, likes or dislikes. Acting without being attached to the fruits of one&#8217;s deeds.  In software this is doing what needs to be done for the betterment of the project and team without attaching your ego and self-worth to the code you write or the contribution you make.</p>
<p>When this mindset is taken on by software developers, colloboration, camaraderie and team-work increases while tensions, egos, stress, competition and caustic attitudes decrease.  It has to be consciencely chosen, but this is something to be strived for on teams.</p>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/22/karma-yoga-in-software-engineering/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dear VMWare, So Long and Thanks for all the Fish</title>
		<link>http://dysinger.net/2008/04/18/dear-vmware-so-long-and-thanks-for-all-the-fish/</link>
		<comments>http://dysinger.net/2008/04/18/dear-vmware-so-long-and-thanks-for-all-the-fish/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 04:07:19 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Mac Virtualization]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=81</guid>
		<description><![CDATA[I downloaded and gave VirtualBox a twirl this week.  For those of you who haven&#8217;t heard of it, VirtualBox is a drop-in free and open source replacement for VMWare Fusion or Parallels.  Did I mention it&#8217;s open source and free?  Here&#8217;s the subversion repository.
Update 4/24/2008: I purchased VMWare Fusion last year and my rebate check [...]]]></description>
			<content:encoded><![CDATA[<p>I downloaded and gave <a href="http://virtualbox.org/" target="_blank">VirtualBox</a> a twirl this week.  For those of you who haven&#8217;t heard of it, VirtualBox is a drop-in free and open source replacement for <a href="http://www.vmware.com/products/fusion/" target="_blank">VMWare Fusion</a> or <a href="http://www.parallels.com/en/products/desktop/" target="_blank">Parallels</a>.  Did I mention it&#8217;s <em><strong>open source and free</strong></em>?  Here&#8217;s the <a href="http://virtualbox.org/svn/vbox" target="_blank">subversion repository</a>.</p>
<p><em><strong>Update 4/24/2008: </strong></em>I purchased VMWare Fusion last year and my rebate check never came.  Peter contacted me and made sure my rebate was on the way.  There&#8217;s nothing wrong with VMWare.  It&#8217;s a fine tool.  I just always have a leaning towards open source where ever possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/18/dear-vmware-so-long-and-thanks-for-all-the-fish/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing Apache and mod_rails on Mac OS X Leopard</title>
		<link>http://dysinger.net/2008/04/14/installing-apache-and-mod_rails-on-mac-os-x-leopard/</link>
		<comments>http://dysinger.net/2008/04/14/installing-apache-and-mod_rails-on-mac-os-x-leopard/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 04:33:17 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=80</guid>
		<description><![CDATA[Phusion Passenger ( mod_rails ) is out so I thought I would give it a twirl.  The mod_rails site has some install notes but it doesn&#8217;t go far enough.  However, once you do the install and get used to it, it is a rather friendly setup.  I can see it being a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.modrails.com/">Phusion Passenger</a> ( <a href="http://github.com/FooBarWidget/passenger/tree/master">mod_rails</a> ) is out so I thought I would give it a twirl.  The mod_rails site has some <a href="http://www.modrails.com/install.html">install notes</a> but it doesn&#8217;t go far enough.  However, once you do the install and get used to it, it is a rather friendly setup.  I can see it being a big boost to rails shared-hosting.  The rails instances are scaled up and down on the fly behind apache so no static pre-configured pools of mongrel with monit watching them needed.  Here&#8217;s how I got it going on the mac:<br />
<strong><em>Update 6/16: Moved instructions to MacPorts instead of raw install</em></strong><br />
<code><br />
# Install macports + macports ruby + macports rubygems<br />
sudo port install apache2 +preforkmpm<br />
export APACHE=/opt/local/apache2<br />
export PATH=$APACHE/bin:$PATH<br />
sudo gem install rails passenger<br />
export VERS=`passenger-config --version`<br />
sudo passenger-install-apache2-module<br />
sudo cp $APACHE/conf/httpd.conf.sample $APACHE/conf/httpd.conf<br />
sudo chgrp -R admin $APACHE/conf<br />
sudo chmod -R g+w $APACHE/conf<br />
sudo chmod 2775 $APACHE/conf $APACHE/conf/extra<br />
echo "Include conf/extra/httpd-rails.conf" &gt;&gt; $APACHE/conf/httpd.conf<br />
cat &gt;$APACHE/conf/extra/httpd-rails.conf &lt;&lt;EOF<br />
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-$VERS/ext/apache2/mod_passenger.so<br />
RailsSpawnServer /opt/local/lib/ruby/gems/1.8/gems/passenger-$VERS/bin/passenger-spawn-server<br />
RailsRuby /opt/local/bin/ruby<br />
NameVirtualHost *<br />
&lt;VirtualHost *&gt;<br />
ServerName myapp.com<br />
ServerAlias *.myapp.com<br />
RailsEnv development<br />
# For each webapp<br />
DocumentRoot /Users/me/Projects/myapp/public<br />
&lt;Directory /Users/me/Projects/myapp/public&gt;<br />
Allow from all<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
EOF<br />
sudo $APACHE/apachectl start<br />
exit</code></p>
<p>That&#8217;s it.  You can see that you can add more &lt;VirtualHost *&gt; entries for other applications.  You need to put www.myapp.com hostname on the end of the &#8220;localhost&#8221; line in /etc/hosts.</p>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/14/installing-apache-and-mod_rails-on-mac-os-x-leopard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing StGit (Stacked Git) On Mac OS X Leopard</title>
		<link>http://dysinger.net/2008/04/05/installing-stgit-stacked-git-on-mac-os-x-leopard/</link>
		<comments>http://dysinger.net/2008/04/05/installing-stgit-stacked-git-on-mac-os-x-leopard/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 23:11:13 +0000</pubDate>
		<dc:creator>dysinger</dc:creator>
		
		<category><![CDATA[@work]]></category>

		<category><![CDATA[Mac Git]]></category>

		<guid isPermaLink="false">http://dysinger.net/?p=71</guid>
		<description><![CDATA[I wanted to try out stacked git for maintaining patches.  Here is how I did it on my mac.

git clone http://homepage.ntlworld.com/cmarinas/stgit.git
cd stgit
git checkout -b stable origin/stable
sudo python setup.py install --prefix=/usr/local

Here is some resources to get started using stacked git.

StGit Home Page
StGit Tutorial
Crash Course

]]></description>
			<content:encoded><![CDATA[<p>I wanted to try out stacked git for maintaining patches.  Here is how I did it on my mac.<br />
<code><br />
git clone http://homepage.ntlworld.com/cmarinas/stgit.git<br />
cd stgit<br />
git checkout -b stable origin/stable<br />
sudo python setup.py install --prefix=/usr/local<br />
</code><br />
Here is some resources to get started using stacked git.</p>
<ul>
<li><a href="http://procode.org/stgit/">StGit Home Page</a></li>
<li><a href="http://wiki.procode.org/cgi-bin/wiki.cgi/StGIT_Tutorial">StGit Tutorial</a></li>
<li><a href="http://git.or.cz/course/stgit.html">Crash Course</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dysinger.net/2008/04/05/installing-stgit-stacked-git-on-mac-os-x-leopard/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
