Mouthwatering Vegan Mediterranean Salad

I ran across a recipe for this Mediterranean salad at Mouthwatering Middle Eastern Style Salad Mouthwatering Vegan Recipes™. It looked so good I had to try it.

First, you chop up some veggies into small squares.

Start with cherry tomatoes…

Red peppers

… then add some red peppers …

Spring onions

… spring onions…

… Cucumbers…

… parsley …

… Garlic …

Finish off with some wild greens and canned white beans. Top it with homemade dressing and viola! … Salad is ready.

Yes, it tastes as good as it looks!

Tech Notes

I was looking for a better app to post from iPad. The WordPress app is OK, but I was not entirely pleased with it. After reading a review of Blogsy, I purchased the app. This is my first post using Blogsy.

Overall I have a good impression of Blogsy. On this post, however, I had some issues being able to place images where I want them. This may just be a learning curve. I’ll find out as I use it more.

Also, this post was done from home, where I have a full speed wi-fi connection. The real test will come on the road. I’m hoping Blogsy will help me make a post while I am away on an adventure, with no wi-fi service available. Of course, the blog won’t actually be posted until I get service, but I hope to be able to write the post and include all the pictures, ready for uploading.

Hosting Upgrade

I had some problems uploading images with Blogsy.  This turned out to be a limitation of my hosting package with my ISP.  An upgrade to the hosting package (same price as before) solved the problem.  The upgrade also positively affected my ongoing problems with child themes.

WordPress Update

I updated WordPress to version 3.2 and switched to the Twenty Eleven theme.  All my plugins have been updated.  Problems with child themes have not been resolved.  At this time I just edited the parent theme to insert the code that would normally reside in the child theme.  Seems to work just fine.  Another mystery of the universe.

Note to self: The code to register custom taxonomies is inserted at the very top of the parent theme’s functions.php.  This would be the same order that a child theme’s functions.php would be executed.  Why it works there and not in the child theme’s is a mystery.

Child WordPress Theme

Today I noticed that the Arjuna-X Theme has yet another update.  Based on the last update, I would expect my custom taxonomies to break with the update, until I edited the theme to add them back in.  I researched the question, “Can I customize a theme and have the changes persist when the theme is updated?”

The answer is “yes”, and the means to do this is the Child Theme.  I promptly created a child theme with a functions.php file that registered my custom taxonomies.  Child theme functions are loaded in addition to the parent theme functions.  Since I’ve already modified Arjuna-X to add my custom taxonomies, I am not sure what would happen when the child theme redefined existing functions.  This seemed like an excellent opportunity to run an experiment.

  1. Create a new Arjuna-X-Child theme and upload to the server.  Do not activate it yet.
    1. A child theme requires a style.css file.  Since I am not making any changes to styles, I used the

      @import url(“../arjuna-x/style.css”);

      statement to bring in the parent Arjuna-X styles in their entirety.

    2. Create a new functions.php file containing the code to register custom taxonomies.
  2. Update Arjuna-X.  This should cause my custom taxonomies to stop working.  Result: As expected, custom taxonomies stopped working.  I noticed that the theme update instructions in my blog dashboard recommend using child themes for modifications.  Funny how I did not notice that last week.
  3. Change blog theme to Arjuna-X-Child.  Custom taxonomies should begin working again.  Result: my child theme showed up in the dashboard.  I activated it and custom taxonomies are back.  That was easy!
  4.  

Not so easy after all. The child theme broke the admin functions.  Login no longer works.  I had to revert back to the basic Arjuna-X theme and modify it, as before.

Time to continue the experiment.  The Arjuna-X functions.php file is quite complex and difficult for me to read.  I wonder if it is not structured in a way that is incompatible with the child theme I’m trying to create.  Hypothesis: The Twenty Ten theme will maximize compatibility, because it is developed as the default theme for WordPress.

