<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Programming Archives - Richard Warrender</title>
	<atom:link href="https://richardwarrender.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://richardwarrender.com/category/programming/</link>
	<description>Creative Thinking, Clear Engineering</description>
	<lastBuildDate>Thu, 19 Feb 2026 20:06:12 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.9</generator>
<site xmlns="com-wordpress:feed-additions:1">219281189</site>	<item>
		<title>Use AI to Build or Be Built by AI</title>
		<link>https://richardwarrender.com/2026/02/use-ai-to-build-or-be-built-by-ai/</link>
					<comments>https://richardwarrender.com/2026/02/use-ai-to-build-or-be-built-by-ai/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 19:57:42 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[Music]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=22375</guid>

					<description><![CDATA[I’ve noticed there are two kinds of people using AI. You’ve got to work out which one you are as it will make big differences to your life in the long term. A couple of months ago I found myself standing on a stage, blinded by lights. I plugged in my new Takamine guitar and [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2026/02/use-ai-to-build-or-be-built-by-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">22375</post-id>	</item>
		<item>
		<title>Seven Years later: What I Learned from Building an AI Chatbot &#8211; Part 1</title>
		<link>https://richardwarrender.com/2024/07/building-ai-chatbot-learnings-part-1/</link>
					<comments>https://richardwarrender.com/2024/07/building-ai-chatbot-learnings-part-1/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Thu, 04 Jul 2024 17:24:38 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=21335</guid>

					<description><![CDATA[Seven&#160;years ago, I embarked on an ambitious attempt to build a rudimentary rule-based AI chatbot. Frustrated by the limitations of Apple’s Siri and motivated by exciting updates to Apple’s Natural Language Processing APIs, I dreamed of building something that could understand complex queries, construct mental models of objects, and seamlessly interact with users using just [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2024/07/building-ai-chatbot-learnings-part-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">21335</post-id>	</item>
		<item>
		<title>Framed in an interview!</title>
		<link>https://richardwarrender.com/2023/03/framed-in-an-interview/</link>
					<comments>https://richardwarrender.com/2023/03/framed-in-an-interview/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 15:28:24 +0000</pubDate>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[UIKit]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=15068</guid>

					<description><![CDATA[Recently I have been interviewing and it is eye opening to be the other side of the interview table/Zoom chat! Having been an iOS developer for 14+ years, I think there are things you learn very early on in your career that you never question or need to revisit it again and it can catch [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2023/03/framed-in-an-interview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">15068</post-id>	</item>
		<item>
		<title>Machine Learning and AI with Prof. Brian Cox</title>
		<link>https://richardwarrender.com/2017/02/machine-learning-ai-talk/</link>
					<comments>https://richardwarrender.com/2017/02/machine-learning-ai-talk/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 22 Feb 2017 23:10:22 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Brian Cox]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[Panel Discussion]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[The Royal Society]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=1066</guid>

					<description><![CDATA[Last month I attended an interesting discussion panel on machine learning and artificial intelligence held by The Royal Society. This was presented by the ever warm and friendly Professor Brian Cox, everyone&#8217;s favourite TV astronomer. The video is online now and very gentle on technical details so worth a watch even if you know nothing [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2017/02/machine-learning-ai-talk/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1066</post-id>	</item>
		<item>
		<title>5 essential tips for using blocks effectively</title>
		<link>https://richardwarrender.com/2016/12/5-essential-tips-for-using-blocks/</link>
					<comments>https://richardwarrender.com/2016/12/5-essential-tips-for-using-blocks/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Sat, 31 Dec 2016 17:43:53 +0000</pubDate>
				<category><![CDATA[GCD]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blocks]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[gcd]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Objective-C]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=1025</guid>

					<description><![CDATA[Objective-C Blocks are very powerful but often under-used or badly abused! Continuing on from my previous post on how to declare a block, here is a quick-fire list of 5 experience-earned tips that every developer should know. 1. typedef a block If you find yourself using a particular block syntax a lot or perhaps you [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2016/12/5-essential-tips-for-using-blocks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1025</post-id>	</item>
		<item>
		<title>How to declare a block</title>
		<link>https://richardwarrender.com/2016/10/how-to-declare-block/</link>
					<comments>https://richardwarrender.com/2016/10/how-to-declare-block/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 10 Oct 2016 11:30:08 +0000</pubDate>
				<category><![CDATA[GCD]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blocks]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[gcd]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Objective-C]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=1020</guid>

					<description><![CDATA[Are you really sure on how to declare a block? How about all 4 variations? On iOS and macOS, it can be easy to forget Objective-C block syntax as it isn&#8217;t the most intuitive, especially now Swift is becoming the main language of new projects. Remembering the syntax is actually just a short click away [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2016/10/how-to-declare-block/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1020</post-id>	</item>
		<item>
		<title>Encrypt data using AES and 256-bit keys</title>
		<link>https://richardwarrender.com/2016/04/encrypt-data-using-aes-and-256-bit-keys/</link>
					<comments>https://richardwarrender.com/2016/04/encrypt-data-using-aes-and-256-bit-keys/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 27 Apr 2016 19:06:29 +0000</pubDate>
				<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AES]]></category>
		<category><![CDATA[AES-256]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CommonCrypto]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=936</guid>

					<description><![CDATA[AES stands for Advanced Encryption Standard and is an industry-standard algorithm for encrypting data symmetrically which even the US government has approved for SECRET documents. If you don&#8217;t know what symmetrical encryption is, it means that you use the same key or password to encrypt the data as you do to unencrypt it. So you [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2016/04/encrypt-data-using-aes-and-256-bit-keys/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">936</post-id>	</item>
		<item>
		<title>Quick way of cleaning HTML for iOS apps</title>
		<link>https://richardwarrender.com/2016/04/quick-way-of-cleaning-html-ios/</link>
					<comments>https://richardwarrender.com/2016/04/quick-way-of-cleaning-html-ios/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 05 Apr 2016 19:59:15 +0000</pubDate>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=918</guid>

					<description><![CDATA[For some reason HTML is always dirty, it&#8217;s usually full of Analytics tags, JavaScript or contains nested HTML tags. This is usually fine for displaying in browsers but at some point an iOS app will need to display HTML content and usually when it does, you need it to display clean HTML or only a [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2016/04/quick-way-of-cleaning-html-ios/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">918</post-id>	</item>
		<item>
		<title>How to build a Ghostbuster Proton Pack</title>
		<link>https://richardwarrender.com/2016/02/how-to-build-a-ghostbuster-proton-pack/</link>
					<comments>https://richardwarrender.com/2016/02/how-to-build-a-ghostbuster-proton-pack/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 10 Feb 2016 18:51:06 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=863</guid>

					<description><![CDATA[I built a Ghostbuster proton pack for a fancy dress party recently. It took about 3 or 4 evenings to build and involved Arduinos, lots of hot glue and over 92 LEDs! This is the build log.]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2016/02/how-to-build-a-ghostbuster-proton-pack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">863</post-id>	</item>
		<item>
		<title>Beautifully-formatted Times and Numbers</title>
		<link>https://richardwarrender.com/2015/06/beautifully-formatted-times-and-numbers/</link>
					<comments>https://richardwarrender.com/2015/06/beautifully-formatted-times-and-numbers/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 16 Jun 2015 19:22:21 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[CoreText]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[uikit]]></category>
		<guid isPermaLink="false">https://richardwarrender.com/?p=838</guid>

					<description><![CDATA[Not all font instances are created equally! In iOS text is mostly displayed using proportional fonts, meaning each character width is trimmed and varies depending on each character. This makes the text easier to read and feel more natural and you&#8217;ll notice this on characters such as &#8216;i&#8217; which will often be the thinnest character [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2015/06/beautifully-formatted-times-and-numbers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">838</post-id>	</item>
		<item>
		<title>Eve of Apple&#8217;s World Wide Developer Conference 2015</title>
		<link>https://richardwarrender.com/2015/06/eve-of-apple-wwdc-2015/</link>
					<comments>https://richardwarrender.com/2015/06/eve-of-apple-wwdc-2015/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Sun, 07 Jun 2015 17:46:43 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[wwdc]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=814</guid>

					<description><![CDATA[WWDC 2015 has come round again and I&#8217;m lucky enough to be in San Francisco attending again! So what&#8217;s the tradition? Well I&#8217;ve just scoffed down a huge pile of pancakes down at Mel&#8217;s Dinner and just picked up my badge and legendary WWDC &#8217;15&#8217; jacket. You know the&#160;developers are in town as these jackets [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2015/06/eve-of-apple-wwdc-2015/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">814</post-id>	</item>
		<item>
		<title>Facebook&#8217;s London Mobile Forum 2.0</title>
		<link>https://richardwarrender.com/2014/04/london-mobile-forum-2-0/</link>
					<comments>https://richardwarrender.com/2014/04/london-mobile-forum-2-0/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 20:38:47 +0000</pubDate>
				<category><![CDATA[Core Animation]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[interactions]]></category>
		<category><![CDATA[iOS 7]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[physics]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=758</guid>

					<description><![CDATA[Last week I was fortunate to attend Facebook&#8217;s London Mobile Forum 2.0. This gathering of top London mobile developers and designers was a great chance to swap ideas and listen to a number of talks by Facebook, Big Nerd Ranch, Yammer, Bloom and Mozilla to name a few. The event was tiny with only 60 [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2014/04/london-mobile-forum-2-0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">758</post-id>	</item>
		<item>
		<title>5 Time-saving Objective-C tips every developer should know</title>
		<link>https://richardwarrender.com/2013/03/5-time-saving-objective-c-tips/</link>
					<comments>https://richardwarrender.com/2013/03/5-time-saving-objective-c-tips/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 19 Mar 2013 18:18:03 +0000</pubDate>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[consts]]></category>
		<category><![CDATA[enums]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tips]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=623</guid>

					<description><![CDATA[Here&#8217;s a quick fire list of 5 time-saving Objective-C tips that every developer should know. Perfect for making time for that extra coffee! 1. Enum shorthand Enums at their simplest are labelled sets of integers. Where an inexperienced programmer might use a number to represent the download state of an image lets say, e.g. 0 [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2013/03/5-time-saving-objective-c-tips/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">623</post-id>	</item>
		<item>
		<title>Bluetooth 4.0 LE &#8211; The Bluetooth Renaissance</title>
		<link>https://richardwarrender.com/2013/02/bluetooth-4-0-le-renaissance/</link>
					<comments>https://richardwarrender.com/2013/02/bluetooth-4-0-le-renaissance/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 11 Feb 2013 14:50:35 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[BLE]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[Bluetooth 4.0 LE]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=591</guid>

					<description><![CDATA[Sometimes a technology comes along that seems like such a good idea you wonder why it was never created in the beginning. For me, Bluetooth was one of those technologies. It&#8217;s been around since the late nineties and was incredibly powerful, especially for PDAs and phones but has always been overshadowed by the complimentary WiFi [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2013/02/bluetooth-4-0-le-renaissance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">591</post-id>	</item>
		<item>
		<title>Apple WWDC 2012 Session Videos Live</title>
		<link>https://richardwarrender.com/2012/06/apple-wwdc-2012/</link>
					<comments>https://richardwarrender.com/2012/06/apple-wwdc-2012/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 20 Jun 2012 12:11:49 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iOS 6]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[wwdc]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=518</guid>

					<description><![CDATA[This is a heads up for anyone who does iPad or iPhone development; Apple have made available their awesome WWDC 2012 sessions videos to developers! iOS 6 features such as Passkit, maps and Facebook looks interesting as does the new Game Center functionality such as &#8220;Challenges&#8221; along with a whole host of new APIs and [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2012/06/apple-wwdc-2012/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">518</post-id>	</item>
		<item>
		<title>&#8216;Cut the Rope&#8217; HTML5 JavaScript Preloader</title>
		<link>https://richardwarrender.com/2012/02/cut-the-rope-html5-javascript-preloader/</link>
					<comments>https://richardwarrender.com/2012/02/cut-the-rope-html5-javascript-preloader/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 29 Feb 2012 16:35:32 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[Cut the Rope]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[Pixel Lab]]></category>
		<category><![CDATA[pre loaders]]></category>
		<category><![CDATA[sprites]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web app]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=433</guid>

					<description><![CDATA[Developers from the popular iPhone game Cut the Rope and a crack team of HTML5 gurus from PixelLab, have developed an awesome JavaScript version that runs inside most modern web browsers using JavaScript and a number of powerful HTML5 features such as canvas and media APIs. You can find out how they did it from [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2012/02/cut-the-rope-html5-javascript-preloader/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">433</post-id>	</item>
		<item>
		<title>How to call a block after a delay</title>
		<link>https://richardwarrender.com/2012/02/how-to-call-block-after-delay/</link>
					<comments>https://richardwarrender.com/2012/02/how-to-call-block-after-delay/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 22 Feb 2012 22:00:46 +0000</pubDate>
				<category><![CDATA[GCD]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blocks]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[gcd]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[osx]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=412</guid>

					<description><![CDATA[On iOS and on OS X you sometimes need the User Interface to update after a short delay. The old way of doing it was calling the performSelector:withObject:afterDelay: selector on any NSObject subclass but that requires defining a new method in your class and you can only pass one object as a parameter. Instead, you [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2012/02/how-to-call-block-after-delay/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">412</post-id>	</item>
		<item>
		<title>Core Animation stops animation on app relaunch</title>
		<link>https://richardwarrender.com/2011/09/core-animation-stops-ani-on-app-relaunch/</link>
					<comments>https://richardwarrender.com/2011/09/core-animation-stops-ani-on-app-relaunch/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 12:31:44 +0000</pubDate>
				<category><![CDATA[Core Animation]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[Core Animaton]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[multitasking]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=385</guid>

					<description><![CDATA[On one of my projects I discovered a bug in a never-ending animation I had set up. Whenever the app was suspended (such as when you multitask and open another app), on relaunching the app the animation was frozen. After some investigating, I discovered that with Core Animation you need to set a flag on [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/09/core-animation-stops-ani-on-app-relaunch/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">385</post-id>	</item>
		<item>
		<title>WWDC Update: 5 key points for iPhone apps</title>
		<link>https://richardwarrender.com/2011/07/wwdc-update-5-key-points-for-iphone-apps/</link>
					<comments>https://richardwarrender.com/2011/07/wwdc-update-5-key-points-for-iphone-apps/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 05 Jul 2011 17:22:21 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[gamecenter]]></category>
		<category><![CDATA[icloud]]></category>
		<category><![CDATA[ios5]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[lion]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=364</guid>

					<description><![CDATA[It’s now been just over 3 weeks since the torrent of information unleashed at Apple’s World Wide Developer Conference refreshingly drenched the brains of designers, developers and engineers. I’ve resisted blogging about the public announcements to fully let the impact soak in and gage everyone’s reactions but now feels like a good time to talk [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/07/wwdc-update-5-key-points-for-iphone-apps/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">364</post-id>	</item>
		<item>
		<title>The eve of Apple&#8217;s World Wide Developer Conference 2011</title>
		<link>https://richardwarrender.com/2011/06/the-eve-of-apples-world-wide-developer-conference-2011/</link>
					<comments>https://richardwarrender.com/2011/06/the-eve-of-apples-world-wide-developer-conference-2011/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 06 Jun 2011 04:02:23 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[wwdc]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=356</guid>

					<description><![CDATA[I&#8217;m writing this in a hotel room from a block adjacent from the Moscone West Conference center, here in San Francisco, CA. The atmosphere is incredibly lively and for many developers it&#8217;s as close to the developer-version of Christmas you can get. Ha ok I know that sounds a bit over the top but there [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/06/the-eve-of-apples-world-wide-developer-conference-2011/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">356</post-id>	</item>
		<item>
		<title>Calculating UNIX file permissions</title>
		<link>https://richardwarrender.com/2011/06/calculating-unix-file-permissions/</link>
					<comments>https://richardwarrender.com/2011/06/calculating-unix-file-permissions/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Fri, 03 Jun 2011 00:45:23 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[bitwise]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[unix]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=340</guid>

					<description><![CDATA[A few years ago I wrote a simple but handy Mac app that calculates unix file permissions using a matrix of check boxes. I wrote it because I wanted to better understand how those octal values get calculated and to expand my experience of writing Mac apps. I was also learning some crazy assembly code [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/06/calculating-unix-file-permissions/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">340</post-id>	</item>
		<item>
		<title>Jet-fuelled HTML5 in 3D</title>
		<link>https://richardwarrender.com/2011/05/jet-fuelled-html5-in-3d/</link>
					<comments>https://richardwarrender.com/2011/05/jet-fuelled-html5-in-3d/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 24 May 2011 18:04:40 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=319</guid>

					<description><![CDATA[Using the power of WebGL and some JavaScript Chris Milk, the US music video producer and some smart friends of his at Google have created some impressive visuals that play in real-time within a web browser without needing any plugins. These stunning graphics use the next round of HTML5 features that are sweeping across browsers [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/05/jet-fuelled-html5-in-3d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">319</post-id>	</item>
		<item>
		<title>Impressive JavaScript PC Emulator</title>
		<link>https://richardwarrender.com/2011/05/impressive-js-pc-emulator/</link>
					<comments>https://richardwarrender.com/2011/05/impressive-js-pc-emulator/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Fri, 20 May 2011 08:25:14 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[busybox]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[typed arrays]]></category>
		<category><![CDATA[webgl]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=310</guid>

					<description><![CDATA[Fabrice Bellard has written an impressive PC emulator that actually emulates a PC with a 32 bit x86 compatible CPU. This is some really imaginative use of pure JavaScript which I&#8217;m sure no-one would have every dreamed of as it allows you to run a virtual instance of Linux inside a browser window! It currently [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2011/05/impressive-js-pc-emulator/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">310</post-id>	</item>
		<item>
		<title>Core Data Objects in Wrong Sections</title>
		<link>https://richardwarrender.com/2010/10/core-data-objects-in-wrong-sections/</link>
					<comments>https://richardwarrender.com/2010/10/core-data-objects-in-wrong-sections/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 18 Oct 2010 17:55:49 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[iOS 4]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[key-paths]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sorting]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=213</guid>

					<description><![CDATA[NSFetchedResultsController is a really handy class. Use one of the default Core Data templates in Xcode and you&#8217;ll very quickly have a nice list of managed objects in a table view.&#160;With a few more lines of code you can get the NSFetchedResultsController to group your objects by sections. You do this by specifying a key-path [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2010/10/core-data-objects-in-wrong-sections/feed/</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">213</post-id>	</item>
		<item>
		<title>Quick Spreadsheet to plist Technique</title>
		<link>https://richardwarrender.com/2010/09/spreadsheet-to-plist/</link>
					<comments>https://richardwarrender.com/2010/09/spreadsheet-to-plist/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 21 Sep 2010 18:14:50 +0000</pubDate>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plist]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=187</guid>

					<description><![CDATA[Imagine you have a huge list of names in a spreadsheet and you&#8217;d like to get this data into an Apple plist file to use in your iPhone/Mac app or import into a Core Data model. Such a long list of data would take forever to cut and paste so here is a really quick [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2010/09/spreadsheet-to-plist/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">187</post-id>	</item>
		<item>
		<title>Get emailed when uploads complete</title>
		<link>https://richardwarrender.com/2010/09/get-mailed-when-uploads-complete/</link>
					<comments>https://richardwarrender.com/2010/09/get-mailed-when-uploads-complete/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 18:51:37 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=170</guid>

					<description><![CDATA[Sometimes I have to send a client a really large file or app that&#8217;s too large to post to Basecamp. The solution is to upload to a web server over night and email the client a link when it&#8217;s done. Not wanting to tie my laptop down overnight here is a great solution that emails [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2010/09/get-mailed-when-uploads-complete/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">170</post-id>	</item>
		<item>
		<title>Custom fonts on iPad and iPhone</title>
		<link>https://richardwarrender.com/2010/08/custom-fonts-on-ipad-and-iphone/</link>
					<comments>https://richardwarrender.com/2010/08/custom-fonts-on-ipad-and-iphone/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Wed, 18 Aug 2010 20:48:54 +0000</pubDate>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Swift]]></category>
		<category><![CDATA[UIKit]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[iOS 4]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[uikit]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=147</guid>

					<description><![CDATA[Just incase you didn&#8217;t realise, with iOS 3.2 (iPad) and above you can load in custom fonts and use them with a standard UIFont object. There are a few catches&#8230;&#160;The font must be in the following format: &#8211; OpenType Format (OTF) TrueType Format (TTF) Once you&#8217;ve dragged your chosen font file into an Xcode project, [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2010/08/custom-fonts-on-ipad-and-iphone/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">147</post-id>	</item>
		<item>
		<title>Re-ordering Core Data Objects on iOS4</title>
		<link>https://richardwarrender.com/2010/08/re-ordering-core-data-objects-on-ios4/</link>
					<comments>https://richardwarrender.com/2010/08/re-ordering-core-data-objects-on-ios4/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Tue, 17 Aug 2010 06:59:00 +0000</pubDate>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[iOS 4]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[UI]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=139</guid>

					<description><![CDATA[The Core Data framework on the iPhone is incredibly powerful. It&#8217;s also incredibly efficient and part of that is because a collection of objects only have the order that you implicitly give them. For example you typically might give an Event object a timestamp and when you pull out all the events you might sort [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2010/08/re-ordering-core-data-objects-on-ios4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">139</post-id>	</item>
		<item>
		<title>Installing Xdebug on Mac OS X</title>
		<link>https://richardwarrender.com/2008/02/installing-xdebug-on-mac-os-x/</link>
					<comments>https://richardwarrender.com/2008/02/installing-xdebug-on-mac-os-x/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Sat, 02 Feb 2008 18:16:25 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xdebug]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=32</guid>

					<description><![CDATA[Xdebug is an incredibly powerful PHP extension that helps you debug scripts by providing a lot of valuable debugging information. It saves you from having to write your own debugging function for catching errors, at least during the development stage of a web application and certainly provides a lot more information than the standard PHP [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2008/02/installing-xdebug-on-mac-os-x/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32</post-id>	</item>
		<item>
		<title>Problem with PHP mail() and Additional Headers</title>
		<link>https://richardwarrender.com/2007/09/problem-with-php-mail-and-additional-headers/</link>
					<comments>https://richardwarrender.com/2007/09/problem-with-php-mail-and-additional-headers/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Fri, 28 Sep 2007 19:47:48 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[email headers]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sendmail]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=48</guid>

					<description><![CDATA[With the PHP mail() function, you can specify additional headers for the emails that you send. This is a very powerful feature, which lets you do things such as add addresses to blind carbon copy or specify which email address the email is coming from. It’s great but the PHP manual says this about additional [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2007/09/problem-with-php-mail-and-additional-headers/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">48</post-id>	</item>
		<item>
		<title>The Secret to cURL in PHP on Windows&#8230;</title>
		<link>https://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/</link>
					<comments>https://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/#comments</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Mon, 14 May 2007 10:48:37 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=43</guid>

					<description><![CDATA[cURL is a great library created by Daniel Stenberg, that allows you to connect and communicate to many different types of servers using many different types of protocols. In particular, it’s used heavily in PHP to communicate to Payment Gateways and fetch XML feeds from other sites whilst being ‘transparent’ to web page visitors. The [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/feed/</wfw:commentRss>
			<slash:comments>45</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43</post-id>	</item>
		<item>
		<title>Validating Credit Card Numbers</title>
		<link>https://richardwarrender.com/2006/12/validating-card-numbers/</link>
					<comments>https://richardwarrender.com/2006/12/validating-card-numbers/#respond</comments>
		
		<dc:creator><![CDATA[Richard Warrender]]></dc:creator>
		<pubDate>Sat, 16 Dec 2006 22:11:59 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[validation]]></category>
		<guid isPermaLink="false">http://richardwarrender.com/?p=160</guid>

					<description><![CDATA[Lately, I’ve been working on an e–commerce website and discovered a handy algorithm for validating card numbers. The Luhn algorithm (also known as mod 10) is a checksum formula and is used to protect against accidental errors rather than malicious attacks. The algorithm is particularly useful for checking to see if the card number ‘looks’ [&#8230;]]]></description>
		
					<wfw:commentRss>https://richardwarrender.com/2006/12/validating-card-numbers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">160</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Minified using Disk
Database Caching 83/119 queries in 0.035 seconds using Memcached

Served from: richardwarrender.com @ 2026-04-30 01:39:10 by W3 Total Cache
-->