In my previous post we created a new WordPress plugin which simplified the administration panels for your clients. If you haven’t read it, please do so first. In this article, we’ll use the same plugin file for deeper configuration changes.

Remove the WordPress Update Notification

WordPress informs you when an update is available. Unfortunately, it tells everyone — including your clients. That could lead to unnecessary concern or tempt them call you every half an hour until it’s upgraded.

Append the following code to easy-admin.php to remove the notification for everyone except for WordPress administrators:

function no_update_notification() {
	if (!current_user_can('activate_plugins')) remove_action('admin_notices', 'update_nag', 3);
add_action('admin_notices', 'no_update_notification', 1);

Remove Unnecessary Dashboard Widgets

You can remove dashboard widgets for a user by logging in as them and un-checking items in the “Screen Options” pull-down panel. However, that may not be practical and there’s nothing to prevent your client re-enabling them.

Append the following function to easy-admin.php to remove unnecessary dashboard widgets. You may need to add, remove or modify unset commands as required. For example, the first section (lines 5-7) removes “Right Now” for everyone but WordPress administrators. The second section (lines 9-13) removes widgets regardless of the user’s rights.

The dashboard widget’s ID is assigned to its box div element — use Firebug or inspect the source to find that value.

// remove unnecessary dashboard widgets
function remove_dashboard_widgets(){
	global $wp_meta_boxes;
	// do not remove "Right Now" for administrators
	if (!current_user_can('activate_plugins')) {
	// remove widgets for everyone
add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

Remove Unnecessary Page and Post Meta Boxes

Few developers use all the features WordPress has to offer. For example, if all posts are assigned to a single default category, you don’t require the Categories box. Or perhaps you’re not permitting comments and can remove associated boxes.

Append the following function to easy-admin.php to remove unnecessary meta boxes from the posts and pages panels. You may have to add or remove remove_meta_box() calls in this function. The first argument is the ID assigned to the box’s div element — again, this can be discovered in the source or with Firebug.

// remove unnecessary page/post meta boxes
function remove_meta_boxes() {
	// posts
	// pages

Remove Favorite Actions

The favorite actions button resides in the WordPress header next to the “Howdy” message. It normally provides quick links to New Post, Drafts, New Page, Upload and perhaps a few plugin-specific options such as “Empty Cache”. Let’s remove the options we don’t require by appending the following code to easy-admin.php:

// remove favorite actions
function remove_favorite_actions($actions) {
	if (!current_user_can('activate_plugins')) {
	return $actions;
add_filter('favorite_actions', 'remove_favorite_actions');

In this example, we’ve removed the Comments link for everyone except administrators. To remove other items, you need to find the action’s URL in the page source. Locate the element with the ID “favorite-actions” and, within that, an element with the ID “favorite-inside”. The child divs contain links to URLs such as “media-new.php”. To remove that option, simply add unset($actions['media-new.php']); to the function.

Phew. In my next WordPress post, we’ll address the WordPress menu and remove all the dangerous options you want to hide from clients.


If you’ve been waiting to upgrade to Firefox 4, you’re too late! As promised, Mozilla released Firefox 5 on June 21 2011 — just three months after version 4 was launched. The organization has embarked on a Chrome-like release-little, release-often rapid-update schedule.

If you’re too excited to read further, download the installer from or update by selecting Help > About Firefox > Check for Updates. You may be lucky enough to receive a fast incremental update — it didn’t work for me and the full installer was downloaded.

Firefox 4 was a major update. You’re unlikely to spot any immediate differences in version 5 since most of the changes are under the hood:

  • support for CSS3 animations with the -moz prefix
  • improved JavaScript and canvas performance
  • additional HTML5, SVG and MathML features
  • faster browsing

Developers should also note that setTimeout and setInterval events will only execute once per second or less frequently on inactive tabs. It replicates the behavior of requestAnimationFrame to save CPU and power consumption.

Great — but there’s a downside. You may find several of your add-ons are disabled by Firefox 5. They should work, but many authors have not yet updated their add-on’s version numbers. Firebug and the Web Developer Toolbar are fine, but Console2 and HttpFox are blocked.

Not every plugin author has the time or resources to match the new schedule. It’s unfortunate and I hope Mozilla can address the problem. Perhaps a less formal approach could be adopted which allows the community to test and approve plugins without relying on the author to hard-code supported versions. Alternatively, Mozilla could have simply released Firefox 4.1 — the numbering is becoming increasingly irrelevant.

Despite the add-on hassles, it’s good to see updates appearing more regularly. Let us know what you think of the Firefox 5.


One often vaunted feature of Android are the Home screen widgets. The official definition of a widget, taken from the Android documentation is: App Widgets are miniature application views that can be embedded in other applications (such as the Home screen) and receive periodic updates. In practice, widgets are generally only used on the Home screen. Widgets can also be interacted with, reacting to touch events, although there are some limits on what can be done

See the original article here:
BuildMobile: How To Code an Android Widget


Just when you thought you’d had enough football (or maybe not enough, in some cases) FIFA, the international football organization revealed the logo design for the next world cup which will take place in Brazil in 2014. The new design entitled “Inspiration”, was the winning submission, chosen from 25 entries. The judging panel included famous Brazilians, model Gisele Bundchen and author Paulo Coelho. The logo was designed by Sao Paolo-based agency Africa .

See more here:
DesignFestival: Behind the Brazil 2014 World Cup Logo


WordPress’s popularity owes much to it’s easy administration panels. Unfortunately, it can still be daunting for non-technical users such as your clients. At best they’ll require a little training, hand-holding and support. At worst, they’ll play around with plugin installation, edit some theme code, then expect you to clear up the mess.

I’ve written a number of “Make WordPress Easier for Clients” articles (see part 1 and part 2). In those examples, code was placed in the theme’s functions.php file. That’s still a viable solution if you have one WordPress installation per client or each is configured differently.

In this article, however, we’ll create a plugin. Plugins have a couple of advantages:

  1. Your code resides in one file which can make maintenance easier.
  2. If you’re running a WordPress network with multiple sites (previously known as WordPress MU), you can activate a single plugin across the network so it’s applied to every site.

WordPress Plugin Basics

Our plugin will be contained in a single PHP file. We’ll name it easy-admin.php and place it in the WordPress plugin folder (wp-content/plugins/). Ideally, the file should be UTF-8 encoded. If your text editor doesn’t permit UTF-8, well, use a better editor! That said, those using English are unlikely to experience issues with ANSI-encoded files.

A PHP tag and header comments are required at the top of the file, e.g.

Plugin Name: Easy Administration
Plugin URI:
Description: Simplifies WordPress administration panels.
Version: 1.0
Author: Craig Buckler
Author URI:
License: GPL2

You can change the header details, but ensure the definition tags remain — WordPress uses them to recognize your plugin.

You can now install your plugin by activating it in the “Plugins” section of the WordPress administration panels. Those with a WordPress network can activate it for all sites in the “Network Admin” section. It won’t do anything yet, but you can now add whichever features you require…

Change the WordPress Login Page Logo

The WordPress logo is lovely but few clients will care what CMS they’re using. It might be more helpful to show their site name. Append the following code to easy-admin.php; it replaces the login page logo with the name and uses a pleasing CSS3-letterpress text:

// login page logo
function custom_login_logo() {
	echo '<style>h1 a, h1 a:hover, h1 a:focus { font-size: 1.4em; font-weight: normal; text-align: center; text-indent: 0; line-height: 1.1em; text-decoration: none; color: #dadada; text-shadow: 0 -1px 1px #666, 0 1px 1px #fff; background-image: none !important; }</style>';
add_action('login_head', 'custom_login_logo');

WordPress alternative login page logo

Remove the WordPress Icon From the Administration Panel Header

The WordPress icon is shown next to the site name in the header. There’s nothing wrong with it but some clients will question why there’s a ‘W’ next to their site. To remove it, append the following code to easy-admin.php:

// remove administration page header logo
function remove_admin_logo() {
	echo '<style>img#header-logo { display: none; }</style>';
add_action('admin_head', 'remove_admin_logo');

Change the WordPress Administration Panel Footer Text

The footer provides links to WordPress, documentation and feedback. Few clients are likely to find it useful so you can replace it with your own support details. Append the following code to easy-admin.php and change the echo statement to output to a suitable message:

// change administration panel footer
function change_footer_admin() {
	echo 'For support, please call 123456 or email <a href=""></a>';
add_filter('admin_footer_text', 'change_footer_admin');

Remove the WordPress Admin Bar

The dark-gray Admin Bar was introduced in WordPress 3.1. Personally, I don’t find it particularly useful. It can also confuse clients; they may think all visitors can see the bar or use it to access dangerous features such as ‘Appearance’. Fortunately, we can remove it with one line in easy-admin.php:

// remove admin bar
add_filter('show_admin_bar', '__return_false');

That’s enough configuration for today. In my next WordPress post, we’ll add further functions to simplify the dashboard, post and page panels.

So far we’ve looked at the importance of notifications on the Windows Phone platform along with the different types of notifications that are available to your application. In this post we’re going to go through setting up your application to receive notifications and how to actually send notifications. The first step in configuring your application to receive notifications is to register with the Microsoft hosted Push Notification Service. This is done by creating an instance of the HttpNotificationChannel class and calling the Open method

See original article:
BuildMobile: WP7 Push Notifications Part 2


WordPress has announced that the initial release candidate of WordPress 3.2 is now available, meaning that the general release of WordPress 3.2 is right around the corner.

There are some really cool new features and improvements sure to make a lot of folks happy, but there are also some significant changes in WordPress requirements that you should be aware of, lest you click the magic upgrade button in your WordPress admin and be disappointed.

Here are the top seven points you need to know about WordPress 3.2:

The Death of MySQL4 & PHP4 and Why You Should Care

As most of us know, keeping WordPress up-to-date is extremely important. It’s easy to understand how WordPress installations remained out of date prior to the automated update features being added to core WordPress several versions back, but these days there’s almost no excuse.

It never ceases to amaze me how often I work on a new client’s existing WordPress website to see them running versions of WordPress as old as 2.7 and 2.8. Because of its incredible popularity, WordPress is constantly targeted by hackers looking to exploit security vulnerabilities in the system. These vulnerabilities are usually caught and patched, resulting in incremental updates that keep WordPress fresh, clean and safe.

By not keeping your WordPress installation current, you risk falling victim to malicious attacks that are entirely preventable—given that you actually guard against them by updating your code.

With that said, WordPress has up until this point been a very pleasant citizen, being more than happy to work with you and live on older, antiquated web servers. This has meant that WordPress has essentially been backwards compatible, happily supporting MySQL4 and PHP4. However, try to upgrade WordPress to 3.2 on a server that doesn’t have either MySQL5 or PHP5, and you’ll see something like this:


MySQL5 and PHP5 systems have been running stable now for several years and they collectively add quite a bit of functionality, but there are still servers out there that run old web services for any number of perfectly valid reasons.

If you are currently hosting with a larger hosting provider like Hostgator, Bluehost, Softlayer, Rackspace, LiquidWeb or the like, don’t sweat it—you are probably just fine. But if you happen to be with a smaller hosting company, have an account with several “legacy sites” that require older services, or are even running your own server, you may end up needing to upgrade both WordPress and the server it lives on.

If you don’t know whether or not your sites are running on a server that will support WordPress 3.2, there’s a handy little plugin written by Ryan Duff called WordPress Requirements Check. Just download it and add it to your WordPress installation, and it’ll let you know whether or not you are ready for the next version of WordPress.

So don’t be caught with your pants down—the official release for WordPress 3.2 is slated for on or around June 30th, so there’s still time to clean up your act and be able to join in the fun!

Bye Bye, IE6

Considering that even Microsoft is counting down the days till none of us ever have to deal with that wretched Internet Explorer 6 ever again, the official dropping of support for IE6 is hardly a surprise.

Still, seeing it in online print should give seasoned web development veterans warm fuzzies on some level. IE7 is also on the way out, though WordPress won’t officially drop support for it for a little bit yet.

Surprise! A New, Streamlined Admin Interface

Now that we’ve covered the important stuff that is going away that you need to be aware of, let’s talk about what’s new and good coming to a WordPress installation near you soon! We’ll start with the new and improved, streamlined WordPress administration interface.


With the release of WordPress 3.0, we were introduced to a lighter, friendlier feel in the WordPress administration interface, and the refreshed version of the WordPress 3.2 interface seems to build further in that direction.

I really like how WordPress has continued to make a concerted attempt to get out of your way, removing unneeded clutter, compressing the width of the left hand sidebar significantly, and reducing the height of the admin header.

Further, the contextual screen options menu initially introduced in WordPress 3.0 really shines in 3.2. They essentially work the same way, but it’s a bit more intuitive now with the rest of WordPress being so out of the way now. If you have never had the chance to play with the contextual Screen Options, have a look at how the work in the two screenshots below:


As you can see, utilizing the screen options when you work with posts, shown above, provides different options to working with screen options when working with links, as is shown in the screenshot below.


The Help button is also contextual in this same manner, so if you aren’t sure how to proceed somewhere in any given section of the WordPress administration interface, you are always treated to pertinent assistance as shown in the example below.


Distraction Free Writing

Continuing the theme of staying out of your way, WordPress also is improving on its authoring experience by enhancing the existing fullscreen writing mode. While you’ve always been able to edit a post in fullscreen mode if you like, the experience has been streamlined in a very Ajax-y kind of way.

Open up the fullscreen mode form the editor and you’ll initially see a fairly minimal screen that gives you only essential authoring options, like the ones you see below.


However, stop monkeying with your mouse for a minute or two, and all of that magically fades away in the background, leaving only a gray screen with a flashing cursor. This eliminates all the clutter from your screen—aside from WordPress’s gentle reminder in the bottom right hand corner to “Just write”.


Move your cursor again, and the fullscreen view reappears, giving you formatting options just as before, as well as the ability to save your work. Pretty cool stuff, and a welcome addition for the serious blogger.

WordPress is Faster. Much Faster.

Another really significant development with 3.2 is how much the development team has trimmed the fat and optimized the speed of WordPress. The core development team has completely re-factored the core code in WordPress, removing deprecated functions and making things overall run much more efficiently.

This results in faster page loads, faster upgrades, and faster plugin additions, and it all really shows when you are just playing around with the admin interface. Further, the switch from PHP4 to PHP5 offers significant speed increases as well.

Especially with Google making changes to factor website speed and performance into organic search engine rankings, this is a massive boost for WordPress, and does nothing but help make it a sturdy platform for growth moving forward.

Incremental Upgrading of Core WordPress

Another important feature that has been implemented with 3.2 revolves around WordPress upgrades. While in the past, upgrades were full replacements of core code, the system has been modified to now only replace files that have actually been modified and need to be changed out.

This makes the upgrade process faster, as there are fewer files to download and swap out. More importantly, it also makes the process safer and much more reliable, reducing the possibility of download errors significantly due to the decreased volume of code being downloaded.

A New Default Theme: Twenty Eleven

If all of that wasn’t enough, WordPress has also given us a new default theme to play with, if we so choose. Twenty Eleven looks like a fairly solid theme for something default and free, giving you a much larger array of options for customization that its’ predecessors have.

Starting with two default color schemes – a light one and a dark one – out of the box, Twenty Eleven gives you several solid options including the ability to easily change the overall layout into several different configurations as you can see in the screenshot below.


You can also change the text color, and upload your own graphic headers right through the theme options. Random header images per page are also supported, as is the ability to upload and work with your own custom background.

All of these things are pretty easy to code into any custom theme anyway, but it’s nice to see WordPress making it easier for people to quickly build out a website and make it look different that the standard Twenty Ten install we’ve all come to know and identify so easily on countless WordPress installs across the Web.

The Bottom Line

The new WordPress features will all be pretty useful, but at the end of the day the most important thing to keep in mind with the upcoming release is that you need to be certain you are ready for it on a server level.

That said, the speed improvements alone are enough to get this developer pretty excited about the release of WordPress 3.2 (not that it was overly slow before), and I think that the revamped full screen experience should be a nice addition for frequent content editors doing a lot of work within the system.

What about you? Is your server ready for WordPress 3.2, and what are you most excited to see in the new release?


Web developers often moan about having to support five mainstream browsers, a few mobile devices and quirky behavior in a certain applications. If you think we have it bad, spare a thought for those creating HTML emails. They must contend with:

Forget about stylesheets, floats, negative margins, positioning, background images, animated GIFs, PNGs or any other fun time-saving techniques. If you think it’s tough making a site work in IE6 today, HTML emails must be coded like it’s 1998. That means tables, inline styles and images.

Fortunately, Sean Powell has taken inspiration from Paul Irish’s HTML5 Boilerplate and created the HTML Email Boilerplate. It includes various fixes discovered by industry leaders such as Campaign Monitor and MailChimp to produce a bullet-proof email template which works in Outlook, GMail, Hotmail, Yahoo Mail and other popular clients.

Sean admits it’s not plug and play — you will need to get your hands dirty with coding — but it’s a great first step which solves many of the common problems experienced when developing HTML emails.

The HTML Email Boilerplate code includes two HTML files: one with commented instructions and one without which can be used as the basis of your email. It’s issued under the MIT License, is free and can be used for any commercial or non-commercial project.

What have you got to lose? Please let us know if you’ve tried the boilerplate and, more importantly, whether it worked in your email application.


A few weeks ago, I wrote an article about splitting out work to be done into threads to improve performance of a URL checker. A commenter noted that the parallel gem could be used to achieve the same result, which got me all curious. I investigated the gem and found that not only can it parallelize into threads, it also supports splitting out work into multiple processes . I wonder how that works

See the article here:
RubySource: Code Safari: Forks, pipes, and the Parallel gem


Chrome 12 was released last week. You didn’t notice? Few people did. I hadn’t intended writing this article but a few people on Twitter convinced me otherwise (thanks @Mahen23). To start, let’s take a look at the usual list of improvements:

  • hardware-accelerated 3D CSS
  • the ability to analyze and delete Flash cookies within Chrome
  • a new safe browsing feature which protects against malicious file downloads
  • improved synchronization of browser settings
  • better screen reader support
  • new PDF save and print buttons
  • launch installed apps from the Omni-bar
  • 14 security holes plugged.

Chrome 12 also marks the end of an era: Gears has gone. Google Gears was launched in 2007 but development was abandoned a year later. The plug-in provided local data storage, JavaScript threading, desktop integration and geo-location but these have been superseded by standard HTML5 technologies.

Built-in JavaScript De-obfuscation

Merging and minifying JavaScript files has several benefits:

  1. Files, sizes and download times are reduced.
  2. Code processing speed can be improved.
  3. It hides your cutting-edge scripts from prying eyes.

Unfortunately, a minified script is impossible to debug. The code is an indecipherable mess contained on few lines which cannot have breakpoints set. Here’s an example from Google Analytics:

Chrome script debugger

Nasty. However, a quick right-click option will de-obfuscate the script into lovely readable source code:

Chrome script de-obfuscation

Built-in de-obfuscation is incredibly useful, although there are a couple of hitches:

  1. JavaScript minifiers often replace long function and variable names with shorter alternatives, e.g. MyLongFunctionName() becomes A(). De-obfuscation can never bring back the original names although you should be able to recognize patterns within your own code.
  2. Setting breakpoints on de-obfuscated code is more limited. Functions run in response to an event or timer can be analyzed. However, it’s not possible to break at code run when the page is loaded since the script has not been de-obfuscated at that point. Let’s hope the Chrome team address the issue in a future version.

For me, this is the most exciting development in Chrome. It may tempt you away from Firebug or Dragonfly when testing live code.

Have you discovered any great new features in Chrome 12?