<?xml version="1.0"?>
<rss version="2.0">
	<channel>
      <title>ode - a simple personal publishing platform for the web</title>
      <link>http://ode-is-simple.com/home/</link>
      <description>Ode is simple (Simple means that you know how it works).</description>
      <language>en</language>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs>
      <generator><!-- name="generator" content="ode/.1" --></generator>
      <managingEditor>rob@ode-is-simple.com (Rob Reed)</managingEditor>
      <webMaster>rob@ode-is-simple.com (Rob Reed)</webMaster>
<item>
   <title>Ode 1.0 release is almost here</title>
   <link>http://ode-is-simple.com/home/2008/11/06#announcing_the_release_ofOde</link>
   <description><![CDATA[<p>Just wanted to post a quick note to say that I'm about to release the first iteration of Ode. In consideration of the amount of time I've taken to get the source online, and as something of a throw back to the good ole days of software development before Google started the trend of perpetual beta software and versioning schemes never seem to break that first major release barrier, the first release of Ode will 1.0. After all as a straight forward procedural script, Ode is something of a throwback itself.</p>

<p>(In the future I'm planning on moving to a dated versioning scheme.)</p>

<p>I'm going to start by asking everyone interested in the project send me an email. It can be as long or short as you want and you're welcome to write anything you like. I would appreciate at least non-empty title and body. I'd prefer a short introduction and maybe at least a little information about why you're interested in the project. Eventually, even this minor requirement will be dropped and the script, addins, and documentation will be available on  the site to download.</p>

<p>The purpose of this isn't to track your use of the software. The idea is to encourage you to contact me with any questions or problems you may have after you download and install the project. (Consider it an icebreaker. The second email is always easier to write than the first). Furthermore, I'd like to see a supportive community spring from the project, and a short introduction is the first step toward realizing that goal.</p>

<p>Of course I will never sell, spam, or otherwise use your email address in any systematic or profit-making way. I may reply to your email directly, but will do nothing else without your express permission.</p>

<p><strong>Send an email to rob at this domain</strong> to be contacted as soon as Ode is made available with a link to download the source and related documentation, themes, etc.</p>
]]></description>
   <pubDate>Thu, 06 Nov 2008 14:30:19 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/11/06#announcing_the_release_ofOde</guid>
</item>
<item>
   <title>Do more with Ode (simply)</title>
   <link>http://ode-is-simple.com/home/2008/7/14#discover_content</link>
   <description><![CDATA[<p>Yes, unfortunately I still haven't released Ode. That's the bad news. The good news is that it still is coming AND I've decided to make it <strong>much more</strong> functional.</p>

<p>Until now, all posts were simple text files (including html, and markdown formatted text, and just about anything else you can insert using text). All of these text files are with themes to generate the site dynamically in response to visitor requests.</p>

<p>Now these text files are just one the possibilities for a post under Ode. I've added an interface which will allow addin developers to define content type handlers so that Ode can be made to work with more sort of files.</p>

<p>So for example an addin developer could easily assume responsibiliy for .jpg content and then maybe scale a full size image and wrap it in a block of meta data pulled from the image file itself, with the resulting content added to the page along with all of the other posts.</p>

<p>The idea is still the same. Let's define a website as what is essentially a bridge between the browser and the file system by defining styles and behaviors that describe how we want our content displayed on the site. All we need to do to make our content available to visitors is to copy the files where we want them and we're done. There is no need to special tools and techniques for working with  </p>

<p>Because all content are discrete files, an Ode site is simple to manage. How's that? Well, how do you manage all of your other files? You can do the same things to manage your website. You can add, edit, and delete content simply by working with your files as you normally do. Edit posts directly using your favorite applications (or using whatever apps are available when you're away from your computer).</p>

<p>And of course I haven't compromised the "simple means you know how it works" philosophy that makes Ode, well Ode (and unlike anything other weblog platform).</p>

<p>I hope to have Ode released <strong>real soon</strong>. Until then feel free to send me an email or join the discussion group if you're interested. I'm happy to discuss the project with anyone who might want to know more about it.</p>
]]></description>
   <pubDate>Mon, 14 Jul 2008 20:00:00 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/7/14#discover_content</guid>
