Posts Tagged ‘html’

SEO is a tiebreaker, nothing more

I’ve always been a skeptic of SEO “best practices.” A website that reminds me of this is titled “The Japan FAQ: know before you go.” Several years ago, I was marginally interested in what it would take to teach English in Japan. So I found this extensive website and read up. It’s one of those sites that someone started writing and just kept going at, with minimal navigation and loooooong pages. You get lost in the content, but you keep reading because it’s is full of anecdotes.

For some reason, I wanted to look up this page again, so I Googled “japan faq”. Lo and behold, it was the top hit. A peek at the source reveals this site follows almost none of the oft-quoted SEO practices necessary to get to the top. Some of the pages have two <h1> tags, some have none. The HTML doesn’t validate. There are multiple unclosed <body> tags. Some of the tags are capitalized, some pages don’t have any <meta> tags. There are <font> tags all over the place. It’s 1997-era tag soup at its finest.

This made me wonder about the quality of top-ranked pages for other search terms. So I began typing in terms at random:

  • japan
  • breast cancer
  • garlic
  • beethoven’s 5th
  • war of 1812
  • supernova
  • heroes
  • michael jordan
  • kung pao chicken
  • gardening

For each of these terms, I ran the top hit that wasn’t a Wikipedia page* through the W3C validator. Each and every page failed HTML validation. A few had clean CSS/tableless layouts, but most didn’t. Several pages had mysterious whitespace at the top. Many had inline styles and JavaScript. The top hit for Japan is a Flash animation with precious little content surrounding it. Several were missing DOCTYPE tags. When <h1>’s were present, they were cluttered with tags inside of them. Amongst these sites, practically every SEO “rule” was broken.

Yet they all rank very well in Google. This leads me to believe that SEO is nothing more than a tie-breaker in edge cases. It could be that your site is simply swimming amongst other edge case websites. However, sometimes it seems that for all of the effort people put into SEO, they would yield comparable results by getting people to talk about their website. Both interesting content and good old-fashioned interpersonal networking can help with that.

Valid markup can’t hurt though.

(* I’m excluding Wikipedia from the top pages as it’s the exception that proves my point: wikipedia.org’s overall pagerank is absurdly high because Wikipedia is ridiculously popular. The markup Wikipedia uses is largely irrelevant.)

Book Review: Joomla 1.5 Template Design

Packt Publishing recently sent me a review copy of Joomla 1.5 Template Design by Tessa Blakeley Silver. Since I read most of it away from my computer, I wasn’t able to work through the examples. While I can’t speak to how well the code examples matched the actual process of building the template, I did enjoy reading the book. Coming in at 259 pages before the index, this book has enough content to cover everything you need to know while not wearing out its welcome.

The strongest part shines in Chapter 2, where Tessa introduces her “Rapid Design Comping” technique. This markup-centric approach helps you get your typography and HTML right first, then goes back and creates accompanying graphics. By getting your basic HTML and CSS out of the way up front, you don’t run into issues where you’ve designed a layout in PhotoShop that doesn’t translate to the web. Her coverage of this method is easily worth the price of the whole book.

Another plus is that Tessa incorporates HTML and CSS validation as a part of your template design workflow. Although having valid markup does not guarantee that your design will display properly in all browsers, it does help you avoid many such inconsistencies from the outset. She also covers common browser hacks (mostly to accommodate Internet Explorer 6) and how to use them as sparingly as possible. Finally, she also dives into avoiding quirks mode rendering and how to handle inconsistent renderings of the box model.

Coverage of Joomla-specific code and techniques is extensive, including custom module chrome and template parameters. She includes a complete reference for all <jdoc:include /> tags, as well as CSS selectors output by the Joomla core. Joomla template-specific PHP is also explained, but without going too deep into code that might confuse people without a programming background.

