Moline Web Design: QC TOTAL Tech careful who you trust…

No Comments

I have recently been investigating my personal local market for website design in Moline, IL. In doing this I realized many of the sites offering hosting do not have very well designed sites. It's kind of crazy to me:  you are trying to sell people on web design when your site itself is clunky or a dated design.

In doing so, the best place I could find a good listing of businesses for this topic was in the online superpages. I never really came across a single site that was upfront with their cost. I found this somewhat annoying. I know website to website is different but many people I have talked to just want a professional web presence, and something like this could be priced. I hypothesize they leave the prices off to haggle with you. Meaning they want to try and get as much out of you as they can (despite what they have charged others). Let's face it for them designing the site themselves is a matter of low overhead and mostly labor. (There are a few extra costs involved but most sites would be minimal in this regard.)

For instance, I saw a company on superpages I am personally familiar with, QC Total Tech. In the past I have done contract work for them, which I was never paid for. I did some custom PHP programming since the owner himself was either not as versed with PHP or did not have time. (I am not really sure which).  I spent many hours working on a business directory listing service and I was told another person would be working on the look and design. This fell through first, the designer did not have time due to his personal life. The man who had contracted me said he would be doing it himself just to continue building code. During this time QC Total Tech attempted to get me to work more hours in offering me more pay, I refused. I have a full time job with benefits and at the time of this offer had still not received payment.

The entire project lasted for about 5-6 weeks. I had originally been building the project on my own server but was asked to move it to QC Total Techs. This was my first mistake...(stupid me). After completing the project the site went live, and is still live to this day with all my labor... in fact featured on a local newspaper! I fixed a few bugs that were pointed out to me then waited for payment... My payment never came. I received emails that it would, then no emails at all. What I did receive in the mail was a  notice that QC Total Tech was bankrupt. Apparently, its really nice tactic to just claim bankruptcy instead of paying your contracts when you have no real inventory to lose.

Today when I was on their site I noticed they had redesigned and were still an active business entity (what happened to bankruptcy). I warn the local business and others seeking local websites (Quad City Area)to look elsewhere for web hosting. QC Total Tech is unethical and poorly run. I can tell you just by looking at the site you can get a better website for less. If you want an example of their lack of web development knowledge simply go their homepage and look at the title in your web browser. Home-Keyword,Keyword...blah blah. A good designer knows this is not an effective title for a webpage for search engines or in general human readability. I could do a full analysis of all the problems with their front page but my intent is not to tear apart the site; I don't want to make an already long blog post longer. Please heed my warning, doing business with this company may leave you with out a website in the future should their company continue to practice in the manner it does.

Tags: , , , , ,

Wednesday, February 3rd, 2010 interesting

ExtJS 2+ Navigation Plugin for creating simple site navigation.

No Comments
I use the ExtJS library a lot. In using the library I found in 3.0 they support a grouptab panels. Unfortunately, I am still working on 2.2 and needed a similar solution that is compatible with both ExtJs 2.2 & Ext 3.0. My goal was to build a clean navigation similar to ExtJS 3.0 groupTabPanel option. What I came up with was small extension on the library that works with Ext2.2+ and will allow me to upgrade later without having to change any code. Below you an see an image of the example of NavPanel my first ExtJS extension.
NavPanel example screen shot.

NavPanel example screen shot.

It allows for some basic formatting of the menu display including left, right, center.  Each navigation item will automatically adjust itself when group under the same NavPanel object.

Features

  • Clean/Fast Navigation creation with minimal code.
  • Can support multiple navigation panels on same page each target to different Panel.
  • Supported by ExtJS 2.2+
  • Syntax similar to other Ext Objects.
  • Menu layout adjustable (including icon positioning)

