You are browsing the archive for Programming.

Python – again

7:46 PM in Programming by Vic Russell

My tasks of late have reacquainted me with the Python programming language.  I used it years ago at American Greetings Interactive, and for about two weeks at Humana in Louisville, KY, but little more.  The infrastructure where I am currently employed uses Cold Fusion, a tag-based language that is efficient when working with web pages, but I could see little value using it as a sysadmin tool – quick, concise, terse code in the minimum of time is what I needed – Python is the perfect choice.

My passion for the language was reignited after creating script after script in little time.  Each script became more ‘pythonic’ and better utilized the compact nature of the language.  I again appreciated the indentation over brackets that define a code block – I had to write readable code!

Email and logging were important aspects of the scripts I was writing.  I thus utilized the ‘logging‘ class library for log file creation – easy to set up once find the right example.  For email, I used smtplib.

Aside: I am not a fan of Pythons documentation – I prefer PHP‘s explain->example style.  But, a little digging and venturing to popular Python sites (‘dive into python‘, ‘stack overflow‘, python.org) will eventually produce the result you need.

Logging in Python

The logging class is intuitive and has relatively low code overhead.  There are more complex ways of configuring the logging class, but for my needs, a simple inline syntax was required.  These are sys admin scripts and not part of an application where the time and effort to set up a comprehensive configuration file would be justified.

import logging
# Set up logger
logFile = '/path/to/logfile/myLogFileName.log'
logging.basicConfig(filename=logFile,format='%(asctime)s %(message)s',level=logging.DEBUG)

That is all that is required to set up a logger.  The logfile name can be anything and located anywhere you have read/write privileges.

To use the logger you created, use this command:

logging.info('An informative log message that applies to info status')

That will place an Info entry into the log file defined above.

logging.error('An error message for your app')
logging.debug('Debug info goes here.')

Now there is no excuse not to use log files in your Python applications.  Simple.  Concise.  Intuitive.

Electrical Contractors – What Software do you use for estimating?

3:04 PM in Programming by Vic Russell

In the past, I was involved in the construction industry.  One of the most time consuming and challenging parts of the job was estimating.  Back in my time, the tools available for the smaller contractor were limited – basically Lotus 123 and later, Excel, spreadsheets.  Pen, paper, and telephone ruled the estimating task for most small businesses.

Spreadsheets are great for tabulating data, but they are not so good for data lookups.  You can put a small ‘database’ together in a spreadsheet and query that, but you must maintain the pricing manually, and save each job sheet separately.  If something is missing, you have to manually look up the price and part number and add it to the data section of the spreadsheet.  Not efficient, and prone to error.

So today, with personal computers in almost every home and on every contractors desk, what do the smaller contractors use for estimating?

I am contemplating creating a service for contractors that provide industry-standard pricing and catalogs with an easy to use web interface.  Everything the contractor needs for estimating will be in the cloud, accessible from anywhere with any web-enabled device (smart phone, tablet computer, laptop, etc).

Anyone have an opinion, or a service that already exists that offers the same functionality, about providing this service for the smaller contractors?

Thanks,

Vic.

Document your code!

9:11 AM in PCI Compliance, PHP, Programming by Vic Russell

I was recently contracted to work with a small company to enhance and expand their PHP application.  The people were polite and the environment was quite relaxed.

I started the first day with the normal optimism that I start all projects with – looking for ways to contribute and to absorb as much as is possible about the systems in place, learn everyone’s name, understand the political environment, as well as the culture of the organization.  This project was being coded in PHP by other contractors as well as an internal web designer.  After a couple of days, it became obvious that there may be a huge learning curve with the app – there was absolutely no usable documentation for the design or the myriad of third-party API’s that were used. To make things worse, the code lacked even the most basic commentary.  Things were thrown together, portions of scripts copy and pasted one into/on-top-of another.  To add insult to injury,  there was no ‘dev’ environment – all code was changed on the production server!  Additionally, no QA person/team existed, nor were there any load tests performed on the app.

When designing a high-availability web application, it is crucial to follow basic infrastructure and design principles:

