<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Ramblings of a web guy (Tag: html)</title>
        <description>Brian Moon, of dealnews.com, shares what he knows (and learns) about PHP, MySQL and other stuff</description>
        <link>http://brian.moonspot.net/feed.php?type=rss&amp;amp;tag=html</link>
        <lastBuildDate>Tue, 07 Sep 2010 21:16:08 -0500</lastBuildDate>
        <generator>Wordcraft 0.10</generator>
        <item>
            <guid>http://brian.moonspot.net/using-tables-for-layout</guid>
            <title>Tables for layout</title>
            <link>http://brian.moonspot.net/using-tables-for-layout</link>
            <description><![CDATA[I just read <em><a href="http://www.rooftopsolutions.nl/article/264">A case for table-based
design</a></em> and was thrilled to know I am not the only one that
drowns in div soup from time to time.&nbsp; I do not for the most
part use tables for layout, but there are some cases where I just
can't make a set of divs do my bidding. The classic example is
having a two column layout where the left column <strong>LOADS
FIRST</strong> and is elastic and the right column is a fixed
size.&nbsp; The "loads first" is important in a world where the
rendering time of pages has become important.&nbsp; Ideally with
any page, the most important content would render first for the
user. In my case, this fixed column is an ad. As a web developer, I
don't care when the ad loads. The ads are a necessary evil in my
page layout. I must ensure that they load in an acceptable time
frame, but certainly not the first thing on the page. The specific
layout I am talking about is that of the top of dealnews.com.&nbsp;
It has a fixed size 300x250 ad on the right of the page and the
left side is elastic. I fiddled with divs for hours to get that to
act the way I wanted it to act. We use the grid CSS from <a href="http://oocss.org/grids_docs.html">OOCSS.org</a>. Wonderful piece
of CSS that is. But, even with that in hand, I could not get the
elements to behave, in all browsers, the way I could with a simple
two column table where the left column's width is set to 100% and
the right column contains a div of width 300 pixels. It was so easy
to pull that off. Maybe CSS3 is going to solve this problem? I
don't know. If you have the magic CSS that can do what this page
does, let me know.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Fri, 29 Jan 2010 10:01:39 -0600</pubDate>
            <category>html</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/yui-carousel</guid>
            <title>Custom carousel with YUI and OOCSS.org</title>
            <link>http://brian.moonspot.net/yui-carousel</link>
            <description><![CDATA[YUI has a built in <a href=
"http://developer.yahoo.com/yui/carousel/">carousel widget</a>.
However, it requires fixed widths for all the parts. That does not
fit well in a liquid CSS layout. In particular, we have to support
people using large fonts at the OS level and large font settings in
their browsers. I did not want for our carousel to break down in
these cases. The built in YUI widget does. See this <a href=
"http://www.screencast.com/users/brianlmoon/folders/Jing/media/72960e7d-0639-4ce8-a272-a1cef264d143">
normal sized screen shot</a> versus one with <a href=
"http://www.screencast.com/users/brianlmoon/folders/Jing/media/9988ee85-ab55-4b09-9c39-34a88c6fd6cc">
large fonts</a>. Now look at dealnews with <a href=
"http://screencast.com/t/CfcBpRXrcXfQ">normal fonts</a> and
<a href="http://www.screencast.com/users/brianlmoon/folders/Jing/media/5b1886a6-5797-425d-9695-e7dc2d8cd050">
large fonts</a>.<br>
<br>
So, I decided to make my own using YUI and the grid CSS from
<a href="http://oocss.org/">Object-Oriented CSS</a>.&nbsp; You can
see my working example with some explination <a href=
"http://brian.moonspot.net/yui_carousel/action.html">here</a>.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Fri, 09 Oct 2009 15:52:19 -0500</pubDate>
            <category>css</category>
            <category>html</category>
            <category>javascript</category>
            <category>yui</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/mod-substitute-mod-proxy-problem</guid>
            <title>mod_substitute is cool.  But, be careful with mod_proxy</title>
            <link>http://brian.moonspot.net/mod-substitute-mod-proxy-problem</link>
            <description><![CDATA[For our development servers, we have always used output buffering
to replace the URLs (dealnews.com) with the URL for that
development environment.&nbsp; Where we run into problems is with
CSS and JavaScript.&nbsp; If those files contains URLs for images
(CSS) or AJAX (JS) the URLS would not get replaced.&nbsp; Our
solution has been to parse those files as PHP (on the dev boxes
only) and have some output buffering replace the URLs in those
files.&nbsp; That has caused various problems over the years and
even some confusion for new developers.&nbsp; So, I got to looking
for a different solution.&nbsp; Enter <span><a href=
"http://httpd.apache.org/docs/2.2/mod/mod_substitute.html">mod_substitute</a>
for Apache 2.2.</span><br>

<blockquote>
    <em><a href=
    "http://httpd.apache.org/docs/2.2/mod/mod_substitute.html">mod_substitute</a>
    provides a mechanism to perform both regular expression and
    fixed string substitutions on response bodies.</em> - Apache
    Documentation<br>
</blockquote>
Cool!&nbsp; I put in the URL mappings and VIOLA!&nbsp; All was
right in the world.<br>
<br>
Fast forward a day.&nbsp; Another developer is testing some new
code and finds that his XML is getting munged.&nbsp; At first we
blamed libxml because we had just been through an ordeal with a bad
combination of a libxml compile option and PHP a while back.&nbsp;
Maybe we missed that box when we fixed it.&nbsp; We recompiled
everything on the dev box but there was no change.&nbsp; So I
started to think what was recently different with the dev
boxes.&nbsp; So, I turn off mod_substitute.&nbsp; Dang, that fixed
it.&nbsp; I looked at my substitution strings and everything looked
fine.&nbsp; After cursing and being depressed that such a cool tool
was not working, I took a break to let it settle in my mind.<br>
<br>
I came back to the computer and decided to try a virgin Apache 2.2
build.&nbsp; I downloaded the source from the web site instead of
building from Gentoo's Portage.&nbsp; Sure enough, a simple test
worked fine.&nbsp; No munging.&nbsp; So, I loaded up the dev box
Apache configuration into the newly compiled Apache.&nbsp; Sure
enough, munged XML.&nbsp; ARGH!!<br>
<br>
Up until this point, I had configured the substitutions globally
and not in a particular virtual host.&nbsp; So, I moved it all into
one virtual host configuration.&nbsp; Still broken.<br>
<br>
A little more background on our config.&nbsp; We use mod_proxy to
emulate some features that we get in production with our F5 BIG-IP
load balancers.&nbsp; So, all requests to a dev box hit a mod_proxy
virtual host and are then directed to the appropriate virtual host
via a proxied request.&nbsp;<br>
<br>
So, I got the idea to hit the virtual host directly on its port and
skip mod_proxy.&nbsp; Dang, what do you know.&nbsp; It worked
fine.&nbsp; So, something about the output of the backend request
and mod_proxy was not playing nice.&nbsp; So, hmm.&nbsp; I got the
idea to move the mod_substitute directives into the mod_proxy
virtual hosts configuration.&nbsp; Tested and working fine.&nbsp;
So, basically, this ensures that the substitution filtering is done
only after the proxy and all other requests have been
processed.&nbsp; I am no Apache developer, so I have not dug any
deeper.&nbsp; I have a working solution and maybe this blog post
will reach someone that can explain it.&nbsp; As for
mod_substitute, here is the way my config looks.<br>
<br>
In the VirtualHost that is our global proxy, I have this:<br>
<br>
<code>FilterDeclare DN_REPLACE_URLS<br>
FilterProvider DN_REPLACE_URLS SUBSTITUTE resp=Content-Type
$text/<br>
FilterProvider DN_REPLACE_URLS SUBSTITUTE resp=Content-Type
$/xml<br>
FilterProvider DN_REPLACE_URLS SUBSTITUTE resp=Content-Type
$/json<br>
FilterProvider DN_REPLACE_URLS SUBSTITUTE resp=Content-Type
$/javascript<br>
FilterChain DN_REPLACE_URLS</code><br>
<br>
Elsewhere, in a file that is local to each dev host, I keep the
actual mappings for that particular host:<br>
<br>
<code>Substitute
"s|http://dealnews.com|http://somedevbox.dealnews.com|in"<br>
Substitute
"s|http://dealmac.com|http://somedevbox.dealmac.com|in"<br>
# etc....</code><br>
<br>
I am trying to think of other really cool uses for this.&nbsp; Any
ideas?]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Tue, 07 Apr 2009 20:03:22 -0500</pubDate>
            <category>apache</category>
            <category>html</category>
            <category>php</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/best-practices-escape-html</guid>
            <title>Best practices for escaping HTML</title>
            <link>http://brian.moonspot.net/best-practices-escape-html</link>
            <description><![CDATA[I am working on <a href=
"http://code.google.com/p/wordcraft/">Wordcraft</a>, trying to get
the last annoying HTML validation errors worked out.&nbsp; Thinks
like ampersands in URLs.&nbsp; In doing so, I am asking myself
where the escaping should take place. In the case of Wordcraft,
there are several parts to it.<br>

<ol>
    <li>The code that pulls data from the database.&nbsp; Obviously
    not the right place.
    </li>

    <li>The code that formats data like dates and such.&nbsp; It
    also organizes data from several data sources into one nice
    tidy array.&nbsp; Hmm, maybe
    </li>

    <li>The parts of the code that set up the output data for the
    templates.
    </li>

    <li>The templates themselves.
    </li>
</ol>
Now, I am sure 1 is not the place.&nbsp; And I really would not
want 4 to be the place.&nbsp; That would make for some ugly
templating.&nbsp; Plus, the templates, IMO, should assume the data
is ready to be output.&nbsp; So, that leaves the code that does the
formatting and the code that does the data setup.<br>
<br>
Of those two, I guess the place to do this job is in the data
setup.&nbsp; Wordcraft has a $WCDATA array that is available in the
scope of the templates.&nbsp; I suppose anything that goes into
that array should be escaped as appropriate.<br>
<br>
I largely wrote this blog post as a <a href=
"http://headrush.typepad.com/creating_passionate_users/2005/01/rubberducking_a.html">
teddy bear exercise</a>.&nbsp; But, I am curious.&nbsp; Where and
when do you escape your data for use in HTML documents?]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Fri, 20 Mar 2009 22:55:00 -0500</pubDate>
            <category>html</category>
            <category>php</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/html-vs-xhtml</guid>
            <title>HTML vs. XHTML and validation</title>
            <link>http://brian.moonspot.net/html-vs-xhtml</link>
            <description><![CDATA[There is no shortage on the <a href=
"http://www.google.com/search?q=html+vs+xhtml">pages</a> on the
internet that talk about <a href=
"http://www.w3.org/TR/html401/">HTML</a> vs. <a href=
"http://www.w3.org/TR/xhtml11/">XHTML</a>.&nbsp; The vast majority
of these (in the first few pages of Google) seem to favor
XHTML.&nbsp; I don't really have an agenda, so I thought I would
post my thoughts on the topic.<br>
<br>
I have stated on this blog that I use HTML 4.01
Transistional.&nbsp; I do so because it is easiest for me.&nbsp;
Some people argue that XHMTL is easier because there are set rules
and if you violate those rules, the documents will not
render.&nbsp; Is that a good thing?&nbsp; Perhaps my time in the
late 90's has made my mind work differently than newcomers to the
World Wide Web.<br>
<br>
The browser wars were ugly.&nbsp; And I mean <a href=
"http://www.donmouth.co.uk/web_design/browsermuseum/browsermuseum.html">
literally ugly</a>.&nbsp; If you wanted to do anything fancy, it
required lots of images or compromise.&nbsp; I learned early on
that it was ok that the spacing in IE on my PC was larger than IE
on the Mac.&nbsp; The fonts were all different sizes from browser
to browser and OS to OS.&nbsp; I learned that graceful fallback was
part of the web.&nbsp; Even now, dealnews.com looks "adequate" in
IE 6.&nbsp; I could make it look perfect.&nbsp; But, the declining
traffic from IE6 does not merit my time to fix the errors in IE
6.<br>
<br>
So, when I start thinking about HTML vs. XHTML, I want the more
flexible of the two.&nbsp; I find syntax like nowrap='nowrap' very
annoying in XHTML.&nbsp; Especially since I can't say
nowrap='yeswrap' and it mean anything.&nbsp; nowrap=1 I could
handle.&nbsp; But, no, it has to be nowrap='nowrap'.&nbsp;
Geez.<br>
<br>
Ok, ok, this is turning into an XHTML hate post.&nbsp; I don't want
to do that.&nbsp; There are some things about XHTML that I do
like.&nbsp; I like the self closing tags.&nbsp; My OCD (which I
have brought up before) has never liked having an open tag without
a closing tag.&nbsp; so, the &lt;br /&gt; format is appealing to me
in that sense.&nbsp; I love that XHTML elements should always be
lower case.&nbsp; I hate upper case HTML.&nbsp; It just reads
funny.&nbsp; Like <a href=
"http://en.wikipedia.org/wiki/CamelCase">camel case function
names</a>.&nbsp; Some folks on our content team used to use Adobe
PageMaker to write up deals.&nbsp; They would copy and paste the
HTML from there into our CMS.&nbsp; The output would be pretty
ugly.<br>
<br>
So, I like parts of both.&nbsp; What is interesting to me is the
fact that the "big sites" on the internet don't seem concerned with
document types or validation.<br>
<br>

<table border="0" cellpadding="5" cellspacing="0">
    <tbody>
        <tr>
            <th align="left" width="33%">
                Site
            </th>
            <th align="left" width="33%">
                DocType
            </th>
            <th align="left" width="33%">
                Validates
            </th>
        </tr>

        <tr bgcolor="#EFEFEF">
            <td>
                Google
            </td>
            <td>
                None
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.google.com/">
                No</a>
            </td>
        </tr>

        <tr>
            <td>
                Yahoo
            </td>
            <td>
                HTML 4.01 Strict
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.yahoo.com/">
                No</a>
            </td>
        </tr>

        <tr bgcolor="#EFEFEF">
            <td>
                Live.com (Microsoft)
            </td>
            <td>
                XHTML 1.0 Transitional
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.live.com/">
                No</a>
            </td>
        </tr>

        <tr>
            <td>
                MSN.com
            </td>
            <td>
                XHTML 1.0 Strict
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.msn.com/">
                Yes</a>
            </td>
        </tr>

        <tr bgcolor="#EFEFEF">
            <td>
                Facebook
            </td>
            <td>
                XHTML 1.0 Strict
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.facebook.com/">
                No</a>
            </td>
        </tr>

        <tr>
            <td>
                eBay
            </td>
            <td>
                HTML 4.01 Transitional
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.ebay.com/">
                No</a>
            </td>
        </tr>

        <tr bgcolor="#EFEFEF">
            <td>
                YouTube
            </td>
            <td>
                HTML 4.01 Transitional
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.youtube.com/">
                No</a>
            </td>
        </tr>

        <tr>
            <td>
                Amazon.com
            </td>
            <td>
                None
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.amazon.com/">
                No</a>
            </td>
        </tr>

        <tr bgcolor="#EFEFEF">
            <td>
                Wikipedia
            </td>
            <td>
                XHTML 1.0 Strict
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://wikipedia.org/">
                Yes</a>
            </td>
        </tr>

        <tr>
            <td>
                MySpace
            </td>
            <td>
                XHTML 1.0 Transitional
            </td>
            <td>
                <a href=
                "http://validator.w3.org/check?uri=http://www.myspace.com/">
                No</a>
            </td>
        </tr>
    </tbody>
</table>
<br>
So, of the 10 most popular sites on the internet (according to
<a href="http://lists.compete.com/">Compete.com</a>), two don't
include a document type in their front page at all.&nbsp; Only two
of the sites validate according to the W3C.&nbsp; MSN and Wikipedia
both validated on their front page with XHTML 1.0 Strict.&nbsp;
However, neither is sending a Content-Type of
application/xhtml+xml.&nbsp; According to <a href=
"http://hixie.ch/advocacy/xhtml">this page</a>, that is a bad
thing.&nbsp; And the <a href=
"http://validator.w3.org/check?uri=http://search.msn.com/results.aspx?q=xhtml&amp;FORM=MSNH11">
search results page for XHTML on MSN.com</a> did not
validate.&nbsp; Kudos to Wikipedia.&nbsp; Their <a href=
"http://validator.w3.org/check?uri=http://en.wikipedia.org/wiki/Xhtml">
page on XHTML</a> does validate.&nbsp; Interestingly, they switch
to XHTML 1.0 Transitional for that page.<br>
<br>
So, is the internet broken?&nbsp; No.&nbsp; The most important
validation is that of your users.&nbsp; Can they use the
site?&nbsp; Does the site look right in their browser?&nbsp; Most
sites have much bigger navigation and content issues than they do
document structure.<br>
<br>
So, my idea of validation is this:&nbsp;&nbsp; Does it render the
same (or damn near) in the browsers that cover 90% of the internet
users?&nbsp; If so, then your page validates.&nbsp; The only way to
check that is (most likely without SkyNet) the human eye.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Tue, 10 Mar 2009 17:08:29 -0500</pubDate>
            <category>html</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/open-source-design</guid>
            <title>Open Source Web Design</title>
            <link>http://brian.moonspot.net/open-source-design</link>
            <description><![CDATA[So, my wife told me that my site design was boring.&nbsp; Yeah, she was right.&nbsp; I am no designer.&nbsp; I just don't have that gene.&nbsp; But, during my work on Wordcraft, I came across some cool places to find designs that are relased under Open Source licenses.<br><ul>




<li><a href="http://www.opendesigns.org/">Open Designs</a> - This is arguably the the prettiest of the three. The search, however, is painfully slow because all results return on one page.&nbsp; I guess if you can wait, this is a plus as browsing is easier.&nbsp; Also, you can pick multiple colors and choose by license.&nbsp; They only list XHTML templates (at least as search options).&nbsp; That could be a turn off if you like HTML 4 like me.</li>
<li><a href="http://www.openwebdesign.org/">Open Web Design</a> - The site itself could use a design overhaul.&nbsp; But, the content is good.&nbsp; The search lets you choose primary and secondary color, a unique feature among these sites.&nbsp; Thumbnails are a bit small though.</li>
<li><a href="http://www.oswd.org/">Open Source Web Design</a> - Their search is not as powerful as the others, but it does return very fast.&nbsp; The thumbnails are a nice size.</li>
</ul>
You will find the same content on all three sometimes.&nbsp; But, it comes down to browsing and searching.<br><br>I found my new design at one of those.&nbsp; Not sure which, I looked at a lot of them.&nbsp; I did not use the template's HTML exactly as I like HTML 4.0 and wanted a different sidebar than the original author.&nbsp; But, the design is the hard part.&nbsp; So, thanks for <a href="http://templates.arcsin.se/deep-red-website-template/">Deep Red</a>.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Mon, 17 Nov 2008 12:00:00 -0600</pubDate>
            <category>design</category>
            <category>html</category>
            <category>mysql</category>
            <category>php</category>
            <category>template</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2008/09/02/google-chrome-and-privacy/</guid>
            <title>Google Chrome and privacy</title>
            <link>http://brian.moonspot.net/2008/09/02/google-chrome-and-privacy/</link>
            <description><![CDATA[So, <a href="http://www.google.com/chrome">Google Chrome</a> is out. If you don't know, it's Google's new browser. I downloaded it on my Windows XP machine and tried it out. I found this curious thing in the options.<br>
<br><img  src="http://farm3.static.flickr.com/2385/2821806137_bbcc3e90bf_o_d.png" alt="Google Chrome Spying on you?" height="99" width="442"><br>
<br>
So, I thought, I will click "Learn more" to see what they are watching. I get this.<br>
<br><a href="http://farm4.static.flickr.com/3161/2822644662_a9e591d354_o_d.png"><img  src="http://farm4.static.flickr.com/3161/2822644662_a9e591d354_o_d.png" alt="Uh OH! 404!" height="185" width="355"></a><br>
<br>
So, I unchecked the box. Let's hope the premature launch is the reason there is no more information out there.<br>
<br>
<strong>UPDATE: </strong>The page comes up now and says:<br>
<blockquote><span class="Apple-style-span" style="border-collapse: separate; color: #353535; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0pt; text-transform: none; white-space: normal; widows: 2; word-spacing: 0pt;">Information that's sent to Google includes crash reports and statistics on how often you use Google Chrome features. When you choose to accept a suggested query or URL in the address bar, the text you typed and the corresponding suggestion is sent to Google. Google Chrome doesn't send other personal information, such as name, email address, or Google Account information.</span></blockquote><br>
So, if you use their suggestions, they know it.&nbsp; And it tracks what features you use.&nbsp; Hmm, I think I will disable.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Tue, 02 Sep 2008 14:39:27 -0500</pubDate>
            <category>Firefox</category>
            <category>HTML</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2008/02/21/forums-are-the-red-headed-step-child-of-a-web-site/</guid>
            <title>Forums are the red headed step child of a web site</title>
            <link>http://brian.moonspot.net/2008/02/21/forums-are-the-red-headed-step-child-of-a-web-site/</link>
            <description><![CDATA[I have seen it time and time again.  And yet, every time, it irritates me to no end.  You are on a professional web site.  You are navigating around and at some point you hit the link for their forums.  And just like that you feel transported to another place.  The whole site design just changes.  Colors, layout, navigation... everything.  Here are some examples, including the new C7Y site from php|Architect which inspired this post. (I really do love you guys on the podcast I promise =)<br />
<ul><br />
	<li>php|architect's C7Y - <a href="http://c7y.phparch.com/">main site</a> - <a href="http://c7y-bb.phparchitect.com/">forums</a></li><br />
	<li>Zend's Developer Zone - <a href="http://devzone.zend.com/public/view">main site</a> - <a href="http://www.zend.com/forums/">forums</a><br />
Zend's forums do at least use the Zend.com header, but you can't get to the forums from the main Zend.com site.  You have to go to the Developer Zone.</li><br />
	<li>TextPad (great windows editor) - <a href="http://www.textpad.com/">main site</a> - <a href="http://forums.textpad.com/index.php">forums</a><br />
The header is kind of the same.  Fonts and link colors change slightly though which is worse in some ways than a wholesale change.  It looks like they just wedged in their HTML into the phpBB template.</li><br />
</ul><br />
I could continue to list some here, but you get the idea.   So, what is the problem?  Does most message board software make it too hard to edit their templates?  Are forums an after thought and some underling is given the task to make them work and not allowed access to the main site's templates?<br />
<br />
Some people do better at it.  <a href="http://forums.mysql.com/">MySQL</a> for example.  Theirs is still not perfect.  An ad awkwardly appears in the forums in a way that makes it look like an error.  However, thanks to <a href="http://www.phorum.org/">Phorum</a> (cha-ching), MySQL was able to make their own log in system work with their forums.  Heck, even at <a href="http://forums.dealnews.com/">dealnews</a> I have not done that.  Mostly because our forum logins predate our site accounts for email alerts and newsletters.  I am not asking for perfection though.  I would just like to feel like the company/entitiy gave some love to making their forums part of their site and not an afterthought.<br />
<br />
So, I call for all web sites to start treating their forums like real pages.  Give them the same love and attention you give that front page or any other page.  And, if your message board software makes that hard, give Phorum a try.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Wed, 20 Feb 2008 18:07:44 -0600</pubDate>
            <category>Design</category>
            <category>HTML</category>
            <category>MySQL</category>
            <category>Phorum</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2007/10/10/my-editor-of-choice/</guid>
            <title>My editor of choice</title>
            <link>http://brian.moonspot.net/2007/10/10/my-editor-of-choice/</link>
            <description><![CDATA[So, I was listening to the <a href="http://podcast.phparch.com/main/index.php/main">Pro PHP Podcast</a> on the way home from work today.  They were talking about <a href="http://www.activestate.com/Products/komodo_ide/">Komodo</a> a lot.  I figured I would give my favorite editor a plug.  Believe it or not, it's <a href="http://www.jedit.org/">jEdit</a>.<br />
<br />
I keep trying all the latest and greatest editors out there.  I fought with Eclipse and have tried the newer more PHP centric offerings built on Eclipse.  I recently tried out Komodo Edit for a week.  I had tried the Komodo IDE when it came out for Mac a while back.  But, I just keep coming back to jEdit.<br />
<br />
<strong>What I like about it</strong><br />
<br />
The main thing that I like about jEdit over the other top contenders of the new generation is that it has a simple file browser.  It does not have the concept of "projects".  Eclipse and Komodo both have these concepts.  But, when I really got to looking at the projects in Komodo, you basically set a point in your filesystem and tell it that everything in this dir is Project Foo.  So, really, you have to have your code organized on disk anyway.  It also bugged me (in Komodo Edit at least) that my project file had to live in the same dir with my project's code.  That just seemed awkward.  Not everyone that shares my SVN is gonna want that and its gonna be sitting there in my <em>svn status</em> as an unknown file.<br />
<br />
Another thing I like about jEdit is the rather large plugin repository.  Now, it's an older project, so that is something that you would hope any established application would have.  But, if I am thinking about switching today, I have to give the nod to jEdit here.  The list is a bit Java-centric of course.  It's a Java application after all.  But, there are some good ones in there like a PHP code structure browser.  I can't live without that.  Makes finding functions or methods really easy in large libraries.<br />
<br />
<strong>What I don't like</strong><br />
<br />
Its Java so its not quite like working with a native application.  The dialogs are funny and the UI is just a bit off even with the Mac plugin that makes it more Mac looking.  Having said that, I don't want a truly "Mac like" editor.  BBEdit and XCode are not my kind of editors.  I like tabbed interfaces vs. multi windowed UIs.<br />
<br />
Its not an IDE, its an editor.  There is no debugging, at least, not easily.  There looks to be some ability to hook in debugging tools, but I have not gone through the trouble.  Of course, that could be said of many of the IDEs out there.  PHP has never had the ease of debugging that say Visual Basic had (still has?) back in 1998 when that was my full time job.  That was one thing about VB I loved.  The language was "eh".  But the IDE was really nice.<br />
<br />
<strong>Things I don't care about that you might</strong><br />
<br />
jEdit does not have an SVN plugin that I can find.  I like my command line.  I know one coworker is addicted to the Eclipse real time SVN diff highlighting.  There is a CVS plugin, but I don't know how good it is.  I am not aware of any PHP code completion, but it may be there.  I have an odd knack for remembering stuff like that and those little pop ups just annoy me.  Oh, and did I mention its Java?  That put me off for a long time.  But, it won me over.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Wed, 10 Oct 2007 00:57:25 -0500</pubDate>
            <category>Apple</category>
            <category>HTML</category>
            <category>MySQL</category>
            <category>Phorum</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2007/07/26/oreilly-open-source-conference-day-one/</guid>
            <title>O'Reilly Open Source Conference Day One</title>
            <link>http://brian.moonspot.net/2007/07/26/oreilly-open-source-conference-day-one/</link>
            <description><![CDATA[Day one is complete.  Portland is great as always.  Its really day 1 1/2 since we got in at 1PM yesterday.  That allowed us to go to the MySQL/Zend party last night.  Great party by those guys.  Touched based with old friends and made some new ones.<br />
<br />
I kind of session hopped today.  Of note, I attended Andi Gutmans PHP Security talk which really had little to do with PHP.  Like Larry Wall's onion metaphor, Andi presented an onion metaphor for security.  I stopped in for a while on the <a href="http://lucene.apache.org/solr/">SOLR</a> talk.  It looks neat.  I like that it is a REST interface to Lucene.  If we were not using Sphinx already I might take a longer look.  But, we like Sphinx and, SOLR and Lucene are Java.  Not that there is anything wrong with that, we just don't use Java a lot, so its just one more thing that would be out of the norm.  I admit I spent a good bit of time in what is being called the "hallway track" working on some code.  Work does not stop just because you are at a conference.<br />
<br />
I got to hang out with Jay Pipes of the MySQL Community team a good bit.  We talked about the <a href="http://forums.mysql.com/">MySQL forums</a> (which or course runs <a href="http://www.phorum.org/">Phorum</a>) and how they want to improve them.  They would like to see tagging, user and post rating and some other things.  Some good things will come out of that.  Hopefully they have some of the tagging stuff done already at MySQL Forge and can contribute that code to Phorum, saving us time.<br />
<br />
I hosted the Caching for fun and profit BoF.  It was not packed, but it was a good time.  The MySQL BoF was at the same time, so we lost some folks to that I am sure.  They had beer and pizza.  Brad Fitzpatrick did come by and contribute.  Thanks Brad.  It was mostly the same stuff you get on the memcached mailing list.  "How do we expire lots of cache at once?"  Questions about different clients.  Stuff like that.  It kind of turned into a memcached BoF, but I tried to share the dealnews experience with the attendees including our <a href="http://doughboy.wordpress.com/2007/06/07/five-months-with-mysql-cluster/">MySQL Cluster pushed caching</a>.<br />
<br />
I have met many readers of both <a href="http://dealnews.com/">dealnews</a> and this blog (hi to you) while here.  Glad to know that both my professional work and my personal work are of use to folks.  The demographic at this conference is dead on for dealnews.  Maybe I can get them to sponsor it next year.  That would be cool.<br />
<br />
I say every year that I want to present "next year".  Something always keeps me from doing it.  Usually its just not having time to prep for it.  By the time I think about it, the call for papers has passed.  I really want to get it done this time.  We shall see I suppose.<br />
<br />
We went to the Sun party tonight.  It was a good time.  There was beer that was free as in beer.  More hanging with friends and talking about all kinds of stuff.  Now, all you Slashdotters sit down.  I saw people from the PostgreSQL and MySQL teams drinking beer and having fun together.  OMGWTFBBQ!!!1!!  See, the people that really matter in those projects don't bicker and fight about which is better.  They just drink beer and have a good time together.<br />
<br />
Anyhow, I will blog more after day 2.  There won't be a day 3 as I have to catch an 11:30 flight back home.  That is usually how it goes.  Not sure why they book anything on Friday really.  Even O'Reilly has its "after party" on Thursday night.  Its late, and I need sleep.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Thu, 26 Jul 2007 02:52:34 -0500</pubDate>
            <category>Firefox</category>
            <category>HTML</category>
            <category>Linux</category>
            <category>MySQL</category>
            <category>Phorum</category>
            <category>PHP</category>
            <category>Programming</category>
            <category>Search</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2007/06/29/html-purifier-and-phorum/</guid>
            <title>HTML Purifier and Phorum</title>
            <link>http://brian.moonspot.net/2007/06/29/html-purifier-and-phorum/</link>
            <description><![CDATA[There have been several posts about <a href="http://htmlpurifier.org/">HTML Purifier 2.0</a> lately.  I did not look to closely at it until I saw <a href="http://www.phorum.org/phorum5/read.php?18,122731,122731#msg-122731">this post</a> on our <a href="http://www.phorum.org/">Phorum</a> support forum.  Seems the creator of HTML Purifier has chosen <a href="http://htmlpurifier.org/phorum/">Phorum for his site</a>.  I hope that means it met his standards for HTML and security.  He has posted some questions about the Phorum core.  We always welcome a fresh mind.<br />
<br />
He is writing a <a href="http://www.phorum.org/phorum5/read.php?16,122766,122766#msg-122766">module for Phorum</a> to allow straight HTML in Phorum posts.  We have an HTML module already, but its quite basic compared to what you can do with his library.  Several people have wanted to use the WYSIWYG text editors that are out there.  This should/could open that up to people.  I don't see the Phorum core ever having one, but that is what modules are for.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Thu, 28 Jun 2007 23:12:58 -0500</pubDate>
            <category>Firefox</category>
            <category>HTML</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2007/04/15/quick-script-to-check-user-bandwidth-usage/</guid>
            <title>Quick script to check user bandwidth usage</title>
            <link>http://brian.moonspot.net/2007/04/15/quick-script-to-check-user-bandwidth-usage/</link>
            <description><![CDATA[A buddy needed a quick report to see if one of his users was slamming his site.  I got a little carried away and wrote a PHP script (plus some awk and grep) to make a little report for him.  I am sure it is full of bugs and will bring your server crashing down.  So, use at your own risk.<br />
<code><br />
$ ./bwreport.php -h<br />
Usage: bwreport.php [-d YYYYMMDD] [-u URI] [-i HOST/IP] [-r REGEXP] [-v]<br />
-d YYYYMMDD     Date of the logs to parse. If no date provided, yesterday assumed.<br />
-i IP/HOST      Only report log lines with IP/HOST for host part of log line<br />
-r REGEXP       Only report log lines that match REGEXP.  Should be a valid grep regexp<br />
-u URI          Only report log lines with URI match to URI<br />
-v              Verbose mode<br />
</code><br />
<a href="http://www.phorum.org/downloads/bwreport.php.gz">http://www.phorum.org/downloads/bwreport.php.gz</a>]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Sun, 15 Apr 2007 01:51:01 -0500</pubDate>
            <category>Firefox</category>
            <category>HTML</category>
            <category>Linux</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2006/12/05/browser-keepalive-secrets/</guid>
            <title>Browser KeepAlive Secrets</title>
            <link>http://brian.moonspot.net/2006/12/05/browser-keepalive-secrets/</link>
            <description><![CDATA[So, at <a href="http://dealnews.com/">dealnews</a>, we are getting ready to launch a super secret thing (redesign beta preview) that requires us to use some cookie tricks.  What we decided to do was to give our users a link to a page that would set a cookie.  Then we configured our <a href="http://www.f5.com/products/bigip/">F5 BIG-IP</a> load balancers to direct those users with the cookie set to a different pool (back end ip/port pairs).  Its not an original idea.  <a href="http://www.yahoo.com/">Yahoo!</a> was doing something similar with their recent front page beta.  In fact, that is where I got the idea.<br />
<br />
Well, it worked great in testing with mod_rewrite (buying a $40k device for testing is not in the budget right now) on my local machine and on the test servers.  We had no problems.  However, when we turned it all on in production using the BIG-IP we got some unexpected results.  We could go to the URL to set our cookie and our site would change.  On the redesigned page, there is another link to switch you back.  It simply deleted the cookie and redirected you.  Since the cookie was gone, you would be back to the old design, right?  WRONG!  You were stuck.  But, if you did not click on any links on the site for about, oh, 15 seconds, you would get back to the old design.  I should say at this point that Safari was the only browser that did not do this.  IE, Mozilla and Opera all had this problem.<br />
<br />
Hmm, 15 seconds.  That is the default KeepAliveTimeout in Apache.   I took a chance and disabled keep alive in Firefox (about:config, search for keep, set to false).  BAM!  It all worked like a charm.  It seemed that IE, FF and Opera all keep your keep alive connection open even after the page is done loading.  And because the BIG-IP determined which pool you are connected to at connection time, you stayed connected with the new pool rather than switching back.  And, as long as you kept clicking around on our site, you would keep that connection open.<br />
<br />
As for a solution, we decided to let Apache do the work for us.  We didn't want to tell the BIG-IP to start disconnecting users on every request.  Instead, we used a Location directive and SetEnv to set the nokeepalive environment variable only when users access the page that sets/unsets the cookie.  Now Apache sends the Connection: close header and the browsers comply.  You can see an immediate difference too.  Firefox for example has a noticable pause while it closes the connection and makes a new one.  I am going to dig around in the BIG-IP manual some more to see if there is anything we can do to make this work at the load balancer layer.  But, I don't really want my load balancers spending CPU cycles on something that will not be an issue once this redesign is launched.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Mon, 04 Dec 2006 18:40:25 -0600</pubDate>
            <category>Firefox</category>
            <category>HTML</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2006/08/11/dealnewscom-is-hiring/</guid>
            <title>dealnews.com is hiring</title>
            <link>http://brian.moonspot.net/2006/08/11/dealnewscom-is-hiring/</link>
            <description><![CDATA[From our <a href="http://dealnews.com/jobs.html">jobs page</a>:<br />
<br />
<i>As a dealnews web developer, you will help maintain our current stable of deal and price-tracking web sites, and build new features and new web sites as we continue to grow.  You'll be part of a small, fast-moving <a href="http://dealnews.com/developers/">team of developers</a> that are involved at every stage of product development, from concept to rollout.</i><br />
<br />
We use Gentoo, Apache, PHP and MySQL.   While that does not need to be your expertise, it is a plus.  We have a little Perl and Python thrown in as well.  You will need to code on a non-Windows system as we run our development environment on our local machines.  Currently, we all use Macs.<br />
<br />
A big plus, however, is <a href="http://www.pdga.com/">disc golf</a>.  We play weekly as an um, team building excercise. Yeah, team building.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Fri, 11 Aug 2006 13:00:33 -0500</pubDate>
            <category>Apple</category>
            <category>Disc Golf</category>
            <category>HTML</category>
            <category>Linux</category>
            <category>MySQL</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
        <item>
            <guid>http://brian.moonspot.net/2006/08/09/the-lost-lh-element/</guid>
            <title>The lost LH element</title>
            <link>http://brian.moonspot.net/2006/08/09/the-lost-lh-element/</link>
            <description><![CDATA[So, in the modern world, navigation in HTML often involves using lists.  You know, the ol and ul elements.  Most of the time, a list of navigation items have some sort of header.  I have done several things in the past to make that header look different.  That includes making it not part of the list, breaking specs and putting it outside of any li element, and using a class on the first element.  I was thinking, we really need an lh element like the th that tables have.  Its a handy way to have a heading that is still part of the document structure.<br />
<br />
Well, on more than one occasion, I have found an element that I had forgotten or did not know existed.  I recently started using the dl, dd, dt tag elements for example.  So, I figured I would look to see if I had just missed it.  I check <a href="http://www.devguru.com/Technologies/xhtml/quickref/xhtml_intro.html">DevGuru</a> for the &lt;lh&gt;, but no luck. So, I ran a <a href="http://search.yahoo.com/search?p=lh+tag+html">search on Yahoo!</a>.  Much to my surprise, there were many examples of this very element in use.  I got excited.  Maybe it was some deprecated HTML 2.0 element or something.  Upon more research, I found that &lt;lh&gt; was part of the <a href="http://www.w3.org/MarkUp/html3/html3.txt">HTML 3.0</a> spec which expired.  HTML 3.2 was later written and did not include&lt;lh&gt;.  HTML 3.0 was never more than a draft.  What a shame.  This little element could be making life a lot easier in a CSS world.<br />
<br />
There is some good news though.  <a href="http://www.w3.org/TR/xhtml2/">XHTML 2.0</a> will implement the <a href="http://www.w3.org/TR/xhtml2/mod-list.html#sec_11.5.">&lt;label&gt; element</a> for lists.  And if you if do not obsess about your page validating, Firefox, IE, Safari and Opera all recognize the label element inside and ol or li already.  If someone emails you telling you your page is not valid HTML, tell them you are ahead of your time.]]></description>
            <dc:creator>brianlmoon</dc:creator>
            <pubDate>Wed, 09 Aug 2006 13:50:28 -0500</pubDate>
            <category>Design</category>
            <category>HTML</category>
            <category>PHP</category>
            <category>Programming</category>
        </item>
    </channel>
</rss>
