WordPress CMS

Previously, we were using a hacked together “content management system” (CMS) to maintain this site. We had integrated WordPress for blogging, but all the pages were stored in separate files. Keeping things updated was a pain in the ass.

In order to simplify things, we wanted to move the whole site and blog into a unified CMS. We tried Mephisto, and it’s pretty nice, but we didn’t want to be tied to using Ruby on Rails, which Mephisto is built on.

We can run WordPress almost anywhere, easily, and inexpensively. There’s also a ton of info for hacking WordPress on the Web. PHP is pretty weak compared to Python or Ruby, but that doesn’t really matter for this purpose.

The theme for the site is being developed by Wyatt and is available for download via Subversion (you might need to log in with username:password guest:guest):

svn co http://svn.bycycle.org/bycycle.org/wordpress/themes/byCycle/trunk byCycle

We may have introduced some broken links or other problems during this change. If you notice anything, please let us know.

Problems with the Trip Planner in the Last Day or So

Our hosting provider moved all our files to a new server–without letting us know before hand that they were going to do so. Most things kept working. A few did not, as you may have noticed.

The reason some things stopped working is, the new server is running a newer version of the operating system and some of the software the trip planner depends on[1] had to be recompiled [reinstalled from source code].

Though I think the upgrade is a good thing overall, I hope they let us know about it before they do it next time!

[1] The MySQL bindings for Python, in case you really wanted to know. I also updated Python from 2.4.3 to 2.4.4, but I don’t know if that was strictly necessary.

WordPress Upgrade and K2

Today we upgraded to WordPress 2.0.4. It’s a security release. Upgrading is easy: just copy the new directory over the old (being careful to save any customizations first, although if you created new directories for your custom themes, you won’t have to do anything).

We also moved from the old default theme, Kubrick, to a new version of it called K2. This version makes a lot of things easier, and it looks better out of the box. One day we might customize it.

Blog Announcement

We went and got ourselves a blog. Some things that we might have sent here [the announcements list] will be posted there instead. We’ll now reserve this list for major announcements. The blog will include the announcements plus other odds and ends–whatever seems at least somewhat relevant and half way interesting.

The blog is located at http://byCycle.org/. Our home page also shows selected items posted to the blog (ones tagged as news).

Installing Trac

Today I installed Trac. “Trac is an enhanced wiki and issue tracking system for software development projects.” We plan to use it to keep track of issues with the trip planner and any other software projects we might undertake.

Issues (AKA bugs) with the trip planner can now be reported at http://trac.bycycle.org/newticket. This is somewhat developer-oriented, but users can (and should!) use it too.

Also, since Trac contains a Wiki, anyone can contribute useful information about the trip planner, which might be documentation, tips and tricks, or anything else that’s relevant.

Here is the high-level outline of our Trac installation:

  • Create a directory to contain Trac projects; each project will live in a subdirectory
  • Create a subdomain at trac.bycycle.org for accessing Trac projects
    • The files for this will live in the html subdirectory of the main Trac directory
    • Each project will have a subdirectory in the html directory that contains a simple script to make the project accessible from the Web

Dependencies

  • Subversion 1.3.2
    • Berkeley DB 4.4.20
  • ClearSilver 0.10.3
  • SQLite 3.3.6
  • PySQLite 2.3.2 (Python bindings for SQLite)

Install Subversion

  • First install BDB
    • cd build_unix
    • ../dist/configure –prefix=$HOME
    • make && make install
  • ./configure –prefix=$HOME –with-berkeley-db=$HOME
  • make && make install
  • cd subversion/bindings/swig/
  • make swig-py
  • make install-swig-py
  • echo ~/lib/svn-python > ~/lib/python2.4/site-packages/subversion.pth

Install ClearSilver

  • ./configure –prefix=$HOME –with-python=$HOME/bin/python –disable-ruby –disable-java –disable-perl –disable-csharp
  • make && make install

Install SQLite

  • ./configure –prefix=$HOME
  • make && make install

Install PySQLite

For some reason, this was the hardest thing to install.

  • Edit setup.cfg, changing the values of these variables as shown
    • include_dirs=/home/u6/bycycle/include
    • library_dirs=/home/u6/bycycle/lib
  • python setup.py build
  • py setup.py install

Install Trac

  • python setup.py install

Set Up and Configure Trac

  • Create a trac subdomain at trac.bycycle.org
    • Create ~/bycycle.org/trac — projects will live here
    • Create ~/bycycle.org/trac/html — each project will have a Web-accessible directory here
  • Create a .htaccess file in ~/bycycle.org/trac/html that points all requests to any subdirectoy of trac.bycycle.org to the index.cgi bootstrap program in the subdirectory

Create a Trac Project Environment for the Trip Planner

  • cd ~/bycycle.org/trac
  • trac-admin ./tripplanner initenv
  • Edit tripplanner/conf/trac.ini
  • cd bycycle.org/trac/html/tripplanner
  • cp ~/share/trac/cgi-bin/trac.cgi .
  • Edit trac.cgi, adding these two lines at the very beginning of the try clause
    • import os
    • os.environ['TRAC_ENV'] = ‘/home/u6/bycycle/bycycle.org/trac/tripplanner’
  • Create a simple c program, index.c, that puts LD_LIBRARY_PATH=/home/u6/bycycle/lib in the environment and then calls trac.cgi; compile it to index.cgi (Questions: why can’t we use Python instead? Why can’t we add that to os.environ in trac.cgi and get rid of index.cgi)
  • Visit http://trac.bycycle.org/tripplanner/ and make sure it works

TODO

  • Serve static files statically instead of via CGI
  • Look into authentication if necessary
  • Add content!

