hCard microformat Validator (beta, of course)

This is an unofficial validator¹/conformance checker of the hCard microformat.

Po polsku En français
(translations welcome!)

Input

URL

Check entire XHTML or HTML page by entering its HTTP URL.

Fragment

Paste well-formed XHTML fragment or complete document containing hCard.

Upload

Upload HTML or XHTML file to validate it. For this to work your browser must be setting MIME types properly.

Example

If searching for hCards in the wild is tiring, check one of the test-cases:

Browse examples

API & Other

Any page by Referer

<a href="http://hcard.geekhood.net/referrer/">Validate hCards</a>

Bookmarklet

hCard?

RESTful JSON API

Send GET request to http://hcard.geekhood.net/?url=URL to validate&output=json.

Output will be roughly compatible with the Validator.nu JSON API. Likely to change in the future.

Please use this API for validation, not just as an converter/extraction tool.


Send Feedback

You can send feedback via e-mail or the form below.

If you're reporting a bug or have a suggestion, don't forget to include example hCard code.

Result

This document contains errors.

  1. hCard #1

    No issues found.

    Card source
    #max_kaehn
    GEO latitude
    37.38200
    longitude
    -122.02781
    Formatted name
    Max Rible Kaehn
    Name Honorific Prefix
    Mr.
    Given Name
    Max
    Additional Name
    Rible
    Family Name
    Kaehn
    Nickname
    Slothman
    Photo URL http://www.mithriltabby.com/images/usericon.jpeg
    URL http://www.mithriltabby.com/
  2. hCard #2

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #google
    Address Street
    1600 Plymouth Avenue
    State or Province
    California
    City
    Mountain View
    Postcode
    94043
    Country
    USA
    Formatted name
    Google, Inc.
    Organization Org. Name
    Google, Inc.
    Title
    Senior Software Engineer
    URL http://www.google.com
  3. hCard #3

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #electric-commander
    Address Street
    676 W. Maude Avenue
    State or Province
    California
    City
    Sunnyvale
    Postcode
    94086
    Country
    USA
    Formatted name
    Electric Cloud, Inc.
    Organization Org. Name
    Electric Cloud, Inc.
    Title
    Senior Software Engineer
    URL http://www.electric-cloud.com/
  4. hCard #4

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #electric-cloud
    Address Street
    676 W. Maude Avenue
    State or Province
    California
    City
    Sunnyvale
    Postcode
    94086
    Country
    USA
    Formatted name
    Electric Cloud, Inc.
    Organization Org. Name
    Electric Cloud, Inc.
    Title
    Senior Software Engineer
    URL http://www.electric-cloud.com/
  5. hCard #5

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #efi
    Address City
    Foster City
    Formatted name
    Electronics for Imaging
    Organization Org. Name
    Electronics for Imaging
    Title
    Lead Software Engineer
    URL http://www.efi.com/
  6. hCard #6

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #pico
    Address City
    Cupertino
    Formatted name
    Pico Communications Inc.
    Organization Org. Name
    Pico Communications Inc.
    Title
    Senior Staff Engineer
  7. hCard #7

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #covia
    Address City
    Mountain View
    Formatted name
    CoVia
    Organization Org. Name
    CoVia
    Title
    Computer Scientist
  8. hCard #8

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #quote.com
    Address City
    Mountain View
    Formatted name
    Quote.com, Inc.
    Organization Org. Name
    Quote.com, Inc.
    Title
    Applications Engineer
    URL http://www.quote.com/
  9. hCard #9

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #mpath
    Address City
    Cupertino
    Formatted name
    Mpath Interactive
    Organization Org. Name
    Mpath Interactive
    Title
    Member of Technical Staff
  10. hCard #10

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #verity
    Address City
    Mountain View
    Formatted name
    Verity, Inc.
    Organization Org. Name
    Verity, Inc.
    Title
    Software Author
    URL http://www.verity.com/
  11. hCard #11

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #petnet
    Formatted name
    Leonard X Bosack & Bette M Kruger Foundation
    Organization Org. Name
    Leonard X Bosack & Bette M Kruger Foundation
    Role
    Consultant
  12. hCard #12

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #digital_sound
    Address City
    Carpentería
    Formatted name
    Digital Sound Corporation
    Organization Org. Name
    Digital Sound Corporation
  13. hCard #13

    • Warn: n property is empty

      Check syntax. Remove property from document if it doesn't have (non-empty) value.

    • Warn: org+fn used, but names differ

      Although hCard uses org and fn together, the organization-name is not identical to fn and card may not be interpreted as company's card.

      More info

    Card source
    #lbl
    Formatted name
    Lawrence Berkeley Laboratory, Computer Graphics and Distributed Computing, Advanced Development Projects
    Organization Org. Name
    Lawrence Berkeley Laboratory
    Org. Unit
    Computer Graphics and Distributed Computing
    Title
    Student Assistant
    URL http://www.lbl.gov/
  14. hCard #14

    • Warn: n property is empty

      Check syntax. Remove property from document if it doesn't have (non-empty) value.

    • Warn: org+fn used, but names differ

      Although hCard uses org and fn together, the organization-name is not identical to fn and card may not be interpreted as company's card.

      More info

    Card source
    #ucsb
    Formatted name
    College of Creative Studies at the University of California at Santa Barbara
    Organization Org. Name
    University of California at Santa Barbara
    Org. Unit
    College of Creative Studies
    URL http://www.ccs.ucsb.edu/
  15. hCard #15

    • Warn: n property is empty

      Check syntax. Remove property from document if it doesn't have (non-empty) value.

    • Warn: org+fn used, but names differ

      Although hCard uses org and fn together, the organization-name is not identical to fn and card may not be interpreted as company's card.

      More info

    Card source
    #ucb
    Formatted name
    College of Engineering, UC Berkeley
    Organization Org. Name
    UC Berkeley
    Org. Unit
    College of Engineering
    URL http://www.coe.berkeley.edu/
  16. hCard #16

    • Info: This hCard describes organization or company

      org and fn used together imply that it is not a person.

      More info

    Card source
    #ahs
    Address City
    Albany
    Formatted name
    Albany High School
    Organization Org. Name
    Albany High School
    URL http://www.albany.k12.ca.us/ahs/

File source

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head profile="http://microformats.org/profile/specs/ http://microformats.org/profile/hresume"><title>Max Rible Kaehn’s résumé</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<!-- Specifying UTF-8 in the HTTP headers doesn't persuade IE to use UTF-8. -->
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
<link rel="icon" type="image/png" href="images/zonk16x16.png" />
<link rev="made" href="http://www.mithriltabby.com/" />
<script type="text/javascript" src="code.js">
<!-- Can't use <script/> because I have to be able to serve this up to
Internet Exploder as text/html. -->
</script>

<link rel="home start contents" href="/" />
<link rel="prev" href="vocation.xhtml" />
<link rel="next" href="avocation.xhtml" />
<link rel="pronunciation" href="lexicon.xml" />
<meta name="description" content="Max Rible Kaehn’s résumé" />
</head>
<body class="hresume">
<!-- hResume microformat: contact -->
<!-- hCard microformat -->
<div id="max_kaehn" class="contact vcard">
  <h1 style="margin-bottom: 0;">
    <span class="n">
      <span class="honorific-prefix hidden">Mr.</span>
        <a class="url" rel="me" href="http://www.mithriltabby.com/">
          <span class="fn">
            <span class="given-name">Max</span>
            <span class="additional-name">Rible</span>
            <span class="family-name">Kaehn</span>
          </span>
        </a>
      <span class="nickname hidden">Slothman</span>
    </span>
  </h1>
<!-- Obfuscating the email address to deter spam harvesters; this may break
     the Optimus microformat validator -->
  <p class="center" style="margin-top: 0;"><a 
