<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>James Kanjo&#039;s Blog</title>
		<link>http://james.wikidot.com</link>
		<description>The blog of James Kanjo</description>
				<copyright></copyright>
		<lastBuildDate>Fri, 24 May 2013 23:05:49 +0000</lastBuildDate>
		
					<item>
				<guid>http://james.wikidot.com/blog:77</guid>
				<title>Wikidot: CSS Per Category</title>
				<link>http://james.wikidot.com/blog:77</link>
				<description>

&lt;p&gt;intro: &amp;quot;Something that&#039;s slightly annoying about Wikidot is that when it comes to creating new pages that previously didn&#039;t exist, the Live Template isn&#039;t taken into account. That is, if you use the CSS module in the Live Template, then that isn&#039;t applied to the page until &lt;strong&gt;after&lt;/strong&gt; you save the page. All proceeding edits work fine, but the initial edit doesn&#039;t look how it&#039;s supposed to.\n\nBut of course, they don&#039;t call me a Wikidot Super-Guru for nothing! Read on to see how it&#039;s done properly.&amp;quot;&lt;br /&gt;
main: &amp;quot;There are two useful tools that appear when we create new pages: the top and sidebar navigators. Whatever code you place in these two pages, it will appear on every page that utilises those particular navigators. Generally speaking, these navigators are usually global for the site on most wikis (however they can be customised on a per-category basis).\n\nFor our exercise today, we are going to focus on the sidebar navigator (usually located on the &lt;tt&gt;/nav:side&lt;/tt&gt; page).\n\n+ Step 1: Create your per-category CSS pages\n\nLet&#039;s assume the category \&amp;quot;survey\&amp;quot;. We are going to create a hidden page called &lt;tt&gt;/survey:_css&lt;/tt&gt; for us to store our CSS module on. Place your CSS module on this page like so:\n\n[[code]]\n[[module CSS]]\na {color: #FFF !important;}\n[&lt;a href=&quot;http://james.wikidot.com/module]]/n[[/code]]/n/nThis&quot;&gt;line of CSS code will ensure all links appear in the colour \&amp;quot;white\&amp;quot;.\n\n+ Step 2: Inject James&#039; Brilliant Code\n\nNavigate to your sidebar navigator page and place the following code at the bottom:\n\n[[code&lt;/a&gt;][[include :snippets:category-css]]\n[&lt;a href=&quot;http://james.wikidot.com/code]]/n/nThis&quot;&gt;Wikidot code will extract the source from the {{:_css}} page on a per-category basis. If no such page exists, nothing happens!\n\nIf you happen to have no sidebar navigator on your Wikidot site, I suggest that you:\n# Re-enable the sidebar from your {{/admin:manage}} page;\n# Go to the sidebar page (usually it&#039;s the {{/nav:side}} page);\n# Paste the following code at the top of the sidebar&#039;s source code to \&amp;quot;remove\&amp;quot; the sidebar:\n[[code&lt;/a&gt;]\n[[module CSS show=\&amp;quot;true\&amp;quot;]]\n#side-bar {display: none;}\n[[/module]]\n[[/code]]\n\n+ Step 3: You&#039;re done! Check it out!\n\nThat&#039;s right, there is no Step 3! You can now create new pages with per-category customised CSS now!!!\n\nNo more messing around with the site&#039;s global CSS!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Sat, 04 Feb 2012 07:23:04 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;Something that's slightly annoying about Wikidot is that when it comes to creating new pages that previously didn't exist, the Live Template isn't taken into account. That is, if you use the CSS module in the Live Template, then that isn't applied to the page until <strong>after</strong> you save the page. All proceeding edits work fine, but the initial edit doesn't look how it's supposed to.\n\nBut of course, they don't call me a Wikidot Super-Guru for nothing! Read on to see how it's done properly.&quot;<br /> main: &quot;There are two useful tools that appear when we create new pages: the top and sidebar navigators. Whatever code you place in these two pages, it will appear on every page that utilises those particular navigators. Generally speaking, these navigators are usually global for the site on most wikis (however they can be customised on a per-category basis).\n\nFor our exercise today, we are going to focus on the sidebar navigator (usually located on the <tt>/nav:side</tt> page).\n\n+ Step 1: Create your per-category CSS pages\n\nLet's assume the category \&quot;survey\&quot;. We are going to create a hidden page called <tt>/survey:_css</tt> for us to store our CSS module on. Place your CSS module on this page like so:\n\n[[code]]\n[[module CSS]]\na {color: #FFF !important;}\n[<a href="http://james.wikidot.com/module]]/n[[/code]]/n/nThis">line of CSS code will ensure all links appear in the colour \&quot;white\&quot;.\n\n+ Step 2: Inject James' Brilliant Code\n\nNavigate to your sidebar navigator page and place the following code at the bottom:\n\n[[code</a>][[include :snippets:category-css]]\n[<a href="http://james.wikidot.com/code]]/n/nThis">Wikidot code will extract the source from the {{:_css}} page on a per-category basis. If no such page exists, nothing happens!\n\nIf you happen to have no sidebar navigator on your Wikidot site, I suggest that you:\n# Re-enable the sidebar from your {{/admin:manage}} page;\n# Go to the sidebar page (usually it's the {{/nav:side}} page);\n# Paste the following code at the top of the sidebar's source code to \&quot;remove\&quot; the sidebar:\n[[code</a>]\n[[module CSS show=\&quot;true\&quot;]]\n#side-bar {display: none;}\n[[/module]]\n[[/code]]\n\n+ Step 3: You're done! Check it out!\n\nThat's right, there is no Step 3! You can now create new pages with per-category customised CSS now!!!\n\nNo more messing around with the site's global CSS!&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:75</guid>
				<title>Wikidot: API — A New Age</title>
				<link>http://james.wikidot.com/blog:75</link>
				<description>

&lt;p&gt;intro: &amp;quot;Many many moons ago, Wikidot released something that they hoped, would change the future of Wikidot: &lt;a href=&quot;http://www.wikidot.com/doc:api&quot;&gt;Wikidot XML-RPC API&lt;/a&gt;.\n\nI know right, I&#039;ve never seen hyphenated acronyms before&amp;#8230; and it uses the scary looking letter “X” and yet a third unknown acronym “API”.\n\n&amp;quot;&lt;br /&gt;
main: &amp;quot;API means “Application Programming Interface”. In a nutshell, an API lets programmers create programming code that communicates with something (a web server, another program, a piece of computer hardware, just to name a few).\n\nXML-RPC is an API with the specific task of sending and receiving information from servers.\n\nWikidot created an API that allows us to request information about Wikidot sites. This “Wikidot API” uses the XML-RPC API to actually communicate with the Wikidot servers. So when we program with the Wikidot API, we are writing code that talks to an API that talks to another API. But you didn&#039;t have to know that part!!!\n\nAnyway, at the time, the Wikidot API only had reading privileges, and was only compatible with the Python programming language&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-561620-1&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;1&lt;/a&gt;&lt;/sup&gt;. But only in June last year, Wikidot upgraded their API to provide writing privileges to Wikidot sites. It wasn&#039;t until then that things really started to kick off! Because we now have writing privileges, some Wikidot users created libraries for the Wikidot API in other programming languages.&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-561620-2&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;2&lt;/a&gt;&lt;/sup&gt;\n\n&amp;#8212;&amp;#8212;\n\nIt was around this time Wikidot expert Shane Smith (&lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/leiger&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=32953&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;leiger&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=32953)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/leiger&quot;  &gt;leiger&lt;/a&gt;&lt;/span&gt;) started work on a “Shane&#039;s Text Editor” (STE), a simple Java-based text editing application. Shane invited me to try it out, and I did. At the time, I wasn&#039;t too excited about it. I mean, come on! It&#039;s a text editor! What&#039;s the big deal? I already have “TextEdit” and “Notepad” on my computer.\n\nThat&#039;s to say, it was a pretty simple app at the time, a bare boned functional editor.\n\nSo then I neglected interest. Little did I realise that STE was evolving into something much bigger. Due to the newly upgraded API, Shane created a library to make the Wikidot API compatible with the Java programming language. He then started using the Wikidot API with STE.\n\nIt wasn&#039;t until April this year that I decided to revisit the STE website and see how his editor was coming along.\n\nWOW!!! No seriously, f*cking WOW!!!\n\nSTE is not just a Text Editor. It&#039;s a Wikidot Tool. It&#039;s allows you to import your Wikidot pages, edit them offline, save them to your computer (metadata included) and export it to the web when you&#039;re online.\nYou can even preview your documents using HTML preview!\n\nSince then, I&#039;ve taking a big interest in the development of STE, because it is simply an essential Wikidot tool. And from the rumors I&#039;ve been hearing lately&amp;#8230; version 4 is going to blow us away!\n\nThankyou, Shane, for making this remarkable tool!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;PS. This blog post was posted via &lt;a href=&quot;http://www.wdeditor.com/&quot;&gt;STE&lt;/a&gt;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes-footer&quot;&gt;
&lt;div class=&quot;title&quot;&gt;Footnotes&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-561620-1&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;1&lt;/a&gt;. Other programming languages were perfectly compatible with it; however, at the time, nobody had built Wikidot API libraries to make them work.&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-561620-2&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;2&lt;/a&gt;. \n[[include :developer:inc:library-list]]\n&lt;/div&gt;
&lt;/div&gt;
</description>
				<pubDate>Wed, 27 Jul 2011 06:09:45 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;Many many moons ago, Wikidot released something that they hoped, would change the future of Wikidot: <a href="http://www.wikidot.com/doc:api">Wikidot XML-RPC API</a>.\n\nI know right, I've never seen hyphenated acronyms before&#8230; and it uses the scary looking letter “X” and yet a third unknown acronym “API”.\n\n&quot;<br /> main: &quot;API means “Application Programming Interface”. In a nutshell, an API lets programmers create programming code that communicates with something (a web server, another program, a piece of computer hardware, just to name a few).\n\nXML-RPC is an API with the specific task of sending and receiving information from servers.\n\nWikidot created an API that allows us to request information about Wikidot sites. This “Wikidot API” uses the XML-RPC API to actually communicate with the Wikidot servers. So when we program with the Wikidot API, we are writing code that talks to an API that talks to another API. But you didn't have to know that part!!!\n\nAnyway, at the time, the Wikidot API only had reading privileges, and was only compatible with the Python programming language<sup class="footnoteref"><a id="footnoteref-500358-1" href="javascript:;" class="footnoteref" >1</a></sup>. But only in June last year, Wikidot upgraded their API to provide writing privileges to Wikidot sites. It wasn't until then that things really started to kick off! Because we now have writing privileges, some Wikidot users created libraries for the Wikidot API in other programming languages.<sup class="footnoteref"><a id="footnoteref-500358-2" href="javascript:;" class="footnoteref" >2</a></sup>\n\n&#8212;&#8212;\n\nIt was around this time Wikidot expert Shane Smith (<span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/leiger" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=32953&amp;size=small&amp;timestamp=1369436747" alt="leiger" style="background-image:url(http://www.wikidot.com/userkarma.php?u=32953)" /></a><a href="http://www.wikidot.com/user:info/leiger" >leiger</a></span>) started work on a “Shane's Text Editor” (STE), a simple Java-based text editing application. Shane invited me to try it out, and I did. At the time, I wasn't too excited about it. I mean, come on! It's a text editor! What's the big deal? I already have “TextEdit” and “Notepad” on my computer.\n\nThat's to say, it was a pretty simple app at the time, a bare boned functional editor.\n\nSo then I neglected interest. Little did I realise that STE was evolving into something much bigger. Due to the newly upgraded API, Shane created a library to make the Wikidot API compatible with the Java programming language. He then started using the Wikidot API with STE.\n\nIt wasn't until April this year that I decided to revisit the STE website and see how his editor was coming along.\n\nWOW!!! No seriously, f*cking WOW!!!\n\nSTE is not just a Text Editor. It's a Wikidot Tool. It's allows you to import your Wikidot pages, edit them offline, save them to your computer (metadata included) and export it to the web when you're online.\nYou can even preview your documents using HTML preview!\n\nSince then, I've taking a big interest in the development of STE, because it is simply an essential Wikidot tool. And from the rumors I've been hearing lately&#8230; version 4 is going to blow us away!\n\nThankyou, Shane, for making this remarkable tool!&quot;<br /> sig: '3'<br /> after: 'PS. This blog post was posted via <a href="http://www.wdeditor.com/">STE</a>'</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-500358-1"><a href="javascript:;" >1</a>. Other programming languages were perfectly compatible with it; however, at the time, nobody had built Wikidot API libraries to make them work.</div> <div class="footnote-footer" id="footnote-500358-2"><a href="javascript:;" >2</a>. \n[[include :developer:inc:library-list]]\n</div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:74</guid>
				<title>Wikidot: Yes, I truly have lost my mind</title>
				<link>http://james.wikidot.com/blog:74</link>
				<description>

&lt;p&gt;intro: &amp;quot;So as I&#039;ve mentioned in the past, I have got this journal full of Wikidot ideas I come up with. It has well thought out designs and new mechanisms to solve problems. I never usually start on a Wikidot project without first drawing it out.\n\nUntil this weekend. I got an idea and acted upon it straight away.\n\nSo today, I am officially announcing my newest project:\n\n= &lt;span style=&quot;font-size:200%;&quot;&gt;&lt;strong&gt;The Wikidot Syntax to HTML Converter!!!&lt;/strong&gt;&lt;/span&gt;\n\nYes, what a completely pointless project. I&#039;ve lost the plot.&amp;quot;&lt;br /&gt;
main: &amp;quot;[[module ListPages category=\&amp;quot;*\&amp;quot; tags=\&amp;quot;_blog:74\&amp;quot;]]\nHere is version &lt;strong&gt;%%revisions%%&lt;/strong&gt; in it&#039;s current incomplete form. Try it out! Type in some Wikidot Syntax!\nIt&#039;s like creating a page, with instant preview!\n[&lt;a href=&quot;http://james.wikidot.com/module]]/n/n[[include&quot;&gt;private:14 hide=@@&lt;/a&gt;]\n\nInterestingly enough, I have discovered some interesting things about Wikidot through this project. Especially in the construction of the Wikidot parser itself. That&#039;s right, THE Wikidot parser.\n\nBut of course I have. Logically thinking, if I were to construct a tool that perfectly converts Wikidot syntax into HTML, in theory the tool should be very similar to the actual Wikidot parser itself.\n\nI will publish my findings later, however :)&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Sun, 05 Jun 2011 12:57:39 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;So as I've mentioned in the past, I have got this journal full of Wikidot ideas I come up with. It has well thought out designs and new mechanisms to solve problems. I never usually start on a Wikidot project without first drawing it out.\n\nUntil this weekend. I got an idea and acted upon it straight away.\n\nSo today, I am officially announcing my newest project:\n\n= <span style="font-size:200%;"><strong>The Wikidot Syntax to HTML Converter!!!</strong></span>\n\nYes, what a completely pointless project. I've lost the plot.&quot;<br /> main: &quot;[[module ListPages category=\&quot;*\&quot; tags=\&quot;_blog:74\&quot;]]\nHere is version <strong>%%revisions%%</strong> in it's current incomplete form. Try it out! Type in some Wikidot Syntax!\nIt's like creating a page, with instant preview!\n[<a href="http://james.wikidot.com/module]]/n/n[[include">private:14 hide=@@</a>]\n\nInterestingly enough, I have discovered some interesting things about Wikidot through this project. Especially in the construction of the Wikidot parser itself. That's right, THE Wikidot parser.\n\nBut of course I have. Logically thinking, if I were to construct a tool that perfectly converts Wikidot syntax into HTML, in theory the tool should be very similar to the actual Wikidot parser itself.\n\nI will publish my findings later, however :)&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:73</guid>
				<title>Wikidot: Password Verification Server</title>
				<link>http://james.wikidot.com/blog:73</link>
				<description>

&lt;p&gt;intro: &amp;quot;So lately I&#039;ve been fantasising several ideas for Wikidot projects I could do. And by “lately”, I mean over the past &lt;span class=&quot;odate time_1189216564&quot;&gt;08 Sep 2007 01:56&lt;/span&gt; of my life (since I joined Wikidot). I actually have this journal dedicated to programming concepts and ideas for Wikidot, that has hand-drawn designs, lines of code, trial &amp;amp; error formulas, ideas and the main architecture of my Wikidot endeavours.\n\nAnyways, today I&#039;m launching something new:\n\n= &lt;span style=&quot;font-size:200%;&quot;&gt;&lt;a href=&quot;http://password.wikidot.com&quot;&gt;The Password Verification Server&lt;/a&gt;&lt;/span&gt;&amp;quot;&lt;br /&gt;
main: &amp;quot;The Password Verification Server (PVS) allows you to:\n* Create a password-controlled text box\n* Forward users with the correct password to hidden web pages\n* Display a customisable message to users who enter the correct password\n\nBut what better way to explain the PVS than to demonstrate it live?\n\n&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;\n&lt;strong&gt;What does 2+2 equal?&lt;/strong&gt;\n&lt;/td&gt;
&lt;td&gt;\n[[include :csi:password key=5cf295a9bb96b20adf2380fe035629477bd33ce11afa03f25528cc1977e3a0a6]]\n&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;\n\nFor security purposes, the PVS doesn&#039;t store passwords directly on the server. Passwords are encrypted on the user&#039;s machine before they are sent to the server, using a one-way encryption (SHA-256). This means that no amount of hacking can reveal your password.\n\nActually, passwords are, in a way, encrypted twice before storing them on the server, so there&#039;s no possible way of reverse-engineering them or guessing them through brute force. They are safely stored.\n\n&amp;#8212;&amp;#8212;\n\nI learnt a lot of things through this project. Take encryption and hashing, for example. I had to research all about it and learn about the weaknesses and strengths of different algorithms. Eventually I decided that SHA-256 would suit the needs of the PVS.\n\nSo now that you know about the PVS, I highly recommend that you GO AHEAD and PLAY WITH IT!!! Have some password fun! Make sure that the countless hours I&#039;ve invested in this project weren&#039;t done in vain!!!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Fri, 27 May 2011 14:21:46 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;So lately I've been fantasising several ideas for Wikidot projects I could do. And by “lately”, I mean over the past <span class="odate time_1189216564">08 Sep 2007 01:56</span> of my life (since I joined Wikidot). I actually have this journal dedicated to programming concepts and ideas for Wikidot, that has hand-drawn designs, lines of code, trial &amp; error formulas, ideas and the main architecture of my Wikidot endeavours.\n\nAnyways, today I'm launching something new:\n\n= <span style="font-size:200%;"><a href="http://password.wikidot.com">The Password Verification Server</a></span>&quot;<br /> main: &quot;The Password Verification Server (PVS) allows you to:\n* Create a password-controlled text box\n* Forward users with the correct password to hidden web pages\n* Display a customisable message to users who enter the correct password\n\nBut what better way to explain the PVS than to demonstrate it live?\n\n</p> <table> <tr> <td>\n<strong>What does 2+2 equal?</strong>\n</td> <td>\n[[include :csi:password key=5cf295a9bb96b20adf2380fe035629477bd33ce11afa03f25528cc1977e3a0a6]]\n</td> </tr> </table> <p>\n\nFor security purposes, the PVS doesn't store passwords directly on the server. Passwords are encrypted on the user's machine before they are sent to the server, using a one-way encryption (SHA-256). This means that no amount of hacking can reveal your password.\n\nActually, passwords are, in a way, encrypted twice before storing them on the server, so there's no possible way of reverse-engineering them or guessing them through brute force. They are safely stored.\n\n&#8212;&#8212;\n\nI learnt a lot of things through this project. Take encryption and hashing, for example. I had to research all about it and learn about the weaknesses and strengths of different algorithms. Eventually I decided that SHA-256 would suit the needs of the PVS.\n\nSo now that you know about the PVS, I highly recommend that you GO AHEAD and PLAY WITH IT!!! Have some password fun! Make sure that the countless hours I've invested in this project weren't done in vain!!!&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:72</guid>
				<title>iPhone: No More Memory!</title>
				<link>http://james.wikidot.com/blog:72</link>
				<description>

&lt;p&gt;intro: &amp;quot;When I made the decision to purchase an iPhone 3GS, I decided on the highest capacity at the time: 32GB.\n\nThe reason being, I wanted to contain my entire music library on it, as well as my entire photo collection, my entire movie collection and my entire&amp;#8230; well, my computer really.&amp;quot;&lt;br /&gt;
main: &amp;quot;Two years onwards and 32GB is &lt;em&gt;still&lt;/em&gt; the highest capacity to opt for on an iPhone!!!\n\nLow and behold, I have finally ran out of memory, and have needed to sacrifice on a few media collections, starting with my movie podcasts. It&#039;s a sad time for me at the moment :(\n\nSo now I need a higher capacity iPhone — 64GB is the next ideal in line. However, Apple is unlikely to grant a 64GB version for the iPhone 4 line, so I guess I&#039;ll just have to wait until the iPhone 5.\n\nIf anybody has noticed a pattern with iPhones, Apple have actually released a new iPhone model each year since it&#039;s first model in 2007:\n* 2007 — iPhone (4GB, 8GB, 16GB)\n* 2008 — iPhone 3G (8GB, 16GB)\n* 2009 — iPhone 3GS (8GB, 16GB, 32GB)\n* 2010 — iPhone 4 (16GB, 32GB)\n\nSo following this pattern:\n* &lt;strong&gt;2011 — iPhone 5 (16GB, 32GB, 64GB)&lt;/strong&gt;\n* 2012 — iPhone 6 (32GB, 64GB)\n* 2012 — iPhone 7 (32GB, 64GB, 128GB)\n* 2013 — iPhone 8 (64GB, 128GB)\n\nIf Apple continue this pattern, the iPhone 5 is due to arrive &lt;strong&gt;this year&lt;/strong&gt; with an added capacity option of 64GB — exactly what I need.\n\nNow if they follow their pattern of release dates, which has been:\n* iPhone 3G — More than a year later\n* iPhone 3GS — Less than a year later\n* iPhone 4 — More than a year later\n\nThen they should release the iPhone 5 less than a year after the release of iPhone 4 — theoretically being before the 24&lt;sup&gt;th&lt;/sup&gt; of June. Well, that&#039;s what I&#039;m hoping for anyways!&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 25 Apr 2011 00:34:38 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;When I made the decision to purchase an iPhone 3GS, I decided on the highest capacity at the time: 32GB.\n\nThe reason being, I wanted to contain my entire music library on it, as well as my entire photo collection, my entire movie collection and my entire&#8230; well, my computer really.&quot;<br /> main: &quot;Two years onwards and 32GB is <em>still</em> the highest capacity to opt for on an iPhone!!!\n\nLow and behold, I have finally ran out of memory, and have needed to sacrifice on a few media collections, starting with my movie podcasts. It's a sad time for me at the moment :(\n\nSo now I need a higher capacity iPhone — 64GB is the next ideal in line. However, Apple is unlikely to grant a 64GB version for the iPhone 4 line, so I guess I'll just have to wait until the iPhone 5.\n\nIf anybody has noticed a pattern with iPhones, Apple have actually released a new iPhone model each year since it's first model in 2007:\n* 2007 — iPhone (4GB, 8GB, 16GB)\n* 2008 — iPhone 3G (8GB, 16GB)\n* 2009 — iPhone 3GS (8GB, 16GB, 32GB)\n* 2010 — iPhone 4 (16GB, 32GB)\n\nSo following this pattern:\n* <strong>2011 — iPhone 5 (16GB, 32GB, 64GB)</strong>\n* 2012 — iPhone 6 (32GB, 64GB)\n* 2012 — iPhone 7 (32GB, 64GB, 128GB)\n* 2013 — iPhone 8 (64GB, 128GB)\n\nIf Apple continue this pattern, the iPhone 5 is due to arrive <strong>this year</strong> with an added capacity option of 64GB — exactly what I need.\n\nNow if they follow their pattern of release dates, which has been:\n* iPhone 3G — More than a year later\n* iPhone 3GS — Less than a year later\n* iPhone 4 — More than a year later\n\nThen they should release the iPhone 5 less than a year after the release of iPhone 4 — theoretically being before the 24<sup>th</sup> of June. Well, that's what I'm hoping for anyways!&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:71</guid>
				<title>Delayed April Fools</title>
				<link>http://james.wikidot.com/blog:71</link>
				<description>

&lt;p&gt;intro: &amp;quot;Oh DARN! I forgot to do an April Fools joke on my blog!!!&amp;quot;&lt;br /&gt;
main: &amp;quot;April Fools Day is one of my favourite days of the year&amp;#8230; This year, however, I had a day off from work. So I had to perform a few pranks elsewhere. Usually I do one on my blog, like &lt;a href=&quot;http://james.wikidot.com/blog:60&quot;&gt;last year&lt;/a&gt;, where I pretended to pretend I was gay. I was pissing myself laughing about it, but that&#039;s my twisted sense of humour.\n\nSo I had a driving lesson on April Fools day, and so I was flirting with the idea of pretending to crash the car so that the instructor would freak&amp;#8230; then I&#039;d scream “April Fools! Haha, you thought we were going to die! Haha!” But then I thought that maybe that isn&#039;t such a good idea.\n\nSo I decided to do what I normally do. Short sheeting my sister&#039;s bed ;)&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Sun, 03 Apr 2011 11:50:41 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;Oh DARN! I forgot to do an April Fools joke on my blog!!!&quot;<br /> main: &quot;April Fools Day is one of my favourite days of the year&#8230; This year, however, I had a day off from work. So I had to perform a few pranks elsewhere. Usually I do one on my blog, like <a href="http://james.wikidot.com/blog:60">last year</a>, where I pretended to pretend I was gay. I was pissing myself laughing about it, but that's my twisted sense of humour.\n\nSo I had a driving lesson on April Fools day, and so I was flirting with the idea of pretending to crash the car so that the instructor would freak&#8230; then I'd scream “April Fools! Haha, you thought we were going to die! Haha!” But then I thought that maybe that isn't such a good idea.\n\nSo I decided to do what I normally do. Short sheeting my sister's bed ;)&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436747" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:70</guid>
				<title>Barcodes: An Exciting New Language!</title>
				<link>http://james.wikidot.com/blog:70</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[module css]]\n .bars, .barcode {\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n min-width: 100px;\n }\n .bars td {\n width: 1%;\n height: 100%;\n }\n .bars .bar { background-color: #000;}\n \n .barcode {width: 98%;}\n .barcode td {\n width: 7%;\n padding: 0;\n vertical-align: top;\n }\n .barcode .middle {width: 5%;}\n .barcode-demo img {vertical-align: top;}\n[&lt;a href=&quot;http://james.wikidot.com/module]]/n/n[[div&quot;&gt;class=\&amp;quot;barcode-demo\&amp;quot; style=\&amp;quot;margin: 1em auto 0; width: 200px; height: 150px; \&amp;quot;&lt;/a&gt;]\n[[table class=\&amp;quot;bars\&amp;quot; style=\&amp;quot;height: 75%;\&amp;quot;]]\n[[row]]\n[[cell id=\&amp;quot;bar0\&amp;quot; style=\&amp;quot;width: 5% !important;\&amp;quot; class=\&amp;quot;\&amp;quot;]][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar1\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar2\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar3\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar4\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar5\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar6\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar7\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar8\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar9\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar10\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar11\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar12\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar13\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar14\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar15\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar16\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar17\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar18\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar19\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar20\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar21\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar22\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar23\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar24\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar25\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar26\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar27\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar28\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar29\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar30\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar31\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar32\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar33\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar34\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar35\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar36\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar37\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar38\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar39\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar40\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar41\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar42\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar43\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar44\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar45\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar46\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar47\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar48\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar49\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar50\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar51\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar52\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar53\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar54\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar55\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar56\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar57\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar58\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar59\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar60\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar61\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar62\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar63\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar64\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar65\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar66\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar67\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar68\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar69\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar70\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar71\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar72\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar73\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar74\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar75\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar76\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar77\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar78\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar79\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar80\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar81\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar82\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar83\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar84\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar85\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar86\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar87\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar88\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar89\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar90\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar91\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar92\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar93\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar94\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;bar95\&amp;quot; class=\&amp;quot;bar\&amp;quot;&lt;/a&gt;][&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[/row]][[/table]]/n[[table&quot;&gt;class=\&amp;quot;barcode\&amp;quot; style=\&amp;quot;height: 20%;\&amp;quot;&lt;/a&gt;]\n[[row]]\n[[cell id=\&amp;quot;barcode0\&amp;quot; style=\&amp;quot;width: 7.75%;\&amp;quot; class=\&amp;quot;\&amp;quot;]]9[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode1\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]3[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode2\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]0[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode3\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]0[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode4\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]6[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode5\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]0[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode6\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]5[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode7\&amp;quot; class=\&amp;quot;middle\&amp;quot;&lt;/a&gt;]&lt;img src=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot; alt=&quot;pixel.gif&quot; class=&quot;image&quot; /&gt;&lt;img src=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot; alt=&quot;pixel.gif&quot; class=&quot;image&quot; /&gt;&lt;img src=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot; alt=&quot;pixel.gif&quot; class=&quot;image&quot; /&gt;[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode8\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]0[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode9\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]3[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode10\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]7[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode11\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]6[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode12\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]1[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[cell&quot;&gt;id=\&amp;quot;barcode13\&amp;quot; class=\&amp;quot;\&amp;quot;&lt;/a&gt;]8[&lt;a href=&quot;http://james.wikidot.com/cell]]/n[[/row]][[/table]]/n[[/div]]/n/nAt&quot;&gt;work last week, there was this one particular product with a poorly printed barcode that couldn&#039;t be read by our barcode readers. The solution: Print new barcodes manually. However there aren&#039;t many simple online tools that do just that.\n\nSo during this weekend I decided to invest my time in researching barcodes. Fortunately, the Wikipedia&#039;s articles on [http://en.wikipedia.org/wiki/EAN_8 EAN-8&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Universal_Product_Code&quot;&gt;UPC-12&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/European_Article_Number&quot;&gt;EAN-13&lt;/a&gt; contained sufficient information for me to learn them properly. It was a lot of fun!\n\nSo to demonstrate my understanding of barcodes to myself, I created this little program which is compliant with EAN-8, UPC-12 &amp;amp; EAN-13 formatted barcodes. Check it out!!!&amp;quot;&lt;br /&gt;
main: &amp;quot;[[html]]\n&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n &amp;lt;title&amp;gt;James Kanjo&#039;s Barcode Generator&amp;lt;/title&amp;gt;\n &amp;lt;!&amp;#8212; © James Kanjo 2011 &amp;#8212;&amp;gt;\n &amp;lt;style type=\&amp;quot;text/css\&amp;quot;&amp;gt;\n @media print {\n #generator, #generated h2 {display: none;}\n }\n \n body {\n font-family: verdana,arial,helvetica,sans-serif;\n font-size: 13px;\n }\n \n h1,h2,h3,h4,h5,h6{\n font-family: \&amp;quot;Trebuchet MS\&amp;quot;, Trebuchet, Verdana, Arial, Helvetica;\n }\n \n h1{\n font-size: 190%;\n font-weight: normal;\n }\n h2{\n font-weight: normal;\n font-size: 150%;\n }\n \n .bars, .barcode {\n width: 100%;\n min-width: 100px;\n }\n .bars img {\n width: 1%;\n height: 100%;\n visibility: hidden;\n background-color: #000;\n }\n .bars .bar { visibility: visible;}\n \n .barcode {\n border-collapse: collapse;\n table-layout: fixed;\n width: 98%;\n }\n .barcode td {\n width: 7%;\n padding: 0;\n font-size: .75em;\n vertical-align: top;\n }\n .barcode .middle {width: 5%;}\n #barcode img {\n vertical-align: top;\n background-color: #000;\n }\n &amp;lt;/style&amp;gt;\n &amp;lt;script type=\&amp;quot;text/javascript\&amp;quot;&amp;gt;\n function input_validation() {\n str_userinput = document.number.textbox.value;\n clear_barcode();\n if (str_userinput != &#039;&#039;) {\n if (/^\\d+\\d*$/.test(str_userinput)) {\n document.getElementById(&#039;barcode-error&#039;).innerHTML = \&amp;quot;\&amp;quot;;\n if (str_userinput.length == 8) {\n if (validate(\&amp;quot;EAN-8\&amp;quot;)) {\n generate(\&amp;quot;EAN-8\&amp;quot;);\n }\n } else if (str_userinput.length == 12) {\n if (validate(\&amp;quot;UPC-12\&amp;quot;)) {\n generate(\&amp;quot;UPC-12\&amp;quot;);\n }\n } else if (str_userinput.length == 13) {\n if (validate(\&amp;quot;EAN-13\&amp;quot;)) {\n generate(\&amp;quot;EAN-13\&amp;quot;);\n }\n }\n } else {\n document.getElementById(&#039;barcode-error&#039;).innerHTML = \&amp;quot;Invalid data: Please enter digits only.\&amp;quot;;\n }\n }\n }\n \n function validate(standard) {\n sum_odd = Number(str_userinput.substr(0,1)) + Number(str_userinput.substr(2,1)) + Number(str_userinput.substr(4,1)) + Number(str_userinput.substr(6,1));\n sum_even = Number(str_userinput.substr(1,1)) + Number(str_userinput.substr(3,1)) + Number(str_userinput.substr(5,1));\n \n if (standard!=\&amp;quot;EAN-8\&amp;quot;) {\n sum_odd = sum_odd + Number(str_userinput.substr(8,1)) + Number(str_userinput.substr(10,1));\n sum_even = sum_even + Number(str_userinput.substr(7,1)) + Number(str_userinput.substr(9,1));\n }\n \n if (standard==\&amp;quot;EAN-13\&amp;quot;) {\n sum_even = sum_even + Number(str_userinput.substr(11,1));\n checksum = ((sum_odd + (3*sum_even)) % 10);\n } else {\n checksum = ((sum_even + (3*sum_odd)) % 10);\n }\n \n checksum = (!!checksum*10)-checksum;\n \n if (Number(str_userinput.substr(str_userinput.length-1,1))==checksum) {\n return true;\n } else {\n document.getElementById(&#039;barcode-error&#039;).innerHTML = \&amp;quot;Invalid Barcode: This supplied number does not comply with barcode standard \&amp;quot; + standard + \&amp;quot;. Please check that you have typed in the barcode number correctly.\&amp;quot;;\n return false;\n }\n }\n \n function generate(standard) {\n document.getElementById(&#039;generated&#039;).style.display = \&amp;quot;block\&amp;quot;;\n \n bln_middle = false;\n str_binary = \&amp;quot;101\&amp;quot;;\n str_barcode = str_userinput;\n str_userinput = \&amp;quot; \&amp;quot; + str_userinput;\n str_l = \&amp;quot;0001101001100100100110111101010001101100010101111011101101101110001011\&amp;quot;;\n str_g = \&amp;quot;0100111011001100110110100001001110101110010000101001000100010010010111\&amp;quot;;\n str_r = \&amp;quot;1110010110011011011001000010101110010011101010000100010010010001110100\&amp;quot;;\n \n if (standard==\&amp;quot;EAN-8\&amp;quot;) {\n str_formula = \&amp;quot;llllmrrrr\&amp;quot;;\n } else if (standard==\&amp;quot;UPC-12\&amp;quot;) {\n str_formula = \&amp;quot;llllllmrrrrrr\&amp;quot;;\n } else if (standard==\&amp;quot;EAN-13\&amp;quot;) {\n str_userinput = str_userinput.substr(1);\n str_barcode = str_userinput.substr(1);\n str_formula = \&amp;quot;llllllllglggllgglgllgggllgllgglggllglggglllglglglglggllgglgl\&amp;quot;.substr(6*Number(str_userinput.substr(0,1)),6) + \&amp;quot;mrrrrrr\&amp;quot;;\n }\n \n for (i=0;i&amp;lt;=str_barcode.length-1;i=i+1) {\n if (str_formula.substr(i+(bln_middle*1),1)==\&amp;quot;m\&amp;quot;) {\n str_binary = str_binary + \&amp;quot;01010\&amp;quot;;\n bln_middle = true;\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot; + i + \&amp;quot;&#039;).innerHTML = str_userinput.substr(i,1);\&amp;quot;);\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot;+(i+1)+\&amp;quot;&#039;).className = &#039;middle&#039;;\&amp;quot;);\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot;+(i+1)+\&amp;quot;&#039;).innerHTML = &#039;&amp;lt;img src=\\\&amp;quot;\&amp;quot; + document.getElementById(&#039;bar1&#039;).src + \&amp;quot;\\\&amp;quot; style=\\\&amp;quot;width: 20%; height: 50%;\\\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img src=\\\&amp;quot;\&amp;quot; + document.getElementById(&#039;bar1&#039;).src + \&amp;quot;\\\&amp;quot; style=\\\&amp;quot;width: 20%; height: 50%; visibility: hidden;\\\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img src=\\\&amp;quot;\&amp;quot; + document.getElementById(&#039;bar1&#039;).src + \&amp;quot;\\\&amp;quot; style=\\\&amp;quot;width: 20%; height: 50%;\\\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&#039;;\&amp;quot;);\n }\n eval(\&amp;quot;str_binary = str_binary + str_\&amp;quot; + str_formula.substr(i+(bln_middle*1),1) + \&amp;quot;.substr(7*Number(str_barcode.substr(i,1)),7);\&amp;quot;);\n\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot; + (i+(bln_middle*2)) + \&amp;quot;&#039;).innerHTML = str_userinput.substr(i+(bln_middle*1),1);\&amp;quot;);\n }\n \n str_binary = str_binary + \&amp;quot;101\&amp;quot;;\n \n for (i=0;i&amp;lt;=str_binary.length -1;i=i+1) {\n if (Number(str_binary.substr(i,1))) {\n eval(\&amp;quot;document.getElementById(&#039;bar\&amp;quot; + (i + 1) + \&amp;quot;&#039;).className = &#039;bar&#039;;\&amp;quot;);\n } else {\n eval(\&amp;quot;document.getElementById(&#039;bar\&amp;quot; + (i + 1) + \&amp;quot;&#039;).className = &#039;&#039;;\&amp;quot;);\n }\n }\n }\n \n function clear_barcode() {\n document.getElementById(&#039;generated&#039;).style.display = \&amp;quot;none\&amp;quot;;\n for (i=0;i&amp;lt;=95;i=i+1) {\n eval(\&amp;quot;document.getElementById(&#039;bar\&amp;quot; + i + \&amp;quot;&#039;).className = &#039;&#039;;\&amp;quot;);\n }\n for (i=0;i&amp;lt;=13;i=i+1) {\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot; + i + \&amp;quot;&#039;).className = &#039;&#039;;\&amp;quot;);\n eval(\&amp;quot;document.getElementById(&#039;barcode\&amp;quot; + i + \&amp;quot;&#039;).innerHTML = &#039;&#039;;\&amp;quot;);\n }\n }\n \n function change_width(size) {\n str_width=\&amp;quot;100px\&amp;quot;;\n if (size==\&amp;quot;medium\&amp;quot;) {\n str_width=\&amp;quot;200px\&amp;quot;;\n } else if (size==\&amp;quot;large\&amp;quot;) {\n str_width=\&amp;quot;300px\&amp;quot;;\n }\n document.getElementById(&#039;barcode&#039;).style.width = str_width;\n }\n \n function change_height(size) {\n str_height=\&amp;quot;100px\&amp;quot;;\n if (size==\&amp;quot;short\&amp;quot;) {\n str_height=\&amp;quot;50px\&amp;quot;;\n } else if (size==\&amp;quot;tall\&amp;quot;) {\n str_height=\&amp;quot;150px\&amp;quot;;\n }\n document.getElementById(&#039;barcode&#039;).style.height = str_height;\n }\n &amp;lt;/script&amp;gt;\n&amp;lt;/head&amp;gt;\n&amp;lt;body&amp;gt;\n &amp;lt;div id=\&amp;quot;generator\&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;James Kanjo&#039;s Barcode Generator&amp;lt;/h1&amp;gt;\n \n &amp;lt;h2&amp;gt;Enter your barcode number below:&amp;lt;/h2&amp;gt;\n &amp;lt;form name=\&amp;quot;number\&amp;quot; onsubmit=\&amp;quot;return false;\&amp;quot;&amp;gt;\n &amp;lt;input name=\&amp;quot;textbox\&amp;quot; type=\&amp;quot;text\&amp;quot; size=\&amp;quot;50\&amp;quot; onkeyup=\&amp;quot;input_validation();\&amp;quot; value=\&amp;quot;\&amp;quot;&amp;gt;\n &amp;lt;select onchange=\&amp;quot;change_width(this.value)\&amp;quot;&amp;gt;\n &amp;lt;option value=\&amp;quot;small\&amp;quot;&amp;gt;Small&amp;lt;/option&amp;gt;\n &amp;lt;option value=\&amp;quot;medium\&amp;quot;&amp;gt;Medium&amp;lt;/option&amp;gt;\n &amp;lt;option value=\&amp;quot;large\&amp;quot;&amp;gt;Large&amp;lt;/option&amp;gt;\n &amp;lt;/select&amp;gt;\n &amp;lt;select onchange=\&amp;quot;change_height(this.value)\&amp;quot;&amp;gt;\n &amp;lt;option value=\&amp;quot;short\&amp;quot;&amp;gt;Short&amp;lt;/option&amp;gt;\n &amp;lt;option value=\&amp;quot;normal\&amp;quot;&amp;gt;Normal&amp;lt;/option&amp;gt;\n &amp;lt;option value=\&amp;quot;tall\&amp;quot;&amp;gt;Tall&amp;lt;/option&amp;gt;\n &amp;lt;/select&amp;gt;\n &amp;lt;/form&amp;gt;\n &amp;lt;div id=\&amp;quot;barcode-error\&amp;quot; style=\&amp;quot;color: #F00; font-weight: bold; font-style: italic;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;\n \n &amp;lt;div id=\&amp;quot;generated\&amp;quot; style=\&amp;quot;display: none; margin-bottom: 2em;\&amp;quot;&amp;gt;\n &amp;lt;h2&amp;gt;Here is the barcode:&amp;lt;/h2&amp;gt;\n &amp;lt;div id=\&amp;quot;barcode\&amp;quot; style=\&amp;quot;width: 100px; height: 50px;\&amp;quot;&amp;gt;\n &amp;lt;div class=\&amp;quot;bars\&amp;quot; style=\&amp;quot;height: 75%;\&amp;quot;&amp;gt;\n &amp;lt;img id=\&amp;quot;bar0\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot; style=\&amp;quot;width: 5% !important;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar1\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar2\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar3\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar4\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar5\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar6\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar7\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar8\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar9\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar10\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar11\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar12\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar13\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar14\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar15\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar16\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar17\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar18\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar19\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar20\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar21\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar22\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar23\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar24\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar25\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar26\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar27\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar28\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar29\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar30\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar31\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar32\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar33\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar34\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar35\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar36\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar37\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar38\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar39\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar40\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar41\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar42\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar43\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar44\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar45\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar46\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar47\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar48\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar49\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar50\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar51\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar52\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar53\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar54\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar55\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar56\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar57\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar58\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar59\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar60\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar61\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar62\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar63\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar64\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar65\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar66\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar67\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar68\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar69\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar70\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar71\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar72\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar73\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar74\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar75\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar76\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar77\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar78\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar79\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar80\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar81\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar82\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar83\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar84\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar85\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar86\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar87\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar88\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar89\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar90\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar91\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar92\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar93\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar94\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;img id=\&amp;quot;bar95\&amp;quot; src=\&amp;quot;&lt;a href=&quot;http://james.wikidot.com/local--files/files/pixel.gif&quot;&gt;http://james.wikidot.com/local--files/files/pixel.gif&lt;/a&gt;\&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;\n &amp;lt;/div&amp;gt;\n &amp;lt;table class=\&amp;quot;barcode\&amp;quot; style=\&amp;quot;height: 20%;\&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode0\&amp;quot; style=\&amp;quot;width: 7.75%;\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode1\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode2\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode3\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode4\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode5\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode6\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode7\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode8\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode9\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode10\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode11\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode12\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;td id=\&amp;quot;barcode13\&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;\n &amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;\n &amp;lt;/div&amp;gt;\n &amp;lt;/div&amp;gt;\n© James Kanjo 2011\n&amp;lt;/body&amp;gt;\n&amp;lt;/html&amp;gt;\n[[/html]]\n\nEnjoy!!!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &amp;quot;&lt;em&gt;Edit:&lt;/em&gt; 1/Feb/2011\n\nI discovered, to my horror, that when this program is used under some builds of IE, the barcode does not print. I have therefore reworked the code to avoid this problem. It&#039;s all fixed now :)\n\nHere&#039;s what happened: The barcode generator utilised “background colours” in HTML. When using IE, the background colours do not print, and therefore neither does the barcode. Printing background colours is an option the user must enable in IE&#039;s advanced settings, and by default, is turned “off”.&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436747&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Sun, 30 Jan 2011 12:39:20 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[module css]]\n .bars, .barcode {\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n min-width: 100px;\n }\n .bars td {\n width: 1%;\n height: 100%;\n }\n .bars .bar { background-color: #000;}\n \n .barcode {width: 98%;}\n .barcode td {\n width: 7%;\n padding: 0;\n vertical-align: top;\n }\n .barcode .middle {width: 5%;}\n .barcode-demo img {vertical-align: top;}\n[<a href="http://james.wikidot.com/module]]/n/n[[div">class=\&quot;barcode-demo\&quot; style=\&quot;margin: 1em auto 0; width: 200px; height: 150px; \&quot;</a>]\n[[table class=\&quot;bars\&quot; style=\&quot;height: 75%;\&quot;]]\n[[row]]\n[[cell id=\&quot;bar0\&quot; style=\&quot;width: 5% !important;\&quot; class=\&quot;\&quot;]][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar1\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar2\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar3\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar4\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar5\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar6\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar7\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar8\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar9\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar10\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar11\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar12\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar13\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar14\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar15\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar16\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar17\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar18\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar19\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar20\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar21\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar22\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar23\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar24\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar25\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar26\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar27\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar28\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar29\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar30\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar31\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar32\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar33\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar34\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar35\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar36\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar37\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar38\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar39\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar40\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar41\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar42\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar43\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar44\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar45\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar46\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar47\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar48\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar49\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar50\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar51\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar52\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar53\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar54\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar55\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar56\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar57\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar58\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar59\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar60\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar61\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar62\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar63\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar64\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar65\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar66\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar67\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar68\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar69\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar70\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar71\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar72\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar73\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar74\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar75\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar76\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar77\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar78\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar79\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar80\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar81\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar82\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar83\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar84\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar85\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar86\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar87\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar88\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar89\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar90\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar91\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar92\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar93\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar94\&quot; class=\&quot;\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;bar95\&quot; class=\&quot;bar\&quot;</a>][<a href="http://james.wikidot.com/cell]]/n[[/row]][[/table]]/n[[table">class=\&quot;barcode\&quot; style=\&quot;height: 20%;\&quot;</a>]\n[[row]]\n[[cell id=\&quot;barcode0\&quot; style=\&quot;width: 7.75%;\&quot; class=\&quot;\&quot;]]9[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode1\&quot; class=\&quot;\&quot;</a>]3[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode2\&quot; class=\&quot;\&quot;</a>]0[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode3\&quot; class=\&quot;\&quot;</a>]0[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode4\&quot; class=\&quot;\&quot;</a>]6[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode5\&quot; class=\&quot;\&quot;</a>]0[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode6\&quot; class=\&quot;\&quot;</a>]5[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode7\&quot; class=\&quot;middle\&quot;</a>]<img src="http://james.wikidot.com/local--files/files/pixel.gif" alt="pixel.gif" class="image" /><img src="http://james.wikidot.com/local--files/files/pixel.gif" alt="pixel.gif" class="image" /><img src="http://james.wikidot.com/local--files/files/pixel.gif" alt="pixel.gif" class="image" />[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode8\&quot; class=\&quot;\&quot;</a>]0[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode9\&quot; class=\&quot;\&quot;</a>]3[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode10\&quot; class=\&quot;\&quot;</a>]7[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode11\&quot; class=\&quot;\&quot;</a>]6[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode12\&quot; class=\&quot;\&quot;</a>]1[<a href="http://james.wikidot.com/cell]]/n[[cell">id=\&quot;barcode13\&quot; class=\&quot;\&quot;</a>]8[<a href="http://james.wikidot.com/cell]]/n[[/row]][[/table]]/n[[/div]]/n/nAt">work last week, there was this one particular product with a poorly printed barcode that couldn't be read by our barcode readers. The solution: Print new barcodes manually. However there aren't many simple online tools that do just that.\n\nSo during this weekend I decided to invest my time in researching barcodes. Fortunately, the Wikipedia's articles on [http://en.wikipedia.org/wiki/EAN_8 EAN-8</a>, <a href="http://en.wikipedia.org/wiki/Universal_Product_Code">UPC-12</a> and <a href="http://en.wikipedia.org/wiki/European_Article_Number">EAN-13</a> contained sufficient information for me to learn them properly. It was a lot of fun!\n\nSo to demonstrate my understanding of barcodes to myself, I created this little program which is compliant with EAN-8, UPC-12 &amp; EAN-13 formatted barcodes. Check it out!!!&quot;<br /> main: &quot;[[html]]\n&lt;html&gt;\n&lt;head&gt;\n &lt;title&gt;James Kanjo's Barcode Generator&lt;/title&gt;\n &lt;!&#8212; © James Kanjo 2011 &#8212;&gt;\n &lt;style type=\&quot;text/css\&quot;&gt;\n @media print {\n #generator, #generated h2 {display: none;}\n }\n \n body {\n font-family: verdana,arial,helvetica,sans-serif;\n font-size: 13px;\n }\n \n h1,h2,h3,h4,h5,h6{\n font-family: \&quot;Trebuchet MS\&quot;, Trebuchet, Verdana, Arial, Helvetica;\n }\n \n h1{\n font-size: 190%;\n font-weight: normal;\n }\n h2{\n font-weight: normal;\n font-size: 150%;\n }\n \n .bars, .barcode {\n width: 100%;\n min-width: 100px;\n }\n .bars img {\n width: 1%;\n height: 100%;\n visibility: hidden;\n background-color: #000;\n }\n .bars .bar { visibility: visible;}\n \n .barcode {\n border-collapse: collapse;\n table-layout: fixed;\n width: 98%;\n }\n .barcode td {\n width: 7%;\n padding: 0;\n font-size: .75em;\n vertical-align: top;\n }\n .barcode .middle {width: 5%;}\n #barcode img {\n vertical-align: top;\n background-color: #000;\n }\n &lt;/style&gt;\n &lt;script type=\&quot;text/javascript\&quot;&gt;\n function input_validation() {\n str_userinput = document.number.textbox.value;\n clear_barcode();\n if (str_userinput != '') {\n if (/^\\d+\\d*$/.test(str_userinput)) {\n document.getElementById('barcode-error').innerHTML = \&quot;\&quot;;\n if (str_userinput.length == 8) {\n if (validate(\&quot;EAN-8\&quot;)) {\n generate(\&quot;EAN-8\&quot;);\n }\n } else if (str_userinput.length == 12) {\n if (validate(\&quot;UPC-12\&quot;)) {\n generate(\&quot;UPC-12\&quot;);\n }\n } else if (str_userinput.length == 13) {\n if (validate(\&quot;EAN-13\&quot;)) {\n generate(\&quot;EAN-13\&quot;);\n }\n }\n } else {\n document.getElementById('barcode-error').innerHTML = \&quot;Invalid data: Please enter digits only.\&quot;;\n }\n }\n }\n \n function validate(standard) {\n sum_odd = Number(str_userinput.substr(0,1)) + Number(str_userinput.substr(2,1)) + Number(str_userinput.substr(4,1)) + Number(str_userinput.substr(6,1));\n sum_even = Number(str_userinput.substr(1,1)) + Number(str_userinput.substr(3,1)) + Number(str_userinput.substr(5,1));\n \n if (standard!=\&quot;EAN-8\&quot;) {\n sum_odd = sum_odd + Number(str_userinput.substr(8,1)) + Number(str_userinput.substr(10,1));\n sum_even = sum_even + Number(str_userinput.substr(7,1)) + Number(str_userinput.substr(9,1));\n }\n \n if (standard==\&quot;EAN-13\&quot;) {\n sum_even = sum_even + Number(str_userinput.substr(11,1));\n checksum = ((sum_odd + (3*sum_even)) % 10);\n } else {\n checksum = ((sum_even + (3*sum_odd)) % 10);\n }\n \n checksum = (!!checksum*10)-checksum;\n \n if (Number(str_userinput.substr(str_userinput.length-1,1))==checksum) {\n return true;\n } else {\n document.getElementById('barcode-error').innerHTML = \&quot;Invalid Barcode: This supplied number does not comply with barcode standard \&quot; + standard + \&quot;. Please check that you have typed in the barcode number correctly.\&quot;;\n return false;\n }\n }\n \n function generate(standard) {\n document.getElementById('generated').style.display = \&quot;block\&quot;;\n \n bln_middle = false;\n str_binary = \&quot;101\&quot;;\n str_barcode = str_userinput;\n str_userinput = \&quot; \&quot; + str_userinput;\n str_l = \&quot;0001101001100100100110111101010001101100010101111011101101101110001011\&quot;;\n str_g = \&quot;0100111011001100110110100001001110101110010000101001000100010010010111\&quot;;\n str_r = \&quot;1110010110011011011001000010101110010011101010000100010010010001110100\&quot;;\n \n if (standard==\&quot;EAN-8\&quot;) {\n str_formula = \&quot;llllmrrrr\&quot;;\n } else if (standard==\&quot;UPC-12\&quot;) {\n str_formula = \&quot;llllllmrrrrrr\&quot;;\n } else if (standard==\&quot;EAN-13\&quot;) {\n str_userinput = str_userinput.substr(1);\n str_barcode = str_userinput.substr(1);\n str_formula = \&quot;llllllllglggllgglgllgggllgllgglggllglggglllglglglglggllgglgl\&quot;.substr(6*Number(str_userinput.substr(0,1)),6) + \&quot;mrrrrrr\&quot;;\n }\n \n for (i=0;i&lt;=str_barcode.length-1;i=i+1) {\n if (str_formula.substr(i+(bln_middle*1),1)==\&quot;m\&quot;) {\n str_binary = str_binary + \&quot;01010\&quot;;\n bln_middle = true;\n eval(\&quot;document.getElementById('barcode\&quot; + i + \&quot;').innerHTML = str_userinput.substr(i,1);\&quot;);\n eval(\&quot;document.getElementById('barcode\&quot;+(i+1)+\&quot;').className = 'middle';\&quot;);\n eval(\&quot;document.getElementById('barcode\&quot;+(i+1)+\&quot;').innerHTML = '&lt;img src=\\\&quot;\&quot; + document.getElementById('bar1').src + \&quot;\\\&quot; style=\\\&quot;width: 20%; height: 50%;\\\&quot;&gt;&lt;/img&gt;&lt;img src=\\\&quot;\&quot; + document.getElementById('bar1').src + \&quot;\\\&quot; style=\\\&quot;width: 20%; height: 50%; visibility: hidden;\\\&quot;&gt;&lt;/img&gt;&lt;img src=\\\&quot;\&quot; + document.getElementById('bar1').src + \&quot;\\\&quot; style=\\\&quot;width: 20%; height: 50%;\\\&quot;&gt;&lt;/img&gt;';\&quot;);\n }\n eval(\&quot;str_binary = str_binary + str_\&quot; + str_formula.substr(i+(bln_middle*1),1) + \&quot;.substr(7*Number(str_barcode.substr(i,1)),7);\&quot;);\n\n eval(\&quot;document.getElementById('barcode\&quot; + (i+(bln_middle*2)) + \&quot;').innerHTML = str_userinput.substr(i+(bln_middle*1),1);\&quot;);\n }\n \n str_binary = str_binary + \&quot;101\&quot;;\n \n for (i=0;i&lt;=str_binary.length -1;i=i+1) {\n if (Number(str_binary.substr(i,1))) {\n eval(\&quot;document.getElementById('bar\&quot; + (i + 1) + \&quot;').className = 'bar';\&quot;);\n } else {\n eval(\&quot;document.getElementById('bar\&quot; + (i + 1) + \&quot;').className = '';\&quot;);\n }\n }\n }\n \n function clear_barcode() {\n document.getElementById('generated').style.display = \&quot;none\&quot;;\n for (i=0;i&lt;=95;i=i+1) {\n eval(\&quot;document.getElementById('bar\&quot; + i + \&quot;').className = '';\&quot;);\n }\n for (i=0;i&lt;=13;i=i+1) {\n eval(\&quot;document.getElementById('barcode\&quot; + i + \&quot;').className = '';\&quot;);\n eval(\&quot;document.getElementById('barcode\&quot; + i + \&quot;').innerHTML = '';\&quot;);\n }\n }\n \n function change_width(size) {\n str_width=\&quot;100px\&quot;;\n if (size==\&quot;medium\&quot;) {\n str_width=\&quot;200px\&quot;;\n } else if (size==\&quot;large\&quot;) {\n str_width=\&quot;300px\&quot;;\n }\n document.getElementById('barcode').style.width = str_width;\n }\n \n function change_height(size) {\n str_height=\&quot;100px\&quot;;\n if (size==\&quot;short\&quot;) {\n str_height=\&quot;50px\&quot;;\n } else if (size==\&quot;tall\&quot;) {\n str_height=\&quot;150px\&quot;;\n }\n document.getElementById('barcode').style.height = str_height;\n }\n &lt;/script&gt;\n&lt;/head&gt;\n&lt;body&gt;\n &lt;div id=\&quot;generator\&quot;&gt;&lt;h1&gt;James Kanjo's Barcode Generator&lt;/h1&gt;\n \n &lt;h2&gt;Enter your barcode number below:&lt;/h2&gt;\n &lt;form name=\&quot;number\&quot; onsubmit=\&quot;return false;\&quot;&gt;\n &lt;input name=\&quot;textbox\&quot; type=\&quot;text\&quot; size=\&quot;50\&quot; onkeyup=\&quot;input_validation();\&quot; value=\&quot;\&quot;&gt;\n &lt;select onchange=\&quot;change_width(this.value)\&quot;&gt;\n &lt;option value=\&quot;small\&quot;&gt;Small&lt;/option&gt;\n &lt;option value=\&quot;medium\&quot;&gt;Medium&lt;/option&gt;\n &lt;option value=\&quot;large\&quot;&gt;Large&lt;/option&gt;\n &lt;/select&gt;\n &lt;select onchange=\&quot;change_height(this.value)\&quot;&gt;\n &lt;option value=\&quot;short\&quot;&gt;Short&lt;/option&gt;\n &lt;option value=\&quot;normal\&quot;&gt;Normal&lt;/option&gt;\n &lt;option value=\&quot;tall\&quot;&gt;Tall&lt;/option&gt;\n &lt;/select&gt;\n &lt;/form&gt;\n &lt;div id=\&quot;barcode-error\&quot; style=\&quot;color: #F00; font-weight: bold; font-style: italic;\&quot;&gt;&lt;/div&gt;&lt;/div&gt;\n \n &lt;div id=\&quot;generated\&quot; style=\&quot;display: none; margin-bottom: 2em;\&quot;&gt;\n &lt;h2&gt;Here is the barcode:&lt;/h2&gt;\n &lt;div id=\&quot;barcode\&quot; style=\&quot;width: 100px; height: 50px;\&quot;&gt;\n &lt;div class=\&quot;bars\&quot; style=\&quot;height: 75%;\&quot;&gt;\n &lt;img id=\&quot;bar0\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot; style=\&quot;width: 5% !important;\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar1\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar2\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar3\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar4\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar5\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar6\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar7\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar8\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar9\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar10\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar11\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar12\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar13\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar14\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar15\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar16\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar17\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar18\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar19\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar20\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar21\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar22\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar23\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar24\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar25\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar26\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar27\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar28\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar29\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar30\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar31\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar32\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar33\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar34\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar35\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar36\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar37\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar38\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar39\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar40\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar41\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar42\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar43\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar44\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar45\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar46\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar47\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar48\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar49\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar50\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar51\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar52\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar53\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar54\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar55\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar56\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar57\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar58\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar59\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar60\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar61\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar62\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar63\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar64\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar65\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar66\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar67\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar68\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar69\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar70\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar71\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar72\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar73\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar74\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar75\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar76\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar77\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar78\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar79\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar80\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar81\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar82\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar83\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar84\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar85\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar86\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar87\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar88\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar89\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar90\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar91\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar92\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar93\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar94\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;&lt;img id=\&quot;bar95\&quot; src=\&quot;<a href="http://james.wikidot.com/local--files/files/pixel.gif">http://james.wikidot.com/local--files/files/pixel.gif</a>\&quot;&gt;&lt;/img&gt;\n &lt;/div&gt;\n &lt;table class=\&quot;barcode\&quot; style=\&quot;height: 20%;\&quot;&gt;&lt;tr&gt;\n &lt;td id=\&quot;barcode0\&quot; style=\&quot;width: 7.75%;\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode1\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode2\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode3\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode4\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode5\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode6\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode7\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode8\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode9\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode10\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode11\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode12\&quot;&gt;&lt;/td&gt;\n &lt;td id=\&quot;barcode13\&quot;&gt;&lt;/td&gt;\n &lt;/tr&gt;&lt;/table&gt;\n &lt;/div&gt;\n &lt;/div&gt;\n© James Kanjo 2011\n&lt;/body&gt;\n&lt;/html&gt;\n[[/html]]\n\nEnjoy!!!&quot;<br /> sig: '3'<br /> after: &quot;<em>Edit:</em> 1/Feb/2011\n\nI discovered, to my horror, that when this program is used under some builds of IE, the barcode does not print. I have therefore reworked the code to avoid this problem. It's all fixed now :)\n\nHere's what happened: The barcode generator utilised “background colours” in HTML. When using IE, the background colours do not print, and therefore neither does the barcode. Printing background colours is an option the user must enable in IE's advanced settings, and by default, is turned “off”.&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:69</guid>
				<title>iPhoto: Reclaim Your Memory!</title>
				<link>http://james.wikidot.com/blog:69</link>
				<description>

&lt;p&gt;intro: &amp;quot;As a Mac user, iPhoto is a regularly used application. It&#039;s fantastic for easy photo editing, and beautifully organises your photos. Personally, I love the face recognition technology.\n\nHowever, as your photo collection grows, so does the database size. So if your looking for ways to free up your hard drive space, iPhoto is a great place to start.\n\n“NOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!” I hear you cry&amp;#8230; “I don&#039;t want to delete any of my photos!!!!!!”\n\nThat&#039;s the best part about this neat trick. You don&#039;t have to! You can save gigabytes of memory without deleting any photos. And here&#039;s why.&amp;quot;&lt;br /&gt;
main: &amp;quot;As I previously mentioned, iPhoto makes editing photos easy. REALLY easy. And any changes you make to a photo are completely reversible&amp;#8230; that is, if you make a mistake, iPhoto retains a copy of the original photo so you can start again from scratch.\n\n&lt;strong&gt;But once you&#039;ve finished editing a photo, do you &lt;em&gt;really&lt;/em&gt; need to retain an original photo that you will never see?&lt;/strong&gt; Not really.\n\nAlso, it is quite often that one takes a photo with their camera in a portrait position&amp;#8230; so when you upload it on the computer, the photo is sideways. iPhoto makes it easy to rotate images the right-way-up — but even a small change such as image rotation is considered an edit, so iPhoto creates a copy of the original sideways photo.\n\n&lt;strong&gt;Do you &lt;em&gt;really&lt;/em&gt; need to retain a sideways photo that you will never see?&lt;/strong&gt; Not really.\n\n&amp;#8212;&amp;#8212;\n\n[[=]]\n&amp;gt; &lt;span style=&quot;font-size:150%;&quot;&gt;&lt;span style=&quot;color: #f00&quot;&gt;Warning! This technique should only be attempted by advanced computer users! Proceed with caution.&lt;/span&gt;&lt;/span&gt;\n&amp;gt; That is, follow each instruction, word-for-word.\n[[/=]]\n\n=&lt;/p&gt;
&lt;div class=&quot;error-block&quot;&gt;Sorry, no match for the embedded content.&lt;/div&gt;
\n\nSo here&#039;s a Terminal trick that will remove those unnecessary unseen “originals” from your iPhoto library. This code is my own derivative of &lt;a href=&quot;http://hints.macworld.com/article.php?story=20060529133344872&quot;&gt;this Macworld hint&lt;/a&gt;. Firstly, open up the Terminal application. Type in the following lines of code, followed by “enter” after each.\n\n[[code]]\nmkdir ~/.Trash/iPhoto-Originals\n\ncd ~/\&amp;quot;Pictures/iPhoto Library/Modified/\&amp;quot;\n\nfind . -type f -exec mv \&amp;quot;../Originals/{}\&amp;quot; ~/.Trash/iPhoto-Originals/ \\;\n\ncp -R -n ./* ../Originals/\n\nrm -r ~/\&amp;quot;Pictures/iPhoto Library/Modified/\&amp;quot;\n\nkillall Terminal\n[[/code]]\n\nAfter the terminal is finished (I have a library of 4,520 photos, and it took about 4mins), I recommend that you go to the Trash can, select the “iPhoto-Originals” folder and find out it&#039;s size. This is how much memory you have freed your computer from (after you empty the trash can of course!). I saved 3GB with this trick.\n\nHowever, we&#039;re not finished yet!\n\n# Open iPhoto\n# Select the “Photos” from the “library” (i.e. read carefully, it&#039;s “Photos”, not “Events”, “Faces” or “Places”)\n# Click command+A (select all photos)\n# Right-click the selection and click “Revert to Original” (and click “OK” to confirm this action)\n\nThis will fix a problem where your modified images magically disappear. Now repair any database corruption that may be present:\n\n# Quit iPhoto\n# Start iPhoto whilst holding down &lt;strong&gt;command+option(alt)&lt;/strong&gt;\n# Tick all boxes to rebuild library EXCEPT “Rebuild the iPhoto Library Database from automatic backup”\n# Click “Rebuild”\n\nCongratulations! You&#039;re done!\n\n+ How it works\nThe iPhoto database has two significant folders inside it:\n* Originals\n* Modified\nAll photos are stored in the “Originals” folder at first. If you edit any photo, iPhoto stores the edited version in the “Modified” folder, and retains the untouched original in the “Originals” folder.\n\nWhat the above code does is it that it finds all of the photos in the “Modified” folder, and for each photo it finds the original version in the “Originals” folder and moves it to the trash. Too simple.\n\nYou should find that this also essentially optimises the speed of the iPhoto application, as it no longer wastes time locating “original” images.&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Sun, 23 Jan 2011 00:45:26 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;As a Mac user, iPhoto is a regularly used application. It's fantastic for easy photo editing, and beautifully organises your photos. Personally, I love the face recognition technology.\n\nHowever, as your photo collection grows, so does the database size. So if your looking for ways to free up your hard drive space, iPhoto is a great place to start.\n\n“NOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!” I hear you cry&#8230; “I don't want to delete any of my photos!!!!!!”\n\nThat's the best part about this neat trick. You don't have to! You can save gigabytes of memory without deleting any photos. And here's why.&quot;<br /> main: &quot;As I previously mentioned, iPhoto makes editing photos easy. REALLY easy. And any changes you make to a photo are completely reversible&#8230; that is, if you make a mistake, iPhoto retains a copy of the original photo so you can start again from scratch.\n\n<strong>But once you've finished editing a photo, do you <em>really</em> need to retain an original photo that you will never see?</strong> Not really.\n\nAlso, it is quite often that one takes a photo with their camera in a portrait position&#8230; so when you upload it on the computer, the photo is sideways. iPhoto makes it easy to rotate images the right-way-up — but even a small change such as image rotation is considered an edit, so iPhoto creates a copy of the original sideways photo.\n\n<strong>Do you <em>really</em> need to retain a sideways photo that you will never see?</strong> Not really.\n\n&#8212;&#8212;\n\n[[=]]\n&gt; <span style="font-size:150%;"><span style="color: #f00">Warning! This technique should only be attempted by advanced computer users! Proceed with caution.</span></span>\n&gt; That is, follow each instruction, word-for-word.\n[[/=]]\n\n=</p> <div class="error-block">Sorry, no match for the embedded content.</div> \n\nSo here's a Terminal trick that will remove those unnecessary unseen “originals” from your iPhoto library. This code is my own derivative of <a href="http://hints.macworld.com/article.php?story=20060529133344872">this Macworld hint</a>. Firstly, open up the Terminal application. Type in the following lines of code, followed by “enter” after each.\n\n[[code]]\nmkdir ~/.Trash/iPhoto-Originals\n\ncd ~/\&quot;Pictures/iPhoto Library/Modified/\&quot;\n\nfind . -type f -exec mv \&quot;../Originals/{}\&quot; ~/.Trash/iPhoto-Originals/ \\;\n\ncp -R -n ./* ../Originals/\n\nrm -r ~/\&quot;Pictures/iPhoto Library/Modified/\&quot;\n\nkillall Terminal\n[[/code]]\n\nAfter the terminal is finished (I have a library of 4,520 photos, and it took about 4mins), I recommend that you go to the Trash can, select the “iPhoto-Originals” folder and find out it's size. This is how much memory you have freed your computer from (after you empty the trash can of course!). I saved 3GB with this trick.\n\nHowever, we're not finished yet!\n\n# Open iPhoto\n# Select the “Photos” from the “library” (i.e. read carefully, it's “Photos”, not “Events”, “Faces” or “Places”)\n# Click command+A (select all photos)\n# Right-click the selection and click “Revert to Original” (and click “OK” to confirm this action)\n\nThis will fix a problem where your modified images magically disappear. Now repair any database corruption that may be present:\n\n# Quit iPhoto\n# Start iPhoto whilst holding down <strong>command+option(alt)</strong>\n# Tick all boxes to rebuild library EXCEPT “Rebuild the iPhoto Library Database from automatic backup”\n# Click “Rebuild”\n\nCongratulations! You're done!\n\n+ How it works\nThe iPhoto database has two significant folders inside it:\n* Originals\n* Modified\nAll photos are stored in the “Originals” folder at first. If you edit any photo, iPhoto stores the edited version in the “Modified” folder, and retains the untouched original in the “Originals” folder.\n\nWhat the above code does is it that it finds all of the photos in the “Modified” folder, and for each photo it finds the original version in the “Originals” folder and moves it to the trash. Too simple.\n\nYou should find that this also essentially optimises the speed of the iPhoto application, as it no longer wastes time locating “original” images.&quot;<br /> sig: '3'<br /> after: '' <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:68</guid>
				<title>Wikidot: Descendant Database</title>
				<link>http://james.wikidot.com/blog:68</link>
				<description>

