My CV

#!/usr/bin/env python3
# This CV is valid Python!
import sys
from datetime import date
from textwrap import dedent


class WayneWerner:
    def __init__(self):
        self.name = 'Wayne Werner'
        self.email = 'waynejwerner@gmail.com'
        self.website = 'https://www.waynewerner.com'
        self.education = [
            {'degree': 'B.S. in Computer Science',
             'school': 'University of Central Arkansas',
             'honors': 'cum laude',
             'achievments': [
                 'President, CS Club - Fall 2010-Spring 2011',
                 'Participation in ACM & Acxiom programming competitions',
                 "Dean's List Spring 2007",
                 "Dean's List Spring 2008",
                 "Dean's List Fall 2008",
                 "Dean's List Spring 2010",
             ],
            },
        ]
        self.experience = [
            {'title': 'Senior Software Engineer/Member of Technical Staff',
             'start': date(2019, 1, 3),
             'end': date(2023, 1, 23),
             'remote': 'full',
             'company': 'Saltstack/VMware, Inc.',
             'technology': ['Python', 'Salt', 'DevOps', 'Open Source'],
             'accomplishments': [
                 'Salt Core Team developer.',
                 'Proposed and led Test Clinic streams on Twitch 2x/week for'
                 ' core and community team members.',
                 'Mentored core and community team members in Python and Salt.',
                 'Led code-quality adoption and automated tooling efforts.',
                 'Responded to CVE disclosures, including CVE-2020-11651.',
                 'Wrote talks and spoke at SaltConf and VMware Explore.',
                 'Led community meetings when colleages were out.',
                 'Integrated with several efforts within VMware, including'
                 ' driving the saltext.vmware development efforts.',
                 'Built several tools for reporting community statistics/health.',
                 'Responded to bug reports, code reviews, and other community'
                 ' contributions.',
             ],
            },
            {'title': 'Senior Software Engineer',
             'start': date(2018, 3, 1),
             'end': date(2018, 9, 1),
             'remote': 'full',
             'company': 'Sketchdeck, Inc.',
             'technology': ['Javascript', 'Firebase', 'DevOps'],
             'accomplishments': [
                 'Encouraged adoption of automated testing, improving our CI'
                 ' server setup and test output.',
                 'Took charge of beginning migration of legacy Coffeescript'
                 ' to well-tested Javascript.',
                 'Expanded responsibility by taking on-call/tech-help'
                 ' responsibilities.',
                 'Solved client-facing issues, directly interacting with'
                 ' customers by email or phone/VOIP.',
                 'Prioritized, designed, and developed features and'
                 ' improvements in a startup environment - including'
                 ' incorporating feedback from multiple stakeholders.',
                 'Updated and enhanced documentation, including improving our'
                 ' onboarding process.',
                 'Promoted a culture of positivity.',
                 'Improved logging by decreasing noise and improving quality'
                 ' of information logged.',
                 'Took initiative in migrating invoice information from a'
                 ' service when notified about their impending shutdown.',
             ],
            },
            {'title': 'Software Engineer',
             'start': date(2015, 3, 1),
             'end': date(2018, 1, 16),
             'remote': 'partial',
             'company': 'Softgate Systems, Inc. (acquired by Tio, then PayPal)',
             'technology': ['Python', 'Postgresql', 'DevOps', 'SELinux', 'Salt'],
             'accomplishments': [
                 'Migrated one-off manual reports to repeatable solution',
                 'Developed OFAC SDN name lookup',
                 'Improved Documentation',
                 'Implemented Buildbot install w/Slack integration',
                 'Ported legacy codebase to clean, modern Python',
                 'Built initial Salt implementation',
                 'Self-taught SELinux for CentOS migration from Debian',
                 'Stepped up to increased responsibility when senior dev'
                 ' quit.',
                 'Promote the increase of our Bus Factor',
                 'Trained others in Python, Saltstack',
             ],
            },
            {'title': 'Software Engineer',
             'start': date(2015, 3, 1),
             'end': date(2018, 1, 16),
             'remote': 'partial',
             'company': 'Softgate Systems, Inc. (acquired by Tio, then PayPal)',
             'technology': ['Python', 'Postgresql', 'DevOps', 'SELinux'],
             'accomplishments': [
                 'Migrated one-off manual reports to repeatable solution',
                 'Developed OFAC SDN name lookup',
                 'Improved Documentation',
                 'Implemented Buildbot install w/Slack integration',
                 'Ported legacy codebase to clean, modern Python',
                 'Built initial Salt implementation',
                 'Self-taught SELinux for CentOS migration from Debian',
                 'Stepped up to increased responsibility when senior dev'
                 ' quit.',
                 'Promote the increase of our Bus Factor',
                 'Trained others in Python, Saltstack',
             ],
            },
            {'title': 'Software Engineer',
             'start': date(2013, 11, 1),
             'end': date(2015, 3, 1),
             'remote': 'partial',
             'company': 'LWSI, Inc.',
             'technology': ['.NET', 'Python', 'Java', 'Javascript'],
             'accomplishments': [
                 'Developed an implementation of the Direct protocol',
                 'Replaced a non-working .NET application with smaller'
                 ' and more effective Python application',
                 'Developed MU2 approved Patient Portal',
                 'Known as the go-to for tech questions',
                 'Known for tackling and solving nasty problems',
                 'Taught team how to use Git',
                 'Wrote automated tests',
                 'Encouraged others to write tests',
                 'Improved development pipeline',
                 'Paid technical debts',
                 'Worked to improve deployment process - using better tools'
                 ' like Jenkins for CI, semantic versioning, Maven/Ant, Docker, etc.',
             ],
            },
            {'title': 'Systems Analyst',
             'start': date(2011, 6, 1),
             'end': date(2013, 11, 1),
             'remote': None,
             'company': 'Data-Tronics Corp.',
             'technology': [
                 'VB.NET', 'C#', 'Visual Studio', 'WCF', '.NET remoting',
             ],
             'accomplishments': [
                 'Took responsibility for design and development of'
                 ' generic inbox-style user control',
                 'Supported and instrumental in helping team adopt Scrum'
                 ' practices, including learning about, using, and teaching'
                 ' TDD, and CI tools',
                 'Designed and replaced an out-dated system as part of a team',
             ],
            },
            {'title': 'Internship',
             'start': date(2010, 5, 1),
             'end': date(2010, 8, 30),
             'remote': None,
             'company': 'Arkansas Highway and Transportation Department',
             'technology': ['VB', 'ASP.NET', 'Visual Studio 2008', 'CSS'],
             'accomplishments': [
                 'Designed and developed web-GUI based front-end',
                 'Self-taught Visual Basic',
                 'Documented and developed project',
             ],
            },
        ]
        self.other_accomplishments = [
            'Top 1% in [python] tag on StackOverflow',
            'Top 5% in [python-2.7], [python-3.x], [tkinter]',
            'Top 10% in [logging]',
            'Taught Tkinter tutorial at PyArkansas',
            'Gave live-coding TDD talk at PyArkansas',
            'Eagle Scout',
        ]

    def show(self):
        border = '*'*(len(self.name)+6)
        print(border, border, sep='\n')
        print(f'** {" " * len(self.name)} **')
        print(f'** {self.name} **')
        print(f'** {" " * len(self.name)} **')
        print(border, border, sep='\n')
        print(self.email)
        print(self.website)
        print()
        print('Experience')
        print('==========\n')
        for work in reversed(sorted(self.experience, key=lambda x: x['start'])):
            end = work['end'].strftime('%Y-%m') if work['end'] else 'current'
            print(dedent(
            f'''
            {'* ' if work['remote'] else ''}{work['title']} ({work['company']}), {work['start']:%Y-%m} to {end}
            {'-'*(len(work['title'])+2*bool(work['remote']))}
            Technology: {', '.join(work['technology'])}
            '''
            ).strip())
            for accomplishment in work['accomplishments']:
                print('-', accomplishment)
            print()

        print('* denotes role was full or part time remote')


WayneWerner().show()