Archive for the ‘projects’ Category

Cartooned myself

Friday, May 1st, 2009

I used to draw a lot.  Unfortunately it’s all too rare these days.   When I do, it’s exciting, but always a little like starting over again.

Today I put Wacom pen to tablet again.  I thought the results were sharable.  It is a cartoon of myself as my alter ego for his website.

I didn’t bother removing the beer belly; I think it adds character.

Included a couple of the early stages as well.  That way, if you think the end product is bad, at least you know at some point it was even worse.

Twitter is good for something

Sunday, February 8th, 2009

Good news. I don’t obsess over my 353 feeds anymore.

Bad news.  Now I just skim them to get material for my latest obsession, Twitter.

As of now, 2,398 wonderful people follow me.  Each day I look for more people to follow.  Each day I unfollow unfollowers.

Why are so many people following me?

  1. They want me to follow them.
  2. I contribute often and try to not be annoying.
  3. I follow lots of new people every day.

(more…)

Recording myself talking is fail

Saturday, November 29th, 2008

The keyboard is my friend.  Coding is a blast.  I can email for days.  Typing this blog entry is easy.  My Facebook friends might even mistake me for an extrovert. (more…)

Coding email templates

Saturday, November 22nd, 2008

I’ve written a couple email engines in my day – one in PHP and one in ASP – to integrate and automate businesses with email marketing.  Work to be proud of, indeed. Invariably after the engine part is done – or maybe you’re using an established service* for the engine part – there needs to be some content, some email design.

*Examples of consumer email marketing services (”engines”) using email templates and data merging:

Templates are for branding

HTML templates need to be made so the emails that are received are branded – at least with a logo and company colors.  This is not possible with a plain text email of course.

Merging process