</item>
<item>
   <title>Case insensitive paths introduced as a configurable option</title>
   <link>http://ode-is-simple.com/home/2008/6/06#case_insensitive_path2008_0606</link>
   <description><![CDATA[<p>Operating systems handle this differently left to their own devices, and its also possible to deal with this in the web server configuration, but after getting tripped up by <a href="http://robreed.net/weblog/Meta/where_for_art_thou_boku_case_sensitivity.html#where_for_art_thou_boku_case_sensitivity" title="Post: Where for art thou Boku?">a problem with case-sensitive paths</a> myself recently running ode at <a href="http://robreed.netweblog" title="Personal weblog running Ode">robreed.net/weblog</a> I decided to add a configurable option allowing the site maintainer to enable case-insensitive paths in ode.</p>

<p>If you'd prefer to handle this issue in some other way just leave the option disabled (the default).</p>
]]></description>
   <pubDate>Fri, 06 Jun 2008 12:43:06 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/6/06#case_insensitive_path2008_0606</guid>
</item>
<item>
   <title>What the hell, it's been 4 months?!</title>
   <link>http://ode-is-simple.com/home/2008/6/02#Feb_19_2008_to_June_2_2008</link>
   <description><![CDATA[<p>Well not quite 4, but almost that long. So first an apology is in order for anyone waiting for this!</p>

<p>(Luckily there aren't many of you and I'm purposefully not doing anything to promote ode until I have something released.)</p>

<p>I have been steadily working on Ode, primarily on the documentation. In fact, I've spent as much time on the documentation as I have ode itself. Why? I'll start by with why not.</p>

<p>It's not because Ode is complicated. I feel compelled to say again that anyone wanting a complex application should adjust their expectations or look elsewhere. While ode is intended to be genuinely useful as a legitimately practical online web publishing platform, it is not intended to be some kind of a riddle. For experienced programmers, the challenge will not be figuring out how ode works by wrangling with 'clever' (read obfuscated) code. If you are looking for an opportunity to test your programming mettle, you should look elsewhere. On the other hand, You will be able to understand how Ode works, every nook and cranny, and you will be able to do wonderfully interesting things with Ode in a matter of minutes. You can then spend the rest of your time doing still more fun things with Ode, or you could do other things.</p>

<p>So why then am I spending so much time on documentation. The answer to this question is two-fold.</p>

<ol>
<li><p>Ode is intended to be accessible to anyone with a genuine interest in learning how to program. To this end I have been careful to use syntax and constructs that a student is likely to learn in an intro programming course, or read about in an intro to programming book. Moreover I have purposefully tried to avoid being terse and overly idiomatic. Ode is written in Perl, and while it is true that Perl can look like a very unique (and uniquely difficult) sort of language, there is no reason why we can't, in most cases, write Perl in such a way that it is recognizable to people coming from other languages, and to do so in a way that is not inefficient. This is true in part because of the interpreter which is very good at recognizing and optimizing code to run efficiently, regardless of how it is written in many cases. I chose Perl because it is widely available, mature, and stable, and not for any other reason. I'm not particularly concerned about writing clever Perl code.</p>

<p>Anyway, if we are going to serve the needs of people very new to programming, in addition to writing obvious code, we need to describe what is is doing in some detail. After all, programming languages are exceedingly concise by design, in comparison to natural language prose for example. Given this fact, it has always been somewhat surprising to me how little time and effort most programmers put into documenting their code. More surprising is how little documentation is emphasized in college CS programs, but that's a topic for another post.</p></li>
<li><p>The second reason is best described by a presentation I put together related to topic of documentation for a software architecture course I took recently (Spring 2008). Essentially, the presentation expresses that I feel strongly that documentation is a critically important part of software development. Feel free to <a href="http://robreed.net/weblog/presentations/comp250sa_project_presentation.presentation" title="A general model for architecture documentation">take a look at the presentation</a> if you're interested.</p></li>
</ol>

<p>Other than documentation I've continued to tweak the code (much more than I anticipated I would) while working toward releasing the project.</p>

<p>Finally, I've added some new features and functionality. I'll write separate posts describing this work and I'll try to do a better job of posting about this sort of change going forward.</p>

<p>Beyond the source code itself I'm working on several themes to accompany the software, some of which are necessary to accomplish some of the things I want Ode to be able to do, e.g. syndication, in-browser editing of posts, presentations. All of these things require unique themes. Beyond these 'utility' themes, I want to include several weblog style themes with Ode.</p>

<p>Also, I'm putting together 'stub' addins in hopes of avoiding any confusion about how addin interfaces work.</p>

<p>So, none of this satisfactorily makes up for the fact Ode is not yet available to download and use but 1) I promise that will happen, and 2) I promise it will happen soon.</p>

