<?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>Dragly &#187; Programming</title>
	<atom:link href="http://dragly.org/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://dragly.org</link>
	<description>It was about time I started writing my own tutorials to share some of the knowledge I&#039;ve picked up from around.</description>
	<lastBuildDate>Mon, 14 May 2012 22:32:56 +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>Adjusting to the new version of Pylab and Mayavi on Ubuntu 12.04</title>
		<link>http://dragly.org/2012/05/15/adjusting-to-the-new-version-of-pylab-and-mayavi-on-ubuntu-12-04/</link>
		<comments>http://dragly.org/2012/05/15/adjusting-to-the-new-version-of-pylab-and-mayavi-on-ubuntu-12-04/#comments</comments>
		<pubDate>Mon, 14 May 2012 22:32:27 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Mindseye]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[enthought]]></category>
		<category><![CDATA[epd]]></category>
		<category><![CDATA[ipython]]></category>
		<category><![CDATA[mayavi]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[wthread]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=754</guid>
		<description><![CDATA[It seems the IPython and Pylab packages has also been updated in 12.04 and thus removing the old ipython -wthread flag that would ensure Mayavi plots to be run in a separate thread. Running with the flag causes this error &#8230; <a href="http://dragly.org/2012/05/15/adjusting-to-the-new-version-of-pylab-and-mayavi-on-ubuntu-12-04/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It seems the IPython and Pylab packages has also been updated in 12.04 and thus removing the old ipython -wthread flag that would ensure Mayavi plots to be run in a separate thread. Running with the flag causes this error to show up:</p>
<pre>[TerminalIPythonApp] Unrecognized flag: '-wthread'</pre>
<p>Without this flag, the Mayavi plots lock up the UI and hangs. If you want to get the possibility back to rotate and play around with the plots, just start IPython the following way from now on:</p>
<pre>
ipython --pylab=qt
</pre>
<p>This will launch IPython with the Qt backend and threading. Using only &#8211;pylab does not include threading. For easy and quick access, add the following to a file named .bashrc in your home folder:</p>
<pre>
alias pylab='ipython --pylab=qt'
</pre>
<p>From now on you can launch IPython just by typing</p>
<pre>
pylab
</pre>
<p>in a terminal.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/05/15/adjusting-to-the-new-version-of-pylab-and-mayavi-on-ubuntu-12-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the same script on installs with different EPD versions</title>
		<link>http://dragly.org/2012/05/15/using-the-same-script-on-installs-with-different-epd-versions/</link>
		<comments>http://dragly.org/2012/05/15/using-the-same-script-on-installs-with-different-epd-versions/#comments</comments>
		<pubDate>Mon, 14 May 2012 22:20:51 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Mindseye]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[enthought]]></category>
		<category><![CDATA[enthought python distribution]]></category>
		<category><![CDATA[epd]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[import error]]></category>
		<category><![CDATA[importerror]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=751</guid>
		<description><![CDATA[In the newest version of Enthought&#8217;s Python Distribution (EPD) on Ubuntu, the plotting package has been moved from enthought.mayavi.mlab to the shorter and more general mayavi.mlab. This does however mean that if you, like me, need to work with different &#8230; <a href="http://dragly.org/2012/05/15/using-the-same-script-on-installs-with-different-epd-versions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the newest version of Enthought&#8217;s Python Distribution (EPD) on Ubuntu, the plotting package has been moved from enthought.mayavi.mlab to the shorter and more general mayavi.mlab. This does however mean that if you, like me, need to work with different versions of EPD on multiple systems, will experience the following error from time to time:</p>
<pre>ImportError: No module named enthought.mayavi.mlab</pre>
<p>Now, to avoid switching the import statement every time you switch systems, you can make Python check if one of the versions is installed during import. If it is not, we&#8217;ll tell it to try the other. This is done in this simple command:</p>
<pre class="brush:py">try:
    from enthought.mayavi.mlab import *
except ImportError:
    from mayavi.mlab import *</pre>
<p>Just replace any other similar import statements the same way and your code should once again be working across all your installations.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/05/15/using-the-same-script-on-installs-with-different-epd-versions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classical mechanics in HTML5 and Javascript</title>
		<link>http://dragly.org/2012/03/26/classical-mechanics-in-html5-and-javascript/</link>
		<comments>http://dragly.org/2012/03/26/classical-mechanics-in-html5-and-javascript/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 20:22:42 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mindseye]]></category>
		<category><![CDATA[Physics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=685</guid>
		<description><![CDATA[Ok, so we&#8217;re working on the home exam in classical mechanics and I decided to spend some time simulating the solution of the first exercise. Probably not the wisest way to spend time during an home exam, but what the &#8230; <a href="http://dragly.org/2012/03/26/classical-mechanics-in-html5-and-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" src="http://dragly.org/wp-content/uploads/2012/03/simulator1.js"></script><script type="text/javascript" src="http://dragly.org/wp-content/uploads/2012/03/ex14.js"></script>Ok, so we&#8217;re working on the home exam in classical mechanics and I decided to spend some time simulating the solution of the first exercise. Probably not the wisest way to spend time during an home exam, but what the heck. I&#8217;m learning some Javascript and HTML5, plus the fact that it&#8217;s always fun to verify results by looking at something moving!</p>
<p>So here you go. A pendulum on a cart.</p>
<p><canvas width="600" height="250" id="myCanvas"></canvas></p>
<p>I won&#8217;t go into details about deriving and solving the Lagrange equation for this system now, but I might get back to that at a later time. And of course there will be some added controls to this so you could set the initial positions, velocities and stuff. Sometime later, I hope.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/03/26/classical-mechanics-in-html5-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing MPI applications in Qt Creator</title>
		<link>http://dragly.org/2012/03/14/developing-mpi-applications-in-qt-creator/</link>
		<comments>http://dragly.org/2012/03/14/developing-mpi-applications-in-qt-creator/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 15:43:08 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[MPI]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=643</guid>
		<description><![CDATA[I have grown very fond of the ease and usability of Qt Creator lately, making it my main tool for developing anything in C and C++. Recently I started learning the MPI framework for doing large scale parallel programming and &#8230; <a href="http://dragly.org/2012/03/14/developing-mpi-applications-in-qt-creator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have grown very fond of the ease and usability of Qt Creator lately, making it my main tool for developing anything in C and C++. Recently I started learning the MPI framework for doing large scale parallel programming and figured I wanted to try to make MPI play along with Qt Creator.</p>
<p>The first thing I noticed is that there is no problem using Qt Creator as an editor while compiling the MPI executable and running it from the command line. However, for the quick and easy testing of minor changes, running by pressing Ctrl + R in Qt Creator quickly came to a high place on my wish list.</p>
<p>After a quick search around the Internet, I found the necessary adjustments to make this exact thing happen. The steps are as follows:</p>
<h3>Make Qt Creator use mpicxx instead of g++</h3>
<p>To change the compiler in Qt Creator, you simply have to edit the .pro file of your project. Add the following lines, and Qt Creator will call mpicxx instead of g++:</p>
<pre class="brush:shell"># MPI Settings
QMAKE_CXX = mpicxx
QMAKE_CXX_RELEASE = $$QMAKE_CXX
QMAKE_CXX_DEBUG = $$QMAKE_CXX
QMAKE_LINK = $$QMAKE_CXX
QMAKE_CC = mpicc

QMAKE_CFLAGS = $$system(mpicc --showme:compile)
QMAKE_LFLAGS = $$system(mpicxx --showme:link)
QMAKE_CXXFLAGS = $$system(mpicxx --showme:compile) -DMPICH_IGNORE_CXX_SEEK
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS</pre>
<p>This also sets the correct compile and link flags in addition to changing the linker to mpicxx as well. The DMPICH_IGNORE_CXX_SEEK flag is added to avoid some errors I experienced on Red Hat Linux 5.</p>
<h3>Running the application with mpirun</h3>
<p>Usually Qt Creator will simply run the generated executable after compiling, but to make use of multiple processors (which kind of is the whole point with MPI), you have to change the run settings of your project to a custom executable. This is done in the project configuration in Qt Creator under the Run tab for your project.</p>
<p>Add a Custom Executable run configuration and set the executable to /usr/bin/mpirun or any other path where mpirun resides on your system (run &#8216;which mpirun&#8217; in a terminal to find it if you don&#8217;t know where it is). Then, set the arguments to</p>
<pre class="brush:shell">-n 2 yourexecutable</pre>
<p>to run yourexecutable with 2 processors. Of course you&#8217;ll have to change <em>yourexecutable</em> to whatever your executable is named.</p>
<h3>Adding a GUI to your MPI program</h3>
<p>I advice you to not use MPI together with Qt GUI libraries. The reasons for this is that Qt has its own threading classes that are easier to use together with GUI elements in your application if you need them and the fact that if you want to run your app on any large scale cluster you might not be able to use Qt at all, depending on what packages are available on this cluster. A much better solution is to load config settings from a file in the INI format, using for instance the lightweight <a href="http://code.google.com/p/inih/">inih</a> library and make this settings file writable from a Qt GUI application using QSettings to write this file.</p>
<p>The downside of this approach is that you won&#8217;t be able to implement any communication directly with the MPI process, but this could be worked around by for instance reading and writing to a progress status file if this is what you need.</p>
<p>However, it is not impossible to make Qt GUI applications play along with MPI, even though you might have to juggle a bit around with stuff to make it work flawlessly. Passing MPI broadcasts and such to all the other processes is definitely possible, and a relatively small example of how to do this is shown in <a href="http://www.velvet-star.com/qt/">this post</a> by Tiffany Chong and Valencia Hare.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/03/14/developing-mpi-applications-in-qt-creator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nanoparticles available for Android and Mac OS X</title>
		<link>http://dragly.org/2012/01/18/nanoparticles-available-for-android-and-mac-os-x/</link>
		<comments>http://dragly.org/2012/01/18/nanoparticles-available-for-android-and-mac-os-x/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 06:58:40 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=618</guid>
		<description><![CDATA[As mentioned in the post about Nanoparticles for Android being just around the corner, I have been able to port Nanoparticles by using the Qt port for Android enabled by the Necessitas project. That&#8217;s why you can download Nanoparticles from &#8230; <a href="http://dragly.org/2012/01/18/nanoparticles-available-for-android-and-mac-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://dragly.org/wp-content/uploads/2011/05/Screenshot-1.png" rel="lightbox[618]"><img class="alignright size-medium wp-image-501" title="Screenshot-1" src="http://dragly.org/wp-content/uploads/2011/05/Screenshot-1-300x212.png" alt="" width="300" height="212" /></a><br />
As mentioned in the post about Nanoparticles for Android <a title="Nanoparticles for Android is just around the corner" href="http://dragly.org/2012/01/07/nanoparticles-for-android-is-just-around-the-corner/">being just around the corner</a>, I have been able to port Nanoparticles by using the Qt port for Android enabled by the <a href="http://sourceforge.net/p/necessitas/home/">Necessitas</a> project.</p>
<p>That&#8217;s why you can download Nanoparticles from Android market right now:</p>
<p><a href="https://market.android.com/details?id=org.dragly.nanoparticles">Download Nanoparticles from Android Market</a></p>
<p>In addition, I have been working on a Mac OS X port. This is still somewhat in an early stage, but should work on most machines. You can <a href="http://dragly.org/source/nanoparticles/download/">download the Mac OS X port for free here</a>.</p>
<p>Both these version include the new party mode with new particles and new game rules. This should give you many more hours of fun particle-based gameplay.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/01/18/nanoparticles-available-for-android-and-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Deploy Qt applications for Mac OS X</title>
		<link>http://dragly.org/2012/01/13/deploy-qt-applications-for-mac-os-x/</link>
		<comments>http://dragly.org/2012/01/13/deploy-qt-applications-for-mac-os-x/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 11:55:08 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[dmg]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[qmake]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=606</guid>
		<description><![CDATA[This turned out to be really simple. I was trying to create a Mac OS X version of my game, Nanoparticles, and was having trouble with some flicker when running a QGraphicsView with OpenGL. The solution turned out to simply &#8230; <a href="http://dragly.org/2012/01/13/deploy-qt-applications-for-mac-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This turned out to be really simple. I was trying to create a Mac OS X version of my game, Nanoparticles, and was having trouble with some flicker when running a QGraphicsView with OpenGL. The solution turned out to simply be to <a href="https://bugreports.qt.nokia.com/browse/QTBUG-23619">disable some style sheet settings</a> that I didn&#8217;t need.</p>
<p>After this I wanted to create a nice .dmg file for easy deployment on Mac OS X. Thankfully, this process is not hard either. I found this through the <a href="http://developer.qt.nokia.com/doc/qt-4.8/deployment-mac.html">Qt Documentation</a>, but it is actually simpler than it seems thanks to the macdeployqt tool. This is mentioned on the page, but I decided to give a more thorough walk through on how to use the tool here:</p>
<ol>
<li>Build your application</li>
<li>In the build directory, run
<pre class="brush:shell">macdeployqt yourappname.app -dmg</pre>
<p>macdeployqt is found in the ~/Library/QtSDK/Desktop/Qt/474/gcc/bin folder (if that is where you installed Qt)</li>
<li>You should now have a nice yourappname.dmg file in the build directory. Open this up and check that your application runs from there.</li>
<li>If everything is working fine, you can do some prettifying of your .dmg file by opening it up using the Disk Utility and converting it to a Read/Write disk image.</li>
<li>Open your Read/Write disk image and create a shortcut to your Applications folder. This could either be done by dragging the Applications folder while holding the command key or by creating a symbolic link in terminal:
<pre class="brush:shell">ln -s /Applications ./Applications</pre>
</li>
<li>Edit the icon size, background image, etc. by clicking Command + J to open the View Options. Also, use View -&gt; Hide Toolbar and Hide Sidebar to hide the excessive toolbars from the disk image.</li>
<li>Close the image and use Disk Utility to convert it back to a compressed disk image.</li>
<li>Distribute your .dmg file.</li>
</ol>
<p>If you need more details about the process and how deployment is performed, have a look in the <a href="http://developer.qt.nokia.com/doc/qt-4.8/deployment-mac.html">Qt Docs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/01/13/deploy-qt-applications-for-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nanoparticles for Android is just around the corner</title>
		<link>http://dragly.org/2012/01/07/nanoparticles-for-android-is-just-around-the-corner/</link>
		<comments>http://dragly.org/2012/01/07/nanoparticles-for-android-is-just-around-the-corner/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 02:41:30 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=593</guid>
		<description><![CDATA[Thanks to the great work of Bogdan Vatra and the Qt Developers working on Lighthouse, I have finally been able to create a running version of Nanoparticles on Android. Their efforts have led to the Necessitas project, a very user &#8230; <a href="http://dragly.org/2012/01/07/nanoparticles-for-android-is-just-around-the-corner/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thanks to the great work of <a href="http://www.behindkde.org/node/925">Bogdan Vatra</a> and the <a href="http://qt.nokia.com">Qt Developers working on Lighthouse</a>, I have finally been able to create a running version of <a title="Nanoparticles" href="http://dragly.org/source/nanoparticles/">Nanoparticles</a> on Android. Their efforts have led to the <a href="http://sourceforge.net/p/necessitas/home/necessitas/">Necessitas project</a>, a very user friendly and working port of Qt to Android.</p>
<p>I&#8217;ve only had a HTC Magic with no OpenGL capabilities available for testing, but still the game is running pretty good. This is giving me perhaps too high hopes about how it will perform on a stronger device, such as a Samsung Galaxy SII. I&#8217;ll try to get hold of a device like that soon.</p>
<p>In addition I&#8217;ve moved almost all the UI code in Nanoparticles over to QML. This finally makes the menus and game logic separated and also has made it a lot easier to add some transitions and user feedback to the UI elements.</p>
<p>I&#8217;ve only got a early alpha version ready at the moment, but I&#8217;ll probably need a lot of help testing how the game runs on different devices and setups. I will post back here as soon as I&#8217;ve got something for you to play with. Maybe I&#8217;ll even push it to Android Market in a not so distant future for early testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2012/01/07/nanoparticles-for-android-is-just-around-the-corner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteRule in .htaccess not working for cURL</title>
		<link>http://dragly.org/2011/11/01/rewriterule-in-htaccess-not-working-for-curl/</link>
		<comments>http://dragly.org/2011/11/01/rewriterule-in-htaccess-not-working-for-curl/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 22:43:58 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=563</guid>
		<description><![CDATA[For some strange reason I have experienced on one server that the RewriteRule in .htaccess is not working for cURL via the command line. The fix has been to add a User-Agent line to the header of the cURL command, &#8230; <a href="http://dragly.org/2011/11/01/rewriterule-in-htaccess-not-working-for-curl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For some strange reason I have experienced on one server that the RewriteRule in .htaccess is not working for cURL via the command line. The fix has been to add a User-Agent line to the header of the cURL command, like this:</p>
<pre class="brush:shell">curl --head --header "User-Agent: blablabla" http://dragly.org/</pre>
<p>I have no idea why this happens, but I was pointed to this solution in a forum which I forgot to bookmark. I hope this might help you out if you should run into the same problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2011/11/01/rewriterule-in-htaccess-not-working-for-curl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nanoparticles available for Nokia N9</title>
		<link>http://dragly.org/2011/10/11/nanoparticles-available-for-nokia-n9/</link>
		<comments>http://dragly.org/2011/10/11/nanoparticles-available-for-nokia-n9/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 11:07:23 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[available]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[n9]]></category>
		<category><![CDATA[nanoparticles]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=555</guid>
		<description><![CDATA[Finally the N9 is here. And so is Nanoparticles for the Nokia N9. You can over to Nokia Store to get a copy right now: Download Nanoparticles You can read more about Nanoparticles and download it for other platforms on &#8230; <a href="http://dragly.org/2011/10/11/nanoparticles-available-for-nokia-n9/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Finally the N9 is here. And so is <a href="http://dragly.org/source/nanoparticles/">Nanoparticles</a> for the Nokia N9. You can over to Nokia Store to get a copy right now:</p>
<p><a href="http://store.ovi.com/content/128233">Download Nanoparticles</a></p>
<p>You can read more about Nanoparticles and download it for other platforms on <a href="http://dragly.org/source/nanoparticles/">this page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2011/10/11/nanoparticles-available-for-nokia-n9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get things done with todo.txt</title>
		<link>http://dragly.org/2011/10/07/how-to-get-things-done-with-todo-txt/</link>
		<comments>http://dragly.org/2011/10/07/how-to-get-things-done-with-todo-txt/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 16:59:47 +0000</pubDate>
		<dc:creator>Svenn-Arne Dragly</dc:creator>
				<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragly.org/?p=534</guid>
		<description><![CDATA[The simple answer to how you get things done is to actually do them. However, to do things in an organized manner is more easily said than done. Why? Because it is way too easy to drift away with less &#8230; <a href="http://dragly.org/2011/10/07/how-to-get-things-done-with-todo-txt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The simple answer to how you get things done is to actually do them. However, to do things in an organized manner is more easily said than done. Why? Because it is way too easy to drift away with less important stuff when you&#8217;re supposed to do anything you have to.</p>
<p>What solved my problem: <a href="http://todotxt.com">Todo.txt</a>. Why?</p>
<p>The solution for me has always been to have a todo list that I can look up whenever I&#8217;m wondering about what to do next. It is way too hard to stay focused on a task if I have to remind myself about what&#8217;s next all the time. Leaving later tasks in an organized list makes it possible for me to avoid these constant reminders and let me focus peacefully on one task at a time, knowing that I won&#8217;t forget the next important task.</p>
<p>However, keeping such a list can introduce another problem to solve: How can I store the list in an easily accessible place that makes it easy to review it, cross things off it, list only one project at a time and maybe only the top priorities?</p>
<p>The best option for availability is to have the list on a whiteboard next to my computer, but that reveals several problems. The whiteboard will be way too small no matter how large a whiteboard I buy, and it will not be easily synchronized. In other words, I will most likely need something that runs on my computer.</p>
<p>Several applications are available for this purpose, but I have yet to find one that works well on all my systems with synchronization. I&#8217;ve tried to set up manual synchronization of folders using services like Dropbox, Ubuntu One and SpiderOak, but after Getting Things Gnome on my laptop wrote over all my changes from my desktop and Tasque failed on me while syncing via Remember The Milk, I decided to go back to the good old &#8220;todo.txt&#8221; file in a folder on my computer.</p>
<p>This works fine, but it lacks some options to sort tasks after priority or project. However, there is a beautiful script application that has come to the rescue for me. Visit <a href="http://todotxt.com">todo.txt</a> to see what I&#8217;m talking about.</p>
<p>It&#8217;s basically a simple script that lets you keep your todo-list in a file for compatibility and availability between systems, while giving you the options to view, add and delete tasks via the command line.</p>
<p>This solves all problems with syncing and availability. Now I can leave the syncing to a system such as Ubuntu One without worrying about compatibility between my phone and my computer, and even be able to view, add and delete tasks without ever leaving the terminal.</p>
<p>And should I ever be on a system without the todo.txt script, I can always open the file in vim or view it with cat.</p>
<h3>Task lists from code comments</h3>
<p>What about task lists from code comments? I often leave comments in LaTeX-files, code files and Python scripts like this:</p>
<pre class="brush:cpp">// TODO: Make a cup of coffee</pre>
<p>Well, as I said, I&#8217;ve often got a terminal open when working on anything, so the best solution for me would be never to leave the terminal:</p>
<pre class="brush:shell">cat &lt;&lt;anyfileyoulike&gt;&gt; | grep TODO</pre>
<p>This simply lists all the TODO-comments in my code or text file, so that I can easily review the ones that are not yet done. Simple as that.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragly.org/2011/10/07/how-to-get-things-done-with-todo-txt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

