Fast WordPress Hosting

Since I’ve switched all my web sites  providing only content to WordPress, I’m necessarily obsessed with performance and trying to find the most cost-effective way to flexibly run a site and get screamingly fast performance.  I say “flexibly” because I’ve gotten used to installing a variety of software directly from the command line.  This may be unnecessary as I trust the available set of WordPress modules more and more, but I still like the flexibility of managing my own Linux server.

So what’s fast enough?

An Amazon t2.micro instance provides 1.016s average total round trip on repeated viewings.

Dreamhost shared hosting averages 2.530.

But this wonderful post has me thinking that trying to draw averages may not be particularly helpful, and also implies that “max response time” values make real user experience not something that can be terribly well controlled.

Ignorance of IP Name Resolution

An ideal blog post probably provides answers to others who may be searching.  This one doesn’t.  This is the accounting of the mysteries of “localhost” on CentOS linux instances.  I’ll post updates as I actually start to understand the answers.

Fetching a web page from localhost is slower than fetching from 127.0.0.1

127.0.0.1: average response .015s

localhost: average response .166s

So an entire end-to-end fetch is ten times as slow using localhost, and the IP address is apparently not cached, as it doesn’t get any faster with repeated runs.

Yes, “localhost” is an alias to 127.0.0.1 in my hosts file, so I expect that an actual DNS request on the wire should not be necessary.

WordPress won’t find my database on host “localhost”, but it will find it at 127.0.0.1

Okay?

AWS IAM Roles

One of the limitations of Amazon AWS’s EC2 IAMs is the instance role MUST be assigned at “launch” time.  This is distinct from the “Start” action on an instance that was running as has been stopped.  In order to associate a current instance with a new or existing IAM profile, you must create a new instance.  This can be done by creating an image from the current instance and launching that.

Once an IAM role has been assigned, you may alter it.  This suggests that best practice is to always launch an instance with SOME IAM role.

Are the command line tools related to IAM roles?  YES, although it’s not specified, AWS command line  tools will find the role of the instance it’s on,  even if it’s not AWS Linux.

Assuming a role

http://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html

First Impressions of iOS 9

  1. The virtual keyboard shows lower case letters when you’re entering in lowercase.  Yay!
  2. Low power mode: the OS turns off or tones down some of the expense battery consuming functionality.  Don’t know yet how effective this is, but anything is an improvement over involuntarily burning through battery charge until the phone arbitrarily quits.
  3. We still can’t get rid of built in apps.  I’m not buying an Apple watch, Apple!  I don’t need your mandatory app.

Business Book Reading List

I appreciated this article on which books are worth reading.  The premise is that nobody should be reading “business card books” which tout the author’s credibility, books that aren’t long enough to be worth a book, and actually good books.

I don’t agree that even most business books fall neatly into one of these categories, but I do appreciate the list of “good books”:

“MASTERY” by Robert Greene
“BOLD” by Peter Diamondis and Steven Kotler
“OUTLIERS” by Malcolm Gladwell
“WHERE GOOD IDEAS COME FROM” by Steven Johnson
“MAN’S SEARCH FOR MEANING” by Victor Frankl
“BORN STANDING UP” by Steve Martin
“ZERO TO ONE” by Peter Thiel
“QUIET” by Susan Cain
“ANTIFRAGILE” by Nassim Taleb
“MINDSET” by Carol Dweck

I’m starting with Nassim Taleb’s book: he seems to have dozens of quotable reference in every book he’s written.

Getting Mac Yosemite to Sleep

I’ve had numerous issues with convincing my Mac Pro 1,1 to sleep, and almost equal problems keeping it from sleeping when it’s in the middle of doing work I actually want done.

Apple’s site is quite helpful here, when I tried everything on the list.  I suspect that Bluetooth and/or network waking is the issue.

https://support.apple.com/kb/PH18596?locale=en_US

Appending PHP Paths

Mr. Google recommends three different methods for appending additional directories to the PHP include_path:

1. Modify php.ini to set the include path to the desired settings

2. Use .htaccess to do the same

3. Set the path from within code with set_include_path()

All of these, to me, suffer from serious problems.  What I want, as for any time I’d like to include additional functionality via code and libraries, is for those libraries to be available globally, and to be set at the meta-level of the code.  That is, the environment should determine where libraries are stored, and the code should know nothing about it.  While using set_include_path() within code isn’t objectionable, there must still be a mechanism for the code to determine what the path should be.  The code shouldn’t know or care, for example, where it is stored, let alone where the libraries it relies on are stored.

The ostensibly correct answer is to set the path in php.ini.  But because this is a setting and not a command, there’s no way to include the existing default elements of the path in addition to the libaries you’d like to include.  You could of course determine what the default values are (which are hard-coded into the compiled PHP executable) and add that to your setting, but hard-coding anything means that changes to later versions of software have now been overridden in a non-obvious way.

My solution of the day is to create a symbolic link in one of the default included directories that refers to a folder with the libraries I want.  Because this link requires a name, there’s the additional benefit that including any of my own functionality is obvious from the include line:

require_once(‘my_libraries/my_project.php’);

Multiple Return Addresses for Mac Mail

It’s handy to have multiple email addresses if you have multiple contexts in which you interact with people.  You could create separate mailboxes, but that both prevents you from mixing emails if you want to, and requires extra administration.

It’s easy to configure this with Mac Mail in Yosemite.  In the “email address” field on Accounts | Account Information, just separate multiple email addresses you want as possible return addresses with commas.

You’ll then get a dropdown list of choices for from which email address you want to send when you email.  Of course, you’ll have to make sure that those addresses are actually forward to your email box by creating email aliases with your mail server, or using a catch-all.configure-Mac-email

Dave McClure’s AARRR: Startup Metrics for Pirates

Dave McClure’s Ignite Seattle talk on metrics is worth the five minute and 14 seconds it takes to watch.

“There are five steps…

Acquisition – where users come from.  What are high volume channels, what are low cost channels, and what are best performing conversion channels?

Activation – a happy first experience.

Retention – they come back

Referral – they tell other people.  Don’t try to do viral marketing campaigns until your product doesn’t suck.

Revenue – you make money”