<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Full of BS &#187; Web and Web Standards</title>
	<atom:link href="http://fullof.bs/category/web-and-web-standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://fullof.bs</link>
	<description>He just never stops talking</description>
	<lastBuildDate>Mon, 19 Oct 2009 15:08:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WebKit overflow:hidden and clear:none clipping failure</title>
		<link>http://fullof.bs/webkit-overflowhidden-and-clearnone-clipping-failure/</link>
		<comments>http://fullof.bs/webkit-overflowhidden-and-clearnone-clipping-failure/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 01:30:35 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[apple safari]]></category>
		<category><![CDATA[apple webkit]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[clear]]></category>
		<category><![CDATA[clear none]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[defect]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[none]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[overflow hidden]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=473</guid>
		<description><![CDATA[There is a failure in WebKit to honor overflow:hidden with clear:none on child elements.  This prevents several cheesy no-table space filling strategies which have worked portably since IE3 from working in WebKit derived browsers (safari, chrome, etc.)
Test case with screen shots and examples.
I have submitted this as Bug 23221.
]]></description>
			<content:encoded><![CDATA[<p>There is a failure in WebKit to honor overflow:hidden with clear:none on child elements.  This prevents several cheesy no-table space filling strategies which have worked portably since IE3 from working in WebKit derived browsers (safari, chrome, etc.)</p>
<p><a title="WebKit clipping failure" href="http://fullof.bs/outgoing/clipfail.html" target="_blank">Test case with screen shots and examples</a>.</p>
<p>I have submitted this as <a title="WebKit Bug 23221" href="https://bugs.webkit.org/show_bug.cgi?id=23221" target="_blank">Bug 23221</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/webkit-overflowhidden-and-clearnone-clipping-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype: EEP18 Considered Harmful: The problems with Erlang to JSON term translation</title>
		<link>http://fullof.bs/prototype-eep-18-considered-harmful-the-problems-with-erlang-to-json-term-translation/</link>
		<comments>http://fullof.bs/prototype-eep-18-considered-harmful-the-problems-with-erlang-to-json-term-translation/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 20:40:26 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[General Interest]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[bif]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[eep]]></category>
		<category><![CDATA[eep 18]]></category>
		<category><![CDATA[eep18]]></category>
		<category><![CDATA[eeps]]></category>
		<category><![CDATA[erlang enhancement proposal 18]]></category>
		<category><![CDATA[javascript object notation]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[json bif]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=402</guid>
		<description><![CDATA[THIS IS ONLY HALF WRITTEN.  I have been sitting on this post, waiting for the mood to finish it, for months; because EEP18 is now being treated as a likely implement, I am immediately publishing the half-written version, because it exposes many (though not all) of the serious, irreconcilable problems with EEP18.
On the mailing list, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000"><em><strong>THIS IS ONLY HALF WRITTEN.  I have been sitting on this post, waiting for the mood to finish it, for months; because EEP18 is now being treated as a likely implement, I am immediately publishing the half-written version, because it exposes many (though not all) of the serious, irreconcilable problems with EEP18.</strong></em></span></p>
<p>On the mailing list, people are actively trying to bring Erlang up to snuff with regards to web standards.  One of the more unfortunate choices being discussed is JSON as a data notation.  JSON, unfortunately, does not actually map to Erlang in a useful way.  Joe Armstrong has gone as far as to suggest BIFs, which are decidedly unrealistic as well as unnecessary.  My goal is to create a JSON handling library.  However, the mailing list is beginning to put momentum behind an alternative proposal which is currently presented in BIF form.</p>
<p>This post explains why my approach is different.  Many of the issues herein are discussed by <a title="Richard O'Keefe's EEP18, JSON BIFs" href="http://www.erlang.org/eeps/eep-0018.html" target="_blank">the tabled EEP</a> (EEP 18, &#8220;JSON BIFs&#8221; by Rickard O&#8217;Keefe), but some are not, and some of these issues are accepted when I believe they should not be.  <span style="text-decoration: underline"><strong>It is my position that EEP 18 is unacceptably dangerous</strong></span>.  I will explain why.</p>
<p><span id="more-402"></span></p>
<p>This paper assumes you are familiar with Erlang and with fundamental containers (the list, the array and the key/value map).  It is very helpful, but not required, to be familiar with JSON, or JavaScript or any ECMA derived language such as ActionScript.</p>
<h1>Premise</h1>
<p>There&#8217;s a movement starting to use Erlang for web work.  There are several stumbling blocks to that end.  Among them are a simple primary webserver, a simple primary unicode system and a simple primary JSON manager.</p>
<p>The webserver problem is mostly solved: there&#8217;s the httpd module, there&#8217;s yaws, there&#8217;s mochiweb, there&#8217;s the currently unavailable work at Tobbe&#8217;s Red Hot Erlang Blog, there&#8217;s even Joe&#8217;s HTTPD tutorial.  YAWS and MochiWeb in particular get a lot of action these days.  The situation isn&#8217;t amazingly straightforward, but it&#8217;s fairly straightforward; we&#8217;re in &#8220;Good Enough&#8221; territory.  (I&#8217;m building another webserver that behaves like factor&#8217;s drop-and-go server, based on Joe&#8217;s tutorial, but that&#8217;s not for here.)</p>
<p>The unicode problem, however, as well as the JSON problem, are not solved.  Unfortunately, whereas the Erlang community has had the foresight to deal with complex problems in modules first then to move them to syntax later, this process seems to be failing with both JSON and Unicode.  It can be argued that some of the choices made in each process are dangerous.  This community will, by and on the whole, remember the re: module, which is being replaced now with a partially incompatible successor that takes account of limitations and problems in the prior attempt, as well as moves to a stronger RE dialect.  It is important that this ability be retained for JSON and Unicode, both of which are subtly strikingly difficult problems, and both of which are unlikely to be Gotten Right™ on their respective first attempts.</p>
<h1>The Principle of Least Surprise</h1>
<p>One of the most important parts of writing libraries is to not write nasty shocks into place for users.  In transcoding libraries, there is one rule that defines least surprise more powerfully than any other: <em><strong>round-trip translations must not lose data</strong></em>.  No configuration of EEP 18 can achieve this.  Indeed, it is my position that a one to one translation of JSON to Erlang terms cannot exist, and that any attempt to present a not-1:1 translation as a translation is unacceptable, in that people will expect <span style="color: #0000ff"><code>j2e(e2j(X)) == X</code></span>, and that cannot be true.  This is especially important given that the suggestion that these translations become BIFs seems to be being taken seriously; <span style="color: #0000ff"><code>foo_to_bar(X)</code></span> bifs are currently never lossy, and this would create a worrying change in the meaning of several basic naming practices.</p>
<p>It is of critical importance, in my opinion, that we do not provide libraries which fail round-trip conversion in either direction.  At this time, EEP 18 attempts to satisfy this clause with creation-time configurability; I will explain my stance that this is inadequate below.</p>
<h1>Why Translation is Unclear</h1>
<p>There are, in fact, quite a few problems that prevent 1:1 translation.  We&#8217;ll go over them one by one.</p>
<ol>
<li>The notations offer different fundamental containers
<ol>
<li>Erlang offers dense sequence (&#8220;tuple&#8221;, <span style="color: #0000ff"><code>{}</code></span>) and singly linked list (&#8220;list&#8221;, <span style="color: #0000ff"><code>[]</code></span>) containers.  The erlang standard library offers other containers; I discuss later in this document why I&#8217;m not using them.</li>
<li>JSON offers dense sequence (&#8220;array&#8221;, <span style="color: #0000ff"><code>[]</code></span>) and key-value map (&#8220;object&#8221;, <span style="color: #0000ff"><code>{}</code></span>) containers.  That&#8217;s it.</li>
</ol>
</li>
<li>The notations offer different fundamental datatypes
<ol>
<li>JSON has a fundamental string type; erlang doesn&#8217;t.</li>
<li>Erlang has atoms; JSON doesn&#8217;t.</li>
<li>JSON has booleans and &#8220;null&#8221;; Erlang doesn&#8217;t.  For transcoding, pretending they&#8217;re atoms creates ambiguity, and is therefore unacceptable.</li>
<li>JSON has explicit support for unicode characters in strings.  Erlang doesn&#8217;t have strings at all, but rather lists of characters (in the way that C has arrays of characters).  Those lists are context and usage defined; C++ programmers may think of this as parallel to array strings vs std::string.  Erlang currently has no concept of Unicode (<span style="color: #999999"><em>though that&#8217;s another issue I&#8217;m working on as divergent from the current mailing list / EEP approach</em>.</span>)</li>
<li>JSON and Erlang have very different lists of quoted terms for strings.
<ol>
<li>Erlang supports embedded octal with shortening, and a bunch of semi-defunct control characters like form feed (<span style="color: #0000ff"><code>"\f"</code></span>) and escape (<span style="color: #0000ff"><code>"\e"</code></span>).</li>
<li>JSON supports 16-bit Unicode character embedding.</li>
<li>Problematically, JSON does not define whether that embedding is UTF16, UCS2 or something else.  Most software implementations assume UTF16.  This document will carefully avoid the issue, which is a serious defect in this document, and a serious defect in JSON.</li>
</ol>
</li>
<li>Erlang terms are byte-available, meaning Erlang programmers may be aware of endianness; JSON objects are not.  This suggests that the handling library needs to either make a choice about internal endianness, or needs to provide control to the user.</li>
</ol>
</li>
<li>The notation for similar containers is dissimilar</li>
<li>Similar notations are similar, not identical</li>
<li>Dangerous string ambiguities</li>
</ol>
<p>Working from http://sc.tri-bit.com/outgoing/scjson%20parser%20halp.html</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/prototype-eep-18-considered-harmful-the-problems-with-erlang-to-json-term-translation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gearing Up for Public SVN</title>
		<link>http://fullof.bs/gearing-up-for-public-svn/</link>
		<comments>http://fullof.bs/gearing-up-for-public-svn/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 16:01:46 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Game Algorithms]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[a*]]></category>
		<category><![CDATA[astar]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[embeddable]]></category>
		<category><![CDATA[htstub]]></category>
		<category><![CDATA[Public svn]]></category>
		<category><![CDATA[regression test]]></category>
		<category><![CDATA[scastar a star]]></category>
		<category><![CDATA[scutil]]></category>
		<category><![CDATA[stochastic test]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=271</guid>
		<description><![CDATA[I&#8217;m going to be releasing a few new libraries in the next several days, both by archive and public subversion.  I&#8217;ve already bought the domains and built a forum for them.  I even wasted a couple hours subversion automating everything down to the line of having little library websites made automatically, with custom per-library color [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to be releasing a few new libraries in the next several days, both by archive and public subversion.  I&#8217;ve already bought the domains and built a forum for them.  I even wasted a couple hours subversion automating everything down to the line of having little library websites made automatically, with custom per-library color palettes.</p>
<p>I was a little bored.</p>
<p>So we&#8217;re going to have three libraries progressing in the immediate future, with quite a few more over time:</p>
<ol>
<li><a title="HtStub - an embeddable Erlang webserver" href="http://htstub.com/" target="_blank">HtStub</a> &#8211; An embeddable, zero-config, zero-behavior secure Erlang webserver</li>
<li><a title="StoneCypher's A* library, with tutorial" href="http://scastar.com/" target="_blank">SC A-Star</a> &#8211; An efficient, modular ECMAscript (flash/actionscript, javascript, jscript etc) A* implementation with support for custom grid geometries (<em>includes algorithm tutorial</em>)</li>
<li><a title="TestErl - an erlang library for unit, regression and stochastic testing" href="http://testerl.com/" target="_blank">TestErl</a> &#8211; unit, regression and stochastic testing for Erlang</li>
<li><a title="ScUtil - StoneCypher's erlang utility library" href="http://scutil.com/" target="_blank">ScUtil</a> &#8211; a fairly large list of gap filling functionality for Erlang</li>
</ol>
<p>In the near future, I will add C++ and PHP libraries, as well as many some libraries for more obscure languages like FormulaONE, Mozart-Oz, Factor and maybe (sadly) Delphi.  I have more than 30 libraries ready for release.</p>
<p>All those repos are pretty empty at the moment.  That will change in coming days, and I&#8217;m sure I&#8217;ll post lots of boring little snippets here about whatever minor new thing my crap does.</p>
<p>Yay!</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/gearing-up-for-public-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bought a bunch of Erlang library related domains</title>
		<link>http://fullof.bs/bought-a-bunch-of-erlang-library-related-domains/</link>
		<comments>http://fullof.bs/bought-a-bunch-of-erlang-library-related-domains/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 18:56:52 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[htstub]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[regression test]]></category>
		<category><![CDATA[scutil]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testerl]]></category>
		<category><![CDATA[unit]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=265</guid>
		<description><![CDATA[I&#8217;ve actually built a bunch of small Erlang libraries which I find tremendously useful.  Over the last weekend, I&#8217;ve set up public SVN for a lot of them, built a small forum and started a project manager.  I&#8217;m actually restarting each and every project in the light of better adherence to best practices, since the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve actually built a bunch of small Erlang libraries which I find tremendously useful.  Over the last weekend, I&#8217;ve set up public SVN for a lot of them, built a small forum and started a project manager.  I&#8217;m actually restarting each and every project in the light of better adherence to best practices, since the code&#8217;s going to be distributed now, such as test suites from ground zero, but the point is, I&#8217;m making my libraries available and easy to find now.</p>
<p>The first three I&#8217;m going to release are <a title="Redirects to the scutil site" href="http://scutil.com/" target="_blank">scutil</a>, <a title="Redirects to the testerl site" href="http://testerl.com/" target="_blank">testerl</a> and <a title="Redirects to the htStub site" href="http://htstub.com/" target="_blank">htstub</a>.</p>
<ul>
<li><a title="Redirects to the scutil site" href="http://scutil.com/" target="_blank">scutil</a> is my personal utility library.  It&#8217;s a hodgepodge of semi-random stuff.  there&#8217;s a whole lot of crap down there.</li>
<li><a title="Redirects to the testerl site" href="http://testerl.com/" target="_blank">testerl</a> is a unit/regression and stochastic testing library.  One of the main goals of testerl is to have low impact on the code it tests, which it achieves through a single module attribute and a list (syntax identical to export) of the non-exported functions that the test rig needs access to for testing.</li>
<li><a title="Redirects to the htStub site" href="http://htstub.com/" target="_blank">htstub</a> is a socket manager and HTTP protocol implementation.  It&#8217;s not a webserver &#8211; it has no filesystem access and doesn&#8217;t know how to respond to requests &#8211; it&#8217;s more of a transparent way to handle HTTP.  htstub is useful for adding a web front end to applications.</li>
</ul>
<p>I actually intend to release some c++, actionscript, php, javascript and delphi stuff soon too, If I Get Around To It &#8482;; that said, now that I have SVN largely automated, it&#8217;s quite likely.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/bought-a-bunch-of-erlang-library-related-domains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What would make a good image plugin?</title>
		<link>http://fullof.bs/what-would-make-a-good-image-plugin/</link>
		<comments>http://fullof.bs/what-would-make-a-good-image-plugin/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 15:56:40 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Blog Meta]]></category>
		<category><![CDATA[Daily Image]]></category>
		<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[General Interest]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Picture Links]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[Word Press]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=214</guid>
		<description><![CDATA[I&#8217;ve been thinking about making an image plugin for WordPress.  I want to restart my image of the day process, but the import process has been dreadful, and there&#8217;s no programmatic access to the image list, meaning things like random images and images from subgroups aren&#8217;t particularly reasonable.  To that end I need to write [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about making an image plugin for WordPress.  I want to restart my image of the day process, but the import process has been dreadful, and there&#8217;s no programmatic access to the image list, meaning things like random images and images from subgroups aren&#8217;t particularly reasonable.  To that end I need to write my own, and since I&#8217;d love the rank that comes from having a high-usage plugin, I need a clear idea of what things go into an image plugin, what features are missing from existing plugins, et cetera.</p>
<p>I&#8217;m already doing complex efficient randomization, API access, bulk posting, timed bulk posting, base autotagging, auto-categorization, a catalog widget, and I&#8217;m going to make sure that my stuff is compatible with the <a title="All In One SEO pack" href="http://semperfiwebdesign.com/" target="_blank">All In One SEO pack</a>.  I&#8217;m going to provide integration points, and I&#8217;m going to provide an example integration with LightBox, or one of its relatives.  I&#8217;m going to provide voting, moderated tag suggestion and home-post permalinking.</p>
<p>I&#8217;ll also be writing strict, browser/version portable code without hacks.  Yay!</p>
<p>Please let me know what you&#8217;d want to see if there were a new image plugin coming out.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/what-would-make-a-good-image-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IANA / ICANN Gambling!  Place your bets, be a psychic</title>
		<link>http://fullof.bs/iana-icann-gambling-place-your-bets-be-a-psychic/</link>
		<comments>http://fullof.bs/iana-icann-gambling-place-your-bets-be-a-psychic/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 04:40:58 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Bunk News]]></category>
		<category><![CDATA[Competitions]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[General Interest]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web and Web Standards]]></category>
		<category><![CDATA[gamble]]></category>
		<category><![CDATA[gambling]]></category>
		<category><![CDATA[gtld]]></category>
		<category><![CDATA[iana]]></category>
		<category><![CDATA[icann]]></category>
		<category><![CDATA[psychic]]></category>
		<category><![CDATA[tld]]></category>
		<category><![CDATA[v1ld]]></category>
		<category><![CDATA[vanity domain]]></category>

		<guid isPermaLink="false">http://fullof.bs/?p=210</guid>
		<description><![CDATA[It occurred to me that I have a great way to prove the mighty powers of Nostradumbass.
[SB digg, reddit]ICANN has announced their intent to allow the registration of new gTLDs in a repeated auction process, starting for the princely sum of $100,000 for a handful of letters.  In IRC in debate the question came up [...]]]></description>
			<content:encoded><![CDATA[<p>It occurred to me that I have a great way to prove the mighty powers of Nostradumbass.</p>
<p>[SB digg, reddit]ICANN has announced their intent to allow the registration of new gTLDs in a repeated auction process, starting for the princely sum of $100,000 for a handful of letters.  In IRC in debate the question came up how many vanity 1st level domains (hereafter vanity 1ld) would be purchased.</p>
<p>[digg-reddit-me]For the purposes of competition &#8211; and there&#8217;s no money involved, I just said gambling to whore diggs and such &#8211; a vanity 1LD is defined as a gTLD which represents the name of a person, company or organization.  This means that .porn is not a vanity 1tld, even though it&#8217;ll certainly be owned by a pornographer, because it&#8217;s named for its content.  By contrast, .microsoft is a vanity 1LD, as is .billclinton (which probably won&#8217;t get bought; I&#8217;m just being thorough in definition and Bill has a good sense of humor.)  If a 1LD is assigned on basis of trademark, it&#8217;s pretty much in like Flynn.</p>
<p>So.  Where&#8217;s the psychicitudeness?</p>
<p>I predict that approximately 950 vanity 1LDs will be purchased in the first auction.  (<em>This has the startling price tag of ninety five million dollars minimum</em>.)</p>
<p>Anyone want to play The Price is Right with me?  Place your bet in comments (<span style="text-decoration: underline">preferably as a trackback; this is a new domain and I could use some rank</span>).  Whoever gives the nearest answer to the number that turns out to be correct wins.  (No price is right rules; going over isn&#8217;t different than going under.)</p>
<p>Incidentally, if you guys are worried I&#8217;ll edit my post after the fact, just check Internet Archive for the day before the auction.  I can&#8217;t cheat; I&#8217;m being watched by www.bigbroth.er .</p>
<blockquote><p>Bring it.  <span style="text-decoration: underline"><strong>950</strong></span>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/iana-icann-gambling-place-your-bets-be-a-psychic/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mod_rewrite not working?</title>
		<link>http://fullof.bs/mod_rewrite-not-working/</link>
		<comments>http://fullof.bs/mod_rewrite-not-working/#comments</comments>
		<pubDate>Wed, 21 May 2008 02:57:21 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=217</guid>
		<description><![CDATA[Here&#8217;s what you forgot:

 AllowOverride All     &#60;&#8211; this probably says &#8220;none&#8221;; fix it
 AllowOverride All     &#60;&#8211; it&#8217;s in two different parts of httpd.conf, so fix it again
LoadModule somepath/mod_rewrite.so    &#60;&#8211; uncomment this, and check if the file&#8217;s actually there


]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s what you forgot:</p>
<ol>
<li><span style="font-family: verdana;color: #000000;font-size: x-small"> AllowOverride All     &lt;&#8211; this probably says &#8220;none&#8221;; fix it</span></li>
<li><span style="font-family: verdana;color: #000000;font-size: x-small"> AllowOverride All     &lt;&#8211; it&#8217;s in two different parts of httpd.conf, so fix it again</span></li>
<li><span style="font-family: verdana;color: #000000;font-size: x-small">LoadModule somepath/mod_rewrite.so    &lt;&#8211; uncomment this, and check if the file&#8217;s actually there<br />
</span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/mod_rewrite-not-working/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Holy ECMA Hacks, Batman: the Weirdest Path To Default Arguments Ever</title>
		<link>http://fullof.bs/holy-ecma-hacks-batman-the-weirdest-path-to-default-arguments-ever/</link>
		<comments>http://fullof.bs/holy-ecma-hacks-batman-the-weirdest-path-to-default-arguments-ever/#comments</comments>
		<pubDate>Wed, 13 Sep 2006 19:46:12 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/174</guid>
		<description><![CDATA[Yeah, so, I&#8217;m having a hard time adressing the weirdness that is ParentNode&#8217;s approach to default functions.  Basically he sets a hook on the prototype for calling the function, and in that he makes a new function which checks for the presence of a particular member (we remember that functions are objects in ECMA, [...]]]></description>
			<content:encoded><![CDATA[<p>Yeah, so, I&#8217;m having a hard time adressing the weirdness that is <a href="http://parentnode.org/javascript/default-arguments-in-javascript-functions/">ParentNode&#8217;s approach to default functions</a>.  Basically he sets a hook on the prototype for calling the function, and in that he makes a new function which checks for the presence of a particular member (we remember that functions are objects in ECMA, I trust.)  If that member exists, he chops it up, and for each argument in the original function call, he tests for undefinedness, and if that&#8217;s present, he fills in the value.  (This one is order-based default, but there&#8217;s also a by-name default.)</p>
<p>Now, I think it&#8217;s a little impractical, and it leads to a mind-bleedingly weird syntax, but it&#8217;s actually struck me that this is a very clean, very terse format for providing something akin to uniform construction behavior when you&#8217;re dealing with multiple manufacture paths to a given object.  Granted, it&#8217;d be an even bigger, even uglier hack, but still, it&#8217;d work.</p>
<p>Witness syntax:</p>
<blockquote><p>function exampleF(foo, bar, baz) { &#8230; }.defaults(1, 3, 7);</p></blockquote>
<p>Hear that crashing sound?  It&#8217;s your mind, breaking.  But, as much as I hate to admit it, this is one genuinely lovable hack.  Bravo.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/holy-ecma-hacks-batman-the-weirdest-path-to-default-arguments-ever/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Checklist for Embedded IE</title>
		<link>http://fullof.bs/checklist-for-embedded-ie/</link>
		<comments>http://fullof.bs/checklist-for-embedded-ie/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 02:13:56 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/163</guid>
		<description><![CDATA[MSHTML is an awesome user interface tool, but it has a whole lot of standard behaviors, many of which aren&#8217;t what one wants for an application (since it&#8217;s designed for the web.)  This is a list of stuff you need to do to embed IE COM and have it behave like a normal application. [...]]]></description>
			<content:encoded><![CDATA[<p>MSHTML is an awesome user interface tool, but it has a whole lot of standard behaviors, many of which aren&#8217;t what one wants for an application (since it&#8217;s designed for the web.)  This is a list of stuff you need to do to embed IE COM and have it behave like a normal application.  There&#8217;s more than a person might expect.</p>
<p><span id="more-153"></span></p>
<ul>
<li>Suppress the user interface.  IE starts with most of its interface turned off, but a few things aren&#8217;t.  Notable things to include are to suppress the context menu and keyboard navigation.</li>
<ul>
<li>There are several ways to suppress the context menu.  The easiest way is to do it in the html.  Add <u>oncontextmenu=&#8221;return false;&#8221;</u> to your &lt;body&gt; and the problem just goes away, and it&#8217;s easily manually overridden for specific elements later.</li>
<li>Alternately, you can override the interface programmatically through <a title="IDocHostUIHandler Interface" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/idochostuihandler.asp">IDocHostUIHandler</a>.</li>
</ul>
<li>Get rid of the OnNavigate noise (the clicking sound when you hit a link.)  <a title="Suppressing OnNavigate" href="http://blog.sc.tri-bit.com/archives/162">This is harder than it should be</a>.</li>
<li>Prevent keyboard navigation.  If you only ever navigate once, and then do everything else in DHTML, this isn&#8217;t an issue, because there&#8217;s nothing to go forward or back to.  However, if you need to, the way to do this is to capture <a title="BeforeNavigate2" href="http://windowssdk.msdn.microsoft.com/en-us/library/ms628868.aspx">DWebBrowserEvents2::BeforeNavigate2()</a> and fill its last parameter, VARIANT_BOOL*&amp; Cancel, to true.  For security reasons this can&#8217;t be done in HTML without a garish ugly dialog box confirmation.</li>
<li>Prevent dragging and dropping links.  Do this with BeforeNavigate2() just like keyboard navigation.</li>
<li>Prevent selection.  The easiest way to do that is in the HTML by adding <u>onselectstart=&#8221;return false;&#8221;</u> to the &lt;body&gt;, which is also easily overridden for child elements where appropriate.  If you need it programmatically, such as a block which can be turned from and to editability, that&#8217;s in IDocHostUIHandler.</li>
<li>Handle some keys directly.  Particularly often, control keys, tab and f-keys need very different interpretations in applications than are the defaults in IE.  Some keys can be reliably intercepted in JScript, but not all of them.  For lightweight stuff, use JScript; it&#8217;ll be less painful.  However, if you need real control, you need to provide an <a title="Handle keypresses" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/translateaccelerator.asp">IDocHostUIHandler::TranslateAccelerator()</a> implementation.</li>
<li>Suppress the interior border.  People are often surprised that they turn off the window border in IE, and yet it seems to still appear.  That&#8217;s because IE&#8217;s default stylesheet puts an inset bevel on every web page.  Turn that off in CSS by writing <u>body { border: 0; }</u>.</li>
<li>Begin to embed your images and other support media as resources, and access them with <a title="The res protocol" href="http://msdn.microsoft.com/workshop/networking/predefined/res.asp">the res:// protocol</a>.</li>
<ul>
<li>One ugly caveat: I have never found any variation of the DirectX PNG alpha filter hack which works with res://, and I&#8217;ve looked often and at some very weird variations.  It is my current belief that a PNG cannot be embedded through res:// and still be fixed for alpha.  This leads to the unfortunate case of requiring at least part of your resources on disk.  If anyone knows a way around this, a heads-up would be <em>greatly</em> appreciated.</li>
</ul>
<li>Set up a system to exchange messages between IE DOM/DHTML/JScript and your application.  There are a bujillion ways to do this, but I tend to use a combination of intercepted element events (mostly OnClick in <a title="NO U INVOKE" href="http://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents/dwebbrowserevents.asp">WebBrowserEvents Invoke</a>,) DOM extension behaviors that allow me to call C++ directly from JScript through <a title="The missing link" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/getexternal.asp">IDocHostUIHandler::GetExternal()</a>, and executing scripts directly on the DOM object through <a title="Do what I say, DOM" href="http://msdn.microsoft.com/workshop/browser/mshtml/reference/ifaces/window2/execscript.asp">IHTMLWindow2::execScript()</a>.</li>
<li>Build everything in the to be inside a container; make the body itself <u>overflow: none</u>.  This prevents several ugly re-layout quirks which we&#8217;re used to on the web but not in applications, when content gets long.</li>
<ul>
<li>Start the container invisible, and make the black.  That way, during the lag while resources are being loaded, you have a reasonable appearance.  Black flashes look correct.  White flashes look broken.</li>
<li>Set an <u>onload=&#8221;HandleLoad();&#8221;</u> function for the &lt;body&gt;.  That way, you know when all resources are loaded, and thus when it&#8217;s safe to take the invisible clause off of the main container.</li>
<li>Set the main container <u>position:relative</u>, to make absolute positioning of contained elements easier.</li>
</ul>
<li>Build your web page in as a resource, and load it through <a title="How to load a document without about:blank and its white flash." href="http://msdn.microsoft.com/workshop/browser/mshtml/reference/ifaces/document2/write.asp">IHtmlDocument2::write()</a>.  This allows you to load a document at runtime without using about:blank (which most people use, but which causes a brief white flash before your application loads; very unprofessional looking.)  You&#8217;ll need <a title="SafeArrayAccessData" href="http://windowssdk.msdn.microsoft.com/en-us/library/ms221620.aspx">SafeArrayAccessData()</a> and <a title="SafeArrayUnaccessData" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/automat/html/61b482cb-f0a3-4efb-9a68-f373f241e89a.asp">SafeArrayUnaccessData()</a> to use write() safely.  When it comes time to skin or internationalize, and when you&#8217;re dealing with a compile cycle which is just linking, you&#8217;ll thank me for this.</li>
<li>Suppress dragging on links and buttons.  If you don&#8217;t, people will be able to drag them outside the app and onto the desktop as shortcuts, and when followed those shortcuts will lead into your HTML page from the outside (which is, surprisingly, legal.)</li>
<li>Consider compressing your executable, such as with <a title="Universal Packer for Executables" href="http://upx.sourceforge.net/">UPX</a>, which makes resources unreadable externally.</li>
<li>Set an id on your &lt;body&gt;.  The is considered the origin of most events which don&#8217;t have a clear origin, and that means that catching these events is a lot easier (catching by id is the most straightforward way to sort out sources.)</li>
<li>Resist the urge to use runtime styles.  They&#8217;re not worth the problems they cause.</li>
</ul>
<p>That should get the new IE user through some common foibles.  I&#8217;ve probably missed stuff; if you can think of something, lemme know.  I do not currently know of a way to embed flash, unfortunately, without leaving available an extra file.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/checklist-for-embedded-ie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Usable Design and the RIAA</title>
		<link>http://fullof.bs/usable-design-and-the-riaa/</link>
		<comments>http://fullof.bs/usable-design-and-the-riaa/#comments</comments>
		<pubDate>Mon, 26 Jun 2006 06:29:55 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/142</guid>
		<description><![CDATA[Yeah, it&#8217;s dead short: the RIAA&#8217;s page sucks.  Some douche came onto IRC looking for help building a music piracy site, so I went to try to report it at the RIAA.  I couldn&#8217;t find a place to report it.  (I reported it to the MPAA and lied and said there were [...]]]></description>
			<content:encoded><![CDATA[<p>Yeah, it&#8217;s dead short: the RIAA&#8217;s page <strong>sucks</strong>.  Some douche came onto IRC looking for help building a music piracy site, so I went to try to report it at the RIAA.  <em>I couldn&#8217;t find a place to report it</em>.  (I reported it to the MPAA and lied and said there were movies in there too.  Hopefully they&#8217;ll pass it on.)</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/usable-design-and-the-riaa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
