Trigger Events When Elements Are Viewed

jquery lazy load anything

Run Javascript or jQuery when elements come into view of the browser.


$('p').lazyloadanything({
    'onLoad': function(e, LLobj) {
        // Put your Javascript/jQuery goodness here
    }
});

Download at Github

Is this just another “lazy load” plugin for images?

No, not really. It can definitely be used to do lazy load images. In fact, the example on my Github page shows how to use it as an image lazy loader. However, this little jQuery plugin goes a little farther. Certainly there are many useful lazy loader plugins but this can be used to do anything you want when any element of your choice comes into view of the browser.

By simply using a jQuery selector you can specify any elements that come into view of the browser to trigger an event for processing. In the jQuery plugin settings there are also events for executing code before any events take place or after all events have fired. Depending on the plugin settings you can also have the event fire once or every time it comes into view.

I’m not going to go too much into all the settings and whatnot here in the blog. All of the lazy load plugin settings are available on the Github home page. Don’t worry if you don’t use Github, you can just download the code. It is a very light and easy jQuery plugin so you shouldn’t too much trouble customizing it. Please fork the project if you would like to make fixes and add enhancements. I would greatly appreciate that ;)

Tagged with: , , , , , , ,
Posted in Technology

Linux ‘make clean’ is your Friend – MySQL Lenny Backports

Two days ago I had started work to upgrade the database on the development server. We plan to use Amazon’s RDS (Relational Database Server) which only runs limited versions for MySQL. As of this writing they are 5.5.8, 5.1.50, 5.1.49 and 5.1.48. Before I was running MySQL 5.0 on both the development and production servers. As a web developer, I know it is best to use the same MySQL and PHP versions on the development server and the production server. This way, after you have tested and developed your code on the dev box you can rule out any problems you might encounter when you upload your code to production due to different versions of PHP or MySQL. It is also a good idea to match Apache versions but not too important to match Linux kernels or distributions, at least not in my line of work.

I usually use packages to install programs on the Linux boxes as I use Debian. Currently, I am using Debian Lenny (version 5.0) on both boxes. I have used packages to install everything except PHP. The Debian Lenny stable packages for MySQL are only for MySQL 5.0 but I needed to upgrade that so I could match the MySQL version that will be used on Amazon’s RDS. I searched the Debian site and came across Debian Backports. This is an answer to using newer packages that aren’t available to Lenny. I found that Backports has a package for MySQL 5.1.49. I thought, “perfect,” now I can just install MySQL Backports package for Lenny and now my database versions would be the same.

I had to modify my /etc/apt/sources.list to include:

deb http://backports.debian.org/debian-backports/ lenny-backports main

This was the right thing to do because when I went into aptitude and did a package update I was able to find the MySQL server and client 5.1.49. I went ahead and removed (purged) the old MySQL 5.0 packages and installed the following packages:

mysql-server-5.1
mysql-client-5.1
libmysqlclient-dev
libmysqld-dev

Each version was 5.1.49.

During install it asked me if I wanted to overwrite my my.cnf file. I guess I should have let it change it because when it tried to restart MySQL failed to start. I then kept trying to reinstall so it would go ahead and overwrite my old my.cnf file. I had to find an example MySQL conf file which can be located in /usr/share/doc/mysql-server-5.1/my-*.cnf. These files are example MySQL conf files for various size database servers. I chose the medium configure file as that best matched my old conf file. Doing so seemed to work as I was able to get MySQL running again.

I then went to access phpMyAdmin and it brought up a warning about how the PHP client didn’t match the MySQL version. So I knew I had to recompile PHP. I had used packages for everything except PHP because I had to customize PHP so much. I opened up a PHP dev file that uses the function phpinfo(). There I had the complete ./configure line that I used to originally compile PHP. After I ran the configure again, I ran make && make install. This went pretty fast but I didn’t think much of it. When I went to access my website I kept getting this error:

mysql_connect(): Headers and client library minor version mismatch

This one was the doozy. I searched and searched all over the internet to find an answer. I found a few things here and there which didn’t help. Everything I found is stuff I already did. I knew I had installed MySQL correctly with aptitude. I thought I was compiling PHP correctly. I couldn’t figure out why the PHP compilation was not using the new MySQL header code.

So after literally 8 hours of web searches, trial and error, and chatting on IRC with the nice guys at Cerberus who offer a CRM toolkit, I finally got my prayer answered. Yes, I said prayer. I prayed about it while in the bathroom. While chatting, I had asked how to remove something that was installed via a compile. He said to,

try make clean.

I tried it, it seemed to remove some things. Wouldn’t you know it, while running make && make install, it took considerably longer. I figured something new must be happening here. Apparently, that did the trick. I guess it recompiled the header files this time all the way around and overwrote the old ones that were left behind from the very first compile I did while I had MySQL 5.0 installed.

