From 24092728b061b19855b4b2b28b1357d08afe7f14 Mon Sep 17 00:00:00 2001 From: James Tombleson Date: Tue, 28 Nov 2023 16:25:27 -0800 Subject: [PATCH] Moving the site to my personal git server --- .gitignore | 1 + .hugo_build.lock | 0 archetypes/default.md | 6 ++ config.yaml | 35 ++++++++ content/_index.md | 10 +++ content/posts/2022/12/27/2023-goals.md | 39 +++++++++ content/posts/test.md | 7 ++ content/projects.md | 27 +++++++ content/resume.md | 107 +++++++++++++++++++++++++ go.mod | 5 ++ go.sum | 2 + makefile | 9 +++ 12 files changed, 248 insertions(+) create mode 100644 .gitignore create mode 100644 .hugo_build.lock create mode 100644 archetypes/default.md create mode 100644 config.yaml create mode 100644 content/_index.md create mode 100644 content/posts/2022/12/27/2023-goals.md create mode 100644 content/posts/test.md create mode 100644 content/projects.md create mode 100644 content/resume.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07cf801 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +resources/ \ No newline at end of file diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..864ade9 --- /dev/null +++ b/config.yaml @@ -0,0 +1,35 @@ +title: "James Tombleson" +baseURL: "http://jtom38.github.io" +languageCode: "en-us" +theme: ["github.com/theNewDynamic/gohugo-theme-ananke"] + +SectionPagesMenu: "main" +Paginate: 9 +googleAnalytics: "" +enableRobotsTXT: true +enableEmoji: true + +sitemap: + changefreq: "monthly" + priority: 0.5 + filename: "sitemap.xml" + +params: + text_color: "" + author: "James Tombleson" + favicon: "" + site_logo: "" + description: "The last theme you'll ever need. Maybe." + # choose a background color from any on this page: https://tachyons.io/docs/themes/skins/ and preface it with "bg-" + background_color_class: "bg-black" + recent_posts_number: 3 + + ananke_socials: + - name: github + url: https://github.com/jtom38 + - name: rss + url: index.xml + +social: + github: jtom38 + rss: \ No newline at end of file diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..592b5d8 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,10 @@ +--- +title: "Welcome" +description: "You have found my my person site" + +# 1. To ensure Netlify triggers a build on our exampleSite instance, we need to change a file in the exampleSite directory. +theme_version: '2.8.2' +cascade: + #featured_image: '/images/gohugo-default-sample-hero-image.jpg' +--- +Here you can learn about the things I am working on along with any learning I am doing. diff --git a/content/posts/2022/12/27/2023-goals.md b/content/posts/2022/12/27/2023-goals.md new file mode 100644 index 0000000..b24422a --- /dev/null +++ b/content/posts/2022/12/27/2023-goals.md @@ -0,0 +1,39 @@ +--- +title: "2023 Goals" +date: 2022-12-27T18:11:30-08:00 +draft: false +--- + +As we roll into 2023 I have some new goals that I am working on. + +## 1. Start Blogging + +One of the things I have seen is people talk about learning in public. This is something I have not done too much right now. Sure you can find my GitHub profile and see what I am up to, but it doesn't have a roadmap per-say. So, time to start working on it. You can find my thoughts here on my site. Who knows if I am going to cross-post to other services? + +## 2. Learn about OAuth + +Authentication has always been a stopping point for me. I want to bring services out but always stop for one reason or another. Right now one of the blockers for newsbot is authentication. +I have looked at Auth0, and it looks nice for sure, but I am not in a position to spend money on much. As my portal project continues to grow, I want to have others test it and give me some data, but the app does not have any authentication at this time, so it will not be public on the web. +For Go, I am taking a look at [goth](https://github.com/markbates/goth) to provide some of the authentication services. But as I work through this I suspect that I will need to create a new API to handle authentication between the API and Portal. The reason for another API is to avoid multiple services on a single API. The collector does one thing, collect. + +As is, the notification service that is in the collector should be migrated away from that API, but that's something I am not ready to work on, yet. + +## 3. Event-Driven Architecture + +So I understand this as a theory at and high level, but I have not worked on this yet. As my day job is DevOps, I don't get much of a chance to work on building Event-driven services. So, Newsbot will be the starting point for me. Newsbot will have other features added to it and as it grows I think adding Events will help keep all the services informed. This can also be used for queuing up requests from the portal. + +I have done a little work with RabbitMQ but looking at the documentation on [NATS](https://nats.io/) and this looks easy to interface with. Right now I have been working with Azure Storage Queues and they work well, but I don't want to force anyone to use Azure. NATS looks promising so hopefully, I will have some news about how things are progressing. + +## 4. WebAssembly + +I have been watching how WASM is improving and how people are making use of it. I find this all very interesting and want to get in on it. I am not a huge fan of Javascript, and with that, I am looking at building apps with minimal js and mostly using MVC as my primary pattern. But replace all the JS code with the Go code. Make my web development life easier (hopefully) and be able to share my findings with everyone too. + +These are some of the topics that I hope to be able to dig into in the new year. Only time will tell how far I can make it. + +Thanks for reading! + +## Links + +- [goth](https://github.com/markbates/goth) +- [NATS](https://nats.io/) +- [WebAssembly]() \ No newline at end of file diff --git a/content/posts/test.md b/content/posts/test.md new file mode 100644 index 0000000..03c0d9c --- /dev/null +++ b/content/posts/test.md @@ -0,0 +1,7 @@ +--- +title: "Test" +date: 2022-12-25T15:57:20-08:00 +draft: false +--- + +This is a test blog, did I work??? diff --git a/content/projects.md b/content/projects.md new file mode 100644 index 0000000..05bbbd6 --- /dev/null +++ b/content/projects.md @@ -0,0 +1,27 @@ +--- +title: "Projects" +description: Here are some of the projects that I am working on +featured_image: "" +type: page +menu: main +date: 2022-12-25T15:57:20-08:00 +draft: false +--- + +## Code Projects + +### Newsbot + +`Newsbot` is my passion project to create your own personal news feed. This build around letting people run their own instance. Don't let other services monitor what you pay attention to. + +- [newsbot.portal](https://github.com/jtom38/newsbot.portal) + - This is the web interface to `Newsbot`. + - Built with Go. +- [newsbot.collector.api](https://github.com/jtom38/newsbot.collector.api) + - This API collects the news found on the internet + +### dvb (Docker Volume Backup) + +[repo](https://github.com/jtom38/dvb) + +This tool was made to backup my docker data given I didn't want to chain a bunch of bash commands together. diff --git a/content/resume.md b/content/resume.md new file mode 100644 index 0000000..0c627ed --- /dev/null +++ b/content/resume.md @@ -0,0 +1,107 @@ +--- +title: "Resume/CV" +# description: Test +featured_image: "" +type: page +menu: main +date: 2022-12-25T15:57:20-08:00 +draft: false +--- + +- [Experience](#experience) + - [DevOps Manager - The Suddath Companies](#devops-manager---the-suddath-companies) + - [Systems Engineer - Special Counsel](#systems-engineer---special-counsel) + - [DevOps Engineer - Directors Mortgage](#devops-engineer---directors-mortgage) + - [IT Specialist, Contract - Georgia Pacific](#it-specialist-contract---georgia-pacific) + - [Systems Administrator - Remedi Senior Care](#systems-administrator---remedi-senior-care) + - [IT Specialist - Rural Alaska Community Action Program](#it-specialist---rural-alaska-community-action-program) +- [Education](#education) + - [Bachelor of Science (B.Sc.) in `Computer Networking`](#bachelor-of-science-bsc-in-computer-networking) +- [Skills](#skills) + +## Experience + +### DevOps Manager - The Suddath Companies + +Location: `Remote` +When: `February 2021 - Present` + +- Saved the company money on the Azure bill by 50% a with in-depth review of our utilization and removed waste +- Owned the Azure infrastructure and ensured everything was working and configured as required +- Pioneered the use of Infrastructure As Code with Terraform to manage Azure +- Implemented all monitoring and remediation processes for our hosted services +- Built out the Internal Developer Portal for all of our developers to use to improve their quality of life +- Built out services to adjust Azure resources and control our spend with API Services +- Overhauled our CI/CD processes with more robust Infrastructure As Code practices and promoting shifting left on security items. +- Created CLI tools for CI/CD pipelines with Go and C# +- Reduced friction with automated deployment process to Auth0 +- Monitored Developement teams code quality +- Optmized business processes to optmize time and money + +### Systems Engineer - Special Counsel + +Location: `Remote` +From: `August 2019 to February 2021` + +- Built Kubernetes cluster and migrated existing Docker workflows to improve uptime and the resistance to failure by 40%. Migrated internal Linux based tools to custom Docker Images that reduced management complexity by 50%. +- Used Jenkins for CI/CD to build Docker Images, deploy Docker images, run Ansible jobs, and automated complex application upgrades with Ansible which reduced application upgrades from 24 hours to 4 hours of downtime. +- Used Python to create a SAN health monitoring tool, synthetic web monitoring tool, website scraping tool and Relativity API tools, improving processes that saved 50+ hours of manually pulling data weekly. +- Wrote PowerShell scripts to streamline the process of user account creation, automate SQL Server security changes, and fetch data from FTP servers saving 100+ hours of manual actions while improving accuracy. +- Optimized Azure infrastructure build times with Terraform and Ansible automation, migrated client facing services off internal servers, and deployed web services. +- Improved system metrics and alerts with InfluxDB and automated the deployment of monitoring tools and configuration. +- Improved code reliability by unifying team development environments, taught team members how to write code, and improved our teams code processes. + +### DevOps Engineer - Directors Mortgage + +Location: `Lake Oswego, Oregon` +When: `April 2017 to August 2019` + +- Built in-house tools with C# to automate business processes improving our accuracy and delivery times by 100% which improved our relationship with vendors by reducing errors on uploads. +- Used PowerShell to automate internal and external processes including: loan status email notifications to clients, new hire and termination processes, and Exchange server adjustments which resulted in a 75% reduction in manual tasks. +- Personally implemented Ansible to maintain configuration of servers, run routine updates and deploy Docker containers which prompted management to establish internal migration to Infrastructure as Code. +- Supervised and managed a team of technicians and trained team members in Powershell and Ansible to reduce manual tasks and improve SLA’s by 25%. +- Cleaned up the existing server infrastructure by removing redundant servers that resulted in an efficient network and saved over $5,000 per quarter on licensing costs. +- Wrote C# application to fully automate an internal process that reduced the need for a team of 5 people down to 1 saving the company $75,000 per year. + +### IT Specialist, Contract - Georgia Pacific + +Location: `Camas, Washington` +When: `December 2016 to March 2017` + +- Deployed new hardware and improved server monitoring with PowerShell scripts. + +### Systems Administrator - Remedi Senior Care + +Location: `Baltimore, Maryland` +When: `November 2013 to December 2015` + +- Implemented security policies to reduce sensitive data getting exposed and created policies for user compliance saving the company $15,000 per year. +- Monitored and managed over 100 Windows and Linux servers and deployed new networking equipment to reduce failure rates caused by outdated equipment. +- Observed and monitored servers and network for problems with SolarWinds and SNMP. +- Facilitated and implemented new Cisco hardware. +- Completed automated Active Directory and built terminal server maintenance using PowerShell. +- Ran through extensive application testing before roll out to users. +- Supervised and managed Network-wide device encryption. + +### IT Specialist - Rural Alaska Community Action Program + +Location: `Anchorage, Alaska` +When: `March 2007 to August 2013` + +- Wrote scripts to automate tasks with PowerShell and Bash. Saved the team 50+ hours of work. +- Simplified computer deployments by developing Group Policy Objects, maintained remote office server equipment, migrated all physical servers to VMware ESX, and migrated legacy network equipment with Cisco hardware. +- Instituted patch management for Clients and Servers with WSUS. + +## Education + +### Bachelor of Science (B.Sc.) in `Computer Networking` + +Charter College, Anchorage, AK, 2011 + +## Skills + +- C#/Dotnet +- GoLang +- Python +- API Development +- \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..25e4a96 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/jtom38/website + +go 1.19 + +require github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20221214160441-315a00623c9f // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..ae9c50b --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20221214160441-315a00623c9f h1:cf7PDZnHEHhrAQqeZrkuJdwU4esXxgq9p84e4KRJZes= +github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20221214160441-315a00623c9f/go.mod h1:yY14BLqqh5G61rO81YcJKMHY1rClY5iIiUK+K2JKSUM= diff --git a/makefile b/makefile new file mode 100644 index 0000000..27bdd8f --- /dev/null +++ b/makefile @@ -0,0 +1,9 @@ +.PHONY: help +help: ## Shows this help command + @egrep -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' + +new-page: ## Creates a new blog post based on a template + hugo new ./content/posts/placeholder.md + +start-dev: ## Starts the dev server and redirects to the localhost + hugo server --baseURL localhost \ No newline at end of file