Darian Benam's Résumé

Last Updated:

Photo of Darian Benam

Darian Benam is my name and maintaining legacy code is my game. 👀

Work Experience

2024

Full-Stack Web Developer II

Full-time

BlackBerry Limited

Waterloo, Ontario, Canada

  • Provided support to a third-party agency to rebrand the frontend of blackberry.qnx.com
    • Responsible for reintegrating all codebase changes made by the agency and deploying them to production
  • Prioritizing and implementing fixes in advance to avoid service downtime (e.g., SAML certificates expiring, feature deprecation from third-party services, etc.)
  • Integrated email notification support to a CI/CD script, allowing developers to know when a BlackBerry Web Review App environment is available on creation
2023

Full-Stack Web Developer I

Full-time

BlackBerry Limited

Waterloo, Ontario, Canada

  • Maintaining multiple websites owned by BlackBerry Limited in an agile environment including but not limited to blackberry.com, blackberry.qnx.com, and developers.blackberry.com
  • Deployment/Release Manager responsible for deploying weekly releases and hotfixes to BlackBerry's Adobe Managed Services environments
  • Responsible for advocating and integrating DevOps methodologies into the Digital Marketing Technology team's workflow
    • Introduced GitLab for source code management and collaboration
    • Lead developer for architecting and maintaining custom GitLab CI/CD pipelines for testing, building, and automating common jobs
    • Heavily integrated scripting languages such as Bash, C#, TypeScript, and PowerShell to automate common jobs
  • Created a service that automatically invalidates Amazon CloudFront cache on page replication for a specific subset of page directories via OSGi, Apache Sling APIs, and AWS SDK for Java—overall eliminating the need for Content Authors to physically publish these types of pages outside of regular business hours
  • Responsible for developing, testing, and deploying the next-gen Global Navigation component for BlackBerry's main website
    • The Global Navigation is authored via Content Fragments
    • Achieved 100% test coverage for the component via JUnit 5 and Playwright to ensure that any future updates to the Global Navigation do not introduce regressions
    • Created a Dispatcher Flush Rules config to automatically show updates that were published by Content Authors
  • Collaborated with an intern to redevelop the Resource Center component used on blackberry.com and blackberry.qnx.com
  • Rewrote a legacy component from scratch using HTL, Apache Sling Models, TypeScript, and SCSS which is used to display events and webinars for both the Cyber and IoT business units operated by BlackBerry Limited
    • Event and webinar tiles are created via AEM Content Fragments
    • Features the ability to auto remove events that are in the past
    • Used JUnit 5 to write unit tests to ensure any future updates to the component do not introduce regressions
    • Used LambdaTest to ensure the component worked on multiple devices
    • Worked closely with stakeholders to ensure all bugs from the previous component were fixed, used Adobe Cloud Manager to deploy changes to the Adobe Managed Services QA environments
    • Overall, this rewrite has resulted in a better content authoring experience as the legacy component had many bugs (filters did not work, data was stored in Microsoft Excel files which was prone to human input error, etc.) and didn't have the functionality to auto remove items
  • Created an infinite horizontal scrolling subnav component using HTL, TypeScript, and SCSS which is used on BlackBerry's Global Threat Intelligence Report March 2024 Edition page
  • Collaborated with stakeholders from the BlackBerry QNX team and the BlackBerry IT team to bring Coveo search to blackberry.qnx.com
    • Created a custom Apache Sling Servlet using Java which provides end users a temporary token to make requests to Coveo's API
    • Created an AEM Dispatcher filter rule to allow the custom servlet to be accessible on dispatcher instances
    • Managed the deployment of the feature to the Adobe Managed Services environments via Adobe Cloud Manager—created a custom OSGi config for each environment
    • Used HTL, TypeScript, and SCSS for the frontend logic of the search component
  • Collaborated with BlackBerry's IT team to enable GitLab's Review Apps feature on a Git repository that contains the source code for sites such as but not limited to blackberry.com, blackberry.qnx.com, and developers.blackberry.com
    • Architected a custom cache-efficient GitLab CI/CD pipeline to dynamically build an Alpine Linux based Docker container which encapsulates an entire Adobe Experience Manager environment with Maven artifacts from a Git feature branch as well as custom CRX packages (service packages, content packages, etc.)
    • Utilized Kubernetes to deploy a review app instance on-premise
    • Utilized CRX Package Manager's REST API to deploy artifacts if a review app environment is already running
    • Wrote multiple Bash script files to keep the GitLab CI YAML file clean and easy to read
    • Used Sonatype Nexus Repository to store both the built Docker image and third-party artifacts—used cURL to fetch the artifacts via Nexus's REST API
    • Applied best OPSEC practices where necessary to ensure a hardened CI/CD pipeline (setup TLS certifications for cURL, stored sensitive data securely, etc.)
    • Integrated AEM Environment Indicator from ACS AEM Commons to visually tell QA that the the environment is a review app to lower the chances of them accidently modifying the wrong environment
    • Overall, this feature has improved the QA process for the web development team and lowered the possibility of bugs reaching the Adobe Managed Services environments
  • Created a dockerized webhook API using C# 11.0 and ASP.NET Core Web API that listens for Adobe Cloud Manager pipeline events and relays the event to a distribution list via SMTP to notify BlackBerry Web Deployment Managers of a pipeline state (pipeline started, pipeline awaiting manual action to continue, pipeline finished, etc.)
  • Created a PowerShell 7 script that takes in a list of Adobe Experience Manager DAM assets and quickly resolves the equivalent Scene7 URL for each item if it exists
    • Created a Docker container environment to allow the app to easily be run without having to setup external dependencies
    • Results are outputted to the CLI and the user has the choice to output the results to a CSV file
    • Setup a CI/CD pipeline via GitLab to analyze all PowerShell source code files with PSScriptAnalyzer to ensure good code quality
  • Created an extension for Google Chrome and Microsoft Edge using npm, TypeScript, and Webpack which resolves WebP thumbnails in Adobe Experience Manager
  • Created a component using HTL, Java, SCSS, TypeScript, and Webpack 5 that allows developers to embed Monaco Editor into an AEM dialog
    • The component is encapsulated in a CRX package created with AEM Project Archetype 46
    • Wrote a GitLab CI/CD job to automatically build and store the release artifact—implemented cache strategies for Maven and npm dependencies to ensure quick builds
    • Manually deployed the CRX package to BlackBerry's AMS Dev, QA, and Stage environments—followed Adobe's process to get it deployed to BlackBerry's AMS Production environments (i.e., had the Adobe CSE assigned to BlackBerry deploy it to production)
  • Responsible for publishing pages and invalidating Amazon CloudFront cache
  • Writing and updating internal documentation
    • Created a CSS/Less/Sass, HTL, Java, JavaScript, TypeScript, and XML style guide which outlines development best-practices for the Digital Marketing Technology team
    • Wrote documentation on how to manually tunnel into a deployed BlackBerry Web Review App instance using the Kubernetes command line tool (kubectl) to help troubleshoot issues
  • Mentoring co-workers on how to use software such as Adobe Experience Manager, Docker, and Git
  • Performing page and code reviews to ensure best-practices are being applied (accessibility, performance, code quality, etc.)
  • Developing Docker containers for internal development
    • Created an AEM local development author Docker container based on Alpine Linux which includes a few BlackBerry specific CRX packages—this container was created as an alternative to a PowerShell 7 script I developed in early 2023 that installs an AEM instance on a developer's host machine
    • Created a CentOS (later switched to Fedora due to CentOS EOL) based Docker container to run a AEM dispatcher and publisher instance
    • Created a Docker container to test an Apache Dispatcher configuration which automatically gets triggered via CI/CD any time a developer makes a change to a dispatcher file
    • Dockerizing internal apps and scripts whenever possible
  • Created a PowerShell 7 script that automatically installs Java, Maven, and Adobe Experience Manager on a user's host machine
    • Programmed the script to automatically setup the environment variables on the user's machine
    • Used CRX's REST API to upload and install various AEM packages
    • Overall, this script saves time for both current and future employees as they don't have to manually setup and troubleshoot their local development environments which can sometimes take hours
  • Developed a responsive component to help revamp the BlackBerry QNX Partners page to utilize a modern design while still maintaining original functionality from the legacy page
    • Used the following stacks for developing the new component: HTL, Java, TypeScript, SCSS, and XML
    • Wrote a PowerShell script to help migrate data from the legacy page in JSON format to match new component's interface
    • Saved time from manual content authoring by creating a script in JavaScript that gets injected into the Web Browser's developer console to auto-build the component with the partner data produced by the PowerShell script—overall resulting in the component being staged in seconds
    • Collaborated with stakeholders to ensure the data was correctly migrated
  • Currently responsible for implementing tags in Google Tag Manager
  • Gained hands-on experience with OneTrust by fixing accessibility issues related to the BlackBerry OneTrust Cookie Consent Notice banner which is used on multiple websites owned by BlackBerry Limited
  • Resizing and optimizing images with Adobe Photoshop
  • Experienced with using software such as Jira and Optimizely to track and manage tasks
  • Following best OPSEC practices
  • Helped integrate Weglot on blackberry.com
    • Providng technical support to stakeholders post-launch