WordPress Setup

Installing WordPress is straightforward. Since we wanted an embedded blog for news on our front page, along with a standard blog in a subdirectory, we had to go through a few extra steps.

Here’s how to reproduce our setup:

Note: The following assumes Apache, PHP, and MySQL are already installed and configured (correctly), which means, amongst other things, Apache is configured to load the PHP module, there’s a database for the WordPress tables to be installed into, and there’s a MySQL user that can access those tables.

  • Download WordPress 2.0.3 from http://wordpress.org/download/
  • Decompress the downloaded file into the top-level HTML directory; this will create a new directory named wordpress
  • Rename the wordpress directory to blog (not strictly necessary, but looks better)
  • In the blog directory, copy wp-config-sample.php to wp-config.php
  • Open wp-config.php in a text editor and follow the directions in the file (this just involves a few settings for MySQL)
  • Navigate to http://byCycle.org/blog/wp-admin/install.php and follow the directions
  • Assuming Apache, PHP, and MySQL are installed and configured and wp-config.php is correct, the blog is now installed and ready to use at http://byCycle.org/blog/ (Styling the blog to match the rest of the site is left as an exercise)
  • To embed WordPress in the home page, first rename the home page to index.php (index.html => index.php)
  • Add the following PHP to the top of index.php (before anything else):
    <?php
    $cat = 2;
    $show_how_many_posts = 2;
    require('./blog/wp-blog-header.php');
    ?>
  • Determine where the news section will be, probably in something like <div id=”news”><!– News will go here –></div>
  • Inside the news div, copy The WordPress Loop; The Loop can be copied from blog/wp-content/themes/default/index.php; it consists of all the stuff inside
    <div class=”narrowcolumn” id=”content”></div> (but not the div tags)
  • Modify The Loop; this isn’t strictly necessary, but to use the $cat and $show_how_many_posts variables from above, a few changes need to be made; (instead of pasting our version of the loop here, here is the source; look for the section that starts with <!– Begin Embedded WordPress –>)
  • And I think that’s all; let us know if it looks like we left anything out

I should mention that even though PHP is not my favorite language, I think WordPress is pretty cool, and hacking on it is fairly easy.

Let the Blogging Begin

I’ve been thinking a blog would be a much better way to manage the news on this site. As it is now, we hack into the HTML source and add new items to the bottom (go ahead, take a look). That’s not so much fun and we post a lot less often than we’d like to.

We also plan to post other information that doesn’t necessarily qualify as news, things that we’ve learned while working on this project and whatever seems like it might be interesting or useful to somebody.

Announcement 0

Note: We are clearing out several items in this announcement. In the future we plan to make shorter announcements on a more regular schedule.

Table of Contents
=================
1. New News/Announcements System
2. Trip Planner Status
3. Lloyd TMA Presentation
4. Ads Added

1. New News/Announcements System
================================
Instead of maintaining our own news/announcements system (which you may have noticed we almost never used), we are now using a Google group. When we send out announcements, they will be automatically archived on the Web at http://groups.google.com/group/byCycle-announce.

2. Trip Planner Status
======================
We are in the midst of making a bunch of changes to the trip planner. The two things we are focusing on are 1) refining the user interface and 2) working with Metro to create a version of the Portland area trip planner that uses local map data.

For the user interface we are adding some new functionality, but mostly we are focusing on creating a consistent, uncluttered, easy-to-use application that includes inline help. There are many “behind the scenes” changes that will make the system easier to maintain and extend.

One quick note about using the trip planner: I notice that people often try to type in the names of businesses, schools, and other points of interest. For the time being, the system only understands street addresses (including intersections). You can also *use the map* to input addresses. There is more information about this that we’ve incorporated into the trip planner and also on the trip planner help page http://bycycle.org/tripplanner/help.html>.

Using local map data will have a number of benefits. For one thing, we will be able to show things like bike routes, light rail lines, etc. Also, we will be able to more easily track down problems since we will be able to look at the *actual* data the trip planner is using to find routes.

3. Lloyd TMA Presentation
=========================
On July 13th we did a presentation (our first!) on byCycle and the trip planner for the Lloyd District Transportation Management Association (TMA) luncheon. The Lloyd TMA is “a non-profit business association representing large and small employers in the Lloyd District.” Their Web site is at http://www.lloydtma.com/.

We shared the spotlight with the Mayor’s Visioning Team. Our presentation included the history, goals, and future of byCycle; our newly revised information on integrating a region into the trip planner; and a demonstration of the trip planner.

You can view the presentation at http://presentations.byCycle.org/2006_07_13_LloydTMA/. You might have to adjust the size of the text in your browser to be able to see everything. You can also view the whole thing as a single normal Web page by moving your mouse to the lower right corner (inside the blue bar) and then clicking the Oh-with-a-slash-through-it symbol that appears.

To schedule a presentation for your organization, please contact Lauren. Her email address is lauren@byCycle.org.

4. Ads Added
============
We decided to give Google Ads a try and see if we could at least make enough money to cover our Web hosting costs. So far, it looks like we will make enough to cover the costs for hosting the informational part of our site <http://byCycle.org/>, but nowhere near enough to cover the costs of hosting the trip planner (or, for that matter, the costs of developing, deploying, and maintaining the trip planner).

In addition to Google Ads, we are looking into other sources of revenue. One idea we are considering is displaying ads for local businesses. We also have shirts for sale and accept donations–see http://byCycle.org/support.html for more info.

—-
If you have any feedback regarding this announcement or about anything relating to the Web site or the trip planner, please feel free to email us at contact>@bycycle.org (or use the feedback form on our Web site).