The engine will take the templates and merge in some variables like “first name”, “email to”, “email from”, etc – a basic find-and-replace loop.  The HTML template will contain placeholders for each variable – strings like “{#EMAIL_TO#}” – and the loop will replace those with values from the database, then send the post-merged email to that person in the mailing list.

Email formats

There are many ways an email can be formatted such as “quoted-printable”, “text/plain”, and embedded images, but my focus is on “text/html” with linked images.  Here is a handy site that can convert static HTML into quoted-printable format, and back.

Images

The images will be stored on a server and referenced like any other web page would reference images.

Privacy and missing images

Some email viewers like Gmail tend to hide images that link back to a server, and the user has to click a “display images” link to see the email as it was intended.  This is a privacy feature because images that link back to the server provide the sender with a method for tracking who opens the email.  The log can be parsed to see who requested the image when the email was viewed.

We need to make the design look good even if all the images are missing.

alt attribute

For this reason, be sure to fill your image tags with good descriptive “alt” values so those users still know what they’re not seeing.  Putting “please display images”  in the “alt” attribute is a consideration, but might also be a flag to the program that the message is spam.

Tables

Today web designers use style sheets instead of tables for positioning content.  CSS-heavy, un-tabled code may be a good idea for modern web sites, but not for HTML email templates.  Email templates rely primarily on tables for positioning content, making columns, aligning text, etc.  This is simply because the email could be viewed in any number of applications, with a high likelihood of poor CSS support, even in modern email clients such as Outlook 2007 (whose rendering engine is Word, of all things).  Tables are “old school” web design, and so are email templates.  Being a CSS guy, I just have to suck up that reality.

Put CSS in style attribute

This isn’t to say that one should abandon CSS in email templating altogether.  In fact, feel free to use the “style” attribute – just back it up with the non-CSS way too, as insurance.

If the cell needs a background, use “style=background:url(some image path)” in addition to “background=(some image path)”.  If the font needs a color, use “style=color:red” in addition to “<font color=#ff0000>”.

Go attribute-crazy

The more attributes each table cell has, the better.  Don’t forget attributes such as “height”, “width”, “background”, “bgcolor”, “align”, “valign” and even CSS’s “style”.  You’ll thank yourself when testing in even the latest browsers and email clients.

Always use the “align” attribute in cells with text.  I can’t tell you the numbers of times I’ve seen Internet Explorer “center” text that “left-aligns” in Firefox. Setting “<td align=left..” fixes this.

Stay aware of the design affects of merging in variable data that could reflow text and images.  When columns are growing and shrinking with variable content, and you want the content to “top-align,” use “<td valign=top..”.  Otherwise there tends to be rarely-desirable vertical centering.

Variable images

If your variable images are variable sizes, heaven help you.  If necessary resample all the variable images – perhaps with ImageMagick – to give them the same widths or heights – whichever dimension flows best in your design.  Whatever table cell is containing your image should still have the height and width set.

spacer.gif

A spacer.gif is a 1×1 transparent GIF that can be resized to enforce the size of an empty table cell.

Remember those?  You’ll wanna pull those out from the back of the toolbox to help pad your tables.  Tables + spacer.gif is the “old way” but it’s the “right way” when it comes to making email templates.

If I have an email with 2 columns and padding in between, I will use a 3 column table with all cells’ widths, aligns, valigns set, and put a spacer.gif in the center “padding cell” that is the same width as the padding should be.  The height of the spacer.gif can remain 1px.

Spanning

If you find yourself using “colspan” or “rowspan”, don’t.  Instead, nest tables.  It’s sounds like such a naughty thing to say, but that’s the most dependable way to go.  Go nested-table crazy! We can’t give the cell dimensions any leeway.  Spanning cells tends to produce more random cell dimensions than the predictibility of nested tables.

Table setup example

Here’s a good set up for a centered, 650px-wide table.

<table cellspacing=”0″ cellpadding=”0″ border=”0″ align=”center” width=”650″>

“cellspacing”, “cellpadding” and “border” need to be set. Assume nothing about any dimension.  Be explicit everywhere.

Testing

Don’t forget to test in multiple browsers, and multiple email clients. This is where we see how necessary all the excessive table markup was.

Here’s a few email clients to consider:

  • Outlook 2007
  • Older Outlooks
  • Gmail
  • Yahoo Mail
  • Apple Mail
  • Hotmail

Just because the email client is web-based doesn’t mean it is just as CSS-compatible as a you’d expect.  Sometimes the CSS is rewritten to prevent style conflicts with the web page it is presented in.  We would hope that the rewriting will not be harmful to your CSS, but I wouldn’t bet on it.  Best to take the hybrid route so we won’t have to worry about it.

Conclusion

Email template design is an aging art with the advent of Web 2.0 social marketing tools, but it still reaches the most people wherever they may be online.  Deploying age old web design techniques is still the best way to code an email template so that it looks the same in most people’s email clients.

vanturtle.com has moved… HERE!

Saturday, November 1st, 2008

Thanks for following me over to the blog’s new home HERE at davidvanvickle.com/blog!

This is a transition from wordpress.com to wordpress.org’s blog software.  This allows me to use my home page’s theme for free, further consolidating my domains.

This is my first step into wordpress theme work.  I downloaded a theme and just started editing it until it looked like davidvanvickle.com.  Wordpress has made using their software a pleasure.  Nice work guys!

Timeline of stuff I am into

Wednesday, October 29th, 2008

I dream up, design, build, deploy and maintain web-based tools and web sites using these tools. So much fun in so little time.

Timeline of stuff I am into.

Quick Links: Social Networking | Web Programming | Web Design | Art

Ranking, Blog Code, Custom Search, Firefox Add Ons

Saturday, September 20th, 2008

Improving your site’s Alexa Rank and Google PageRank, showing code in your blog posts with syntax highlighting and line numbers, creating a custom Google search box for your website, surviving and thriving in Google Reader using PostRank, and exploring Firefox addons for web developers including GreaseMonkey and Web Developer.

Source code in blog posts:

Ranking:

Google Custom Search

Toolbars:

Firefox Add Ons:

jQuery Experimenting:

Flames and Avatars

Friday, September 5th, 2008

“What’s up with the flames in your header?”

Beats me.  Every time I mix Beer + Internet + Photoshop, something on screen catches fire.  Listening to heavy metal probably didn’t help either.

“Hey, you have one of those avatars I’m seeing everywhere.  How can I make one?”

http://www.faceyourmanga.com/

If you make your own avatar, post a comment with a link to it here.  I’d love to check it out.

Van Turtle Blog Design - Sep 2008

Van Turtle Blog Design - Sep 2008

Re-designed my site again – new for August

Sunday, July 27th, 2008

I redesigned my site.  Again.  Come visit.  A blue gray theme (by me) and unified the tutorial pages.

dvvcom 200808

David Van Vickle – Web Developer, Web Designer, PHP, Javascript – Orange County, Ladera Ranch, California

Windows machine down – Apple guy to the rescue!

Sunday, July 20th, 2008

I had another chance to repair a Windows XP computer for a family member.  First thought: “why aren’t they using Macs, darn it.”  Second thought: “at least I’m not washing dishes”.

It’s odd that I’ve been labeled a “Windows repair guy” since I’m really a Mac guy.  I have never owned a Windows machine.  I have owned Apple computers exclusively for the last 26 years.  I learned to use the Windows OS on the job, where this crap is the norm.

When Windows-using relatives inevitably started having trouble, I just took my best shot.  Unfortunately I was having enough success to get a good reputation.

Maybe, in the name of progress, I should act like their machines are hopelessly broken, and offer to join them on a trip to the Apple Store.  Well, not this time.  May as well get going so maybe I’ll have some sense of accomplishment tonight.

This time the symptoms were more extreme than the usual “my computer is running slow” issue.  This time, when the user clicked any EXE file, the system would, instead of trying to load the file, load AOL and try to have AOL open the EXE.  That’s not right at all.  Is this what happens when the registry is corrupted?

Then a program named shellmon.exe would start and take up 100% CPU, effectively freezing the computer.

What is shellmon.exe?  Google search results suggested that shellmon.exe is associated with later AOL installations.

Control-alt-delete to the rescue.  End shellmon.exe process.  CPU goes back to normal.

But don’t touch any apps.  EXE’s are all mis-loading.  The command prompt couldn’t be loaded.  Notepad couldn’t be loaded. No exe would do anything besides load AOL, which in turn loaded the CPU-maxing shellmon.  The scene was looking like a total reinstall, lost cause.

What started all this?  “I was just going about my normal business, and suddenly nothing worked anymore.  One time the computer told me that the index file was corrupt.”

I’m not sure what the “index” is.  Maybe it was the registry complaining?

I’m guessing a virus overwrote a couple system files.

It was time to save what I could from “My Documents”, and reinstall Windows XP.

Apple Time Capsule came in handy.  It has a Samba server, so a Windows machine can connect to it.  The Windows machine’s wireless adapter was completely unresponsive, so I just connected an ethernet cord between the Windows machine and the Time Capsule.

Fortunately AOL lets you do everything from www.aol.com now.  AOL users who have a different ISP don’t have to load AOL software.

AOL software complicates “normal” Windows troubleshooting, at least for me.  It likes to overtake the machine.  It has it’s own way of handling network and “security” issues.

AOL has a hopeless situation on their hands.  They have no power users.  Their customer support would be my worst nightmare.  The customers just get to blame AOL, regardless of whether it’s their fault.  AOL jumped on the train wreck that is a virus plagued Microsoft and Dell, and is expected to fix it all.  Poor AOL.

Anyway, this user just needs email and games.  So I suggested not reinstalling AOL.  Just learn to use AOL’s web-only interface.  So I reinstalled Windows, went through all the system updates, loaded Firefox, then had him practice using the web interface.

The wireless adapter driver was tricky.  I tried to add it in the “Add hardware” control panel, but it never even saw the hardware.  I loaded the latest drivers for it but no response from the adapter.  Maybe it was a bad PCI slot.  I shut down the system, unplugged the adapter card and tried a different slot.  I tried 2 different ones before Windows finally said “you’ve got new hardware”, and I was able to navigate to the newly installed INF file.  So once that was done, the adapter software interface came up, and I could see the local wireless networks.  Yay.  I unplugged the ethernet cable and considered the job done.

Another satisfied customer/relative.

And just as I’m wrapping this up, I get ANOTHER relative calling about AOL and Windows issues.  Seriously, people.  I need to start charging.