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

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 Manager responsible for deploying releases and hotfixes to production via Adobe Cloud Manager
  • 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
    • Currently in the process of integrating unit and integration testing to increase code coverage and reduce the chances of changes breaking production
    • Currently in the process of integrating code linting at the CI/CD level to enforce a consistent code style
  • 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
  • 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 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 anytime 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
  • Using Adobe Experience Platform Launch to add and remove tracking scripts on various environments
  • 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
  • Following best OPSEC practices

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

11

Years of Programming Experience

22

Open Source Projects Posted Online

185

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