<?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>Neural Core Dump &#187; Internet</title>
	<atom:link href="http://www.jeffdarlington.com/category/technology/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeffdarlington.com</link>
	<description>The personal blog of Jeffrey T. Darlington, creator of General Protection Fault</description>
	<lastBuildDate>Sat, 28 Jan 2012 20:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>An Open Letter to Mobile Browser Developers</title>
		<link>http://www.jeffdarlington.com/2011/03/22/an-open-letter-to-mobile-browser-developers/</link>
		<comments>http://www.jeffdarlington.com/2011/03/22/an-open-letter-to-mobile-browser-developers/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 14:26:16 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[client certificate]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=435</guid>
		<description><![CDATA[If you&#8217;ve been following my Twitter account at all, you&#8217;ve probably noticed by now that I&#8217;ve become an avid mobile device (i.e. smartphone) user, and a fan of Android in particular. This isn&#8217;t just a passing phase for me, nor is this a technology fad that&#8217;s just going to fade away. Mobile technology is really [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve been following <a title="GPFJeff on Twitter" href="https://twitter.com/gpfjeff">my Twitter account</a> at all, you&#8217;ve probably noticed by now that I&#8217;ve become an avid mobile device (i.e. <a title="Smartphone article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Smartphone">smartphone</a>) user, and a fan of <a title="Android (operating system) article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Android_%28operating_system%29">Android</a> in particular. This isn&#8217;t just a passing phase for me, nor is this a technology fad that&#8217;s just going to fade away. Mobile technology is really taking off, and I wouldn&#8217;t be surprised if a paradigm shift won&#8217;t occur—if it hasn&#8217;t already—where more people will be using smartphones and mobile devices to access the Internet and other online services than using a full desktop or laptop. There are other contenders vying to be our one-and-only window to the digital world, like set-top boxes, digital TVs, and such, but nothing is as personal and portable as the smartphone and its bigger brother, the <a title="Tablet computer article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Tablet_computer">tablet</a>.</p>
<p>That said, I&#8217;m not in the camp that believes that the Web is dead and that mobile apps are the way of the future. <a title="Why there isn’t (and likely never will be) a GPF iPhone app" href="http://www.jeffdarlington.com/2009/11/30/why-there-isnt-and-likely-never-will-be-a-gpf-iphone-app/">I&#8217;ve expressed my feelings on that here before.</a> Apps won&#8217;t and can&#8217;t be the end-all, be-all interface to data and the mobile Web will always have a place. Thus the mobile browser is one of the most important apps a smartphone can have. That said, most browsers on smartphones are anemic, underpowered, and severely lacking in important functionality. Smartphone manufacturers and OS authors want us to believe that we can leave the laptop behind and work entirely from that wondrous miracle in our pocket, but fail to deliver the tools we need to make that dream a reality.</p>
<p>My case in point: <a title="Public key certificate article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Public_key_certificate#Client_certificates">client-certificate authentication</a>. As a very brief summary, the entire industry of e-commerce rests entirely on a set of encryption technologies such as <a title="HTTP Secure article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_Secure">HTTPS</a>, SSL, <a title="Transport Layer Security article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Transport_Layer_Security">TLS</a>, etc., that allow secure, private communication between a client (such as an online shopper) and a server (an online store). The server authenticates itself to the client by using a digital certificate, signed by a trusted certificate authority which has investigated and authenticated the server as a legitimate entity. The client can rest assured that the server belongs to the authenticated entity because the certificate uses strong public-key cryptography to provide a chain of trust back to the authenticating authority. Without this technology in place, we wouldn&#8217;t be able to tell legitimate businesses such as online retailers and banks from the phishing scams so prevalent on the Web. (This doesn&#8217;t always solve problems between the keyboard and the chair, of course, but it is effective as long as the wetware interface is working properly.)</p>
<p>But digital certificates can be used to authenticate the client as well as the server. Many businesses and governments use client certificates to authenticate users to secure systems. For example, I use a government-issued <a title="Smart Card article on Wikipedia" href="https://secure.wikimedia.org/wikipedia/en/wiki/Smart_card#Cryptographic_smart_cards">Smart Card</a> to authenticate with my client&#8217;s servers. On this card is chip that contains my digital certificate, signed by a private certificate authority. When I authenticate with the client&#8217;s services, the private key on the card creates a digital signature which the server can authenticate against my public key, the inverse of what happens between the online shopper and the store front. Thus, I can trust the validity of the government&#8217;s certificate and know I&#8217;m connecting to their servers and no one else, and they in turn can validate that I (or the person who has my card) am who I say I am and let me in. I use a similar technology with <a title="General Protection Fault" href="http://www.gpf-comics.com/">GPF</a>, although I import my certificates directly into the browser rather than use an external card. I created my own private certificate authority and issue client certificates to each browser I wish to use to access my admin interfaces. That way, I know only certain machines can access those portions of the site, offering a lot more security than just a simple password can provide.</p>
<p>This isn&#8217;t a new technology. SSL has been around almost as long as the Web itself, and it wasn&#8217;t long before the model was flipped around to authenticate clients to servers as well as servers to clients. This is a tool used by businesses every day all over the world. Every desktop browser supports client certificates because they are a <a title="RFC 5246: The Transport Layer Security (TLS) Protocol" href="http://tools.ietf.org/html/rfc5246#section-7.4.6">standard</a>. Any browser that doesn&#8217;t support them is likely to be overlooked or ignored in favor of browsers that do.</p>
<p>Yet the support for client certificates on mobile devices is appallingly absent. I know the built-in Android browser doesn&#8217;t support it, and <a title="Issue 8196: 	Enhancement: Client Certificate Authentication in Browser" href="https://code.google.com/p/android/issues/detail?id=8196">I created an issue</a> in Google&#8217;s official <a title="Android Issues at Google Code" href="https://code.google.com/p/android/issues/list">Android issue tracker</a> to complain about it. Android supports client certs for WiFi authentication, but not in the browser, e-mail, or any other key service vital to secure business communications. Supposedly support for this functionality is going to be added in future versions of Android, but that doesn&#8217;t help me or any of the millions of current Android users until it comes time to upgrade our devices. I&#8217;ve read in various places that the iPhone supports client certs, but I&#8217;ve never been able to get any of the solutions to work with my iPod Touch (essentially an iPhone minus the annoying contract and poor service of AT&amp;T). The only success I&#8217;ve had in this area has been with <a title="Firefox Mobile" href="https://www.mozilla.com/en-US/mobile/">Firefox Mobile</a>, which is pretty much a Firefox 4 release candidate smooshed and crunched down to fit on a mobile device. It&#8217;s bloated and a lot slower than Android&#8217;s built in browser and there&#8217;s no handy UI for importing certs like there is on the desktop, but if you take a sledgehammer to it and <a title="Firefox Help: how to use clientcertificate to access https websites under android" href="https://support.mozilla.com/en-US/questions/786035#answer-142961">do some manual file tweaking</a>, you can import your client and CA certs into the certificate database and use it effectively.</p>
<p>Seriously, guys&#8230; you want your devices and mobile OSes to be taken seriously by businesses as tools to take our work out of the office and on the road. Yet, you don&#8217;t give us the essential tools required to take advantage of this amazing freedom. Sure, you tell us &#8220;there&#8217;s an app for that&#8221;, but frankly, there isn&#8217;t. I&#8217;ve looked, and they&#8217;re not there. Apple won&#8217;t let third-party browsers compete with Safari on iOS and none of the Android add-on browsers support client certs either. Only Firefox, a desktop browser masquerading as a mobile app, comes close, and it takes a bit of technical wizardry to do something that should be a quick five second import. Someone&#8217;s got to step up to the plate and make some progress here, or no business that really understands security is going to take the mobile space seriously.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2011/03/22/an-open-letter-to-mobile-browser-developers/' addthis:title='An Open Letter to Mobile Browser Developers '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2011/03/22/an-open-letter-to-mobile-browser-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firesheep, GPF, and Neural Core Dump</title>
		<link>http://www.jeffdarlington.com/2010/11/03/firesheep-gpf-and-neural-core-dump/</link>
		<comments>http://www.jeffdarlington.com/2010/11/03/firesheep-gpf-and-neural-core-dump/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 17:21:21 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[GPF]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[Firesheep]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=406</guid>
		<description><![CDATA[By now, the tech savvy among you have probably heard of Firesheep, the infamous unofficial Firefox plugin that lets you swipe other people&#8217;s session cookies and impersonate them on various popular, less-than-secure websites if you and they share the same unencrypted WiFi access point. The less tech savvy ones probably could care less, or are [...]]]></description>
			<content:encoded><![CDATA[<p>By now, the tech savvy among you have probably heard of <a title="Eric Butler - Software Developer in Seattle WA" href="http://bit.ly/9vil65">Firesheep</a>, the infamous unofficial Firefox plugin that lets you swipe other people&#8217;s session cookies and impersonate them on various popular, less-than-secure websites if you and they share the same unencrypted WiFi access point. The less tech savvy ones probably could care less, or are so terrified and spooked that you&#8217;ve turned off and unplugged your computers, buried them in a 20-foot-deep hole in the backyard, and layered on top of them concrete, asbestos, Kevlar, lard, and ten thousand old AOL CDs you&#8217;ve been hoarding in the closet since 1990.</p>
<p>OK, I was only kidding about the lard.</p>
<p>Last week I <a title="Twitter / Jeffrey Darlington" href="http://twitter.com/gpfjeff/status/29004016286">tweeted</a> that &#8220;Firesheep makes me want to weep for the Internet and laugh maniacally, both simultaneously&#8221;. That&#8217;s no exaggeration. On one hand, it&#8217;s performing wonders by raising awareness of just how insecure many of our favorite sites really are. The problem Firesheep exposes has been around for ages; hard-core hackers could perform all the tasks that this plugin does through readily available tools and a lot of dedicated logging and log scanning. What Firesheep does is take a complicated, hard-core hacker task and make it bone-headedly simple: install, scan, infiltrate. It provides a wake-up call to Web 2.0 developers that they need to look seriously at security rather than just pay it lip service. And at this task it seems to be doing quite well; already Google has made moves to force SSL for all GMail access and Facebook is mumbling under its breath that they&#8217;re &#8220;looking into it&#8221;.</p>
<p>What scares me about Firesheep is the bone-headedly simple aspect. I won&#8217;t get into the ethics of responsible disclosure of security flaws, but releasing a tool like this that makes such a questionable task as simple as clicking a button is bound to have repercussions. Putting this tool in the hands of everyone means putting it in the hands of <em>everyone,</em> no matter <a title="GPF Archive: Wednesday, August 27, 2008" href="http://www.gpf-comics.com/archive.php?d=20080827">what color hat they wear</a>. Yes, we&#8217;ll hopefully see lots of increase in security at many of the websites we use every day, but how many innocent and ignorant users will be maliciously attacked before those changes occur? The gun was a very useful tool for early pioneers to hunt and protect one&#8217;s family, but it&#8217;s also useful for criminals to steal, coerce, and murder their victims. Technology is inherently amoral; it is people that are moral or immoral.</p>
<p>I won&#8217;t go into the details of how Firesheep works or the many ways it can be easily thwarted. A quick spin by your favorite search engine will likely provide all the information you may need. However, I did want to take a few minutes to publicly analyze the various aspects of this site and the <a title="General Protection Fault" href="http://www.gpf-comics.com/">GPF</a> site and reassure all my readers that your information should be reasonably safe. Right now, it looks like the person most likely to be impacted would be me, directly or indirectly, and the risks are actually pretty darn low.</p>
<p>First up, this site: Firesheep does indeed include information on how to &#8220;hack&#8221; WordPress. <span style="text-decoration: line-through;">Well, how to hack <a title="WordPress.com" href="http://www.wordpress.com/">WordPress.com</a>. Since Neural Core Dump is self-hosted, the built-in attack against WordPress.com hosted blogs won&#8217;t affect us here. However, Firesheep is open source, so it is trivial to modify the code to attack specific domains, so the WordPress.com attack can be tweaked to attack an individual self-hosted WordPress blog.</span> My original assumptions here proved to be incorrect; in looking back over the the Firesheep code, it doesn&#8217;t look specifically for WordPress.com domains, but for common cookie names used by all instances of WordPress, whether it&#8217;s self hosted or not. Thus, any logged-in user here could potentially be exposed. <span style="text-decoration: line-through;">In this case</span> However, this blog&#8217;s small size becomes its advantage; the likelihood that anyone will directly attack it is pretty low, and even then I keep extensive backups and can easily back out malicious comments or posts. (Mind you, being too small should <em>not</em> be used as an excuse not to be concerned, just that the threat can be downplayed for the time being.) I rarely use public, open WiFi hot spots (to be honest, there aren&#8217;t that many of them around where I live), and on the rare case that I do, it&#8217;s easy enough for me to create an SSH tunnel to my home Linux box and proxy all my HTTP traffic through it.</p>
<p>As for GPF, all logins occur over SSL, so no passwords are ever sent in the clear. Of course, Firesheep does not sniff passwords but rather session cookies, so this isn&#8217;t really the problem. I thought of a few scenarios where Firesheep could be used against GPF to varying degrees of success:</p>
<ul>
<li>Perhaps the most susceptible part of the site is the <a title="GPF Forums" href="http://www.gpf-comics.com/forum/">forum</a>. <a title="phpBB" href="http://www.phpbb.com/">phpBB</a> uses session cookies like many of the sites targeted by Firesheep, and is thus theoretically vulnerable. However, phpBB forums reside on the domain of the server they are installed upon and the session cookie names are easily configurable. Thus, attacks would have to be directly targeted against a specific site in order to work. Like the blog here, GPF&#8217;s relatively low profile makes it unlikely to be targeted, although the possibility exists. Also like the blog, I&#8217;m the only one with full admin access, so correcting problems shouldn&#8217;t be too difficult. All admin sessions occur entirely over SSL, and even if I check the box to have the browser remember my login, phpBB forces me to authenticate before granting access to the admin interface.</li>
<li>The <a title="The Official GPF Wiki" href="http://www.gpf-comics.com/wiki/">wiki</a> is currently configured (quite accidentally but fortuitously) to always use SSL during and after login. Thus, any session cookies the wiki may set are only sent over SSL and thus can never be sniffed. This is also moot for now since I&#8217;m the only one with write access to the wiki, but I&#8217;ve been considering giving access to a handful of volunteers to help me maintain it.</li>
<li>The <a title="GPF Store" href="https://www.gpf-comics.com/store/">GPF Store</a> is configured (quite intentionally) to always use SSL, whether you&#8217;re logged in or not.  No vulnerability there.</li>
<li>GPF Premium presents two problems: account creation/management and the day-to-day &#8220;branding&#8221; cookie that enables Premium features.
<ul>
<li>The <a title="GPF Premium: Create an Account" href="https://www.gpf-comics.com/premium/create_account.php">Account Creator</a> and <a title="GPF Premium: Account Manager" href="https://www.gpf-comics.com/premium/manage_account.php">Account Manager</a> always use SSL and do not use session cookies in any way. Their session data is currently stored in an encrypted, hidden form field on the page.  Since these pages never leave SSL, no information is ever sent in the clear. The weakest point of these systems are the user name and password you set. (You <em>did</em> pick a nice, strong password, didn&#8217;t you?)</li>
<li>It is theoretically possible for someone to sniff the Premium &#8220;branding&#8221; and options cookies and thus gain access to Premium features. However, that&#8217;s about all they can do: steal Premium access. These cookies do not let them gain access to your account in any way, and making any form of modification to your account requires login via the encrypted Account Manager. No features in Premium currently use these cookies to provide identity information to the system. (I did consider adding a few features that did, but those are all currently scrapped post-Firesheep.) Furthermore, the branding cookie is tied very closely to your individual browser and operating system, and there are safeguards to prevent tampering with the data and modifying it (like pretending to be an Eternal subscriber when the original cookie is really for a Bronze subscriber). The options cookie is useless without the branding cookie. Thus, the only person standing to lose anything from a sniffed Premium banding cookie is me, and that will only last as long as the cookie validates; even if the cookie thief modifies the cookie&#8217;s expiration date in the browser, embedded data in the cookie will invalidate it when the expiration date in the cookie data itself is reached.</li>
</ul>
</li>
</ul>
<p>Again, GPF&#8217;s probably far too small a target for anyone to really bother with, but the fact is that so little attack surface is visible that the only person likely to be hurt by it is me.</p>
<p>There, I hope I laid all your GPF/Firesheep fears to rest. What was that? The only person really concerned about this was me? Oh&#8230; well, in that case&#8230; um&#8230; never mind, I guess.</p>
<p>UPDATED November 4, 2010: Updated the paragraph about this blog to correct an incorrect assumption about only WordPress.com blogs being affected.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2010/11/03/firesheep-gpf-and-neural-core-dump/' addthis:title='Firesheep, GPF, and Neural Core Dump '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2010/11/03/firesheep-gpf-and-neural-core-dump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>set_bugs = 0;</title>
		<link>http://www.jeffdarlington.com/2009/02/10/set-bugs-equal-zero/</link>
		<comments>http://www.jeffdarlington.com/2009/02/10/set-bugs-equal-zero/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:21:33 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[GPF]]></category>
		<category><![CDATA[Help Desk]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=196</guid>
		<description><![CDATA[This week an couple errors were reported in the custom CMS application I built at work a couple years ago. I haven&#8217;t touched this code in at least a year, so it took me bit to swap some mental virtual memory and recall how everything worked. I&#8217;m not sure if these &#8220;bugs&#8221; were something new [...]]]></description>
			<content:encoded><![CDATA[<p>This week an couple errors were reported in the custom <a title="Content Management System article on Wikipedia" href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a> application I built at work a couple years ago. I haven&#8217;t touched this code in at least a year, so it took me bit to swap some mental virtual memory and recall how everything worked. I&#8217;m not sure if these &#8220;bugs&#8221; were something new that had manifested themselves after a recent platform upgrade or design flaws that had been there since the beginning only to be recently noticed. None of that really matters for the sake of this post, however. Suffice it to say there were two problems, one of which was likely to be entirely my fault but relatively easy to fix with a little bit of <a title="C# (programming language) article on Wikipedia" href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a> hacking.</p>
<p>The other problem was a bit obscure. The application is built in <a title="ASP.NET article on Wikipedia" href="http://en.wikipedia.org/wiki/ASP.NET">ASP.NET</a> 2.0 and written entirely in C#. It also makes use of <a title="Microsoft" href="http://www.microsoft.com/">Microsoft</a>&#8216;s <a title="AJAX (programming) article on Wikipedia" href="http://en.wikipedia.org/wiki/Ajax_(programming)">AJAX</a> Toolkit for ASP.NET to &#8220;pretty up&#8221; some of the interface interactions. Unfortunately, one particular user began to experience problems with the system recently. Since she&#8217;s the project manager, needless to say the problem was escalated to top priority with little to no delay. To make things more difficult, the problem was especially cryptic. In true Microsoft fashion, the pop-up <a title="JavaScript article on Wikipedia" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> error dialog offered little to no useful information:</p>
<blockquote><p>Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500</p></blockquote>
<p><a title="Google" href="http://www.google.com/">Google</a>, of course, is my friend and found <a title="Google search for PageRequestManagerServerErrorException" href="http://www.google.com/search?q=PageRequestManagerServerErrorException">no shortage of pages</a> where this turned up. The odd thing was that none of the purported causes for the error were anything that I was using.</p>
<p>After much searching, I finally happened upon <a title="Andornot Developers' Blog: ASP.NET AJAX and Sys.Webforms.PageRequestManagerServerErrorException" href="http://www.andornot.com/about/developerblog/2007/07/aspnet-ajax-and-syswebformspagerequestm.aspx">this site</a>. It seems Ted Jardine hit the same problem I did. He had narrowed it down to something to do with the .NET session, which he wasn&#8217;t really using but I was using extensively. What I found most interesting was his solution:</p>
<blockquote><p>So, based on one of the comments in one of the above posts, even though I&#8217;m not touching session on one of the problem pages, I tried a hack in one of the problem page&#8217;s Page_Load:</p>
<p>Session["FixAJAXSysBug"] = true;</p>
<p>And lo and behold, we&#8217;re good to go!</p></blockquote>
<p>I followed the various links he provided—as well as <a title="Google search for FixAJAXSysBug" href="http://www.google.com/search?q=FixAJAXSysBug">Googling for &#8220;FixAJAXSysBug&#8221;</a> itself—and found lots more anecdotal evidence to support its usefulness. I applied this &#8220;fix&#8221; to the common header of the application to make sure it took affect everywhere and, so far, all reports seem to indicate its success.</p>
<p>Needless to say, I was instantly reminded of <a title="GPF Archive: Wednesday, January 31, 2001" href="http://www.gpf-comics.com/archive.php?d=20010131">this GPF strip</a> from the crossover with <a title="Help Desk" href="http://ubersoft.net/">Help Desk</a>. I can&#8217;t remember now if that joke was my idea or Chris Wright&#8217;s. It doesn&#8217;t matter now, really&#8230; it audacity is as brilliant now as it was eight years ago. The idea of setting a simple Boolean flag to &#8220;turn off bugs&#8221; is something I will always find hilarious.</p>
<p>Now if only <em>all</em> Microsoft bugs were so easy to fix&#8230;.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2009/02/10/set-bugs-equal-zero/' addthis:title='set_bugs = 0; '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2009/02/10/set-bugs-equal-zero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When it rains, it pours&#8230;</title>
		<link>http://www.jeffdarlington.com/2009/01/20/when-it-rains-it-pours/</link>
		<comments>http://www.jeffdarlington.com/2009/01/20/when-it-rains-it-pours/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 14:50:39 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[GPF]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Athena]]></category>
		<category><![CDATA[Demeter]]></category>
		<category><![CDATA[Diana]]></category>
		<category><![CDATA[hard drive]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[schedule]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=188</guid>
		<description><![CDATA[Here&#8217;s a clarification of my recent Tweet about Diana. Sometime over the weekend Diana, our primary Linux box that serves as the backbone of our home network (DNS, file server, internal Web server, SSH gateway, SVN repository server, etc.), gave up the ghost. I only discovered this yesterday evening, so I haven&#8217;t had much time [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a clarification of <a title="Twitter / Jeff Darlington" href="http://twitter.com/jeffdarlington/status/1131618568">my recent Tweet</a> about Diana. Sometime over the weekend Diana, our primary Linux box that serves as the backbone of our home network (DNS, file server, internal Web server, SSH gateway, SVN repository server, etc.), gave up the ghost. I only discovered this yesterday evening, so I haven&#8217;t had much time to diagnose the problem. It&#8217;s almost certainly a hardware issue. I&#8217;m thinking it&#8217;s the power supply or the motherboard, as when I try to power her up, nothing happens. The power light comes on, I can watch the CPU fan twitch like it wants to start spinning, but otherwise nothing else visible occurs. No output makes its way to the monitor so there are no error messages to follow.</p>
<p>At this point, I&#8217;m not sure of the status of the hard drives. My hope is that they&#8217;re fine; the obvious problem appears to be occurring before they even start to spin, as if they&#8217;re not getting any power (and that&#8217;s why I suspect it&#8217;s a power supply issue). The good news is that Demeter, her predecessor, has been sitting idle and collecting dust and has since been rapidly pressed back into service. I should be able to slip Diana&#8217;s disks into Demeter, check their integrity, and hopefully recover the data. That&#8217;s the core thing right now, getting the data off; hardware is replaceable, data is not. The only hitch is that Demeter is old enough that I&#8217;m not sure her BIOS will read Diana&#8217;s larger disks. Demeter&#8217;s current HD is already larger than her BIOS supports, though, and Linux seems to work fine in this situation, so I&#8217;m hoping that won&#8217;t be a problem. A worst-case scenario might be to throw a live Linux distro into Athena, our current &#8220;alpha&#8221; Windows XP desktop, and try to grab the data that way. (Diana&#8217;s disks are in ext3, which obviously Windows can&#8217;t read.) Both Demeter and Diana have EIDE drives while Athena uses SATA, but I&#8217;m almost certain Athena also has legacy EIDE on the motherboard somewhere; if not, I&#8217;m hosed there.</p>
<p>Why might this be a concern to you? Well, for one thing, Diana was one of several redundant backup locations for storing my my high-resolution original strips. Fortunately, everything from Year Nine and back has already been backed up to multiple DVDs stored in multiple physical locations, while Year Ten&#8217;s files are stored across three redundant drives (two in separate physical machines and one external USB drive). More importantly, Diana was my SVN repository server, housing all the source code for the GPF site. I have working copies of that repository in multiple locations so I&#8217;m not hurting there, but with the repository down I&#8217;m stuck manually keeping those working copies in sync. The biggest problem that may affect you guys is the humongous time sink this will be for me to repair/replace Diana and get all our internal mechanisms working again. With my day job, two hours of commute, and toddler patrol vying for my time, my comic production schedule is severely squeezed as it is. This is probably going to impact that buffer I was forced to take a hiatus in December to reclaim as I wasn&#8217;t able to increase my production, just maintain the status quo.</p>
<p>For those of you who might care, I&#8217;ll post updates here when I can. More frequent cries of frustration will likely come through the <a title="Twitter / Jeff Darlington" href="http://twitter.com/jeffdarlington">Twitter feed</a>. If the comic will be severely impacted, you&#8217;ll get something in the <a title="GPF News" href="http://www.gpf-comics.com/news/">GPF News</a>. So keep watching those RSS feeds.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2009/01/20/when-it-rains-it-pours/' addthis:title='When it rains, it pours&#8230; '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2009/01/20/when-it-rains-it-pours/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating XML Sitemaps for MediaWiki</title>
		<link>http://www.jeffdarlington.com/2008/08/22/generating-xml-sitemaps-for-mediawiki/</link>
		<comments>http://www.jeffdarlington.com/2008/08/22/generating-xml-sitemaps-for-mediawiki/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 01:40:19 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[GPF]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=154</guid>
		<description><![CDATA[Not long ago, I took advantage of a nifty WordPress plugin to enable XML sitemaps for the blog. For those who&#8217;ve never heard of XML sitemaps (I hadn&#8217;t for quite a while), they are little XML files in a specific format that give search engines like Google hints on how to index your site. They [...]]]></description>
			<content:encoded><![CDATA[<p>Not long ago, I took advantage of a <a title="Google (XML) Sitemaps Generator for WordPress" href="http://www.arnebrachhold.de/redir/sitemap-home/">nifty WordPress plugin</a> to enable <a title="sitemaps.org" href="http://www.sitemaps.org/">XML sitemaps</a> for the blog. For those who&#8217;ve never heard of XML sitemaps (I hadn&#8217;t for quite a while), they are little XML files in a specific format that give search engines like <a title="Google" href="http://www.google.com/">Google</a> hints on how to index your site. They don&#8217;t necessarily improve your search rankings per se, but they help the search engine better decide what to index, when it was last updated, relative priorities of different pages, etc. You then throw a special line into your <a title="The Web Robots Pages" href="http://www.robotstxt.org/">robots.txt</a> file or directly submit the file to the search engine to let it know the file is available. Once the engine knows about it, it will check it periodically to optimize how the site is indexed.</p>
<p>The plugin, of course, makes this ridiculously easy for <a title="WordPress" href="http://wordpress.org/">WordPress</a>. However, <a title="General Protection Fault" href="http://www.gpf-comics.com/">GPF</a> gets orders of magnitude higher traffic than the blog does, so finding a way to generate sitemaps there would be ideal. I toyed with the idea for a while until I finally sat down, examined the sitemap specification, and figured out how to roll my own code. It now successfully runs via cron each morning and gives a pretty thorough census of what&#8217;s available on the GPF server. The problem is that the GPF site is divided into several parts that are largely autonomous and self-contained:</p>
<ul>
<li>The archive, of course, is the main bread and butter.  This is what people come to see, so it is vitally important to get everything represented, especially since the archive is entirely dynamic PHP. I count the main index page as part of the archive, as it displays the latest strip.</li>
<li>The <a title="GPF Forum" href="http://www.gpf-comics.com/forum/">forum</a> is self-contained because it uses a third-party application: <a title="phpBB" href="http://www.phpbb.com/">phpBB</a>. I decided long ago to discourage spamming by blocking search engines from indexing the forum, relying on the forum&#8217;s internal search capabilities for users who want to find things. Since search engines were being blocked anyway, I decided the forum didn&#8217;t need a sitemap; that would just be a waste of processing time.</li>
<li>The <a title="The Official GPF Wiki" href="http://www.gpf-comics.com/wiki/">wiki</a>, however, is slowly becoming a vital part of the site. It replaces the old cast pages and adds tons more GPF metadata in a convenient, easily searchable form. I wanted to make sure that got included too.  The GPF Wiki runs <a title="MediaWiki" href="http://www.mediawiki.org/">MediaWiki</a>, the same software that powers <a title="Wikipedia" href="http://www.wikipedia.org/">Wikipedia</a>.  As far as I know, MediaWiki does not include any internal mechanism for generating XML sitemaps nor are there any extensions to do so.  (I could easily be wrong, however; I&#8217;ll admit my research on this was extremely limited.)</li>
<li>Then there&#8217;s everything else. The GPF site beyond the two pre-packaged items above is completely custom-built PHP, so there&#8217;s no one to blame for that mess but myself.</li>
</ul>
<p>Ignoring the forum, that left me three major sub-projects for creating sitemaps. It&#8217;s easy enough to segregate these into separate files and tie them together using a &#8220;sitemap index&#8221; file, so that wasn&#8217;t a problem.  The archive would just be a formatted dump of the archive database, deriving approximate update times from the posting date. The bulk of the rest of the site could be done by stepping through the file structure of the site and taking note of every HTML or PHP file and its last modification time (conveniently ignoring certain files and directories that don&#8217;t need to be counted, like access-restricted Premium pages). And that leaves the wiki.</p>
<p>I managed to come up with a decent wiki sitemap routine that I thought I&#8217;d share, just in case someone else might be interested. Of course, it&#8217;s not likely to be useful for massive wikis like Wikipedia—<a title="sitemaps.org FAQ" href="http://www.sitemaps.org/faq.php#faq_sitemap_size">sitemaps are restricted to 10MB in size and 50,000 URLs</a>—but something small like the GPF Wiki would be easy to submit and index. It was built using MediaWiki 1.12.0; I am uncertain what database changes may be needed for older or newer versions. Here&#8217;s my current process:</p>
<p>I only want to index relevant pages, including category pages. The relevant database table for this is &#8220;page&#8221;. (How&#8230; convenient). Unfortunately, this table also contains things like redirects and images. Each image has its own &#8220;page&#8221; assigned to it; try clicking on an image in Wikipedia or in the GPF Wiki to see what I mean. The time stamp of the latest revision, however, is stored in the &#8220;revision&#8221; table, joined to the page table by the latest revision ID number. So a good starting bit of SQL would be:</p>
<blockquote><p><code>select p.page_title, r.rev_timestamp from page p, revision r where p.page_latest = r.rev_id and p.page_is_redirect = 0 and p.page_title not like '%.gif' and p.page_title not like '%.png' and p.page_title not like '%.jpg';</code></p></blockquote>
<p>Unfortunately, this also returns a few meta pages like the sidebar and editing pages. Before selecting, I define a look-up hash of titles I want to avoid and as I loop through the results I just skip those.</p>
<p>The title, of course, is both the displayed title and the input portion of the URL that uniquely identifies the page. Thus, knowing the base URL (<code>http://www.gpf-comics.com/wiki/</code>) I can easily reconstruct the public URL of any article from the title. As with Wikipedia links, spaces have already been converted to underscores, but the rest of the string needs to be be URL encoded. This is easy enough, so we can quickly build the full URL as required by the XML schema.</p>
<p>The time stamp is a little bit tougher. MediaWiki stores time stamps as a 14-digit number in <em>YYYYMMDDHHMMSS</em> format, always in UTC time. In Perl (in which almost all my crons are coded) this is easy enough to break apart and turn into a UNIX time stamp. I then output the date in W3C ISO 8601 format as required by the schema. A sample of a resulting entry would be:</p>
<blockquote>
<pre>&lt;url&gt;
   &lt;loc&gt;http://www.gpf-comics.com/wiki/Nick&lt;/loc&gt;
   &lt;lastmod&gt;2008-08-22T06:00:07Z&lt;/lastmod&gt;
   &lt;changefreq&gt;monthly&lt;/changefreq&gt;
   &lt;priority&gt;0.3&lt;/priority&gt;
&lt;/url&gt;</pre>
</blockquote>
<p>Change frequency and priority are purely guesses and fudges for mine. According to the sitemap specification, priorities are purely relative to other parts of the site. I rated the wiki pages as relatively low since the wiki at GPF is considered a &#8220;supporting&#8221; page and subordinate to things like the archive. As for change frequency, the sitemap specification includes a number of predefined choices (hourly, daily, weekly, monthly, etc.). Monthly was a purely off-the-cuff guess; some pages may update more or less frequently, but monthly would be a good average. It is entirely possible to rate select pages as higher priority or frequency than others, but I decided to take the easy route and rate everything the same. To apply different values, you just need to pay special attention to the title and assign a non-default value when that title crops up.</p>
<p>Well, I hope someone out there might find this helpful. I&#8217;m not sure if it really helps anyone find anything at GPF, but it was a fun little exercise nonetheless.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/08/22/generating-xml-sitemaps-for-mediawiki/' addthis:title='Generating XML Sitemaps for MediaWiki '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/08/22/generating-xml-sitemaps-for-mediawiki/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Look, Ma! I&#8217;m on Security Now!</title>
		<link>http://www.jeffdarlington.com/2008/07/14/look-ma-im-on-security-now/</link>
		<comments>http://www.jeffdarlington.com/2008/07/14/look-ma-im-on-security-now/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 14:54:52 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[DoubleClick]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Security Now]]></category>
		<category><![CDATA[Steve Gibson]]></category>
		<category><![CDATA[TWiT]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=148</guid>
		<description><![CDATA[I hope to post more on this when there&#8217;s more data to post, but I thought I&#8217;d throw up a quick note stating that the latest episode of the Security Now! &#8220;netcast&#8221; features a question posed by yours truly. (The best part was listening to Leo Laporte stumble over my long-winded rambling. ) The high-quality [...]]]></description>
			<content:encoded><![CDATA[<p>I hope to post more on this when there&#8217;s more data to post, but I thought I&#8217;d throw up a quick note stating that the <a title="Security Now! #152 (TWiT.tv)" href="http://twit.tv/sn152">latest episode of the Security Now! &#8220;netcast&#8221;</a> features a question posed by yours truly. (The best part was listening to Leo Laporte stumble over my long-winded rambling. <img src='http://www.jeffdarlington.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) The high-quality version of the show can be found at the previous link; a low-bandwidth version as well as a text-only transcript can be found at the <a title="Security Now! #152 (GRC.com)" href="http://www.grc.com/sn/sn-152.htm">corresponding page at GRC.com</a>. A search in the transcript for &#8220;Darlington&#8221; will take you to the beginning of my question; in the netcast, it starts around 38 minutes, 22 seconds in. (Of course, I encourage everyone to read/listen to the entire thing.)</p>
<p>For the full effect, though, you&#8217;ll also need to listen to/read the previous two non-Q&amp;A episodes of the show, <a title="Security Now! #149 (TWiT.tv)" href="http://twit.tv/sn149">#149</a> and <a title="Security Now! #151 (TWiT.tv)" href="http://twit.tv/sn151">#151</a>. (Low-bandwidth and trascriptions can be found <a title="Security Now! #149 (GRC.com)" href="http://www.grc.com/sn/sn-149.htm">here</a> and <a title="Security Now! #151 (GRC.com)" href="http://www.grc.com/sn/sn-151.htm">here</a>.) The entire dialog concerns the recent trend of <a title="Internet service provider article on Wikipedia" href="http://en.wikipedia.org/wiki/Internet_service_provider">ISPs</a> selling out their customers to allow third-party advertisers to come in and install hardware at the ISP to facilitate tracking the ISPs&#8217; customers&#8217; surfing habits across sites. While the ad companies in question claim to not be recording personally identifyable information about the ISPs&#8217; customers, the capability is there and the possibilities for abuse are enormous. It brings back many shades of the <a title="DoubleClick article on Wikipedia" href="http://en.wikipedia.org/wiki/DoubleClick">DoubleClick</a> controversies of the late 1990s-early 2000s, only much more ominous. I provided a unqiue standpoint to the discussion: that of a Web developer hosting a site and encountering similiar mysterious &#8220;first party&#8221; cookies set for my domain but not set by me.</p>
<p>The full body my question is present, but I&#8217;m not completely satisfied with the answer. <img src='http://www.jeffdarlington.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Let&#8217;s just say I think Steve Gibson made an assumption about the <a title="General Protection Fault" href="http://www.gpf-comics.com/">GPF</a> site that&#8217;s not 100% true. I&#8217;ve replied to his response with additional information. I don&#8217;t necessarily expect another response (he does, after all, have his own agenda to follow on <em>his</em> show), and even if he does it will likely be in episode #154, the next scheduled Q&amp;A episode. If anyone is interested, I&#8217;ll post updates if and when this occurs. If I don&#8217;t get a response, I&#8217;ll post my response here, especially since it contains some disturbing observations about &#8220;first party&#8221; cookies that have mildly paranoid folks like me nervous. (I&#8217;d hate to see what it does to <em>really</em> paranoid people.)</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/07/14/look-ma-im-on-security-now/' addthis:title='Look, Ma! I&#8217;m on Security Now! '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/07/14/look-ma-im-on-security-now/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ICANN get behind &#8220;gpf.comics&#8221;&#8230;</title>
		<link>http://www.jeffdarlington.com/2008/07/01/icann-get-behind-gpf-dot-comics/</link>
		<comments>http://www.jeffdarlington.com/2008/07/01/icann-get-behind-gpf-dot-comics/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 13:18:42 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Webcomics]]></category>
		<category><![CDATA[cybersquatting]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[ICANN]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/?p=146</guid>
		<description><![CDATA[So ICANN, the organization that oversees the doling out of domain names on the Internet, has approved the relaxation of the rules for top-level domains (TLDs) to allow for arbitrary TLDs for whoever has the money and technical capability to grab it. If things go according to plan, by the middle of next year you [...]]]></description>
			<content:encoded><![CDATA[<p>So <a title="Internet Corporation for Assigned Names and Numbers" href="http://www.icann.org/">ICANN</a>, the organization that oversees the doling out of domain names on the Internet, has <a title="ICANN: Biggest Expansion in gTLDs Approved for Implementation" href="http://www.icann.org/en/announcements/announcement-4-26jun08-en.htm">approved the relaxation of the rules for top-level domains</a> (TLDs) to allow for arbitrary TLDs for whoever has the money and technical capability to grab it. If things go according to plan, by the middle of next year you may be able to just type into your browser something like <code>http://search.google/</code> rather than <code>http://www.google.com/</code>, or perhaps you&#8217;d rather <code>http://drink.coke/</code> or <code>http://drive.ford/</code> or even <code>http://have.crazy.monkey.sex/</code>.</p>
<p>To quote virtually ever character in the <a title="Star Wars.Com" href="http://www.starwars.com/"><em>Star Wars</em></a> universe, I have a bad feeling about this.</p>
<p>I am <em>so</em> sitting on the fence on this one. My initial gut reaction is this <em>can&#8217;t</em> be a good thing. I know far too many non-techies who are confused by Internet addressing as it is, so let&#8217;s confuse them some more by adding even <em>more</em> things for them to figure out. JD Fraizer over at User Friendly <a title="User Friendly: June 28, 2008" href="http://ars.userfriendly.org/cartoons/?id=20080628">hit the nail on the head</a>; anyone who has ever used <a title="Usenet article on Wikipedia" href="http://en.wikipedia.org/wiki/Usenet">Usenet</a> is probably rolling their eyes a lot more lately. The potential for <a title="Cybersquatting article on Wikipedia" href="http://en.wikipedia.org/wiki/Cybersquatting">cybersquatting</a> and trademark dilution is enormous. ICANN insists that an &#8220;objection-based mechanism&#8221; will be in place to prevent such things, but how much red tape (and legal dollars) will someone have to go through to protect their brand? Every day that a squatter sits on a domain equates to valuable time, money, and reputation that can be lost, something big corporations may be able to wait out but little guys like me can&#8217;t afford. It&#8217;s been hard enough right now for me to keep up with all the variants of <code>gpf-comics.something</code> out there. And let&#8217;s not get into the discussion of what &#8220;offensive&#8221; TLDs  creative individuals might come up with&#8230;.</p>
<p>Of course, it&#8217;s not like I&#8217;m going to be registering <code>.gpf</code> anytime soon anyway. I suppose that&#8217;s one thing ICANN did right: to create your own TLD, you&#8217;ll need a truck load of money first. The <a title="CBC: World of web names now wide open, June 26, 2008" href="http://www.cbc.ca/world/story/2008/06/26/internet-domain.html">CBC is reporting</a> an estimated $100,000 per TLD—I have no idea if that&#8217;s Canadian dollars or not—but ICANN only says for now that <a title="ICANN: New gTLDs FAQ" href="http://www.icann.org/topics/new-gtld-strategy-faq.htm">&#8220;fee information is not yet available&#8221;</a>. Ordinary domain names are dirt cheap nowadays, which is a blessing to small-time operators like me but a curse in that squatters with cash to burn can snap up thousands at a time and hold them for ransom. At least starting a new TLD will take capital, making it a serious investment. It will also be quite a technical undertaking; owning a TLD also means you have to build the infrastructure support it. So if <a title="Google" href="http://www.google.com/">Google</a> were to grab <code>.google</code> with their pocket change, they&#8217;ll also need to pony up the hardware and bandwidth to maintain the root server. Google may be a bad example (they&#8217;ve got servers to spare, I&#8217;m sure), but for organizations not used to maintaining that kind of &#8220;big iron&#8221; it will be a significant learning curve.</p>
<p>But then it occurred to me&#8230; how awesome would it be if all your favorite comics or comic-related sites could found at &#8220;something dot comics&#8221;?</p>
<p>Imagine if you will that some philanthropic comics creator/reader with a hundred grand in &#8220;mad money&#8221; under his bed were to snatch up <code>.comics</code> and register that with ICANN. Being philanthropic, this individual would charge a minimal fee to register a domain there, just enough to cover operational costs and maybe make a modest living in the process, aggregated out to anticipated demand (of which I&#8217;m sure there&#8217;d be plenty). There would be only one additional requirement for application beyond the current standard (ethical) process: the domain must be used for a site publishing, promoting, or discussing comics in some way, shape, or form. Consideration for approval would require proof of content, such as a preview development site, previously published work, portfolios, etc.—just enough to prove the site really will be used for something comic-related. Individual titles would be encouraged to register at the root level (<a title="Dilbert" href="http://www.dilbert.com/"><code>dilbert.comics</code></a>, <a title="General Protection Fault" href="http://www.gpf-comics.com/"><code>gpf.comics</code></a>, <a title="X-Men.com (redirects to Marvel.com)" href="http://www.x-men.com/"><code>x-men.comics</code></a>) while companies would register their names (<a title="DC Comics" href="http://www.dccomics.com/"><code>dc.comics</code></a>, <a title="Marvel Comics" href="http://www.marvel.com/"><code>marvel.comics</code></a>, <a title="Keenspot" href="http://www.keenspot.com/"><code>keenspot.comics</code></a>) and potentially use sub-domains for their own titles (<code>x-men.marvel.comics</code>). Our hypothetical philanthropic registrar would also be fair and balanced as to not let big conglomerates dominate the little guys. Disputes over domains would come down to traditional copyright and trademark resolutions, requiring proof of prior art, etc.</p>
<p>Wouldn&#8217;t that be just grand?</p>
<p>Of course, what will <em>really</em> happen will be that some big company will come along and buy up <code>.comics</code> with far more misanthropic intentions (and we <em>know</em> such an obvious TLD wouldn&#8217;t sit dormant for long). They&#8217;d either squirrel it away selfishly for promoting their own works and no one else&#8217;s, or they&#8217;ll charge such an exorbitant &#8220;premium&#8221; price for registrations that only big publishing houses like DC, Marvel, etc. will be able to afford it, shutting out the little independents and webcomics. Even if they price it fairly and keep it open, I&#8217;d bet it would get so swamped with squatters that the novelty of the whole TLD would become as diluted <code>.info</code> is today. Maybe it&#8217;s just that I&#8217;m pessimistic&#8230; or that I&#8217;ve been annoyed for so long that some jerk had been holding <code>gpf-comics.org</code> hostage for years&#8230; but I just don&#8217;t see this turning into as promising a possibility as I think it <em>could</em> be.</p>
<p>Oh, well. I&#8217;ve been waiting for <code>gpf.com</code> for nearly a decade now. I guess I can just add <code>gpf.comics</code> to the list. Wishful thinking&#8230;.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/07/01/icann-get-behind-gpf-dot-comics/' addthis:title='ICANN get behind &#8220;gpf.comics&#8221;&#8230; '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/07/01/icann-get-behind-gpf-dot-comics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Praise for XCache</title>
		<link>http://www.jeffdarlington.com/2008/03/18/praise-for-xcache/</link>
		<comments>http://www.jeffdarlington.com/2008/03/18/praise-for-xcache/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 01:34:12 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[GPF]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[opcode]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XCache]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/2008/03/18/praise-for-xcache/</guid>
		<description><![CDATA[The new GPF site has been running live for half a month now, and I&#8217;m proud to say things have been running incredibly smoothly. That is, at least, from my perspective; I haven&#8217;t seen any major glitches, and aside from a few typos in the comic (which are obviously independent of the site code), nobody [...]]]></description>
			<content:encoded><![CDATA[<p>The new <a href="http://www.gpf-comics.com/" title="General Protection Fault">GPF</a> site has been running live for half a month now, and I&#8217;m proud to say things have been running incredibly smoothly. That is, at least, from my perspective; I haven&#8217;t <em>seen</em> any major glitches, and aside from a few typos in the comic (which are obviously independent of the site code), nobody has written me about any problems. This is especially heartening because the new site was pretty much entirely coded by hand by me, sans a few bits and pieces. (I can&#8217;t take credit for the OS, the web server software, the database engine, or the forum. But everything else&#8230; yep, that was me.)</p>
<p>There were a lot of motivations for writing my own archiving system, but the primary one was efficiency. While I considered trying something off-the-shelf, so to speak, like <a href="http://mindfaucet.com/comicpress/" title="ComicPress">ComicPress</a> or <a href="http://drupal.org/" title="Drupal">Drupal</a>, I really wanted something that would be blazingly fast yet still dynamically generated to let me do things like <a href="http://www.gpf-comics.com/premium/" title="GPF Premium">GPF Premium</a> on the server side, primarily for security reasons. (Server-side processing means no messy JavaScript is required by the users, thus exposing them to less risks, while Premium content doesn&#8217;t even get sent to the browser at all if Premium isn&#8217;t enabled.) So the GPF site is optimized out the wahzoo, with certain high-volume pages built once by nightly crons while others that require more interactivity reduce database queries to simple selects as much as possible. I&#8217;m never one to brag and toot my own horn, but I&#8217;m actually pretty proud of the new site and how responsive it is.</p>
<p>Of course, I can&#8217;t really take <em>all</em> the credit. I do have to give some serious props to <a href="http://xcache.lighttpd.net/" title="XCache">XCache</a>.</p>
<p>For those unfamiliar with <a href="http://www.php.net/" title="PHP">PHP</a>, it is one of many server-side, interpreted scripting languages commonly used for dynamic Web site development. The caveat, however, to any interpreted language is that on each request the source script must be read, parsed, <a href="http://en.wikipedia.org/wiki/Compiler" title="Compiler article on Wikipedia">compiled</a>, and executed before anything is set back to the end user&#8217;s browser. This is one reason why dynamic sites are and will always be slower than serving purely static HTML files. Static HTML just needs to be read and regurgitated; anything that requires the Web server to actually <em>think</em> takes more time. Add to that the fact that there could be hundreds or even thousands of requests all competing at once for content and it&#8217;s a miracle anything get served at all.</p>
<p>XCache is one of several <a href="http://en.wikipedia.org/wiki/Opcode" title="Opcode article on Wikipedia">opcode</a> <a href="http://en.wikipedia.org/wiki/Cache" title="Cache article on Wikipedia">caching</a> extensions for PHP. Essentially, when the first request for a script is made, the script is parsed and compiled as usual. However, XCache stores the compiled code so subsequent requests can skip the parsing and compilation steps and go directly to executing the code. This significantly increases the speed of execution by eliminating one of the costliest parts of the process (except perhaps database connections). In addition, XCache also includes the ability to cache <a href="http://en.wikipedia.org/wiki/Variable" title="Variable article on Wikipedia">variables</a> and <a href="http://en.wikipedia.org/wiki/Object-oriented_programming" title="Object-oriented programming article on Wikipedia">objects</a>, so commonly repeated and expensive variable generation&#8211;such as the <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" title="Cryptographic hash function article on Wikipedia">cryptographic hashes</a> I use for salting cookie hashes or database look-ups for common elements like the Premium subscription levels&#8211;can be stored in the cache rather rebuilt on each request.</p>
<p>I was first introduced to XCache by the <a href="http://neosmart.net/dl.php?id=12" title="NeoSmart Technologies: XCache for WordPress">XCache for WordPress</a> plugin, which was probably mentioned in one of the development feeds built into the <a href="http://wordpress.org/" title="WordPress">WordPress</a> dashboard. I&#8217;ve been running this combination here on the blog for a little while with moderate success; I&#8217;m still trying to find a good balance of configuration settings to get the best results, but I&#8217;ve been happy with the results so far. Without putting much thought into it, I went ahead and installed XCache on the GPF server, hoping that it would help even if I never got a chance to optimize it. Fortunately, it <em>has</em> helped, and now that I&#8217;ve optimized the settings it&#8217;s exceeded most of my expectations. I&#8217;m not sure if there&#8217;s something about my code that caches better than WordPress, but GPF has done much better with XCache than the blog has.</p>
<p>Admittedly, I haven&#8217;t compared it to any other opcode cachers, nor have I benchmarked it against any of the competition. That said, however, I heartily recommend it to anybody running PHP applications. To get the greatest benefit, you may need to modify some code (or install a plugin if you&#8217;re using a prepackaged application) to take advantage of the variable/object caching. But even without modification the opcode caching alone makes for a vast improvement.</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/03/18/praise-for-xcache/' addthis:title='Praise for XCache '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/03/18/praise-for-xcache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Down time</title>
		<link>http://www.jeffdarlington.com/2008/02/29/down-time/</link>
		<comments>http://www.jeffdarlington.com/2008/02/29/down-time/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 14:50:36 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[GPF]]></category>
		<category><![CDATA[Keenspot]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Slicehost]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/2008/02/29/down-time/</guid>
		<description><![CDATA[Not sure if anyone noticed, but both the blog and the new GPF beta test site were down last night. Our hosting service, Slicehost, informed us that a breaker blew in their data center and they were forced to bring a number of machines down to protect them. In addition, the blog server (which also [...]]]></description>
			<content:encoded><![CDATA[<p>Not sure if anyone noticed, but both the blog and the new <a href="http://www.gpf-comics.com/" title="General Protection Fault">GPF</a> beta test site were down last night. Our hosting service, <a href="http://www.slicehost.com/" title="Slicehost">Slicehost</a>, informed us that a breaker blew in their data center and they were forced to bring a number of machines down to protect them. In addition, the blog server (which also hosts a number other private sites I run) stopped responding, so they had to reboot it again.</p>
<p>Unfortunately, while Slicehost was very informative and sent me several e-mails to keep me apprised of the situation, the sites continued to be down until early this morning. That&#8217;s when I discovered that for some bizarre reason the <a href="http://www.mysql.com/" title="MySQL">MySQL</a> and <a href="http://httpd.apache.org/" title="Apache">Apache</a> services were not configured to start at boot time. This is baffling, in my opinion, as I thought this was automatic with <a href="http://fedoraproject.org/" title="Fedora Linux">Fedora</a>. You install the application package and, if it&#8217;s a service like this, it also installs the appropriate links in the init directories to make sure the services start on boot. Not so, apparently. I&#8217;m not sure if this is Fedora&#8217;s fault, Slicehost&#8217;s, or mine, to be honest, but it should be fixed now.</p>
<p>There&#8217;s one part of me thinks that this outage is an ominous sign on the eve of my leaving <a href="http://www.keenspot.com/" title="Keenspot Entertainment">Keenspot</a>. Then again, it also helped me catch a critical flaw that would have been extremely annoying if it happened a week later, after the move when thousands of readers would be hitting the new site. So I don&#8217;t know whether to be paranoid or relieved. (O_O)</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/02/29/down-time/' addthis:title='Down time '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/02/29/down-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>But we were there first. OK, maybe second.</title>
		<link>http://www.jeffdarlington.com/2008/02/25/but-we-were-there-first-ok-maybe-second/</link>
		<comments>http://www.jeffdarlington.com/2008/02/25/but-we-were-there-first-ok-maybe-second/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 15:20:44 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[GPF]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Webcomics]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[TWiT]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/2008/02/25/but-we-were-there-first-ok-maybe-second/</guid>
		<description><![CDATA[Anyone interested in the history of webcomics should check out this week&#8217;s episode of the This Week in Tech (TWiT) podcast. Especially since it has nothing to do with webcomics. Here&#8217;s my line of reasoning: In this episode, Leo Laporte and his unusual round of suspects are joined by Jonathan Coulton, geek musician extraordinaire. Aside [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone interested in the history of webcomics should check out <a href="http://twit.tv/133" title="This Week in Tech #133: Jonathan Coulton - Functional And Elegant">this week&#8217;s episode</a> of the This Week in Tech (<a href="http://twit.tv/twit" title="TWiT: This Week in Tech">TWiT</a>) podcast. Especially since it has nothing to do with webcomics.</p>
<p>Here&#8217;s my line of reasoning: In this episode, <a href="http://leoville.com/" title="Leoville.com">Leo Laporte</a> and his unusual round of suspects are joined by <a href="http://www.jonathancoulton.com/" title="Jonathan Coulton">Jonathan Coulton</a>, geek musician extraordinaire. Aside from discussing a few topics of current note (like the death of <a href="http://en.wikipedia.org/wiki/HD_DVD" title="HD DVD article on Wikipedia">HD DVD</a>), they discuss a recent concert by Coulton where Leo and company joined him to play <a href="http://en.wikipedia.org/wiki/Rock_Band_%28video_game%29" title="Rock Band (video game) article on Wikipedia">Rock Band</a> before a nerd-filled audience. They go on to talk about the &#8220;new&#8221; Internet phenomena of niche entertainment targeting&#8211;skipping the big, mass-market blitzkrieg typically used by music, TV, and movie studios and canvasing thousands or millions of potential customers, to instead go directly to your core fans, the few dedicated people who are the ones that will <em>really</em> appreciate what you do. Coulton talks of making a living catering to a small handful of hard-core fans and how this is much more fulfilling that the big media alternative, where both the artist and the audience are faceless statistics on the bottom line of a balance sheet. And they discuss this with such freshness and enthusiasm, as if this is were the next new thing, some epiphany that no one has yet uncovered.</p>
<p>What <em>I</em> find so funny about it is&#8230; those of us in webcomics have already been doing this&#8230; for <em>years.</em> <img src='http://www.jeffdarlington.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I&#8217;ve noticed this a lot over the past near-decade of <a href="http://www.gpf-comics.com/" title="General Protection Fault">GPF</a>&#8216;s existence. Blogs, podcasts, and other forms of grass-roots media have all cropped up during that time, putting publishing power in the hands of the masses, becoming &#8220;innovative&#8221; and &#8220;groundbreaking&#8221; in bringing content production to the people. But a fair number of &#8220;new&#8221; trends (and problems) associated with these technologies are things I remember seeing crop up among webcartoonists several years before. Long before the term &#8220;blog&#8221; was coined, I remember chatting with other cartoonists on mailing lists and news groups, swapping ideas about search engine optimization (before <em>that</em> term was coined as well), getting and retaining readers, how to monetize your site, etc. It&#8217;s entertaining now to watch many tech headlines to see &#8220;fresh&#8221; ideas crop up that I&#8217;ve personally tried&#8211;and abandoned&#8211;a couple years before. It&#8217;s like the wheel reinventing itself every couple of years, only with different colors and/or materials.</p>
<p>Of course, I would never be so conceited to believe webcomics &#8220;did it first.&#8221; Webcomics themselves borrow heavily from the underground comics movement of the 1950s, 60s, and 70s, where small independent publishers ducked under government sensors to push out innovated and controversial content directly to the people who wanted them. What changed between then and now is that the interconnectivity of the Internet moved this from basements and back rooms to hidden mailing lists and chat rooms, eventually making its way to the mainstream, all while expanding the sphere of availability from isolated pockets of common interest to global reach. It would also be naive to believe this flow of &#8220;innovation&#8221; is one-way; RSS and other syndication technologies took off first in the blogosphere, and was only later ret-conned and shoe-horned into webcomic automation systems as a handy update notification system.</p>
<p>Perhaps one of the reasons bloggers and podcasters didn&#8217;t learn any lessons from webcartoonists is the difference between skill level&#8211;real or perceived, take your pick&#8211;required for entry. Cartooning obviously requires some level of artistic talent as cartooning, in all of its myriad of forms, is a form of art. It&#8217;s often a commercial art, intended more to generate revenue than anything else, but an art nonetheless, conveying ideas and emotions graphically. And while a well-crafted blog certainly requires a talent for writing, that is often easier to come by than the ability to <em>both</em> write and draw. Thus the critical mass of webcartoonists is much smaller than that of bloggers and podcasters, making it less noticeable to the mainstream. That&#8217;s also why &#8220;break-out&#8221; blogs now seem to be a dime a dozen, but it&#8217;s still major news when an online comic gets noticed by big media and gets optioned for TV/movie deals. <em>Everyone</em> knows about blogs and maybe even reads a few, but there are other comics on the &#8220;intraweb&#8221; besides <a href="http://www.dilbert.com/" title="Dilbert.com">Dilbert</a>?</p>
<p>I&#8217;m not sure if there&#8217;s anything useful to these observations, other than the fact that they amuse me occasionally and it gives me something to post about. I&#8217;m not sure if anyone else has made these kinds of observations or, for that matter, anybody else cares. But I&#8217;ve often wondered if those underground cartoonists of yesteryear thought to same way about us webcartoonists as I have about bloggers. I&#8217;d like to think so, just because it creates a nice symmetry. I can&#8217;t wait for bloggers to sit around in the old bloggers&#8217; home, thinking such thoughts about whatever comes next. &#8220;Those kids with their holocasts&#8230; if they had learned the lessons we did about AI search, they&#8217;d be raking the quatloos by now&#8230;.&#8221;</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2008/02/25/but-we-were-there-first-ok-maybe-second/' addthis:title='But we were there first. OK, maybe second. '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2008/02/25/but-we-were-there-first-ok-maybe-second/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

