Zach Peters
[email protected] | 563-357-2740 | https://github.com/zpeters/ |
Systems Integration Developer July 2021 –
Current
Tigunia Remote
Tigunia delivers a complete offering of business applications across the entire
technology stack to mid-sized, growing organizations in North America.
In 2021, I joined Tigunia to be their first developer on their ”platform” team as well as the owner of a dashboarding product. As a member of the platform team, I am leading the path towards and infrastructure-as-code by building up their development infrastructure (best practices, CI/CD training, etc). In addition, I provide general API management, data manipulation and automation where i can help with other departments and products. For my part in the dashboarding product, I am fully responsible for the design from the ground up of the API and all backend data services. I have taken on the additional responsibility of creating an MVP of the frontend web app.
Modernized DevOps practices and designing scalable integration solutions
Development of multiple PowerShell modules, standardization of API calls, integration of logs with Grafana, and alerting off of errors in scripts.
Building and maintaining a CI/CD pipeline for integrations, still in use after 2 years and hundreds of integrations.
Contributions to improving team capabilities in DevOps through code review discussions and thoughtful code improvements, even in less desirable tasks like bug fixes in unfamiliar code or automation enhancements.
Development lead of a dashboarding product
Started with a vision from the VP of IT and turned this into a fully blue-printed design and plan for a dashboarding product that will be in internal tool as well as product we can sell.
Created mockups for the user interface as well as detailed plans for the MVP product
Designed and built out the necessary API endpoints
Designed and implemented the backend logic for retrieving data
Designed and implemented the authorization for various resources in a role-based manner
Implemented core security processes in Rust for reliability and performance
API management, design and implementation
Ownership and development of all backend service for our Sales tax product. This is a lean version of a product like Avalara. In the past year I have rewritten and optimized all facets of this system to improve reliabilty and increase responsiveness. API calls were taken from multiple seconds to a few hundred milliseconds. The latest version of this backend is ”function app” based golang api server.
Created key monitoring dashboards and metrics to observe API characteristics for day-to-day monitoring and troubleshooting
Designed and implemented a standard process for organization in our API. This includes versioning, caching and other policy settings as well as our ”product based” security structure
Tuned various API settings to drop our average latency from multiple seconds to a few hundred milliseconds.
Data Ingestion / Transformation Projects
Designed and implemented automation to convert our CRM system from a legacy format to a new production system. This system reliably processes tens of thousands of records. The largest challenege with this system were many vendor details that were not documented.
Created data transformation scripts to provide federal regulation data for customers based throughout the US
Took ownership of our Sales Tax product backend and API endpoints. This resulted in a 10x increase and speed and reliability. Rolled this out using api versioning in coordination with the development team. This included a full re-design of the data storage and logic components of the api endpoints. This system was used as a model for all of our other applications.
Created various scripts and systems to help knit together data from various institutions for one of our most popular products. Saving hours of manual labor
Though my current role at Tigunia is focused on development, I have found opportunities to provide leadership to the team.
Led other individuals in development and coding practices
Started weekly code reviews to practice and develop our skills
Created documentation and led training for other engineers on Azure Dev-Ops pipelines and deployments
At Tigunia I have created many development standards
Created a standard logging library that allows us to log from our scripts into the Tigumon serivce
Designed and implemented our structure for CI/CD in Azure DevOps
Other Projects and Initiatives
Updated our Case Alarms system for better accuracy and test-ability. Added over one-hundred unit tests to help ensure accurate date calculation for our business hours and calendar. Split out this calendar code so it will be reusable in the future
Organized existing and new work into kanban boards as a new effort for the team
Designed and implemented an installation system for a custom monitoring solution that we designed. This allowed us to rapidly deploy multiple components with the click of a button
Director of IT and Integrations August 2019 – July
2021
BCI Ridgeland,
MS
BCI is a Managed IT Service Provider located in Ridgeland, MS serving the
Southeast
In August 2019, I was promoted to a new role as a Director of Internal IT systems and Integration. This was a new function at BCI. This role is less management and more focused on the development and integration of our different systems; both homegrown and third party.
Created a Quarterly Business Review system that pulls data from different external APIs to create a single, cohesive report to review with our customers on a quarterly basis. The backend was based off of GraphQL which allowed me to flexibly query from datasources in a more efficient manner.
Learned Docker and created a docker swarm for the various services I’ve written. This uses a cluster based filesystem for redundancy. This has reduced deploy time to a matter of minutes and has increased reliability greatly. Over 2020, I upgraded our system to kubernetes to provide better stability and manageability
Created various ”bots” to help our staff with different reminders and tasks:
Notification of Prioirty 1 issues
Notification of new tickets
Creation of new tickets
Daily stats for Covid-19 so we can appropriately schedule staff
I worked on consolidated alot of the systems I had initially created into a system called ”metaflow”. This allowed me to have a generic ”base” to run workflows specific to our environment. This allowed me to avoid a lot of boilerplate that I had to generate in the past.
Over 2020, I worked on making our environment more consistent and uniform. I adopted Rust as the primary programming language and ported existing apps over to it. There were several tradeoffs to this. In the past I had been using Clojure and Go, which are both very different so it lead to a lot of decreased productivity mentally jumping between the two systems. Rust allowed me to have a single technology to focus on. The development in Rust is slower and more methodical (this is a benifit for me) and allows me to have more guarantees on Types which I did not have in the past. This allows for greater confidence in refactoring and generally adding to the code.
In 2020 I also started practicing a more test driven development (TDD) approach. Along with Rust, this gives me better confidence in code I am developing and also going back into code I haven’t touched for a while.
We were lacking a lot of visibility around work on tickets for customers that had pre-paid for service. I developed a notice system that receives updates from Connectwise via callbacks (webhooks) to instantly notify the assigned engineer. This uses multiple different api calls to determine the ticket, customer, agreement and the balance to notify the engineer. Notification emails are rendered in mjml to cut down on different workarounds and boilerplate that are normally required in HTML formatted emails
For 2021, I have implemented an integration with Techdata (on of our major vendors) to provide shipping updates in our project are of Connectwise Manage. There was no native integration of any kind so everything was build from the ground up. To accomplish this i created a service to pull current shipping data from Techdata. This involves multiple steps, including managing an expiring token for authentication. Shipping info is pulled from the Techdata api, validated and formatted and placed on a message queue (Rabbitmq). From there another service picks up the messages and handles them. If a change in shipping status is noted it updates an existing database and then renders the change in multiple fields in Connectwise. Additionally, this will notify project managers as to shipping updates. By implementing this systems we are saving dozens of hours per week for each project manager of manual lookups. This also saves frustration on the customer end since we’ll always have access to the latest shipping information
Practice Director Service Desk / Customer Service, Operations Manager,
Developer August 2018 – August
2019
BCI Ridgeland,
MS
BCI is a Managed IT Service Provider located in Ridgeland, MS serving the
Southeast
In August 2018, I traded the ”Project Team Manager” part of my role (see next section) with the Service Desk Manager. This removed the management of Project Managers from my responsibilities and added management of the Service Desk and Customer Service
Managed a team of nine engineers and three customer service staff (remote and on-site).
Service Desk
Leadership and mentoring for a world-class service team
Created processes for SLAs and service desk practices to allow us to reach our 100
Created training plans so all staff have a two-year plan for training and self improvement
Promoted our top engineer to a leadership position
Monitored key service metrics to give us better visibility of service delivery. This allowed me to make corrections with the team and solve issues with a data-driven approach:
Ticket open/close rate
Staff utilization
Response time to high priority issues
Ticket handling time
Drove average handling time from 34 hours to 8 hours by consistently reviewing any tickets over ten hours. These tickets were discussed with the ticket owners to review progress and come up with appropriate solutions
Monitoring of tickets that haven’t been updated in 5 days. Following up with the owners to address the situation accordingly
Monitored the effort (in hours) to resolve tickets. Made improvements by follow-up and working on improvements with the ticket owners. This took our average of 4 hours per ticket to 1.4 hours per ticket
Customer Service
Leadership and mentoring for a world-class Customer Service team
Implemented processes to allow us to reach our ”no missed calls” goal
Implemented processes for service tickets to allow us to gather customer feedback and react rapidly to issues
Operations
Followed ITIL-based processes and policies to enhance our capabilities as a Managed Service Provider
Creation of core business processes: ”on call”, ”zero missed calls”, quote-to-invoice lifecycle
Created ”exception based” triggers and alerts to shift from passive to active monitoring of process issues
Creation of QA review processes for service
Designed a quarterly review process (forms, meeting cycle, follow up discussions) for our company
Development
Creation of monitoring, alerting and utility apps and scripts. Using Go, Python, Elixir, PHP, etc. Following best practices for a 24x7 production environment.
Created a chat bot for our team chat to help with SLA reminders and provide different utilities for the team. This is written in Elixir and interfaces with Webex Teams and Connectwise
Designed and implemented a billing reminder system in Elixir that interfaces with Connectwise Manage to reminder our customer of upcoming and past due invoices.
Developed and implemented a program to audit Office 365 usage against our billing system. This helped to keep our billing in line with customer usage.
Development of security software to audit our Managed email customers for any leak of their passwords to third parties
Development of in-house software to audit and manage a managed print service
Development of a gateway to integrate our Fortinet devices with Connectwise
Development of a monitoring service that checks for the existence of certain emails or tickets on a daily basis. If there is an absence if a matching ticket or email it will take action to alert us
Service and framework to audit our provisioned services against our business records/billing. Alerting us to take action if there is a large mismatch.
Operations Project Manager Team Manager September 2014 – September
2018
BCI Ridgeland,
MS
BCI is a Managed IT Service Provider located in Ridgeland, MS serving the
Southeast
Managed Customer Service and Project Management departments
Managed and maintained critical business services including databases and application servers for ticketing, sales management, sales quoting, and financial systems.
Migrated all company data and systems from legacy CRM and ticket management software to ConnectWise Manage/Sell/Automate. Including all system design, migration plans, migration execution, staff training and day to day systems management
Developed and managed a new on-call process to take us from customers calling individual engineers to a fully staffed 24x7x365 call-center with multiple escalation paths so our customers always had an immediate and appropriate response.
Standardized issue intake and reorganized our service desk process. Taking this from a single person taking written notes to a three person rotation with immediate entry into our ticket tracking system. Customers went from multi-day delays in engineer response to responses that matched our customer service level agreements. For critical issues this was fifteen minutes.
Implemented and managed several key review processes including a monthly financial review of projects and a weekly review of service tickets. This contributed to direct increase in company gross profits due to better cost controls and more efficient use of resources.
Designed and implemented several projects and processes to optimize operations and reduce exposure. These were multi-year projects:
Migrated dozens of websites to a consolidated platform.
Consolidated all customer disaster recovery data (server backups) into a more modern structure.
Designed, programmed, implemented and trained staff on a stop-gap monitoring system for critical customer backup data.
Restructured IT staff to go from a ”siloed” structure into a tiered structure to provide better responsiveness to our customers and to provide engineers with a clear path to promotion.
Started several teams to create accountability and focus training for specific business needs, such as, customer data backups and remote management and monitoring of customer environments.
Led weekly resource meetings to bring multiple teams together to discuss and create a strategy for the week relating to how staff are being allocated.
Created a five year plan for my department to assist in shifting the business from a break fix to a managed services company. This includes multiple projects and initiatives to optimize and modernize business processes. For example:
Replacing our outdated ticketing, quoting, customer management and server management software with more modern solutions.
Creating and enforcing standards for documentation.
Creating a suite of standard services and products that we offer.
Designing, implementing and promoting standards for hiring, firing and promoting staff.
Challenging teams to work in a repeatable fashion to allow the business to continue to scale.
Senior Engineer / Cloud Architect / Field Manager April 2014 – September
2014
Think Anew Madison,
MS
Think Anew is a Health Care focused IT services provider
Provided Senior Engineer level guidance and support for client facing issues.
Provided project management and technical support for new service implementations.
Designed and implemented a ”plug and play” design that helped to standardize our client environments.
Managed and maintained all server infrastructure for providing resources to our customers on a Vmware/Microsoft platform
Managed a team of six engineers that performed technical troubleshooting, installations at customer environments and critical data backups.
Architect for all E-Charting, Cloud, Microsoft and VMWare based internal and client facing implementations.
Guided the direction of our cloud hosting environment
Developed new product sets that can be delivered/sold to our clients.
Developed and managed all IT processes
Project management and Senior technical support for all client facing implementations as well as internal projects
Interviewed new candidates for various technical positions
Operations Manager 2011 –
2014
Applied Tech Madison,
WI
Applied Tech is a Microsoft Gold Certified IT service provider
Interviewed hundreds of engineers and hired dozens to build a world-class IT support team. During this time Applied Tech was recognized by the 2013 IB Executive Choice award and was on the MSP Mentor list multiple years in a row.
Expanded Level 1 team from a single person to a staff of six with defined accountability and promotion paths. This increased our responsiveness to customer request while allowing staff off time to train and develop their skills.
Designed and instituted an after-hours (emergency IT services) policy that allowed for a 24x7 no-missed-calls response for our customers.
Developed our three most promising engineers into Team Leads to help expand our capabilities as a service provider.
Created and led a cross-department Customer Service task-force with the goal of discussing current customer service issues, generating solutions to these problems and enacting the solutions that we found.
Presented highly detailed policies to staff at Applied Tech
Regularly led team meetings for entire a technical team at Applied Tech
Managed technical team of 30 engineers at Applied Tech during a period of rapid growth
Performed quarterly reviews of technical staff
Designed on-boarding process for new engineers
Arranged and planned vendor training for technical staff
Planned and managed migration of hundreds of pieces of customer documentation from an outdated CRM record to a more free form and fully searchable system based on OneNote
Created various monitoring software to fill the gaps of our existing system including: monitoring of our BDR system, Exchange database alerting, an alternate patching method for failed patches, and auditing software for newly created workstations
Started a company-wide training program to ensure that all technical staff receive consistent and timely training. Used a modular approach to keep the system flexible and the training units easier to manage
Prior work history available upon request
Powershell, CSharp, Python, Elixir, Rust, Go, Clojure, PHP, Ruby, Ruby Rails Python, shell scripting (Bash, Powershell, Windows batch files), Erlang, Lua
Azure, AWS, Docker/Podman, Kubernetes, Github/Azure pipelines and deployment
Connectwise Manage, Kaseya, Labtech/Automate, Great Plains, MS CRM, Salesforce, Sell (Quosal)
MySQL, Microsoft SQL, Postgresql, Sqlite, Redis, Mongodb, Cockroachdb
Puppet, Ansible, RabbitMq, Salt stack
Bachelor of Science - Business Management with an IT Concentration (2007) Hamilton College, Cedar Rapids, IA
Elixr library for the Connectwise Manage api.
https://github.com/zpeters/ex_cwmanage
Rust crate for connectwise.
https://crates.io/crates/cwmanage
Contributer to an Elixr library for ”Have I Been Pwned”.
https://github.com/zpeters/ex_pwned
Unofficial command line interface to ”speedtest.net”.
https://github.com/zpeters/speedtest
Control your Nest thermostat from your command line
https://github.com/zpeters/nerdnest
Command-line loader for the WifiMCU module. Previously this was limited to a
Windows only gui application
https://github.com/zpeters/wmc/
Code Like a Pro In Rust - 2022
Metrc - TPV Certification - TLKTDLQSGV-SSRQYMXM-RHTHDHSLFR
ConnectWise Certified Expert - CMCE-04092019-507992
ConnectWise Certified Professional - CMCP-05142019-507992
ConnectWise MSP University
Fortinet - NSE1, NSE2, NSE3
MongoDB - M001
Spring Boot 3, Spring 6 & Hibernate for Beginners (Udemy) (39 hours) - https://tinyurl.com/2n6hshjn
Docker and Kubernetes: The Complete Guide (Udemy) (22 hours)
Docker Swarm Master: Devops Style Cluster Orchestration (9.5 hours)
Rancher Academy - Certified Operator Level One
Certified Kubernetes Administrator (Udemy) (18.5 hours)
Version: 145de27ec2e4308b6f10539293fc5aa7fa7d5dbd