Seasonal photo, (c) 2006 Christopher P. Lindsey, All Rights Reserved: do not copy

What’s in a name? (or why plant names are important)

“What’s in a name? that which we call a rose
By any other name would smell as sweet…”

— William Shakespeare

Systema Naturae

Systema Naturae, by Carl Linnaeus and published in 1735

We’ve all heard that quote from Romeo & Juliet. It’s a lovely sentiment. Really. Quite romantic and all that. But it’s probably only true for Shakespeare.

Most of us aren’t going to have things that we’ve written translated into 80 different languages. If an Indonesian came to the US and asked how much a mawar cost, they’d probably get quoted the price of a Toro lawnmower. A Turk might ask for a gül and get pointed toward a sea-loving bird. A German could ask about rosenstrauch, and we’d regrettably tell them that, like Guildenstern, he is dead. We’d only understand if they mentioned something that sounded a lot like ‘rose’, which is what rosenstrauch means.

HISTORY

This is where botanical names come in. Back in the 1700s a Swedish botanist named Carl Linnaeus developed a system that categorized and classified plants based on their flowers and fruit. His system, published in ‘Systema Naturae’ in 1735, didn’t just create a logical hierarchy for living things. It also standardized the names with a Latin base, so scientists in one part of the world could easily communicate about plants with scientists in another part of the world.

Linnaeus’s system is genius in it’s simplicity. It uses a method called binomial nomenclature which places a genus name first (kind of like your last name, or surname) and is followed by a unique specific epithet, which is kind of like your first name.

For example, in the case of Rosa eglanteria, “Rosa” is the genus and “eglanteria” is the specific epithet. Through the rules of binomial nomenclature, we know that every plant that has a genus of Rosa is going to be a rose.

Linnaeus took things a step further and categorized each genus (of which the plural is genera) into families, also based on similar characteristics. Now we had a way of knowing that Prunus (plums and cherries), Persica (peaches), Rubus (blackberry), and Pyrus (pears) were all related to Rosa. In this case, they were put into a family called Rosaceae, or the rose family, along with ninety other genera.

Linnaeus often said that his system was man’s attempt to classify God’s creations, but didn’t necessarily reflect the deeper relationships between living things that he believed existed. He stated this simply, saying “God created, Linnaeus organized.” It was an insightful comment, and prescient. It turns out that others like to organize too, and not always in the same way.

Pseudotsuga menziesii, aka Pseudotsuga taxifolia, aka Pinus taxifolia, aka Abies taxifolia, aka Abies douglasii var. taxifolia...

Pseudotsuga menziesii, aka Pseudotsuga taxifolia, aka Pinus taxifolia, aka Abies taxifolia, aka Abies douglasii var. taxifolia…

THE PROBLEM BEGINS

As the Linnaean system gained traction, botanists began reclassifying plants. They’d study something and decide that a plant really belonged in another genus, it would get renamed, and then the same thing would happen again later. Pseudotsuga menziesii, the douglasfir, was given almost twenty names over the years, including Pinus taxifolia and Abies douglasii. Different naming philosophies emerged, and Charles Darwin observed in 1857 that some botanists were “lumping” (putting similar plants under the same name) and some “splitting” (every difference resulted in a new, unique name).

The naming was getting out-of-hand and hard to keep track of, so an International Botanical Congress was formed in 1867 to try and restore order. Unfortunately, it wasn’t enforced and the chaos continued until 1905, when the International Botanical Conference of Vienna was formed. This helped offer guidelines to botanists, but it wasn’t really until 1930 that a standard was fully agreed upon and adhered to.

THE PROBLEM WORSENS

For many more years botanists debated and argued, but at least there was a process and an authority to abide by. However, in the 1980s things changed drastically. Technological advances gave scientists the first opportunities to sequence the DNA of plants, and in some cases what they found was shocking to the botanical community. Plants that were previously thought to have nothing in common ended up being closely related, or in other cases the opposite was true. Look at the milkweed family — after sequencing, it was discovered that milkweeds actually belonged in the dogbane family, despite their different appearances.

DNA sequencing is both exciting and scary at the same time. It’s turning the taxonomic world on its head, and things are being reclassified with increasing frequency.

WHO’S AUTHORITATIVE?

With all of these changes, the problem most people now have is figuring out who is authoritative for naming. We see so many variations, and inevitably someone will pipe up in a hort.net thread or Facebook posting to point out that the name used is incorrect. How are people supposed to know?

I used to use the RHS Plant Finder as my guide because of their relationship with Kew Gardens and the DNA sequencing there. But they didn’t really have a comprehensive, publicly available database. So instead I looked at IPNI, but again, I couldn’t really download a database to work with. Everything had to be looked up online, one at a time, and their license only allowed 5000 records to be used. Then there was the USDA database which seemed to be more friendly, but it often seemed outdated. The Plant List looked really comprehensive, but they have weird usage terms that won’t let you use their databases for anything commercial, pretty much ruling out all nurseries and hort.net.

