<?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>FlatCoder Ltd.</title>
	<atom:link href="http://www.flatcoder.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flatcoder.co.uk</link>
	<description>Freelance Software &#38; Systems Development</description>
	<lastBuildDate>Thu, 02 Feb 2012 01:26:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mixamo Blender Panda3D Pipeline</title>
		<link>http://www.flatcoder.co.uk/mixamo-blender-panda3d-pipeline/</link>
		<comments>http://www.flatcoder.co.uk/mixamo-blender-panda3d-pipeline/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 23:05:13 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[Software Solutions]]></category>
		<category><![CDATA[3d character models]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[open source solution]]></category>
		<category><![CDATA[panda3d]]></category>
		<category><![CDATA[pipeline]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=535</guid>
		<description><![CDATA[Mixamo Blender Panda3D Character and Animation Pipeline PRE-REQUISITES: A basic knowledge of Blender (driving the user interface and installing plugins). PROCESS: &#160; Mixamo allows you to save models in a variety of formats (FBX, COLLADA, BVH Motion Capture). I began choosing the COLLADA export option.  I do not generally need to model much so I [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_541" class="wp-caption alignleft" style="width: 200px"><a  href="http://www.flatcoder.co.uk/wp-content/uploads/2011/09/Screenshot-2.png" class="thickbox no_icon" rel="gallery-535" title="Zombie Walk"><img class="size-thumbnail wp-image-541" title="Zombie Walk" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/09/Screenshot-2-190x148.png" alt="Zombie Walk" width="190" height="148" /></a><p class="wp-caption-text">Zombie Walk</p></div>
<h1>Mixamo Blender Panda3D Character and Animation Pipeline</h1>
<h2>PRE-REQUISITES:</h2>
<p>A basic knowledge of Blender (driving the user interface and installing plugins).</p>
<h3>PROCESS:</h3>
<p style="text-align: center;"><iframe src="http://www.youtube.com/embed/7qrXopJ_61I" frameborder="0" width="420" height="345"></iframe><br/>&nbsp;</p>
<p style="text-align: justify;"><a  title="Mixamo" href="http://www.mixamo.com" target="_blank"><span style="text-decoration: underline;"><strong>Mixamo</strong></span></a> allows you to save models in a variety of formats (FBX, COLLADA, BVH Motion Capture). I began choosing the COLLADA export option.  I do not generally need to model much so I do not have any expensive 3D suites such as 3D Studio or Maya. I instead opted for the free and open-source solution <span style="text-decoration: underline;"><a  title="Blender" href="http://www.blender.org/" target="_blank"><strong>Blender</strong></a></span>. Upon attempting import of the COLLADA I was greeted by a mess of a model in Blender. Something had gone wrong. Retrospectively, at this point, finding out why it hadn&#8217;t worked would have been the best course of action. Instead, I concluded there was some quirkiness going on with COLLADA and switched to the other export option offered by Mixamo &#8211; FBX. After a bit of digging I stumbled on an <span style="text-decoration: underline;"><a  title="FBX Converter" href="http://usa.autodesk.com/adsk/servlet/pc/item?id=10775855&#038;siteID=123112" target="_blank"><strong>FBX Converter</strong></a></span> (Windows only sadly). The best option it had (for a format that would include the animations, not just the static model) was, you guessed it, COLLADA. Irritating. <img src='http://www.flatcoder.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">After yet more digging I found what I was looking for on the <strong><span style="text-decoration: underline;"><a  title="Mixamo Blender Pipeline" href="http://www.mixamo.com/c/blender" target="_blank">Mixamo website itself</a></span></strong> (by fluke, in an &#8220;order confirmation&#8221; email for a free sample!). I wish they&#8217;d put this kind of information more upfront on their website, the &#8220;model pipeline&#8221; is the first thing anyone will want to know who has an actual use for their creations!  Mixamo offer a free Blender plugin for &#8220;Mixamo COLLADA Import&#8221;. It is only for Blender 2.49 but that&#8217;s a good thing as the same applies to the Chicken Exporter we use later! (in other words, you need Blender 2.49, it should run happily alongside newer versions). I thought COLLADA was COLLADA was COLLADA, y&#8217;know, the whole point of it being a standard? Mixamo say their importer conforms to the COLLADA standard. I don&#8217;t know what the truth is or why the COLLADA importer that came shipped with Blender didn&#8217;t work. Don&#8217;t know, don&#8217;t care really. The Mixamo importer is Windows or Mac only (as is their site really since it uses the Unity3D plugin). It worked too &#8211; or so I thought.</p>
<p style="text-align: justify;">I tried to render a scene in Blender and observed &#8220;no textures&#8221;. Looking at the console output for the importer there were errors regarding the images not being readable. Long story short, I finally clicked that it could not handle spaces in the file path. So storing the COLLADA file in a &#8220;C:\Documents and Settings\&#8230;.&#8221; style path was a problem. Pity the importer didn&#8217;t report an error in Blender itself. Once I moved the files to a non-whitespace path (C:\getting-annoyed-now\, for example) it worked perfectly.</p>
<p style="text-align: justify;">Final hurdle. From Blender to Panda3D. There is a Blender plugin called the <span style="text-decoration: underline;"><a  title="Chicken Exporter" href="http://sourceforge.net/projects/chicken-export/" target="_blank"><strong>Chicken Exporter</strong></a></span>. I installed it and exported from Blender. The resulting EGG file worked &#8211; but with no textures or animations. Fixing the textures was easy, I just edited the EGG file directly (it&#8217;s a text format file) and fixed the paths by changing them to relative paths (the exporter had added absolute paths such as &#8220;c:\getting-annoyed-now\&#8230;..&#8221; to all the image paths, I was not even on the same machine or operating system at this point, so those files certainly did not exist in an &#8220;absolute&#8221; position). Fixing the animations was something a bit more involved.</p>
<p style="text-align: justify;">In Blender, select the Armature in the Outliner panel. In the buttons panel you will now see a &#8220;Modifiers&#8221; tab. In that tab, there is a button &#8220;Make Real&#8221; (with the text &#8220;Armature Parent Deform&#8221;). I don&#8217;t fully grasp what it is doing when you click this but a &#8220;modifier&#8221; appears under the Armature in the Outliner. It has something to do with armatures via parenting or modifiers but I&#8217;m not a Blender guru (in fact very much a newbie!). Once done, the Chicken Exporter window now shows the option &#8220;add animation&#8221;.</p>
<p style="text-align: justify;">Ok, now, find out how long the animation runs. Open up the NLA Editor and click right at the end of the animation. In your main Blender window (3D View) the current frame should show up at the bottom left. Cool. Also, in the outliner, note the name of your Armature. In my case it was &#8220;Zombie_Hips&#8221; (or open up enough panels that you can see all of this information in one screen, like the screenshot below).</p>
<div id="attachment_545" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.flatcoder.co.uk/wp-content/uploads/2011/09/Screenshot-1.png" class="thickbox no_icon" rel="gallery-535" title="Blender"><img class="size-medium wp-image-545" title="Blender" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/09/Screenshot-1-300x229.png" alt="Blender" width="300" height="229" /></a><p class="wp-caption-text">Blender</p></div>
<p style="text-align: justify;">Finally, export via Chicken. Make sure you have done &#8220;select all&#8221; (hover over the 3D view and hit the &#8216;A&#8217; key on your keyboard until everything is highlighted) before launching Chicken.  Click the &#8220;Add Animation&#8221; button. Set the animation name to the same as the Armature/Object name (both set the same for Mixamo imports), set the End frame to the final frame, and export. The job is done, it should all work, 3D character and animation. In Panda3D&#8217;s PVIEW, hit &#8220;l&#8221; to enable lighting else you won&#8217;t see the textures.  BTW &#8211; that last bit, I just flippantly mentioned (set the animation name to the armature name) is critical.  It cost me hours of head scratching time that!  All being well, you&#8217;ll find you have an EGG file that works with animation and texture!</p>
<p style="text-align: justify;">
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/mixamo-blender-panda3d-pipeline/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/mixamo-blender-panda3d-pipeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Jabber (XMPP) AI Chat Bot Environment</title>
		<link>http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/</link>
		<comments>http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 00:45:31 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[Software Solutions]]></category>
		<category><![CDATA[3d engine]]></category>
		<category><![CDATA[3d game]]></category>
		<category><![CDATA[chat bots]]></category>
		<category><![CDATA[cross platform]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[game client]]></category>
		<category><![CDATA[game environment]]></category>
		<category><![CDATA[instant messaging]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[panda3d]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python library]]></category>
		<category><![CDATA[python programming language]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=470</guid>
		<description><![CDATA[3D Jabber (XMPP) AI Chat Bot Environment I was approached recently by a client wanting a 3D game environment in which players could talk to “bots” (artificially intelligent chat bots) by typing text and receiving replies. The chat bots were to live on a server while players would launch a 3D game client to login [...]]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: justify;">3D Jabber (XMPP) AI Chat Bot Environment</h1>
<p style="text-align: justify;">I was approached recently by a client wanting a 3D game environment in which players could talk to “bots” (artificially intelligent chat bots) by typing text and receiving replies. The chat bots were to live on a server while players would launch a 3D game client to login to the server. As part of the login process users would select an “activity” (a scene). Each scene was to be populated only by certain chat bots; every chat bot was to have its own &#8216;AI brain&#8217; and would thus converse differently with the user to other bots.</p>
<p style="text-align: justify;">A tall order! The screen shots below show how it panned out:</p>

<a  href="http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/screenshot/" title="Login"><img width="190" height="148" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/08/Screenshot-e1314148086843-190x148.png" class="attachment-thumbnail" alt="Login" title="Login" /></a>
<a  href="http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/screenshot-1/" title="Navigate"><img width="190" height="147" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/08/Screenshot-1-e1314148058402-190x147.png" class="attachment-thumbnail" alt="Navigate" title="Navigate" /></a>
<a  href="http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/screenshot-2/" title="Chat"><img width="190" height="146" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/08/Screenshot-2-e1314148039638-190x146.png" class="attachment-thumbnail" alt="Chat" title="Chat" /></a>
<a  href="http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/screenshot-3/" title="Offline"><img width="190" height="147" src="http://www.flatcoder.co.uk/wp-content/uploads/2011/08/Screenshot-3-e1314147980104-190x147.png" class="attachment-thumbnail" alt="Offline" title="Offline" /></a>

<h3 style="text-align: justify;">The Server</h3>
<p style="text-align: justify;">So where to begin? The obvious starting point was the server. All that was required was the ability for it to host bots, allow user login and exchange chat (text). <span style="text-decoration: underline;"><a  title="XMPP" href="http://xmpp.org/" target="_blank"><strong>XMPP</strong></a></span> is a common &#8216;instant messaging&#8217; protocol – in fact, it is used by Google Talk (on that note, our final software can actually be used with Google services as easily as our own server!). The XMPP protocol was originally named Jabber. <a  title="Openfire Server" href="http://www.igniterealtime.org/projects/openfire/" target="_blank"><span style="text-decoration: underline;"><strong>Openfire Server</strong></span></a> is a free, cross-platform, open source Jabber server. It&#8217;s what was opted for and installed on the server. It was installed and user accounts created for real players and the non-player characters (NPCs, our bots).</p>
<h3 style="text-align: justify;">The Bots</h3>
<p style="text-align: justify;">With the server up and running the next logical step was a Jabber Bot. No need for 3D at this stage, we just wanted some software that would connect to Jabber, accept messages, process those messages and send back a reply. The simplest starting point is an “echo bot”, a bot that simply repeats back whatever you type to it (very annoying!).</p>
<p style="text-align: justify;">Since it was already known we would be using Panda3D for the 3D engine (see later in this article) it made sense to keep the technology consistent and write out Jabber Bots in the <a  title="Python" href="http://www.python.org/" target="_blank"><span style="text-decoration: underline;"><strong>Python</strong></span></a> programming language. It also turned out there was an excellent Python library for communicating via XMPP called <a  title="SleekXMPP" href="https://github.com/fritzy/SleekXMPP/wiki" target="_blank"><span style="text-decoration: underline;"><strong>SleekXMPP</strong></span></a>. A working echo bot was nailed in no time!</p>
<p style="text-align: justify;">The bots now needed some intelligence. The <a  title="AIML" href="http://www.alicebot.org/aiml.html" target="_blank"><span style="text-decoration: underline;"><strong>artificial intelligence mark-up language</strong></span></a> (AIML) was chosen. AIML is simple to grasp and was deemed sufficient for our purposes. Constructing &#8216;brains&#8217; in AIML (i.e., different bot personalities/responses) consists essentially of copying a set of XML files and modifying them to suit.</p>
<p style="text-align: justify;">There is an &#8216;example&#8217; of implementing an AIML chat bot in Python called <a  title="Howie the Chatterbot" href="http://howie.sourceforge.net/" target="_blank"><span style="text-decoration: underline;"><strong>Howie</strong></span></a>. Essentially, a new generic bot was written (affectionately known as “Bot the Bot”) that was a combination of Howie and SleekXMPP. Bob the bot gets his specifics from a configuration file detailing who to login as, which brain to load etc. Thus, “new bots” are simply “new configuration files for the generic bot”.</p>
<h3 style="text-align: justify;">The 3D Client</h3>
<p style="text-align: justify;">As we noted earlier, <a  title="Panda3D" href="http://www.panda3d.org/" target="_blank"><span style="text-decoration: underline;"><strong>Panda3D</strong></span></a> was chosen as the game engine. The reasoning is outside of the scope of this short article but the short answer would be “Panda3D is awesome!”. There&#8217;s not much to discuss in this section – see the screen shots above! Essentially a 3D scene is selected and loaded. The room was created using <a  title="Sweet Home 3D" href="http://www.sweethome3d.com/" target="_blank"><span style="text-decoration: underline;"><strong>Sweet Home 3D</strong></span></a>. The scene is populated by designated bots, our actor models came from <a  title="Code3D" href="http://www.code3d.com/content/developers" target="_blank"><span style="text-decoration: underline;"><strong>Code3D</strong></span></a> (open source). All of the Jabber functionality comes from SleekXMPP. The rest was just raw coding!</p>
<h3 style="text-align: justify;">That&#8217;s All Folks!</h3>
<p style="text-align: justify;">I hope this has been useful to some. I am hopeful of open sourcing the project in the near future, pending consent from my client.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/3d-jabber-xmpp-ai-chat-bot-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can anyone make a video game?</title>
		<link>http://www.flatcoder.co.uk/can-anyone-make-a-video-game/</link>
		<comments>http://www.flatcoder.co.uk/can-anyone-make-a-video-game/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 18:18:43 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[Launch Day]]></category>
		<category><![CDATA[3d engine]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[business applications]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[computer programming]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[first language]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[panda3d]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python programming language]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[video game]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web browser]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=392</guid>
		<description><![CDATA[Can anyone make a video game? A new venture for FlatCoder Ltd., I would like to present MGF Magazine! &#8220;Anyone can make a video game, it&#8217;s not that hard!&#8221;. A summary is as follows: MGF ISSUES are organised into VOLUMES. All of our content makes use of software &#38; tools that are available for free. [...]]]></description>
			<content:encoded><![CDATA[<h1>Can anyone make a video game?</h1>
<p style="text-align: justify;"><a  href="http://www.flatcoder.co.uk/wp-content/uploads/2010/12/148582_167792623248304_167784769915756_448476_5099169_n.jpg" class="thickbox no_icon" rel="gallery-392" title="MGF Magazine"><img class="alignleft size-full wp-image-396" title="MGF Magazine" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/12/148582_167792623248304_167784769915756_448476_5099169_n.jpg" alt="MGF Magazine" width="183" height="183" /></a>A new venture for FlatCoder Ltd., I would like to present MGF Magazine!  &#8220;Anyone can make a video game, it&#8217;s not that hard!&#8221;.  A summary is as follows:</p>
<blockquote style="text-align: justify;"><p>MGF ISSUES are organised into VOLUMES.<br />
All of our content makes use of software &amp; tools that are available for free.</p>
<p>VOLUMES<br />
Each Volume completes with a fully finished playable game that will work on Windows, Mac, Linux and can even be run in a Web Browser!</p>
<p>ISSUES<br />
Each Issue has a purpose and point. You will always see progress in the development of your game. Issues are short and snappy, as they should be, backed up by video where necessary.</p>
<p style="text-align: justify;">LEARN TO PROGRAM<br />
Our focus will always be games but the skills taught are very transferable. You will learn computer programming and software engineering using little more than a text editor, the Python programming language and the Panda3D engine. We have chosen Python because it has been used successfully (and commercially) for games, business applications, web applications and most any application you can think of! It&#8217;s also a &#8216;great first language&#8217; for anyone wanting to learn programming.</p>
</blockquote>
<p style="text-align: justify;">To learn more, head over to the website: <a  href="http://www.mygamefast.com" target="_blank">http://www.mygamefast.com</a></p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/can-anyone-make-a-video-game/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/can-anyone-make-a-video-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Password Management Solutions</title>
		<link>http://www.flatcoder.co.uk/secure-password-management-solutions/</link>
		<comments>http://www.flatcoder.co.uk/secure-password-management-solutions/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 09:59:07 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[Software Solutions]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[information access]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[multiple users]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web browser]]></category>
		<category><![CDATA[web browser interface]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=353</guid>
		<description><![CDATA[Secure Password Management The Problem One of the recurring issues in my line of work is the storage of sensitive information.  As a freelancer, I am entrusted with a large amount of commercially sensitive information, access details to servers/networks/software and similar.  Obviously, there ends up being far too much to simply remember!  All too often [...]]]></description>
			<content:encoded><![CDATA[<h1><a  href="http://www.flatcoder.co.uk/wp-content/uploads/2010/07/padlock.png" class="thickbox no_icon" rel="gallery-353" title="Security"><img class="alignleft size-full wp-image-358" title="Security" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/07/padlock.png" alt="Secure Password Management" width="267" height="300" /></a>Secure Password Management</h1>
<h2>The Problem</h2>
<p>One of the recurring issues in my line of work is the storage of sensitive information.  As a freelancer, I am entrusted with a large amount of commercially sensitive information, access details to servers/networks/software and similar.  Obviously, there ends up being far too much to simply remember!  All too often people &#8220;solve&#8221; this problem by storing information in emails, in a document, on a post-it-note or scrap piece of paper.  Not very secure!  Other approaches I have seen taken include reusing the same password over and over for different things.  Again, easy to exploit, once an individual with malicious intent finds one password &#8211; they have much broader access than anticipated.<br />
<span id="more-353"></span></p>
<h2>Solutions</h2>
<p>Attempts have been made to develop software for the sole purpose of securely storing passwords.  Some are pretty good for the single user environment &#8211; i.e., a single application to download and use on a single PC.  Some have network support and the notion of multiple users.  Some are free, some are open source, others are commercial.  As always, selection depends on requirements, but a few of the more popular are <a  href="http://keepass.info/" target="_blank">KeePass</a>, <a  href="http://agilewebsolutions.com/products/1Password" target="_blank">1Password</a> and <a  href="http://lastpass.com/" target="_blank">LastPass</a>.</p>
<p>I looked at several but the biggest initial short coming, for me, was the lack of a Web Browser interface.  In this instance, my reasoning was because I am in the process of building my own Intranet with many tools accessible via browser grouped into a neat portal style application.  Having said that, a browser solution is preferable to many organisations for a number of reasons.  First of all, for each client or user, there is no need to install anything.  The sole requirement is a web server on the internal network (which most companies, these days, would already have) and a web browser on each client.  In larger scenarios this is fantastic, solutions can be rolled out &#8220;company wide&#8221; in one swoop, completely non-intrusive to everything else on the network or its clients.  This offers a further advantage in that updates to software, access controls/users and content can be administered at the server and again instantly go company wide.  Lastly, such a solution offers platform independence, you could even access your password repository via your mobile phone.</p>
<p>So, off I ventured for web based solutions.  The pickings are comparatively slim but there are a few.  One example is <a  href="http://www.passwordsafe.com/" target="_blank">PasswordSafe</a>, another is <a  href="http://www.thycotic.com/" target="_blank">Secret Server</a>.  Then I remembered something I used to use while fully employed:</p>
<h2>The History of Magpie</h2>
<p>Back when I was working for a company called Accelerate4, we used a piece of software on our Intranet called <a  href="http://pismosoftware.co.uk/products.php" target="_blank">Magpie</a>.  It had been developed by one of the guys I was working with.  At the time, it was fairly simple, nothing special to look at, but very capable and a perfect fit for our needs.  Developers loved it and it became used extensively and exclusively internally for its designed purpose.</p>
<p>The original developer, as it turns out, has not abandoned Magpie and when I contacted him was in the process of beta testing a new release.  I was more than happy to get involved as it allowed me some input in terms of extra functionality and the future &#8220;wish list&#8221;.  <img src='http://www.flatcoder.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Magpie Today</h2>
<p>Is very well evolved and is the choice I have made for the FlatCoder Intranet.  There are a number of reasons for this decision, the highlights listed succinctly below:</p>
<ul>
<li>Browser based, as noted.</li>
<li>Great organisation and grouping of data.</li>
<li>Ability to define teams as well as users, fine granularity control and view of  &#8220;who knows what&#8221;.</li>
<li>Multilingual</li>
<li>Ability to restrict/control access via IP address.</li>
<li>Bundled web server for Mac OS X, MS Windows and Linux allowing for rapid and easy installation.</li>
<li>Ability to integrate with other/existing web servers such as Apache or IIS.</li>
<li>Options for authentication methods (e.g., htaccess).</li>
<li>Options for encryption schemes using symmetric ciphers (IDEA, DES3, Blowfish, Rijndael (aka AES)).</li>
<li>Public/Private key encryption using RSA or DSA.</li>
</ul>
<p style="text-align: center;"><a  href="http://www.flatcoder.co.uk/wp-content/uploads/2010/07/ui_magpie_3.png" class="thickbox no_icon" rel="gallery-353" title="ui_magpie_3"><img class="aligncenter size-full wp-image-364" title="ui_magpie_3" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/07/ui_magpie_3.png" alt="" width="380" height="270" /></a></p>
<p>In short, never email a password again, email a link!  Magpie is both highly secure and a pleasure to use!  Future enhancements are also planned including the ability to store file attachments (great for server/client keys and similar).</p>
<h3>To find out more about Magpie visit the Official Site over at <a  href="http://www.pismosoftware.co.uk/" target="_blank">Pismo Software Ltd</a>.</h3>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/secure-password-management-solutions/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/secure-password-management-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build a Secure Linux Kiosk Operating System</title>
		<link>http://www.flatcoder.co.uk/how-to-build-a-secure-kiosk-operating-system/</link>
		<comments>http://www.flatcoder.co.uk/how-to-build-a-secure-kiosk-operating-system/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 19:10:11 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[custom distribution]]></category>
		<category><![CDATA[kiosk environment]]></category>
		<category><![CDATA[kiosks]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux operating system]]></category>
		<category><![CDATA[secure linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web browser]]></category>
		<category><![CDATA[web proxy]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[whitelist]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=272</guid>
		<description><![CDATA[A Secure Linux Kiosk OS The Problem The original requirement was for a collection of 4 touchscreen information stands in an NHS hospital (providing information such as maps/&#8221;You are Here&#8221;, patient information etc.).  It was absolutely critical that the system could not be hacked and that content was limited.  The kiosks were to serve information [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-290    alignleft" title="NHS Touch Screen Kiosk" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/04/nhs-300x169.jpg" alt="NHS Touch Screen Kiosk" width="300" height="169" /></p>
<h1>A Secure Linux Kiosk OS</h1>
<h2>The Problem</h2>
<p>The original requirement was for a collection of 4 touchscreen information stands in an NHS hospital (providing information such as maps/&#8221;You are Here&#8221;, patient information etc.).  It was absolutely critical that the system could not be hacked and that content was limited.  The kiosks were to serve information from a local web server but some of the content being provided was from pages on the Internet.  To that end, a further requirement was locking access to sites, only sites and content in a safe &#8220;whitelist&#8221; were to be served, making it necessary to block attempts to retrieve any other Internet content.</p>
<h2><span id="more-272"></span>Approach</h2>
<p>A custom distribution of the Linux Operating System was built called KiOS (abbreviation for Kiosk Operating System).  KiOS is a custom distribution of Linux (based on SuSE / built using SuSE Studio) intended for usage in the Kiosk environment.  There are 2 variants, one for the clients and one for the server.  Rolling back in time, the solution &#8220;rough cut&#8221; was as follows:</p>
<ol>
<li>Content via web browser. Browser must not have any controls (file menu, address bar, right click etc.), downloads or similar.</li>
<li>The Kiosk must not allow access to the underlying operating system and the browser must not be closed.</li>
<li>The Kiosk will connect to the network via DHCP.</li>
<li>The Server will always assign the same IP address to the same MAC (allowing for &#8220;you are here&#8221; to function).</li>
<li>The Server runs a whitelist of allowed sites, requests to any other content are denied.</li>
<li>The Server acts as a web proxy to cater for the &#8220;Internet Down&#8221; scenario.</li>
</ol>
<h2>The KiOS Operating System (for clients)</h2>
<p>The base distribution began as follows:</p>
<ol>
<li>KiOS was built using SuSE Studio ( <a  href="http://www.susestudio.com" target="_blank">http://www.susestudio.com</a> ).</li>
<li>A base template &#8220;JeOS&#8221; (Just enough Operating System) was used.</li>
<li>X11 was added as a package. Note that <strong>NO WINDOW MANAGER</strong> was used. This gives an advantage in that no window manager keyboard shortcuts are available/no update manager alerts are given etc.</li>
<li>The Flash player was also added (optional and not necessarily desired in every scenario).</li>
<li>The firewall was setup to block ALL incoming requests. <strong>NO PORTS</strong> are open.</li>
<li>The OS was set to load at run level 3 (normal non-graphical console).</li>
</ol>
<p>The KiOS disk image is written to a USB pendrive. The system is set to boot off USB. No hard disk is required. This also benefits in that the &#8220;worst case scenario&#8221; typically requires just a reboot. If that fails, the pendrive can be removed and inspected or simply re-flashed. The pendrive in the real kiosk is locked away behind a secure panel.</p>
<p>The first time the OS boots it performs setup (network, graphics etc.). We then run a script to secure the GRUB boot menu and make the &#8220;default&#8221; option boot immediately:</p>
<pre style="padding-left: 30px;">if [ -f /etc/init.d/suse_studio_firstboot ]
then
# Lets protect our lovely grub...
echo "Running KiOS first boot script..."
cat /boot/grub/menu.lst | grep -v timeout &gt; /boot/grub/menu.tmp
cat /home/kiosk/menu.lst /boot/grub/menu.tmp &gt; /boot/grub/menu.new
mv /boot/grub/menu.lst /boot/grub/menu.old
mv /boot/grub/menu.new /boot/grub/menu.lst
fi</pre>
<p>In short, remove the standard timeout of 10 seconds. Then paste the contents of a second file at the start of the menu. The second file contains the following:</p>
<pre style="padding-left: 30px;">timeout 0
hiddenmenu
password --md5 &lt;hash&gt;</pre>
<p>Effectively hiding the menu by default, causing immediate boot to the default option, and (worst case) if someone does intercept the menu a password is required to edit any options.</p>
<p>Also, on first boot, a number of files are overlaid into the operating system:</p>
<address style="padding-left: 30px;"><strong>/home/kiosk/.bashrc</strong> contains a simple &#8220;exec startx&#8221;. EXEC replaces the shell. Thus, if X dies, the kiosk user is logged out. </address>
<address style="padding-left: 30px;"> </address>
<address style="padding-left: 30px;"><strong>/home/kiosk/.xinitrc</strong> starts Opera in Kiosk mode with a number of options. Namely &#8211; full screen, no keyboard shortcuts, no menu, no toolbar, no address bar, no saving, no printing, no downloading, no right click/context menu, a reset flag (if the kiosk is left unattended, return to the home page after a given interval), no &#8220;mailto&#8221; links, no history, clear the cache on exit, no ctrl-alt-del etc. </address>
<address style="padding-left: 30px;"> </address>
<address style="padding-left: 30px;"><strong>/home/kiosk/opera.tar.gz</strong> is restored to /home/kiosk/ creationg a directory called .opera with one file &#8211; opera6.ini &#8211; containing other Opera preferences to lock down the web browser ( for more information see <a  href="http://www.opera.com/support/mastering/kiosk/" target="_blank">http://www.opera.com/support/mastering/kiosk/</a> ). This also has a knock on effect in that it tricks Opera into believing this is not the first execution &#8211; the EULA does not appear as one would normally expect. </address>
<address style="padding-left: 30px;"> </address>
<address style="padding-left: 30px;">A new version of <strong>inittab</strong> is copied over to /etc/ that forces run level 3, turns off all TTYS (ctrl-alt-F1 etc.), and automatically logs in the kiosk user. This combination now means that if Opera is killed, X dies, user is logged out and re-logged in automatically (i.e., the browser simply reappears!). Ditto if Ctrl-Alt-Backspace is hit twice (this was left in as a tidy way of restarting Opera if it crashes). </address>
<address style="padding-left: 30px;"> </address>
<address style="padding-left: 30px;">A replacement <strong>xinitrc.common</strong> is copied to /etc/X11/xinit/ &#8211; the only difference being the suppression of an error message (by default, on login, a dialog appears complaining that no window manager has been found).</address>
<p>The user can still Ctrl-Alt-F1 (etc.) but the terminals are all dead aside from the one running Opera. Anything killing Opera results in a logout/login/startx/start opera. In the real world &#8211; the keyboard on the kiosk has no Ctrl or F keys &#8211; but, it is still better to cater for every eventuality (keyboard!).</p>
<h3>KiOS without a Server</h3>
<p>If KiOS is to be used in an environment without a server Opera can be configured to handle the whitelist/blacklist:</p>
<ol>
<li>Exit Opera</li>
<li>Define a filter file in opera:config</li>
<li>Create a filter file if it does not exist already</li>
<li>Make an [exclude] section listing the URLs to block</li>
<li>Make an [include] section listing the URLs to allow</li>
<li>Restart Opera</li>
</ol>
<p>Example limiting access to just one site:</p>
<pre style="padding-left: 30px;">[prefs]
prioritize excludelist=0</pre>
<pre style="padding-left: 30px;">[include]

http://???.opera.com/*</pre>
<pre style="padding-left: 30px;">[exclude]
*</pre>
<h3>Dealing with the USB stick and what happens if SuSE remove the Studio service?</h3>
<p>The raw disk image is written to the USB stick with the following command:</p>
<pre style="padding-left: 30px;">sudo dd if=/home/garyr/Desktop/KioS/KiOS.i686-1.1.11.raw of=/dev/sdb bs=4k</pre>
<p>If the USB will not boot:</p>
<pre style="padding-left: 30px;">umount /dev/sdb1
fdisk /dev/sdb
\tp     «--- print partition table
\ta     «--- activate partition (bootable)
\t1     «--- partition 1 is bootable
\tw     «--- write changes to partition table</pre>
<p>The disk image can be modified without using Studio as follows:</p>
<pre style="padding-left: 30px;">mount -oloop,offset=32256 discimage.raw /mnt/</pre>
<h3>Key File Contents</h3>
<p><strong>.bashrc:</strong></p>
<pre style="padding-left: 30px;">clear
exec startx</pre>
<p><strong>.xinitrc:</strong></p>
<pre style="padding-left: 30px;">opera -kioskmode -nowin -resetonexit -nosplash -nosave -noprint -nomenu -nomaillinks
-nomail -nokeys -nocontextmenu -kioskresetstation -nodownload</pre>
<p><strong>inittab (selected entries only):</strong></p>
<pre style="padding-left: 30px;">id:3:initdefault:
...
1:2345:respawn:/sbin/mingetty --noclear --autologin kiosk tty1
...
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6</pre>
<p><strong>xinitrc.common (basically delete a block):</strong></p>
<pre style="padding-left: 30px;">#
# Error, no Window Manager found.  Normally the exit
# raises the fallback trap of the sourcing script.
# ...error dialogue removed leaving just:
exit 1</pre>
<p><strong>menu.lst and first boot:</strong></p>
<p>See earlier</p>
<p><strong>opera6.ini (selected entries only, proxy settings also go in here):</strong></p>
<pre style="padding-left: 30px;">[User Prefs]
Language File=/usr/share/opera/locale/en-GB/british.lng
Preferences Version=2
Has Restored MIME Flag=1
Trust Server Types=0
Check For New Opera=0
DevTools Splitter Position=500
History View Style=0
Open Page Next To Current=0
Last Used Auto Window Timeout=60
Enable Wand=0
Show Startup Dialog=0
Startup Type=2
Home URL=http://www.google.com
Ignore Target=1
Target Destination=3
Ignore Unrequested Popups=0
Keyboard Configuration=/usr/share/opera/ini/standard_keyboard.ini
Enable Gesture=0
Mouse Configuration=/usr/share/opera/ini/standard_mouse.ini
Window Cycle Type=0
Use Thumbnails in Window Cycle=0
Use Thumbnails in Tab Tooltips=1
Activate Tab On Close=0
<em>...snip...</em>
Visited Pages=0
Accept Cookies Session Only=1
Enable Cookies=3
Toolbar Configuration=/home/kiosk/.opera/toolbar/standard_toolbar_1.ini
AddressBar Alignment=0</pre>
<pre style="padding-left: 30px;">[State]
Accept License=1
Reading Plugins=0
Run=0</pre>
<pre style="padding-left: 30px;">[Disk Cache]
Size=20000
Enabled=1
Empty On Exit=1
Images Expiry=18000
Other Expiry=18000
Docs Modification=1
Figs Modification=2
Other Modification=2</pre>
<pre style="padding-left: 30px;">[Special]
Go Home Time Out=60</pre>
<h3>Closing Notes for the Client</h3>
<ul>
<li>The host PC should be set to boot from USB!</li>
<li>The host PC should have a BIOS password to prevent changing of the boot order.</li>
<li>It may ultimately be worth disabling Ctrl-Alt all together.</li>
<li>Still need to investigate SysRq ( <a  href="http://en.wikipedia.org/wiki/Magic_SysRq_key" target="_blank">http://en.wikipedia.org/wiki/Magic_SysRq_key</a> ) though on first inspection the only combination that works is Alt-SysRq-o to power down.</li>
<li>Navigation Issues. There is no home button, back/forward etc. In the initial application of KiOS this is not an issue as the web page being used will handle it. In other scenarios, a navigational IFRAME could be used or limited toolbar buttons re-enabled.</li>
<li>Customer did not want a screen saver kicking in, the screen stays on with &#8220;touch here to start&#8221;. This was fixed by adding &#8220;<strong>xset -dpms</strong>&#8221; and &#8220;<strong>xset s off</strong>&#8221; to the xinitrc before the Opera call.</li>
<li>Touch screen drivers. The package <strong>x11-input-evtouch</strong> was added to the build in SuSE Studio.</li>
</ul>
<h2>The KiOS Server Configuration</h2>
<p>Broadly speaking, the steps involved were:</p>
<ul>
<li>Setup the router (firewall, make it keep IPs per MAC address etc.).</li>
<li>Setup server OS including web server.</li>
<li>Write the kiosk client image to USB sticks.</li>
<li>Edit the USB client sticks setting the Homepage and the proxy settings:</li>
</ul>
<pre style="padding-left: 60px;">[Proxy]
Use HTTP=1
Use HTTPS=1
Use FTP=1
Use GOPHER=1
Use WAIS=1
Use Automatic Proxy Configuration=0
HTTP server=192.168.1.3:3128
HTTPS server=192.168.1.3:3128
FTP server=192.168.1.3:3128
Gopher server=192.168.1.3:3128
WAIS server=192.168.1.3:3128
Automatic Proxy Configuration URL=
Enable HTTP 1.1 for proxy=0
Use Proxy On Local Names Check=0
No Proxy Servers=
No Proxy Servers Check=0</pre>
<ul>
<li>We then setup Squid (the web proxy software) to run on its default port (3128).</li>
<li>Configure the white list/ACL using Squid so only sites stated are allowed:</li>
</ul>
<pre style="padding-left: 60px;"><a  href="http://en.kioskea.net/faq/sujet-804-ubuntu-installing-an-http-proxy-server-squid" target="_blank">http://en.kioskea.net/faq/sujet-804-ubuntu-installing-an-http-proxy-server-squid</a>
<a  href="http://beginlinux.com/server_training/121-proxy-server/1051-squid-acls" target="_blank">http://beginlinux.com/server_training/121-proxy-server/1051-squid-acls</a></pre>
<ul>
<li>You can do that in your squid.conf using an acl such as:</li>
</ul>
<pre style="padding-left: 60px;">acl whitelist dstdomain "/etc/squid/whitelist"
http_access deny !whitelist

<em>...and a whitelist that looks like...</em>

.slashdot.org
.linuxquestions.org</pre>
<ul>
<li>Another option would be to use an acl with &#8220;dst (ip-address/netmask)&#8221; instead of &#8220;dstdomain (.linuxquestions.org)&#8221;. Modify to your needs,<br />
there are tons of other options described in the squid.conf comments.</li>
<li>Custom 404/redirect to HOME for sites not accessible.</li>
<li>Firewall Server OS except for port 80 (web) and 22 (ssh for remote admin &#8211; will require port forwarding in router &#8211; no other outside ports should be accessible).</li>
<li>Confirm all of this via both internal and external NMAP scans.</li>
<li>Deploy the content to the server.  Tweak as necessary.  Server should be only MAC with Internet access.  Everything else via proxy.</li>
<li>Check IP assignment in router, force it to stay the same always, and update the &#8220;where am I&#8221; configuration accordingly</li>
<li>Check squid logs to make sure clients are indeed going via proxy.</li>
</ul>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/how-to-build-a-secure-kiosk-operating-system/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/how-to-build-a-secure-kiosk-operating-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Clarity for Software Shoppers</title>
		<link>http://www.flatcoder.co.uk/clarity-for-software-shoppers/</link>
		<comments>http://www.flatcoder.co.uk/clarity-for-software-shoppers/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 20:47:36 +0000</pubDate>
		<dc:creator>fc</dc:creator>
				<category><![CDATA[PC Specs]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software shoppers]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://www.flatcoder.co.uk/?p=162</guid>
		<description><![CDATA[Clarity for Software Shoppers The Problem Here&#8217;s an example.  The system requirements for Assassin&#8217;s Creed 2 on the PC are: Processor: Dual core processor 2.6 GHz Intel® Pentium® D or AMD Athlon™ 64 X2 3800+ (Intel Core® 2 Duo 2.2 GHz or AMD Athlon 64 X2 4400+ or better recommended) RAM: 3 GB Windows XP [...]]]></description>
			<content:encoded><![CDATA[<p><img class=" wp-image-323 alignleft" title="SR Sticker" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/03/new.jpg" alt="SR Sticker" width="300" height="300" /></p>
<h1>Clarity for Software Shoppers</h1>
<h2>The Problem</h2>
<p>Here&#8217;s an example.  The system requirements for Assassin&#8217;s Creed 2 on the PC are:</p>
<ul>
<li>Processor: Dual core processor 2.6 GHz Intel® Pentium® D or AMD Athlon™ 64 X2 3800+ (Intel Core® 2 Duo 2.2 GHz or AMD Athlon 64 X2 4400+ or better recommended)</li>
<li>RAM: 3 GB Windows XP / 2 GB Windows Vista</li>
<li>Video Card: 256 MB DirectX® 10.0-compliant video card or DirectX 9.0-compliant card with Shader Model 3.0 or higher</li>
<li>Sound Card: DirectX 9.0 or 10.0-compliant sound card (5.1 sound card recommended)</li>
<li>DirectX Version: DirectX 9.0 or 10.0 libraries (included on disc)</li>
<li>DVD-ROM: DVD-ROM dual-layer drive</li>
<li>Hard Drive Space: 12GB</li>
</ul>
<p>Here&#8217;s the specification of  a PC currently on the market:</p>
<ul>
<li>Processor :  AMD Athlon™ II X3 425 Processor, 2.7 GHz, 2.0 GHz HT (4000 MT/s), 3 x 512 KB L2 Cache</li>
<li>Operating System:  Genuine Windows® 7 Home Premium</li>
<li>RAM:  3072 MB DDR2</li>
<li>Graphics card:  NVIDIA GeForce 7100 integrated graphics</li>
</ul>
<p>See the problem?</p>
<p><span id="more-162"></span></p>
<p style="text-align: justify;">To some people, the information above is fine.  For the majority of people, it is not (if I called my Mum and asked her what graphics card she had I&#8217;d get an &#8220;eh?  a what?&#8221;).  So why, in 2010, have we not come up with a cleaner mechanism for hardware and software requirements instead of obfuscated blurbs like the above?  The problem is really a simple one &#8211; a customer walks into a shop, wants to buy some PC software and wants to know/confirm it will run adequately on the PC they own.  Simple enough, so can we simplify the jargon?</p>
<h3 style="text-align: justify;">The Solution</h3>
<p style="text-align: justify;">Here&#8217;s how I would do it.  I think.  Let&#8217;s face it &#8211; the critical aspects in terms of specification, these days, are Operating System, CPU, Graphics Card and RAM.  We can pretty much disregard hard drive space, I haven&#8217;t had a disk space issue since the 1990s, disks are cheap as chips these days.  Likewise, I&#8217;ve not run into a PC without a sound card for even longer, nor had an issue where a sound card would not be up to the job (yeah, we can have surround if we like, dolby 5.1 blah blah, but essentially, the base is still a sound card and a couple of speakers).</p>
<p style="text-align: justify;">We can capture what&#8217;s needed in a 3 point number and an Operating System indicator.  For example, the back of the box for &#8220;some game&#8221; might give an &#8220;SR&#8221; (System Requirements) Score of:</p>
<p style="text-align: justify;"><strong><span style="font-size: xx-large;"><img class="aligncenter size-full wp-image-325" title="ms" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/03/ms.jpg" alt="ms" width="60" height="60" /> 2.3.1</span></strong></p>
<p style="text-align: justify;"><em>(or possibly a &#8220;minimum&#8221; and &#8220;recommended&#8221; set of values)</em></p>
<p style="text-align: justify;">First we give the OS as an icon.  Windows, Mac, Linux, others and variants (e.g. XP/Vista/&#8230;):</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-326" title="os_logos" src="http://www.flatcoder.co.uk/wp-content/uploads/2010/03/os_logos.jpg" alt="OS Logos" width="373" height="116" /></p>
<p style="text-align: justify;">Next, a 3 digitnumber, in order:</p>
<ol style="text-align: justify;">
<li><strong>The System Level</strong></li>
<li><strong>The Graphics Card Level</strong></li>
<li><strong>The RAM Level</strong></li>
</ol>
<p style="text-align: justify;"><strong>So, 2.3.1 means a System level of 2 or more, a Graphics card level of 3 or more and a RAM level of 1 or more.</strong></p>
<p style="text-align: justify;">Et Voila.  PCs should come out of the shop with a nice <strong>&#8220;SR&#8221;</strong> sticker instead of all those badges for Intel, nVidia, ATI or whoever.  Likewise, software boxes would have a simple panel on the back giving a rating.  No more confusion for anyone, you can tell at a glance if your system is up to the job of the software you&#8217;re buying &#8211; all you have to ask is &#8220;is that SR number bigger than mine?&#8221;. If it is, move along, that software isn&#8217;t for you.</p>
<h3 style="text-align: justify;">Under the Hood</h3>
<p style="text-align: justify;">System level, what does that mean?  Hypothetical example:</p>
<ul style="text-align: justify;">
<li>System 1:   At least 1Ghz processor</li>
<li>System 2:   At least 2Ghz</li>
<li>System 3:   At least Dual Core, 2Ghz</li>
<li>(etc.)</li>
</ul>
<p style="text-align: justify;">The Graphics level:</p>
<ul style="text-align: justify;">
<li>GPU 1:  3d 64MB shared memory or more</li>
<li>GPU 2:  128MB dedicated memory or more</li>
<li>(etc.)</li>
</ul>
<p style="text-align: justify;">Lastly, memory (RAM) level:</p>
<ul style="text-align: justify;">
<li>RAM 1:  1GB or more</li>
<li>RAM 2:  2GB or more</li>
<li>(etc.)</li>
</ul>
<h4 style="text-align: justify;">Examples</h4>
<p style="text-align: justify;">Assuming:</p>
<p style="text-align: justify;">My PC is Windows XP 2.4.3</p>
<p style="text-align: justify;">OS is confirmed by icon (software runs on XP), software of:</p>
<ul style="text-align: justify;">
<li>2.3.2  would run fine</li>
<li>2.5.2  would struggle with graphics</li>
<li>3.4.3 would struggle generally (CPU not fast enough)</li>
<li>2.4.5  would struggle generally (not enough memory)</li>
<li>etc.</li>
</ul>
<p style="text-align: justify;">Simples <img src='http://www.flatcoder.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.flatcoder.co.uk/clarity-for-software-shoppers/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.flatcoder.co.uk/clarity-for-software-shoppers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

