My challenge to myself, with the full blessing of Noah Sussman, was to take the ideas from his proposed book, specifically his table of contents and their suggestions, and put them into practice. 
As I have been looking over this process, I’ve realized that this is not a project that really makes sense to post as a single “chapter” kind of thing. For starters, some of the steps take days, or even weeks, to put into place. Some of the sections are dealing with areas I have no exposure to currently, or I have scattered exposure. Mostly, this is going to require a continued connection, and daily practice, to make happen.
It’s with that in mind that I have decided to approach this as my own case study. My goal is to post something every Friday, regardless of how much or how little content there may be. Some Fridays may have more than one post, and may cover other topics, but I am committing to a weekly post, in some form, that starts with “TECHNICAL TESTER FRIDAY: [Fill in the Blank]”.
This is the intro from Noah’s post about this project on his end, and I’m going to take it to heart:
This is the first draft of the table of contents of a book that I have been writing. It’s worth noting that this entire program can be worked through without spending a penny on proprietary software (with the optional exception of Charles). It also does not require a powerful computer — you could do all this on a five year old MacBook.
Where possible, I’m going to emphasize materials and sources that are freely available. I may reference a book here and there if it seems like it would be helpful (and there are some books listed in this journey, so expect that I will be reviewing the ones mentioned).

For grins, I’m doing this in two environments (and potentially more). The first is a MacBookPro, and the second is a Toshiba Satellite PC laptop. Why both? Because I think it makes sense to see how things will work in two significantly different environments, and what adaptations I might need to make. Also, while the MacBook has almost all of the software in place by default, the PC users will have to install everything individually. Thus, today’s entry is a quick cheat sheet on getting set up for this “first chapter”.
Use PHP to put up your own Web site. Spend a couple of weeks making it a reasonably decent looking site. It doesn’t matter what the site is or whether it has any transactional functionality. Just some pages that display photos and content is fine.

All right, let’s get the first caveat out of the way… I have never set up a site to use PHP. Ever. GASP!!! Somehow, I’ve either managed to work with three-tier systems (old school stuff that used CGI::Perl), DotNetNuke frameworks that were all based around .NET, Rails sites, or some other established web framework. For some reason, PHP just never entered into the mix of my regular everyday interactions. It seems this project is going to change that.
So what does it take to set up a site to use PHP? For my purposes, it will require a web server, a database, and some pages with HTML, CSS and JavaScript for good measure. With that, that means we need a Web Server (Apache since I have some familiarity with it already), MySQL (because, why not?), and PHP (because that’s what Noah’s suggesting we use, of course 😉 ). With the exception of Linux, this is the classic LAMP server structure that’s been with us for nearly two decades now (granted, the LAMP I knew was based around “Perl”, but “PHP” will work for us here 😉 ).
First up, Installation:
You’ll want to install Apache HTTP Server, MySQL, and PHP on your system. To get tips on doing that, go to:

Apache HTTP:

This is pretty straightforward. Download the latest MSI build for the fastest setup. Give it some basic parameters so that it can be recognized on the network. Regardless of your configuration, if you take the default options, the server will be accessible at http://localhost:80/. If you see “It works, well, it works ;).


Note that this will take you to Oracle and their Cloud Delivery section. You will need a user name and a password. Download the MSI for the quickest installation (of course, if you want to download the nightly builds to be more wild and crazy, that’s a great exercise in and of itself 😉 ). For my purposes, I am just installing the generic MySQL server.

Once it’s installed, you can open the command line option from the Start Menu (Start: All Programs: MySQL: MySQL 5.6 Server: MySQL 5.6 Server Command Line Client).

If you see this, you’re good to go:

This is the one part of this puzzle that doesn’t come pre-installed on your Mac (versions of httpd and php are already installed and ready to use). 
There are a variety of ways to get MySQL for Mac, but if you are using Mavericks as your OS (like me), here’s a bone simple way to install MySQL on your Mac (at your Terminal prompt, type):

bash <(curl -Ls

ETA: while this is indeed extremely simple, it’s also a potential security nightmare. As mentioned in the comments below, and to which I agree, never just run a script blindly. The shortened link expands to the following URL, and there you can review the entire script:

You will need to have Administrator access to complete the installation. Default options will be fine.


For Windows, this is fairly simple. Just download the files, unzip them, put them in a folder (C:\PHP is as good a place as any), and then add C:\PHP to your %PATH%. With this in place, you can write scripts in PHP and the system will respond.

Woo Hoo!!!

Again, with the Mac, most of this is already in place. Open your Terminal window and take note of where everything is and what versions you have. For my purposes, I’m using these versions:

So there we have it. Now that I have an environment I can poke at locally, I can start playing with things under total local control. Additionally, I also have access to an external “commercial” site that will allow me to do many of the same things. More about that in future posts.

Yeah, I know, not very exciting, but it’s a start, and that’s what I’ve needed to do for awhile now, just get this started. Now I’m honor bound to give you all something more meaty by next week :).