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

<channel>
	<title>The Operator&#039;s Place</title>
	<atom:link href="http://stefan.boxbox.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://stefan.boxbox.org</link>
	<description>About development</description>
	<lastBuildDate>Wed, 28 Mar 2012 16:20:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>FlexWorld Lua API</title>
		<link>http://stefan.boxbox.org/2012/03/28/flexworld-lua-api/</link>
		<comments>http://stefan.boxbox.org/2012/03/28/flexworld-lua-api/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 16:20:01 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FlexWorld]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=227</guid>
		<description><![CDATA[FlexWorld currently gets the Lua API implemented. Read more here.]]></description>
			<content:encoded><![CDATA[<p>FlexWorld currently gets the Lua API implemented. Read more <a href="http://www.flexworld-game.com/blog/11/lua-scripting.html">here</a>.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=227&amp;md5=79ce11134a2d343747b0b578c8b4e030" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2012/03/28/flexworld-lua-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2012%2F03%2F28%2Fflexworld-lua-api%2F&amp;language=en_GB&amp;category=software&amp;title=FlexWorld+Lua+API&amp;description=FlexWorld+currently+gets+the+Lua+API+implemented.+Read+more+here.&amp;tags=FlexWorld%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Test-driven development</title>
		<link>http://stefan.boxbox.org/2011/12/22/test-driven-development/</link>
		<comments>http://stefan.boxbox.org/2011/12/22/test-driven-development/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 14:07:17 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=222</guid>
		<description><![CDATA[As you all know, FlexWorld has been in development for more than 10 months. And I finally decided to give it a big overhaul. I recently read a book called &#8220;The Clean Coder&#8221; which is about good habits and techniques [...]]]></description>
			<content:encoded><![CDATA[<p>As you all know, FlexWorld has been in development for more than 10 months. And I finally decided to give it a big overhaul. I recently read a book called &#8220;The Clean Coder&#8221; which is about good habits and techniques that every serious programmer should know of.</p>
<p>One thing that got my attention was &#8220;test-driven development&#8221;. In the past I didn&#8217;t really do serious software tests, i.e. regression and integration tests. Why? Because programmers are mostly lazy, and unit tests are somewhat boring to write.</p>
<p>But I realized I was completely wrong. When I began writing the first tests for FlexWorld (I removed everything before!) it actually felt quite good. The reason is the workflow: At first you write the tests for the interface you want to get (this implies thinking about it, which is very important). This also gives you practical use-cases. After that you implement the production code itself.</p>
<p>That happens step-by-step. For example for every single function you write a test, then the implementation. Thereafter you build and run the tests. If they pass and you&#8217;re somewhat sure your tests are complete and make sense, you KNOW your code is sane!</p>
<p>Before I&#8217;ve started with unit tests it always felt like: &#8220;Uh, this should work.. I will throw in some debug output messages and see if the result is something I expected.&#8221; But I was never sure if my code was sane completely. And when a bug happened, it felt normal to check the code, eventually run the debugger and see what was wrong.</p>
<p>I highly encourage everybody to TEST software and adapt the test-driven development workflow. It just feels better when you add a feature and know it doesn&#8217;t break anything.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=222&amp;md5=3b062bba3ab79d55b801a9a227186367" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/12/22/test-driven-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F12%2F22%2Ftest-driven-development%2F&amp;language=en_GB&amp;category=software&amp;title=Test-driven+development&amp;description=As+you+all+know%2C+FlexWorld+has+been+in+development+for+more+than+10+months.+And+I+finally+decided+to+give+it+a+big+overhaul.+I+recently+read+a+book+called...&amp;tags=Development%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Fix touchpad tapping with Elantech devices and others</title>
		<link>http://stefan.boxbox.org/2011/12/21/fix-touchpad-tapping-with-elantech-devices-and-others/</link>
		<comments>http://stefan.boxbox.org/2011/12/21/fix-touchpad-tapping-with-elantech-devices-and-others/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 22:41:11 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=218</guid>
		<description><![CDATA[I got a new Asus EeePC netbook that has an Elantech touchpad device installed. It works out of the box with my Debian GNU/Linux installation, however the tapping is not working. To make it work again you probably have to [...]]]></description>
			<content:encoded><![CDATA[<p>I got a new Asus EeePC netbook that has an Elantech touchpad device installed. It works out of the box with my Debian GNU/Linux installation, however the tapping is not working.</p>
<p>To make it work again you probably have to rebind the <em>TapButtonX</em> settings that are set to <em>0.</em></p>
<pre>synclient TapButton1=1 TapButton2=2 TapButton3=3</pre>
<p>Add it to your session start-up file for persistence. Also check out <em>gpointing-device-settings</em> for various touchpad options.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=218&amp;md5=146df4e9d807e44363db5b76b8d09af4" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/12/21/fix-touchpad-tapping-with-elantech-devices-and-others/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F12%2F21%2Ffix-touchpad-tapping-with-elantech-devices-and-others%2F&amp;language=en_GB&amp;category=software&amp;title=Fix+touchpad+tapping+with+Elantech+devices+and+others&amp;description=I+got+a+new+Asus+EeePC+netbook+that+has+an+Elantech+touchpad+device+installed.+It+works+out+of+the+box+with+my+Debian+GNU%2FLinux+installation%2C+however+the+tapping+is+not...&amp;tags=Linux%2Cblog" type="text/html" />
	</item>
		<item>
		<title>FlexWorld!</title>
		<link>http://stefan.boxbox.org/2011/12/07/flexworld/</link>
		<comments>http://stefan.boxbox.org/2011/12/07/flexworld/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 17:14:01 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FlexWorld]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=216</guid>
		<description><![CDATA[Today I decided to go public with my project that has been in development for ~10 months:  FlexWorld. To be able to concentrate on development and buy things like graphics, 3D models etc., I also decided to start a campaign [...]]]></description>
			<content:encoded><![CDATA[<p>Today I decided to go public with my project that has been in development for ~10 months:  <strong>FlexWorld</strong>.</p>
<p>To be able to concentrate on development and buy things like graphics, 3D models etc., I also decided to start a <a href="http://www.indiegogo.com/FlexWorld?a=335297">campaign at IndieGoGo</a>. If you like what you see there, please spread the word!</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=216&amp;md5=74733b65a4ce2e6ac4bcbcb97e577d09" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/12/07/flexworld/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F12%2F07%2Fflexworld%2F&amp;language=en_GB&amp;category=software&amp;title=FlexWorld%21&amp;description=Today+I+decided+to+go+public+with+my+project+that+has+been+in+development+for+%7E10+months%3A+%C2%A0FlexWorld.+To+be+able+to+concentrate+on+development+and+buy+things+like+graphics%2C...&amp;tags=FlexWorld%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Creating a screencast in Linux</title>
		<link>http://stefan.boxbox.org/2011/09/26/creating-a-screencast-in-linux/</link>
		<comments>http://stefan.boxbox.org/2011/09/26/creating-a-screencast-in-linux/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 04:49:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=204</guid>
		<description><![CDATA[Recently I wanted to create a simple screencast in Linux (Debian GNU/Linux). I remember I used &#8220;gtk-recordmydesktop&#8221; and &#8220;instanbul&#8221; before, but I don&#8217;t have that average audio setup anymore. Today it consists of an internal Intel audio chipset and an [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I wanted to create a simple screencast in Linux (Debian GNU/Linux). I remember I used &#8220;gtk-recordmydesktop&#8221; and &#8220;instanbul&#8221; before, but I don&#8217;t have that average audio setup anymore. Today it consists of an internal Intel audio chipset and an external U46DJ USB audio device.</p>
<p><span id="more-204"></span></p>
<p>gtk-recordmydesktop completely sucks when it comes to selecting your audio device. Normally accesible by the ALSA descriptor &#8220;hw:1&#8243;, recordmydesktop wasn&#8217;t able to use it. Istanbul completely failed to render the audio part.</p>
<p>So after some googleing I found out about the perfect solution: ffmpeg and jack_capture. I wrote a little script that combines the steps involved. Here it is:</p>
<pre>#!/bin/sh

DATE=`date +%Y%m%d`
TIME=`date +%Hh%M`

ffmpeg -an -f x11grab -r 20 -s hd720 -i :0.0 -vcodec libx264 -vpre lossless_ultrafast -threads 4 video_$DATE-$TIME.mkv &amp;
jack_capture --port system:capture_1 audio_$DATE-$TIME.wav</pre>
<p>At first it runs ffmpeg in the background. Be sure to adjust the parameters if you&#8217;re adopting it. Then jack_capture is launched – again, take care of parameters for your system (especially the Jack port). Of course you need to startup Jackd before you run the script (can be easily done through qjackctl normally).</p>
<p>jack_capture is also capable of saving directly to MP3s, however it must be compiled with the proper support, and on Debian it isn&#8217;t (due to MP3 licensing problems). Converting however isn&#8217;t a problem at all, just invoke: (of course <strong>now</strong> you really need liblame or similar; for Debian see the Debian Multimedia Library)</p>
<pre>ffmpeg -i my_audio_file.wav encoded.mp3</pre>
<p>Normally this produces a high-quality MP3 – if not, adjust settings (see &#8220;man ffmpeg&#8221; for help).</p>
<p>The last step is muxing both streams, so that you&#8217;re left with only one file. Again we use ffmpeg for that (make sure you have the MP3 ready!):</p>
<pre>ffmpeg -i audio.mp3 -i video.mkv -acodec copy -vcodec copy my_final_video.mp4</pre>
<p>The video and audio streams are simply copied to the target file. What comes out is a high-quality video/audio file, congratulations. <img src='http://stefan.boxbox.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>One note on possible syncing problems: Since ffmpeg (the capturing part) and jack_capture are launched <strong>after each other</strong>, there may be a delay of some milliseconds. In my tests I wasn&#8217;t able to recognize it. But this may depend on your system.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=204&amp;md5=266fc3e71b72688fc62d1135d58da76e" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/09/26/creating-a-screencast-in-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F09%2F26%2Fcreating-a-screencast-in-linux%2F&amp;language=en_GB&amp;category=software&amp;title=Creating+a+screencast+in+Linux&amp;description=Recently+I+wanted+to+create+a+simple+screencast+in+Linux+%28Debian+GNU%2FLinux%29.+I+remember+I+used+%26%238220%3Bgtk-recordmydesktop%26%238221%3B+and+%26%238220%3Binstanbul%26%238221%3B+before%2C+but+I+don%26%238217%3Bt+have+that+average+audio+setup+anymore.+Today...&amp;tags=Audio%2CHow-To%2CLinux%2CVideo%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Where are the posts?</title>
		<link>http://stefan.boxbox.org/2011/08/22/where-are-the-posts/</link>
		<comments>http://stefan.boxbox.org/2011/08/22/where-are-the-posts/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 15:58:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=202</guid>
		<description><![CDATA[I&#8217;ve sorted out some old posts about a project of mine. Of course the project is still heavily under development, and the reason why I&#8217;ve removed the posts is that I&#8217;m preparing serious and concreter information about it. Stay tuned.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve sorted out some old posts about a project of mine. Of course the project is still heavily under development, and the reason why I&#8217;ve removed the posts is that I&#8217;m preparing serious and concreter information about it. Stay tuned.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=202&amp;md5=0a7eb393a7992c13dcc293c1836161c4" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/08/22/where-are-the-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F08%2F22%2Fwhere-are-the-posts%2F&amp;language=en_GB&amp;category=software&amp;title=Where+are+the+posts%3F&amp;description=I%26%238217%3Bve+sorted+out+some+old+posts+about+a+project+of+mine.+Of+course+the+project+is+still+heavily+under+development%2C+and+the+reason+why+I%26%238217%3Bve+removed+the+posts+is+that...&amp;tags=Development%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Restore iPod Shuffle</title>
		<link>http://stefan.boxbox.org/2011/06/16/restore-ipod-shuffle/</link>
		<comments>http://stefan.boxbox.org/2011/06/16/restore-ipod-shuffle/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 10:57:44 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=176</guid>
		<description><![CDATA[Today when my girlfriend went to bed, she screamed &#8220;Can you come over here, my iPod&#8217;s flashing!&#8221;. I took the device and indeed it was flashing red and green accordingly. I plugged it in to see if the music got [...]]]></description>
			<content:encoded><![CDATA[<p>Today when my girlfriend went to bed, she screamed &#8220;Can you come over here, my iPod&#8217;s flashing!&#8221;. I took the device and indeed it was flashing red and green accordingly. I plugged it in to see if the music got lost or the index got corrupted (I&#8217;ve never used iTunes, but a program called rebuild_db.exe), unfortunately I wasn&#8217;t able to access the device, it seemed <em>dead</em>.</p>
<p><span id="more-176"></span>First step: Install iTunes and do the recovery there. It even started but did never complete, the progress bar got stock at 100%. So I did something that you normally <strong>never ever</strong> do: Disconnect the device while there&#8217;s an operation pending. Result: Device did not turn on, now it really seemed dead.</p>
<p>So I googled for solutions and found out about the &#8220;<a href="http://support.apple.com/kb/HT1238">iPod Reset Utility</a>&#8220;, a small tool by Apple to reset iPod Shuffle devices. I started it and &#8212; wasn&#8217;t it expected? &#8212; an error message telling me &#8220;Only for 32 bit systems&#8221; appeared. Holy cow&#8230; I was using Windows 7 64 Bit, but the architecture wasn&#8217;t the problem, it&#8217;s the tool&#8217;s <strong>installer&#8217;s compatibility checking routine</strong> that&#8217;s yelling. So I tried Virtual PC with Windows XP mode which told me my CPU isn&#8217;t setup for virtualizing (yeah, sure! BIOS setting &#8220;AMD virtualization&#8221; = ON). Windows&#8217;s compatibility mode settings didn&#8217;t work either.</p>
<p>Then I did what I usually do when a Windows program has problem with its own operating system: Boot Linux (again) and do it right! I started the iPod Reset Utility setup using Wine, installed it successfully and tried my luck again. Unfortunately the tool wasn&#8217;t able to detect the Shuffle in Linux. So I copied the files over to my Win 7 box, booted the evil Windows again, moved the iPod Reset Utility files <strong>exactly</strong> to the place where I&#8217;ve installed them on my Linux box and set the compatibility settings of Windows to <strong>Windows XP Service Pack 2</strong>.</p>
<p>Luckily the program started! I reconnected the iPod and surprise surprise, the tool recognized it and started the recovery!</p>
<p>So for anyone running Windows newer than XP Service Pack 3 with problems installing that tool, I packed the raw files for you. Just make sure to unpack them in the <em>&lt;Programs&gt;/iPod/iPod Reset Utility</em> directory and set the compatibility mode to Win XP SP 2 (rightclick on exe file, compatibility).</p>
<p><a href="http://stefan.boxbox.org/files/reset_utility.zip">Download Apple iPod Reset Utility (unpacked)</a></p>
<p>Conclusion:</p>
<ul>
<li>Apple: Shame on you for providing an installer with silly OS version checks.</li>
<li>Windows: Shame on you for bad downwards compatibility and not detecting virtualization.</li>
<li>Linux: Thank you, keep it going. <img src='http://stefan.boxbox.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=176&amp;md5=6bef943650b0716b913e1f8989332cdb" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/06/16/restore-ipod-shuffle/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F06%2F16%2Frestore-ipod-shuffle%2F&amp;language=en_GB&amp;category=software&amp;title=Restore+iPod+Shuffle&amp;description=Today+when+my+girlfriend+went+to+bed%2C+she+screamed+%26%238220%3BCan+you+come+over+here%2C+my+iPod%26%238217%3Bs+flashing%21%26%238221%3B.+I+took+the+device+and+indeed+it+was+flashing+red+and+green+accordingly....&amp;tags=Apple%2CLinux%2CWindows%2Cblog" type="text/html" />
	</item>
		<item>
		<title>&#8220;Vim is hard to use!&#8221;</title>
		<link>http://stefan.boxbox.org/2011/03/30/vim-is-hard-to-use/</link>
		<comments>http://stefan.boxbox.org/2011/03/30/vim-is-hard-to-use/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 22:37:09 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=88</guid>
		<description><![CDATA[Those who know me won&#8217;t be surprised that I&#8217;m a big Vim fan. Unfortunately there&#8217;re still people out there who either think Vim is hard to use or say that Vim is for geeks only. Let me try to clarify [...]]]></description>
			<content:encoded><![CDATA[<p>Those who know me won&#8217;t be surprised that I&#8217;m a big <a href="http://www.vim.org/">Vim</a> fan. Unfortunately there&#8217;re still people out there who either think Vim is hard to use or say that Vim is for geeks only. Let me try to clarify a bit and tell you why that&#8217;s not the case.</p>
<p><span id="more-88"></span></p>
<h1>Vim is not hard to use</h1>
<p>Let&#8217;s begin by claiming <em>&#8220;Vim is not hard to use&#8221;. </em>At first we need to think about why someone declares something being difficult. In my opinion the reason is that someone is</p>
<ul>
<li>just not used to it or</li>
<li>it&#8217;s incredible difficult to learn (lack of documentation, bad user interface, you name it).</li>
</ul>
<p>The first argument might be the more important one: The average user started his computer career either with DOS or Windows, so using editors like <em>edit.exe</em> and <em>notepad.exe</em> was the usual business. You had (or have) the cursor and just type in characters. Easy!</p>
<p>The second argument, especially lack of documentation, comes to the table when you&#8217;re at least <em>trying</em> to learn a new program. When you&#8217;ve got a problem, you normally look it up in the docs, find your problem and answer and go on.</p>
<p>Back to Vim: Indeed you&#8217;re probably <em>not used to it</em> (hence you would already use it and would have never stopped doing so) and you think it&#8217;s difficult to learn. But that&#8217;s not true: <em>Every single bit</em> in Vim is well documented. You have several commands and tools that are just there to get you to the right point in the help pages. And not being used to something is really no argument to declare something as being hard to use.</p>
<h1>Your editor is hard to use!</h1>
<p>I&#8217;ve been using Vim for about 3 years now &#8212; and not just for programming, but whenever I&#8217;m about to write or edit text. And from that point of view, I tell you: <em>Your</em> editor is hard to use (except it&#8217;s vim, of course). Let&#8217;s talk about the <em>why</em>:</p>
<p>Computer programs are there to assist you in doing things, that means making your life easier and more comfortable. But in God&#8217;s name, how does an editor that has nearly <em>zero</em> features enhance your editing experience? I&#8217;m not (only) talking about notepad.exe here, that counts for editors like Scite, Notepad++, UltraEdit, Visual Studio etc. too.</p>
<p>You may argue that your editor has syntax highlighting. Good, but it doesn&#8217;t assist you with editing. You have folding. Doesn&#8217;t assist. You have tabs. Don&#8217;t assist. You have refactoring tools. Do assist, but may only work for specific programming languages. You have IDEs  with SCM integration, database connections, debuggers and tons of other tools and add-ons: They do not assist you with <em>editing</em>, plus there&#8217;re the native tools that already do those jobs fine.</p>
<p>I admit that I&#8217;m flaming a lot up to here, but let&#8217;s make things clear for now: Your average editor is just bad (focus on <em>editing!</em>). And please be honest: What else than moving your cursor around a lot combined with Ctrl+arrow keys do you do in your editor?</p>
<h1>What makes Vim different &#8212; and better</h1>
<p>The most important thing with Vim is what also confuses the most people: Vim does not only wait for your keystrokes and write the proper characters down. Instead, and this is important, it waits for your <em>commands</em>. You tell Vim what to do, and it will be done. Of course this implies that you <em>know what you&#8217;re doing</em>.</p>
<p>Basically vim is divided into 3 major <em>modes</em>:</p>
<ul>
<li>Command mode (or ex mode): Nearly all keys on your keyboard are bound to an action that Vim executes. In addition you can perform <em>: commands</em>.</li>
<li>Visual mode: For selecting text, with the power of Vim selectors.</li>
<li>Insert mode: This is what you mostly have in all other editors: You type, Vim writes it down.</li>
</ul>
<p>We could say that if you don&#8217;t care of Vim&#8217;s features, just enter insert mode by hitting the <em>i key</em> and start typing. But of course you don&#8217;t want to do that, because you want to learn how Vim works, and not how you can continue using other editor&#8217;s habits.</p>
<p>As this article is <em>not</em> a Vim tutorial, let&#8217;s get back to the principles: I told you in the headline what makes Vim <em>better</em>, and the separation into several modes is the basic and powerful idea. Isn&#8217;t it just more logical to tell the editor <em>&#8220;Hey, delete the next 3 words!&#8221;</em> or <em>&#8220;That line I wrote is stupid, delete it and let me type a new one!&#8221;</em>? Why should hitting backspace for 70 times be more intuitive (yeah, you can also do Shift+Home, then Delete)?</p>
<p>Some other examples to get you an idea: <em>&#8220;Delete the next whole code block&#8221;, &#8220;Increment the number under the cursor&#8221;, &#8220;Insert some text at the same place in 10 rows&#8221;, &#8220;Delete the line under the cursor and paste it below the next one, thus swapping them&#8221;, &#8220;Find the next occurence of the word under the cursor&#8221;, &#8230;</em></p>
<p>Hopefully you&#8217;ve recognized the difference: You&#8217;re invoking commands, you tell the editor what to do. You are <em>not</em> just moving the cursor around and delete here, insert there, catch the mouse and click everywhere.</p>
<h1>How do I get used to all those keystrokes?</h1>
<p>Seriously that&#8217;s the most heard excuse of users who stop to use Vim after trying it for 2 minutes. Again, you need to get used to it, which implies learning how Vim works. Luckily you only need a few keystrokes to get you started in a good way.</p>
<p>The first thing you should do is the so called <em>vimtutor, </em>a tutorial-like Vim introduction that shows you the bare basics. Just run <em>vimtutor</em> (.exe) and read(!) the instructions. After that my personal suggestion is: <em>Use Vim!</em> Just don&#8217;t stop, else you&#8217;re not getting used to it.</p>
<p>Once you&#8217;ve conquered the magic boundary of frustration, you&#8217;ll get enlightened by the pure power. <img src='http://stefan.boxbox.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Sidenote: I needed 3-4 approaches until I&#8217;ve continued using Vim for all my editing tasks, just be patient.</p>
<p>Whenever you feel like <em>&#8220;That must be easier to do!&#8221;</em> open up the help and specify your keyword (by issuing <em>:help</em> in command mode), or use the mighty <em>:helpgrep</em> command which searches the help pages for a regular expression (e.g. <em>:helpgrep *delete*</em>).</p>
<p>Another very good source are the <a href="http://www.vim.org/tips/index.php">Vim tips</a>. Several Vim users demonstrate quite useful commands and keystrokes that make life a lot easier. However, do <em>not</em> (I repeat, <em>do not!</em>) try to learn all possible keystrokes at once. It&#8217;s a common mistake Vim newbies do. Just learn/lookup what you need or what you think might be done in an easier way. Following this approach makes your Vim experience a step-by-step learning curve.</p>
<h1>Conclusion</h1>
<p>Throw away your old habits and try out Vim. From someone using it for several years just believe the fact that it&#8217;s worth it. Be patient and you will edit your texts and codes much more effective in the future.</p>
<p>But please do not say <em>&#8220;Vim is hard to use&#8221;</em> anymore. If you do it nevertheless, then you got frustrated because of your old habits. It&#8217;s okay, just wait 1-2 days and try it again.</p>
<p>And before you can say knife, you&#8217;ll start to use Vim&#8217;s keystrokes and commands intuitively. As soon as that happens, you&#8217;ll feel pure <em>fun</em> when editing text and you&#8217;ll recognize that you&#8217;re so much more productive. Promises!</p>
<p>Last, but not least: Do not use emacs. Great operating system, but lacks a good editor. Try out Debian GNU/Linux instead and use Vim. <img src='http://stefan.boxbox.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Have fun!</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=88&amp;md5=21d6cf85f850c8eb37eca4bf2831321f" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/03/30/vim-is-hard-to-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F03%2F30%2Fvim-is-hard-to-use%2F&amp;language=en_GB&amp;category=software&amp;title=%26%238220%3BVim+is+hard+to+use%21%26%238221%3B&amp;description=Those+who+know+me+won%26%238217%3Bt+be+surprised+that+I%26%238217%3Bm+a+big+Vim+fan.+Unfortunately+there%26%238217%3Bre+still+people+out+there+who+either+think+Vim+is+hard+to+use+or+say+that...&amp;tags=Linux%2Cvim%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Theme loader for SFGUI</title>
		<link>http://stefan.boxbox.org/2011/03/19/theme-loader-for-sfgui/</link>
		<comments>http://stefan.boxbox.org/2011/03/19/theme-loader-for-sfgui/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 15:35:33 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SFGUI]]></category>
		<category><![CDATA[SFML]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=80</guid>
		<description><![CDATA[Yesterday I&#8217;ve completed the theme loader interface for SFGUI. I also did a reference implementation with a loader for the YAML syntax. However when I was finished, I didn&#8217;t like the idea that it requires another dependency (yaml-cpp), so I [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I&#8217;ve completed the theme loader interface for SFGUI. I also did a reference implementation with a loader for the YAML syntax. However when I was finished, I didn&#8217;t like the idea that it requires another dependency (yaml-cpp), so I dropped YAML support.</p>
<p>Instead of YAML, you&#8217;ll get a very easy-to-understand theme syntax like:</p>
<pre>Button.Normal.BackgroundColor = #123456
Button.Prelight.BackgroundColor = #789abc
...</pre>
<p>Very intuitive to write and gives you everything you need to define and load themes. However I&#8217;ve designed the loader interface flexible enough to punch in your own loaders (YAML, XML, whatever). Checkout the <a href="http://github.com/TankOs/SFGUI">Git repository</a> to see the changes &#8212; the (working) YAML  code can be found in the separate branch called <em>yaml</em>.</p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=80&amp;md5=c0a4759edb51b6f067bca46a3c358160" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/03/19/theme-loader-for-sfgui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F03%2F19%2Ftheme-loader-for-sfgui%2F&amp;language=en_GB&amp;category=software&amp;title=Theme+loader+for+SFGUI&amp;description=Yesterday+I%26%238217%3Bve+completed+the+theme+loader+interface+for+SFGUI.+I+also+did+a+reference+implementation+with+a+loader+for+the+YAML+syntax.+However+when+I+was+finished%2C+I+didn%26%238217%3Bt+like...&amp;tags=Development%2CSFGUI%2CSFML%2Cblog" type="text/html" />
	</item>
		<item>
		<title>SFGUI, again</title>
		<link>http://stefan.boxbox.org/2011/03/09/sfgui-again/</link>
		<comments>http://stefan.boxbox.org/2011/03/09/sfgui-again/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:00:08 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SFGUI]]></category>
		<category><![CDATA[SFML]]></category>

		<guid isPermaLink="false">http://stefan.boxbox.org/?p=65</guid>
		<description><![CDATA[I haven&#8217;t done much programming the last few weeks and I think I&#8217;m going to change that. Since there&#8217;s still a lot of interest in my Open Source GUI library &#8220;SFGUI&#8221; for SFML, I&#8217;m hoping to get it to a [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t done much programming the last few weeks and I think I&#8217;m going to change that. Since there&#8217;s still a lot of interest in my Open Source GUI library &#8220;SFGUI&#8221; for SFML, I&#8217;m hoping to get it to a nice usable state this time. The plans are made, the codebase is there: Happy coding? <img src='http://stefan.boxbox.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>You can find the Git repository here: ﻿﻿<a href="https://github.com/TankOs/SFGUI">https://github.com/TankOs/SFGUI</a></p>
 <p><a href="http://stefan.boxbox.org/?flattrss_redirect&amp;id=65&amp;md5=c0a1a54c4ced803811a020abaabe6439" title="Flattr" target="_blank"><img src="http://stefan.boxbox.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stefan.boxbox.org/2011/03/09/sfgui-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=Tank&amp;popout=1&amp;url=http%3A%2F%2Fstefan.boxbox.org%2F2011%2F03%2F09%2Fsfgui-again%2F&amp;language=en_GB&amp;category=software&amp;title=SFGUI%2C+again&amp;description=I+haven%26%238217%3Bt+done+much+programming+the+last+few+weeks+and+I+think+I%26%238217%3Bm+going+to+change+that.+Since+there%26%238217%3Bs+still+a+lot+of+interest+in+my+Open+Source+GUI+library...&amp;tags=Development%2CSFGUI%2CSFML%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

