<?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>echelon &#187; software</title>
	<atom:link href="http://www.soa-world.de/echelon/category/software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.soa-world.de/echelon</link>
	<description>A personal  technology  blog about software  development  and other interesting stuff.</description>
	<lastBuildDate>Tue, 06 Jul 2010 07:52:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sphinx Cheatsheet</title>
		<link>http://www.soa-world.de/echelon/2010/03/sphinx-cheatsheet.html</link>
		<comments>http://www.soa-world.de/echelon/2010/03/sphinx-cheatsheet.html#comments</comments>
		<pubDate>Sat, 06 Mar 2010 00:19:36 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=447</guid>
		<description><![CDATA[I find myself working with the Sphinx Documentation Generator  a lot recently. It is a great tool to easily create intelligent and beautiful documentation and it is based on reStructuredText. I put together a cheat sheet of all the commands I frequently use. There are a number of very good ones out there ([1] [...]]]></description>
			<content:encoded><![CDATA[<p>I find myself working with the <a href="http://sphinx.pocoo.org/">Sphinx Documentation Generator </a> a lot recently. It is a great tool to easily create intelligent and beautiful documentation and it is based on <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>. I put together a cheat sheet of all the commands I frequently use. There are a number of very good ones out there (<a href="http://neuroimaging.scipy.org/site/doc/manual/html/devel/guidelines/sphinx_helpers.html">[1]</a> <a href="http://matplotlib.sourceforge.net/sampledoc/cheatsheet.html">[2]</a> <a href="http://docutils.sourceforge.net/docs/user/rst/cheatsheet.txt">[3]</a> <a href="http://openalea.gforge.inria.fr/doc/openalea/doc/_build/html/source/tutorial/rest_syntax.html">[4]</a>) but I find it more convenient to work with my own.</p>
<p><a href="http://www.soa-world.de/echelon/wp-content/uploads/2010/03/cheatsheet.pdf"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2010/03/cheatsheet.png" alt="" title="cheatsheet" width="454" height="293" class="alignnone size-full wp-image-449" /></a></p>
<p>You can access the PDF from <a href="http://www.soa-world.de/echelon/wp-content/uploads/2010/03/cheatsheet.pdf">here</a> and the source (OpenOffice Writer document) <a href="http://www.soa-world.de/echelon/wp-content/uploads/2010/03/cheatsheet.odt">here</a>. If you find it useful or would like an item added, feel free to leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2010/03/sphinx-cheatsheet.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Back to Browser Games</title>
		<link>http://www.soa-world.de/echelon/2010/01/back-to-browser-games.html</link>
		<comments>http://www.soa-world.de/echelon/2010/01/back-to-browser-games.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 21:26:51 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=407</guid>
		<description><![CDATA[I&#8217;m back thinking about games, browser games to be exact. It&#8217;s been a while since I thought about games or wrote code for one &#8211; it&#8217;s been about 1 year since I stopped developing a prototype I called &#8216;Prototype 4&#8242; which is a web based Master of Orion clone. I was working on the game [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m back thinking about games, browser games to be exact. It&#8217;s been a while since I thought about games or wrote code for one &#8211; it&#8217;s been about 1 year since I stopped developing a prototype I called &#8216;Prototype 4&#8242; which is a web based <a href="http://en.wikipedia.org/wiki/Master_of_Orion">Master of Orion</a> clone. I was working on the game full time for about a month but then had to stop because I had to take up a job to get some money and I also had to finish my diploma thesis. It progressed fairly far further than any other of my prototypes in fact: I created some nice graphics and a layout, a cool javascript user interface, a very efficient yet flexible back end library in PHP and a C++ battle calculator. Here are 2 screenshots of what the game looks like:</p>
<p><a href="http://www.soa-world.de/echelon/wp-content/uploads/2010/01/prototype41.png"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2010/01/prototype41-300x193.png" alt="Prototype 4 Screenshot 1" title="prototype41" width="300" height="193" class="size-medium wp-image-408"/></a> <a href="http://www.soa-world.de/echelon/wp-content/uploads/2010/01/prototype42.png"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2010/01/prototype42-300x193.png" alt="Prototype 4 Screenshot 2" title="prototype42" width="300" height="193" class="size-medium wp-image-409" /></a></p>
<p>This was supposed to be a very literal copy of Master of Orion that you could play online with up to 15 other players on one map. Yet now I have something different in mind and I also have a different approach. It will only be a hobby project and I don&#8217;t plan to get immediate results, I want it to progress and evolve in my mind until I&#8217;m at a point where I can start writing code. Writing the code should be just handcraft at that point as I have most of the skills and knowledge to develop such a game.</p>
<p>What I&#8217;m doing now is writing a design document. The design will be highly influenced by the <a href="http://en.wikipedia.org/wiki/Foundation_series">Foundation Series</a>, one of the greatest science fiction series ever written. The first version of the design document can be found <a href="http://www.soa-world.de/dev/foundationdoc/index.html">here</a>. I still want the game to have a Master of Orion look and feel to it and it will certainly be a <a href="http://en.wikipedia.org/wiki/4x_game">4X type of game</a> but I want different factions to be completely different (comparable to the different races in <a href="http://en.wikipedia.org/wiki/Starcraft">Starcraft</a>) in the way they are played. I would like to see a &#8220;First Foundation&#8221; faction that relies on technology, economy and firepower and a &#8220;Second Foundation&#8221; faction that relies solely on the power of their minds, e.g. mind control. More about that can be found int the <a href="http://www.soa-world.de/dev/foundationdoc/index.html">design document</a>. A third faction is also possible but I have no concrete ideas about that yet. As the game design and the game itself progresses I will occasional write articles about it here on this blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2010/01/back-to-browser-games.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Matlab C++ Integration</title>
		<link>http://www.soa-world.de/echelon/2009/11/matlab-c-integration.html</link>
		<comments>http://www.soa-world.de/echelon/2009/11/matlab-c-integration.html#comments</comments>
		<pubDate>Mon, 09 Nov 2009 10:30:02 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=349</guid>
		<description><![CDATA[I&#8217;m currently working on integrating some Matlab Algorithms into a larger C++ project using the Matlab Compiler. It works rather well however I stumbled across a couple of quirks and caveats. First two facts that make integrating Matlab difficult: in Matlab indexes start at 1 and Matlab arrays are column-major ordered. As a result if [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on integrating some Matlab Algorithms into a larger C++ project using the <a href="http://www.mathworks.com/products/compiler/">Matlab Compiler</a>. It works rather well however I stumbled across a couple of quirks and caveats. First two facts that make integrating Matlab difficult: in Matlab indexes start at 1 and Matlab arrays are column-major ordered. As a result if you want to use data fields in both C/C++ and Matlab you have to transpose the fields. If the fields contain indexes you might also have to increment and decrement the values of the fields.</p>
<p>Another caveat I found is also related to array indexes. When using a Matlab function that takes as parameters matrix indexes you might think of creating an mwArray of type <em>mxUINT32_CLASS</em>. Wrong. You have to pass indices &#8211; as strange as it sounds &#8211; as doubles so you should use <em>mxDOUBLE_CLASS</em>.</p>
<p>One custom Matlab function I wanted to use in C++ took as an argument a cell array. A cell array is an array containing other arrays. In Matlab you create a cell array like this:<br />
<code><br />
a = magic(5);<br />
b = ones(3);<br />
z{1} = a;<br />
z{2} = b;<br />
</code><br />
If you look at z now you will get something like this:<br />
<code><br />
z =<br />
    [5x5 double]    [3x3 double]<br />
</code><br />
An array of arrays. Easy. Well if you want to construct a cell array in C++ you have to do something like this:<br />
<code><br />
mwArray a(5, 5, mxDOUBLE_CLASS);<br />
mwArray b(3, 3, mxINT16_CLASS);<br />
mwArray z(1, 2, mxCELL_CLASS);<br />
z.Get(1,1).Set(a);                        // Sets z(1) = a<br />
z.Get(1,2).Set(b);                        // Sets z(2) = b<br />
</code><br />
You can find the description on <a href="http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/voidsetconstmwarrayarr.html">this page</a>.<br />
If you get used to those little quirks however the Matlab Compiler is a very powerful tool to include your crazy Matlab scripts in a stand alone C++ application. One of the next things I would like to investigate are free (open source) Matlab Compiler alternatives such as the Octave C++ integration and compiler.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2009/11/matlab-c-integration.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing Multithreading</title>
		<link>http://www.soa-world.de/echelon/2009/07/visualizing-multithreading.html</link>
		<comments>http://www.soa-world.de/echelon/2009/07/visualizing-multithreading.html#comments</comments>
		<pubDate>Sat, 18 Jul 2009 18:53:17 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=296</guid>
		<description><![CDATA[I&#8217;ve been pondering about the question of how to model and visualize multithreaded applications in a simple, efficient and aesthetic way. Naturally I&#8217;ve been looking into UML behavior diagrams first but I was not really satisfied with what I found. Now I am not an expert on UML but I know my way around class [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been pondering about the question of how to model and visualize multithreaded applications in a simple, efficient and aesthetic way. Naturally I&#8217;ve been looking into UML behavior diagrams first but I was not really satisfied with what I found. Now I am not an expert on UML but I know my way around class diagrams, activity diagrams, sequence diagram and state machines but they all did not seem to fit what I wanted to visualize.</p>
<p>I wanted to show multiple threads communicating and synchronizing with each other. I&#8217;ve read the argument that something like multithreading concerns only the implementation of a system and can thus be ignored when modeling. I agree with the argument however there will come a time in the development phase of a system when one needs to think about multithreading and one wants to sketch out how the system facilitates multiple threads to be efficient. And for that I have not found good tool within UML.</p>
<p><a href="http://www.soa-world.de/echelon/wp-content/uploads/2009/06/multithreading.png"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2009/06/multithreadingsmall.png" alt="multithreadingsmall" title="multithreadingsmall" width="600" height="414" class="alignnone size-full wp-image-299" /></a></p>
<p>So I searched for examples of diagrams that visualize multithreading. The collage shows 4 different diagrams I found rather interesting. The first one is from <a href="http://honerbrink.com/?p=41">this page</a> about a traffic simulator written in Java (<a href="http://honerbrink.com/wp-content/uploads/2008/08/traffic-simulator-state-diagram.png">orignal image</a>). It shows different threads and how they signal each other. It&#8217;s simple yet quite clear what is going an. The second image is taken from a CodeProject documentation about a <a href="http://www.codeproject.com/KB/recipes/geneticlibrary.aspx">genetic library</a> (<a href="http://www.codeproject.com/KB/recipes/geneticlibrary/ga_multithread_alg.png">original image</a>). It sort of uses UML symbols but it&#8217;s not clear what happens at the fork and join points. The way I figure it, those symbols inside the threads are supposed to be branches not forks. The third image is also from a <a href="http://www.codeproject.com/KB/cs/DisposeWindowsFormsApp.aspx">CodeProject page</a> &#8211; this time it&#8217;s a how-to about avoiding an exception when using multiple threads (<a href="http://www.codeproject.com/KB/cs/DisposeWindowsFormsApp/Solution_ThreadDiagram.JPG">original image</a>). It reminds me of a sequence diagram. There are no blocking states in the diagram and I figure in this particular application the threads are non-blocking so diagram fits the application perfectly. The fourth diagram I liked the most. It&#8217;s from the <a href="http://www.cs.mtu.edu/~shene/NSF-3/e-Book/">Multithreaded Programming with ThreadMentor</a> tutorial (<a href="http://www.cs.mtu.edu/~shene/NSF-3/e-Book/SEMA/DIAGRAM-smoker.jpg">original image</a>) and has special symbols for sending signals and waiting for signals.</p>
<p><a href="http://www.soa-world.de/echelon/wp-content/uploads/2009/06/threading.svg"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2009/07/threading.png" alt="threading" title="threading" width="450" height="555" class="alignnone size-full wp-image-313" /></a></p>
<p>So I gave it a try myself and tried to model a simple controller and worker thread scenario based on the last of the example diagrams I found. The gray boxes and circle represent a signaling concept where one thread can send a signal and the other thread waits until it receives the signal. I also included a shared variable that handles the task shutdown. One thread can set the variable and the other branches depending on that variable. I am not happy yet with this particular part of the image. If anyone has a better idea or pointer to resources on that topic feel free to leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2009/07/visualizing-multithreading.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My 25 favorite Windows Applications</title>
		<link>http://www.soa-world.de/echelon/2009/06/my-25-favorite-windows-applications.html</link>
		<comments>http://www.soa-world.de/echelon/2009/06/my-25-favorite-windows-applications.html#comments</comments>
		<pubDate>Wed, 17 Jun 2009 12:24:13 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=128</guid>
		<description><![CDATA[Here&#8217;s a list of my 25 favorite windows applications. They are all open source or free to use. By the way with most Linux distributions you get the functionality those tools provide right out of the box.

7-Zip is an open source file archiver with a high compression ratio. It supports all common archive types. Avast [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a list of my 25 favorite windows applications. They are all open source or free to use. By the way with most Linux distributions you get the functionality those tools provide right out of the box.</p>
<p><img src="http://www.soa-world.de/echelon/wp-content/uploads/2009/06/tools_logos_final1.jpg" alt="Favorite Windows Applications" title="tools_logos_final2" width="618" height="203" class="size-full wp-image-275" /></p>
<p><a href="http://www.7-zip.org/">7-Zip</a> is an open source file archiver with a high compression ratio. It supports all common archive types. <a href="http://www.avast.com/">Avast</a> is a free (for personal use) anti virus kit, that protects my system from all those nasty pieces of software out there. <a href="http://www.cygwin.com/">Cygwin</a> is an ingenious collection of tools that provides a Linux-like environment for Windows. You can use it with <a href="http://code.google.com/p/puttycyg/">puttycyg</a> to get a very easy to use Linux-like shell with all the tools you miss so badly on Windows. And for those good old DOS games you miss so much there&#8217;s <a href="http://www.dosbox.com/">DOSBox</a>, the x86 emulator with DOS. Check out a number of old free but totally awesome games you can play on the DOSBox <a href="http://www.abandonia.com/">here</a>. For file-transfers there&#8217;s <a href="http://filezilla-project.org/">FileZilla</a> for FTP and for SFTP there&#8217;s <a href="http://winscp.net/eng/index.php">WinSCP</a>. And of course there&#8217;s everybody&#8217;s favorite browsers <a href="http://www.mozilla.com/en-US/firefox/personal.html">Firefox</a> and <a href="http://www.opera.com/">Opera</a> for browsing and &#8216;being connected&#8217;. From what I hear <a href="http://www.opera.com/browser/next/">Opera 10</a> will be out any day now. For my document viewing, editing and creation needs I heavily rely on <a href="http://www.xm1math.net/texmaker/">Texmaker</a>, <a href="http://miktex.org/">MiKTeX</a>, <a href="http://pages.cs.wisc.edu/~ghost/gsview/">GSview</a> and of course <a href="http://www.openoffice.org/">OpenOffice.org</a>.</p>
<p>For image creation I just love <a href="http://www.inkscape.org/">Inkscape</a>. It has to be one of the greatest open source tools ever created. For graph creation I use <a href="http://www.gnuplot.info/">gnuplot</a> also I have to say I have been using the graphing tools of MATLAB a lot lately due to ease of use. For text and code editing I use either <a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> or <a href="http://www.vim.org/">Vim</a>. It depends on my mood really. To communicate online I use mostly the cute <a href="http://www.pidgin.im/">pidgin</a> universal chat client but I also sometimes log on to IRC using <a href="http://www.mirc.com/">mIRC</a>. For all my media and entertainment needs I have the great and famous <a href="http://www.videolan.org/vlc/">VLC</a> media player of course but I tend to use <a href="http://www.winamp.com/">Winamp</a> for audio playback. To download torrent files I use <a href="http://www.utorrent.com/">µTorrent</a> and to connect to remote servers I use <a href="http://chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>.</p>
<p>I use <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> for web development and the ingenious <a href="http://www.virtualbox.org/">VirtualBox</a> x86 virtualization software for testing on different systems. When my harddrives are a cluttered mess I use <a href="http://windirstat.info/">WinDirStat</a> to get a hold of the chaos and clean it up. And recently I accidentally deleted files from the SD-Card of my mobile phone and was able to recover them instantly using the awesome <a href="http://www.cgsecurity.org/wiki/PhotoRec">Photorec</a> data recovery software.</p>
<p>That&#8217;s it for my list. I hope someone out there will find this list useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2009/06/my-25-favorite-windows-applications.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search, search and communicate!</title>
		<link>http://www.soa-world.de/echelon/2009/06/search-search-and-communicate.html</link>
		<comments>http://www.soa-world.de/echelon/2009/06/search-search-and-communicate.html#comments</comments>
		<pubDate>Sat, 06 Jun 2009 23:21:10 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=257</guid>
		<description><![CDATA[There&#8217;s quite a lot going on in the ever interesting internet search and communication business these days. Wolfram launched its Wolfram&#124;Alpha search engine, Microsoft launched its new Bing search engine and Google demoed its newest product Wave. They also rather quietly released Google Squared. Here&#8217;s a graph generated with BlogPulse&#8217;s Trend Search showing the buzz [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s quite a lot going on in the ever interesting internet search and communication business these days. Wolfram launched its <a href="http://www.wolframalpha.com/">Wolfram|Alpha</a> search engine, Microsoft launched its new <a href="http://www.bing.com/">Bing</a> search engine and Google demoed its newest product <a href="http://wave.google.com/">Wave</a>. They also rather quietly released <a href="http://www.google.com/squared">Google Squared</a>. Here&#8217;s a graph generated with <a href="http://www.blogpulse.com/trend">BlogPulse&#8217;s Trend Search</a> showing the buzz these products created over the last month.</p>
<p><a href="http://www.blogpulse.com/trend?query1=wolfram+or+wolframalpha&#038;label1=wolfram+alpha&#038;query2=%22google+wave%22&#038;label2=google+wave&#038;query3=%22microsoft+bing%22+or+bing&#038;label3=microsoft+bing&#038;query4=%22google+squared%22+or+squared&#038;label4=google+squared&#038;days=60&#038;x=36&#038;y=8"><img src="http://www.soa-world.de/echelon/wp-content/uploads/2009/06/200906061646094imd4l3horhps0gcwh5a.png" alt="Search and communication product buzz" title="Search and communication product buzz" width="500" height="300" class="alignnone size-full wp-image-262" /></a></p>
<p>I admit the graph is a bit ambiguous and it would be much better to count the number of links in blog posts that link to the respective product. But let&#8217;s just assume that the graph is an accurate representation of the buzz those products created.</p>
<p>So Wolfram. I like what they did but have a couple of problems with it. For one I feel like they kind of not understood what it is all about these days. They ignore collaboration, wisdom of the crowd, free knowledge and all that good stuff we have today. But they don&#8217;t want that, they want scientific accuracy and control over their content. That&#8217;s fine I think but I would have loved to see all those smart people to contribute to a project like <a href="http://www.wikipedia.com/">Wikipedia</a> or <a href="http://www.freebase.com/">freebase</a>. And maybe they could have dedicated some of their enormous brainpower to finally getting <a href="http://en.wikipedia.org/wiki/Natual_Language_Processing">NLP</a> off the ground to provide a nice interface to all the information out there and to establish some ground rules about how we should do NLP.</p>
<p>Bing, well &#8211; pretty pictures. That&#8217;s really all it is for me personally. The name is certainly better than their Live Search thing but I don&#8217;t like the interface at all. </p>
<p>And then for Google Wave: I really hope this product will not succeed and will not revolutionize anything. It&#8217;s in the first few minutes of the demo why it would be very scary to have Wave around. Lars Rasmussen says that E-Mail is bad because it&#8217;s peer to peer, not very comfortable and whatnot. So he proposes to put the Wave (i.e. Google) in the middle of all that communication. Scary.</p>
<p>What&#8217;s really awesome is <a href="http://www.google.com/squared">Google Squared</a>. It&#8217;s by no means perfect &#8211; still a lot of rough edges &#8211; but has a lot of potential. I hope to see some serious work done on that thing and maybe an API for us developers to play with and create new things.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2009/06/search-search-and-communicate.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertig CSV files to LibSea graph files for CAIDA&#8217;s Walrus</title>
		<link>http://www.soa-world.de/echelon/2008/10/convertig-csv-files-to-libsea-graph-files-for-caidas-walrus.html</link>
		<comments>http://www.soa-world.de/echelon/2008/10/convertig-csv-files-to-libsea-graph-files-for-caidas-walrus.html#comments</comments>
		<pubDate>Sun, 05 Oct 2008 10:09:47 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=138</guid>
		<description><![CDATA[Quite a few responses to my posts about social network visualization with Walrus contained questions about how to create the input files for Walrus. Walrus itself is very well documented and the LibSea graph file format is also explained in detail. But people seem to run into trouble when trying to create the spanning tree [...]]]></description>
			<content:encoded><![CDATA[<p>Quite a few responses to <a href="http://www.soa-world.de/echelon/2008/09/visualization-of-social-network-reloaded.html">my</a> <a href="http://www.soa-world.de/echelon/2007/01/visulization-of-social-network.html">posts</a> about social network visualization with <a href="http://www.caida.org/tools/visualization/walrus/">Walrus</a> contained questions about how to create the input files for Walrus. Walrus itself is very well documented and the <a href="http://www.caida.org/tools/visualization/libsea/">LibSea</a> graph file format is also explained in detail. But people seem to run into trouble when trying to create the <a href="http://en.wikipedia.org/wiki/Spanning_tree_(mathematics)">spanning tree</a> required for Walrus.<br />
<img src="http://www.soa-world.de/echelon/wp-content/uploads/2008/10/walruscsv1.gif" alt="" title="walruscsv logo" width="302" height="77" class="alignnone size-full wp-image-149" style="float: left; padding-right: 5px;"/><br />
The Walrus documentation states that it only makes sense to visualize data that contain a meaningful spanning tree and that visualizations created with the help of an arbitrary spanning tree are not very useful. While that&#8217;s probably true the visualizations still look awesome. And I guess that&#8217;s what people want. Furthermore Raffael Marty from <a href="http://secviz.org/">secviz.org</a> contacted me and asked if I had a tool that could read CSV files as input and output a LibSea file for Walrus. </p>
<p>I didn&#8217;t have such a tool but it sounded like a fun challenge and I thought that such a tool might also help all the people who run into trouble when trying to create a spanning tree for their graphs. So I created walruscsv &#8211; a command line tool written in C++ that reads a CSV and outputs a LibSea graph file that can be visualized with Walrus. The CSV file hast to contain a link in each row and consist of 2 columns. The first column in each row represents the first node of the link and the second column the second node of the link. It automatically generates an <em>arbitrary</em> spanning tree.</p>
<p>A sample CSV file containing the links node1<->node2, node1<->node3, node3<->node4 could look like this:</p>
<p class="codebox">
node1,node2<br />
node1,node3<br />
node3,node4
</p>
<p>Although Walrus is only capable of visualizing one network at a time walruscsv can handle multiple networks in one CSV file. It creates an arbitrary node and connects a node of each network to that node enabling Walrus to visualize the data. Currently the tool creates an arbitrary spanning tree so it&#8217;s not weighted and therefore not minimal.</p>
<p>Walruscsv reads the name of the CSV file to process as the first command line parameter passed to it. It is released under a non restrictive open source license so in addition to binaries the source code is provided. To compile it using the <a href="http://gcc.gnu.org/">GNU C++ compiler</a> simply type:</p>
<p class="codebox">g++ wlink.cpp main.cpp wtree.cpp -o walrus.exe
<p>
You can use the program by typing</p>
<p class="codebox">walrus.exe testfile1.csv
<p>
whereas testfile1.csv is the CSV file containing the graphs you want to visualize. Bloodshed <a href="http://www.bloodshed.net/devcpp.html">Dev-C++</a> can also be used to compile the code and although I didn&#8217;t try it it should also work with C++ compilers from Microsoft (e.g. using Visual Studio). Here are the files:</p>
<p><a href="http://www.soa-world.de/dev/walruscsv/walruscsv.zip">Source code</a> (the source code released to the public domain)<br />
<a href="http://www.soa-world.de/dev/walruscsv/testdata.zip">Test files</a> (a collection of test CSV files)<br />
<a href="http://www.soa-world.de/dev/walruscsv/walruscsv-win32.zip">Win32 binary</a><br />
<a href="http://www.soa-world.de/dev/walruscsv/walruscsv-debian-x86_64.zip">Debian x86 64bit binary</a></p>
<p>If you&#8217;re having trouble using or compiling the tool or if you have suggestions or comments of if you find a bug feel free to <a href="mailto:echelon.blog@gmail.com">contact me</a> or leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2008/10/convertig-csv-files-to-libsea-graph-files-for-caidas-walrus.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chrome Buzz</title>
		<link>http://www.soa-world.de/echelon/2008/09/chrome-buzz.html</link>
		<comments>http://www.soa-world.de/echelon/2008/09/chrome-buzz.html#comments</comments>
		<pubDate>Fri, 05 Sep 2008 10:21:51 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=103</guid>
		<description><![CDATA[Here&#8217;s my try to create one of the cool trend graphs Matthew Hurst regularly entertains us with. I used blogpulse.com/trend to create the following graph:

Looks like the Chrome buzz easily surpassed the Firefox3 release buzz. Quite impressive. Unfortunately blogpulse&#8217;s trend tool allows users only to look 6 months into the past. It would be very [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s my try to create one of the cool trend graphs <a href="http://datamining.typepad.com/" alt="Datamining blog by Matthew Hurst">Matthew Hurst</a> regularly entertains us with. I used <a href="http://blogpulse.com/trend">blogpulse.com/trend</a> to create the following graph:</p>
<p><img src='http://soa-world.de/echelon/uploaded_images/chromebuzz.png' alt='Chrome vs Firefox Buzz' class='alignnone' /></p>
<p>Looks like the Chrome buzz easily surpassed the Firefox3 release buzz. Quite impressive. Unfortunately blogpulse&#8217;s trend tool allows users only to look 6 months into the past. It would be very interesting to have events such as the release of Internet Explorer 7 or the announcement of Safari for Windows on that graph too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2008/09/chrome-buzz.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random Pixel Tile Map Generator</title>
		<link>http://www.soa-world.de/echelon/2008/08/random-pixel-tile-map-generator.html</link>
		<comments>http://www.soa-world.de/echelon/2008/08/random-pixel-tile-map-generator.html#comments</comments>
		<pubDate>Fri, 08 Aug 2008 08:44:08 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=102</guid>
		<description><![CDATA[I found something to do that connects the things that interest me most at the moment: automatically generated game content, number juggling in Matlab, browser games and pixel art. I&#8217;m not much of an artist so all I can do regarding pixel art is being astonished about the marvelous things pixel artists are able to [...]]]></description>
			<content:encoded><![CDATA[<p>I found something to do that connects the things that interest me most at the moment: automatically generated game content, number juggling in Matlab, browser games and pixel art. I&#8217;m not much of an artist so all I can do regarding pixel art is being astonished about the marvelous things <a href="http://www.wayofthepixel.net/" alt="wayofthepixel.net Pixel Art Board">pixel artists</a> are able to do. However being a programmer I thought of a way to circumvent the art part and still create something cool. So the idea is to let the computer create the art by means of a random number generation and some number juggling.</p>
<p><img style="float:left; padding-right: 15px;" src="http://www.soa-world.de/dev/tylor/all.gif" alt="Pixel Tiles" /> I wrote a script that creates a pixel tile based map from a random height map and created 6 pixel tiles for the different heights. I wanted water, a beach, nice grasslands and icy mountains. To generate the height map I used Matlab. I tried a couple of different techniques and finally ended up using a <a href="http://freespace.virgin.net/hugo.elias/models/m_perlin.htm" alt="Perlin Noise Explanation">perlin noise</a> algorithm.</p>
<p>I also experimented with a simple Gaussian distribution random number generator and tried to fit the numbers to my needs. However it turned out to be &#8216;too&#8217; noisy as I was aiming for continents and large mountain ranges. The Gaussian distribution however gave me only small islands. I tried to smooth it with different filters which made it a little better but I realized the numbers where fundamentally different from what I wanted.</p>
<p><a href="http://www.soa-world.de/dev/tylor/tiles.gif" alt="Tilemap created with Gaussian Distribution of Random Numbers"><img style="float:left; margin-right: 15px;" src="http://www.soa-world.de/dev/tylor/tiles.png" alt="Tilemap created with Gaussian Distribution of Random Numbers" /></a><a href="http://www.soa-world.de/dev/tylor/tiles2.gif" alt="Tilemap created with Gaussian Distribution of Random Numbers and Gaussian Blur"><img style="float:left; margin-right: 15px;" src="http://www.soa-world.de/dev/tylor/tiles2.png" alt="Tilemap created with Gaussian Distribution of Random Numbers and Gaussian Blur" /></a><a href="http://www.soa-world.de/dev/tylor/tiles3.gif" alt="Tilemap2 created with Perlin Noise"><img style="float:left; margin-right: 40px; margin-bottom:16px;" src="http://www.soa-world.de/dev/tylor/tiles3.png" alt="Tilemap2 created with Perlin Noise" /></a></p>
<p>The image on the left is created with Gaussian distribution, the second has a 7&#215;7 Gaussian blur filter applied 3 times and the third one is created with Perlin noise. Go ahead and click on the images to view the full size version. They are quite large so they might take a second to load. I got the matlab code for the Perlin noise generator from <a href="http://www.nullprogram.com/" alt="Christopher Wellons' blog">Christopher Wellons&#8217;</a> blog post about <a href="http://www.nullprogram.com/index.cgi/2007/11/20" alt="Noise Fractals and Clouds">Noise Fractals and Clouds</a>. He wrote it for <a href="http://www.gnu.org/software/octave/" alt="GNU Octave">GNU Octave</a>, a tool which I have to try out yet. To use it in Matlab only a slight modification was necessary:<br />
<code>
<pre>
function s = perlin (m)
  s = zeros(m);                                    % output image
  w = m;                                 % width of current layer
  i = 0;                                             % iterations

  while w > 3
    i = i + 1;
    d = interp2(randn(w), i-1, 'spline');
    s = s + i * d(1:m, 1:m);
    w = w - ceil(w/2 - 1);
  end
end
</pre>
<p></code>Now this looks quite inconspicuous but there&#8217;s quite something to those 11 lines of code. The interp2() function recursively expands the matrix returned by rand(w) i-1 times with spline interpolation. This contains the frequency of the the function and the i in the following line represents the amplitude. Quite elegant really! The only thing to criticize about this code is probably that it can&#8217;t exploit the fact that Perlin noise can create continuous noise resulting in an infinite world. To do that I guess you need a seeded random number generator. Matlab let&#8217;s you save and restore the state of the generator with:<br />
<code>
<pre>s = randn('state');          %save state to s
randn('state',s);            %restore state from s</pre>
<p></code> which might enable you to accomplish just that. And finally <a href="http://www.soa-world.de/dev/tylor/tylor.php" alt="Tylor PHP script">here&#8217;s a PHP script</a> that let&#8217;s you generate a map based on a height map in a CSV File (<a href="http://www.soa-world.de/dev/tylor/data.csv" alt="Height map sample file">sample file</a>). Be warned though: PHP is a very bad choice to do these kinds of things and the script is therefore very slow. A ZIP file containing the PHP script, the test data and the 6 separate pixel tiles can be downloaded from <a href="http://www.soa-world.de/dev/tylor/tylor.zip" alt="Tiles ZIP file">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2008/08/random-pixel-tile-map-generator.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fourth Prototype</title>
		<link>http://www.soa-world.de/echelon/2008/07/fourth-prototype.html</link>
		<comments>http://www.soa-world.de/echelon/2008/07/fourth-prototype.html#comments</comments>
		<pubDate>Mon, 21 Jul 2008 17:26:39 +0000</pubDate>
		<dc:creator>Sebastian Schaetz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.soa-world.de/echelon/?p=100</guid>
		<description><![CDATA[Prototype Updated (see below).
There&#8217;s a great old space strategy game called &#8220;Ascendancy&#8221; (download and play with DosBox). One unique feature of the game is the intriguing 3D map of the universe. It&#8217;s from 1995 and now in 2008 such a 3D map can easily be implemented. But I like browser based games so the challenge [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Prototype Updated</strong> (see below).</p>
<p>There&#8217;s a great old space strategy game called &#8220;Ascendancy&#8221; (<a href="http://www.abandonia.com/en/games/221/Ascendancy.html" alt="download Ascendancy">download</a> and play with <a href="http://www.dosbox.com/" alt="DosBox">DosBox</a>). One unique feature of the game is the intriguing 3D map of the universe. It&#8217;s from 1995 and now in 2008 such a 3D map can easily be implemented. But I like browser based games so the challenge was to implement the thing inside the browser. Turns out that&#8217;s also not very complicated when using the <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)" alt="canvas tag wikipedia page">canvas tag</a> supported by Firefox, Safari (Webkit) and Opera browsers. Here&#8217;s a warning for Internet Explorer users: the prototype won&#8217;t work very well. I&#8217;m using Google&#8217;s <a href="http://code.google.com/p/explorercanvas/" alt="Explorercanvas Google Code page">Explorercanvas</a> &#8211; it emulates canvas-tag behavior but it is therefor very slow. So please consider using one of the afore mentioned browsers to test it. </p>
<p><a href="http://www.soa-world.de/dev/release4/index.html"><span style="font-size:130%;">Go ahead and start the prototype.</span></a></p>
<p>A random universe is created and rotates around the y-axis. You may change the continuous rotation axis, activate and deactivate starlanes, change the number of stars, change the size of stars, change the number of starlanes and change the rotation speed. You can also rotate the universe by moving the mouse over one of the arrows in the small coordinate system on the right. Additionally you can select stars by clicking on them. This works best when the stars are not moving and when they are not too small.  Here&#8217;s an image of the whole thing:</p>
<p><a href="http://www.soa-world.de/dev/release4/index.html"><img src='http://soa-world.de/dev/release4/blogimg.gif' alt='Ascendancy Starmap' /></a></p>
<p>It should work reasonably well depending on the number of elements displayed and your hardware specifications. I found that Opera renders the universe a tad faster than Firefox. I&#8217;m using <a href="http://prototypejs.org/" alt="Prototype javascript library">Prototype</a> and the <a href="http://script.aculo.us/" alt="Script.aculo.us javascript library">Script.aculo.us</a> slider to help out with the Javascript and the user interface.</p>
<p>Three things I still have to iron out: 1) dragging the universe with the mouse 2) zooming and 3) the depth is not correct. This is visible when rendering large stars. Stars are always drawn in the same order and a star actually behind another one could be drawn in front of it. But that&#8217;s hardly visible when using smaller stars so I think it&#8217;s alright for now.</p>
<p>The code is released under a non restrictive open source license. The source code is fairly well documented (use tab size of 2). Have fun.</p>
<p><strong>Update:</strong> A <a href="http://isasa-new.blogspot.com/" alt="Saskia's blog">friend</a> of mine pointed out that the prototype reminded her of a lottery drawing. I don&#8217;t think she&#8217;s very much into space and science fiction mumbo jumbo or computer games for that matter but she&#8217;s got a point. Galaxies don&#8217;t look like that! So I added a spiral galaxy generator to the prototype. The code is based on a very good <a href="http://www.gamedev.net/reference/articles/article1337.asp" alt="Making Galaxies">article called &#8220;Making Galaxies&#8221;</a>. I added the calculation of the third dimension so that the height of the galaxy disk is small in the center and high at the edge.</p>
<p>In spiral galaxy mode you need a lot of stars to actually see a nice galaxy (say 600). The starsize should also be reduced. In case you feel like playing around with the galaxy generator, here&#8217;s the testscript I used: <a href="http://www.soa-world.de/dev/release4/galaxy.html" alt="Galaxy creator testscript">galaxy.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soa-world.de/echelon/2008/07/fourth-prototype.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
