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

<channel>
	<title>Night Dreaming (by Sudar)</title>
	<atom:link href="https://sudarmuthu.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://sudarmuthu.com</link>
	<description>Night Dreaming (by Sudar)</description>
	<lastBuildDate>Wed, 25 Mar 2020 18:43:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.29</generator>
<site xmlns="com-wordpress:feed-additions:1">1177478</site>	<item>
		<title>A quick preview of WP CLI – Chennai WordPress Meetup</title>
		<link>https://sudarmuthu.com/blog/a-quick-preview-of-wp-cli-chennai-wordpress-meetup/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-quick-preview-of-wp-cli-chennai-wordpress-meetup</link>
		<comments>https://sudarmuthu.com/blog/a-quick-preview-of-wp-cli-chennai-wordpress-meetup/#comments</comments>
		<pubDate>Sat, 14 Mar 2020 13:29:49 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=4120</guid>
		<description><![CDATA[Today I gave a talk about using WP CLI in the March 2020 edition of Chennai WordPress Meetup. The talk was more of a hand-on session where I gave demo and explained the different features that are available in WP CLI. You can download the slides from my slideshare account or view them below. While you are at it, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Today I gave a talk about using WP CLI in the March 2020 edition of Chennai WordPress Meetup.</p>
<p>The talk was more of a hand-on session where I gave demo and explained the different features that are available in WP CLI.</p>
<p>You can <a href="https://www.slideshare.net/Sudar/wordpress-developer-tools-73644434/">download the slides</a> from my <a href="http://www.slideshare.net/Sudar/">slideshare account</a> or view them below. While you are at it, you can also checkout some of <a href="http://sudarmuthu.com/my-talks">my other talks</a>.</p>
<p><iframe src="https://www.slideshare.net/slideshow/embed_code/key/cAwS2au6m5ndHP" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/Sudar/using-wp-cli-chennai-wordpress-meetup" title="A quick preview of WP CLI - Chennai WordPress Meetup" target="_blank">A quick preview of WP CLI &#8211; Chennai WordPress Meetup</a> </strong> from <strong><a href="https://www.slideshare.net/Sudar" target="_blank">Sudar Muthu</a></strong> </div>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/a-quick-preview-of-wp-cli-chennai-wordpress-meetup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">4120</post-id>	</item>
		<item>
		<title>WordPress Developer tools to increase productivity in WordCamp Mumbai</title>
		<link>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity-in-wordcamp-mumbai/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-developer-tools-to-increase-productivity-in-wordcamp-mumbai</link>
		<comments>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity-in-wordcamp-mumbai/#comments</comments>
		<pubDate>Sun, 26 Mar 2017 04:22:33 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Events/Conferences]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Mumbai]]></category>
		<category><![CDATA[WordCamp]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3414</guid>
		<description><![CDATA[I am in Mumbai this weekend to attend WordCamp Mumbai 2017. Unlike other WordCamps this one is spread across two days. In this WordCamp I gave a talk about WordPress developer tools and moderated a group discussion about testing. Group discussion about Testing This time in addition to regular talks, the organizers also added a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I am  in Mumbai this weekend to attend WordCamp Mumbai 2017. Unlike other WordCamps this one is spread across two days.</p>
<p>In this WordCamp I gave a talk about WordPress developer tools and moderated a group discussion about testing.</p>
<h2>Group discussion about Testing</h2>
<p>This time in addition to regular talks, the organizers also added a group discussion about testing. I moderated this discussion among a panel of 4 people who are heavily involved in testing.</p>
<p>The discussion revolved around the various testing tools and processes that people use for testing especially in the WordPress context and how they account for compatibility issues with different PHP versions, WordPress versions and other plugins.</p>
<p>I found this discussion very useful as a developer and learned about a couple of things that I can do to make testing easier.</p>
<p>There were also lot of good suggestions from the audience and one of them mentioned that you should try to do pair programming involving a developer and tester together. This is the first time I heard of such a practice and I am very interested to know whether this works. I might give it a try sometime soon.</p>
<h2>My talk about increasing your productivity as a WordPress developer</h2>
<p>I gave a talk about the different developer tools that I use to increase my productivity as a WordPress developer. This talk is very similar to the one that I gave in <a href="http://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity/">WordCamp Kochi</a> last month, but I tweaked a couple of things especially around <code>wp-cli</code> and <code>phpcs</code> since there were other talks that went in detail in those topics.</p>
<p>I covered the following tools.</p>
<ul>
<li>IDE (PhpStorm, vim)</li>
<li>Vagrant and FlyWheel</li>
<li>wp-cli</li>
<li>xDebug</li>
<li>phpcs</li>
<li>phpunit</li>
</ul>
<h2>Slides</h2>
<p>You can <a href="https://www.slideshare.net/Sudar/wordpress-developer-tools-73644434/">download the slides</a> from my <a href="http://www.slideshare.net/Sudar/">slideshare account</a> or view them below. While you are at it, you can also checkout some of <a href="http://sudarmuthu.com/my-talks">my other talks</a>.</p>
<iframe src='https://www.slideshare.net/slideshow/embed_code/73644434' width='425' height='348' allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
<p>The talk was recorded, so I am sure the organizers will upload them to WordPress TV soon. Once it is uploaded I will link it up here.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity-in-wordcamp-mumbai/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3414</post-id>	</item>
		<item>
		<title>WordPress Developer tools to increase productivity</title>
		<link>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-developer-tools-to-increase-productivity</link>
		<comments>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity/#comments</comments>
		<pubDate>Sun, 19 Feb 2017 15:47:46 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Events/Conferences]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Kochi]]></category>
		<category><![CDATA[WordCamp]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3389</guid>
		<description><![CDATA[I traveled to Kochi today to attend WordCamp Kochi 2017, the first ever WordCamp to happen in South India. I am waiting in the airport to return home as I write this. Even though this was the first WordCamp in Kochi, the organizer did a wonderful job and it was planned and executed perfectly. Kudos [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I traveled to Kochi today to attend WordCamp Kochi 2017, the first ever WordCamp to happen in South India. I am waiting in the airport to return home as I write this.</p>
<p>Even though this was the first WordCamp in Kochi, the organizer did a wonderful job and it was planned and executed perfectly. Kudos to the organizers and volunteers.</p>
<h2>Remote working culture in India</h2>
<p>I was very surprised and happy to note that remote working culture has really taken off in India.</p>
<p>When I attended <a href="http://sudarmuthu.com/blog/unit-testing-for-wordpress/">WordCamp Pune in 2015</a>, apart from my colleges who worked at 10up, there were only one or two other people who worked remotely. But this time I found more than 10 people who are working remotely.</p>
<p>There were lot of foreign companies and even some local Indian companies that have adopted remote working.</p>
<p>I don&#8217;t get the eyeballs that I used to get earlier anymore when ever I mention that work 100% remotely <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>My talk about increasing your productivity as a WordPress developer</h2>
<p>I gave a talk about the different developer tools that I use to increase my <a href="https://2017.kochi.wordcamp.org/2017/02/meet-our-next-speaker-sudar-muthu-who-will-be-covering-developer-tools-to-increase-your-productivity/">productivity as a WordPress developer</a>.</p>
<p>Instead of just listing down the tools or just talking about how to install/configure them which anyone can find out easily by a simple web search, I talked about my experience using these tools and the reasons why I choose these tools.</p>
<p><span id="more-3389"></span></p>
<p>I feel that the sessions in which the speaker talks about his or her experiences in using a tool or a technology are far more valuable than the ones where they just list them down or talk about installing and/or configuring them.</p>
<p>I covered the following tools.</p>
<ul>
<li>IDE (PhpStorm, vim)</li>
<li>Vagrant</li>
<li>wp-cli</li>
<li>xDebug</li>
<li>phpcs</li>
<li>phpunit</li>
</ul>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/wordpress-developer-tools-to-increase-productivity">download the slides</a> from my <a href="http://www.slideshare.net/Sudar/">slideshare account</a> or view them below. While you are at it, you can also checkout some of <a href="http://sudarmuthu.com/my-talks">my other talks</a>.</p>
<iframe src='https://www.slideshare.net/slideshow/embed_code/72328059' width='425' height='348' allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
<p>The talk was recorded, so I am sure the organizers will upload them to WordPress TV soon. Once it is uploaded I will link it up here.</p>
<p>There were lot of developers in the audience and the talk was well received. It was good to know that many people liked it. It really made it worth to wake up at 3:30 in the morning to catch the flight to attend this WordCamp.</p>
<p>You can checkout some of these tweets to know how much people liked it <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">Rockstar developer <a href="https://twitter.com/SudarMuthu">@SudarMuthu</a> from <a href="https://twitter.com/10up">@10up</a> demystifying the awesomeness that is <a href="https://twitter.com/wpcli">@wpcli</a> for <a href="https://twitter.com/hashtag/WCKochi?src=hash">#WCKochi</a>! <a href="https://t.co/24kYr1gWvK">pic.twitter.com/24kYr1gWvK</a></p>
<p>&mdash; WordCamp Kochi (@WCKochi) <a href="https://twitter.com/WCKochi/status/833272334647595013">February 19, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr"><a href="https://twitter.com/SudarMuthu">@SudarMuthu</a>  Awesome session..!! Learned a lot. Thank you <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://t.co/N3BJHZ7hyg">https://t.co/N3BJHZ7hyg</a></p>
<p>&mdash; Afsal Rahim (@afsalrahim) <a href="https://twitter.com/afsalrahim/status/833295173308198912">February 19, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">Interesting session by <a href="https://twitter.com/SudarMuthu">@SudarMuthu</a>  on Dev tools! <a href="https://twitter.com/hashtag/WCKochi?src=hash">#WCKochi</a> Some serious productivity tricks shared. <a href="https://t.co/zK8wES6zvg">pic.twitter.com/zK8wES6zvg</a></p>
<p>&mdash; Aravind Ajith (@aravindajith) <a href="https://twitter.com/aravindajith/status/833269361238368256">February 19, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">Now this is hardcore coding. <a href="https://twitter.com/hashtag/WCKochi?src=hash">#WCKochi</a> has it all. <a href="https://twitter.com/SudarMuthu">@SudarMuthu</a> gets deep on coding. <a href="https://t.co/HzbW7XYM97">pic.twitter.com/HzbW7XYM97</a></p>
<p>&mdash; Devu Sukumar (@Devusukumar) <a href="https://twitter.com/Devusukumar/status/833269193063555072">February 19, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr"><a href="https://twitter.com/SudarMuthu">@SudarMuthu</a> nice meeting you and thanks for amazing tips and tricks to improve productivity with <a href="https://twitter.com/hashtag/WordPress?src=hash">#WordPress</a> development. <a href="https://twitter.com/WCKochi">@WCKochi</a></p>
<p>&mdash; Yogesh Londhe (@yogi_Londhe) <a href="https://twitter.com/yogi_Londhe/status/833324827914022912">February 19, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/wordpress-developer-tools-to-increase-productivity/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3389</post-id>	</item>
		<item>
		<title>Cleanup old version of installed boxes in Vagrant</title>
		<link>https://sudarmuthu.com/blog/cleanup-old-version-of-installed-boxes-in-vagrant/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cleanup-old-version-of-installed-boxes-in-vagrant</link>
		<comments>https://sudarmuthu.com/blog/cleanup-old-version-of-installed-boxes-in-vagrant/#comments</comments>
		<pubDate>Fri, 17 Feb 2017 14:05:15 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Apple/Mac/iDevices]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vagrant]]></category>
		<category><![CDATA[VVV]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3378</guid>
		<description><![CDATA[I use Vagrant with VVV extensively for setting up local development environments and have a couple of Vagrant boxes setup in my mac. Recently I was running out of disk space in my Mac which prompted me to look around to see if there are any unnecessary files that can be cleaned up. This let [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I use Vagrant with VVV extensively for setting up local development environments and have a couple of Vagrant boxes setup in my mac.</p>
<p>Recently I was running out of disk space in my Mac which prompted me to look around to see if there are any unnecessary files that can be cleaned up.</p>
<p>This let me to find out that Vagrant stores all versions of boxes that were downloaded even after upgrading them.</p>
<p><span id="more-3378"></span></p>
<p>You can see the list of boxes that I have accumulated over a span of two years.</p>
<p><img data-attachment-id="3385" data-permalink="https://sudarmuthu.com/blog/cleanup-old-version-of-installed-boxes-in-vagrant/vagrant-box-list/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-list.png" data-orig-size="720,810" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="vagrant-box-list" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-list-267x300.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-list.png" class="aligncenter size-full wp-image-3385" src="http://sudarmuthu.com/wp/wp-content/uploads/2017/02/vagrant-box-list.png" alt="" width="720" height="810" srcset="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-list.png 720w, https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-list-267x300.png 267w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<p>After seeing this list I was trying to find a way to cleanup the old version of installed boxes in Vagrant and found the following command.</p>
<p><code>vagrant box prune</code></p>
<p>Executing the above command cleaned up all unused old versions of the vagrant boxes and saved me about 20 GB of space.</p>
<p><img data-attachment-id="3386" data-permalink="https://sudarmuthu.com/blog/cleanup-old-version-of-installed-boxes-in-vagrant/vagrant-box-prune/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-prune.png" data-orig-size="720,615" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="vagrant-box-prune" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-prune-300x256.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-prune.png" class="aligncenter size-full wp-image-3386" src="http://sudarmuthu.com/wp/wp-content/uploads/2017/02/vagrant-box-prune.png" alt="" width="720" height="615" srcset="https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-prune.png 720w, https://sudarmuthu.com/wp-content/uploads/2017/02/vagrant-box-prune-300x256.png 300w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<p>I am adding this to the periodic list of cleanup commands that I run in my Mac.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/cleanup-old-version-of-installed-boxes-in-vagrant/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3378</post-id>	</item>
		<item>
		<title>Looking back at 2016</title>
		<link>https://sudarmuthu.com/blog/looking-back-at-2016/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=looking-back-at-2016</link>
		<comments>https://sudarmuthu.com/blog/looking-back-at-2016/#comments</comments>
		<pubDate>Thu, 16 Feb 2017 16:12:07 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Year End Stats]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3375</guid>
		<description><![CDATA[2016 just ended (Let&#8217;s just pretend that I wrote this post 6 weeks ago 🙂 ) and like the last 8 years here is my year-end review post. Usually I publish this at the beginning of the year, but this year had been crazy so far and I am publishing this after a delay of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2016 just ended (Let&#8217;s just pretend that I wrote this post 6 weeks ago <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ) and like the <a href="http://sudarmuthu.com/blog/tag/year-end-stats/">last 8 years</a> here is my year-end review post.</p>
<p>Usually I publish this at the beginning of the year, but this year had been crazy so far and I am publishing this after a delay of about 6 weeks. Better late than never right? <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-3375"></span></p>
<h2>Personal Highlights</h2>
<p>Personally this had been a full filling as well as a very busy year for me.</p>
<p>First, I am <a href="http://sudarmuthu.com/blog/goodbye-bangalore-hello-again-chennai/">back to Chennai</a>, my hometown after a break of <a href="http://sudarmuthu.com/blog/joining-yahoo/">about 6 years</a>. It is really wonderful to get back to your hometown and I enjoyed it a lot. That&#8217;s the full filling part.</p>
<p><a href="http://sudarmuthu.com/blog/spawned-a-new-process">My son</a> has started going to school which means I have to take up driver duty twice a day and that&#8217;s the busy part <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Blogging</h2>
<p>Let&#8217;s me just accept the fact that my blogging really suffered a lot in 2016. I had the habit of blogging at least once every month. I think I managed to do it for the past 10 years. I broke that streak in July and with that laziness kicked in and the entire year went without any blog post after that <img src="https://s.w.org/images/core/emoji/11/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>This is something I definitely want to break out of this year. I have already started blogging in 2017 and I am planning to keep this habit and plan to get about 25 posts this year (roughly 2 posts a month). Wish me luck <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Reading</h2>
<p>Even though my blogging suffered, I maintained my reading habit. I read <a href="https://www.goodreads.com/challenges/3890-2016-reading-challenge">14 books out of my target of 15 books</a>. You can check out my <a href="https://www.goodreads.com/user/show/28487222-sudar-muthu">GoodReads profile</a> to see the list of books that I read in 2016.</p>
<p>In 2017 I am setting myself a target of 10 books to read.</p>
<h2>Travel</h2>
<p>One good thing that happened to me this year is that I did a lot of travel. I did 3 overseas travels for work and I did an awesome road trip during one of those.</p>
<p>But the highlight is the <a href="http://sudarmuthu.com/blog/tamil-nadu-road-trip/">2 week-long road trip that I took with my family around Tamil Nadu</a>.</p>
<p>I plan to do at least one international and one domestic travel with my family this year.</p>
<h2>New Skills and Continuous Education</h2>
<p>I have the habit of learning something new every year. In some years it was a new programming language and in others it was a new framework. In 2016 I learned about the awesome PHP framework Laravel.</p>
<p>In 2017, I am planning to continue my concentration on PHP and focus a bit more on my frontend skills.</p>
<p>How was 2016 for you and I am interested to know what you are planning for 2017. Please a leave a comment or post a link to your blog post about your plans for 2017.</p>
<p>Happy new year everyone!</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/looking-back-at-2016/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3375</post-id>	</item>
		<item>
		<title>Tamil Nadu Road Trip</title>
		<link>https://sudarmuthu.com/blog/tamil-nadu-road-trip/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tamil-nadu-road-trip</link>
		<comments>https://sudarmuthu.com/blog/tamil-nadu-road-trip/#comments</comments>
		<pubDate>Tue, 31 Jan 2017 18:09:30 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Travel/Trek]]></category>
		<category><![CDATA[Road Trip]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3321</guid>
		<description><![CDATA[After my recent US Road Trip (I am yet to write about it, should write about it soon) I decided to spend the year end time off on a road trip covering historical and religious places around Tamil Nadu and Pondicherry instead of going to typical tourist places like Ooty, Kodaikanal etc. I planned the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>After my recent US Road Trip (I am yet to write about it, should write about it soon) I decided to spend the year end time off on a road trip covering historical and religious places around Tamil Nadu and Pondicherry instead of going to typical tourist places like Ooty, Kodaikanal etc.</p>
<p>I planned the trip such that I will be driving mostly along the coast, since I have a huge affinity to the ocean <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Some of these historical places have confirmed recorded history dating back to more than 1800-1500 years and mentioned in religious texts from millennias ago.</p>
<p>In this trip I also wanted to visit some of the places mentioned in the famous Tamil historical fiction book <a href="http://sudarmuthu.com/blog/book-review-ponniyin-selvan/">Ponniyin Selvan</a>.</p>
<p>I did the entire trip in my car (Ford Figo) with my wife and <a href="http://sudarmuthu.com/blog/spawned-a-new-process/">3 year old son</a>.</p>
<p>Here is my travel log in case you are planning to visit some of these places.</p>
<p><span id="more-3321"></span></p>
<h2>Day 1 (Dec 19, 2016)</h2>
<p>I started my trip from my home in Chennai around noon on Monday and drove along ECR to reach Pondicherry in the evening.</p>
<p><img data-attachment-id="3335" data-permalink="https://sudarmuthu.com/blog/tamil-nadu-road-trip/pondicherry/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry.jpg" data-orig-size="576,1024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;HM 1S&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1482160886&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.85&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.00030441400304414&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Pondicherry" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-169x300.jpg" data-large-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-576x1024.jpg" class="aligncenter wp-image-3335 size-large" src="http://sudarmuthu.com/wp/wp-content/uploads/2017/01/pondicherry-576x1024.jpg" width="576" height="1024" srcset="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry.jpg 576w, https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-169x300.jpg 169w" sizes="(max-width: 576px) 100vw, 576px" /></p>
<p>I had already booked my stay for 3 days in St James court Beach Resort. I choose this resort since it had easy access to beach and also a swimming pool.</p>
<p>After checking-in I spent the rest of the evening playing with my son in the beach and swimming in the pool.</p>
<p><img data-attachment-id="3336" data-permalink="https://sudarmuthu.com/blog/tamil-nadu-road-trip/pondicherry-beach/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-beach.jpg" data-orig-size="768,1024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1482229870&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.12&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00029498525073746&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Pondicherry Beach" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-beach-225x300.jpg" data-large-file="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-beach-768x1024.jpg" class="aligncenter size-large wp-image-3336" src="http://sudarmuthu.com/wp/wp-content/uploads/2017/01/pondicherry-beach-768x1024.jpg" alt="" width="768" height="1024" srcset="https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-beach.jpg 768w, https://sudarmuthu.com/wp-content/uploads/2017/01/pondicherry-beach-225x300.jpg 225w" sizes="(max-width: 768px) 100vw, 768px" /></p>
<h2>Day 2 (Dec 20, 2016)</h2>
<p>The next day was very cloudy, so I spent the entire morning in the beach again. In the after noon I went around Pondicherry and visited Bharathi Park and then roamed around the rocks along the beach that is called using different names like <a href="https://en.wikipedia.org/wiki/Promenade_Beach">Rock beach or Gandhi beach or Promenade beach</a>.</p>
<p>It was a exiting experience to sit on the rocks and watch the water flash on the rocks and spray on you. My son really enjoyed it. We stayed there for some time and then noticed that if you look carefully, you can see some crabs in the rocks.</p>
<p>There was an old harbour and a dock near-by. I wanted to get in and walk along the dock, but it looked like that place is not open to public anymore <img src="https://s.w.org/images/core/emoji/11/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Day 3 (Dec 21, 2016)</h2>
<p>The next day we went for boating in Chunnambar backwaters and reached Paradise beach. Paradise beach is surrounded by backwaters and that is the reason why it is called as Paradise island.</p>
<p>While on the boat, I saw people doing snorkeling and Scuba Diving in the back waters. But after reaching the beach, the life guards didn&#8217;t allow us to get to the part where the back waters connect with the ocean since it is very deep there and dangerous. I was little disappointed with it, but I am planning to visit that place again in my next trip and hire a boat or Scuba Divers to dive there.</p>
<a href="https://sudarmuthu.com/blog/tamil-nadu-road-trip/#gallery-3321-1-slideshow">Click to view slideshow.</a>
<p>After the boat ride, I visited Botanical garden where my son enjoyed playing with all the play items in the park.</p>
<h2>Day 4 (Dec 22, 2016)</h2>
<p>We checked out the resort and went to Cuddalore. On the way I visited Auroville and Ousteri Lake. The Ousteri Lake was good, but since it was a weekday, boating was closed. It would had been a good experience to go on boating in this lake.</p>
<p><img data-attachment-id="3339" data-permalink="https://sudarmuthu.com/blog/tamil-nadu-road-trip/ousteri-lake/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake.jpg" data-orig-size="1280,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;HM 1S&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1482411626&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.85&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.00043763676148797&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Ousteri Lake" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake-300x169.jpg" data-large-file="https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake-1024x576.jpg" class="alignleft size-large wp-image-3339" src="http://sudarmuthu.com/wp/wp-content/uploads/2017/01/Ousteri-Lake-1024x576.jpg" alt="" width="1024" height="576" srcset="https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake-1024x576.jpg 1024w, https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake-300x169.jpg 300w, https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake-768x432.jpg 768w, https://sudarmuthu.com/wp-content/uploads/2017/01/Ousteri-Lake.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>We reached Cuddalore around noon and checked into Hotel Suriya Priya for the night. I didn&#8217;t book this hotel in advance.</p>
<p>In the evening I visited the famous Thiruvanthipuram Temple (Vishnu) and Paadaleswarar Temple (Shiva). Both these temples are old and have major religious significance.</p>
<h2>Day 5 (Dec 23, 2016)</h2>
<p>In the morning, we checked out of the hotel and started towards Chidambaram. On the way we visited Silver Beach which is near Cuddalore. The beach was good, but it is very deep and there were lot of warnings asking you not to get into the water or swim.</p>
<p>After that we went to <a href="https://en.wikipedia.org/wiki/Pichavaram">Pichavaram Mangrove Forest</a> and went for boating to explore the Mangrove trees and different islands. It was one of the best highlights of the trip for me. The beauty of the place is beyond words and I am planning to write a separate blog post about this place. Till then enjoy these pictures.</p>
<a href="https://sudarmuthu.com/blog/tamil-nadu-road-trip/#gallery-3321-2-slideshow">Click to view slideshow.</a>
<p>We reached Chidambaram after lunch and checked into Hotel Akshaya. I didn&#8217;t book this hotel in advance.</p>
<p>In the evening we visited <a href="https://en.wikipedia.org/wiki/Veeranam_Lake">Veeranam Lake</a>, which was built by Cholas about 1200 years ago. This is also the place where the Ponniyin Selvan book starts.</p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">Enjoying sun set on the banks of Veranayam Lake where Vanthiyadevan starts his journey in the beginning of Ponniyin Selvan <a href="https://t.co/7xn4RB5EEy">pic.twitter.com/7xn4RB5EEy</a></p>
<p>&mdash; Sudar Muthu (@SudarMuthu) <a href="https://twitter.com/SudarMuthu/status/812262322517327873">December 23, 2016</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>In the night, we visited the famous <a href="https://en.wikipedia.org/wiki/Thillai_Nataraja_Temple,_Chidambaram">Thillai Nataraja Temple</a> which was built by Cholas around 1100 years ago. This temple has lot of significance both from historical as well as religious perspective.</p>
<h2>Day 6 (Dec 24, 2016)</h2>
<p>We checked out early in the morning and crossed Kollidam river on the way to <a href="https://en.wikipedia.org/wiki/Puhar">Poompuhar</a>.</p>
<p>Kollidam river is a very famous river from historical sense in Tamil Nadu and is the northern distributary of the Kaveri River. Kollidam river is also mentioned in Ponniyin Selvan where the main character of the book, Vallavaraiyan Vandiyadevan crosses the river to continue his journery from Veeranam Lake.</p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">Earlier today I crossed the Kolidam river like Vanthiyadevan. Another important place mentioned in Ponniyin Selvan <a href="https://t.co/vNc1yapmmJ">pic.twitter.com/vNc1yapmmJ</a></p>
<p>&mdash; Sudar Muthu (@SudarMuthu) <a href="https://twitter.com/SudarMuthu/status/812540852899713024">December 24, 2016</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Poompuhar is an ancient port city which has huge culturual and historical significance. Poompuhar is also the city where the characters Kovalan and Kannagi live in the famous Tamil epic <a href="https://en.wikipedia.org/wiki/Silappatikaram">Silappatikaram</a>. It is also the place where the famous South Indian river Kaveri joins the sea.</p>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">I am standing on the shores of Pombuhar. The place that was the capital of ancient Cholas and a major port city some 1800 years ago. <a href="https://t.co/X7y1OjvKwD">pic.twitter.com/X7y1OjvKwD</a></p>
<p>&mdash; Sudar Muthu (@SudarMuthu) <a href="https://twitter.com/SudarMuthu/status/812541632725688320">December 24, 2016</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>We then drove to Karaikal and visited the famous <a href="https://en.wikipedia.org/wiki/Karaikal_Ammayar_Temple">Karaikal Ammayar Temple</a> which is dedicated to one of the sixty-three Nayanmars.</p>
<p>After that we drove to Kodiyakarai also known as Point Calimere, which is the location in Tamil Nadu map that looks like a nose. Along the way we passed through Nagapattinam, velankanni which has the famous Roman Catholic Latin Rite shrine called the Basilica of Our Lady of Good Health and Nagore Dargah that attracts pilgrims from both Islam and Hinduism.</p>
<p>I stayed in VMT guest house in Kodiyakarai. I booked this palce in advance since it is very difficult to get acomodation in Kodiyakarai.</p>
<p>I definitely wanted to visit Kodiyakarai since it had lot of significance for me. I will write a separate blog post about Kodiyakarai soon.</p>
<ul>
<li>Geographical &#8211; Kodiyakarai is the point in Tamil Nadu map that looks like a nose along the coast.</li>
<li>Wild Life &#8211; Kodiyakarai has both Animal and Bird Sanctuaries and is the only place in South Asia where you can see both blackbuck and flamingos in huge numbers.</li>
<li>Historical &#8211; Kodiyakarai has (remains of) the light house that is belived to have been built by Cholas at least a thousand years ago. Sadly this light house got hugely damaged during the 2004 Tsunami.</li>
<li>Religious &#8211; Kodiyakarai is belived to be the place where Lord Rama first saw Sri Lanka before entering it through Rameswaram. There is a small shrine called Raman Patham which is belived to have the foot print of Lard Rama.</li>
<li>Fiction &#8211; Kodiyakarai and the light house is mentioned in great detail in the famous and one of my favourite Tamil historical fiction <a href="http://sudarmuthu.com/blog/book-review-ponniyin-selvan/">Ponniyin Selvan</a></li>
</ul>
<blockquote class="twitter-tweet" data-width="500">
<p lang="en" dir="ltr">The remains of the lighthouse built by Cholas around 1300 years ago in Kodiyakarai deep inside the forest at the beach. <a href="https://t.co/F9CH9tLQm1">pic.twitter.com/F9CH9tLQm1</a></p>
<p>&mdash; Sudar Muthu (@SudarMuthu) <a href="https://twitter.com/SudarMuthu/status/812859621165535232">December 25, 2016</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<h2>Day 7 (Dec 25, 2016)</h2>
<p>We got up in the morning and visited both the animal and bird Sanctuaries. We spoted some blackbucks and flamingos and lot of peacocks, spotted deers and monkeys. Inside the animal sanctuary we also saw the light house that is clamied to be built by Cholas around 1300 years ago. This is also the light house that is mentioned in Ponniyin Selvan as the one that was maintained by the family of Poonguzhali.</p>
<a href="https://sudarmuthu.com/blog/tamil-nadu-road-trip/#gallery-3321-3-slideshow">Click to view slideshow.</a>
<p>After visiting the sanctuaries, we went to the recent light house that is built by the government of India in the recent years which is allowed for public. We climbed on top of the light house and got a good view of the sancutary and the ocean.</p>
<p>We left Kodiyakarai and then went to <a href="https://en.wikipedia.org/wiki/Devipattinam">Devipattinam</a> to visit the Navagraha temple in Navashabashanam which is belived to have been worshiped first by Lord Rama. The speciality of this temple is that the Navagraha statues are inside the sea.</p>
<p>We left Devipattinam in the evening and reached Rameshwaram in the night after crossing the famous <a href="https://en.wikipedia.org/wiki/Pamban_Bridge">Pamban bridge</a> and stayed in Hotel Senthil Andavar. I had booked this hotel in advance, otherwise I might not have gotten a place to stay since Rameshwaram was extremely crowded due to it being school vacation time.</p>
<a href="https://sudarmuthu.com/blog/tamil-nadu-road-trip/#gallery-3321-4-slideshow">Click to view slideshow.</a>
<h2>Day 8 (Dec 26, 2016)</h2>
<p>We woke up a little early in the morning and visited the <a href="https://en.wikipedia.org/wiki/Tirthas_of_Rameswaram">22 Tirthas of Rameswaram</a> (water from holy bodies, according to Hindu legend) and then visited the <a href="https://en.wikipedia.org/wiki/Ramanathaswamy_Temple">Ramanathaswamy temple</a>, which has the longest corridor in Asia. This temple is believed to be built by Lord Rama to worship Lord Shiva to absolve the sins created during the Ramayana war at Sri Lanka.</p>
<p>After that we went to Dhanushkodi which is the southern tip of the Pamban island. Dhanushkodi used to have a railway station connecting Indian mainland and a port connecting Sri Lanka but has been extensively damaged during the <a href="https://en.wikipedia.org/wiki/1964_Rameswaram_cyclone">1964 cyclone</a>. These days it is just a ghost town where only a handful of fishermen family lives without electricity or any basic amenities.</p>
<p>I wanted to visit the tip of Dhanushkodi called the Sethu Point. So I drove till Mukundarayar Chathiram beyond which private vehicles are not allowed and then hired a mini-van to cover the remaining distance. They took me along the coast in a very bumpy ride till the old ghost town of Dhanushkodi and said that it is the tip. But it was at least 4-5 KM&#8217;s before the tip <img src="https://s.w.org/images/core/emoji/11/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> There is also a road that has been laid, but it is not open to public yet <img src="https://s.w.org/images/core/emoji/11/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> I am planning to go back to this palce again so that I can visit the very tip of Dhanushkodi.</p>
<a href="https://sudarmuthu.com/blog/tamil-nadu-road-trip/#gallery-3321-5-slideshow">Click to view slideshow.</a>
<p>We left Dhanushkodi and then drove to <a href="https://en.wikipedia.org/wiki/Thoothukudi">Thoothukudi</a>, where we stayed in Hotel Raj. I didn&#8217;t book this place in advance.</p>
<h2>Day 9 (Dec 27, 2016)</h2>
<p>After breakfast, we left Thoothukudi and went to Thiruchendur to visit the famous <a href="https://en.wikipedia.org/wiki/Thiruchendur_Murugan_Temple">Thiruchendur Murugan Temple</a>, which is believed to be built around 1200 years.</p>
<p>After that the original plan was to continue the drive along the coast to reach Kanyakumari, but unfortunately there was a cyclone warning and it started to rain a bit. So instead we took a detour and reached Courtallam, so that we can relax in Courtallam falls.</p>
<p>We checked into Hotel Saaral for two days. I didn&#8217;t book this place in advance.</p>
<h2>Day 10 (Dec 28, 2016)</h2>
<p>We mostly relaxed on this day by just taking bath in Courtallam falls and then having a heavy lunch in Koora kadai mess in Tenkasi.</p>
<h2>Day 11 (Dec 29, 2016)</h2>
<p>We started the day by taking bath again in Courtallam falls and then started our return journey back to Chennai. Instead of taking the typical route back to Chennai, we decided to go via Salem and visit Namakkal.</p>
<p>From Courtallam we visited <a href="https://en.wikipedia.org/wiki/Namakkal_Anjaneyar_Temple">Namakkal Anjaneyar Temple</a> and then stayed in Hotel Sing Saral in Salem.</p>
<h2>Day 12 (Dec 30, 2016)</h2>
<p>We checked out the hotel after breakfast and started our return journey back to Chennai. On the way we visited Ambur and had lunch in the famous Star Briyani and then reached my home in Chennai at about 6:15 PM.</p>
<h2>Google Map of the entire trip</h2>
<p>Here is the Google Map of the entire trip.</p>
<p><iframe style="border: 0;" src="https://www.google.com/maps/embed?pb=!1m72!1m12!1m3!1d4014721.949466404!2d76.50622261771862!3d10.68604045598082!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!4m57!3e0!4m3!3m2!1d12.880907299999999!2d80.2037623!4m5!1s0x3a5361ab8e49cfcf%3A0xcc6bd326d2f0b04e!2sPuducherry!3m2!1d11.913859799999999!2d79.8144722!4m5!1s0x3a54cfd84c45e249%3A0x1390b454b9a03325!2sVeeranam+Lake%2C+Tamil+Nadu!3m2!1d11.3216231!2d79.5434841!4m5!1s0x3a551de9ede07313%3A0x91428774ad7e7766!2sPoompuhar%2C+Tamil+Nadu!3m2!1d11.150300699999999!2d79.8436796!4m5!1s0x3aff8dfcb894795f%3A0x85f3f54438a01436!2skodiyakarai%2C+Tamil+Nadu!3m2!1d10.284504199999999!2d79.8240715!4m5!1s0x3afe02ef6ac9962f%3A0x412246047441aaba!2sDhanushkodi%2C+Tamil+Nadu!3m2!1d9.179371999999999!2d79.4183427!4m5!1s0x3b0390118f119e01%3A0xb9bc989564965383!2sThiruchendur%2C+Tamil+Nadu!3m2!1d8.4963081!2d78.1250848!4m5!1s0x3b042a2dd855fc63%3A0x585150bdffcf2f74!2sCourtallam%2C+Tamil+Nadu!3m2!1d8.9339131!2d77.27804019999999!4m5!1s0x3babf1ccf52cba0b%3A0xee9989007068ca47!2sSalem%2C+Tamil+Nadu!3m2!1d11.664325!2d78.1460142!4m3!3m2!1d12.880907299999999!2d80.2037623!5e0!3m2!1sen!2sin!4v1485886060654" width="600" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2>Some facts</h2>
<ul>
<li>Total distance &#8211; 2050 KM</li>
<li>Duration &#8211; 12 days</li>
<li>Number of districts in Tamil Nadu that I covered &#8211; 22 out of 32 districts</li>
<li>Roads in Tamil Nadu are awesome. Even some of the very remote places had decent drivable roads.</li>
</ul>
<p>This is my first major road trip with my son and I was little hesitant in the beginning, but he perfectly adapted to the trip and enjoyed a lot. I am planning to do more such trips in future and I am definitely planning to visit some of these places again, especailly Kodiyakarai and Dhanushkodi.</p>
<p>This is what I did for my year end vacation. How did you spent your year end?</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/tamil-nadu-road-trip/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3321</post-id>	</item>
		<item>
		<title>Email Log WordPress plugin v1.9.1 released</title>
		<link>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-1-released/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=email-log-wordpress-plugin-v1-9-1-released</link>
		<comments>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-1-released/#comments</comments>
		<pubDate>Sat, 02 Jul 2016 02:27:58 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Email Log]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3260</guid>
		<description><![CDATA[Just a quick note to let you all know that I have released v1.9.1 of my Email Log WordPress plugin that allows you to log every email that is sent from WordPress. This released fixed a minor security bug that allows logged-in unprivileged users to view content of the logged email. Since it is a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Just a quick note to let you all know that I have released v1.9.1 of my <a href="http://sudarmuthu.com/wordpress/email-log/">Email Log WordPress plugin</a> that allows you to log every email that is sent from WordPress.</p>
<p>This released fixed a minor security bug that allows logged-in unprivileged users to view content of the logged email.</p>
<p>Since it is a security fix, it is a mandatory update.</p>
<p><span id="more-3260"></span></p>
<h2>Security Issue</h2>
<p>I thought of explaining the security issue from a developer perspective as well so that it might help other developers to fix similar issues.</p>
<p>The plugin makes an ajax call to retrieve the contents of a logged email that is displayed in a pop-up. The callback for this ajax request was not checking whether the user has the capability to view this logged email.</p>
<p>This means that any logged-in user (even if he doesn&#8217;t have access to view the emails) will still be able to view the content of the email if he knows the id of that email in the email log table by making a special url that mimics the url made by the ajax request.</p>
<p>I fixed it by adding an if condition to check whether the user has the required capability by calling the <code>current_user_can</code> function.</p>
<p>So the lesson learnt is that you have to check the user capabilities in all ajax request that you make <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Download</h2>
<p>The easiest way to update the plugin is to automatically update it from the WordPress admin console.</p>
<p>If for some reason you don’t want to automatically update the plugin or would prefer to download the plugin then you can <a href="http://downloads.wordpress.org/plugin/email-log.zip">download it from WordPress plugin repo as a zip file</a>.</p>
<p>Try out the latest release and let me know if you have any feedback or comments.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-1-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3260</post-id>	</item>
		<item>
		<title>[Book Review] Why Do Buses Come in Threes?</title>
		<link>https://sudarmuthu.com/blog/book-review-why-do-buses-come-in-threes/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=book-review-why-do-buses-come-in-threes</link>
		<comments>https://sudarmuthu.com/blog/book-review-why-do-buses-come-in-threes/#comments</comments>
		<pubDate>Thu, 23 Jun 2016 16:28:38 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Maths]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3249</guid>
		<description><![CDATA[If you look at my Good Reads profile, you will know that I have read lot of fiction lately. I wanted to take a break and so I picked up Why Do Buses Come in Three: The Hidden Mathematics of Everyday Life by Robert Eastaway and Jeremy Wyndham. I came to know about this book [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you look at my <a href="https://www.goodreads.com/user/show/28487222-sudar-muthu">Good Reads profile</a>, you will know that I have read lot of fiction lately. I wanted to take a break and so I picked up <a href="https://www.goodreads.com/book/show/1225641.Why_Do_Buses_Come_in_Threes"><strong>Why Do Buses Come in Three: The Hidden Mathematics of Everyday Life</strong></a> by <strong>Robert Eastaway</strong> and <strong>Jeremy Wyndham</strong>.</p>
<p>I came to know about this book through Good Read&#8217;s recommendation and added it to my to-read list probably a year ago. When I wanted to read a non-fiction book for a break I found it in my to-read list and immediately picked it up.</p>
<p>I found that alternating between <a href="http://sudarmuthu.com/blog/book-review-ponniyin-selvan/">fiction</a> and <a href="http://sudarmuthu.com/blog/book-review-a-brief-history-of-time/">non-fiction</a> books is a nice way to read books from different genre and I have followed it up for the last couple of years.</p>
<p><a href="http://sudarmuthu.com/wp/wp-content/uploads/2016/06/why-do-buses-come-in-threes.jpg"><img data-attachment-id="3252" data-permalink="https://sudarmuthu.com/blog/book-review-why-do-buses-come-in-threes/why-do-buses-come-in-threes/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2016/06/why-do-buses-come-in-threes.jpg" data-orig-size="333,499" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="why-do-buses-come-in-threes" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2016/06/why-do-buses-come-in-threes-200x300.jpg" data-large-file="https://sudarmuthu.com/wp-content/uploads/2016/06/why-do-buses-come-in-threes.jpg" class="alignright size-medium wp-image-3252" src="http://sudarmuthu.com/wp/wp-content/uploads/2016/06/why-do-buses-come-in-threes-200x300.jpg" alt="why-do-buses-come-in-threes" width="200" height="300" srcset="https://sudarmuthu.com/wp-content/uploads/2016/06/why-do-buses-come-in-threes-200x300.jpg 200w, https://sudarmuthu.com/wp-content/uploads/2016/06/why-do-buses-come-in-threes.jpg 333w" sizes="(max-width: 200px) 100vw, 200px" /></a></p>
<h2>Synopsis</h2>
<p><strong>Why Do Buses Come in Three: The Hidden Mathematics of Everyday Life</strong> tries to explain how Maths governs most of the things that we experience in everyday life. It answers some of the questions that we have everyday like why do buses come in threes (mentioned in the title), or why showers are always either too hot or too cold or why do clever people get things wrong etc using Maths.</p>
<p>In addition to answering these questions, the book also mentions the theory behind answers in simple terms.</p>
<h2>Things I learned from this book</h2>
<p>The major thing that I learned from this book is that some times common sense (or intuition) may not be correct. It is either your brain trying to do an approximation (and failing miserably) or some clever marketer who is using statistics to lie to you <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Some of the famous ones include</p>
<ul>
<li>Why do clever people get things wrong?</li>
<li>Bad luck and number 13</li>
<li>Why am I always in traffic jams?</li>
<li>How can a TV program claim that it was watched by x number of people?</li>
</ul>
<p>The other thing that I learned from this book are a couple of magic tricks based on Maths that were mentioned in the last chapter.</p>
<h2>Things I liked in this book</h2>
<p>The main thing that I liked about this book is that it took most of the common day problems that pretty much everyone would have witnessed and then answered it using Maths. I found it very appealing since you can easily understand as you would have already experienced them.</p>
<p>The other thing that I liked about this book is that the answers were explained in very simple language which means you can understand most of them with very limited knowledge of Maths.</p>
<p>Also I liked the last chapter that had some magic tricks based on Maths that you can try with your friends <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>My Rating</h2>
<p>My rating for this book is 4 out of 5.</p>
<p>The only reason that I didn’t give 5 stars was because some of the theory that were mentioned in the book were not explained properly. I agree that this book was not about the theory, but I felt that some of it could either have been removed or explained a bit more.</p>
<h2>My next book</h2>
<p>After finishing the current set of fiction books that I am reading, I am planning to read <a href="https://www.goodreads.com/book/show/18213403-no-place-to-hide"><strong>No Place to Hide</strong></a> by Glenn Greenwald. The author is the reporter broke who broke the story about NSA surveillance scandal based on the documents released by Edward Snowden and in this book the author explores the extraordinary co-operation between private industry and the NSA, and the far-reaching consequences of the government’s surveillance program.</p>
<p>Sounds like an interesting read <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/book-review-why-do-buses-come-in-threes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3249</post-id>	</item>
		<item>
		<title>Email Log WordPress plugin v1.9 released</title>
		<link>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-released/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=email-log-wordpress-plugin-v1-9-released</link>
		<comments>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-released/#comments</comments>
		<pubDate>Sun, 19 Jun 2016 15:19:30 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Email Log]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3244</guid>
		<description><![CDATA[I just released version 1.9 of my Email Log WordPress plugin. This released fixed an issue with pagination while viewing log files and various improvements at code level. About Email Log WordPress plugin Email Log is a WordPress plugin that allows you to log every email sent through WordPress and provides a UI where you [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just released version 1.9 of my <a href="http://sudarmuthu.com/wordpress/email-log/">Email Log WordPress plugin</a>. This released fixed an issue with pagination while viewing log files and various improvements at code level.</p>
<h2>About Email Log WordPress plugin</h2>
<p>Email Log is a WordPress plugin that allows you to log every email sent through WordPress and provides a UI where you can view them. The logged emails can be searched based on date, email address or subject.</p>
<p><span id="more-3244"></span></p>
<h2>Fixes</h2>
<p>The major issue that got fixed in this release is the issue with pagination. Because of the way I constructed the count query, the pagination in the view log screen was having issues if you cleared your logs.</p>
<p>This issue was reported in the support <a href="https://wordpress.org/support/topic/pages-incorrect?replies=6">forum</a> and was a bit difficult to replicate since it happened only when you deleted huge number of logs.</p>
<p>One side effect of fixing this issue is that it has also improved the performance of the view log screen if you there were huge number of email logs <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Code Improvements</h2>
<p>Apart from the above bug fix, this release also had lot of improvements to the code like the following.</p>
<ul>
<li>Full PHP Doc block for all public methods</li>
<li>Explicit access modifiers to all class methods</li>
<li>Cleaned up and removed unused code</li>
</ul>
<p>All the above code improvements were single-handedly done by <a href="http://mariadanieldeepak.com/blog/">Daniel</a>. Thanks Daniel!</p>
<h2>Unit Tests</h2>
<p>Another major improvement is that I have started adding Unit tests for the plugin. Right now the code coverage is very low, but I am planning to improve it with help from Daniel.</p>
<p>I am planning to add lot of new features in the next release (v2.0) and having unit tests before that will definitely shorten the testing time for next release.</p>
<h2>Download</h2>
<p>The easiest way to update the plugin is to automatically update it from the WordPress admin console.</p>
<p>If for some reason you don&#8217;t want to automatically update the plugin or would prefer to download the plugin then you can download it from <a href="https://wordpress.org/plugins/email-log/">WordPress plugin repo as a zip file</a>.</p>
<p>Try out the latest release and let me know if you have any feedback or comments.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/email-log-wordpress-plugin-v1-9-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3244</post-id>	</item>
		<item>
		<title>How to find if you are on the last page of a multi-page post in WordPress</title>
		<link>https://sudarmuthu.com/blog/how-to-find-if-you-are-on-the-last-page-of-a-multi-page-post-in-wordpress/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-find-if-you-are-on-the-last-page-of-a-multi-page-post-in-wordpress</link>
		<comments>https://sudarmuthu.com/blog/how-to-find-if-you-are-on-the-last-page-of-a-multi-page-post-in-wordpress/#comments</comments>
		<pubDate>Sat, 18 Jun 2016 06:11:16 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Page Breaks]]></category>
		<category><![CDATA[pagination]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3240</guid>
		<description><![CDATA[Recently I came across a requirement at work where I had to find out if a particular post had pagination (page-breaks) and if yes then whether the user is on the last of those pages. Even though this sounded simple, I had to dig into WordPress core source code to find out a way to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recently I came across a requirement at work where I had to find out if a particular post had pagination (page-breaks) and if yes then whether the user is on the last of those pages.</p>
<p>Even though this sounded simple, I had to dig into WordPress core source code to find out a way to solve it since there were no helper functions and you have to use <a href="https://codex.wordpress.org/Global_Variables">global variables</a> to figure it out.</p>
<p>I thought of writing about my findings here so that it would be helpful to others and I would also know where to look up when I need to do it again <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-3240"></span></p>
<h2>Pagination vs Page breaks</h2>
<p>WordPress has two types of paginations.</p>
<ul>
<li>Pagination at list of post level</li>
<li>Pagination at post level (Page breaks)</li>
</ul>
<h3>Pagination at list of post level</h3>
<p>This is the most commonly used pagination, where you split a list of posts into different pages. Eg: In the blog homepage, the list of posts are ordered by post date and are split into different pages, so that each page displays about 10-15 posts. The same thing is also done in any archive pages where the posts are listed by category, tag, author etc.</p>
<p>WordPress has a set of <a href="https://codex.wordpress.org/Pagination">helper functions for pagination</a> that you can use in your theme to get this pagination to work.</p>
<h3>Pagination at post leave (Page Breaks)</h3>
<p>WordPress also allows you to split an individual post into multiple pages. This is used when you have a really long post and you want to split it up into multiple pages. This is done by inserting page breaks tag <code>&lt;!--nextpage--&gt;</code> with in the content.</p>
<p>This is not very common. In your theme you can the <a href="https://developer.wordpress.org/reference/functions/wp_link_pages/"><code>wp_link_pages</code></a> to output the navigation, but you don&#8217;t have any helper functions to find out which page you are on.</p>
<h2>Global variables to the rescue</h2>
<p>Even though we don&#8217;t have helper functions to find out about pages based on page links, there are a couple of global variables that have this information.</p>
<ul>
<li><code>$multipage</code> (boolean) Flag to know if the current post has multiple pages or not. Returns true if the post has multiple pages.</li>
<li><code>$numpages</code> (int) Total number of pages in the post.</li>
<li><code>$page</code> (int) The current page number of the post being viewed.</li>
</ul>
<h2>Finding out if you are in the last page</h2>
<p>Now, back to my requirement which made me to research this <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>My requirement was to find out if the user is currently viewing the last page of the post.</p>
<p>Using the above global variables I came up with the following little helper function.</p>
<style> #wrap_githubgist7e7d8988201775d53103bffb34dad039 .gist-data {max-height: 100%;} </style><div id="wrap_githubgist7e7d8988201775d53103bffb34dad039" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist36909668\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-last-page-php\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-php  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"last-page.php content, created by sudar on 06:08AM on June 18, 2016.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"last-page.php\">\n        <tr>\n          <td id=\"file-last-page-php-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-last-page-php-LC1\" class=\"blob-code blob-code-inner js-file-line\">&lt;?php<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-last-page-php-LC2\" class=\"blob-code blob-code-inner js-file-line\">/**<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-last-page-php-LC3\" class=\"blob-code blob-code-inner js-file-line\"> * Is the current page the last page of the multi-page post.<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-last-page-php-LC4\" class=\"blob-code blob-code-inner js-file-line\"> *<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-last-page-php-LC5\" class=\"blob-code blob-code-inner js-file-line\"> * @return bool True if last page, False otherwise.<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-last-page-php-LC6\" class=\"blob-code blob-code-inner js-file-line\"> */<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-last-page-php-LC7\" class=\"blob-code blob-code-inner js-file-line\">function is_last_page() {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-last-page-php-LC8\" class=\"blob-code blob-code-inner js-file-line\">	global \$page, \$numpages, \$multipage;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-last-page-php-LC9\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-last-page-php-LC10\" class=\"blob-code blob-code-inner js-file-line\">	if ( \$multipage ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-last-page-php-LC11\" class=\"blob-code blob-code-inner js-file-line\">		if ( \$page != \$numpages ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-last-page-php-LC12\" class=\"blob-code blob-code-inner js-file-line\">			return false;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-last-page-php-LC13\" class=\"blob-code blob-code-inner js-file-line\">		} else {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-last-page-php-LC14\" class=\"blob-code blob-code-inner js-file-line\">			return true;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-last-page-php-LC15\" class=\"blob-code blob-code-inner js-file-line\">		}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-last-page-php-LC16\" class=\"blob-code blob-code-inner js-file-line\">	}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-last-page-php-LC17\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-last-page-php-LC18\" class=\"blob-code blob-code-inner js-file-line\">	return true;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-last-page-php-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-last-page-php-LC19\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/7e7d8988201775d53103bffb34dad039/raw/952708998f677f3c08900de3d907da792a69fd46/last-page.php\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/7e7d8988201775d53103bffb34dad039#file-last-page-php\" class=\"Link--inTextBlock\">\n          last-page.php\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Is the current page the last page of the multi-page post.
 *
 * @return bool True if last page, False otherwise.
 */
function is_last_page() {
	global $page, $numpages, $multipage;

	if ( $multipage ) {
		if ( $page != $numpages ) {
			return false;
		} else {
			return true;
		}
	}

	return true;
}</pre></code></noscript></div></div>
<p>Hope this saves time for someone else <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/how-to-find-if-you-are-on-the-last-page-of-a-multi-page-post-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3240</post-id>	</item>
		<item>
		<title>Easy Retweet WordPress plugin v3.1 Released</title>
		<link>https://sudarmuthu.com/blog/easy-retweet-wordpress-plugin-v3-1-released/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=easy-retweet-wordpress-plugin-v3-1-released</link>
		<comments>https://sudarmuthu.com/blog/easy-retweet-wordpress-plugin-v3-1-released/#respond</comments>
		<pubDate>Sun, 14 Feb 2016 07:54:07 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Easy Retweet]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3198</guid>
		<description><![CDATA[As I promised in my year end review post, I have started working on my WordPress plugins. My Easy Retweet WordPress plugin badly needed an update to fix a couple of warnings and I just released v3.1 of the plugin with a couple of fixes and some new features. About Easy Retweet WordPress plugin Easy [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As I promised in my <a href="http://sudarmuthu.com/blog/looking-back-at-2015/">year end review post</a>, I have started working on my WordPress plugins. My <a href="http://sudarmuthu.com/wordpress/easy-retweet">Easy Retweet WordPress plugin</a> badly needed an update to fix a couple of warnings and I just released v3.1 of the plugin with a couple of fixes and some new features.</p>
<h2>About Easy Retweet WordPress plugin</h2>
<p><a href="http://sudarmuthu.com/wordpress/easy-retweet">Easy Retweet WordPress Plugin</a> that allows you to easily add Twitter tweet buttons to your WordPress posts.</p>
<p>You can choose to add these buttons using any one of the following ways</p>
<ul>
<li>Automatic way – Just configure the button in the settings screen</li>
<li>Using shortcodes</li>
<li>Using template functions</li>
</ul>
<p>You can also enable <a href="http://sudarmuthu.com/blog/easy-retweet-plugin-now-supports-google-analytics-tracking/">Google Analytics tracking</a> for the links that are generated by buttons created by this plugin.</p>
<p><span id="more-3198"></span></p>
<h2>Changes in this version</h2>
<p>The following are the changes that went in this release</p>
<ul>
<li>Added support for the new Twitter buttons</li>
<li>Removed support for deprecated bit.ly buttons</li>
<li>Fixed a tons of warnings</li>
</ul>
<p>Because of the above changes that went in, this release is a mandatory upgrade. So make sure you update the plugin.</p>
<h2>Download</h2>
<p>The easiest way to update the plugin is to automatically update it from the WordPress admin console.</p>
<p>If for some reason you don’t want to automatically update the plugin or would prefer to download the plugin then you can download it from <a href="https://wordpress.org/plugins/easy-retweet/">WordPress plugin repo</a> as a zip file.</p>
<p>Try out the latest release and let me know if you have any feedback or comments.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/easy-retweet-wordpress-plugin-v3-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3198</post-id>	</item>
		<item>
		<title>Creating custom tables with correct Character Set and Collation in WordPress</title>
		<link>https://sudarmuthu.com/blog/creating-custom-tables-with-correct-character-set-and-collation-in-wordpress/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=creating-custom-tables-with-correct-character-set-and-collation-in-wordpress</link>
		<comments>https://sudarmuthu.com/blog/creating-custom-tables-with-correct-character-set-and-collation-in-wordpress/#respond</comments>
		<pubDate>Fri, 05 Feb 2016 16:31:13 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Database Programming]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3192</guid>
		<description><![CDATA[Sometime ago I wrote a blog post about how to properly create custom tables in WordPress that are also compatible with WordPress Multisite. One thing that I didn&#8217;t mention in that article is setting the correct character set and collation for those custom tables. What are character set and collation? From MySQL docs: A character [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sometime ago I wrote a blog post about <a href="http://sudarmuthu.com/blog/how-to-properly-create-tables-in-wordpress-multisite-plugins/">how to properly create custom tables in WordPress</a> that are also compatible with WordPress Multisite.</p>
<p>One thing that I didn&#8217;t mention in that article is setting the correct character set and collation for those custom tables.</p>
<h2>What are character set and collation?</h2>
<p>From MySQL <a href="http://dev.mysql.com/doc/refman/5.0/en/charset-general.html">docs</a>:</p>
<blockquote><p>A character set is a set of symbols and encodings. A collation is a set of rules for comparing characters in a character set.</p></blockquote>
<p>You will be specifying the character set and collation as part of the <code>CREATE TABLE</code> sql query.</p>
<h2>What values should be used for character set and collation?</h2>
<p>WordPress has a complex logic to figure out the correct character set and collation for each instance and provides a way to override them in <code>wp-config.php</code> file.</p>
<p>WordPress also does a lot of security checks and rejects text-based on the character set and collation of the tables. So if you are creating custom tables in WordPress then instead of hard coding the character set and collation (or leaving it blank) you should use the one that WordPress had determined.</p>
<p>You can use the <code>get_charset_collate()</code> function in <code>wpdb</code> class to get this value. Append the value returned by this function at the end of your <code>CREATE TABLE</code> sql.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/creating-custom-tables-with-correct-character-set-and-collation-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3192</post-id>	</item>
		<item>
		<title>Looking back at 2015</title>
		<link>https://sudarmuthu.com/blog/looking-back-at-2015/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=looking-back-at-2015</link>
		<comments>https://sudarmuthu.com/blog/looking-back-at-2015/#comments</comments>
		<pubDate>Sun, 31 Jan 2016 12:09:29 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Year End Stats]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3169</guid>
		<description><![CDATA[2015 just ended (is it already a month?) and like the last 7 years here is my year-end review post and plans for 2016. I generally publish them in the first week of January itself, but this year started as a very busy year and this post got pushed back by a month. Personal Highlights [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2015 just ended (is it already a month?) and like the <a href="http://sudarmuthu.com/blog/tag/year-end-stats/">last 7 years</a> here is my year-end review post and plans for 2016. I generally publish them in the first week of January itself, but this year started as a very busy year and this post got pushed back by a month.</p>
<h2>Personal Highlights</h2>
<p>2015 was a special year for me from my career perspective since I worked the entire year from home. Towards the end of 2014, I <a href="http://sudarmuthu.com/blog/goodbye-yahoo/">joined 10up</a> which enabled me to work from home and this work-place freedom has also helped me to <a href="http://sudarmuthu.com/blog/goodbye-bangalore-hello-again-chennai/">move back to Chennai</a>, my hometown after being in Bangalore for about 6 years.</p>
<p>Working from home has enabled me to spend more time with my family, especially with my <a href="http://sudarmuthu.com/blog/spawned-a-new-process">2-year-old son</a> and I am very glad that I choose to work with 10up.</p>
<p><span id="more-3169"></span></p>
<h2>Blogging</h2>
<p>Well, one thing is for sure. I was not able to spend as much time at blogging as I wanted in 2015.</p>
<p>Let&#8217;s look at my blogging stats for 2015. <em>These stats were generated using my &#8220;<a href="http://sudarmuthu.com/wordpress/wp-year-end-stats">Year End Stats</a>&#8221; WordPress plugin.</em></p>

<a href='https://sudarmuthu.com/2015-number-of-posts-by-year/'><img width="300" height="182" src="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-300x182.png" class="attachment-medium size-medium" alt="" srcset="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-300x182.png 300w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-768x466.png 768w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-1024x622.png 1024w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year.png 1268w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="3182" data-permalink="https://sudarmuthu.com/2015-number-of-posts-by-year/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year.png" data-orig-size="1268,770" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-number-of-posts-by-year" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-300x182.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-posts-by-year-1024x622.png" /></a>
<a href='https://sudarmuthu.com/2015-number-of-comments-by-year/'><img width="300" height="191" src="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-300x191.png" class="attachment-medium size-medium" alt="" srcset="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-300x191.png 300w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-768x488.png 768w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-1024x651.png 1024w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year.png 1212w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="3181" data-permalink="https://sudarmuthu.com/2015-number-of-comments-by-year/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year.png" data-orig-size="1212,770" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-number-of-comments-by-year" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-300x191.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-number-of-comments-by-year-1024x651.png" /></a>
<a href='https://sudarmuthu.com/2015-total-post-length/'><img width="300" height="189" src="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-300x189.png" class="attachment-medium size-medium" alt="" srcset="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-300x189.png 300w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-768x484.png 768w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-1024x645.png 1024w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length.png 1222w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="3183" data-permalink="https://sudarmuthu.com/2015-total-post-length/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length.png" data-orig-size="1222,770" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-total-post-length" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-300x189.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-total-post-length-1024x645.png" /></a>
<a href='https://sudarmuthu.com/2015-average-post-length/'><img width="300" height="181" src="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-300x181.png" class="attachment-medium size-medium" alt="" srcset="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-300x181.png 300w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-768x463.png 768w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-1024x617.png 1024w, https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length.png 1278w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="3180" data-permalink="https://sudarmuthu.com/2015-average-post-length/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length.png" data-orig-size="1278,770" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-average-post-length" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-300x181.png" data-large-file="https://sudarmuthu.com/wp-content/uploads/2016/01/2015-average-post-length-1024x617.png" /></a>

<p>I guess the graphs are self-explanatory. My blogging suffered badly in 2015. I have written only about 17 posts in 2015, which was slighly better than 2014, where I wrote only about 15 posts. But the average length of my posts has increased and I am happy about it.</p>
<p>At the beginning of 2015 I wanted to improve my blogging skills and even <a href="http://sudarmuthu.com/blog/looking-back-at-2014">committed to a blog post every week</a>, which clearly didn&#8217;t happen. I guess I <em>bite more than what I can chew</em>.</p>
<p><strong>So in 2016, I am going to commit myself to about 25 posts for the year, which will be roughly 2 posts a month.</strong></p>
<h2>Reading</h2>
<p>Like blogging, even my reading commitment suffered from over commitment. I took a challenge to read at least 25 books, but ended up reading only about 19 books, but I kept up my promise of reading a couple of books in Tamil (my native language) and I am happy about it. You can checkout my <a href="https://www.goodreads.com/user_challenges/1825976">2015 reading list at Goodreads</a>.</p>
<p><strong>For 2016, I am planning to read at least 15 books (roughly one book every month) from a range of topics.</strong> Wish me luck here <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Speaking and Conferences</h2>
<p>In 2015, I <a href="http://sudarmuthu.com/blog/unit-testing-for-wordpress/">spoke in WordCamp Pune</a>, which was my first WordCamp. Even though I have <a href="http://sudarmuthu.com/my-talks/">spoken in lot of conferences and events</a>, this is the first time I spoke in a WordCamp and I am very happy about it. Overall I spoke in about 4 events in 2015.</p>
<p>In 2016, I am planning to speak in more WordCamp&#8217;s and if possible outside of India. I have already applied as speaker in both WordCamp Mumbai and WordCamp Europe. So expect to see me in lot more conferences this year.</p>
<h2>Pet Projects</h2>
<p>In 2015, I  <a href="http://sudarmuthu.com/blog/my-contributions-to-wordpress-4-4/">contributed to two major version of WordPress</a> and I am very happy about it.</p>
<p>I am planning to continue it this year and concentrate more on my <a href="http://sudarmuthu.com/wordpress/">WordPress plugins</a>. So expect lot of updates to my plugins this year <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>New Skills and Continuous Education</h2>
<p>I have the habit of learning something new every year. In some years it will be a <a href="http://sudarmuthu.com/blog/what-should-i-learn-next-python-or-ruby/">new programming language</a> and in others it will be a new framework. In 2015 I concentrated more on my JavaScript skills and learned both Backbone and Grunt which I also used in my job.</p>
<p>In 2016, I am planning to continue my concentration on JavaScript and focus a bit more on my frontend skills. I have already signed up for a React course. So expect some JavaScript related posts this year <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>How was 2015 for you and I am interested to know what you are planning for 2016. Please a leave a comment or post a link to your blog post about your plans for 2016.</p>
<p>Happy new year everyone!</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/looking-back-at-2015/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3169</post-id>	</item>
		<item>
		<title>My contributions to WordPress 4.4</title>
		<link>https://sudarmuthu.com/blog/my-contributions-to-wordpress-4-4/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=my-contributions-to-wordpress-4-4</link>
		<comments>https://sudarmuthu.com/blog/my-contributions-to-wordpress-4-4/#comments</comments>
		<pubDate>Wed, 09 Dec 2015 19:33:15 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3143</guid>
		<description><![CDATA[As most of you might have known, WordPress 4.4 just got released. It has a lot of cool new features like responsive images, REST API, Term Meta etc. Brian Krogsgard has a nice and comprehensive writeup about the new features and read it if you want to get more information about these new features. Another [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As most of you might have known, <a href="https://wordpress.org/news/2015/12/clifford/">WordPress 4.4 just got released</a>. It has a lot of cool new features like responsive images, REST API, Term Meta etc. Brian Krogsgard has a nice and <a href="https://poststatus.com/wordpress-4-4/">comprehensive writeup</a> about the new features and read it if you want to get more information about these new features.</p>
<p>Another important aspect of WordPress 4.4 release is that it had 471 contributors, the highest so far. I am happy to say that I am one of those 471 people and this is the second time I got props for a WordPress release. The previous one was for <a href="https://wordpress.org/news/2015/08/billie/">WordPress 4.3</a> which was released in August this year.</p>
<p>In this post I am going to briefly talk about the tickets that I worked on for WordPress 4.4.</p>
<h2>Human readable data size constants</h2>
<p>The first ticket that I contributed a patch was <a href="https://core.trac.wordpress.org/ticket/22405">22405</a>. My patch introduced constants for common data sizes, so that you can use human readable constants like <code>KB_IN_BYTES</code> instead of hard-coded numbers like <code>1024 * 1024</code>.</p>
<p>The following are the new constants that got added.</p>
<ul>
<li><code>KB_IN_BYTES</code></li>
<li><code>MB_IN_BYTES</code></li>
<li><code>GB_IN_BYTES</code></li>
<li><code>TB_IN_BYTES</code></li>
</ul>
<p>In addition to adding these constants, I also went over WordPress core codebase and replaced hard-coded numbers with the above constants.</p>
<h2>Change password reset email subject based on user information</h2>
<p>WordPress already provides the <code>retrieve_password_title</code> filter that allows you to change the subject of the &#8220;password reset&#8221; emails. But the problem with that filter is that it doesn&#8217;t pass user information. So if you wanted to change the email subject based on user information then it was not possible till now.</p>
<p>I have added both <code>user_login</code> and <code>user_data</code> parameters to the <code>retrieve_password_title</code> filter and now this allows you to change the email subject based on user information. This was done as part of ticket <a href="https://core.trac.wordpress.org/ticket/34252">34252</a></p>
<h2>Documentation fixes</h2>
<p>In addition to the above tickets I also worked on <a href="https://core.trac.wordpress.org/ticket/34252">34363</a>, which was just a documentation fix.</p>
<p>I am very happy to have played a (small) part in the release of WordPress 4.4. If you are interested in contributing to WordPress then checkout the <a href="https://make.wordpress.org/core/handbook/">contributor handbook</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/my-contributions-to-wordpress-4-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3143</post-id>	</item>
		<item>
		<title>Goodbye Bangalore, Hello again Chennai</title>
		<link>https://sudarmuthu.com/blog/goodbye-bangalore-hello-again-chennai/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=goodbye-bangalore-hello-again-chennai</link>
		<comments>https://sudarmuthu.com/blog/goodbye-bangalore-hello-again-chennai/#comments</comments>
		<pubDate>Tue, 27 Oct 2015 14:28:22 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[10up]]></category>
		<category><![CDATA[Chennai]]></category>
		<category><![CDATA[Remote Working]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3126</guid>
		<description><![CDATA[After being in Bangalore for about six years, I have finally moved back to Chennai, my hometown, this past weekend. Long time readers of my blog would know that I moved to Bangalore from Chennai in 2009 when I joined Yahoo. Even though Bangalore was good, I always had a small nagging feeling in a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>After being in Bangalore for about six years, I have finally moved back to Chennai, my hometown, this past weekend.</p>
<p><span id="more-3126"></span></p>
<p>Long time readers of my blog would know that I moved to Bangalore from Chennai in 2009 when I <a href="http://sudarmuthu.com/blog/joining-yahoo/">joined Yahoo</a>. Even though Bangalore was good, I always had a small nagging feeling in a corner of my heart to move back to my hometown. But I had to suppress that feeling all these years, since my job at Yahoo required me to stay at Bangalore.</p>
<p>Now that I have <a href="http://sudarmuthu.com/blog/joined-10up/">joined 10up</a> and have the flexibility to work from anywhere, I have moved back to my hometown.</p>
<p>It is really fascinating how remote working provides these flexibilities and helps you fulfill even your smallest and often childish wishes <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/goodbye-bangalore-hello-again-chennai/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3126</post-id>	</item>
		<item>
		<title>Thank you, Alex King</title>
		<link>https://sudarmuthu.com/blog/thank-you-alex-king/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=thank-you-alex-king</link>
		<comments>https://sudarmuthu.com/blog/thank-you-alex-king/#comments</comments>
		<pubDate>Tue, 29 Sep 2015 06:11:23 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Random/Personal]]></category>
		<category><![CDATA[Alex King]]></category>
		<category><![CDATA[RIP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3117</guid>
		<description><![CDATA[It is with great sadness that I came to know that Alex King one of the original WordPress developers has passed away last night. Even though he doesn&#8217;t know me personally, he was one of my major inspirations and a major reason I started working on WordPress. He was also the reason I wrote my [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>It is with great sadness that I came to know that <a href="http://alexking.org">Alex King</a> one of the original WordPress developers has passed away last night.</p>
<p>Even though he doesn&#8217;t know me personally, he was one of my major inspirations and a major reason I started working on WordPress. He was also the reason I wrote my first every WordPress plugin back in 2008.</p>
<p><span id="more-3117"></span></p>
<p>I saw in his &#8220;<a href="http://alexking.org/blog/2007/12/31/2007-in-review">2007 in Review</a>&#8221; blog post, the SQL queries he had used to generate stats for his year-end posts and the words &#8220;.. <em>maybe I should make this a plugin</em>&#8220;. I got inspired by those words and created my <a href="http://sudarmuthu.com/wordpress/wp-year-end-stats/">first ever WordPress plugin</a> using the queries that he published. You can also <a href="http://alexking.org/blog/2007/12/31/2007-in-review#comment-60538">read my comment</a> in his post.</p>
<p>This got me into WordPress plugin development and one thing led to another and after about 7 years I decided to <a href="http://sudarmuthu.com/blog/joined-10up/">completely shift my career towards WordPress</a>.</p>
<p>Thank you Alex King for being my inspiration and for getting me interested in WordPress. You will always be my hero and I will be grateful to you till my last breath.</p>
<p>Rest in Peace.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/thank-you-alex-king/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3117</post-id>	</item>
		<item>
		<title>Unit Testing for WordPress</title>
		<link>https://sudarmuthu.com/blog/unit-testing-for-wordpress/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=unit-testing-for-wordpress</link>
		<comments>https://sudarmuthu.com/blog/unit-testing-for-wordpress/#comments</comments>
		<pubDate>Sun, 06 Sep 2015 13:23:51 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Events/Conferences]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<category><![CDATA[WordCamp]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3101</guid>
		<description><![CDATA[I am in Pune attending WordCamp Pune 2015. It&#8217;s been very exciting so far and finally I had chance to meet lot of people in person whom I am have been in contact online for more than half a decade. My talk about Unit testing in WordPress I have recently added Unit testing as part [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I am in Pune attending <a href="https://pune.wordcamp.org/2015/">WordCamp Pune 2015</a>. It&#8217;s been very exciting so far and finally I had chance to meet lot of people in person whom I am have been in contact online for more than half a decade.</p>
<h2>My talk about Unit testing in WordPress</h2>
<div id="attachment_3104" style="width: 310px" class="wp-caption alignright"><a href="https://twitter.com/alistratov/status/599109195548459009"><img data-attachment-id="3104" data-permalink="https://sudarmuthu.com/blog/unit-testing-for-wordpress/unit-testing/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2015/09/unit-testing.gif" data-orig-size="320,233" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Unit Testing" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2015/09/unit-testing-300x218.gif" data-large-file="https://sudarmuthu.com/wp-content/uploads/2015/09/unit-testing.gif" class="wp-image-3104 size-medium" src="http://sudarmuthu.com/wp/wp-content/uploads/2015/09/unit-testing.gif" alt="Unit Testing" width="300" height="218" /></a><p class="wp-caption-text"><a href="https://twitter.com/alistratov/status/599109195548459009">Credit</a></p></div>
<p>I have recently added Unit testing as part of my development workflow and it has helped me a lot as a developer and has even changed the way I think about code. It also has helped me a couple of times to catch bugs early that had the potential to spoil my weekend if it went to production <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>I gave a talk about how you can also use Unit testing to get peaceful weekends.</p>
<p>At the beginning of the talk I talked about the basic concepts in Unit testing and you can do it for plain PHP code. After that I moved on to show how the same concepts can be applied for WordPress code using frameworks like <a href="https://github.com/10up/wp_mock">wp_mocks</a>.</p>
<p><span id="more-3101"></span></p>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/unit-testing-for-wordpress">download the slides</a> from my <a href="http://www.slideshare.net/Sudar/">slideshare account</a> or view them below. While you are at it, you can also checkout some of <a href="http://sudarmuthu.com/my-talks">my other talks</a>.</p>
<iframe src='https://www.slideshare.net/slideshow/embed_code/52483854' width='425' height='348' allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
<h2>Video</h2>
<p>The session was recorded and once the video is available I will add a link here.</p>
<p><strong>Update</strong>: The <a href="https://www.youtube.com/watch?v=9LbHHeraTwE">video of my talk</a> is available now.</p>
<p><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/9LbHHeraTwE?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<p>&nbsp;</p>
<h2>Links</h2>
<ul>
<li><a href="https://phpunit.de/">PHPUnit</a></li>
<li><a href="https://github.com/10up/wp_mock">wp_mock</a></li>
<li><a href="https://github.com/10up/generator-wp-make">yo generator for WordPress</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/unit-testing-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3101</post-id>	</item>
		<item>
		<title>PHP Unit testing at Drupal Camp 2015</title>
		<link>https://sudarmuthu.com/blog/php-unit-testing-at-drupal-camp-2015/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=php-unit-testing-at-drupal-camp-2015</link>
		<comments>https://sudarmuthu.com/blog/php-unit-testing-at-drupal-camp-2015/#comments</comments>
		<pubDate>Sat, 25 Jul 2015 10:24:04 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Events/Conferences]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3081</guid>
		<description><![CDATA[I just gave a talk today about Unit testing PHP code using PHPUnit in Drupal Camp 2015. I have recently added Unit testing as part of my development workflow and it has helped me a lot as a developer and has even changed the way I think about code. In this talk I talked about [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just gave a talk today about Unit testing PHP code using PHPUnit in Drupal Camp 2015.</p>
<p>I have recently added Unit testing as part of my development workflow and it has helped me a lot as a developer and has even changed the way I think about code.</p>
<p>In this talk I talked about how to get started doing Unit testing in PHP and about some of the tips that I learned as I started doing Unit testing.</p>
<p><span id="more-3081"></span></p>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/unit-testing-in-php-49625973">download the slides</a> from my slideshare account or view them below.</p>
<p><iframe src="https://www.slideshare.net/slideshow/embed_code/key/vPWo8XoKMZIl2t" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/Sudar/unit-testing-in-php-49625973" title="Unit testing in php" target="_blank">Unit testing in php</a> </strong> from <strong><a href="http://www.slideshare.net/Sudar" target="_blank">Sudar Muthu</a></strong> </div>
<h2>Video</h2>
<p><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/TrQMni41fR4?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/php-unit-testing-at-drupal-camp-2015/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3081</post-id>	</item>
		<item>
		<title>Creating single select WordPress taxonomies</title>
		<link>https://sudarmuthu.com/blog/creating-single-select-wordpress-taxonomies/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=creating-single-select-wordpress-taxonomies</link>
		<comments>https://sudarmuthu.com/blog/creating-single-select-wordpress-taxonomies/#comments</comments>
		<pubDate>Sat, 27 Jun 2015 08:14:44 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Taxonomy]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3071</guid>
		<description><![CDATA[As most of you would have already know, WordPress by default provides two built-in taxonomies &#8211; Categories and Tags. If you need to create a new association, then it is also very easy to create custom taxonomies in WordPress. But one of the major limitations while creating custom taxonomies in WordPress is that you can&#8217;t [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As most of you would have already know, WordPress by default provides two built-in taxonomies &#8211; Categories and Tags. If you need to create a new association, then it is also very easy to create custom taxonomies in WordPress.</p>
<p>But one of the major limitations while creating custom taxonomies in WordPress is that you can&#8217;t make them as &#8220;single select&#8221;. By &#8220;single select&#8221; I mean the ability to restrict only one term to be selected for a post.</p>
<p>Following in one example where you might need this ability. Let&#8217;s say you are storing movie information in a custom post type and you need to store the PG rating for the movie in a custom taxonomy. Each movie will have only one rating and you should restrict that only one rating term is stored for a movie.</p>
<p>Recently I faced a similar scenario and this post talks about how I solved it.</p>
<p><span id="more-3071"></span></p>
<h2>Default Taxonomy types in WordPress</h2>
<p>WordPress by default supports only two types of taxonomies.</p>
<ul>
<li>Hierarchical taxonomies, which are like categories. You can have multiple hierarchies and they are rendered using checkboxes.</li>
<li>Non Hierarchical taxonomies, which are like tags. Here you create specify a list of comma separated taxonomy terms for a post.</li>
</ul>
<p>As you might have already noted, in both the above two types you can&#8217;t restrict a post to have only one term selected from a given taxonomy.</p>
<h2>Custom Field vs Custom Taxonomy</h2>
<p>One option to solve this issue is to create a custom meta box and store the information in custom field.</p>
<p>This approach allows you to create your own UI, but if you need to retrieve posts based on the value in the field then you have to query your posts based on meta data which is generally slower than retrieving posts based on taxonomies.</p>
<h2>Convert taxonomies into single select</h2>
<p>The approach that I took to solve this problem is to create a custom meta box to display the taxonomies as radio buttons and then save the terms to the post as taxonomies when the post is saved.</p>
<h3>Using a custom meta box to display the taxonomy</h3>
<p>We can use a custom meta box for displaying the taxonomy instead of the built-in one by specifying the function that prints the meta box to the <code>meta_box_cb</code> options of the <code>args</code> parameter that is passed to the <code>register_taxonomy</code> function.</p>
<style> #wrap_githubgiste2f97e1455b30dc71d07 .gist-data {max-height: 100%;} </style><div id="wrap_githubgiste2f97e1455b30dc71d07" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist23753483\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-register_taxonomy-php\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-php  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"register_taxonomy.php content, created by sudar on 08:10AM on June 27, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"register_taxonomy.php\">\n        <tr>\n          <td id=\"file-register_taxonomy-php-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-ent>&lt;?php<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c>/**<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> * Register &#39;Movie Rating&#39; custom taxonomy.<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> */<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-k>function<\/span> <span class=pl-en>register_movie_rating_taxonomy<\/span>() {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC6\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-s1><span class=pl-c1>\$<\/span>args<\/span> = <span class=pl-en>array<\/span>(<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC7\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s>&#39;<span class=pl-s>label<\/span>&#39;<\/span>             =&gt; <span class=pl-en>__<\/span>( <span class=pl-s>&#39;<span class=pl-s>Rating<\/span>&#39;<\/span> ),<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC8\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s>&#39;<span class=pl-s>hierarchical<\/span>&#39;<\/span>      =&gt; <span class=pl-c1>false<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC9\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s>&#39;<span class=pl-s>show_ui<\/span>&#39;<\/span>           =&gt; <span class=pl-c1>true<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC10\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s>&#39;<span class=pl-s>show_admin_column<\/span>&#39;<\/span> =&gt; <span class=pl-c1>true<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC11\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s>&#39;<span class=pl-s>meta_box_cb<\/span>&#39;<\/span>       =&gt; <span class=pl-s>&#39;<span class=pl-s>movie_rating_meta_box<\/span>&#39;<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC12\" class=\"blob-code blob-code-inner js-file-line\">	);<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC13\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC14\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-en>register_taxonomy<\/span>( <span class=pl-s>&#39;<span class=pl-s>movie_rating<\/span>&#39;<\/span>, <span class=pl-s>&#39;<span class=pl-s>movie<\/span>&#39;<\/span>, <span class=pl-s1><span class=pl-c1>\$<\/span>args<\/span> );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC15\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-register_taxonomy-php-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-register_taxonomy-php-LC16\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-en>add_action<\/span>( <span class=pl-s>&#39;<span class=pl-s>init<\/span>&#39;<\/span>, <span class=pl-s>&#39;<span class=pl-s>register_movie_rating_taxonomy<\/span>&#39;<\/span> );<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07/raw/0cb9f7efcb6f97d862aaf34fab769b0595298213/register_taxonomy.php\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07#file-register_taxonomy-php\" class=\"Link--inTextBlock\">\n          register_taxonomy.php\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Register 'Movie Rating' custom taxonomy.
 */
function register_movie_rating_taxonomy() {
	$args = array(
		'label'             =&gt; __( 'Rating' ),
		'hierarchical'      =&gt; false,
		'show_ui'           =&gt; true,
		'show_admin_column' =&gt; true,
		'meta_box_cb'       =&gt; 'movie_rating_meta_box',
	);

	register_taxonomy( 'movie_rating', 'movie', $args );
}
add_action( 'init', 'register_movie_rating_taxonomy' );</pre></code></noscript></div></div>
<p>And then inside the function we can fetch the term that is associated with the post and then display the radio buttons (or a dropdown).</p>
<style> #wrap_githubgiste2f97e1455b30dc71d07 .gist-data {max-height: 100%;} </style><div id="wrap_githubgiste2f97e1455b30dc71d07" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist23753483\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-meta_box-php\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-php  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"meta_box.php content, created by sudar on 08:10AM on June 27, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"meta_box.php\">\n        <tr>\n          <td id=\"file-meta_box-php-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-meta_box-php-LC1\" class=\"blob-code blob-code-inner js-file-line\">&lt;?php<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-meta_box-php-LC2\" class=\"blob-code blob-code-inner js-file-line\">/**<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-meta_box-php-LC3\" class=\"blob-code blob-code-inner js-file-line\"> * Display Movie Rating meta box<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-meta_box-php-LC4\" class=\"blob-code blob-code-inner js-file-line\"> */<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-meta_box-php-LC5\" class=\"blob-code blob-code-inner js-file-line\">function movie_rating_meta_box( \$post ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-meta_box-php-LC6\" class=\"blob-code blob-code-inner js-file-line\">	\$terms = get_terms( &#39;movie_rating&#39;, array( &#39;hide_empty&#39; =&gt; false ) );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-meta_box-php-LC7\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-meta_box-php-LC8\" class=\"blob-code blob-code-inner js-file-line\">	\$post  = get_post();<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-meta_box-php-LC9\" class=\"blob-code blob-code-inner js-file-line\">	\$rating = wp_get_object_terms( \$post-&gt;ID, &#39;movie_rating&#39;, array( &#39;orderby&#39; =&gt; &#39;term_id&#39;, &#39;order&#39; =&gt; &#39;ASC&#39; ) );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-meta_box-php-LC10\" class=\"blob-code blob-code-inner js-file-line\">	\$name  = &#39;&#39;;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-meta_box-php-LC11\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-meta_box-php-LC12\" class=\"blob-code blob-code-inner js-file-line\">    if ( ! is_wp_error( \$rating ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-meta_box-php-LC13\" class=\"blob-code blob-code-inner js-file-line\">    	if ( isset( \$rating[0] ) &amp;&amp; isset( \$rating[0]-&gt;name ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-meta_box-php-LC14\" class=\"blob-code blob-code-inner js-file-line\">			\$name = \$rating[0]-&gt;name;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-meta_box-php-LC15\" class=\"blob-code blob-code-inner js-file-line\">	    }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-meta_box-php-LC16\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-meta_box-php-LC17\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-meta_box-php-LC18\" class=\"blob-code blob-code-inner js-file-line\">	foreach ( \$terms as \$term ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-meta_box-php-LC19\" class=\"blob-code blob-code-inner js-file-line\">?&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-meta_box-php-LC20\" class=\"blob-code blob-code-inner js-file-line\">		&lt;label title=&#39;&lt;?php esc_attr_e( \$term-&gt;name ); ?&gt;&#39;&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-meta_box-php-LC21\" class=\"blob-code blob-code-inner js-file-line\">		    &lt;input type=&quot;radio&quot; name=&quot;movie_rating&quot; value=&quot;&lt;?php esc_attr_e( \$term-&gt;name ); ?&gt;&quot; &lt;?php checked( \$term-&gt;name, \$name ); ?&gt;&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-meta_box-php-LC22\" class=\"blob-code blob-code-inner js-file-line\">			&lt;span&gt;&lt;?php esc_html_e( \$term-&gt;name ); ?&gt;&lt;/span&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-meta_box-php-LC23\" class=\"blob-code blob-code-inner js-file-line\">		&lt;/label&gt;&lt;br&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-meta_box-php-LC24\" class=\"blob-code blob-code-inner js-file-line\">&lt;?php<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-meta_box-php-LC25\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-meta_box-php-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-meta_box-php-LC26\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07/raw/0cb9f7efcb6f97d862aaf34fab769b0595298213/meta_box.php\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07#file-meta_box-php\" class=\"Link--inTextBlock\">\n          meta_box.php\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Display Movie Rating meta box
 */
function movie_rating_meta_box( $post ) {
	$terms = get_terms( 'movie_rating', array( 'hide_empty' =&gt; false ) );

	$post  = get_post();
	$rating = wp_get_object_terms( $post-&gt;ID, 'movie_rating', array( 'orderby' =&gt; 'term_id', 'order' =&gt; 'ASC' ) );
	$name  = '';

    if ( ! is_wp_error( $rating ) ) {
    	if ( isset( $rating[0] ) &amp;&amp; isset( $rating[0]-&gt;name ) ) {
			$name = $rating[0]-&gt;name;
	    }
    }

	foreach ( $terms as $term ) {
?&gt;
		&lt;label title='&lt;?php esc_attr_e( $term-&gt;name ); ?&gt;'&gt;
		    &lt;input type=&quot;radio&quot; name=&quot;movie_rating&quot; value=&quot;&lt;?php esc_attr_e( $term-&gt;name ); ?&gt;&quot; &lt;?php checked( $term-&gt;name, $name ); ?&gt;&gt;
			&lt;span&gt;&lt;?php esc_html_e( $term-&gt;name ); ?&gt;&lt;/span&gt;
		&lt;/label&gt;&lt;br&gt;
&lt;?php
    }
}</pre></code></noscript></div></div>
<h3>Saving the term to the taxonomy</h3>
<p>Now when a user saves the post, we can hook into the <code>save_post</code> hook and then save the term as part of the taxonomy for that post.</p>
<style> #wrap_githubgiste2f97e1455b30dc71d07 .gist-data {max-height: 100%;} </style><div id="wrap_githubgiste2f97e1455b30dc71d07" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist23753483\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-save_post-php\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-php  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"save_post.php content, created by sudar on 08:10AM on June 27, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"save_post.php\">\n        <tr>\n          <td id=\"file-save_post-php-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-save_post-php-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-ent>&lt;?php<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-save_post-php-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c>/**<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-save_post-php-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> * Save the movie meta box results.<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-save_post-php-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> *<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-save_post-php-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> * @param int \$post_id The ID of the post that&#39;s being saved.<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-save_post-php-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-c> */<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-save_post-php-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-k>function<\/span> <span class=pl-en>save_movie_rating_meta_box<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>post_id<\/span> ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-save_post-php-LC8\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-k>if<\/span> ( <span class=pl-en>defined<\/span>( <span class=pl-s>&#39;<span class=pl-s>DOING_AUTOSAVE<\/span>&#39;<\/span> ) &amp;&amp; <span class=pl-c1>DOING_AUTOSAVE<\/span> ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-save_post-php-LC9\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-k>return<\/span>;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-save_post-php-LC10\" class=\"blob-code blob-code-inner js-file-line\">	}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-save_post-php-LC11\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-save_post-php-LC12\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-k>if<\/span> ( ! <span class=pl-en>isset<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span><span class=pl-c1>_POST<\/span><\/span>[<span class=pl-s>&#39;<span class=pl-s>movie_rating<\/span>&#39;<\/span>] ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-save_post-php-LC13\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-k>return<\/span>;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-save_post-php-LC14\" class=\"blob-code blob-code-inner js-file-line\">	}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-save_post-php-LC15\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-save_post-php-LC16\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-s1><span class=pl-c1>\$<\/span>rating<\/span> = <span class=pl-en>sanitize_text_field<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span><span class=pl-c1>_POST<\/span><\/span>[<span class=pl-s>&#39;<span class=pl-s>movie_rating<\/span>&#39;<\/span>] );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-save_post-php-LC17\" class=\"blob-code blob-code-inner js-file-line\">	<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-save_post-php-LC18\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-c>// A valid rating is required, so don&#39;t let this get published without one<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-save_post-php-LC19\" class=\"blob-code blob-code-inner js-file-line\">	<span class=pl-k>if<\/span> ( <span class=pl-en>empty<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>rating<\/span> ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-save_post-php-LC20\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-c>// unhook this function so it doesn&#39;t loop infinitely<\/span><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-save_post-php-LC21\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-en>remove_action<\/span>( <span class=pl-s>&#39;<span class=pl-s>save_post_movie<\/span>&#39;<\/span>, <span class=pl-s>&#39;<span class=pl-s>save_movie_rating_meta_box<\/span>&#39;<\/span> );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-save_post-php-LC22\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-save_post-php-LC23\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s1><span class=pl-c1>\$<\/span>postdata<\/span> = <span class=pl-en>array<\/span>(<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-save_post-php-LC24\" class=\"blob-code blob-code-inner js-file-line\">			<span class=pl-s>&#39;<span class=pl-s>ID<\/span>&#39;<\/span>          =&gt; <span class=pl-s1><span class=pl-c1>\$<\/span>post_id<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-save_post-php-LC25\" class=\"blob-code blob-code-inner js-file-line\">			<span class=pl-s>&#39;<span class=pl-s>post_status<\/span>&#39;<\/span> =&gt; <span class=pl-s>&#39;<span class=pl-s>draft<\/span>&#39;<\/span>,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-save_post-php-LC26\" class=\"blob-code blob-code-inner js-file-line\">		);<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n          <td id=\"file-save_post-php-LC27\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-en>wp_update_post<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>postdata<\/span> );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n          <td id=\"file-save_post-php-LC28\" class=\"blob-code blob-code-inner js-file-line\">	} <span class=pl-k>else<\/span> {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n          <td id=\"file-save_post-php-LC29\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-s1><span class=pl-c1>\$<\/span>term<\/span> = <span class=pl-en>get_term_by<\/span>( <span class=pl-s>&#39;<span class=pl-s>name<\/span>&#39;<\/span>, <span class=pl-s1><span class=pl-c1>\$<\/span>rating<\/span>, <span class=pl-s>&#39;<span class=pl-s>movie_rating<\/span>&#39;<\/span> );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n          <td id=\"file-save_post-php-LC30\" class=\"blob-code blob-code-inner js-file-line\">		<span class=pl-k>if<\/span> ( ! <span class=pl-en>empty<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>term<\/span> ) &amp;&amp; ! <span class=pl-en>is_wp_error<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>term<\/span> ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n          <td id=\"file-save_post-php-LC31\" class=\"blob-code blob-code-inner js-file-line\">			<span class=pl-en>wp_set_object_terms<\/span>( <span class=pl-s1><span class=pl-c1>\$<\/span>post_id<\/span>, <span class=pl-s1><span class=pl-c1>\$<\/span>term<\/span>-&gt;<span class=pl-c1>term_id<\/span>, <span class=pl-s>&#39;<span class=pl-s>movie_rating<\/span>&#39;<\/span>, <span class=pl-c1>false<\/span> );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n          <td id=\"file-save_post-php-LC32\" class=\"blob-code blob-code-inner js-file-line\">		}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n          <td id=\"file-save_post-php-LC33\" class=\"blob-code blob-code-inner js-file-line\">	}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n          <td id=\"file-save_post-php-LC34\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-save_post-php-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n          <td id=\"file-save_post-php-LC35\" class=\"blob-code blob-code-inner js-file-line\"><span class=pl-en>add_action<\/span>( <span class=pl-s>&#39;<span class=pl-s>save_post_movie<\/span>&#39;<\/span>, <span class=pl-s>&#39;<span class=pl-s>save_movie_rating_meta_box<\/span>&#39;<\/span> );<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07/raw/0cb9f7efcb6f97d862aaf34fab769b0595298213/save_post.php\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07#file-save_post-php\" class=\"Link--inTextBlock\">\n          save_post.php\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Save the movie meta box results.
 *
 * @param int $post_id The ID of the post that's being saved.
 */
function save_movie_rating_meta_box( $post_id ) {
	if ( defined( 'DOING_AUTOSAVE' ) &amp;&amp; DOING_AUTOSAVE ) {
		return;
	}

	if ( ! isset( $_POST['movie_rating'] ) ) {
		return;
	}

	$rating = sanitize_text_field( $_POST['movie_rating'] );
	
	// A valid rating is required, so don't let this get published without one
	if ( empty( $rating ) ) {
		// unhook this function so it doesn't loop infinitely
		remove_action( 'save_post_movie', 'save_movie_rating_meta_box' );

		$postdata = array(
			'ID'          =&gt; $post_id,
			'post_status' =&gt; 'draft',
		);
		wp_update_post( $postdata );
	} else {
		$term = get_term_by( 'name', $rating, 'movie_rating' );
		if ( ! empty( $term ) &amp;&amp; ! is_wp_error( $term ) ) {
			wp_set_object_terms( $post_id, $term-&gt;term_id, 'movie_rating', false );
		}
	}
}
add_action( 'save_post_movie', 'save_movie_rating_meta_box' );</pre></code></noscript></div></div>
<h3>Making sure the term is selected</h3>
<p>If the term is mandatory then we can also send a error message back to the user (and change the post to draft) using the <code>edit_form_top</code> hook if the user has not selected at least one term.</p>
<style> #wrap_githubgiste2f97e1455b30dc71d07 .gist-data {max-height: 100%;} </style><div id="wrap_githubgiste2f97e1455b30dc71d07" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist23753483\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-error_msg-php\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-php  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"error_msg.php content, created by sudar on 08:10AM on June 27, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"error_msg.php\">\n        <tr>\n          <td id=\"file-error_msg-php-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-error_msg-php-LC1\" class=\"blob-code blob-code-inner js-file-line\">&lt;?php<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-error_msg-php-LC2\" class=\"blob-code blob-code-inner js-file-line\">/**<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-error_msg-php-LC3\" class=\"blob-code blob-code-inner js-file-line\"> * Display an error message at the top of the post edit screen explaining that ratings is required.<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-error_msg-php-LC4\" class=\"blob-code blob-code-inner js-file-line\"> *<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-error_msg-php-LC5\" class=\"blob-code blob-code-inner js-file-line\"> * Doing this prevents users from getting confused when their new posts aren&#39;t published, as we<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-error_msg-php-LC6\" class=\"blob-code blob-code-inner js-file-line\"> * require a valid rating custom taxonomy.<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-error_msg-php-LC7\" class=\"blob-code blob-code-inner js-file-line\"> *<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-error_msg-php-LC8\" class=\"blob-code blob-code-inner js-file-line\"> * @param WP_Post The current post object.<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-error_msg-php-LC9\" class=\"blob-code blob-code-inner js-file-line\"> */<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-error_msg-php-LC10\" class=\"blob-code blob-code-inner js-file-line\">function show_required_field_error_msg( \$post ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-error_msg-php-LC11\" class=\"blob-code blob-code-inner js-file-line\">	if ( &#39;movie&#39; === get_post_type( \$post ) &amp;&amp; &#39;auto-draft&#39; !== get_post_status( \$post ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-error_msg-php-LC12\" class=\"blob-code blob-code-inner js-file-line\">	    \$rating = wp_get_object_terms( \$post-&gt;ID, &#39;movie_rating&#39;, array( &#39;orderby&#39; =&gt; &#39;term_id&#39;, &#39;order&#39; =&gt; &#39;ASC&#39; ) );<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-error_msg-php-LC13\" class=\"blob-code blob-code-inner js-file-line\">        if ( is_wp_error( \$rating ) || empty( \$rating ) ) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-error_msg-php-LC14\" class=\"blob-code blob-code-inner js-file-line\">			printf(<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-error_msg-php-LC15\" class=\"blob-code blob-code-inner js-file-line\">				&#39;&lt;div class=&quot;error below-h2&quot;&gt;&lt;p&gt;%s&lt;/p&gt;&lt;/div&gt;&#39;,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-error_msg-php-LC16\" class=\"blob-code blob-code-inner js-file-line\">				esc_html__( &#39;Rating is mandatory for creating a new movie post&#39; )<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-error_msg-php-LC17\" class=\"blob-code blob-code-inner js-file-line\">			);<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-error_msg-php-LC18\" class=\"blob-code blob-code-inner js-file-line\">		}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-error_msg-php-LC19\" class=\"blob-code blob-code-inner js-file-line\">	}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-error_msg-php-LC20\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-error_msg-php-LC21\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-error_msg-php-LC22\" class=\"blob-code blob-code-inner js-file-line\">// Unfortunately, &#39;admin_notices&#39; puts this too high on the edit screen<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-error_msg-php-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-error_msg-php-LC23\" class=\"blob-code blob-code-inner js-file-line\">add_action( &#39;edit_form_top&#39;, &#39;show_required_field_error_msg&#39; );<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07/raw/0cb9f7efcb6f97d862aaf34fab769b0595298213/error_msg.php\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/e2f97e1455b30dc71d07#file-error_msg-php\" class=\"Link--inTextBlock\">\n          error_msg.php\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>&lt;?php
/**
 * Display an error message at the top of the post edit screen explaining that ratings is required.
 *
 * Doing this prevents users from getting confused when their new posts aren't published, as we
 * require a valid rating custom taxonomy.
 *
 * @param WP_Post The current post object.
 */
function show_required_field_error_msg( $post ) {
	if ( 'movie' === get_post_type( $post ) &amp;&amp; 'auto-draft' !== get_post_status( $post ) ) {
	    $rating = wp_get_object_terms( $post-&gt;ID, 'movie_rating', array( 'orderby' =&gt; 'term_id', 'order' =&gt; 'ASC' ) );
        if ( is_wp_error( $rating ) || empty( $rating ) ) {
			printf(
				'&lt;div class=&quot;error below-h2&quot;&gt;&lt;p&gt;%s&lt;/p&gt;&lt;/div&gt;',
				esc_html__( 'Rating is mandatory for creating a new movie post' )
			);
		}
	}
}

// Unfortunately, 'admin_notices' puts this too high on the edit screen
add_action( 'edit_form_top', 'show_required_field_error_msg' );</pre></code></noscript></div></div>
<p>This validation can also be done in the frontend using JavaScript.</p>
<h2>Source code</h2>
<p>The entire source code is available as a <a href="https://gist.github.com/sudar/e2f97e1455b30dc71d07">gist</a>. The code can be either added to your theme&#8217;s <code>functions.php</code> file or as a separate plugin. Make sure you use the correct taxonomy name when you use this code.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/creating-single-select-wordpress-taxonomies/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3071</post-id>	</item>
		<item>
		<title>Unit Testing PHP using PHPUnit</title>
		<link>https://sudarmuthu.com/blog/unit-testing-php-using-phpunit/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=unit-testing-php-using-phpunit</link>
		<comments>https://sudarmuthu.com/blog/unit-testing-php-using-phpunit/#respond</comments>
		<pubDate>Sat, 20 Jun 2015 07:54:54 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Events/Conferences]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHPUnit]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=3010</guid>
		<description><![CDATA[I spoke about doing Unit testing in PHP using PHPUnit at the Bangalore Open source meetup today. Slides You can download the slides from my slideshare account or view them below. Unit testing in php from Sudar Muthu]]></description>
				<content:encoded><![CDATA[<p>I spoke about doing Unit testing in PHP using PHPUnit at the Bangalore Open source meetup today.</p>
<p><span id="more-3010"></span></p>
<h2>Slides</h2>
<p>You can <a href="http://www.slideshare.net/Sudar/unit-testing-in-php-49625973">download the slides</a> from my slideshare account or view them below.</p>
<p><iframe src="https://www.slideshare.net/slideshow/embed_code/key/vPWo8XoKMZIl2t" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/Sudar/unit-testing-in-php-49625973" title="Unit testing in php" target="_blank">Unit testing in php</a> </strong> from <strong><a href="http://www.slideshare.net/Sudar" target="_blank">Sudar Muthu</a></strong> </div>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/unit-testing-php-using-phpunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">3010</post-id>	</item>
		<item>
		<title>Don’t enable SAVEQUEIRES in production WordPress sites</title>
		<link>https://sudarmuthu.com/blog/dont-enable-savequeires-in-production-wordpress-sites/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dont-enable-savequeires-in-production-wordpress-sites</link>
		<comments>https://sudarmuthu.com/blog/dont-enable-savequeires-in-production-wordpress-sites/#respond</comments>
		<pubDate>Sun, 31 May 2015 12:13:05 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wp_query]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2999</guid>
		<description><![CDATA[One of the common ways to debug DB queries in WordPress is to enable SAVEQUERIES, which keeps track of all the DB queries that are executed in WordPress, together with other information like how long it took for the query to execute, what are the functions that called it etc and stores in the global [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>One of the common ways to debug DB queries in WordPress is to enable <code>SAVEQUERIES</code>, which <a href="https://codex.wordpress.org/Debugging_in_WordPress#SAVEQUERIES">keeps track of all the DB queries</a> that are executed in WordPress, together with other information like how long it took for the query to execute, what are the functions that called it etc and stores in the global array variable <code>$wpdb-&gt;queries</code>.</p>
<p>While this is a great way to debug DB queries, this could be a huge issue on production sites.</p>
<p><span id="more-2999"></span></p>
<p>Recently I was running a backend script in my development environment to selectively delete some posts from WordPress. Even though the code was simple and very less data was handled in each iteration, the script was running out of memory after about 100 queries.</p>
<p>After a couple of hours of debugging I found that <code>SAVEQUEIRES</code> was the culprit. Since it was enabled, WordPress was storing information about each query that got executed which quickly added up, which let to PHP running out of memory. And that&#8217;s when I realized that having <code>SAVEQUERIES</code> enabled could be a major performance issue.</p>
<p>So the tl;dr version is</p>
<p>Don&#8217;t ever enable <code>SAVEQUEIRES</code> in production sites. Also if you are doing any kind of data import/export in your development environment then disabling <code>SAVEQUERIES</code>, could really speed up things.</p>
<p>If you are using WP_Query you can find the <a href="http://sudarmuthu.com/blog/get-the-sql-query-generated-by-wordpress/">SQL query generated by WordPress</a>, instead of enabling it.</p>
<p>Also, remember that <code>SAVEQUERIES</code> is enabled by default in vip quickstart and by debugging plugins like Debug Bar.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/dont-enable-savequeires-in-production-wordpress-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">2999</post-id>	</item>
		<item>
		<title>Github Ribbon Plugin v1.2 release</title>
		<link>https://sudarmuthu.com/blog/github-ribbon-plugin-v1-2-release/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=github-ribbon-plugin-v1-2-release</link>
		<comments>https://sudarmuthu.com/blog/github-ribbon-plugin-v1-2-release/#respond</comments>
		<pubDate>Thu, 30 Apr 2015 13:57:14 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[github-ribbon]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2990</guid>
		<description><![CDATA[I just released v1.2 of my Github Ribbon Plugin. About Github Ribbon Github Ribbons is a WordPress Plugin that allows you to add &#8220;Fork me on Github&#8221; ribbons to your WordPress posts or pages. You can enable the ribbon per post/page level or at global level. Features Github Ribbons plugin allows you to override the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just released <code>v1.2</code> of my <a href="http://sudarmuthu.com/wordpress/github-ribbon">Github Ribbon</a> Plugin.</p>
<h2>About Github Ribbon</h2>
<p>Github Ribbons is a WordPress Plugin that allows you to add &#8220;Fork me on Github&#8221; ribbons to your WordPress posts or pages. You can enable the ribbon per post/page level or at global level.</p>
<p><span id="more-2990"></span></p>
<h2>Features</h2>
<p>Github Ribbons plugin allows you to override the global settings at a post level. Earlier this feature was available only for posts and pages but in this release, this feature is extended to all public custom post types.</p>
<p>In addition to that I have also changed the filter that is used to add the ribbon markup. Earlier I was using the <code>the_content</code> filter which had some issues with certain themes. Now, I am using the <code>wp_footer</code> filter which fixes these incompatibilities.</p>
<h2>Download</h2>
<p>The easiest way to update the plugin is to automatically update it from the WordPress admin console.</p>
<p>If for some reason you don&#8217;t want to automatically update the plugin or would prefer to download the plugin then you can download it from <a href="https://wordpress.org/plugins/github-ribbon/">WordPress plugin repo</a> as a zip file.</p>
<p>Try out the latest release and let me know if you have any feedback or comments.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/github-ribbon-plugin-v1-2-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">2990</post-id>	</item>
		<item>
		<title>[Book Review] Ponniyin Selvan</title>
		<link>https://sudarmuthu.com/blog/book-review-ponniyin-selvan/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=book-review-ponniyin-selvan</link>
		<comments>https://sudarmuthu.com/blog/book-review-ponniyin-selvan/#comments</comments>
		<pubDate>Wed, 25 Mar 2015 16:44:36 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Tamil]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2973</guid>
		<description><![CDATA[As I mentioned in my earlier book review post where I reviewed Stephen Hawking&#8217;s A brief History of Time, I started reading Ponniyin Selvan by Kalki and got completely engross in it. It is the main reason you didn&#8217;t see any blog post from me in the last few weeks, even though I took a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As I mentioned in my earlier book review post where I reviewed <a href="http://sudarmuthu.com/blog/book-review-a-brief-history-of-time/">Stephen Hawking&#8217;s A brief History of Time</a>, I started reading <a href="http://en.wikipedia.org/wiki/Ponniyin_Selvan">Ponniyin Selvan</a> by <a href="http://en.wikipedia.org/wiki/Kalki_Krishnamurthy">Kalki</a> and got completely engross in it. It is the main reason you didn&#8217;t see any blog post from me in the last few weeks, even though I took a <a href="http://sudarmuthu.com/blog/looking-back-at-2014/">resolution</a> to write at least one blog post a week.</p>
<p><span id="more-2973"></span></p>
<h2>Synopsis</h2>
<p><a href="http://sudarmuthu.com/wp/wp-content/uploads/2015/03/Ponniyin_Selvan.jpg"><img data-attachment-id="2975" data-permalink="https://sudarmuthu.com/blog/book-review-ponniyin-selvan/ponniyin_selvan/" data-orig-file="https://sudarmuthu.com/wp-content/uploads/2015/03/Ponniyin_Selvan.jpg" data-orig-size="600,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;HM1S&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1423916337&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.85&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.0051813471502591&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Ponniyin_Selvan" data-image-description="" data-medium-file="https://sudarmuthu.com/wp-content/uploads/2015/03/Ponniyin_Selvan-225x300.jpg" data-large-file="https://sudarmuthu.com/wp-content/uploads/2015/03/Ponniyin_Selvan.jpg" class="alignright size-medium wp-image-2975" src="http://sudarmuthu.com/wp/wp-content/uploads/2015/03/Ponniyin_Selvan-225x300.jpg" alt="Ponniyin_Selvan" width="225" height="300" srcset="https://sudarmuthu.com/wp-content/uploads/2015/03/Ponniyin_Selvan-225x300.jpg 225w, https://sudarmuthu.com/wp-content/uploads/2015/03/Ponniyin_Selvan.jpg 600w" sizes="(max-width: 225px) 100vw, 225px" /></a>Ponniyin Selvan is a Tamil historical fiction novel written Kalki based on real events. It narrates the story of Arulmozhivarman (later crowned as Rajaraja Chola I), one of the kings of the Chola Dynasty during the 10th and 11th centuries.</p>
<p>It was originally published as an ongoing series in the Kalki weekly magazine in the 1950&#8217;s and ran for about three and a half years. It is now published in novel form and comes in 5 volumes with a total of about 2200 pages.</p>
<h2>Reading Speed</h2>
<p>This book was my first serious fiction reading in Tamil and it took me exactly two months to finish it. Each page took me about 2 minutes to read and in total I spent about 75 hours to finish the entire series at an average rate of 2 hour every day <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Yes, it is a massive book but it was very engrossing and I spent literally every free minute I had in the last two months to finish it <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>My Review</h2>
<p>The book is definitely a page turner and if you have interest in history then you will find it very difficult to put it down <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The author gives you vivid description of the ancient Tamil nation, politics and culture. Most of the times I felt as if I was living among the characters and I am planning to visit the places that are mentioned in the book.</p>
<p>The book has an excellent and interesting story-line and has strong and well portrayed characters from both genders. I am pretty sure I will be able to remember most of the characters for a very long time since they left an lasting impression.</p>
<p>If you can read Tamil then don&#8217;t miss this book. If you can&#8217;t read Tamil then at least read a translation. You can thank me later <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>My Rating</h2>
<p>My rating for the entire series is 5 out of 5. If you look at the individual books in the series, then except for the 4th book I would rate 5 and 4 for the 4th book.</p>
<h2>Next Books</h2>
<p>I am going to take a break from reading Tamil books for a few weeks since I have spent 2 months reading only Tamil, but I have added the other historical novels by Kalki like &#8220;Parthiban Kanavu&#8221; and &#8220;Sivagamiyin Sapatham&#8221; which are about the Pallava Dynasty to my <em>to-read</em> list.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/book-review-ponniyin-selvan/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">2973</post-id>	</item>
		<item>
		<title>Mapping plugin folder in VVV using shared folders</title>
		<link>https://sudarmuthu.com/blog/mapping-plugin-folder-in-vvv-using-shared-folders/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mapping-plugin-folder-in-vvv-using-shared-folders</link>
		<comments>https://sudarmuthu.com/blog/mapping-plugin-folder-in-vvv-using-shared-folders/#comments</comments>
		<pubDate>Thu, 05 Feb 2015 06:37:08 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[VVV]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2950</guid>
		<description><![CDATA[I discovered Varying Vagrant Vagrants (VVV) a couple of months ago and since then I have used it for my WordPress plugin development and testing. It is extremely easy to set up and let&#8217;s me test my plugins in various versions of WordPress very easily. In my never-ending quest to optimize my development environment and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I discovered <a href="https://github.com/Varying-Vagrant-Vagrants/VVV">Varying Vagrant Vagrants</a> (VVV) a couple of months ago and since then I have used it for my WordPress plugin development and testing. It is extremely easy to set up and let&#8217;s me test my plugins in various versions of WordPress very easily.</p>
<p>In my never-ending quest to optimize my development environment and work flow, I tried various configurations and finally settled on the following setup where I am <a href="http://stackoverflow.com/q/27223318/24949">mapping my plugins folder using VVV&#8217;s shared folders</a>. This allows me to easily test my plugins in various versions of WordPress, without copying them around.</p>
<p>I thought of sharing my setup and my <code>Customfile</code> so that it would be useful for others or to future-me <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-2950"></span></p>
<h2>About VVV</h2>
<p>If you are a WordPress developer or contributor and haven&#8217;t heard about VVV, then stop reading right away and go to <a href="https://github.com/Varying-Vagrant-Vagrants/VVV">VVV&#8217;s homepage</a>, read about it and then install it. You can thank me later <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Varying Vagrant Vagrants or VVV for short is an open source <a href="http://vagrantup.com/">Vagrant</a> configuration focused on WordPress development. It provides a reproducible development environment that is ideal for both WordPress plugin and theme development as well as for contributing to WordPress core.</p>
<p>The development environments that are setup by VVV are nothing but server instance created as a VM. VVV automatically shares the source, config and log folders between the VM and host OS, so that you can use normal tools like your editors etc in your host OS and the changes will be automatically seen by the VM and vice versa. All these are automatically setup for you and you don&#8217;t have to do any complex setups or mapping drives.</p>
<p>It setups up three WordPress installs (stable, trunk and develop) that allows you to easily test your WordPress plugin or theme in different WordPress versions without the need for creating separate server instances.</p>
<p>You can follow the <a href="https://github.com/Varying-Vagrant-Vagrants/VVV#the-first-vagrant-up">installation instructions</a> available at VVV github page to easily set it up.</p>
<h2>Mapping plugin folder</h2>
<p>For most people the default mapping provided by VVV should be good enough. But I wanted to tweak it a bit.</p>
<p>By default VVV creates the following folder structure inside <code>www</code> folder which is shared with the VM.</p>
<style> #wrap_githubgist79a9ac1f77ec897f5426 .gist-data {max-height: 100%;} </style><div id="wrap_githubgist79a9ac1f77ec897f5426" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist19061000\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-folder-structure-txt\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-text  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"folder-structure.txt content, created by sudar on 06:41AM on February 05, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"folder-structure.txt\">\n        <tr>\n          <td id=\"file-folder-structure-txt-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-folder-structure-txt-LC1\" class=\"blob-code blob-code-inner js-file-line\">\$ tree -L 1 www<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-folder-structure-txt-LC2\" class=\"blob-code blob-code-inner js-file-line\">www<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-folder-structure-txt-LC3\" class=\"blob-code blob-code-inner js-file-line\">├── default<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-folder-structure-txt-LC4\" class=\"blob-code blob-code-inner js-file-line\">├── phpcs<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-folder-structure-txt-LC5\" class=\"blob-code blob-code-inner js-file-line\">├── vvv-hosts<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-folder-structure-txt-LC6\" class=\"blob-code blob-code-inner js-file-line\">├── wordpress-default<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-folder-structure-txt-LC7\" class=\"blob-code blob-code-inner js-file-line\">├── wordpress-develop<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-folder-structure-txt-LC8\" class=\"blob-code blob-code-inner js-file-line\">├── wordpress-trunk<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-folder-structure-txt-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-folder-structure-txt-LC9\" class=\"blob-code blob-code-inner js-file-line\">└── wp-cli<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426/raw/946c3eddfcac63ae21b0b90561659b7cb3e9807a/folder-structure.txt\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426#file-folder-structure-txt\" class=\"Link--inTextBlock\">\n          folder-structure.txt\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>$ tree -L 1 www
www
├── default
├── phpcs
├── vvv-hosts
├── wordpress-default
├── wordpress-develop
├── wordpress-trunk
└── wp-cli</pre></code></noscript></div></div>
<p>The three WordPress installations live inside the following folders</p>
<ul>
<li>wordpress-default</li>
<li>wordpress-develop</li>
<li>wordpress-trunk</li>
</ul>
<p>Each instance has its own plugin and theme folders. Since I wanted to test my plugins in all the three instances I didn&#8217;t wanted to copy my plugin folder around. Instead I had set up shared folders so that the plugin folder (in the host OS) is automatically mapped to all three WordPress instance&#8217;s plugin folder.</p>
<p>I achieved this by using Vagrant&#8217;s shared folder. In my <code>Customfile</code> I created the following mappings.</p>
<style> #wrap_githubgist79a9ac1f77ec897f5426 .gist-data {max-height: 100%;} </style><div id="wrap_githubgist79a9ac1f77ec897f5426" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist19061000\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-customfile-rb\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-ruby  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"Customfile.rb content, created by sudar on 06:41AM on February 05, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"Customfile.rb\">\n        <tr>\n          <td id=\"file-customfile-rb-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-customfile-rb-LC1\" class=\"blob-code blob-code-inner js-file-line\">config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-default/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-rb-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-customfile-rb-LC2\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-rb-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-customfile-rb-LC3\" class=\"blob-code blob-code-inner js-file-line\">config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-develop/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-rb-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-customfile-rb-LC4\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-rb-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-customfile-rb-LC5\" class=\"blob-code blob-code-inner js-file-line\">config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-trunk/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426/raw/946c3eddfcac63ae21b0b90561659b7cb3e9807a/Customfile.rb\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426#file-customfile-rb\" class=\"Link--inTextBlock\">\n          Customfile.rb\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-default/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]

config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-develop/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]

config.vm.synced_folder &quot;/Users/sudar/Dropbox/plugins/&quot;, &quot;/srv/www/wordpress-trunk/wp-content/plugins&quot;, :owner =&gt; &quot;www-data&quot;, :mount_options =&gt; [ &quot;dmode=775&quot;, &quot;fmode=774&quot; ]</pre></code></noscript></div></div>
<p>Any changes to my plugin folder will be now automatically reflected in all three WordPress instances.</p>
<h2>Bonus &#8211; Increase VM RAM</h2>
<p>While you are at it you may also want to increase the RAM that is allocated to your VM. You can do it by adding the following line in your <code>Customfile</code>.</p>
<style> #wrap_githubgist79a9ac1f77ec897f5426 .gist-data {max-height: 100%;} </style><div id="wrap_githubgist79a9ac1f77ec897f5426" style="width:100%"><script>document.write('<link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-62c2e4e96ba476b5.css">')
document.write('<div id=\"gist19061000\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-customfile-memory-rb\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-ruby  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"Customfile-memory.rb content, created by sudar on 06:41AM on February 05, 2015.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https://github.co/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"Customfile-memory.rb\">\n        <tr>\n          <td id=\"file-customfile-memory-rb-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-customfile-memory-rb-LC1\" class=\"blob-code blob-code-inner js-file-line\">config.vm.provider &quot;virtualbox&quot; do |v|<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-memory-rb-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-customfile-memory-rb-LC2\" class=\"blob-code blob-code-inner js-file-line\">  v.memory = 2048<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-customfile-memory-rb-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-customfile-memory-rb-LC3\" class=\"blob-code blob-code-inner js-file-line\">end<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426/raw/946c3eddfcac63ae21b0b90561659b7cb3e9807a/Customfile-memory.rb\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https://gist.github.com/sudar/79a9ac1f77ec897f5426#file-customfile-memory-rb\" class=\"Link--inTextBlock\">\n          Customfile-memory.rb\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https://github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n')
</script><div style='margin-bottom:1em;padding:0;'><noscript><code><pre style='overflow:auto;margin:0;padding:0;border:1px solid #DDD;'>config.vm.provider &quot;virtualbox&quot; do |v|
  v.memory = 2048
end</pre></code></noscript></div></div>
<p>What are your favourite tricks for using VVV effectively?</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/mapping-plugin-folder-in-vvv-using-shared-folders/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">2950</post-id>	</item>
		<item>
		<title>Easy Retweet Plugin v3.0.3 release</title>
		<link>https://sudarmuthu.com/blog/easy-retweet-plugin-v3-0-3-release/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=easy-retweet-plugin-v3-0-3-release</link>
		<comments>https://sudarmuthu.com/blog/easy-retweet-plugin-v3-0-3-release/#respond</comments>
		<pubDate>Thu, 29 Jan 2015 09:13:05 +0000</pubDate>
		<dc:creator><![CDATA[Sudar]]></dc:creator>
				<category><![CDATA[Plugin Releases]]></category>
		<category><![CDATA[Easy Retweet]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sudarmuthu.com/?p=2878</guid>
		<description><![CDATA[I just released v3.0.3 of my Easy Retweet WordPress plugin. About Easy Retweet WordPress plugin Easy Retweet WordPress Plugin that allows you to easily add Twitter tweet or bit.ly buttons to your WordPress posts. You can choose to add these buttons using any one of the following ways Automatic way – Just configure the button [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just released <code>v3.0.3</code> of my <a href="http://sudarmuthu.com/wordpress/easy-retweet">Easy Retweet WordPress plugin</a>.</p>
<h2>About Easy Retweet WordPress plugin</h2>
<p>Easy Retweet WordPress Plugin that allows you to easily add Twitter tweet or bit.ly buttons to your WordPress posts.</p>
<p>You can choose to add these buttons using any one of the following ways</p>
<ul>
<li>Automatic way – Just configure the button in the settings screen</li>
<li>Using shortcodes</li>
<li>Using template functions</li>
</ul>
<p>You can also enable <a href="http://sudarmuthu.com/blog/easy-retweet-plugin-now-supports-google-analytics-tracking/">Google Analytics tracking</a> for the links that are generated by buttons created by this plugin.</p>
<p><span id="more-2878"></span></p>
<h2>Bug Fix</h2>
<p>Recently a user of the plugin <a href="https://twitter.com/Mike_Stelzner/status/560083137527431168">reported a bug</a> in the Google Analytics tracking code that prevented the <code>utm_medium</code> parameter to be generated properly. You can read more about this bug in <a href="https://github.com/sudar/easy-retweet/issues/7">github</a>.</p>
<p>This release fixes the above bug and is a mandatory upgrade. So make sure you update the plugin.</p>
<h2>Download</h2>
<p>The easiest way to update the plugin is to automatically update it from the WordPress admin console.</p>
<p>If for some reason you don&#8217;t want to automatically update the plugin or would prefer to download the plugin then you can download it from <a href="https://wordpress.org/plugins/easy-retweet/">WordPress plugin repo</a> as a zip file.</p>
<p>Try out the latest release and let me know if you have any feedback or comments.</p>
]]></content:encoded>
			<wfw:commentRss>https://sudarmuthu.com/blog/easy-retweet-plugin-v3-0-3-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">2878</post-id>	</item>
	</channel>
</rss>