<?xml version="1.0" encoding="ISO-8859-1" ?>
  <!-- RSS generated by www.bufferunderflow.com on 40195.0939005 -->
  <rss version="2.0">
    <channel>
       <title>Bufferunderflow.com</title>
       <link>http://www.bufferunderflow.com</link>
       <description>Everything thats Interesting</description>
       <language>en-us</language>
       <copyright>Copyright 2008 www.bufferunderflow.com</copyright>
       <docs>http://backend.userland.com/rss/</docs>
       <lastBuildDate>Sun, 17 Jan 2010 02:15:13 EST</lastBuildDate><item>
         <title>Resume</title>
	 <guid>http://www.bufferunderflow.com?entry=8</guid>
	 <category>Resume</category>
	 <description>&lt;b&gt;EDUCATION:&lt;/b&gt;
? Expected MS in Computer Science in May 2010 from the University of Kentucky.
? BS in Computer Science, University of Kentucky with a 3.7 GPA Magna Cum Laude
? West Kentucky Community and Technical College, Paducah, Kentucky, 12 credit hours with a 4.0
  GPA.
&lt;b&gt;RELATED WORK EXPERIENCE:&lt;/b&gt;
? Physical Plant Division, University of Kentucky, Lexington, Kentucky, January 2005 ? April 2005,
  August 2005 ? May 2006, August 2006 ? May 2007. Programming assistant in charge of the
  design, programming, and implementation of web development projects using flash, javascript,
  j2me, html, css, and xml. Screenshots available.
? Computer Services Inc., Paducah, Kentucky, May 2006 ? August 2006, May 2007 ? August 2007,
  May 2008 ? August 2008. Worked on a team to program a secure online storage and message
  transfer website, now used by banks worldwide. The project was written mostly in javascript/html
  with a coldfusion back end and used AJAX to communicate with a SQL server. My second and
  third terms I worked in a team to create an interactive online customer resource management
  system as well as an easy to use, but powerful web site designer to allow customers to interactively
  design their own websites. Screenshots available.
? University of Kentucky Prof. James E. Lumpp, Lexington, Kentucky, September 2006 ? January
  2007. Programmer in charge of writing the front end for a GPS tracking device for use on heavy
  construction equipment. Javascript, XML, ASP, and HTML were used. Screenshots available.
? University of Kentucky, Kentucky Satellite (KySat) Project, Lexington, Kentucky, January 2007 ?
  May 2007. Member of the ground station programming team. Helped design and implement the
  ground station software used to communicate with the satellite. Java was the main language
  utilized, with communication performed between devices via TCP connections and XML.
? Center for Visualization and Virtual Environments, University of Kentucky, Lexington, Kentucky,
  August 2007-Present. Undergraduate and Graduate Research Assistant under Dr. Brent Seales.
  Worked as part of a research team to examine and enhance the technology and ergonomics
  involved in laparoscopy and other minimally invasive surgery. Wrote and maintained various
  programs in C and Java that dealt with image analysis and voice recognition.
? University of Kentucky, Lexington, Kentucky, January 2008 ? May 2008. Was the lead developer
  on a 3D OpenGL dodgeball game for a Senior Design Project. Utilized C++, OpenGL, and
    interfaced with the Nintendo Wiimotes to create an innovative immersive user experience.
    Screenshots available.
?   Swift and Staley Mechanical Contractors Inc, Paducah, Kentucky, June 2008 ? September 2008,
    June 2009 ? Present. Hired as an independent contractor on several projects. Two of these
    involved designing, setting up, and implementing SQL databases to clean up and preserve legacy
    Microsoft Access tables. Both projects also required a web based or .NET frontend program that
    integrated into AD security. These projects were used to securely and easily search, enter, and
    modify the data as well as correctly generate reports formatted to government standards and
    regulations.
