I’ve been a full-stack developer for over fifteen years and I love teaching people new things.
Unable to find local grunt after git clone [solved]. (02 February 2015). A common problem with an even more common solution.
How to Build and Install Libcurl. (27 January 2015). For many server-side projects that are designed to work with outside resources at the command line level, curl is a tool that I often have to use. This is especially true when I am writing programs in C that are designed to be used specifically with internet resources. In this…</li>
Automatically Block Banned IPs with fail2ban, iptables, and ipset. (27 January 2015). In this tutorial, we’ll develop a script that will get all the IP addresses blocked by fail2ban on the ssh chain and then add them to an ipset that will be automatically blocked by iptables. Talk about power traffic management!
How to Install CouchDB Locally and Enable CORS. (24 January 2015). These days I’m doing all my development work on a Chromebook. Since the majority of my projects involve Apache’s CouchDB, I need a local instance up and running. In this tutorial, I’ll walk you through how to install CouchDB from a Ubuntu command line and enable CORS manually (by editing…</li>
Introduction to REST API’s and Security. (23 December 2014). When we want to access our database from within our code, we can generally put calls to our database right there within our application. In the world of Single Page Applications (SPA), though, to access a database like this would be absurd; since we store the credentials within our code,…</li>
Can’t Upload Images in WordPress (Solved!). (30 August 2014). A few clients were experiencing problems in the media uploader on their sites. When trying to upload something in the Media Uploader, they were getting errors like:
CMS-like Dynamic Routing in AngularJS. (22 May 2014). As I’m designing a CMS-like system in AngularJS, one of the things I find myself needing to do is create simple HTML pages stuffed full of content. What I don’t want to do is create a new partial view and add it to my route for every page that I…</li>
How to get Automatic Nightly Backups on Nginx. (13 May 2014). Here’s a copy of my automatic nightly backup script, which cycles through a list of clients, dumps their MySQL DB, ZIPs their WP files, and pushes the backups out to s3 while maintaining a daily.zip backup on our local system.
DIY AngularJS SEO with PhantomJS (the easy way!). (01 May 2014). Setting up your AngularJS development environment needs to include SEO best practices. For JS-rendered applications, take a look at this solid solution using PhantomJS.
[Solved] NPM Error: No compatible version found. (29 April 2014). If you’re trying to install a package via npm and you’re getting an Error that says “no compatible version found,” then chances are you need to update your NodeJS package.
Fix for ng-include Files Not Appearing. (04 April 2014). If you’re using ng-include and your partials aren’t showing up, you probably forgot that the location of your partial needs to be encapsulated in both double quotes and single quotes. Instead of this:
Getting Started with Node.js on Windows. (31 March 2014). Warning: you’re about to install node.js and an http server in less than twenty seconds.
How to Install s3cmd on Ubuntu. (30 March 2014). We use s3cmd to communicate with our backup servers and some of our development environments. Setting it up couldn’t be easier.
How to Backup WordPress on a Remote Server (and send it to Amazon S3). (30 March 2014). Let’s talk about backups.
Restrict SFTP User to their Sites Directory (not just their Home Directory). (19 March 2014). If you want to give your web hosting clients SFTP access to specific directories (probably their sites, right?) while keeping them chrooted (jailed) into their home directory, then read on.
What do malicious log entries look like?. (25 January 2014). A good server admin will be scrubbing her logs constantly. Whether you do this automatically or by hand, there is one thing that is a sure sign of malicious behavior: the ol’ “they forgot to delete that file” trick.
Quickly Block Traffic with ipset and iptables. (15 January 2014). To piggy-back off of the third preventive control in increasing security against bad bots and spam, you can quickly block traffic with an iptables entry that utilizes ipset.**
Scrubbing logs for bad IPs. (09 January 2014). Periodically, log files should be scrubbed for bad bots and malicious IPs. Let’s do that.
How to fix “Host key verification failed” error. (09 January 2014). If you’ve ever rebuilt a server that you have connected to in the past, chances are you’ve received an error when trying to ssh back into it for the first time since the rebuild. If you’re getting a screen that says “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”, the workaround is…</li>
WP Engine Hotfix: Preventing Spam and Bad Bot Traffic, Part II. (20 December 2013). In Part I of this WP Engine Hotfix, I discussed some of the theory behind WP Engine’s visitor calculations and how end-users of WP Engine could benefit from taking charge of their traffic themselves. In this next part, I’ll discuss ways to log your visitor traffic, scrub that traffic for…</li>
Solved! WordPress Asking for Local FTP Credentials on XAMPP. (01 December 2013). A few developers were asking why their localhost instances of WordPress were asking for FTP credentials when trying to install new plugins and themes. If you’re getting the dreaded “Please enter your FTP credentials” page and you’re running XAMPP for your local WP development environment, do not follow the popular…</li>
How to Find and Replace a String in MySQL. (30 November 2013). One of the problems with moving your site from one domain to another is that the images in all your posts are still served from the old setup. In order to fix this, you need to run a simple MySQL command that will search through all your posts and replace…</li>
How I Took Lawsonry from a 2-Second to a 475ms Load Time. (29 November 2013). I’ve been working on some optimization problems this week and one of the things I wanted to share with you is the difference between Lawsonry with optimization plugins and Lawsonry without optimization plugins. This is a good site to benchmark text-heavy sites, as results for sites that intensively serve images will no doubt…</li>
Nginx Settings for WordPress in Subdirectory (and Permalink fix). (05 November 2013). Here’s a quick tip if you’re on Nginx with multiple WordPress installations in a sub-folder of your main WordPress and you want pretty permalinks to work correctly.
NGINX + WPMU + Non-WordPress Subdomains. (28 October 2013). I’ve been trying to configure a subdomain on a WPMU install that runs on Nginx that is not part of the WPMU network and have ran into nothing but problems. In this post, I discuss some of the problems I ran into while trying to setup non-WordPress sub-domains alongside a…</li>
Easy Author Image Plugin for WordPress. (28 June 2013). Easy Author Image gives you the option do you exactly that — easily add an author image to your profile page. Once you install this plugin, you’ll have a new option in the Your Profile tab (under Users) called Profile Picture, complete with a media uploader box that allows you…</li>
WordPress Author Box without a Plugin. (24 June 2013). In this tutorial we’re taking the custom author image function we created and turning it into a custom About the Author box in WordPress. If you haven’t already done so, go through the custom author image tutorial and follow the steps involved in creating our custom author image function.
How to Hide a Category in WordPress. (24 June 2013). Do you want to keep articles up and running but omit them from queries? Here’s a quick way to exclude categories from every loop on your site.
dropzone.js WordPress Integration Tutorial. (24 June 2013). Over on the Hacks forum at WordPress.org, user Manwoll was looking for a way to add drag-and-drop functionality to a contact form in WordPress. Not a fan of commercial contact form products myself, I sought out a method of doing this that would most accomodate a theme developer who is…</li>
Custom Category Style in WordPress. (24 June 2013). p>When I worked for an online newspaper, we put a customized header image at the top of every category page sort of like how NYTimes does it for their blog pages. These days, it’s a lot more attractive to use custom CSS styles for each category. In this tutorial, we’ll…</li>
Custom Author Image in WordPress. (24 June 2013). I don’t like using Gravatar — or any third-party service for that matter — for my author profile pictures. For me, having control over where the images come from and how they are displayed is important, so I wrote a custom function and came up with a simple system for…</li>
Author Image as Default Post Image in WordPress. (24 June 2013). Are you looking for a way to use the author’s image as the default post image if no post thumbnail is set? Here’s a quick and easy function that will do just that.