April 16, 2003

copious amounts of code

Computers are pissing me off right now and I need to rant and rave a little bit about the trials and tribulations of web design. I know this rant will alienate 99.9 percent of my readers, but you can make it more interesting by pretending I’m ranting about ladies or something. Actually, that might make this a lot more fun. Fun, like riding the Tilt-A-Whirl fourteen times in a row without waiting in line, fun.

Ok, so I started building webpages with Dreamweaver, which I am still using for lack of a better program. Now, my ultimate goal with web design is a complete separation of content and presentation, where I will use the HTML code only for content, leaving an external cascading style sheet responsible for all layout. The site Squidfingers is a great example of this separation. Go to the bottom of the page and click DISABLE CSS. Boom. Notice how bland the page suddenly becomes? To web design geeks like me, that’s like watching her clothes tumble to the floor. Seeing that results in a coding orgasm.

The problem with visual web design programs like DW is that they can only show a reasonable approximation of what the page will look like in the user’s actual browser. Many times your best efforts in laying things out all nice and snazzy on the screen with be smoked like so much bad ganga in IE, Opera, Mozilla or Netscape. After getting some quality time with web design under your belt you start to realize what layouts you can get away with, and which ones will be problematic.

DW writes decent HTML code, and you can customize its automatic templates to write code that is one step closer to being XHTML certified. This is good for the content end of web design. Dreamweaver also has a nifty feature that lets you easily corral data in invisible tables and cells, and make it all look pretty. This is good, but the use of tables conflates content and design by using cells to decide where the content will be displayed. What Squidfingers is doing is using a stylesheet to determine how everything should look, not tables. When you disable CSS you are seeing the stark plain HTML code, the content.

DW has CSS support and integration, but it writes really sloppy CSS code. Really sloppy. It plays fast and loose with border code, isn’t consistent with whether it’s dealing with “margin-right: 10px” or “margin: 0px 10px 0px 0px” and doesn’t produce code that is at all considerate towards human intervention (read, no linebreaks). I always find myself handwriting and editing my CSS outside of DW just to keep its grubby hands from farkin’ up my code. DW doesn’t even display CSS correctly in the layout view, so I need to guess and keep refreshing the page in a browser window until it looks right. Really, because of this whole mess I can hardly use Dreamweaver anymore for the design end of web design.

Also, DW has a template function which is useful for generating multiple pages that all need to look the same, but doing so and still using tables results in minor inconsistencies across pages. The only way to ensure complete consistency is to use server side includes to paste separate static title and menu files into the HTML when the page is accessed, or to eliminate tables entirely and corral all content using one style sheet. This can be done using server side includes or PHP, but both are still outside my realm of knowledge.

Really, all I need DW for is managing links across my pages, and updating them as I shuffle stuff around… but doesn’t even do that very well. I usually structure my sites by directory, using an index.htm file in each directory that the browser should default to when it follows a link to that content. All my internal links are similar to “writings/” or “../about/”. I don’t use stuff like “writings/index.htm” so my site will be forward compatible in case I start using index.shtml or index.php. So long as the browser points only to the directory it will always find the appropriate index file.

But DW thinks it’s so smart it reformats my links by taking off the last backslash. That’s bad form, as this alteration tells the browser to look for a FILE called “writings”, and only failing that does it look for a FOLDER called “writings”. The last “/” saves time by taking the user directly to the index file in the appropriate directory. It’s a minor grivance in the grand scheme of things, but one I find so very frustrating because I know I can write better code than that by hand.

With that, I’m currently looking for a web design program that is code-centered (but still holds my hand a little bit through proper grammar and closing tags), has tight integration with cascading style sheets, and manages my hyperlinks and directory structure without being babysat. If anyone knows of such a thing (or a perpetual motion machine or a cold fusion reactor or a cross-polarized energy shield or a flying car or a jet pack or three) please drop me a line.

UPDATE: Additionally, Zeldman offers insight into the current state of XHTML 2 standards. The general conclusion? If you don’t write your own code and you’re a sadist, dive right in. If you hand code and you want to keep your fingers wrapped around a few stray wits, duck your head and wait for the damn thing to blow over.