I really, really hope this post saves someone else a day’s work. If so, hit me up!

Tagged with: , , , , , , , , , , , , , , , , ,
Posted in Technology

Greek Letters in a Captcha

Most of us hate them, especially hackers and script kiddies. Captchas are used to thwart automatic form submissions to websites by bots and scripts. Security is important but the captchas have gone way too far. It’s one thing to distort the letters and use non-words but to use letters and characters not available on the standard keyboard just isn’t right. Almost all computer users have absolutely no idea how to access characters beyond what is on the keyboard. It requires holding down the Alt key and then pressing the number sequence on the number pad. For example, to type in the Spanish enya, ñ,  you have to hold Alt then type 1-6-4 then let go of Alt. I agree that internet security is import for webmasters, developers and admins but we can’t make it locked down so tight that even common folks can’t get in.

Here is an example of a captcha on site I was on the other day:

The second “word” – if you want to call it that – has two extended characters. The first is Sigma, Σ, Alt + 228. The third letter is the Euro, €, Alt + 0128. At the time I had to enter this on the page I just used a capital E which still seemed to work and maybe that is the point. But it threw me for a loop for a minute and I was a bit taken by it.

For a nice list of Alt codes. Check out this site: http://www.alt-codes.net/. There are more codes you can access on the right navigation of this site which lets you see language and currency alt codes.

Tagged with: , , , ,
Posted in Technology

Flowertown Festival Summerville SC Odd Review

My wife and I went to the Flowertown Festival in Summerville yesterday. We came late at around 4:15pm. They posted on their site that it closes at 5pm. Most of the vendors were still rockin past that well into 6pm. The event was from Friday April 1st to Sunday April 3rd 2011.

At the entrance was a replica of the Hunley submarine which you could see inside.

image

Just a little far off in the distance you could hear a “Sweet Home Alabama.” On down the road there was a fun little mariachi band shown below (sorry about the dark pic).

image

The vendors seemed to be mostly local folks but I am not sure because we did not have time to talk to them. Most of the stands were selling crafts of some sort. The photo below is a picture of the main strip. This is Main St Summerville.

image

The photo below is a section that went perpendicular to the main strip. It was just a dirt path. I’m assuming this wasn’t the prime real estate spot for the vendors. I must have caught the kid there in mid sentence.

image

One of the vendors was selling fried artichokes which smelled absolutely delicious. We should have tried them because when we had walked back, they had already shut down.

There was another shop that was selling empty wine and liquor bottles that were melted flat that could be used as a serving tray. Some included the butter knife.

There were a few local painters and musicians selling their art and music. One musician went all out and had a ton of his CD’s with his music blasting. It sounded like an ameteur Yanni mixed with Celtic music.

Another vendor was selling aluminum beer mugs which you could fill up for free all day long with various flavors of root beer. One of which was sarsaparilla. It was a cool looking stand too. The front of which was all wood and had the beer barrels sticking out that poured the beer.

There was no alcohol stands that I could see but I guess I wasn’t looking for them.

I saw a bizarre vendor’s product which was crystal finger nail filers. Looked cool…I guess. I didn’t know crystal finger nail filers were so popular. It was a man selling them and I got to thinking, maybe he was a person who worked with glass. One day, he used an etched piece of glass to file his nail down and got the idea. I dunno, see, I should have gone early and spoke to some more folks. If he was a true salesman, I’m sure it would have been a better story.

There was another artist doing portraits as you might find at any festival of high caliber. These weren’t just any portraits, I think the dude might have been trippin on acid because the faces looked melted and droopy. It definitely did not rain on them if that is what you might have wondered.

Unfortunately, there were no rides that I could see around. Maybe next year.

The Shriners were there. I was surprised to see a young guy with a very ornate “one of those hats” on. Usually you see a bunch of old cronies wearing them but this guy could not have even been 40.

Of course you had the stores with clothes and jewelry. Nothing particular caught my eye. Maybe because I’m a dude and not into that stuff too much. Neither is my wife so she didn’t point anything out.

There was a kettle corn stand and a Bar Bee Que stand I wanted to try but my diet said “no.”

My wife and I did buy some food. We, of course, went to the booth with the largest banners. I got a lamb gyro and she got lemonade and a funnel cake. The gyro was a complete mess and dripped all over the place. I had asked for it without the bread because I am on a low carb diet and the dude, in kind of a Greek ancient, said, “how would I make a gyro?” Haha, I can only hope I wasn’t the first jerk to ever ask him that stupid question. They poured a ton of nasty ranch on it. It just wasn’t very good. My wife’s funnel cake was good but it was completely covered in powered sugar. Now I know…this is just festival food and I shouldn’t be so critical. Agreed, I am just doing this for the blog 😉

