Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Miscellaneous #22

Merged
merged 5 commits into from
Jun 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 55 additions & 71 deletions resume.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,35 @@

<section>
<title>experience</title>
<record>
<title>Secure Agility</title>
<subtitle>Lead DevOps Engineer</subtitle>
<summary>Lead cross-SaaS integration architect; Design, author, and oversea custom integrations and workflows interconnecting multiple SaaS services.</summary>
<duration start="2023-08-01T00:00:00Z" end="" />
<location>
<city>Sydney</city>
<country isocode="AUS">Australia</country>
</location>
<keywords>
<keyword>Alembic</keyword>
<keyword>Autotask</keyword>
<keyword>Azure DevOps Services</keyword>
<keyword>Azure</keyword>
<keyword>Ekahuau</keyword>
<keyword>Float</keyword>
<keyword>GitHub</keyword>
<keyword>ITGlue</keyword>
<keyword>LogicMonitor</keyword>
<keyword>PowerBI</keyword>
<keyword>Python</keyword>
<keyword>Terraform</keyword>
</keywords>
</record>
<record>
<title>Singlife</title>
<subtitle>Technical Lead</subtitle>
<summary>Mobile backend tech lead; Design, author, and review RESTful API specifications and moderate related infrastructure cohering to compliance and security statues.</summary>
<duration start="2022-04-04T00:00:00Z" end="" />
<duration start="2022-04-04T00:00:00Z" end="2023-07-31T00:00:00Z" />
<location>
<city>Singapore</city>
<country isocode="SGP">Singapore</country>
Expand Down Expand Up @@ -250,12 +274,6 @@
<title>Lakeland Inter-American School</title>
<subtitle>Pearson Edexcel AS Level</subtitle>
<transcript>https://courses.edx.org/certificates/e23bace355ab497f9388ac6d0562525e</transcript>
<articles>
<article>
<property>Accounting</property>
<value>A</value>
</article>
</articles>
<duration start="2014-06-01T00:00:00Z" end="2015-07-01T00:00:00Z" />
<location>
<city>Colombo</city>
Expand All @@ -266,32 +284,6 @@
<title>Lakeland Inter-American School</title>
<subtitle>Pearson Edexcel Ordinary Level</subtitle>
<transcript>https://cdn.glitch.com/bddbe95a-e8d0-4ea0-8afc-88c93c2ebd46%2Folevel.jpg</transcript>
<articles>
<article>
<property>Mathematics</property>
<value>A*</value>
</article>
<article>
<property>Further Pure Mathematics</property>
<value>A</value>
</article>
<article>
<property>Accounting</property>
<value>A</value>
</article>
<article>
<property>Business Studies</property>
<value>B</value>
</article>
<article>
<property>Economics</property>
<value>B</value>
</article>
<article>
<property>English Language</property>
<value>B</value>
</article>
</articles>
<duration start="2011-03-01T00:00:00Z" end="2014-06-01T00:00:00Z" />
<location>
<city>Colombo</city>
Expand All @@ -300,51 +292,43 @@
</record>
</section>

<section>
<title>languages</title>
<list>
<item>C</item>
<item>C++</item>
<item>C#</item>
<item>CSS</item>
<item>DTD</item>
<item>HTML</item>
<item>Java</item>
<item>JavaScript</item>
<item>LISP</item>
<item>NesC</item>
<item>Objective-C</item>
<item>Pascal</item>
<item>Perl</item>
<item>PHP</item>
<item>Python</item>
<item>SQL</item>
<item>SVG</item>
<item>VBScript</item>
<item>XHTML</item>
<item>XML Schema</item>
<item>XPath</item>
<item>XQuery</item>
<item>XSLT</item>
<item>English</item>
<item>Japanese</item>
<item>Sinhala</item>
</list>
</section>

