Compare commits

...

3 Commits

6 changed files with 72 additions and 87 deletions

View File

@ -35,10 +35,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</pre>
# Base
**[Base](https://getbase.org/)** is a rock solid, responsive CSS framework based on Normalize.css. Parts of Base are used in addition to the Juice theme.
# Zola
[Zola](https://www.getzola.org) is a fast static site generator in a single binary with everything built-in.
**[Zola](https://www.getzola.org)** is a fast static site generator in a single binary with everything built-in.
# icons8
We use several [icons8](https://icons8.com) images throughout the site.
We use several **[icons8](https://icons8.com)** images throughout the site.

View File

@ -6,7 +6,7 @@ weight = 1
# Summary
I am a polyglot developer with considerable experience in Ruby and Rails and bash. I excel at documenting critical technical processes for other engineers, being a force multiplier, and mentoring other developers. I am very passionate about finding new and creative ways to automate deployments in cloud environments so that business value can be delivered quickly and efficiently.
I am a polyglot developer with considerable experience in Ruby and Rails and cloud infrastructure. I excel at being a force multiplier, mentoring developers, and writing clear and useful documentation for other engineers. I am passionate about giving my teams the tools they need to develop and deliver software by creating powerful and simple development and deployment environments.
# Work History
@ -20,8 +20,11 @@ September 2021 - 20 January 2023
* Single-handedly reduced new engineer onboarding time to about 2 hours
* Supported the entire engineering department with the local development environment in both Linux and macOS
* Rewrote the git-hosted markdown documentation into a complete tutorial and walkthrough to onboard new developers using Notion
* Designed complex data structures for use in all countries serviced by Oyster
* Developed policies and best practices for features across multiple teams and stakeholders, including product
* Designed complex data structures for use in all countries serviced by Oyster
* Collaborated with product owners to document feature requirements and time estimates
* Implemented features of all sizes as well as writing fixes for ad-hoc failures
* Added instrumentation to track arbitrary metrics for features and performance
* Participated in many technical interviews, resulting in hiring many new engineers including other Staff level engineers
## Consolo Services / WellSky, Remote
@ -55,7 +58,46 @@ October 2004 - June 2006
# Technologies
{{ capsule(item="Ruby") }} {{ capsule(item="Ruby-on-Rails") }} {{ capsule(item="Rust") }} {{ capsule(item="Kubernetes") }} {{ capsule(item="Helm") }} {{ capsule(item="Cloud infrastructure (AWS & GCP)") }} {{ capsule(item="Github Actions") }} {{ capsule(item="Google Cloud Build") }} {{ capsule(item="Heroku") }} {{ capsule(item="DataDog") }} {{ capsule(item="NewRelic") }} {{ capsule(item="Prometheus") }} {{ capsule(item="Alertmanager") }} {{ capsule(item="Grafana") }} {{ capsule(item="Nix") }} {{ capsule(item="Docker") }} {{ capsule(item="Podman") }} {{ capsule(item="Terraform") }} {{ capsule(item="Ansible") }} {{ capsule(item="bash / sh scripting") }} {{ capsule(item="JavaScript") }} {{ capsule(item="TypeScript") }} {{ capsule(item="Notion") }} {{ capsule(item="mdbook") }} {{ capsule(item="Erlang") }} {{ capsule(item="Elixir") }} {{ capsule(item="PostgreSQL") }} {{ capsule(item="SQLite") }} {{ capsule(item="Linux") }} {{ capsule(item="FreeBSD") }} {{ capsule(item="GNU Make") }} {{ capsule(item="just") }} {{ capsule(item="nginx") }} {{ capsule(item="caddy") }} {{ capsule(item="JSON") }} {{ capsule(item="YAML") }} {{ capsule(item="TOML") }} {{ capsule(item="REST") }} {{ capsule(item="GraphQL") }} {{ capsule(item="HTTP(S)") }}
<table class="table-responsive">
<tbody>
<tr>
<td>Ruby and Ruby on Rails</td>
<td>I have used Ruby and Rails professionally since 2006</td>
</tr>
<tr>
<td>Documentation</td>
<td>Notion, <code><a href="https://rust-lang.github.io/mdBook/">mdbook</a></code>, and Markdown</td>
</tr>
<tr>
<td>Cloud Computing</td>
<td>AWS and GCP</td>
</tr>
<tr>
<td>Containers</td>
<td>Docker, <code><a href="https://podman.io/">podman</a></code>, <code><a href="https://firecracker-microvm.github.io/">firecracker</a></code>, and FreeBSD jails</td>
</tr>
<tr>
<td>Automation</td>
<td>Terraform, Ansible, <code><a href="https://just.systems">just</a></code>, and plain shell scripts</td>
</tr>
<tr>
<td>CI / CD</td>
<td>CircleCI, Google Cloud Build, Jenkins, and Github Actions</td>
</tr>
<tr>
<td>Instrumentation</td>
<td>Prometheus, Alertmanager, Grafana, Honeycomb, NewRelic, and DataDog</td>
</tr>
<tr>
<td>Databases</td>
<td>PostgreSQL and SQLite</td>
</tr>
<tr>
<td>Other languages</td>
<td>I have used Rust, Erlang, Elixir, JavaScript, TypeScript, Python, C, and Java to solve all manner of tasks.</td>
</tr>
</tbody>
</table>
# Education
@ -71,13 +113,13 @@ August 2001 - December 2009
* I make most meals in the house and I can also make some killer baked goods.
* I enjoy overlanding, offroading, and camping.
* My family has a farm.
* A _real_ farm with more than 75 animals.
* A _working_ farm with more than 75 animals across 8 different species.
* I do not need a gym membership: I have a farm. It is hard work, but rewarding.
* My partner grows cut flowers professionally.
* My tractor is more expensive than my truck.
* I self-host most of the services I use online (but not email).
* I enjoy playing video games.
* I learn new programming languages that seem interesting.
* I learn new programming languages that seem interesting to me.
* My favorite method is to use the [Advent of Code](https://adventofcode.com) puzzles.
* My family recently developed a shared interest in Pokemon TCG (Trading Card Game).
* My partner and I have travelled to Japan 5 times together.

View File

@ -1,40 +0,0 @@
.container {
max-width: ($breakpoint-xl - $grid-gutter * 2);
padding-left: $grid-gutter;
padding-right: $grid-gutter;
margin-left: auto;
margin-right: auto;
}
@include breakpoint(m) {
.container-m {
width: ($breakpoint-m - $grid-gutter * 2);
max-width: auto;
padding-left: $grid-gutter;
padding-right: $grid-gutter;
margin-left: auto;
margin-right: auto;
}
}
@include breakpoint(l) {
.container-l {
width: ($breakpoint-l - $grid-gutter * 2);
max-width: auto;
padding-left: $grid-gutter;
padding-right: $grid-gutter;
margin-left: auto;
margin-right: auto;
}
}
@include breakpoint(xl) {
.container-xl {
width: ($breakpoint-xl - $grid-gutter * 2);
max-width: auto;
padding-left: $grid-gutter;
padding-right: $grid-gutter;
margin-left: auto;
margin-right: auto;
}
}

View File

@ -1,38 +0,0 @@
$breakpoint-m: 768px !default;
$breakpoint-l: 980px !default;
$breakpoint-xl: 1200px !default;
$grid-gutter: 16px !default;
// Mixins
// Breakpoints
// Example: .component { @include breakpoint(m) { background: red; } };
// Output: .component { @media only screen and (min-width: 720px) { background: red; } }
@mixin breakpoint($bp) {
@if $bp == xl {
@media only screen and (min-width: $breakpoint-xl) { @content ; }
}
@else if $bp == l {
@media only screen and (min-width: $breakpoint-l) { @content ; }
}
@else if $bp == m {
@media only screen and (min-width: $breakpoint-m) { @content ; }
}
}
// Background Color with Opacity
// Example: .element { @include background-rgba(#000000, .5); }}
// Output: .element { background: rgba(0, 0, 0, .5); }
@mixin background-rgba($color, $alpha) {
background-color: $color;
background-color: rgba($color, $alpha);
}
// Animations
// Example: .fade { @mixin animate(1s); }
// Output: .fade { animation-duration: 1s; animation-fill-mode: both; }
@mixin animate($duration: 1s) {
animation-duration: $duration;
animation-fill-mode: both;
}

18
sass/_tables.scss Normal file
View File

@ -0,0 +1,18 @@
table {
text-align: left;
border-collapse: collapse;
border-spacing: 0;
width: 100%;
margin: 0;
border: 1px solid var(--primary-text-color);
}
table td,
table th {
padding: 1rem;
border-bottom: 1px solid var(--primary-text-color);
border-right: 1px solid var(--primary-text-color);
}
table tr:nth-child(2n) { background-color: #f6f8fa; }
.table-responsive { overflow-x: auto; }

View File

@ -2,8 +2,7 @@
@import "_text.scss";
@import "_markdown.scss";
@import "_penguincoder.scss";
@import "_mixins.scss";
@import "_containers.scss";
@import "_tables.scss";
body {
padding: 0;