The BEST stand I think was the mini doughnuts. Not only were the doughnuts mini but so was the doughnut frying machine. The whole thing was about the size of two keyboards and was complete with an automatic doughnut flipper halfway down the fryer. If you haven’t seen a doughnut frying machine you got to check one out. Then size it down to about 4 feet wide. It was so cute. Made you want to buy a doughnut just for the novelty of it. There was I sign that said, “Don’t bump or shake the table.” Understandably so mister mini doughnut man who wasn’t very mini at all.

Now that I am writing all of this, I really wish I took my pictures. I am an ameteur blogger so maybe next time will be better.

Below is a picture of a pretty path that was close by. It looped around and had a nice white bridge going over a small stream. I didn’t see any fish in there.

image

El fin.

Tagged with: , , , , , , , ,
Posted in Events, Food

Yahoo App Sucks

I have been using Yahoo mail for a long time now. I prefer Yahoo email on my desktop browser because I am able to use tabs that they make available via javascript.

I recently got a smart phone. I got an HTC Inspire Android. Up until just 3 weeks ago, yes I know, pathetic for a web programmer, I had a crappy Samsung flip phone which was only ok at the about 6 years ago. So naturally I got the email Yahoo app.

My biggest complaint, and really the only one, is that the email browser window cannot resize using two fingers like most other app windows do like in the FireFox app. You also cannot move the window diagonally. You have to wait until the screen is locked until you can move it in a perpendicular position.

Yahoo please fix.

Posted in Technology

Cholula Chipotle Hot Sauce Review

image

I recently picked up a bottle of Cholula’s Chipotle hot sauce. I have to say that is is pretty good. I have always liked Cholula since I was introduced to it at my local Mexican Restaurant. I am an amateur connoisseur of hot sauces but Cholula has a classic good taste. Not too hot and plenty of flavor. The chipotle (smoked jalapeño) has a real nice taste and is not overpowering. I had it on some baked chicken and it tasted great. If you understand the taste of chipotle and like it – meaning you aren’t just enchanted by the word – I definitely recommend it. If you aren’t familiar with the chipotle taste, give it a try. It is a good example of the unique chipotle taste.

Tagged with: , , , , , , ,
Posted in Food

Best PHP Mail Class

I wrote this class. It works great! You can send just about as many attachments as you like and include HTML in the message. The only bug is that every email looks like there is an attachment. Hope this helps.


class Email {

// Public Variables
public $To = "";
public $Title = "";
public $Message = "";
public $From = "";
public $FromName = "";
public $ReplyTo = "";
public $ReplyToName = "";
public $ReturnPath = "";
public $ReturnPathName = "";
public $Headers = "";

private $Boundry = "";
private $Attachments = array();
private $FinalData = "";
private $EOL = "\r\n";
private $FinalHeaders = "";

/**
* Send - Send Message based on Populated Class Vars
*
* Will return false, and fail to send message, if required fields are empty.
*
* @access public
* @return bool True on Success, False on Failure
*/
public function Send() {

if ($this->To && $this->From) {
// Build Email
$this->BuildEmail();

// SEND IT!!!
return mail( $this->To, $this->Title, $this->FinalData, $this->FinalHeaders );

} else {
throw new Exception('"To" and "From" properties (email addresses) must be set before sending email');
}

}

/**
* AttachFile - Include file to be sent as an attachment
*
* @access public
* @param string $filename
* @param string $contents
* @return bool True on Success, False on Failure
*/
public function AttachFile( $filename, $filetype, $filedata ) {

$this->Attachments[] = new Attachment($filename, $filetype, $filedata);

}

/* -- Private Functions -- */

/**
* Put the email string all together
*
* @access private
*/
private function BuildEmail() {
// Set boundary
$this->Boundry = md5(uniqid());

// Build main headers
$this->BuildHeaders();

// Start first boundary
$this->FinalData .= "--".$this->Boundry.$this->EOL;

// Assemble message
$this->IncludeMessage();

// Assemble attachments
$this->IncludeAttachments();
}

/**
* IncludeMessage - Includes message into FinalData string
*
* @access private
*/
private function IncludeMessage() {
$this->FinalData .= "Content-Type: text/html; charset=\"iso-8859-1\"{$this->EOL}";
$this->FinalData .= "Content-Transfer-Encoding: 7bit".$this->EOL.$this->EOL;
$this->FinalData .= $this->Message.$this->EOL.$this->EOL;
$this->FinalData .= "--".$this->Boundry.$this->EOL;
}

/**
* IncludeAttachments - Include previously attachmented files into FinalData string
*
* This method should never be called explicitly, as it is called from within the
* `Send` function.
*
* @access private
*/
private function IncludeAttachments() {

foreach ($this->Attachments as $attachment) {
$this->FinalData .= "Content-Type: ".$attachment->filetype.$this->EOL;
$this->FinalData .= "Content-Transfer-Encoding: base64".$this->EOL;
$this->FinalData .= "Content-Disposition: attachment; filename=\"{$attachment->filename}\"".$this->EOL.$this->EOL;
$this->FinalData .= chunk_split(base64_encode($attachment->filedata));
$this->FinalData .= "--".$this->Boundry.$this->EOL;
}

}

/**
* BuildHeaders - Compile headers from member vars
*
* This method should never be called explicitly, as it is called from within the
* `Send` function.
*
* @access private
*/
private function BuildHeaders() {

$headers = "";

// From
if($this->FromName) $headers .= "From: ".$this->FromName." From.">".$this->EOL;
else $headers .= "From: {$this->From}{$this->EOL}";

// Reply-To
if(!$this->ReplyTo) $this->ReplyTo = $this->From;
if($this->ReplyToName) $headers .= "Reply-To: ".$this->ReplyToName." ReplyTo.">".$this->EOL;
else $headers .= "Reply-To: {$this->ReplyTo}{$this->EOL}";

// Return-Path
if(!$this->ReturnPath) $this->ReturnPath = $this->From;
if($this->ReturnPathName) $headers .= "Return-Path: ".$this->ReturnPathName." ReturnPath.">".$this->EOL;
else $headers .= "Return-Path: {$this->ReturnPath}{$this->EOL}";

// Message-ID
$headers .= "Message-ID: ".$this->EOL;

// X-Mailer ... dunno wut foh
$headers .= "X-Mailer: PHP v".phpversion().$this->EOL;

// MIME-Version
$headers .= "MIME-Version: 1.0{$this->EOL}";

// Content-Type, DO NOT CHANGE, must stay for attachments and whatnot
$headers .= "Content-Type: multipart/mixed; boundary=\"{$this->Boundry}\";{$this->EOL}";

// Append additional headers although there probably shouldn't ever be any
$this->FinalHeaders = $headers . $this->Headers;
}

}