<section>
<title>projects</title>
<record>
<title>Thin Client Infrastructure for Lab Environment</title>
<summary>Designed and soft-launched a tier-two compliant laboratory infrastructure comprising a total capacity of ~ten-hundred diskless nodes with a LWAPP powered wireless access network.</summary>
<title>Singlife's BaaS provider reverse-engeering</title>
<list>
<item>Associate technical lead for Railsbank replacement with in-house BaaS service</item>
<item>Coarchitectured in-house replacement service to extactly replicate Railsbank functionalities</item>
<item>Designed and authored the state machines for transaction execution - interledger, manual credit, and manual debit transactions</item>
<item>Designed and authored DBS outbound and inbound integration connectors to facilitate Fast and PayNow payments and ICN notifications</item>
</list>
</record>
<record>
<title>Habitto Money GraphQL and REST backend</title>
<list>
<item>Lead consultant for setting up initial backend monorepo and related pipelines</item>
<item>Setup initial Nx monorepo, BitBucket OpenID runner authentication, and inital Terraform setup</item>
<item>Later, consultant and lead developer for authoring fully automated self provisioning review environments using BitBucket CI/CD with multiple deployables</item>
<item>Lead developer for authoring a seamless custom in-house replacement solution for Fivetran</item>
</list>
</record>
<record>
<title>Distributed Management Implementation</title>
<summary>Drafted a RPC-based policy synchronisation discharge for the multipoint bandwidth management system subsuming an aggregated link amplitude of 30 Gb/s.</summary>
<title>Dealt Australia</title>
<list>
<item>Lead architect for migrating existing customer-hosted Hyperledger Fabric to ImmuDB</item>
<item>Automated all application deployments and configuration management using AWS CodeDeploy and BitBucket CI/CD</item>
<item>Migrated all existing infrastructure to use IaC for management and provisioning and added enforcement checks to prevent manual infastructure manipulations</item>
<item>Revamped virtual cloud networking to incorporate public, private, and NAT subnets and redesigned the microservice entrypoints and inter-service communication</item>
<item>Standardized logging, monitoring, and alerting</item>
</list>
</record>
<record>
<title>On-Premises to Cloud Migration</title>
<summary>Designed and overviewed the migration of an on-premises infrastructure for collection of massive datasets capable of 500M HTTP hits per day with peaks of 10K per second.</summary>
<title>CaterCare Australia</title>
<list>
<item>Lead consultant and developer for standardizing GitHub developer workflows</item>
<item>Wrote a custom extensible GitHub Action to facilitate auto-labelling and auto-approving for a specific set of pull-requests obeying a predefined ruleset that require no reviews</item>
<item>Set up branch/tag protection rules, code owners, secret scanning, and repo properties to standardize merging and pull-request approvals</item>
</list>
</record>
</section>

Expand Down
127 changes: 91 additions & 36 deletions themes/default.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,11 @@
text-transform: capitalize;
}

#resume > .section > .records > .record > .list {
margin: 0;
padding-inline-start: 2.5ch;
}