Separate development code and data from the production code and data until it is fully debugged/QA’d and integration tested.

Maintain separate databases for development and production.  Preferably, a separate db for QA.

Separate, as much as possible, the presentation layer from the business logic and data layers.

Maintain loose coupling between modules and classes.  A change in one object should not require a cascading change in code that does not deal directly with this object.

Document what was done and why.

Knowing this, I began to decipher the application.  I had to rely on the team members memory since no documentation existed.  It was at this point I discovered a bit of resistance – they would explain the code they produced, not the underlying functional design that was used for the development.  I needed the functional design specifications AND the API documentation.  ”Just use what is there…” – but the code was amateurish, indecipherable, and unusable!  I have never seen so many header redirects in a PHP script that was not designated as a controller for the app as I experienced there!  How can one trace a logic error given that level of spawning?

As a starting point to any code creation, I always implement a logging class and error/exception handlers.  As you may guess, there wasn’t any function or class used to standardize the error logging/debugging – it was all sent to the screen.  I then hunted for the primary Apache logs: no one knew or would share which one was the primary Apache log file  (it was not in /var/logs/httpd on CentOS ).  I did find error_log and access_log files – but there were multiple instances of them strewn throughout the system.

I began to take simple yet important steps to make the totally procedural application into a segmented one, introducing OO patterns as I went.  The first was a singleton logger class.  Then I authored a singleton DB class.  I was surprized to find that MySQLi was NOT used – the old MySql db lib was.  Personally, I now prefer PHP’s SPL PDO since it allows easy translation from database record(s) to object(s).

One of the assignment we had to do asap was to integrate an additional payment gateway.  I watched as the designer create another monstrosity; my mouth agape, chin on the floor – cutting and pasting his way through multiple files, using brute force to get it to work.

In the end, the environment was not in line with my principles (easy maintainability, lose coupling, composition over inheritance) or methodology (design, document, THEN code, test, debug, test, load test, debug, update documentation, etc….).  There was a chasm between what they do and what I am able to accept – after all, if the app breaks, I will be the one responsible for a) fixing it and b) defending the code-base.

When questioning the environment, I was even told by a top-level person that this was the way they did things – no formal code design or standards implementation – just get it to work any way possible.

An additional problem I saw was PCI compliance.  Credit card info was stored on the servers – as a session attribute as well as in a third-party application database.  I was “assured that everything was PCI compliant” – however, I was unable to review any documentation on how to maintain that compliance since none existed.  This was too much for me to accept.

The lesson I learned were many.  During an interview session:

  • Ask to see some of the code that is being produced by the present team.
  • Request to examine the design and ongoing code documentation.
  • Find out how they QA and load test the application.

If two or more of these questions are not addressed, or, you discover gaps between your standards and those employed at the company, you may want to remove yourself from the situation.  Unless you are going to be the one who implements coding standards, documentation, and testing.  You, as the ‘new’ developer, will be responsible for maintaining (extending, debugging) and scaling the code that was already created.

Have a GREAT Holiday Season!

PyroCMS versus Concrete5

5:04 PM in CodeIgniter, Concrete5, PHP, Programming, PyroCMS by Vic Russell

We are testing multiple PHP frameworks and CMS platforms for affiliate websites hosted on Host Monster and Go Daddy.  This round, we are testing Concrete 5 and PyroCMS. Both Concrete 5 and PyroCMS are built on top of the Codeigniter framework - a very powerful and simple to learn  MVC framework written in the PHP programming language.

Concrete5 Link PyroCMS Link

I am not doing a review of the big frameworks at this time – Joomla, Mambo, WordPress (blog manager), CakePHP, etc – there is enough documentation out there that would render my opinion moot.   Besides, I champion the underdogs and fight for their success over established ‘big boys’ – particularly when the underdogs have features and/or performance that exceeds the established players.

