<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>PyThoughts</title> <atom:link href="http://pythoughts.com/feed/" rel="self" type="application/rss+xml" /><link>http://pythoughts.com</link> <description>Web Programming</description> <lastBuildDate>Tue, 08 Nov 2011 06:47:36 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <item><title>Quote from 4 Hour Work Week Blog</title><link>http://pythoughts.com/quote-from-4-hour-work-week-blog/</link> <comments>http://pythoughts.com/quote-from-4-hour-work-week-blog/#comments</comments> <pubDate>Sun, 14 Aug 2011 23:46:01 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1342</guid> <description><![CDATA[6. Myth: You need a quirky hiring process. Would you hire an actor without an audition? You wouldn’t last long as a director if you did. But this is exactly what almost all companies who hire software developers do today. &#8230; <a
href="http://pythoughts.com/quote-from-4-hour-work-week-blog/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<blockquote><p>6. Myth: You need a quirky hiring process.</p><p>Would you hire an actor without an audition? You wouldn’t last long as a director if you did. But this is exactly what almost all companies who hire software developers do today. Usually the process involves talking through an applicant’s experience with them. And that’s all.</p></blockquote><p><a
href="http://www.fourhourworkweek.com/blog/2011/06/07/whats-your-start-up-bus-count-7-myths-of-entrepreneurship-and-programming/#more-5598">http://www.fourhourworkweek.com/blog/2011/06/07/whats-your-start-up-bus-count-7-myths-of-entrepreneurship-and-programming/#more-5598</a></p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/quote-from-4-hour-work-week-blog/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>13 Rules for WordPress Plugin Development</title><link>http://pythoughts.com/wordpress-plugin-development-checklist/</link> <comments>http://pythoughts.com/wordpress-plugin-development-checklist/#comments</comments> <pubDate>Thu, 11 Aug 2011 01:55:34 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Wordpress]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1311</guid> <description><![CDATA[It&#8217;s for a developer easy to criticize a plugin that has just been created, to find random security flaws or over-looked elements of the design that passed unnoticed through the testing phase. As much as I love developing plugins, I&#8217;m &#8230; <a
href="http://pythoughts.com/wordpress-plugin-development-checklist/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>It&#8217;s for a developer easy to criticize a plugin that has just been created, to find random security flaws or over-looked elements of the design that passed unnoticed through the testing phase. As much as I love developing plugins, I&#8217;m usually very nervous about other developers criticizing my work, especially in private emails to clients <img
src='http://pythoughts.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> I can spend hours creating all of these perfect features, only for another developer to come along and criticize something that I missed while I was concentrating on a million other things. Futuremore, WordPress plugin development is usually only handled by one developer, so that means you&#8217;re in charge of design, security, bug-checking and of adding new features. That sucks, because you&#8217;re directly responsible for all of that as well.</p><p><span
id="more-1311"></span></p><p><em>All it takes if for one person to report your plugin, and they&#8217;ll suspend it from the WordPress repository. This can take months to amend.</em></p><p>I&#8217;ve been on the giving end <em>and</em> receiving end of this type of criticism, and I&#8217;ve also had to rebuild very poorly designed plugins. That&#8217;s why I decided to create a checklist for myself, so that I can look this over <strong>whenever I&#8217;m developing a new WordPress plugin</strong>.</p><h2>Security</h2><p><strong>Add nonce fields to all admin forms</strong>. I use them  like this:</p><pre>&lt;form method="post" action="&lt;?php echo $_SERVER['REQUEST_URI']; ?&gt;" &gt;
&lt;input type="text" name="users_data" value="" /&gt;
<strong>&lt;?php wp_nonce_field( 'plugin_name-update', 'field_to_update' ); ?&gt;</strong>
&lt;input type="submit" value="Save Data" /&gt;
&lt;/form&gt;</pre><p>And then in the receiving part of the data:</p><pre>&lt;?php
if ( isset($_POST['users_data']) &amp;&amp; check_admin_referrer( 'plugin_name-update', 'field_to_update' ) ) {
// Perform secure update
}
?&gt;</pre><p><strong>No externally accessible files.</strong> I recently worked on a site that used a .php file to make updates to the plugin&#8217;s data. He used the whole &#8216;include wp_load.php&#8217; thing to get access to the database, and then made updates. In my experience, this is <em>a very bad thing</em>. The .php file turned out to be accessible by anyone (even people who weren&#8217;t administrators), and you could actually search Google for the website name and the name of the PHP file, and get access to a whole lot of data. This plugin was actually used by tens of thousands of people, and every one of them had this security flaw. Don&#8217;t let this developer be you &#8211; keep your files linked through the regular WordPress hooks; no wp_load funny business.</p><p><strong>Put confirmation steps between clicking a button and performing actions.</strong> I recently developed a plugin that had a huge security flaw in it. I developed it for a company, not for popular release, so luckily I only had to make the update to fix the plugin. Basically, the plugin had a function where you could delete data from the database by clicking a button. The database was set to automatically increment a certain id number, and the delete was based on that number. The database wasn&#8217;t configured properly and without me knowing about it, the increment wasn&#8217;t working. Needless to say, as soon as someone clicked the delete button, it deleted <em>all the data from the database</em>, instead of just the row that they wanted to delete. I could have been in a lot of trouble for this one, but luckily the boss understood that it wasn&#8217;t entirely a coding bug. <strong
style="display: block; padding: 5px;">Learn from my mistakes, and put a confirmation form between the &#8216;delete&#8217; button, and the actual deleting process.</strong> That way the user can check that they are really deleting the row that they want deleted.</p><p><strong>When you can, use archiving instead of deleting.</strong> This is another thing that I learned from the mishap mentioned before. When all of that data was deleted, it really was gone. I couldn&#8217;t just magically revive the data like a lot of people expect from developers &#8211; accidentally deleting data you didn&#8217;t actually want to delete is an absolute nightmare. In this case, I created an extra field in the database where I could specify whether a row of information was &#8216;archived&#8217; (which to me means &#8216;deleted&#8217;), or if it was still active. Once the user clicks delete, this plugin continues to act as if the data has actually been deleted; in reality, though, we can still revive this information if need be. <em
style="color: #da4278;">This is a beautiful safety-net to have.</em></p><p><strong>Use nonce fields especially when using AJAX.</strong> It&#8217;s really not that hard to figure out how to do it, and you simply can&#8217;t be lazy with this one. You can do it like this &#8211; <strong>this is how I do my JS enqueues</strong>:</p><pre>&lt;?php
$script_url = WP_PLUGIN_URL . '/plugin/js/script.js';
$script_file = WP_PLUGIN_DIR . '/plugin/js/script.js';
if ( file_exists($script_file) ) {
    wp_register_script( 'plugin_script', $script_url );
    wp_enqueue_script( 'plugin_script' );
}
$plugin_ajax_nonce = wp_create_nonce ('plugin-ajax-nonce');
$plugin_ajax_url = admin_url( 'admin-ajax.php' );
wp_localize_script( 'plugin_script', 'plugin_name', array( 'ajax_nonce' =&gt; $plugin_ajax_nonce, 'plugin_ajax_url' =&gt; plugin_ajax_url ));
?&gt;</pre><p>Then in that javascript file, you just make sure that it continues to send the nonce value to your receiving php file:</p><pre>$.ajax({
    type: "POST",
    url: plugin_name.plugin_ajax_url,
    data: 'action=plugin_name_ajax' + '&amp;plugin_ajax_none=' + plugin_name.ajax_nonce,
    success: function(msg){
      // Silence is golden.
    }
});</pre><p>And then again in your receiving .php file:</p><pre>&lt;?php
add_action( 'wp_ajax_nopriv_plugin_name_ajax', 'plugin_name_submission_ajax' );
add_action( 'wp_ajax_plugin_name_ajax', 'plugin_name_submission_ajax' );
function plugin_name_submission_ajax () {
    $plugin_name_nonce = $_POST['plugin_ajax_nonce'];</pre><p>wp_verify_nonce( &#8216;plugin-ajax-nonce&#8217;, $plugin_name_nonce );</p><p>}</p><p>?&gt;</p><p>I wrote that using barely any references; I could write that stuff in my sleep, because I use it all the time for plugins.</p><p><strong>Make sure your functions are unique, by adding a prefix.</strong> Whenever you define a function, put your prefix in it so that WordPress doesn&#8217;t confuse it with some other plugin&#8217;s function and cause the site to break. If your plugin is called &#8216;Brilliant Plugin&#8217;, don&#8217;t use &#8216;BP&#8217; as your prefix, because that will obviously conflict with Buddy Press. Err on the side of being too careful, and make sure that your plugin doesn&#8217;t conflict.</p><h2>Optimization</h2><p><strong>Keep CSS in .css files, and Javascript in .js files.</strong> This makes the content cacheable. If you need to send data to your javascript from a PHP file, do it using the localization code shown above. Your plugin should output as little inline CSS and JS as possible, really &#8211; how annoying is it when you install a plugin and find out that it&#8217;s wrecked your site&#8217;s beautiful optimization? Don&#8217;t be selfish, rather spend the extra time making this plugin&#8217;s scripts cacheable rather that just outputting it onto the person&#8217;s page.</p><p><strong>Combine CSS and JS into as few files as possible.</strong> Instead of making the site go back and forth asking for files, try keep your files to a minimum. There is no need to have a reset.css file and main style.css for your &#8216;About Me&#8217; widget &#8211; just combine your code into one file.</p><p><strong>Use the &#8216;is_admin()&#8217; function.</strong> Can you believe that some plugins load CSS and JS that is meant for the admin section in the front-end (I.E. every time a user visits the site)? By checking whether the user is in the admin or not (or better yet, by splitting your admin files and your front-end PHP files and only loading the appropriate ones), you save a lot of work for the browser at load time. This is totally non-negotiable; if you just realized that your plugin is making this mistake, please change it as soon as you can and spare the internet the inefficiency.</p><p><strong>Use wp_enqueue_script() and wp_enqueue_style.</strong> If you need to use jQuery in your plugin, please don&#8217;t output a random script reference to the Google Code API for jQuery. Use wp_enqueue_script( &#8216;jquery&#8217; ); instead, and avoid making the website load the same damn thing 8 times with different versions. Yes, it is better to load the script from Google because it&#8217;s likely to be cached, but you know what, if the user wants to do this they&#8217;ll use their own plugins to do so. Err on the side of being more careful with this, rather than causing a mess-up because you want to do something fancy.</p><p><strong>Use arrays to store plugin options.</strong> I recently released a public plugin for a company, and it employed something like 100 small settings. There&#8217;s really no reason to create 100 new WordPress options, and update each one every time someone makes a change. That would mean 100 separate writes every time options are saved! Rather, separate your options into maybe 4 or 5 main categories of options, and then use an array in each option to store the settings. So here is an example:</p><pre>$general_settings = array(
'plugin_enabled' =&gt; 'yes',
'use_custom_css' =&gt; 'no',
'show_alerts' =&gt; 'yes'
);
update_option( 'my_plugin_general', $general_settings  );</pre><p>This saves us from storing and writing to three separate options whenever a general update is made.</p><h2>Miscellaneous</h2><p><strong>Comment your code well, especially front-end code.</strong> You owe it to the person who installs your plugin to have it well-commented. If I install something that makes changes to my site, I feel like I deserve to know what that plugin is doing to it. Even if I don&#8217;t understand PHP, or whatever fancy function you&#8217;re employing, I still should be able to make sense of what all this code is doing. Please, be reasonable and add some commenting to your code so that users don&#8217;t feel at the mercy of developers more than they have to.</p><p><strong>Create Software Fit for Change. </strong>Try to keep your code agile, because you&#8217;ll probably need to make updates in time. WordPress updates very often, and sometimes this can cause your plugin to break. There&#8217;s nothing worse than going back to a plugin months after its release and trying to figure out how to change one or two things. Keep things modular &#8211; even if it&#8217;s not just to save me rewriting code, I try to create new functions to handle &#8220;parts&#8221; of code, and I divide these parts up as makes sense to me. That way it gets very easy for me to see exactly what&#8217;s going on, because I can make sense of the functions and where they&#8217;re being used &#8211; it&#8217;s almost like a combination between functionality and commenting.</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/wordpress-plugin-development-checklist/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>New Yahoo Mail Looks Dangerously like Gmail</title><link>http://pythoughts.com/yahoo-mail-gmail-design-similarities/</link> <comments>http://pythoughts.com/yahoo-mail-gmail-design-similarities/#comments</comments> <pubDate>Sat, 23 Jul 2011 19:20:07 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Design]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1300</guid> <description><![CDATA[In case you haven&#8217;t seen the new Yahoo Mail, check it out here. Although much better than the previous versions of Yahoo Mail, this version seems to ride very much off a copy of GMails design. Particularly in the layout &#8230; <a
href="http://pythoughts.com/yahoo-mail-gmail-design-similarities/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-23-at-2.04.33-PM.png" alt="Yahoo Mail" title="Yahoo Mail" width="232" height="58" class="image alignleft size-full wp-image-1302" style="float:left; margin-right: 10px;"/>In case you haven&#8217;t seen the new Yahoo Mail, check it out here. Although much better than the previous versions of Yahoo Mail, this version seems to ride very much off a copy of GMails design. Particularly in the layout of key elements of the page. They have kept the tabs though, which is one particularity of the site that I do detest, simply because it makes it more difficult to track where you are.</p><p><span
id="more-1300"></span></p><h2>New Yahoo Mail vs Gmail Design</h2><h3>Yahoo Mail</h3><p><a
href="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-23-at-1.55.27-PM.png"><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-23-at-1.55.27-PM.png" alt="New Yahoo Mail" title="New Yahoo Mail" style="width:100%" class="image alignleft size-full wp-image-1301" /></a></p><h3>Gmail</h3><p><a
href="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-23-at-2.12.18-PM.png"><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-23-at-2.12.18-PM.png" alt="GMail Layout Design" title="GMail Layout Design" style="width:100%" class="image alignleft size-full wp-image-1306" /></a></p><p>I&#8217;m currently using the Grafiti theme for my personal Gmail because it looks awesome, regardless I find the similarities between these two layouts rather uncanny. Actually, it&#8217;s Gmails new row of filters (&#8220;classic&#8221;, &#8220;important first&#8221;, etc.) that seems like the biggest difference for me, and they are very recent additions.</p><p><strong>What do you think, did Yahoo Mail blatantly copy Gmail? What is your favorite design?</strong></p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/yahoo-mail-gmail-design-similarities/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pure CSS Buttons &#8211; Good Button Style and No Images</title><link>http://pythoughts.com/pure-css-buttons/</link> <comments>http://pythoughts.com/pure-css-buttons/#comments</comments> <pubDate>Fri, 22 Jul 2011 00:16:29 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Design]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1266</guid> <description><![CDATA[Pure CSS buttons that actually look good &#8211; is it a myth? These days, I don&#8217;t believe they are. Sometimes I&#8217;m too lazy to get onto photoshop and play around with designs until I work something good out, or I &#8230; <a
href="http://pythoughts.com/pure-css-buttons/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Pure CSS buttons that actually look good &#8211; is it a myth? These days, I don&#8217;t believe they are. Sometimes I&#8217;m too lazy to get onto photoshop and play around with designs until I work something good out, or I don&#8217;t feel that it&#8217;s worth it to hire a professional designer. If there&#8217;s one thing I do know though, it&#8217;s <strong>how to code a design in css</strong>. Here are some buttons that I designed <em>purely in CSS</em>, and I&#8217;ll give you the CSS for these buttons completely free <img
src='http://pythoughts.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p><h3>Buttons that I Made Using Just CSS:</h3><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-21-at-7.10.00-PM.png" alt="Pure CSS Buttons" title="Pure CSS Buttons" width="531" height="53" class="image alignleft size-full wp-image-1284" /></p><p><span
id="more-1266"></span></p><style type="text/css">.styled-button-1 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.199219) 0px 1px 0px 0px;
	background-color: #FA2;
	border-radius: 5px;
	border-bottom-color: #333;
	border: none;
	border-width: 0;
	box-shadow: rgba(0, 0, 0, 0.199219) 0px 1px 0px 0px;
	color: #333;
	font-family: 'Helvetica Neue', Arial, sans-serif;
	font-size: 16px;
	font-weight: bold;
	height: 32px;
	padding: 4px 16px;
	text-shadow: #FE6 0px 1px 0px;
}</style><style type="text/css">.styled-button-2 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px;
	background-color: #7cceee;
	border-radius: 5px;
	border-bottom-color: #333;
	border: 1px solid #61c4ea;
	box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px;
	color: #333;
	font-family: 'Verdana', Arial, sans-serif;
	font-size: 14px;
	text-shadow: #b2e2f5 0px 1px 0px;
	padding: 5px;
}</style><style type="text/css">.styled-button-3 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.0.97) 0px 1px 0px 0px;
	background-color: #5B74A8;
	border: 1px solid #29447E;
	font-family: 'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;
	font-size: 12px;
	font-weight: bold;
	padding: 2px 6px;
	height: 28px;
	color: #fff;
	border-radius: 5px;
}</style><style type="text/css">.styled-button-4 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.0976562) 0px 1px 0px 0px;
	background-color: #EEE;
	border: 1px solid #999;
	color: #666;
	font-family: 'Lucida Grande', Tahoma, Verdana, Arial, Sans-serif;
	font-size: 11px;
	font-weight: bold;
	padding: 2px 6px;
	height: 28px;
}</style><style type="text/css">.styled-button-5 {
	background-color: #ed8223;
	color: white;
	font-family: 'Helvetica Neue', sans-serif;
	font-size: 18px;
	line-height: 30px;
	border-radius: 20px;
	border: 0px;
	text-shadow: #C17C3A 0px -1px 0px;
	width: 120px;
	height: 32px;
}</style><h2>CSS Button Style #1 &#8211; Inspired by Twitter</h2><h3>Example of Button Style #1</h3> <input
type="submit" class="styled-button-1" value="Save Data" /><h3>CSS code for Style #1</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
.styled-button-1 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.199219) 0px 1px 0px 0px;
	background-color: #FA2;
	border-radius: 5px;
	border-bottom-color: #333;
	border: none;
	border-width: 0;
	box-shadow: rgba(0, 0, 0, 0.199219) 0px 1px 0px 0px;
	color: #333;
	font-family: 'Helvetica Neue', Arial, sans-serif;
	font-size: 16px;
	font-weight: bold;
	height: 32px;
	padding: 4px 16px;
	text-shadow: #FE6 0px 1px 0px;
}
&lt;/style&gt;
</pre><h2>CSS Button Style #2</h2><h3>Example of Button Style #2</h3> <input
type="submit" class="styled-button-2" value="Buy Credits" /><h3>CSS code for Style #2</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
.styled-button-2 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px;
	background-color: #7cceee;
	border-radius: 5px;
	border-bottom-color: #333;
	border: 1px solid #61c4ea;
	box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px;
	color: #333;
	font-family: 'Verdana', Arial, sans-serif;
	font-size: 14px;
	text-shadow: #b2e2f5 0px 1px 0px;
	padding: 5px;
}
&lt;/style&gt;
</pre><h2>CSS Button Style #3</h2><h3>Example of Button Style #3 &#8211; Facebook Style</h3> <input
type="submit" class="styled-button-3" value="Add as Friend" /><h3>CSS code for Style #3</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
.styled-button-3 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.0.97) 0px 1px 0px 0px;
	background-color: #5B74A8;
	border: 1px solid #29447E;
	font-family: 'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;
	font-size: 12px;
	font-weight: bold;
	padding: 2px 6px;
	height: 28px;
	color: #fff;
	border-radius: 5px;
}
&lt;/style&gt;
</pre><h2>CSS Button Style #4</h2><h3>Example of Button Style #4</h3> <input
type="submit" class="styled-button-4" value="buy now" /><h3>CSS code for Style #4</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
.styled-button-4 {
	-webkit-box-shadow: rgba(0, 0, 0, 0.0976562) 0px 1px 0px 0px;
	background-color: #EEE;
	border: 1px solid #999;
	color: #666;
	font-family: 'Lucida Grande', Tahoma, Verdana, Arial, Sans-serif;
	font-size: 11px;
	font-weight: bold;
	padding: 2px 6px;
	height: 28px;
}
&lt;/style&gt;
</pre><h2>CSS Button Style #5</h2><h3>Example of Button Style #5</h3> <input
type="submit" class="styled-button-5" value="continue" /><h3>CSS code for Style #5</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
.styled-button-5 {
	background-color: #ed8223;
	color: white;
	font-family: 'Helvetica Neue', sans-serif;
	font-size: 18px;
	line-height: 30px;
	border-radius: 20px;
	border: 0px;
	text-shadow: #C17C3A 0px -1px 0px;
	width: 120px;
	height: 32px;
}
&lt;/style&gt;
</pre><p>I&#8217;m excited to hear which ones you think are the best, so let me know here in the comments, okay? If you&#8217;re comfortable using images in your design styles, then you might want to check out this post on <a
href="http://www.sohtanaka.com/web-design/liquid-color-adjustable-css-buttons/">adjustable css buttons</a> from my friend Soh Tanaka <img
src='http://pythoughts.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p>I have a related post on <a
href="http://pythoughts.com/table-style-css/" title="Table Style: CSS Examples of Good Looking HTML Tables">table css design styles</a> that you may also appreciate.</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/pure-css-buttons/feed/</wfw:commentRss> <slash:comments>16</slash:comments> </item> <item><title>Post-Capitalistic Society: Where Technology Might be Leading Us</title><link>http://pythoughts.com/post-capitalism-techonology/</link> <comments>http://pythoughts.com/post-capitalism-techonology/#comments</comments> <pubDate>Wed, 20 Jul 2011 21:51:20 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1247</guid> <description><![CDATA[Post-Capitalism is something that I am sure there has been a lot written about, including by Integral thinkers like Ken Wilber. Without having read much about it, I have recently been thinking about the idea quite a lot, especially with &#8230; <a
href="http://pythoughts.com/post-capitalism-techonology/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/7-e1311196897741-300x133.jpg" alt="Post-Capitalism Heaven" title="Post-Capitalism Heaven" width="260" height="110" class="image alignleft size-medium wp-image-1251" style="float:left; margin-right: 10px;" />Post-Capitalism is something that I am sure there has been a lot written about, including by Integral thinkers like Ken Wilber. Without having read much about it, I have recently been thinking about the idea quite a lot, especially with regards to the influence that technology is having on this change.</p><p><span
id="more-1247"></span></p><div
class="clear"></div><h2>What Post-Capitalism Would Not Be</h2><p>Important note: If you are not familiar with the idea of &#8220;post&#8221; capitalism, you should know that this does not mean a reversion to something like <em>communism</em> or <em>socialism</em>. When we talk about post-capitalism, it necessarily means that you recognize the value of capitalism and its superiority over previous economic systems, and yet you also see a more efficient system that in no way loses the value brought about by capitalism. Since capitalism brings individuality and economic efficiency, post-capitalism would need to include these benefits.</p><h2>What Post-Capitalism Could Be</h2><p><iframe
width="370" height="230" src="http://www.youtube.com/embed/u6XAPnuFjJc" frameborder="0" allowfullscreen class="image" style="float:right; margin-left:10px;"></iframe>The music industry has taken a huge economic fall due to the uprising of online pirating, media uploading sites that allow users to listen to music without purchasing anything, as well as digital sharing among friends. However, it seems that music is being produced more fiercely than ever before. If N&#8217;sync was the last band to release an album that would not be pirated on a grand scale, then it doesn&#8217;t seem like the quality of music produced has been affected much either. Modern research into creative work shows that artists will happily continue to produce high quality art regardless of pay once their basic needs have been met. An example of this includes programmers who work on open source software, utilizing technical skills and creativity &#8211; they do this after hours, and without pay (for more information on this, read the book <em>Drive</em>, by Daniel Pink). So it seems that if they&#8217;re financially secure already, people in creative fields will continue to do what they do, providing the value to society that they do, just because they enjoy it. There is evidence that this actually <em>increases</em> productivity and creativity, too, since there is less pressure on the artists themselves. The question is, then, how can we get more people to this point more quickly?</p><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/campus.jpeg" alt="College Campus" title="College Campus" width="259" height="194" class="image alignleft size-full wp-image-1258" style="float:left; margin-right: 10px;" />Tertiary-level education institutions like universities and colleges in the United States often give out financial aid to students who wouldn&#8217;t otherwise be able to afford education at these places. The best institutions aim to be &#8220;need-blind&#8221;, meaning that they will allow any student, regardless of their financial means, to study there as long as they make the admissions cut. This allows students to focus on completing their studies and research without financial pressure. What value does such a college get back in order to sustain this? Well, they get the value of the student&#8217;s intellect in their classrooms, which challenges fellow students. In some cases, they get the student&#8217;s athletic skill, which draws attention to the college. In most cases, the idea of exchanging the student&#8217;s presence on campus for tuition fees, room and board, health care, etc., seems to work out for these institutions, and the students themselves are happy too. In certain countries like the <em>Netherlands,</em> <em>Sweden</em>, and even the United States to a certain extent, where studies are heavily subsidized, students often opt to take this opportunity right up to the doctoral level. Effectively, these students are paying their tuition simply by being present and contributing to the college, and therefore we have a flirtation with a post-capitalist system.</p><h2>What Would Happen?</h2><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/googleplex-150x150.jpg" alt="Googleplex Food" title="Googleplex Food" width="150" height="150" class="image alignleft size-thumbnail wp-image-1260" style="float:right; margin-left:10px;" />What would happen if more mini-institutions took this mindset, and began to exchange residency fees, etc., for presence? At the <em>GooglePlex</em>, Google&#8217;s Headquarters, employees are given many benefits aside from their salaries. At what point would it make sense for employees to stay at the company at no pay? If they had &#8220;on campus&#8221; housing, with buffet food, education, entertainment and transport? Since they have already qualified for the job there, Google already knows what these employees are worth, and the data shows that most of them are doing what they love to do, and what they would be doing in any case, <em>for fun</em> (for the challenge of problem solving, etc.). If more companies took on the ideas of universities and colleges, as explained above in this article, I believe that we really would be seeing the emergence of a post-capitalistic economic system. Would such a system be good or bad? Could all services in an institution be paid for by other services, without requiring the exchange of currency? Is this really <em>post</em>-capitalism? What do you think about this?</p><h3>Related Resources</h3><ul><li><a
href="http://www.amazon.com/Drive-Surprising-Truth-About-Motivates/dp/0143145088">Drive &#8211; The Surprising Truth About What Motivates Us</a></li><li><a
href="http://en.wikipedia.org/wiki/Post-capitalism">Post-Capitalism on Wikipedia</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/post-capitalism-techonology/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Table Style: CSS Examples of Good Looking HTML Tables</title><link>http://pythoughts.com/table-style-css/</link> <comments>http://pythoughts.com/table-style-css/#comments</comments> <pubDate>Sat, 09 Jul 2011 20:32:19 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Design]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1164</guid> <description><![CDATA[Table style &#8211; it&#8217;s a difficult thing to do right sometimes without a plugin, or either by spending a lot of time playing with css styles and refreshing the browser to see your new changes. You know I&#8217;m telling the &#8230; <a
href="http://pythoughts.com/table-style-css/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><strong>Table style</strong> &#8211; it&#8217;s a difficult thing to do right sometimes without a plugin, or either by spending a lot of time playing with css styles and refreshing the browser to see your new changes. You know I&#8217;m telling the truth <img
src='http://pythoughts.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> What we really need, I realized after searching many times for <em>good looking table css</em> examples, is a site that gives us some css examples and alternative stylesheets to help us design good-looking tables. I&#8217;ve compiled a few here that I&#8217;ve spent my own time designing, and I hope that people can use these to build upon and to design really nice tables. Maybe someone will take these and build a little design site that has css examples for things like tables, forms, headers, etc. There really is a need for this kind of thing&#8230;at least my need!</p><p>This is for tables that hold data, which is really the purpose of tables, so it includes table headers, etc. Let&#8217;s start with something basic that we can build upon.<br
/> <span
id="more-1164"></span></p><h2>Example Table for Our Table Styles</h2><pre>&lt;table id="table-design"&gt;
	&lt;thead&gt;
		&lt;th&gt;First Name&lt;/th&gt;
		&lt;th&gt;Last Name&lt;/th&gt;
		&lt;th&gt;Email Address&lt;/th&gt;
		&lt;th&gt;Website&lt;/th&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;John&lt;/td&gt;
			&lt;td&gt;Smith&lt;/td&gt;
			&lt;td&gt;johnsmith@example.com&lt;/td&gt;
			&lt;td&gt;http://www.example.com&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Peter&lt;/td&gt;
			&lt;td&gt;James&lt;/td&gt;
			&lt;td&gt;peterjames@example.com&lt;/td&gt;
			&lt;td&gt;http://www.example.com&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Ronald&lt;/td&gt;
			&lt;td&gt;Weeley&lt;/td&gt;
			&lt;td&gt;ronweeley@example.com&lt;/td&gt;
			&lt;td&gt;http://www.example.com&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</pre><h2>Table Style #1 &#8211; ABC Basic</h2><h3>CSS Code for Style #1</h3><pre>&lt;style type="text/css"&gt;
