WordPress Bug Causes Error in XML-RPC Clients

I’ve been having a hard time figuring out an error that a client’s been getting in the Android and iOS apps for WordPress, but finally found the reason. The problem was that, when adding new posts with images, the post would be saved and the image would be uploaded and attached to the post, but […]

Continue reading...

Creating Admin Notices From a WordPress Plugin

I just threw a couple small PHP classes up on GitHub that I use in almost every WordPress plugin I write. The first is IDAdminNotices, which is a clean and easy way for plugins and themes to send messages/errors to the user within the Administration Panels. The second is IDDescribeVar, which will outputs the type, length and contents of […]

Continue reading...

Virtual Workspaces for Windows

I’ve been using Linux since high school — which is longer ago than I care to admit ;) — and one of my favorite features of *nix window managers has always been the concept of workspaces, but for some reason it never occurred to me until today to search for a Windows tool that would create them. […]

Continue reading...

Why Short URLs are Evil and You Should Never Use Them

Ok, so maybe that title was a bit of a hyperbole, but this is one of my biggest pet peeves on the Web right now. Joshua Schachter has a comprehensive analysis of the concept of Short URLs and the myriad problems associated with it, but the biggest one for me is the fact that the […]

Continue reading...

Connecting to a PPTP VPN from an OpenVZ CentOS VPS

When setting up the PPTP and PPP packages on an OpenVZ VPS in order to connect to a VPN, there are a few extra steps you need to take that you don’t have to do with a non-virtualized box. First, you have to load the following kernel modules on the hardware node and/or set them […]

Continue reading...

Principles to Apply When Preventing Brute Force Attacks

I just read a good article by Bryan Rite about the security principles involved in preventing dictionary attacks. He makes a good point about offloading the work to a service like OpenID if possible, and has some other tips to use if you have to implement it yourself. Some of it challenges the conventional wisdom, but I think […]

Continue reading...

Registering jQuery Event Handlers Before the Elements Exist

Update: I removed the link to the article because the site now contains malware. Dave Ward wrote an article Don’t let jQuery’s $(document).ready() slow you down that shows a few situations where execute the contents of a JavaScript file immediately, rather than wrapping it all inside jQuery( document ).ready(). The .live() method has been deprecated since he wrote the […]

Continue reading...

Cronie Depends on Sendmail in CentOS 6

I ran into a problem the other day when building a new CentOS 6 VPS template. After doing some of the initial work I ran yum update, and it worked fine. Later on, after installing the AtomiCorp repo, I tried to run it again and it failed with errors about Qmail obsoleting Sendmail, not being […]

Continue reading...

Composite Primary Keys

Here’s a good introduction to composite primary keys by Jeff Smith. When you’re defining a database table that’s being used to relate two other tables (e.g., products_discounts to map discounts to particular products), you should always create it with a composite primary key (i.e., both the product_id and discount_id columns) rather than a single identity column […]

Continue reading...