<?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>Armswiper.co.uk &#187; Programming</title>
	<atom:link href="http://www.armswiper.co.uk/blog/view/tag/Programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.armswiper.co.uk</link>
	<description>Developer, Rower, Funny Man</description>
	<lastBuildDate>Thu, 07 Apr 2011 19:18:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Uh-Oh. Someone needs to learn some programming principles</title>
		<link>http://www.armswiper.co.uk/blog/view/570</link>
		<comments>http://www.armswiper.co.uk/blog/view/570#comments</comments>
		<pubDate>Mon, 05 Oct 2009 08:01:59 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[recursion]]></category>

		<guid isPermaLink="false">http://www.armswiper.co.uk/?p=570</guid>
		<description><![CDATA[Starting with recursion&#8230;. coding is fine,but i did not understood how it works &#8211; ProgressTalk.com.]]></description>
			<content:encoded><![CDATA[<p>Starting with recursion&#8230;.</p>
<p><a href="http://www.progresstalk.com/showthread.php?t=116184">coding is fine,but i did not understood how it works &#8211; ProgressTalk.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/570/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLite Concurrency</title>
		<link>http://www.armswiper.co.uk/blog/view/474</link>
		<comments>http://www.armswiper.co.uk/blog/view/474#comments</comments>
		<pubDate>Sat, 11 Apr 2009 19:54:05 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://www.armswiper.co.uk/?p=474</guid>
		<description><![CDATA[Recently, I wrote an application that used a SQLite database and wrote data into a common database rapidly, over several connections. I initially wrote the application to use one thread, and only one database connection, but as I improved the software, I converted it to use multiple threads with one connection per thread. I quickly [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I wrote an application that used a SQLite database and wrote data into a common database rapidly, over several connections.</p>
<p>I initially wrote the application to use one thread, and only one database connection, but as I improved the software, I converted it to use multiple threads with one connection per thread.</p>
<p>I quickly ran into the problem though that the database quickly became locked &#8211; one thread would block out the other and would not return the lock. It wasn&#8217;t consistent though as to which thread would be blocked &#8211; it was usually the second thread, but not consistently.</p>
<p>Having read a <a href="http://itsystementwicklung.de/pipermail/list-pysqlite/2009-April/000380.html">post from the pysqlite mailing list</a>, I think it explains the problem a little bit more accurately, and kind of exaplins a solution. Although, it does seem a little bit drastic (essentially, reconnect everytime you need to run a concurrent query).</p>
<p>I&#8217;m now very interested to find out whether this will cure my problem. It does seem a bit drastic, and quite IO intensive, but it&#8217;s worth a shot!</p>
<p>I&#8217;ll let you know my mileage&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/474/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant Building</title>
		<link>http://www.armswiper.co.uk/blog/view/313</link>
		<comments>http://www.armswiper.co.uk/blog/view/313#comments</comments>
		<pubDate>Thu, 06 Jul 2006 21:53:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I think this post by Stefan Bodewig kind of sum&#8217;s up what I&#8217;m thinking about the Ant build utility. My company started using Ant about a year ago. We use it to compile Progress 4GL code, as well as Progress Webspeed files by using the PCT extension. When I first saw it, I didn&#8217;t like [...]]]></description>
			<content:encoded><![CDATA[<p>I think <a href="http://stefan.samaflost.de/blog/en/Apache/Ant/would_ant_be_different_without_xml.html">this post</a> by Stefan Bodewig kind of sum&#8217;s up what I&#8217;m thinking about the <a href="http://ant.apache.org/">Ant build utility</a>.</p>
<p>My company started using Ant about a year ago. We use it to compile Progress 4GL code, as well as Progress Webspeed files by using the <a href="http://pct.sourceforge.net/">PCT extension</a>.</p>
<p>When I first saw it, I didn&#8217;t like it. I decided that using XML as a form of programming language did not make sense. I have no problem with using XML to describe build rules; the problem I have is related to the way that you can specify &#8220;build target a, followed by target b&#8221;.</p>
<p>But having recently gone through the process of installing it and editting a build XML file, I have to say I&#8217;m very impressed! I can overlook my distaste for &#8220;programming with XML&#8221;, because the rest flows very well indeed. Plus, I can understand it much more that I can makefiles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun with VMWare, New UML Tool and IPv6</title>
		<link>http://www.armswiper.co.uk/blog/view/311</link>
		<comments>http://www.armswiper.co.uk/blog/view/311#comments</comments>
		<pubDate>Mon, 03 Jul 2006 12:00:41 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[On Friday, I had the day off, so I decided to play with VMWare Server on a new PC that I had inherited. I&#8217;m so impressed so far, for a free product, it does so much. I&#8217;d played with VMWare Player at home before, and within the last year at work we&#8217;ve gone VMWare crazy [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday, I had the day off, so I decided to play with VMWare Server on  a new PC that I had inherited. I&#8217;m so impressed so far, for a free  product, it does so much.</p>
<p>I&#8217;d played with VMWare Player at home before, and within the last year  at work we&#8217;ve gone VMWare crazy and now host an awful lot of our servers  in VMWare images, so I&#8217;m well used to their products by now.</p>
<p>I&#8217;m impressed by VMWare server though. It does so much more than VMWare  Player. Even allowing somebody to install the VMWare-Tools into an image  makes the &#8220;upgrade&#8221; a must.</p>
<p>I spent Friday building some images for a project I&#8217;m about to start  work on, so that I can test it on different variants of Linux and  FreeBSD, as well as on the Windows machine I have. Didn&#8217;t hit a single  problem with the images, and it even runs Haiku incredibly well (that&#8217;s     a one up on BeOS which doesn&#8217;t work in a VM at all).</p>
<p>Over the rest of the weekend, I&#8217;ve also discovered an excellent UML  editor for Windows, called StarUML (<a  href="http://www.staruml.com">http://www.staruml.com</a>), which was a  professionally produced product, but has now been made Open Source and  Free (as in beer, I think).</p>
<p>I also did a little research on IPv6 which proved very helpful. I knew a  little about it from a 5 minute aside in a university lecture course,  but from what I&#8217;ve learnt over the weekend, a lot of thought has gone  into the mechanism. The new style of development interface makes a lot  more sense, seems very compatible with IPv4 and means that future  version of the protocol will require fewer implementation changes! (Lets  hear it for commons sense!)</p>
<p>So, put all those points together, and you can pretty much tell that I&#8217;m  writing some kind of server, but that&#8217;s all I&#8217;m going to say!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/311/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Crash Course in Character Encodings</title>
		<link>http://www.armswiper.co.uk/blog/view/278</link>
		<comments>http://www.armswiper.co.uk/blog/view/278#comments</comments>
		<pubDate>Wed, 01 Mar 2006 12:25:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This article, &#8220;A Crash Course in Character Encodings&#8220;, has certainly cleared up a lot of issues that I didn&#8217;t understand about Unicode character encodings! I must admit it was the one area of software engineering that I was very grey about! Although the article is written for a Python audience, it still makes sense to [...]]]></description>
			<content:encoded><![CDATA[<p>This article, &#8220;<a href="http://www.pyzine.com/Issue008/Section_Articles/article_Encodings.html">A  Crash Course in Character Encodings</a>&#8220;, has certainly cleared up a lot  of issues that I didn&#8217;t understand about Unicode character encodings!</p>
<p>I must admit it was the one area of software engineering that I was  <em><strong>very</strong></em> grey about! Although the article is  written for a Python audience, it still makes sense to me (although I  looked a Python, I&#8217;m not a Python Developer!), and the principles are  easily transferable.</p>
<p>If you need instruction in this area, read the article &#8211; it makes a lot  of sense out of a confusing area!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/278/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interesting Article</title>
		<link>http://www.armswiper.co.uk/blog/view/276</link>
		<comments>http://www.armswiper.co.uk/blog/view/276#comments</comments>
		<pubDate>Thu, 23 Feb 2006 09:34:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;ve stumbled upon an interesting article this morning called &#8220;I hated php back when it was cool&#8220;, which kind of vocalises some of the gripes I recently developed with PHP. Namely, the language has grown exponentially, but without a structure to tie the language together effectively. I just love the description quoted in the article:Aristotle [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve stumbled upon an interesting article this morning called &#8220;<a href="http://www.minds.may.ie/~dez/serendipity/index.php?/archives/51-I-hated-php-back-when-it-was-cool.html">I  hated php back when it was cool</a>&#8220;, which kind of vocalises some of  the gripes I recently developed with PHP.</p>
<p>Namely, the language has grown exponentially, but without a structure to  tie the language together effectively. I just love the description  quoted in the article:<cite>Aristotle Pagaltzis makes an interesting  point when he says how PHP suffers from a lack of initial design. &#8230;  Basically PHP seems to have started out as a pet project, and had its  features battered on with a staple gun, rather than included in the  design.</cite>. Everything is done with a series of functions, most of  which have different patterns of behaviour or different parameters  depending on what version of PHP your running. This makes coding  effective sites an absolute nightmare!</p>
<p>My other chief gripe is classes. Despite the recent changes to the whole  class handling system in PHP, it&#8217;s still rubbish, and most of the time,  I can&#8217;t use the improvements that PHP 5 brings because no bugger  supports it!</p>
<p>To me, when the PHP people get to writing version 6, they need to stop,  and quite literally <em>start again</em>. I really mean that &#8211; it  doesn&#8217;t matter if the &#8220;newer&#8221; PHP code is not backwards compatible &#8211; it  isn&#8217;t very BC at the moment, and so they should take more time, consider  their direction, and plan ahead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/276/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adaptive Firewalls</title>
		<link>http://www.armswiper.co.uk/blog/view/273</link>
		<comments>http://www.armswiper.co.uk/blog/view/273#comments</comments>
		<pubDate>Thu, 02 Feb 2006 16:25:16 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;m thinking of building an adaptive firewall on my Linux router at home. I&#8217;ve noticed that people are scanning the ports on the computer, and running HTTP requests to see if they can trip several known security flaws (e.g. in AwStats). I did a little reading up on how to build an IPTables based adaptive [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m thinking of building an adaptive firewall on my Linux router at home.</p>
<p>I&#8217;ve noticed that people are scanning the ports on the computer, and  running HTTP requests to see if they can trip several known security  flaws (e.g. in AwStats).</p>
<p>I did a little reading up on how to build an IPTables based adaptive  firewall, and I&#8217;m beginning to concoct some ideas in my brain.</p>
<p>Basically, what I want to do, is constantly scan the requests that are  made to Apache, and maybe some other server apps, and build some rules  to pick out naughty behaviour. Once I&#8217;ve done that, I can get the IP  address of the offender, and build a list of banned IP addresses. I&#8217;ll  only want to &#8220;ban&#8221; (i.e. block at the firewall) those IPs for a set  amount of time (e.g. 24 hours), but the response time of the firewall  must be quick in order to catch these people in the act, and so I must  rebuild my IPTables rules in reasonable time. After the 24 hours is up,  I then need to clear any expired IP addresses down again whilst still  keeping blocked IPs and my other firewall rules in place.</p>
<p>I&#8217;m therefore thinking that producing a series of scripts based around  Cron is not suitable &#8211; you can&#8217;t schedule it to work more that once  every minute. It could mean that I need to produce some server program  (either using a UDP socket, or UNIX-type pipe) to receive IP addresses  as soon as possible, and to store the data for 24 hours.</p>
<p>Anyone got any good suggestions?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/273/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here&#8217;s A Question</title>
		<link>http://www.armswiper.co.uk/blog/view/271</link>
		<comments>http://www.armswiper.co.uk/blog/view/271#comments</comments>
		<pubDate>Tue, 17 Jan 2006 16:54:55 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Are all software bugs repeatable? As in, if you discover a bug in a piece of software, is there any type of bug that could not be repeated? My answer is &#8220;Yes, all bugs are repeatable&#8221;. Bugs depend on circumstances, so as long as you can repeat the circumstances, then you can repeat the bug. [...]]]></description>
			<content:encoded><![CDATA[<p>Are all software bugs repeatable? As in, if you discover a bug in a  piece of software, is there any type of bug that could not be repeated?</p>
<p>My answer is &#8220;Yes, all bugs are repeatable&#8221;. Bugs depend on  circumstances, so as long as you can repeat the circumstances, then you  can repeat the bug.</p>
<p>I&#8217;m betting Richard thinks otherwise&#8230;. <img src='http://www.armswiper.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/271/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iWeb Produces Crap Code!</title>
		<link>http://www.armswiper.co.uk/blog/view/269</link>
		<comments>http://www.armswiper.co.uk/blog/view/269#comments</comments>
		<pubDate>Fri, 13 Jan 2006 11:57:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[OK, so iWeb was launched the other day, as part of the new iLife &#8217;06 package, and as soon as it was released people started using it and testing the output. It appears, according to this post, that it produces some pretty nasty output &#8211; or should I say that it is not good engineering [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so iWeb was launched the other day, as part of the new iLife &#8217;06  package, and as soon as it was released people started using it and  testing the output.</p>
<p>It appears, according to <a href="http://whatdoiknow.org/archives/002582.shtm">this post</a>, that  it produces some pretty nasty output &#8211; or should I say that it is not  good engineering practice to produce the same output as iWeb!</p>
<p>However, I think that someone has nailed the situation pretty much on  the head in the comments<cite>Well, iWeb was built so that you didn&#8217;t  have to write any code at all, so why care?</p>
<p>So what if there is  some unnecessary code? It is a brand new application, and it gets the  job done without the user having to write a line of code.</p>
<p>Posted  by: Appleologist at January 12, 2006 09:42 PM</cite></p>
<p>My point is this: Yes, it generates some pretty nasty code (although,  full credit to Apple, it does parse correctly and conforms to  standards), some of which could be cleaned up easily. But, as quoted,  the people that will want to use this application are those people who  don&#8217;t have enough web experience to develop this kind of site on their  own, and so don&#8217;t care about what it generates &#8211; just as long as it  looks good on their screen. The site will use up more web space, and  more bandwidth, in order to host it, but not <em>that</em> much more.</p>
<p>The people that are commenting on the quality of the code, are going to  be those people that know how to produce websites efficiently and  correctly, and are people that care about the amount of bandwidth that  their company uses, because bandwidth costs money.</p>
<p>Not having used iWeb, I can&#8217;t really comment on the use of the  application, or it&#8217;s intended market, but from the evidence that I have  seen, and my perceived target user based for the app, I would say that  it does a pretty good job.</p>
<p>(Note To Apple: Please just tidy up the code a little, and get rid of  that damn &#8220;Generator&#8221; tag &#8211; that thing just stinks of &#8220;Frontpage&#8221;!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/269/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IT Graduates Not Happy With Courses</title>
		<link>http://www.armswiper.co.uk/blog/view/268</link>
		<comments>http://www.armswiper.co.uk/blog/view/268#comments</comments>
		<pubDate>Wed, 11 Jan 2006 15:57:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Apparently 46% (in this survey, at least) of UK IT Graduates are not happy with their courses saying that they failed to prepare them for working in &#8220;the real world&#8221;. I would sit myself firmly in the 54% of the other Graduates that are happy with what I did at University. I think that may [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.theregister.co.uk/2006/01/11/grads_say_courses_no_good/">Apparently</a>  46% (in this survey, at least) of UK IT Graduates are not happy with  their courses saying that they failed to prepare them for working in  &#8220;the real world&#8221;.</p>
<p>I would sit myself firmly in the 54% of the other Graduates that are  happy with what I did at University. I think that may be the 46% were  not aware of what they have been taught:<cite>Graduates were  disappointed they were not taught Java and .NET &#8211; despite demand for  them in the commercial sector.</cite>This makes me think that they have  made an oversight. I was taught several languages at University, but  only briefly touched on Java, and had no (at University, at least)  experience of working with Microsoft .Net. The fact that both of these  products (along with other, important, commercial products such as  Oracle) are now available as a free download which these graduates could  go to learn on their own, is not stated.</p>
<p>Even though I wasn&#8217;t taught them fully, I feel that I would not have a  problem with switching to these languages. Why? Because I was taught how  to program, not how to program in  X, Y, or Z languages. The skills are  <em>very</em> transferable, if you put your mind to it (incidentally, I  am not stating that all programming languages are the same &#8211; they are  not, but many ideas and concepts do, readily, transfer).</p>
<p>Let me put this into the context of an analogy:</p>
<p>Imagine that, at University, you were taught to drive a car. You were  taught what all the pedals were for, how to steer, when to change gear,  how to drive in traffic, the whole lot; except the only car the  University had available for you to drive and to practice in was, for  example, a Honda, and sometimes there was a Vauxhall on offer if you  took the right course in your third year.</p>
<p>You then graduate from University, and start looking for a job,  advertising yourself as a &#8220;driver&#8221;, as there is little need for a  specific &#8220;Honda Only driver (with some experience of Vauxhalls)&#8221;.</p>
<p>When you get to your job, you are asked to drive a Ford.</p>
<p>When you immediately get into the car, most things are the same, and you  can more-or-less start driving straight away. OK, every now and again,  you forget where the windscreen washer is, or it takes you a bit of time  to get used to the gear box, but after a while you are driving well.  Could you then say that you felt disappointed because your University  did not teach you to drive a Ford? Most things are the same, except for  a few little levers and things, but the principles are <strong>all  exactly the same</strong>.</p>
<p>University is not about learning specifics &#8211; it is about learning  principles. The problem with principles though, is that you can&#8217;t use  &#8220;principles&#8221;, you have to use an implementation of those principles,  which may have included, changed or excluded those principles at will.</p>
<p>Ignoring those principles, and only absorbing implementation specifics  is a unwise thing to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armswiper.co.uk/blog/view/268/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