Concrete5 – This is an edit-in-place PHP CMS framework with many add-ons (blocks) in the public domain, as well as professional-grade pay-for add-ons like Concrete 5′s shopping cart module. The main advantage to Concrete5 is the way pages are edited – they are done so in-place.  You log in, and if you have permissions, you are presented with an admin ribbon menu along the very top of the web page.  Clicking ‘Edit this page’ allows you to edit the page!  You can publish your changes immediately, preview them, or hold them for later publication – an expected feature in any true content management system.  I give this system 3.5 out of 5.0 – good docs, excellent add-ons, and the familiar Codeigniter MVC are all pluses.

PyroCMS is wicked fast.  However, the file structure is complex, and creating a custom theme is a challenge since there is about 10% of the documentation needed to be efficient/proficient with this framework.  The one area that isn’t difficult is the creation of ‘widgets’ – small discrete sections of code (classes) that can be included throughout your site.   There does not seem to be as many ‘widgets’ in the public domain as C5, but that will change once more developers get familiar with this true competitor.

After spending many hours attempting to customize PyroCMS, I determined that it is futile to continue down this path since I have sites I need to get up really fast.  I will continue to spend time with PCMS as it matures – I feel it has excellent potential, and, I like the admin interface style over edit in place (the C5 way).

Time will tell, but I am giving PyroCMS  an overall rating of 3.0 out of 5.0.  The main reason it gets such a high mark (before V 1.0)  is it is so darn fast, and, widgets are easy to create and a breeze to integrate – custom widgets are a core component of any good CMS.

VR

PyroCMS Widget Creation for Affiliate Marketing -Section 3

8:37 AM in CodeIgniter, Frameworks, PHP, Programming, PyroCMS by Vic Russell


Views

display.php

Now that we have created the affiliate.php class (section 1) and the form.php (section2), we have to write the code to display the widget content.  This is the display.php file within the ./affiliate/views folder.

One challenge I had with this was getting rid of the the default title that displays above all widgets.  Again, givent he sparse PyroCMS documentation, I had to use jQuery to hide the title – not the best solution, but it works.

Download the affiliate.zip file here

Another challenge is the float property when a widget is placed one next to the other.  There seems to be a 22px margin problem somewhere in the PyroCMS widget classes.  This is why there is the ‘style’ form element within the widget – this allows you to manually remove this by adding a negative margin-top (margin-top: -22px).  This is cumulative, so item # 3 is margin-top:-44px;  Item 4 is margin-top:-66px, etc.  Yes, this is a hack, but until familiarity with the core widget class is acquired, I don’t feel that breaking PyroCMS is a good solution.

Here is the code for the display.php

<?php
/*
Affiliate widget - actually affiliate widget
@author	Victor Russell
@ttd	remove title from this widget
--------------------------------------------------------------------------------
*/
?>
<style type='text/css'>
.display_none {
display: none;
}
.hspacer-12px {
margin: 0px;
clear:both;
display:block;
overflow:hidden;
width:100%;
height:12px;
}
</style>
<script type='text/javascript'>
// remove affiliate title via jQ
$(document).ready(function() {
$('.widget h3').addClass('display_none');
});
</script>
<?php
/* remove the default display of the title for the widget */
echo "\n<style type='text/css'>\n";
echo ".widget affiliate h3 { display: none; }\n";
echo "</style>\n\n";
/* Assign _ replaced title to temp variable, replacing spaces with underscores */
$temp_str = 'div_' . str_replace(" ","_",$options['aff_title'] );
/* Add a blank line IF the aff_''order'' is equal to 1 */
if($options['aff_order'] == '1')
{
echo "\n<div class='hspacer-12px'><!-- --></div>\n";
}
/* Create div for each affiliate ad, using the css defined in each entry */
echo "\n\n<div id='" . $temp_str . "' " .
"title='" . $options['aff_title'] . " \n '
class='" . $options['aff_class'] . " \n '
style='" . $options['aff_style'] . "' >\n ";
echo $options['aff_link'];
echo "\n</div><!-- |><| Close affiliate div for " . $options['aff_title'] . " --> \n";
?>

This display.php creates a DIV with the attributes of id, title, class, and style.  The content (the affiliate link HTML) is output using $options['aff_link'].

Enjoy!

Vic Russell

Russell and Associates

www.randaweb.com/forum

PyroCMS Widget Creation for Affiliate Marketing – Section 2