class Attachment {
public $filename;
public $filetype;
public $filedata;

public function __construct($filename, $filetype, $filedata) {
$this->filename = $filename;
$this->filetype = $filetype;
$this->filedata = $filedata;
}
}

Tagged with: , , , , , , ,
Posted in Technology

AT&T Billing Resolved

After my blog posts and Facebook comments on att’s page, a lady from Facebook got a hold of me and took care of the $720.00 termination fee and even adjusted the charges for May’s service. I want to thank those who helped me with this issue. I was really at their mercy and they lent a hand to continue to help me out even though I was no longer their customer. I really enjoyed not having to call their customer service line or deal with their customer service over email. I am glad there was a more personable touch in help resolving my issue. Thank you at&t and to the persons who helped me.

Read about my at&t billing dispute

Tagged with: , , , , , , ,
Posted in Technology

AT&T Bill Still Under Dispute

READ HERE ABOUT HOW THIS AT&T BILLING DISPUTE WAS RESOLVED

I have been very, very worried about this situation all weekend. It makes things more difficult because this is under my wife’s name and I am trying to take care of this for her before she realizes what happened and cuts my throat. We just can’t afford this $720.00 charge. My business didn’t do well and I just have a regular job now.

I emailed customer service via the website about this on Thursday, June the 11th. This is the response:

“Dear Shawn Welch,

Thank you for contacting AT&T regarding your former business telephone
account.

On your agreement it states the following:

In the event the Subscriber terminates this Subscriber Agreement or
terminates the Complete Choice for Business Package service, the
Subscriber agrees to pay termination charges to BellSouth as provided
below based upon the number of months remaining on the term.  These
charges will appear on the Subscriber?s bill as a charge in the OC&C
section.  Payment of this charge does not release the Subscriber from
other previous amounts owed to BST.

Set charge to be multiplied by number of months remaining on term
Complete Choice for Business Term Plan Program $20

Your term agreement auto-renewed on your bill date of 5/4/09 and you
disconnected service on 5/11/09. Idon’t show any notations on your
account that there was any prior inquiries regarding your agreement,
therefore the charges are valid.

Thank you for choosing AT&T.

Did you know that your customers are probably looking for your business
online?  I can check to see if your business name is available as a
“.com” address and set up a domain name for you.  AT&T offers Shared Web
Hosting and has discounts for our DSL customers.  Just reply back to
this email and I’ll give you all the details!

Sincerely,

Dorothy Malcolm
www.bellsouth.com/smallbusiness
AT&T Small Business Services &caseid=17846944″

