January16
Think you should only check your privacy settings for sites like Facebook? Most other sites provide privacy settings as well. Those settings are most likely defaulting to sharing your information, so it is best to check and then update them appropriately.
Wells Fargo defaults “Allow sharing of my information among Wells Fargo Companies?” to “Yes” for example:

December6
I paid off my car in October. My Chase auto loan account is closed. It says “account closed” when I try to login at chase.com. However, during the first week of December, my bank account was charged a regular car payment. Apparently unless you cancel the auto pay feature on their website they keep charging you against your closed account. And then when you call them and ask them about it, they say the only thing you can do is send them a letter because since the account is closed, they have no way of refunding the money. Chase really needs to have a “feature” where they don’t continue auto pay on a closed account that has a $0 balance….
October24
I used to rule the world
Seas would rise when I gave the word
Now in the morning I sleep alone
Sweep the streets I used to own
I used to roll the dice
Feel the fear in my enemy’s eyes
Listen as the crowd would sing
“Now the old king is dead! Long live the king!”
One minute I held the key
Next the walls were closed on me
And I discovered that my castles stand
Upon pillars of salt and pillars of sand
I hear Jerusalem bells a ringing
Roman Cavalry choirs are singing
Be my mirror, my sword and shield
My missionaries in a foreign field
For some reason I can’t explain
Once you go there was never
Never an honest word
And that was when I ruled the world
It was the wicked and wild wind
Blew down the doors to let me in
Shattered windows and the sound of drums
People couldn’t believe what I’d become
Revolutionaries wait
For my head on a silver plate
Just a puppet on a lonely string
Oh who would ever want to be king?
I hear Jerusalem bells a ringing
Roman Cavalry choirs are singing
Be my mirror, my sword and shield
My missionaries in a foreign field
For some reason I can’t explain
I know Saint Peter won’t call my name
Never an honest word
But that was when I ruled the world
I hear Jerusalem bells a ringing
Roman Cavalry choirs are singing
Be my mirror, my sword and shield
My missionaries in a foreign field
For some reason I can’t explain
I know Saint Peter won’t call my name
Never an honest word
But that was when I ruled the world
July19
“Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness that most frightens us. We ask ourselves, Who am I to be brilliant, gorgeous, talented, fabulous? Actually, who are you not to be? You are a child of God. Your playing small does not serve the world. There is nothing enlightened about shrinking so that other people won’t feel insecure around you. We are all meant to shine, as children do. We were born to make manifest the glory of God that is within us. It’s not just in some of us; it’s in everyone. And as we let our own light shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others.”
http://www.youtube.com/watch?v=EkdgK3adrmw
June24
This is how my order from checksunlimited.com came to me. It looks like someone switched packaging on it. Wouldn’t be concerned, EXCEPT IT IS FINANCIAL INFORMATION WE ARE TALKING ABOUT.
All the check boxes were heavily damaged. One box was even missing the bottom!

The checks themselves are bent and the tops and sides ripped up.

It really looks like someone ripped the address label off of another package and taped it onto this one…

Even the seal was all taped up

May2
This is just a little demonstration of embedding Google maps into a website or blog. I just created a website for an upcoming event and wanted to give visitors directions from a local hotel to the event. To make it easier for everyone, I just embedded a Google map with directions on the “Directions” page.
More information from Google here
As a demonstration, if the event was at the University of Dayton, and my guests were staying at the Dayton Marriott…
Print this map
View Larger Map
However, so much more is possible with the Google Maps API. Matt Cutt’s (a favorite blogger of mine) made a great post about things you can do: http://www.mattcutts.com/blog/fun-with-zip-codes/
April14
As I have recently worked on two computers with multiple viruses (one literally reported 177 viruses found, the other only a mere 14), I wanted to make a note about Anti-Virus software. These two different relatives of mine both had computers that were un-usable, and asked for help to make it so their computers did not run so slow when they tried to use them. Were they ever suprised by the amount of viruses I found!
My antivirus software program of choice is AVG Free Anti-Virus. Mostly because while it is FREE, it is still very good. I used Symantec Anti-Virus (Version 10) for long period of time but had real problems with its sluggishness and responsiveness on my computer. It was OK (not great) when my laptop was XP, but then when I switched to Vista, it was a resource hog that noticeably slowed my computer down.
I think of AVG Free like I do Google Chrome. Fast, efficient, and loads quickly. I find those things important.
At any rate, if you do not have an anti-virus program on your computer right now, at least download AVG FREE and do a computer scan. You might be surprised by what you find.
What to do if you find out you have a virus:
- This may be a given, especially if you already know you have a virus, but make sure you have UP TO DATE ANTI-VIRUS software running on your PC. A lot of users think they have up to date anti-virus software, but really they only have the 6 month trial version of Symantec or McAfee, which while it runs after the 6 month period, offers you zero protection.
- Make sure to change all passwords you use on the web (of course only after the virus is removed). A common virus users have is a Trojan Horse which can log what passwords you enter and where you entered them and send that information back to a hacker.
- Make sure Windows has all of the latest updates. Go to http://update.microsoft.com/ (in Internet Explorer only unfortunately) until it tells you that you have no more updates to download and install. You should also set up Windows to update nightly on its own. That can be done with the Microsoft Security Center. While you are there, make sure the Windows Firewall is turned on (if you are not using a commercial firewall product).Make sure other programs you use, such as your web browser, email client (if not using web mail), etc are also up to date. Many viruses exploit flaws in web browsers and email clients as those are typically much easier to break than Windows itself.
- Stop doing things that help cause viruses, such as going to shady internet sites, opening email attachments from unknown sources, or downloading files. If you are using a program like Limewire or Bearshare… STOP. Not only are you probably downloading illegal files with those programs; programs like Limewire load tons of adware on your PC, not to mention the likely hood that files you download could have viruses in them. Oh, and the possibility of six figure fines, but I digress.
- Other than that… don’t panic. You can get a virus by just being connected to the internet. The most important thing to do is keep your computer up to date and protected. Happy internet-ing!
Sorry, there are no polls available at the moment.
March23

