Email Problems…

Just wanted to let everyone know that I’m pretty much missing every single email from last night to tonight (Friday), gmail must be backed up or something. Usually when things come late, they arrive with a day so if nothing has come through by tomorrow then I will provide another address. I apologize if you’ve been waiting for a reply all day.

I will leave AIM open all night/day for those who need to send a message. AIM user: botskonet

Six Months of Freelance

I’ve been doing various forms of web design and development for ten years, although it was mostly just a hobby or a business on the side. In 2005 I began working hard to set myself up for an eventual transition into doing this full-time. Ironically, I began doing this full-time when I was least expecting to, despite all of my work. It’s been six months since I made the transition, so I figured it would be a good time to share some of the things I’ve learned.

1. Always Follow Up

I always try to keep in constant communication with clients - it helps me keep the project fresh in my mind as well as theirs. Sometimes I follow up and they’re reminded that they still need to do something - like pay. It works well with clients, but even better with leads. When I follow up with leads it has that “reminder” aspect, but it also shows that I provide everyone the same level of consideration and communication.

2. Know Yourself

When I began working at home I would become focused on watching TV, stepping outside, eating, cleaning, going through old magazines, playing games, etc. I’m a person who really needs to separate work and home life, so I moved myself into an office. There is absolutely nothing to do in the office except work. I keep an ever-changing list of tasks for each project on a giant white board, and I really don’t have any standard way to track projects as they’re all so different.

This situation works well for me because I’ve learned that’s what my brain handles best. You may be more efficient and more productive working at home without anything written down. The key is to learn what works best for you and to adapt your life to accommodate those needs. Once you’ve found the best method to make yourself productive, you’ll really start seeing the work get done.

3. Play

You need to force yourself to stop working. Around 11:30 or noon I wrap up whatever I was working on and shut everything down and I play a game or surf the internet. It gets my mind off of work, gives me some time to have fun, and it really helps break up the day. Having something in the middle of the day to look forward to also helps me get to work in the morning.

If I convince myself that I can play for a half hour if I do several hours of work, I’m pretty eager to get started knowing I have a “reward” coming. Even to this day I feel guilty taking time to play because I know how much work there is. Now that it’s my business I’m much more concerned about how much money is coming in, and time is money. You just have to learn that a bit of a break is required.

4. Don’t Assume

I’ve always loved the saying ‘when you assume you make an ass out of ‘u’ and ‘me’”. Never assume that you know what your client wants, because you’ll waste time doing the wrong thing. Never assume that a quick and extremely easy change works fine and doesn’t require testing, because something that’s connected will fail and cause problems. Never assume that you don’t need a file, a document, or an email, because right after you delete it you’ll realize why you need it. This last point is the basis for the final tip…

5. Keep Everything

Keep every email, every attachment, and every document. Keep any password you ever have (securely of course), keep all of the materials sent to you for a project. Keep all of your files, and if possible, keep as many revisions as possible. Keeping this much information is a waste of time if you’re not backing it up.

For example, my data is backed up once a day to two machines - one machine at work and one at home. No matter what I need I have access to it, whether it’s a logo graphic someone sent me six years ago or an ftp username/password for a current client. Keeping everything just saves you a lot of time and energy if anything is lost, in question, or needs fixing.

Plus, it’s embarrassing to go back to a client asking for something a second time.

Anyway, it’s been a great six months! Here’s to another six!

Tech-Tidbit: Altering Primary Keys in MySQL

I’ve come to design every database table with an auto-increment id field that is a primary key. However, sometimes I work on projects where tables have no such column and may have duplicate rows. In order to drop the existing primary key definitions I run:

[mysql]
ALTER TABLE mytable DROP PRIMARY KEY;
[/mysql]

Then, I add a new one:

[mysql]
ALTER TABLE `mytable` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;
[/mysql]

Tech-Tidbit: HTML Entity to Decimal Translation

It became necessary this week for me to find a way to convert html entities into their decimal equivalents. I’m not very fond of dealing with character encoding and entity issues but I was finally able to get things working. In the end we modified data within the database which meant I wouldn’t get to use this script, but it was a very nice find.

The nice thing about this is that it leaves any existing decimal-format characters alone, and properly translates html entities to the decimal format.

After searching the net for a while I found a piece of code that seemed like a good solution. The original needed a bit of cleanup and tweaking, but here it is:

[php]
function htmlentities2unicodeentities ($input) {
$htmlEntities = array_values (get_html_translation_table (HTML_ENTITIES, ENT_QUOTES));
$entitiesDecoded = array_keys (get_html_translation_table (HTML_ENTITIES, ENT_QUOTES));
$num = count ($entitiesDecoded);
for ($u = 0; $u < $num; $u++) {
$utf8Entities[$u] = '&#'.ord($entitiesDecoded[$u]).';';
}
return str_replace ($htmlEntities, $utf8Entities, $input);
}
[/php]

You can test the translation with this:

[php]
$test_strs = array('Kūlob', 'Kópavogur');

foreach($test_strs as $test_str){

print 'ORIGINAL: ' . $test_str . '
‘.”\n”;
print ‘TRANSLATED: ‘ . entities_to_unicode($test_str) . ‘

‘.”\n”;

}
[/php]

If you’re interested in converting things the other way around, good luck. I’ve been searching around for a while and I just can’t seem to find anything that works well enough without using some long array to translate things. Let me know if you find one!

Tech-Tidbit: MultipleIE

I’ve been using VMWare so that I can test IE6 as well as IE7 (which is the default on my actual machine). VMWare takes a lot of system resources, and with the laptop I use at the moment, it requires a few items to be closed so that it will work properly. I’ve read about several manual hack-ish methods of getting both versions of IE to work on a single machine but I just didn’t want to bother with all of that.

Enter MultipleIE.

An excellent system that allows me to install multiple versions of IE at the click of a button. I no longer support IE5.5 or it’s predecessors, so I just installed IE6. It works very well! I’ve noticed that it shares it’s location bar history with IE7, but they render things as you would expect each to.

Thanks to one of my development partners for pointing me to that.