8:40 PM in CodeIgniter, CSS, PHP, Programming, PyroCMS by Vic Russell


Views

form.php and display.php

This is section 2 of the PyroCMS widget creation example.  As stated before, PCMS is built upon Codeigniter – a very powerful and easy to learn PHP Framework.  Codeigniter is MVC compliant.

You have updated the class file – affiliate.php.  In there, you defined the fields you will use in the admin interface to actually add the content for your affiliate link widget.

Download the affiliate.zip file here

Next, we edit the files contained in the ‘views’ sub-folder.  There will be two – ‘display.php’ and ‘form.php’.  They do exactly what they say they will do – display the content of the widget and create the form interface to add your content to the widget.

NOTE: I have kept the CSS and JavaScript in the files to ease the understanding of the PyroCMS widget creation.  This is not standard practice, but lets not add confusion to what may be a challenging topic by rigorously adhering to coding standards purity during the learning phase.

form.php

<?php
/**
* form.php for affiliate widget
* ==============================
* @author	Victor Russell - www.randaweb.com
*
* Create the form using Codeigniter form_helper and form_validation libraries
* form_input() and form_textarea() are used to display the content from the
* database.
*
**/
?>
<ol>
<li style='margin-top: -2em; margin-bottom:-1em;'>
<label>Affiliate Title (used for onhover - tooltips)</label>
<?php echo form_input(array('name'=>'aff_title', 'value' => $options['aff_title'] ) ); ?>
</li>
<li style='margin-top: -2em; margin-bottom:-1em;'>
<label>Row Break - 1 = new line/row</label>
<?php echo form_input(array('name'=>'aff_order', 'value' => $options['aff_order'],
'size' => '3', 'maxlength' => '3' ) ); ?>
</li>
<li style='margin-top: -2em; margin-bottom:-1em;'>
<label>Affiliate Link &lt;a&gt; *</label>
<?php echo form_textarea(array('name'=>'aff_link', 'value' => $options['aff_link'], 'rows' => '5' ) ); ?>
</li>
<li style='margin-top: -2em; margin-bottom:-1em;'>
<label>Affiliate Alt Text</label>
<?php echo form_input(array('name'=>'aff_alt', 'value' => $options['aff_alt'] ) ); ?>
</li>
<li style='margin-top: -2em;'>
<label>Affiliate CSS Class</label>
<?php echo form_input(array('name'=>'aff_class', 'value' => $options['aff_class'] ) ); ?>
</li>
<li style='margin-top: -2em;'>
<label>Affiliate CSS Style</label>
<?php echo form_textarea(array('name'=>'aff_style', 'value' => $options['aff_style'], 'rows' => '2' ) ); ?>
</li>
<li style='margin-top: -2em;'>
<label>Affiliate Source (CJ, ClickBank...) *</label>
<?php echo form_input(array('name'=>'aff_source', 'value' => $options['aff_source'] ) ); ?>
</li>
<li style='margin-top: -2em; margin-bottom:-1em;'>
<label>Affiliate Ad Company *</label>
<?php echo form_input(array('name'=>'aff_company', 'value' => $options['aff_company'] ) ); ?>
</li>
</ol>
<?php //echo js('codemirror/codemirror.js'); ?>
<?php /*<script type="text/javascript" defer="defer">
html_editor('html_editor', "25em");
</script> */ 
?>

The form.php is rather simple. The main hurdle you may have is the syntax used to create the form elements – this is Codeigniter’s style and is very powerful.  Once you really understand it, it is very simple.

Link to the very excellent Codeigniter documentation.  Click on the drop-down menu at the very top of the page and examine all of the classes, helpers, libraries, and other useful information.

Codeigniter form helper and form validation documentation

<label>Affiliate Source (CJ, ClickBank...) *</label>
<?php echo form_input(array('name'=>'aff_source', 'value' => $options['aff_source'] ) ); ?>

This code creates a form element label and the CI method of a input type=’text’ element.

The form_input() method creates the following (using ‘view generated source’ after rendering the page with an affiliate widget):

<input type="text" name="aff_title" value="">