I realize the stipulation here; but here is my point… It is not like I am trying to get out of a legitimate deal. I waited the three, long, years until I could cancel without a fee. I called on May 11th–May being the last month of the contract–and I asked the lady on the phone about any fees. My impression of the conversation with her was that it seemed to have already been canceled and there wouldn’t be any fees. I asked her if there would be a cancellation fee and to my understanding, she told me there wouldn’t be anything charged and that I would get a final bill. According to the email above, my account auto-renewed on May the 4th and, since I canceled, I was charged for the full 3 years. This is just very disturbing to me because I have been a loyal Bellsouth/at&t customer for almost 10 years–the last three being the business service. During the 3 year contract; you were great, the people on the phone were great and the technicians were great but the technological service itself was really poor. Every time there was lightning in the area, my internet service went out. I had THREE techs come out and take a look at everything to no avail.  They were never able to repair the problem so I just lived with it. Also, this whole time I have been paying for 3Mbs down stream and I have only been getting 1.5Mbs. The techs said numerous times I can’t get anything faster because I am too far away from the main trunk. I am 29 years old and I am a web programmer. I know a lot about the internet and electronics. I have done several tests myself confirming I have only been getting 1.5Mbs down. This is quite irritating that I have been paying the price of 3Mbs down this whole time. Therefore, I believe the difference makes up for the $720 AND not to mention all the down time from the storms. To top it off, I am being charged for the full month of May when I actually canceled all my services on the 11th of May. I realize I owe a balance for services rendered in the amount of $429.20, which includes the full month of May, that I am willing to pay. I can pay the $429.20 right now but not until the $720.00 is removed from my bill.
Case ID: 17846944

Thank you.

Tagged with: , , , , ,
Posted in Technology

My AT&T Billing Dispute

READ HERE ABOUT HOW THIS AT&T BILLING DISPUTE WAS RESOLVED

I just received my last statement and there is a $720.00 termination charge. The contract was up in May. I decided to go ahead and cancel the business account. When I called the lady was puzzled and said it looked like it was already canceled.  She went through with the request and never told me of any cancellation charge.  Apparently I was supposed to write them a letter 60 days prior to the end of the agreement or the account would automatically renew.  Therefore, I would be stuck with another 3 years of bad service (read the next paragraph).

I want to mention that in the last three years of having this service, the internet went out every time there was lightning in the area. This caused so much grief. I called numerous times and had countless technicians come to fix; but to no avail.  I think this alone would even out anything I owe. To top it all off, they couldn’t get anything faster than 1.5Mbs out to my home even though I was paying for 3Mbs. There is just so much wrong here.

Any advice out there? Please help.

Tagged with: , , , , , , , , , ,
Posted in Business, Issues

Pallet Wrapper of the Future

I realize it may be hard to get excited about something as simple as a pallet wrapper but I have recently made a website for an inventor of a really great product that I think will help workers in the logistics field.  The inventor is very passionate about his invention and I became somewhat “wrapped” up in his gadget. It is a hand held pallet wrap dispenser that easily and efficiently wraps freight pallets. The wrap is set on a pole that holds the wrap with spring tension. Pallets are easily wrapped by simply walking around the pallet and holding the pole either down for lower wrappings or up for reaching higher stacked pallets. It is safe to use too. No more using a stool or ladder to get to the top of  a pallet which is not only dangerous but time consuming. That means less workmans comp, less injuries and higher productivity. It is fairly inexpensiv too. If you have a minute, please view the very short video about the pallet wrapper on the front page.

Here is the commercial script:

Introducing SPEEDWRAP, a new and unique patent design industrial portable stretch wrap dispenser.

During these tough economic times, frivolous lawsuits and common workplace injuries, companies are scrambling to find solutions to combat and overcome two major issues, which are crucial in regards to company survivability and prosperity.

SPEEDWRAP’s dynamic ability and design effectively targets these key issues:

(A) Worker’s Compensation

(B) Productivity

Worker’s Compensation issues are a major concern on a daily basis in today’s work enviroment.

SPEEDWRAP can help you reduce inherent task related on the job injuries associated with wrapping pallets, while providing a potential defense to various worker’s compensation issues.

Example:

Worker’s compensation payments can range from thousands, to hundreds of thousands of dollars or more.

The percentage of employees filing for worker’s compensation is astounding.

SPEEDWRAP provides employees with a more stabilized working posture, along with SPEEDWRAP’s excellent reach speed and control allows employees to accomplish tasks exerting minimal physical effort, while maintaining stamina, experiencing less prolonged strenuous repetitive motion, resulting in inhanced employee moral.

In regards to Productivity, empolyees will experience an immediate significant increase in productivity, stamina, and overall ability to accomplish tasks with relative ease and astonishment.

