Piedras Marcadas Canyon

As well as being part of the Petroglyph National Monument, Piedras Marcadas Canyon is part of Albuquerque Open Space. The city provides a parking area with a short walk through a neighborhood to get to the canyon. (Click any photo to enlarge.)

Petroglyph National Monument has several distinct areas.  The volcanoes had been visited last summer.  Today we visited Piedras Marcadas Canyon.  This is a short hike in the area where the west mesa joins the sandhills on the west side of the Rio Grande river valley.

Albuquerque can be seen on the east side of the Rio Grande.

It was a wonderful afternoon for a hike; some thin clouds diffused the sunlight so it was not too hot.  Rain the night before had cooled off the areas to a pleasant temperature.  The sandy path is along the base of the mesa, with opportunity to clamber on the basalt rocks if desired.

The basalt boulders on the slope, covered with a desert patina, are ideal for inscribing various images.

As its name implies, Piedras Marcadas (“marked rocks”) is known for the petroglyphs inscribed on the blocks of basalt.  In ancient times, a lava flow covered the area west of the river in a layer of basalt.  The flow stopped before reaching the river, and over time the softer soil was eroded from underneath the lava, leaving a ledge of rock.  The ledge eventually broke, creating a jumble of boulders along the edge of the west mesa.
Weathering created a patina on the rocks.  People would remove this patina to create contrasting areas that form the petroglyphs.

Aspiring artists across the ages have left their marks on the rocks.

I was not able to identify all the wildlife that was seen in the canyon.  There was a pair or mourning doves, a small sparrow, several lizards, a chipmunk, something that may have been a large chipmunk, gopher, or ground squirrel (it was far away and shone white in the afternoon sun), and a jackalope!  OK, so maybe it was only a jackrabbit, but it could have been a jackalope!

Later visitors don't always respect previous artists' work. Not the bullet holes some marksman has placed in the images of the hands.

I tracked the jackalolpe … er … jackrabbit across the canyon floor, attempting to sneak close enough to get a good picture, but the creature was too wily and cunning to allow himself to be captured that way.  These animals can blend in to the desert landscape so well that they become practically invisible unless they move.  When motion is first detected, out of the corner of one’s eye, this rodent can easily be taken for a coyote, based on size alone.  They can be huge!

Not all petroglyphs are from ancient times. People have continued scribing images int modern days. This one looks like Spongebob Squarepants to me!

I just bought a point-and-shoot camera and this was the first outing for the Panasonic Lumix DMC-ZS10.  Why do I need this camera?  When hiking in the desert and mountains, one should always be prepared with water, jacket/blanket, first aid kit, etc.  A day pack works nicely for carrying this kit.  But I carry my Pentax DSLR in a Targus backpack, and this leaves no room for another pack.  A small P&S camera can be carried on my belt so that a day pack can also be carried.

Does this look like a musical note to you?

Of course, I always carry my iPhone with me, and it take good enough pictures for my purposes.  However, the iPhone (and most P&S cameras) does not do well for taking photos at a distance.  Birds and wildlife come out as little black dots because they are usually too far away.  The DMC-ZS10 has a 16X zoom, and this is the feature that sold me on it.  The features of this camera are:

The ZX-10 was not impressive in finding wildlife on the max zoom setting. Autofocus is slow, and without a viewfinder, I found it difficult to locate the aim point. Do you see a jackarabbit in this photo? Me neither.

  • 14.5 Megapixel resolution
  • 16X zoom, both wide angle and telephoto
  • Still and full HD video modes
  • GPS for geotagging photos
  • anti-shake

Of course, the rabbit did not make things easier by always moving to keep brush between himself and me.

Here he is in a rare moment out of cover.

Gotcha!

Bye-Bye!

Here’s what I learned about this camera today.  Note this is the first time I have used it, so there may be some learning curve still to come.

  • I was expecting the camera to have a “sleep” mode where the display would go off and the lens would retract after some time of unuse.  It does not have this, so I ended up turning the power off after each shot, mostly so the lens would retract and the camera would be easier to carry in my hand.
  • The zoom does indeed bring in distant objects and the anti-shake helps steady the photo.
  • There is no viewfinder; one uses the rear LCD screen to compose a shot.  I prefer using a viewfinder, but I did not expect lack of one to be as big an issue as it became.  Especially when zoomed in, I found it difficult to locate the subject on the screen.
  • The GPS has settings for ON, OFF, and Airplane.  The airplane mode turns the GPS on and off with the camera.  When ON, the GPS continues to run (and drain the battery) when the camera is turned off.  I elected to use the Airplane mode mostly so I would not forget to turn off the GPS at the end of the day.  However, this is not a good choice, as the GPS takes a while to locate itself when it first starts up.  As a result, my first few pictures on this adventure did not have a location.  Problem solved when I set the GPS to ON and let it run continuously.  Of course, I did forget to turn off the GPS when I got home, and by morning the battery was 1/3 depleted.

 

