This commit is contained in:
+21
-6
@@ -30,24 +30,33 @@ Responsibilities included:
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="job-entry">
|
<div class="job-entry">
|
||||||
<table id="experience-table">
|
<!-- Pretty 3 column table for humans -->
|
||||||
|
<table id="experience-table" class="web-only">
|
||||||
<tr>
|
<tr>
|
||||||
<td>Owner</td>
|
<td>Owner</td>
|
||||||
<td><b>P R Delivery INC</b><br>Broomfield, CO, USA</td>
|
<td><b>P R Delivery INC</b><br>Broomfield, CO, USA</td>
|
||||||
<td> 2016 - 2019</td>
|
<td>2016 - 2019</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- ATS simple linear for parsing -->
|
||||||
|
<div class="ats-only">
|
||||||
|
<h3>Owner</h3>
|
||||||
|
<p><strong>P R Delivery INC</strong> Broomfield, CO<br>
|
||||||
|
2016 - 2019</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
Transportation company servicing FedEX Ground Contract
|
Transportation company servicing FedEX Ground Contract
|
||||||
|
|
||||||
- After successfully merging two companies to meet FedEX requirements, negotiated contract rates and grew company from 6 full time employees and \$500K annual revenue at time of merger to 12 full time employees and \$1.2M annual revenue at time of sale.
|
- After successfully merging two companies to meet FedEX requirements, negotiated contract rates and grew company from 6 full time employees and \$500K annual revenue at time of merger to 12 full time employees and \$1.2M annual revenue at time of sale.
|
||||||
- Developed a revenue analysis tool to project income and expenses using python and Google Sheets to aid in negotiating rates with FedEX.
|
- Developed a revenue analysis tool to project income and expenses using Python, Flask, and Google Sheets to aid in negotiating rates with FedEX.
|
||||||
- Navigated company through an unexpected material change in routing method that included a deployment of iPads to all vehicles. The deployment consisted of enrolling devices in MDM, obtaining license to routing software, testing the deployment, and training of staff over a 2 week time frame.
|
- Navigated company through an unexpected material change in routing method that included a deployment of iPads to all vehicles. The deployment consisted of enrolling devices in MDM, obtaining license to routing software, testing the deployment, and training of staff over a 2 week time frame.
|
||||||
- Sold the company in 2019.
|
- Sold the company in 2019.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="job-entry">
|
<div class="job-entry">
|
||||||
<table id="experience-table">
|
<!-- Pretty 3 column table for humans -->
|
||||||
|
<table id="experience-table" class="web-only">
|
||||||
<tr>
|
<tr>
|
||||||
<td>Owner</td>
|
<td>Owner</td>
|
||||||
<td><b>My Small Business Company, INC</b><br>Westminster, CO, USA</td>
|
<td><b>My Small Business Company, INC</b><br>Westminster, CO, USA</td>
|
||||||
@@ -55,10 +64,17 @@ Transportation company servicing FedEX Ground Contract
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- ATS simple linear for parsing -->
|
||||||
|
<div class="ats-only">
|
||||||
|
<h3>Owner</h3>
|
||||||
|
<p><strong>My Small Business Company, INC</strong> Westminster, CO, USA<br>
|
||||||
|
2002 - 2016</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
Transportation company servicing FedEX Ground Contract
|
Transportation company servicing FedEX Ground Contract
|
||||||
|
|
||||||
- From my position as a dock worker I successfully obtained a delivery contract and started this company.
|
- From my position as a dock worker I successfully obtained a delivery contract and started this company.
|
||||||
- Developed Payroll and financial analysis systems using python and Google Sheets.
|
- Developed Payroll and financial analysis systems using a Python to Google Sheets ETL pipeline.
|
||||||
- Created training systems that met DOT guidelines.
|
- Created training systems that met DOT guidelines.
|
||||||
- I successfully grew the company to 3 full time drivers and then merged it with P R Delivery INC.
|
- I successfully grew the company to 3 full time drivers and then merged it with P R Delivery INC.
|
||||||
</div>
|
</div>
|
||||||
@@ -69,4 +85,3 @@ Transportation company servicing FedEX Ground Contract
|
|||||||
CompTIA A+ Certifications, 2026 - Current
|
CompTIA A+ Certifications, 2026 - Current
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+10
-2
@@ -1,13 +1,21 @@
|
|||||||
<div id="projects">
|
<div id="projects">
|
||||||
<h3>Projects</h3>
|
<h3>Projects</h3>
|
||||||
pkgstash - https://github.com/ewpt3ch/pkgstash
|
|
||||||
|
**pkgstash** - [github.com/ewpt3ch/pkgstash](https://github.com/ewpt3ch/pkgstash)
|
||||||
|
|
||||||
Starting from a desire to reduce duplication in update management for my local arch linux systems I built a sparse caching server. It reduces external traffic in a local network that has multiple arch linux systems. By replicating the structure of a full mirror it provides a drop in replacement for any standard mirror. Clients add this in their mirrorlist and pacman just works. Configuration is done with TOML which mimics the syntax of pacman.conf closely. Singleflight it used for preventing duplicate cache downloads if multiple clients are updating at the same time.
|
Starting from a desire to reduce duplication in update management for my local arch linux systems I built a sparse caching server. It reduces external traffic in a local network that has multiple arch linux systems. By replicating the structure of a full mirror it provides a drop in replacement for any standard mirror. Clients add this in their mirrorlist and pacman just works. Configuration is done with TOML which mimics the syntax of pacman.conf closely. Singleflight it used for preventing duplicate cache downloads if multiple clients are updating at the same time.
|
||||||
|
|
||||||
Go, golang.org/x/sync/singleflight, github.com/BurntSushi/toml, Github actions
|
Go, golang.org/x/sync/singleflight, github.com/BurntSushi/toml, Github actions
|
||||||
|
|
||||||
resume-builder - https://github.com/ewpt3ch/resume-builder
|
**resume-builder** - [github.com/ewpt3ch/resume-builder](https://github.com/ewpt3ch/resume-builder)
|
||||||
|
|
||||||
Automates the process of creating distributable resumes from easy to edit markdown files. Uses woodpecker ci or github actions to create html and pdf then publish them on a website.
|
Automates the process of creating distributable resumes from easy to edit markdown files. Uses woodpecker ci or github actions to create html and pdf then publish them on a website.
|
||||||
|
|
||||||
Python, uv, woodepecker ci, jinja2, htmltopdf, mdtohtml
|
Python, uv, woodepecker ci, jinja2, htmltopdf, mdtohtml
|
||||||
|
|
||||||
|
**FlaskFDX** - [gitea.ewpt3ch.dev/ewpt3ch/flaskfdx](https://gitea.ewpt3ch.dev/ewpt3ch/flaskfdx)
|
||||||
|
|
||||||
|
I engineered this internal analytics platform to streamline the evaluation of FedEX service provider contracts. I built a custom ETL pipeline to ingest excel reports into a SQLite database enabling structured queries into driver and route performance. This tool was developed to replace manual auditing processes and provided the data foundation used during contract rate negotiations.
|
||||||
|
|
||||||
|
Python, Flask, SQLite, Git
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<div id="skills">
|
||||||
|
<h3>Skills</h3>
|
||||||
|
|
||||||
|
- Go, Python, SQL, Javascript, C, Shell
|
||||||
|
- Postgres, sqlite
|
||||||
|
- Linux, Docker, Git
|
||||||
|
- HTML, CSS, Flask
|
||||||
|
- MS Office, Excel, Google Workspace
|
||||||
|
- MDM
|
||||||
|
- Strategic planning, Tactical planning
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
+5
-7
@@ -1,13 +1,11 @@
|
|||||||
<div id="skills">
|
<div id="skills">
|
||||||
<h3>Skills</h3>
|
<h3>Skills</h3>
|
||||||
|
|
||||||
- Go, Python, SQL, Javascript, C, Shell
|
- <strong>Languages:</strong> Go, Python, SQL, Javascript, C, Shell
|
||||||
- Postgres, sqlite
|
- <strong>Backend & Web:</strong> PostgreSQL, REST API design, Flask, SQLAlchemy, SQLite, FastAPI - testdriven.io
|
||||||
- Linux, Docker, Git
|
- <strong>Frontend:</strong> React - testdriven.io, Javascript
|
||||||
- HTML, CSS, Flask
|
- <strong>Infrastructure & Devops:</strong> Linux, Docker, Git, CI/CD, Nginx
|
||||||
- MS Office, Excel, Google Workspace
|
- <strong>Cloud Platform:</strong> AWS - boot.dev, GCP - boot.dev, Digital Ocean
|
||||||
- MDM
|
|
||||||
- Strategic planning, Tactical planning
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+45
-11
@@ -22,13 +22,55 @@ def main():
|
|||||||
if not srcdir.is_dir():
|
if not srcdir.is_dir():
|
||||||
return f'Error: "{srcdir}" is not a directory or does not exist'
|
return f'Error: "{srcdir}" is not a directory or does not exist'
|
||||||
|
|
||||||
filelist = list(srcdir.glob("*.md"))
|
|
||||||
|
|
||||||
# mk destdir if not exist
|
# mk destdir if not exist
|
||||||
if not destdir.is_dir():
|
if not destdir.is_dir():
|
||||||
destdir.mkdir()
|
destdir.mkdir()
|
||||||
|
|
||||||
# process filelist
|
# process modular resume
|
||||||
|
srclist = (
|
||||||
|
"contact.md",
|
||||||
|
"summary.md",
|
||||||
|
"skills.md",
|
||||||
|
"projects.md",
|
||||||
|
"education.md",
|
||||||
|
"experience.md",
|
||||||
|
)
|
||||||
|
|
||||||
|
chunks = []
|
||||||
|
for md in srclist:
|
||||||
|
print("processing modular resumd")
|
||||||
|
|
||||||
|
file = Path.joinpath(srcdir, md)
|
||||||
|
with file.open(mode="r", encoding="utf-8") as f:
|
||||||
|
chunks.append(f.read())
|
||||||
|
|
||||||
|
mdsrc = "".join(chunks)
|
||||||
|
rawhtml = mdtohtml(mdsrc)
|
||||||
|
base_name = "resume-mod"
|
||||||
|
|
||||||
|
# pretty pdf
|
||||||
|
web_template = j2_env.get_template("resume-web.template")
|
||||||
|
web_html = web_template.render(name=name, content=rawhtml)
|
||||||
|
web_pdf_path = destdir / f"{base_name}-web.pdf"
|
||||||
|
htmltopdf(web_html, web_pdf_path)
|
||||||
|
|
||||||
|
# ats friendly pdf
|
||||||
|
ats_template = j2_env.get_template("resume-ats.template")
|
||||||
|
ats_html = ats_template.render(name=name, content=rawhtml)
|
||||||
|
ats_pdf_path = destdir / f"{base_name}-ats.pdf"
|
||||||
|
htmltopdf(ats_html, ats_pdf_path)
|
||||||
|
|
||||||
|
# generate web html with download bar
|
||||||
|
download_template = j2_env.get_template("download.template")
|
||||||
|
download_bar = download_template.render(
|
||||||
|
web_pdf=f"{base_name}-web.pdf", ats_pdf=f"{base_name}-ats.pdf"
|
||||||
|
)
|
||||||
|
|
||||||
|
pubhtml = web_template.render(name=name, content=rawhtml, download=download_bar)
|
||||||
|
|
||||||
|
# process full resume source files
|
||||||
|
filelist = list(srcdir.glob("*.md"))
|
||||||
|
filelist = [f for f in filelist if "resume" in f.stem]
|
||||||
for infile in filelist:
|
for infile in filelist:
|
||||||
print(f"processing '{infile}'...")
|
print(f"processing '{infile}'...")
|
||||||
|
|
||||||
@@ -52,14 +94,6 @@ def main():
|
|||||||
ats_pdf_path = destdir / f"{base_name}-ats.pdf"
|
ats_pdf_path = destdir / f"{base_name}-ats.pdf"
|
||||||
htmltopdf(ats_html, ats_pdf_path)
|
htmltopdf(ats_html, ats_pdf_path)
|
||||||
|
|
||||||
# generate web html with download bar
|
|
||||||
download_template = j2_env.get_template("download.template")
|
|
||||||
download_bar = download_template.render(
|
|
||||||
web_pdf=f"{base_name}-web.pdf", ats_pdf=f"{base_name}-ats.pdf"
|
|
||||||
)
|
|
||||||
|
|
||||||
pubhtml = web_template.render(name=name, content=rawhtml, download=download_bar)
|
|
||||||
|
|
||||||
html_path = destdir / f"{base_name}.html"
|
html_path = destdir / f"{base_name}.html"
|
||||||
with html_path.open(mode="w", encoding="utf-8") as f:
|
with html_path.open(mode="w", encoding="utf-8") as f:
|
||||||
f.write(pubhtml)
|
f.write(pubhtml)
|
||||||
|
|||||||
Reference in New Issue
Block a user