The experiment proceeded as follows:

  1. Activate Twenty Ten as the blog theme.  Result: Appears to work as desired.  Theme does not have as many features as Arjuna-X does.
  2. Create a Twenty Ten Child theme and activate it.  This should add my custom taxonomies to the dashboard.  Result:  Blog displays OK, but when I attempt to Log Out, the dreaded “Cannot modify Header” warning appears.  I reset the active theme as Twenty Ten.
  3. Delete functions.php from the child theme.  This leaves only style.css.  Activate Twenty Ten Child theme.  Result: I was able to log out and back in.  No change in appearance from parent theme; working as expected.
  4. Add in the functions.php file exactly as shown in the WordPress example.  Result: The “Cannot modify header information” fault is back.  It appears that child themes are not working for some reason.
  5. I modified the function.php in the child theme to contain only <?php ?>.  No white space before or after the code.  Result: Problem persists.

At this time, I cannot use a child theme with a functions.php file.

2 May 2011 Update. I keep trying things, as this situation is bugging me.  A search of WP Forums gave a clue that perhaps a plugin is interfering with a child theme.  I disabled all plugins, but it did not help.

7 July 2011 Update. Lots of non-adventure life going on, so I haven’t done anything with the blog for a couple months.  I’m going to give up on child themes as I cannot figure out why I can’t get them to work.  I’ll have to get my taxonomies working by editing the main functions.php.  Then I’ll re-enable the plugins I had disabled a couple months earlier.

