<?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>matty.co.za &#187; Web Developer</title>
	<atom:link href="http://matty.co.za/tag/web-developer/feed/" rel="self" type="application/rss+xml" />
	<link>http://matty.co.za</link>
	<description>Web developer, WordPress enthusiast, avid musician, music lover and blogger</description>
	<lastBuildDate>Thu, 19 Aug 2010 13:07:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>A theory on approaching difficult tasks</title>
		<link>http://matty.co.za/2009/11/approaching-difficult-tasks/</link>
		<comments>http://matty.co.za/2009/11/approaching-difficult-tasks/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:09:17 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=729</guid>
		<description><![CDATA[Whichever industry you work in, whether you work for yourself or a company and whatever your job description, there are days where things just aren’t going your way. No matter how long you sit at your desk, tapping your pencil, the solution to the problem at hand just isn’t apparent. As a developer, the problem [...]]]></description>
			<content:encoded><![CDATA[<p>Whichever industry you work in, whether you work for yourself or a company and whatever your job description, there are days where things just aren’t going your way. No matter how long you sit at your desk, tapping your pencil, the solution to the problem at hand just isn’t apparent.</p>
<p>As a developer, the problem and solution are usually quite clean-cut (such is the nature of code, prodominantly). The solution, however clean-cut it may be, isn’t always visible when approaching a coding task. At times like those, I employ a theory:<br />
<span id="more-729"></span></p>
<blockquote><p>Whatever you do to figure out the solution, whatever pencil-tapping or repeated contact between your head and desk occurs, the end result will work and be exactly as per the task set out to you.</p></blockquote>
<p>Knowing this, the task of achieving the goal becomes seemingly less stressful and a bit clearer to tackle. In addition, I find it important to clear one’s head, move away from the problem for a few minutes and give it some thought from a different angle.</p>
<p>That’s my theory, anyways.</p>
<p>Stop. Think. Re-evaluate.</p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/11/approaching-difficult-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A few guidelines for WordPress plugin development</title>
		<link>http://matty.co.za/2009/06/guidelines-for-wordpress-plugin-development/</link>
		<comments>http://matty.co.za/2009/06/guidelines-for-wordpress-plugin-development/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 08:12:02 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=510</guid>
		<description><![CDATA[The WordPress plugin API is vast and powerful. It allows developers to essentially hook code into almost any area of the WordPress system without modifying the core files at all. It also allows for the creation of standalone plugins that work within the WordPress system but do not hook into the core modules. Over the [...]]]></description>
			<content:encoded><![CDATA[<p>The WordPress plugin API is vast and powerful. It allows developers to essentially hook code into almost any area of the WordPress system without modifying the core files at all. It also allows for the creation of standalone plugins that work within the WordPress system but do not hook into the core modules.</p>
<p>Over the last few weeks, WordPress plugin development has become one of my favourite things to do. I find it exciting to be able to create functionality, incorporate it seemlessly into the WordPress system and see it work smoothly with the other modules. While plugin development for WordPress is incredibly powerful, it also carries with it a few areas where people commonly stumble over and potentially lose interest in their code… which could be the next big thing. Here are a few guidelines I’ve picked up in order to step over the stumbling blocks.<br />
<span id="more-510"></span></p>
<h3>1. Understand actions, filters and hooks, where to use which action and their limitations.</h3>
<p><a title="Wordpress Actions Reference" href="http://codex.wordpress.org/Plugin_API/Action_Reference">Actions, filters and hooks</a> are what allow developers to insert their code into virtually any part of the WordPress system. While there are only almost 400 hooks documented, there are in fact around 800 hooks in the WordPress system. The WordPress codex has a great reference for actions, filters, hooks and how to use them.</p>
<h3>2. <code>register_activation_hook()</code> does not function the same way as <code>add_action()</code>.</h3>
<p>While looking through the WordPress forums, the <code>register_activation_hook()</code> function (runs the function you pass to it when the plugin is activated) has come up as a regular topic of conversation. Users are attempting to display text on activation, using it as if it were the add_action() function. register_activation_hook() does not function the same way. The function, the way I understand it, works in an almost overall scope, not having access to variables within your plugin for display purposes. In short, don’t try to echo or print variables with this function. It won’t work. The function is best used for doing common setup such as installing database tables, setting default options, etc.</p>
<h3>3. Use <code>dbDelta</code> instead of <code>mysql_query</code> or <code>$wpdb-&gt;query()</code> when installing database tables.</h3>
<p>The dbDelta function (which you pass your database query to) is used when installing tables into your WordPress database. It is also used as an upgrade script in the same area. Don’t forget to include the WordPress upgrade script before running <code>dbDelta()</code>. The include looks like this:</p>
<p><code>require_once(ABSPATH . 'wp-admin/includes/upgrade.php');</code></p>
<h3>4. Understand the scope of your plugin and work within it.</h3>
<p>As mentioned above, WordPress plugins can be used to hook into essentially any area of the WordPress system. This includes standalone menus, as well as running actions when a post or page is saved, for example. Understanding the objective/s and scope of one’s WordPress plugin is essential to choosing the correct approach for the plugin. If it’s a short plugin with specific objective, there’s no need, in my opinion, for more than one or two files. Keep it simple. On the other hand, if the plugin is a large, standalone module, I don’t believe there’s any reason to have cluttered files of hundreds of lines of code, where an Object Oriented approach would ultimately serve as a much cleaner and more extendable solution.</p>
<h3>5. Plan, plan, plan.</h3>
<p>Planning on paper, drafting a code map on screen, talking it through with other developers. Planning a plugin can never be done too much. It helps with all of the above steps as well as helping to see where you need to be at the end of the development and planning a solid roadmap for the journey to get there. Also, other users may have ideas that could streamline your plugin even further.</p>
<p>These are just a few things I’ve picked up on my WordPress plugin development journey. I’ll post more if and when they come up. I hope these tips are useful and help in overcoming the potential stumbling blocks when getting started with WordPress plugin development.</p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/06/guidelines-for-wordpress-plugin-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Coding with the other side of your brain</title>
		<link>http://matty.co.za/2009/06/coding-with-the-other-side-of-your-brain/</link>
		<comments>http://matty.co.za/2009/06/coding-with-the-other-side-of-your-brain/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:37:56 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=499</guid>
		<description><![CDATA[This might seem like a weird topic for a blog post. Let me elaborate. If you’ve ever coded for a system that is build in a convention you’re not used to (for example, coding using a MVC framework, if you’re not used to it), this concept will begin to make sense. It refers to the [...]]]></description>
			<content:encoded><![CDATA[<p>This might seem like a weird topic for a blog post. Let me elaborate.</p>
<p>If you’ve ever coded for a system that is build in a convention you’re not used to (for example, coding using a MVC framework, if you’re not used to it), this concept will begin to make sense. It refers to the almost complete paradigm shift required when approaching an unfamiliar coding framework or system. Here are a few things that I’ve found ease the process of coding with the other side of your brain.<br />
<span id="more-499"></span></p>
<h3>1. Find people who code using the other side of their brain, more often.</h3>
<p>Knowing one or two people who are used to the particular environment in which you are coding can be invaluable. It’s most useful, I believe, with those smaller tweaks and refinements that you may need to make… or the small and unexpected bugs in your code.</p>
<h3>2. If the system has a user guide, keep it open.</h3>
<p>User guides can often be bloated and unusable. If the documentation has a function reference and a brief explanation of the concepts behind the system, you’ve got it.</p>
<h3>3. Pay attention to coding conventions.</h3>
<p>If the original designers of the system are coding in a particular convention, stick to it. There’s usually a reason for the convention and sticking to it will save you time and potential future re-coding anyways.</p>
<h3>4. Try to lay as much groundwork as possible before integrating the system with your code.</h3>
<p>Pay attention to the finer details of the system and try to view the system on a more abstract level. This will enable you to see the bigger picture and to code or style any areas you may need to back-track and do at a later stage.</p>
<p>I hope these short tips are useful. If you have any to add, please add them in the comments. <img src='http://matty.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/06/coding-with-the-other-side-of-your-brain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Management that enables developers</title>
		<link>http://matty.co.za/2009/06/content-management-that-enables-developers/</link>
		<comments>http://matty.co.za/2009/06/content-management-that-enables-developers/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 10:54:25 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=491</guid>
		<description><![CDATA[Content Management has always been an area of web development designed to make updating a website simple and easy for the end-user. Over time, I believe, the concept of content management systems (CMSes) has developed, in certain aspects, in a point-and-click direction. By point-and-click, I mean where developers sign into a console and click through [...]]]></description>
			<content:encoded><![CDATA[<p>Content Management has always been an area of web development designed to make updating a website simple and easy for the end-user. Over time, I believe, the concept of content management systems (CMSes) has developed, in certain aspects, in a point-and-click direction. By point-and-click, I mean where developers sign into a console and click through a series of steps with, effectively, a “create module” button at the end. This then pumps out a module for the client to update when the website is live.</p>
<p><strong>Does this make for a <em>good</em> CMS?</strong><br />
<span id="more-491"></span><br />
Yes and no, in my opinion. On the one hand, it affords a wider audience the opportunity to create a customised CMS that allows for more streamlined updating of content. On the other hand, however, would this cause an effective “end” to programming on the web?</p>
<p>I believe a good CMS is one that achieves balance. The ability for users to be able to create custom content types with ease (possibly point-and-click) as well as all the essential core elements (content hierarchy, user management and authentication, etc) being taken care of. In addition to this, the ability to allow developers to hook in their own custom-written code, without having to code the core elements every time they need a new CMS for a project.</p>
<p>I believe the above approach is a step towards truly enabling developers. By “enabling”, I mean allowing developers to focus on the bits of code that make their projects awesome, to learn and excel at what they do.</p>
<p>That’s my thought for the day. What do you guys think? <img src='http://matty.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/06/content-management-that-enables-developers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting the information of a root page in WordPress</title>
		<link>http://matty.co.za/2009/06/getting-the-information-of-a-root-page-in-wordpress/</link>
		<comments>http://matty.co.za/2009/06/getting-the-information-of-a-root-page-in-wordpress/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 08:00:28 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[WordPress Themes]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=468</guid>
		<description><![CDATA[Often, when using WordPress as a content management or blogging tool on a website, one uses a multi-level page structure. This entails a page being listed “underneath” another page in a tree structure. Usually, if your WordPress installation’s permalinks deviate from the default setting, your page URL structure will look something like this: http://websiteurl.com/parentpageslug/subpageslug (Note: [...]]]></description>
			<content:encoded><![CDATA[<p>Often, when using WordPress as a content management or blogging tool on a website, one uses a multi-level page structure. This entails a page being listed “underneath” another page in a tree structure. Usually, if your WordPress installation’s permalinks deviate from the default setting, your page URL structure will look something like this:</p>
<p>http://websiteurl.com/parentpageslug/subpageslug (Note: note a real URL)</p>
<p>What if you require a value to be set depending on the highest level parent page? The process looks like this:</p>
<p><span id="more-468"></span></p>
<p>1. Get the permalink for the current page (using the global $post object).<br />
2. Remove the website URL from the string, leaving only the full slug.<br />
3. Split the slug into an array, using the ‘/’ as a separator.<br />
4. The route slug should be at one of the indexes in your array (most likely index 1).</p>
<p>To get the information for the root page, we are going to use a native WordPress function called “<a title="Function Reference - get_page_by_path" href="http://codex.wordpress.org/Function_Reference/get_page_by_path">get_page_by_path</a>”. To run this function, we will declare it like this:</p>
<p><code>$root_page = get_page_by_path($root_slug);</code></p>
<p>This line returns an object (into <code>$root_page</code>) containing the information for the root page of the page we are currently viewing.</p>
<p>I’ve left points 1 to 4 up to you to work out. Everyone has their own way of coding things. If you know of a smoother or quicker way to achieve the same result, please let me know. <img src='http://matty.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Thanks guys. I hope you found this quick snippet to be useful. <img src='http://matty.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/06/getting-the-information-of-a-root-page-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perch — a new lil’ CMS is on the market</title>
		<link>http://matty.co.za/2009/06/perch-a-new-lil-cms-is-on-the-market/</link>
		<comments>http://matty.co.za/2009/06/perch-a-new-lil-cms-is-on-the-market/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 08:00:11 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=435</guid>
		<description><![CDATA[This Monday past, I received an email from “Perch”. On opening this email, I was reminded that Perch, a new “small CMS”, has now launched. Content Management Systems being an interest of mine, I took a look into this new lil’ guy on the CMS market. Perch is lightweight and easy to install and integrate [...]]]></description>
			<content:encoded><![CDATA[<p>This Monday past, I received an email from “Perch”. On opening this email, I was reminded that <a title="Perch" href="http://grabaperch.com/">Perch</a>, a new “small CMS”, has now launched. Content Management Systems being an interest of mine, I took a look into this new lil’ guy on the CMS market.</p>
<p>Perch is lightweight and easy to install and integrate into any website– new or existing. It allows the administrator to create custom content types (eg: one for pages and another for a single block on the website’s homepage) as well as providing a clean, customisable and easy to use system for the client user to work with. </p>
<p>Perch retails at 35 Pounds per license. This looks like a potentially strong contender in the CMS market, despite it’s youth. I’d be keen to see a working demo version on their website. The video is quite explanatory, although there’s nothing quite like browsing through a CMS yourself on a demo version.</p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/06/perch-a-new-lil-cms-is-on-the-market/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Useful HTML characters reference</title>
		<link>http://matty.co.za/2009/05/useful-html-characters-reference/</link>
		<comments>http://matty.co.za/2009/05/useful-html-characters-reference/#comments</comments>
		<pubDate>Wed, 20 May 2009 08:39:20 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=414</guid>
		<description><![CDATA[While searching for a specific character (→ to be exact) I stumbled upon this great resource for HTML character entities. It can serve as a great resource for common characters used in web design (copyright symbols, etc) as well as other characters (for example, replacing a ^ with ↑ in a “back to top” link [...]]]></description>
			<content:encoded><![CDATA[<p>While searching for a specific character (→ to be exact) I stumbled upon this great <a title="HTML Character entities" href="http://www.chaos.org.uk/~eddy/bits/chars.html">resource for HTML character entities</a>. It can serve as a great resource for common characters used in web design (copyright symbols, etc) as well as other characters (for example, replacing a ^ with ↑ in a “back to top” link on your website).</p>
<p>I hope you guys find this as useful as I have today. <img src='http://matty.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a title="HTML Character entities reference" href="http://www.chaos.org.uk/~eddy/bits/chars.html">View the HTML characters reference.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/05/useful-html-characters-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 8 has been released</title>
		<link>http://matty.co.za/2009/03/internet-explorer-8-has-been-released/</link>
		<comments>http://matty.co.za/2009/03/internet-explorer-8-has-been-released/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 16:43:18 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=249</guid>
		<description><![CDATA[So Internet Explorer 8 has been released. It’s been on the cards for a while now, and now it’s here. Boasting several new features including a “Compatibility View” (allowing users to view pages in older versions of the browser) and visual search suggestions in the search box (in a similar fashion to an auto-complete script) [...]]]></description>
			<content:encoded><![CDATA[<p>So <a title="Internet Explorer 8 Homepage" href="http://www.microsoft.com/windows/internet-explorer/default.aspx">Internet Explorer 8 has been released</a>. It’s been on the cards for a while now, and now it’s here. Boasting several new features including a “Compatibility View” (allowing users to view pages in older versions of the browser) and visual search suggestions in the search box (in a similar fashion to an auto-complete script) amongst others.</p>
<p>Just when you thought browser compatibilty testing was a laborious task, another web browser pops onto the scene. Internet Explorer conditional comments will hopefully adapt to reflect the addition of IE8, allowing users to customise their CSS and XHTML code for the specific browser… as well as possibly notify users of their browser of choice.</p>
<p>I’d love to read your opinions on this release. I look forward to testing IE8 and seeing how it renders my web code.</p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/03/internet-explorer-8-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One CMS to rule them all…?</title>
		<link>http://matty.co.za/2009/02/one-cms-to-rule-them-all/</link>
		<comments>http://matty.co.za/2009/02/one-cms-to-rule-them-all/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 14:48:59 +0000</pubDate>
		<dc:creator>Matty</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://matty.co.za/?p=178</guid>
		<description><![CDATA[The age old question, discussed by developers for years past…and for years to come. Is there one CMS to cater to the needs of any and all projects? CMS stands for Content Management System. This is an application, usually run on the web, that allows end-users to update the content of their website with ease. [...]]]></description>
			<content:encoded><![CDATA[<p>The age old question, discussed by developers for years past…and for years to come.</p>
<p><strong>Is there one CMS to cater to the needs of any and all projects?</strong></p>
<p>CMS stands for <strong>C</strong>ontent <strong>M</strong>anagement <strong>S</strong>ystem. This is an application, usually run on the web, that allows end-users to update the content of their website with ease. It can also allow content to be added en mass and worked with by the system (for example, an events guide that only displays upcoming events). For large websites with reams of content, a CMS is invaluable in the organisation, management and authoring of content. In the web industry of today, content management is becoming more and more important, as users with to have as much control over their websites as possible, while minimizing the time spent on the phone or emailing a web developer to update their website for them.</p>
<p>Various options present themselves when faced with the task of selecting a content management option. A variety of pre-made systems exist (WordPress, Expression Engine, Drupal, Joomla, Textpattern, etc) that have been tried, tested and extended by users worldwide. While many of these systems have limitations to their functionality and control from a development perspective, they have been tried, tested and are maintained by users worldwide, which is a huge advantage when developing a system that will grow and flow with the constant change that is the web.</p>
<p>Another option is building your own CMS. While this option is an incredible approach, allowing full control over functionality, integration of a design and extension of the core, it is difficult to keep up a custom CMS with a minimal developer count on the team constructing the system and potential security risks that may have been overlooked. While a these concerns are true, a custom CMS can also be as lightweight as desired, carry only the functionality necessary and be tailored to suit the needs of each website it is used for.</p>
<p>There are pro’s and con’s to each decision. What are your thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://matty.co.za/2009/02/one-cms-to-rule-them-all/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