#table-design thead {
	width: 100%;
}
#table-design td {
	padding: 5px 5px 5px 0;
	vertical-align: top;
}
#table-design thead th {
	padding-right: 10px;
	text-align: left;
}
&lt;/style&gt;</pre><h3>An Example of Table Style #1</h3><table
id="table-1"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><h2>Table Style #2 &#8211; Fancy Gray</h2><h3>CSS Code for Style #2</h3><pre>&lt;style type="text/css"&gt;
#table-2 {
	border: 1px solid #e3e3e3;
	background-color: #f2f2f2;
        width: 100%;
	border-radius: 6px;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
}
#table-2 td, #table-2 th {
	padding: 5px;
	color: #333;
}
#table-2 thead {
	font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
	padding: .2em 0 .2em .5em;
	text-align: left;
	color: #4B4B4B;
	background-color: #C8C8C8;
	background-image: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#e3e3e3), color-stop(.6,#B3B3B3));
	background-image: -moz-linear-gradient(top, #D6D6D6, #B0B0B0, #B3B3B3 90%);
	border-bottom: solid 1px #999;
}
#table-2 th {
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 17px;
	line-height: 20px;
	font-style: normal;
	font-weight: normal;
	text-align: left;
	text-shadow: white 1px 1px 1px;
}
#table-2 td {
	line-height: 20px;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 14px;
	border-bottom: 1px solid #fff;
	border-top: 1px solid #fff;
}
#table-2 td:hover {
	background-color: #fff;
}
&lt;/style&gt;</pre><style type="text/css">#table-2 {
	border: 1px solid #e3e3e3;
	background-color: #f2f2f2;
	border-radius: 6px;
        width: 100%;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
}
#table-2 td, #table-2 th {
	padding: 5px;
	color: #333;
}
#table-2 thead {
	font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
	padding: .2em 0 .2em .5em;
	text-align: left;
	color: #4B4B4B;
	background-color: #C8C8C8;
	background-image: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#e3e3e3), color-stop(.6,#B3B3B3));
	background-image: -moz-linear-gradient(top, #D6D6D6, #B0B0B0, #B3B3B3 90%);
	border-bottom: solid 1px #999;
}
#table-2 th {
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 17px;
	line-height: 20px;
	font-style: normal;
	font-weight: normal;
	text-align: left;
	text-shadow: white 1px 1px 1px;
}
#table-2 td {
	line-height: 20px;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 14px;
	border-bottom: 1px solid #fff;
	border-top: 1px solid #fff;
}
#table-2 td:hover {
	background-color: #fff;
}</style><h3>Table Style #2 &#8211; Example</h3><table
id="table-2"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><h2>Table Style #3 &#8211; Super Elegant</h2><h3>CSS For Table Style #3</h3><pre>&lt;style type="text/css"&gt;
#table-3 {
	border: 1px solid #DFDFDF;
	background-color: #F9F9F9;
	width: 100%;
	-moz-border-radius: 3px;
	-webkit-border-radius: 3px;
	border-radius: 3px;
	font-family: Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;
	color: #333;
}
#table-3 td, #table-3 th {
	border-top-color: white;
	border-bottom: 1px solid #DFDFDF;
	color: #555;
}
#table-3 th {
	text-shadow: rgba(255, 255, 255, 0.796875) 0px 1px 0px;
	font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
	font-weight: normal;
	padding: 7px 7px 8px;
	text-align: left;
	line-height: 1.3em;
	font-size: 14px;
}
#table-3 td {
	font-size: 12px;
	padding: 4px 7px 2px;
	vertical-align: top;
}
&lt;/style&gt;</pre><h3>Example of Table Style #3</h3><style type="text/css">#table-3 {
	border: 1px solid #DFDFDF;
	background-color: #F9F9F9;
	width: 100%;
	-moz-border-radius: 3px;
	-webkit-border-radius: 3px;
	border-radius: 3px;
	font-family: Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;
	color: #333;
}
#table-3 td, #table-3 th {
	border-top-color: white;
	border-bottom: 1px solid #DFDFDF;
	color: #555;
}
#table-3 th {
	text-shadow: rgba(255, 255, 255, 0.796875) 0px 1px 0px;
	font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
	font-weight: normal;
	padding: 7px 7px 8px;
	text-align: left;
	line-height: 1.3em;
	font-size: 14px;
}
#table-3 td {
	font-size: 12px;
	padding: 4px 7px 2px;
	vertical-align: top;
}</style><table
id="table-3"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><h2>Table Style #4 &#8211; Modern Fresh</h2><h3>Style #4 CSS</h3><pre>&lt;style type="text/css"&gt;
#table-4 {
	background-color: whiteSmoke;
	border-radius: 6px;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
}
#table-4 td, #table-4 th {
}
#table-4 th {
	color: #333;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-style: normal;
	font-weight: normal;
	text-align: left;
	padding: 0 20px;
}
#table-4 td {
	padding: 0 20px;
	line-height: 20px;
	color: #0084B4;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 14px;
	border-bottom: 1px solid #fff;
	border-top: 1px solid #fff;
}
#table-4 td:hover {
	background-color: #fff;
}
&lt;/style&gt;</pre><h3>Style #4 Example</h3><style type="text/css">#table-4 {
	background-color: whiteSmoke;
	border-radius: 6px;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
}
#table-4 td, #table-4 th {</p>
<p>}
#table-4 th {
	color: #333;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-style: normal;
	font-weight: normal;
	text-align: left;
	padding: 0 20px;
}
#table-4 td {
	padding: 0 20px;
	line-height: 20px;
	color: #0084B4;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 14px;
	border-bottom: 1px solid #fff;
	border-top: 1px solid #fff;
}
#table-4 td:hover {
	background-color: #fff;
}</style><table
id="table-4"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><h2>Table Style #5 &#8211; Basic Gray</h2><h3>CSS</h3><pre>&lt;style type="text/css"&gt;
#table-5 {
	background-color: #f5f5f5;
	padding: 5px;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	border: 1px solid #ebebeb;
}
#table-5 td, #table-5 th {
	padding: 1px 5px;
}
#table-5 thead {
	font: normal 15px Helvetica Neue,Helvetica,sans-serif;
	text-shadow: 0 1px 0 white;
	color: #999;
}
#table-5 th {
	text-align: left;
	border-bottom: 1px solid #fff;
}
#table-5 td {
	font-size: 14px;
}
#table-5 td:hover {
	background-color: #fff;
}
&lt;/style&gt;</pre><h3>Table Style #5 Example &#8211; Minimal/Stylish Gray</h3><style>#table-5 {
	background-color: #f5f5f5;
	padding: 5px;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	border: 1px solid #ebebeb;
}
#table-5 td, #table-5 th {
	padding: 1px 5px;
}
#table-5 thead {
	font: normal 15px Helvetica Neue,Helvetica,sans-serif;
	text-shadow: 0 1px 0 white;
	color: #999;
}
#table-5 th {
	text-align: left;
	border-bottom: 1px solid #fff;
}
#table-5 td {
	font-size: 14px;
}
#table-5 td:hover {
	background-color: #fff;
}</style><table
id="table-5"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><h2>Table Style #6 &#8211; Elegant and Practical</h2><h3>CSS for Style #6</h3><pre>
&lt;style type=&quot;text/css&quot;&gt;
#table-6 {
width: 100%
border: 1px solid #B0B0B0;
}
#table-6 tbody {
/* Kind of irrelevant unless your .css is alreadt doing something else */
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
#table-6 thead {
text-align: left;
}
#table-6 thead th {
background: -moz-linear-gradient(top, #F0F0F0 0, #DBDBDB 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F0F0F0), color-stop(100%, #DBDBDB));
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F0F0F0', endColorstr='#DBDBDB', GradientType=0);
border: 1px solid #B0B0B0;
color: #444;
font-size: 16px;
font-weight: bold;
padding: 3px 10px;
}
#table-6 td {
padding: 3px 10px;
}
#table-6 tr:nth-child(even) {
background: #F2F2F2;
}
&lt;/style&gt;
</pre><h3>Example of Style #6</h3><style type="text/css">#table-6 {
width: 100%
border: 1px solid #B0B0B0;
}
#table-6 tbody {
/* Kind of irrelevant unless your .css is alreadt doing something else */
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
#table-6 thead {
text-align: left;
}
#table-6 thead th {
background: -moz-linear-gradient(top, #F0F0F0 0, #DBDBDB 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F0F0F0), color-stop(100%, #DBDBDB));
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F0F0F0', endColorstr='#DBDBDB', GradientType=0);
border: 1px solid #B0B0B0;
color: #444;
font-size: 16px;
font-weight: bold;
padding: 3px 10px;
}
#table-6 td {
padding: 3px 10px;</p>
<p>}
#table-6 tr:nth-child(even) {
background: #F2F2F2;
}</style><table
id="table-6"><thead><th>First Name</th><th>Last Name</th><th>Email Address</th><th>Website</th></thead><tbody><tr><td>John</td><td>Smith</td><td>johnsmith@example.com</td><td>http://www.example.com</td></tr><tr><td>Peter</td><td>James</td><td>peterjames@example.com</td><td>http://www.example.com</td></tr><tr><td>Ronald</td><td>Weeley</td><td>ronweeley@example.com</td><td>http://www.example.com</td></tr></tbody></table><p>My personal favorite table styles from these are #3 and #5 &#8211; what do you think?</p><p>Related Resources:</p><p><u
style="text-decoration:underline;"><a
href="http://icant.co.uk/csstablegallery/tables/96.php" title="css table exmples">CSS Table Style Examples</a></u>. I tried to add one of <em>my table style designs</em> here to this website, but it wouldn&#8217;t let me! Pretty exhaustive list of designs though!</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/table-style-css/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Cee Lo Green&#8217;s Website Has Terrible SEO &#8211; Find Out Why</title><link>http://pythoughts.com/cee-lo-green-bad-seo/</link> <comments>http://pythoughts.com/cee-lo-green-bad-seo/#comments</comments> <pubDate>Fri, 08 Jul 2011 16:37:32 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Internet Business]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1133</guid> <description><![CDATA[Cee Lo Green is probably my favorite musical artist right now, but his website is an SEO disaster. I spent some time looking at it and making comments. I hope that we can learn from their mistakes. Cee Lo, if &#8230; <a
href="http://pythoughts.com/cee-lo-green-bad-seo/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/CeeLoGreenLiveLounge-300x182.jpg" alt="Cee Lo Green" title="CeeLoGreenLiveLounge" width="300" height="182" class="image alignleft size-medium wp-image-1138" style="float:left; margin-right:10px;" />Cee Lo Green is probably my favorite musical artist right now, but <strong>his website is an SEO disaster</strong>. I spent some time looking at it and making comments. I hope that we can learn from their mistakes. Cee Lo, if you read this, your website can be fixed easily and you&#8217;ll finally get the rankings you deserve. You can see his site here: <u
style="text-decoration: italic"><a
href="http://www.ceelogreen.com/" title="Cee Lo Green">Cee Lo Green</a></u>.</p><div
class="clear"></div><h2>Canonical Addresses</h2><p><em>www.ceelogreen.com</em> and <em>www.ceelogreen.com/home.htm</em> are bringing up the exact same page, but there is no canonical meta link telling the search engines that they are the same thing. This creates <strong>duplicate content</strong> on the likes of Google, which will dilute its SEO value. They also link to the &#8216;home.htm&#8217; page on the website, while I imagine external links to the site will rarely ever include this. That means that their internal linking to the homepage is useless, and harmful. Furthermore <strong>the concept of a 404 error does not exist</strong> on the site. If you go to www.ceelogreen.com/lol, you&#8217;ll get a valid page with the text &#8220;Page not Found&#8221; and a link to the homepage.<br
/> <span
id="more-1133"></span></p><h2>Images</h2><p>No alt tags on most images, <strong>including the logo</strong>. Not only does this create accessibility problems, and not only does it mean that the site isn&#8217;t strictly valid, but it&#8217;s a good reason that Cee Lo&#8217;s own site doesn&#8217;t rank above his Wikipedia page. The first alt tag that I can find on the page (right at the top) says &#8220;Click here to open up a new window&#8221; &#8211; why on earth would anyone use this as an alt tag? It tells you nothing about what is on the image. There reason that we use alt tags is so that when the image doesn&#8217;t load we&#8217;ll still understand what it was meant to tell us (hence, alternative). Well, at least we would know that we can use that link in case our browser stops being able to open new windows &#8211; this is bad SEO though.</p><h2>Keyword Density for &#8220;Cee Lo Green&#8221;</h2><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/cee-lo-green_1-207x300.jpg" alt="Cee Lo Green is a badass with bad SEO" title="Cee Lo Green is a badass with bad seo" width="207" height="300" class="image alignleft size-medium wp-image-1141" style="float:right; margin-left:10px;" />The text &#8220;Cee Lo Green&#8221;, the main keyword of the site, is featured on the site&#8217;s homepage a grand total of one time. Apart from the domain name and page title, how would a search engine really know that this page is about Cee Lo Green? This is <em>seriously</em> hindering its performance. Never mind the fact that <em>Cee Lo Green</em> isn&#8217;t featured in any h1 tags, emphasis, bold, etc. It&#8217;s not even included in the footer.</p><p>The homepage title is too long, and it dilutes the keyword density by including irrelevant details. The keywords are clearly &#8220;Cee Lo Green&#8221; and his new album &#8220;The Lady Killer&#8221;, but the homepage title says &#8220;Cee Lo Green | Official website of the lady killer | www.ceelogreen.com&#8221;. At 71 characters, most SEO professionals would say it&#8217;s much too long thus weakening the emphasis on <strong>Cee Lo Green</strong>, which is the critical phrase.</p><h2>Meta</h2><p>The meta description of the site is &#8220;Cee Lo Green | Official website of The Lady Killer | www.ceelogreen.com&#8221; &#8211; <strong>exactly the same as the title!</strong> That&#8217;s odd &#8211; were they just too lazy to come up with a description of who Cee Lo Green is? That information shouldn&#8217;t be hard to find since his wikipedia page ranks first on Google, ooh! There is nothing in the meta description about it being the website of an American musician, nothing about the fact that he has performed in multiple groups by different names, like Gnarls Barkley. It&#8217;s no surprise that Cee Lo&#8217;s website ranks nowhere on Google for any of his alias names or associated acts. Did the web developer not know about Cee Lo Green&#8217;s career so far?</p><p>The designing company that created the website gets commissioned to do many websites for famous artists, including James Blunt. By the way, a quick keyword density count on the website shows that the name of that design company ranks first above any other keywords &#8211; yeah Cee Lo, they mentioned themselves more than they mentioned you on your site.</p><p>Cee Lo Green does everything so excellently, that it makes you wonder why his website development was taken so lightly.</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/cee-lo-green-bad-seo/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Make Your Website Popular: 10 Tips to Get Social</title><link>http://pythoughts.com/make-your-website-popular/</link> <comments>http://pythoughts.com/make-your-website-popular/#comments</comments> <pubDate>Thu, 07 Jul 2011 10:51:47 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=841</guid> <description><![CDATA[Whether you&#8217;re a developer, a blogger, or a mom-and-pop store owner, you probably want to make your website popular. How do you make your website popular though? Websites become popular because they get people to go to them on a &#8230; <a
href="http://pythoughts.com/make-your-website-popular/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><strong>Whether you&#8217;re a developer, a blogger, or a mom-and-pop store owner, you probably want to make your website popular</strong>. How do you <em>make your website popular</em> though? Websites become popular because they get people to go to them on a regular basis, and then those people link to that website and share it with their friends. The trick is to get people to enjoy being on your website enough to come again, and then to feel confident enough to share your site with their friends. This is why <em>making your website social</em> is such an important thing. You don&#8217;t think that your business site can be social? You&#8217;re wrong. This article is going to tell you some ways that <strong>you can make any website more social</strong>, and get your website to be more popular.<br
/> <span
id="more-841"></span></p><h2>10 Simple Ways to Make Your Website Popular</h2><ol><li><img
src="http://pythoughts.com/wp-content/uploads/2011/07/audience-e1310039896311.jpg" alt="Make your website popular" title="Make your website popular" width="284" height="249" class="image alignleft size-medium wp-image-1120" style="float:right; margin-left:10px;margin-bottom:10px;"/><strong>Include commenting functionality</strong>. Page commenting has become ubiquitous on website these days, thanks to many CMS&#8217;s like WordPress that have popularized the concept even for simple websites. Commenting allows users to share their views about your content, and even gets <em>readers</em> more engaged. You may talk about one perspective of a topic, and a commenter may post the completely opposite idea, and argue for it! That stirs up some debate in your readers&#8217; minds, which is exactly what you should be doing! Sites that do this well have strong loyalty &#8211; &#8220;stickability&#8221; &#8211; from their users. To enhance your comments, you can even get your comments to have avatars (a little picture of the commenter herself), which brings me to the next point&#8230;</li><li><strong>Allow users to have to add a piece of themselves to your website</strong>. For example, make a page were users can upload photos of themselves to be displayed in a public collage, with links on each photo to the person&#8217;s website. You can call that page something intriguing like &#8220;A Place on my Website for You&#8221;. Not only does this add social value to your site (so that people can see that you actually have readers), but it&#8217;ll bring people back to your site after they have made this social investment. Readers will then connect with other readers that they think have interesting pictures.</li><li><strong>Interact with your users.</strong> In posts and pages, ask users questions that will get them commenting, or at least feeling more involved. Use a chat popup plugin, or some kind of rapid chat application to speak to them personally. Write as if you are writing to someone specific, so that content on the site doesn&#8217;t become dull and generic. This is usually a tip that professional writers give.</li><li><strong>Encourage users to share content</strong>. Use a service like <a
href="http://www.cloudflood.com/" >CloudFlood</a>, or <a
href="http://www.paywithatweet.com/">Pay with a Tweet</a>, or get your own service like this created, that allows users to receive a free product or service in exchange for sharing your site on social networks. This is a way to get a site that might not usually be shared on social networks to explode virally.</li><li><strong>Link to your own social profiles</strong>. Although it&#8217;s very common, having your own website puts you into a place of authority. When you open people up to finding your personal profiles, that allows them to feel like they have intimate access to somebody important, which not only makes them come back to your website more, but also makes them feel more entitled to interact there. Think of your own personal experiences with this to validate it. Having a place for people to find you on a personal social platform like Facebook also makes you seem infinitely more personable, and people tend to link and interact more with people than with websites.</li><li><strong>Display updates from your Twitter or Facebook sites</strong>. Maybe plugins will set this up for you, and allows the users to read some of your posts without having to go all the way to Twitter first. This way you can get them hooked on your content before they&#8217;ve even started following you! It also gets them engaged on your website at the same level that they are when they&#8217;re on Facebook or Twitter, which is a good association to make.</li><li><strong>Display your site&#8217;s statistics</strong>. A good way to make your readers feel more included in your website is to display some of the statistics that they are contributing towards. It&#8217;s a fact that <em>sites that show their monthly earnings and readership are far more engaging than sites that don&#8217;t</em>; and on those sites, the posts where they share this data is almost always the most popular! Make your website popular by being transparent, and sharing your data with your readers.</li><li><strong>Add share buttons on your pages.</strong> You can go a long way to making it easy for your users to share your content to their social networks. If you would like a really easy fix for this for WordPress, read this article on <a
href="http://pythoughts.com/code-to-add-social-bookmarks/" title="The Quickest, Simplest and Prettiest Way to Add Social Bookmarking to Your WordPress Entries">how to add social bookmarking buttons to WordPress</a>.</li><li><strong>Optimize your website for search engines</strong>. The best way to make your website popular in the long run is to make sure that people can find it on their own. Think of a major search engine as actually being a social network itself, referring websites to people when they mention a topic. That means that your site should show up in major search engines. For this to happen, those search engines need to know what your site is about, and also that it is worthwhile for people to go there. For both of those things, you need to get people to link to your site while talking about related topics. This is another reason to make your website personable and fun, so that people want to link to you.</li><li><strong>Communicate with others in your industry</strong>. If you run a website that sells travel coupons, it may be worthwhile to get into contact with other people who are doing similar things. That way, they might link to you in their site and send traffic your way.</li></ol><h3>Why Make Your Website Popular?</h3><p>If you follow these tips, I am sure that you can make your website popular in no time. Remember that traffic builds on traffic! The more people that go to your website, the most likely it is that they are referring it, linking to it, and that search engines are starting to notice it. Search engines follow people! That said, make sure that you can capitalize on traffic by having effective sales copy, or ways that you can profit on the new influx of readers or users. There is no point in spending the time to make your website popular if there is no benefit from it, is there?</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/make-your-website-popular/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Simplifying Your Website for Better Performance</title><link>http://pythoughts.com/minimal-web-development/</link> <comments>http://pythoughts.com/minimal-web-development/#comments</comments> <pubDate>Wed, 06 Jul 2011 15:54:32 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Programming]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=1034</guid> <description><![CDATA[I don&#8217;t know what it is, perhaps all programmers are like this, but I have this need to strip away everything that is unnecessary from my websites. Google Analytics isn&#8217;t even worth it for me, I&#8217;d rather just not have &#8230; <a
href="http://pythoughts.com/minimal-web-development/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>I don&#8217;t know what it is, perhaps all programmers are like this, but I have this need to <strong>strip away everything that is unnecessary from my websites</strong>. Google Analytics isn&#8217;t even worth it for me, I&#8217;d rather just not have that external connection that I know can add milliseconds onto a user&#8217;s load time. Is this a rare form of coder-autism, or <em>does it really help your site?</em><br
/> <span
id="more-1034"></span></p><h2>SEO Benefits of a Simple Website</h2><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Vector-Supercar-341060-300x225.jpg" width="220" height="150" class="image alignleft size-medium wp-image-1038" style="float:left; margin-right:10px;" alt="Enhancing Website Performance Through Minimalism" title="Enhancing Website Performance Through Minimalism" />Back when I was trying out Google App Engine, I was writing my site in Python, while just learning the language. What was great about this was that it forced me to be incredibly simple (and in a way precise) with regards to the features I added. Later when I got more involved in developing for WordPress, I had a real problem with the amount of excess code involved. Sure, WordPress has a lot of great features, and it&#8217;s a splendid CMS, but WordPress is also really just a huge array of files. A lot of features are included just in case some of their millions of users need a feature. My Python site actually did a lot better in the search engines than it did when I converted it into a WordPress site. This goes against the mindset that many people have &#8211; that WordPress is a great tool for search engine optimization. My experience just isn&#8217;t consistant with that.</p><p>Maybe someone like <a
href="http://www.mattcutts.com/blog/" >Matt Cutts</a> could enlighten me about this issue: What is the <strong>SEO value</strong> of stripping down your website to the bare minimum? Is the myriad of plugins that I install to bring more features into my site actually hurting its performance on the major search engines? How about user experience in general?</p><p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-06-at-5.43.46-PM-300x199.png" alt="Eric Schmidt Google" title="Eric Schmidt Google" width="225" height="150" class="image alignleft size-medium wp-image-1052" style="float:right; margin-left:10px;" />Google strips their site down to the minimum because it can help save lives. Eric Schmidt talked about this in a presentation he once gave to group of doctors (unfortunately I can&#8217;t find the video now to link to it, but if you know what I&#8217;m talking about please add it in the comments!). He spoke about how Google needs to be able to return their results in milliseconds, because people search for things like &#8220;heart attack symptoms&#8221; and the rate at which results appear can be the difference between life and death for someone. But what if my premium SEO plugin is trying to validate its license at that time, and Google decides that the extra second is too expensive?</p><h3>How to Keep Your Site Simple</h3><ol><li>Keep your .css as short as possible. If you&#8217;re using a CMS like WordPress, it probably comes with a theme that has a million extraneous styles that you&#8217;ll never use. Instead, design your site with <a
href="http://pythoughts.com/gbcss.css">this css file</a> as a start (strip out what you don&#8217;t need from this even), and add as needed.</li><li>Compress your images &#8211; use <a
href="http://www.smushit.com/ysmush.it/">smush.it</a>. Every single one of my images in this blog have been compressed using the <a
href="http://wordpress.org/extend/plugins/wp-smushit/">Smush.it plugin</a>.</li><li>Remove extra plugins from your CMS. What do you really need all of those plugins for? Does adding &#8220;like&#8221; on your comments really improve the content and experience of the website? Does it bring commenters back, or does it clutter things? Sometimes we&#8217;re lazy to create certain functions outselves, and so we employ plugins &#8211; these plugins are designed for general use though, and so often they can be very inefficient compared to what you could do yourself. I like checking out new plugins, and so I have about 60 installed. I only activate a handful though and those include ones that I personally designed (E.g. the statistics plugin to the right, which I&#8217;m proud of), and ones that help me out in the admin, like the Smush.it plugin and akismet.</li><li>Limit the number of files you use, but keep your javascript and css in separate files. When your browser requests files, it does them one at a time &#8211; this can be slow, so try and keep your files short and few. However, use a separate file for your stylesheets and your javascript code, because these can be cached.</li><li>Write your own code, or go through it line by line and make sure that it&#8217;s simple. That&#8217;s the thing that gets me the most, it&#8217;s code that is not concise and short. You don&#8217;t have to be some great programmer or intellectual to make sure that your code isn&#8217;t flying all over the place, just be humble with your code. That should be a catch phrase for our web dev work, <em>coding web apps one humble line at a time</em>.</li></ol><p>I won&#8217;t use a CMS for my own websites anymore. That ship has sailed. From now on, I just want to use Python, and maybe PHP, to create my own sites from scratch. I don&#8217;t even want to use a framework. What needs to be done, will be done, and that&#8217;s the long and short of it.</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/minimal-web-development/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Facebook Launches Email &#8211; Meh</title><link>http://pythoughts.com/facebook-email/</link> <comments>http://pythoughts.com/facebook-email/#comments</comments> <pubDate>Tue, 05 Jul 2011 17:24:06 +0000</pubDate> <dc:creator>Graeme</dc:creator> <category><![CDATA[Facebook]]></category> <guid
isPermaLink="false">http://pythoughts.com/?p=987</guid> <description><![CDATA[A few days ago, I went to my Facebook messages section and I found an alert that said &#8220;Would you like to activate your own Facebook email address?&#8221; At first I was quite excited. I had always thought that the &#8230; <a
href="http://pythoughts.com/facebook-email/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><img
src="http://pythoughts.com/wp-content/uploads/2011/07/Screen-shot-2011-07-06-at-11.33.50-AM-300x143.png" alt="Facebook email" title="Facebook launches new email service" width="300" height="143" class="alignleft size-medium wp-image-999" style="float:left; margin-right:10px;" />A few days ago, I went to my <strong>Facebook</strong> messages section and I found an alert that said &#8220;Would you like to activate your own <em>Facebook email address</em>?&#8221; At first I was quite excited. I had always thought that the best way that Facebook could compete better with Google was if they brought out email, and made their app good enough to allow users to switch over from GMail. Facebook email, however, is currently a failure in many respects.<br
/> <span
id="more-987"></span></p><h2>Why Haven&#8217;t Facebook Done Email Before?</h2><p>I&#8217;d heard Mark Zuckerberg before say that they weren&#8217;t bothering with email, because when he spoke to younger users, they told him that they found regular email&#8217;s lack of fluidity too slow. That&#8217;s why they preferred to stay with the idea of conversations instead. Because of this, I feel like their sudden change has something to do with the fact that Google has just launched Google+, their own social network modelled <u
style="font-decoration:underline;"><a
href="http://pythoughts.com/google-plus/">quite drastically on Facebook</a></u>.</p><h3>Why I wouldn&#8217;t Change from GMail to Facebook Email:</h3><ol><li>Since email is going to function through Facebook messages just like usual, with no separate app, there is little added value to Facebook itself. Since most of my friends are on Facebook all the time already, there is little reason why I would ever send a message to their Facebook from my email. It&#8217;s just unlikely, so why give out my Facebook email anyway?</li><li>The email address is unchangeably my Facebook username. You don&#8217;t know what that is? It&#8217;s the stupid name that you gave for your Facebook profile link. Facebook.com/users/your.funny.username. People didn&#8217;t pick these to be their email addresses, they picked them in many cases because they were funny, and some people actually thought that they could use it for SEO, giving relevance to the links they put in their info (did none of y&#8217;all think about that?).</li><li>The email addresses aren&#8217;t even short. I would have liked it if it was something like <em>name@fb.com</em>, but instead they used the entire 8-character domain name. Maybe they thought that people would like the social value it brings, or perhaps they thought it would improve their branding. All I know is that it wasn&#8217;t a <em>smart</em> move.</li></ol><p>By the way, if you&#8217;re a developer, you might want to read this article about <a
href="http://pythoughts.com/data-from-facebook-php/" title="How to Retrieve Data from Facebook Using PHP: Tutorial">getting data from Facebook with PHP</a>.</p> ]]></content:encoded> <wfw:commentRss>http://pythoughts.com/facebook-email/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