Because I don’t work with WordPress every day, I’ll document the steps I take in detail; that will help me later to remember what I did.

  1. I could not log in to edit the blog due to the “Cannot modify header information” fault from May.  Using FTP, I renamed the “twentyten-child” folder to “xxtwentyten-child”.  A page refresh displayed the dashboard.
  2. Since the twentyten theme is in fact simpler than Arjuna-X, I decided to try implementing my custom taxonomies in twentyten.  The hope is that it will be easier to learn the inside workings of WordPress.  First I copied the taxonomy code from my backup of Arjuna-X, then pasted it at the end of the functions.php file of twentyten, being careful not to leave any white space at the end of the file.  My custom taxonomies were back!
  3. In the process I noticed that WordPress 3.2 was out, and that it requires PHP 5.2.4 and MySQL 5.0.  I went to my ISP admin panel to verify the required versions were running.  MySQL was at 5, but PHP was version 4.  I changed PHP to version 5 (the exact version is 5.2.17).  This got me to wondering whether the old version of PHP was responsible for the troubles I’d been having with child themes.  So I ran another experiment.
    1. Verified that the twentyten-child functions.php file contained only the PHP start tag and a comment.
    2. Activated twentyten child theme.
    3. Better … the error is gone, but the theme does not display properly.  No widgets.
    4. I had been importing the style.css file in the child theme.  Now I deleted that file and copied style.css from twentyten to twentyten-child.  Now the child theme works just like the parent, widgets and all.
    5. Last step is to add in the functions.php file to the twentyten-child directory.  I did this and the custom taxonomies reappeared.  Yay!
    6. OK, not so Yay.  I seem to have duplicated the original problem. :(

Summary


I’ll summarize for the next time I come back to this.

Here’s the error line, which gets repeated multiple times:

Warning: Cannot modify header information – headers already sent by (output started at /homepages/9/d271285184/htdocs/wp-content/themes/twentyten-child/functions.php:1) in /homepages/9/d271285184/htdocs/wp-login.php on line 354

The error gets flagged on the first line of the child theme’s functions.php.  I know the problem is there because the line number (functions.php:1 in the example above) changes if I insert blank lines at the start of the file.  Here is the beginning of functions.php:

<?php
/**
 * Register custom taxonomies
*/

Environment

WordPress version:  3.1.2

PHP version:  5.2.17

MySQL version: 5.0

Parent theme: Twentyten

All plugins are disabled.

Symptoms

  • Problem manifests during admin type functions, such as login, logout, and editing of posts.
  • Problem is always associated with the PHP start tag in the child theme’s functions.php file.  Line number of the warning moves with the start tag as blank lines are added to start of file.
  • Problem does not manifest if the code in functions.php is directly added into the parent theme’s functions.php.
  • Problem does not manifest for non-admin functions such as navigating posts.
  • Problem does manifest for leaving comments.  Comment will post, though the error occurs.  No problem if there is no functions.php in the child theme folder.

Troubleshooting

  • Using the latest versions of PHP and My SQL.
  • WordPress 3.1.2 should not have this problem.  I will update to 3.2 soon, but don’t expect anything to change.
  • The child theme’s functions.php has no white space at the end.
  • Tried with and without a closing PHP tag.  No difference.
  • Found some comments on the net that the opening PHP tag should have a trailing space.  Tried with and without; no difference.  Also tried the opening tag using the two variants below, also with and without trailing spaces, with no difference.
<?
<?php
  • My text editor allows end of lines to be of three variants.  I tried all three without effect:
    • Unix (LF).  My server is Linux so this should be the best choice.
    • Mac (CR).
    • Windows (CRLF)
  • I suspected a permissions problem.  Admin functions and leaving comments differ from browsing posts by writing data.  So I tried the following:
    • Add group write privilege to wp-content folder and contained files.  Did not help.

Files

Here are the files in the child theme folder:
style.css

/*
Theme Name: Twenty Ten Child
Description: Child theme for the Twenty Ten theme.  Adds custom taxonomies.
Author: Andy Arkusinski
Template: twentyten
*/

@import url("../twentyten/style.css");

functions.php

<?php
/**
* Register custom taxonomies
*/
add_action( 'init', 'create_my_taxonomies', 0 );

function create_my_taxonomies() {
register_taxonomy( 'place', 'post', array( 'hierarchical' => false, 'label' => 'Place', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'history', 'post', array( 'hierarchical' => false, 'label' => 'History', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'activity', 'post', array( 'hierarchical' => false, 'label' => 'Activity', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'device', 'post', array( 'hierarchical' => false, 'label' => 'Device', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'software', 'post', array( 'hierarchical' => false, 'label' => 'Software', 'query_var' => true, 'rewrite' => true ) );
}

Planning and Recording an Adventure

I’m using this post to document how I record the adventures that I post in this blog.  As an engineer, I enjoy technology.  I also enjoy history, and the history of technology.  Electronics is changing so fast these days, that it will be fun in the future to see how I recorded adventures back in 2011.  If anyone reads this blog, it may help them as they develop their own methods.

I follow three general steps:

  1. Plan the Adventure
  2. Record the Adventure
  3. Document the Adventure

Plan the Adventure

These days, my adventures are constrained to be close to home.  Fortunately, Albuquerque has a lot of opportunities for outdoor adventures, which are my preferred kind.  Together with my son Richard, we do a lot of hiking, and some canoeing.  Richard is not into biking, so I do those adventures solo or with other friends.

To help plan hikes, I bought two hiking guidebooks.

  • 60 Hikes Within 60 Miles: Albuquerque, including Santa Fe, Mount Taylor, and San Lorenzo Canyon, by Stephen Ausherman, 2008, Menasha Ridge Press.  www.menasharidge.com
  • Sandia Mountain Hiking Guide, by Mike Coltrin, 2005, University of New Mexico Press.  www.sandiahiking.com

There is no hint in the book, but Sandia Mountain Hiking Guide has a complementary web site, at which all the GPS waypoints and tracks mentioned in the book are available for download.  60 Hikes does not have a similar site, though Trails.com does feature hikes from the book.  However to access the GPS data (beta) requires a paid membership to Trails.com.

Because my GPS equipment is made by Garmin, I use the free application Garmin BaseCamp to plan outdoor adventures.  The first step is to locate some strategic waypoints along the planned route.  I select the Trailhead/Parking Area, a few turns along the path, and the end point.  SMHG makes it easy by downloading GPX files from the web site.  60 Hikes only includes the trailhead as written GPS coordinates in the book, and I have to key these in.

My setup of BaseCamp does include a topo map that I bought from Garmin.  This adds a lot more detail, including trails, than the free base map that comes with the application.

When the waypoints and route are to my satisfaction in BaseCamp, I connect my handheld GPS receivers and download the information to the units.  Richard usually carries the older GPSMap 76C and I clip the Oregon 400t to my belt during the hike.

Record the Adventure

Two questions need to be answered to record the adventure:

  1. Where did I go?
  2. What did I do?

My GPS receiver records where I went, and when.  I set it up to always record tracks, so there is no issue of forgetting to turn on tracking.  Recording is passive, so the only setup required is to ensure there are fresh batteries in the unit.

I use photographs to record what I did.  Mostly Penny, my Pentax K20D, but sometimes the iPhone.

I like to record where each photo was taken, and that means geotagging each photograph.  This happens during the Document phase, but the task is much easier if the clock in the camera is synchronized to GPS time.  So I check the camera time to ensure it is within 1 second of GPS time.

Document the Adventure

This is the most time-consuming part of the adventure.  I follow these steps:

  1. Retrieve GPS tracks and digital photos from the equipment and store as files on computer hard drive.
  2. Geotag the photos with the location they were taken.  This involves comparing the GPS track recorded by the GPS receiver with the time stamp on the photo image file.  The GPS location at the time closest to the image time is added to the image meta-data.  (This is why it is important for the camera time to by synchronized to GPS time.) BaseCamp does a good job of geotagging images, but it does have a limitation for my situation.  I’ve recently started taking all my photos in RAW format, and BaseCamp does not geotag RAW images.  It works fine for JPG and other common formats.  I use PhotoGPSEditor, which has a clunkier UI, but handles RAW image files.  There are a number of software applications available that can geotag images.
  3. Edit the images.  I use iPhoto.  I import the geotagged images into iPhoto, select the keepers, label them as appropriate, crop, and apply some simple enhancements.  Picasa is another app that is good at editing the images.
  4. Select images to be used in the blog post and export from iPhoto.  I construct the narrative of the blog post in my head and choose images that complement the story.  I export the selected images in a reduced resolution: 1100 pixels in the longest dimension.  This looks good on screen and minimizes time to load photos.  (My first blog post used full-size images, and took a long time to load, even on a cable broadband connection.)
  5. Watermark the images with a copyright notice.  I use iWatermark, after researching available software for the Mac.
  6. Write the blog post, inserting images where appropriate.
  7. Create a new trip at EveryTrail.com. This is how I get the Adventure Map.  I upload my GPS track and geotagged images.  I usually upload more than the images selected for the blog post, in order to create a comprehensive slide show.  This involves repeating the export and watermark steps for the larger set of images.  The images will be placed on a map at the location they were taken, along with the GPS track.  [Note: For a simple adventure, EveryTrail can be used can be used as a blog platform.  In addition to a map with track and images located on it, provision is made to label each image, and to provide a narrative of the trip.  EveryTrail will also geotag your images.]
  8. Paste the map link from EveryTrail into your blog.  EveryTrail provides snippets of HTML code that can be copied and pasted into web pages.  This will embed the map with track and images into the blog, and make available a slide show of the images uploaded to EveryTrail.
  9. Copy the elevation profile of the adventure from BaseCamp into your blog.  I take a screenshot of the elevation profile in BaseCamp and upload as an image to the blog.  This may not be interesting in Kansas, but in Albuquerque most adventures involve non-trivial elevation changes.

 

Custom Taxonomy Issues

Today I upgraded the Arjuna Theme I use for my blog.  Looking at my blog after, I noticed that all the tag clouds for my custom taxonomies: Places, History, Activities, Gadgets, and Software were referencing basic post tags instead of my custom categories.  It took some time to find the problem.  This is a note to myself in case it happens again.

  1. Custom Taxonomies are added into the functions.php file.  When I upgraded Arjuna, the code that created my custom taxonomy functions was over-written.  When I put it back, custom taxonomies returned.
    • I had a backup of the modified Arjuna Theme on my HD.  I was able to find, copy, and reinsert my code into the theme functions.php file.  I gave myself a pat on the back for keeping a local copy of the modified theme.
    • I vaguely recall there is a way to insert custom functions into WordPress in such a way that they are not over-written by the theme when it is updated.  However, because I did not write such a note as this to myself at the time, I can’t recall the details.
  2. After fixing the taxonomies, the blog displayed a 404 Error when searching for specific taxonomy values.  The solution is to visit the Settings -> Permalinks page from the WordPress Dashboard.  Thanks to Sean Behan for the tip.