# Gary V. Vaughan

### Contact Me:

    Cell:        (669) 999-1165
    Residing:    San Jose, CA 95123
    Citizenship: British

## Profile

I am not actively seeking new positions right now, but I'm always open to learn about new and interesting opportunities to exercise and deepen my engineering and programming skills, and work together with smart ambitious people on exciting projects.

My career has been built around **Software Portability**, **Compilers** and **Software Build Tools**, more recently leaning towards **DevOps**, **CI** & **CD**, as well as modernizing and improving the architecture of legacy code. Additionally I enjoy spending some of my spare time writing, maintaining and contributing to **Free Software**. I'm especially interested in **BDD** and **Functional Style Programming** as demonstrated by many of my GitHub projects listed below, but I always like learning more about algorithms, data structures and programming languages, of which Lua has remained my favourite for more than 10 years now.

Until relocating to the USA for my current role, I spent a decade as a perpetual traveler, working remotely while moving from country to country each time a tourist visa expired, completing three and a half circuits of the planet so far.

## Key Technical Skills

## Notable Personal Achievements

## Professional Experience

### Feb 2105-Present: Developer Tools, Build & Integration Engineer, _Apple, inc_

_1 Infinite Loop, Cupertino, CA 95014 T: (408) 996 1010_

Maintaining **Jenkins** continuous integration processes for _Xcode_, **clang** and **swiftlang** with multiple internal daily releases; regression testing of compilers by managing automated builds and installs all of macOS, iOS, tvOS and watchOS on multiple devices. Development and maintenance of novel software automations in **Python**.

### Apr 2004-Nov 2014: Software Engineer, _The Written Word, inc_

_986 W. Lake St. Suite 108, Roselle, IL 60172 T: +1 800 372 7476_

Infrastructure, implementation and integration of natively compiled Free Software applications and libraries for current and legacy commercial Unix operating systems including **AIX**, **HPUX**, **IRIX**, **Linux**, **Solaris** and **Tru64 Unix**. "Redhat for mainframe computers"

### 2009-2012: Marketing Director, _New Millennium, Inc_

_New Millennium Investments Inc, Mahe, Seychelles T: +61 8 94675745_

Managing the entire public facing side of the company, along with new media advertising. Developing and testing **high-frequency trading algorithms** for commodities and forex trading 'bots.

### 2006-2007: Free Software Architect, _CherryTec Innovation Centre_

_(No longer in business)_

Writing and delivering **30 hour courses** on **GNU/Linux** and the **GNU compiler tool-chain**.

### 2002-2006: Senior Software Engineer, Trusted Information Management, _QinetiQ_

_Malvern Technology Centre, St Andrews Road, Malvern, UK T: +44 1684 894000_

Received developed security vetting for **UK DV Clearance**, and additional codeword security clearances for above top-secret military projects.

### 2000-2002: Application Support and Development, _DERA/DSTL_

Since moved to: _Porton Down, Salisbury, Wiltshire, UK T: +44 1980 613121_

Received **UK SC Clearance**.

Maintaining and enhancing systems for fusion, plotting and geospatial visualisation of classified SIGINT (Signals Intelligence) data in **C** and **C++**.

### 1997-2000: Senior Analyst Programmer, _Logica Aldiscon_

_(Since acquired by CGI-group UK, and formerly Aethos Communications Ltd.)_

Network and Telecoms Application Development on **HPUX**.

### 1996-1997: Systems Administrator, _Group 4 Total Security_

Since renamed: _G4S, Alexandra Way, Ashchurch, Gloucestershire, UK T: +44 870 4117700_

Authored the _Group 4_ C coding standards documentation to pass their **ISO9001 audit**.

### 1994-1996: Programmer, _Misys Financial Systems_

_Buckholt Drive, Warndon, Worcester, UK T: +44 20 33205000_

Rewriting a legacy document editor and processing system using **Informix RDB** and **C**.

## Projects

## Publications

## Education