&lt;p&gt;intro: &amp;quot;I have some exciting news&amp;#8230; I&#039;ve just about completed a Wikidot project that has taken over a year to do: the Descendant Database.\n\n[[include inc:image |category=blog |name=68 |image=jameskanjo-family-tree.png |width=700px |caption=Pretty snazzy, aye?]]&amp;quot;&lt;br /&gt;
main: &amp;quot;But first, perhaps you&#039;re wondering, &lt;a href=&quot;http://james.wikidot.com/blog:57&quot;&gt;Where did James go???&lt;/a&gt;\n\nI&#039;m a busy man these days; I don&#039;t get enough time to spend with my cool programming hobby :(\n\nBut recently, however, I have been able to get back into it :)\n\n&lt;span style=&quot;text-decoration: line-through;&quot;&gt;&amp;#8212;\n\nSo anyway, I announced that I was working on a project 12 months ago&amp;#8230; but then I didn&#039;t launch it.\n\n&amp;gt; &lt;em&gt;Currently, the user interface is in development, and not ready for public usage yet. However, the functionality exists and is working beautifully&lt;/em&gt;\n\nWell basically, the functionality &lt;em&gt;wasn&#039;t&lt;/em&gt; working beautifully. I found some glitches and was stumped with some limitations that made the “Families” project impossible. But due to a recent &lt;a href=&quot;http://csi.wikidot.com/package:40&quot; target=&quot;_blank&quot;&gt;significant achievement&lt;/a&gt; by Wikidot user &lt;span class=&quot;printuser&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/tsangk&quot;  &gt;tsangk&lt;/a&gt;&lt;/span&gt;, I was finally able to overcome these limitations and finally complete this amazing project!\n\n&lt;/span&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;\n\nHow does it work? It uses tags, hidden tags, page parenting, Data Forms, PagePaths, the Extended NewPage module, the CSS module, the iftags syntax, the ListPages module and the &lt;a href=&quot;http://csi.wikidot.com/package:40&quot; target=&quot;_blank&quot;&gt;Nestable ListPages&lt;/a&gt; module.\n\nOne of the biggest problems I had was developing a user-friendly way to present the family tree. It used to be terribly abstract and ugly&amp;#8230;\n\nAnyway, another challenge was in the mechanics of the database. Because it uses incredibly complex use of data storage, I needed to install a form of “database validation” to correct any errors that may occur. And because human families are constantly changing and growing in complexity, it&#039;s easy to type in the incorrect information regarding a person.\n\nThe error detection was a huge challenge actually&amp;#8230; at first the idea was to check if the variables for each entity make sense. If not it would tell you which variables didn&#039;t make sense. But then I needed the error message to explain &lt;em&gt;why&lt;/em&gt; the variable didn&#039;t make sense.\nThe more I worked on the database validation, however, the more it transformed into something else. Something better.\n\nInstead of telling you there&#039;s a problem with x variable, it simply tells you how to fix it. Exactly how. It&#039;s as simple as “copy and paste this text over there, and click save”\n\n&lt;/span&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;\n\nHowever it does have a limitation: It can only retrieve family relations separated by 0 or 1 degrees. So it can&#039;t do cousins or great relations:\n\n||~ Relative ||~ Connection ||~ Degrees of Separation ||\n|| Parent || You &amp;#187; Parent || Zero = Possible ||\n|| Sibling || You &amp;#187; Sibling || Zero = Possible ||\n|| Child || You &amp;#187; Child || Zero = Possible ||\n||||||~ ||\n|| Grandparent || You &amp;#187; Parent &amp;#187; Grandparent || One = Possible ||\n|| Aunt/Uncle || You &amp;#187; Parent &amp;#187; Aunt/Uncle || One = Possible ||\n|| Niece/Nephew || You &amp;#187; Sibling &amp;#187; Child || One = Possible ||\n|| Grandchild || You &amp;#187; Child &amp;#187; Grandchild || One = Possible ||\n||||||~ ||\n|| Cousin || You &amp;#187; Parent &amp;#187; Aunt/Uncle &amp;#187; Cousin || Two = Impossible ||\n|| Great-grandparent || You &amp;#187; Parent &amp;#187; Grandparent &amp;#187; Great-grandparent || Two = Impossible ||\n|| Great-grandchild || You &amp;#187; Child &amp;#187; Grandchild &amp;#187; Great-grandchild || Two = Impossible ||\n\n&lt;/span&gt;&amp;#8212;\n\nFor now, the project hasn&#039;t been launched yet. What&#039;s holding it up this time? I haven&#039;t created an installation process yet :)\n\nUntil then, feel free to check out this &lt;a href=&quot;http://family-trees.wikidot.com/&quot;&gt;mini-showcase&lt;/a&gt;.&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 29 Nov 2010 12:34:37 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;I have some exciting news&#8230; I've just about completed a Wikidot project that has taken over a year to do: the Descendant Database.\n\n[[include inc:image |category=blog |name=68 |image=jameskanjo-family-tree.png |width=700px |caption=Pretty snazzy, aye?]]&quot;<br /> main: &quot;But first, perhaps you're wondering, <a href="http://james.wikidot.com/blog:57">Where did James go???</a>\n\nI'm a busy man these days; I don't get enough time to spend with my cool programming hobby :(\n\nBut recently, however, I have been able to get back into it :)\n\n<span style="text-decoration: line-through;">&#8212;\n\nSo anyway, I announced that I was working on a project 12 months ago&#8230; but then I didn't launch it.\n\n&gt; <em>Currently, the user interface is in development, and not ready for public usage yet. However, the functionality exists and is working beautifully</em>\n\nWell basically, the functionality <em>wasn't</em> working beautifully. I found some glitches and was stumped with some limitations that made the “Families” project impossible. But due to a recent <a href="http://csi.wikidot.com/package:40" target="_blank">significant achievement</a> by Wikidot user <span class="printuser"><a href="http://www.wikidot.com/user:info/tsangk" >tsangk</a></span>, I was finally able to overcome these limitations and finally complete this amazing project!\n\n</span><span style="text-decoration: line-through;">\n\nHow does it work? It uses tags, hidden tags, page parenting, Data Forms, PagePaths, the Extended NewPage module, the CSS module, the iftags syntax, the ListPages module and the <a href="http://csi.wikidot.com/package:40" target="_blank">Nestable ListPages</a> module.\n\nOne of the biggest problems I had was developing a user-friendly way to present the family tree. It used to be terribly abstract and ugly&#8230;\n\nAnyway, another challenge was in the mechanics of the database. Because it uses incredibly complex use of data storage, I needed to install a form of “database validation” to correct any errors that may occur. And because human families are constantly changing and growing in complexity, it's easy to type in the incorrect information regarding a person.\n\nThe error detection was a huge challenge actually&#8230; at first the idea was to check if the variables for each entity make sense. If not it would tell you which variables didn't make sense. But then I needed the error message to explain <em>why</em> the variable didn't make sense.\nThe more I worked on the database validation, however, the more it transformed into something else. Something better.\n\nInstead of telling you there's a problem with x variable, it simply tells you how to fix it. Exactly how. It's as simple as “copy and paste this text over there, and click save”\n\n</span><span style="text-decoration: line-through;">\n\nHowever it does have a limitation: It can only retrieve family relations separated by 0 or 1 degrees. So it can't do cousins or great relations:\n\n||~ Relative ||~ Connection ||~ Degrees of Separation ||\n|| Parent || You &#187; Parent || Zero = Possible ||\n|| Sibling || You &#187; Sibling || Zero = Possible ||\n|| Child || You &#187; Child || Zero = Possible ||\n||||||~ ||\n|| Grandparent || You &#187; Parent &#187; Grandparent || One = Possible ||\n|| Aunt/Uncle || You &#187; Parent &#187; Aunt/Uncle || One = Possible ||\n|| Niece/Nephew || You &#187; Sibling &#187; Child || One = Possible ||\n|| Grandchild || You &#187; Child &#187; Grandchild || One = Possible ||\n||||||~ ||\n|| Cousin || You &#187; Parent &#187; Aunt/Uncle &#187; Cousin || Two = Impossible ||\n|| Great-grandparent || You &#187; Parent &#187; Grandparent &#187; Great-grandparent || Two = Impossible ||\n|| Great-grandchild || You &#187; Child &#187; Grandchild &#187; Great-grandchild || Two = Impossible ||\n\n</span>&#8212;\n\nFor now, the project hasn't been launched yet. What's holding it up this time? I haven't created an installation process yet :)\n\nUntil then, feel free to check out this <a href="http://family-trees.wikidot.com/">mini-showcase</a>.&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:67</guid>
				<title>Launching: Multilingual Framework</title>
				<link>http://james.wikidot.com/blog:67</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[include inc:image |category=blog |name=67 |image=jameskanjo_ml_showcase.png |width=300px |float=right |caption=Hooray! |link=&lt;a href=&quot;http://ml-showcase.wikidot.com/start/ml_tags/ja]]/n/nAs&quot;&gt;http://ml-showcase.wikidot.com/start/ml_tags/ja]]\n\nAs&lt;/a&gt; mentioned in one of my &lt;a href=&quot;http://james.wikidot.com/blog:64&quot;&gt;previous blog entries&lt;/a&gt;, I had planned to release a framework for Multilingual Support within Wikidot.\n\nThough at the time it was 90% complete in beta stage, I became extremely preoccupied with my day-to-day life. Only until this weekend have I been able to slow down and relax, which brought me to finishing this project once and for all! I present to you the:\n\n= &lt;span style=&quot;font-size:300%;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;M&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;U&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;N&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;G&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;U&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;L&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;H&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;O&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;W&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;C&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;E&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;!&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&amp;quot;&lt;br /&gt;
main: &amp;quot;So how does it work?\n\nTo put it simply, it uses a combination of (autonumbered)categorising, tagging and parenting.\nMore explained, all translated pages are stored (autonumbered) in the &lt;tt&gt;ml&lt;/tt&gt; category. Each translated page is tagged with the language it is translated into, and then parented to the original page.\nThrough using advanced Wikidot programming&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-68484-1&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;1&lt;/a&gt;&lt;/sup&gt;, I have managed to create a multilingual interface that:\n* Is automatic;\n* Is customisable;\n* Is easily installed on top of pre-existing projects/sites;\n* Keeps track of which languages each page has been translated into;\n* Allows you to control which languages you can translate into (per category);\n* Gives you the ability to select the default language (per category).\n\nIt does come with a couple of pitfalls, sadly:\n* It doesn&#039;t work with Wikidot Data Forms;\n* On translated pages, you are unable to use the ListPages module (however, you CAN use the ListPages module on the default language&#039;s version).\n\nOverall, I&#039;m glad to finally launch this framework. I sure hope it is able to meet the needs of all Wikidot users alike. You can install the Multilingual Framework &lt;a href=&quot;http://multilingual.wikidot.com/&quot;&gt;here&lt;/a&gt;.&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes-footer&quot;&gt;
&lt;div class=&quot;title&quot;&gt;Footnotes&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-68484-1&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;1&lt;/a&gt;. I&#039;ve got to give myself some credit here, it was f**king hard to get it functioning perfectly!&lt;/div&gt;
&lt;/div&gt;
</description>
				<pubDate>Sun, 12 Sep 2010 04:40:04 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[include inc:image |category=blog |name=67 |image=jameskanjo_ml_showcase.png |width=300px |float=right |caption=Hooray! |link=<a href="http://ml-showcase.wikidot.com/start/ml_tags/ja]]/n/nAs">http://ml-showcase.wikidot.com/start/ml_tags/ja]]\n\nAs</a> mentioned in one of my <a href="http://james.wikidot.com/blog:64">previous blog entries</a>, I had planned to release a framework for Multilingual Support within Wikidot.\n\nThough at the time it was 90% complete in beta stage, I became extremely preoccupied with my day-to-day life. Only until this weekend have I been able to slow down and relax, which brought me to finishing this project once and for all! I present to you the:\n\n= <span style="font-size:300%;"><strong><span style="color: #f00"><span style="text-decoration: underline;">M</span></span><span style="color: #fa0"><span style="text-decoration: underline;">U</span></span><span style="color: #ff0"><span style="text-decoration: underline;">L</span></span><span style="color: #0f0"><span style="text-decoration: underline;">T</span></span><span style="color: #0ff"><span style="text-decoration: underline;">I</span></span><span style="color: #508"><span style="text-decoration: underline;">L</span></span><span style="color: #f8f"><span style="text-decoration: underline;">I</span></span><span style="color: #f00"><span style="text-decoration: underline;">N</span></span><span style="color: #f00"><span style="text-decoration: underline;">G</span></span><span style="color: #fa0"><span style="text-decoration: underline;">U</span></span><span style="color: #ff0"><span style="text-decoration: underline;">A</span></span><span style="color: #0f0"><span style="text-decoration: underline;">L</span></span> <span style="color: #0ff"><span style="text-decoration: underline;">S</span></span><span style="color: #508"><span style="text-decoration: underline;">H</span></span><span style="color: #f8f"><span style="text-decoration: underline;">O</span></span><span style="color: #f00"><span style="text-decoration: underline;">W</span></span><span style="color: #fa0"><span style="text-decoration: underline;">C</span></span><span style="color: #ff0"><span style="text-decoration: underline;">A</span></span><span style="color: #0f0"><span style="text-decoration: underline;">S</span></span><span style="color: #0ff"><span style="text-decoration: underline;">E</span></span><span style="color: #508"><span style="text-decoration: underline;">!</span></span></strong></span>&quot;<br /> main: &quot;So how does it work?\n\nTo put it simply, it uses a combination of (autonumbered)categorising, tagging and parenting.\nMore explained, all translated pages are stored (autonumbered) in the <tt>ml</tt> category. Each translated page is tagged with the language it is translated into, and then parented to the original page.\nThrough using advanced Wikidot programming<sup class="footnoteref"><a id="footnoteref-91455-1" href="javascript:;" class="footnoteref" >1</a></sup>, I have managed to create a multilingual interface that:\n* Is automatic;\n* Is customisable;\n* Is easily installed on top of pre-existing projects/sites;\n* Keeps track of which languages each page has been translated into;\n* Allows you to control which languages you can translate into (per category);\n* Gives you the ability to select the default language (per category).\n\nIt does come with a couple of pitfalls, sadly:\n* It doesn't work with Wikidot Data Forms;\n* On translated pages, you are unable to use the ListPages module (however, you CAN use the ListPages module on the default language's version).\n\nOverall, I'm glad to finally launch this framework. I sure hope it is able to meet the needs of all Wikidot users alike. You can install the Multilingual Framework <a href="http://multilingual.wikidot.com/">here</a>.&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-91455-1"><a href="javascript:;" >1</a>. I've got to give myself some credit here, it was f**king hard to get it functioning perfectly!</div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:66</guid>
				<title>The Gays Aren&#039;t Going Away</title>
				<link>http://james.wikidot.com/blog:66</link>
				<description>

&lt;p&gt;intro: &amp;quot;With every slight change of government, with every country, there is always “The Gay Issue”.&amp;quot;&lt;br /&gt;
main: &amp;quot;But before I get into that, I&#039;m going to briefly remind you of the opportunities of where the law can discriminate against homosexuals.\n\n* Disallowing gay individuals/couples from adopting children\n* Disallowing parental rights to the non-genetic parent within gay couples\n* Disallowing gay marriage (and therefore other marital privileges)\n* Disallowing gay blood donations\n* Disallowing pre-adulthood gay sex\n\nIn case it wasn&#039;t already apparent, all of these things are allowed to heterosexual people:\n\n* Allowing straight individuals/couples from adopting children\n* Allowing parental rights to the non-genetic parent within straight couples\n* Allowing straight marriage (and therefore other marital privileges)\n* Allowing straight blood donations\n* Allowing pre-adulthood straight sex\n\n&amp;#8212;&amp;#8212;\n\nSo anyway, back to the start of this post: “The Gay Issue”\n\nPoliticians are so damn afraid to mention the word, as they&#039;re completely frightened of losing votes&amp;#8230; yet in a twist of irony, because they aren&#039;t prepared to embrace gay equality, they lose gay votes. As gays account for 10% of any given population, the politicians are instantly sacrificing 10% of their possible votes.\n\nBut you see, they can&#039;t go on like this forever. The gays are not going away. The gays are here to stay. And until gay equality is made legal once and for all, they are going to continue pushing forth their legal propositions, and continue fighting for the rights granted to their heterosexual counterparts.\n\nI can&#039;t believe how short-sighted governments are being with the gays. They seem to think that if they continue denying gay rights, that the gays will magically disappear and stop pleading for them?\n\nNo! They will never stop pleading! So get it over and done with — Once you grant the gays with their equal rights, they will never bother the government again.\nJust like women — You grant them equal rights, and they stop bothering the government forever.\nJust like black people — You grant them equal rights, and they stop bothering the government forever.\nJust like Jewish people — You grant them equal rights, and they stop bothering the government forever.\n\nAnd here&#039;s the best part: Once gays are granted with equal rights, then there will no longer be discrimination in government or the law&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-984368-1&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;1&lt;/a&gt;&lt;/sup&gt;.\n\nMore and more governments across the world will realise this. I am confident that within the next 100 years, I will witness the end of the persecution of gay people, globally.&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes-footer&quot;&gt;
&lt;div class=&quot;title&quot;&gt;Footnotes&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-984368-1&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;1&lt;/a&gt;. With the possible exception of Ageism: the discrimination against a person based on their age&lt;/div&gt;
&lt;/div&gt;
</description>
				<pubDate>Sat, 17 Jul 2010 09:22:35 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;With every slight change of government, with every country, there is always “The Gay Issue”.&quot;<br /> main: &quot;But before I get into that, I'm going to briefly remind you of the opportunities of where the law can discriminate against homosexuals.\n\n* Disallowing gay individuals/couples from adopting children\n* Disallowing parental rights to the non-genetic parent within gay couples\n* Disallowing gay marriage (and therefore other marital privileges)\n* Disallowing gay blood donations\n* Disallowing pre-adulthood gay sex\n\nIn case it wasn't already apparent, all of these things are allowed to heterosexual people:\n\n* Allowing straight individuals/couples from adopting children\n* Allowing parental rights to the non-genetic parent within straight couples\n* Allowing straight marriage (and therefore other marital privileges)\n* Allowing straight blood donations\n* Allowing pre-adulthood straight sex\n\n&#8212;&#8212;\n\nSo anyway, back to the start of this post: “The Gay Issue”\n\nPoliticians are so damn afraid to mention the word, as they're completely frightened of losing votes&#8230; yet in a twist of irony, because they aren't prepared to embrace gay equality, they lose gay votes. As gays account for 10% of any given population, the politicians are instantly sacrificing 10% of their possible votes.\n\nBut you see, they can't go on like this forever. The gays are not going away. The gays are here to stay. And until gay equality is made legal once and for all, they are going to continue pushing forth their legal propositions, and continue fighting for the rights granted to their heterosexual counterparts.\n\nI can't believe how short-sighted governments are being with the gays. They seem to think that if they continue denying gay rights, that the gays will magically disappear and stop pleading for them?\n\nNo! They will never stop pleading! So get it over and done with — Once you grant the gays with their equal rights, they will never bother the government again.\nJust like women — You grant them equal rights, and they stop bothering the government forever.\nJust like black people — You grant them equal rights, and they stop bothering the government forever.\nJust like Jewish people — You grant them equal rights, and they stop bothering the government forever.\n\nAnd here's the best part: Once gays are granted with equal rights, then there will no longer be discrimination in government or the law<sup class="footnoteref"><a id="footnoteref-993003-1" href="javascript:;" class="footnoteref" >1</a></sup>.\n\nMore and more governments across the world will realise this. I am confident that within the next 100 years, I will witness the end of the persecution of gay people, globally.&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-993003-1"><a href="javascript:;" >1</a>. With the possible exception of Ageism: the discrimination against a person based on their age</div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:65</guid>
				<title>Happy [Wikidot] Birthday James!</title>
				<link>http://james.wikidot.com/blog:65</link>
				<description>

&lt;p&gt;intro: &amp;quot;Today is a special day! Today is the day I turn &lt;strong&gt;1000 Wikidot Days Old&lt;/strong&gt;!!!\n\nOr rather, I&#039;m 1000 Wikidot days young ;-)&amp;quot;&lt;br /&gt;
main: &#039;&#039;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Fri, 04 Jun 2010 16:03:08 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;Today is a special day! Today is the day I turn <strong>1000 Wikidot Days Old</strong>!!!\n\nOr rather, I'm 1000 Wikidot days young ;-)&quot;<br /> main: ''<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:64</guid>
				<title>Multilingual Support</title>
				<link>http://james.wikidot.com/blog:64</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[include inc:image |category=images |name=pets |image=jameskanjo-tiger.jpg |width=290px |float=right |caption=Support for Cat-speak?\n© James Kanjo, 2010]]\n\nI will be honest. I never cared a bit for multilingual support on websites. But throughout Wikidot, it is something that is cried out for time after time after time!\n\nWhenever a new wiki is developed, there is always somebody to complain “It supports English only. Why can&#039;t you give us multilingual support”. And although I wasn&#039;t the target, I just always thought to myself “English is the universal language&amp;#8230; why cater to anything else?”\n\nBut it is time I changed my attitude, and listen to the NEEDS of the people.&amp;quot;&lt;br /&gt;
main: &amp;quot;Multilingual support makes so much sense. There&#039;s nothing stupid about demanding this feature:\n* It makes your product cater to anybody who speaks a language\n* Means there is no “lost in translation” scenarios\n* Expands the customers you can market your product to\n\nIt&#039;s win-win&amp;#8230; there&#039;s no way you can lose from providing multilingual support — with, of course, the exception case where you are marketing a crappy product ;-)\n\nSo how do we do this so that it works in Wikidot? First, let&#039;s look at the previous propositions to this concept.\n\n&lt;span style=&quot;text-decoration: line-through;&quot;&gt;&amp;#8212;\n\n+ Languages via Subdomain\n\nThis is famously used by the Wikimedia Foundation. Firstly you have a site, let&#039;s say, &lt;tt&gt;wikipedia.org&lt;/tt&gt;, where you are creating an online encyclopaedia. For each article is stored on a subdomain based on the language it is written in. If it is written in English, then it is stored on &lt;tt&gt;&lt;strong&gt;en.&lt;/strong&gt;wikipedia.org&lt;/tt&gt;. If it is written in French, then it is stored on &lt;tt&gt;&lt;strong&gt;fr.&lt;/strong&gt;wikipedia.org&lt;/tt&gt;.\n\nNow this seems like a really good way to manage your site&amp;#8230; and it &lt;em&gt;is&lt;/em&gt; a good way to do it. But it&#039;s expensive to implement a system to be able to do that.\n\nIf we were to do something like this in Wikidot, it would look like this:\n\n* &lt;tt&gt;site-en.wikidot.com/people&lt;/tt&gt; — English\n* &lt;tt&gt;site-fr.wikidot.com/people&lt;/tt&gt; — French\n\nThis is not particularly friendly to me. If you make a structure change in one site, you need to make it in the other sites. If an article doesn&#039;t exist in one language, then it&#039;s not going to show you the other languages that the article is available in. Also, I&#039;m pretty sure the word “people” in English translates into a different word in French, so by changing the subdomain name, you may get the incorrect article (or no article at all).\n\n+ Languages via Wikidot Category\n\nThis is a concept that is currently used in &lt;tt&gt;&lt;a href=&quot;http://handbook.wikidot.com&quot;&gt;handbook.wikidot.com&lt;/a&gt;&lt;/tt&gt;. Essentially, instead of having a new subdomain, you contain variations of the same articles in language categories:\n\n* &lt;tt&gt;site.wikidot.com/en:people&lt;/tt&gt; — English\n* &lt;tt&gt;site.wikidot.com/fr:people&lt;/tt&gt; — French\n\nThis system works well as well, as you can display an automated list of all of the pages in that language. However two problems still remain: 1) the word “people” translates differently. 2) Live templates are applied “per language” rather than “per category”.\n\n+ Languages via Wikidot Tag\n\nTagging is a brilliant way to manage your pages. If done correctly, you can select all pages from a certain language. But how then do you name articles for different languages? You can tag the language of a page, but then you&#039;ll need to find a way to link different languages of the same article.\n\n+ Languages via Wikidot Parent\n\nThe original purpose of Parenting in Wikidot was to create a neat breadcrumb navigation and display an organised tree diagram of your site.\n\nEssentially, parenting assigns a special parent-child relationship between pages. If you learn how to use this bond effectively, you can create a bunch of translated pages, and link them to the original article. With this method, it doesn&#039;t matter what you name the translated pages, because you can create an automated list of page translations on the original article.\n\nBut this isn&#039;t very effective if you just have a bunch of translated pages organised in random places. If you kept all translations in a single category, it stumps yourself into a previously mentioned problem: translated pages will be assigned a different Live template to the original page.\n\n&lt;/span&gt;&amp;#8212;\n\nMy latest project revolves around Multilingual Support in Wikidot, because only then can we expand the horizons of Wikidot&#039;s potential&amp;#8230; and I&#039;m passionate about expanding the horizons of Wikidot&#039;s potential :)\n\nWhen will this new technology come out? It is already fully functional and in beta testing!\n\nI can&#039;t wait to launch it!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 10 May 2010 04:37:43 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[include inc:image |category=images |name=pets |image=jameskanjo-tiger.jpg |width=290px |float=right |caption=Support for Cat-speak?\n© James Kanjo, 2010]]\n\nI will be honest. I never cared a bit for multilingual support on websites. But throughout Wikidot, it is something that is cried out for time after time after time!\n\nWhenever a new wiki is developed, there is always somebody to complain “It supports English only. Why can't you give us multilingual support”. And although I wasn't the target, I just always thought to myself “English is the universal language&#8230; why cater to anything else?”\n\nBut it is time I changed my attitude, and listen to the NEEDS of the people.&quot;<br /> main: &quot;Multilingual support makes so much sense. There's nothing stupid about demanding this feature:\n* It makes your product cater to anybody who speaks a language\n* Means there is no “lost in translation” scenarios\n* Expands the customers you can market your product to\n\nIt's win-win&#8230; there's no way you can lose from providing multilingual support — with, of course, the exception case where you are marketing a crappy product ;-)\n\nSo how do we do this so that it works in Wikidot? First, let's look at the previous propositions to this concept.\n\n<span style="text-decoration: line-through;">&#8212;\n\n+ Languages via Subdomain\n\nThis is famously used by the Wikimedia Foundation. Firstly you have a site, let's say, <tt>wikipedia.org</tt>, where you are creating an online encyclopaedia. For each article is stored on a subdomain based on the language it is written in. If it is written in English, then it is stored on <tt><strong>en.</strong>wikipedia.org</tt>. If it is written in French, then it is stored on <tt><strong>fr.</strong>wikipedia.org</tt>.\n\nNow this seems like a really good way to manage your site&#8230; and it <em>is</em> a good way to do it. But it's expensive to implement a system to be able to do that.\n\nIf we were to do something like this in Wikidot, it would look like this:\n\n* <tt>site-en.wikidot.com/people</tt> — English\n* <tt>site-fr.wikidot.com/people</tt> — French\n\nThis is not particularly friendly to me. If you make a structure change in one site, you need to make it in the other sites. If an article doesn't exist in one language, then it's not going to show you the other languages that the article is available in. Also, I'm pretty sure the word “people” in English translates into a different word in French, so by changing the subdomain name, you may get the incorrect article (or no article at all).\n\n+ Languages via Wikidot Category\n\nThis is a concept that is currently used in <tt><a href="http://handbook.wikidot.com">handbook.wikidot.com</a></tt>. Essentially, instead of having a new subdomain, you contain variations of the same articles in language categories:\n\n* <tt>site.wikidot.com/en:people</tt> — English\n* <tt>site.wikidot.com/fr:people</tt> — French\n\nThis system works well as well, as you can display an automated list of all of the pages in that language. However two problems still remain: 1) the word “people” translates differently. 2) Live templates are applied “per language” rather than “per category”.\n\n+ Languages via Wikidot Tag\n\nTagging is a brilliant way to manage your pages. If done correctly, you can select all pages from a certain language. But how then do you name articles for different languages? You can tag the language of a page, but then you'll need to find a way to link different languages of the same article.\n\n+ Languages via Wikidot Parent\n\nThe original purpose of Parenting in Wikidot was to create a neat breadcrumb navigation and display an organised tree diagram of your site.\n\nEssentially, parenting assigns a special parent-child relationship between pages. If you learn how to use this bond effectively, you can create a bunch of translated pages, and link them to the original article. With this method, it doesn't matter what you name the translated pages, because you can create an automated list of page translations on the original article.\n\nBut this isn't very effective if you just have a bunch of translated pages organised in random places. If you kept all translations in a single category, it stumps yourself into a previously mentioned problem: translated pages will be assigned a different Live template to the original page.\n\n</span>&#8212;\n\nMy latest project revolves around Multilingual Support in Wikidot, because only then can we expand the horizons of Wikidot's potential&#8230; and I'm passionate about expanding the horizons of Wikidot's potential :)\n\nWhen will this new technology come out? It is already fully functional and in beta testing!\n\nI can't wait to launch it!&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:63</guid>
				<title>Safe Passwords</title>
				<link>http://james.wikidot.com/blog:63</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[include inc:image |category=images |name=miscellaneous |image=jameskanjo-port_fairy-safe.jpg |width=300px |float=right |caption=© James Kanjo, 2009]]\n\nPasswords are extremely important for protecting your information in the modern digital world. Yet time after time people find that their accounts/computers are still being hacked into.\n\nI&#039;m going to show you how to effectively manage your passwords, and protect your information.&amp;quot;&lt;br /&gt;
main: &amp;quot;But first, let&#039;s go &lt;strong&gt;back to basics&lt;/strong&gt;. Why do we need passwords?\n\nA password is a special code that gives an individual access to his or her data. You must NEVER tell another person your password. NEVER EVER SHARE YOUR PASSWORD. The moment you share your password is the moment you create a security hole in your confidential data.\n\nIf you are the only person to know your password, then you are the only person who can access your data, and your information remains secure and confidential.\n\n&lt;span style=&quot;text-decoration: line-through;&quot;&gt;&amp;#8212;\n\nIn the modern world, people utilise several services that require a password:\n* Computer&#039;s User Login\n* Facebook\n* Twitter\n* YouTube\n* iTunes\n\nThe easy way to access your multiple accounts is to have the same password for everything (which is what most people do). That way, you don&#039;t need to struggle to maintain multiple passwords for a dozen or so services. People also tend to have their password as something that you know, but most other people don&#039;t know.\n\nFor the sake of this article, I&#039;m going to have my password as my sir-name: “kanjo”\n\n“kanjo” is something that is easy to remember for me.\n\n= &lt;span style=&quot;font-size:300%;&quot;&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;strong&gt;BAD! BAD! BAD!&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;\n\nHere are the flaws:\n* If you have the &lt;strong&gt;SAME password&lt;/strong&gt; for &lt;strong&gt;EVERYTHING&lt;/strong&gt;, then somebody with your password has access to &lt;strong&gt;EVERYTHING&lt;/strong&gt;\n\n* If your password involves the &lt;strong&gt;use of WORDS&lt;/strong&gt;, then it makes it easily &lt;strong&gt;GUESSABLE&lt;/strong&gt;\n\n* If your password is &lt;strong&gt;EASY to remember&lt;/strong&gt;, then it is easy for &lt;strong&gt;SOMEBODY ELSE&lt;/strong&gt; to remember\n\nSo how do we conquer these flaws? We simply do the opposite:\n* Use a &lt;strong&gt;DIFFERENT password&lt;/strong&gt; for everything. If somebody has your password, then they can access &lt;strong&gt;ONLY ONE&lt;/strong&gt; of your services\n\n* Make your password use &lt;strong&gt;RANDOM characters&lt;/strong&gt; that do not form words. This way if somebody types in every word in the dictionary, they &lt;strong&gt;will NEVER guess&lt;/strong&gt; your password\n\n* If your password uses random characters, then it is &lt;strong&gt;DIFFICULT to remember&lt;/strong&gt;. This means that if a stranger glances at your password, their brain will be unable to make sense of it, and will be unable to store it in their memory (i.e. &lt;strong&gt;difficult for OTHERS&lt;/strong&gt; to remember)\n\n&lt;/span&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;\n\nGreat ways to make your password even more secure is to:\n* MiX tHe cAsE oF YOuR leTtErS\n* Use numbers (0&amp;#8230;9)\n* Use symbols (!@#$%^&amp;amp;*?)&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-970444-1&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;1&lt;/a&gt;&lt;/sup&gt;\n* Keep length of password between 6 and 10 characters&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-970444-2&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;2&lt;/a&gt;&lt;/sup&gt;\n\nSo I&#039;m going to create a password right now by randomly selecting keys on my keyboard: &lt;strong&gt;u&amp;amp;D3h%&lt;/strong&gt;\n\nAs you can obviously tell, “u&amp;amp;D3h%” is a much more secure password than “kanjo”. You can&#039;t remember the password by looking at it, because you can&#039;t actually &lt;strong&gt;speak&lt;/strong&gt; the password as a word&amp;#8230; you can only read it character-by-character, something the brain is not good at storing in the memory. In addition, you can&#039;t guess a password like that.\n\nThe only way for you to remember your password is through continuous use&amp;#8230; If you use your new password twice a day, then you should have it memorised in less than a fortnight.\n\n&lt;/span&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;\n\nNow in terms of using different passwords for different services, there is an easy (yet secure) way to do this. All you do is simply append an acronym of each service you are using to your password. For example:\n* &lt;strong&gt;C&lt;/strong&gt;omputer: u&amp;amp;D3h%&lt;strong&gt;C&lt;/strong&gt;\n* &lt;strong&gt;F&lt;/strong&gt;ace&lt;strong&gt;b&lt;/strong&gt;ook: u&amp;amp;D3h%&lt;strong&gt;FB&lt;/strong&gt;\n* &lt;strong&gt;T&lt;/strong&gt;witter: u&amp;amp;D3h%&lt;strong&gt;T&lt;/strong&gt;\n* &lt;strong&gt;Y&lt;/strong&gt;ou&lt;strong&gt;T&lt;/strong&gt;ube: u&amp;amp;D3h%&lt;strong&gt;YT&lt;/strong&gt;\n* &lt;strong&gt;iT&lt;/strong&gt;unes: u&amp;amp;D3h%&lt;strong&gt;iT&lt;/strong&gt;\n\nAll you need to do is remember ONE password, but use a different acronym for each service that you use. This way, you essentially have a different password for every service. If somebody has one of your passwords, then they can&#039;t access any other website.\n\nTo make your password even more secure, you can place the acronym in the middle of the password — as opposed to having it at the end.\n\n&lt;/span&gt;&amp;#8212;\n\nAnother thing to note is that you should ALWAYS change your main password &lt;strong&gt;EVERY SINGLE YEAR&lt;/strong&gt;. It is foolish to have a “one password for life” policy.\n\nIn terms of trying to remember your brand new password, the best way is to NOT store it digitally, but to write it down on a piece of paper, and keep it in a personal place (your wallet, for instance). After you have memorised your password (usually takes less than two weeks) destroy the piece of paper to keep your password secure in your head.\n\nCheers!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes-footer&quot;&gt;
&lt;div class=&quot;title&quot;&gt;Footnotes&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-970444-1&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;1&lt;/a&gt;. Some websites do not allow the use of symbols in your passwords&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-970444-2&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;2&lt;/a&gt;. Some websites do not allow passwords longer than 10 characters&lt;/div&gt;
&lt;/div&gt;
</description>
				<pubDate>Mon, 26 Apr 2010 13:29:23 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[include inc:image |category=images |name=miscellaneous |image=jameskanjo-port_fairy-safe.jpg |width=300px |float=right |caption=© James Kanjo, 2009]]\n\nPasswords are extremely important for protecting your information in the modern digital world. Yet time after time people find that their accounts/computers are still being hacked into.\n\nI'm going to show you how to effectively manage your passwords, and protect your information.&quot;<br /> main: &quot;But first, let's go <strong>back to basics</strong>. Why do we need passwords?\n\nA password is a special code that gives an individual access to his or her data. You must NEVER tell another person your password. NEVER EVER SHARE YOUR PASSWORD. The moment you share your password is the moment you create a security hole in your confidential data.\n\nIf you are the only person to know your password, then you are the only person who can access your data, and your information remains secure and confidential.\n\n<span style="text-decoration: line-through;">&#8212;\n\nIn the modern world, people utilise several services that require a password:\n* Computer's User Login\n* Facebook\n* Twitter\n* YouTube\n* iTunes\n\nThe easy way to access your multiple accounts is to have the same password for everything (which is what most people do). That way, you don't need to struggle to maintain multiple passwords for a dozen or so services. People also tend to have their password as something that you know, but most other people don't know.\n\nFor the sake of this article, I'm going to have my password as my sir-name: “kanjo”\n\n“kanjo” is something that is easy to remember for me.\n\n= <span style="font-size:300%;"><span style="color: #f00"><strong>BAD! BAD! BAD!</strong></span></span>\n\nHere are the flaws:\n* If you have the <strong>SAME password</strong> for <strong>EVERYTHING</strong>, then somebody with your password has access to <strong>EVERYTHING</strong>\n\n* If your password involves the <strong>use of WORDS</strong>, then it makes it easily <strong>GUESSABLE</strong>\n\n* If your password is <strong>EASY to remember</strong>, then it is easy for <strong>SOMEBODY ELSE</strong> to remember\n\nSo how do we conquer these flaws? We simply do the opposite:\n* Use a <strong>DIFFERENT password</strong> for everything. If somebody has your password, then they can access <strong>ONLY ONE</strong> of your services\n\n* Make your password use <strong>RANDOM characters</strong> that do not form words. This way if somebody types in every word in the dictionary, they <strong>will NEVER guess</strong> your password\n\n* If your password uses random characters, then it is <strong>DIFFICULT to remember</strong>. This means that if a stranger glances at your password, their brain will be unable to make sense of it, and will be unable to store it in their memory (i.e. <strong>difficult for OTHERS</strong> to remember)\n\n</span><span style="text-decoration: line-through;">\n\nGreat ways to make your password even more secure is to:\n* MiX tHe cAsE oF YOuR leTtErS\n* Use numbers (0&#8230;9)\n* Use symbols (!@#$%^&amp;*?)<sup class="footnoteref"><a id="footnoteref-364832-1" href="javascript:;" class="footnoteref" >1</a></sup>\n* Keep length of password between 6 and 10 characters<sup class="footnoteref"><a id="footnoteref-364832-2" href="javascript:;" class="footnoteref" >2</a></sup>\n\nSo I'm going to create a password right now by randomly selecting keys on my keyboard: <strong>u&amp;D3h%</strong>\n\nAs you can obviously tell, “u&amp;D3h%” is a much more secure password than “kanjo”. You can't remember the password by looking at it, because you can't actually <strong>speak</strong> the password as a word&#8230; you can only read it character-by-character, something the brain is not good at storing in the memory. In addition, you can't guess a password like that.\n\nThe only way for you to remember your password is through continuous use&#8230; If you use your new password twice a day, then you should have it memorised in less than a fortnight.\n\n</span><span style="text-decoration: line-through;">\n\nNow in terms of using different passwords for different services, there is an easy (yet secure) way to do this. All you do is simply append an acronym of each service you are using to your password. For example:\n* <strong>C</strong>omputer: u&amp;D3h%<strong>C</strong>\n* <strong>F</strong>ace<strong>b</strong>ook: u&amp;D3h%<strong>FB</strong>\n* <strong>T</strong>witter: u&amp;D3h%<strong>T</strong>\n* <strong>Y</strong>ou<strong>T</strong>ube: u&amp;D3h%<strong>YT</strong>\n* <strong>iT</strong>unes: u&amp;D3h%<strong>iT</strong>\n\nAll you need to do is remember ONE password, but use a different acronym for each service that you use. This way, you essentially have a different password for every service. If somebody has one of your passwords, then they can't access any other website.\n\nTo make your password even more secure, you can place the acronym in the middle of the password — as opposed to having it at the end.\n\n</span>&#8212;\n\nAnother thing to note is that you should ALWAYS change your main password <strong>EVERY SINGLE YEAR</strong>. It is foolish to have a “one password for life” policy.\n\nIn terms of trying to remember your brand new password, the best way is to NOT store it digitally, but to write it down on a piece of paper, and keep it in a personal place (your wallet, for instance). After you have memorised your password (usually takes less than two weeks) destroy the piece of paper to keep your password secure in your head.\n\nCheers!&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-364832-1"><a href="javascript:;" >1</a>. Some websites do not allow the use of symbols in your passwords</div> <div class="footnote-footer" id="footnote-364832-2"><a href="javascript:;" >2</a>. Some websites do not allow passwords longer than 10 characters</div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:62</guid>
				<title>Wikidot: Specific Users Only</title>
				<link>http://james.wikidot.com/blog:62</link>
				<description>