@font-face {
font-style: normal;
font-family: 'Garamond';
Expand All @@ -190,7 +195,7 @@
/* remove all background graphics */
html, body { background-color: initial; }

/* fill resume edge-to-edge */
/* fill resume edge-to-edge */
main { margin: 0; }

/* reset transformations */
Expand Down Expand Up @@ -280,19 +285,25 @@
<xsl:apply-templates select="metadata" />
</div>
<xsl:for-each select="/resume/section">
<div class="section"><xsl:apply-templates select="." /></div>
<div class="section">
<xsl:apply-templates select="." />
</div>
</xsl:for-each>
</div>
</xsl:template>

<xsl:template match="/resume/metadata">
<h1 class="title"><xsl:value-of select="name" /></h1>
<h1 class="title">
<xsl:value-of select="name" />
</h1>
<div class="section sites">
<h2 class="title">sites</h2>
<xsl:for-each select="sites/site">
<h3 class="record">
<a>
<xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<xsl:value-of select="." />
</a>
</h3>
Expand All @@ -302,93 +313,137 @@
<h2 class="title">contact</h2>
<h3 class="record">
<a>
<xsl:attribute name="href"><xsl:value-of select="contact/mobile/@href" /></xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="contact/mobile/@href" />
</xsl:attribute>
<xsl:value-of select="contact/mobile" />
</a>
</h3>
<h3 class="record">
<a>
<xsl:attribute name="href"><xsl:value-of select="contact/email/@href" /></xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="contact/email/@href" />
</xsl:attribute>
<xsl:value-of select="contact/email" />
</a>
</h3>
</div>
</xsl:template>

<xsl:template match="/resume/section">
<div class="titles">
<h2 class="title"><xsl:value-of select="title" /></h2>
</div>
<div class="records">
<div class="titles">
<h2 class="title">
<xsl:value-of select="title" />
</h2>
</div>
<div class="records">
<xsl:if test="not(list)">
<xsl:for-each select="record">
<div class="record"><xsl:apply-templates select="." /></div>
</xsl:for-each>
<xsl:for-each select="record">
<div class="record">
<xsl:apply-templates select="." />
</div>
</xsl:for-each>
</xsl:if>
<xsl:if test="boolean(list)">
<ul class="list">
<xsl:if test="boolean(list)">
<ul class="list">
<xsl:for-each select="list/item">
<li class="item"><h3 class="record"><xsl:value-of select="." /></h3></li>
<li class="item">
<h3 class="record">
<xsl:value-of select="." />
</h3>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</div>
</xsl:if>
</div>
</xsl:template>

<xsl:template match="/resume/section/record">
<h3 class="title"><xsl:value-of select="title" /></h3>
<p class="location"><xsl:apply-templates select="location" /></p>
<h3 class="title">
<xsl:value-of select="title" />
</h3>
<p class="location">
<xsl:apply-templates select="location" />
</p>
<h4 class="subtitle">
<xsl:if test="not(transcript)">
<xsl:value-of select="subtitle" />
</xsl:if>
<xsl:if test="boolean(transcript)">
<a>
<xsl:attribute name="href"><xsl:value-of select="transcript" /></xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="transcript" />
</xsl:attribute>
<xsl:value-of select="subtitle" />
</a>
</xsl:if>
</h4>
<p class="duration"><xsl:apply-templates select="duration" /></p>
<p class="summary"><xsl:value-of select="summary" disable-output-escaping="yes" /></p>
<p class="duration">
<xsl:apply-templates select="duration" />
</p>
<p class="summary">
<xsl:value-of select="summary" disable-output-escaping="yes" />
</p>
<xsl:if test="boolean(list)">
<ul class="list">
<xsl:for-each select="list/item">
<li class="item">
<xsl:value-of select="." />
</li>
</xsl:for-each>
</ul>
</xsl:if>
<xsl:if test="boolean(articles)">
<dl class="article"><xsl:apply-templates select="articles" /></dl>
<dl class="article">
<xsl:apply-templates select="articles" />
</dl>
</xsl:if>
<xsl:if test="boolean(keywords)">
<p class="keywords"><xsl:apply-templates select="keywords" /></p>
<p class="keywords">
<xsl:apply-templates select="keywords" />
</p>
</xsl:if>
</xsl:template>

<xsl:template match="/resume/section/record/location">
<span class="city">
<xsl:value-of select="city" />
</span>,
<span class="country">
<xsl:attribute name="data-isocode"><xsl:value-of select="@isocode" /></xsl:attribute>
</span>, <span class="country">
<xsl:attribute name="data-isocode">
<xsl:value-of select="@isocode" />
</xsl:attribute>
<xsl:value-of select="country" />
</span>
</xsl:template>

<xsl:template match="/resume/section/record/duration">
<span class="date">
<xsl:attribute name="data-utc"><xsl:value-of select="@start" /></xsl:attribute>
</span>
-
<span class="date">
<xsl:attribute name="data-utc"><xsl:value-of select="@end" /></xsl:attribute>
<xsl:attribute name="data-utc">
<xsl:value-of select="@start" />
</xsl:attribute>
</span> - <span class="date">
<xsl:attribute name="data-utc">
<xsl:value-of select="@end" />
</xsl:attribute>
</span>
</xsl:template>

<xsl:template match="/resume/section/record/articles">
<xsl:for-each select="article">
<dt class="property"><xsl:value-of select="property" /></dt>
<dd class="value"><xsl:value-of select="value" /></dd>
<dt class="property">
<xsl:value-of select="property" />
</dt>
<dd class="value">
<xsl:value-of select="value" />
</dd>
</xsl:for-each>
</xsl:template>

<xsl:template match="/resume/section/record/keywords">
<xsl:for-each select="keyword">
<span class="keyword"><xsl:value-of select="." /></span>
<span class="keyword">
<xsl:value-of select="." />
</span>
</xsl:for-each>
</xsl:template>

Expand Down