Usage
Here is a simple code example usage of the extension:


  Basic Example Usage
     viewPt = new Ext.Viewport({
        layout: 'border',
        border: false,
        items: [{
           xtype: 'panel',
           region: 'west',
           border: false,        
           bodyStyle: 'background-color: rgb(40, 120, 50);',
           width: 200,
           items: [{
               xtype: 'navpanel',
               width: 150,
               panelXAlign: 'right',
               yOffset: 10,
               menuItemAlign: 'left',
               activePanel: true,
               target: 'centerpanel',
               defaultItem: 1,
               items: [{
                  header: true,
                  text: 'My 1st ExtJS Ext',
                  iconCls: 'myspecial_header'                                                              
               },{
                   text: 'Ext.ux.NavPanel',
                   icon: 'asterisk_yellow.png',
                   items: [{
                     xtype: 'panel',
                     width: 500,
                     height: 200,
                     style: 'padding: 10px;',
                     title: 'Sample Panel',
                     html: 'something special'                                          
                   }]                                    
               }]
           }]    
        },{
            xtype: 'panel',
            id: 'centerpanel',
            style: 'padding: 10px',
            height: 500,
            width: 600,
            border: false,      
            region: 'center'    
       }}
     });

Files
This zipfile contains all the resources used in the included example file (example.html) and the NavPanel.js file itself. I did not minify the file and the code is commented to aid you along your way. navpanel.zip

Example:
Here is a link to the example I put together demonstrating some of the different layouts and targeting. navpanel example

Terms
Feel free to download and use however you want to.  Realize this is my first true ExtJS extension built from scratch so there may be bugs that need addressed.  Feel free to point them out and I will fix as time allows.  All I ask if you do use this particular extension is that you leave a comment on this page on how you intend to use it or where you are going to use it, this is for my own curiosity. Enjoy!

Changelog
Feb 17 2010
** Fixed Bug with NavPanel Z-Index causing it to bleed through parent windows and masks.

Tags: , , , , , , , ,

Wednesday, January 6th, 2010 javascript, programming, projects

IE8 Javascript external script execution order solution.

1 Comment
The lack of posts lately has been due to the fact that I have had way too much going on around me. Fixing up one house to sell and adding a new room into my house has kept my out of work time to a minimum. That being said I came across an interesting problem the other day that I felt needed a small post about.

Problem:
Many ad serving networks rely on JavaScript to deliver their ad code to the page.   The method typically employed to generate the code to the page is document.write('the ad code');  Well this is fine if the code is all present on the page and not relying on external scripts.   What happens though when the ad itself relies on an external script in and embeds code inline.  For example:
<script language='javascript'>
document.write('<scr' + 'ipt type="text/javascript" src="http://domain.com/generated_external_script.php?param1=foo&param2=foobar"></script>');
 
document.write('<div id="ad-placeholder">Here is my ad: <br/></div> <scr' + 'ipt language="javascript">insertAdInto("ad-placeholder");</scr' + 'ipt'>');  
 
</script>
In this case the external script is a javaScript function that will render itself into an element that was passed. In this case it is an element we are dynamically adding to the page. In most browsers this will work because they will wait to run the JavaScript command after the external script has been loaded. Internet Explorer though runs JavaScript as it parse the page. This means when it encounters insertAdInto("ad-placeholder"); It may or may not exist which will create an error. (In most cases it will not exist.)

Solution:

I tried different solutions one involving the use of "defer" attribute as part of the script tag. (Which did not work). I decided to simply suffer the gross solution. Using the setInterval() method I need to keep checking the function until it exists. So it looks something like this.
document.write('<div id="ad-placeholder">Here is my ad: <br/></div> <scr' + 'ipt language="javascript">insertAdInto("ad-placeholder");</scr' + 'ipt'>');  
</script>
Becomes:
document.write('<div id="ad-placeholder">Here is my ad: <br/></div> <scr' + 'ipt language="javascript">nmSpace_itvlId = setInterval(function(){ if(typeof insertAdInto == "function"){ insertAdInto("ad-placeholder"); clearTimeout(nmSpace_itvlId); }}, 100);
</scr' + 'ipt'>');  
</script>
Or in a more readable manner:

nmSpace_itvlId = setInterval(function(){
   if(typeof insertAdInto == "function"){
      insertAdInto("ad-placeholder");
      clearTimeout(nmSpace_itvlId);
   }
}, 100);
This allowed me to place ad code into dynamically created elements of from a document.write using a callback from an external JavaScript method. I tested this in all browsers and I hope it is useful to others.


Tags: , , , , , , ,

Saturday, November 14th, 2009 javascript, programming

Search

 

Comments