&lt;p&gt;intro: &amp;quot;One of the commonly asked requests in Wikidot is to show certain blocks of information to a special selection of users. For example, let&#039;s say that you have some administrator links and functions in your sidebar:\n&amp;gt; &lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[[site-administrators&amp;#32;|Information&amp;#32;for&amp;#32;Site&amp;#32;Administrators&amp;#32;only]]]&lt;/span&gt;\n&amp;gt; &lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[[admin:manage&amp;#32;|Site&amp;#32;Manger]]]&lt;/span&gt;\n&amp;gt; &lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[module&amp;#32;NewPage&amp;#32;category=\&amp;quot;blog\&amp;quot;&amp;#32;button=\&amp;quot;New&amp;#32;Blog&amp;#32;Entry\&amp;quot;]]&lt;/span&gt;\n\nNow, you don&#039;t want to show this sort of information to anybody other than the &lt;strong&gt;Administrators&lt;/strong&gt; on your site. It should be completely invisible to every anonymous person, every member and every moderator.\n\nWould you believe me if I told you that the blog you are reading right now, has been doing this for three weeks now? Let me show you an image of what I&#039;m looking at:\n\n[[include inc:image |category=blog |name=62 |image=jameskanjo-suo.jpg |width=300px |caption=Only James Kanjo sees this!!!]]&amp;quot;&lt;br /&gt;
main: &amp;quot;The beauty about is that it&#039;s so easy to do! In fact, it&#039;s as simple as a Wikidot CSI that I have created for public use: &lt;a href=&quot;http://snippets.wikidot.com/code:specific-users-only&quot;&gt;Specific Users Only Include&lt;/a&gt;.\n\nGive it a try! It&#039;s fantastic!\n\nActually, I&#039;ll give it a try for you:\n\n[[div class=\&amp;quot;code\&amp;quot;]]\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[include&amp;#32;:snippets:suo&amp;#32;BEGIN&amp;#32;CODE&amp;#32;|unique=first&amp;#32;|type=&lt;/span&gt;&lt;strong&gt;showto&lt;/strong&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&amp;#32;|user1=james-kanjo&amp;#32;|user2=michal-frackowiak]]&lt;/span&gt;\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;**Hello&amp;#32;James&amp;#32;Kanjo&amp;#32;&amp;amp;&amp;#32;Michał&amp;#32;Frąckowiak!!!**&lt;/span&gt;\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[include&amp;#32;:snippets:suo&amp;#32;END&amp;#32;CODE]]&lt;/span&gt;\n\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[include&amp;#32;:snippets:suo&amp;#32;BEGIN&amp;#32;CODE&amp;#32;|unique=second&amp;#32;|type=&lt;/span&gt;&lt;strong&gt;hidefrom&lt;/strong&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&amp;#32;|user1=james-kanjo&amp;#32;|user2=michal-frackowiak]]&lt;/span&gt;\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;**Hello&amp;#32;Everybody&amp;#32;Else!!!**&lt;/span&gt;\n&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;[[include&amp;#32;:snippets:suo&amp;#32;END&amp;#32;CODE]]&lt;/span&gt;\n[&lt;a href=&quot;http://james.wikidot.com/div]]/n/n+&quot;&gt;##811|In Action:##\n\n[[include :snippets:suo BEGIN CODE |unique=first |type=showto |user1=james-kanjo |user2=michal-frackowiak&lt;/a&gt;]\n&lt;strong&gt;Hello James Kanjo &amp;amp; Michał Frąckowiak!!!&lt;/strong&gt;\n[[include :snippets:suo END CODE]]\n\n[[include :snippets:suo BEGIN CODE |unique=second |type=hidefrom |user1=james-kanjo |user2=michal-frackowiak]]\n&lt;strong&gt;Hello Everybody Else!!!&lt;/strong&gt;\n[[include :snippets:suo END CODE]]\n\nEnjoy!&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 12 Apr 2010 07:19:07 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;One of the commonly asked requests in Wikidot is to show certain blocks of information to a special selection of users. For example, let's say that you have some administrator links and functions in your sidebar:\n&gt; <span style="white-space: pre-wrap;">[[[site-administrators&#32;|Information&#32;for&#32;Site&#32;Administrators&#32;only]]]</span>\n&gt; <span style="white-space: pre-wrap;">[[[admin:manage&#32;|Site&#32;Manger]]]</span>\n&gt; <span style="white-space: pre-wrap;">[[module&#32;NewPage&#32;category=\&quot;blog\&quot;&#32;button=\&quot;New&#32;Blog&#32;Entry\&quot;]]</span>\n\nNow, you don't want to show this sort of information to anybody other than the <strong>Administrators</strong> on your site. It should be completely invisible to every anonymous person, every member and every moderator.\n\nWould you believe me if I told you that the blog you are reading right now, has been doing this for three weeks now? Let me show you an image of what I'm looking at:\n\n[[include inc:image |category=blog |name=62 |image=jameskanjo-suo.jpg |width=300px |caption=Only James Kanjo sees this!!!]]&quot;<br /> main: &quot;The beauty about is that it's so easy to do! In fact, it's as simple as a Wikidot CSI that I have created for public use: <a href="http://snippets.wikidot.com/code:specific-users-only">Specific Users Only Include</a>.\n\nGive it a try! It's fantastic!\n\nActually, I'll give it a try for you:\n\n[[div class=\&quot;code\&quot;]]\n<span style="white-space: pre-wrap;">[[include&#32;:snippets:suo&#32;BEGIN&#32;CODE&#32;|unique=first&#32;|type=</span><strong>showto</strong><span style="white-space: pre-wrap;">&#32;|user1=james-kanjo&#32;|user2=michal-frackowiak]]</span>\n<span style="white-space: pre-wrap;">**Hello&#32;James&#32;Kanjo&#32;&amp;&#32;Michał&#32;Frąckowiak!!!**</span>\n<span style="white-space: pre-wrap;">[[include&#32;:snippets:suo&#32;END&#32;CODE]]</span>\n\n<span style="white-space: pre-wrap;">[[include&#32;:snippets:suo&#32;BEGIN&#32;CODE&#32;|unique=second&#32;|type=</span><strong>hidefrom</strong><span style="white-space: pre-wrap;">&#32;|user1=james-kanjo&#32;|user2=michal-frackowiak]]</span>\n<span style="white-space: pre-wrap;">**Hello&#32;Everybody&#32;Else!!!**</span>\n<span style="white-space: pre-wrap;">[[include&#32;:snippets:suo&#32;END&#32;CODE]]</span>\n[<a href="http://james.wikidot.com/div]]/n/n+">##811|In Action:##\n\n[[include :snippets:suo BEGIN CODE |unique=first |type=showto |user1=james-kanjo |user2=michal-frackowiak</a>]\n<strong>Hello James Kanjo &amp; Michał Frąckowiak!!!</strong>\n[[include :snippets:suo END CODE]]\n\n[[include :snippets:suo BEGIN CODE |unique=second |type=hidefrom |user1=james-kanjo |user2=michal-frackowiak]]\n<strong>Hello Everybody Else!!!</strong>\n[[include :snippets:suo END CODE]]\n\nEnjoy!&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:61</guid>
				<title>VNC: Remote Control</title>
				<link>http://james.wikidot.com/blog:61</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[include inc:image |category=blog |name=61 |image=james_kanjo_vnc_iteleport.jpg |width=300px |float=right |caption=iTunes via iPhone\n© James Kanjo, 2010]]\n\nAfter recently converting to MobileMe, I decided to explore the special features of my Mac that I&#039;ve always been avoiding. These are the features which require a MobileMe subscription to work.\n\nOne of these features is “Back to My Mac”, which allows you to essentially control your computer remotely. This is a really cool feature that I certainly would love to do! \n\nBecause Apple base their products on the “it just works” philosophy, you can expect that “Back to My Mac” works like a charm, every time. And just as you would expect from Apple, you can access your Mac from any computer, Mac or PC&amp;#8230; &lt;span style=&quot;font-size:120%;&quot;&gt;&lt;strong&gt;Wait a second&amp;#8230;&lt;/strong&gt;&lt;/span&gt;&amp;quot;&lt;br /&gt;
main: &amp;quot;&lt;span style=&quot;font-size:140%;&quot;&gt;&lt;span style=&quot;font-size:75%;&quot;&gt;You&#039;re telling me that “Back to My Mac”&lt;/span&gt; &lt;strong&gt;ONLY WORKS FROM A MAC????&lt;/strong&gt;&lt;/span&gt;\n\nGrrr. Fine. I&#039;ll just use it from my Apple iPhone instead.\n\n&lt;span style=&quot;font-size:150%;&quot;&gt;&lt;strong&gt;WHAT????&lt;/strong&gt; &lt;span style=&quot;font-size:75%;&quot;&gt;An&lt;/span&gt; &lt;strong&gt;iPhone DOESN&#039;T COUNT AS A MAC???&lt;/strong&gt;&lt;/span&gt;\n\nYou can&#039;t even use Back to My Mac from an iPhone. But there is an alternative to remote-controlling your computer: &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_Network_Computing&quot;&gt;VNC&lt;/a&gt;\n\n&amp;#8212;&amp;#8212;\n\n&lt;strong&gt;V&lt;/strong&gt;irtual &lt;strong&gt;N&lt;/strong&gt;etwork &lt;strong&gt;C&lt;/strong&gt;omputing is a special protocol that, simply said, allows you to see another computer&#039;s display, and control the mouse/keyboard input devices. Thus enabling your computer to be remotely controlled.\n\nSetting it up was a learning experience. I enabled “Screen Sharing” on my Mac&#039;s &lt;em&gt;Sharing Preferences&lt;/em&gt;, and made my Wireless router redirect the 5900 port to the 5900 port of my computer in the home network. Port 5900 is specifically designed, though not necessarily required, for remote controlling a desktop.\n\nWhen a client makes a request for port 5900 on my router, I don&#039;t really want to remotely control the desktop of my router&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-415290-1&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;1&lt;/a&gt;&lt;/sup&gt;, so the router needs to redirect the client to port 5900 of my computer. How do I do this? I just change the Port Mapping settings of my Router to map port 5900 to my computer&#039;s IP address&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-415290-2&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;2&lt;/a&gt;&lt;/sup&gt;.\n\nAfter the connection has been made, you can set up your computer to require a VNC password&amp;#8230; this is recommended, otherwise literally anybody could access your computer.\n\nNow here&#039;s the joyful part of the whole process. Every time my router disconnects from the internet, it&#039;s IP address changes to what my ISP assigns it with. This will happen whenever I turn off my modem or router, whenever the ISP decides to refresh everybody&#039;s IP address, and whenever there is a power outage. Once your IP address has changed, you suddenly don&#039;t have access to your computer remotely. So how do we find out this vital piece of information???\n\nIt&#039;s as simple as an email. On my Mac in the Mail.app, I have set up a special Mail rule that says:\n&amp;gt; Whenever an email from &lt;strong&gt;James&lt;/strong&gt; arrives, that has the subject &lt;strong&gt;Return IP Address&lt;/strong&gt;, perform this &lt;strong&gt;AppleScript&lt;/strong&gt; and delete the message\nAll I need to do is send myself an email with the subject “Return IP Address”. Then a special AppleScript will be performed. I have programmed this AppleScript to email an image of your IP address to the email address you specify (it needs to be hardcoded, sorry):\n\n[[code]]\ndo shell script \&amp;quot;cd ~/Desktop; curl -fO &#039;&lt;a href=&quot;http://www.ipnow.org/images/iprand.jpg&quot;&gt;http://www.ipnow.org/images/iprand.jpg&lt;/a&gt;&#039;\&amp;quot;\n\nset theAddress to \&amp;quot;INSERT_EMAIL_ADDRESS_TO_SEND_IP-ADDRESS_TO\&amp;quot;\nset theSubject to \&amp;quot;Returning IP Address\&amp;quot;\nset theBody to \&amp;quot;The current IP Address in use is:\&amp;quot;\nset theAttachment to (path to desktop as Unicode text) &amp;amp; \&amp;quot;iprand.jpg\&amp;quot;\n\ntell application \&amp;quot;Mail\&amp;quot;\n set theMessage to make new outgoing message with properties {subject:theSubject, content:theBody &amp;amp; return &amp;amp; return}\n tell theMessage\n make new to recipient at end of to recipients with properties {address:theAddress}\n tell content\n make new attachment with properties {file name:(theAttachment as alias)} at after the last paragraph\n end tell\n end tell\n send theMessage\nend tell\n\ndo shell script (\&amp;quot;rm \&amp;quot; &amp;amp; \&amp;quot;~/Desktop/iprand.jpg\&amp;quot;)\n[[/code]]\n\nSo now if your home network&#039;s IP address has changed, just send your self that special email, and you should get a reply containing your email address.\nThere is an automated alternative to this, which requires your computer to be constantly connected to an external server (a much easier solution), but I&#039;d prefer to keep my IP address as my own business than have it registered at some strange server&lt;sup class=&quot;footnoteref&quot;&gt;&lt;a id=&quot;footnoteref-415290-3&quot; href=&quot;javascript:;&quot; class=&quot;footnoteref&quot;  &gt;3&lt;/a&gt;&lt;/sup&gt;.\n\nREMEMBER: You&#039;re computer at home needs to be turned on, and not in sleep mode so that it can process your email. Having the screensaver turned on is fine.\n\nSo now I just use the &lt;a href=&quot;http://www.iteleportmobile.com/&quot;&gt;iTeleport iPhone App&lt;/a&gt; to access my computer anytime, globally.&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436748&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes-footer&quot;&gt;
&lt;div class=&quot;title&quot;&gt;Footnotes&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-415290-1&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;1&lt;/a&gt;. A router doesn&#039;t have a desktop to begin with&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-415290-2&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;2&lt;/a&gt;. When a computer is part of a private network, it has special IP address for the network which is separate to the rest of the internet&lt;/div&gt;
&lt;div class=&quot;footnote-footer&quot; id=&quot;footnote-415290-3&quot;&gt;&lt;a href=&quot;javascript:;&quot;  &gt;3&lt;/a&gt;. Being part of MobileMe and having the Back to My Mac feature turned on means that you are constantly connected to Apple&#039;s MobileMe servers. However, they don&#039;t reveal the IP address of your computer for some stupid reason&lt;/div&gt;
&lt;/div&gt;
</description>
				<pubDate>Tue, 06 Apr 2010 03:11:57 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[include inc:image |category=blog |name=61 |image=james_kanjo_vnc_iteleport.jpg |width=300px |float=right |caption=iTunes via iPhone\n© James Kanjo, 2010]]\n\nAfter recently converting to MobileMe, I decided to explore the special features of my Mac that I've always been avoiding. These are the features which require a MobileMe subscription to work.\n\nOne of these features is “Back to My Mac”, which allows you to essentially control your computer remotely. This is a really cool feature that I certainly would love to do! \n\nBecause Apple base their products on the “it just works” philosophy, you can expect that “Back to My Mac” works like a charm, every time. And just as you would expect from Apple, you can access your Mac from any computer, Mac or PC&#8230; <span style="font-size:120%;"><strong>Wait a second&#8230;</strong></span>&quot;<br /> main: &quot;<span style="font-size:140%;"><span style="font-size:75%;">You're telling me that “Back to My Mac”</span> <strong>ONLY WORKS FROM A MAC????</strong></span>\n\nGrrr. Fine. I'll just use it from my Apple iPhone instead.\n\n<span style="font-size:150%;"><strong>WHAT????</strong> <span style="font-size:75%;">An</span> <strong>iPhone DOESN'T COUNT AS A MAC???</strong></span>\n\nYou can't even use Back to My Mac from an iPhone. But there is an alternative to remote-controlling your computer: <a href="http://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC</a>\n\n&#8212;&#8212;\n\n<strong>V</strong>irtual <strong>N</strong>etwork <strong>C</strong>omputing is a special protocol that, simply said, allows you to see another computer's display, and control the mouse/keyboard input devices. Thus enabling your computer to be remotely controlled.\n\nSetting it up was a learning experience. I enabled “Screen Sharing” on my Mac's <em>Sharing Preferences</em>, and made my Wireless router redirect the 5900 port to the 5900 port of my computer in the home network. Port 5900 is specifically designed, though not necessarily required, for remote controlling a desktop.\n\nWhen a client makes a request for port 5900 on my router, I don't really want to remotely control the desktop of my router<sup class="footnoteref"><a id="footnoteref-758095-1" href="javascript:;" class="footnoteref" >1</a></sup>, so the router needs to redirect the client to port 5900 of my computer. How do I do this? I just change the Port Mapping settings of my Router to map port 5900 to my computer's IP address<sup class="footnoteref"><a id="footnoteref-758095-2" href="javascript:;" class="footnoteref" >2</a></sup>.\n\nAfter the connection has been made, you can set up your computer to require a VNC password&#8230; this is recommended, otherwise literally anybody could access your computer.\n\nNow here's the joyful part of the whole process. Every time my router disconnects from the internet, it's IP address changes to what my ISP assigns it with. This will happen whenever I turn off my modem or router, whenever the ISP decides to refresh everybody's IP address, and whenever there is a power outage. Once your IP address has changed, you suddenly don't have access to your computer remotely. So how do we find out this vital piece of information???\n\nIt's as simple as an email. On my Mac in the Mail.app, I have set up a special Mail rule that says:\n&gt; Whenever an email from <strong>James</strong> arrives, that has the subject <strong>Return IP Address</strong>, perform this <strong>AppleScript</strong> and delete the message\nAll I need to do is send myself an email with the subject “Return IP Address”. Then a special AppleScript will be performed. I have programmed this AppleScript to email an image of your IP address to the email address you specify (it needs to be hardcoded, sorry):\n\n[[code]]\ndo shell script \&quot;cd ~/Desktop; curl -fO '<a href="http://www.ipnow.org/images/iprand.jpg">http://www.ipnow.org/images/iprand.jpg</a>'\&quot;\n\nset theAddress to \&quot;INSERT_EMAIL_ADDRESS_TO_SEND_IP-ADDRESS_TO\&quot;\nset theSubject to \&quot;Returning IP Address\&quot;\nset theBody to \&quot;The current IP Address in use is:\&quot;\nset theAttachment to (path to desktop as Unicode text) &amp; \&quot;iprand.jpg\&quot;\n\ntell application \&quot;Mail\&quot;\n set theMessage to make new outgoing message with properties {subject:theSubject, content:theBody &amp; return &amp; return}\n tell theMessage\n make new to recipient at end of to recipients with properties {address:theAddress}\n tell content\n make new attachment with properties {file name:(theAttachment as alias)} at after the last paragraph\n end tell\n end tell\n send theMessage\nend tell\n\ndo shell script (\&quot;rm \&quot; &amp; \&quot;~/Desktop/iprand.jpg\&quot;)\n[[/code]]\n\nSo now if your home network's IP address has changed, just send your self that special email, and you should get a reply containing your email address.\nThere is an automated alternative to this, which requires your computer to be constantly connected to an external server (a much easier solution), but I'd prefer to keep my IP address as my own business than have it registered at some strange server<sup class="footnoteref"><a id="footnoteref-758095-3" href="javascript:;" class="footnoteref" >3</a></sup>.\n\nREMEMBER: You're computer at home needs to be turned on, and not in sleep mode so that it can process your email. Having the screensaver turned on is fine.\n\nSo now I just use the <a href="http://www.iteleportmobile.com/">iTeleport iPhone App</a> to access my computer anytime, globally.&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436748" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-758095-1"><a href="javascript:;" >1</a>. A router doesn't have a desktop to begin with</div> <div class="footnote-footer" id="footnote-758095-2"><a href="javascript:;" >2</a>. When a computer is part of a private network, it has special IP address for the network which is separate to the rest of the internet</div> <div class="footnote-footer" id="footnote-758095-3"><a href="javascript:;" >3</a>. Being part of MobileMe and having the Back to My Mac feature turned on means that you are constantly connected to Apple's MobileMe servers. However, they don't reveal the IP address of your computer for some stupid reason</div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:60</guid>
				<title>Big Homo!</title>
				<link>http://james.wikidot.com/blog:60</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[div style=\&amp;quot;display : none;\&amp;quot;]]\nThursday 01 April 2010\n[[/div]]\n\nThis is something I&#039;ve been holding on to for the entirety of my lifetime &amp;#8212; my hidden sexuality. As it turns out, I was born a\n\n= &lt;span style=&quot;font-size:300%;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;H&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;O&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;M&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;O&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;E&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;X&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;U&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;!&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;\n\nWhy am I attracted to guys and not girls? Because guys are hot, goddammit!&amp;quot;&lt;br /&gt;