How did I do that?
Generating an image from text can be easy with PHP and GD. This requires GD 1.8 or higher.
Check out www.php.net for an exact description of the php functions used in this code. They are all pretty much built in GD functions.
Now the part that make this code great is that there is no temporary files saved on the server, it is all done in memory.
Save this code as generate_image.php
<?php
function trimLength($data,$len)
{
if(strlen($data)>$len)
{
$data = substr($data,0,$len);
}
return $data;
}
function filterText($data)
{
return preg_replace("/[^A-Za-z0-9.,\s\s+]/","",$data);
}
$text = filterText($_GET['text']); // remove all illegal characters
$text = trimLength($text, 60); // trim to sixty characters
if($text == "") { $text = "Text"; }
$font = 4;
$width = ImageFontWidth($font) * strlen($text);
$height = ImageFontHeight($font);
header("Content-type: image/gif;");
$im = @imagecreatetruecolor($width, $height)
or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 0, 0, 0);
$COULEUR_BLANC=imagecolorallocate($im,255,255,255) ;
imagefilledrectangle($im,0,0,$width,$height,$COULEUR_BLANC) ;
imagestring($im, $font, 0, 0, $text, $text_color);
imagegif($im);
imagedestroy($im);
?>
And then on the page you want the image created add this code
<img src="generate_image.php?text=The security code is 9999" alt="" />
February16
Dell.com has a great feature allowing you to check the warranty information on a dell product by using its service code.
If you have a system with a lot of dell computers, you can do is store all of the service tag codes and put them on a web page with an easy click-able link to see the warranty information. With some more work you can integrate it into a content managements system where a user could enter new service tags, disable tags that are no longer valid, and the tag links were automatically generated, etc.
Lets go with a simple example, of setting up a single static link. First setup a php file as follows named dell-warranty.php:
<?php
$code = $_GET['code'];
echo "<html>";
echo "<body ";
// validate code
if ( $code != "" )
{
echo "onload=\"document.getElementById('submitForm').submit()\"";
}
echo ">";
echo "<form id=\"submitForm\" name=\"frmServiceTagSelect\" method=\"post\" ";
echo "action=\"http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen\">";
echo "<input type=\"hidden\" name=\"logout\" value=\"\">";
echo "Service Tag: ";
echo "<input name=\"ServiceTag\" type=\"text\" id=\"ServiceTag\" maxlength=\"7\" size=\"30\" value=\"".$code."\"/>";
echo "<input type=\"submit\">";
echo "</form>";
echo "</body>";
echo "</html>";
?>
Then create a web page that has a link to the dell-warranty.php page and passes the service tag as an argument to the page. ie: <a href="dell-warranty.php?code=9999999">9999999</a>. When some one clicks a link on your web page it will automatically forward them to the dell website.
Below is a recreation of the form, enter your dell service code and click the check warranty button.
Sample Dell warranty form
February10
A quick snippet of C# code to process data in a thread, and update a status label on the GUI to show how far along in the process it is.
To use this code you just need a generic Windows Form C# application with a label control named “lblStatus” and a button control named “btnProcessData”. Additionall add a click event to the button:
In Form1.Designer.cs:
this.btnProcessData.Click += new System.EventHandler(this.btnProcessData_Click);
Form1.cs
using System;
using System.Threading;
using System.Windows.Forms;
using System.IO;
namespace ProcessData
{
public partial class Form1 : Form
{
private System.Threading.Thread _thread;
public Form1()
{
InitializeComponent();
}
public delegate void UpdateLabelTextCallback(Label box, string msg);
/// <summary>
/// Allows threads to update text on a label
/// </summary>
/// <param name="lbl"></param>
/// <param name="msg"></param>
private void UpdateLabelText(Label lbl, string msg)
{
lbl.Text = msg;
}
/// <summary>
/// Function that processes data
/// </summary>
private void btnProcessData_Click(object sender, EventArgs e)
{
lblStatus.Invoke(new UpdateLabelTextCallback(this.UpdateLabelText), new object[] { lblStatus, string.Format("Starting to process…") });
ThreadStart TS;
try
{
TS = new ThreadStart(ProcessData);
_thread = new Thread(TS);
_thread.Start();
}
catch (Exception E)
{
MessageBox.Show(string.Format("{0} {1} {2}", E.Message.ToString(), E.Source.ToString(), E.StackTrace.ToString()));
_thread.Abort();
}
}
/// <summary>
/// Function that processes data
/// </summary>
private void ProcessData()
{
int iMax = 10;
for (int i=1; i<=iMax; i++)
{
Thread.Sleep(500);
lblStatus.Invoke(new UpdateLabelTextCallback(this.UpdateLabelText), new object[] { lblStatus, string.Format("Processing {0} or {1}", i, iMax) });
}
lblStatus.Invoke(new UpdateLabelTextCallback(this.UpdateLabelText), new object[] { lblStatus, string.Format("Finished processing…") });
}
}
}