Adventure Maps

Short Hike in Piedras Marcadas Canyon at EveryTrail
EveryTrail – Find the best Hiking near Albuquerque, New Mexico

 

 

Security Certificates

I recently had the need to send some secure email.  I was able to create and install a security certificate that allows me to send encrypted emails.  Here’s how that unfolded.

History

Back in the day, there was PGP – Pretty Good Privacy.  This was public key encryption software, developed as open source.  I learned about encryption, public key cryptography, and related material by installing and using PGP on my Mac.  PGP is still around, and still supported by the open source community.  Public key cryptography uses pairs of keys – a private key that remains in the owner’s possession, and a public key that is shared with the world.

PGP uses a network of key servers for distribution of public keys.  An enhancement of that concept is the public key infrastructure (PKI) that adds authentication of the key owner.  My employer issues a digital certificate to each employee so that confidential information can be exchanged worldwide over the internet, without being compromised.  I wanted a similar digital certificate for my personal email.  PKI has been more widely adopted than PGP, though both are based on public key cryptography.

Digital certificates are issued by a Certification Authority (CA).  The PKI market is dominated by for-profit companies and a certificate costs money.  However, in 2007 Thawte was issuing free email certificates.  These certificates could only be used for signing and encrypting email, and since that is what I was looking for, I picked some up.  The certificate integrated very nicely with OS X Mail.  Unfortunately, Thawte stopped issuing email certificates and mine expired in 2010.  For a fee, you can pick up an email certificate from Verisign, and probably other CAs.

I went searching for a source of free email certificates, and found CAcert, an open-source community that is a Certification Authority.  I went through the process of getting a new digital certificate and now my email has signing and encryption capability again.

How I Got a CAcert Digital Certificate

The process is not terribly difficult, and is explained step-by-step on their web site.  I was able to follow the instructions without difficulty, though there are some minor details that are different on my system.

The steps I followed to get an email certificate were:

  1. Import the site’s root certificate into my browser.  The site pages are secure, and cannot be accessed without CAcert’s root certificate.  Fortunately, the home page contains a link for installing the root certificate.  A single click there, and the certificate was installed in Firefox.
  2. Join the CAcert community.  Now that the browser had the proper digital certificate installed, I could access the page.  After filling out the form and submitting,  CAcert sent an email to me.  I clicked on the link in the email and this verified my email address.  I am now a community member.
  3. I now added all the email addresses I want included in the certificate.  For each address, an email was sent containing a link on which to click.  Clicking the link verified each email address.
  4. Now I applied for a new client certificate.  A certificate is good for specific purposes, and I applied for one that is good for email messages.  I specified that the certificate would apply to each of the email addresses that had been verified in the previous step.  I specified a high-grade (4096-bit) key.  My key pair was created fairly quickly — just a few seconds — and the new certificate was installed into Firefox.
  5. Now I backed up the certificate to a file on an external hard drive.  Here my experience differed from the instructions on the CAcert site.  Rather than Preferences/Advanced/Security/Certificates/Manage Certificates, my version of Firefox has the Certificate Manager at Preferences/Advanced/Encryption/View Certificates.  I backed up my new certificate to a .P12 file, selecting a password in the process.  I recorded the password in my password manager app, which is Web Confidential for now.
  6. The next step was to import my certificate into OS X, using Keychain Access.  A double-click on the .P12 certificate backup brings up Keychain Access.  I entered the password for the file and imported the certificate to my login keychain.  In the process I chose to trust the CAcert Signing Authority.
  7. To test, I created a new message to myself at my employment email address.  The new message window now contains buttons for signing and encrypting the email.  I can sign any email using my private key.  In order to send an encrypted email, I need to know the public key of the addressee.  My login keychain contains the certificate issued by my employer, with my public key.  I successfully sent a signed, encrypted message to myself at the office.  Unfortunately, I forgot to reply with an encrypted message to my home email address to check the other direction.  However, this has worked in the past and don’t anticipate any problems.

My new digital certificate identifies me as CAcert WoT User.  This is because the only thing that is verified is my email address.  In order to have my real name included in the certificate, I must meet a CAcert authenticator in person and show acceptable ID.  Then my certificate will be allowed to show my real name, as the face-to-face meeting authenticates who I am and that I own the email address in question.  I’m currently trying to set up such a meeting.

How Do I Use Digital Certificates?

  • I default all my emails to be signed.  A signed email contains my public key, which allows the recipient to detect whether the message has been altered.
  • Both OS X Mail and Windows Outlook save the certificate with the sender’s public key that is contained in a signed message.  Outlook stores the key in Contacts, while Mail stores it in the login keychain.
  • Once the public key is in the keychain, I can send encrypted messages that can only be decrypted to the addressee’s private key.  I encrypt messages that contain financial or medical data, as the data is protected should anyone try to hack my email at the ISP or intermediate servers.

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.