mirror of
https://github.com/zaphar/jeremy.marzhillstudios.com.git
synced 2025-07-21 19:29:48 -04:00
Resume update
This commit is contained in:
parent
567bec51e8
commit
a60956865a
10
Makefile
10
Makefile
@ -1,12 +1,18 @@
|
|||||||
content := $(wildcard content/*.md themes/even/sass/*.scss themes/even/static/* themes/even/templates/*.html themes/even/templates/categories/*.html themes/even/templates/shortcodes/*.html themes/even/templates/tags/*.html)
|
content := $(wildcard content/*.md themes/even/sass/*.scss themes/even/static/* themes/even/templates/*.html themes/even/templates/categories/*.html themes/even/templates/shortcodes/*.html themes/even/templates/tags/*.html)
|
||||||
build: content/.built
|
build: content/.built static/pdf/resume-jeremy-wall.pdf
|
||||||
|
|
||||||
all: build deploy
|
all: build deploy
|
||||||
|
|
||||||
content/.built: $(content)
|
content/.built: $(content)
|
||||||
zola build -o public/
|
nix-shell -p zola --command "zola build -o public/"
|
||||||
touch content/.built
|
touch content/.built
|
||||||
|
|
||||||
|
static/pdf/resume-jeremy-wall.pdf: resume/resume.sil resume/resume.lua
|
||||||
|
mkdir -p static/pdf/
|
||||||
|
mkdir -p ~/.local/share/fonts
|
||||||
|
cp resume/.fonts/* ~/.local/share/fonts/
|
||||||
|
nix-shell -p sile --command "sile -o $@ resume/resume.sil"
|
||||||
|
|
||||||
publish: build
|
publish: build
|
||||||
cd public
|
cd public
|
||||||
gsutil -m rsync -d -r public gs://jeremy.marzhillstudios.com/
|
gsutil -m rsync -d -r public gs://jeremy.marzhillstudios.com/
|
||||||
|
BIN
resume/.fonts/GentiumBookPlus-Bold.ttf
Executable file
BIN
resume/.fonts/GentiumBookPlus-Bold.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumBookPlus-BoldItalic.ttf
Executable file
BIN
resume/.fonts/GentiumBookPlus-BoldItalic.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumBookPlus-Italic.ttf
Executable file
BIN
resume/.fonts/GentiumBookPlus-Italic.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumBookPlus-Regular.ttf
Executable file
BIN
resume/.fonts/GentiumBookPlus-Regular.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumPlus-Bold.ttf
Executable file
BIN
resume/.fonts/GentiumPlus-Bold.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumPlus-BoldItalic.ttf
Executable file
BIN
resume/.fonts/GentiumPlus-BoldItalic.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumPlus-Italic.ttf
Executable file
BIN
resume/.fonts/GentiumPlus-Italic.ttf
Executable file
Binary file not shown.
BIN
resume/.fonts/GentiumPlus-Regular.ttf
Executable file
BIN
resume/.fonts/GentiumPlus-Regular.ttf
Executable file
Binary file not shown.
151
resume/resume.lua
Normal file
151
resume/resume.lua
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
-- Copyright 2021 Jeremy Wall
|
||||||
|
--
|
||||||
|
-- Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
-- you may not use this file except in compliance with the License.
|
||||||
|
-- You may obtain a copy of the License at
|
||||||
|
--
|
||||||
|
-- http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
--
|
||||||
|
-- Unless required by applicable law or agreed to in writing, software
|
||||||
|
-- distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
-- See the License for the specific language governing permissions and
|
||||||
|
-- limitations under the License.
|
||||||
|
|
||||||
|
local plain = SILE.require("plain", "classes")
|
||||||
|
local resume = plain { id = resume }
|
||||||
|
|
||||||
|
SILE.require("packages/url")
|
||||||
|
SILE.require("packages/pdf")
|
||||||
|
SILE.require("packages/rules")
|
||||||
|
|
||||||
|
-- Setup our settings.
|
||||||
|
SILE.settings.declare({
|
||||||
|
parameter = "resume.author",
|
||||||
|
default = "",
|
||||||
|
type = "string",
|
||||||
|
help = "The author of this resume"
|
||||||
|
})
|
||||||
|
|
||||||
|
SILE.settings.declare({
|
||||||
|
parameter = "resume.email",
|
||||||
|
default = "",
|
||||||
|
type = "string",
|
||||||
|
help = "Resume Author email address",
|
||||||
|
})
|
||||||
|
|
||||||
|
SILE.settings.declare({
|
||||||
|
parameter = "resume.site",
|
||||||
|
default = "",
|
||||||
|
type = "string",
|
||||||
|
help = "Resume Author website",
|
||||||
|
})
|
||||||
|
|
||||||
|
SILE.settings.declare({
|
||||||
|
parameter = "resume.keywords",
|
||||||
|
default = "",
|
||||||
|
type = "string",
|
||||||
|
help = "Resume keywords",
|
||||||
|
})
|
||||||
|
|
||||||
|
SILE.settings.set("document.parindent", SILE.nodefactory.glue())
|
||||||
|
|
||||||
|
local simpletable = SILE.require("packages/simpletable")
|
||||||
|
simpletable.init(SILE.documentState.documentClass, {tableTag = "table", trTag = "tr", tdTag = "td"})
|
||||||
|
|
||||||
|
resume:declareFrame("content", {
|
||||||
|
left = "20%pw",
|
||||||
|
right = "80%pw",
|
||||||
|
top = "10%ph",
|
||||||
|
bottom = "10%ph",
|
||||||
|
})
|
||||||
|
|
||||||
|
resume.pageTemplate.firstContentFrame = resume.pageTemplate.frames["content"]
|
||||||
|
|
||||||
|
SILE.registerCommand("resume", function(opts, content)
|
||||||
|
local author = SILE.settings.get("resume.author")
|
||||||
|
if author == "" then
|
||||||
|
SILE.warn("resume.author was empty. Author info will be missing.")
|
||||||
|
else
|
||||||
|
SILE.call("pdf:metadata", {key="Author", val=author}, "")
|
||||||
|
end
|
||||||
|
local keywords = SILE.settings.get("resume.keywords")
|
||||||
|
if keywords == "" then
|
||||||
|
SILE.warn("resume.keywords was empty. site keywords will be missing.")
|
||||||
|
else
|
||||||
|
SILE.call("pdf:metadata", {key="Keywords", val=keywords}, "")
|
||||||
|
end
|
||||||
|
local email = SILE.settings.get("resume.email")
|
||||||
|
if email == "" then
|
||||||
|
SILE.warn("resume.email was empty. Email info will be missing.")
|
||||||
|
end
|
||||||
|
local site = SILE.settings.get("resume.site")
|
||||||
|
if site == "" then
|
||||||
|
SILE.warn("resume.site was empty. site info will be missing.")
|
||||||
|
end
|
||||||
|
|
||||||
|
SILE.call("section", {}, function()
|
||||||
|
SILE.typesetter:typeset(author)
|
||||||
|
end)
|
||||||
|
|
||||||
|
SILE.call("table", {}, function()
|
||||||
|
SILE.call("tr", {}, function()
|
||||||
|
SILE.call("td", {}, function()
|
||||||
|
SILE.call("bold", {}, function()
|
||||||
|
SILE.typesetter:typeset("Email: ")
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
SILE.call("td", {}, function()
|
||||||
|
SILE.call("email", {src=email})
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
SILE.call("tr", {}, function()
|
||||||
|
SILE.call("td", {}, function()
|
||||||
|
SILE.call("bold", {}, function()
|
||||||
|
SILE.typesetter:typeset("Site: ")
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
SILE.call("td", {}, function()
|
||||||
|
SILE.call("psite")
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
SILE.process(content)
|
||||||
|
end)
|
||||||
|
|
||||||
|
SILE.registerCommand("email", function(opts, content)
|
||||||
|
if opts["src"] then
|
||||||
|
SILE.call("href", {src="mailto:" .. opts["src"]}, opts["src"])
|
||||||
|
else
|
||||||
|
SILE.error("src attribute is required")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
SILE.registerCommand("site", function(opts, content)
|
||||||
|
if opts["src"] then
|
||||||
|
SILE.call("href", {src="https://" .. opts["src"]}, opts["src"])
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
SILE.registerCommand("psite", function(opts, content)
|
||||||
|
local site = SILE.settings.get("resume.site")
|
||||||
|
if site == "" then
|
||||||
|
SILE.warn("resume.site was empty. site info will be missing.")
|
||||||
|
end
|
||||||
|
SILE.call("site", {src=site}, "")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- TODO(jwall): Bullet could be way better than it currently is.
|
||||||
|
resume.registerCommands = function()
|
||||||
|
plain.registerCommands()
|
||||||
|
SILE.doTexlike([[%
|
||||||
|
\define[command=section]{\font[size=3em]{\process} \bigskip}%
|
||||||
|
\define[command=subsection]{\bigskip \font[size=2em]{\process} \bigskip}%
|
||||||
|
\define[command=bold]{\font[style=bold]{\process}}%
|
||||||
|
\define[command=para]{\process \medskip}%
|
||||||
|
\define[command=bullet]{* \process}%
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
|
||||||
|
return resume
|
214
resume/resume.sil
Normal file
214
resume/resume.sil
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
\begin[papersize=letter, class=resume]{document}
|
||||||
|
|
||||||
|
\set[parameter=resume.author, value="Jeremy Wall"]
|
||||||
|
\set[parameter=resume.site, value="jeremy.marzhillstudios.com"]
|
||||||
|
\set[parameter=resume.email, value=jeremy@marzhillstudios.com]
|
||||||
|
\set[parameter=resume.keywords, value="java,javascript,typescript,python,perl,clojure,rust,go,c#,haskell,erlang,programming,resume"]
|
||||||
|
|
||||||
|
\begin{resume}
|
||||||
|
|
||||||
|
\subsection{About Me}
|
||||||
|
|
||||||
|
\para{
|
||||||
|
I am a self taught coder with a love for languages and good
|
||||||
|
design. I've been working in the industry for a little more than 10
|
||||||
|
years. I've been learning and coding in the open source community for
|
||||||
|
far longer than that though. From hacking personal customizations in
|
||||||
|
\href[src=http://blender.org]{Blender}, to coding my own website, to
|
||||||
|
writing about various languages and technologies on that site. I've
|
||||||
|
been an active part of the programming community for more than 20
|
||||||
|
years.
|
||||||
|
}
|
||||||
|
|
||||||
|
\para{
|
||||||
|
I'm passionate about the tools used in the craft of software
|
||||||
|
development. Build systems, Test frameworks, Editors/IDE's all
|
||||||
|
fascinate me and I'm constantly looking for new ways to streamline and
|
||||||
|
improve the process of software construction. }
|
||||||
|
|
||||||
|
\subsection{Notable Personal Projects}
|
||||||
|
|
||||||
|
\bullet{UCG a Configuration format compiler at \site[src=github.com/zaphar/ucg]}
|
||||||
|
|
||||||
|
\bullet{Rust ICMP Socket library at
|
||||||
|
\site[src=github.com/zaphar/icmp_socket]}
|
||||||
|
|
||||||
|
\bullet{Parsing combinator library at
|
||||||
|
\site[src=github.com/zaphar/abortable_parser]}
|
||||||
|
|
||||||
|
\bullet{Network quality exporter for prometheus at
|
||||||
|
\site[src=github.com/zaphar/durnitisp]}
|
||||||
|
|
||||||
|
\bullet{Original author of C# support for
|
||||||
|
\site[src=bazel.io/] at \site[src=github.com/bazelbuild/rules_dotnet]}
|
||||||
|
|
||||||
|
\bullet{One of the only people to provide a pull example for the
|
||||||
|
libgit2 rust bindings at
|
||||||
|
\href[src=https://github.com/rust-lang/git2-rs/blob/master/examples/pull.rs]{pull.rs on github}}
|
||||||
|
|
||||||
|
\medskip
|
||||||
|
\para{You can see the rest of my personal coding projects on
|
||||||
|
\site[src=github.com/zaphar]}.
|
||||||
|
|
||||||
|
\bigskip
|
||||||
|
\fullrule
|
||||||
|
\bigskip \goodbreak
|
||||||
|
|
||||||
|
\section{Employment}
|
||||||
|
|
||||||
|
\subsection{GoHealth, Inc - VP of Engineering 2021 - Present}
|
||||||
|
|
||||||
|
\para{I was promoted to VP of Engineering during my 5th year and helped to drive
|
||||||
|
processes for technology adoption, security and compliance. My areas of oversight
|
||||||
|
were our new Customer Retention stack, Shared Services, Tech Support,
|
||||||
|
and Data Engineering.}
|
||||||
|
|
||||||
|
\subsection{GoHealth, Inc - Principal Engineer 2016 - 2021}
|
||||||
|
|
||||||
|
% Figure out how to indent this entire paragraph
|
||||||
|
|
||||||
|
\para{I joined GoHealth to help them as they moved toward a more agile model
|
||||||
|
in the SDLC. They were beginning to embrace Continuous Integration and
|
||||||
|
Continuous Delivery. My responsibilites as Principal Engineer were to:}
|
||||||
|
|
||||||
|
- Mentor other developers
|
||||||
|
|
||||||
|
- Provide technical direction for old and legacy applications
|
||||||
|
|
||||||
|
- Help to form and refine their processes around development, releases and QA.
|
||||||
|
|
||||||
|
- Help to foster a strong engineering culture.
|
||||||
|
\bigskip
|
||||||
|
|
||||||
|
\para{Shortly after joining GoHealth I also took on the management of a newly
|
||||||
|
forming SRE team. Helping to bootstrap that team and give guidance on best
|
||||||
|
practices for managing new and old deployments of applications in the GoHealth
|
||||||
|
platform. I was also given oversight of the data engineering group around 4 years into my
|
||||||
|
tenure as a Principal there.}
|
||||||
|
|
||||||
|
\subsection{VAE, Inc. - Senior Architect 2014 - 2016}
|
||||||
|
|
||||||
|
\para{The software stack we used at VAE was C# running on both Mono and
|
||||||
|
.Net runtimes. It is a suite of network engineering tools used by
|
||||||
|
Network Engineers and Network Operations to manage and view the
|
||||||
|
current state of their network. While there I helped to:}
|
||||||
|
|
||||||
|
- Develop software engineering processes.
|
||||||
|
|
||||||
|
- Integrate tooling to ensure software quality.
|
||||||
|
|
||||||
|
- Provide high level design guidance for products.
|
||||||
|
|
||||||
|
- Mentor junior developers.
|
||||||
|
\bigskip
|
||||||
|
|
||||||
|
\subsection{Google - Software engineer 2008 - 2014}
|
||||||
|
|
||||||
|
\para{I was part of the DoubleClick acquisition by Google and continued working on
|
||||||
|
the Google Affiliate Network product for the first two years. Wrote most of
|
||||||
|
the code to migrate our data to Google infrastructure and datastores.
|
||||||
|
Launched the first integrations with Google systems.}
|
||||||
|
|
||||||
|
\para{I then worked on the Project Hosting product on https://code.google.com/p/.
|
||||||
|
This product has since been discontinued by Google.}
|
||||||
|
|
||||||
|
\para{After Project hosting I moved into the Web Server team for the
|
||||||
|
Search Page. I worked on tooling for the templating language and
|
||||||
|
CSS/Javascript/HTML management. While there I worked on integrating
|
||||||
|
a CSS compiler for the Templating engine. This support greatly
|
||||||
|
improved the experience of styling search features and controlling
|
||||||
|
the impact of CSS on a page.}
|
||||||
|
|
||||||
|
\para{I also worked on evaluating the HTML5 Web Compoenents standards to
|
||||||
|
see how they might improve the search page. This required reading
|
||||||
|
the W3C standards, prototyping templating engine support for them,
|
||||||
|
and running some experiments on the front page.}
|
||||||
|
|
||||||
|
\para{Pretty much all the technology at Google is custom but relies
|
||||||
|
heavily on non-relational distributed datastores, and highly
|
||||||
|
scalable distributed architectures.}
|
||||||
|
|
||||||
|
\subsection{Doubleclick/Performics Software Engineer 2007 -}
|
||||||
|
|
||||||
|
\para{Worked on the affiliate ad product for Doubleclick/Performics in several
|
||||||
|
different initiatives. The web stack was Linux, Apache, ModPerl and used
|
||||||
|
DB2/Oracle/MySQL for the database. While there I helped to:}
|
||||||
|
|
||||||
|
- Champion and prioritize tasks for a migration from an IBM
|
||||||
|
DB2 database to an Oracle Database
|
||||||
|
|
||||||
|
- Code and setup a unit test infrastructure for javascript development.
|
||||||
|
|
||||||
|
- Design and write a UI framework to improve development speed
|
||||||
|
and maintainability of frontends to the reporting API.
|
||||||
|
|
||||||
|
\subsection{Healthcom - SubContractor 2007}
|
||||||
|
|
||||||
|
\para{Worked on a health device information tracking service. The system recieved
|
||||||
|
health information from various remote devices in patients homes. It tracked
|
||||||
|
the data and events and graphed them for the healthcare providers. It also
|
||||||
|
alerted based off of certain criteria for the data.}
|
||||||
|
|
||||||
|
\para{The system was written in Perl and consumed web services, ftp uploads,
|
||||||
|
and encrypted network connections to gather the data. The data was stored in
|
||||||
|
Postgresql. The web stack was Apache and Perl on Windows.}
|
||||||
|
|
||||||
|
\fullrule
|
||||||
|
\bigskip \goodbreak
|
||||||
|
|
||||||
|
\section{Technologies}
|
||||||
|
|
||||||
|
\para{This is an incomplete list of the technologies I've had experience with just touching
|
||||||
|
the high points. I'm a generalist who goes deep in a few areas and with an emphasis on
|
||||||
|
maintainability and longevity of the systems or code I'm involved with.}
|
||||||
|
|
||||||
|
\subsection{Non Relational Datastores}
|
||||||
|
|
||||||
|
\bullet{CouchBase}
|
||||||
|
|
||||||
|
\bullet{MongoDB}
|
||||||
|
|
||||||
|
\bullet{Bigtable}\bigskip
|
||||||
|
|
||||||
|
\subsection{Relational Databases}
|
||||||
|
|
||||||
|
\bullet{DB2}
|
||||||
|
|
||||||
|
\bullet{Oracle}
|
||||||
|
|
||||||
|
\bullet{Postgres}
|
||||||
|
|
||||||
|
\bullet{Mysql}
|
||||||
|
|
||||||
|
\bullet{SQL Server}\bigskip
|
||||||
|
|
||||||
|
\subsection{Languages}
|
||||||
|
|
||||||
|
\para{I know a fairly wide variety of languages not all of which I could use
|
||||||
|
in production settings. Learning and even creating languages is something
|
||||||
|
of a hobby for me. A partial list is here.}
|
||||||
|
|
||||||
|
\bullet{Rust}
|
||||||
|
|
||||||
|
\bullet{Go}
|
||||||
|
|
||||||
|
\bullet{Erlang}
|
||||||
|
|
||||||
|
\bullet{UCG}
|
||||||
|
|
||||||
|
\bullet{Javascript}
|
||||||
|
|
||||||
|
\bullet{Typescript}
|
||||||
|
|
||||||
|
\bullet{Java}
|
||||||
|
|
||||||
|
\bullet{Julia}
|
||||||
|
|
||||||
|
\bullet{Python}
|
||||||
|
|
||||||
|
\bullet{C#}
|
||||||
|
|
||||||
|
\bullet{C}
|
||||||
|
|
||||||
|
\end{resume}
|
||||||
|
\end{document}
|
BIN
static/pdf/resume-jeremy-wall.pdf
Executable file → Normal file
BIN
static/pdf/resume-jeremy-wall.pdf
Executable file → Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user