<?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>the corioblog &#187; HTML</title>
	<atom:link href="http://www.coriolinus.net/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coriolinus.net</link>
	<description>read, and be entertained</description>
	<lastBuildDate>Sat, 09 Jul 2011 19:53:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Protocol Buffers</title>
		<link>http://www.coriolinus.net/2008/07/08/protocol-buffers/</link>
		<comments>http://www.coriolinus.net/2008/07/08/protocol-buffers/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 01:14:23 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[misc.link]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[I/O stream]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/?p=2167</guid>
		<description><![CDATA[Subtitle: The good, the bad, and the&#8230; no, wait; this is a Google project. XML and Java have the same sort of flavor to them: they&#8217;re reasonably good and very widely used; they&#8217;re the sort of product that design committees everywhere aspire to create. Their flaws only really become visible after something better comes along. [...]]]></description>
			<content:encoded><![CDATA[<p>Subtitle: The good, the bad, and the&#8230; no, wait; this is a Google project.</p>
<p>XML and Java have the same sort of flavor to them: they&#8217;re reasonably good and very widely used; they&#8217;re the sort of product that design committees everywhere aspire to create. Their flaws only really become visible after something better comes along. In Java&#8217;s case, Python demonstrated that a whole lot of the structure and required text that gives Java code its rigidity can be stripped away, leaving a language that&#8217;s a joy to develop in. However, there hasn&#8217;t been an analogous improvement on XML.</p>
<p>Until yesterday.</p>
<p>Protocol Buffers have a non-descriptive name; I had no idea what to expect when I clicked <a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html">the link to the announcement</a> that Google put out. As it turns out, they&#8217;re a generic data serialization format (much like XML), except without all the human-readability business that so bloats actual XML. From the announcement:</p>
<blockquote><p>Protocol Buffers allow you to define simple data structures in a special definition language, then compile them to produce classes to represent those structures in the language of your choice. These classes come complete with heavily-optimized code to parse and serialize your message in an extremely compact format. Best of all, the classes are easy to use: each field has simple &#8220;get&#8221; and &#8220;set&#8221; methods, and once you&#8217;re ready, serializing the whole thing to – or parsing it from – a byte array or an I/O stream just takes a single method call.</p></blockquote>
<p>In case you missed that, <em>all you have to write is the schema</em>. All the encoding and decoding crap that you have to wade through in XML has already been abstracted away; they generate classes to do that for you. This is, in fact, cooler than sliced bread.</p>
<p>Of course, there <a href="http://code.google.com/apis/protocolbuffers/docs/overview.html#whynotxml">do exist times</a> when XML might better serve your needs:</p>
<blockquote><p>However, protocol buffers are not always a better solution than XML – for instance, protocol buffers would not be a good way to model a text-based document with markup (e.g. HTML), since you cannot easily interleave structure with text. In addition, XML is human-readable and human-editable; protocol buffers, at least in their native format, are not. XML is also – to some extent – self-describing. A protocol buffer is only meaningful if you have the message definition (the <code>.proto</code> file).</p></blockquote>
<p>In my experience, the human-readability and self-documentation inherent in XML have always been bonus features not essential to the core mission, which was getting data from Point A to Point B. However, I&#8217;ve had to spend countless hours wrangling with DOM and SAX, dealing with the problem of getting the data into and out of that intermediate form.</p>
<p>There is one wart that I noticed: you still have to create and read the Messages entirely distinctly from your own native class structure. The natural thing to do, if you want to use this to serialize and deserialize a class, would be just to put all the members into the Message definition and put the methods into a subclass of the generated class. However, that is <a href="http://code.google.com/apis/protocolbuffers/docs/reference/python-generated.html#message">expressly forbidden</a>. All is not lost, though: all you really need, at simplest, is a pair of methods like this:</p>
<pre class="brush: python">
class AClass(object):
     ...
     def toPBuff(self):
          out = AClassPBuff()
          for member in dir(self):
               if not (callable(member) or &#039;__&#039; in member or member in self.__excludeFromSerialize):
                    setattr(out, member, getattr(self, member))
          return out

     @classmethod
     def fromPBuff(cls, pBuff):
          out = AClass()
          for member in dir(out):
               if not (callable(member) or &#039;__&#039; in member or member in self.__excludeFromSerialize):
                    setattr(out, member, getattr(pBuff, member))
          return out
</pre>
<p>In short, even if only in terms of making efficient use of developer time, this is already an awesome project. Once you count in that it is also faster and slimmer than the alternatives, this becomes astonishingly cool. Expect it to be making appearances in my code from now on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2008/07/08/protocol-buffers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The blog is dead! Long live the blog!</title>
		<link>http://www.coriolinus.net/2008/05/03/the-blog-is-dead-long-live-the-blog/</link>
		<comments>http://www.coriolinus.net/2008/05/03/the-blog-is-dead-long-live-the-blog/#comments</comments>
		<pubDate>Sun, 04 May 2008 01:27:21 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[meta]]></category>
		<category><![CDATA[random things]]></category>
		<category><![CDATA[central server]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[web presence]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/?p=2095</guid>
		<description><![CDATA[Frankly, &#8220;blog&#8221; still sounds more like a fantasy creature encountered in swamps than a place on the net to write, but I suppose I&#8217;ll have to get used to it. There was a time, ages ago, when I might have had some small ability to influence the common vocabulary of today, but that time has [...]]]></description>
			<content:encoded><![CDATA[<p>Frankly, &#8220;blog&#8221; still sounds more like a fantasy creature encountered in swamps than a place on the net to write, but I suppose I&#8217;ll have to get used to it. There was a time, ages ago, when I might have had some small ability to influence the common vocabulary of today, but that time has passed.</p>
<p>So! Welcome to version 3 of my web presence! Version 1 was a geocities page I created a decade ago. I was hand-coding static HTML files, but I was doing so with intent to blog&#8211;this despite the fact that the word hadn&#8217;t been invented yet. It kept me amused during high school, but I got sick of the busywork of actually hand-coding <em>everything</em>. I went to college, and created Version 2: the livejournal which will probably be the sole source of traffic to this thing for quite some time. I did a little better with the migration this time; I&#8217;ve managed to import the old content and comments.</p>
<p>I don&#8217;t quite trust the automatic importer that I used; it stripped out the links to commentors&#8217; posts, and flattened the tree. Still, when faced with the prospect of either using that solution or implementing my own, for once I decided that doing it right would just take too much work. I suspect that instead of writing the first new content here the same day I started the project, I&#8217;d be still in the planning stages trying to work out exactly how wordpress&#8217;s database is organized.</p>
<p>Speaking of comments: try them out! This is not just a normal rfc; I want to make sure that people who don&#8217;t have all sorts of brand-new cookies and passwords floating around in their browser still get to post, that the gravatars work, that nothing strangely breaks if a bunch of people use it instead of just me. In short, if you&#8217;ve ever wanted to beta-test something, this is your big opportunity to discover all its glamor.</p>
<p><a href="http://en.gravatar.com/" target="_blank">Gravatars</a>, in case you didn&#8217;t notice in passing, are the new thing for putting a picture to your words. The idea is that you put an email address as part of registration for comments (if you&#8217;re so inclined), or into an anonymous comment. When you post the comment, the system checks its central server to see if you&#8217;re registered; if so, your image shows up, and if not, you get the grey silhouette. The point of it all is that you register once there, and then you automatically show up on any blog or forum which uses the system. We&#8217;ll see if it takes off; for right now, it came automatically enabled, and it was easier to sign up for my own than to figure out how to use some other system.</p>
<p>I&#8217;m pretty sure that anonymous comments are allowed, as are open registrations. We&#8217;ll see how the anti-spam system holds up; that may have to change in the future.</p>
<p>I&#8217;m going to talk about features now. Features, after all, are the reason I&#8217;m switching to an entirely new platform for my writing. They go far beyond the simple ability for me to host content beyond pure text; there&#8217;s a whole bunch of cool stuff that you, the reader, now get to do to my blog.</p>
<p>To the left of each post is a star bar. Click on a star, and rate my writing. It is the simplest possible system, and it gives me valuable feedback: I write for my audience, and I suspect you all will give me more input as to the quality of my output if you have a quick and anonymous method like this.</p>
<p>Below the star bar are the categories I&#8217;ve assigned to the post. You&#8217;ll only really see these for posts in the recent future, and from here on; it just takes too long to go through each of the thousand or so imported posts and do everything from the past manually. However, from this point forward, they should be useful for topic browsing.</p>
<p>If you click the title of a post or the comments bar, you get to see the post&#8217;s permalink page. Here, you&#8217;ll see pretty much what you&#8217;d expect in terms of the post itself, but you can also see tags. Tags are currently assigned on the basis of machine analysis of the text of each post; that&#8217;s how there are tags associated with a fairly large number of past posts.  I was hoping to also use a system by which anonymous readers could associate arbitrary tags to any post, and if three users pick the same tag it becomes official. However, it&#8217;s buggy right now, so that&#8217;ll have to wait. I half-suspect that I don&#8217;t have the volume of readership right now that would make that sort of system useful yet, anyway.</p>
<p>Once again, welcome. I hope you continue to enjoy my writing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2008/05/03/the-blog-is-dead-long-live-the-blog/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>beware: features ahead</title>
		<link>http://www.coriolinus.net/2007/09/27/beware-features-ahead/</link>
		<comments>http://www.coriolinus.net/2007/09/27/beware-features-ahead/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 04:11:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[software works]]></category>
		<category><![CDATA[wild and woolly internet]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2007/09/27/976/</guid>
		<description><![CDATA[I found what was causing the error, after 7.5 hours of debugging. A library I didn&#8217;t write that my code uses was crashing because of an error parsing the input file, which happens to be a page straight from the wild and woolly internet whose contents I have no control over. The error wasn&#8217;t showing [...]]]></description>
			<content:encoded><![CDATA[<p>I found what was causing the error, after 7.5 hours of debugging. A library I didn&#8217;t write that my code uses was crashing because of an error parsing the input file, which happens to be a page straight from the wild and woolly internet whose contents I have no control over. The error wasn&#8217;t showing up, because when I originally wrote the code which handled this, I caught this sort of exception and wrote useful debugging messages to a magic file. I was supposed to notice that this file existed when presented with errors of this sort, and use its debug messages to improve the code which cleaned up the HTML for the parser. Unfortunately, I had forgotten that it existed, and other than silently creating the file, there was no indication that this error had happened at all. Also unfortunately, this is usually the desired behavior.</p>
<p>On the plus side, once I figured out exactly what was wrong, I had the fix less than 5 minutes later.</p>
<p>I&#8217;d add documentation about this &#8216;feature&#8217;, but at this point, it&#8217;s good every once in a while to get really into a piece of code whether new or in debugging mode, just to keep my skills from dulling too much with disuse. Plus, with the new fix in place, I should have my absolutely final, completely bug-free version of this code now.</p>
<p>Because that&#8217;s the way software works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2007/09/27/beware-features-ahead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>code trade</title>
		<link>http://www.coriolinus.net/2005/12/02/code-trade/</link>
		<comments>http://www.coriolinus.net/2005/12/02/code-trade/#comments</comments>
		<pubDate>Sat, 03 Dec 2005 04:53:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2005/12/02/803/</guid>
		<description><![CDATA[I dislike web design; I can construct HTML, but I prefer to just put together a reasonable framework with lots of hooks so that someone who likes that sort of thing can come in later with CSS and make everything pretty. If necessary, I can do some CSS stuff myself. I loathe Javascript. What&#8217;s worse, [...]]]></description>
			<content:encoded><![CDATA[<p>I dislike web design; I can construct HTML, but I prefer to just put together a reasonable framework with lots of hooks so that someone who likes that sort of thing can come in later with CSS and make everything pretty. If necessary, I can do some CSS stuff myself.</p>
<p>I <em>loathe</em> Javascript. What&#8217;s worse, I suck at it.</p>
<p>Nevertheless, it is the fate of people who write programs to be viewed over the internet to have to deal with web design and javascript. In my current project, I&#8217;m running into obstacles doing <a href="http://en.wikipedia.org/wiki/AJAX">AJAX</a>ish stuff, despite the fact that I&#8217;m using <a href="http://www.mochikit.com/">MochiKit</a> to attempt to streamline the JS coding process.</p>
<p>I want to trade development hours. I&#8217;ve got extensive experience in Java, and I&#8217;d consider myself pretty good with Python. I can still do PHP, though I haven&#8217;t worked in that language in a while. I will code up whatever small tasks you&#8217;ve got on whatever project you&#8217;ve got cooking, in exchange for you taking care of my JavaScript for me on mine.</p>
<p><a href="mailto:coriolinus @ gmail.com">Email</a> me if you&#8217;re interested in doing this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2005/12/02/code-trade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>728</title>
		<link>http://www.coriolinus.net/2005/09/02/728/</link>
		<comments>http://www.coriolinus.net/2005/09/02/728/#comments</comments>
		<pubDate>Fri, 02 Sep 2005 15:43:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[internet service]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2005/09/02/728/</guid>
		<description><![CDATA[For some reason, I still have internet service. This is somewhat worrisome, as I was under the impression they were going to cut it off as of yesterday. I found an interesting link, though it&#8217;s a bit frustrating for firefox users because the lack of a .htm or .html extension causes it not to be [...]]]></description>
			<content:encoded><![CDATA[<p>For some reason, I still have internet service. This is somewhat worrisome, as I was under the impression they were going to cut it off as of yesterday. </p>
<p>I found an interesting <a href="http://www.escapemyhead.com/2005/08/when-it-absolutely-positively-has-to">link</a>, though it&#8217;s a bit frustrating for firefox users because the lack of a .htm or .html extension causes it not to be rendered. What makes this one interesting is not so much the content as the discussion underneath.</p>
<p>The assertion is raised that usage of goods provided for free in any manner not intended by the distributor is equivalent to theft. If you&#8217;re using EULA-ish &#8216;ownership&#8217; of software and other IP, then this makes sense. However, there is no EULA for free boxes you can pick up at a Kinko&#8217;s; you can just get them for free. The question, therefore, is in which sense ownership <em>should</em> operate. Is the old model, in which ownership is complete and transferral of ownership leaves nothing to the creator, outdated? Or should the default for physical goods be that, like intellectual property, the consumer never fully owns the product; the creator (or someone who bought complete ownership directly from them) always has some rights with respect to the use of the product?</p>
<p>My personal opinion is that if you give something away, you can&#8217;t complain about whatever use someone puts your product to unless you made the recipient sign a contract outlining these restrictions in exchange for the product. In that case, you can&#8217;t call the product free; it may not cost money, but it costs in rights, which shouldn&#8217;t count as nothing. I&#8217;m interested in what you think, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2005/09/02/728/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>on the other hand I could just use a mature content management system</title>
		<link>http://www.coriolinus.net/2004/05/27/on-the-other-hand-i-could-just-use-a-mature-content-management-system/</link>
		<comments>http://www.coriolinus.net/2004/05/27/on-the-other-hand-i-could-just-use-a-mature-content-management-system/#comments</comments>
		<pubDate>Thu, 27 May 2004 07:30:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[plug and play]]></category>
		<category><![CDATA[web page design]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2004/05/27/559/</guid>
		<description><![CDATA[I just had an epiphany of sorts; a vision of how to turn web page design into an exercise in object-oriented plug and play. I can keep the whole system in my head for a few seconds at a time&#8230; The basic reason for this is that well-designed sites end up having a lot of [...]]]></description>
			<content:encoded><![CDATA[<p>I just had an epiphany of sorts; a vision of how to turn web page design into an exercise in object-oriented plug and play. I can keep the whole system in my head for a few seconds at a time&#8230;</p>
<p>The basic reason for this is that well-designed sites end up having a lot of code repetition: to make navigation bars, include style sheets, etc. On the presentation side, that&#8217;s just the Way it Is; it&#8217;s a necessary consequence of the design of HTML. But on the design side, you don&#8217;t necessarily need to do that; you can write a series of classes representing each major element of common design; extend them to customize them, or leave them as default. Then, you plug the ones you need together into your overall object, and each page is generated automatically. Change the design in one place, and your whole site gets the tweak. At the lowest level of granularity, you end up loading html fragments consisting only of the <em>content</em> of each page; the parts that are different from every other page. All the common elements are maintained perfectly, and automatically.</p>
<p>It has downsides. Each page is generated on the fly each time it is requested, regardless of how much dynamic content there actually is. This is going to bog things down on the server side if your site gets popular; it might be better to use a movable type-style method which generates the pages into static text. Even so&#8230; I might sit down and design this sometime soon. It has the potential to be something big.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2004/05/27/on-the-other-hand-i-could-just-use-a-mature-content-management-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GUI</title>
		<link>http://www.coriolinus.net/2003/05/21/gui/</link>
		<comments>http://www.coriolinus.net/2003/05/21/gui/#comments</comments>
		<pubDate>Wed, 21 May 2003 06:44:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2003/05/21/313/</guid>
		<description><![CDATA[It&#8217;s funny, because the moment you add the graphical element to a program, its size grows ridiculously. It was true when I was programming them out of hand-drawn ascii art with QBasic, it was true when I was still using QBasic to create simple 320&#215;240 graphics, it was true later with Visual Basic, and it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s funny, because the moment you add the graphical element to a program, its size grows ridiculously. It was true when I was programming them out of hand-drawn ascii art with QBasic, it was true when I was still using QBasic to create simple 320&#215;240 graphics, it was true later with Visual Basic, and it&#8217;s still true as I start to create programs which take advantage of my <a href="http://www.kde.org">KDE</a> desktop.</p>
<p>The only language I&#8217;ve ever used in which the graphical element has been fairly unobtrusive and simple was <a href="http://www.php.net">PHP</a>. I suspect that it&#8217;s because PHP was built from the ground up to take the input and output functionality of HTML and run with it, as it merges very well with HTML code and fits the general style, and has no other obvious input or output methods. This was a good choice, because HTML itself was designed to be a interface design specification language of a high degree of power and flexibility, yet simple enough to be hand-coded without significant trouble.</p>
<p>The reason I&#8217;m mentioning all of this is that I&#8217;ve started to look into the how and why of creating a graphical desktop application for Linux. I would be doing this for Windows, but I no longer use that operating system. This is all leading into the creation of the graphical SCP client eventually. Right now, I&#8217;ve created a rather useless hello world program which, nonetheless, runs on the KDE desktop. However, I was following a tutorial rather closely. Next on the menu: creating a program of my own design and specification (a simple digital clock which I can resize with the font size adjusting accordingly, perhaps with alarm and/or analogue mode).</p>
<p>Why do I program and learn during summer vacation, when I could be mindlessly bent on relaxation? I&#8217;ve relapsed into a seminocturnal sleeping schedule, and there are only so many novels I can read&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2003/05/21/gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts of GaratHack</title>
		<link>http://www.coriolinus.net/2002/12/29/thoughts-of-garathack/</link>
		<comments>http://www.coriolinus.net/2002/12/29/thoughts-of-garathack/#comments</comments>
		<pubDate>Sun, 29 Dec 2002 15:48:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[meta]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jesus]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2002/12/29/230/</guid>
		<description><![CDATA[Sometimes I feel like I was one of the pioneers of the modern internet. Why? Long before the current popularity of blogging media, I had my own weblog. Before that was even a word. Granted, it was that way primarily because I can generate large quantities of prose without too much effort and I had [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I feel like I was one of the pioneers of the modern internet. Why? Long before the current popularity of blogging media, I had my own weblog. Before that was even a word.</p>
<p>Granted, it was that way primarily because I can generate large quantities of prose without too much effort and I had next to no knowledge of html at the time; granted that it was only a silly little geocities site&#8230; it was still a periodically-updated collection of my musings, posted in reverse order, that I maintained for several months&#8230; It was called <strong>The Thoughts of GaratHack</strong>, which is only logical, considering that my current screen name was GaratHack. One reason I&#8217;m very proud of this site was that over the course of time, I received three or four emails from perfect strangers, telling me that I had made something interesting and good.</p>
<p>Another reason I really liked this was because much of it was stuff I actually thought about, at least briefly. And I wrote about everything: philosophy, religion, my life in high school&#8230;</p>
<p>If I can make it look right, I&#8217;ll offer a sample:<br />
<strong>Archived Thoughts of GaratHack</strong></p>
<div>
<table border="0" bgcolor="black">
<tbody>
<tr>
<td><span style="font-family: monospace,courier new,courier; color: white;"><tt></tt></span></p>
<h4><span style="font-family: monospace,courier new,courier; color: white;"><tt>Oct 16 00--The Our Father</tt></span></h4>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>Don't worry, I'm not going to write a deeply theological article about how the Our Father relates to normal everyday life. I'm not that sort of person. Still, I have to do a project on it for a course that's required for graduation, and it's on my mind.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>For those of you who don't know, the Our Father is the first Christian prayer. Lore has it that Jesus himself taught it to the disciples, but that's nearly impossible to prove or disprove. Still, it's the Pledge of Allegience of Prayers: people recite it solemnly, and maybe think that they mean what they're saying. However, most people, if they think about what it means at all, just run it through spot checks as they say it. As each sentence passes through their lips, they think: "Can I possibly affirm the sentiment expressed by this? Yes. Therefore I mean what I'm saying." Unfortunately, that's just about as deep as it goes.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>What few people seem to realize is that the Our Father is a prayer for the end of the world. With all the doomsayers around, it's surprising that nobody's noticed any earlier.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>The Our Father is a simple five line prayer. The first and last lines can be largely ignored; they're standard statements sucking up to god, and don't really affect the message of the prayer in any way. The middle three are the meat of the prayer, and actually ask for something quite different from what people are taught they mean in third grade religion classes.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>The second line of the prayer is as follows: "thy kingdom come, thy will be done on earth as it is in heaven." According to Jesus, god's kingdom is not of this earth. It is someplace distant and only faintly related to the world we live on. This line asks to bring it here. Also, the standard image of heaven is one where god's rule is absolute and instantaneous. Instead of having to 'work through mysterious ways,' if god wants something, &gt;pouf&lt;, god gets it. To make god work on earth as in heaven means that miracles should come to be expected, with physics and cause and effect taking second place to the will of god. This line asks for the end of the world as we know it, though perhaps not literally ending the world.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>The third line of the prayer goes like this: "give us this day our daily bread and forgive us our trespasses." No longer will people work, or worry about evil. It's back to eden, the perfect garden where people talked directly to god. God supplies whatever people need, and is right there to forgive any evil that may inadvertently occur. This line, also, requires a complete change in the way the world works, but not necessarily its destruction.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>It's the fourth line that's the clincher. It's the shortest one in the prayer; it simply asks god to "deliver us from evil." As a person required to take theology courses for 12 years so far, I can say authoritatively that the church regards the world as an imperfect place. Those imperfections take the form of evil. The world itself is inherently evil, though it wasn't at first when god created it. It became evil when people noticed that there was land outside the garden of eden. Therefore, when a person asks god to deliver him or her from evil, they ask to be removed from the world. The don't ask to have evil removed from the world; if that were the intend, the prayer would be worded thus: "deliver evil from us." Instead, the person is asking for what is known in church terminology as The Rapture.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>During The Rapture, every faithful person is supposed to be whisked to heaven instantaneously to undergo the final judgement. While god's busy with them, he rest are left to fight out 100 years of holy warfare, the good taking sides against the evil, until god prevails in the end. Then the good undergo final judgement and the evil are sent to hell. And every time a person prays the Our Father, they are asking for this to happen. </tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>That's basically the paper I'm going to write. I don't like christian religion very much, though. The ancient greek/roman religion (which we demote without thinking to 'mythology') made as much sense as this, and it had a better storyline.</tt></span></p>
<h4><span style="font-family: monospace,courier new,courier; color: white;"><tt>Oct 09 00 -- My Obsession</tt></span></h4>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>The sign said: "All children under 7 must be accompanied by an adult."</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>I am a compulsive reader. I have been since I was very small and taught myself how to form the symbols, the letters, into words. I was incredibly happy the January that I turned seven, because that sign no longer applied to me. It meant that I could walk, all alone, the ten minutes that it took me to get to the public library. From there, I could get to any book I could think of. I could just browse, I could sit down and read a book in the library without checking it out, I could do anything. There was a five book checkout limit for the juvenile library cards, and I held furious debates within myself about which five books I would take out, which selections--by Anthony, Asimov, Duane, McCafferty, or whoever else I was reading that day--would make the cut. Typically, before the school week was over I would be back at the library, returning the used books, getting a fresh batch.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>It had consequences, both good and bad. I got a perfect verbal score on the SATs recently. I've always had a rather large vocabulary, and done well in school. However, would I have the ability to score so well, or to perform at this level, without reading? Is it aptitude, or just a skill that I've been practicing since I was four? I really don't know. </tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>The flipside of the coin is that I've been a recluse for most of my life. During recess, instead of playing kickball, dodgeball, or tetherball in the parking lot where the kids milled around, I would sit with my back to the school building, nestled in the corner where the wings joined, and read. During classes, if the teacher wasn't speaking and we didn't have an assignment, I would read. Walking down the hallway, down the stairs, all the way home, I would read. Instead of playing with my peers, I read about the adventures of imaginary people. They were far more grand and interesting than anything I saw to do with kids my age. Frendship became a very rare but little sought after comfort. Fictional characters were generally more interesting, more self reliant, and more flexible about when I could meet with them than real people.</tt></span></p>
<p><span style="font-family: monospace,courier new,courier; color: white;"><tt>There is really no point to this article other than to offer some insight into how I came to be the person I am.<br />
</tt></span></td>
</tr>
</tbody>
</table>
</div>
<p>I love to dissect things in my mind, to delve into introspective musings, to reason through the logic of everything I see. Usually, I never get a chance to write down my thought process. This project was one notable exception to that rule, and one I&#8217;m exceptionally fond of.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2002/12/29/thoughts-of-garathack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>yeah, another webcomics directory post</title>
		<link>http://www.coriolinus.net/2002/12/19/yeah-another-webcomics-directory-post/</link>
		<comments>http://www.coriolinus.net/2002/12/19/yeah-another-webcomics-directory-post/#comments</comments>
		<pubDate>Thu, 19 Dec 2002 10:07:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[foreign server]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[overhead processing time]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2002/12/19/212/</guid>
		<description><![CDATA[So I think I&#8217;ve worked out a nice new way to implement the webcomics directory. It&#8217;s going to be class-based, instead of function-based, and I&#8217;m going to start exploring the uses for mySQL in PHP instead of reading everything from flat file formats. In the end, if all works out right, it should look exactly [...]]]></description>
			<content:encoded><![CDATA[<p>So I think I&#8217;ve worked out a nice new way to implement the <a href="http://users.wpi.edu/~peterg/webcomicsdirectory/">webcomics directory</a>. It&#8217;s going to be class-based, instead of function-based, and I&#8217;m going to start exploring the uses for mySQL in PHP instead of reading everything from flat file formats. In the end, if all works out right, it should <em>look</em> exactly the same, because I&#8217;m happy with the formatting, but there should be one major difference: every comic should load properly.</p>
<p>I think that one of the main benefits of handling it in this class-based way is that I can create subclasses whenever necessary, which means that I can handle all the really funny-formatted comics properly. Right now, I&#8217;m thinking of <a href="http://faith.rydia.net/">Demonology 101</a>, which currently isn&#8217;t even in the directory because (1) it only updates once a week, and (2) it has a format so alien to the current directory structure that it&#8217;s impossible to parse.</p>
<p>Of course, one thing that I&#8217;m going to have to watch out for is load time. Already, it takes upward of 30 seconds to generate the webcomics directory, though most of this is because it has to load at least the index.html for each comic in the directory to give it a shot at parsing. With the new code, I can only increase the overhead processing time on the server, because I&#8217;m handling things at a higher level. One thing I want to attempt to combat that is to multithread the process, so that each call out to a foreign server happens (relatively) simultaneously. Of course, that would make this my first multithreaded program <em>ever</em>, and I&#8217;m not looking forward to it; everything that I&#8217;ve heard about it makes it sound hairy. Also, this would realistically force me to buffer all output until all the threads are finished processing, at which point I&#8217;ll need to flush everything&#8230; hopefully this&#8217;ll all happen fast enough that I don&#8217;t run into time-out errors on the client side&#8230;</p>
<p>For the moment, I&#8217;m going to be putting all my test implementations <a href="http://users.wpi.edu/~peterg/webcomicsdirectory/test/">here</a>, in case you want to see a buggy work-in-progress.</p>
<p>Of course, this means that I&#8217;m going to have to teach myself SQL in general, the mySQL implementation in PHP, the way PHP handles classes, all about multithreading&#8230; I think that&#8217;s all I&#8217;ll have to learn, for the moment, but I might discover more once I start coding.</p>
<p>Wish me luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2002/12/19/yeah-another-webcomics-directory-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>webcomics directory update</title>
		<link>http://www.coriolinus.net/2002/04/09/webcomics-directory-update/</link>
		<comments>http://www.coriolinus.net/2002/04/09/webcomics-directory-update/#comments</comments>
		<pubDate>Tue, 09 Apr 2002 20:42:00 +0000</pubDate>
		<dc:creator>coriolinus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.coriolinus.net/2002/04/09/webcomics-directory-update/</guid>
		<description><![CDATA[You know, it&#8217;s a deceptively simple concept: starting with nothing but a basic understanding of HTML, write something that manages to put 40 or so webcomics onto one page for easy viewing. Teach yourself anything you need on the way using publicly available tutorials. Bonus points for style and creativity. The little html that I [...]]]></description>
			<content:encoded><![CDATA[<p>You know, it&#8217;s a deceptively simple concept: starting with nothing but a basic understanding of HTML, write <i>something</i> that manages to put 40 or so webcomics onto one page for easy viewing. Teach yourself anything you need on the way using publicly available tutorials. Bonus points for style and creativity.</p>
<p>The little html that I didn&#8217;t already know, I figured out quickly and without any problems. But now I&#8217;m getting bogged down by style sheets (which I have no idea how to use), debugging regular expressions (which may not even be the problem), and the issue of multiplying every basic task by 40, because that&#8217;s how many webcomics I need to set this up for&#8230;</p>
<p>I just don&#8217;t have enough time to devote to sit down and finish this project. There&#8217;s always something to do&#8230;</p>
<p>Maybe I&#8217;ll have some time over the weekend. Maybe. After the initiation and the required dance and whatnot. Maybe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coriolinus.net/2002/04/09/webcomics-directory-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

