<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Life's End</title>
    <link>http://lifesend.com/</link>
    <description>Worship</description>
    <language>en-us</language>
    <item>
      <title>fmodlog</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 0 figures 
fig ids: 
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Fmodlog&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;File modification tracking tool (this kind of tool was required before git)&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
Download: &lt;a href='/static/file/fmodlog.rb'&gt;fmodlog.rb&lt;/a&gt;&lt;pre class="prettyprint"&gt;
#!/usr/bin/ruby
#title:File Modification, backup and generation Log
#author:Aaron Radke
#date:2007-10-01
#		add include list
#date:2007-09-27
#		add skip_list
#		add dir_list
#		clean up the options file
#date: 2007-09-20
#		add file backup functions
#date: 2007-08-23
#  rubify for windows
#-------------
require 'find'
require 'fileutils'
   
#constants
HOME=ENV['userprofile']
LOG="#{HOME}/Library/Logs/fmodlog.log"
DIR_LIST = ["#{HOME}/Desktop","#{HOME}/My Documents","#{HOME}/bin"]
INCLUDE_LIST = ['\.rb$','\.aao$','\.txt','\.doc','\.ppt','\.html','\.vsd','\.xls','\.h','\.c','\.cpp','\.java','\.pde']
SKIP_LIST = ['\bTemp\b','\bLocal Settings','\bLogs\b','\.LOG$',"MS_HTML_Model_1_US_Only","no_sync"]
DO_BACKUP = true
BACKUP_DIR = "H:/backup"
PAUSE_MINUTES=5
   
      
def backup(filename)
   INCLUDE_LIST.each{|p|
      if filename =~ /#{p}/i
         copyToDateFolder(filename,BACKUP_DIR)
      end
   }
end
   
def copyToDateFolder(file,dir)
   now = Time.new()
   datestamp = now.strftime("%Y-%m-%d")
   date_dir = "#{dir}/#{datestamp}"
   if ! File.exists?(date_dir)
      Dir.mkdir(date_dir)
   end
   FileUtils.cp(file,date_dir)
end
   
      
puts "fmodlog.rb scanning every #{PAUSE_MINUTES} minutes..."
puts "==========="
pause_seconds = PAUSE_MINUTES*60
begin
   #init
   now = Time.new()
   datestamp = now.strftime("%Y-%m-%d %H:%M:%S")
   filecount = 0
   puts "------#{datestamp}----"
      
   logfile = File.open(LOG,"a")
   Find.find(*DIR_LIST) do |filename|
      SKIP_LIST.each{|p|
         if filename =~ /#{p}/i
            puts "Skip: #{filename}"
            Find.prune
            next
         end
      }
         
      if File.file?(filename)
         filecount = filecount.next
         file = File.stat(filename)
         if file.mtime &gt; (now - pause_seconds)
            puts "#{file.mtime.strftime("%Y-%m-%d %H:%M:%S")} #{filename}"
            logfile.puts "#{datestamp} #{filename}"
            backup(filename) if DO_BACKUP
         end
         # print "#{filecount}, " if filecount % 1000 == 0
      end
   end
   logfile.close
   puts "Sleeping #{PAUSE_MINUTES} minutes after checking #{filecount} files ..."
end while sleep(pause_seconds)
   
&lt;/pre&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/fmodlog&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/fmodlog&lt;/a&gt;</guid>
    </item>
    <item>
      <title>rgrep</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 0 figures 
fig ids: 
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Rgrep&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;A ruby script to give some grep like capabilities where grep is not available&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
Download: &lt;a href='/static/file/rgrep.rb'&gt;rgrep.rb&lt;/a&gt;&lt;pre class="prettyprint"&gt;
dirname = ARGV[0]
regexp_string = ARGV[1]
def search_file(file,regexp)
   f = File.open(file,'r')
   found = false
#	puts file
   f.each{|line|
      if line.match(regexp)
         if not found
            puts "\n#{file}"
         end
         puts "\t" + line
         found = true
      end
   }
   f.close
end
   