The Codeigniter form validation class then checks the length of the fields, as well as other attributes (numeric, alphanumeric, integer, etc), against the array that you created in the ‘affiliate.php’ file.  If an error occurs, you will get a detailed error message near the top of the widget container telling you the field and error.  This occurs after you click ‘Save’.

For the PHP Codeigniter  form_textarea() method,

<?php echo form_textarea(array('name'=>'aff_style', 'value' => $options['aff_style'], 'rows' => '2' ) ); ?>

the resulting form element looks like this:

<textarea name="aff_link" cols="90" rows="5" value=""></textarea>

The one very important and simplification from standard form handling is the ‘value’ => $options['aff_style'] attribute. If there is content in the field, this array value is assigned as the value of the form element, displaying it for viewing and editing.

pyrocms widget affiliate form preview randaweb.com

Widget Form Preview

Affiliate Links

Because of the issue regarding Javascript inclusion in text areas and input fields, use only HTML-formated affiliate links from your provider (ClickBank, Commission Junction, etc).  Do not add any features that some providers have as options – such as CJ’s ‘Hide tracking code in link?’ and ‘Encrypt link?’ options – don’t use them or your links won’t work as expected.

Future

I am working on an automated affiliate link manager for PyroCMS – this will be a ‘module’ and not a ‘widget’.  This will allow you to program your site to populate a link section or sections with specific categories using your link providers API.

Thanks,

Vic Russell

Russell and Associates

www.randaweb.com/forum

randaweb@gmail.com

PyroCMS Widget Creation for Affiliate Marketing – Section 1

8:51 AM in CSS, Frameworks, jQuery, PHP, Programming, PyroCMS by Vic Russell


PyroCMS is a very powerful and capable PHP-based CMS.  It is authored on top of the Codeigniter framework.  It is very fast, and scalable and very promising as a powerful PHP framework.

Download the affiliate.zip file here

Caveat: The documentation for PyroCMS (PCMS) is very sparse.  Any answer to any question can be exceedingly  difficult to find.  Check back often for additional links to developing documentation.

One of the new and useful features of PyroCMS is the addition of Widgets.  Now, we all know what a widget is, right?  Actually, in the PCMS world, the concept of widget is very accurate – it is a discrete entity (in this case, a class) that can be added to a page, section of a page (right sidebar, left sidebar, header, footer, content, etc) that can access the database as well as execute custom code and present content that you create, in a format you define. You can use this to display images, text, and any other content you decide is needed – EXCEPT for JavaScript.

Let me clarify the javascript problem: if you want to create a widget that allows you to enter javascript snippets, it will not work – the <script> tags as well as any document.write() methods are stripped out for security reasons and replaced with [removed].  I am searching for a workaround, but given the above statement regarding documentation, this might take some time.  [ note: The feature within the Codeigniter (CI) form_helper class that sanitizes strings is xss_clean and prep_for_form ]. Until then, I am adding the needed JavaScript in the class and view files.

There are adequate installation documentation and install examples on the web for installing PyroCMS and Codeigniter.  Here are a couple.

PyroCMS Installation

Installing Codeigniter (this is link is provided only for reference - you do not need to download and install CI as PyroCMS is built on top of CI)

It is critical that you define your database connection accurately, and remember your default user name and password.

Our Platform

I am using a Dell laptop with 2 GB of RAM and a dual core Athlon X2 processor (circa 2006) with WAMP (Windows Apache MySQL PHP) installed for development, PHP Designer 7 as the IDE (Eclipse is too heavy, but would work with a more powerful machine).  WAMP is a very easy install.

All of my web files are under C:\wamp\www\ - which is the default web root for a typical WAMP installation.

Lets create a widget in PyroCMS - 'affiliate'

There is no widget named affiliate that comes with your installation.  Therefore, any reference to a file or folder/directory implies you have added it or should add it.

Navigate to the widgets directory under the application directory

  • (note: I am a Linux developer first - some of my paths will have the forward Unix-style slash ( / ) rather than the backwards Windows-style slash ( \ ).  Make adjustments where needed if I forget to use Windows style slashes)