class='email'
href 
= '	
&#x20;&#x6d;&#x61;i&#x6c;­&#x74;&#111;&#58;&#32;&#x25;73&#37;&#54;&#99;o&#x2­5;7&#x34;&#x25;68&#109;&#x61;&#x25;6&#x65;&#37;&#x­34;&#x30;&#109;%&#54;&#57;%7&#52;&#37;68r&#x25;&#5­4;&#x39;&#x6C;&#x25;74%&#x36;&#x31;bb&#x79;&#x25;&­#x32;&#x65;&#x25;6&#x33;o%6d?
'>s&#108;o&#x74;hm&#97;&#110;@&#x6D;i&#x74;<!--
mailto:abuse@hotmail.com
</a>
-->&shy;h&#x72;&#x69;&#108;­&#x74;&#97;&#x62;&#x62;&#x79;&#x2E;&#x63;om</a></p>
  <div style="display: none" class="geo">
    <abbr class="latitude" title="37.38200">37°22’55.0” N</abbr>,
    <abbr class="longitude" title="-122.02781">122°1’40.1” W</abbr>
  </div>
  <img style="display: none" class="photo" src="http://www.mithriltabby.com/images/usericon.jpeg" alt="hCard photo" />
</div> <!-- contact -->

<p><b>Career Objective:</b> <span class="objective">Software architect</span>.</p>

<h3>Skills</h3>

<p class="summary">Software generalist, experienced in learning new
technologies on very short notice. Able to work at all levels of
abstraction, taking software from mathematical specifications to
documentation.  Internet-based software and user interface design for
windowing applications a specialty; strong emphasis on object-oriented
design.  Strong expertise in cross-platform development (particularly
between Win32 and various breeds of Unix).</p>

<ul>

