Electric Cars from near and far

At today’s EVA/DC meeting, we used Zoom to connect with our fellow Electric Car enthusiasts both news and old. I’ve been part of the EVA/DC for ten years and there have been many friends I’ve made through my time there. It was great seeing so many longtime friends once again thanks to the EVA/DC Zoom chat.

Some on Facebook complained that using Zoom for the EVA/DC meetings was insecure. But, as I’m literally a professional white hat hacker, I knew all too well the early and unfounded FUD against Zoom and what it is and is not appropriate for, and how it’s improved. Though I’ve written about it at length, the short answer is: secure enough for EVA/DC, not secure enough for COMSEC TS/NOFORN. Nobody is talking about issues of national security, so please, come join us on Zoom!

My good friend and fellow Eclipse enthusiast, Scott Wilson, shared with us an invitation to the Drive Electric Earth Day event with Plug-In America. The Drive Electric Earth Day Tribute: EVs Making a Difference will occur on 22 April, at 14:00 EDT / 11:00 PDT. You can RSVP here. I should put a disclaimer here that I have asked to be nominated for Plug-In America’s Drive Electric Awards this year, but to be honest, I don’t think anyone nominated me so no worries about a conflict of interest.

Then my longtime friend Eric Cardwell in Tennessee showed us his burgeoning Drive Electric Tennessee page and his new logo. Of course, we wish him well and hope when he’s got it set up to maybe attend one of his meeting on Zoom. Your logo’s looking sharp, my friend!

But the piรจce de rรฉsistance has to be seeing my longtime friend and first Smart Electric Drive (Smart ED) owner in the US, LTC Mindy Kimball. She shared with us this classic clip from Dan Rather Reports.

Brava Mindy! Was wonderful seeing you again and getting a glimpse of this blast from the past. And you know, though it’s not exactly the same Smart ED owner, her current Smart ED is now driven by the young man in the videos. Look how far we’ve come!

Finally, I would be remiss if I didn’t invite all of you to join me this Saturday on Secure Zoom where I will be presenting #CO2Fre. Please, come cruise the cloud with me.

Dusting off the Rรฉsumรฉ, Part 1: The Schema

I wrote my current Rรฉsumรฉ in eXtensible Markup Language (XML), back in 2002, just before I started work at the US Naval Research Laboratory. Of course, XML, being a rather free-form markup style, it works best when constrained. At first, I did this via a Document Type Definition (DTD).

