WOW - Time Passes Faster and Faster!
October 27, 2006: It has been a hard year so far, but things are looking up. My medical condition has stabilized. The only problem is that while I'm relatively pain free, the medications make me so drowsy that it is impossible to hold down a steady job, although I do have a couple of maintenance contracts and one simple site I'm developing. After talking with my Doctor, we have decided that we have solved on problem - pain - but that my quality of life is not good.
So, we are going to try neurostimulation. We will see if it works. It involves sticking some electrodes into my back that intercept the pain sensations from my feet, then it inserts 'white noise' or a small 'buzzing' that overwhelms the pain sensations. From what I understand, there is only so much information that can go down the neural pathways, and either pain or the 'white noise'/'buzzing' will go up to my brain. The neurostimulation, for those people for whom it works, isn't distracting, and enables them to eliminate or achieve a major reduction in the medication they have to take - plus they find they can resume many normal activities such as walking any sort of distance (like more than a few blocks).
We have tried reducing my medications, and when I do reduce then, in a pretty small amount, almost all of the negative problems - drowsiness, lack of initiative, fuzzy brain - are reduced and I start resuming normal activities.
Heck, what happens is I'm like a little Energizer Battery Bunny. However, the pain is not pleasant, and makes life pretty miserable otherwise. So, I up the medications again so I don't feel pain all the time, and I'm once again AOK with existing - but don't find much power to do anything else.
The medications work, but they are like taking 'Acme Lazy Pills (tm)'.
Success rate is 50 percent. With all my problems, I'm due to some good outcomes. The Anodyne worked, so maybe this will too.
It would be a great Christmas or New Years present if it did.
If I qualify (there are some mental qualities they have to check on) then they do an outpatient operation to insert the electrodes, and do some positioning and adjustments while I'm sill on the operating table.
Then, I spend a week with cables dangling out of my back that I can attach to a machine that can adjust the neurostimulation.
If that week is successful, then they do an implant, that is controlled through a remote control unit that you place over the skin where the implant is located. The implanted units battery life is 9 years.
It is a really good deal for the insurance companies if it works. Not including the required monthly doctor visits for my medications (they are heavily controlled by the DEA), my medications cost the insurance companies about 9600.00 per year. The implant is 14,000.00 to 17,000.00 - and lasts 9 years. They should probably recover the money in about 3 years.
If it works. If I past the mental tests. If, if, if....
Until later folks, hopefully when I start updating this site, and doing more than cleaning house, diddling with small programming and design issues, and plodding through programming courses.
Maybe something where I can actually do innovation....I'm dreaming, and hoping....
It Starts Again...
May 18th, 2006: Due to the anodyne treatment for my Peripheral Neuropathy pain, I've been relieved of most of the worst pain. The spikes and breakouts are not debilitating any more. I didn't know if I would work again. Turns out that whatever voodoo that anodyne does - works.
I'm back!
I will be putting my business over on webdev.jimtompolk.com. More coming soon.
It feels great to feel good!!
It's Over....
Feb 11th, 2006: After working for Camalott Communications, Inc since May of 1997, I've been laid off. Camalott became, in January of 2005, Abilene Internet, Inc. Then, we were purchased by another company, Texas Communications in May of 2006.
I had been working on Camalott servers since August of 1996, when I worked on a web site for an affiliate of theirs in Sweetwater Texas - B & B Computers. After they went belly up, I worked doing updates for Camalott from March of 1997 to May of 1997, when they hired me.
It is a time of reflection. I been working with or for one company for over 10 years. My entire professional life as a web designer, developer, system administrator, webmaster and bottle washer has all been inside one place.
It's a time to look back. While cleaning my hard drive, I found this graphic of my desktop back in Feb 25, 1996 - it is OS/2, just before I left it for Linux.
( Clicking opens a new window :: 1024x768 / 148.6 Kilobytes )
This is the web viewed through the IBM WebExplorer and the HTML edited using the OS/2 Enhanced Editor. My first programming experience was really using this editor - I wanted better menus for editing HTML.
Simple Update
Feb 13th, 2005: If anyone checks by, you will notice that not much has happened to the site. I have been extremely busy with my company: creating new sites, merging with another company (we are now Abilene Internet instead of Camalott Communications) and generally being run ragged. The postive thing is that I've been using the extensions to build sites and my "breaks" come in the form of polishing rough edges off of the existing extensions. I've had to keep myself focused on work, and that means no new work on the extensions except to make them better to use in my work. I expect that nothing significant will occur with them until the beginning of March, at the earliest.
The really positive thing about this is that Ive discovered that the autoQuery extension that does updates and inserts works better than I could have anticipated. It really does automaticaly clean the data and create a good clean query from the data submitted. I have also been updating my variable names - I had some problems that I tracked down to having values being the same string as the values in the strings of programming that I was using regular expressions to manipulate. For instance, I would have an array, and one of the strings I would be searching for would be "class". Then I would have a value like "classification". When the inspector inserted "classification" then the regular expression found "class"ification and it went nuts. It will result, in some instances, with arrays that had been like this:
$GLPQkFmAttributes=array("size"=>"24",class=>"CSSname",maxlength="24");
...becoming...
$GLPQkFmAttributes=array("FAsize"=>"24",FAclass=>"CSSname",FAmaxlenght="24");
That does interfere with one thing I wanted for these extensions: that they would easily be popped out of the extension and used as PEAR functions, however it does not interfere with the functionality of the programming. The reaon being that that array above, as an example, is passed as the variable $GLPQkFmAttributes in a function, then in the common.inc.php file, which contains the programming to turn the above into an array that is cleaned of null values to send to PEAR to create the attributes for a form elment, was testing for $GLPQkFmAttributes['size'], $GLPQkFmAttributes['class'] and $GLPQkFmAttributes['maxlength'], so all I have been having to do is carefully covert the tests and the value sent to FAsize, FAclass and FAmaxlength. Sort of a hassle, but that means that I can have a CSS class with the strings "size", "maxlength" or "class" in it.
My thinking is that it is better to allow more freedom in the extensions use than in having people remember to not use certain strings in an application: especially when the only way to KNOW the strng is a conflict is to open up to source, memorize or discover it when the extension goes whacky.
Ah, a site calls. In the site I'm working on now the extension for file uploads is getting a real workout and so far is passing with flying colors. It is crude and it requires a very set database structure reflecting my values (like I think the alt tag attribute is required), but by golly, it works. I still go "geez" when I drag and drop the extensions into another page, configure them, upload, and it works right off the bat.
After a while of using them, it really becomes second nature on working with the inspector to fill out the blanks.
GLPear Objectives
Jan 24th, 2005: It does not convey the meaning that I want, but the phrase "training wheels" keeps on coming to my mind. One of the objectives of these extensions is that they can easily be popped out of the the containing element that allows for me to build the GoLive inspector and work with them as native PEAR constructors, classes and functions. For instance, by removing the <glp:tfaq>...</glp:tfaq>
from around the SQL Auto Query extension, I can easily add addtional processing instructions in addition to the ones that execute the query and return the result. I might need only to add the setting of a variable or some other function, but it would be easy enough to do.
So the GLPear extensions will be in a sense a gentle introduction to using PEAR. One of my complaints about the coding of the GL 6.0 libraries was that they were difficult to modify. These will be easy. Not only will they be easy, they will be well documented. For most of the extensions the only difficult part is wading through the long, mixed case, variable names I used so I would have unique patterns for the GoLive inspector.
The other though I have is that since I am as faithfully replicating the functionality of the PEAR library items as I can with each extension, the need to bust them out will be lessened. What is in PEAR and what is not has been hammered out upon the anvil of the requirements of production enviroments. So, the more I can have all the functionality of PEAR, the less need for busting out.
But, clients will continue to come up with needs that cannot be met by out of the box code, so busting out must be a requirement - and it is.
PEAR/GoLive Update
Jan 20th, 2005: I've been very busy both with projects and our company merging another company into our company. However, in what spare time I have, plus working on one site that is using the PEAR extensions, progress, substantial progress is being made.
Basically I can use the extensions to create lists and pages / forms to automatically insert and update a database and integrate the HTMLArea+Image Upload + Tables using form text input and textarea, hidden input, and submit input, simply based on form values and a few variables selected in the extensions without having to touch any code whatsoever.
Here is what I have so far:
simpleSelect: sends simple query to a database, returns a result set.
getRowSelect - sends simple query to a database, returns a single row result set.
beginWhile and endWhile - starts and ends a while loop to display a result set. It can be named to associate with different result sets.
columnDisplay - displays a column for a row or rows of a result set between a beginWhile and endWhile. It accepts on, no argument, call back function like nl2br, ucwords or a developer created function.
columnDisplayOne - same as above, but designed to work with the getRowSelect that returns a one row result set.
tableBuild - creates a table from a simpleSelect or getRowSelect and includes setting some HTML attributes and the creation of a detail link using a row of the table as a key:
detail.php=idannouncements=3 would display a row in a table whose primary key was idannouncements and whose value was three.
tableAltRows - allows you to apply attributes to alternating rows of a table, such as one row being green and the next row being blue.
tableHeader - allows you to add a header row to the table with the column headers being specified and some HTML attributes set.
tableDisplay - takes the table built from simpleSelect or getRowSelect queries, then built with tableBuild and optionally talbeAltRows and tableHeader and displays it in the page.
Next, I've got forms. Yep, forms, using PEAR QuickForm. Here is what I have...
Form Constructor - creates an instance of a form.
Section Header - creates a header for a section of the form or to separate one section of the from from another.
Hidden Form Element - creates a hidden form input element.
Text Form Element - creates a text form input element.
Password Form Element - creates a password text form input element.
Textarea Form Element - creates a textarea form element.
AutoComplete Text Form Element - creates a text form input element and the JavaScript so that as you type in letters it autocompletes the text based on an array of completions you supply it.
Note: All of the form elements that accept input can then have various attributes applied, including a CSS class and an ID for the textarea form element.
Then=> addRule and applyFilter: you can apply filters and rules to each of the input elements. Filters will transform the input before putting it into the database and rules (there are 11), like the input must be an email address or no special characters, etc, etc.
The rules affect the processing of the form after you click submit. If you apply a rule, the input must pass before it will process. It will check either on the server using PHP or JavaScript on the client, and you can specify custom error messages.
SQL Auto Query - automatically takes the input and either updates a table row or inserts a new row of data into a table, and automatically builds the SQL and everything using PEAR's DB autoExecute. I am still amazed. It even cleans the input so that it is "safe". Absolutely amazing.
Finally, if you are doing an insert, you have to pull the data into the form.
Set Defaults (DB) - drop a simpleSelect or getRowSelect and then at the end of the form, drop this into the page and set the DB Result Set and the form will automatically fill in the form. All you have to do is insure that the names of the form elements are the same. Easy.
Additionally, I've successfully set up integration with HTMLArea with Image Uploads for the form textarea and am creating a site that will set that up as a demonstration of the PEAR and GoLive extensions.
What is left: not all that much. Basically two items before release: selects that will pull the information from a DB query built on the fly or from an array of values and a file upload extension that can be dropped into a page.
I will be leaving off other standard form features for the initial release such as radio buttons and checkboxes nor will I be immediately working on advance pseudo form features such as the heirselect which allows the creation of two form pseudo elements that create the JavaScript so that selecting one item will change the select list in the next item.
So, look forward to a site file that includes HTMLArea + Image Upload tutorial, PEAR, the necessary include files and the extensions in a directory that can be installed into GoLive to make all this work.
PEAR - I think I've got something...
I've created the PEAR extensions for GoLive that allow you to inspect the code to create a form with text, textarea and password elements, the ability to apply 11 rules to the input, apply PHP filters such as trim or nl2br to the input then take the input after it has passed all the rules and been filtered and send it to a feature of DB called autoExecute which will make the data safe for databases, and based on whether you send the command to insert, or update with a WHERE clause, it will automatically prepare the SQL and perform the update or insert query.
What I am working toward is a site file that can be distributed that will come with the extensions, the necessary PEAR library packages, the function and ocnfiguration files, and a demonstration update screen using HTMLarea for a WYSIWYG online editor, with the necessary SQL to create an example table in a database for testing.
See the GoLive & PEAR page for details.
Recommended:
The Hidden Power of Illustrator CS: Web Graphics Techniques, Steve Kurth, Sybex.
Excellent. Using Ilustrator to design a web site gives it a different look than what can be done with PhotoShop. This book shows you how to use Illustrator to do most of the same things you do when you work in PhotoShop to design the layout and graphics in a site. Good examples, good tutorials, and the review of the fundamentals is fresh and insightful.
In a competitive market, being able to hand a customer a look that is different is an advantage. This book will help you in that regard.
GoLive + PHP Tip
If you have a page with a number of PHP code fragments in it, from the head of the page down into the body of the page, if you click on a particular fragment in layout mode so that it is selected, then click on the Open JavaScript Editor icon in the Properties of the page, the Script editor will open up to that piece of PHP coding.
I've been using GoLive for years, and had always opened the editor, then stepped through the lines of code references on the side unitl I found the one I wanted.
This is so much simpler.
Last Refreshed: Friday, 27 October, 2006