<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Infovore.Info]]></title>
  <link href="http://www.infovore.info/atom.xml" rel="self"/>
  <link href="http://www.infovore.info/"/>
  <updated>2011-10-24T22:20:04-04:00</updated>
  <id>http://www.infovore.info/</id>
  <author>
    <name><![CDATA[Stanton Teters]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Octopress Setup and Drupal Migration]]></title>
    <link href="http://www.infovore.info/blog/2011/09/24/octopress-setup-and-drupal-migration/"/>
    <updated>2011-09-24T15:23:00-04:00</updated>
    <id>http://www.infovore.info/blog/2011/09/24/octopress-setup-and-drupal-migration</id>
    <content type="html"><![CDATA[<p>I published my post on choosing Octopress for my static site generator today, so I thought I&#8217;d go into my setup and migration process a bit. I didn&#8217;t have many posts to migrate from my Drupal-based site, fewer than 10, so I could have done the migration by hand or just left those on the server and pointed a different subdomain at those. There wasn&#8217;t any page rank to be lost since they never had any traffic. But I was curious how the migration process would be, so I would ahead with the process.</p>

<p>Octopress is a static site generator based on Jekyll with some nice pre-configurations and customizations added. Jekyll is a Ruby project that is included as a gem by Octopress. The Jekyll project seems to have a small community around it, probably helped by the fact that it makes it easy to add GitHub project pages. Most of the recommendations I&#8217;ve seen for starting a Jekyll site recommend finding someone else&#8217;s project on GitHub and forking it so you don&#8217;t have to start from scratch. Octopress is designed to be forked and modified as the base for a site. It has a Rakefile with tasks designed to aid in initial configuration, page and post creation, and deployment. So it can be a time-saver when compared to cobbling together your own Jekyll-based site and workflow.</p>

<!--more-->


<h2>POW</h2>

<p>The documents recommend installing something new to me, perhaps because I don&#8217;t do much with Ruby. It&#8217;s Pow, a web server based on Rack and built using Node. When you install Pow, it runs all the time and watches for a certain top-level domain. The default top-level domain is .dev. It&#8217;s really very simple. You symlink a directory that Pow can use with the name of the domain. I symlinked my modified Octopress to &#8220;infovore&#8221; in the ~/.pow directory and now http://infovore.dev is served out of that directory. Pretty nice. I don&#8217;t have to start up a server or remember what port to use. Also, it doesn&#8217;t really matter that it&#8217;s just a directory of static files. Pow serves static files out of a public directory in the directory it is looking at, which is exactly how Octopress is set up.</p>

<h2>Jekyll Import From Drupal</h2>

<p>In order to import my posts from my Drupal site, I had to do some reading on the <a href="https://github.com/mojombo/jekyll/wiki">Jekyll wiki</a> to figure out how to import. The migration process wants to connect to your Drupal database. My database is on my Slicehost VPS. I considered doing what I used to do for development, export my production database and import that to a local MySQL database. But I figured it&#8217;s simpler just to connect directly to the remote server. Rather than use the MySQL installed with MAMP, I decided to install MySQL using <a href="https://github.com/mxcl/homebrew">Homebrew</a>, then I installed the Sequel and  MySQL Ruby gems as noted at the top of the Jekyll <a href="https://github.com/mojombo/jekyll/blob/aa0d82fa9679843e4356aacd7cb737bb98f16ba3/lib/jekyll/migrators/drupal.rb">Drupal migrator file</a>.</p>

<p>As a side note, I already had rvm (Ruby Version Manager) installed, so the gems were installed to my user-local config directory at ~/.rvm.</p>

<p>In order to connect to MySQL on the remote server using SSH, I needed to forward a local port to the remote port, using something like <code>ssh -L 3306:localhost:3306 infovore.info</code>. I was able to connect to the remote MySQL server and run a few queries to re-familiarize myself with the Drupal schema.</p>

<p>The current migration script is pretty basic and doesn&#8217;t get some of the metadata, such as tags. It also only creates a redirect page for the base &#8220;/node/{nodeId}&#8221; URLS, not for the rewritten &#8220;pretty&#8221; URLs. The current migration script also doesn&#8217;t get the markup format. I played around with both Textile and Markdown on the few posts I did on the original Drupal blog, and I wanted to pull them all out and use the correct file extension since Octopress/Jekyll can handle both Textile and Markdown.</p>

<p>The query went from this:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
</pre></td><td class='code'><pre><code class='sql'><span class='line'><span class="k">SELECT</span> <span class="n">node</span><span class="p">.</span><span class="n">nid</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">title</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node_revisions</span><span class="p">.</span><span class="n">body</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">created</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">status</span>
</span><span class='line'><span class="k">FROM</span> <span class="n">node</span><span class="p">,</span>
</span><span class='line'>   <span class="n">node_revisions</span>
</span><span class='line'><span class="k">WHERE</span> <span class="p">(</span><span class="n">node</span><span class="p">.</span><span class="k">type</span> <span class="o">=</span> <span class="s1">&#39;blog&#39;</span> <span class="k">OR</span> <span class="n">node</span><span class="p">.</span><span class="k">type</span> <span class="o">=</span> <span class="s1">&#39;story&#39;</span><span class="p">)</span>
</span><span class='line'>    <span class="k">AND</span> <span class="n">node</span><span class="p">.</span><span class="n">vid</span> <span class="o">=</span> <span class="n">node_revisions</span><span class="p">.</span><span class="n">vid</span>
</span></code></pre></td></tr></table></div></figure>


<p>to this:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
</pre></td><td class='code'><pre><code class='sql'><span class='line'><span class="k">select</span> <span class="n">node</span><span class="p">.</span><span class="n">nid</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">title</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node_revisions</span><span class="p">.</span><span class="n">body</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">created</span><span class="p">,</span>
</span><span class='line'>     <span class="n">node</span><span class="p">.</span><span class="n">status</span><span class="p">,</span>
</span><span class='line'>     <span class="n">f</span><span class="p">.</span><span class="n">name</span> <span class="k">as</span> <span class="n">format</span><span class="p">,</span>
</span><span class='line'>     <span class="n">u</span><span class="p">.</span><span class="n">dst</span>
</span><span class='line'><span class="k">from</span> <span class="n">node</span>
</span><span class='line'>   <span class="k">join</span> <span class="n">node_revisions</span> <span class="k">on</span> <span class="n">node</span><span class="p">.</span><span class="n">vid</span> <span class="o">=</span> <span class="n">node_revisions</span><span class="p">.</span><span class="n">vid</span>
</span><span class='line'>     <span class="k">join</span> <span class="n">filter_formats</span> <span class="n">f</span> <span class="k">on</span> <span class="n">node_revisions</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">f</span><span class="p">.</span><span class="n">format</span>
</span><span class='line'>     <span class="k">left</span> <span class="k">join</span> <span class="n">url_alias</span> <span class="n">u</span> <span class="k">on</span> <span class="n">concat</span><span class="p">(</span><span class="s1">&#39;node/&#39;</span><span class="p">,</span> <span class="n">node</span><span class="p">.</span><span class="n">nid</span><span class="p">)</span> <span class="o">=</span> <span class="n">u</span><span class="p">.</span><span class="n">src</span>
</span><span class='line'><span class="k">where</span> <span class="p">(</span><span class="n">node</span><span class="p">.</span><span class="k">type</span> <span class="o">=</span> <span class="s1">&#39;blog&#39;</span> <span class="k">OR</span> <span class="n">node</span><span class="p">.</span><span class="k">type</span> <span class="o">=</span> <span class="s1">&#39;story&#39;</span> <span class="k">OR</span> <span class="n">node</span><span class="p">.</span><span class="k">type</span> <span class="o">=</span> <span class="s1">&#39;article&#39;</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>


<p>This required a bit of digging into the data to get the right structure. I also added another query to get the tags as I looped over each post. This could have taken quite a long time if I had many posts, but it would only be a one-time hit.</p>

<p>Once I had the data, I needed to change the YAML metadata output at the top of the posts. I changed the original migrator to output a published value since I had a few unpublished posts and the tags.</p>

<p>I also had to modify the location to save the files to since Octopress stores posts in a different location then the default Jekyll location.</p>

<p>I&#8217;m not saving my repo on GitHub, so I&#8217;m posting the modified file as a gist on GitHub. I added a Rake task to push to Amazon S3, but I&#8217;ll deal with that in a later post.</p>

<div><script src='https://gist.github.com/1239706.js?file=drupal.rb'></script>
<noscript><pre><code>require 'rubygems'
require 'sequel'
require 'fileutils'
require 'yaml'

# NOTE: This converter requires Sequel and the MySQL gems.
# The MySQL gem can be difficult to install on OS X. Once you have MySQL
# installed, running the following commands should work:
# $ sudo gem install sequel
# $ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

module Jekyll
  module Drupal
    # Reads a MySQL database via Sequel and creates a post file for each post
    # in wp_posts that has post_status = 'publish'. This restriction is made
    # because 'draft' posts are not guaranteed to have valid dates.
    QUERY = &quot;select  node.nid, node.title, node_revisions.body, node.created, node.status, f.name as format, u.dst \
             from node \
                  join node_revisions on node.vid = node_revisions.vid \
                  join filter_formats f on node_revisions.format = f.format \
                  left join url_alias u on concat('node/', node.nid) = u.src \
             where (node.type = 'blog' OR node.type = 'story' OR node.type = 'article')&quot;
    
    def self.process(dbname, user, pass, host = 'localhost')
      puts QUERY
      db = Sequel.mysql(dbname, :user =&gt; user, :password =&gt; pass, :host =&gt; '127.0.0.1', :encoding =&gt; 'utf8', :port =&gt; '3300')

      # Create the refresh layout
      # Change the refresh url if you customized your permalink config
      File.open(&quot;source/_layouts/refresh.html&quot;, &quot;w&quot;) do |f|
        f.puts &lt;&lt;EOF
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;url={{ page.refresh_to_post_id }}.html&quot; /&gt;
&lt;/head&gt;
&lt;/html&gt;
EOF
      end

      db[QUERY].each do |post|
        # Get required fields and construct Jekyll compatible name
        node_id = post[:nid]
        title = post[:title]
        content = post[:body]
        created = post[:created]
        format = post[:format].strip.downcase == 'textile' ? 'textile' : 'markdown'
        dst  = post[:dst] || nil
        time = Time.at(created)
        is_published = post[:status] == 1
        published = is_published ? nil : false
        dir = &quot;source&quot;
        posts_dir = &quot;#{dir}/_posts&quot;
        slug = title.strip.downcase.gsub(/(&amp;|&amp;amp;)/, ' and ').gsub(/[\s\.\/\\]/, '-').gsub(/[^\w-]/, '').gsub(/[-_]{2,}/, '-').gsub(/^[-_]/, '').gsub(/[-_]$/, '')
        name = time.strftime(&quot;%Y-%m-%d-&quot;) + slug + '.' + format
        puts name

        tag_query = &quot;select distinct node.nid, type, td.name \
                     from node \
                          join term_node tn on node.nid = tn.nid \
                          join term_data td on tn.tid = td.tid \
                     where node.nid = #{node_id} order by node.nid&quot;
        tags = []
        db[tag_query].each do |tag|
          tags.push tag[:name]
        end
        tag_list = tags.length == 0 ? nil : tags
        
        # Get the relevant fields as a hash, delete empty fields and convert
        # to YAML for the header
        data = {
           'layout' =&gt; 'post',
           'title' =&gt; title.to_s,
           'created' =&gt; time,
           'published' =&gt; published,
           'categories' =&gt; tag_list
         }.delete_if { |k,v| v.nil? || v == ''}.to_yaml

        # Write out the data and content to file
        File.open(&quot;#{posts_dir}/#{name}&quot;, &quot;w&quot;) do |f|
          f.puts data
          f.puts &quot;---&quot;
          f.puts content
        end

        # Make a file to redirect from the old Drupal URL
        if is_published
          FileUtils.mkdir_p(dir + &quot;/node/#{node_id}&quot;)
          File.open(dir + &quot;/node/#{node_id}/index.md&quot;, &quot;w&quot;) do |f|
            f.puts &quot;---&quot;
            f.puts &quot;layout: refresh&quot;
            f.puts &quot;refresh_to_post_id: /blog/#{time.strftime(&quot;%Y/%m/%d/&quot;) + slug}/index&quot;
            f.puts &quot;---&quot;
          end
          if dst
            FileUtils.mkdir_p(&quot;#{dir}/#{dst}&quot;)
            File.open(&quot;#{dir}/#{dst}/index.md&quot;, &quot;w&quot;) do |f|
              f.puts &quot;---&quot;
              f.puts &quot;layout: refresh&quot;
              f.puts &quot;refresh_to_post_id: /blog/#{time.strftime(&quot;%Y/%m/%d/&quot;) + slug}/index&quot;
              f.puts &quot;---&quot;
            end
          end
        end
      end

      # TODO: Make dirs &amp; files for nodes of type 'page'
        # Make refresh pages for these as well

      # TODO: Make refresh dirs &amp; files according to entries in url_alias table
    end
  end
end
</code></pre></noscript></div>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Release 2.0]]></title>
    <link href="http://www.infovore.info/blog/2011/08/27/release-2-dot-0/"/>
    <updated>2011-08-27T13:29:00-04:00</updated>
    <id>http://www.infovore.info/blog/2011/08/27/release-2-dot-0</id>
    <content type="html"><![CDATA[<p>After a long hiatus I brought this blog back to life. I considered several ways to use a new blog engine over the past couple of years, either using an existing project or built myself. The original blog used Drupal. Drupal is a good CMS, but seemed like overkill. It has a different development model than I wanted to use for a site, and I didn&#8217;t want to get locked in. I know I could have moved away, but I just felt like &#8220;why put the time in?&#8221;</p>

<p>The platforms, languages, frameworks I looked at include:</p>

<ul>
<li>Google App Engine using either Python or Java</li>
<li>A VPS running Java/Clojure or Python</li>
<li>Java/Clojure on Amazon&#8217;s Elastic Beanstalk</li>
<li>Heroku with Clojure</li>
<li>CouchDB running on <a href="http://www.iriscouch.com/">Iris Couch</a></li>
<li>A static site built with something like <a href="https://github.com/mojombo/jekyll">Jekyll</a></li>
</ul>


<p>I didn&#8217;t seriously consider the last option, building a static site. Though I did eventually develop a goal of using other services as much as possible in order to avoid doing the work myself. While it is educational and useful to know, doing the SysAdmin work associated with running Drupal on my own server is time consuming. You have to keep the server updated, Drupal itself, and any Drupal modules used. I often want to build things myself so they&#8217;re just the way I want them, but the extra time can take away from doing something more useful.</p>

<p>I&#8217;d gotten to the point where I was focusing on a CouchDB solution because I thought it might present an opportunity to try to use ClojureScript. It would take a while to build a site that way, so I reconsidered and thought perhaps start with an existing blog app/framework and eventually rebuild it on the data with my own app.</p>

<p>CouchDB is possibly the closest you can get to a static site that is still database-driven. If you use CouchDB design docs to serve a site, there&#8217;s hopefully not much processing going on to generate the page. You would want to have the generated pages cached to avoid unnecessary load on what is nearly a static site since personal blogs tend not to be updated that frequently. In some ways it&#8217;s not a far step from a cached CouchDB site that isn&#8217;t updated frequently to just building a static site generated from files on your computer. One more nice thing about CouchDB is you can make your changes on your local database and send them to your production site using replication. That also makes your local database a good back-up of the production site.</p>

<p>I am anxious to get this blog going again so I can try out some HTML 5 and some aspects of the public web that I don&#8217;t get a chance to deal with at my job. This anxiousness kept me thinking what is the quickest thing I can build. Then last week I saw <a href="http://www.allthingsdistributed.com/2011/08/Jekyll-amazon-s3.html">Werner Vogels&#8217; post</a> on moving his blog to a static site hosted on S3 and generated from files using Jekyll. I&#8217;d considered this before, but hadn&#8217;t looked into it much. The article prompted me to search some for static site generators. That post and its comments listed a few alternatives. Ruby had three good ones. But what finally pushed me one direction was finding Octopress. It bundles several features on top of Jekyll that made me decide to try it.</p>

<p>Octopress already has a theme, so I can just use its for a while. It has a few Jekyll plugins integrated. It uses SASS to generate the CSS. It seemed like a good place to get started quickly.</p>

<p>I cloned the GitHub repo and had test site running on my laptop without much effort or time, so without much thought about it, really, I just started the process of preparing for the move. I&#8217;ll get into the move from Drupal in a future post.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Sunday Morning Old-Time Music Show on WKCR]]></title>
    <link href="http://www.infovore.info/blog/2007/02/25/sunday-morning-old-time-music-show-on-wkcr/"/>
    <updated>2007-02-25T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2007/02/25/sunday-morning-old-time-music-show-on-wkcr</id>
    <content type="html"><![CDATA[<p>I used to lie in bed on weekend mornings and listen to the radio while I read. One of the shows I always enjoyed listening to was the old-time music show on Columbia University&#8217;s radio station, <a href="http://www.columbia.edu/cu/wkcr/"><span class="caps">WKCR</span></a>. This morning I&#8217;m on my computer, not in bed, so I searched for their web site and found they have a stream. I added the stream to my iTunes &#8220;Radio&#8221; playlist which acts as a list of the stations I like to listen to the most.</p>
<p>If you&#8217;re into old-time music, check out this station on Sunday mornings. Or if you&#8217;re in New York, you can tune in your radio to 89.9 FM. I don&#8217;t think it&#8217;s a very strong signal, so you may have a problem picking it up from any distance away.</p>
<p><a href="http://www.columbia.edu/cu/wkcr/">http://www.columbia.edu/cu/wkcr/</a></p>]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Tiny Houses Get You Closer To The Outdoors]]></title>
    <link href="http://www.infovore.info/blog/2007/02/19/tiny-houses-get-you-closer-to-the-outdoors/"/>
    <updated>2007-02-19T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2007/02/19/tiny-houses-get-you-closer-to-the-outdoors</id>
    <content type="html"><![CDATA[<p>The New York Times had an article about small houses in the Escapes section last week. I thought I&#8217;d link to it, but I&#8217;ll also add the links to the various sites listed in the article in case the article disappears behind the pay-wall.</p>

<p>The article, <em><a href="http://www.nytimes.com/2007/02/16/realestate/greathomes/16tiny.html?ref=escapes">Think Small</a></em>, mostly focuses on vacation homes. Vacation homes make great candidates for small houses (those under 750 square feet) since a larger house is going to require more upkeep. One thing you don&#8217;t want in a vacation or weekend house is doing upkeep on the house rather than enjoying yourself.</p>

<p>Small houses also make the land more important in comparison to the house. If you are in a small house, more time will be spent outside. And the greater tightness of the house makes the landscape all that much more important.</p>

<p>I have read articles about some of the small houses before, but I&#8217;m not sure where. I know I&#8217;ve read about smallish houses in <a href="http://www.dwell.com/">Dwell</a>. Dwell has had several articles about pre-manufactured housing, and small houses and pre-manufactured houses can easily go hand-in-hand.</p>

<p>I also saw a posting on Kevin Kelly&#8217;s Cool Tools site about <a href="http://www.kk.org/cooltools/archives/000052.php">Tiny Houses</a>, but this isn&#8217;t what I was thinking of. It was probably in a long-gone magazine.</p>

<p>Here are some of the sites mentioned in the article.</p>

<ul>
<li><a href="http://www.weehouses.com/">Alchemy Architects</a> who make the weeHouse is based in Minnesota.</li>
<li><a href="http://www.blueskymod.com/">BlueSky Mod</a> is out of Toronto.</li>
<li><a href="http://www.cavco.com/cavcocabins/series.asp?seriesid=60">Cavco  Industries</a> sells barebones cabins</li>
<li><a href="http://www.tumbleweedhouses.com/">Tumbleweed Tiny House Company</a> sells several different models, though some are plans only, not manufactured. They also sell tiny houses on wheels that can be moved. They have the greatest focus on tiny houses as they don&#8217;t sell larger models unlike some of the other manufacturers.</li>
<li><a href="http://www.cusatocottages.com/">Cusato Cottages</a> created the Katrina Cottage for victims of Hurricane Katrina. Currently the cottages are only available in Missippi and Louisiana, but they&#8217;ll be selling the houses as kits through Lowe&#8217;s some time in spring 2007.</li>
<li><a href="http://www.moderncabana.com/>Modern Cabana</a> sells a modern-looking house available is few different configurations.</li>
</ul>


<p>These houses aren&#8217;t cheap. If you want to keep it inexpensive, perhaps you could build it yourself using the <em><a href="http://www.amazon.com/gp/product/0879515104?ie=UTF8&tag=infovoreinfo-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0879515104">Tiny Book of Tiny Houses</a><img src="http://www.assoc-amazon.com/e/ir?t=infovoreinfo-20&l=as2&o=1&a=0879515104" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></em> book from the Cool Tools site. The author wrote other books on tiny houses, <a href="http://www.amazon.com/gp/product/0879512717?ie=UTF8&tag=infovoreinfo-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0879512717">Tiny Houses: or How to Get Away From It All</a><img src="http://www.assoc-amazon.com/e/ir?t=infovoreinfo-20&l=as2&o=1&a=0879512717" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> and <a href="http://www.amazon.com/gp/product/1579121519?ie=UTF8&tag=infovoreinfo-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1579121519">A Little House of My Own: 47 Grand Designs for 47 Tiny Houses</a><img src="http://www.assoc-amazon.com/e/ir?t=infovoreinfo-20&l=as2&o=1&a=1579121519" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. I haven&#8217;t read any of these books, but I&#8217;ll be looking at them soon and may add them to my already hefty book collection.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Color Plastic Displays Will Lead To Better eBooks---Soon?]]></title>
    <link href="http://www.infovore.info/blog/2007/01/31/color-plastic-displays-will-lead-to-better-ebooks-soon/"/>
    <updated>2007-01-31T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2007/01/31/color-plastic-displays-will-lead-to-better-ebooks-soon</id>
    <content type="html"><![CDATA[<p>New Scientist printed an article this week on new displays that put transistors on plastic, enabling flexible displays. I keep thinking&#8211;hoping&#8211;that the days of eBooks will soon be here. Maybe these displays will hasten their arrival.
http://www.newscientisttech.com/channel/tech/mg19325886.000-goodbye-wires-and-silicon-hello-plastic-chips.html</p>

<p>I hope the publishers are getting ready for this. Luckily for them I think their very analog, atom-based technology doesn&#8217;t lend itself well to pirating. Though that could be to their detriment as people continue to move to free content on the web. Granted there is much that can only be gotten in books, but those who release their books for free or cheap may gain a leg up in the new world where cheap, light, flexible eBooks are available.</p>

<p>There&#8217;s still talk of a <a href="http://www.p2punite.org/?q=node/854">flat fee for all downloaded and shared music</a>. Imagine a world where one could pay a flat fee for all the books you could read. Without getting into the mechanics of how something like that would work, just think about how everyone being able to access any book they want at any time would affect the knowledge circulating in the world. How nice it would be if that knowledge locked away in those analog books could circulate with the words on the web.</p>

<p>Just before I finished this article, I found out about an article about Google&#8217;s book project in this week&#8217;s New Yorker, <a href="http://www.newyorker.com/fact/content/articles/070205fa_fact_toobin">Google&#8217;s Moon Shot</a>. I&#8217;m not sure if Google&#8217;s effort is going to be the path to ubiquitous eBooks, but it can&#8217;t hurt. Unless, as the article says, the law suits against Google, which will most likely be settled out of court, set up a huge financial barrier for other entrants to the arena. I can&#8217;t imagine anyone wants a monopoly set up in front of a huge pool of knowledge. If the music industry moves to some sort of common pool of money that gets (hopefully) equitably distributed, perhaps other industries will realize they can make money in an at least semi-free business model.</p>

<p>And if the various industries don&#8217;t see the value, perhaps some of the individual actors within the industries will move and either lead the others into the future, or create an entirely new industry built on the skeletons of the old industry.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Possibly the World's Oldest Man Died Recently]]></title>
    <link href="http://www.infovore.info/blog/2006/11/13/possibly-the-worlds-oldest-man-died-recently/"/>
    <updated>2006-11-13T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2006/11/13/possibly-the-worlds-oldest-man-died-recently</id>
    <content type="html"><![CDATA[<p>
Going through an old Economist today I read an obituary for possibly the world&#8217;s oldest man&#8211;<a href="http://www.economist.com/obituary/displaystory.cfm?story_id=8049523">Benito Martínez Abrogán</a>. Some interesting things to note from the obituary:
</p>


<ul>
<li>He lived in Cuba most of his life, though he moved there from Haiti around 1925.</li>
<li>Cubans longevity matches that of Americans despite underspending the US in healthcare by US$5,460 per person.</li>
<li>He had no car, walking, biking, and taking the bus to go everywhere.</li>
<li>Food is rationed in Cuba, so he grew his own food, most of which was starchy cassava and sweet potatoes cooked in pork fat.</li>
<li>He never married.</li>
<li>He smoked till he was 108.</li>
<li>He never saw a doctor till he was 115.</li>
</ul>


<p>
Apparently Cuba has quite a few centenarians, some 2,721 out of 11.2 million people. I don&#8217;t know how that compares to the US.
<!--break-->
</p>


<p>
There was an article in the New York Times recently about the effects of <a href="http://www.nytimes.com/2006/10/31/health/nutrition/31agin.html?ei=5070&amp;en=6ee8873e998c3d69&amp;ex=1163566800&amp;pagewanted=all" title="One for the Ages: A Prescription That May Extend Life">calorie restriction</a> on aging. Mice fed a calorie-restricted diet with adequate nutrition (often shortened to CRAN) lived longer and had better health and were more active as they got older. Might the effects of calorie restriction have something to do with the general health of people in Cuba? I wonder if there are any other places to test the effects of this? Cuba and North Korea are two of the only places I can think of where there&#8217;s generally not as much food available as many would prefer, but aren&#8217;t suffering many of the problems of other poor countries, such as those in sub-Saharan Africa. Unfortunately, North Korea is so closed there&#8217;s no way to know what the general health of the people is like. But once North Korea opens up, as I&#8217;m sure it will one day, it will be an interesting place to study the effects of long-term calorie-restriction among a large population. 
</p>


<p>
Are the only places where people experience less available food and the people remain in generally good health going to be those where the modern conveniences are not as readily available? The cheap food from modern food processors are making their way to poorer countries as their rising obesity rates may be evidence of. 
</p>


<p>
Are the more advanced countries seeing a decreasing marginal return for the money spent on healthcare? Is it possible there might be better ways to spend the money than on ever more drugs to attack erectile dysfunction? 
</p>


<p>
Several questions raised by his obituary. But as a final note, I hope I can manage to be as healthy and active as I get older as Benito was.
</p>


<p>
Health, Longevity
</p>


<!-- technorati tags start -->


<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/Health" rel="tag">Health</a>, <a href="http://www.technorati.com/tag/Longevity" rel="tag">Longevity</a></p>


<!-- technorati tags end -->

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Oriana Fallaci]]></title>
    <link href="http://www.infovore.info/blog/2006/11/13/oriana-fallaci/"/>
    <updated>2006-11-13T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2006/11/13/oriana-fallaci</id>
    <content type="html"><![CDATA[<p>I only recently heard of <a href="http://en.wikipedia.org/wiki/Oriana_Fallaci">Oriana Fallaci</a>, which seems to be a massive misfortune on my part. I didn&#8217;t know anything about her until her death this past September. Another <a href="http://www.economist.com/obituary/displaystory.cfm?story_id=E1_SJPJGGS" title="Oriana Fallaci, journalist and fighter, died on September 15th, aged 77">obituary</a> I was reading in an old copy of the Economist [1] provoked some interest such that now I&#8217;m going to have to read one of her books. I&#8217;m going to start with her last one, <em><a href="http://www.amazon.com/gp/redirect.html%3FASIN=0847827534%26tag=infovoreinfo-20%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0847827534%253FSubscriptionId=02ZH6J1W0649DTNS6002">The Force of Reason</a></em>, though I&#8217;ll read the few stories of hers that I can find online, currently just through Wikipedia.</p>

<p>[1] The Economist seems to now offer the same sort of service as Salon, where you watch an ad to get access to their content, so the link should be accessible.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Setting Up Ecto for Drupal 5.0]]></title>
    <link href="http://www.infovore.info/blog/2006/11/12/setting-up-ecto-for-drupal-5-0/"/>
    <updated>2006-11-12T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2006/11/12/setting-up-ecto-for-drupal-5-0</id>
    <content type="html"><![CDATA[<p>
After a lot of messing around with various settings in Drupal 5.0 I found that in order to edit your site with an external client such as Ecto or docs.google.com you have to turn on the blog entry content type and then give the user access to &#8220;edit own blog&#8221;. I guess I hadn&#8217;t tried to connect without having the blog module turned on even though the blogapi module lets you access other content types.
</p>


<p>
I currently use a custom blog content type, which I could continue to use, but I noticed something once I turned on the blog module. I pull in feeds for my del.icio.us tags and Google Reader starred items, and now there&#8217;s a small link next to each feed item that lets you click on that to start a blog entry using that item&#8217;s information. I just checked it out, and I don&#8217;t know how useful it will be since it uses the existing item&#8217;s title as the new blog entries title and the body of the entry becomes the link to the item. It might turn out to be useful in some way though, so I&#8217;ll switch to using the blog entry content type and keep using the /articles path for the blog entries.
</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Problems With Drupal 5.0 Beta]]></title>
    <link href="http://www.infovore.info/blog/2006/11/01/problems-with-drupal-5-0-beta/"/>
    <updated>2006-11-01T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2006/11/01/problems-with-drupal-5-0-beta</id>
    <content type="html"><![CDATA[<p>I thought I&#8217;d throw my notes in here as I find problems.</p>

<!--break-->


<p>I&#8217;m using Drupal 5.0 Beta 1, PHP 5.1.4, FreeBSD, MySQL 4.1.16.</p>

<ul>
<li>The site name and tag are repeating for users that are logged in. It seems to be OK for anonymous users.</li>
<li>The Minnelli layout is slightly too wide for my screen and I get a horizontal scroll bar for the authenticated users since I have content in the left and right sidebars</li>
<li>This probably isn&#8217;t a Minnelli theme issue, but two blocks I created from my del.icio.us feed and Google Reader feed are not showing up for the anonymous user. It doesn&#8217;t seem to be turned off for any users.</li>
</ul>


<p>Several of the modules don&#8217;t seem to have been updated for 5.0 yet. Three I looked at that aren&#8217;t ready yet are <em>CAPTCHA</em>, <em>Textile</em>, and <em>Text Image</em>. I&#8217;m not really turning on comments yet, so none of those are a huge problem. I did download and install <em>Scheduler</em>, but I don&#8217;t see it available here even though I enabled it.</p>

<p><strong>Updated:</strong>Another problem: When I saved this article I got a bunch of errors related to the taxonomy module, such as
<code>
warning: Illegal offset type in isset or empty in /users/home/stantont/web/public/modules/taxonomy/taxonomy.module on line 1087.
</code></p>

<p>Six error messages in all, all pointing to line numbers 1087, 1088, and 1091.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Setting Up Drupal]]></title>
    <link href="http://www.infovore.info/blog/2006/10/31/setting-up-drupal/"/>
    <updated>2006-10-31T00:00:00-05:00</updated>
    <id>http://www.infovore.info/blog/2006/10/31/setting-up-drupal</id>
    <content type="html"><![CDATA[<p>Tonight I decided to go ahead and install the 5.0 Beta 1 version of Drupal. I installed version 4.7.4 over the weekend, but hadn&#8217;t done anything with it yet. So when I noticed the 5.0 beta was out, I decided I might as well move to it. I looked at a sample install of the beta from a link at the Drupal.org site, and I liked the better admin menu layout. The admin menu in 4.7 is confusing as there are different menu items with the same name, though at different levels. The beta menu seems to be thought out better.</p>

<p>I was going to use the default theme, Garland, but when I looked at it as the anonymous user, the right side collapsed, so I&#8217;ve switched to the fixed width layout. I had added a couple of blocks which pull in my del.icio.us and Google Reader feeds, but those aren&#8217;t showing up for the anonymous user, so I&#8217;ll have to figure out why that&#8217;s happening.</p>

<p>I&#8217;d like to get Drupal&#8217;s Navigation menu to not appear for the anonymous user, but I&#8217;ve yet to figure out how to get that to happen. I don&#8217;t see an obvious option in Access Control, Menus, or Blocks. But I&#8217;m sure I&#8217;ll see it eventually.</p>

<p>I think I&#8217;ll turn off the user login block as that really makes it look like a Drupal site, and I&#8217;ll be the only one using it. I&#8217;ll leave the logo and favicon up for a few days till I decide what to do about those. It would be nice if there was an option with a few other images available by default. I haven&#8217;t been looking at Drupal for long, but I found the Lullabot podcasts and consumed all of those over the last week and a half. It&#8217;s nice that there seems to be a good community around it. I don&#8217;t know if Drupal&#8217;s community would seem as nice by half without the Lullabot group&#8217;s podcast. Ruby on Rails podcast helps foster their sense of community, and their active bloging helps as well. I&#8217;ve been looking at Django over the last couple of months, and it&#8217;s a better place to start for a CMS-y site. The Rails CMS/blog engines seem interesting, but probably need to do a bit more growing first. Django seems pretty mature for what it does, but it needs a more active feeling to it. I like Ruby and Python better than PHP, but I can deal with it.</p>

<p>The Rails-community seems larger, and thus has more blog-activity. If I was Django, I&#8217;d try to keep putting up more content on their weblog so it keeps the feeling that more is going on. Perhaps the mailing lists can help that feeling, but I often find a blog article more engaging than 30 random posts on a mailing list.</p>

<p>I started looking at Drupal because I have a couple of friends who want to make their company&#8217;s site more dynamic and flexible. I could have recommended Django or even Mephisto to them, but Mephisto seems a bit green for them since it&#8217;s still under fairly active development. And either one would have required quite a bit of work from me to get something going for them. And then they would be left tied to me since I&#8217;d probably have to run their server for them, and finding more Django or Rails talent would be difficult at best. PHP talent is fairly widespread, though dealing with Drupal would probably take someone who is at least somewhat familiar with it to get any real work done. Drupal does give them more hosting options as well. It should be pretty much a drop-in as far as setting up the server, and pretty much everyone supports PHP. Drupal also lets them do a lot of the administration themselves, if necessary, with it&#8217;s extensive admin menu.</p>

<p>The number of contributed modules available is simply staggering. I tentatively started using some of the modules I read about. The Lullabot podcast helped a lot in this area as they are always mentioning what the most essential contributed modules are.</p>

<p>I&#8217;ll spend a bit of time tonight adding a few modules, even though they&#8217;re not officially sanctioned for the 5.0 Beta yet. I&#8217;ll be a bit&#8230;parsimonious with what I add.</p>

<p>I&#8217;ve still got a lot to learn about Drupal, but I like the energy I&#8217;ve seen behind it thus far.</p>
]]></content>
  </entry>
  
</feed>