SPEEDWRAP’s design allows for a smooth, fluid application, with no irritating interruptions. NO stagnate downtime, NO ladder, NO helper required, NO electrical or power failure concerns, avoids schedualing time consuming maintenance, or un-expected costly repairs, or system upgrades.

SPEEDWRAP’s design promotes improved wrapping technique, reducing or eliminating the temptation for employees to excercise poor and/or hazardous methods and procedures, resulting in product damages, and even unforseen injuries to company personnel. In relation to improved wrapping technique, this will insure integrity and quality of palletized freight, staged or in transport.

SPEEDWRAP is highly adaptive in its ability to wrap uniform and non-uniform standard and over-sized palletized freight, from floor to over 9 ft. unassisted.

SPEEDWRAP’s ability and efficiency will help companies promote and establish a professional company image while maintaining excellent customer relations.

SPEEDWRAP- efficient and effective

SPEEDWRAP- fast and easy to use

SPEEDWRAP- store anywhere (preserves valuable warehouse space)

SPEEDWRAP- no electricity required

SPEEDWRAP- excellent and effective back up for automated dependent companies

SPEEDWRAP- customer support and team effort

SPEEDWRAP- thinking outside the box with an aggressive fertile research and development department, insures future product evolution

EXPERIENCE SPEEDWRAP TODAY!

Posted in Technology

Fantastic Sams Goose Creek SC Horrible Experience

On Sunday, March 1st, 2009, 4:25pm, I went to the Fantastic Sams, Goose Creek SC location. When I walked in I noticed nobody was waiting. There were two

ladies cutting hair, I’ll call them Lady A and Lady B. There was a man getting his hair cut and a woman getting her hair cut, we’ll call her Lady C. Lady A,

having curly blonde hair and dark streaks in the front, finished with the man and walked to the back of the store. Lady B who was cutting Lady C’s hair,

said they will be right with me but did not pull up my info on the computer. Lady A returned from the back and walked over to Lady B and Lady C. Lady A,

started talking to both ladies how good Lady’s C hair cut looked. After a minute or so, Ladie C got up from the chair, after getting her hair cut, and told

me she will take me. (Just in case you didn’t get that, Lady C is an employee getting her hair cut while on the clock). I told Lady C how I wanted my hair

cut. I told her to cut it as if it were to be buzzed with a 12. I realize that isn’t very clear, but that is as simple as I could put it. After a few cuts

in the back, I checked it and told her it is too long; to cut it about half that. She cut my hair more and started styling my hair. I told her again it is

too long and just needed it be cut finger height all the way around. Basically, I had to tell her three times how to cut my hair when it is very easy in my

opinion. Not that cutting hair is easy but my style isn’t that difficult. The whole time I was turned to the side not facing the mirror and I couldn’t see

what she was doing or how my hair was turning out. While getting my haircut, Lady A–the one with dark streaks in the front–said and did some very

questionable things. First, she said in front of me how she, “feels bad how she likes turn people away.” That is very close to verbatim. At about

4:45pm–knowing that they close at 5pm on Sunday–turned away a mother and her daughter when they walked into the store. Lady A had not turned the sign to

the “closed” side nor did she lock the door. Another customer came in shortly after, about 4:50pm, and was turned away by Lady A. After I returned home, I

noticed that the front edge of my hairline–just above where my right sideburn starts and towards my temple–had been buzzed off. Not only did nobody in my

entire life ever buzzed that section of my hairline but the other side was untouched. So not only was it ridiculous to do that in the first place, she

didn’t make it even on the other side. Hereis a picture of it:

photo0129

This is exactly how things transpired that night and I want a refund in full.

Thank you,

Shawn Welch

Tagged with: , , , , , , ,
Posted in Business

How To Quickly Setup A PHPBB Subdomain

Setting up phpBB is fairly simple enough. But this will help set it up using a subdomain (e.g. forum.mydomain.com). You start by adding a record to your DNS. This is usually done through your domain registrar (e.g. GoDaddy.com, NetworkSolutions.com). Add an A record that has forum.mydomain.com as the common name and add the server’s IP address. Once this is done, you must add a virtual host section in the Apache configuration file:

<VirtualHost 10.20.30.40:80>
ServerAdmin moderator@mydomain.com
DocumentRoot /home/phpBB3
ServerName forum.mydomain.com
</VirtualHost>

Download the latest version from http://www.phpbb.com. Unzip and upload the folder to /home or whatever you serve your files from and restart apache. Follow the installation instructions and make sure to rename or delete the /install folder under phpBB3

Hope this helps. Take care.

Shawn

Tagged with: , , , , , , , ,
Posted in Technology

SP3 Video Problems: Update Removed Drivers