C:\wamp\www\pyrocms_directory\application\widgets\affiliate

First, create the directory within the ...\widgets\ path called affiliate.

PyroCMS Widget Directory Structure - randaweb

Widget Directory Structure

Copy the code from this link into a download folder, extract the files, then copy the the files into the above path.  You will copy the 'views' directory and the affiliate.php file into the affiliate directory (see folder screenshot).

Download the affiliate.zip file here

Within the 'views' directory, you will have two files:  display.php and form.php. These files, and the containing 'views' folder, will be  present in every PyroCMS widget you create - these files are required and necessary.

  • The first file you edit (or create, depending on your need) is the class file.  Remember to capitalize the name of the class - which must be the same name as the file (less the .php extension :-) ).

Here is a bare affiliate.php file after editing to add the fields needed for the new widget:

<?php
if(!defined('BASEPATH')) exit('No direct script access permitted');
class Affiliate extends Widgets
{
// This section will appear when you click on the widget on the 'widgets' page of the admin
// interface (aka dashboard).  You access the admin interface using the following URL:
// http://your-host/your-pyrocms-base-dir/admin
public $title = 'Affiliate Widget';
public $description = 'Add Affiliate Links and Images';
public $author = 'Vic Russell';
public $website = 'http://www.randaweb.com';
public $version = '0.3';
// Now you define the fields that you will use in your widget.
// The widgets class will contain a 'name' field, so it is optional here
public $fields = array(
array(
'field' => 'aff_title',
'label' => 'Product Title',
'rules' => 'trim|max_length[254]'
),
array(
'field' => 'aff_order',
'label' => 'Add Order - 1 = new line',
'rules' => 'trim|max_length[3]|integer'
),
array(
'field' => 'aff_link',
'label' => 'Affiliate Link',
'rules' => 'required|trim'
),
array(
'field' => 'aff_alt',
'label' => 'Affiliate Alt Text',
'rules' => 'trim|prep_url|max_length[254]'
),
array(
'field' => 'aff_class',
'label' => 'CSS Class',
'rules' => 'trim|max_length[254]'
),
array(
'field' => 'aff_style',
'label' => 'CSS Style',
'rules' => 'trim'
),
array(
'field' => 'aff_source',
'label' => 'Affiliate Source)',
'rules' => 'trim|max_length[254]'
),
array(
'field' => 'aff_company',
'label' => 'Company Source for add',
'rules' => 'trim|max_length[254]'
)
);
public function run($options)
{
// The requisite 'run()' method that returns the data in the $output[] array //
if(empty($options['aff_title']))
{
return array('output' => '');
}
return array('output' => array($options['aff_title'], $options['aff_link'],
$options['aff_alt'], $options['aff_class'], $options['aff_style'],
$options['aff_source'], $options['aff_company'] ) );
}
}
/* Close class Affiliate */






Elgg – social networking platform – Prankk.com

11:13 AM in Programming, Social Networking by Vic Russell

Elgg is a very easy to install and get up and running social networking platform.  It took me about an hour to get a rudimentary site up.  Another 4-6 hours or so to learn the admin, add-on, permissions, etc features.

Elgg is Elgg-egant.  I love it.  It is simple in it’s look and feel.  It just does what it says it will do, out of the box, without much customization.

See my sample site – Prankk – here.  This is a prototype site that includes links to YouTube and Hulu videos (streams).  Link / embed and then view like you want to.

In the next week, I am going to migrate this to a live server for go-live use, mixing in some type of reward for the best page compilation, the most friends added, and other such activity.

One of the issues I do have with Elgg is that for the USER of the site, it isn’t that intuitive.  Before any serious rollout is considered, I would strongly suggest creating the essential help pages and hovers that will otherwise confuse users.

Until then, here is the link:

Computers in 5 years

8:44 AM in Programming by Vic Russell

I have been an avid system builder for the past 12 years.  I started computing with Apple IIe, Commadore64, and Sanyo MBC 550.  These computers were floppy disk units only – with the exception of the Commadore64 which was a cassette tape-drive.  I purchased a used Leading Edge computer with a 10MB hard drive in the late 80′s.  That was a tremendous boon since the floppy flip could be stopped, and the speed of program load was tremendous.  Since these were all DOS only machines – no windowing software so 1 program at a time could be run- that was a significant performance boost.

