<?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>.simplicity &#187; Programming</title>
	<atom:link href="http://www.dotsimplicity.net/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dotsimplicity.net</link>
	<description>Simple, reliable, simplicity. A software discussion blog</description>
	<lastBuildDate>Sun, 04 Jul 2010 09:44:42 +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>Welcome to the world of Haskell!</title>
		<link>http://www.dotsimplicity.net/2010/02/welcome-to-the-world-of-haskell/</link>
		<comments>http://www.dotsimplicity.net/2010/02/welcome-to-the-world-of-haskell/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 20:34:27 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=519</guid>
		<description><![CDATA[In the past three months I have had the pleasure of learning a strange yet interesting new programming language: Haskell. Initially I was quite sceptical about this language. After all, some of the most basic (imperative) concepts I knew looked so hard to implement in Haskell. And the fact that people allegedly had finally found [...]]]></description>
			<content:encoded><![CDATA[<p>In the past three months I have had the pleasure of learning a strange yet interesting new programming language: Haskell. Initially I was quite sceptical about this language. After all, some of the most basic (imperative) concepts I knew looked so hard to implement in Haskell. And the fact that people allegedly had finally found some use for functional programming languages, did not really excite me either. But in the end, Haskell turned out to be quite fun.</p>
<p>In this article I would like to look at some Haskell features I really liked. As I know that most of our readers are not Haskell experts I have decided to keep it quite general and simple.</p>
<h2>Function transformations</h2>
<h3>Function composition</h3>
<p>Function composition is a technique of combining two functions into one function.</p>
<p>f1 . f2</p>
<p>This says that function <i>f1</i> should be applied to the result of applying <i>f2</i> to its first parameter. So, above code could be rewritten to:</p>
<p>(.) f g = h<br />
   where h x = f (g x)</p>
<p>The type of <i>h</i> can be deduced like this:</p>
<p>f :: a -&gt; b<br />
g :: b -&gt; c<br />
&#8211; Thus:<br />
h :: a -&gt; c </p>
<h3>Function application</h3>
<p>Function application is not exactly a very exciting feature, but it is helpful as it helps you to get rid of annoying extra parantheses.</p>
<p>f1 $ f2</p>
<p>This says that function <i>f1</i> should be applied to the result of function <i>f2</i>. Now you are probably what the difference is with <i>f1 f2</i>. </p>
<p>When you simply type <i>f1 f2</i>, <i>f2</i> is considered as a parameter for <i>f1</i> and all of the parameters of <i>f2</i> will be considered as n-ary parameters of <i>f1</i>. When you type <i>f1 $ f2</i> you first apply <i>f2</i> to all the following parameters, and <i>f1</i> is then applied to the result of <i>f2</i>.</p>
<p>So, for example:</p>
<p>sum x y z = x + y + z</p>
<p>successor x = x + 1 &#8212; A better alternative is discussed in the next section!</p>
<p>test1 = successor sum 1 2 3   &#8212; Will not work. After all, you cannot take the successor of a function.<br />
test2 = successor $ sum 1 2 3</p>
<h3>Partial parameterisation</h3>
<p>Partial parameterisation is a technique to partially satisfy a function. This technique can be used to create new specialized functions.</p>
<p>For example, if we would want to declare a function that gives us the successor of the given integer, we could simply write:</p>
<p>successor = (+) 1</p>
<p>or</p>
<p>successor = (+1)</p>
<p>This would make the following example valid:</p>
<p>&gt; successor 41<br />
42<br />
&gt; successor $ successor 41<br />
44</p>
<p><i>successor</i> is of course an incredibly easy example of partial parameterisation, and it might give you the impression that its just a gimmick. However, in combination with function application and function composition its an incredibly useful mechanism. </p>
<p>A slightly more complex example, is a function that gives us the successors of all elements in the given list.</p>
<p>successors = map (+1)</p>
<h2>Operators</h2>
<p>Another cool feature of Haskell is the ability to define your own operators. As this is actually rather simple I am not going to spend much attention to it.</p>
<p>Lets say we would want to express addition and substraction through smilies. It could be done like this:</p>
<p>x ^-^ y = x + y<br />
x -.- y = x &#8211; y </p>
<p>Or with partial parameterisation in our mind:</p>
<p>(^-^) = (+)<br />
(-.-) = (-)</p>
<p>Which would make the following valid:</p>
<p>&gt; 1 ^-^ 2<br />
3<br />
&gt; 3 -.- 1<br />
2</p>
<p>In the latter definition you can see how operators can also be used as functions: you simply put parantheses around them. And the fun thing is that a similar trick can be applied to functions with two parameters:</p>
<p>min :: Int -&gt; Int -&gt; Int<br />
min = (-)</p>
<p>&gt; 3 `min` 1<br />
2</p>
<p>In order to use a function as a operator you have to put backquotes around it.</p>
<p>Again, this might seem like a gimmick, but it can be pretty useful in the field of &#8220;symbolic evaluation&#8221;. But more on that another time.</p>
<h2>Lazy evaluation</h2>
<p>Lazy evaluation is one of the most powerful features, if not the most powerful feature, of Haskell. Lazy evaluation is the technique of delaying a computation until the result is required. This means that the data that is required for a computation is retrieved at the moment that the computation is actually executed. This makes it possible, for example, to work with lists of infinite length without actually computing the complete list. As lazy evaluation is beyond the scope of this article I would like to refer interested readers to <a href="http://en.wikipedia.org/wiki/Lazy_evaluation">Wikipedia</a>, which has a nice article on the matter.</p>
<p>And with that I would like to conclude my first article about Haskell. I hope you enjoyed reading it. And as always: if you have questions or comments feel free to post them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2010/02/welcome-to-the-world-of-haskell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Re: Language</title>
		<link>http://www.dotsimplicity.net/2009/11/re-language/</link>
		<comments>http://www.dotsimplicity.net/2009/11/re-language/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:05:41 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Idea]]></category>
		<category><![CDATA[Language Recognizer]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=507</guid>
		<description><![CDATA[These features are pending proof of concept implementation. Currently I’m very busy with my study and my job and Maurice is as well so you probably won’t see anything anytime soon. But to be honest, from my side it’s also laziness. But today I sat down and wanted to come up with some algorithms.

Some definitions [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">These features are pending proof of concept implementation. Currently I’m very busy with my study and my job and Maurice is as well so you probably won’t see anything anytime soon. But to be honest, from my side it’s also laziness. But today I sat down and wanted to come up with some algorithms.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span id="more-507"></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">Some definitions for the following paragraphs:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Text: any text. Can be a complete book, a word, a sentence, etc.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">LR&lt;Languages&gt;: Language Recognizer for the languages.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="white-space: pre;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Possible applications of the LR</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<h2>Advanced Texthelper</h2>
<h3>Features</h3>
<h5>Can correct words without a dictionary: recognizes when something probably isn’t a word.</h5>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">A word of length X has an average score of AVG. If there is a word with length X and its score is lower with significance S, then the word probably isn’t a word in the current language. I don’t know how to determine significance S.</p>
<h5>Can correct sentences, since it also recognizes sentence structures.</h5>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Basically the same as the word recognition, but for sentences.</p>
<h5>Can auto-complete sentences (and parts thereof).</h5>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">Since the LR keeps tracks of how many times a word follows another word, it should be able to predict what word you are going to type, which could speed up writing a text. As you read, a lot of shoulda coulda woulda, but maybe we are clever enough to pull this off.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;">
<h2>Language Recognizer<span style="white-space: pre;"> </span></h2>
<h3>Features</h3>
<h5>Can tell if text A is more English than text B</h5>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">If text A scores higher on LR&lt;English&gt; than B, A is more likely to be english than B.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><em>Test results indicate very few false positives with a simple implementation.</em></p>
<h5>Can help for auto-recognizing if something is human readable text.</h5>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;">If a text gets a higher score than previous texts, the text is more likely to be human readable text, which is useful for the “recovery” of encrypted text.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/11/re-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HAI! / Language</title>
		<link>http://www.dotsimplicity.net/2009/11/hai-language/</link>
		<comments>http://www.dotsimplicity.net/2009/11/hai-language/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 20:56:29 +0000</pubDate>
		<dc:creator>Maurice</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Idea]]></category>
		<category><![CDATA[Language Recognizer]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=499</guid>
		<description><![CDATA[Hello World! I&#8217;m Maurice, I&#8217;m new to .simplicity, nice to meet you, etc.
Language
I&#8217;ve been experimenting with some fun stuff lately, it involves language, programming, password-dictionaries, spell checkers, and more   .


Get a file with a lot of words (i.e. a spell checker dictionary).
Count the occurrences of N-letter-groups in those words. (example with N = [...]]]></description>
			<content:encoded><![CDATA[<p>Hello World! I&#8217;m Maurice, I&#8217;m new to .simplicity, nice to meet you, etc.</p>
<h2>Language</h2>
<p>I&#8217;ve been experimenting with some fun stuff lately, it involves language, programming, password-dictionaries, spell checkers, and more <img src='http://www.dotsimplicity.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p><span id="more-499"></span></p>
<ol>
<li>Get a file with a lot of words (i.e. a spell checker dictionary).</li>
<li>Count the occurrences of N-letter-groups in those words. (example with N = 3: &#8220;hello&#8221;, hel++, ell++, llo++)</li>
<li>Find high-scoring letter-groups which overlap (ie. &#8220;hel&#8221; + &#8220;ell&#8221; = &#8220;hell&#8221;) to form a word. (Obviously, repeat this to form bigger words)</li>
</ol>
<p>Using an English dictionary, this gives output such as: &#8220;anteringlogratio&#8221;, &#8220;callinesthesional&#8221; and &#8220;prestionistering&#8221;. Altough those words are absolutely not English words (as far as I know), they look pretty English. Cool huh?</p>
<p>It can obviously also create &#8216;fake words&#8217; in other languages, by using other dictionaries. For example, using a Dutch dictionary: &#8220;verderendelijker&#8221;, &#8220;heiderdelijkeren&#8221; and &#8220;eerderingelijkerigen&#8221;. (I&#8217;m Dutch, and I can tell you those words are easy to read and pronounce, altough they mean nothing to me)</p>
<p>I can hear you thinking: &#8220;Nice, but why&#8217;d you ever need to create &#8216;fake words&#8217; ?&#8221;.<br />
Well, for example, we could expand a password-dictionary by generating new passwords from the passwords already in there. This gives new passwords wich are likely to be passwords, instead of the 99% of garbage from a simple brute-forcer.</p>
<p>Also, if we can create words that seem to belong to some language, we can probably also recognize if something could be a real word.</p>
<p>We could create a program wich can tell random sequences of letters and real words apart by giving the words an &#8216;Englishness-score&#8217;, the more it uses high-scoring letter-groups, the higher the score. This might come in handy while brute-forcing a password for some text file. The program could detect if it succesfully decrypted the file, or just got some garbage-output. Or we could create a smart spell checker wich can check and correct words even when they&#8217;re not in the dictionary. If &#8216;hello&#8217; has a much higher score than &#8216;helllo&#8217;, the user probably wanted to type &#8216;hello&#8217;. Or a language-recognizer, if all the words have a higher &#8216;Dutchness-score&#8217; than &#8216;Englishness-score&#8217;, it&#8217;s probably not an English text.</p>
<p>When we take this a level higher, not using words and letter-groups, but sentences and word-groups, the awesomeness grows exponentially. A spell checker could simply correct &#8220;Ive is fun&#8221; to &#8220;Ice is fun&#8221;, but &#8220;Ive been running&#8221; to &#8220;I&#8217;ve been running&#8221;. An internet spider could tell real text apart from those random-keywords-pages. Lots of possibilities.</p>
<p>Anyway, I&#8217;ll try to code some of this stuff to see how well it all works, stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/11/hai-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Gaming Alliance &#8211; Continued</title>
		<link>http://www.dotsimplicity.net/2009/11/free-gaming-alliance-continued/</link>
		<comments>http://www.dotsimplicity.net/2009/11/free-gaming-alliance-continued/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 16:30:10 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Alliance]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=494</guid>
		<description><![CDATA[Some while ago I wrote an article about the Free Gaming Alliance, an organization that could help with the promotion and development of Free Open Source Games. At the time that I wrote that article I was not sure how well it would be received by the public. In the end the reactions turned out [...]]]></description>
			<content:encoded><![CDATA[<p>Some while ago I wrote an article about the <a href="http://www.dotsimplicity.net/2009/06/free-gaming-alliance/">Free Gaming Alliance</a>, an organization that could help with the promotion and development of Free Open Source Games. At the time that I wrote that article I was not sure how well it would be received by the public. In the end the reactions turned out to be fairly positive.</p>
<p>Lets start with a reply to the original article. Some while after the article was published on .simplicity Valentin Anastase from the non-profit organization <a href="http://www.freezingmoon.org/">Freezing Moon</a> replied. He provided a link to two sites, including Freezing Moon&#8217;s, dedicated to free gaming. Freezing Moon comes close to the idea that I sketched in the previous article, but it is not completely the same. Opposed to the Free Gaming Alliance, Freezing Moon actually develops games themselves. While I think that we should first deal with other issues concerning free gaming, I am happy to see an initiative like Freezing Moon and I encourage people to check it out.</p>
<p>Another interesting development can be found at <a href="http://www.opengameart.org/">OpenGameArt.org</a>. OpenGameArt.org is a website that hosts &#8220;free, legal art for open source game projects&#8221;. It started small, but the amount of art has been growing fast. And the art that is being hosted on OpenGameArt.org is certainly not bad; it looks very good. If you are looking for art for your Free Open Source Game or want to support free game art (OpenGameArt.org accepts donations), then definitely check OpenGameArt.org.</p>
<p>So, there are initiatives focused on Free Open Source Gaming, but what about me? Through Sirrf I am trying to improve the Free Open Source Gaming ecosystem. I am wondering if I can have an impact on it in other ways, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/11/free-gaming-alliance-continued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.simplicity Code and Java Sigslot Event System</title>
		<link>http://www.dotsimplicity.net/2009/10/simplicity-code-and-java-sigslot-event-system/</link>
		<comments>http://www.dotsimplicity.net/2009/10/simplicity-code-and-java-sigslot-event-system/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 13:09:25 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Sigslot]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=482</guid>
		<description><![CDATA[Today we are launching .simplicity Code. .simplicity Code is a project created to maintain open-source projects from .simplicity that are too small to be considered as full-blown projects, but too big to be considered as simple code snippets. We are launching this project, because we often work on small projects without any other target audience [...]]]></description>
			<content:encoded><![CDATA[<p>Today we are launching <a href="http://code.dotsimplicity.net/">.simplicity Code</a>. .simplicity Code is a project created to maintain open-source projects from .simplicity that are too small to be considered as full-blown projects, but too big to be considered as simple code snippets. We are launching this project, because we often work on small projects without any other target audience than ourselves. These projects are the typical projects that are started out of self-interest. We recognize, though, that the code we write for these projects can be of interest to our visitors. .simplicity Code offers us the opportunity to publish this code, without having to offer complete support as a full-blown project would require. As a matter of fact most projects on .simplicity Code will have limited to no support. That does not mean that you will find junk on .simplicity Code. On the contrary, you will find that the code will be most of the time of the same quality as our bigger projects.</p>
<p><span id="more-482"></span></p>
<p>The first project that you can find on .simplicity Code is the <i>.simplicity Java Sigslot Event System</i>. This is, as the name already says, an implementation of a sigslot event system in Java. A sigslot event system allows the programmer to connect components within a system without that those components know with who they are actually connected. Furthermore this system can also be used as a broadcasting system for sending information to multiple subscribed components. Sigslot event systems can be applied in various different cases, such as component-based entity systems and graphical user interfaces.</p>
<p>But lets look at some example code using the <i>.simplicity Java SigSlot Event System</i>:</p>
<pre class="brush: java;">
// Import classes
import java.applet.Applet;

import java.awt.Graphics;
import java.awt.event.*;

import net.dotsimplicity.events.awt.AWTEventsContainer;

// EventApplet class
public class EventApplet extends Applet
{
    // Public methods
    // Initialize the applet.
    public void init()
    {
       // Create an AWT EventsContainer.
       AWTEventsContainer container = new AWTEventsContainer(&quot;applet&quot;, this);

       // Add a mouse moved event.
       container.addMouseMotionListener();
       container.connectEventSlot(&quot;mouseMoved&quot;, this, &quot;onMouseMoved&quot;);

       // Add a custom event.
       container.createEvent(&quot;print&quot;, String.class);
       container.connectEventSlot(&quot;print&quot;, this, &quot;onPrint&quot;);
       container.emitEventSignal(&quot;print&quot;, &quot;Hello, World!&quot;);
    }

    // Paint the applet.
    public void paint(Graphics g)
    {
       g.drawString(&quot;X: &quot; + this.x + &quot;, Y: &quot; + this.y, 10, 15);
       g.drawString(this.message, 10, 30);
    }

    // Handle mouseMoved events.
    public void onMouseMoved(MouseEvent event)
    {
       this.x = event.getX();
       this.y = event.getY();
       this.repaint();
    }

    // Handle print events.
    public void onPrint(String string)
    {
       this.message = string;
    }

    // Private members
    private static final long serialVersionUID = 1;
    private int x, y;
    private String message;
}

// End of File
</pre>
<p>In the above example we have created an applet that uses our sigslot event system to handle mouseMoved events. Please note that we do not have to implement the MouseMotionListener interface; you are free to only implement those features that you need under whatever name you choose. That means that you no longer have to implement six empty methods if you want to use one feature of the WindowListener, for example.</p>
<p>Furthermore we also use our event system to transmit a signal with the message &#8220;Hello, World!&#8221;. In this particular appliance this is a rather useless operation, but it demonstrates in a simple way how we can use our system for broadcasting. Note that you can also use the relatively simpler EventsContainer for this appliance; this class provides all methods that the AWTEventsContainer provides except for the AWT specific methods.</p>
<p>Well, that is all for now. We hope that .simplicity Code will be of use to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/10/simplicity-code-and-java-sigslot-event-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sirrf version 0.2.1 released!</title>
		<link>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-1-released/</link>
		<comments>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-1-released/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 13:00:59 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Irrlicht]]></category>
		<category><![CDATA[Sirrf]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=465</guid>
		<description><![CDATA[0.2.1 is here, 9 days later the simple irrlicht framework team re-emerges with a feature and bug release. Some bugs have been fixed and some new features introduced, the changes include : 

Script-side GameStates
It is now truely possible to derive from the GameState class (through CGameState) in scripts. A bug in previous versions prevented this, [...]]]></description>
			<content:encoded><![CDATA[<p>0.2.1 is here, 9 days later the simple irrlicht framework team re-emerges with a feature and bug release. Some bugs have been fixed and some new features introduced, the changes include : </p>
<ul>
<li><strong>Script-side GameStates</strong><br />
It is now truely possible to derive from the GameState class (through CGameState) in scripts. A bug in previous versions prevented this, but this bug has now been fixed. </li>
<p></p>
<li><strong>Script-side Components</strong><br />
EntityComponent can be derived from script-side (through CEntityComponent), classes in script can now create components and register them with entities from script or engine side. </li>
<p></p>
<li><strong>Script-side Events</strong><br />
The event system is now integrated into the script engine. Script-side classes can derive from IHasSlots and can register, connect and disconnect from slot events. </li>
<p></p>
<li><strong>Important Bug Fixes: </strong>
<ul>
<li>Construction of entity components with parent is now relatively safe. If you are not sure whether your component has a parent, check it after construction. If the component has no parent, destroy it as quickly as possible </li>
<li>AssetProcessors on windows were never loading assets unless the files were all lowercase, restrictions were irrlicht related but solved. </li>
<li>Minor bug fixes with script side things, Scolor fixes, asset groups on entities and much much more. </li>
</ul>
</ul>
<p></p>
<p><strong>Useful links</strong><br />
SourceForge.net page &#8211; <a href="http://sourceforge.net/projects/sirrf">http://sourceforge.net/projects/sirrf</a><br />
Downloads &#8211; <a href="http://sourceforge.net/projects/sirrf/files/">http://sourceforge.net/projects/sirrf/files/</a> | <a href="http://www.ohloh.net/p/sirrf/download?package=Sirrf">http://www.ohloh.net/p/sirrf/download?package=Sirrf </a><br />
Documentation &#8211; <a href="http://sirrf.sourceforge.net/docs/0.2.1/">API</a> | <a href="http://sourceforge.net/apps/trac/sirrf/wiki/Tutorials/v0.2.1">Tutorials</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-1-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sirrf version 0.2.0 released!</title>
		<link>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-0-released/</link>
		<comments>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-0-released/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 14:44:01 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Irrlicht]]></category>
		<category><![CDATA[Sirrf]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=454</guid>
		<description><![CDATA[The latest release of Sirrf, the Simple Irrlicht Framework, version 0.2.0, is now available for download. In the two months since the previous release a lot of changes have taken place. These changes range from small API changes to major feature additions. The most noticeable changes include:

Asset Management
The biggest new feature is asset management. Assets [...]]]></description>
			<content:encoded><![CDATA[<p>The latest release of Sirrf, the Simple Irrlicht Framework, version 0.2.0, is now available for download. In the two months since the previous release a lot of changes have taken place. These changes range from small API changes to major feature additions. The most noticeable changes include:</p>
<ul>
<li><strong>Asset Management</strong><br />
The biggest new feature is asset management. Assets are managed by the AssetManager class. This manager manages so-called asset groups, which represent a collection of assets (meshes, textures, etc). These assets are retrieved from a directory with the appropriate directory structure. In turn the found assets are processed by asset processors. And at the end of the road, the user can use these assets without having to deal with paths. Furthermore asset management makes it possible to reload all assets in realtime, with direct results on the current scene. Reloading assets is as simple as one function call.</li>
<li><strong>XML-based Entity files</strong><br />
It is now possible to load data concerning entities and their components from XML-files. This means that you can now define a scene through XML-files.</li>
<li><strong>Local Event System</strong><br />
As of version 0.2.0 a HasEvents class, which provides the base for a local event system, is available. The availability of local event systems makes the entire framework more performant. Currently the HasEvents class is used by entities and asset groups.</li>
<li><strong>Microsoft Visual C++ 2008 support</strong><br />
Version 0.2.0 is the first release that officialy supports Microsoft Visual C++ 2008. This should make it easier to set up Sirrf-based projects accros multiple platforms.</li>
</ul>
<p>See the change log for more information regarding the changes in Sirrf version 0.2.0.</p>
<p>This is not the end of Sirrf&#8217;s development, though. Sirrf&#8217;s development will continue and Sirrf will undoubtely become even better in the future. And you, as a Sirrf user, as a member of the Irrlicht community, can help us improve the framework. This can be done by contributing code to the project, but also by testing the framework. Either way, we hope that Sirrf will be of use.<br />
</p>
<p><strong>Useful links</strong><br />
SourceForge.net page &#8211; <a href="http://sourceforge.net/projects/sirrf">http://sourceforge.net/projects/sirrf</a><br />
Downloads &#8211; <a href="http://sourceforge.net/projects/sirrf/files/">http://sourceforge.net/projects/sirrf/files/</a> | <a href="http://www.ohloh.net/p/sirrf/download?package=Sirrf">http://www.ohloh.net/p/sirrf/download?package=Sirrf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/08/sirrf-version-0-2-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ohloh</title>
		<link>http://www.dotsimplicity.net/2009/08/ohloh/</link>
		<comments>http://www.dotsimplicity.net/2009/08/ohloh/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 17:40:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ohloh]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=442</guid>
		<description><![CDATA[For some time now I&#8217;ve been active on Ohloh. Ohloh is a website dedicated to tracking open source software development. By retrieving data from Source Code Management (SCM) systems Ohloh generates statistics about languages, projects and users. Thanks to this developers get access to new information concerning their projects, which in turn can be used [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now I&#8217;ve been active on <a href="http://www.ohloh.net/">Ohloh</a>. Ohloh is a website dedicated to tracking open source software development. By retrieving data from Source Code Management (SCM) systems Ohloh generates statistics about languages, projects and users. Thanks to this developers get access to new information concerning their projects, which in turn can be used to improve those projects. However, the real value of Ohloh will be found by outsiders of a project. Ohloh&#8217;s project pages are simple and provide those details that one might need to determine the status of a project. And while it might sound insignificant, it&#8217;s actually quite important as it might be a user&#8217;s first impression of a project.</p>
<p>All in all, I think Ohloh is an interesting service. Certainly something worth a visit. And if you decide to visit Ohloh, don&#8217;t forget to visit my <a href="http://www.ohloh.net/accounts/ZCCdark203">user page</a> too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/08/ohloh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino Electrical Drumkit and superint</title>
		<link>http://www.dotsimplicity.net/2009/08/arduino-electrical-drumkit-and-superint/</link>
		<comments>http://www.dotsimplicity.net/2009/08/arduino-electrical-drumkit-and-superint/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 10:57:39 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[almost done projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Drumkit]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[superint]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/2009/08/arduino-electrical-drumkit-and-superint/</guid>
		<description><![CDATA[We&#8217;re (Maurice and I) building one! I hope it works out well, so far it looks really neat and extremely basic. The &#8220;drums&#8221; are wood with a mousepad on glued on top, standing on a wooden pole that stands on a wooden base. The 2 drums in the middle are hopefully looking the best but [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re (Maurice and I) building one! I hope it works out well, so far it looks really neat and extremely basic. The &#8220;drums&#8221; are wood with a mousepad on glued on top, standing on a wooden pole that stands on a wooden base. The 2 drums in the middle are hopefully looking the best but are yet to be made. Their base is handcrafted and polished and rounded and owell. The electronics aren&#8217;t too hard we hope, some piezo buzzers, zenerdiodes and resistors and an arduino. Nothing too complicated right? We did run into a small problem: We need 7 analog inputs. We have 6. So the first version will probably have a digital basedrum. Owell.</p>
<p>Besides that we&#8217;ve (Maurice and I again) a arbitrary length number class, dubbed superint. Original huh?  It&#8217;s efficient with the bytes and cycles, uses x86 ASM for all the instructions and gives the right answers. Currently support addition, substraction, multiplication, division and modulus. We&#8217;re making a version 2 with what we&#8217;ve learned so far which will have some more features. Stay tuned for the source, zlibbed we thinks.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/08/arduino-electrical-drumkit-and-superint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s Nick Doing?</title>
		<link>http://www.dotsimplicity.net/2009/07/whats-nick-doing/</link>
		<comments>http://www.dotsimplicity.net/2009/07/whats-nick-doing/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 22:19:42 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Pixlings]]></category>

		<guid isPermaLink="false">http://www.dotsimplicity.net/?p=367</guid>
		<description><![CDATA[Hey guys,
Sorry for the long time no post! I promised an abstraction tutorial. It isn&#8217;t coming, still can&#8217;t find examples. The articles I write just spin around my mind a bit, evolve in there and then come out with some reviews. And besides half of my review crew is currently unavailable (Maurice is on a [...]]]></description>
			<content:encoded><![CDATA[<p>Hey guys,</p>
<p>Sorry for the long time no post! I promised an abstraction tutorial. It isn&#8217;t coming, still can&#8217;t find examples. The articles I write just spin around my mind a bit, evolve in there and then come out with some reviews. And besides half of my review crew is currently unavailable (Maurice is on a vacation), they aren’t spinning in my mind.</p>
<p>&#8220;But Nick,&#8221;, I hear you say, &#8220;what ARE you doing, programming-wise?&#8221; </p>
<p>Glad you asked! However, it&#8217;s very, very little. I&#8217;m busy with Pixlings. I realized that this is a much bigger project than I anticipated. There are so many parts doing different things that need to work flawlessly together. In contrast, all of my programs until now had one objective and were no longer then a few hundred lines perhaps. I wrote tons of those, but bigger projects are really a lot harder. Therefore, I&#8217;m now focusing on game-development in general, development on Pixlings has seized until I am a better game programmer. Can&#8217;t tell a couch potato to run the marathon eh.</p>
<p>Besides programming there are many, many parties. This weekend wrecked me, slept very little and when I did it was at unfortunate times. I leave it up you to figure that one out for yourself. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dotsimplicity.net/2009/07/whats-nick-doing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