<p>My personal weblog is now running on Ode. Maybe that is at least something in the way of proof that I'm aggressively working toward the goal of releasing Ode publicly.</p>

<p>In the interim I'll do a better job of keeping up with the Fresh Today posts, because I still like the idea.</p>

<p>If you have any questions for me, don't hesitate to ask. If you're wondering if Ode might be appropriate for something you have in mind, I may be able to answer your question(s) directly.</p>

<p>Thanks for your patience,</p>

<p>Rob</p>
]]></description>
   <pubDate>Mon, 02 Jun 2008 17:14:31 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/6/02#Feb_19_2008_to_June_2_2008</guid>
</item>
<item>
   <title>Intro to Ode Presentation</title>
   <link>http://ode-is-simple.com/home/2008/2/19#intro_toOde_presentation</link>
   <description><![CDATA[<p>If you're unfamiliar with Ode, you may want to take a look at the <a href="http://ode-is-simple.com/home/presentations/intro_toOde.presentation" title="Intro to Ode Presentation - requires Javascript">Intro to Ode presentation</a>.</p>

<p>The presentation includes 29 slides that attempt to address the first questions you might have, i.e. the what and why of Ode (from basics to design goals).</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 16:53:49 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#intro_toOde_presentation</guid>
</item>
<item>
   <title>Fresh Today: A few quick posts today with updates spanning the past 3 days.</title>
   <link>http://ode-is-simple.com/home/2008/2/19#ft_index_2008_0319</link>
   <description><![CDATA[<p>Keep reading...</p>

<h4>New addin interfaces</h4>

<p>I'm always trying to think of things I can't do with Ode that seem like something Ode should be able to do. I'm happy to say that I can usually find a pretty efficient way of getting an idea done. But from the beginning I've held back on a couple of addin hooks that I finally decided to go ahead with.</p>

<ul>
<li><a href="http://ode-is-simple.com/home/about_ode/fresh_today/manipulate_request#manipulate_request" title="Fresh Today: manipulate_request (new interface) permalink">manipulate_request</a></li>
</ul>

<h4>New addins</h4>

<ul>
<li><a href="http://ode-is-simple.com/home/about_ode/fresh_today/futz_request#futz_request" title="Fresh Today: Futz_request (new addin) permalink">Futz_request</a></li>
</ul>

<h4>Improvements/new features</h4>

<ul>
<li><a href="http://ode-is-simple.com/home/about_ode/fresh_today/better_page_titles#better_page_titles" title="Fresh Today: Better post titles (improvement) permalink">Better page titles</a></li>
<li><a href="http://ode-is-simple.com/home/about_ode/fresh_today/bypass_page_generation#bypass_page_generation" title="Fresh Today: Bypass page generation (improvement) permalink">Bypass page generation</a></li>
</ul>

<p>More updates and improvements are in the works and I am working to make Ode available here very soon. Thanks for your continued (if unenthusiastic) patience. The good news (for all of us) is that I only have to launch the project once :)</p>

<p>I remain as committed to Ode as ever. Feel free to check back again for more updates.</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 13:20:59 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#ft_index_2008_0319</guid>
</item>
<item>
   <title>Fresh Today: manipulate_request (new addin interface)</title>
   <link>http://ode-is-simple.com/home/2008/2/19#manipulate_request</link>
   <description><![CDATA[<p>Fresh Today: New addin interface - manipulate_request</p>

<p>The manipulate_request routine, as it's name suggests, allows addin developers access to the request (url, path, and parameters) very early in the execution of Ode. Before it is decided which posts satisfy the request.</p>

<p>As you might expect I think this new capability has some practical value. I've already put together one addin that takes advantage of the new interface.</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 13:20:58 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#manipulate_request</guid>
</item>
<item>
   <title>Fresh Today: Futz_request (new addin)</title>
   <link>http://ode-is-simple.com/home/2008/2/19#futz_request</link>
   <description><![CDATA[<p>Ode takes requests pretty literally.</p>

<pre><code>http://ode-is-simple.com/home/about_ode
</code></pre>

<p>Is a request for a post file with the name 'about_ode' (which does not exist) and not the category (directory) .../about/ode/ (which does).</p>

<p>Note the absence of the trailing forward slash. Though Ode is technically doing the right thing here, this is an easy mistake for a visitor to make.</p>

<p>Taking advantage of the new manipulate_request routine, this addin will</p>

<ol>
<li><p>Notice that the request:</p>

<pre><code>http://ode-is-simple.com/home/about_ode
</code></pre></li>
</ol>

<p>doesn't match a post on the site.</p>

<ol>
<li><p>Determine that there is a directory at:</p>

<pre><code>http://ode-is-simple.com/home/about_ode/
</code></pre></li>
<li><p>Change the request so that it resolves to the directory with the same name.</p></li>
</ol>

<p>Of course, this could work in the other direction as well. (Though that mistake is far less common.)</p>

<p>We can change the request sneakily without notifying the visitor of the change or we can do a proper redirect, which issues a new request on behalf of the visitor, updates the address in the browser's address bar, and issues an appropriate HTTP status code (301, 302, 303).</p>

<p>By the way, the name of this addin is very likely to change.</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 13:20:57 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#futz_request</guid>
</item>
<item>
   <title>Fresh Today - Better Page Titles (improvement)</title>
   <link>http://ode-is-simple.com/home/2008/2/19#better_page_titles</link>
   <description><![CDATA[<p>You may notice that every page at ode-is-simple.com/home/ has the same title. That's very sad. :)</p>

<p>Ode should do whatever it can to make sure that your content is easy to find  and use for human visitors, search engines, other sorts of web services, etc. </p>

<p>This is a very broad statement involving a number of different considerations, including among many others: standards compliance, reliability, and design. Somewhere in there are page titles.</p>

<p>Ideally each page should have a unique title and right now Ode is the opposite of that (i.e. each page has exactly the same title). That's the bad kind of simple (stupid simple). The trouble is that by the time Ode accesses the content of a site, the page title has already been committed (finalized).</p>

<p>A little reworking of Ode takes care of that problem. Now:</p>

<ul>
<li>The home page title is the site title.</li>
<li>Category page titles agree with category names.</li>
<li>Pages for individual posts take there title from the post title.</li>
</ul>

<p>Of course, this is only the default. You're free to do anything you like with page titles. The key thing is that it's now possible to have all of these different page titles and before it wasn't.</p>

<p>You won't see this change at ode-is-simple.com until I cut over to the new version of Ode on the site. I'll figure out some way to make it obvious when that happens (other than the page titles I mean).</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 13:20:56 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#better_page_titles</guid>
</item>
<item>
   <title>Fresh Today - Bypass Page Generation (improvement)</title>
   <link>http://ode-is-simple.com/home/2008/2/19#bypass_page_generation</link>
   <description><![CDATA[<p>It is now possible for an addin to have Ode dispense with building a page in response to the visitor request (and all of the work normally involved in generation of the page).</p>

<p>What's the purpose? I can think of two. The first is somewhat theoretical, and the second very practical.</p>

<ol>
<li>Without Ode's page to get in the way, you could generate any kind of page you like.</li>
</ol>

<p>Of course building and serving a page from scratch is exactly what we're trying to avoid with Ode, so I'm assuming that the 'page you like' would be something other than a static HTML page. This might be good for a custom media page (e.g. a photo gallery).</p>

<p>Of course it would be easier and more efficient to just not run Ode if all you want to do is bypass it (Note: that it may actually be a little tricky to bypass Ode depending on how you've set it up).</p>

<p>Also, you can get pretty fancy without bypassing Ode.</p>

<p>So, I don't initially see an immediate need for this.</p>

<p>Also, you can get pretty fancy without bypassing Ode. So, at least initially I don't see an immediate need for this.</p>

<ol>
<li>It takes far less time and effort <strong>not</strong> to generate a page.</li>
</ol>

<p>The bulk of what Ode does is related to page generation. Of course that is normally justifiable. But if we are doing something like a redirect then it is far better to cut Ode off and save the server the bother.</p>

<p>Although I had been thinking about this for a while I couldn't justify the interface before manipulate_request.</p>
]]></description>
   <pubDate>Tue, 19 Feb 2008 13:20:55 -0500</pubDate>
   <guid>http://ode-is-simple.com/home/2008/2/19#bypass_page_generation</guid>
</item>
   </channel>
</rss>