<!-- Entities -->
<!ENTITY  nbsp         "&#x00A0;">
<!ENTITY  chi2         "&#x03C7;&#x00B2;">
<!ENTITY  endash       "&#x2013;">
<!ENTITY  eacute       "&#x00E9;">
<!-- Pure (PCDATA) Elements -->
<!-- Names and Addresses -->
<!ELEMENT name         (#PCDATA)>
<!ELEMENT oldname      (#PCDATA)>
<!ELEMENT street       (#PCDATA)>
<!ELEMENT apartment    (#PCDATA)>
  <!ATTLIST apartment    spellout     (true|false) "false">
<!ELEMENT city         (#PCDATA)>
<!ELEMENT state        (#PCDATA)>
<!ELEMENT province     (#PCDATA)>
<!ELEMENT postal       (#PCDATA)>
<!ELEMENT country      (#PCDATA)>
<!ELEMENT e-mail       (#PCDATA)>
<!ELEMENT phone        (#PCDATA)>
<!ELEMENT mobile       (#PCDATA)>
<!-- Keys and Headings -->
<!ELEMENT heading      (#PCDATA)>
<!ELEMENT key          (#PCDATA)>
<!ELEMENT value        (#PCDATA)>
<!-- Date and Time -->
<!ELEMENT year         (#PCDATA)>
<!ELEMENT month        (#PCDATA)>
<!ELEMENT day          (#PCDATA)>
<!ELEMENT hour         (#PCDATA)>
<!ELEMENT minute       (#PCDATA)>
<!ELEMENT second       (#PCDATA)>
<!-- Descriptive Elements -->
<!ELEMENT position     (#PCDATA)>
<!ELEMENT product      (#PCDATA)>
<!ELEMENT degree       (#PCDATA)>
<!ELEMENT course       (#PCDATA)>
<!ELEMENT author       (#PCDATA)>
<!ELEMENT publisher    (#PCDATA)>
<!ELEMENT subject      (#PCDATA)>
<!ELEMENT isbn         (#PCDATA)>
<!-- deprecated -->
<!ELEMENT deprecated   (#PCDATA)>
<!-- Compound Elements -->
<!-- Compound Time -->
<!ELEMENT date         (year?,(month,day?)?,(hour,(minute,second?)?)?)>
<!ELEMENT from         (date)>
<!ELEMENT to           (date)>
<!ELEMENT period       ((from,to)|date)>
<!-- Simple Compound Elements -->
<!ELEMENT address      ((street,apartment?)?,city?,(state|province)?,postal?,country?,e-mail?,phone?,mobile?)>
<!ELEMENT book         (name,author*,(address?,publisher)?,date?,subject?,isbn?)>
  <!ATTLIST book         name         ID           #IMPLIED>
<!ELEMENT institution  (name,oldname*,address?)>
  <!ATTLIST institution  name         ID           #IMPLIED>
  <!ATTLIST institution  url          CDATA        #IMPLIED>
  <!ATTLIST institution  deprecated   (true|false) "false">
<!-- Reference Elements -->
<!ELEMENT bookref      EMPTY>
<!ATTLIST bookref      ref          IDREF        #REQUIRED>
<!ELEMENT instref      EMPTY>
<!ATTLIST instref      ref          IDREF        #REQUIRED>
<!-- Simple Compound Markups -->
<!ELEMENT buzzword     (#PCDATA|deprecated)*>
  <!ATTLIST buzzword     deprecated   (true|false) "false">
  <!ATTLIST buzzword     url          CDATA        #IMPLIED>
<!ELEMENT language     (#PCDATA)>
  <!ATTLIST language     level        (native|fluent|conversational|good|fair|poor) #REQUIRED>
  <!ATTLIST language     deprecated   (true|false) "false">
<!-- Hashing Elements -->
<!-- Should I make the Key and Attribute?? -->
<!ELEMENT status       (key,value)>
  <!ATTLIST status       spanning     (true|false) "false">
<!ELEMENT skill        (key,(buzzword*|language*))>
  <!ATTLIST skill        deprecated   (true|false) "false">
<!ELEMENT curriculum   (key?,course*)>
  <!ATTLIST curriculum   deprecated   (true|false) "false">
<!-- Compound Text Elements -->
<!ELEMENT tools        (buzzword*)>
<!ELEMENT task         (#PCDATA|buzzword|instref)*>
<!ELEMENT interest     (#PCDATA|buzzword|bookref|instref|deprecated)*>
  <!ATTLIST interest     url          CDATA        #IMPLIED>
<!ELEMENT para         (#PCDATA|buzzword|product|instref|deprecated)*>
<!-- Compound Paragraph Elements -->
<!ELEMENT objective    (para*)>
<!ELEMENT summary      (para*,task*)>
<!ELEMENT achievement  (tools?,para*)>
<!-- Complex Compound Elements -->
<!ELEMENT title        (name,oldname*,address)>
<!ELEMENT bibliography (heading?,book*,institution*)>
  <!ATTLIST bibliography deprecated   (true|false) "false">
<!ELEMENT job          (institution,period,position?,achievement*)>
  <!ATTLIST job          deprecated   (true|false) "false">
<!ELEMENT school       (institution,period?,degree,achievement*,curriculum*)>
  <!ATTLIST school       deprecated   (true|false) "false">
<!ELEMENT reference    (name,(position,instref?)?,e-mail?,phone?,mobile?)>
  <!ATTLIST reference    deprecated   (true|false) "false">
<!ELEMENT section      (heading,(objective|status*|summary|skill*|job*|school*|interest*|reference*))>
  <!ATTLIST section      deprecated   (true|false) "false">
<!-- Top Level Tag -->
<!ELEMENT resume       (title,bibliography?,section*)>
  <!ATTLIST resume       url          CDATA        #IMPLIED>

Rรฉsumรฉ.dtd, the Rรฉsumรฉ Document Type Definition

These days, most DTDs have been thrown by the wayside in favor of XML defining itself through an XML Schema. A few years ago, I upgraded my DTD to a Schema to make it more compatible with common XML editorsโ€”though I’ve yet to find a descent (Xmplify was a total failure in that respect with no ability to context-complete based on an associated scheme).

<?xml version="1.0" encoding="UTF-8"?>
<!-- Character Entities -->
<!DOCTYPE xs:schema [
  <!ENTITY  nbsp         "&#x00A0;">
  <!ENTITY  chi2         "&#x03C7;&#x00B2;">
  <!ENTITY  endash       "&#x2013;">
  <!ENTITY  eacute       "&#x00E9;">
]>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.timehorse.com"
           xmlns="http://www.timehorse.com"
           elementFormDefault="qualified">

  <!-- Common Attributes -->
  <xs:attribute name="url" type="xs:anyURI"/>
  <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
  <xs:attribute name="spanning" type="xs:boolean" default="false"/>
  <xs:attribute name="name" type="xs:string"/>
  <xs:attribute name="ref" type="xs:string"/>
  <xs:attribute name="level">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="native"/>
        <xs:enumeration value="fluent"/>
        <xs:enumeration value="conversational"/>
        <xs:enumeration value="good"/>
        <xs:enumeration value="fair"/>
        <xs:enumeration value="poor"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>

  <!-- Attribute Groupings -->
  <xs:attributeGroup name="depricatedUrlGroup">
    <xs:attribute ref="url"/>
    <xs:attribute ref="deprecated"/>
  </xs:attributeGroup>

  <!-- Simple Types -->
  <!-- Names and Addresses -->
  <xs:element name="name" type="xs:string"/> <!-- nameType -->
  <xs:element name="oldname" type="xs:string"/> <!-- nameType -->
  <xs:element name="street" type="xs:string"/>
  <xs:element name="city" type="xs:string"/> <!-- nameType -->
  <xs:element name="state" type="xs:string"/> <!-- regionType -->
  <xs:element name="province" type="xs:string"/> <!-- regionType -->
  <xs:element name="postal" type="xs:string"/> <!-- postalType -->
  <xs:element name="country" type="xs:string"/>
  <xs:element name="e-mail" type="xs:string"/> <!-- emailType -->
  <xs:element name="phone" type="phoneType"/>
  <xs:element name="mobile" type="phoneType"/>

  <!-- Keys and Headings -->
  <xs:element name="heading" type="xs:string"/>
  <xs:element name="key" type="xs:string"/>
  <xs:element name="value" type="xs:string"/>

  <!-- Date and Time -->
  <xs:element name="year" type="xs:gYear"/>
  <xs:element name="month" type="monthType"/>
  <xs:element name="day" type="dayType"/>
  <xs:element name="hour" type="hourType"/>
  <xs:element name="minute" type="minuteType"/>
  <xs:element name="second" type="secondType"/>

  <!-- Descriptive Elements -->
  <xs:element name="position" type="xs:string"/>
  <xs:element name="product" type="xs:string"/>
  <xs:element name="degree" type="xs:string"/>
  <xs:element name="course" type="xs:string"/>
  <xs:element name="author" type="xs:string"/> <!-- nameType -->
  <xs:element name="publisher" type="xs:string"/>
  <xs:element name="subject" type="xs:string"/>
  <xs:element name="isbn" type="isbnType"/>

  <!-- Deprecated -->
  <xs:element name="deprecated" type="xs:string"/>

  <!-- Complex, Text-Only -->
  <xs:element name="apartment">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="spellout" type="xs:boolean" default="false"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <!-- Empty Elements (markers) -->
  <xs:element name="author-et-al">
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType"/>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <!-- Compound Elements -->
  <!-- Compound Time -->
  <xs:element name="date">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="year" minOccurs="0" maxOccurs="1"/>
        <xs:sequence minOccurs="0">
          <xs:element ref="month" minOccurs="1" maxOccurs="1"/>
          <xs:element ref="day" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:sequence minOccurs="0">
          <xs:element ref="hour" minOccurs="1" maxOccurs="1"/>
          <xs:sequence minOccurs="0">
            <xs:element ref="minute" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="second" minOccurs="0" maxOccurs="1"/>
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="from">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="date" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="to">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="date" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="period">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="from" minOccurs="1" maxOccurs="1"/>
          <xs:element ref="to" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:element ref="date"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <!-- Simple Compound Elements -->
  <xs:element name="address">
    <xs:complexType>
      <xs:sequence>
        <xs:sequence minOccurs="0">
          <xs:element ref="street" minOccurs="1" maxOccurs="1"/>
          <xs:element ref="apartment" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:element ref="city" minOccurs="0" maxOccurs="1"/>
        <xs:choice minOccurs="0">
          <xs:element ref="state"/>
          <xs:element ref="province"/>
        </xs:choice>
        <xs:element ref="postal" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="country" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="e-mail" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="phone" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="mobile" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="book">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="1" maxOccurs="1"/>
        <xs:sequence minOccurs="0">
          <xs:element ref="author" minOccurs="1" maxOccurs="unbounded"/>
          <xs:element ref="author-et-al" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:sequence minOccurs="0">
          <xs:element ref="address" minOccurs="0" maxOccurs="1"/>
          <xs:element ref="publisher" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:element ref="date" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="subject" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="isbn" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
      <xs:attribute name="url" type="xs:anyURI"/>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="institution">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="oldname" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="address" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
      <xs:attribute name="url" type="xs:anyURI"/>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>

  <!-- Reference Elements -->
  <xs:element name="bookref">
    <xs:complexType>
      <xs:attribute name="ref" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="instref">
    <xs:complexType>
      <xs:attribute name="ref" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Simple Compound Markups -->
  <xs:element name="buzzword">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element ref="deprecated" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="url" type="xs:anyURI"/>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="language">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="level">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="native"/>
                <xs:enumeration value="fluent"/>
                <xs:enumeration value="conversational"/>
                <xs:enumeration value="good"/>
                <xs:enumeration value="fair"/>
                <xs:enumeration value="poor"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <!-- Hashing Elements -->
  <!-- Note: Should I make the Key and Attributes?? -->
  <xs:element name="status">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="key" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="value" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute name="spanning" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="skill">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="key" minOccurs="1" maxOccurs="1"/>
        <xs:choice>
          <xs:element ref="buzzword" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element ref="language" minOccurs="0"
                      maxOccurs="unbounded"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="curriculum">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="key" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="course" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>

  <!-- Compound Text Elements -->
  <xs:element name="tools">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="buzzword" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="task">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="buzzword"/>
        <xs:element ref="instref"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="interest">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="buzzword"/>
        <xs:element ref="bookref"/>
        <xs:element ref="instref"/>
        <xs:element ref="deprecated"/>
      </xs:choice>
      <xs:attribute name="url" type="xs:anyURI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="para">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="buzzword"/>
        <xs:element ref="product"/>
        <xs:element ref="instref"/>
        <xs:element ref="deprecated"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <!-- Compound Paragraph Elements -->
  <xs:element name="objective">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="para" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="summary">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="para" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="task" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="achievement">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tools" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="para" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Complex Compound Elements -->
  <xs:element name="title">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="oldname" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="address" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="bibliography">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heading" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="book" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="institution" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="job">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="institution" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="period" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="position" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="achievement" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="school">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="institution" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="period" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="degree" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="achievement" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="curriculum" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="reference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="1" maxOccurs="1"/>
        <xs:sequence minOccurs="0" maxOccurs="1">
          <xs:element ref="position" minOccurs="1" maxOccurs="1"/>
          <xs:element ref="instref" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:element ref="e-mail" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="phone" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="mobile" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="section">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heading" minOccurs="1" maxOccurs="1"/>
        <xs:choice>
          <xs:element ref="objective" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="status" maxOccurs="unbounded"/>
          <xs:element ref="summary" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="skill" maxOccurs="unbounded"/>
          <xs:element ref="job" maxOccurs="unbounded"/>
          <xs:element ref="school" maxOccurs="unbounded"/>
          <xs:element ref="interest" maxOccurs="unbounded"/>
          <xs:element ref="reference" maxOccurs="unbounded"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>

  <!-- Top Level Tag -->
  <xs:element name="resume">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="title" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="bibliography" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="section" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="url" type="xs:anyURI"/>
    </xs:complexType>
  </xs:element>

  <!-- Simple Patern-based Types -->
  <xs:simpleType name="phoneType">
    <xs:restriction base="xs:string">
      <xs:pattern
          value="(\+[1-9][0-9]{0,2} )?(\([1-9][0-9]*\) )?[#*1-9][-#*0-9.pw]*(x[#*0-9.pw]+)?"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="postalType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([0-9]{5}(-[0-9]{4})?|[0-9A-Z]{3} [0-9A-Z]{3}|[0-9]+)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="regionType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]([A-Z]|[a-zรƒยฉ]*( [A-Z][a-zรƒยฉ]*)?)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="emailType">
    <xs:restriction base="xs:string">
      <xs:pattern
          value="[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+([A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="nameType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]([a-z']*|\.)( [A-Z]([a-z']*|\.))*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="monthType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([A-Z][a-z]*|0?[1-9]|1[0-2])*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="dayType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(0?[1-9]|[12][0-9]|30|31)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="hourType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([01]?[0-9]|2[0-3])"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="minuteType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(0?[1-9]|[1-5][0-9]|60)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="secondType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(0?[1-9]|[1-5][0-9]|6[01])"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="isbnType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[- 0-9]{9,}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

Rรฉsumรฉ.xsd, the Rรฉsumรฉ XML Schema

One thing of note is the concept of deprecated. Not everything in my Rรฉsumรฉ is relevant to today. I like keeping the older elements in the document but when a skill or position becomes no longer relevant to the current job market, it’s marked for deprecation and won’t appear in the final form. How that’s done will be explained in Part 2: Converting to HTML.

With the DTD and XML Schema, I was able to at least verify my Rรฉsumรฉ was compliant and ready for publication. And, as always, I am most assuredly available for hire even with my older Rรฉsumรฉ.

When Zoom Online fails, phone it in

Today, at Reston Writers Review, we had a major Zoom snafu. One of our writers was having a dickens of a time trying to communicate through the Zoom interface when we were reviewing her piece. We had a similar problem on Sunday with The Hourlings but were able to solve that with the person being reviewed just shutting off her video and only using the microphone.

Today, even that didn’t work. One member had to leave the meeting, the connection was so bad and even when the woman being reviewed turned off her video, her voice was still astoundingly choppy.

The only thing for it was to use the backdoor option provided by Zoom: the telephone interface. I hastily logged into the Zoom account provided to me, copied the full meeting info from the Zoom sideโ€”including the dial in numbers for connecting to Zoom on the telephoneโ€”and, finally, our author was back in the meeting.

Overall, it took about 10 minutes for us to fix all the difficulties listed above, but fortunately we only had five more folks who wanted to give their review, and we were still done by 21:00, our normal meeting end time.

All in all, it was a great and successful meeting despite the glitch. It’s more than likely Internet bandwidth is getting frayed due to an upswing in online meeting. But we adopted and adapted, and improved, just like the motto of the round table suggests.

Thank you for reading!

And so it begins! The 2020โ€“2021 Science Book Club Poll

As promised, I took the seventy-nineโ€”yes, seventy-nine, as my good friend Nick Harding pointed out, one of the fifty that I nominated on Friday was already scheduled for our June discussion so I eliminated it from the poll and the tallies. Anyway, I set up the poll Friday but didn’t want to put it out until today to make sure I had the right instructions ready.

This year, the poll is a little different again from last year, time for the annual Science Book Club poll. Last year, you got one twelfth of a point, about an 8.3% boost in your score for each meeting you attended in the last year.

This year, to simplify things, I decided to simply give a 50% bonus to anyone who attended at least four (non-fiction science) meetings in the last year, and 100% bonus if you attended all twelve. I can verify this because I require everyone to list their name on Meetup so I can correlate the records. Further, if you’ve not logged into the meetup site in the last year, you will get a 50% diminishment of voting power. Also, if you overuse the max or minimum “veto” scores (currently set to a maximum of ten), then you also suffer a 50% reduction. Finally, if you’re not even a member of the Science Book Club, I will allow you to vote but you will be biased to 10% of normal.

Thus, if you, like one member currently, attended at least four meetings but voted for more than ten books the the maximum or minimum (veto) rank, you would end up with a 75% bias, meaning your votes count for 75% as normal.

The reason I added the penalty for too many “veto” votes is because this year we have a seven point system. The seven point system goes from one to seven with the following relations. If someone doesn’t vote for a given book, it’s score is assumed neutral.

RatingMeaningPoints
1Veto-4
2Super-Dislike-2
3Dislike-1
4Neutral0
5Like+1
6Super-Like+2
7Veto-Override+4
Ranking of Votes in the 2020 Science Book Club Poll

Beyond that, pollsing is pretty much the same as last year, albeit with more choices and more options. As of this writing we have five votes but I hope to have many more by the time the poll closes on or just before 14 June.

The polls can be found at the Science Book Club 2020โ€“2021 Poll. I hope you will join me in voting enthusiastically, my fellow sapiosexuals!

An Electric Ford Model T?

My good friend Charles Gerena is organizing a special Zoom event on Meetup where we get to meet the owner of a Ford Model T. Now, if you know anything about the old Ford cars, their engines were only built for about 25,000 miles. After that, you’d have to rebuild the engine, replacing worn parts from a very limited supply, and build it back up again for the next 25,000 miles. As I do almost 25,000 a year in #CO2Fre, that’s not much driving for me at all.

So, why, you may ask, am I promoting a Model T Meetup? Simply put, this is no ordinary Model Tโ€”this Model T has been electrified! Today, we are going to learn how the owner converted his classic Model T into an electric car, complete with batteries and electric motor. I hope you can join us!

1914 Model T Hack
Electric Cars aren’t always OEM, sometimes they’re converted. Here in Virginia, someone has converted a Ford Model T into an electric car!

Although I’ll not be cruising on my cloud to get there, hope to see you today at 14:00 EDT!

50 Science Books I’d like to read

Last year, when we were setting the schedule for the Bowie Bevy of Brainy Books, I went through my Audible back catalog and by my calculations, there are 209 titles in my library that I’ve yet to listen to. Some of these are scheduled in my upcoming meetup events but most are gathering dust as I am busy with the official book club list of titles.

Now that it’s time to chose the 2020โ€“2021 Science Book Club. Although I run that meetup and have run it for longer than the founder Megan Thaler, which still amazes me, I always allow a democratic decision on the series of books we read, always scheduling the top 10โ€“12 to form the cycle for the following 11โ€“13 months, with December reserved for our retro cycle books.

I should explain, the Science Book Club has been running since 2009 and has a tremendous back catalog, and although I didn’t attend every meeting, I have attended every one since I began running it in the Summer of 2013. As such, I have a general rule that we can’t do any book we’ve done before in the group as part of the main eleven month year. Also, I require that books be published within the last ten years. I am a little lenient on this in terms of allowing books technically eleven years old given that I’m planning for books into 2021 but allow books from 2010, but no earlier. But official, the rule is no repeats, no fiction, and no books older than ten years. If a book fails any of those tests, it goes into the December book bin, were I allow anything goes!

After winnowing out all the older books, the Great Courses and Fiction books in my back catalog, I was left with fifty books the Science Book Club has never discussed and are at most ten years old. The are as follows:

  • [Medicine] The Case Against Sugar (Gary Taubes, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/384
  • [Sociology] God, No!: Signs You May Already Be an Atheist and Other Magical Tales (Penn Jillette, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/256
  • [Neurology] The Tale of the Dueling Neurosurgeons: The History of the Human Brain as Revealed by True Stories of Trauma, Madness, and Recovery (Sam Kean, 2014)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/416
  • [Neurology] The Tell-Tale Brain: A Neuroscientist’s Quest for What Makes Us Human (V. S. Ramachandran, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/384
  • [Mathematics] Naked Statistics: Stripping the Dread from the Data (Charles Wheelan, 2013)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/302
  • [Chemistry] The Girls of Atomic City: The Untold Story of the Women Who Helped Win World War II (Denise Kiernan, 2013)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/400
  • [Medicine] Get Well Soon: History’s Worst Plagues and the Heroes Who Fought Them (Jennifer Wright, 2017)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • [Neurology] Superintelligence: Paths, Dangers, Strategies (Nick Bostrom, 2014)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Ecology] Eaarth: Making a Life on a Tough New Planet (Bill McKibben, 2010)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/272
  • [Sociology] Attached: The New Science of Adult Attachment and How It Can Help You Find – and Keep – Love (Amir Levine, Rachel Heller, 2010)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Chemistry] The Radium Girls: The Dark Story of Americaโ€™s Shining Women (Kate Moore, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/496
  • [Biology] American Pharoah: The Untold Story of the Triple Crown Winner’s Legendary Rise (Joe Drape, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Technology] Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future (Ashlee Vance, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/400
  • [Astronomy] The 4-Percent Universe: Dark Matter, Dark Energy, and the Race to Discover the Rest of Reality (Richard Panek, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/297
  • [Physics] The Hunt for Vulcan: โ€ฆAnd How Albert Einstein Destroyed a Planet, Discovered Relativity, and Deciphered the Universe (Thomas Levenson, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/256
  • [Biology] The Hidden Life of Trees: What They Feel, How They Communicate – Discoveries from a Secret World (Peter Wohlleben, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/288
  • [Genetics] A Crack in Creation: Gene Editing and the Unthinkable Power to Control Evolution (Jennifer A. Doudna, Samuel H. Sternberg, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Physics] The Future of Humanity: Terraforming Mars, Interstellar Travel, Immortality, and Our Destiny Beyond Earth (Michio Kaku, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Technology] Soonish: Ten Emerging Technologies That’ll Improve and/or Ruin Everything (Kelly Weinersmith, Zach Weinersmith, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Neurology] Thinking in Bets: Making Smarter Decisions When You Don’t Have All the Facts (Annie Duke, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/288
  • [Mathematics] The Woman Who Smashed Codes: A True Story of Love, Spies, and the Unlikely Heroine who Outwitted America’s Enemies (Jason Fagone, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/464
  • [Medicine] Breasts: A Natural and Unnatural History (Florence Williams, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Technology] Army of None: Autonomous Weapons and the Future of War (Paul Scharre, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/448
  • [Chemistry] Atomic Adventures: Secret Islands, Forgotten N-Rays, and Isotopic Murder – A Journey into the Wild World of Nuclear Science (James Mahaffey, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/464
  • [Medicine] Pandoraโ€™s Lab: Seven Stories of Science Gone Wrong (Paul A. Offit, MD, 2017)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/288
  • [Medicine] Gut: The Inside Story of Our Body’s Most Underrated Organ (Giulia Enders, 2015)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/271
  • [Biology] American Wolf: A True Story of Survival and Obsession in the West (Nate Blakeslee, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/320
  • [Biology] Are We Smart Enough to Know How Smart Animals Are? (Frans de Waal, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Biology] The Triumph of Seeds: How Grains, Nuts, Kernels, Pulses & Pips Conquered the Plant Kingdom and Shaped Human History (Thor Hanson, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Mathematics] Superforecasting: The Art and Science of Prediction (Philip E. Tetlock, Dan Gardner, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Medicine] First Bite: How We Learn to Eat (Bee Wilson, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Medicine] Are u ok?: A Guide to Caring for Your Mental Health (Kati Morton LMFT, 2018)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/256
  • [Medicine] Ten Drugs: How Plants, Powders, and Pills Have Shaped the History of Medicine (Thomas Hager, 2019)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/320
  • [Physics] The Second Kind of Impossible: The Extraordinary Quest for a New Form of Matter (Paul Steinhardt, 2019)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/400
  • [Medicine] The Mystery of the Exploding Teeth: And Other Curiosities from the History of Medicine (Thomas Morris, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Sociology] Untrue: Why Nearly Everything We Believe About Women, Lust, and Infidelity Is Wrong and How the New Science Can Set Us Free (Wednesday Martin PhD, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/320
  • [Mathematics] Lost in Math: How Beauty Leads Physics Astray (Sabine Hossenfelder, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Neurology] The Upside of Irrationality: The Unexpected Benefits of Defying Logic at Work and at Home (Dan Ariely, 2010)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/334
  • [Medicine] Spillover: Animal Infections and the Next Human Pandemic (David Quammen, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/592
  • [Economics] Money: The Unauthorized Biography (Felix Martin, 2014)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • [Physics] The Science of Interstellar (Kip Thorne, 2014)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • [Ecology] The Omnivore’s Dilemma: Young Readers Edition (Michael Pollan, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/400
  • [Mathematics] Code Warriors: NSA’s Codebreakers and the Secret Intelligence War Against the Soviet Union (Stephen Budiansky, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/416
  • [Evolution] Homo Deus: A Brief History of Tomorrow (Yuval Noah Harari, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/464
  • [Medicine] Chernobyl: The History of a Nuclear Catastrophe (Serhii Plokhy, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/432
  • [Physics] The Order of Time (Carlo Rovelli, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/256
  • [Sociology] The Etymologicon: A Circular Stroll Through the Hidden Connections of the English Language (Mark Forsyth, 2012)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟFALSE/304
  • [Technology] The Design of Everyday Things: Revised and Expanded Edition (Donald A. Norman, 2013)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Medicine] Human Errors: A Panorama of Our Glitches, from Pointless Bones to Broken Genes (Nathan H. Lents, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/256
  • [Ecology] My Planet: Finding Humor in the Oddest Places (Mary Roach, 2013)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/160

I should explain here the shorthand I use to indicate the formats supported by each book. Unicode has icons for each of the formats as follows:

  • ๐Ÿ“–: Paperback
  • ๐Ÿ•ฎ: Hard Cover (Note, this Unicode Glyph doesn’t appear on all platforms)
  • ๐Ÿ’ป: eBook, such as Kindle
  • ๐Ÿ’ฟ: Audiobook, as in Audible
  • ๐Ÿข: The book is in the Library (this glyph, when present, contains a link to its entry in the Fairfax County Public Library card catalog)

The long and short of that is, to enter fifty new books into the nomination queue is a very tedious affair and took me so many hours yesterday, I forgot to post my note about TeslaOS 2020.20.5 on Thursday.

For the record, my fifty entries were appended to the end of the existing seventeen moniations already made or carried forward from the last poll. We are, therefore, in addition to the above, also considering the following books:

  • [Physics] Through Two Doors at Once: The Elegant Experiment That Captures the Enigma of Our Quantum Reality (Anil Ananthaswamy, 2018)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Genetics] Regenesis: How Synthetic Biology Will Reinvent Nature and Ourselves (George M. Church, Ed Regis, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿข/304
  • [Genetics] Brave Genius: A Scientist, a Philosopher, and Their Daring Adventures from the French Resistance to the Nobel Prize (Sean B. Carroll, 2013)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿข/592
  • [Biology] The Invention of Nature: Alexander von Humboldtโ€™s New World (Andrea Wulf, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/496
  • [Evolution] From Bacteria to Bach and Back: The Evolution of Minds (Daniel C. Dennett, 2017)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/496
  • [Technology] Bad Blood: Secrets and Lies in a Silicon Valley Startup (John Carreyrou, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Biology] The Plant Messiah: Adventures in Search of the World’s Rarest Species (Carlos Magdalena, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/272
  • [Sociology] Algorithms to Live By: The Computer Science of Human Decisions (Brian Christian, Tom Griffiths, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Ecology] The Uninhabitable Earth, Life after Warming (David Wallace-Wells, 2019)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/320
  • [Astronomy] The Skeptics’ Guide to the Universe: How to Know What’s Really Real in a World Increasingly Full of Fake (Steven Novella, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/512
  • [Health] How to Change Your Mind: What the New Science of Psychedelics Teaches Us About Consciousness, Dying, Addiction, Depression, and Transcendence (Michael Pollan, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/480
  • [Geology] Origins: How the Earth Shaped Human History (Lewis Dartnell, 2019)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/320
  • [Geology] The Ends of the World: Volcanic Apocalypses, Lethal Oceans, and Our Quest to Understand Earth’s Past Mass Extinctions (Peter Brannen, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/322
  • [Ecology] The Forest Unseen: A Year’s Watch in Nature (David George Haskell, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/268
  • [Ecology] The Songs of Trees: Stories from Nature’s Great Connectors (David George Haskell, 2017)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/304
  • [Biology] Never Home Alone: From Microbes to Millipedes, Camel Crickets, and Honeybees, the Natural History of Where We Live (Rob Dunn, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/323
  • [Genetics] The Gene: An Intimate History (Siddhartha Mukherjee, 2016)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/608

Thus, over the weekend, assuming no more last-minute nominations, I will be create a poll with sixty-seven entries, asking my members to rank them on a five-point system and then use those star rankings and member attendance history to calculate the top 10โ€“12 books and then generate our schedule through the summer of 2021โ€”with the exception of December.

As for the December, 2020 meeting, nineteen books from my back catalog didn’t satisfy my ten year or repeat criterion, and so I added them to the three books carried over from last December’s poll. The first three books are the ones carried over, the rest are from my back catalog.

  • Measuring Eternity: The Search for the Beginning of Time (Martin Gorst, 2001)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿข/352
  • How to Create a Mind: The Secret of Human Thought Revealed (Ray Kurzweil, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • (Fiction) The Witness Paradox: A Time Traveler Anthology (Martin Wilsey, TR Dillon, Jeffrey C. Jacobs, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ปFALSE/246
  • iWoz: How I Invented the Personal Computer and Had Fun Along the Way (Steve Wozniak, 2006)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/313
  • How the Mind Works (Steven Pinker, 1998)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/660
  • Origins: Fourteen Billion Years of Cosmic Evolution (Neil deGrasse Tyson, 2004)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • Fear Of Physics: A Guide For The Perplexed (Lawrence M. Krauss, 1993)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/224
  • The Elephant Whisperer: My Life with the Herd in the African Wild (Lawrence Anthony, Graham Spence, 2009)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/384
  • Mating in Captivity: Reconciling the Erotic & the Domestic (Esther Perel, 2006)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/272
  • The Invention of Air: A Story Of Science, Faith, Revolution, And The Birth Of America (Steven Johnson, 2008)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/272
  • Freakonomics [Revised and Expanded]: A Rogue Economist Explores the Hidden Side of Everything (Steven D. Levitt, Stephen J. Dubner, 2006)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • Parallel Worlds: A Journey Through Creation, Higher Dimensions, and the Future of the Cosmos (Michio Kaku, 2004)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/428
  • The Earth Moved: On the Remarkable Achievements of Earthworms (Amy Stewart, 2004)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/256
  • The Pleasure of Finding Things Out: The Best Short Works of Richard P. Feynman (Richard P. Feynman, 1999)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/270
  • Stiff: The Curious Lives of Human Cadavers (Mary Roach, 2003)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/303
  • Spook: Science Tackles the Afterlife (Mary Roach, 2005)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/311
  • Our Magnificent Bastard Tongue: The Untold History of English (John McWhorter, 2008)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/230
  • Apollo: The Race to the Moon (Charles Murray, Catherine Bly Cox, 1989)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/506
  • Silent Spring (Rachel Carson, 2002)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/400
  • Song for the Blue Ocean (Carl Safina, 1998)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/458
  • Billions & Billions: Thoughts on Life and Death at the Brink of the Millennium (Carl Sagan, 1997)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/244
  • The Demon-Haunted World: Science as a Candle in the Dark (Carl Sagan, 2008)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/457

So much reading, so little time! Can’t wait to hear what y’all want to read, my sapiosexual friends!

UPDATE 2020-04-10 21:30: I do encourage my Science Readers to retrieve all the information above, such the full title, all authors and their full names, what formats the books are in, a link to the library listing, the publication year and the page count, and post all this to the Meetup Message Board. I do this because I get an email notification every time someone posts there. It’s hard to get to, to be sure, but when I send the email reminding folks to nominate things, I do provide a direct link to the Message Board discussion.

It’s therefore sad that most of my members used the new Meetup Discussion list instead. I get no notifications of any kind when people post here so I was shocked to see, when I posted a link to this article, that in fact a lot of my members posted sketchy book information to that list. A few of the nominations were in the list, but fourteen were new, as far as I could tell.

Of course, not wanting to ignore my member’s wishes, I spent a few more hours today trying to add all their nominations to the list. There are now eighty nominations, thirteen more added.

  • [Medicine] The Body: A Guide for Occupants (Bill Bryson, 2019)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/464
  • [Technology] The Book of Why: The New Science of Cause and Effect (Judea Pearl, Dana Mackenzie, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/432
  • [Medicine] The Epigenetics Revolution: How Modern Biology Is Rewriting Our Understanding of Genetics, Disease, and Inheritance (Nessa Carey, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/352
  • [Evolution] Lamarck’s Revenge: How Epigenetics Is Revolutionizing Our Understanding of Evolution’s Past and Present (Peter Ward, 2018)๐Ÿ•ฎ๐Ÿ’ป๐Ÿข/288
  • [Biology] Aliens: The World’s Leading Scientists on the Search for Extraterrestrial Life (Jim Al-Khalili, 2017)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/240
  • [Physics] The World According to Physics (Jim Al-Khalili, 2020)๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟFALSE/336
  • [Physics] Paradox: The Nine Greatest Enigmas in Physics (Jim Al-Khalili, 2012)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/239
  • [Technology] What the Future Looks Like: Scientists Predict the Next Great Discoveriesโ€•and Reveal How Todayโ€™s Breakthroughs Are Already Shaping Our World (Jim Al-Khalili, 2018)๐Ÿ“–๐Ÿ’ป๐Ÿ’ฟFALSE/240
  • [Technology] The House of Wisdom: How Arabic Science Saved Ancient Knowledge and Gave Us the Renaissance (Jim Al-Khalili, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/336
  • [Medicine] Life on the Edge: The Coming of Age of Quantum Biology (Jim Al-Khalili, 2015)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/368
  • [Technology] An Optimist’s Tour of the Future: One Curious Man Sets Out to Answer What’s Next? (Mark Stevenson, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿข/384
  • [Technology] We Do Things Differently: The Outsiders Rebooting Our World (Mark Stevenson, 2018)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ปFALSE/304
  • [Physics] Our Mathematical Universe: My Quest for the Ultimate Nature of Reality (Max Tegmark, 2014)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/432

In addition to these thirteen, one more nomination was added to the December list because it’s a book we discussed in the group before.

  • The Hidden Reality: Parallel Universes and the Deep Laws of the Cosmos (Brian Greene, 2011)๐Ÿ“–๐Ÿ•ฎ๐Ÿ’ป๐Ÿ’ฟ๐Ÿข/384

Exhausted but still sapiosexual.

TeslaOS 2020.12.5, or so I’m told

Thursday, I was so busy with updating my Science Book Club book nominations list, which I will discuss Friday, that I forgot to transmit this piece on time. I have, however, fixed the release date to correspond to when it was relevant.

That out of the way, I am very excited about TeslaOS 2020.12.5. Well, I would be if I could access #CO2Fre. Unfortunately, I am disallowed from entering #CO2Fre because of fears that, after the scam service from last week because someone things everything in the world has SARS-CoV-2.

One thing I hear is that you can now view your Dash Cam on the big screen. So, what? I’ve been struggling to find the right and reliable USB storage device that can allow me to sync my recordings to my capacious Google Drive but am completed paralyzed when it comes to finding a replacement for my original, failed device that stopped working many months ago. I just wish there was an out-of-the-box solution that didn’t require external DC Power.

And I still haven’t figured out what Game Controller to get. If only there was an official list of supported devices.

As for actually stopping at Stop Signs and Stop Lights, that’s yet to be seen. I’ve not seen it mentioned on any sites about TeslaOS 2020.12.5, so I’m dubious it has that.

But, I guess I’ll find out next week.

All this is bad enough it it weren’t for the fact that I was originally scheduled to give a demonstration of my Tesla #Pใ†”D and all the new capabilities of the vehicle this weekend with the RVA Electric Vehicle association meetup on Saturday. I’m really hoping to switch this to next week as if we hold it on Saturday, I will be presenting #CO2Fre without #CO2Fre!

But at least there’s TeslaOS 2020.12.5, in theory.

TeslaOS 2020.12.5
Apparently, #CO2Fre is now running TeslaOS 2020.12.5. Unfortunately, I have no way of verifying this in the automobile or see what’s in the update as I’m prohibited from entering my vehicle until next Saturday because of unfounded fear of SARS-CoV-2 infection.

Still waiting to return to cruising on a cloudโ€ฆ

A Brief History of Everyone Who Ever Lived: The Human Story Retold Through Our Genes

When I was given permission to Telework, I was worried without the ninety or so minutes of time commuting each working day I’d never be able to read all twenty or more books I normally read in a year, or for that matter the next book following The Thing with Feathers: The Surprising Lives of Birds and What They Reveal About Being Human. But, rest assured, cleary I did and now I’m here to talk about it.

Adam Rutherford, no relation to Ernest, weaves an interesting survey of what Deoxyribonucleic Acid has contributed to our modern understanding of biology. He starts off talking about how humanity is like a braided stream, with genetic lines splitting and then re-emerging between Homo Neanderthalis, Homo Denisova, Homo Floresiensis, and other potential Hominin people lurking around Eurasia around the Wisconsin Glacial Period.

He then talks about how in ancient times, Europe was united under various different tribes, some coming from the East, some coming from the South, and how Europe was transformed by these migrations and that most Europeans today are descended from those Eastern Invaders and in that sense Europe was united long ago, when we were still in the Upper Paleolithic, until the advent of Agriculture in the Neolithic Age.

Next, Rutherford investigates the origin of the American Indian cultures. He tells the story of Kennewick Man in much detail and why it’s so hard to get American Indians to consent to being genetically sequenced. Despite these difficulties, he does show that American Indians all probably descent from a single migration over the Bering Strait and how the Inuit have genetic modifications for low oxygen environments, similar to the Tibetans.

The next part gets a little heady. The idea that we are all descended from Charlemagne isn’t too hard to believe but the idea that we could be descended from folks from the Andaman Islands or Australian Aborigines seems to be pushing it. When you think about it, the base logic is correct. Going back twenty generations you have over a million man great grandparents, and over thirty you have over a billion. Clearly, if each generation averages twenty years, in six thousand years time you do have in theory one billion ancestors, but as there wasn’t a billion people six thousand years ago, clearly there must be some inbreeding. Not necessarily first cousin inbreeding, but maybe seventh or eighth cousin a remove or two would be commonplace.

The problem is when you think that this implies that everyone alive back then who had a child must be your ancestor is a false premise. One can guess the amount of inbreeding, but in truth, it’s possible, and even probable, that the inbreeding is even tighter than the whole population of six thousand years ago. It seems more logical, even if the clusters of today are different than the population clusters from back then, that the Australians at least were isolated until 1606, when Europeans started coming there. With only four hundred years contact, I’m highly dubious I’m descended from a single Aborigine from six thousand years ago, despite many of those Aborigines having descendants alive today. Charlemagne, maybe, but not everyone who ever lived six thousand years ago.

I did, however, like the story of Richard โ…ข‘s discovery and it’s comparison to the insane idea that we could find Jack the Ripper in a used hankie. Great presentation of how to do bad and good science. The discussion of Francis Galton was also interesting, as there is stuff to admire the statistical genius with so much racism in his heart.

The topic of Race was an interesting one As Rutherford is half-South-Asian, I know that he would have suffered discrimination in the United Kingdom and of course feel for him. As a half-Jew, I have noted very little Jewish discrimination in the United States, apart from tourists from Europe, but when I do go to Europe, especially the farther East I go, I do notice a distinct hint of Anti-Semitism there. Nothing to write home about, just the random bloke who clearly has a problem with my nose.

However, I will say I think it’s excellent the way Rutherford points out there are more differences within race than there are distinguishing genetic characteristics within a race. I would, though, love to have red hairโ€”well, to be honest, I’d love to have any hair, but that’s another story.

The discussion of SNPs and GWAS. There’s a great discussion of why it’s so hard to find the causes of diseases. After all, it’s very unlikely a SNP change in a single protein expression will change a behavior. And even the known genetic defects can have gene modifiers. The discussion of how heritable certain characteristics are was also fascinating. And the definition of epigenetics was a great new wrinkle. The only element missing is the influence of the bacterial flora that also influences our behavior.

Finally, it was nice to ground us in what evolution can and cannot do. The HOX Genes discussion was fun, as I do like the idea of a HOX d2 gene added to make a great story. And also, it’s interesting that GWAS can’t find an evil gene. I still blame testosterone for much of the evil in the world, but clearly even that hormone can’t be the only element at the root of modern violence. Indeed, if we could eliminate child abuse, we would go a very long way to solving many of what ills our society.

In summary, genetics is a wonderful tool in the development of biological understanding, but I wonder just what our current trends in slow evolution will bring. Only time will tell.

A Brief History of Everyone Who Ever Lived: The Human Story Retold Through Our Genes
A Brief History of Everyone Who Ever Lived: The Human Story Retold Through Our Genes

Next up, The Remedy: Robert Koch, Arthur Conan Doyle, and the Quest to Cure Tuberculosis, another book without a commute, with three weeks to completeโ€ฆ

Hope to see you in person soon, my sapiosexual friends!

You can have any star you want, as long it is gold

One huge flaw with Google‘s iPhone app for Gmail is that it doesn’t support multiple star types. You are only allowed a gold star, while with the computer-based web interface, you can have many different colour stars, warning, and other alerts.

This is a huge oversight in the GMail app compounded by the fact that the applications like Safari, which allow the user to simulate Desktop browsing crash when you activate the standard web interface and try to select a star colour other than gold.

It used to be you could just open up a desktop browser session to manually set the star level but now even that doesn’t work and still the app can’t handle it.

Stars are a very useful aspect to GMail. With stars you can denote more than just that an email is important, but why it is important. For instance, I like to use the blue stars for coupons. I don’t want to mix coupons in with stars to indicate a SpamGourmet email address is about to expire.

This, in my opinion, is a major flaw to the Apple iOS GMail app and I hope someday they add an option to modify star type because I had to spend two hours today unable get my coveted blue star and ended up having to get out of bed and go to the computer just for this very simple action.

As a software, I know they could do better. As a software engineer, I may just end up doing better. Thanks to the Python interface to Google, I likely will do better.

So unless they want to hire me, bugger you, Google!

#CO2Fre come Home

Last week I mentioned my struggles about eliminating the squeak from #CO2Fre. Then, of course, I was forced into a one-room cell as a hypochondriac put me into lockdown. On Sunday, I was released. I would say I finally had a clean bill of health but the truth is I was always healthy and just had to deal with irrationality. But that’s yesterday’s story and today I want to talk about how I wanted to finally pick up #CO2Freโ€ฆ and couldn’t.

I got a ride to the Tyson’s Corner Service Center and used the Tesla app to find #CO2Fre. She was parked in the back, against the side of the building. I had to open it with my ancient iPhone 5S. We sanitized #CO2Fre and then my ride left. There was a large Tesla Model X in front of her. Much as I try to inch her out of the space, I can’t do it. I get within a couple centimeters of the car next to me only to have to give up as impossible.

Trapped #CO2Fre
#CO2Fre is trapped at the Tyco Blvd Tesla Dealership. Her service plan was agreed to, her repairs made, but she couldn’t escape the clutches of Tesla. ยฉ 2020, Jeffrey C. Jacobs.

I scanned the QR Code and indicated I was there for pickup. I also called Tesla and left a message. I told them I couldn’t move #CO2Fre and my key wasn’t inside. Then I asked my ride to return as I waited for the callback that never came. I figured it wouldn’t because it was Sunday, but then it never came on Monday either, so I was rather distressed.

Finally, I called them on Monday and they agreed to move #CO2Fre to an accessible area where I could pick her up Tuesday morning before opening. They also arranged where I could pick up the key. I just hope my ride wakes up in time. After all, she was also my jailerโ€ฆ

#CO2Fre Moved
#CO2Fre was moved on Monday to a location where she could be safely retrieved and finally come home.

Hopefully soon, I can get back to cruising on a cloud.