Web Development Student

Full-time Co-op

BlackBerry Limited

Waterloo, Ontario, Canada

  • Created an extendable CLI app using Node, TypeScript, PowerShell, and Bash which scaffolds the frontend and backend files for an AEM component based on a template selected by the developer
  • Upgraded Webpack from version 3 to 5 along with other various outdated legacy dependencies
    • Integrated Browsersync in the Webpack development config to help speed up the development of new modules for BlackBerry's website
    • Responsible for introducing TypeScript into the codebase
  • Responsible for improving the overall performance of BlackBerry's website according to Google Lighthouse benchmarks
    • Removed unusued JavaScript and CSS files from the codebase
    • Reduced the production JavaScript bundle file from ~7 MB to ~1.1 MB by removing dead code and optimizing JavaScript ES6 imports
  • Used Adobe Cloud Manager to run build pipelines on various environments
    • Followed best practices by testing on multiple environments (development, QA, and stage) before deploying to production
  • Responsible for publishing pages and invalidating Amazon CloudFront cache
2022

Web Development Student

Full-time Co-op

BlackBerry Limited

Waterloo, Ontario, Canada

  • Used AEM (Adobe Experience Manager) to create and update web pages on various domains owned by BlackBerry including but not limited to blackberry.com, blackberry.qnx.com, and developers.blackberry.com
  • Worked with technologies such as AEM, Eclipse, HTL, IntelliJ IDEA, Java, JavaScript, JSP (JavaServer Pages), Jira, jQuery, React.js, SCSS, and Visual Studio Code
  • Uploaded and updated assets such as images and PDF files to BlackBerry's website
  • Used CRXDE Lite to provide updates to BlackBerry's resource center web pages and Customer Success Stories page
  • Used software such as Adobe Photoshop and Adobe Illustrator to resize and edit images so that they can be embedded on web pages
  • Refactored and added new features to frontend/backend code for existing AEM components
    • Modularized a custom AEM dialog component by using compile time JSP include statements on duplicate code
    • Added functionality using JavaScript ES6 and jQuery to swap columns and rows in a custom AEM table component
    • Added a button to clear data on a custom AEM table component
    • Used CoralUI, jQuery, and a custom internal API Sling servlet to build HTML tables quickly based on a XLSX file
    • Added an end date and second body copy line property to a component used for listing events
  • Fixed bugs on existing components
    • Improved various webpage's accessibility score by adding missing or broken alternative text to image tags
    • Fixed visual bug on a component that was used on the homepage
    • Fixed bug on a table component where a dropdown would have more options than it was supposed to have
    • Fixed layout issues that appeared on mobile devices for a component used for listing events
  • Rewrote two legacy components (BlackBerry QNX Board Support Package table and BlackBerry Customer Success library) to utilize a Java Sling Model and HTL for the backend, and Sass/JavaScript ES6 for the frontend
    • Incorporated Content Fragments for one of the components
  • Wrote documentation and notes about AEM development for current BlackBerry employees and future co-op students
  • Set up JavaScript debugging in Visual Studio Code for custom AEM components by configuring the Webpack config file to generate JavaScript source maps in a non-production environment
  • Created a new three-column table component with HTL and SCSS based on a Figma sketch file which was used on the CylanceGUARD product page
    • Created a custom AEM form dialog component for designing the table using the following stack: HTML, CSS, JavaScript, JSON, and JSP
  • Refactored code by fixing spelling mistakes in comments/variable names and also removed dead code