<!-- rel-tags are weird in that what really matters is the last element
of the path in the href, not the full target.  So we link to Wikipedia
for everything, instead of using http://www.tcl.tk/ for Tcl, etc.
-->
<li><b>Programming languages:</b>
<a href="http://en.wikipedia.org/wiki/C_(programming_language)" rel="tag external" class="skill">C</a>,
<a href="http://en.wikipedia.org/wiki/C%2B%2B" rel="tag external" class="skill">C++</a>
(<a href="http://en.wikipedia.org/wiki/Standard_Template_Library" rel="tag external" class="skill"><abbr title="Standard Template Library">STL</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Boost_C%2B%2B_Libraries" rel="tag external" class="skill">Boost</a>),
<a href="http://en.wikipedia.org/wiki/Java_(programming_language)" rel="tag external" class="skill">Java</a>,
<a href="http://en.wikipedia.org/wiki/Tcl" rel="tag external" class="skill">Tcl</a>,
<a href="http://en.wikipedia.org/wiki/JavaScript" rel="tag external" class="skill">JavaScript</a>,
<a href="http://en.wikipedia.org/wiki/Perl" rel="tag external" class="skill">Perl</a>,
<a href="http://en.wikipedia.org/wiki/AWK" rel="tag external" class="skill">awk</a>,
<a href="http://en.wikipedia.org/wiki/Bash" rel="tag external" class="skill">bash</a>,
<a href="http://en.wikipedia.org/wiki/Tcsh" rel="tag external" class="skill">tcsh</a><!-- Utterly out of date: AppleScript,
Forth,
Scheme,
assembly -->.</li>

<li><b>Operating systems:</b>
<a href="http://en.wikipedia.org/wiki/Unix" rel="tag external" class="skill">Unix</a>
(<a href="http://en.wikipedia.org/wiki/Linux" rel="tag external" class="skill">Linux</a>,
<a href="http://en.wikipedia.org/wiki/Solaris_Operating_System" rel="tag external" class="skill">Solaris</a>,
<a href="http://en.wikipedia.org/wiki/HP-UX" rel="tag external" class="skill">HP-UX</a>,
<a href="http://en.wikipedia.org/wiki/AIX_operating_system" rel="tag external" class="skill">AIX</a>),
<a href="http://en.wikipedia.org/wiki/Microsoft_Windows" rel="tag external">Windows</a>
(<a href="http://en.wikipedia.org/wiki/Windows_3.1x" rel="tag external" class="skill">3.1</a>,
<a href="http://en.wikipedia.org/wiki/Windows_95" rel="tag external" class="skill">95</a>,
<a href="http://en.wikipedia.org/wiki/Windows_NT" rel="tag external" class="skill">NT</a>,
<a href="http://en.wikipedia.org/wiki/Windows_2000" rel="tag external" class="skill">2000</a>,
<a href="http://en.wikipedia.org/wiki/Windows_XP" rel="tag external" class="skill">XP</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Server_2003">2003</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Vista" rel="tag external" class="skill">Vista</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Server_2008" rel="tag external" class="skill">2008</a>;
<a href="http://en.wikipedia.org/wiki/Cygwin" rel="tag external" class="skill">Cygwin</a>).  32- and 64-bit platforms.
<!-- Out of date:
Macintosh Systems 6-7.5, MS-DOS, UNICOS, CP/M --></li>

<!--
<li><b>Web servers</b>, plug-in design:
<a href="http://en.wikipedia.org/wiki/Netscape_Enterprise_Server" rel="tag external" class="skill">Netscape Enterprise Server</a>
(<a href="http://en.wikipedia.org/wiki/Netscape_Server_Applicati­on_Programming_Interface" rel="tag external" class="skill"><abbr title="Netscape Server Application Programming Interface">NSAPI</abbr></a>),
<a href="http://en.wikipedia.org/wiki/Internet_Information_Services" rel="tag external" class="skill">Microsoft Internet Information Server</a>
(<a href="http://en.wikipedia.org/wiki/Internet_Server_Applicati­on_Programming_Interface" rel="tag external" class="skill"><abbr title="Internet Server Application Programming Interface">ISAPI</abbr></a>),
<a href="http://en.wikipedia.org/wiki/Apache_HTTP_Server" rel="tag external" class="skill">Apache</a>
(<a href="http://en.wikipedia.org/wiki/Apache_Tomcat" rel="tag external" class="skill">Tomcat</a>).</li>
-->

<li><b>Compilers:</b>
<a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection" rel="tag external" class="skill">gcc</a>,
<a href="http://en.wikipedia.org/wiki/Visual_C%2B%2B" rel="tag external" class="skill">Visual C++</a>,
<a href="http://en.wikipedia.org/wiki/Sun_Studio_(software)" rel="tag external" class="skill">Sun Studio</a>,
<a href="http://en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler" rel="tag external" class="skill">Intel C++ compiler</a><!-- Out of date:
Metrowerks CodeWarrior 7 -->.</li>

<li><b>Development Tools:</b>
<a href="http://en.wikipedia.org/wiki/Emacs" rel="tag external" class="skill">Emacs</a>,
<a href="http://www.jetbrains.com/idea/" rel="tag external" class="skill">IntelliJ IDEA</a>,
<a href="http://en.wikipedia.org/wiki/Make_(software)" rel="tag external" class="skill">make</a>,
<a href="http://en.wikipedia.org/wiki/Apache_Ant" rel="tag external" class="skill">Ant</a>,
<a href="http://maven.apache.org/" rel="tag external" class="skill">Maven</a>,
<a href="http://en.wikipedia.org/wiki/Dbx_(debugger)" rel="tag external" class="skill">dbx</a>,
<a href="http://en.wikipedia.org/wiki/GNU_Debugger" rel="tag external" class="skill">gdb</a>,
<a href="http://en.wikipedia.org/wiki/Valgrind" rel="tag external" class="skill">valgrind</a>,
<a href="http://en.wikipedia.org/wiki/IBM_Rational_Purify" rel="tag external" class="skill">Purify</a>,
Quantify,
<a href="http://en.wikipedia.org/wiki/BoundsChecker" rel="tag external" class="skill">BoundsChecker</a>,
<a href="http://en.wikipedia.org/wiki/Gprof" rel="tag external" class="skill">gprof</a>,
<a href="http://en.wikipedia.org/wiki/Strace" rel="tag external" class="skill">strace</a>,
<a href="http://en.wikipedia.org/wiki/Truss_(Unix)" rel="tag external" class="skill">truss</a>,
<a href="http://en.wikipedia.org/wiki/Wireshark" rel="tag external" class="skill">Wireshark</a>,
<a href="http://en.wikipedia.org/wiki/Snoop_(software)" rel="tag external" class="skill">snoop</a>,
<a href="http://en.wikipedia.org/wiki/Perforce" rel="tag external" class="skill">Perforce</a>,
<a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System" rel="tag external" class="skill"><abbr title="Concurrent Versions System">CVS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/IBM_Rational_ClearCase" rel="tag external" class="skill">ClearCase</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe" rel="tag external" class="skill">SourceSafe</a>,
<a href="http://en.wikipedia.org/wiki/CppUnit" rel="tag external" class="skill">CppUnit</a>,
<a href="http://junit.org/" rel="tag external" class="skill">JUnit</a>,
<a href="https://code.google.com/p/mockito/" rel="tag external" class="skill">Mockito</a>,
<a href="http://docs.seleniumhq.org/" rel="tag external" class="skill">Selenium</a>,
tcltest.</li>

<li><b>Database technology:</b>
<a href="http://en.wikipedia.org/wiki/Metakit" rel="tag external" class="skill">Metakit</a>,
<a href="http://en.wikipedia.org/wiki/Versant_corporation" rel="tag external" class="skill">Versant</a>,
<a href="http://en.wikipedia.org/wiki/MySQL" rel="tag external" class="skill">MySQL</a>,
<a href="http://en.wikipedia.org/wiki/Oracle_Database" rel="tag external" class="skill">Oracle</a>,
<a href="http://en.wikipedia.org/wiki/Rogue_Wave_(company)" rel="tag external" class="skill">Rogue Wave dbtools.h++</a>.</li>

<li><b>Protocols:</b>
<a href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite" rel="tag external" class="skill"><abbr title="Transmission Control Protocol">TCP</abbr>/<abbr title="Internet Protocol">IP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" rel="tag external" class="skill"><abbr title="HyperText Transfer Protocol">HTTP</abbr></a>,
<a href="" rel="tag external" class="skill"><abbr title="Web Distributed Authoring and Versioning">WebDAV</abbr></a>,
<a href="" rel="tag external" class="skill"><abbr title="Wireless Application Protocol">WAP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol" rel="tag external" class="skill"><abbr title="Simple Network Management Protocol">SNMP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/RADIUS" rel="tag external" class="skill"><abbr title="Remote Authentication Dial In User Service">RADIUS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/TACACS%2B"><abbr title="Terminal Access Controller Access-Control System Plus">TACACS+</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol" rel="tag external" class="skill"><abbr title="Lightweight Directory Access Protocol">LDAP</abbr></a>.</li>

<li><b>Document production:</b>
<a href="http://en.wikipedia.org/wiki/Doxygen" rel="tag external" class="skill">Doxygen</a>,
<a href="http://en.wikipedia.org/wiki/XHTML" rel="tag external" class="skill"><abbr title="Extensible HyperText Markup Language">XHTML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/HTML" rel="tag external" class="skill"><abbr title="HyperText Markup Language">HTML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" rel="tag external" class="skill"><abbr title="Cascading Style Sheets">CSS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Wireless_Markup_Language" rel="tag external" class="skill"><abbr title="Wireless Markup Language">WML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/OpenOffice.org" rel="tag external" class="skill">OpenOffice</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Word" rel="tag external" class="skill">Word</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Visio" rel="tag external" class="skill">Visio</a>,
<a href="http://en.wikipedia.org/wiki/LaTeX" rel="tag external" class="skill">LaTeX</a>.
<!-- Too rusty to note:  troff, FrameMaker -->
<!-- Obsolete: PageMaker, Ventura Publisher -->
</li>

<li><b>Communication skills:</b>  excellent oral and written English, desktop 
publishing, team software development and documentation.</li>

<li><b>Citizenship:</b> United States of America.</li>

</ul>

<h3>Work Experience</h3>

<!-- In an hResume, each stretch of experience is an hCalendar event
containing an hCard.

Technically, I could use <a class="fn org url" href="...">Name</a> to get
the name for an organization, but Operator’s hResume processing can’t
figure that out.
-->

<table>

<tr id="google" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2014-03-18">3/14</abbr> – now
</td>

<td>
<b><a rel="external" class="url" href="http://www.google.com"><span class="org fn">Google, Inc.</span></a>,
<span class="adr">
<span style="display: none"><span class="street-address">1600 Plymouth Avenue</span>,</span>
<span class="locality">Mountain View</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94043</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>.</b>
Migrating data from legacy MySQL database to F1. Working in C++ and Python.
</td>

</tr>

<tr id="electric-commander" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2012-02-01">2/12</abbr> –
<abbr class="dtstart" title="2012-03-06">3/14</abbr>
</td>

<!-- The hCard standards says that
<object data="#max_kaehn" class="include"></object>
is technically correct, but it makes the validator plotz and some browsers
unhappy.
<a class="include hidden" href="#max_kaehn">Max Kaehn</a> is also a
possibility, but the validator doesn’t think much of it either.
-->

<td>
<b><a rel="external" class="url" href="http://www.electric-cloud.com/"><span class="org fn">Electric Cloud,
Inc.</span></a>,
<span class="adr">
<span style="display: none"><span class="street-address">676 W. Maude Avenue</span>,</span>
<span class="locality">Sunnyvale</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94086</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>,
ElectricCommander</b> (Java). Extended GWT uibinder to lay out widgets
created in-house. Trained in Class B Scrum. Created Java client for
our REST API (command line and bean) and integrated it with JavaScript
triggers via Apache Bean Scripting Framework in PTC
Integrity. Extended ssh-based remote install tool to use PowerShell on
Windows. Maintained and extended in-house continuous integration
suite.
</td>

</tr>

<tr id="electric-cloud" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2004-08-23">8/04</abbr> –
<abbr class="dtend" title="2012-01-31">1/12</abbr>
</td>

<!-- The hCard standards says that
<object data="#max_kaehn" class="include"></object>
is technically correct, but it makes the validator plotz and some browsers
unhappy.
<a class="include hidden" href="#max_kaehn">Max Kaehn</a> is also a
possibility, but the validator doesn’t think much of it either.
-->

<td>
<b><a rel="external" class="url" href="http://www.electric-cloud.com/"><span class="org fn">Electric Cloud,
Inc.</span></a>, Mountain View and then
<span class="adr">
<span style="display: none"><span class="street-address">676 W. Maude Avenue</span>,</span>
<span class="locality">Sunnyvale</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94086</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>, ElectricAccelerator</b> (C/C++). Dealt with
complexities of Windows ACLs, permissions, user authentication, window
stations, and desktops.  Added file system filter driver functionality to a
Windows file system driver and greatly increased driver compatibility with
NTFS and FAT32 behaviors; did some work in the Linux file system driver.
Dealt with conflicts caused in the field by third party drivers.  Created and
maintained unit tests for bugs fixed and features added.  Created integration
code for source control systems including ClearCase, Perforce, CVS, and
Subversion.  Solved problems with Cygwin internals and contributed code and
developer documentation to the Cygwin project.  Added ClearCase integration by
interfacing with the unsupported API shipped with the Linux installer.  Added
support for Unicode filesystems and Ant to the ElectricAccelerator product.
Created Unix filesystem monitors using FUSE and LD_PRELOAD intercept.</td>

</tr>

<tr id="efi" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2002-10">10/02</abbr>
–
<abbr class="dtend" title="2004-08-13">8/04</abbr>
</td>

<td><b><span class="fn org"><a rel="external" class="url"
href="http://www.efi.com/">Electronics for
Imaging</a></span>, <span class="adr"><span class="locality">Foster
City</span></span>.  <span class="title">Lead Software Engineer</span>.</b>
Designed, implemented, and documented cross-platform C++ abstraction layer to
hide differences between Win32 and Linux.  Wrote a C++ wrapper for
undocumented memory management API and used it as a framework for Doxygen
documentation.  Created a flexible multithreaded rule-based filter pipeline
for processing data streams.  Maintained and extended the build system
(written in GNU make), and converted several large legacy projects to the
current build system.</td>

</tr>

<tr id="pico" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2000-08">8/00</abbr>
–
<abbr class="dtend" title="2002-04">4/02</abbr>
</td>

<td><b><span class="fn org">Pico Communications Inc.</span> (formerly Easent Communications), <span class="adr"><span class="locality">Cupertino</span></span>.
<span class="title">Senior Staff Engineer</span>.</b> Wrote code to manage
Bluetooth-to-IP gateways and providing content for WAP and HTTP clients,
including a <q>man in the middle</q> TCP redirector to send a client’s first
outgoing HTTP connection to a page specified by the owner of the access point
and a sample Apache Tomcat module to generate a link to the client’s original
destination.  Set up CVS source control system, created scripts to perform
automated nightly builds for VxWorks Tornado.  Wrote RADIUS and TACACS+
clients and Cisco Discovery Protocol broadcaster for VxWorks.  Created SNMP
MIB to manage Bluetooth access point and implemented it using WindNet SNMP.
Created HTTP and TELNET servers for configuring access point.  Created
cross-platform (Win32/Linux) raw socket library for Java using JNI and
embedded it in a signed applet (with automated library installation) using a
Swing GUI.</td>

</tr>

<tr id="covia" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1998-07">7/98</abbr>
–
<abbr class="dtend" title="2000-07">7/00</abbr>
</td>

<td>
<b><span class="fn org">CoVia</span> (formerly Glyphica),
<span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Computer Scientist</span>.</b>
Built web server plugin tools for content management, using an API abstraction
layer (including a C++ streambuf implementation) to hide the difference
between NSAPI, ISAPI, and Apache.  Projects included HTML and PDF searching
and hit highlighting, a Class 2 WebDAV implementation, interfacing with
Windows NT, NIS+, and LDAP authentication protocols (via Netscape Directory
SDK), wiring an XML parser into the product, writing C++ modules to extend
server-side JavaScript functionality, and using undocumented XDR routines to
cache compiled JavaScript. Responsibilities included generating architectural
specifications, writing documentation, acting as technical liaison to our own
consulting staff and technical personnel at partner companies, administering
two Solaris systems, arranging all code to run under both Solaris and NT,
configuring the Cisco LocalDirector to balance loads across web servers, and
creating cross-platform libraries of utility classes.</td>

</tr>

<tr id="quote.com" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1997-02">2/97</abbr>
–
<abbr class="dtend" title="1998-07">7/98</abbr>
</td>

<td>
<b><a rel="external" class="url" href="http://www.quote.com/"><span class="fn org ">Quote.com, Inc.</span></a>
(later acquired by <a rel="external" href="http://www.lycos.com/">Lycos</a>),
Santa Clara and then <span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Applications Engineer</span>.</b>
Built tools using NSAPI to serve stock quote information over the web.
Created a great deal of documentation to help new hires orient themselves.
Created a client/server interface to an Oracle database, laying the groundwork
for caching frequently updated information.  Served as project lead
coordinating marketing and engineering to design and construct a client/server
system integrating Java applets in customer web browsers and a C++ server
infrastructure on site.  Inherited the news system when the previous
responsible engineer left, handling the issues of bringing twenty
heterogeneous sources of news articles into a central database; documented
unexplained code, produced (using Visio) a comprehensive diagram of
information flow and system usage in the news system, wrote tools to simplify
recovery from errors, improved error reporting and reliability, and created a
variety of solutions to pre-existing problems.</td>

</tr>

<tr id="mpath" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1996-02">2/96</abbr>
–
<abbr class="dtend" title="1997-02">2/97</abbr>
</td>

<td>
<b><span class="fn org">Mpath Interactive</span> (later HearMe),
<span class="adr"><span class="locality">Cupertino</span></span>.
<span class="title">Member of Technical Staff</span>.</b>
Built installers that upgraded existing games
to <a href="http://en.wikipedia.org/wiki/MPlayer.com"
rel="external">Mplayer</a> compatibility and walked novice users through the
process of upgrading their Windows 95 systems to connect to the Internet.
Designed flexible Unix-based multithreaded server stress-testing software to
simulate massive user loads and track down inconsistent operation.  Created
HTML documentation for internal libraries that was later used as reference
material for new development partners.</td>

</tr>

<tr id="verity" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1994-07">7/94</abbr>
–
<abbr class="dtend" title="1996-02">2/96</abbr>
</td>

<td>
<b><a rel="external" class="url" href="http://www.verity.com/"><span class="fn org">Verity, Inc.</span></a>,
<span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Software Author</span>.</b>

Designed cross-platform graphical front ends to Verity’s search
engine.  Created Motif applications running on four different breeds
of Unix, including hybrid make environment (using GNU make) and source
control scripts (in csh and perl); contributed to development of
Windows GUI applications on 3.1 and 95/NT.  Led project
(coordinating <a rel="external"
href="http://www.ibiblio.org/Dave/Dr-Fun/df9612/df961220.jpg">Mac and
Windows specialists</a>) creating C++ application frameworks for
cross-platform use on Unix, Macintosh, and Windows 95/NT; utilized
said frameworks in building a cross-platform Web browser-based search
application.  Documented internal tools and acted as liaison to
Documentation for projects I participated in.</td>

</tr>

<tr id="petnet" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1993-08">8/93</abbr>
–
<abbr class="dtend" title="1994-06">6/94</abbr>
</td>

<td><b>Consulting on the PetNet project of the <span class="fn
org">Leonard X Bosack &amp; Bette M Kruger Foundation</span></b>
(based in Redmond, WA though PetNet is in the San Francisco Bay Area).
<span class="role" style="display: none">Consultant</span> Full-time
work writing software under MS Windows and Novell NetWare in Microsoft
FoxPro and Visual C++ to computerize paper-oriented tasks in humane
societies and link databases together to permit wide-area searches.
Involved at all levels, from software specification through
programming and technical support to development of installation
software.</td>

</tr>

<tr id="digital_sound" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1990">1990</abbr>
–
<abbr class="dtend" title="1992">1992</abbr>
</td>

<td><b><span class="fn org">Digital Sound Corporation</span> (later
PulsePoint Communications, then acquired by <a rel="external"
href="http://www.unisys.com/">Unisys</a>), Santa Barbara and
<span class="adr"><span class="locality">Carpentería</span></span></b>
(speech synthesis and recognition research).  Full-time work during
three summers programming under X Windows, performing data analysis in
awk, software installation, and giving instructional presentations to
staff on using new software.</td>

</tr>

<tr id="lbl" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1987">1987</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td>
<span class="n fn org">
<b><a rel="external" class="url organization-name"
href="http://www.lbl.gov/">Lawrence Berkeley Laboratory</a>,
<span class="organization-unit">Computer Graphics and Distributed
Computing</span></b>, Advanced Development Projects
</span>.  Employed as a <span class="title">Student Assistant</span>
part-time during academic year and summers.  Helped develop SCRY
distributed movie making system.  Wrote libraries controlling a
Panasonic optical disk recorder connected to an IBM AT, level set
tessellation routines operating on 3-D data sets, and a SunView and X
Windows-compatible image processing tool for exploring and analyzing
two-dimensional grayscale images.</td>

</tr>
</table>

<h3>Education</h3>

<table>

<tr id="ucsb" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1989-09">1989</abbr>
–
<abbr class="dtend" title="1993-03">1993</abbr>
</td>

<td>BS in Physics from the
<span class="n fn org"><a rel="external" class="organization-unit url"
href="http://www.ccs.ucsb.edu/">College of Creative Studies</a> at
the <a rel="external" class="organization-name"
href="http://www.ucsb.edu/">University of California at Santa
Barbara</a></span>; graduated March ’93.</td>

</tr>

<tr id="ucb" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1988">1988</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td><a rel="external"
href="http://www.eecs.berkeley.edu/">Electrical
Engineering and Computer Science</a> major in the
<span class="n fn org"><a class="url organization-unit" rel="external"
href="http://www.coe.berkeley.edu/">College of
Engineering</a>, <a rel="external" class="organization-name"
href="http://www.berkeley.edu/">UC Berkeley</a></span>.  Completed 22
UC units via Accelerated High School Student Program (AHSSP),
including full lower-division curricula in mathematics, physics, and
computer science.</td>

</tr>

<tr id="ahs" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1985">1985</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td>
<a rel="external" class="url" href="http://www.albany.k12.ca.us/ahs/"><span class="fn org">Albany
High School</span></a>,
<span class="adr"><span class="locality">Albany</span>, CA</span>.
Honors included National Merit Finalist, Hertz Scholar (Fannie and
John Hertz Foundation), University of California Regents’ Scholar, and
Life Member of the California Scholarship Federation.</td>

</tr>

</table>

<div style="clear: both; padding-top: 1em;"></div>
<div class="flow"><a href="http://validator.w3.org/check?uri=referer"
      class="sprite" rel="external"
      style="border:0;width:88px;height:31px;background-position:0px -80px"
      title="Valid XHTML 1.1"><span class="hidden">Valid XHTML 1.1</span></a></div>
<div class="flow"><a href="http://jigsaw.w3.org/css-validator/check/referer/"
      class="sprite" rel="external"
      style="border:0;width:88px;height:31px;background-position:-100px -80px"
      title="Valid CSS!" ><span class="hidden">Valid CSS</span></a></div>
<div class="flow"><a href="http://www.google.com/chrome/" class="sprite"
      rel="external" style="border:0;width:32px;height:32px;background-position:-40px -160px" title="Get Chrome"><span class="hidden">Get Chrome</span></a></div>
<div class="flow"><a href="http://www.mozilla.org/firefox?WT.mc_id=aff_en04&amp;WT.mc_ev=click"
      class="sprite" rel="external"
      style="border:0;width:110­px;height:32px;background-position:-80px -160px"
      title="Get Firefox!"><span class="hidden">Get Firefox!</span></a></div>

<div class="flow"><a href="http://microformats.org/profile/hcard"
class="sprite" title="hCard" rel="external"
style="width:80px;height:15px;background-position:0px -40px;"></a></div>
<div class="flow"><a href="http://microformats.org/profile/hresume"
class="sprite" title="hResume" rel="external"
style="width:80px;height:15px;background-position:-100px -140px;"></a></div>

</body></html>

Parsed source

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head profile="http://microformats.org/profile/specs/ http://microformats.org/profile/hresume"><title>Max Rible Kaehn’s résumé</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<!-- Specifying UTF-8 in the HTTP headers doesn't persuade IE to use UTF-8. -->
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
<link rel="icon" type="image/png" href="images/zonk16x16.png"/>
<link rev="made" href="http://www.mithriltabby.com/"/>
<script type="text/javascript" src="code.js">
<!-- Can't use <script/> because I have to be able to serve this up to
Internet Exploder as text/html. -->
</script>

<link rel="home start contents" href="/"/>
<link rel="prev" href="vocation.xhtml"/>
<link rel="next" href="avocation.xhtml"/>
<link rel="pronunciation" href="lexicon.xml"/>
<meta name="description" content="Max Rible Kaehn’s résumé"/>
</head>
<body class="hresume">
<!-- hResume microformat: contact -->
<!-- hCard microformat -->
<div id="max_kaehn" class="contact vcard">
  <h1 style="margin-bottom: 0;">
    <span class="n">
      <span class="honorific-prefix hidden">Mr.</span>
        <a class="url" rel="me" href="http://www.mithriltabby.com/">
          <span class="fn">
            <span class="given-name">Max</span>
            <span class="additional-name">Rible</span>
            <span class="family-name">Kaehn</span>
          </span>
        </a>
      <span class="nickname hidden">Slothman</span>
    </span>
  </h1>
<!-- Obfuscating the email address to deter spam harvesters; this may break
     the Optimus microformat validator -->
  <p class="center" style="margin-top: 0;"><a class="email" href="   mailto: %73%6co%74%68ma%6e%40m%69­%74%68r%69l%74%61bby%2e%63o%6d? ">slothman@mit<!--
mailto:abuse@hotmail.com
</a>
-->hriltabby.com</a></p>
  <div style="display: none" class="geo">
    <abbr class="latitude" title="37.38200">37°22’55.0” N</abbr>,
    <abbr class="longitude" title="-122.02781">122°1’40.1” W</abbr>
  </div>
  <img style="display: none" class="photo" src="http://www.mithriltabby.com/images/usericon.jpeg" alt="hCard photo"/>
</div> <!-- contact -->

<p><b>Career Objective:</b> <span class="objective">Software architect</span>.</p>

<h3>Skills</h3>

<p class="summary">Software generalist, experienced in learning new
technologies on very short notice. Able to work at all levels of
abstraction, taking software from mathematical specifications to
documentation.  Internet-based software and user interface design for
windowing applications a specialty; strong emphasis on object-oriented
design.  Strong expertise in cross-platform development (particularly
between Win32 and various breeds of Unix).</p>

<ul>

<!-- rel-tags are weird in that what really matters is the last element
of the path in the href, not the full target.  So we link to Wikipedia
for everything, instead of using http://www.tcl.tk/ for Tcl, etc.
-->
<li><b>Programming languages:</b>
<a href="http://en.wikipedia.org/wiki/C_(programming_language)" rel="tag external" class="skill">C</a>,
<a href="http://en.wikipedia.org/wiki/C%2B%2B" rel="tag external" class="skill">C++</a>
(<a href="http://en.wikipedia.org/wiki/Standard_Template_Library" rel="tag external" class="skill"><abbr title="Standard Template Library">STL</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Boost_C%2B%2B_Libraries" rel="tag external" class="skill">Boost</a>),
<a href="http://en.wikipedia.org/wiki/Java_(programming_language)" rel="tag external" class="skill">Java</a>,
<a href="http://en.wikipedia.org/wiki/Tcl" rel="tag external" class="skill">Tcl</a>,
<a href="http://en.wikipedia.org/wiki/JavaScript" rel="tag external" class="skill">JavaScript</a>,
<a href="http://en.wikipedia.org/wiki/Perl" rel="tag external" class="skill">Perl</a>,
<a href="http://en.wikipedia.org/wiki/AWK" rel="tag external" class="skill">awk</a>,
<a href="http://en.wikipedia.org/wiki/Bash" rel="tag external" class="skill">bash</a>,
<a href="http://en.wikipedia.org/wiki/Tcsh" rel="tag external" class="skill">tcsh</a><!-- Utterly out of date: AppleScript,
Forth,
Scheme,
assembly -->.</li>

<li><b>Operating systems:</b>
<a href="http://en.wikipedia.org/wiki/Unix" rel="tag external" class="skill">Unix</a>
(<a href="http://en.wikipedia.org/wiki/Linux" rel="tag external" class="skill">Linux</a>,
<a href="http://en.wikipedia.org/wiki/Solaris_Operating_System" rel="tag external" class="skill">Solaris</a>,
<a href="http://en.wikipedia.org/wiki/HP-UX" rel="tag external" class="skill">HP-UX</a>,
<a href="http://en.wikipedia.org/wiki/AIX_operating_system" rel="tag external" class="skill">AIX</a>),
<a href="http://en.wikipedia.org/wiki/Microsoft_Windows" rel="tag external">Windows</a>
(<a href="http://en.wikipedia.org/wiki/Windows_3.1x" rel="tag external" class="skill">3.1</a>,
<a href="http://en.wikipedia.org/wiki/Windows_95" rel="tag external" class="skill">95</a>,
<a href="http://en.wikipedia.org/wiki/Windows_NT" rel="tag external" class="skill">NT</a>,
<a href="http://en.wikipedia.org/wiki/Windows_2000" rel="tag external" class="skill">2000</a>,
<a href="http://en.wikipedia.org/wiki/Windows_XP" rel="tag external" class="skill">XP</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Server_2003">2003</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Vista" rel="tag external" class="skill">Vista</a>,
<a href="http://en.wikipedia.org/wiki/Windows_Server_2008" rel="tag external" class="skill">2008</a>;
<a href="http://en.wikipedia.org/wiki/Cygwin" rel="tag external" class="skill">Cygwin</a>).  32- and 64-bit platforms.
<!-- Out of date:
Macintosh Systems 6-7.5, MS-DOS, UNICOS, CP/M --></li>

<!--
<li><b>Web servers</b>, plug-in design:
<a href="http://en.wikipedia.org/wiki/Netscape_Enterprise_Server" rel="tag external" class="skill">Netscape Enterprise Server</a>
(<a href="http://en.wikipedia.org/wiki/Netscape_Server_Applicati­on_Programming_Interface" rel="tag external" class="skill"><abbr title="Netscape Server Application Programming Interface">NSAPI</abbr></a>),
<a href="http://en.wikipedia.org/wiki/Internet_Information_Services" rel="tag external" class="skill">Microsoft Internet Information Server</a>
(<a href="http://en.wikipedia.org/wiki/Internet_Server_Applicati­on_Programming_Interface" rel="tag external" class="skill"><abbr title="Internet Server Application Programming Interface">ISAPI</abbr></a>),
<a href="http://en.wikipedia.org/wiki/Apache_HTTP_Server" rel="tag external" class="skill">Apache</a>
(<a href="http://en.wikipedia.org/wiki/Apache_Tomcat" rel="tag external" class="skill">Tomcat</a>).</li>
-->

<li><b>Compilers:</b>
<a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection" rel="tag external" class="skill">gcc</a>,
<a href="http://en.wikipedia.org/wiki/Visual_C%2B%2B" rel="tag external" class="skill">Visual C++</a>,
<a href="http://en.wikipedia.org/wiki/Sun_Studio_(software)" rel="tag external" class="skill">Sun Studio</a>,
<a href="http://en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler" rel="tag external" class="skill">Intel C++ compiler</a><!-- Out of date:
Metrowerks CodeWarrior 7 -->.</li>

<li><b>Development Tools:</b>
<a href="http://en.wikipedia.org/wiki/Emacs" rel="tag external" class="skill">Emacs</a>,
<a href="http://www.jetbrains.com/idea/" rel="tag external" class="skill">IntelliJ IDEA</a>,
<a href="http://en.wikipedia.org/wiki/Make_(software)" rel="tag external" class="skill">make</a>,
<a href="http://en.wikipedia.org/wiki/Apache_Ant" rel="tag external" class="skill">Ant</a>,
<a href="http://maven.apache.org/" rel="tag external" class="skill">Maven</a>,
<a href="http://en.wikipedia.org/wiki/Dbx_(debugger)" rel="tag external" class="skill">dbx</a>,
<a href="http://en.wikipedia.org/wiki/GNU_Debugger" rel="tag external" class="skill">gdb</a>,
<a href="http://en.wikipedia.org/wiki/Valgrind" rel="tag external" class="skill">valgrind</a>,
<a href="http://en.wikipedia.org/wiki/IBM_Rational_Purify" rel="tag external" class="skill">Purify</a>,
Quantify,
<a href="http://en.wikipedia.org/wiki/BoundsChecker" rel="tag external" class="skill">BoundsChecker</a>,
<a href="http://en.wikipedia.org/wiki/Gprof" rel="tag external" class="skill">gprof</a>,
<a href="http://en.wikipedia.org/wiki/Strace" rel="tag external" class="skill">strace</a>,
<a href="http://en.wikipedia.org/wiki/Truss_(Unix)" rel="tag external" class="skill">truss</a>,
<a href="http://en.wikipedia.org/wiki/Wireshark" rel="tag external" class="skill">Wireshark</a>,
<a href="http://en.wikipedia.org/wiki/Snoop_(software)" rel="tag external" class="skill">snoop</a>,
<a href="http://en.wikipedia.org/wiki/Perforce" rel="tag external" class="skill">Perforce</a>,
<a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System" rel="tag external" class="skill"><abbr title="Concurrent Versions System">CVS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/IBM_Rational_ClearCase" rel="tag external" class="skill">ClearCase</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe" rel="tag external" class="skill">SourceSafe</a>,
<a href="http://en.wikipedia.org/wiki/CppUnit" rel="tag external" class="skill">CppUnit</a>,
<a href="http://junit.org/" rel="tag external" class="skill">JUnit</a>,
<a href="https://code.google.com/p/mockito/" rel="tag external" class="skill">Mockito</a>,
<a href="http://docs.seleniumhq.org/" rel="tag external" class="skill">Selenium</a>,
tcltest.</li>

<li><b>Database technology:</b>
<a href="http://en.wikipedia.org/wiki/Metakit" rel="tag external" class="skill">Metakit</a>,
<a href="http://en.wikipedia.org/wiki/Versant_corporation" rel="tag external" class="skill">Versant</a>,
<a href="http://en.wikipedia.org/wiki/MySQL" rel="tag external" class="skill">MySQL</a>,
<a href="http://en.wikipedia.org/wiki/Oracle_Database" rel="tag external" class="skill">Oracle</a>,
<a href="http://en.wikipedia.org/wiki/Rogue_Wave_(company)" rel="tag external" class="skill">Rogue Wave dbtools.h++</a>.</li>

<li><b>Protocols:</b>
<a href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite" rel="tag external" class="skill"><abbr title="Transmission Control Protocol">TCP</abbr>/<abbr title="Internet Protocol">IP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" rel="tag external" class="skill"><abbr title="HyperText Transfer Protocol">HTTP</abbr></a>,
<a href="" rel="tag external" class="skill"><abbr title="Web Distributed Authoring and Versioning">WebDAV</abbr></a>,
<a href="" rel="tag external" class="skill"><abbr title="Wireless Application Protocol">WAP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol" rel="tag external" class="skill"><abbr title="Simple Network Management Protocol">SNMP</abbr></a>,
<a href="http://en.wikipedia.org/wiki/RADIUS" rel="tag external" class="skill"><abbr title="Remote Authentication Dial In User Service">RADIUS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/TACACS%2B"><abbr title="Terminal Access Controller Access-Control System Plus">TACACS+</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol" rel="tag external" class="skill"><abbr title="Lightweight Directory Access Protocol">LDAP</abbr></a>.</li>

<li><b>Document production:</b>
<a href="http://en.wikipedia.org/wiki/Doxygen" rel="tag external" class="skill">Doxygen</a>,
<a href="http://en.wikipedia.org/wiki/XHTML" rel="tag external" class="skill"><abbr title="Extensible HyperText Markup Language">XHTML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/HTML" rel="tag external" class="skill"><abbr title="HyperText Markup Language">HTML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" rel="tag external" class="skill"><abbr title="Cascading Style Sheets">CSS</abbr></a>,
<a href="http://en.wikipedia.org/wiki/Wireless_Markup_Language" rel="tag external" class="skill"><abbr title="Wireless Markup Language">WML</abbr></a>,
<a href="http://en.wikipedia.org/wiki/OpenOffice.org" rel="tag external" class="skill">OpenOffice</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Word" rel="tag external" class="skill">Word</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_Visio" rel="tag external" class="skill">Visio</a>,
<a href="http://en.wikipedia.org/wiki/LaTeX" rel="tag external" class="skill">LaTeX</a>.
<!-- Too rusty to note:  troff, FrameMaker -->
<!-- Obsolete: PageMaker, Ventura Publisher -->
</li>

<li><b>Communication skills:</b>  excellent oral and written English, desktop 
publishing, team software development and documentation.</li>

<li><b>Citizenship:</b> United States of America.</li>

</ul>

<h3>Work Experience</h3>

<!-- In an hResume, each stretch of experience is an hCalendar event
containing an hCard.

Technically, I could use <a class="fn org url" href="...">Name</a> to get
the name for an organization, but Operator’s hResume processing can’t
figure that out.
-->

<table>

<tr id="google" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2014-03-18">3/14</abbr> – now
</td>

<td>
<b><a rel="external" class="url" href="http://www.google.com"><span class="org fn">Google, Inc.</span></a>,
<span class="adr">
<span style="display: none"><span class="street-address">1600 Plymouth Avenue</span>,</span>
<span class="locality">Mountain View</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94043</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>.</b>
Migrating data from legacy MySQL database to F1. Working in C++ and Python.
</td>

</tr>

<tr id="electric-commander" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2012-02-01">2/12</abbr> –
<abbr class="dtstart" title="2012-03-06">3/14</abbr>
</td>

<!-- The hCard standards says that
<object data="#max_kaehn" class="include"></object>
is technically correct, but it makes the validator plotz and some browsers
unhappy.
<a class="include hidden" href="#max_kaehn">Max Kaehn</a> is also a
possibility, but the validator doesn’t think much of it either.
-->

<td>
<b><a rel="external" class="url" href="http://www.electric-cloud.com/"><span class="org fn">Electric Cloud,
Inc.</span></a>,
<span class="adr">
<span style="display: none"><span class="street-address">676 W. Maude Avenue</span>,</span>
<span class="locality">Sunnyvale</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94086</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>,
ElectricCommander</b> (Java). Extended GWT uibinder to lay out widgets
created in-house. Trained in Class B Scrum. Created Java client for
our REST API (command line and bean) and integrated it with JavaScript
triggers via Apache Bean Scripting Framework in PTC
Integrity. Extended ssh-based remote install tool to use PowerShell on
Windows. Maintained and extended in-house continuous integration
suite.
</td>

</tr>

<tr id="electric-cloud" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2004-08-23">8/04</abbr> –
<abbr class="dtend" title="2012-01-31">1/12</abbr>
</td>

<!-- The hCard standards says that
<object data="#max_kaehn" class="include"></object>
is technically correct, but it makes the validator plotz and some browsers
unhappy.
<a class="include hidden" href="#max_kaehn">Max Kaehn</a> is also a
possibility, but the validator doesn’t think much of it either.
-->

<td>
<b><a rel="external" class="url" href="http://www.electric-cloud.com/"><span class="org fn">Electric Cloud,
Inc.</span></a>, Mountain View and then
<span class="adr">
<span style="display: none"><span class="street-address">676 W. Maude Avenue</span>,</span>
<span class="locality">Sunnyvale</span>,
<abbr class="region" title="California">CA</abbr><span style="display: none">,
<span class="postal-code">94086</span>,
<abbr class="country-name" title="USA">USA</abbr>
</span></span>.
<span class="title">Senior Software Engineer</span>, ElectricAccelerator</b> (C/C++). Dealt with
complexities of Windows ACLs, permissions, user authentication, window
stations, and desktops.  Added file system filter driver functionality to a
Windows file system driver and greatly increased driver compatibility with
NTFS and FAT32 behaviors; did some work in the Linux file system driver.
Dealt with conflicts caused in the field by third party drivers.  Created and
maintained unit tests for bugs fixed and features added.  Created integration
code for source control systems including ClearCase, Perforce, CVS, and
Subversion.  Solved problems with Cygwin internals and contributed code and
developer documentation to the Cygwin project.  Added ClearCase integration by
interfacing with the unsupported API shipped with the Linux installer.  Added
support for Unicode filesystems and Ant to the ElectricAccelerator product.
Created Unix filesystem monitors using FUSE and LD_PRELOAD intercept.</td>

</tr>

<tr id="efi" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2002-10">10/02</abbr>
–
<abbr class="dtend" title="2004-08-13">8/04</abbr>
</td>

<td><b><span class="fn org"><a rel="external" class="url" href="http://www.efi.com/">Electronics for
Imaging</a></span>, <span class="adr"><span class="locality">Foster
City</span></span>.  <span class="title">Lead Software Engineer</span>.</b>
Designed, implemented, and documented cross-platform C++ abstraction layer to
hide differences between Win32 and Linux.  Wrote a C++ wrapper for
undocumented memory management API and used it as a framework for Doxygen
documentation.  Created a flexible multithreaded rule-based filter pipeline
for processing data streams.  Maintained and extended the build system
(written in GNU make), and converted several large legacy projects to the
current build system.</td>

</tr>

<tr id="pico" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="2000-08">8/00</abbr>
–
<abbr class="dtend" title="2002-04">4/02</abbr>
</td>

<td><b><span class="fn org">Pico Communications Inc.</span> (formerly Easent Communications), <span class="adr"><span class="locality">Cupertino</span></span>.
<span class="title">Senior Staff Engineer</span>.</b> Wrote code to manage
Bluetooth-to-IP gateways and providing content for WAP and HTTP clients,
including a <q>man in the middle</q> TCP redirector to send a client’s first
outgoing HTTP connection to a page specified by the owner of the access point
and a sample Apache Tomcat module to generate a link to the client’s original
destination.  Set up CVS source control system, created scripts to perform
automated nightly builds for VxWorks Tornado.  Wrote RADIUS and TACACS+
clients and Cisco Discovery Protocol broadcaster for VxWorks.  Created SNMP
MIB to manage Bluetooth access point and implemented it using WindNet SNMP.
Created HTTP and TELNET servers for configuring access point.  Created
cross-platform (Win32/Linux) raw socket library for Java using JNI and
embedded it in a signed applet (with automated library installation) using a
Swing GUI.</td>

</tr>

<tr id="covia" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1998-07">7/98</abbr>
–
<abbr class="dtend" title="2000-07">7/00</abbr>
</td>

<td>
<b><span class="fn org">CoVia</span> (formerly Glyphica),
<span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Computer Scientist</span>.</b>
Built web server plugin tools for content management, using an API abstraction
layer (including a C++ streambuf implementation) to hide the difference
between NSAPI, ISAPI, and Apache.  Projects included HTML and PDF searching
and hit highlighting, a Class 2 WebDAV implementation, interfacing with
Windows NT, NIS+, and LDAP authentication protocols (via Netscape Directory
SDK), wiring an XML parser into the product, writing C++ modules to extend
server-side JavaScript functionality, and using undocumented XDR routines to
cache compiled JavaScript. Responsibilities included generating architectural
specifications, writing documentation, acting as technical liaison to our own
consulting staff and technical personnel at partner companies, administering
two Solaris systems, arranging all code to run under both Solaris and NT,
configuring the Cisco LocalDirector to balance loads across web servers, and
creating cross-platform libraries of utility classes.</td>

</tr>

<tr id="quote.com" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1997-02">2/97</abbr>
–
<abbr class="dtend" title="1998-07">7/98</abbr>
</td>

<td>
<b><a rel="external" class="url" href="http://www.quote.com/"><span class="fn org ">Quote.com, Inc.</span></a>
(later acquired by <a rel="external" href="http://www.lycos.com/">Lycos</a>),
Santa Clara and then <span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Applications Engineer</span>.</b>
Built tools using NSAPI to serve stock quote information over the web.
Created a great deal of documentation to help new hires orient themselves.
Created a client/server interface to an Oracle database, laying the groundwork
for caching frequently updated information.  Served as project lead
coordinating marketing and engineering to design and construct a client/server
system integrating Java applets in customer web browsers and a C++ server
infrastructure on site.  Inherited the news system when the previous
responsible engineer left, handling the issues of bringing twenty
heterogeneous sources of news articles into a central database; documented
unexplained code, produced (using Visio) a comprehensive diagram of
information flow and system usage in the news system, wrote tools to simplify
recovery from errors, improved error reporting and reliability, and created a
variety of solutions to pre-existing problems.</td>

</tr>

<tr id="mpath" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1996-02">2/96</abbr>
–
<abbr class="dtend" title="1997-02">2/97</abbr>
</td>

<td>
<b><span class="fn org">Mpath Interactive</span> (later HearMe),
<span class="adr"><span class="locality">Cupertino</span></span>.
<span class="title">Member of Technical Staff</span>.</b>
Built installers that upgraded existing games
to <a href="http://en.wikipedia.org/wiki/MPlayer.com" rel="external">Mplayer</a> compatibility and walked novice users through the
process of upgrading their Windows 95 systems to connect to the Internet.
Designed flexible Unix-based multithreaded server stress-testing software to
simulate massive user loads and track down inconsistent operation.  Created
HTML documentation for internal libraries that was later used as reference
material for new development partners.</td>

</tr>

<tr id="verity" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1994-07">7/94</abbr>
–
<abbr class="dtend" title="1996-02">2/96</abbr>
</td>

<td>
<b><a rel="external" class="url" href="http://www.verity.com/"><span class="fn org">Verity, Inc.</span></a>,
<span class="adr"><span class="locality">Mountain View</span></span>.
<span class="title">Software Author</span>.</b>

Designed cross-platform graphical front ends to Verity’s search
engine.  Created Motif applications running on four different breeds
of Unix, including hybrid make environment (using GNU make) and source
control scripts (in csh and perl); contributed to development of
Windows GUI applications on 3.1 and 95/NT.  Led project
(coordinating <a rel="external" href="http://www.ibiblio.org/Dave/Dr-Fun/df9612/df961220.jpg">Mac and
Windows specialists</a>) creating C++ application frameworks for
cross-platform use on Unix, Macintosh, and Windows 95/NT; utilized
said frameworks in building a cross-platform Web browser-based search
application.  Documented internal tools and acted as liaison to
Documentation for projects I participated in.</td>

</tr>

<tr id="petnet" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1993-08">8/93</abbr>
–
<abbr class="dtend" title="1994-06">6/94</abbr>
</td>

<td><b>Consulting on the PetNet project of the <span class="fn org">Leonard X Bosack &amp; Bette M Kruger Foundation</span></b>
(based in Redmond, WA though PetNet is in the San Francisco Bay Area).
<span class="role" style="display: none">Consultant</span> Full-time
work writing software under MS Windows and Novell NetWare in Microsoft
FoxPro and Visual C++ to computerize paper-oriented tasks in humane
societies and link databases together to permit wide-area searches.
Involved at all levels, from software specification through
programming and technical support to development of installation
software.</td>

</tr>

<tr id="digital_sound" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1990">1990</abbr>
–
<abbr class="dtend" title="1992">1992</abbr>
</td>

<td><b><span class="fn org">Digital Sound Corporation</span> (later
PulsePoint Communications, then acquired by <a rel="external" href="http://www.unisys.com/">Unisys</a>), Santa Barbara and
<span class="adr"><span class="locality">Carpentería</span></span></b>
(speech synthesis and recognition research).  Full-time work during
three summers programming under X Windows, performing data analysis in
awk, software installation, and giving instructional presentations to
staff on using new software.</td>

</tr>

<tr id="lbl" class="experience vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1987">1987</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td>
<span class="n fn org">
<b><a rel="external" class="url organization-name" href="http://www.lbl.gov/">Lawrence Berkeley Laboratory</a>,
<span class="organization-unit">Computer Graphics and Distributed
Computing</span></b>, Advanced Development Projects
</span>.  Employed as a <span class="title">Student Assistant</span>
part-time during academic year and summers.  Helped develop SCRY
distributed movie making system.  Wrote libraries controlling a
Panasonic optical disk recorder connected to an IBM AT, level set
tessellation routines operating on 3-D data sets, and a SunView and X
Windows-compatible image processing tool for exploring and analyzing
two-dimensional grayscale images.</td>

</tr>
</table>

<h3>Education</h3>

<table>

<tr id="ucsb" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1989-09">1989</abbr>
–
<abbr class="dtend" title="1993-03">1993</abbr>
</td>

<td>BS in Physics from the
<span class="n fn org"><a rel="external" class="organization-unit url" href="http://www.ccs.ucsb.edu/">College of Creative Studies</a> at
the <a rel="external" class="organization-name" href="http://www.ucsb.edu/">University of California at Santa
Barbara</a></span>; graduated March ’93.</td>

</tr>

<tr id="ucb" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1988">1988</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td><a rel="external" href="http://www.eecs.berkeley.edu/">Electrical
Engineering and Computer Science</a> major in the
<span class="n fn org"><a class="url organization-unit" rel="external" href="http://www.coe.berkeley.edu/">College of
Engineering</a>, <a rel="external" class="organization-name" href="http://www.berkeley.edu/">UC Berkeley</a></span>.  Completed 22
UC units via Accelerated High School Student Program (AHSSP),
including full lower-division curricula in mathematics, physics, and
computer science.</td>

</tr>

<tr id="ahs" class="education vevent vcard">

<td class="daterange">
<abbr class="dtstart" title="1985">1985</abbr>
–
<abbr class="dtend" title="1989">1989</abbr>
</td>

<td>
<a rel="external" class="url" href="http://www.albany.k12.ca.us/ahs/"><span class="fn org">Albany
High School</span></a>,
<span class="adr"><span class="locality">Albany</span>, CA</span>.
Honors included National Merit Finalist, Hertz Scholar (Fannie and
John Hertz Foundation), University of California Regents’ Scholar, and
Life Member of the California Scholarship Federation.</td>

</tr>

</table>

<div style="clear: both; padding-top: 1em;"/>
<div class="flow"><a href="http://validator.w3.org/check?uri=referer" class="sprite" rel="external" style="border:0;width:88px;height:31px;background-position:0px -80px" title="Valid XHTML 1.1"><span class="hidden">Valid XHTML 1.1</span></a></div>
<div class="flow"><a href="http://jigsaw.w3.org/css-validator/check/referer/" class="sprite" rel="external" style="border:0;width:88px;height:31px;background-position:-100px -80px" title="Valid CSS!"><span class="hidden">Valid CSS</span></a></div>
<div class="flow"><a href="http://www.google.com/chrome/" class="sprite" rel="external" style="border:0;width:32px;height:32px;background-position:-40px -160px" title="Get Chrome"><span class="hidden">Get Chrome</span></a></div>
<div class="flow"><a href="http://www.mozilla.org/firefox?WT.mc_id=aff_en04&amp;WT.mc_ev=click" class="sprite" rel="external" style="border:0;width:110­px;height:32px;background-position:-80px -160px" title="Get Firefox!"><span class="hidden">Get Firefox!</span></a></div>

<div class="flow"><a href="http://microformats.org/profile/hcard" class="sprite" title="hCard" rel="external" style="width:80px;height:15px;background-position:0px -40px;"/></div>
<div class="flow"><a href="http://microformats.org/profile/hresume" class="sprite" title="hResume" rel="external" style="width:80px;height:15px;background-position:-100px -140px;"/></div>

</body></html>

Credits

Written by . Icons are from Tango Icon Library. Test cases include hCard Acid test by Dmitry Baranovskiy, examples from microformats.org and hCard test suite.

Source code is available under the BSD license.


¹ It's not a validator in the XML/SGML sense.