Hi! 👋, I'm Matthew Tyson
Software Engineer & Lifelong Learner
In the ever-evolving realm of technology, there's a quote from Kyle Simpson (getify) that resonates deeply with me:
There are no experts, we’re just at various different stages of figuring this out.Embracing this philosophy, I’ve spent years honing my skills, consistently evolving, and engaging with the challenge and beauty of software engineering.
While my portfolio below showcases my technical proficiencies, it's my commitment to learning, adaptability, and genuine passion for improving lives through technology that sets me apart.
Computer science, much like magic, often amazes us with its capabilities and solutions, but there's a method, logic, and structure behind each trick. As Arthur C. Clarke once said, "Any sufficiently advanced technology is indistinguishable from magic." And in many ways, the elegant solutions we devise in computer science can feel like modern-day spell-casting. The more you delve into the field and peel back its layers, the more the underlying mechanics reveal themselves, turning the "magic" into understandable, yet still wondrous, processes.
About Me
I'm a 32-year-old software engineering enthusiast, dedicated to the craft of coding and design. My mission is to make other peoples lives better and save people time through the use of technology. With a keen sense for detail and a passion for creating robust software solutions, I've accumulated skills in Python, Java, C++, and R, with a particular emphasis on machine learning applications.
My journey into the world of software began at an early age, marked by my proactive role in addressing a critical security vulnerability at my high school. This early achievement piqued my interest in cyber-security, leading me to assist my alma mater in implementing effective AD controls, safeguarding data integrity across the school. This experience has given me passion and started me down this career path. I feel a strong sense of responsibility when developing and maintaining secure software.
At Southern New Hampshire University I have taken courses in Software Development Lifecycle, Software Security, and DSA Analysis and Design, amongst others, complements my hands-on experience. This combination has honed my ability to approach challenges analytically, design efficiently, and ensure the software's security and robustness. My expected program completion month is October 2024.
Outside the realm of ones and zeros, I've taken on the role of "Master Builder" alongside my son. Together, we share my passion for constructing LEGO and battling the occasional dragon (the minecraft variety, of course). As a father, I've learned that the patience required to locate that elusive 2x4 brick in a sea of pieces isn't too different from hunting down a pesky bug in a codebase. Through play and imagination, my children continually remind me of the importance of creativity and innovation, lessons I strive to apply in my professional endeavors.
As I approach the culmination of my academic journey, I'm eager to embark on a new chapter, translating my knowledge and experiences into real-world software solutions. I'm actively seeking opportunities to contribute as a software engineer, with a keen interest in roles that leverage my skills in software development, machine learning, and cyber-security.
My Projects
-
SCRUM
This project involved understanding and applying the roles of a Scrum team and Agile development principles in the development of the 'SNHU Travel' application. I took on the role of the Scrum Master, facilitating Scrum events, removing impediments, and ensuring adherence to the Scrum-Agile framework. Our team successfully utilized tools like Trello and Slack for task management and communication. The Scrum-Agile approach enabled us to adapt quickly to changing requirements, foster collaboration, and maintain transparency throughout the development process. Despite initial challenges, the flexibility, collaboration, and transparency provided by the Scrum-Agile approach were key to the successful completion of the SNHU Travel project.
View on GitHub -
Programming Languages
The project involved developing an item-tracking system in C++ for Corner Grocer to optimize item placement based on purchase frequencies. This endeavor showcased my proficiency in using classes, implementing efficient data storage and retrieval using maps, and ensuring professional code quality and adaptability across multiple programming languages. The code involves loading data from a file, incrementing the frequency of each item, and then displaying the item frequency, all frequencies, a histogram of the frequencies, and saving the data to an output file. This project highlights my ability to implement data structures optimally and manage file I/O operations.
View on GitHub -
Software Security
This software security project involves enhancing the security of Artemis Financial's RESTful web API using Java, Maven, and cryptographic protocols. The project encompassed conducting security testing, implementing SSL/TLS for secure communication, adding checksum for data integrity, and refactoring code to address vulnerabilities identified by OWASP Dependency-Check Maven. It also included implementing AES encryption, adhering to industry best practices and regulations like GDPR, HIPAA, and PCI DSS, modernizing operations by leveraging open-source libraries and evolving web technologies, conducting an architecture review, input validation, secure API interactions, and manual review to identify and mitigate potential vulnerabilities.
View on GitHub -
Software Design
The project entailed creating a web-based version of 'Draw It or Lose It,' initially an Android app by The Gaming Room. I employed Java and UML class designs, incorporating the Singleton design pattern, to build the necessary classes that supported the game's software requirements and ensured unique identifiers for each game, team, or player instance. This process involved addressing various design constraints, such as responsiveness, utilization of stock drawings, implementation of software design patterns, and efficient management of storage and memory. Additionally, the system architecture included managing relationships between different classes and entities.
View on GitHub -
System Design
This project revolved around system design, focusing on creating a robust web-based application. Utilizing Lucidchart, I crafted various UML diagrams, including use case, activity, sequence, and class diagrams. The goal was to automate essential processes, reduce administrative work, and ensure compliance with regulatory standards. This involved defining technical, non-functional, and functional requirements, and addressing user interface needs, assumptions, and limitations. Technical requirements included a server infrastructure, web application framework, database management system, operating system, web server, and integrated development environment. Additionally, stable internet connectivity, cloud hosting, and data backup and recovery strategies were deemed necessary. This high-level approach facilitated a design that harmonized client needs with identified constraints.
View on GitHub -
Testing Using JUnit
I developed and tested back-end services for a mobile application at SNHU using Java to create a REST service and JUnit for testing. The application included contact, task, and appointment services. My systematic unit testing approach involved designing test cases for each feature, ensuring alignment with software requirements, and achieving comprehensive code coverage. I employed functional testing, boundary value analysis, and equivalence partitioning techniques, both black-box and white-box approaches. The experience enhanced my proficiency in structuring test cases and writing technically sound and efficient code. Reflection on the project underscored the importance of a meticulous, unbiased, and disciplined approach to ensure software quality, stability, and maintainability.
View on GitHub -
3D Scene Development
I developed an interactive 3D scene of a workspace using OpenGL. The scene features a desk with objects, each symbolizing aspects of creativity, problem-solving, and nostalgia. A poignant element is the garbage pile, representing failures as stepping stones, which taught me the importance of embracing mistakes in the creative process. This project involved thoughtful design and organized, modular coding using custom functions and classes, enhancing my skills in 3D graphics, user interaction, and code organization.
View on GitHub -
Data Structures and Algorithms
I developed a course management system in C++ that efficiently stores and queries course data. The system loads a CSV file into three different data structures: a binary search tree (BST), a vector, and a hashtable. The key challenge was to enable efficient querying and printing of all courses in alphanumeric order. I recommended using a balanced BST after weighing the pros and cons of different structures, including hash tables. The project reinforced the importance of selecting appropriate data structures to enhance software performance and improved my skills in writing maintainable, readable, and adaptable code.
View on GitHub
Get In Touch
Contact
Email: matthewtyson24@gmail.com
LinkedIn: www.linkedin.com/in/matthewtyson24
GitHub: https://github.com/nexusGM
Twitter: https://twitter.com/MatthewTyson24