main: &amp;quot;Ever since I was 9 years old, I have been sexually attracted to guys. It wasn&#039;t until I started high school, though, when I realised my sexuality&amp;#8230; It just never occurred to me that I was gay before then. But once I realised, I knew I had to keep it a secret so I wouldn&#039;t damage my reputation (which is very important to escape teasing/bullying).\n\nThis is a very special day, because I have finally been able to come out on the internet.\n\nThankyou for reading this :-)\n\n[[module css]]\nh1, h2, h3, h4, h5, h6, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, a, a:link {\n font-family: \&amp;quot;Comic Sans MS\&amp;quot;;\n}\n\n\nh1:before {content: &#039;Happy &#039;; color: #FF00FF;}\nh2:before {content: &#039;Cute &#039;; color: #FF00FF;}\nh3:before {content: &#039;Glittery &#039;; color: #FF00FF;}\nstrong:before {content: &#039;Fun &#039;; color: #FF00FF;}\ntt:before {content: &#039;Magical &#039;; color: #FF00FF;}\nem:before {content: &#039;Lovely &#039;; color: #FF00FF;}\np:before {content: &#039;Sparkly &#039;; color: #FF00FF;}\n#page-content li:before {content: &#039;Charming &#039;; color: #FF00FF;}\nli li:before {content: &#039;Amazing &#039;; color: #FF00FF;}\n#page-content a:before {content: &#039;Wonderful &#039;; color: #FF00FF;}\n\n.comments-box h1:before, .comments-box h2:before, .comments-box h3:before, .comments-box strong:before, .comments-box tt:before, .comments-box em:before, .comments-box p:before, .comments-box li:before, .comments-box li li:before, .comments-box a:before {content: &#039;&#039; !important;}\n[[/module]]&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436749&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Thu, 01 Apr 2010 08:47:43 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[div style=\&quot;display : none;\&quot;]]\nThursday 01 April 2010\n[[/div]]\n\nThis is something I've been holding on to for the entirety of my lifetime &#8212; my hidden sexuality. As it turns out, I was born a\n\n= <span style="font-size:300%;"><strong><span style="color: #f00"><span style="text-decoration: underline;">H</span></span><span style="color: #fa0"><span style="text-decoration: underline;">O</span></span><span style="color: #ff0"><span style="text-decoration: underline;">M</span></span><span style="color: #0f0"><span style="text-decoration: underline;">O</span></span><span style="color: #0ff"><span style="text-decoration: underline;">S</span></span><span style="color: #508"><span style="text-decoration: underline;">E</span></span><span style="color: #f8f"><span style="text-decoration: underline;">X</span></span><span style="color: #f00"><span style="text-decoration: underline;">U</span></span><span style="color: #fa0"><span style="text-decoration: underline;">A</span></span><span style="color: #ff0"><span style="text-decoration: underline;">L</span></span><span style="color: #0f0"><span style="text-decoration: underline;">!</span></span></strong></span>\n\nWhy am I attracted to guys and not girls? Because guys are hot, goddammit!&quot;<br /> main: &quot;Ever since I was 9 years old, I have been sexually attracted to guys. It wasn't until I started high school, though, when I realised my sexuality&#8230; It just never occurred to me that I was gay before then. But once I realised, I knew I had to keep it a secret so I wouldn't damage my reputation (which is very important to escape teasing/bullying).\n\nThis is a very special day, because I have finally been able to come out on the internet.\n\nThankyou for reading this :-)\n\n[[module css]]\nh1, h2, h3, h4, h5, h6, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, a, a:link {\n font-family: \&quot;Comic Sans MS\&quot;;\n}\n\n\nh1:before {content: 'Happy '; color: #FF00FF;}\nh2:before {content: 'Cute '; color: #FF00FF;}\nh3:before {content: 'Glittery '; color: #FF00FF;}\nstrong:before {content: 'Fun '; color: #FF00FF;}\ntt:before {content: 'Magical '; color: #FF00FF;}\nem:before {content: 'Lovely '; color: #FF00FF;}\np:before {content: 'Sparkly '; color: #FF00FF;}\n#page-content li:before {content: 'Charming '; color: #FF00FF;}\nli li:before {content: 'Amazing '; color: #FF00FF;}\n#page-content a:before {content: 'Wonderful '; color: #FF00FF;}\n\n.comments-box h1:before, .comments-box h2:before, .comments-box h3:before, .comments-box strong:before, .comments-box tt:before, .comments-box em:before, .comments-box p:before, .comments-box li:before, .comments-box li li:before, .comments-box a:before {content: '' !important;}\n[[/module]]&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436749" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:59</guid>
				<title>Wikidot Tip of the Day</title>
				<link>http://james.wikidot.com/blog:59</link>
				<description>

&lt;p&gt;intro: &amp;quot;Another day, another discovery.\n\nToday I discovered that you can set an entire category to utilise &lt;em&gt;ONLY&lt;/em&gt; the “Title” field. This has been made possible with data forms.&amp;quot;&lt;br /&gt;
main: &amp;quot;The best part is, it&#039;s so damn easy!!! Here&#039;s the code for you live template (&lt;tt&gt;:_template&lt;/tt&gt;) page:\n\n[[code]]\n[[form]]]\n\n[&lt;a href=&quot;http://james.wikidot.com/form]]/n[[/code]]/n/nAnd&quot;&gt;you&#039;re done!\n\nWhilst I&#039;m at it, I have made another discovery (although, I&#039;ve already revealed it elsewhere) regarding data forms. If you want to utilise form data within a live template //WITHOUT// displaying the default form layout (i.e. using your own custom layout and usage of variables), just place the form code where you would a static template:\n\n[[code&lt;/a&gt;]\nYour layout goes here\n\n====\n\n[[form]]\n\nHidden form goes here\n\n[&lt;a href=&quot;http://james.wikidot.com/form]]/n/n[[/code]]/n/n----/n/nThis&quot;&gt;advancement has allowed me to upgrade my [http://polls.wikidot.com Polls @ Wikidot&lt;/a&gt; application to be even more user friendly.&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436749&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Fri, 12 Mar 2010 04:15:23 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;Another day, another discovery.\n\nToday I discovered that you can set an entire category to utilise <em>ONLY</em> the “Title” field. This has been made possible with data forms.&quot;<br /> main: &quot;The best part is, it's so damn easy!!! Here's the code for you live template (<tt>:_template</tt>) page:\n\n[[code]]\n[[form]]]\n\n[<a href="http://james.wikidot.com/form]]/n[[/code]]/n/nAnd">you're done!\n\nWhilst I'm at it, I have made another discovery (although, I've already revealed it elsewhere) regarding data forms. If you want to utilise form data within a live template //WITHOUT// displaying the default form layout (i.e. using your own custom layout and usage of variables), just place the form code where you would a static template:\n\n[[code</a>]\nYour layout goes here\n\n====\n\n[[form]]\n\nHidden form goes here\n\n[<a href="http://james.wikidot.com/form]]/n/n[[/code]]/n/n----/n/nThis">advancement has allowed me to upgrade my [http://polls.wikidot.com Polls @ Wikidot</a> application to be even more user friendly.&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436749" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:58</guid>
				<title>Time for an announcement!</title>
				<link>http://james.wikidot.com/blog:58</link>
				<description>

&lt;p&gt;intro: &amp;quot;[[include inc:image |category=images |name=miscellaneous |image=james_kanjo_crown_casino.jpg |width=300px |float=right |caption=© James Kanjo, 2009]]\n\nI&#039;ve got some exciting news!!! On the 18&lt;sup&gt;th&lt;/sup&gt; of January in 2008, at 9:16pm, I released an extremely difficult puzzle to a community of highly regarded individuals. Two people solved it within the year.\n\nOn the 26&lt;sup&gt;th&lt;/sup&gt; of April in 2009, I released &lt;a href=&quot;http://james.wikidot.com/blog:34&quot;&gt;the puzzle&lt;/a&gt; to the world.\n\nEight and a half months later, on the 12&lt;sup&gt;th&lt;/sup&gt; of January 2010 at 10:30am, an individual by the name of &lt;span class=&quot;printuser&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/graphmastur&quot;  &gt;graphmastur&lt;/a&gt;&lt;/span&gt; solved it.&amp;quot;&lt;br /&gt;
main: &amp;quot;= &lt;span style=&quot;font-size:300%;&quot;&gt;CONGRATULATIONS &lt;span class=&quot;printuser&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/graphmastur&quot;  &gt;graphmastur&lt;/a&gt;&lt;/span&gt;!!!&lt;/span&gt;\n\n&amp;#8212;&amp;#8212;\n\nNow, back to me, I&#039;ve been having a holiday from blogging for the past 96 days. The reason being, I&#039;ve had a number of changes in my life, and I needed time to adopt. Thankfully, I seem to have regained my momentum :)\n\nAlso, please take the time to admire my spectacular photography and image enhancing skills!!!\n\n~~~~&amp;quot;&lt;br /&gt;
sig: &#039;3&#039;&lt;br /&gt;
after: &#039;&#039;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436749&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 15 Feb 2010 04:24:58 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;[[include inc:image |category=images |name=miscellaneous |image=james_kanjo_crown_casino.jpg |width=300px |float=right |caption=© James Kanjo, 2009]]\n\nI've got some exciting news!!! On the 18<sup>th</sup> of January in 2008, at 9:16pm, I released an extremely difficult puzzle to a community of highly regarded individuals. Two people solved it within the year.\n\nOn the 26<sup>th</sup> of April in 2009, I released <a href="http://james.wikidot.com/blog:34">the puzzle</a> to the world.\n\nEight and a half months later, on the 12<sup>th</sup> of January 2010 at 10:30am, an individual by the name of <span class="printuser"><a href="http://www.wikidot.com/user:info/graphmastur" >graphmastur</a></span> solved it.&quot;<br /> main: &quot;= <span style="font-size:300%;">CONGRATULATIONS <span class="printuser"><a href="http://www.wikidot.com/user:info/graphmastur" >graphmastur</a></span>!!!</span>\n\n&#8212;&#8212;\n\nNow, back to me, I've been having a holiday from blogging for the past 96 days. The reason being, I've had a number of changes in my life, and I needed time to adopt. Thankfully, I seem to have regained my momentum :)\n\nAlso, please take the time to admire my spectacular photography and image enhancing skills!!!\n\n~~~~&quot;<br /> sig: '3'<br /> after: ''</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436749" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://james.wikidot.com/blog:57</guid>
				<title>Where did James go???</title>
				<link>http://james.wikidot.com/blog:57</link>
				<description>

&lt;p&gt;intro: &amp;quot;I have been struggling to think of something to blog about; hence, I haven&#039;t. So after 18 days, I&#039;ve decided that I&#039;m going to blog about my latest Wikidot projects:\n\n|| &lt;span style=&quot;font-size:300%;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;O&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;R&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;E&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; || &lt;span style=&quot;font-size:125%;&quot;&gt;&lt;strong&gt;AND&lt;/strong&gt;&lt;/span&gt; || &lt;span style=&quot;font-size:300%;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;F&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;M&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0f0&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0ff&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #508&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;E&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f00&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; ||&amp;quot;&lt;br /&gt;
main: &amp;quot;+ Stories\n\nMost stories are linear — that is, you read them from start to finish in the order of ascending page numbers, as the author wants you to.\n\nHow do stories relate to a wiki engine? Well, what if one were to start writing a story, page by page. When that person stops, &lt;strong&gt;another person can continue the story&lt;/strong&gt; by writing their own pages onto it. Stories can then become collaborative works, and as we know, wikis are perfect for collaborative works.\n\nBut why stop there? What if you don&#039;t like the path that somebody writes the story into? What if you didn&#039;t like the direction that the story was taking? What if you had &lt;strong&gt;alternative scenarios&lt;/strong&gt; of a story? Multiple endings to a story, depending on the plots YOU choose along the way. This is something that typical wiki engines are not capable of; but as we know, Wikidot is not your typical wiki engine.\n\nI&#039;ve created a site, &lt;a href=&quot;http://stories.wikidot.com&quot;&gt;Neverending Stories&lt;/a&gt;, which can do this.\n\nWhat I now need to do is create a series of interesting “starter points” where people will &lt;em&gt;want&lt;/em&gt; to continue the story and participate.\n\n+ Families\n\nFamilies are, without a doubt, more complicated than quantum mechanics. So when it comes to drawing up a map of your family, things become very tedious and confusing.\n\nSo I decided to create a Wikidot Application to organise our families: AKA, a family tree application.\n\nAll you need to do is add a person, and then create their children. With each child, you parent the child to the other parent. Then, for each individual, my Wikidot application will &lt;strong&gt;automatically&lt;/strong&gt;:\n* Display all grandparents\n* Display the parent/s\n* Display all aunts/uncles\n* Display all siblings\n* Display all children\n* Display all grandchildren\n\nThat&#039;s right! Five generations are automatically calculated and displayed. You hardly have to lift a finger!\n\nCurrently, the user interface is in development, and not ready for public usage yet. However, the functionality exists and is working beautifully.\n\n&amp;#8212;&amp;#8212;\n\nI can&#039;t wait to launch these! They&#039;re going to be awesome!&amp;quot;&lt;br /&gt;
sig: 3&lt;br /&gt;
after: &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;by &lt;span class=&quot;printuser avatarhover&quot;&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;&lt;img class=&quot;small&quot; src=&quot;http://www.wikidot.com/avatar.php?userid=35113&amp;amp;size=small&amp;amp;timestamp=1369436749&quot; alt=&quot;James Kanjo&quot; style=&quot;background-image:url(http://www.wikidot.com/userkarma.php?u=35113)&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.wikidot.com/user:info/james-kanjo&quot;  &gt;James Kanjo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</description>
				<pubDate>Tue, 10 Nov 2009 13:07:18 +0000</pubDate>
												<content:encoded>
					<![CDATA[
						 <p>intro: &quot;I have been struggling to think of something to blog about; hence, I haven't. So after 18 days, I've decided that I'm going to blog about my latest Wikidot projects:\n\n|| <span style="font-size:300%;"><strong><span style="color: #f00"><span style="text-decoration: underline;">S</span></span><span style="color: #fa0"><span style="text-decoration: underline;">T</span></span><span style="color: #ff0"><span style="text-decoration: underline;">O</span></span><span style="color: #0f0"><span style="text-decoration: underline;">R</span></span><span style="color: #0ff"><span style="text-decoration: underline;">I</span></span><span style="color: #508"><span style="text-decoration: underline;">E</span></span><span style="color: #f8f"><span style="text-decoration: underline;">S</span></span></strong></span> || <span style="font-size:125%;"><strong>AND</strong></span> || <span style="font-size:300%;"><strong><span style="color: #f00"><span style="text-decoration: underline;">F</span></span><span style="color: #fa0"><span style="text-decoration: underline;">A</span></span><span style="color: #ff0"><span style="text-decoration: underline;">M</span></span><span style="color: #0f0"><span style="text-decoration: underline;">I</span></span><span style="color: #0ff"><span style="text-decoration: underline;">L</span></span><span style="color: #508"><span style="text-decoration: underline;">I</span></span><span style="color: #f8f"><span style="text-decoration: underline;">E</span></span><span style="color: #f00"><span style="text-decoration: underline;">S</span></span></strong></span> ||&quot;<br /> main: &quot;+ Stories\n\nMost stories are linear — that is, you read them from start to finish in the order of ascending page numbers, as the author wants you to.\n\nHow do stories relate to a wiki engine? Well, what if one were to start writing a story, page by page. When that person stops, <strong>another person can continue the story</strong> by writing their own pages onto it. Stories can then become collaborative works, and as we know, wikis are perfect for collaborative works.\n\nBut why stop there? What if you don't like the path that somebody writes the story into? What if you didn't like the direction that the story was taking? What if you had <strong>alternative scenarios</strong> of a story? Multiple endings to a story, depending on the plots YOU choose along the way. This is something that typical wiki engines are not capable of; but as we know, Wikidot is not your typical wiki engine.\n\nI've created a site, <a href="http://stories.wikidot.com">Neverending Stories</a>, which can do this.\n\nWhat I now need to do is create a series of interesting “starter points” where people will <em>want</em> to continue the story and participate.\n\n+ Families\n\nFamilies are, without a doubt, more complicated than quantum mechanics. So when it comes to drawing up a map of your family, things become very tedious and confusing.\n\nSo I decided to create a Wikidot Application to organise our families: AKA, a family tree application.\n\nAll you need to do is add a person, and then create their children. With each child, you parent the child to the other parent. Then, for each individual, my Wikidot application will <strong>automatically</strong>:\n* Display all grandparents\n* Display the parent/s\n* Display all aunts/uncles\n* Display all siblings\n* Display all children\n* Display all grandchildren\n\nThat's right! Five generations are automatically calculated and displayed. You hardly have to lift a finger!\n\nCurrently, the user interface is in development, and not ready for public usage yet. However, the functionality exists and is working beautifully.\n\n&#8212;&#8212;\n\nI can't wait to launch these! They're going to be awesome!&quot;<br /> sig: 3<br /> after: &quot;&quot;</p> <p>by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/james-kanjo" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1369436749" alt="James Kanjo" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)" /></a><a href="http://www.wikidot.com/user:info/james-kanjo" >James Kanjo</a></span></p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>