2021

Web Development Student

Full-time Co-op

BlackBerry Limited

London, Ontario, Canada (Remote)

  • Worked with technologies such as AEM, JavaScript, SCSS, and Visual Studio Code
  • Used AEM to create and update web pages on various domains owned by BlackBerry including but not limited to blackberry.com and blackberry.qnx.com according to stakeholder's instructions
  • Uploaded and updated assets such as images and PDF files to BlackBerry's website
  • Actively searched for and provided fixes to UI bugs and broken images/links
  • Used CRXDE to provide updates to BlackBerry's resource center web pages
  • Used Jira to log issues and assign myself work
  • Created a personal CLI application using C#, .NET 5.0, and Visual Studio Code to convert Excel files into JSON format so that the data could be embedded on a web page
2018

Freelance Software Developer

Casual Freelance

Fiverr

London, Ontario, Canada

12

Years of Programming Experience

29

Open Source Projects Posted Online

9

GitHub Contributions This Year

 
  • Sunday
  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday

Volunteer Experience

2020

Peer Mentor

Volunteer

Fanshawe College

London, Ontario, Canada

  • Volunteered from semester #2 to #6
  • Helped students solve problems related to computer programming and any other topics taught in the Computer Programmer Analyst program at Fanshawe College

Education

Logo of Fanshawe College

Computer Programmer Analyst Advanced Diploma

Fanshawe College

London, Ontario, Canada

  • GPA: 4.19 / 4.2
  • Achieved Dean's Honour Roll annually
  • Completed courses that taught topics such as ASP.NET, React, React Native, JavaScript, Microsoft SQL Server, MongoDB, and software design patterns
  • Completed courses such as Data Structures & Algorithms, Client/Server Application Development, and Object-Oriented Analysis and Modelling
  • Completed software projects that incorporated unit tests and common data structures
  • Completed 3 four month co-op work terms at BlackBerry Limited as a Web Development Student, resulting in 1 years worth of industry experience