Created
March 23, 2013 03:37
-
-
Save cwgem/5226333 to your computer and use it in GitHub Desktop.
AsciiDoc output before and after cleaning up the XHTML output config file. `-a linkcss -a stylesdir=/css -a disable-javascript` asciidoc options do a majority of the <head> cleanup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!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> | |
| <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> | |
| <meta name="generator" content="AsciiDoc 8.6.8" /> | |
| <title>The Personal Site of Chris White (cwgem)</title> | |
| <link rel="stylesheet" href="/css/reset.css" type="text/css" /> | |
| <link rel="stylesheet" href="/css/modern.css" type="text/css" /> | |
| <link rel="stylesheet" href="/css/pygments.css" type="text/css" /> | |
| </head> | |
| <body class="article"> | |
| <div id="header"> | |
| <h1>The Personal Site of Chris White (cwgem)</h1> | |
| </div> | |
| <div id="content"> | |
| <h2 id="_introduction" class="sect1">Introduction</h2> | |
| <p class="paragraph">Hello and welcome to my personal site hosted on <a href="http://pages.github.com">GitHub pages</a>. My name is Chris White and I work as a software engineer at <a href="http://www.engineyard.com">EngineYard</a>. I utilize a number of tools to get the job done, including <a href="http://www.perl.org">Perl</a>, <a href="http://www.python.org">Python</a>, and <a href="http://www.ruby-lang.org">Ruby</a>. Recently I started to look into <a href="http://www.erlang.org">Erlang</a> for API services. When I’m not programming I study Japanese, and hope to live and work there someday. My main open source project I work with is <a href="https://rvm.io">RVM</a>. Here’s where you can find me:</p> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="https://github.com/cwgem">GitHub</a> | |
| </li> | |
| <li> | |
| <a href="https://www.twitter.com/cwgem">Twitter</a> | |
| </li> | |
| <li> | |
| <a href="http://www.linkedin.com/pub/chris-white/1/760/884/">LinkedIn</a> | |
| </li> | |
| <li> | |
| Email: cwprogram - live - com | |
| </li> | |
| </ul> | |
| <h2 id="_articles" class="sect1">Articles</h2> | |
| <h3 id="_security" class="sect2">Security</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/security/talk-on-security-process.html">A Talk On Security Process</a> | |
| </li> | |
| <li> | |
| <a href="/security/secure-workstation.html">The Secure Workstation</a> | |
| </li> | |
| <li> | |
| <a href="/security/balanced-security.html">Balanaced Security</a> | |
| </li> | |
| </ul> | |
| <h3 id="_git" class="sect2">Git</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/git/git-force.html">On git push --force</a> | |
| </li> | |
| <li> | |
| <a href="/git/git-rebase-fixing.html">Git Rebase Fixing</a> | |
| </li> | |
| </ul> | |
| <h3 id="_python" class="sect2">Python</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/python/class-methods-and-self.html">Python Class Methods and self</a> | |
| </li> | |
| </ul> | |
| <h3 id="_society" class="sect2">Society</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/society/racism-and-sexism.html">Racism and Sexism</a> | |
| </li> | |
| <li> | |
| <a href="/society/google-readers-bigger-problem.html">Google Reader’s Bigger Problem</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div id="footer"> | |
| <p id="footer-text"> | |
| Last updated 2013-03-22 09:29:30 PDT | |
| </p> | |
| <div id="footer-badges"> | |
| <a href="http://validator.w3.org/check?uri=referer"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://www.w3.org/Icons/valid-xhtml11-blue" | |
| alt="Valid XHTML 1.1" height="31" width="88" /> | |
| </a> | |
| <a href="http://jigsaw.w3.org/css-validator/"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://jigsaw.w3.org/css-validator/images/vcss-blue" | |
| alt="Valid CSS!" /> | |
| </a> | |
| <a rel="license" href="http://creativecommons.org/licenses/by/3.0/us/"> | |
| <img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/us/88x31.png" /> | |
| </a> | |
| </div> | |
| </div> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!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> | |
| <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> | |
| <meta name="generator" content="AsciiDoc 8.6.8" /> | |
| <title>The Personal Site of Chris White (cwgem)</title> | |
| <style type="text/css"> | |
| /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ | |
| /* Default font. */ | |
| body { | |
| font-family: Georgia,serif; | |
| } | |
| /* Title font. */ | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Arial,Helvetica,sans-serif; | |
| } | |
| body { | |
| margin: 1em 5% 1em 5%; | |
| } | |
| a { | |
| color: blue; | |
| text-decoration: underline; | |
| } | |
| a:visited { | |
| color: fuchsia; | |
| } | |
| em { | |
| font-style: italic; | |
| color: navy; | |
| } | |
| strong { | |
| font-weight: bold; | |
| color: #083194; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| color: #527bbd; | |
| margin-top: 1.2em; | |
| margin-bottom: 0.5em; | |
| line-height: 1.3; | |
| } | |
| h1, h2, h3 { | |
| border-bottom: 2px solid silver; | |
| } | |
| h2 { | |
| padding-top: 0.5em; | |
| } | |
| h3 { | |
| float: left; | |
| } | |
| h3 + * { | |
| clear: left; | |
| } | |
| h5 { | |
| font-size: 1.0em; | |
| } | |
| div.sectionbody { | |
| margin-left: 0; | |
| } | |
| hr { | |
| border: 1px solid silver; | |
| } | |
| p { | |
| margin-top: 0.5em; | |
| margin-bottom: 0.5em; | |
| } | |
| ul, ol, li > p { | |
| margin-top: 0; | |
| } | |
| ul > li { color: #3E4349; } | |
| pre { | |
| padding: 0; | |
| margin: 0; | |
| } | |
| #author { | |
| color: #527bbd; | |
| font-weight: bold; | |
| font-size: 1.1em; | |
| } | |
| #email { | |
| } | |
| #revnumber, #revdate, #revremark { | |
| } | |
| #footer { | |
| font-size: small; | |
| border-top: 2px solid silver; | |
| padding-top: 0.5em; | |
| margin-top: 4.0em; | |
| } | |
| #footer-text { | |
| float: left; | |
| padding-bottom: 0.5em; | |
| } | |
| #footer-badges { | |
| float: right; | |
| padding-bottom: 0.5em; | |
| } | |
| #preamble { | |
| margin-top: 1.5em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.imageblock, div.exampleblock, div.verseblock, | |
| div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
| div.admonitionblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.admonitionblock { | |
| margin-top: 2.0em; | |
| margin-bottom: 2.0em; | |
| margin-right: 10%; | |
| color: #606060; | |
| } | |
| div.content { /* Block element content. */ | |
| padding: 0; | |
| } | |
| /* Block element titles. */ | |
| div.title, caption.title { | |
| color: #527bbd; | |
| font-weight: bold; | |
| text-align: left; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.5em; | |
| } | |
| div.title + * { | |
| margin-top: 0; | |
| } | |
| td div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content + div.title { | |
| margin-top: 0.0em; | |
| } | |
| div.sidebarblock > div.content { | |
| background: #ffffee; | |
| border: 1px solid #dddddd; | |
| border-left: 4px solid #f0f0f0; | |
| padding: 0.5em; | |
| } | |
| div.listingblock > div.content { | |
| border: 1px solid #dddddd; | |
| border-left: 5px solid #f0f0f0; | |
| background: #f8f8f8; | |
| padding: 0.5em; | |
| } | |
| div.quoteblock, div.verseblock { | |
| padding-left: 1.0em; | |
| margin-left: 1.0em; | |
| margin-right: 10%; | |
| border-left: 5px solid #f0f0f0; | |
| color: #777777; | |
| } | |
| div.quoteblock > div.attribution { | |
| padding-top: 0.5em; | |
| text-align: right; | |
| } | |
| div.verseblock > pre.content { | |
| font-family: inherit; | |
| font-size: inherit; | |
| } | |
| div.verseblock > div.attribution { | |
| padding-top: 0.75em; | |
| text-align: left; | |
| } | |
| /* DEPRECATED: Pre version 8.2.7 verse style literal block. */ | |
| div.verseblock + div.attribution { | |
| text-align: left; | |
| } | |
| div.admonitionblock .icon { | |
| vertical-align: top; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| text-decoration: underline; | |
| color: #527bbd; | |
| padding-right: 0.5em; | |
| } | |
| div.admonitionblock td.content { | |
| padding-left: 0.5em; | |
| border-left: 3px solid #dddddd; | |
| } | |
| div.exampleblock > div.content { | |
| border-left: 3px solid #dddddd; | |
| padding-left: 0.5em; | |
| } | |
| div.imageblock div.content { padding-left: 0; } | |
| span.image img { border-style: none; } | |
| a.image:visited { color: white; } | |
| dl { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| dt { | |
| margin-top: 0.5em; | |
| margin-bottom: 0; | |
| font-style: normal; | |
| color: navy; | |
| } | |
| dd > *:first-child { | |
| margin-top: 0.1em; | |
| } | |
| ul, ol { | |
| list-style-position: outside; | |
| } | |
| ol.arabic { | |
| list-style-type: decimal; | |
| } | |
| ol.loweralpha { | |
| list-style-type: lower-alpha; | |
| } | |
| ol.upperalpha { | |
| list-style-type: upper-alpha; | |
| } | |
| ol.lowerroman { | |
| list-style-type: lower-roman; | |
| } | |
| ol.upperroman { | |
| list-style-type: upper-roman; | |
| } | |
| div.compact ul, div.compact ol, | |
| div.compact p, div.compact p, | |
| div.compact div, div.compact div { | |
| margin-top: 0.1em; | |
| margin-bottom: 0.1em; | |
| } | |
| tfoot { | |
| font-weight: bold; | |
| } | |
| td > div.verse { | |
| white-space: pre; | |
| } | |
| div.hdlist { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| div.hdlist tr { | |
| padding-bottom: 15px; | |
| } | |
| dt.hdlist1.strong, td.hdlist1.strong { | |
| font-weight: bold; | |
| } | |
| td.hdlist1 { | |
| vertical-align: top; | |
| font-style: normal; | |
| padding-right: 0.8em; | |
| color: navy; | |
| } | |
| td.hdlist2 { | |
| vertical-align: top; | |
| } | |
| div.hdlist.compact tr { | |
| margin: 0; | |
| padding-bottom: 0; | |
| } | |
| .comment { | |
| background: yellow; | |
| } | |
| .footnote, .footnoteref { | |
| font-size: 0.8em; | |
| } | |
| span.footnote, span.footnoteref { | |
| vertical-align: super; | |
| } | |
| #footnotes { | |
| margin: 20px 0 20px 0; | |
| padding: 7px 0 0 0; | |
| } | |
| #footnotes div.footnote { | |
| margin: 0 0 5px 0; | |
| } | |
| #footnotes hr { | |
| border: none; | |
| border-top: 1px solid silver; | |
| height: 1px; | |
| text-align: left; | |
| margin-left: 0; | |
| width: 20%; | |
| min-width: 100px; | |
| } | |
| div.colist td { | |
| padding-right: 0.5em; | |
| padding-bottom: 0.3em; | |
| vertical-align: top; | |
| } | |
| div.colist td img { | |
| margin-top: 0.3em; | |
| } | |
| @media print { | |
| #footer-badges { display: none; } | |
| } | |
| #toc { | |
| margin-bottom: 2.5em; | |
| } | |
| #toctitle { | |
| color: #527bbd; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.1em; | |
| } | |
| div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| div.toclevel2 { | |
| margin-left: 2em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel3 { | |
| margin-left: 4em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel4 { | |
| margin-left: 6em; | |
| font-size: 0.9em; | |
| } | |
| span.aqua { color: aqua; } | |
| span.black { color: black; } | |
| span.blue { color: blue; } | |
| span.fuchsia { color: fuchsia; } | |
| span.gray { color: gray; } | |
| span.green { color: green; } | |
| span.lime { color: lime; } | |
| span.maroon { color: maroon; } | |
| span.navy { color: navy; } | |
| span.olive { color: olive; } | |
| span.purple { color: purple; } | |
| span.red { color: red; } | |
| span.silver { color: silver; } | |
| span.teal { color: teal; } | |
| span.white { color: white; } | |
| span.yellow { color: yellow; } | |
| span.aqua-background { background: aqua; } | |
| span.black-background { background: black; } | |
| span.blue-background { background: blue; } | |
| span.fuchsia-background { background: fuchsia; } | |
| span.gray-background { background: gray; } | |
| span.green-background { background: green; } | |
| span.lime-background { background: lime; } | |
| span.maroon-background { background: maroon; } | |
| span.navy-background { background: navy; } | |
| span.olive-background { background: olive; } | |
| span.purple-background { background: purple; } | |
| span.red-background { background: red; } | |
| span.silver-background { background: silver; } | |
| span.teal-background { background: teal; } | |
| span.white-background { background: white; } | |
| span.yellow-background { background: yellow; } | |
| span.big { font-size: 2em; } | |
| span.small { font-size: 0.6em; } | |
| span.underline { text-decoration: underline; } | |
| span.overline { text-decoration: overline; } | |
| span.line-through { text-decoration: line-through; } | |
| /* | |
| * xhtml11 specific | |
| * | |
| * */ | |
| tt { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| div.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.tableblock > table { | |
| border: 3px solid #527bbd; | |
| } | |
| thead, p.table.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.table { | |
| margin-top: 0; | |
| } | |
| /* Because the table frame attribute is overriden by CSS in most browsers. */ | |
| div.tableblock > table[frame="void"] { | |
| border-style: none; | |
| } | |
| div.tableblock > table[frame="hsides"] { | |
| border-left-style: none; | |
| border-right-style: none; | |
| } | |
| div.tableblock > table[frame="vsides"] { | |
| border-top-style: none; | |
| border-bottom-style: none; | |
| } | |
| /* | |
| * html5 specific | |
| * | |
| * */ | |
| .monospaced { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| table.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| thead, p.tableblock.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.tableblock { | |
| margin-top: 0; | |
| } | |
| table.tableblock { | |
| border-width: 3px; | |
| border-spacing: 0px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| border-collapse: collapse; | |
| } | |
| th.tableblock, td.tableblock { | |
| border-width: 1px; | |
| padding: 4px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| } | |
| table.tableblock.frame-topbot { | |
| border-left-style: hidden; | |
| border-right-style: hidden; | |
| } | |
| table.tableblock.frame-sides { | |
| border-top-style: hidden; | |
| border-bottom-style: hidden; | |
| } | |
| table.tableblock.frame-none { | |
| border-style: hidden; | |
| } | |
| th.tableblock.halign-left, td.tableblock.halign-left { | |
| text-align: left; | |
| } | |
| th.tableblock.halign-center, td.tableblock.halign-center { | |
| text-align: center; | |
| } | |
| th.tableblock.halign-right, td.tableblock.halign-right { | |
| text-align: right; | |
| } | |
| th.tableblock.valign-top, td.tableblock.valign-top { | |
| vertical-align: top; | |
| } | |
| th.tableblock.valign-middle, td.tableblock.valign-middle { | |
| vertical-align: middle; | |
| } | |
| th.tableblock.valign-bottom, td.tableblock.valign-bottom { | |
| vertical-align: bottom; | |
| } | |
| /* | |
| * manpage specific | |
| * | |
| * */ | |
| body.manpage h1 { | |
| padding-top: 0.5em; | |
| padding-bottom: 0.5em; | |
| border-top: 2px solid silver; | |
| border-bottom: 2px solid silver; | |
| } | |
| body.manpage h2 { | |
| border-style: none; | |
| } | |
| body.manpage div.sectionbody { | |
| margin-left: 3em; | |
| } | |
| @media print { | |
| body.manpage div#toc { display: none; } | |
| } | |
| /* | |
| * Theme specific overrides of the preceding (asciidoc.css) CSS. | |
| * | |
| */ | |
| body { | |
| font-family: Garamond, Georgia, serif; | |
| font-size: 17px; | |
| color: #3E4349; | |
| line-height: 1.3em; | |
| } | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Garmond, Georgia, serif; | |
| font-weight: normal; | |
| border-bottom-width: 0; | |
| color: #3E4349; | |
| } | |
| div.title, caption.title { color: #596673; font-weight: bold; } | |
| h1 { font-size: 240%; } | |
| h2 { font-size: 180%; } | |
| h3 { font-size: 150%; } | |
| h4 { font-size: 130%; } | |
| h5 { font-size: 115%; } | |
| h6 { font-size: 100%; } | |
| #header h1 { margin-top: 0; } | |
| #toc { | |
| color: #444444; | |
| line-height: 1.5; | |
| padding-top: 1.5em; | |
| } | |
| #toctitle { | |
| font-size: 20px; | |
| } | |
| #toc a { | |
| border-bottom: 1px dotted #999999; | |
| color: #444444 !important; | |
| text-decoration: none !important; | |
| } | |
| #toc a:hover { | |
| border-bottom: 1px solid #6D4100; | |
| color: #6D4100 !important; | |
| text-decoration: none !important; | |
| } | |
| div.toclevel1 { margin-top: 0.2em; font-size: 16px; } | |
| div.toclevel2 { margin-top: 0.15em; font-size: 14px; } | |
| em, dt, td.hdlist1 { color: black; } | |
| strong { color: #3E4349; } | |
| a { color: #004B6B; text-decoration: none; border-bottom: 1px dotted #004B6B; } | |
| a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; } | |
| a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; } | |
| div.tableblock > table, table.tableblock { border: 3px solid #E8E8E8; } | |
| th.tableblock, td.tableblock { border: 1px solid #E8E8E8; } | |
| ul > li > * { color: #3E4349; } | |
| pre, tt, .monospaced { font-family: Consolas,Menlo,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace; } | |
| tt, .monospaced { font-size: 0.9em; color: black; | |
| } | |
| div.exampleblock > div.content, div.sidebarblock > div.content, div.listingblock > div.content { border-width: 0 0 0 3px; border-color: #E8E8E8; } | |
| div.verseblock { border-left-width: 0; margin-left: 3em; } | |
| div.quoteblock { border-left-width: 3px; margin-left: 0; margin-right: 0;} | |
| div.admonitionblock td.content { border-left: 3px solid #E8E8E8; } | |
| /* | |
| pygmentize filter | |
| */ | |
| .highlight .hll { background-color: #ffffcc } | |
| .highlight { background: #f4f4f4; } | |
| .highlight .c { color: #008800; font-style: italic } /* Comment */ | |
| .highlight .err { border: 1px solid #FF0000 } /* Error */ | |
| .highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */ | |
| .highlight .o { color: #666666 } /* Operator */ | |
| .highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */ | |
| .highlight .cp { color: #008800 } /* Comment.Preproc */ | |
| .highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */ | |
| .highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */ | |
| .highlight .gd { color: #A00000 } /* Generic.Deleted */ | |
| .highlight .ge { font-style: italic } /* Generic.Emph */ | |
| .highlight .gr { color: #FF0000 } /* Generic.Error */ | |
| .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |
| .highlight .gi { color: #00A000 } /* Generic.Inserted */ | |
| .highlight .go { color: #808080 } /* Generic.Output */ | |
| .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ | |
| .highlight .gs { font-weight: bold } /* Generic.Strong */ | |
| .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |
| .highlight .gt { color: #0040D0 } /* Generic.Traceback */ | |
| .highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ | |
| .highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ | |
| .highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */ | |
| .highlight .kp { color: #AA22FF } /* Keyword.Pseudo */ | |
| .highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ | |
| .highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */ | |
| .highlight .m { color: #666666 } /* Literal.Number */ | |
| .highlight .s { color: #BB4444 } /* Literal.String */ | |
| .highlight .na { color: #BB4444 } /* Name.Attribute */ | |
| .highlight .nb { color: #AA22FF } /* Name.Builtin */ | |
| .highlight .nc { color: #0000FF } /* Name.Class */ | |
| .highlight .no { color: #880000 } /* Name.Constant */ | |
| .highlight .nd { color: #AA22FF } /* Name.Decorator */ | |
| .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ | |
| .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ | |
| .highlight .nf { color: #00A000 } /* Name.Function */ | |
| .highlight .nl { color: #A0A000 } /* Name.Label */ | |
| .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ | |
| .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ | |
| .highlight .nv { color: #B8860B } /* Name.Variable */ | |
| .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ | |
| .highlight .w { color: #bbbbbb } /* Text.Whitespace */ | |
| .highlight .mf { color: #666666 } /* Literal.Number.Float */ | |
| .highlight .mh { color: #666666 } /* Literal.Number.Hex */ | |
| .highlight .mi { color: #666666 } /* Literal.Number.Integer */ | |
| .highlight .mo { color: #666666 } /* Literal.Number.Oct */ | |
| .highlight .sb { color: #BB4444 } /* Literal.String.Backtick */ | |
| .highlight .sc { color: #BB4444 } /* Literal.String.Char */ | |
| .highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ | |
| .highlight .s2 { color: #BB4444 } /* Literal.String.Double */ | |
| .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ | |
| .highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */ | |
| .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ | |
| .highlight .sx { color: #008000 } /* Literal.String.Other */ | |
| .highlight .sr { color: #BB6688 } /* Literal.String.Regex */ | |
| .highlight .s1 { color: #BB4444 } /* Literal.String.Single */ | |
| .highlight .ss { color: #B8860B } /* Literal.String.Symbol */ | |
| .highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */ | |
| .highlight .vc { color: #B8860B } /* Name.Variable.Class */ | |
| .highlight .vg { color: #B8860B } /* Name.Variable.Global */ | |
| .highlight .vi { color: #B8860B } /* Name.Variable.Instance */ | |
| .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ | |
| </style> | |
| <script type="text/javascript"> | |
| /*<+'])'); | |
| // Function that scans the DOM tree for header elements (the DOM2 | |
| // nodeIterator API would be a better technique but not supported by all | |
| // browsers). | |
| var iterate = function (el) { | |
| for (var i = el.firstChild; i != null; i = i.nextSibling) { | |
| if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { | |
| var mo = re.exec(i.tagName); | |
| if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { | |
| result[result.length] = new TocEntry(i, getText(i), mo[1]-1); | |
| } | |
| iterate(i); | |
| } | |
| } | |
| } | |
| iterate(el); | |
| return result; | |
| } | |
| var toc = document.getElementById("toc"); | |
| if (!toc) { | |
| return; | |
| } | |
| // Delete existing TOC entries in case we're reloading the TOC. | |
| var tocEntriesToRemove = []; | |
| var i; | |
| for (i = 0; i < toc.childNodes.length; i++) { | |
| var entry = toc.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' | |
| && entry.getAttribute("class") | |
| && entry.getAttribute("class").match(/^toclevel/)) | |
| tocEntriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < tocEntriesToRemove.length; i++) { | |
| toc.removeChild(tocEntriesToRemove[i]); | |
| } | |
| // Rebuild TOC entries. | |
| var entries = tocEntries(document.getElementById("content"), toclevels); | |
| for (var i = 0; i < entries.length; ++i) { | |
| var entry = entries[i]; | |
| if (entry.element.id == "") | |
| entry.element.id = "_toc_" + i; | |
| var a = document.createElement("a"); | |
| a.href = "#" + entry.element.id; | |
| a.appendChild(document.createTextNode(entry.text)); | |
| var div = document.createElement("div"); | |
| div.appendChild(a); | |
| div.className = "toclevel" + entry.toclevel; | |
| toc.appendChild(div); | |
| } | |
| if (entries.length == 0) | |
| toc.parentNode.removeChild(toc); | |
| }, | |
| ///////////////////////////////////////////////////////////////////// | |
| // Footnotes generator | |
| ///////////////////////////////////////////////////////////////////// | |
| /* Based on footnote generation code from: | |
| * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html | |
| */ | |
| footnotes: function () { | |
| // Delete existing footnote entries in case we're reloading the footnodes. | |
| var i; | |
| var noteholder = document.getElementById("footnotes"); | |
| if (!noteholder) { | |
| return; | |
| } | |
| var entriesToRemove = []; | |
| for (i = 0; i < noteholder.childNodes.length; i++) { | |
| var entry = noteholder.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") | |
| entriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < entriesToRemove.length; i++) { | |
| noteholder.removeChild(entriesToRemove[i]); | |
| } | |
| // Rebuild footnote entries. | |
| var cont = document.getElementById("content"); | |
| var spans = cont.getElementsByTagName("span"); | |
| var refs = {}; | |
| var n = 0; | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnote") { | |
| n++; | |
| var note = spans[i].getAttribute("data-note"); | |
| if (!note) { | |
| // Use [\s\S] in place of . so multi-line matches work. | |
| // Because JavaScript has no s (dotall) regex flag. | |
| note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; | |
| spans[i].innerHTML = | |
| "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| spans[i].setAttribute("data-note", note); | |
| } | |
| noteholder.innerHTML += | |
| "<div class='footnote' id='_footnote_" + n + "'>" + | |
| "<a href='#_footnoteref_" + n + "' title='Return to text'>" + | |
| n + "</a>. " + note + "</div>"; | |
| var id =spans[i].getAttribute("id"); | |
| if (id != null) refs["#"+id] = n; | |
| } | |
| } | |
| if (n == 0) | |
| noteholder.parentNode.removeChild(noteholder); | |
| else { | |
| // Process footnoterefs. | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnoteref") { | |
| var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); | |
| href = href.match(/#.*/)[0]; // Because IE return full URL. | |
| n = refs[href]; | |
| spans[i].innerHTML = | |
| "[<a href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| } | |
| } | |
| } | |
| }, | |
| install: function(toclevels) { | |
| var timerId; | |
| function reinstall() { | |
| asciidoc.footnotes(); | |
| if (toclevels) { | |
| asciidoc.toc(toclevels); | |
| } | |
| } | |
| function reinstallAndRemoveTimer() { | |
| clearInterval(timerId); | |
| reinstall(); | |
| } | |
| timerId = setInterval(reinstall, 500); | |
| if (document.addEventListener) | |
| document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); | |
| else | |
| window.onload = reinstallAndRemoveTimer; | |
| } | |
| } | |
| asciidoc.install(); | |
| /*]]>*/ | |
| </script> | |
| </head> | |
| <body class="article"> | |
| <div id="header"> | |
| <h1>The Personal Site of Chris White (cwgem)</h1> | |
| </div> | |
| <div id="content"> | |
| <div class="sect1"> | |
| <h2 id="_introduction">Introduction</h2> | |
| <div class="sectionbody"> | |
| <p class="paragraph">Hello and welcome to my personal site hosted on <a href="http://pages.github.com">GitHub pages</a>. My name is Chris White and I work as a software engineer at <a href="http://www.engineyard.com">EngineYard</a>. I utilize a number of tools to get the job done, including <a href="http://www.perl.org">Perl</a>, <a href="http://www.python.org">Python</a>, and <a href="http://www.ruby-lang.org">Ruby</a>. Recently I started to look into <a href="http://www.erlang.org">Erlang</a> for API services. When I’m not programming I study Japanese, and hope to live and work there someday. My main open source project I work with is <a href="https://rvm.io">RVM</a>. Here’s where you can find me:</p> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="https://github.com/cwgem">GitHub</a> | |
| </li> | |
| <li> | |
| <a href="https://www.twitter.com/cwgem">Twitter</a> | |
| </li> | |
| <li> | |
| <a href="http://www.linkedin.com/pub/chris-white/1/760/884/">LinkedIn</a> | |
| </li> | |
| <li> | |
| Email: cwprogram - live - com | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="sect1"> | |
| <h2 id="_articles">Articles</h2> | |
| <div class="sectionbody"> | |
| <div class="sect2"> | |
| <h3 id="_security">Security</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/security/talk-on-security-process.html">A Talk On Security Process</a> | |
| </li> | |
| <li> | |
| <a href="/security/secure-workstation.html">The Secure Workstation</a> | |
| </li> | |
| <li> | |
| <a href="/security/balanced-security.html">Balanaced Security</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_git">Git</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/git/git-force.html">On git push --force</a> | |
| </li> | |
| <li> | |
| <a href="/git/git-rebase-fixing.html">Git Rebase Fixing</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_python">Python</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/python/class-methods-and-self.html">Python Class Methods and self</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_society">Society</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/society/racism-and-sexism.html">Racism and Sexism</a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div id="footnotes"><hr /></div> | |
| <div id="footer"> | |
| <div id="footer-text"> | |
| Last updated 2013-03-21 22:47:39 PDT | |
| </div> | |
| <div id="footer-badges"> | |
| <a href="http://validator.w3.org/check?uri=referer"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://www.w3.org/Icons/valid-xhtml11-blue" | |
| alt="Valid XHTML 1.1" height="31" width="88" /> | |
| </a> | |
| <a href="http://jigsaw.w3.org/css-validator/"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://jigsaw.w3.org/css-validator/images/vcss-blue" | |
| alt="Valid CSS!" /> | |
| </a> | |
| <a rel="license" href="http://creativecommons.org/licenses/by/3.0/us/"> | |
| <img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/us/88x31.png" /> | |
| </a> | |
| </div> | |
| </div> | |
| </body> | |
| </html><!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> | |
| <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> | |
| <meta name="generator" content="AsciiDoc 8.6.8" /> | |
| <title>The Personal Site of Chris White (cwgem)</title> | |
| <style type="text/css"> | |
| /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ | |
| /* Default font. */ | |
| body { | |
| font-family: Georgia,serif; | |
| } | |
| /* Title font. */ | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Arial,Helvetica,sans-serif; | |
| } | |
| body { | |
| margin: 1em 5% 1em 5%; | |
| } | |
| a { | |
| color: blue; | |
| text-decoration: underline; | |
| } | |
| a:visited { | |
| color: fuchsia; | |
| } | |
| em { | |
| font-style: italic; | |
| color: navy; | |
| } | |
| strong { | |
| font-weight: bold; | |
| color: #083194; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| color: #527bbd; | |
| margin-top: 1.2em; | |
| margin-bottom: 0.5em; | |
| line-height: 1.3; | |
| } | |
| h1, h2, h3 { | |
| border-bottom: 2px solid silver; | |
| } | |
| h2 { | |
| padding-top: 0.5em; | |
| } | |
| h3 { | |
| float: left; | |
| } | |
| h3 + * { | |
| clear: left; | |
| } | |
| h5 { | |
| font-size: 1.0em; | |
| } | |
| div.sectionbody { | |
| margin-left: 0; | |
| } | |
| hr { | |
| border: 1px solid silver; | |
| } | |
| p { | |
| margin-top: 0.5em; | |
| margin-bottom: 0.5em; | |
| } | |
| ul, ol, li > p { | |
| margin-top: 0; | |
| } | |
| ul > li { color: #3E4349; } | |
| pre { | |
| padding: 0; | |
| margin: 0; | |
| } | |
| #author { | |
| color: #527bbd; | |
| font-weight: bold; | |
| font-size: 1.1em; | |
| } | |
| #email { | |
| } | |
| #revnumber, #revdate, #revremark { | |
| } | |
| #footer { | |
| font-size: small; | |
| border-top: 2px solid silver; | |
| padding-top: 0.5em; | |
| margin-top: 4.0em; | |
| } | |
| #footer-text { | |
| float: left; | |
| padding-bottom: 0.5em; | |
| } | |
| #footer-badges { | |
| float: right; | |
| padding-bottom: 0.5em; | |
| } | |
| #preamble { | |
| margin-top: 1.5em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.imageblock, div.exampleblock, div.verseblock, | |
| div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
| div.admonitionblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.admonitionblock { | |
| margin-top: 2.0em; | |
| margin-bottom: 2.0em; | |
| margin-right: 10%; | |
| color: #606060; | |
| } | |
| div.content { /* Block element content. */ | |
| padding: 0; | |
| } | |
| /* Block element titles. */ | |
| div.title, caption.title { | |
| color: #527bbd; | |
| font-weight: bold; | |
| text-align: left; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.5em; | |
| } | |
| div.title + * { | |
| margin-top: 0; | |
| } | |
| td div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content + div.title { | |
| margin-top: 0.0em; | |
| } | |
| div.sidebarblock > div.content { | |
| background: #ffffee; | |
| border: 1px solid #dddddd; | |
| border-left: 4px solid #f0f0f0; | |
| padding: 0.5em; | |
| } | |
| div.listingblock > div.content { | |
| border: 1px solid #dddddd; | |
| border-left: 5px solid #f0f0f0; | |
| background: #f8f8f8; | |
| padding: 0.5em; | |
| } | |
| div.quoteblock, div.verseblock { | |
| padding-left: 1.0em; | |
| margin-left: 1.0em; | |
| margin-right: 10%; | |
| border-left: 5px solid #f0f0f0; | |
| color: #777777; | |
| } | |
| div.quoteblock > div.attribution { | |
| padding-top: 0.5em; | |
| text-align: right; | |
| } | |
| div.verseblock > pre.content { | |
| font-family: inherit; | |
| font-size: inherit; | |
| } | |
| div.verseblock > div.attribution { | |
| padding-top: 0.75em; | |
| text-align: left; | |
| } | |
| /* DEPRECATED: Pre version 8.2.7 verse style literal block. */ | |
| div.verseblock + div.attribution { | |
| text-align: left; | |
| } | |
| div.admonitionblock .icon { | |
| vertical-align: top; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| text-decoration: underline; | |
| color: #527bbd; | |
| padding-right: 0.5em; | |
| } | |
| div.admonitionblock td.content { | |
| padding-left: 0.5em; | |
| border-left: 3px solid #dddddd; | |
| } | |
| div.exampleblock > div.content { | |
| border-left: 3px solid #dddddd; | |
| padding-left: 0.5em; | |
| } | |
| div.imageblock div.content { padding-left: 0; } | |
| span.image img { border-style: none; } | |
| a.image:visited { color: white; } | |
| dl { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| dt { | |
| margin-top: 0.5em; | |
| margin-bottom: 0; | |
| font-style: normal; | |
| color: navy; | |
| } | |
| dd > *:first-child { | |
| margin-top: 0.1em; | |
| } | |
| ul, ol { | |
| list-style-position: outside; | |
| } | |
| ol.arabic { | |
| list-style-type: decimal; | |
| } | |
| ol.loweralpha { | |
| list-style-type: lower-alpha; | |
| } | |
| ol.upperalpha { | |
| list-style-type: upper-alpha; | |
| } | |
| ol.lowerroman { | |
| list-style-type: lower-roman; | |
| } | |
| ol.upperroman { | |
| list-style-type: upper-roman; | |
| } | |
| div.compact ul, div.compact ol, | |
| div.compact p, div.compact p, | |
| div.compact div, div.compact div { | |
| margin-top: 0.1em; | |
| margin-bottom: 0.1em; | |
| } | |
| tfoot { | |
| font-weight: bold; | |
| } | |
| td > div.verse { | |
| white-space: pre; | |
| } | |
| div.hdlist { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| div.hdlist tr { | |
| padding-bottom: 15px; | |
| } | |
| dt.hdlist1.strong, td.hdlist1.strong { | |
| font-weight: bold; | |
| } | |
| td.hdlist1 { | |
| vertical-align: top; | |
| font-style: normal; | |
| padding-right: 0.8em; | |
| color: navy; | |
| } | |
| td.hdlist2 { | |
| vertical-align: top; | |
| } | |
| div.hdlist.compact tr { | |
| margin: 0; | |
| padding-bottom: 0; | |
| } | |
| .comment { | |
| background: yellow; | |
| } | |
| .footnote, .footnoteref { | |
| font-size: 0.8em; | |
| } | |
| span.footnote, span.footnoteref { | |
| vertical-align: super; | |
| } | |
| #footnotes { | |
| margin: 20px 0 20px 0; | |
| padding: 7px 0 0 0; | |
| } | |
| #footnotes div.footnote { | |
| margin: 0 0 5px 0; | |
| } | |
| #footnotes hr { | |
| border: none; | |
| border-top: 1px solid silver; | |
| height: 1px; | |
| text-align: left; | |
| margin-left: 0; | |
| width: 20%; | |
| min-width: 100px; | |
| } | |
| div.colist td { | |
| padding-right: 0.5em; | |
| padding-bottom: 0.3em; | |
| vertical-align: top; | |
| } | |
| div.colist td img { | |
| margin-top: 0.3em; | |
| } | |
| @media print { | |
| #footer-badges { display: none; } | |
| } | |
| #toc { | |
| margin-bottom: 2.5em; | |
| } | |
| #toctitle { | |
| color: #527bbd; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.1em; | |
| } | |
| div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| div.toclevel2 { | |
| margin-left: 2em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel3 { | |
| margin-left: 4em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel4 { | |
| margin-left: 6em; | |
| font-size: 0.9em; | |
| } | |
| span.aqua { color: aqua; } | |
| span.black { color: black; } | |
| span.blue { color: blue; } | |
| span.fuchsia { color: fuchsia; } | |
| span.gray { color: gray; } | |
| span.green { color: green; } | |
| span.lime { color: lime; } | |
| span.maroon { color: maroon; } | |
| span.navy { color: navy; } | |
| span.olive { color: olive; } | |
| span.purple { color: purple; } | |
| span.red { color: red; } | |
| span.silver { color: silver; } | |
| span.teal { color: teal; } | |
| span.white { color: white; } | |
| span.yellow { color: yellow; } | |
| span.aqua-background { background: aqua; } | |
| span.black-background { background: black; } | |
| span.blue-background { background: blue; } | |
| span.fuchsia-background { background: fuchsia; } | |
| span.gray-background { background: gray; } | |
| span.green-background { background: green; } | |
| span.lime-background { background: lime; } | |
| span.maroon-background { background: maroon; } | |
| span.navy-background { background: navy; } | |
| span.olive-background { background: olive; } | |
| span.purple-background { background: purple; } | |
| span.red-background { background: red; } | |
| span.silver-background { background: silver; } | |
| span.teal-background { background: teal; } | |
| span.white-background { background: white; } | |
| span.yellow-background { background: yellow; } | |
| span.big { font-size: 2em; } | |
| span.small { font-size: 0.6em; } | |
| span.underline { text-decoration: underline; } | |
| span.overline { text-decoration: overline; } | |
| span.line-through { text-decoration: line-through; } | |
| /* | |
| * xhtml11 specific | |
| * | |
| * */ | |
| tt { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| div.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.tableblock > table { | |
| border: 3px solid #527bbd; | |
| } | |
| thead, p.table.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.table { | |
| margin-top: 0; | |
| } | |
| /* Because the table frame attribute is overriden by CSS in most browsers. */ | |
| div.tableblock > table[frame="void"] { | |
| border-style: none; | |
| } | |
| div.tableblock > table[frame="hsides"] { | |
| border-left-style: none; | |
| border-right-style: none; | |
| } | |
| div.tableblock > table[frame="vsides"] { | |
| border-top-style: none; | |
| border-bottom-style: none; | |
| } | |
| /* | |
| * html5 specific | |
| * | |
| * */ | |
| .monospaced { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| table.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| thead, p.tableblock.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.tableblock { | |
| margin-top: 0; | |
| } | |
| table.tableblock { | |
| border-width: 3px; | |
| border-spacing: 0px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| border-collapse: collapse; | |
| } | |
| th.tableblock, td.tableblock { | |
| border-width: 1px; | |
| padding: 4px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| } | |
| table.tableblock.frame-topbot { | |
| border-left-style: hidden; | |
| border-right-style: hidden; | |
| } | |
| table.tableblock.frame-sides { | |
| border-top-style: hidden; | |
| border-bottom-style: hidden; | |
| } | |
| table.tableblock.frame-none { | |
| border-style: hidden; | |
| } | |
| th.tableblock.halign-left, td.tableblock.halign-left { | |
| text-align: left; | |
| } | |
| th.tableblock.halign-center, td.tableblock.halign-center { | |
| text-align: center; | |
| } | |
| th.tableblock.halign-right, td.tableblock.halign-right { | |
| text-align: right; | |
| } | |
| th.tableblock.valign-top, td.tableblock.valign-top { | |
| vertical-align: top; | |
| } | |
| th.tableblock.valign-middle, td.tableblock.valign-middle { | |
| vertical-align: middle; | |
| } | |
| th.tableblock.valign-bottom, td.tableblock.valign-bottom { | |
| vertical-align: bottom; | |
| } | |
| /* | |
| * manpage specific | |
| * | |
| * */ | |
| body.manpage h1 { | |
| padding-top: 0.5em; | |
| padding-bottom: 0.5em; | |
| border-top: 2px solid silver; | |
| border-bottom: 2px solid silver; | |
| } | |
| body.manpage h2 { | |
| border-style: none; | |
| } | |
| body.manpage div.sectionbody { | |
| margin-left: 3em; | |
| } | |
| @media print { | |
| body.manpage div#toc { display: none; } | |
| } | |
| /* | |
| * Theme specific overrides of the preceding (asciidoc.css) CSS. | |
| * | |
| */ | |
| body { | |
| font-family: Garamond, Georgia, serif; | |
| font-size: 17px; | |
| color: #3E4349; | |
| line-height: 1.3em; | |
| } | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Garmond, Georgia, serif; | |
| font-weight: normal; | |
| border-bottom-width: 0; | |
| color: #3E4349; | |
| } | |
| div.title, caption.title { color: #596673; font-weight: bold; } | |
| h1 { font-size: 240%; } | |
| h2 { font-size: 180%; } | |
| h3 { font-size: 150%; } | |
| h4 { font-size: 130%; } | |
| h5 { font-size: 115%; } | |
| h6 { font-size: 100%; } | |
| #header h1 { margin-top: 0; } | |
| #toc { | |
| color: #444444; | |
| line-height: 1.5; | |
| padding-top: 1.5em; | |
| } | |
| #toctitle { | |
| font-size: 20px; | |
| } | |
| #toc a { | |
| border-bottom: 1px dotted #999999; | |
| color: #444444 !important; | |
| text-decoration: none !important; | |
| } | |
| #toc a:hover { | |
| border-bottom: 1px solid #6D4100; | |
| color: #6D4100 !important; | |
| text-decoration: none !important; | |
| } | |
| div.toclevel1 { margin-top: 0.2em; font-size: 16px; } | |
| div.toclevel2 { margin-top: 0.15em; font-size: 14px; } | |
| em, dt, td.hdlist1 { color: black; } | |
| strong { color: #3E4349; } | |
| a { color: #004B6B; text-decoration: none; border-bottom: 1px dotted #004B6B; } | |
| a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; } | |
| a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; } | |
| div.tableblock > table, table.tableblock { border: 3px solid #E8E8E8; } | |
| th.tableblock, td.tableblock { border: 1px solid #E8E8E8; } | |
| ul > li > * { color: #3E4349; } | |
| pre, tt, .monospaced { font-family: Consolas,Menlo,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace; } | |
| tt, .monospaced { font-size: 0.9em; color: black; | |
| } | |
| div.exampleblock > div.content, div.sidebarblock > div.content, div.listingblock > div.content { border-width: 0 0 0 3px; border-color: #E8E8E8; } | |
| div.verseblock { border-left-width: 0; margin-left: 3em; } | |
| div.quoteblock { border-left-width: 3px; margin-left: 0; margin-right: 0;} | |
| div.admonitionblock td.content { border-left: 3px solid #E8E8E8; } | |
| /* | |
| pygmentize filter | |
| */ | |
| .highlight .hll { background-color: #ffffcc } | |
| .highlight { background: #f4f4f4; } | |
| .highlight .c { color: #008800; font-style: italic } /* Comment */ | |
| .highlight .err { border: 1px solid #FF0000 } /* Error */ | |
| .highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */ | |
| .highlight .o { color: #666666 } /* Operator */ | |
| .highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */ | |
| .highlight .cp { color: #008800 } /* Comment.Preproc */ | |
| .highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */ | |
| .highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */ | |
| .highlight .gd { color: #A00000 } /* Generic.Deleted */ | |
| .highlight .ge { font-style: italic } /* Generic.Emph */ | |
| .highlight .gr { color: #FF0000 } /* Generic.Error */ | |
| .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |
| .highlight .gi { color: #00A000 } /* Generic.Inserted */ | |
| .highlight .go { color: #808080 } /* Generic.Output */ | |
| .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ | |
| .highlight .gs { font-weight: bold } /* Generic.Strong */ | |
| .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |
| .highlight .gt { color: #0040D0 } /* Generic.Traceback */ | |
| .highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ | |
| .highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ | |
| .highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */ | |
| .highlight .kp { color: #AA22FF } /* Keyword.Pseudo */ | |
| .highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ | |
| .highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */ | |
| .highlight .m { color: #666666 } /* Literal.Number */ | |
| .highlight .s { color: #BB4444 } /* Literal.String */ | |
| .highlight .na { color: #BB4444 } /* Name.Attribute */ | |
| .highlight .nb { color: #AA22FF } /* Name.Builtin */ | |
| .highlight .nc { color: #0000FF } /* Name.Class */ | |
| .highlight .no { color: #880000 } /* Name.Constant */ | |
| .highlight .nd { color: #AA22FF } /* Name.Decorator */ | |
| .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ | |
| .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ | |
| .highlight .nf { color: #00A000 } /* Name.Function */ | |
| .highlight .nl { color: #A0A000 } /* Name.Label */ | |
| .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ | |
| .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ | |
| .highlight .nv { color: #B8860B } /* Name.Variable */ | |
| .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ | |
| .highlight .w { color: #bbbbbb } /* Text.Whitespace */ | |
| .highlight .mf { color: #666666 } /* Literal.Number.Float */ | |
| .highlight .mh { color: #666666 } /* Literal.Number.Hex */ | |
| .highlight .mi { color: #666666 } /* Literal.Number.Integer */ | |
| .highlight .mo { color: #666666 } /* Literal.Number.Oct */ | |
| .highlight .sb { color: #BB4444 } /* Literal.String.Backtick */ | |
| .highlight .sc { color: #BB4444 } /* Literal.String.Char */ | |
| .highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ | |
| .highlight .s2 { color: #BB4444 } /* Literal.String.Double */ | |
| .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ | |
| .highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */ | |
| .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ | |
| .highlight .sx { color: #008000 } /* Literal.String.Other */ | |
| .highlight .sr { color: #BB6688 } /* Literal.String.Regex */ | |
| .highlight .s1 { color: #BB4444 } /* Literal.String.Single */ | |
| .highlight .ss { color: #B8860B } /* Literal.String.Symbol */ | |
| .highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */ | |
| .highlight .vc { color: #B8860B } /* Name.Variable.Class */ | |
| .highlight .vg { color: #B8860B } /* Name.Variable.Global */ | |
| .highlight .vi { color: #B8860B } /* Name.Variable.Instance */ | |
| .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ | |
| </style> | |
| <script type="text/javascript"> | |
| /*<+'])'); | |
| // Function that scans the DOM tree for header elements (the DOM2 | |
| // nodeIterator API would be a better technique but not supported by all | |
| // browsers). | |
| var iterate = function (el) { | |
| for (var i = el.firstChild; i != null; i = i.nextSibling) { | |
| if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { | |
| var mo = re.exec(i.tagName); | |
| if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { | |
| result[result.length] = new TocEntry(i, getText(i), mo[1]-1); | |
| } | |
| iterate(i); | |
| } | |
| } | |
| } | |
| iterate(el); | |
| return result; | |
| } | |
| var toc = document.getElementById("toc"); | |
| if (!toc) { | |
| return; | |
| } | |
| // Delete existing TOC entries in case we're reloading the TOC. | |
| var tocEntriesToRemove = []; | |
| var i; | |
| for (i = 0; i < toc.childNodes.length; i++) { | |
| var entry = toc.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' | |
| && entry.getAttribute("class") | |
| && entry.getAttribute("class").match(/^toclevel/)) | |
| tocEntriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < tocEntriesToRemove.length; i++) { | |
| toc.removeChild(tocEntriesToRemove[i]); | |
| } | |
| // Rebuild TOC entries. | |
| var entries = tocEntries(document.getElementById("content"), toclevels); | |
| for (var i = 0; i < entries.length; ++i) { | |
| var entry = entries[i]; | |
| if (entry.element.id == "") | |
| entry.element.id = "_toc_" + i; | |
| var a = document.createElement("a"); | |
| a.href = "#" + entry.element.id; | |
| a.appendChild(document.createTextNode(entry.text)); | |
| var div = document.createElement("div"); | |
| div.appendChild(a); | |
| div.className = "toclevel" + entry.toclevel; | |
| toc.appendChild(div); | |
| } | |
| if (entries.length == 0) | |
| toc.parentNode.removeChild(toc); | |
| }, | |
| ///////////////////////////////////////////////////////////////////// | |
| // Footnotes generator | |
| ///////////////////////////////////////////////////////////////////// | |
| /* Based on footnote generation code from: | |
| * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html | |
| */ | |
| footnotes: function () { | |
| // Delete existing footnote entries in case we're reloading the footnodes. | |
| var i; | |
| var noteholder = document.getElementById("footnotes"); | |
| if (!noteholder) { | |
| return; | |
| } | |
| var entriesToRemove = []; | |
| for (i = 0; i < noteholder.childNodes.length; i++) { | |
| var entry = noteholder.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") | |
| entriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < entriesToRemove.length; i++) { | |
| noteholder.removeChild(entriesToRemove[i]); | |
| } | |
| // Rebuild footnote entries. | |
| var cont = document.getElementById("content"); | |
| var spans = cont.getElementsByTagName("span"); | |
| var refs = {}; | |
| var n = 0; | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnote") { | |
| n++; | |
| var note = spans[i].getAttribute("data-note"); | |
| if (!note) { | |
| // Use [\s\S] in place of . so multi-line matches work. | |
| // Because JavaScript has no s (dotall) regex flag. | |
| note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; | |
| spans[i].innerHTML = | |
| "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| spans[i].setAttribute("data-note", note); | |
| } | |
| noteholder.innerHTML += | |
| "<div class='footnote' id='_footnote_" + n + "'>" + | |
| "<a href='#_footnoteref_" + n + "' title='Return to text'>" + | |
| n + "</a>. " + note + "</div>"; | |
| var id =spans[i].getAttribute("id"); | |
| if (id != null) refs["#"+id] = n; | |
| } | |
| } | |
| if (n == 0) | |
| noteholder.parentNode.removeChild(noteholder); | |
| else { | |
| // Process footnoterefs. | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnoteref") { | |
| var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); | |
| href = href.match(/#.*/)[0]; // Because IE return full URL. | |
| n = refs[href]; | |
| spans[i].innerHTML = | |
| "[<a href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| } | |
| } | |
| } | |
| }, | |
| install: function(toclevels) { | |
| var timerId; | |
| function reinstall() { | |
| asciidoc.footnotes(); | |
| if (toclevels) { | |
| asciidoc.toc(toclevels); | |
| } | |
| } | |
| function reinstallAndRemoveTimer() { | |
| clearInterval(timerId); | |
| reinstall(); | |
| } | |
| timerId = setInterval(reinstall, 500); | |
| if (document.addEventListener) | |
| document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); | |
| else | |
| window.onload = reinstallAndRemoveTimer; | |
| } | |
| } | |
| asciidoc.install(); | |
| /*]]>*/ | |
| </script> | |
| </head> | |
| <body class="article"> | |
| <div id="header"> | |
| <h1>The Personal Site of Chris White (cwgem)</h1> | |
| </div> | |
| <div id="content"> | |
| <div class="sect1"> | |
| <h2 id="_introduction">Introduction</h2> | |
| <div class="sectionbody"> | |
| <p class="paragraph">Hello and welcome to my personal site hosted on <a href="http://pages.github.com">GitHub pages</a>. My name is Chris White and I work as a software engineer at <a href="http://www.engineyard.com">EngineYard</a>. I utilize a number of tools to get the job done, including <a href="http://www.perl.org">Perl</a>, <a href="http://www.python.org">Python</a>, and <a href="http://www.ruby-lang.org">Ruby</a>. Recently I started to look into <a href="http://www.erlang.org">Erlang</a> for API services. When I’m not programming I study Japanese, and hope to live and work there someday. My main open source project I work with is <a href="https://rvm.io">RVM</a>. Here’s where you can find me:</p> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="https://github.com/cwgem">GitHub</a> | |
| </li> | |
| <li> | |
| <a href="https://www.twitter.com/cwgem">Twitter</a> | |
| </li> | |
| <li> | |
| <a href="http://www.linkedin.com/pub/chris-white/1/760/884/">LinkedIn</a> | |
| </li> | |
| <li> | |
| Email: cwprogram - live - com | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="sect1"> | |
| <h2 id="_articles">Articles</h2> | |
| <div class="sectionbody"> | |
| <div class="sect2"> | |
| <h3 id="_security">Security</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/security/talk-on-security-process.html">A Talk On Security Process</a> | |
| </li> | |
| <li> | |
| <a href="/security/secure-workstation.html">The Secure Workstation</a> | |
| </li> | |
| <li> | |
| <a href="/security/balanced-security.html">Balanaced Security</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_git">Git</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/git/git-force.html">On git push --force</a> | |
| </li> | |
| <li> | |
| <a href="/git/git-rebase-fixing.html">Git Rebase Fixing</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_python">Python</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/python/class-methods-and-self.html">Python Class Methods and self</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_society">Society</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/society/racism-and-sexism.html">Racism and Sexism</a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div id="footnotes"><hr /></div> | |
| <div id="footer"> | |
| <div id="footer-text"> | |
| Last updated 2013-03-21 22:47:39 PDT | |
| </div> | |
| <div id="footer-badges"> | |
| <a href="http://validator.w3.org/check?uri=referer"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://www.w3.org/Icons/valid-xhtml11-blue" | |
| alt="Valid XHTML 1.1" height="31" width="88" /> | |
| </a> | |
| <a href="http://jigsaw.w3.org/css-validator/"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://jigsaw.w3.org/css-validator/images/vcss-blue" | |
| alt="Valid CSS!" /> | |
| </a> | |
| <a rel="license" href="http://creativecommons.org/licenses/by/3.0/us/"> | |
| <img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/us/88x31.png" /> | |
| </a> | |
| </div> | |
| </div> | |
| </body> | |
| </html><!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> | |
| <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> | |
| <meta name="generator" content="AsciiDoc 8.6.8" /> | |
| <title>The Personal Site of Chris White (cwgem)</title> | |
| <style type="text/css"> | |
| /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ | |
| /* Default font. */ | |
| body { | |
| font-family: Georgia,serif; | |
| } | |
| /* Title font. */ | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Arial,Helvetica,sans-serif; | |
| } | |
| body { | |
| margin: 1em 5% 1em 5%; | |
| } | |
| a { | |
| color: blue; | |
| text-decoration: underline; | |
| } | |
| a:visited { | |
| color: fuchsia; | |
| } | |
| em { | |
| font-style: italic; | |
| color: navy; | |
| } | |
| strong { | |
| font-weight: bold; | |
| color: #083194; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| color: #527bbd; | |
| margin-top: 1.2em; | |
| margin-bottom: 0.5em; | |
| line-height: 1.3; | |
| } | |
| h1, h2, h3 { | |
| border-bottom: 2px solid silver; | |
| } | |
| h2 { | |
| padding-top: 0.5em; | |
| } | |
| h3 { | |
| float: left; | |
| } | |
| h3 + * { | |
| clear: left; | |
| } | |
| h5 { | |
| font-size: 1.0em; | |
| } | |
| div.sectionbody { | |
| margin-left: 0; | |
| } | |
| hr { | |
| border: 1px solid silver; | |
| } | |
| p { | |
| margin-top: 0.5em; | |
| margin-bottom: 0.5em; | |
| } | |
| ul, ol, li > p { | |
| margin-top: 0; | |
| } | |
| ul > li { color: #3E4349; } | |
| pre { | |
| padding: 0; | |
| margin: 0; | |
| } | |
| #author { | |
| color: #527bbd; | |
| font-weight: bold; | |
| font-size: 1.1em; | |
| } | |
| #email { | |
| } | |
| #revnumber, #revdate, #revremark { | |
| } | |
| #footer { | |
| font-size: small; | |
| border-top: 2px solid silver; | |
| padding-top: 0.5em; | |
| margin-top: 4.0em; | |
| } | |
| #footer-text { | |
| float: left; | |
| padding-bottom: 0.5em; | |
| } | |
| #footer-badges { | |
| float: right; | |
| padding-bottom: 0.5em; | |
| } | |
| #preamble { | |
| margin-top: 1.5em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.imageblock, div.exampleblock, div.verseblock, | |
| div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
| div.admonitionblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.admonitionblock { | |
| margin-top: 2.0em; | |
| margin-bottom: 2.0em; | |
| margin-right: 10%; | |
| color: #606060; | |
| } | |
| div.content { /* Block element content. */ | |
| padding: 0; | |
| } | |
| /* Block element titles. */ | |
| div.title, caption.title { | |
| color: #527bbd; | |
| font-weight: bold; | |
| text-align: left; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.5em; | |
| } | |
| div.title + * { | |
| margin-top: 0; | |
| } | |
| td div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content + div.title { | |
| margin-top: 0.0em; | |
| } | |
| div.sidebarblock > div.content { | |
| background: #ffffee; | |
| border: 1px solid #dddddd; | |
| border-left: 4px solid #f0f0f0; | |
| padding: 0.5em; | |
| } | |
| div.listingblock > div.content { | |
| border: 1px solid #dddddd; | |
| border-left: 5px solid #f0f0f0; | |
| background: #f8f8f8; | |
| padding: 0.5em; | |
| } | |
| div.quoteblock, div.verseblock { | |
| padding-left: 1.0em; | |
| margin-left: 1.0em; | |
| margin-right: 10%; | |
| border-left: 5px solid #f0f0f0; | |
| color: #777777; | |
| } | |
| div.quoteblock > div.attribution { | |
| padding-top: 0.5em; | |
| text-align: right; | |
| } | |
| div.verseblock > pre.content { | |
| font-family: inherit; | |
| font-size: inherit; | |
| } | |
| div.verseblock > div.attribution { | |
| padding-top: 0.75em; | |
| text-align: left; | |
| } | |
| /* DEPRECATED: Pre version 8.2.7 verse style literal block. */ | |
| div.verseblock + div.attribution { | |
| text-align: left; | |
| } | |
| div.admonitionblock .icon { | |
| vertical-align: top; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| text-decoration: underline; | |
| color: #527bbd; | |
| padding-right: 0.5em; | |
| } | |
| div.admonitionblock td.content { | |
| padding-left: 0.5em; | |
| border-left: 3px solid #dddddd; | |
| } | |
| div.exampleblock > div.content { | |
| border-left: 3px solid #dddddd; | |
| padding-left: 0.5em; | |
| } | |
| div.imageblock div.content { padding-left: 0; } | |
| span.image img { border-style: none; } | |
| a.image:visited { color: white; } | |
| dl { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| dt { | |
| margin-top: 0.5em; | |
| margin-bottom: 0; | |
| font-style: normal; | |
| color: navy; | |
| } | |
| dd > *:first-child { | |
| margin-top: 0.1em; | |
| } | |
| ul, ol { | |
| list-style-position: outside; | |
| } | |
| ol.arabic { | |
| list-style-type: decimal; | |
| } | |
| ol.loweralpha { | |
| list-style-type: lower-alpha; | |
| } | |
| ol.upperalpha { | |
| list-style-type: upper-alpha; | |
| } | |
| ol.lowerroman { | |
| list-style-type: lower-roman; | |
| } | |
| ol.upperroman { | |
| list-style-type: upper-roman; | |
| } | |
| div.compact ul, div.compact ol, | |
| div.compact p, div.compact p, | |
| div.compact div, div.compact div { | |
| margin-top: 0.1em; | |
| margin-bottom: 0.1em; | |
| } | |
| tfoot { | |
| font-weight: bold; | |
| } | |
| td > div.verse { | |
| white-space: pre; | |
| } | |
| div.hdlist { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| div.hdlist tr { | |
| padding-bottom: 15px; | |
| } | |
| dt.hdlist1.strong, td.hdlist1.strong { | |
| font-weight: bold; | |
| } | |
| td.hdlist1 { | |
| vertical-align: top; | |
| font-style: normal; | |
| padding-right: 0.8em; | |
| color: navy; | |
| } | |
| td.hdlist2 { | |
| vertical-align: top; | |
| } | |
| div.hdlist.compact tr { | |
| margin: 0; | |
| padding-bottom: 0; | |
| } | |
| .comment { | |
| background: yellow; | |
| } | |
| .footnote, .footnoteref { | |
| font-size: 0.8em; | |
| } | |
| span.footnote, span.footnoteref { | |
| vertical-align: super; | |
| } | |
| #footnotes { | |
| margin: 20px 0 20px 0; | |
| padding: 7px 0 0 0; | |
| } | |
| #footnotes div.footnote { | |
| margin: 0 0 5px 0; | |
| } | |
| #footnotes hr { | |
| border: none; | |
| border-top: 1px solid silver; | |
| height: 1px; | |
| text-align: left; | |
| margin-left: 0; | |
| width: 20%; | |
| min-width: 100px; | |
| } | |
| div.colist td { | |
| padding-right: 0.5em; | |
| padding-bottom: 0.3em; | |
| vertical-align: top; | |
| } | |
| div.colist td img { | |
| margin-top: 0.3em; | |
| } | |
| @media print { | |
| #footer-badges { display: none; } | |
| } | |
| #toc { | |
| margin-bottom: 2.5em; | |
| } | |
| #toctitle { | |
| color: #527bbd; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.1em; | |
| } | |
| div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| div.toclevel2 { | |
| margin-left: 2em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel3 { | |
| margin-left: 4em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel4 { | |
| margin-left: 6em; | |
| font-size: 0.9em; | |
| } | |
| span.aqua { color: aqua; } | |
| span.black { color: black; } | |
| span.blue { color: blue; } | |
| span.fuchsia { color: fuchsia; } | |
| span.gray { color: gray; } | |
| span.green { color: green; } | |
| span.lime { color: lime; } | |
| span.maroon { color: maroon; } | |
| span.navy { color: navy; } | |
| span.olive { color: olive; } | |
| span.purple { color: purple; } | |
| span.red { color: red; } | |
| span.silver { color: silver; } | |
| span.teal { color: teal; } | |
| span.white { color: white; } | |
| span.yellow { color: yellow; } | |
| span.aqua-background { background: aqua; } | |
| span.black-background { background: black; } | |
| span.blue-background { background: blue; } | |
| span.fuchsia-background { background: fuchsia; } | |
| span.gray-background { background: gray; } | |
| span.green-background { background: green; } | |
| span.lime-background { background: lime; } | |
| span.maroon-background { background: maroon; } | |
| span.navy-background { background: navy; } | |
| span.olive-background { background: olive; } | |
| span.purple-background { background: purple; } | |
| span.red-background { background: red; } | |
| span.silver-background { background: silver; } | |
| span.teal-background { background: teal; } | |
| span.white-background { background: white; } | |
| span.yellow-background { background: yellow; } | |
| span.big { font-size: 2em; } | |
| span.small { font-size: 0.6em; } | |
| span.underline { text-decoration: underline; } | |
| span.overline { text-decoration: overline; } | |
| span.line-through { text-decoration: line-through; } | |
| /* | |
| * xhtml11 specific | |
| * | |
| * */ | |
| tt { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| div.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.tableblock > table { | |
| border: 3px solid #527bbd; | |
| } | |
| thead, p.table.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.table { | |
| margin-top: 0; | |
| } | |
| /* Because the table frame attribute is overriden by CSS in most browsers. */ | |
| div.tableblock > table[frame="void"] { | |
| border-style: none; | |
| } | |
| div.tableblock > table[frame="hsides"] { | |
| border-left-style: none; | |
| border-right-style: none; | |
| } | |
| div.tableblock > table[frame="vsides"] { | |
| border-top-style: none; | |
| border-bottom-style: none; | |
| } | |
| /* | |
| * html5 specific | |
| * | |
| * */ | |
| .monospaced { | |
| font-family: monospace; | |
| font-size: inherit; | |
| color: navy; | |
| } | |
| table.tableblock { | |
| margin-top: 1.0em; | |
| margin-bottom: 1.5em; | |
| } | |
| thead, p.tableblock.header { | |
| font-weight: bold; | |
| color: #527bbd; | |
| } | |
| p.tableblock { | |
| margin-top: 0; | |
| } | |
| table.tableblock { | |
| border-width: 3px; | |
| border-spacing: 0px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| border-collapse: collapse; | |
| } | |
| th.tableblock, td.tableblock { | |
| border-width: 1px; | |
| padding: 4px; | |
| border-style: solid; | |
| border-color: #527bbd; | |
| } | |
| table.tableblock.frame-topbot { | |
| border-left-style: hidden; | |
| border-right-style: hidden; | |
| } | |
| table.tableblock.frame-sides { | |
| border-top-style: hidden; | |
| border-bottom-style: hidden; | |
| } | |
| table.tableblock.frame-none { | |
| border-style: hidden; | |
| } | |
| th.tableblock.halign-left, td.tableblock.halign-left { | |
| text-align: left; | |
| } | |
| th.tableblock.halign-center, td.tableblock.halign-center { | |
| text-align: center; | |
| } | |
| th.tableblock.halign-right, td.tableblock.halign-right { | |
| text-align: right; | |
| } | |
| th.tableblock.valign-top, td.tableblock.valign-top { | |
| vertical-align: top; | |
| } | |
| th.tableblock.valign-middle, td.tableblock.valign-middle { | |
| vertical-align: middle; | |
| } | |
| th.tableblock.valign-bottom, td.tableblock.valign-bottom { | |
| vertical-align: bottom; | |
| } | |
| /* | |
| * manpage specific | |
| * | |
| * */ | |
| body.manpage h1 { | |
| padding-top: 0.5em; | |
| padding-bottom: 0.5em; | |
| border-top: 2px solid silver; | |
| border-bottom: 2px solid silver; | |
| } | |
| body.manpage h2 { | |
| border-style: none; | |
| } | |
| body.manpage div.sectionbody { | |
| margin-left: 3em; | |
| } | |
| @media print { | |
| body.manpage div#toc { display: none; } | |
| } | |
| /* | |
| * Theme specific overrides of the preceding (asciidoc.css) CSS. | |
| * | |
| */ | |
| body { | |
| font-family: Garamond, Georgia, serif; | |
| font-size: 17px; | |
| color: #3E4349; | |
| line-height: 1.3em; | |
| } | |
| h1, h2, h3, h4, h5, h6, | |
| div.title, caption.title, | |
| thead, p.table.header, | |
| #toctitle, | |
| #author, #revnumber, #revdate, #revremark, | |
| #footer { | |
| font-family: Garmond, Georgia, serif; | |
| font-weight: normal; | |
| border-bottom-width: 0; | |
| color: #3E4349; | |
| } | |
| div.title, caption.title { color: #596673; font-weight: bold; } | |
| h1 { font-size: 240%; } | |
| h2 { font-size: 180%; } | |
| h3 { font-size: 150%; } | |
| h4 { font-size: 130%; } | |
| h5 { font-size: 115%; } | |
| h6 { font-size: 100%; } | |
| #header h1 { margin-top: 0; } | |
| #toc { | |
| color: #444444; | |
| line-height: 1.5; | |
| padding-top: 1.5em; | |
| } | |
| #toctitle { | |
| font-size: 20px; | |
| } | |
| #toc a { | |
| border-bottom: 1px dotted #999999; | |
| color: #444444 !important; | |
| text-decoration: none !important; | |
| } | |
| #toc a:hover { | |
| border-bottom: 1px solid #6D4100; | |
| color: #6D4100 !important; | |
| text-decoration: none !important; | |
| } | |
| div.toclevel1 { margin-top: 0.2em; font-size: 16px; } | |
| div.toclevel2 { margin-top: 0.15em; font-size: 14px; } | |
| em, dt, td.hdlist1 { color: black; } | |
| strong { color: #3E4349; } | |
| a { color: #004B6B; text-decoration: none; border-bottom: 1px dotted #004B6B; } | |
| a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; } | |
| a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; } | |
| div.tableblock > table, table.tableblock { border: 3px solid #E8E8E8; } | |
| th.tableblock, td.tableblock { border: 1px solid #E8E8E8; } | |
| ul > li > * { color: #3E4349; } | |
| pre, tt, .monospaced { font-family: Consolas,Menlo,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace; } | |
| tt, .monospaced { font-size: 0.9em; color: black; | |
| } | |
| div.exampleblock > div.content, div.sidebarblock > div.content, div.listingblock > div.content { border-width: 0 0 0 3px; border-color: #E8E8E8; } | |
| div.verseblock { border-left-width: 0; margin-left: 3em; } | |
| div.quoteblock { border-left-width: 3px; margin-left: 0; margin-right: 0;} | |
| div.admonitionblock td.content { border-left: 3px solid #E8E8E8; } | |
| /* | |
| pygmentize filter | |
| */ | |
| .highlight .hll { background-color: #ffffcc } | |
| .highlight { background: #f4f4f4; } | |
| .highlight .c { color: #008800; font-style: italic } /* Comment */ | |
| .highlight .err { border: 1px solid #FF0000 } /* Error */ | |
| .highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */ | |
| .highlight .o { color: #666666 } /* Operator */ | |
| .highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */ | |
| .highlight .cp { color: #008800 } /* Comment.Preproc */ | |
| .highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */ | |
| .highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */ | |
| .highlight .gd { color: #A00000 } /* Generic.Deleted */ | |
| .highlight .ge { font-style: italic } /* Generic.Emph */ | |
| .highlight .gr { color: #FF0000 } /* Generic.Error */ | |
| .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |
| .highlight .gi { color: #00A000 } /* Generic.Inserted */ | |
| .highlight .go { color: #808080 } /* Generic.Output */ | |
| .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ | |
| .highlight .gs { font-weight: bold } /* Generic.Strong */ | |
| .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |
| .highlight .gt { color: #0040D0 } /* Generic.Traceback */ | |
| .highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ | |
| .highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ | |
| .highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */ | |
| .highlight .kp { color: #AA22FF } /* Keyword.Pseudo */ | |
| .highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ | |
| .highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */ | |
| .highlight .m { color: #666666 } /* Literal.Number */ | |
| .highlight .s { color: #BB4444 } /* Literal.String */ | |
| .highlight .na { color: #BB4444 } /* Name.Attribute */ | |
| .highlight .nb { color: #AA22FF } /* Name.Builtin */ | |
| .highlight .nc { color: #0000FF } /* Name.Class */ | |
| .highlight .no { color: #880000 } /* Name.Constant */ | |
| .highlight .nd { color: #AA22FF } /* Name.Decorator */ | |
| .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ | |
| .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ | |
| .highlight .nf { color: #00A000 } /* Name.Function */ | |
| .highlight .nl { color: #A0A000 } /* Name.Label */ | |
| .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ | |
| .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ | |
| .highlight .nv { color: #B8860B } /* Name.Variable */ | |
| .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ | |
| .highlight .w { color: #bbbbbb } /* Text.Whitespace */ | |
| .highlight .mf { color: #666666 } /* Literal.Number.Float */ | |
| .highlight .mh { color: #666666 } /* Literal.Number.Hex */ | |
| .highlight .mi { color: #666666 } /* Literal.Number.Integer */ | |
| .highlight .mo { color: #666666 } /* Literal.Number.Oct */ | |
| .highlight .sb { color: #BB4444 } /* Literal.String.Backtick */ | |
| .highlight .sc { color: #BB4444 } /* Literal.String.Char */ | |
| .highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ | |
| .highlight .s2 { color: #BB4444 } /* Literal.String.Double */ | |
| .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ | |
| .highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */ | |
| .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ | |
| .highlight .sx { color: #008000 } /* Literal.String.Other */ | |
| .highlight .sr { color: #BB6688 } /* Literal.String.Regex */ | |
| .highlight .s1 { color: #BB4444 } /* Literal.String.Single */ | |
| .highlight .ss { color: #B8860B } /* Literal.String.Symbol */ | |
| .highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */ | |
| .highlight .vc { color: #B8860B } /* Name.Variable.Class */ | |
| .highlight .vg { color: #B8860B } /* Name.Variable.Global */ | |
| .highlight .vi { color: #B8860B } /* Name.Variable.Instance */ | |
| .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ | |
| </style> | |
| <script type="text/javascript"> | |
| /*<+'])'); | |
| // Function that scans the DOM tree for header elements (the DOM2 | |
| // nodeIterator API would be a better technique but not supported by all | |
| // browsers). | |
| var iterate = function (el) { | |
| for (var i = el.firstChild; i != null; i = i.nextSibling) { | |
| if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { | |
| var mo = re.exec(i.tagName); | |
| if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { | |
| result[result.length] = new TocEntry(i, getText(i), mo[1]-1); | |
| } | |
| iterate(i); | |
| } | |
| } | |
| } | |
| iterate(el); | |
| return result; | |
| } | |
| var toc = document.getElementById("toc"); | |
| if (!toc) { | |
| return; | |
| } | |
| // Delete existing TOC entries in case we're reloading the TOC. | |
| var tocEntriesToRemove = []; | |
| var i; | |
| for (i = 0; i < toc.childNodes.length; i++) { | |
| var entry = toc.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' | |
| && entry.getAttribute("class") | |
| && entry.getAttribute("class").match(/^toclevel/)) | |
| tocEntriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < tocEntriesToRemove.length; i++) { | |
| toc.removeChild(tocEntriesToRemove[i]); | |
| } | |
| // Rebuild TOC entries. | |
| var entries = tocEntries(document.getElementById("content"), toclevels); | |
| for (var i = 0; i < entries.length; ++i) { | |
| var entry = entries[i]; | |
| if (entry.element.id == "") | |
| entry.element.id = "_toc_" + i; | |
| var a = document.createElement("a"); | |
| a.href = "#" + entry.element.id; | |
| a.appendChild(document.createTextNode(entry.text)); | |
| var div = document.createElement("div"); | |
| div.appendChild(a); | |
| div.className = "toclevel" + entry.toclevel; | |
| toc.appendChild(div); | |
| } | |
| if (entries.length == 0) | |
| toc.parentNode.removeChild(toc); | |
| }, | |
| ///////////////////////////////////////////////////////////////////// | |
| // Footnotes generator | |
| ///////////////////////////////////////////////////////////////////// | |
| /* Based on footnote generation code from: | |
| * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html | |
| */ | |
| footnotes: function () { | |
| // Delete existing footnote entries in case we're reloading the footnodes. | |
| var i; | |
| var noteholder = document.getElementById("footnotes"); | |
| if (!noteholder) { | |
| return; | |
| } | |
| var entriesToRemove = []; | |
| for (i = 0; i < noteholder.childNodes.length; i++) { | |
| var entry = noteholder.childNodes[i]; | |
| if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") | |
| entriesToRemove.push(entry); | |
| } | |
| for (i = 0; i < entriesToRemove.length; i++) { | |
| noteholder.removeChild(entriesToRemove[i]); | |
| } | |
| // Rebuild footnote entries. | |
| var cont = document.getElementById("content"); | |
| var spans = cont.getElementsByTagName("span"); | |
| var refs = {}; | |
| var n = 0; | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnote") { | |
| n++; | |
| var note = spans[i].getAttribute("data-note"); | |
| if (!note) { | |
| // Use [\s\S] in place of . so multi-line matches work. | |
| // Because JavaScript has no s (dotall) regex flag. | |
| note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; | |
| spans[i].innerHTML = | |
| "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| spans[i].setAttribute("data-note", note); | |
| } | |
| noteholder.innerHTML += | |
| "<div class='footnote' id='_footnote_" + n + "'>" + | |
| "<a href='#_footnoteref_" + n + "' title='Return to text'>" + | |
| n + "</a>. " + note + "</div>"; | |
| var id =spans[i].getAttribute("id"); | |
| if (id != null) refs["#"+id] = n; | |
| } | |
| } | |
| if (n == 0) | |
| noteholder.parentNode.removeChild(noteholder); | |
| else { | |
| // Process footnoterefs. | |
| for (i=0; i<spans.length; i++) { | |
| if (spans[i].className == "footnoteref") { | |
| var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); | |
| href = href.match(/#.*/)[0]; // Because IE return full URL. | |
| n = refs[href]; | |
| spans[i].innerHTML = | |
| "[<a href='#_footnote_" + n + | |
| "' title='View footnote' class='footnote'>" + n + "</a>]"; | |
| } | |
| } | |
| } | |
| }, | |
| install: function(toclevels) { | |
| var timerId; | |
| function reinstall() { | |
| asciidoc.footnotes(); | |
| if (toclevels) { | |
| asciidoc.toc(toclevels); | |
| } | |
| } | |
| function reinstallAndRemoveTimer() { | |
| clearInterval(timerId); | |
| reinstall(); | |
| } | |
| timerId = setInterval(reinstall, 500); | |
| if (document.addEventListener) | |
| document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); | |
| else | |
| window.onload = reinstallAndRemoveTimer; | |
| } | |
| } | |
| asciidoc.install(); | |
| /*]]>*/ | |
| </script> | |
| </head> | |
| <body class="article"> | |
| <div id="header"> | |
| <h1>The Personal Site of Chris White (cwgem)</h1> | |
| </div> | |
| <div id="content"> | |
| <div class="sect1"> | |
| <h2 id="_introduction">Introduction</h2> | |
| <div class="sectionbody"> | |
| <p class="paragraph">Hello and welcome to my personal site hosted on <a href="http://pages.github.com">GitHub pages</a>. My name is Chris White and I work as a software engineer at <a href="http://www.engineyard.com">EngineYard</a>. I utilize a number of tools to get the job done, including <a href="http://www.perl.org">Perl</a>, <a href="http://www.python.org">Python</a>, and <a href="http://www.ruby-lang.org">Ruby</a>. Recently I started to look into <a href="http://www.erlang.org">Erlang</a> for API services. When I’m not programming I study Japanese, and hope to live and work there someday. My main open source project I work with is <a href="https://rvm.io">RVM</a>. Here’s where you can find me:</p> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="https://github.com/cwgem">GitHub</a> | |
| </li> | |
| <li> | |
| <a href="https://www.twitter.com/cwgem">Twitter</a> | |
| </li> | |
| <li> | |
| <a href="http://www.linkedin.com/pub/chris-white/1/760/884/">LinkedIn</a> | |
| </li> | |
| <li> | |
| Email: cwprogram - live - com | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="sect1"> | |
| <h2 id="_articles">Articles</h2> | |
| <div class="sectionbody"> | |
| <div class="sect2"> | |
| <h3 id="_security">Security</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/security/talk-on-security-process.html">A Talk On Security Process</a> | |
| </li> | |
| <li> | |
| <a href="/security/secure-workstation.html">The Secure Workstation</a> | |
| </li> | |
| <li> | |
| <a href="/security/balanced-security.html">Balanaced Security</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_git">Git</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/git/git-force.html">On git push --force</a> | |
| </li> | |
| <li> | |
| <a href="/git/git-rebase-fixing.html">Git Rebase Fixing</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_python">Python</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/python/class-methods-and-self.html">Python Class Methods and self</a> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="sect2"> | |
| <h3 id="_society">Society</h3> | |
| <ul class="ulist"> | |
| <li> | |
| <a href="/society/racism-and-sexism.html">Racism and Sexism</a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div id="footnotes"><hr /></div> | |
| <div id="footer"> | |
| <div id="footer-text"> | |
| Last updated 2013-03-21 22:47:39 PDT | |
| </div> | |
| <div id="footer-badges"> | |
| <a href="http://validator.w3.org/check?uri=referer"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://www.w3.org/Icons/valid-xhtml11-blue" | |
| alt="Valid XHTML 1.1" height="31" width="88" /> | |
| </a> | |
| <a href="http://jigsaw.w3.org/css-validator/"> | |
| <img style="border:0;width:88px;height:31px" | |
| src="http://jigsaw.w3.org/css-validator/images/vcss-blue" | |
| alt="Valid CSS!" /> | |
| </a> | |
| <a rel="license" href="http://creativecommons.org/licenses/by/3.0/us/"> | |
| <img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/us/88x31.png" /> | |
| </a> | |
| </div> | |
| </div> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment