diff --git a/markdown/experience.md b/markdown/experience.md index 072f537..c3739ee 100644 --- a/markdown/experience.md +++ b/markdown/experience.md @@ -30,24 +30,33 @@ Responsibilities included:
- + +
- +
Owner P R Delivery INC
Broomfield, CO, USA
2016 - 20192016 - 2019
+ +
+

Owner

+

P R Delivery INC Broomfield, CO
+ 2016 - 2019

+
+ 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. -- 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. - Sold the company in 2019.
- + +
@@ -55,10 +64,17 @@ Transportation company servicing FedEX Ground Contract
Owner My Small Business Company, INC
Westminster, CO, USA
+ +
+

Owner

+

My Small Business Company, INC Westminster, CO, USA
+ 2002 - 2016

+
+ Transportation company servicing FedEX Ground Contract - 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. - I successfully grew the company to 3 full time drivers and then merged it with P R Delivery INC.
@@ -69,4 +85,3 @@ Transportation company servicing FedEX Ground Contract CompTIA A+ Certifications, 2026 - Current - diff --git a/markdown/projects.md b/markdown/projects.md index 9f4438c..197c93a 100644 --- a/markdown/projects.md +++ b/markdown/projects.md @@ -1,13 +1,21 @@

Projects

-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. 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. 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
diff --git a/markdown/skills-full.md b/markdown/skills-full.md new file mode 100644 index 0000000..33092ea --- /dev/null +++ b/markdown/skills-full.md @@ -0,0 +1,13 @@ +
+

Skills

+ +- Go, Python, SQL, Javascript, C, Shell +- Postgres, sqlite +- Linux, Docker, Git +- HTML, CSS, Flask +- MS Office, Excel, Google Workspace +- MDM +- Strategic planning, Tactical planning +
+ + diff --git a/markdown/skills.md b/markdown/skills.md index 33092ea..65cca97 100644 --- a/markdown/skills.md +++ b/markdown/skills.md @@ -1,13 +1,11 @@

Skills

-- Go, Python, SQL, Javascript, C, Shell -- Postgres, sqlite -- Linux, Docker, Git -- HTML, CSS, Flask -- MS Office, Excel, Google Workspace -- MDM -- Strategic planning, Tactical planning +- Languages: Go, Python, SQL, Javascript, C, Shell +- Backend & Web: PostgreSQL, REST API design, Flask, SQLAlchemy, SQLite, FastAPI - testdriven.io +- Frontend: React - testdriven.io, Javascript +- Infrastructure & Devops: Linux, Docker, Git, CI/CD, Nginx +- Cloud Platform: AWS - boot.dev, GCP - boot.dev, Digital Ocean
diff --git a/src/main.py b/src/main.py index 5d06823..4dff7e7 100644 --- a/src/main.py +++ b/src/main.py @@ -22,13 +22,55 @@ def main(): if not srcdir.is_dir(): return f'Error: "{srcdir}" is not a directory or does not exist' - filelist = list(srcdir.glob("*.md")) - # mk destdir if not exist if not destdir.is_dir(): 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: print(f"processing '{infile}'...") @@ -52,14 +94,6 @@ def main(): 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) - html_path = destdir / f"{base_name}.html" with html_path.open(mode="w", encoding="utf-8") as f: f.write(pubhtml)