For the last few weeks, the VPS powering this site received an increase in nefarious traffic arriving via IPv6. Perhaps unsurprisingly, much of this traffic came as brute-force login attempts against my WordPress site, and its arrival over IPv6 was key.
As I noted in my post on login monitoring, I already employ fail2ban, in conjunction with Konstantin Kovshenin’s technique for blocking failed WP logins. Unfortunately, fail2ban only supports IPv4, which is the only reason I even noticed this uptick in login attempts or needed to address it.
Continue reading Rate limiting: another way I guard against brute-force logins
Perhaps the most-significant effect of leaving Gmail behind was the loss of its search capabilities. While I miss labels, I’ve found that filing an email into a single folder has forced me to be more deliberate, more organized. Search, however, was a feature I had to replicate.
When considering search solutions, any potential choice, at a minimum, needed to support Dovecot 2.2. Ideally, WordPress would also be indexed by whatever solution I chose.
Continue reading Solr search for Dovecot and WordPress
I recently decided to abandon YOURLS as my shortlink solution, opting instead to handle short URLs entirely within WordPress. This choice is not a reflection on YOURLS–it’s still a great product–but rather was borne from my use case for shortlinks; I concluded that, since I only used them in conjunction with WordPress, an external shortlink service was excessive.
While WordPress has provided a native shortlinks feature since the 3.0 release, it uses query strings rather than pretty permalinks. This means that the shortlink for this post would be https://ethitter.com/?p=6360. It’s not the prettiest URL, nor will many systems cache that request; as a result, each shortlink that’s followed would load all of WordPress just to perform a redirect to the post’s full URL. Unsatisfied with Core’s handling but also unwilling to retain YOURLS, I wrote a small WordPress plugin to address my needs.
Continue reading Simple WordPress shortlinks
ip6tables -A INPUT -s 2002:5bc8:d05::5bc8:d05 -j DROP
2002:5bc8:d05::5bc8:d05 recently attempted a brute-force login against this network’s
wp-login.php. The above abated that effort. 😂
For most of the time that I’ve had my multisite network and the underlying infrastructure that I’ve written about lately, I’ve been overly focused on performance and scalability.
I say “overly focused” because I average about 50 views a day here on ethitter.com, on a good day. I write about exceedingly technical–or exceedingly uninteresting–topics, so that’s no surprise.
It’s also no surprise that my two most-popular posts are both about Automattic: the first announcing my hiring, the second declaring that Matt will have to fire me to be free of me. Interest in our hiring process and company culture far exceeds that which exists for my blathering.
When Matt retweeted the latter post back in January, my heart paused, then skipped into overdrive. Beyond the excitement of Matt recognizing my post, I immediately feared the embarrassment of my site crashing.
As it turns out, I had nothing to worry about. The pageviews were, while meaningful for this humble site, insignificant as far as the infrastructure was concerned. No resource-usage alerts were triggered, nor did my provider inform me that I’d exceeded my plan’s allotments. Between Redis-based object and page caching, nginx microcaching, and a robust CDN, there was really no cause for concern.
Continue reading Planning for the post that Matt links to
Over the past three years, I’ve spent more time than I care to admit on a single project. It started off innocently. Since then it’s grown to occupy a significant place in my daily thoughts.
As you read this, you’re experiencing the product of these efforts. Perhaps you clicked on an eth.pw short URL to get here. If not, your browser still had to figure out how to get to ethitter.com. Now that you’re here, maybe you need to contact me via email. To make any of these endeavors possible, I’ve built a personal “network” of servers and had endless fun doing so.
Continue reading Building My Network
Yesterday, Jen Mylo announced the WordPress-related projects that were accepted into this year’s Google Summer of Code program. I’m very excited to participate as a mentor this year, working with Nick Halsey (aka celloexpressions) as he adds menu management to the Customizer.
The Customizer gained widget and header controls in 3.9, leaving menus as one of the last major appearance features without an accompanying Customizer control. Hopefully that won’t be the case much longer.
The Redis Object Cache plugin I wrote about a few weeks ago is now available for download from WordPress.org: http://wordpress.org/plugins/redis-object-cache/. Eric Mann, with whom I worked on the plugin, explained in his release post his initial motivations for creating the plugin.
Five years ago, I was unemployed and bored, and somehow happened upon the idea of a WordCamp. As luck would have it, there were plans underway for one in Boston, and help was needed. With an abundance is free time, I gladly volunteered–a decision that led to a job and my current career.
The last five years have been a wild and often-surreal experience of travel, growth, and so much WordPress. Boston has been my base through this time, and New England where I’ve always called home, but soon that changes.
For more than two years now, I’ve been a nomad in a long-distance relationship, but I’ll soon drop both descriptors. Chris and I are moving to Los Angeles this summer.
I love traveling and the nomadic lifestyle, but I’m ready to settle down with my boyfriend and move on with our life together.
Last week, I went a little upgrade-crazy with the VPS that hosts this site. With SPDY 3.1 support in nginx 1.5, I upgraded. I also bumped PHP from 5.4 to 5.5.
The latter change is significant because PHP 5.5 drops support for APC, and I was using APC for both opcode caching at the PHP level and object caching at the WordPress level (thanks to Jaquith’s plugin). Since I’d lost my object cache, I’d also lost my page cache because I was using Batcache. Nice job, Erick.
Almost a year ago, I contributed two small changes to Eric Mann’s WordPress Redis Backend plugin. With Redis already running on my VPS for reasons unrelated to WordPress, it seemed an obvious choice over competing persistent caching options.
I spent some time updating Eric’s plugin (see https://github.com/ethitter/wordpress-redis-backend/commits/master for the fun I’ve had) and sent a massive pull request back with my changes. I’ve been using the plugin for a few days now without incident, though I wouldn’t rush to switch over just yet unless you’re adventurous. I’d watch Eric’s repo if you’re interested in what comes of my efforts.