Hi there! I’m Ryan, and I’m a software developer focused on backend systems. I have years of experience building high-performance Java-based backend web applications, delivering to some of the largest names in the telecom industry worldwide. I’m a strong team player with leadership skill under my belt.
Some of my hands-on skills include: Java 8+, the Spring Framework (and Spring Boot!), Docker, Kubernetes, Hazelcast and Eating Pizza.
Senior Software Developer
February 2018 - Presentamdocs.com
UXP Systems, Inc. was acquired by Amdocs in February 2018 to form the Digital Identity unit.
After acquisition by Amdocs, the product (ULM - User Lifecycle Management) underwent a substantial migration from a legacy monolith intended for on-premise deployments to a microservice-based architecture delivered via a SaaS model. I contributed a number of key features and accomplishments as part of this evolution, including the design and lead development effort to a complete multi-tenant strategy. In the lead up to a first production deployment, I led a performance analysis and optimization effort, utilizing tools such as JMeter (for load generation) and JProfiler (for application profiling) to test, investigate performance concerns and deliver resolutions to ensure our SaaS product could withstand the anticipated load as a result of a number of customers migrating or onboarding to the SaaS version of the product. I also contributed significantly to product documentation; working closely with technical writer(s) as part of a complete revitialization of the product’s business process documentation, which received notable praise from both internal stakeholders as well as customers.
Since the migration to a SaaS product, I have led development of new Spring Boot-based microservices on the critical path for customer implementations, working against tight deadlines to deliver effective and performant solutions. I took end-to-end ownership responsibilities, from initial architectural design to microservice development to building Docker images and Helm charts, culminating in deployment to Kubernetes clusters using fully automated CI/CD pipelines in Jenkins.
Most recently, my roles and responsibilities have expanded to include a more DevOps role, including being the primary maintaner of Vindicia Connect’s Kubernetes environments (dev/QA/staging/pre-production) as well as the production environment, and I continue to gain experience with Kubernetes/Helm while working closely with the DevOps team.
Key Technologies: Java 8, Spring (Boot, Web, Security), REST APIs, Hibernate ORM, MySQL/MariaDB, OpenID Connect/OAuth 2.0, Docker, Kubernetes, Helm, Hazelcast, Elasticsearch, nginx, fluent-bit, Prometheus/Grafana
Senior Software Developer
February 2017 - February 2018uxpsystems.com
In this period, I assumed a team and technical lead role to plan, lead and execute the migration of a customer’s highly-customized video service solution to a modern version of the ULM (User Lifecycle Management) product. I was assigned several team members to work under my guidance and leadership, performing significant upgrades and refactoring to align with the company’s newest architectual guidelines and standards, while optimizing performance to meet the customer’s future needs. I assumed a scrum master role additionally during this time, using JIRA to write user stories for the team, lead scrum ceremonies (standup, sprint planning, backlog grooming), prioritize and organize the backlog, and acted as the interface between the team and other key stakeholders including internal Solution Architects as well as stakeholders from the customer. I provided weekly status updates to senior management and leadership (including the CTO and CEO). The project was successful and the team seamlessly delivered the new version to the customer in a short maintenance window.
Key Technologies: Java 8, Spring (Web, Security, Integration), REST APIs, Hibernate ORM, OpenID Connect/OAuth 2.0, SAML, Ansible, Hazelcast, MySQL/MariaDB, Elasticsearch, MongoDB, nginx
April 2013 - February 2017uxpsystems.com
I joined UXP Systems to work on the MINT Digital Experience Engine, a product providing telecom operators with individualized user profiles without the need to replace legacy BSS/OSS systems. I designed and implemented a new machine-to-machine interface for BSS/OSS and CRM systems to use as a method of synchronizing data between the services. I then worked on and implemented a strategy using Hazelcast to enable highly-available and scalable deployments by sharing sessions and state across nodes.
I led development efforts for an integration between MINT and YouTube, allowing customers to offer YouTube access personalized by the profiles configured by the end-user in MINT.
I was selected to join a small, fast-paced team to design, develop and integrate a solution joining MINT with Microsoft/Ericsson’s Mediaroom software as part of a Proof of Concept for a large Canadian telecommunications operator. I worked on integrating a parental controls solution onto Mediaroom set-top boxes, as well as led a multi-company effort to integrate a recommendations engine into both MINT and Mediaroom. I also contributed backend development effort to a companion portal, allowing end-users to control certain user personalization settings on their set-top boxes from a more user friendly desktop or mobile browser. The project was a success, with MINT providing user personalization and recommendation features that Mediaroom could not, and due to MINT’s intelligent caching abilities for Mediaroom content, the customer observed a significant increase in platform performance, reducing the latency time to action on the customer’s set-top boxes.
I worked closely with the Chief Architect to design and implement a custom analytics pipeline. This pipeline transparently collected user engagement with the product, intended to be used as an input to BI (Tableau) or other big data (Hadoop). This pipeline was also used as the input to the recommendations engine implemented as part of the Microsoft/Ericsson Mediaroom Proof of Concept.
Key Technologies: Java 8, Spring (Web, Security, Integration), REST APIs, Hibernate ORM, OpenID Connect/OAuth 2.0, MySQL/MariaDB, Oracle DB, Hazelcast, Ansible, Elasticsearch, MongoDB, Redis, RabbitMQ, Microsoft/Ericsson Mediaroom, SOAP
System and Method for Delegating Service Entitlements Across Multiple Media Services
Praveen Gangadharan, Gemini Waghmare, Jay Deen, Jingyu Wang, Ryan Morrison
A system and method are provided for delegating entitlements to media services. The method includes storing, at an intermediary system operable between a plurality of service providers and a plurality of user devices, authorization data for each of a plurality of media services associated with a first user, the authorization data enabling the intermediary system to access the corresponding media service from a service provider on behalf of the first user. The method also includes, after detecting a request to access one of the plurality of media services by a second user, using a set of stored associations to determine whether or not the second user has been delegated an entitlement to the one of the plurality of media services by the first user. The method also includes, after determining that the second user has the entitlement, using corresponding authorization data to access the one of the plurality of media services on behalf of the second user, via a communication interface between the intermediary system and the corresponding service provider.
U.S. Patent No US20170359345A1, filed 2016-06-10, granted 2020-08-25
Canada Patent CA2932695A, filed 2016-06-10, pending
Diploma, Software Engineering (with Honours)
2009 - 2011