<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Professional PHP &#187; Web Design</title>
	<atom:link href="http://www.procata.com/blog/archives/category/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.procata.com/blog</link>
	<description>PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.</description>
	<pubDate>Tue, 27 May 2008 05:57:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Firefox Extensions for Web Developers</title>
		<link>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/</link>
		<comments>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 13:11:14 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[firebug]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[firefox-extensions]]></category>

		<category><![CDATA[tamper-data]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/</guid>
		<description><![CDATA[I prefer Safari for my casual web browsing on the Mac, but for web development, nothing beats Firefox.  (Firefox beats IE hands down on Windows.)  Firefox&#8217;s openness and the Firefox plugin architecture means that there is little that you cannot find out about a web page with a Firefox add-on.  I&#8217;ve tried [...]]]></description>
			<content:encoded><![CDATA[<p>I prefer Safari for my casual web browsing on the Mac, but for web development, nothing beats Firefox.  (Firefox beats IE hands down on Windows.)  Firefox&#8217;s openness and the Firefox plugin architecture means that there is little that you cannot find out about a web page with a Firefox add-on.  I&#8217;ve tried a bunch of different Firefox extensions for web development.  Here are the ones that I find most useful and that I use on a regular basis.</p>
<h3>DOM Inspector</h3>
<p>Yes, yes, it comes installed with Firefox, but lets not forget the basics.  The DOM Inspector allows you to see what is actually going on in your web document.  The DOM Inspector lets you browse DOM nodes, style sheets, or Java Script objects.  You select a node by either drilling down, by searching, or by clicking on it.  Although, the UI for selecting a node with your mouse is just plain lousy.  Once you&#8217;ve chosen your subject, the DOM inspector can show you the box model information for that node, the style sheets associated with the node, the computed CSS styles, or the Javascript object.</p>
<h3>Web Developer Extension</h3>
<p>Chris Pederick&#8217;s <a href="http://chrispederick.com/work/webdeveloper/">Web developer extension</a> has been out for a long time and is the plugin I am most familiar with.  This is really the swiss army knife of web developer tools. It is so feature packed that I am still finding new things that it does.  Unfortunately, the UI is also so cluttered that I am still finding new things that it does.</p>
<p>This add-on can slice and dice a web page every which way.  It can outline a variety DOM elements, for example drawing an outline around all block elements on a page.  This can be nice for lining things up.  The Display Line Guides option is also a good way to verify alignment, not to mention Display Ruler, or Display Page Magnifier for fine detail.</p>
<p>This extension has dozens of reports, each one geared toward diagnosing a particular kind of problem.  Some of them are external, such as sending your URL to a validation service.  Some are internal, such as showing a dump of all of the page&#8217;s active cookies.  Unfortunately, many of these option open up in a new tab, taking the focus off of the page that you are trying to work with.  It can be hard to tell which options do this.  There is an option for having the tabs open in the background, but this is not the default.</p>
<p>The View Style Information option is particularly nice.  You can point to any element on the page and the extension will display the element tree along with ids and classes.  If you click on an element, it will display only the style rules that apply to that element.  This beats the drill down approach in the DOM inspector, although it doesn&#8217;t show box model information or computed style information this way.</p>
<p>The web developer extension can change things as well as inspect them.  You can go into a mode where you can edit your CSS or HTML in real time for immediate feedback.  This is great for testing out small changes. For the PHP developer, the extension has a variety of options for manipulating cookies and forms.  There are also a variety of ways to enable or disable certain elements on the page.</p>
<p><a href="https://addons.mozilla.org/firefox/60/">Install Web Developer Extension</a></p>
<h3>Tamper Data</h3>
<p><a href="http://tamperdata.mozdev.org/">Tamper Data</a> is live HTTP headers on steroids.  Tamper data records the HTTP request headers and HTTP response headers for each request that the browser makes.  Not only that, It allows you to &#8220;tamper&#8221; with the requests before they are sent out, editing headers or form values behind the scenes.  Tamper data can present a graph of the requests involved with loading a web page.  Tamper data is great for security testing and page loading performance tuning.</p>
<p><a href="https://addons.mozilla.org/firefox/966/">Install Tamper Data Extension</a></p>
<h3>FireBug</h3>
<p><a href="http://www.getfirebug.com/">FireBug</a>, ah what can I say but wow!  According to their web site:</p>
<blockquote><p>
Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.
</p></blockquote>
<p>Firebug has considerable overlap with the extensions I&#8217;ve mentioned so far.  It doesn&#8217;t necessarily duplicate all of their functions, but the ones it does, it does really well.  It goes way beyond in some cases.  There is really no point in me talking about Firebug&#8217;s features, because the <a href="http://www.getfirebug.com/">website</a> already does such a good job at it.  They&#8217;ve impressed this jaded old developer.</p>
<p>If you haven&#8217;t tried this one yet, seriously, go get it right now.</p>
<p><a href="https://addons.mozilla.org/firefox/1843/">Install FireBug Extension</a></p>
<h3>ColorZilla</h3>
<p><a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> adds a small eyedropper tool to the bottom left corner of the window.  You can use this tool to inspect colors on the current web site.  Double clicking it brings up a color picker and some other color related tools.</p>
<p><a href="https://addons.mozilla.org/firefox/271/">Install ColorZilla Extension</a></p>
<h3>Multiple Profiles</h3>
<p>Ok, I lied.  There are a few situations where I use FireFox for casual browsing.  Some web sites just won&#8217;t work with Safari, or don&#8217;t work well with Safari.  For these, I pull up Firefox.  I don&#8217;t want my casual browsing tools to clutter up my web development experience and I don&#8217;t want my web development tools to clutter up my casual browsing experience.  The solution is to create <a href="http://lifehacker.com/software/firefox/geek-to-live--manage-multiple-firefox-profiles-231646.php">multiple profiles</a> in FireFox. I have one for web development and another for normal surfing.  I have safari ask me to select a profile on start up.  This extra step would be annoying for a primary browser, but it doesn&#8217;t seem too bad for a secondary browser.</p>
<h3>Setting up my Mac series</h3>
<p>Firefox is not mac specific, but this is actually the latest installment in my setting up my Mac series.</p>
<ol>
<li><a href="http://www.procata.com/blog/archives/2007/02/16/how-to-transfer-mac-os-x-application-data-between-computers/">How to Transfer Mac OS X Application Data between Computers</a></li>
<li><a href="http://www.procata.com/blog/archives/2007/02/22/free-software-for-mac-os-x/">Free Software for Mac OS X</a></li>
<li><a href="http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/">FireFox Extensions for Web Developers</a></li>
<li>UPCOMING: Configuring Boot Camp and Parallels</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Yahoo YUI wins JavaScript Library Wars</title>
		<link>http://www.procata.com/blog/archives/2007/02/23/yahoo-yui-wins-javascript-library-wars/</link>
		<comments>http://www.procata.com/blog/archives/2007/02/23/yahoo-yui-wins-javascript-library-wars/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 19:37:42 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[web-development]]></category>

		<category><![CDATA[yahoo]]></category>

		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/02/23/yahoo-yui-wins-javascript-library-wars/</guid>
		<description><![CDATA[There is huge web development news from Yahoo today.  Yahoo is offering free hosting for YUI components, both JavaScript and CSS.  I&#8217;ve been favoring the YUI, but this is a great boon.  One big drawback to AJAX is Page loading performance.  I&#8217;m betting that the Yahoo infrastructure can serve these files [...]]]></description>
			<content:encoded><![CDATA[<p>There is huge web development news from Yahoo today.  Yahoo is offering <a href="http://yuiblog.com/blog/2007/02/22/free-yui-hosting/">free hosting for YUI</a> components, both JavaScript and CSS.  I&#8217;ve been favoring the YUI, but this is a great boon.  One big drawback to AJAX is <a href="http://www.procata.com/blog/archives/2006/10/31/faster-page-loading/">Page loading performance</a>.  I&#8217;m betting that the Yahoo infrastructure can serve these files way faster than most people&#8217;s servers, they are much more likely to be cached, and by being located on a different domain, they circumvent domain connection limits in the browser.  By offering hosting, Yahoo turns YUI into a true shared library for the internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/02/23/yahoo-yui-wins-javascript-library-wars/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Looking forward to 2007</title>
		<link>http://www.procata.com/blog/archives/2007/01/04/looking-forward-to-2007/</link>
		<comments>http://www.procata.com/blog/archives/2007/01/04/looking-forward-to-2007/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 03:49:50 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software Design]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/01/04/looking-forward-to-2007/</guid>
		<description><![CDATA[Well, I&#8217;m finally back in town after the holidays.  Let me tell you, I&#8217;m glad to be home.  Between multiple holidays and taking my grandma to her cancer treatments in Ann Arbor, I was gone far too much of last month.
My Grandma is doing well.  They used an experimental new procedure called [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;m finally back in town after the holidays.  Let me tell you, I&#8217;m glad to be home.  Between multiple holidays and taking my grandma to her cancer treatments in Ann Arbor, I was gone far too much of last month.</p>
<p>My Grandma is doing well.  They used an experimental new procedure called radio frequency ablation to remove the meta-static colon cancer tumors from her lungs.  This procedure is amazing compared to the standard treatment.  The doctors at the University of Michigan were impressive.  We&#8217;ll know the results in a couple months when her lungs look a little less like scrambled eggs.  We&#8217;re hopeful.</p>
<p>I&#8217;m not much for retrospectives.  Looking forward into 2007, I have a few major goals.  I joined a gym today.  I&#8217;m going to get a new laptop and refresh my development environment next week after MacWorld.  I want to get at least a beta release of WACT out by May.  I have to prepare for php|tek.  I need to find a new place to live by this fall.  (Ann Arbor?) I want to move by the end of the year.</p>
<p>I loved all my christmas and birthday gifts this year.  (My birthday is December 28th.)  This year I pointed everyone to my Amazon.com wishlist and I ended up with a ton of good books to read.  Jason Gillmore from Apress also sent me some web development books.  My to-read stack for 2007 includes:</p>
<ul>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0440509017&#038;tag=procata&#038;camp=1789&#038;creative=9325">The Promise of Sleep</a> - A survey of the subject of sleep for laymen, written by a top sleep researcher.  I&#8217;m almost done with this one.  This book has a bunch of sleep deprivation horror stories and a good survey of what is known about sleep, which is not much.  Its incredible that we know so little about something we spend so much time doing.  Its also amazing how many people have easily treatable sleep disorders that don&#8217;t even know it.  Do you snore?</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0321344758&#038;tag=procata&#038;camp=1789&#038;creative=9325">Don&#8217;t make me Think</a> - Looks like a nice overview book on web usability.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0321125215&#038;tag=procata&#038;camp=1789&#038;creative=9325">Domain Driven Design</a> - Recommended by Jason and Marcus.  How did I get this far without reading this book?</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/1400079179&#038;tag=procata&#038;camp=1789&#038;creative=9325">Da Vinci Code</a> - Wasn&#8217;t on my wishlist, but I&#8217;ll read it anyway.  I read so little fiction these days.  Where is a beach when you need one?</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0142000280&#038;tag=procata&#038;camp=1789&#038;creative=9325">Getting Things Done</a> - I&#8217;m almost through this one.  It is a testimony to the power of the ideas that this book expresses that so many people recommend it, despite its being so incredibly dull.  Useful?  Yes.  Inspiring?  No.  But, then I&#8217;ve read enough of these self help / personal productivity type books for a lifetime.  Anyone want to buy a Franklin Planner?  I used mine until I got a cell phone.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/1590597532&#038;tag=procata&#038;camp=1789&#038;creative=9325">Practical Subversion</a> - I&#8217;m really liking subversion.  If you haven&#8217;t tried it, do so.  I&#8217;m hoping to combine this with Greg Beaver&#8217;s book, <a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/1904811191&#038;tag=procata&#038;camp=1789&#038;creative=9325">The PEAR installer manifesto</a> &#8212; the book on my wishlist I most wanted that I didn&#8217;t get, to create a new deployment process.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/159059732X&#038;tag=procata&#038;camp=1789&#038;creative=9325">Pro CSS Techniques</a> - A CSS book that tackles maintainability?  I&#8217;m really looking forward to this one.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/159059505X&#038;tag=procata&#038;camp=1789&#038;creative=9325">Pro MySQL</a> - The last MySQL book I read was a couple years ago, yet I use it almost every day.  I&#8217;m due for a refresh.  This one looks good.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/1590595084&#038;tag=procata&#038;camp=1789&#038;creative=9325">Pro PHP Security</a> - Never hurts to brush up.  This one looks like it has alot on encryption, SSL and SSH; not strong areas for me.</li>
<li><a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0471606952&#038;tag=procata&#038;camp=1789&#038;creative=9325">Pattern-Oriented Software ARchitecture Volume 2</a> - The first volume, <a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0471958697&#038;tag=procata&#038;camp=1789&#038;creative=9325">A system of patterns</a>, is one of my &#8220;always within reach when developing&#8221; books.  Nice to add to the set.</li>
</ul>
<p>Thanks for the books, guys.  I&#8217;ll have in-depth reviews of some of these here in the future.</p>
<p>Happy New Year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/01/04/looking-forward-to-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Faster Page Loading</title>
		<link>http://www.procata.com/blog/archives/2006/10/31/faster-page-loading/</link>
		<comments>http://www.procata.com/blog/archives/2006/10/31/faster-page-loading/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 22:31:56 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[caching]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[page-loading-performance]]></category>

		<category><![CDATA[performance-optimization]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[tamper-data]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2006/10/31/faster-page-loading/</guid>
		<description><![CDATA[Google engineer Aaron Hopkins wrote a good article on page loading times  (via Harry).  He talks about the impact of AJAX on page load times, focusing on connection limits,  latency and the large number of external objects on your typical AJAX page.  He offers a variety of tips on improving page [...]]]></description>
			<content:encoded><![CDATA[<p>Google engineer Aaron Hopkins wrote a good article on <a href="http://www.die.net/musings/page_load_time/">page loading times</a>  (via <a href="http://www.sitepoint.com/blogs/2006/10/30/the-case-for-registering-multiple-domains/">Harry</a>).  He talks about the impact of AJAX on page load times, focusing on connection limits,  latency and the large number of external objects on your typical AJAX page.  He offers a variety of tips on improving page load times, including doing more with the connections you have, busting the connection limit, caching, and sending less data.</p>
<p>I wrote about <a href="http://www.procata.com/blog/archives/2004/05/17/web-page-loading-performance/">web page loading performance</a> a while ago, when I linked to Dave Hyatt&#8217;s most excellent explanation of the issues involved with <a href="http://weblogs.mozillazine.org/hyatt/archives/2004_05.html#005496">testing page load speed</a>.  In fact the Safari browser blog endorses Aaron Hopkins article and mentions how to <a href="http://webkit.org/blog/?p=75">measure page loading times</a> in Safari using the debug menu.</p>
<p>On the Mozillia front, the <a href="http://tamperdata.mozdev.org/">Tamper Data</a> extension generates some amazing graphs of when elements on a page load and how long it takes.</p>
<p>On the topic of sending less data, the Yahoo! User Interface Blog weighs in on <a href="http://yuiblog.com/blog/2006/10/16/pageweight-yui0114/">page waits</a> with a discussion of javascript minimization versus compression.  They also briefly cover the YUI decision to serve components a la carte, rather than in an aggregated file.</p>
<p>Cal Henderson of Flickr also takes up this topic in <a href="http://www.thinkvitamin.com/features/webapps/serving-javascript-fast">serving JavaScript fast</a>.  He goes into more depth about the issue of a la carte external objects versus aggregated external objects as well as covering compression and caching issues with examples in PHP.</p>
<p>From the PHP perspective, <a href="http://public.yahoo.com/~radwin/talks/yapache-oscon2006.htm">Michael J. Radwin</a> and <a href="http://www.niallkennedy.com/blog/archives/2006/07/rasmus-lerdorf-php-web20.html">Rasmus Lerdorf</a> have covered web application performance issues in conference talks.</p>
<p>Are <a href="http://www.web-caching.com/cacheability.html">your web pages cacheable</a> or <a href="http://public.yahoo.com/~radwin/talks/http-caching-apachecon2005.htm">not</a>?</p>
<p>On the home front, this is my first post on this blog since I&#8217;ve installed <a href="http://mnm.uib.es/gallir/wp-cache-2/">wp-cache2</a> and upgraded to <a href="http://eaccelerator.net/">eAccelerator 0.9.5</a>.  And my first post since my fishing vacation, too <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2006/10/31/faster-page-loading/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Meta Tag Refresh Faux Paux</title>
		<link>http://www.procata.com/blog/archives/2006/07/17/meta-tag-refresh-faux-paux/</link>
		<comments>http://www.procata.com/blog/archives/2006/07/17/meta-tag-refresh-faux-paux/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 22:14:52 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Usability]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[meta-tag]]></category>

		<category><![CDATA[meta-tag-refresh]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2006/07/17/meta-tag-refresh-faux-paux/</guid>
		<description><![CDATA[If, for some unfathomable reason, you put a meta tag refresh on every page of your site, you may want to consider not putting it on any page with a form on it.  Especially a long complicated form.  30 minutes may seem like a long time to fill out a form, but sometimes [...]]]></description>
			<content:encoded><![CDATA[<p>If, for some unfathomable reason, you put a meta tag refresh on every page of your site, you may want to consider not putting it on any page with a form on it.  Especially a long complicated form.  30 minutes may seem like a long time to fill out a form, but sometimes people answer the phone or get up for a coffee break.  Perhaps the refresh may even make them decide that they have better things to do than pursuing a transaction with your lame site.  (Like blog about how lame you are.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2006/07/17/meta-tag-refresh-faux-paux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Extreme Simplicity</title>
		<link>http://www.procata.com/blog/archives/2006/03/01/extreme-simplicity/</link>
		<comments>http://www.procata.com/blog/archives/2006/03/01/extreme-simplicity/#comments</comments>
		<pubDate>Thu, 02 Mar 2006 03:52:22 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Software Design]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[decision-making]]></category>

		<category><![CDATA[simplicity]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=175</guid>
		<description><![CDATA[Could this be the manifesto of &#8220;Extreme Simplicity?&#8221;

10 fundamental rules for the age of user experience technology:

More features isn&#8217;t better, it&#8217;s worse.
You can&#8217;t make things easier by adding to them.
Confusion is the ultimate deal-breaker.
Style matters
Only features that provide a good user experience will be used.
Any feature that requires learning will only be adopted by a [...]]]></description>
			<content:encoded><![CDATA[<p>Could <a href="http://www.acm.org/ubiquity/views/v7i07_pfeiffer.html">this</a> be the manifesto of &#8220;Extreme Simplicity?&#8221;</p>
<blockquote><p>
10 fundamental rules for the age of user experience technology:</p>
<ol>
<li>More features isn&#8217;t better, it&#8217;s worse.</li>
<li>You can&#8217;t make things easier by adding to them.</li>
<li>Confusion is the ultimate deal-breaker.</li>
<li>Style matters</li>
<li>Only features that provide a good user experience will be used.</li>
<li>Any feature that requires learning will only be adopted by a small fraction of users.</li>
<li>Unused features are not only useless, they can slow you down and diminish ease of use</li>
<li>Users do not want to think about technology: what really counts is what it does for them.</li>
<li>Forget about the killer feature. Welcome to the age of the killer user-experience.</li>
<li>Less is difficult, that&#8217;s why less is more</li>
</ol>
</blockquote>
<p><a href="http://www.apple.com/ipod/">Consumer devices</a> or <a href="http://www.rubyonrails.org/">frameworks</a>, we are a product of our times.  </p>
<p><a href="http://youtube.com/watch?v=aeXAcwriid0">Watch</a> and contemplate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2006/03/01/extreme-simplicity/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Delicious Outage Link Dump</title>
		<link>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/</link>
		<comments>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/#comments</comments>
		<pubDate>Mon, 19 Dec 2005 18:21:53 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Agile Methods]]></category>

		<category><![CDATA[Misc]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software Design]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[WACT]]></category>

		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=168</guid>
		<description><![CDATA[Del.icio.us has been down for a while.  I use it for my public bookmarks, which are listed on the side of this blog.  Here is a post with some recent random things that I would bookmark if I could.

The departure of the hyper-enthusiasts - &#8220;The Java hyper-enthusiasts have left the building&#8221;  (along [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.del.icio.us/blog/2005/12/continued_hiccu.html">Del.icio.us has been down</a> for a while.  I use it for my public bookmarks, which are listed on the side of this blog.  Here is a post with some recent random things that I would bookmark if I could.</p>
<ul>
<li><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=141312">The departure of the hyper-enthusiasts</a> - &#8220;The Java hyper-enthusiasts have left the building&#8221;  (along the lines of <a href="http://www.procata.com/blog/archives/2005/09/29/why-isnt-php-the-natural-successor-to-java/">this</a>.)</li>
<li><a href="http://martinfowler.com/articles/newMethodology.html">The New Methodology</a> - Martin Fowler describes Agile methodologies &#8212; recently updated.</li>
<li><a href="http://wiki.caucho.com/PHP_Hello_World">PHP on Caucho</a> - PHP on the JVM.</li>
<li><a href="http://norman.walsh.name/2004/11/10/xml20">XML 2.0</a> - some thoughts on XML 2.0.</li>
<li><a href="http://www.webpatterns.org/">Web Patterns</a> - Under construction &#8212; check back later.</li>
<li><a href="http://www.welie.com/patterns/">Web Design Patterns</a>.</li>
<li><a href="http://www.agilealliance.org/resources/carnivaloftheagilists">Carnival of the Agilists</a>.</li>
</ul>
<p>I&#8217;m currently adding UTF-8 support to and generally improving WACT&#8217;s &#8220;liberal&#8221; xml/html parser.  A few sources of tests cases and information:</p>
<ul>
<li><a href="http://weblog.philringnalda.com/2005/12/18/who-knows-a-title-from-a-hole-in-the-ground">Who knows a title from a hole in the ground?</a></li>
<li><a href="http://decafbad.com/blog/2005/12/19/feedburner-feeds-give-heartburn-to-php-xml-parsers">FeedBurner feeds give heartburn to PHP XML parsers?</a></li>
<li><a href="http://www.is-thought.co.uk/book/home.htm">Web SGML and HTML 4.0 explained</a></li>
<li><a href="http://www.flightlab.com/~joe/sgml/cdata.html">CDATA confusion</a></li>
<li><a href="http://www.flightlab.com/~joe/sgml/comments.html">Comment syntax in SGML and HTML</a></li>
<li><a href="http://www.cs.tut.fi/~jkorpela/html/empty.html">Empty elements in SGML, HTML, XML, and XHTML</a></li>
<li><a href="http://www.w3.org/TR/NOTE-sgml-xml.html">Comparison of SGML and XML</a></li>
<li><a href="http://www.w3.org/XML/Test/">Extensible Markup Language (XML) Conformance Test Suites</a></li>
<li><a href="http://www.hixie.ch/tests/adhoc/html/parsing/">Ian Hixie&#8217;s HTML parsing test cases</a></li>
<li><a href="http://xmlconf.sourceforge.net/">Conformance Testing for XML and Related Technologies</a></li>
<li><a href="http://feedparser.org/">Universal Feed Parser</a> liberal feed parser with many test cases.</li>
<li><a href="http://schneegans.de/sv/test-cases/">XHTML test cases</a></li>
</ul>
<ul>
<li><a href="http://www.cl.cam.ac.uk/~mgk25/unicode.html">UTF-8 and Unicode FAQ for Unix/Linux</a></li>
<li><a href="http://www.w3.org/2001/06/utf-8-wrong/">bad UTF-8 test files</a></li>
<li><a href="http://validator.w3.org/dev/tests/">The W3C Markup Validation Service: Tests</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Harry Fuecks, PHP Patterns and Dynamically Typed</title>
		<link>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/</link>
		<comments>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/#comments</comments>
		<pubDate>Fri, 04 Nov 2005 07:54:32 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[blogging]]></category>

		<category><![CDATA[php-patterns]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=153</guid>
		<description><![CDATA[I was reading this post over at Dynamically Typed and I was thinking to myself, this looks like something that Harry Fuecks would write.  A glance at the top of the page confirmed my suspicions.  Harry has been writing a few new blog posts over there.  That and the resurrection of the [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading <a href="http://www.sitepoint.com/blogs/2005/11/03/web-bugs-for-job-scheduling-hack-or-solution/">this post</a> over at <a href="http://www.sitepoint.com/blog-view.php?blogid=9">Dynamically Typed</a> and I was thinking to myself, this looks like something that Harry Fuecks would write.  A glance at the top of the page confirmed my suspicions.  Harry has been writing a few new blog posts over there.  That and the resurrection of the <a href="http://www.phppatterns.com/">PHP Patterns</a> site has probably been keeping him busy.  All I&#8217;m gonna say about the new site design for PHP Patterns is <a href="http://www.ficml.org/jemimap/style/color/wheel.html">color wheel</a>, <a href="http://www.meyerweb.com/eric/tools/color-blend/">color blender</a>, <a href="http://www.colorschemer.com/online.html">color scheme</a>, <a href="http://pixelfever.com/tools/colormatch/">color match</a>, and <a href="http://www.colorcoordinator.com/colorCoordinator.php">color coordinator</a>.  <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Welcome Back Harry.</p>
<p>Also, unless I&#8217;m mistaken, it looks like SitePoint is using WordPress for their blogs now.  Or has this always been the case and I&#8217;m just now noticing it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mouse problems with Safari 1.3 after using Expose</title>
		<link>http://www.procata.com/blog/archives/2005/04/19/expose-and-safari/</link>
		<comments>http://www.procata.com/blog/archives/2005/04/19/expose-and-safari/#comments</comments>
		<pubDate>Tue, 19 Apr 2005 18:35:18 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/04/19/mouse-over-problems-with-safari-13-and-1039/</guid>
		<description><![CDATA[I&#8217;ve been impressed by the new JavaScript speed of Safari 1.3, but since upgrading to 10.3.9, I&#8217;ve started having a problem with using Safari and Expose.  After I use Expose to select a Safari window, Mouse events appear to get screwed up:

The cursor does not change to a hand when moving the mouse over [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been impressed by the new JavaScript speed of Safari 1.3, but since upgrading to 10.3.9, I&#8217;ve started having a problem with using Safari and Expose.  After I use Expose to select a Safari window, Mouse events appear to get screwed up:</p>
<ul>
<li>The cursor does not change to a hand when moving the mouse over a link</li>
<li>The link destination does not appear in the status bar</li>
<li>CSS hover effects do not trigger</li>
<li>Application names fail to appear above icons when scrubbing the dock with the cursor</li>
<li>Moving the mouse cursor outside of a textarea does not change it back to the arrow</li>
<li>Clicking the middle mouse button, which I have mapped to expose, has no effect (hitting F9 works fine)</li>
</ul>
<p>The mouse position, regular click, and right clicks seem to continue to work fine.</p>
<p>Switching to the Finder and then back to Safari seems to clear up the problem most of the time.</p>
<p>I&#8217;m pretty conservative with my setup.  Trained from my System 7 extension days, I don&#8217;t run any hacks or third party enhancers on my system (I do have the debug menu turned on, though).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/04/19/expose-and-safari/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Usability of Input Filtering</title>
		<link>http://www.procata.com/blog/archives/2005/03/31/the-usability-of-input-filtering/</link>
		<comments>http://www.procata.com/blog/archives/2005/03/31/the-usability-of-input-filtering/#comments</comments>
		<pubDate>Fri, 01 Apr 2005 06:21:05 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[input-filtering]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/03/31/the-usability-of-input-filtering/</guid>
		<description><![CDATA[There seems to be much interest lately in input filtering in PHP, especially in cross site scripting prevention.  I&#8217;ve always preferred input validation to input filtering, but I am giving filtering a new examination.  My problem with filtering is with usability.  The comments to this post are a good example.  There [...]]]></description>
			<content:encoded><![CDATA[<p>There seems to be much interest lately in input filtering in PHP, especially in cross site scripting prevention.  I&#8217;ve always preferred input validation to input filtering, but I am giving filtering a new examination.  My problem with filtering is with usability.  The comments to <a href="http://www.procata.com/blog/archives/2005/03/08/microbenchmarks-of-single-and-double-qouting/#comments">this post</a> are a good example.  There are obviously some usability issues going on here.</p>
<p>I think the fundamental problem with input filtering and especially XSS filtering is that it violates <a href="http://en.wikipedia.org/wiki/Principle_of_least_astonishment">the principle of least surprise</a>.   User input is silently modified without the user&#8217;s knowledge.  If the violation is innocent, then the software surprises the user.  This is bad.  At least with validation, the user gets a heads up on the problem.</p>
<p>Let me try to name and enumerate some scenarios:</p>
<p><strong>Direct Filter</strong><br />
This is what WordPress did in the example post.  It simply accepted the user input and silently changed it.  The filtered value is stored directly into the database.  The original input is lost.  There is no preview.  I think this has to be a usability worse case scenario.</p>
<p><strong>Filter with Preview</strong><br />
This scenario adds a preview capability to the last.  The filter is still applied.  A validation failure or explicit preview button causes the form values to be re-displayed and a preview panel to be shown.  However, the previous input value is silently modified and sent back to the user.  The user may or may not realize that his original input has been changed during the round trip.</p>
<p>This is also seems like a usability problem, but every once and a while it happens to me when entering legitimate input into professionally written programs.</p>
<p><strong>Filter with Buffered Preview</strong><br />
This scenario adds an additional buffer to the last.  The filter is applied, but the original input is sent back to the user in the form field.  However, the preview panel shows the modified value.</p>
<p>I don&#8217;t really see this very often outside of fields with a dedicated markup language (for example BBCode).</p>
<p><strong>Filter with Forced Preview</strong><br />
The input value is silently filtered.  However, the user is forced to preview the output at least once.  Its up to the user to notice the results of the filter.</p>
<p>I think slashdot does this.</p>
<p><strong>Filter with Confirmation</strong><br />
A stricter variation of Forced Preview where as the last stage, the user must confirm their input once without the ability to change it.  It is up to the user to notice the results of the filter.</p>
<p>I think this is popular as the last stage of a wizard style interface.</p>
<p><strong>Filter with Confirmation and Warning</strong><br />
The filter is applied and the user&#8217;s input is changed, however, the user is warned exactly which value was changed by the filter.</p>
<p>I don&#8217;t think I&#8217;ve ever seen this one.</p>
<p><strong>Validation</strong><br />
The program notifies the user that the input value is bad, but does not modify it.  The user must change the value to proceed.</p>
<p>I tend to use this one.  I escape all output, so I don&#8217;t worry too much about displaying XSS in the preview panel.</p>
<p>Obviously, you can mix and match scenarios for different input rules and fields. I&#8217;m sure there are other scenarios.  Please suggest some.</p>
<p>I guess I&#8217;ve been programming for about 23 years now.  The longer I do it, the more reluctant I am to be strict with user input.  Ultra sanitized, ultra structured data may seem attractive to the programmer, but its a pain for the user and its only a matter of time before a legitimate exception comes along.  A European phone number, the 51rst state, a canadian postal code, a new millennium, etc.  The exception is the rule.  Understandably, XSS must be prevented, but its easy to go too far.</p>
<p>Which of these scenarios do you think are best from the user&#8217;s perspective?  From the programmers perspective?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/03/31/the-usability-of-input-filtering/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
