<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Two small additions</title>
	<atom:link href="http://kmandla.wordpress.com/2011/04/23/no-subject/feed/" rel="self" type="application/rss+xml" />
	<link>http://kmandla.wordpress.com/2011/04/23/no-subject/</link>
	<description>K.Mandla's blog of Linux experiences</description>
	<lastBuildDate>Mon, 11 Feb 2013 18:19:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Another gray area: Ascii Sector &#171; Motho ke motho ka botho</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49364</link>
		<dc:creator><![CDATA[Another gray area: Ascii Sector &#171; Motho ke motho ka botho]]></dc:creator>
		<pubDate>Sat, 21 May 2011 22:43:01 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49364</guid>
		<description><![CDATA[[...] As I understand it, Ascii Sector attempts a faithful rendition of Privateer, which you might remember as an evolution of Elite &#8230; which I have now mentioned twice in the space of a month. [...]]]></description>
		<content:encoded><![CDATA[<p>[...] As I understand it, Ascii Sector attempts a faithful rendition of Privateer, which you might remember as an evolution of Elite &#8230; which I have now mentioned twice in the space of a month. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anarkii</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49282</link>
		<dc:creator><![CDATA[anarkii]]></dc:creator>
		<pubDate>Mon, 09 May 2011 14:57:34 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49282</guid>
		<description><![CDATA[Hi there, 
just stumbled on your blog and wanted to point out Jevons Paradox in relation to this post (and previous post) on why all the added resources to computers don&#039;t add up to actually faster / more efficient running systems. 

here&#039;s the intro blurb on Jeevons Paradox from Wikipedia:

In economics, the Jevons paradox, sometimes called the Jevons effect, is the proposition that technological progress that increases the efficiency with which a resource is used tends to increase (rather than decrease) the rate of consumption of that resource.

basically what happens is that when resource efficiency increases it sets off a bunch of effects that increase the load on that resource (instead of decreasing the load) even to the point where the original load on the resource was MORE efficient. 

check out the wiki article its very interesting. 

enjoying your blog!]]></description>
		<content:encoded><![CDATA[<p>Hi there,<br />
just stumbled on your blog and wanted to point out Jevons Paradox in relation to this post (and previous post) on why all the added resources to computers don&#8217;t add up to actually faster / more efficient running systems. </p>
<p>here&#8217;s the intro blurb on Jeevons Paradox from Wikipedia:</p>
<p>In economics, the Jevons paradox, sometimes called the Jevons effect, is the proposition that technological progress that increases the efficiency with which a resource is used tends to increase (rather than decrease) the rate of consumption of that resource.</p>
<p>basically what happens is that when resource efficiency increases it sets off a bunch of effects that increase the load on that resource (instead of decreasing the load) even to the point where the original load on the resource was MORE efficient. </p>
<p>check out the wiki article its very interesting. </p>
<p>enjoying your blog!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Digit</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49098</link>
		<dc:creator><![CDATA[Digit]]></dc:creator>
		<pubDate>Mon, 25 Apr 2011 22:46:55 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49098</guid>
		<description><![CDATA[ffe3d though... oooooh.  the russian remake.  ... oh golly thats tasty.]]></description>
		<content:encoded><![CDATA[<p>ffe3d though&#8230; oooooh.  the russian remake.  &#8230; oh golly thats tasty.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jens Ayton</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49084</link>
		<dc:creator><![CDATA[Jens Ayton]]></dc:creator>
		<pubDate>Mon, 25 Apr 2011 08:16:58 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49084</guid>
		<description><![CDATA[Interesting choice of example. But then, as lead developer, I would think so. :-)

According to &lt;a href=&quot;https://www.ohloh.net/p/oolite&quot; rel=&quot;nofollow&quot;&gt;Ohloh&lt;/a&gt;, Oolite is almost half a million lines of code. That doesn’t include SpiderMonkey, GNUstep, SDL, Mesa or the other lesser dependencies, but does include a number of several declarative data files and scripts, as well as a bunch of tests and support tools. Call it 250–300kLOC of actual game code.

I don’t have a Linux build of Oolite handy (BerliOS is down… again), but the Mac “test release” binary weighs in at 19.6 MB (with three architectures in one file). This doesn’t including game resources; the data files, excluding textures and sounds, are another 680 kB. That’s a whole DOS box full of text!

From time to time, I’ve wondered where all this comes from. After all, most of that code is at least used for something (not all of it, since it’s written in a dynamic-dispatch language that can’t be dead-code stripped). I have several thoughts:

* Firstly, 8-bit machine code is inherently smaller than 32-bit or 64-bit machine code.

* Diverse hardware (and software). Oolite is supported on three operating systems and three processor architectures, and has been built for others (for example, IRIX on MIPS). It supports OpenGL 1.1, but makes use of features from 1.3 and 2.0, including shader support. This of course complicates rendering code.

* Graphics support. Drawing all those newfangled textures and shaders doesn’t just require texture files, it also needs loading, resource management, scaling and support for various hardware capabilities (see above); for instance, it can convert cube map textures for planets to equirectangular projection on the fly for systems without cube map support, which is very rarely useful but allows us to keep the ridiculously low hardware target.

* Abstractions. (The points below are special cases of this.) A dynamic-dispatch OO language adds overhead for class objects, method tables and so forth. Many components are written to be reusable in various ways. Writing specialized procedural code for each particular case will generally produce smaller code, but makes it harder to maintain and add new features.

* Parsing. Instead of hard-coding data, we use text-based representations which are parsed at runtime. In addition to the actual parsing (much of which is handled by GNUstep or Cocoa), there’s string constants, sanity checking and caching. In order to integrate with these data files, the procedural generation code has to generate abstract representations and merge them with data files rather than just return an array of numbers.
On the other hand, this stuff is the foundation of Oolite’s expansion pack support. Without the hundreds of expansion packs and active mod community, the project would have died years ago.

* Scripting. For historical reasons, there are three scripting engines in Oolite – one for AI state machines, an old deprecated system used for various things, and a newish, quite powerful JavaScript interface. Just the JavaScript interface glue is twenty thousand lines of code, not counting the interactive console support. The original purpose of scripting support was to express some game behaviours as high-level abstractions, but of course it’s also important for modding.

* Debugging support. There are many testing facilities and a complex logging system, primarily to help expansion pack developers, although some of it is also useful in debugging the game itself.


I guesstimate that with care and dedication, Oolite could be rewritten to be a third of the size while supporting the same functionality, and also be more efficient. (Especially if you raised the GPU requirements!) The important thing, though, is this: that hypothetical game would never be written. It would take man-years of work, and I’m not talking about the sort of weekend hobby work that built Oolite in the first place.

When you write a game in pure, tight assembly, every design change requires large parts of the work to be thrown away. The ability to use high-level abstractions and organically grow a game is what makes it possible for a bunch of hobbyists to write Oolite in the first place. (Well, I say a bunch; Giles Williams wrote it more or less himself, then the rest of us refined it.)

One thing you didn’t mention about Elite is that it’s one of the biggest non-modular, optimized assembly programs ever written. Much – not all – of the perceived bloat of modern software comes from this: abstractions make it possible to write more complex systems faster, and that’s the biggest benefit of more powerful computers.]]></description>
		<content:encoded><![CDATA[<p>Interesting choice of example. But then, as lead developer, I would think so. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>According to <a href="https://www.ohloh.net/p/oolite" rel="nofollow">Ohloh</a>, Oolite is almost half a million lines of code. That doesn’t include SpiderMonkey, GNUstep, SDL, Mesa or the other lesser dependencies, but does include a number of several declarative data files and scripts, as well as a bunch of tests and support tools. Call it 250–300kLOC of actual game code.</p>
<p>I don’t have a Linux build of Oolite handy (BerliOS is down… again), but the Mac “test release” binary weighs in at 19.6 MB (with three architectures in one file). This doesn’t including game resources; the data files, excluding textures and sounds, are another 680 kB. That’s a whole DOS box full of text!</p>
<p>From time to time, I’ve wondered where all this comes from. After all, most of that code is at least used for something (not all of it, since it’s written in a dynamic-dispatch language that can’t be dead-code stripped). I have several thoughts:</p>
<p>* Firstly, 8-bit machine code is inherently smaller than 32-bit or 64-bit machine code.</p>
<p>* Diverse hardware (and software). Oolite is supported on three operating systems and three processor architectures, and has been built for others (for example, IRIX on MIPS). It supports OpenGL 1.1, but makes use of features from 1.3 and 2.0, including shader support. This of course complicates rendering code.</p>
<p>* Graphics support. Drawing all those newfangled textures and shaders doesn’t just require texture files, it also needs loading, resource management, scaling and support for various hardware capabilities (see above); for instance, it can convert cube map textures for planets to equirectangular projection on the fly for systems without cube map support, which is very rarely useful but allows us to keep the ridiculously low hardware target.</p>
<p>* Abstractions. (The points below are special cases of this.) A dynamic-dispatch OO language adds overhead for class objects, method tables and so forth. Many components are written to be reusable in various ways. Writing specialized procedural code for each particular case will generally produce smaller code, but makes it harder to maintain and add new features.</p>
<p>* Parsing. Instead of hard-coding data, we use text-based representations which are parsed at runtime. In addition to the actual parsing (much of which is handled by GNUstep or Cocoa), there’s string constants, sanity checking and caching. In order to integrate with these data files, the procedural generation code has to generate abstract representations and merge them with data files rather than just return an array of numbers.<br />
On the other hand, this stuff is the foundation of Oolite’s expansion pack support. Without the hundreds of expansion packs and active mod community, the project would have died years ago.</p>
<p>* Scripting. For historical reasons, there are three scripting engines in Oolite – one for AI state machines, an old deprecated system used for various things, and a newish, quite powerful JavaScript interface. Just the JavaScript interface glue is twenty thousand lines of code, not counting the interactive console support. The original purpose of scripting support was to express some game behaviours as high-level abstractions, but of course it’s also important for modding.</p>
<p>* Debugging support. There are many testing facilities and a complex logging system, primarily to help expansion pack developers, although some of it is also useful in debugging the game itself.</p>
<p>I guesstimate that with care and dedication, Oolite could be rewritten to be a third of the size while supporting the same functionality, and also be more efficient. (Especially if you raised the GPU requirements!) The important thing, though, is this: that hypothetical game would never be written. It would take man-years of work, and I’m not talking about the sort of weekend hobby work that built Oolite in the first place.</p>
<p>When you write a game in pure, tight assembly, every design change requires large parts of the work to be thrown away. The ability to use high-level abstractions and organically grow a game is what makes it possible for a bunch of hobbyists to write Oolite in the first place. (Well, I say a bunch; Giles Williams wrote it more or less himself, then the rest of us refined it.)</p>
<p>One thing you didn’t mention about Elite is that it’s one of the biggest non-modular, optimized assembly programs ever written. Much – not all – of the perceived bloat of modern software comes from this: abstractions make it possible to write more complex systems faster, and that’s the biggest benefit of more powerful computers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: demonicmaniac</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49079</link>
		<dc:creator><![CDATA[demonicmaniac]]></dc:creator>
		<pubDate>Mon, 25 Apr 2011 01:57:36 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49079</guid>
		<description><![CDATA[in the vein of kkrieger and 64k demos i urge everyone to take a look at kolibriOS and menuetOS. fitting onto a floppy, requiring 8mb of ram with a 3d stack and a full desktop environment. That is efficiency.]]></description>
		<content:encoded><![CDATA[<p>in the vein of kkrieger and 64k demos i urge everyone to take a look at kolibriOS and menuetOS. fitting onto a floppy, requiring 8mb of ram with a 3d stack and a full desktop environment. That is efficiency.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ray</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49076</link>
		<dc:creator><![CDATA[Ray]]></dc:creator>
		<pubDate>Mon, 25 Apr 2011 01:01:27 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49076</guid>
		<description><![CDATA[Exception: Starcraft. One would rarely find a fast-paced RTS that runs lighter.]]></description>
		<content:encoded><![CDATA[<p>Exception: Starcraft. One would rarely find a fast-paced RTS that runs lighter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Felice</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49075</link>
		<dc:creator><![CDATA[Felice]]></dc:creator>
		<pubDate>Sun, 24 Apr 2011 18:11:09 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49075</guid>
		<description><![CDATA[It could also be that the overall computing experience is subject to the so called square-law of automotive transport.
My old legs are still enough to push a bicycle at 50 km/h for a short time, but to reach 100 km/h something between 15-20 kw/h power is needed, for 200 km/h we are around 80-100 kw/h, and for 400 km/h be prepared for immense power and cost and complexity. We have reached sort of a wall where nothing more is really worth.
Anyway it would be only eight times as my old legs performance, and for moving in an urban area I could be easily a winner if you consider cost and noise and parking.]]></description>
		<content:encoded><![CDATA[<p>It could also be that the overall computing experience is subject to the so called square-law of automotive transport.<br />
My old legs are still enough to push a bicycle at 50 km/h for a short time, but to reach 100 km/h something between 15-20 kw/h power is needed, for 200 km/h we are around 80-100 kw/h, and for 400 km/h be prepared for immense power and cost and complexity. We have reached sort of a wall where nothing more is really worth.<br />
Anyway it would be only eight times as my old legs performance, and for moving in an urban area I could be easily a winner if you consider cost and noise and parking.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TME520</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49070</link>
		<dc:creator><![CDATA[TME520]]></dc:creator>
		<pubDate>Sun, 24 Apr 2011 12:42:17 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49070</guid>
		<description><![CDATA[I feel the same about today&#039;s IT : bloated OS, bloated software, waste of time and money because of bad coding habits...

Well, I usually keep this feling for myself since everytime I speak my mind, I feel like an old fart ranting about &quot;how everything was better before&quot;...

The truth is small software is good software and Keep It Simple, Stupid !

By the way, I like your blog, thanks for taking the time to write all those nice posts.]]></description>
		<content:encoded><![CDATA[<p>I feel the same about today&#8217;s IT : bloated OS, bloated software, waste of time and money because of bad coding habits&#8230;</p>
<p>Well, I usually keep this feling for myself since everytime I speak my mind, I feel like an old fart ranting about &#8220;how everything was better before&#8221;&#8230;</p>
<p>The truth is small software is good software and Keep It Simple, Stupid !</p>
<p>By the way, I like your blog, thanks for taking the time to write all those nice posts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: YU1QRP</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49060</link>
		<dc:creator><![CDATA[YU1QRP]]></dc:creator>
		<pubDate>Sun, 24 Apr 2011 00:31:00 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49060</guid>
		<description><![CDATA[Just simply said everyone needs a tool for the job.
This days i am playing with my android based phone, 500mhz 190MB ram, i have found many usefull software that can do what i need to do every day, but to honest with myself, i hate the fact of doing css, html coding and image croping etc on a 320x240 screen with more then tiny keyboard.]]></description>
		<content:encoded><![CDATA[<p>Just simply said everyone needs a tool for the job.<br />
This days i am playing with my android based phone, 500mhz 190MB ram, i have found many usefull software that can do what i need to do every day, but to honest with myself, i hate the fact of doing css, html coding and image croping etc on a 320&#215;240 screen with more then tiny keyboard.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chubby Checker</title>
		<link>http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49059</link>
		<dc:creator><![CDATA[Chubby Checker]]></dc:creator>
		<pubDate>Sat, 23 Apr 2011 23:22:27 +0000</pubDate>
		<guid isPermaLink="false">http://kmandla.wordpress.com/2011/04/23/no-subject/#comment-49059</guid>
		<description><![CDATA[Assembler isn&#039;t actually that difficult. Have a look:

http://www.securitytube.net/groups?operation=view&amp;groupId=5

It&#039;s kinda like what people say about Lisp; you improved your knowledge about computers once you got the hang of it.]]></description>
		<content:encoded><![CDATA[<p>Assembler isn&#8217;t actually that difficult. Have a look:</p>
<p><a href="http://www.securitytube.net/groups?operation=view&#038;groupId=5" rel="nofollow">http://www.securitytube.net/groups?operation=view&#038;groupId=5</a></p>
<p>It&#8217;s kinda like what people say about Lisp; you improved your knowledge about computers once you got the hang of it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