#### Code Sample


   This HTML page is a Lua quine! You can select all, copy and run through a Lua
   interpreter, and then save the regenerated the HTML source (styling and markup
   included) where you can look at it again in your browser... and repeat.
   It's just a toy though: A better engineered solution for a generalised Markdown
   parser would be to build a parse tree from the ASCII source text, and pass
   that to a templated HTML generator. ...or get one from LuaRocks! ]]--
   __index = {
      css = [[
         body {background:#fdf6e3; color:#586e75; line-height:1.4;
            font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;}
         @media screen { body {font-size:14px; margin:auto; width:80%;}
            .hide {color:#fdf6e3;} .muted {color:#ddd8d5;}
            pre {background:#ddd8d5; border:1px solid #586e75;}
            a:hover {background:#ddd8d5; text-decoration:underline;}
         @media print { body {font-size:12px; margin:3%; width:94%;}
            .hide,.muted {display:none;} h4 {page-break-before:always;}
            li a:link:after, li a:visited:after {content:" (" attr(href) ") ";
               font-size:90%;text-decoration:underline;} }
         p, pre {margin-left:2em;}
         pre {font-size:12px; padding:0.5em; overflow-x:auto;}
         a {color:#268bd2; font-weight:bold; text-decoration:none; outline:0;}
         br {line-height:0;} h1,h4 {color:#b58900; font-size:200%;}
         h2 {color:#2aa198; margin-top:0;} h3 {color:#859900; margin-top:0;}
      -- Ordered maps of match-pattern -> replacement-text.
      entities = {{['&']='&amp;'}, {['<']='&lt;'}, {['>']='&gt;'}},
      subs = {
         {['\n\n'] = '\n</p>\n<p>\n'},
         {['<p>%s*(#+)(.-)%s*</p>'] = function(h, s)
               return table.concat({#h > 1 and '<br/>' or '',
                  '<h', tostring(#h), '><span class="muted">',
                  h, '</span>', s, '</h', tostring(#h), '>'
         {['\n *%*%s*(.-)%s*\n'] =
            '\n<ul>\n\t<li><span class="hide">* </span>%1</li>\n</ul>\n'},
         {['</ul>\n<ul>\n']      = ''},
         {['\n    ([^\n]+)\n']   = '\n<pre>\n%1\n</pre>\n'},
         {['</pre>%s*<pre>\n']   = '    '},
         -- 2 spaces will expand twice to preserve 4 space indent for the quine!
         {['<pre>\n']            = '<pre>\n  '},
         {['(%*%*)(.-)%*%*']     = '<span class="muted">%1</span>' ..
            '<strong>%2</strong><span class="muted">%1</span>'},
         {['(_)(.-)_']           = '<span class="muted">%1</span>' ..
            '<em>%2</em><span class="muted">%1</span>'},
         {['(`)(.-)`']           = '<span class="muted">%1</span>' ..
            '<code>%2</code><span class="muted">%1</span>'},
         {['%[(.-)%]%((.-)%)']   = '<a href="%2">%1</a>'},
      -- A higher order function!
      mapsubst = function(self, orderdict, str, f)
         for _, item in ipairs(orderdict) do str = f(str, item) end
         return str
      -- Pattern replacement helpers.
      subst = function(self, text)
         return self:mapsubst(self.entities, text, function(str, item)
            -- Applied once to avoid making nested entity expansions.
            return str:gsub(next(item))
      render = function(self, text)
         return self:mapsubst(self.subs, self:subst(text), function(str, item)
            -- Applied twice to find overlapping matches.
            return str:gsub(next(item)):gsub(next(item))
   -- Entry point: slurp and split myself, do substitutions, and output.
   __call = function(self)
         '<html lang="en">', '<head>', '<title>Gary V. Vaughan</title>',
         '<style type="text/css">', self.css, '</style>',
         '<link href="prism.css" rel="stylesheet" type="text/css">',
         '</head>', '<body>',
         '<p class="muted">setmetatable({resume=[=[',	
         self:render('\n\n' .. self.resume), '<p class="muted">]=]},</p>',
         '<pre><code class="language-lua">' ..
         self:subst('*a':gsub('^.-%]=]}, ', ''):gsub('%)%(%)%s*$', '')) ..
         '</code></pre>', '<p class="muted">)()</p>',
         -- This is cheating, but source code requires syntax highlighting!
         '<script src="prism.js"></script>', '</body>', '</html>',
      }, '\n'))