Access Your Desktop Development Environment from Your Mobile Device

It’s really easy to get an iPhone, iPad or other iOS device to access a local web server running on your development machine. All you need is Charles Proxy running on your development machine (which you should have anyway, as it’s invaluable). Once that’s running:

Make sure your iOS device is connected to the same network as your development machine. Go into the Settings -> Wi-Fi menu on your iOS device and click the arrow next to your network. From there switch the HTTP proxy setting to manual and enter your development environment machine’s network IP address (eg. as the server, and 8888 as the port (Charles’ default port unless you’ve changed it).

Voila. All your HTTP traffic from your iOS device will now route through Charles running on your desktop (Charles will prompt you to allow access first) and you’ll have access to your local development server. Awesome!

Aside: Android users, you’ve not got it as easy. There aren’t any HTTP proxy settings in Android (who said Android was an open platform?) so unless you’re willing to jailbreak your Android you’re out of luck. There may well be similar proxy settings for other mobile OSes. A quick Google will usually give you the answer.

Pro Tip: Are you still editing your hosts file in order to manage the host name mapping for sites on your development environment? Stop it. Just use the Tools -> DNS Spoofing menu in Charles and make life easier for yourself.

Basic Authentication with the WordPress HTTP API

Basic Authentication (or BasicAuth) is not natively handled with the WordPress HTTP API. This means when you’re using functions such as wp_remote_get() and wp_remote_post() there’s no immediately obvious way to send Basic Authentication headers with your request. It would be great to pass username and password parameters to these functions, but it’s not there.

Fear not though, it’s really easy. Here’s how:

$args = array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( YOUR_USERNAME . ':' . YOUR_PASSWORD )
wp_remote_request( $url, $args );

That’s it. The correct authentication headers will then be sent with your request (after you’ve replaced YOUR_USERNAME and YOUR_PASSWORD with the obvious).

I’d like to give a quick shout out to my favourite HTTP monitor Charles Proxy. I use Charles almost daily when dealing with server-side HTTP requests and AJAX requests and it makes life much easier. I love it.

WordPress Plugin: Feed Thumbnails

Latest version: 1.2- Released July 4th, 2010
  • Bugfix for the Get The Image plugin integration.


This plugin simply adds your post thumbnails to your feed as RSS enclosures. Nothing else to it. If you don't use thumbnails or you don't know what enclosures are or why you might want them, then this probably isn't for you.

The plugin supports the Post Thumbnail feature built into WordPress and the Get The Image plugin by Justin Tadlock.


  1. Unzip the ZIP file and drop the folder straight into your wp-content/plugins/ directory.
  2. Activate the plugin through the 'Plugins' menu in WordPress.
  3. View your feed (you might need to do a hard refresh - ctrl+reload) and any posts that have a thumbnail defined will have an enclosure containing a link to the thumbnail.


This plugin requires WordPress version 2.9 or later.

Version 1.2 ZIP file from

Any comments, questions, queries, suggestions, complaints, etc, please leave a comment!

Twitter Bookmarklet: View the Whole Conversation

Do you ever view a Twitter update (or a “tweet”) which is part of a conversation and wish there was an easy way to view the entire conversation?

It’s not easy to do. (We’re talking about the web interface here, it’s undoubtedly easy for those who use Twitter clients.) This is why I’ve written the Twitter Conversation Bookmarklet.

Update: This bookmarklet is now a web service by me. Check out Twitlr!


Drag the following link to your browser’s Bookmarks Toolbar:

[twitter conversation]


Simply press the bookmarklet whenever you’re on a Twitter status page that is part of a conversation, and the entire conversation will be magically loaded onto the page.


The best way to see an example is just to install the bookmarklet and then hit it on a status page. An example status where it works well is this recent tweet by Damien Mulley which is part of a conversation.

Results of the Twitter conversation bookmarklet

Known Issues

  • Currently, the bookmarklet won’t return a conversation if you use it on the first tweet that is part of a conversation. It must be used on a tweet that is replying to another. This appears to be a limitation of the Twitter API but I am looking into ways to work around this.

Comments and bug reports appreciated.

WordPress Plugin: Disable Theme Updates

Latest version: 1.1 – Released June 15th, 2012

All the information for this plugin can be found over at the WordPress Plugin Directory: Disable WordPress Theme Updates.

Don’t forget you can also disable WordPress core updates and disable WordPress plugin updates too.