I realize the SP3 update was a few weeks ago but I haven’t been able to deal with this problem until today.

About 4 weeks ago, I was somehow suckered into updating SP2 to SP3.  I failed to read anything about it before the update and figured, “what the heck.”  Two weeks later, I realized something was wrong when I tried to play WoW.  An error message came up saying that it couldn’t find a usable video device.

I am very busy and just didn’t have the time to really dig in and figure out what went wrong.  Today, I tried to open Google Earth.  It could not open using DirectX.  I figured it was time to fix since I had a little spare time.

I then tried to update / reinstall the ATI driver and it just wouldn’t take.   So, now I had a complete loss of a video driver.  Well, I got sick of it all and rolled back before the update.

The video driver came back and I was able to play WoW and the ATI properties came back.   Unfortunatly, I had updated FireFox to version 3 sometime after the update so I had to reinstall FF3.  I also had to install most of my addons.  Not a big deal since it still had all of the addon settings and whatnot.

FireFox Rox! Windows sucks…especially SP3.  Don’t install it unless you really thing you have to.

I have had other problems at work updating to it.

Tagged with: , , , , , , , , , , , ,
Posted in Technology

Why Internet Explorer Sucks: Part 1

First I want to say that I was like you once.  I only used Internet Explorer because it worked for what I needed it to.  As my web programming career became full time, I came to realize just how faulty, buggy and down right sucky Internet Explorer is.

This is part one of my rants on not liking IE.  I am talking mostly about IE 7.  I have other issues with it but that is for the next section.

As you might have guessed, I am a huge FireFox fan.  I have noticed that FireFox has less bugs and is more true to HTML style and overall web experience handling.

Here is what I discovered today.

IE 7 and possibly earlier versions do not handle JPGs that are encoded in CYMK format.  Of course, FireFox does not have a problem with this and displays them just fine.

Here is a JPG encoded in CMYK. If you are using FireFox, you should have no problem seeing this. On internet explorer however you will only see a red X.

JPG encoded in CMYK

I found this out because I am working with a client who uploads high resolution images which are “print ready.”  Meaning that the images are ready to be sent to high definition printers.  Therefore, the JPGs are in CMYK.  These images must be converted to RGB before uploading them because IE will not display them.  IE doesn’t even know what kind of file it is! How hard can it be to program the browser for it to work.  Obviously, the dollar didn’t fall on that part of the agenda.

Just goes to prove that Microsoft is just another company looking out for their bottom dollar and keeping you from having the best web experience.

Get FireFox 3

It ceases to amaze me how great FireFox is and all of the addons you can get for it.  All for free.  I know, you say, “IE is free.”  Not really, you MUST have Windows for it to work, which isn’t free.

If you would give FF a try, I promise you will ove it or your money back.  The changeover is very simple and it automatically carries over all of your bookmarks although you should be using Delicious.

Tagged with: , , , , , , , , , , , ,
Posted in Technology

Compact Privacy Policy: P3P In Two Easy Steps

I realize the importance of having a privacy policy just isn’t what it used to be right after 9/11.  Some time ago, Microsoft started to support displaying compact privacy statements (3).  You can easily view P3P statements by clicking ‘View’ then ‘Web Page Privacy Policy’.  Then click the top entry, which is usually the site/page you are currently viewing.  Then click the Summary button. This causes a request for /w3c/p3p.xml which contains information on finding the sites compact privacy policy.

I seriously doubt many people actually attempt to look for this statement although it should be included in all major websites.

Amazon has a good example of how it looks.  Just go to amazon.com and click View->Web Page Privacy Policy.  You will see how this will look.  Yahoo sends the location of the P3P file via the response header but does not work in IE or FireFox.  I am guessing they are still using an old implementation of P3P.  I tried the header on my server but FireFox nor IE7 was able to pick it up and use it in any way.

Creating a compact privacy policy is very simple and here is how to do it:

Step 1 – Create Compact Privacy Policy Directory and Files

– Create a folder named /w3c in the root site

– Create two files, p3p.xml and p3p_full.xml

Step 2 – XML Compact Privacy Policy Information

– p3p.xml:

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
   <POLICY-REFERENCES>
      <POLICY-REF about="http://www.mydomain.com/w3c/p3p_full.xml">
         <INCLUDE>\*</INCLUDE>
         <COOKIE-INCLUDE name="*" value="*" domain="*" path="*"/>
      </POLICY-REF>
   </POLICY-REFERENCES>
</META>

– p3p_full.xml:

<POLICY name="forBrowsers"
discuri="http://www.mydomain.com/privacy.php">
<ENTITY>
<DATA-GROUP>
<DATA ref="#business.name">mydomain.com</DATA>
<DATA ref="#business.contact-info.postal.street">123 Example St</DATA>
<DATA ref="#business.contact-info.postal.city">Anytown</DATA>
<DATA ref="#business.contact-info.postal.stateprov">CA</DATA>
<DATA ref="#business.contact-info.postal.postalcode">90240</DATA>
<DATA ref="#business.contact-info.postal.country">USA</DATA>
<DATA ref="#business.contact-info.online.email">me@mydomain.com</DATA>
<DATA ref="#business.contact-info.telecom.telephone.intcode">1</DATA>
<DATA ref="#business.contact-info.telecom.telephone.loccode">123</DATA>
<DATA ref="#business.contact-info.telecom.telephone.number">4567890</DATA>
</DATA-GROUP>
</ENTITY>
<ACCESS><nonident/></ACCESS>
<DISPUTES-GROUP>
<DISPUTES resolution-type="independent"
service="http://www.mydomain.com"
short-description="mydomain.com">
<IMG src="http://www.mydomain.com/images/privacy.jpg" alt="Privacy Logo"/>
<REMEDIES><correct/></REMEDIES>
</DISPUTES>
</DISPUTES-GROUP>
<STATEMENT><br /> <PURPOSE><admin/><develop/></PURPOSE>
<RECIPIENT><ours/></RECIPIENT>
<RETENTION><stated-purpose/></RETENTION>
<DATA-GROUP>
<DATA ref="#dynamic.clickstream"/>
<DATA ref="#dynamic.http"/>
</DATA-GROUP>
</STATEMENT>
</POLICY>

At the top of p3p full file, you will see a link to the privacy policy page.  Here you will just insert the link where it is located on your server.

The privacy logo can be just about any image you want.  You can even use the trust-e image if you have it or want to link to it.

There is a lot more information you can provide in the full p3p file (2).

  1. “Section 2 What is P3P and How Does it Work?,” http://p3ptoolbox.org/guide/section2.shtml#IIa.
  2. “The Platform for Privacy Preferences 1.0 (P3P1.0) Specification,” http://www.w3.org/TR/P3P/.
  3. “Web Analytics Insight: P3P – Do we really care about it?,” http://rkapoor.blogspot.com/2007/07/p3p-do-we-really-care-about-it.html.
Tagged with: , , , , , , , , , , , , , ,
Posted in Technology

FireFox Addon Faves Causes 404 Errors

This is in response to my earlier post:

https://shrimpwagon.wordpress.com/2008/09/18/mysterious-firefox-addon-causing-404-errors-authoring-rotatorgif/

I have located the error, finially.  FireFox addon Faves, causes a request to the server when the user is adding the particular page to their “faves.”  When the user clicks the faves button, and saves the page to their faves, a request goes out to that server looking for an image named authoring-rotator.gif.

For instance, a person is on http://www.domain.com and adds to their faves from there.  Then a request goes out to that domain asking for http://www.domain.com/images/authoring-rotator.gif

I discovered this after seeing a 404 error originating from our own IP address.  Logically, I figured that the only person who uses FireFox that could possibly have an addon that does this is our SEO guy.  I noticed that he had the very page open in his browser.  I ecstatically went out to find him and asked him what he did.  Sure enough, he saved it to his faves via the FireFox faves addon.

I then had him save another page.  Of course, another 404 error request for authoring-rotator.gif came up right away.

I then solved the issue by creating a .gif that is 100×100 with his face on it.  Hopefully, that won’t stop people from saving to faves although the gif does not come up anywhere in the faves addone during saving to faves.

I emailed faves.com about this issue.  I asked them why their addon does this and asked if there is any way to optimize for this request.  I have not heard back.  I will be sure to give an update if I hear anything.

Happy LAMPing,

Shªwn

Tagged with: , , , , , , ,
Posted in Technology

Mysterious FireFox Addon Causing 404 Errors: authoring-rotator.gif

So yesterday I decided to have our server email ALL 404 errors to my email address.  OMG! It was really crazy at first but slowly I chipped away at all of them.  Well, today and yesterday, I keep seeing something very interesting.  I keep getting a 404 Not Found error with this odd request:

/images/authoring-rotator.gif

It is odd because we don’t have that image.  It is definitly not a broken link on the site.  I have look over the site a few hundred times-little exageration there.  But all the requests have one thing in common.  The browser is FireFox 3.  It can’t be just FF3 because I am using it too and when I access that page no errors occur.  I can only assume this is some kind of blog or article addon that is trying to retrieve this image.  I want to know because I would like to optimize the site for this.  I have search every which way to Sunday on Google and I come up with nothing.

If anyone out there would like to be a sluth on this, be my guest.  Please let me know,

Shªwn

Tagged with: , , , , , , ,
Posted in Technology