First Unpublished Podcast

Grammar Captive will produce its first unpublished podcast this weekend in preparation for its spring launch.

In the meantime, your host is busy wrapping up two weeks of study and experimentation with PHP buffering, the creation and use of the mysqli, mysqli_result, and mysqli_stmt objects, and a whole host of SQL statements including CREATE, SET, SHOW, INSERT, and DROP to name only a few.
And, all of this just to understand a few lines of copied code used to set up a system of reliable email verification for new newsletter subscribers.

Security comes at a cost, and the Internet is a jungle with many predators.
It has been one very long, arduous, but highly productive detour.


No Frankenstein Monsters at Grammar Captive

Grammar Captive can now create both permanent and temporary MySQL databases and tables on the fly, read their contents, and insert new content.

Most important at the development stage it can now destroy everything that it creates.  No need to worry about uncontrollable Frankenstein monsters at Grammar Captive.

This week’s time schedule has also been updated.


More Than Interesting

Grammar Captive’s excursion into the world of MySQL has resulted in the aversion of a potentially serious error.

The variable that I had created for the user subscription date was mis-specified. It was falsely set to update with a modification of a user’s data.

There are now two dates: one that automatically records the date that the user subscribes, and one that automatically records that a user or administrator has modified a user’s data.


An Enlightening Detour

There is a lot of free code on the Internet. Some of it is well constructed. Much of it is not. Accordingly, it is important that one is able to distinguish between the good and the bad.

In order to achieve this task good facility with the languages employed to create the code is paramount. To acquire this facility one is pushed and pulled in many directions at once, and it is easy to lose one’s focus, if one does not pay good attention. In effect, much time, patience, and energy are required.

Nearly all of the answers to one’s question are there, ready and waiting, but one must be sufficiently well informed in order to know how to construct effective questions. This requires a lot of self-training.

This is software development from the perspective of a mature amateur.


The Art of Buffering

In its current stage Grammar Captive is more about learning than it is teaching, as much of the code used in the project’s development is new to the developer — namely, me.

As a good general rule I try not to incorporate anything that I do not understand.  This means many excursions into the unknown with many new discoveries that are interesting, but not always directly applicable. Such has been my recent encounter with PHP’s output buffer.

While preoccupied with buffering I did realize one important facet of gathering user information that I originally thought to avoid, but have since decided to embrace — user authentication.  And this, for two reasons:

1) Insure that what goes into the database is authentic — neither spam, nor another unwilling user’s information, and
2) Provide comfort to users who are suspicious of Shared SSL security due to the “invisible” (backend) use of https protocol.

Alas! Another week of sacrificed potential income. Once again, the long run has overtaken the short run.


In the meantime …

You would think that new registrants would be desired.  When they are all coming from the same questionable domain, however, there is could reason to believe that they are spam.

Unfortunately, Grammar Captive’s current anti-spam software does not seem to be working against the sudden inflow of new registrants from suspicious websites including and

It is for this reason that Grammar Captive is deactivating Akismet Anti-Spam and has downloaded, installed, and activated WP-SpamShield.

I am hoping that Grammar Captive will soon be able to add WP-SpamShield to its Credits list.

Grammar Captive will now return to its database development project.


A Small, but Worthy Aside

Learning code means being exposed to unintended code discoveries. It also means new ideas about which one has not previously thought, and might very well prove useful in the future.

So, stop, pause, and take notes.

Indeed, Grammar Captive can now select any number of columns in a MySQL database, select all rows of one column with the same column entry, and discover all of the information in the other columns that pertains to the selected rows.

This is “future power”.


Mass Mail Update

Grammar Captive has successfully sent its first mass mailing using the PHPMailer library. Hooray! Hooray!

Yes, it was only sent to two people, but the mechanism is now in place for sending to many many more.

Next Up: Combine Grammar Captive’s newly acquired ability to: one, send an HTML insert; two, extract email addresses from Grammar Captive’s database; and three, send a single email message to multiple newsletter subscribers with a single click.

Sending a newsletter must be as easy as receiving it!