?   FoLIO Project, Center for Visualization and Virtual Environments, University of Kentucky,
    Lexington, Kentucky, December 2009 ? Present. Will be the lead developer on a team to create a
    system to quickly and without much contact take high resolution multi-spectral images of ancient
    texts as well as generate 3D-models of the artifacts to map the image onto using multiple view
    geometry. At the moment, this system is set to be used in the Summer of 2010 in Italy to digitize
    several antiquities.
&lt;b&gt;COMPUTER SKILLS:&lt;/b&gt;
  Software ? Proficient with SQL Server, Microsoft Visual Studio .NET, Linux/Unix Environment,
  Flash MX, Vi, Eclipse, Netbeans, and familiar with AutoCad and ArcGIS.
  Proficient in C++, Visual C++, C, HTML, SQL, ASP, Javascript, Java, Coldfusion, PHP, Qt,
  OpenGL, and CSS.
  Familiar with VB Script, ASP.NET, VB.NET, ActionScript 2.0, Perl, Python, Lisp, and Fortran.
&lt;b&gt;ACTIVITIES:&lt;/b&gt;
? Alumni of Triangle National Fraternity ? Secretary on the Executive Council
? University of Kentucky Programming Team Member
? Gold Palm Eagle Scout in the Boy Scouts of America
? Governor?s Scholar Program
...</description>
         <link>http://www.bufferunderflow.com?entry=8</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Sun, 17 Jan 2010 02:15:13 EST</pubDate>
   </item><item>
         <title>Openmoko Car Holder</title>
	 <guid>http://www.bufferunderflow.com?entry=7</guid>
	 <category>Projects</category>
	 <description>So I finally got around to taking some pictures of how I am using my openmoko in the car as a GPS device with a few cheap accessories from ebay...who needs a tomtom!?

So anyway, as you can see in the photos, I got a holder for it off of ebay like this &lt;a href=&quot;http://cgi.ebay.com/Car-Windshield-Mount-Holder-for-PDA-Cellphone-GPS-MP3_W0QQitemZ200255280494QQcmdZViewItem?hash=item200255280494&amp;_trkparms=72%3A1210|39%3A1|66%3A2|65%3A12|240%3A1318&amp;_trksid=p3286.c0.m14&quot;&gt;ebay listing&lt;/a&gt;.  Notice the adjustable sides with the holes.  This allows for the freerunner to be held up with all the ports and buttons still accessable!

The two wires connected to it are an external GPS antenna (reduces TTFF by a TON!) and a simple motorola car charger.  I have to force 500 mA charge mode....but using this &lt;a href=&quot;http://hdr.meetr.de/neo/openmoko/battery/battery_0.20080721_armv4t.ipk&quot;&gt;battery program&lt;/a&gt; , it&apos;s cake.

I plan on eventually using a radio broadcaster dongle out the audio jack to broadcast music to my car speakers....but that will have to wait until a functional media player is written.  (I don&apos;t have time to attempt that now...)  ;)

Anyway, here is some pics if anyone is curious.  I am using the new FDOM image (a great time saver btw!) and of course Tango GPS.

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/openmoko/mokoCar1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/openmoko/mokoCar1.jpg&quot; width=425 height=320&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/openmoko/mokoCar2.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/openmoko/mokoCar2.jpg&quot; width=425 height=320&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/openmoko/mokoCar3.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/openmoko/mokoCar3.jpg&quot; width=425 height=320&gt;&lt;/a&gt;&lt;/div&gt;

-Dan...</description>
         <link>http://www.bufferunderflow.com?entry=7</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Wed, 17 Sep 2008 21:21:28 EST</pubDate>
   </item><item>
         <title>Openmoko Post #1</title>
	 <guid>http://www.bufferunderflow.com?entry=6</guid>
	 <category>Projects</category>
	 <description>I will probably be posting alot more openmoko related material here when I get more time and get to start hacking out code....but for now, if you don&apos;t know what it is, check here: www.openmoko.org.  It is essentially a COMPLETELY opensource phone.  Very cool.