The iPlant Collaborative Taxonomic Name Resolution Service, funded by the National Science Foundation, is another great source that uses a lot of other systems to provide possible plant names. It’s great for single lookups, but can be slow for larger database queries.

I finally settled on Tropicos because it seemed to have a lot of records, was updated, and had a system that I could use to check plant names in bulk.

In the end, it’s not going to be so much about who’s right, but more about who has the most readily available data. It was recently reported that the definition of the word literally could now mean figuratively, literally leaving no word in the English language that means ‘a literal or strict sense.’ The same thing will happen with plant names. In this world where everyone can be a publisher, it’s not going to be about what name is right — it’s going to be about who uses it the most.

Detecting if a remote connection is mobile in Apache

hort.net-mobile

As many of you have heard, Google is requiring that sites pass their ‘mobile usability’ test if they want to show up in mobile search rankings. After April 22nd, Google will start rolling out changes to their listings, and those who don’t pass the test stand to lose a lot of traffic.

I was pretty concerned until I realized that our biggest problem is all of the small menus around our content. That stuff works fine on a desktop, but fat fingers (compared to a mouse pointer) can’t discern between tightly spaced links.

So… Why not just make all of the menus disappear for mobile users?

It seemed like the easiest way would be to create an environment variable from within Apache. This would let me either use Server Side Includes (SSI) or make programmatic changes in scripts.

The trick, of course, was figuring out which visitors were mobile and which ones weren’t. Setting an environment variable wouldn’t be of much use if I was identifying the wrong visitors.

I ended up finding a great Apache regular expression at detectmobilebrowers.com. Although the regular expression had what I needed, they were using it to rewrite mobile visitors to another URL. I just wanted to set a variable, not redirect people. Here’s what I came up with instead.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^ - [E=MOBILE_TMP:1]
RequestHeader add MOBILEUSER %{MOBILE_TMP}e env=MOBILE_TMP

As you can see, the first three lines came from detectmobilebrowsers.com. The last two lines set the environment variable in a two-step process.

The mod_rewrite line that starts with RewriteRule sets a variable named MOBILE_TMP to ‘1’ if any of the regular expressions match. Unfortunately, Apache won’t pass that environment variable on to CGI scripts. mod_header, however, can pass variables that it sets.

The last line uses this feature in mod_header to set another variable named HTTP_MOBILEUSER to the value of MOBILE_TMP if MOBILE_TMP is set. Note that the variable is called HTTP_MOBILEUSER, not MOBILEUSER. The RequestHeader directive will prepend the string ‘HTTP_’ to whatever environment variable you pick.

Most of our pages at hort.net use SSI, so it’s very easy for me to tell the system to exclude blocks of code for mobile users now. Here’s a sample SSI snippet that only includes the files if it’s a mobile user. If not, they’re excluded.

<!--#if expr="${HTTP_MOBILEUSER} != /1/" -->
   <!--#include virtual="/include/root-top.html"-->
   <!--#include virtual="/include/vertical-spacer8.html"-->
   <!--#include virtual="/include/root-left.html"-->
<!--#endif -->

Another example sets the background color of a page to green for mobile users, but white for desktop users:

<!--#if expr="${HTTP_MOBILEUSER} != /1/" -->
<body bgcolor="#FFFFFF" vlink="#668F66" link="#000000">
<!--#else -->
<body bgcolor="#004400" vlink="#668F66" link="#000000">
<!--#endif -->

Of course, it would be ideal to use CSS for these, but when you have 800,000 legacy pages dating back nearly twenty years this is much simpler!

Sometimes our Perl scripts also had stylistic changes for mobile users too. In this case, we choose a different image for mobile visitors:

if ($ENV{'HTTP_MOBILEUSER'} == 1) {
   $imagedir = "/mnt/WWW/hort.net/images/gallery/mobile";
} else {
   $imagedir = "/mnt/WWW/hort.net/images/gallery/desktop";
}

Or:

  $imagedir = sprintf(qq(/mnt/WWW/hort.net/images/gallery/%s),
     ($ENV{'HTTP_MOBILEUSER'} == 1) ? "mobile" : "desktop"
  );

Making these changes ended up being easier than I thought, and for that I’m grateful. There are still some tweaks to make to hort.net, and we still need to add some mobile navigation options to our pages. But for now we’ll continue to show up in the search rankings, our traffic won’t disappear, and most importantly, people will be able to use our pages on mobile devices.

Announcing the first blue coneflower, and double to boot!

double-coneflower-09jul07-blue

Echinacea purpurea ‘Blueberry Petticoats’

In 2005 I sent a bud from a double pink coneflower named ‘Raspberry Petticoats’ to Terra Nova. The deal fell through when they patented their own 2.5 years later, but I’m excited to announce the latest one: ‘Blueberry Petticoats’! I believe this is the first blue coneflower!

By splicing the gene for delphinidin into a coneflower and suppressing the anthocyanins responsible for pink coloration, we were able to create this incredible flower.

Unfortunately, solar radiation exposes some anthocyanins that haven’t been fully suppressed near the flower centers and as the flowers senesce, but we expect to overcome this in future generations.

We hope you enjoy your 1st day of April!