Despite a strong foundation in the fundamentals of Joomla templating and HTML/CSS, the book does have faults. There are some places where Tessa states something pensively (for instance, date formatting in XML manifests on page 138) which makes you wonder whether or not she’s confident about what she’s describing. Conversely, her description of the Model-View-Controller design pattern is very confidently stated, but slightly inaccurate. Fortunately, she describes the relevant details of View overrides correctly. That said, a more consistent voice would make the book easier to read.

Less forgivable is the introduction of the jQuery JavaScript library in Chapter 8. While she does a good job of showing jQuery’s power and simplicity, not once does she mention that Joomla already includes MooTools. Worse, readers are not alerted to the fact that jQuery will clash with MooTools if you don’t add the proper workarounds. While I love jQuery as much as Tessa does (and perhaps more), I was quite shocked by the omission. It’s quite possible that Tessa hasn’t run into this conflict, but it does happen frequently.

Despite a few missteps, this book is a solid introduction to the ins and outs of building a template in Joomla. All of the standard syntax is covered, along with a practical overview of how to structure your HTML and CSS for optimal browser compatibility. Advanced topics are also tackled head on, making this book the most complete reference for building Joomla templates that I know of. If you need to build a template or are curious about the process, this book should definitely be on your shelf.

You can read a sample of the book from Packt’s website [PDF], or purchase the book there as well.

Basic HTML/CSS Invoices

Yesterday, one of my clients requested an invoice for my services. This is not an unreasonable request by any means, but it is oddly one that doesn’t happen very often. I initially fired up OpenOffice.org and started writing one, but had difficulty getting the layout I wanted. After OpenOffice crashed (I had an older version), I posted a message to Twitter. Suddenly I had friends suggesting FreshBooks, Zoho Invoice, Billable, and some homebrew solution. Many of these were good suggestions, but I was really just looking for a nice clean invoice template; I already have my own system for tracking hours and payments.

Unfortunately, I have a very bad case of NIH and decided to roll my own using HTML and CSS. Fortunately, it only actually took an hour and I’m quite pleased with the results. So pleased, that I’m now sharing the results for all of the Internet to plunder. Have a look. It is released under a Creative Commons Attribution-Share Alike 3.0 license, so feel free to modify it and use it for invoicing your clients. If you redistribute this in HTML form, please maintain the copyright notice in the comments. If the final medium is a PDF export for printing or emailing to a client, you do not have to maintain the copyright notice.

I created a PDF of this using my Mac’s “Save as PDF” function under “Print…” on Firefox 3.5 and it worked perfectly. Safari wanted to print headers and footers with the source URL and didn’t pick up my backgrounds. I have not tested this in Internet Explorer.

Enjoy!

Creative Commons License
Basic HTML/CSS Invoice by Joseph LeBlanc is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

Chinese New Year’s resolutions

In January, my New Year’s resolution was to make more resolutions today: Chinese New Year. Solely because Chinese New Year is more than a month later.

So here goes:

  • Go electronic/automatic with as much of my record keeping and business handling as possible. There are a lot of things I could be doing electronically but have still been doing on paper or through the mail. Also, I need to come up with a better system for handling recurring tasks and scheduling. If it comes down to it, I may end up with one of these or these. (sigh)
  • Rewrite the Daily Message tutorials, Podcast Suite, iWebCal, and my book to catch up with Joomla! updates. The latter should come out first.
  • Validate all of the markup on jlleblanc.com. Last year, I finally got on the whole semantic web bandwagon and haven’t fallen off yet. What was the catalyst for all of this? jQuery. When I saw how it was all CSS selector-based, DOM programming and the benefits of validated markup simultaneously made sense. The pursuit of validation is also helping me maintain Section 508 compliance at work.
  • Blog more and worry less about writing essays. When I started blogging, I actually wanted to start a site where I would keep a repository of opinions on specific topics, refined over time. This doesn’t really seem to work as people are much more familiar with off-the-cuff blog posts.
  • Incorporate.
  • Launch a major web-based service. Oh, so you’d like to know what’s cooking at Chez LeBlanc? You’ll just have to wait and see ;)