Anyway, if you have been following the development of the software, you know that the 2008.8 release was...a little disappointing and full of bugs.  Luckily I was in the IRC chatroom when Raster posted a new image he built from the current ASU dev tree with some modifications of his own.  The most significant difference can be seen in the keyboard.  The qtopia keyboard released with the 2008.8 release is replaced with a modified version the illume keyboard.  It is very nice.  Not only does it have a dictionary lookup keyboard (like the qtopia one, but able to work from any dictionary file and easily switch the dictionaries out!) but it also has a Terminal friendly full qwerty keyboard!  Very nice.

Another thing I noticed was that if you have an external keyboard (say a bluetooth keyboard) connected, on this image the on screen keyboard does not come up!  Awesome.

If you are looking for a stable image, I would recommend this one.  I used it as my phone for about 3 days with no trouble.  The battery life was good and I received calls while in suspend fine.

Anyway, this image can be found here:  &lt;a href=&quot;http://download.enlightenment.org/misc/&quot;&gt;Raster&apos;s Image&lt;/a&gt;
(Once again, I deserve NO credit for this image!  Thank Raster for building it and posting it for us to use!)

If you DO decide to use this image I would not recommend opkg upgrading.  I&apos;d make the assumption you will just break things.

Finally, if you are curious, below are some pics of me connected to a wifi network, chatting in the #openmoko IRC chatroom with the &lt;a href=&quot;http://www.amazon.com/Stowaway-Ultra-Slim-Bluetooth-Blackberry-Handhelds/dp/B0002OKCXE&quot;&gt;iGo Bluetooth Keyboard&lt;/a&gt;.  (Using pidgin on the phone).

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/openmoko/moko1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/openmoko/moko1.jpg&quot; width=425 height=320&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/openmoko/moko2.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/openmoko/moko2.jpg&quot; width=425 height=320&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/m17v4ni7fRw&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/m17v4ni7fRw&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;

Sorry for the crappy quality....I need a new camera...  Oh and some of the flash reflections are because of the full body &lt;a href=&quot;http://www.zagg.com&quot;&gt;invisible shield&lt;/a&gt; I have on it....</description>
         <link>http://www.bufferunderflow.com?entry=6</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Tue, 19 Aug 2008 01:02:44 EST</pubDate>
   </item><item>
         <title>Sooo....I&apos;m definately wearing goggles from now on...</title>
	 <guid>http://www.bufferunderflow.com?entry=5</guid>
	 <category>Blog</category>
	 <description>&lt;b&gt;Note to self:&lt;/b&gt;
	The signs on racquetball courts that tell you to wear goggles are there for a reason.

I know because I was playing the other day and I hit a pretty good serve...unfortunately it got returned...right into my eye.

It was pretty surprising...I fell down mostly out of shock.  And it was actually kinda hard to get back up because I was rather disoriented.  I couldn&apos;t see anything except for large blobs of blurry colors.  My friend, jono, that I was playing with took me home and then my parents took me to the ER.  I still couldnt see out of my eye for about 4 hours before it started getting better.

Turns out they think I just have a scratched cornea.  Hopefully it will finish healing in a few days...at the moment it still hurts pretty bad when I look anywhere but forward and when the ambient light in a room goes up/down real quick (turning on/off a light).

Oh well....at least I still have my eye....</description>
         <link>http://www.bufferunderflow.com?entry=5</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Sat, 07 Jun 2008 15:56:51 EST</pubDate>
   </item><item>
         <title>Something interesting about LEDS....</title>
	 <guid>http://www.bufferunderflow.com?entry=4</guid>
	 <category>Misc</category>
	 <description>I found out something interesting about LEDs (Light Emitting Diodes) the other day.  We all know that when you connect + to the anode of the LED and - to the cathode, light is emitted from the LED.

However, something different happens if you connect the anode to the ground and the cathode to the positive end of a voltmeter, you may see something different than you might imagine.  Whenever light hits the silicon junction in the LED, a small voltage is created between it&apos;s pins!  With the voltmeter hooked up as described above, you should be able to see this change.

