<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5689988094044153010</id><updated>2012-02-16T06:28:24.318-05:00</updated><category term='seo'/><category term='standards'/><category term='eclipse'/><category term='firefox extensions'/><category term='css'/><category term='tools'/><category term='user behavior'/><category term='view from the trenches'/><category term='web 2.0'/><category term='usability'/><category term='the hard way'/><title type='text'>EricDeLabar.com</title><subtitle type='html'>A professional blog about Web 2.0 including CSS, Semantic HTML, Accessibility, JavaScript, Ajax, and Prototype.js</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-6548254238267658522</id><published>2007-03-08T15:19:00.000-05:00</published><updated>2007-03-08T17:18:25.759-05:00</updated><title type='text'>Blog Envy</title><content type='html'>&lt;p&gt;Is it a conflict of interest to publish a blog about proper web design techniques in blogger?  I can't deal with this theme anymore.  I'm off to hack up &lt;a href="http://trac.typosphere.org/"&gt;Typo&lt;/a&gt; to do what I want...hope to be back soon, most likely at &lt;a href="http://www.ericdelabar.com/"&gt;http://www.ericdelabar.com/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-6548254238267658522?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/6548254238267658522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=6548254238267658522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6548254238267658522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6548254238267658522'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/03/blog-envy.html' title='Blog Envy'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-6412200155794016755</id><published>2007-03-06T12:25:00.000-05:00</published><updated>2007-03-06T16:35:05.062-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='user behavior'/><category scheme='http://www.blogger.com/atom/ns#' term='view from the trenches'/><title type='text'>A View from the Trenches — Usernames</title><content type='html'>&lt;p&gt;I recently finished a "Members" section of a website for a local non-profit.  The primary user base was small, (less than 100) so I didn't spend a lot of time on building a robust user management system.  Basically, a user would access the site, request a login by entering a username, password, confirm password, first name, last name, phone number, and email.  After which an admin user (i.e. yours truly) would be notified, log in to the site and approve the account if they knew the user.&lt;/p&gt;
&lt;p&gt;Here's where it gets interesting.  Of the 10 users that have signed up so far, 5 of them have used a space character in their username.  Is it a problem?  No, not in this instance, but I found it to be interesting user behavior.  I personally have not tried to use a space in a username in as long as I can remember, but I can't tell you why.  I would assume that a long time ago when I created my first online account, (an AOL screenname if I remember correctly) a space was simply not allowed.&lt;/p&gt;
&lt;p&gt;So what's the point?  Simple; users do things you may not expect, and you may not expect things for not-so-valid reasons. (Face it, how AOL did things in the mid 90's is probably not a best practice.)&lt;/p&gt;
&lt;p&gt;On a related note, 3 of the 5 members who used a space character in their name have already "forgotten" their username; they actually didn't forget it, they just misunderstood the username field to be a full name field, and simply entered their full name on the registration form, and then didn't know what to enter in the login form.  So, the next build of this site will feature much more descriptive, &lt;a href="http://www.corkd.com/signup" title="Cork'd is an online wine-reviewing community with a particularly usable (and witty) registration form."&gt;cork'd&lt;/a&gt;-like forms, in hopes of solving these problems in the future.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-6412200155794016755?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/6412200155794016755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=6412200155794016755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6412200155794016755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6412200155794016755'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/03/view-from-trenches-usernames.html' title='A View from the Trenches &amp;mdash; Usernames'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-6978026009964895478</id><published>2007-03-05T20:59:00.000-05:00</published><updated>2007-03-06T11:34:50.578-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='the hard way'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS Things I Learned The Hard Way — Absolute Positioning</title><content type='html'>&lt;p&gt;While there's no substitute for learning something by first making all of the mistakes, it doesn't hurt to learn from somebody else's.  In today's issue, we're going to talk about absolute positioning.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;absolute&lt;/strong&gt;&lt;br/&gt;The element's box is laid out in relation to its containing block, and is entirely removed from the normal flow of the document. The containing block of the absolutely positioned element is the nearest ancestor element with a &lt;code&gt;position&lt;/code&gt; other than &lt;code&gt;static&lt;/code&gt;.  If no such ancestor exists, then the containing block is the root element of the document.&lt;/p&gt;
&lt;cite&gt;&lt;a href="http://meyerweb.com/" title="Eric A. Meyer, CSS Guru"&gt;Eric A. Meyer&lt;/a&gt;. &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FCascading-Style-Sheets-Programmers-Reference%2Fdp%2F0072131780%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1173193901%26sr%3D8-2&amp;tag=ericdcom-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"title="If you don't have this book already, you MUST buy it.  This is THE cascading style sheets reference."&gt;Cascading Style Sheets 2.0 Programmer's Reference&lt;/a&gt;.&lt;img src="http://www.assoc-amazon.com/e/ir?t=ericdcom-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;California: Osborne/McGraw-Hill, 2001.&lt;/cite&gt;
&lt;/blockquote&gt;
&lt;p&gt;In truth, the solution was in front of my face the entire time, I just never understood it! (Or possibly I just skimmed the paragraph and only read the first sentence, but that's a different issue altogether!)  The problem I was seeing was that my absolutely positioned (&lt;code&gt;position: absolute; top: 0; left: 0;&lt;/code&gt;) element was appearing in the upper left of the viewport, not the upper left of its containing element.&lt;/p&gt;
&lt;p&gt;The simple solution was just to set the &lt;code&gt;position&lt;/code&gt; property of my containing element to &lt;code&gt;relative&lt;/code&gt;.  This is a valid solution because a &lt;code&gt;relative&lt;/code&gt;ly positioned element behaves exactly like a &lt;code&gt;static&lt;/code&gt;ally positioned element, except that the position properties (&lt;code&gt;top&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt;, &lt;code&gt;bottom&lt;/code&gt;, and &lt;code&gt;left&lt;/code&gt;) are used to offset the element by the specified amount.  So, as long as the position properties are left with their default values, to make a container element, all you need is &lt;code&gt;position: relative&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-6978026009964895478?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/6978026009964895478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=6978026009964895478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6978026009964895478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/6978026009964895478'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/03/css-things-i-learned-hard-way-absolute.html' title='CSS Things I Learned The Hard Way &amp;mdash; Absolute Positioning'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-1203638627656493048</id><published>2007-03-04T20:45:00.000-05:00</published><updated>2007-03-05T13:14:10.847-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Let's talk about tools — Part 2</title><content type='html'>&lt;p&gt;Continuing our &lt;a href="http://blog.ericdelabar.com/2007/02/lets-talk-about-tools-part-1.html" title="Let's talk about tools &amp;mdash; Part 1"&gt;thread on tools&lt;/a&gt;, we're now going to have a look at setting up a simple test server environment.&lt;/p&gt;&lt;p&gt;As I explained last time, I typically develop on a Windows and Linux, so I prefer a tool that works well on both platforms. Coming from a Java development background, there is one tool that meets this requirement, and more; and as you may or may not know, works with more than just Java.  That tool is of course, the &lt;a href="http://www.eclipse.org/"&gt;Eclipse Framework&lt;/a&gt;, a Java-based development platform.&lt;/p&gt;&lt;p&gt;Out of the box, Eclipse provides the hooks necessary to support helpful features such as syntax highlighting and code-completion; with the help of a variety of plug-ins you can very easily enable these features for Ruby, PHP, Perl, C, or pretty much whatever language you prefer to develop in. For this tutorial, we're just going to get the basic &lt;abbr title="HyperText Markup Language"&gt;HTML&lt;/abbr&gt;, &lt;abbr title="Cascading Style Sheets"&gt;CSS&lt;/abbr&gt;, and JavaScript editors installed and configured.&lt;/p&gt;&lt;p&gt;Start off by &lt;a href="http://www.eclipse.org/downloads/"&gt;downloading the latest version of the Eclipse Framework&lt;/a&gt;, at the time of this writing, that was 3.2.2.  To install it, simply unzip it to your hard drive; to make your life easier, drop it in the root of a drive (i.e. &lt;kbd&gt;c:\&lt;/kbd&gt;). (Make sure you have a JDK/JRE installed, if you don't, grab the &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;latest from Sun&lt;/a&gt;.) Once installed, start it up by running &lt;kbd&gt;eclipse.exe&lt;/kbd&gt; (just press OK at the Workspace Launcher prompt for now) and go directly to the &lt;kbd&gt;Help &amp;gt; Software Updates &amp;gt; Find and Install...&lt;/kbd&gt; menu.  Select the &lt;kbd&gt;Search for new features to install&lt;/kbd&gt; radio button and press &lt;kbd&gt;Next &amp;gt;&lt;/kbd&gt;.  Check the box to search the &lt;kbd&gt;Callisto Discovery Site&lt;/kbd&gt; and press &lt;kbd&gt;Finished&lt;/kbd&gt;.  On the next screen, expand the &lt;kbd&gt;Callisto Discovery Site&lt;/kbd&gt; node, and then expand the &lt;kbd&gt;Web and J2EE Development&lt;/kbd&gt; node.  Check the box for the following nodes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;kbd&gt;Graphical Editors and Frameworks&lt;/kbd&gt;&lt;ul&gt;&lt;li&gt;&lt;kbd&gt;Graphical Editing Framework&lt;/kbd&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;kbd&gt;Models and Model Development&lt;/kbd&gt;&lt;ul&gt;&lt;li&gt;&lt;kbd&gt;Eclipse Modeling Framework (EMF) Runtime + End-User Tools&lt;/kbd&gt;&lt;/li&gt;&lt;li&gt;&lt;kbd&gt;XML Schema Infoset Model (XSD) Runtime + End-User Tools&lt;/kbd&gt;&lt;/li&gt;&lt;li&gt;&lt;kbd&gt;Java EMF Model&lt;/kbd&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;kbd&gt;Web and J2EE Development&lt;/kbd&gt;&lt;ul&gt;&lt;li&gt;&lt;kbd&gt;Web Standard Tools (WST) Project&lt;/kbd&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Read and accept the license agreements and press &lt;kbd&gt;Next &amp;gt;&lt;/kbd&gt;.  Press the &lt;kbd&gt;Finish&lt;/kbd&gt; button, and let it do its thing.  If you receive a Verification window, press the &lt;kbd&gt;Install All&lt;/kbd&gt; button.  When prompted to restart Eclipse, select cancel, and close Eclipse.  Congratulations, Eclipse is installed and now we're ready to install &lt;a href="http://www.apache.org/httpd/"&gt;Apache HTTP Server&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You may be wondering why it's necessary to install an &lt;abbr title="HyperText Transfer Protocol"&gt;HTTP&lt;/abbr&gt; server when you can open an HTML file directly from the file system in most browsers.  The simple answer is because this is a development environment and the code you produce locally should run on the server without modification.  With some site file system layouts, paths, such as those to images or stylesheets, may be different on the server compared to your local machine, especially if using URL rewriting techniques.  As a benefit for more advanced users, you can also configure apache to run PHP, Perl, or the server side language of your choice.  Now, back to our tutorial.&lt;/p&gt;&lt;p&gt;First, &lt;a href="http://httpd.apache.org/download.cgi"&gt;download the latest version of Apache&lt;/a&gt;. (We're assuming you're on Windows here, if you're using an alternative &lt;abbr title="Operating System"&gt;OS&lt;/abbr&gt;, this exercise is left to you...)  At the time of this writing, the best version is 2.2.4 and Win32 Binary (&lt;abbr title="MicroSoft Installer"&gt;MSI&lt;/abbr&gt; Installer) is probably the easiest to deal with.  After it's downloaded, run the installer.  The install process is pretty standard; for server information you probably want to use &lt;kbd&gt;localhost&lt;/kbd&gt; for your Network Domain, unless your desktop has a fully qualified domain name, and your machine name for Server Name, on the Server Information screen.  From that point, the Typical install will probably do just fine.  When it's finished, Apache will be conveniently started, and you'll be ready to move on.  To test your result, load up a browser and check out: &lt;a href="http://localhost/" title="A link to the local machine, which by now is hopefully running Apache HTTPd"&gt;http://localhost/&lt;/a&gt;; if it worked, your browser will display an oh-so-descriptive page stating "It works!" Now that you have a working web server, let's create a convenient shortcut to open Eclipse in the &lt;kbd&gt;htdocs&lt;/kbd&gt; directory of Apache.&lt;/p&gt;&lt;p&gt;Browse to your Eclipse install directory (probably something like: &lt;kbd&gt;c:\eclipse&lt;/kbd&gt;) and right-click on &lt;kbd&gt;eclipse.exe&lt;/kbd&gt;.  Choose &lt;kbd&gt;Create Shortcut&lt;/kbd&gt; from the context menu.  Rename it to "Apache HTTP Server Workspace" and drag it someplace convenient (like your desktop.)  Right click on the Shortcut and change the Target field to look something like this: &lt;kbd&gt;&lt;i&gt;C:\eclipse\&lt;/i&gt;eclipse.exe -data "&lt;i&gt;C:\Program Files\Apache Software Foundation\Apache2.2\&lt;/i&gt;htdocs"&lt;/kbd&gt;, where the italic text is replaced by your Eclipse install directory and Apache install directory respectively. Press &lt;kbd&gt;OK&lt;/kbd&gt; to save your changes.  Now start up Eclipse by running your new shortcut, and you should not be prompted to choose a Workspace.  Congratulations, Eclipse is now configured, now let's get a project setup and give a quick tour of the Eclipse functionality.&lt;/p&gt;&lt;p&gt;To clear the Welcome screen, press the "X" on the Welcome tab at the top of the screen.  By default, you'll be setup in the Jave Perspective, this won't be of much help unless you're a Java developer, so choose the &lt;kbd&gt;Window &amp;gt; Open Perspective &amp;gt; Other...&lt;/kbd&gt; menu.  Choose the Resource perspective from the list and press &lt;kbd&gt;OK&lt;/kbd&gt;.  The screen layout will change and should now show the &lt;kbd&gt;Navigator&lt;/kbd&gt;, &lt;kbd&gt;Outline&lt;/kbd&gt;, and &lt;kbd&gt;Tasks&lt;/kbd&gt; views (counter-clockwise from upper left.)  Right click on the Navigator view, and select &lt;kbd&gt;New &amp;gt; Project...&lt;/kbd&gt; from the context menu.  From the Wizards tree, expand &lt;kbd&gt;Web&lt;/kbd&gt;, and select &lt;kbd&gt;Static Web Project&lt;/kbd&gt; and press the &lt;kbd&gt;Next &amp;gt;&lt;/kbd&gt; button.  In the project name box, type an appropriate name for your current project, in this example we'll use &lt;kbd&gt;demo&lt;/kbd&gt;, and press &lt;kbd&gt;Finish&lt;/kbd&gt;.  A new folder will appear in the Navigator view and inside of it will be a variety of folders and files, don't worry too much about any of them, but you can get rid of the "WebContent" directory.  This directory is now a subdirectory off of your localhost root directory (i.e. &lt;a href="http://localhost/demo/"&gt;http://localhost/demo/&lt;/a&gt;.)  Just to verify, create a new HTML document named index.html (Hint: try the &lt;kbd&gt;New&lt;/kbd&gt; context menu off of the "demo" folder in the Navigator view view again) and paste the HTML from my &lt;a href="http://blog.ericdelabar.com/2007/02/in-beginning-there-was-doctype.html"&gt;second article&lt;/a&gt; into that file.  Next, load it up and the server and inspect your handy work! (Try: &lt;a href="http://localhost/demo/"&gt;http://localhost/demo/&lt;/a&gt;, it's an oh-so-exciting blank page with a title. Hooray!)&lt;/p&gt;&lt;p&gt;That's it!  In my next article, I'll take a look at setting up a simple directory structure and making more than just an empty web page.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-1203638627656493048?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/1203638627656493048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=1203638627656493048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/1203638627656493048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/1203638627656493048'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/03/lets-talk-about-tools-part-2.html' title='Let&apos;s talk about tools &amp;mdash; Part 2'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-4347732862809352356</id><published>2007-02-28T18:30:00.000-05:00</published><updated>2008-12-08T20:51:59.346-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox extensions'/><title type='text'>Let's talk about tools — Part 1</title><content type='html'>&lt;p&gt;After my &lt;a href="http://blog.ericdelabar.com/2007/02/in-beginning-there-was-doctype.html" title="In the beginning there was DOCTYPE"&gt;last post&lt;/a&gt;, we have a nice, clean starting point for our website.  Which is great, but in order to take it to the next level, we should probably get a nice development environment up and running.&lt;/p&gt;&lt;p&gt;First, we'll start with the client side. At &lt;a href="http://www.trifecta.com/" title="Trifecta Technologies, Inc."&gt;Trifecta&lt;/a&gt;, we develop entirely on Windows.  In my spare time, I have a &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt; (soon to be &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;) Linux box at home. Because of these factors, my tools of choice tend to be cross platform.  As far as browsers go, I develop strictly in Firefox due to its ease of debugging with tons of useful plug-ins (&lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt;, &lt;a href="http://chrispederick.com/work/webdeveloper/"&gt;Web Developer Toolbar&lt;/a&gt;, DOM Inspector) and cross-platform availability.  I of course have IE at work; where I've switched totally to IE 7, and I run the &lt;a href="http://blogs.msdn.com/ie/archive/2006/11/30/ie6-and-ie7-running-on-a-single-machine.aspx"&gt;free IE 6 &lt;abbr title="Virtual Machine"&gt;VM&lt;/abbr&gt; provided by Microsoft&lt;/a&gt; for testing in IE 6.  I also have access to a Mac running &lt;a href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29"&gt;Safari&lt;/a&gt;, a variety of Windows Mobile smart phones, and a few versions of &lt;a href="http://en.wikipedia.org/wiki/Opera_(web_browser)"&gt;Opera&lt;/a&gt;, including the Wii Beta version.  Do I cover all of my bases?  Probably not, but I'm at least over 95% of the user base.&lt;/p&gt;&lt;p&gt;What I really want to talk about are the &lt;a href="https://addons.mozilla.org/firefox/extensions/"&gt;Firefox plug-ins&lt;/a&gt; I mentioned earlier; if these tools are used correctly, a properly coded site that works in Firefox works just about everywhere else as well.  To start off, make sure that when you first install Firefox, the DOM Inspector is installed. To do this, on the "Setup Type" screen, choose Custom, and on the "Choose Optional Components" screen, make sure the "DOM Inspector" check box is checked:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_J5M5Zi2a7XA/ReXr6irAUPI/AAAAAAAAAik/oKgYHWXjr_k/s1600-h/custom.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_J5M5Zi2a7XA/ReXr6irAUPI/AAAAAAAAAik/oKgYHWXjr_k/s320/custom.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5036691149255889138" /&gt;&lt;/a&gt;&lt;label for="BLOGGER_PHOTO_ID_5036691149255889138" style="display: block; text-align: center"&gt;Choose Optional Components...&lt;/label&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_J5M5Zi2a7XA/ReXsRirAUQI/AAAAAAAAAis/2bPnOYmZpfA/s1600-h/dom_inspector.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_J5M5Zi2a7XA/ReXsRirAUQI/AAAAAAAAAis/2bPnOYmZpfA/s320/dom_inspector.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5036691544392880386" /&gt;&lt;/a&gt;&lt;label for="BLOGGER_PHOTO_ID_5036691149255889138" style="display: block; text-align: center"&gt;Install DOM Inspector...&lt;/label&gt;&lt;/p&gt;&lt;p&gt;Ok, now we're ready for plugins!  My current must haves are as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/60/"&gt;Web Developer Toolbar&lt;/a&gt; &amp;mdash; Tons of useful little tools that no web developer should be without.  Just install it and play with it.  Trust me.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/1843/"&gt;Firebug&lt;/a&gt; &amp;mdash; Amazing debugging and profiling tools, plus the Inspect button which lets you see which CSS rules apply to any element in your doc, and a fancy colored overlay showing element, margin and padding.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/539/"&gt;MeasureIt&lt;/a&gt; &amp;mdash; Great tool for pixel-perfect measuring!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/271/"&gt;ColorZilla&lt;/a&gt; &amp;mdash; Quickly grab colors without viewing page source.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/249/"&gt;HTML Validator&lt;/a&gt; &amp;mdash; W3C Validation on the fly, and in your view-source window.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/655/"&gt;View Source Chart&lt;/a&gt; &amp;mdash; Great for dealing with tag-soup or server generated code that's not nicely tabbed or spaced.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/4106/"&gt;Operator&lt;/a&gt; &amp;mdash; A must have for developing with (and using) &lt;a href="http://microformats.org/"&gt;Microformats&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.codeeg.com/tails-firefox-extension-03/"&gt;Tails&lt;/a&gt; &amp;mdash; Another must have for developing with (and using) &lt;a href="http://microformats.org/"&gt;Microformats&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you're still stuck in IE land, there's still hope, Microsoft has released a half-decent &lt;a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=2&amp;url=http%3A%2F%2Fwww.microsoft.com%2Fdownloads%2Fdetails.aspx%3FFamilyID%3De59c3964-672d-4511-bb3e-2d5e1db91038%26displaylang%3Den&amp;ei=zfjlRauhE4nmwAKC7vmsDA&amp;usg=__au5WSel_AYBsSlAd0yFuc3QgsXY=&amp;sig2=Q1fTTFMylKkovrV9b1i1bg"&gt;copycat Web Developer Toolbar&lt;/a&gt;, and there's hope for their &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;DisplayLang=en"&gt;(Java)Script debugger&lt;/a&gt;.  If you have a Genuine Advantage copy of Windows it won't hurt to try them out.&lt;/p&gt;&lt;p&gt;That's it!  Get those installed, play with them, and tune in next time for &lt;a href="http://blog.ericdelabar.com/2007/03/lets-talk-about-tools-part-2.html" title="Let's talk about tools &amp;mdash; Part 2"&gt;part 2&lt;/a&gt;, where we setup &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; and &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; as a test web server on Windows.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-4347732862809352356?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/4347732862809352356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=4347732862809352356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/4347732862809352356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/4347732862809352356'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/02/lets-talk-about-tools-part-1.html' title='Let&apos;s talk about tools &amp;mdash; Part 1'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_J5M5Zi2a7XA/ReXr6irAUPI/AAAAAAAAAik/oKgYHWXjr_k/s72-c/custom.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-8250722677750767890</id><published>2007-02-25T09:57:00.000-05:00</published><updated>2007-03-05T12:57:02.007-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><title type='text'>In the beginning there was DOCTYPE</title><content type='html'>&lt;p&gt;Alright, in the beginning there wasn't &lt;a href="http://en.wikipedia.org/wiki/Document_Type_Declaration"&gt;DOCTYPE&lt;/a&gt;, it didn't come along until about the time &lt;abbr title="eXtensible HyperText Markup Language"&gt;XHTML&lt;/abbr&gt; was released; however, if you want to do the Web 2.0 thing right, it helps to start on a solid base.&lt;/p&gt;&lt;p&gt;My goal here is to get a brand-new &lt;abbr title="HyperText Markup Language"&gt;HTML&lt;/abbr&gt; document up and running as a good base for designing a Web 2.0 application. Today, we'll look at the parts of a document that the typical user doesn't actually see, but play a huge role in how a user finds your site and how it's actually rendered on their screen.&lt;/p&gt;&lt;p&gt;First things first; make your DOCTYPE the first line of the file.  That's right, line number one, no &lt;abbr title="eXtensible Markup Language"&gt;XML&lt;/abbr&gt; definition, no spaces, no server-side code, the first line of the file.  This ensures that you don't end up in &lt;a href="http://en.wikipedia.org/wiki/Quirks_mode" title="For more information about quirks mode, check out Wikipedia"&gt;quirks mode&lt;/a&gt; accidentally.  Now, as far as DOCTYPE's go, I really only see two options, &lt;a href="http://www.w3.org/TR/html4/cover.html#minitoc" title="The Official W3C HTML 4.01 Specification...learn it, live it, love it...just kidding, it these things read like some other language, but it's useful to know they're there."&gt;HTML 4.01 Strict&lt;/a&gt; and &lt;a href="http://www.w3.org/TR/xhtml1/cover.html#minitoc" title="The Official W3C XHTML 1.0 Specification...learn it, live it, love it...just kidding, it these things read like some other language, but it's useful to know they're there."&gt;XHTML 1.0 Strict&lt;/a&gt;.  There are theoretically valid arguments for not using &lt;abbr title="eXtensible HyperText Markup Language"&gt;XHTML&lt;/abbr&gt;, most of which have to do with the simple fact that most web servers don't serve it as &lt;abbr title="eXtensible Markup Language"&gt;XML&lt;/abbr&gt; and most browsers don't read it as &lt;abbr title="eXtensible Markup Language"&gt;XML&lt;/abbr&gt;, but that's a different article for a different day.  Today, we're using &lt;a href="http://www.w3.org/TR/xhtml1/cover.html#minitoc" title="The Official W3C XHTML 1.0 Specification...learn it, live it, love it...just kidding, it these things read like some other language, but it's useful to know they're there."&gt;XHTML 1.0 Strict&lt;/a&gt; because the client insists that we use the latest technology regardless of whether or not it's appropriate; so this is what the DOCTYPE definition for &lt;a href="http://www.w3.org/TR/xhtml1/cover.html#minitoc" title="The Official W3C XHTML 1.0 Specification...learn it, live it, love it...just kidding, it these things read like some other language, but it's useful to know they're there."&gt;XHTML 1.0 Strict&lt;/a&gt; looks like:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd""&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Remember, that's the very first line of your file!&lt;/p&gt;&lt;p&gt;Next, let's get the basic xhtml in there:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&amp;gt;
 &amp;lt;head&amp;gt;
  &amp;lt;meta http-equiv="Content-Type" 
        content="text/html; charset=UTF-8"/&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, let's get some very basic &lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt; framework in there and add some meta elements. Meta elements are sometimes called meta tags, but since we're working in an &lt;abbr title="eXtensible HyperText Markup Language"&gt;XHTML&lt;/abbr&gt; document we'll use the &lt;abbr title="eXtensible Markup Language"&gt;XML&lt;/abbr&gt; terminology.  We'll use description and keywords, and throw author in the for good taste.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;meta name="keywords" 
      content="page, site, title, keyword, doctype"/&amp;gt;
&amp;lt;meta name="author" 
      content="Eric DeLabar"/&amp;gt;
&amp;lt;meta name="description" 
      content="A short description of the page content."/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Great, now there's a place for keywords and a description, but why do we need them? Keywords are old-school, I don't even know if modern crawlers still look at them, but I do know that like all meta elements they should be specific for the page you're writing them for.  So, as a means of guiding my &lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt;, I usually choose the 5-10 keywords that I want to apply to my current page, then make sure that as I'm writing the page copy I use those keywords.&lt;/p&gt;&lt;p&gt;The description meta element is slightly different, because it's visibly used.  It is displayed by some search engines as a description of your page when it occurs as a result.  As a guide to writing a description, keep it short, around 128-256 characters.  Keep in mind that if it's too long it will most likely by truncated, so just write a sentence describing the current page.&lt;/p&gt;&lt;p&gt;Now, we'll have a look at the page title:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;title&amp;gt; Descriptive Page Title - EricDeLabar.com&amp;lt;/title&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Like the meta description, the title element is displayed as part of a search result list, so a descriptive title can be very helpful for drawing users into your site.  Some &lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt; experts also believe that keywords in your title are more heavily weighted in search rankings.  Keep the title shorter than your description, and maybe consider including your branding at the end.  I like the branding at the end because if it does get truncated by the search engine more of my more important descriptive title is displayed.&lt;/p&gt;&lt;p&gt;Finally, let's add the stylesheets:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;link rel="stylesheet" type="text/css" 
      href="/style/screen.css" media="screen"/&amp;gt;
&amp;lt;!-- [if lte IE 6]&amp;gt;
&amp;lt;link rel="stylesheet" type="text/css" 
      href="/style/iefix_screen.css" media="screen"/&amp;gt;
&amp;lt![endif]--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now I'm a bit of a purist, and I'll have a later post describing my process for styling a page, but notice for now, I usually have a minimum of two stylesheets.  The first being a clean stylesheet (as in &lt;strong&gt;NO Hacks/Filters/Whatever you like to call them&lt;/strong&gt;) that handles all of the (mostly) standards complaint browsers, then an &lt;a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp" title="Learn the details about conditional comments from the reason why you need them."&gt;Internet Explorer conditional comment&lt;/a&gt; for handling older versions of &lt;abbr title="Internet Explorer"&gt;IE&lt;/abbr&gt;.  In this case, my iefix stylesheet is for &lt;code&gt;lte IE 6&lt;/code&gt; which translates to &lt;q&gt;Less than or equal to Internet Explorer 6.&lt;/q&gt; Notice that the iefix stylesheet comes &lt;strong&gt;after&lt;/strong&gt; the other stylesheet(s), this is so that any rules in the iefix stylesheet with equal or greater &lt;abbr title="Cascading Style Sheet(s)"&gt;CSS&lt;/abbr&gt; specificity will overwrite the rules in the standard stylesheet.  (More on specificity in a later post.)&lt;/p&gt;&lt;p&gt;That's it!  Congratulations, you have a nice, clean base to start your web 2.0 website on!  If you're curious, the finished product looks something like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&amp;gt;
 &amp;lt;head&amp;gt;
  &amp;lt;meta http-equiv="Content-Type" 
          content="text/html; charset=UTF-8"/&amp;gt;
  &amp;lt;meta name="keywords" 
        content="page, site, title, keyword, doctype"/&amp;gt;
  &amp;lt;meta name="author" 
        content="Eric DeLabar"/&amp;gt;
  &amp;lt;meta name="description" 
        content="A short description of the page content."/&amp;gt;
  &amp;lt;title&amp;gt; Descriptive Page Title - EricDeLabar.com&amp;lt;/title&amp;gt;
  &amp;lt;link rel="stylesheet" type="text/css" 
        href="/style/screen.css" media="screen"/&amp;gt;
  &amp;lt;!-- [if lte IE 6]&amp;gt;
  &amp;lt;link rel="stylesheet" type="text/css" 
        href="/style/iefix_screen.css" media="screen"/&amp;gt;
  &amp;lt![endif]--&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-8250722677750767890?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/8250722677750767890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=8250722677750767890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/8250722677750767890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/8250722677750767890'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/02/in-beginning-there-was-doctype.html' title='In the beginning there was DOCTYPE'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5689988094044153010.post-5497272118679613267</id><published>2007-02-20T13:39:00.000-05:00</published><updated>2007-02-20T14:46:52.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><title type='text'>Web 2.0 — Religion &amp; Politics</title><content type='html'>&lt;p&gt;First, a separation of church and state. I did not coin the term Web 2.0, and I have no particular feelings towards it (either for or against.) What I do feel is that the &lt;strong&gt;idea&lt;/strong&gt; of Web 2.0 has put a few very important issues onto the map.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standards Compliant and Semantic HTML&lt;/li&gt;
&lt;li&gt;Cascading Style Sheets (CSS)&lt;/li&gt;
&lt;li&gt;Client Side Scripting (JavaScript)&lt;/li&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;Ajax&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog aims to discuss these issues and more from a technical aspect. I hope to provided tutorials, insights, and best practices for front-end development; but where necessary, back-end code will be provided in either Ruby-on-Rails or Java.&lt;/p&gt;
&lt;p&gt;So that's it, let's see where it goes from here!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5689988094044153010-5497272118679613267?l=ericdelabar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericdelabar.blogspot.com/feeds/5497272118679613267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5689988094044153010&amp;postID=5497272118679613267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/5497272118679613267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5689988094044153010/posts/default/5497272118679613267'/><link rel='alternate' type='text/html' href='http://ericdelabar.blogspot.com/2007/02/web-20-religion-politics.html' title='Web 2.0 &amp;mdash; Religion &amp;amp; Politics'/><author><name>Eric</name><uri>http://www.blogger.com/profile/12918324669776621673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