require 'find'
Find.find(dirname) do |file|
   print '.'
   search_file(file,/#{regexp_string}/) if File.file?(file)
end
   
      
&lt;/pre&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/rgrep&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/rgrep&lt;/a&gt;</guid>
    </item>
    <item>
      <title>rhttpd</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 0 figures 
fig ids: 
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Rhttpd&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;A really tiny ruby script to start a webserver with cgi support&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
Download: &lt;a href='/static/file/cgi_handler.rb'&gt;cgi_handler.rb&lt;/a&gt;&lt;pre class="prettyprint"&gt;
require 'webrick'
include WEBrick
   
def start_webrick(config = {})
   # always listen on port 8080
   config.update(:Port =&gt; 8080)
   server = HTTPServer.new(config)
   yield server if block_given?
   ['INT', 'TERM'].each {|signal|
   trap(signal) {server.shutdown}
   }
   server.start
end
   
#start_webrick(:DocumentRoot =&gt; "g:/infoproweb/webfolder/cgi-bin/ruby",:CGIInterpreter =&gt; "g:/ruby/bin/ruby.exe")
#start_webrick(:DocumentRoot =&gt; File.expand_path(".."), :CGIInterpreter =&gt; "c:/ruby/bin/ruby.exe")
   
      
start_webrick( {:CGIInterpreter =&gt; "c:/ruby/bin/ruby.exe"}) {|server|
   cgi_dir = File.expand_path('cgi')
   fh = HTTPServlet::FileHandler
   fh.add_handler("rb",HTTPServlet::CGIHandler);
   fh.add_handler("rbw",HTTPServlet::CGIHandler);
   opts = {:FancyIndexing =&gt;false}
   server.mount("/cgi", fh, "cgi", opts)
   server.mount("/", fh, ".." , opts)
}
#
&lt;/pre&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/rhttpd&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/rhttpd&lt;/a&gt;</guid>
    </item>
    <item>
      <title>Using the caps key for the control key</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 1 figures 
fig ids: Keyboard-left_keys
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Using the Caps Key for the Control Key&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;This is a way to make the caps key much more useful&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a name="fig_Keyboardleft_keys"&gt;&lt;/a&gt;&lt;a href='/static/fig/Keyboard-left_keys.jpg'&gt;&lt;img src="/static/fig/Keyboard-left_keys_500x500.png" border="none" alt="Keyboard-left_keys_500x500.png" align="center" width="500" &gt;&lt;/a&gt;&lt;!--
&lt;div class="caption"&gt;
Figure  1: none
&lt;/div&gt;
--&gt;&lt;/div&gt;&lt;p&gt;

&lt;h2&gt;&lt;a id="windows"&gt;&lt;/a&gt; Windows 
&lt;/h2&gt;
Double click the following text field to move your caps lock key to a less used key and gain a nicer control key.
&lt;p&gt;
Download: &lt;a href='/static/file/user_swap_caps_lock_as_control_caps_to_scroll.reg'&gt;user_swap_caps_lock_as_control_caps_to_scroll.reg&lt;/a&gt;&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/caps_key_for_control&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/caps_key_for_control&lt;/a&gt;</guid>
    </item>
    <item>
      <title>tag and cdt</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 0 figures 
fig ids: 
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Tag and Cdt&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;quick command line system to &lt;tt&gt;cdt [tag id]&lt;/tt&gt; or &lt;tt&gt;tag [tag id]&lt;/tt&gt; and jump around with tagged name replacements&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
Download: &lt;a href='/static/file/tag'&gt;tag&lt;/a&gt;&lt;pre class="prettyprint"&gt;
#!/usr/bin/env ruby
#title:tag
#author:Aaron Radke
#date:2008-01-30
#abstract:a simple tagging app to save snippits and retreave them back
#------------
tag_file = "#{ENV['HOME']}/.tags"
   
#puts "ARGV: #{ARGV.join(",")}"
   
key = ARGV.shift
   
if key == "-s" and ARGV.size &gt;= 2
   f = File.open(tag_file,"a")
   tag = ARGV.shift
   value = ARGV.join(" ")
   f.puts "#{tag}\t#{value}"
   f.close
   exit
end
   
unless key
   null
      puts "Requries an argument"
      exit
end
   
tag_string = &lt;&lt;HERE
ar	Aaron Radke
lifeurl	http://lifesened.com
HERE
   
      
tags = Hash.new
tag_string.split(/\n/).each{|row|
   if row =~ /^(\S+)\s+(.*)/
      tags[$1] = $2
   end
}
   
if File.exists?(tag_file)
   f = File.open(tag_file)
   f.each{|row|
      if row =~ /^(\S+)\s+(.*)/
         tags[$1] = $2
      end
   }
   f.close
end
   
if tags.key?(key)
   puts tags[key]
else
   puts "tag not defined"
end
&lt;/pre&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/cmd_tag&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/cmd_tag&lt;/a&gt;</guid>
    </item>
    <item>
      <title>vim settings</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 0 figures 
fig ids: 
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Vim Settings&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2007-11-26 &lt;br&gt;
&lt;em&gt;Vimrc file and collection of vimfile addonns&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
Download: &lt;a href='/static/file/_vimrc'&gt;_vimrc&lt;/a&gt;&lt;pre class="prettyprint"&gt;
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set ai
set spell
set ignorecase smartcase
set gfn=Lucida_Console:h9:cANSI
set selectmode=
set path+=**
   
set tabstop=2
set shiftwidth=2
   
colorscheme evening
   
      
"--------Commands to match vimized text mate
"iabbr aaotitlex title:Unset&lt;CR&gt;author:Aaron Radke&lt;CR&gt;date:&lt;C-R&gt;=strftime("%Y-%m-%d")&lt;CR&gt;&lt;CR&gt;abstract:&lt;CR&gt;grammar:aaoDoc_blogWithToc.markdown&lt;CR&gt;---------
"ab aaotitle	&lt;CR&gt;&lt;CR&gt;&lt;Esc&gt;kD!!ruby -e 'require "date"; puts "aaotitle:Unset\ndate:\#{DateTime.now}\nauthor:Aaron Radke\n---------\n"'&lt;CR&gt;kJJi
ab aaotitle	title:Unset&lt;CR&gt;author:Aaron Radke&lt;CR&gt;&lt;Esc&gt;!!ruby -e 'require "date"; puts "date:\#{DateTime.now}"'&lt;CR&gt;oabstract:&lt;CR&gt;grammar:aaoDoc_blogWithToc.markdown&lt;CR&gt;---------&lt;CR&gt;&lt;Esc&gt;6kwwDa
ab datetime &lt;CR&gt;&lt;CR&gt;&lt;Esc&gt;kD!!ruby -e 'require "date"; print DateTime.now'&lt;CR&gt;kJJi
ab datenow &lt;CR&gt;&lt;CR&gt;&lt;Esc&gt;kD!!ruby -e 'puts Time.now.strftime("\%Y-\%m-\%d")'&lt;CR&gt;kJJi
   
"-comments
vmap &lt;A-/&gt;	:rubydo $_ = $_.match(/^(\S*)\#(.*)/)?"#{$1}#{$2}":"\##{$_}"&lt;CR&gt;
nmap &lt;A-/&gt;	V:rubydo $_ = $_.match(/^(\S*)\#(.*)/)?"#{$1}#{$2}":"\##{$_}"&lt;CR&gt;
imap &lt;A-/&gt;	&lt;Esc&gt;V:rubydo $_ = $_.match(/^(\S*)\#(.*)/)?"#{$1}#{$2}":"\##{$_}"&lt;CR&gt;a
   
"-execute the current file
map &lt;A-r&gt;	:!start %&lt;CR&gt;&lt;CR&gt;
imap &lt;A-r&gt;	&lt;Esc&gt;:!start %&lt;CR&gt;&lt;CR&gt;a
   
"-save
map &lt;A-s&gt;	:w&lt;CR&gt;
imap &lt;A-s&gt;	&lt;Esc&gt;:w&lt;CR&gt;a
   
"-delete line
nmap &lt;C-K&gt;	dd
imap &lt;C-K&gt;	&lt;Esc&gt;ddo
vmap &lt;C-K&gt;	d
   
"-duplicate line
nmap &lt;C-D&gt;	yyp
imap &lt;C-D&gt;	&lt;Esc&gt;yyp
vmap &lt;C-D&gt;	ykp
   
"-select word
"nmap &lt;C-w&gt;	wbvw
imap &lt;C-w&gt;	&lt;Esc&gt;wbvw
vmap &lt;C-w&gt;	bw
   
"-ruby evaluation
nmap &lt;C-E&gt;	V:rubydo $_ = eval($_).to_s&lt;CR&gt;
vmap &lt;C-E&gt;	:rubydo $_ = eval($_).to_s&lt;CR&gt;
   
      
set lines=70 columns=100
   
      
set diffexpr=MyDiff()
   
function MyDiff()
let opt = '-a --binary '
if &amp;diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &amp;diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
   if &amp;sh =~ '\&lt;cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
   else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
   endif
else
   let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' &gt; ' . arg3 . eq
endfunction
   
"auto cd to current file on load
autocmd BufEnter * lcd %:p:h
   
      
" Project settings
let g:proj_window_width = 40
nmap &lt;silent&gt; &lt;S-F12&gt; &lt;Plug&gt;ToggleProject
&lt;/pre&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 26 Nov 2007 15:23:04 +0000</pubDate>
      <link>&lt;a href="/feed/tools"&gt;/vim_settings&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/tools"&gt;/vim_settings&lt;/a&gt;</guid>
    </item>
  </channel>
</rss>