I spent over $2,000 on a Leading Edge Intel 486-d 16 MHz system with a 100MB hard drive in the early 90′s.  This amount of storage and having Windows 3.1 for Workgroups was another performance boost.  A lighting strike killed that computer about 2 years after I purchased it, forcing me to purchase another – a Packard-Bell 100MHz Pentium with 8MB of RAM and a 1GB Hard drive.  Wow, I would never use all that drive space!

Once I decided to upgrade to Windows 95 (at a very reasonable $95.00), I needed another 8MB of RAM ($120.00) which gave me a total of 16MB of RAM – adequate for running Win95.  I quickly ran out of hard drive space, so I had to purchase a 2GB hard drive as a slave for $220.00.  That system performed adequately for 6 years – our kids played educational games, I was on dial-up internet through Netscape and then AOL, and life was good.

Then, we purchased a second computer – an HP 750MHz Athalon XP system with a 30GB hard drive and Windows ME OS with a color monitor for around $850.00.  Now, we had two systems, but only one phone line.  We decided that the primary HP system that the kids had access to was our main system.  I could use the 100MHz system only when the HP was not online, and, we were not using the telephone.  This latter issue was a big deal given the cost of cellular minutes in the late 90′s and early 2000′s.  Consequently, I did much computing late in the evening.

Very soon after the purchase of the HP, we began to purchase systems at around 1.5 per year.  This ranged from a 600MHz Citrix chip-based system to 3GHz P4 dual core.   These were Bare Bones systems purchased primarily through Tiger Direct and New Egg, and costing around $200 to fully build.  Eventually, we were up to 6 running systems – 2 laptops, 1 server, 3 desktops.

In the years between the HP and today, we upgraded to Cable broadband.  We had a 100KBit connection for a couple of years – which was adequate for 2-3 computers (mid 90′s), which is what we had at the time.  Now, we have 1.5+ MBit connection that isn’t effected by any amount of network traffic (unless, we have 4 systems playing Hulu or streaming YouTube videos at the same time).

Future

The significance of the iPad and the recently talked-about Motorolla Droid based pad computer must not be underestimated.  These are the computing platforms of the future – small, powerful, and transportable.  The issues that will be overcome in the next couple of years include:

This increasingly mobile computing platform will be more and more integrated with everything we do.  Work, play, socialization, financial transactions, and most other life-events will become computer-enhanced.

Some theorists are predicting implant technology within the next decade – something that will merge the human mind with the storage, retrieval, and processing of information in near-real-time.  If we are able to think and receive direct sensory input from a computing device, how much longer before we are fully integrated into the ‘web’.  Thought theft may be a new crime, particularly when some ideas are worth millions of dollars.

That point in time where computers or computer networks become self-aware – the so called ’singularity’, may not be as far off as we once thought.  While the human brain may take another 100 years to replicate in a silicon-biological hybrid form factor, that may not be needed if we begin to feed our network with thought, emotion, dreams, and raw information on a regular basis.  All that is required is an algorithm that ties everything together

New Domain – jqueryform.info

2:43 PM in jQuery, Programming by Vic Russell

jqueryform.info is a domain I just purchased to use for dedicated jQuery forms blogging.  The jQuery ‘forms’ topic is huge, as anyone who uses jQuery knows.

Sample topics:

  • validation (client and server side handling/callbacks/etc)
  • AJAXifying forms
  • processing select, checkbox, and radio button tags
  • presenting error information elegantly
  • Myriad of plugings related to forms and form processing

I am going to try GoDaddy for hosting this site round.  I am not being critical of Hostmonster, I just have to test another hosting solution before I pony-up for a dedicated server or VM.

If anyone has a suggestion re: a hosting provider – and I mean direct experience – feel free to reply to this post. Please include the reason(s) why you like or do not like the provider – submissions with only a link and sales text will be removed.

Til Tomorrow…

Vic.