<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>James Padolsey&#187; General category &#8211; James Padolsey</title>
	<atom:link href="http://james.padolsey.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://james.padolsey.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 22 Jan 2012 17:04:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Intellectual property</title>
		<link>http://james.padolsey.com/general/intellectual-property/</link>
		<comments>http://james.padolsey.com/general/intellectual-property/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 16:39:22 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[ACTA]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[PIPA]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[SOPA]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=2001</guid>
		<description><![CDATA[SOPA, PIPA, ACTA, TPP, DMCA, TRIPS&#8230; There is no question that the goals of the various acts, bills and agreements governing intellectual property and copyright are consistently inline with the goals of the largest entertainment companies and stakeholders. The MPAA and RIAA, respectively, the associations&#8230;]]></description>
			<content:encoded><![CDATA[<p>SOPA, PIPA, ACTA, TPP, DMCA, TRIPS&#8230; There is no question that the goals of the various acts, bills and agreements governing intellectual property and copyright are consistently inline with the goals of the largest entertainment companies and stakeholders. The MPAA and RIAA, respectively, the associations (i.e. lobbying organisations) for the movie and record industries are often found to be sponsors and co-drafters of these legal provisions.</p>

<p>It is no wonder that this is the case. With such staggering financial incentives it is understandable and reasonable, from their perspective, to shape law and public opinion to better their margins. It&#8217;s not complex. It&#8217;s all money.</p>

<p>If you&#8217;re a proponent of intellectual property and copyright in principle or even practice then this is a time at which you should be reviewing the situation and figuring out what, given the status quo, is going to prevent the approaching inhibition of our freedoms. Of course, you needn&#8217;t do this, if you, like the MPAA and RIAA, aren&#8217;t fazed by the idea of having your internet traffic monitored, held on file and released to copyright holders at their whims, and without due-process. If, on the other hand, you think this is all wrong, for whatever reason, then maybe it is time to think about what copyright really means to you&#8230;</p>

<p>It has been said that without copyright there is no incentive to innovate. This runs contrary to works created for the public domain, open source software, and works licensed under copyright-waiving terms (e.g. <a href="http://unlicense.org/">unlicense.org</a>). The claim falls apart. There is, evidently, some other motivations involved in innovating.</p>

<p>So what is intellectual property really worth? Is it worth inhibiting further innovation and creativity? Should I have to pay countless artists millions of dollars to mix a track and create something new? Is this fair? Is it okay to have no privacy or freedom of expression?</p>

<p>Is intellectual property, as a whole, really in the best interest of humanity? If it is, then it follows that it is in the best interest of humanity to create a contentious atmosphere, wherein people are pitted against each other to better not themselves necessarily, nor humanity as a whole, but simply to improve their financial standing in society. It is easy to discount one&#8217;s support of these circumstances by convincing oneself that it&#8217;s &#8220;what we need to survive&#8221;, &#8220;just how things are&#8221;, &#8220;not gonna change&#8221; etc.</p>

<p>I don&#8217;t know what the answer is, but I sure as damn prefer the idea of society where I can distribute my creations freely and have them built upon by other people to better society as a whole. Such a monumental shift in perspective is not going to happen overnight, but maybe something will materialise out of mass opposition, and no, that doesn&#8217;t mean changing a facebook profile pic, adopting a twibbon, or blocking your site for one day. Even this-here text you&#8217;re reading is probably an exercise in futility. This&#8217;ll take continued effort and awareness. Or, we can all stick our heads in the ground and entertain ourselves with the petty spoon-fed ideals we&#8217;ve been conditioned to uphold and never question anything other than what&#8217;s for dinner, or when is the next episode of Celebrity Bullshit Revisited?</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/intellectual-property/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Making APIs is hard</title>
		<link>http://james.padolsey.com/general/making-apis-is-hard/</link>
		<comments>http://james.padolsey.com/general/making-apis-is-hard/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 23:41:08 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1981</guid>
		<description><![CDATA[We know naming is hard, and it probably should be, but never has something so seemingly minor made me toil so frequently. It&#8217;s such an interesting topic that I just had to write some stuff down.

When I say naming, I mean something as simple&#8230;]]></description>
			<content:encoded><![CDATA[<p>We know naming is hard, and it probably should be, but never has something so seemingly minor made me toil so frequently. It&#8217;s such an interesting topic that I just had to write some stuff down.</p>

<p>When I say naming, I mean something as simple as naming a variable, or more often: an API endpoint &#8212; the thing that the end-user-programmer-guy is going to use. It&#8217;s hard.</p>

<p>I think code should be readable, but I don&#8217;t think that means it should be readable to everyone, even non-programmers. So, if I show a non-programmer Java and then Perl and they say the former is much easier to understand, I don&#8217;t think that counts as a mark against Perl.</p>

<p>I also don&#8217;t think we should needlessly simplify things to cater to the amateur. In fact, I love the idea of writing code that I expect to only be read by programmers seasoned in that very language. When I write JS, I like to presume that the maintainer knows about hoisting, closures, prototypal inheritance, and truthy/falsyness. Pandering about trying to make your code avoid these inherent qualities is a waste of time.</p>

<p>Even with that opinion I still hugely value expression through language. I love method chains that flow like spoken sentences:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">render<span class="br0">&#40;</span><span class="st0">'this'</span><span class="br0">&#41;</span>.<span class="me1">thenRun</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>




<p>But at the same time I don&#8217;t like putting too much effort into making an API bend to this style.</p>

<p>It&#8217;s really tricky to pick a principle and stick to it. Some of us prefer hungarian notation. I say I hate it but I still use it quite often.</p>

<p>I think programming should have a barrier to understanding, and I think APIs should too. This sounds weird, even to me, but I think it makes sense nonetheless. Fundamentally, every API disguises complexity and, ideally, a very precise piece of functionality. Making the API dead-simple makes no sense if what it is disguising is actually quite complex and involved. An API or language should be crafted in such a way that by using it you&#8217;re not only learning how to use it but you&#8217;re learning how it works.</p>

<p>jQuery is a good example, because it neatly expresses the DOM. It doesn&#8217;t hide the DOM, believe it or not. You still need to append and prepend, bind event listeners and apply CSS classes. The great thing about jQuery is that it reduces the DOM down to it&#8217;s very essence, so that when you have gained an understanding of jQuery you have also gained an understanding of the core idea behind the DOM.</p>

<p>So, no, I guess APIs and languages shouldn&#8217;t be as simple as possible just for the sake of it. They should represent the functionality they seek to disguise.</p>

<p>I&#8217;m not happy with this conclusion though. I am sitting here thinking about that end-user-programmer-guy. I guess this holy API should seek to provide exactly what this guy wants. The trick is knowing what he wants. It would be lovely if we could create computers that just had one input device &#8212; a big green button, which, when pressed, made the computer do exactly the thing you want. We don&#8217;t have this (yet!), and our APIs can&#8217;t have this either. But maybe there&#8217;s a healthy compromise where we model the API based on how it&#8217;s going to be used, not how we want it to be used. We are meaningless in that our petty preferences make no difference. Our APIs must be predictive; modelled entirely on the potential use-cases presented by end-user-programmer-guy, not modelled on our preferences alone.</p>

<p>I still haven&#8217;t resolved this in my mind. It&#8217;s still hard to decide what to call some method that will only be used once in a blue moon. It&#8217;s not as easy as describing the method entirely in its name:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> namespaceContainingMethods <span class="sy0">=</span> <span class="br0">&#123;</span>
  methodThatTakesArgumentsAndJoinsWithSpecifiedString<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="co1">//...</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>




<p>I&#8217;ve had to use stuff like this before and it sucks. It sucks so much. It was made for idiots. That&#8217;s another thing: APIs should not offend. Don&#8217;t patronise me with your &#8220;ur so stupid&#8221; naming. Make me feel good about using your API.</p>

<p>It&#8217;s not easy. It&#8217;s just not.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/making-apis-is-hard/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Beware of passion voids</title>
		<link>http://james.padolsey.com/general/beware-of-passion-voids/</link>
		<comments>http://james.padolsey.com/general/beware-of-passion-voids/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 14:59:35 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1973</guid>
		<description><![CDATA[This is a warning to young budding web developers going into the field of web development. The business of web development is never really talked about. We talk about the technology a lot, but the business itself is left alone for fear of&#8230; what? I&#8230;]]></description>
			<content:encoded><![CDATA[<p>This is a warning to young budding web developers going into the field of web development. The business of web development is never really talked about. We talk about the technology a lot, but the business itself is left alone for fear of&#8230; what? I don&#8217;t know really.</p>

<p>The first thing that took me by surprise upon my entry, three years ago, into the &#8220;Digital Agency&#8221; world was the fact that some people that work with the web don&#8217;t use it very much. There are quantities of web developers that don&#8217;t have websites, don&#8217;t maintain personal projects, and don&#8217;t partake in the vibrant community. </p>

<p>This was a massive shock to my system because I, being naive and passionate, thought that everyone else in this industry would have at least a spark of a passion for this stuff or at least an interest which materialises in more than doing it, begrudgingly, from 9 to 5.</p>

<p>This isn&#8217;t a universal truth, of course, but what I&#8217;ve discovered is that those lacking in passion tend to gravitate towards either agency or <em>non-web</em> corporate roles. These individuals tend to know their niche&#8217;s technologies but only as well as they absolutely have to. They&#8217;re fine copying and pasting as long as it makes the boss or client happy. There are no gurus in the passion voids.</p>

<p>The entire process is ugly to begin with. Getting hired. If you can, you must make every effort to avoid dealing with recruitment agencies. I won&#8217;t cast any judgement on the validity of the recruitment industry as a whole, but I will say this: their motive is to fill the role. They rarely give a damn about passion, fulfilment or your desire to have a positive effect on the world while leading a good life. They couldn&#8217;t give a shit. They want the commission. They want to sell you to the client. You&#8217;re their whore.</p>

<p>If you want to float between vacuous advertising projects, where the sole objective is to maximise market share and profit for the end-client regardless of ethical inclinations, then you&#8217;ll probably be fine. You should stop reading and ring a recruiter now! If, on the other hand, you care, then you will want to take the time to find a better role, where the employer&#8217;s passions are in-line with yours.</p>

<p>I am not trying to generalise here. There are some, no doubt, awesome digital agencies that care passionately about the technologies they work with. This is why this must all be judged on a case-by-case basis.</p>

<p>Just beware of the passion voids. If you&#8217;ve an ounce of interest in what you do, you&#8217;ll want to steer well clear of them, lest your soul be forsaken to the clutches of vapid monotony.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/beware-of-passion-voids/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>The Absolute Silence</title>
		<link>http://james.padolsey.com/general/the-absolute-silence/</link>
		<comments>http://james.padolsey.com/general/the-absolute-silence/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 08:43:46 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1893</guid>
		<description><![CDATA[This isn&#8217;t for you or against you, whoever you are. This is for me, and for <a href="http://blogactionday.org/">Blog Action Day 2011</a>.

I hate to pester people in their happy bubbles of existence but sometimes it&#8217;s necessary to remind oneself how lucky one is to have access&#8230;]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t for you or against you, whoever you are. This is for me, and for <a href="http://blogactionday.org/">Blog Action Day 2011</a>.</p>

<p>I hate to pester people in their happy bubbles of existence but sometimes it&#8217;s necessary to remind oneself how lucky one is to have access to the most rudimentary of things: shelter, food and water. There is no doubt that we take these things for granted.</p>

<p>It&#8217;s easy to find scary statistics to put a point across, but often they lack accuracy or are taken out of context. Well, these aren&#8217;t such statistics &#8212; they&#8217;re from the UN&#8217;s World Food Programme, and they&#8217;re both accurate and shocking:</p>

<ul>
    <li>One out of four children &#8211; roughly 146 million &#8211; in developing countries is <strong>underweight</strong><br/>
        <em>(Source: <a target="_blank" href="http://www.unicef.org/sowc/">The State of the World&#8217;s Children</a>, UNICEF,&nbsp;2007)</em>
    </li>
    <li>Every <strong>day</strong>, 16,000 children die of starvation (most of them under five). This equates to 1 child every 5 seconds.<br/>
        <em>(Source: <a target="_blank" href="http://www.fao.org/docrep/008/a0200e/a0200e00.htm">Food Insecurity in the World</a>, FAO,&nbsp;2005)</em>
    </li>
</ul>

<p>These numbers are beyond comprehension, to a degree, because of their enormity. It&#8217;s difficult to fathom. But it&#8217;s happening, and you should <em>take it in</em>. This is the world you live in. Face it, accept it, and if, in these facts, you find the impetus to make a change, then great! Even a small change is a great change.</p>

<p>When one thinks of a child, in Western society, she has parents, and they love her, and they would die for her at an instant. They sacrifice years of freedom and financial security to bring her up in this world. This one child will receive so much love and devotion. To think of the absolute devastation this child&#8217;s death would bring an entire community is almost laughable in comparison to <strong><em>the absolute silence</em></strong> with which a child perishes in other parts of the world. It means nothing.</p>

<p>Don&#8217;t be a coward about it. It&#8217;s not too depressing to think about. If you can&#8217;t handle the reality of life and insist on living in a bubble of make-believe then fine, but know that the joy and pain that you&#8217;ll feel is probably nothing in comparison to both the suffering, ecstasy and bliss that can be felt if you leave the bubble.</p>

<p>Graham Nash said:</p>

<blockquote><p>
Life is not perfect, and it never will be, you just have to make the best of it and open your heart to what the world can show you. Sometimes it&#8217;s terrifying and sometimes it&#8217;s incredibly beautiful, and I&#8217;ll take both &#8212; thanks.
</p></blockquote>

<p>Don&#8217;t shy away from the world. It&#8217;s the real thing. Experience it. Love it. Improve it.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/the-absolute-silence/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Is negativity a problem?</title>
		<link>http://james.padolsey.com/javascript/is-negativity-a-problem/</link>
		<comments>http://james.padolsey.com/javascript/is-negativity-a-problem/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 23:15:18 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1883</guid>
		<description><![CDATA[I didn&#8217;t attend JSConf.eu, but I did catch the video of Chris Williams&#8217; speech, <a href="http://jsconf.eu/2011/an_end_to_negativity.html">An End To Negativity</a>.

At the risk of being such a bearer of negativity, I will admit to disagreeing with some of what was sold in his speech. I am not&#8230;]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t attend JSConf.eu, but I did catch the video of Chris Williams&#8217; speech, <a href="http://jsconf.eu/2011/an_end_to_negativity.html">An End To Negativity</a>.</p>

<p>At the risk of being such a bearer of negativity, I will admit to disagreeing with some of what was sold in his speech. I am not &#8220;trolling&#8221;. I am offering my opinion, which also couples as a neutral critique.</p>

<p>I don&#8217;t feel that negativity is the problem. I think the real problem is deriving self-worth from validating or invalidating remarks from our peers. But at the same time I recognise this as an unchanging quality of human interaction.</p>

<p>If you say my code is cool, then I feel great. And if you say it&#8217;s not, then I feel upset. Whose to say which one of these reactions is the right one? Are we to dispel negativity, full stop, or are we to dispel the deriving of self-worth from such remarks? Is the positive to go as well?</p>

<p>Isn&#8217;t feeling pride of one&#8217;s own work merely an intellectual dishonesty when at the same time one will condemn both the occurrence of negativity and the feelings it rouses?</p>

<p>And let&#8217;s not forget, negativity is undeniably subjective in definition. What&#8217;s negative to you <em>isn&#8217;t</em> universally negative.</p>

<p>Maybe we should care less about the subjective polarity of the remark (good, bad, nice, mean). We should instead care about the remark&#8217;s content, i.e. its intellectual validity in the scene or thread in which it occurs.</p>

<p>Chris references an internet community that craves self-worth and thus derives it from online interactions (commenting, feedback, critique, &#8220;trolling&#8221;). This is an occurrence across the web, and isn&#8217;t something that plagues any particular sub-culture or sub-community uniquely.</p>

<p>We are only human. We are socialised animals, who have, through this socialisation, acquired a supposed weakness that makes us rely on others for validation and equally, condemnation. I know it&#8217;s wrong to steal my coworker&#8217;s food because I have been socialised to form that empathetic response that tells my mind: &#8220;No, that&#8217;s wrong.&#8221; It is via public condemnation and equally, public praise, that we acquire our values, preferences, and behavioural characteristics. Why shy away from this reality?</p>

<p>Negativity for the sake of itself is probably pointless, and I&#8217;m sure a great deal of what Chris refers to is just that &#8212; negativity without substance. But negativity (<em>remember &#8212; it&#8217;s subjectively defined!</em>) for the sake of intellectual or technical critique should be no less welcome than positivity.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/javascript/is-negativity-a-problem/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>GiveCampUK 2011</title>
		<link>http://james.padolsey.com/general/givecampuk-2011/</link>
		<comments>http://james.padolsey.com/general/givecampuk-2011/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 21:37:58 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[My Life]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1877</guid>
		<description><![CDATA[Just a quick note to say that, if everything goes to plan, I&#8217;ll be attending GiveCampUK at UCL&#8217;s Bloomsbury Campus in London on the 21st to the 23rd of October.

From <a href="http://givecamp.org.uk">GiveCamp.org.uk</a>:


GiveCamp was founded by Microsoft Developer Evangelist, Chris Koenig, in Dallas, Texas in&#8230;]]></description>
			<content:encoded><![CDATA[<p>Just a quick note to say that, if everything goes to plan, I&#8217;ll be attending GiveCampUK at UCL&#8217;s Bloomsbury Campus in London on the 21st to the 23rd of October.</p>

<p>From <a href="http://givecamp.org.uk">GiveCamp.org.uk</a>:</p>

<blockquote>
<p>GiveCamp was founded by Microsoft Developer Evangelist, Chris Koenig, in Dallas, Texas in 2007. His vision was to bring together passionate developers and local charitable organisations for an entire weekend, and see what would happen.</p>
<p>What happened was more than could have been expected. Over $1,000,000 worth of developer services were donated to more than 150 charities and non-profits over the next 4 years. Since then GiveCamps have popped up all over the USA.</p>
<p>And now, GiveCamp is coming to the UK.</p>
</blockquote>

<p>The UK&#8217;s first GiveCamp is set to be offering <a href="http://www.givecamp.org.uk/blog/givecamp-uk-to-offer-%C2%A3120k-in-services-to-uk-charities-non-profits">around £120,000</a> in developer services.</p>

<p>I have never done something like this before so it will be a valuable experience. At the very least, it will provide a bunch of charities the means to do their work more effectively.  These charities don&#8217;t have the budgets to afford the development of the kind of bespoke IT systems many for-profit entities take for granted.</p>

<p>Two days seems short, but I&#8217;m sure a lot will get done.</p>

<p><strong>FYI:</strong> GiveCampUK is still looking for a couple more companies to sponsor the event. Let them know if you&#8217;re interested.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/givecampuk-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Kindle: review</title>
		<link>http://james.padolsey.com/general/amazon-kindle-review/</link>
		<comments>http://james.padolsey.com/general/amazon-kindle-review/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 15:48:02 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[My Life]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1823</guid>
		<description><![CDATA[

I purchased an <a href="amazon.com/kindle">Amazon Kindle</a> just nine days ago and have already completed two novels. For me, this is a notable achievement. I hate to admit it but I, until very recently, was one of those people that puzzled over others&#8217; passion for fiction. I read&#8230;]]></description>
			<content:encoded><![CDATA[<img style="border:none;" class="main-img" src="http://james.padolsey.com/wp-content/uploads/kindle1.jpg" />

<p>I purchased an <a href="amazon.com/kindle">Amazon Kindle</a> just nine days ago and have already completed two novels. For me, this is a notable achievement. I hate to admit it but I, until very recently, was one of those people that puzzled over others&#8217; passion for fiction. I read a great deal of non-fiction online, but books of all kinds have never taken me in like they have others. I won&#8217;t make excuses as many do, saying that school ruined my passion for books. Endless analysis of Shakespearean prose didn&#8217;t faze me as much as others, but I simply never caught the reading bug.</p>

<p>I can remember reading only a handful of fiction books in my teenage years, few of them worth a mention.</p>

<p>So, I hope I&#8217;ve made it clear how much of a feat this really is! A success, for me, and for Amazon no doubt. The Kindle may have been just the low barrier I needed to get started on a passion that already burnt within.</p>

<p>The Kindle itself is lightweight, but not so thin that it feels delicate. Some things that may surprise you about the latest Kindle:</p>

<ul>
    <li>It has a microsoft-sam-esque text-to-speech function which does become invaluable, especially when trying to figure out how the hell &#8220;recalcitrant&#8221; is pronounced!</li>
    <li>It can read any PDF. This morning I snapped a quick screenshot of Google Maps, saved it to a PDF, transferred it across, and voilà! I now have a portable map.</li>
    <li>Since it&#8217;s 3G enabled, and has an experimental browser installed (webkit), I can browse the internet in most of its glory. It&#8217;s grayscale and somewhat slow but who cares! This is meant to be an e-book reader after all; anything in addition to the basic set of e-book-reader features is a huge plus!</li>
    <li>It&#8217;s possible to <a href="http://www.howtogeek.com/howto/37424/jailbreak-your-kindle-for-dead-simple-screensaver-customization/">jailbreak it and install your own screensavers</a>, which are left on the screen when the device powers-off.</li>
    <li>It has a built in dictionary. This sounds like nothing impressive but when I&#8217;m puzzling over a word, mid-sentence, the last thing I will bother doing is digging out an actual dictionary.</li>
    <li>There are no pages to turn! Less fumbling with pages as you lie on your side and more time immersed in the world your book creates for you.</li>
    <li>The e-ink screen is as easy to read as an actual book (No glare, great contrast, etc.).</li>
    <li>You can play minesweeper!</li>
</ul>

<p>Like everything that dares to inflict change, the Amazon Kindle is something that shouldn&#8217;t really be knocked until it&#8217;s tried. Don&#8217;t disregard e-books as a passing fad, and certainly don&#8217;t disregard the Kindle. Its awesome simplicity makes it disappear in your hands, just as it should: you&#8217;re not <em>interfacing with a device</em>; you&#8217;re <em>reading a book</em>.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/amazon-kindle-review/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>JavaScript interview questions</title>
		<link>http://james.padolsey.com/javascript/javascript-interview-questions/</link>
		<comments>http://james.padolsey.com/javascript/javascript-interview-questions/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 17:32:23 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[Job]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1787</guid>
		<description><![CDATA[The questions below were asked in a preliminary check before the actual interview. The role itself was for a &#8220;JavaScript Engineer&#8221;. This particular set of questions is from a job I applied to over a year ago. I&#8217;ve chosen to share them here because I&#8230;]]></description>
			<content:encoded><![CDATA[<p>The questions below were asked in a preliminary check before the actual interview. The role itself was for a &#8220;JavaScript Engineer&#8221;. This particular set of questions is from a job I applied to over a year ago. I&#8217;ve chosen to share them here because I think readers of this blog would benefit from knowing what kind of things are expected if you&#8217;re applying to a JavaScript-centric role.</p>

<ul>
	<li><p>What is the relationship between ECMAScript, Javascript and Jscript?</p></li>
	<li><p>What core types are available in Javascript?</p></li>
	<li>
		<p>What do the following statements return and why?</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">parseInt<span class="br0">&#40;</span><span class="st0">&quot;07&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
parseInt<span class="br0">&#40;</span><span class="st0">&quot;09&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
parseInt<span class="br0">&#40;</span><span class="st0">&quot;010&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="st0">&quot;1&quot;</span> <span class="sy0">+</span> <span class="nu0">2</span> <span class="sy0">+</span> <span class="nu0">3</span><span class="sy0">;</span>
<span class="nu0">3</span> <span class="sy0">+</span> <span class="nu0">2</span> <span class="sy0">+</span> <span class="st0">&quot;1&quot;</span><span class="sy0">;</span>
&nbsp;
<span class="st0">&quot;1&quot;</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="sy0">;</span>
<span class="st0">&quot;1&quot;</span> <span class="sy0">===</span> <span class="nu0">1</span><span class="sy0">;</span>
<span class="st0">&quot;1&quot;</span> <span class="sy0">==</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="st0">&quot;1&quot;</span> <span class="sy0">===</span> <span class="kw2">false</span><span class="sy0">;</span></pre></div></div>



	</li>
	<li>
 		<p>Alert the contents of the bar variable using the foo variable</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> foo <span class="sy0">=</span> <span class="st0">&quot;bar&quot;</span><span class="sy0">;</span>
<span class="kw2">var</span> bar <span class="sy0">=</span> <span class="st0">&quot;foobar&quot;</span><span class="sy0">;</span></pre></div></div>



	</li>
	<li><p>Alert the string &#8220;foobar&#8221; after a 10 second delay.</p></li>
	<li><p>Implement Array.prototype.filter for IE.</p></li>
	<li><p>Create a Person class with public/private/privileged members and methods.</p></li>
	<li><p>Why does the statement 5 * 1.015 not return 5.075?</p></li>
	<li><p>Replace the string <code>"The quick brown fox jumps over the lazy dog"</code> with the string <code>"The1 quick2 brown3 fox4 jumps5 over6 the7 lazy8 dog9"</code>.</p></li>
	<li><p>List several ways that you can communicate asynchronously with the server.</p></li>
	<li><p>How would you embed this URL in a link inside an XHTML document?</p>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.google.com/search?hl=en&amp;q=%22xhtml%22</pre></div></div>



	</li>
	<li><p>How would you serve a StyleSheet only to IE users older than IE8?</p></li>
	<li><p>Write a jQuery plugin to display a list of images in a Lightbox.</p></li>
</ul>

<p>What do you think of these questions? Fair?</p>

<h3>Related:</h3>

<ul>
  <li>&#8220;<a href="http://stackoverflow.com/questions/1069857/advanced-javascript-interview-questions">Advanced JavaScript Interview Questions</a>&#8220;</li>
  <li>&#8220;<a href="http://vikasrao.wordpress.com/2010/02/07/common-javascript-interview-questions/">Commonly asked JavaScript interview questions</a>&#8220;</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/javascript/javascript-interview-questions/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>Isara&#8217;s new management system</title>
		<link>http://james.padolsey.com/general/isaras-new-management-system/</link>
		<comments>http://james.padolsey.com/general/isaras-new-management-system/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 13:46:13 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[isara]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1731</guid>
		<description><![CDATA[The <a href="http://www.isara.org">Isara Foundation</a> runs a learning centre in Nong Khai, Thailand. It&#8217;s known as the <abbr title="Isara Learning Center">ILC</abbr>. Here volunteers from around the world teach English, IT and Art to local people. There are classes for both children and adults, and within those bounds students are separated according&#8230;]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.isara.org">Isara Foundation</a> runs a learning centre in Nong Khai, Thailand. It&#8217;s known as the <abbr title="Isara Learning Center">ILC</abbr>. Here volunteers from around the world teach English, IT and Art to local people. There are classes for both children and adults, and within those bounds students are separated according to capability, which is judged using a reading system (e.g. <em>phonics -> fables -> free-reading</em>).</p>

<h3>The current system</h3>

<p>I arrived at the ILC at the beginning of December. I started off just watching and admiring the work of other volunteers but eventually had to take a class on for myself. The then current system of record-keeping and proficiency-recording was paper-based. There were folders for each class and within each folder, booklets for each student.</p>

<p>Each booklet recorded a single student&#8217;s reading level, their strengths, their weaknesses and any concerns previous teachers had. These booklets would inevitably become full of volunteers&#8217; notes. So many volunteers&#8230; so many notes.</p>

<p>Many of the scribblings were not dated and not particularly tidy. Lesson plans were recorded on paper too, but only as a single bullet point per lesson.</p>

<p>Don&#8217;t let me paint a bad picture though. The work being done here is and was always fantastic! The typical volunteer would plan a lesson the day before and record the plan on their own stationary, whether that be a notebook or a scrap of paper. Despite my reservations about it being paper-based the lesson&#8217;s still got planned and the students still picked up valuable language skills.</p>

<p>The problem, as I saw it, was merely one of efficiency. The case for a computer-based alternative was, I felt, rock-solid. I begun.</p>

<span id="more-1731"></span>

<h3>The new system</h3>

<p>So, for the last few weeks I&#8217;ve been working on a new web application for the Isara Foundation which holds student records, lesson plans, teacher profiles and makes all this data accessible through an intuitive interface. Current volunteers can leave their lesson plans, student notes and class notes on a centralised system. New volunteers come along and don&#8217;t need to worry about digging through masses of paper to get the 101 on their assigned class. They can see all the data they could possibly want before even stepping into the classroom:</p>

<p class="video">
    <a href="http://james.padolsey.com/wp-content/uploads/isara_tms_s1.png"><img width="600" src="http://james.padolsey.com/wp-content/uploads/isara_tms_s1.png" alt="A typical student profile" /></a>
</p>

<p>The new system, which is already being used (I guess it&#8217;s <em>beta</em>), has the following features:</p>

<ul>
    <li>Stores basic data about students. Their names, ages, addresses, etc.</li>
    <li>Stores photos for all students. Great for learning your students&#8217; names!</li>
    <li>Stores teacher profiles and allows teachers to be assigned to classes and vice-versa.</li>
    <li>Allows teachers to leave notes on student profiles (individual strengths/weaknesses/comments) and class profiles (comments about class in general).</li>
    <li>Allows teachers to enter their lesson plans, and look over previous lesson plans.</li>
    <li>All students&#8217; skill levels recorded, which will eventually enable us to draw some interesting statistics about teaching techniques and skill acquisition.</li>
    <li>Makes it possible to receive notifications about student birthdays! (my favourite feature)</li>
</ul>

<p>In essence, it is a primitive system. Nothing too fancy is going on, but I definitely enjoyed building it!</p>

<p>As some of you will know, I used <a href="http://codeigniter.com">CodeIgniter</a> for this project, simply for its insistence on MVC and the fact that I was familiar with its API.</p>

<p>I don&#8217;t regret my decision to use CI. It has worked perfectly.</p>

<h3>Implementation notes</h3>

<p>The database schema seemed simple at first, but then came normalisation &#8212; and with that, apparent complexity. <a href="http://bit.ly/f1QiCK"><strong>Here&#8217;s the schema</strong></a>! (<em>not including audit tables</em>)</p>

<p>As one is supposed to, I created separate models for every table, except the auditing ones. I created <code>MY_Model</code> which took care of the auditing and added a few useful methods. All of my actual models inherited from this.</p>

<p>The models were originally used for creating, reading, updating and deleting, but I eventually moved over to a structure which delegated to regular models for creating, updating and deleting, but utilised a specialised query model for the reading. I did this because I originally found that I was duplicating a lot of code within models, and decided to abstract the whole querying business to its own model. This has worked remarkably well and has facilitated a much simpler querying syntax and interface.</p>

<p>Within <code>Query_model</code> I can specify what needs to be selected and from where within an associative array:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span class="co1">// ...</span>
<span class="st_h">'classes'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
    <span class="st_h">'select'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;
        classes.*,
        class_slots.name as slot_name,
        classes.name as class_name,
        class_slots.days as class_days,
        class_slots.time as class_time,
        rooms.id as room_id,
        rooms.name as room_name,
        rooms.photo as room_photo,
        COUNT(DISTINCT students.id) as student_count,
        GROUP_CONCAT(DISTINCT CONVERT(teacher_assignments.teacher_id, CHAR(8)) SEPARATOR ',') AS teacher_ids,
        GROUP_CONCAT(DISTINCT teachers.name SEPARATOR ',') AS teacher_names		
    &quot;</span><span class="sy0">,</span>
    <span class="st_h">'from'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;
        classes
            LEFT JOIN teacher_assignments
                ON classes.id = teacher_assignments.class_id
                AND teacher_assignments.active = TRUE
            LEFT JOIN class_slots
                ON class_slots.id = classes.slot_id
            LEFT JOIN teachers
                ON teachers.id = teacher_assignments.teacher_id
            LEFT JOIN student_assignments
                ON student_assignments.class_id = classes.id
            LEFT JOIN students
                ON students.id = student_assignments.student_id
            LEFT JOIN rooms
                ON classes.assigned_room_id = rooms.id
    &quot;</span><span class="sy0">,</span> 
    <span class="st_h">'where'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;&quot;</span><span class="sy0">,</span>
    <span class="st_h">'groupBy'</span> <span class="sy0">=&gt;</span> <span class="st_h">'classes.id'</span>
<span class="br0">&#41;</span><span class="sy0">,</span>
<span class="co1">// ...</span></pre></div></div>




<p>And of course, I store the the fields that one would want to query <em>by</em> in a separate array:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span class="co1">// ...</span>
<span class="st_h">'classes'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
    <span class="st_h">'teacher_id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;teachers.id <span class="es6">%c</span> AND teacher_assignments.active = TRUE&quot;</span><span class="sy0">,</span>
    <span class="st_h">'student_id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;students.id <span class="es6">%c</span> AND student_assignments.active = TRUE&quot;</span><span class="sy0">,</span>
    <span class="st_h">'id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;classes.id <span class="es6">%c</span>&quot;</span><span class="sy0">,</span>
    <span class="st_h">'room_id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;rooms.id <span class="es6">%c</span>&quot;</span><span class="sy0">,</span>
    <span class="st_h">'has_note_id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;notes.id <span class="es6">%c</span>&quot;</span><span class="sy0">,</span>
    <span class="st_h">'slot_id'</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;class_slots.id <span class="es6">%c</span>&quot;</span>
<span class="br0">&#41;</span><span class="sy0">,</span>
<span class="co1">// ...</span></pre></div></div>




<p>I love this kind of low-level control!</p>

<p>The <code>%c</code> token you see above is replaced with an operator and the value to be searched. Operators are stored like so:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span class="kw2">var</span> <span class="re0">$operators</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span>
    <span class="st_h">'gt'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&gt;&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'lt'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&lt;&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'gte'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&gt;=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'lte'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&lt;=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'e'</span> <span class="sy0">=&gt;</span> <span class="st_h">'=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'ne'</span> <span class="sy0">=&gt;</span> <span class="st_h">'!=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'c'</span> <span class="sy0">=&gt;</span> <span class="st_h">'LIKE &quot;%%v%&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'&gt;'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&gt;&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'&lt;'</span> <span class="sy0">=&gt;</span> <span class="st_h">'&lt;&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'&gt;='</span> <span class="sy0">=&gt;</span> <span class="st_h">'&gt;=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'&lt;='</span> <span class="sy0">=&gt;</span> <span class="st_h">'&lt;=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'='</span> <span class="sy0">=&gt;</span> <span class="st_h">'=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'!='</span> <span class="sy0">=&gt;</span> <span class="st_h">'!=&quot;%v&quot;'</span><span class="sy0">,</span>
    <span class="st_h">'contains'</span> <span class="sy0">=&gt;</span> <span class="st_h">'LIKE &quot;%%v%&quot;'</span><span class="sy0">,</span>
<span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>




<p>The first bulk of operators you see there (<em>gt</em>, <em>lte</em> etc.) are utilised within query strings. E.g.</p>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">/query?ret=students&amp;k=age&amp;c=gte&amp;v=16
(get all students with an age &gt;= 16)</pre></div></div>




<p>Don&#8217;t worry though! This seemingly low-level access isn&#8217;t actually that revealing. In order for a query to execute, the field that you want to query by must be specified, in the query-model, as must the operator. Values are escaped also.</p>

<p>I want to share more about the implementation but it turns out everything else is quite boring and basic. The query-model thing was really the only point worth nothing. That said, I am trying out an action-managing idea which allows delayed database actions such as deletion or flagging. Each action has a UUID and can be activated via a URL (this would also work well for email-activation links). Anyway, maybe next time&#8230;</p>

<h3>It works!</h3>

<p>We&#8217;ve been entering data and testing it for about two weeks and today saw a mass adoption by all volunteers at Isara. Hopefully this system will last, at least until a <em>more efficient</em> alternative comes along.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/isaras-new-management-system/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Isara + CodeIgniter = ?</title>
		<link>http://james.padolsey.com/general/isara-codeigniter/</link>
		<comments>http://james.padolsey.com/general/isara-codeigniter/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 18:14:20 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[My Life]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[isara]]></category>
		<category><![CDATA[teaching]]></category>
		<category><![CDATA[volunteering]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=1715</guid>
		<description><![CDATA[I&#8217;ve been taking a bit of a holiday away from the web-scene recently. It isn&#8217;t something I regret though. I&#8217;ve done things that have given me new perspectives and insights into the world. I am still &#8220;away&#8221;, and if truth be told, I cannot envisage&#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been taking a bit of a holiday away from the web-scene recently. It isn&#8217;t something I regret though. I&#8217;ve done things that have given me new perspectives and insights into the world. I am still &#8220;away&#8221;, and if truth be told, I cannot envisage myself wanting a regular job ever again, although I imagine in some unfortunate way that I will be driven to such lengths by financial limitations.</p>

<p>Anyway, as should be well known by anyone who frequents this blog, I am currently volunteering in Thailand. Specifically, I am working with <a href="http://www.isara.org">Isara</a>, an awesome non-profit foundation based in Nong Khai.</p>

<p>Let me try and shatter what you think you know about Thailand and put across what I know thus far in a paragraph. There are no blanket statements I can make such as &#8220;the food is delicious&#8221; or &#8220;the people are kind, generous and beautiful&#8221; because such things would only be as true as if said of any other country in the world.</p>

<span id="more-1715"></span>

<p>Isaan is Thailand&#8217;s poorest province &#8212; this is where Nong Khai is situated. The average farmer makes around 140 Baht each day, which is about £3 ($5), and considering everything, people from this area seem contented with their lives. <em>Farang</em>s (foreigners, specifically white ones) are almost revered for just being white. The locals find novelty in our white skin, our coloured hair and eyes, our height and our language. Children here are demotivated by the government education system which seems to attract dispassionate teachers because of it being one of few jobs with social security benefits. The children, albeit demotivated, are enthusiastic when inspired and willing to learn when shown what they can become. There are struggles. Uneducated people pollute and abuse the environment and each other. Health, safety and true education come second to saving face and appearing calm and subdued. The people here cover every spec of the spectrum &#8212; there are all kinds. There are many <em>farang</em> here too&#8230; some older folk, some younger. Some looking for their Thai brides, some travelling, and some staying to help. Life here is cheap for a westerner. Life here is hard for a local. Learning English is a way out, an opportunity to become something more, an opportunity to take the world by the horns and do what you will!</p>

<p>I&#8217;m currently working on developing a computer-based system for Isara&#8217;s learning center, where local people are invited to learn English for free three times a week. Currently all student records are kept in a paper-based system &#8212; this includes details about their progress in class. Moving it to a computer-based system will waste less paper, provide a centralised store of student details and progress, enable querying of the data to determine which students are behind and what topics have been taught, and it will provide a wealth of query-able, filter-able, process-able data that could save many man-hours of paper-fiddling and printing!</p>

<p>It&#8217;s still a plan in progress, but the DB schema looks <a href="http://bit.ly/gdL3TS">like this</a> thus far (all &#8216;_log&#8217; tables are for auditing). I am going to be using <a href="http://codeigniter.com/">CodeIgniter</a>, just because I remember how ridiculously simple it made a previous project. If you haven&#8217;t, you should try it out!</p>

<p>It insists upon separating your concerns into the traditional M-V-C pattern (Model, View, Controller) and has a bunch of auto-load-able helper classes and libraries. It&#8217;s very widely used, so finding help online is rarely a problem (Google is your friend).</p>

<p>Got any tips or stories to share about CI? Please share.</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/general/isara-codeigniter/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