Me and my dad were curious and gave it a try, and from what I could tell, the voltage would usually be a few millivolts and would change proportional to the light shined on it.  It seemed to me while we were playing around with it that the led was directional in the light it was reading....which makes sense I guess because I know from playing with the led glasses for my &lt;a href=&quot;http://www.libwiiact.org&quot;&gt;senior design project&lt;/a&gt; that the leds were very directional while emitting light, so I guess the inverse would make sense.

Anyway, I just thought it was interesting and certainly an easy/cheap way to detect the ambient light in an environment....</description>
         <link>http://www.bufferunderflow.com?entry=4</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Sat, 07 Jun 2008 15:39:22 EST</pubDate>
   </item><item>
         <title>Ray Tracing Tutorial</title>
	 <guid>http://www.bufferunderflow.com?entry=1</guid>
	 <category>Projects</category>
	 <description>Ever wonder how images like this are made?  It&apos;s easier than you think.  Read on...

&lt;div style=&quot;text-align:center; width:100%;&quot;&gt;&lt;a href=&quot;../images/1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;../images/1thumb.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;

Over the summer I decided to take up several projects.  One of the most interesting was a &apos;Ray Tracer.&apos;

I had never heard of Ray Tracing prior to undertaking this project, but a co-worker of mine introduced the concept to me, and being the nerd I am, I had to try it out.  Around 900 lines or so of C++ later, I had a working Ray Tracer capable of producing beautiful 3D worlds.  Below is a quick tutorial on the process.

I divided the tutorial into 3 simple parts for easy access.  Enjoy!

&lt;strong&gt;Step I: Setup&lt;/strong&gt;

&lt;a href=&quot;./vectors.html&quot;&gt;Vectors and Colors&lt;/a&gt;
&lt;a href=&quot;./objects.html&quot;&gt;Objects&lt;/a&gt;

&lt;strong&gt;Step II: Ray Tracing&lt;/strong&gt;

&lt;a href=&quot;./concepts.html&quot;&gt;Raytracing Overview&lt;/a&gt;
&lt;a href=&quot;./objects.html&quot;&gt;Setup&lt;/a&gt;
&lt;a href=&quot;./raytracing.html&quot;&gt;Raytracing Algorithm&lt;/a&gt;

&lt;strong&gt;Step III: Adding effects&lt;/strong&gt;

&lt;a href=&quot;./shadows.html&quot;&gt;Shadows&lt;/a&gt;
&lt;a href=&quot;./light.html&quot;&gt;Light Diffusion&lt;/a&gt;
&lt;a href=&quot;./reflections.html&quot;&gt;Reflections&lt;/a&gt;
...</description>
         <link>http://www.bufferunderflow.com?entry=1</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Thu, 05 Jun 2008 10:10:01 EST</pubDate>
   </item><item>
         <title>.vimrc file</title>
	 <guid>http://www.bufferunderflow.com?entry=3</guid>
	 <category>Code</category>
	 <description>If you have never used it before, Vim (Vi Improved) is a great linux (and windows via gVim) editor and my personal editor of choice.  It has support for every language in existance, is lightweight, and is customizable to your heart&apos;s content.

When you first start using vim however, you need to set up a preferences file aka your .vimrc file.  I figured I would post mine on here in case anyone out there was looking and wanted to base theirs on mine (or just use mine!).

I have several options turned on in mine such as the ability to hold shift and move the arrows around to select, copy/cut/paste using ctrl+[c|x|v], auto tabbing (from previous typed words AND the syntax file!), auto syntax coloring, and the ability to press tab to complete a keyword you are typing.

Anyway, like it or not, here it is:

&lt;ol class=&apos;code&apos;&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set autoindent		&quot;auto indent when possible&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set smartindent 	&quot;smart indenting&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set smarttab 		&quot;smart tabbing&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set nocompatible 	&quot;new features...&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set number 		&quot;line numbers&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set incsearch		&quot;to make it search as you are typing&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set hlsearch		&quot;to make it highlight search results&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set ignorecase 		&quot;ignore case when we are searching&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set smartcase 		&quot;but only ignore it if i have NO capitols&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set scrolloff=1 	&quot;start scroll with 1 line left on screen&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;filetype on		&quot;make filetypes be recognized&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot;Clear the hightlights and messages with spacebar&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;noremap &amp;lt;silent&amp;gt; &amp;lt;Space&amp;gt; :silent noh&amp;lt;bar&amp;gt;:echo &quot;&quot;&amp;lt;CR&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot;get colors if we dont have them already&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;let color = &quot;true&quot;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;if has(&quot;syntax&quot;)&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;if color == &quot;true&quot;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;so ${VIMRUNTIME}/syntax/syntax.vim&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;else&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;syntax off&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set t_Co=0&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;endif&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;endif&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot;this sets up the select via shift+arrow keys and such&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;behave mswin &lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot; Let me backspace in visual mode&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;vnoremap &amp;lt;BS&amp;gt; d&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot; let me use ctrl+[cxv] to copy, cut, paste..years of windows takes its toll&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;vnoremap &amp;lt;C-X&amp;gt; &quot;+x&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;vnoremap &amp;lt;C-C&amp;gt; &quot;+y&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;cmap &amp;lt;C-V&amp;gt; &amp;lt;C-R&amp;gt;+&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;exe &apos;inoremap &amp;lt;script&amp;gt; &amp;lt;C-V&amp;gt;&apos; paste#paste_cmd[&apos;i&apos;]&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;exe &apos;vnoremap &amp;lt;script&amp;gt; &amp;lt;C-V&amp;gt;&apos; paste#paste_cmd[&apos;v&apos;]&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot; let me ctrl+a to select all&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;noremap &amp;lt;C-A&amp;gt; gggH&amp;lt;C-O&amp;gt;G&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;inoremap &amp;lt;C-A&amp;gt; &amp;lt;C-O&amp;gt;gg&amp;lt;C-O&amp;gt;gH&amp;lt;C-O&amp;gt;G&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;cnoremap &amp;lt;C-A&amp;gt; &amp;lt;C-C&amp;gt;gggH&amp;lt;C-O&amp;gt;G&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;onoremap &amp;lt;C-A&amp;gt; &amp;lt;C-C&amp;gt;gggH&amp;lt;C-O&amp;gt;G&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;snoremap &amp;lt;C-A&amp;gt; &amp;lt;C-C&amp;gt;gggH&amp;lt;C-O&amp;gt;G&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;xnoremap &amp;lt;C-A&amp;gt; &amp;lt;C-C&amp;gt;ggVG&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot;Tabbed completion&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;function! Tab_Complete_Wrapper(direction)&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;	let col = col(&apos;.&apos;) - 1 &lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;	if !col || strpart( getline(&apos;.&apos;), col(&apos;.&apos;)-2, 3 ) !~ &apos;^\w&apos;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;		return &quot;\&amp;lt;tab&amp;gt;&quot;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;	elseif &quot;backward&quot; == a:direction&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;		return &quot;\&amp;lt;c-p&amp;gt;&quot;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;	else&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;		return &quot;\&amp;lt;c-n&amp;gt;&quot;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;	endif&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;endfunction&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;inoremap &amp;lt;tab&amp;gt; &amp;lt;c-r&amp;gt;=Tab_Complete_Wrapper(&quot;forward&quot;)&amp;lt;cr&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;inoremap &amp;lt;s-tab&amp;gt; &amp;lt;c-r&amp;gt;=Tab_Complete_Wrapper(&quot;backward&quot;)&amp;lt;cr&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&quot;add the syntax highlighting file to the tab completion&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;au FileType * exe(&apos;setl dict+=&apos;.escape($VIMRUNTIME.&apos;/syntax/&apos;.&amp;amp;filetype.&apos;.vim&apos;,&apos; \$,&apos;))&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;set complete+=k&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;
...</description>
         <link>http://www.bufferunderflow.com?entry=3</link>
         <author>admin@bufferunderflow.com(Dan Staley)</author>
         <pubDate>Wed, 04 Jun 2008 16:55:37 EST</pubDate>
   </item></channel></rss>
