Pluralsight

ACM's custom Pluralsight collection includes more than 2,000 popular courses covering the most in-demand topics in technology, including Software Development, Machine Learning & AI, Data, Cloud Computing, IT Ops, and more.

In addition to standalone courses, ACM's Pluralsight platform offers:

  • Skill assessments (including Skill IQ)
  • Learning Paths curated by experts
  • Certification tracks, including Guides and Exam Prep

Courses levels span Beginner, Intermediate, and Advanced skills and include Learning Paths and exam preparation tracks for some of today's hottest certifications, including AWS, Microsoft Azure, and Google Cloud Platform (GCP); Kubernetes, Tableau, and more.

Important: June 14, 2023 Pluralsight Course Swap
On June 14, 2023, ACM will be conducting a Pluralsight "Course Swap," removing the courses in the left column below based on their utilization, and adding courses in the right column based on member feedback/demand and to ensure the currency and completeness of learning paths. Be sure to complete your training with any courses in the left column by June 13, 2023.

Courses to be removed June 14, 2023 Courses to be added June 14, 2023
.NET 5 Class Libraries: The Big Picture
.NET Diagnostics for Applications: Best Practices
.NET Regular Expressions
Accessibility: Exploring Images and Media
Accessibility: Keyboard Input and Forms
Accessibility: Testing and Screen Reader Use
Accessibility: Website Structure and Comprehension
Accessing SQL Server Databases from Windows PowerShell
Applying Machine Learning to your Data with GCP
ASP.NET Core 3 Microservices: Getting Started
Behavior-Driven Development (BDD) Testing with Appium and SpecFlow 3
Build a Conversational AI Solution with Microsoft Azure
Build a Face Recognition Solution with Microsoft Azure Face API
Build a Form Recognizer With Microsoft Azure Computer Vision
Build a Knowledge Mining Solution with Microsoft Azure
Build a Language Model by Using Language Understanding Service (LUIS)
Build a Natural Language Processing Solution with Microsoft Azure
Build a Speech Recognition Solution with Microsoft Azure
Build a Video Indexer with Microsoft Azure Cognitive Service
Build an Image Classifier with Microsoft Azure Cognitive Service
Build an Object Detection Solution with Microsoft Azure Custom Vision Service
Build Machine Learning Models with Azure Machine Learning Designer
Build Optimal Models with Azure Automated ML
Build Your First Data Visualization with Altair 4
Build Your First Data Visualization with amCharts 4
Build Your First Data Visualization with AnyChart 8
Build Your First Data Visualization with Bokeh
Build your First Data Visualization with C3.js
Build Your First Data Visualization with CanvasJS
Build Your First Data Visualization with ChartBlocks
Build Your First Data Visualization with Charticulator 1
Build Your First Data Visualization with Frappe 1
Build Your First Data Visualization with FusionCharts
Build Your First Data Visualization with ggplot2
Build Your First Data Visualization with Google Charts
Build Your First Data Visualization with Highcharts 8
Build Your First Data Visualization with Matplotlib
Build Your First Data Visualization with MicroStrategy
Build Your First Data Visualization with NVD3
Build Your First Data Visualization with Pygal 2
Build Your First Data Visualization with RAWGraphs 1
Build Your First Data Visualization with Seaborn
Building Advanced Windows PowerShell 4 Functions and Modules
Building Configurable Applications Using .NET 5 Generic Host
Building CRUD Actions in a JavaScript REST API
Building Effective Dashboards with Tableau Desktop
Building Effective Data Communications with Tableau Desktop
Building Features from Image Data
Building Features from Nominal Data
Building Features from Numeric Data
Building Features from Text Data
Building Multithreaded C# 8 Applications with the Task Parallel Library
Building Secure Applications with Cryptography in .NET
Building Windows PowerShell GUIs in WPF for Free
Building Your First Data Science Project in Microsoft Azure
Caching JavaScript REST API Data with Local Storage
Choosing the Appropriate Microsoft Azure Services and Features
Cleaning and Preparing Data in Microsoft Azure
Coding in AWS Cloud9 IDE
Collecting and Preparing Data for Tableau Desktop
Create and Publish Pipelines for Batch Inferencing with Azure
Creating & Deploying Microsoft Azure Machine Learning Studio Solutions
Creating Dashboards with Power BI
Creating Maintainable Contexts for Automated Testing
Creating Reports with Power BI
Data Literacy: Essentials of Microsoft Azure Cognitive Services
Dates and Times in .NET 2
Debugging Windows PowerShell in VS Code
Deploying ASP.NET Core 3 Microservices Using Kubernetes and AKS
Deploying Code with AWS CodeDeploy
Deploying Data Pipelines in Microsoft Azure
Deploying Microsoft Azure Synapse Analytics and Azure SQL Database
Deploying SQL Server Containers in Microsoft Azure
Designing an API Management Strategy for Microsoft Azure
Designing an Intelligent Edge in Microsoft Azure
Designing Deployments in Microsoft Azure
Designing Machine Learning Solutions on Microsoft Azure
Designing Migrations for Microsoft Azure
Developing AI Models in Microsoft Azure
Developing Applications with AWS Lightsail
Developing Microsoft Azure Intelligent Edge Solutions
Developing Models in Microsoft Azure
Developing Websites for Accessibility: Getting Started
Developing with .NET on Microsoft Azure - Getting Started
Developing with Node.js on Microsoft Azure - Getting Started
DevOps with GitHub and Azure: Implementing Infrastructure as Code
DevOps with Github and Azure: Implementing Package Management with GitHub
DevOps with Github and Azure: Implementing Release Strategies with Azure
DevOps with GitHub and Azure: Implementing Software Supply Chain Security with GitHub
DevOps with GitHub and Azure: Implementing Source Control with GitHub
DevOps with GitHub and Azure: The Big Picture
Evaluating Model Effectiveness in Microsoft Azure
Exam Alert: Design Business Continuity in Microsoft Azure
Exam Alert: Design Data Storage in Microsoft Azure
Exam Alert: Design Identity and Security in Microsoft Azure
Exam Alert: Design Infrastructure in Microsoft Azure
Exam Alert: Design Monitoring in Microsoft Azure
Experimental Design for Data Analysis
Exploring Data in Microsoft Azure Using Kusto Query Language and Azure Data Explorer
Feature Selection and Extraction in Microsoft Azure
Getting Started with JSON in C# Using Json.NET 12
Getting Started with UI Testing and Appium 1
Globalization in C# 9 Applications: Best Practices
Identifying Security Requirements of an AI Solution
Implementing a Cloud Data Warehouse in Microsoft Azure Synapse Analytics
Implementing a Data Management Strategy for an ASP.NET Core Microservices Architecture
Implementing a Microsoft Azure AI Bot Framework Solution
Implementing a Microsoft Azure Cognitive Search Solution
Implementing a Relational Database in Microsoft Azure SQL Database
Implementing ADO.NET 4 with C# 8
Implementing Cross-cutting Concerns for ASP.NET Core 3 Microservices
Implementing Hybrid Data Solutions in Microsoft Azure
Implementing Message Brokering with Amazon MQ
Implementing NoSQL Databases in Microsoft Azure
Implementing Pub/Sub Messaging with Amazon SNS
Implementing User Access and Authentication with Amazon Cognito
Infrastructure Testing with Pester 3
Integrating Appium 1 into a DevOps Pipeline
Introduction to .NET Testing with NUnit 3
Introduction to Developing Custom Components with ARIA 1
Introduction to the AZ-400: Designing and Implementing Microsoft DevOps Solutions Exam
Introduction to the Splunk Enterprise Certified Admin Certification
JavaScript REST APIs: Getting Started
JavaScript REST APIs: The Big Picture
Managing Microsoft Azure AI Solutions
Managing Software Packages with AWS CodeArtifact
Managing Source Control with AWS CodeCommit
Manipulating Data in Tableau Desktop
Mapping Spatial Data in Tableau Desktop
Meeting Web Accessibility Guidelines (Section 508/ WCAG 2.1)
Message Queuing with Amazon Simple Queue Service (SQS)
Microservices Communication in ASP.NET Core 3
Microsoft Azure AI Engineer: Deploying AI Solutions in Microsoft Azure
Microsoft Azure AI Engineer: Developing ML Pipelines in Microsoft Azure
Microsoft Azure Alert Configuration Playbook
Microsoft Azure Database Monitoring Playbook
Microsoft Azure Developer: Creating and Integrating AI with Azure Services
Microsoft Azure Developer: Creating IoT Solutions
Microsoft Azure Developer: Developing for Autoscaling
Microsoft Azure Developer: Enabling Search of Textual Content
Microsoft Azure Developer: Ensuring Configurability
Microsoft Azure Developer: Managing Code Reviews with Azure DevOps
Microsoft Azure Developer: Refactoring Code
Microsoft Azure for .NET 3 Developers - Building Secure Services and Applications
Microsoft Azure for .NET Developers - Cloud Patterns and Architecture
Microsoft Azure for Node.js Developers - Building Secure Services and Applications
Microsoft Azure for Node.js Developers - Cloud Patterns and Architecture
Microsoft Azure Solutions Architect: Design a Compute Solution
Microsoft Azure Solutions Architect: Design a Logging and Monitoring Solution
Microsoft Azure Solutions Architect: Design Authentication
Microsoft Azure Solutions Architect: Design Data Integration
Microsoft Azure Solutions Architect: Design for Backup and Recovery
Microsoft Azure Solutions Architect: Design for Cost Optimization
Microsoft Azure Solutions Architect: Design for Databases
Microsoft Azure Solutions Architect: Design for High Availability
Microsoft Azure Solutions Architect: Design Governance
Microsoft Azure Solutions Architect: Design Migrations
Microsoft Azure Solutions Architect: Design Security for Applications
Microsoft Azure Solutions Architect: Design Storage Accounts
Microsoft Azure Solutions Architect: Implement a Cloud Infrastructure Monitoring Strategy
Microsoft Azure Solutions Architect: Implement a Containerization Strategy
Microsoft Azure Solutions Architect: Implement a Governance Strategy
Microsoft Azure Solutions Architect: Implement a Hybrid Identities Strategy
Microsoft Azure Solutions Architect: Implement a Load Balancing and Networking Security Strategy
Microsoft Azure Solutions Architect: Implement a NoSQL Databases Strategy
Microsoft Azure Solutions Architect: Implement a Storage Strategy
Microsoft Azure Solutions Architect: Implement a Virtual Machine Strategy
Microsoft Azure Solutions Architect: Implement a Virtual Networking Strategy
Microsoft Azure Solutions Architect: Implement a Workload Management Strategy
Microsoft Azure Solutions Architect: Implement an Application Infrastructure Strategy
Microsoft Azure Solutions Architect: Implement an Application Security Strategy
Microsoft Azure Solutions Architect: Implement an Automation Strategy for Resource Deployment
Microsoft Azure Solutions Architect: Implement an Azure Active Directory Strategy
Microsoft Azure Solutions Architect: Implement an Azure SQL Databases Strategy
Microsoft Azure Solutions Architect: Introduction to the AZ-303 Exam
Microsoft Azure Solutions Architect: Introduction to the AZ-304 Exam
Microsoft Azure Solutions Architect: Preparing for the AZ-304 Exam
Microsoft DevOps Solutions: Automating Communication
Microsoft DevOps Solutions: Communicating and Collaborating with Stakeholders
Microsoft DevOps Solutions: Designing a Failure Prediction Strategy
Microsoft DevOps Solutions: Designing a Package Management Strategy
Microsoft DevOps Solutions: Designing a Sensitive Information Strategy
Microsoft DevOps Solutions: Designing an Application Infrastructure Management Strategy
Microsoft DevOps Solutions: Designing an Authentication and Authorization Strategy
Microsoft DevOps Solutions: Designing and Implementing Health Checks
Microsoft DevOps Solutions: Designing and Implementing Logging
Microsoft DevOps Solutions: Designing and Implementing Telemetry
Microsoft DevOps Solutions: Designing Build Automation
Microsoft DevOps Solutions: Designing Governance Enforcement Mechanisms
Microsoft DevOps Solutions: Developing a Modern Source Control Strategy
Microsoft DevOps Solutions: Developing an Actionable Alerting Strategy
Microsoft DevOps Solutions: Developing Deployment Scripts and Templates
Microsoft DevOps Solutions: Developing Security and Compliance
Microsoft DevOps Solutions: Generating DevOps Process Documentation
Microsoft DevOps Solutions: Implementing Orchestration Automation Solutions
Microsoft DevOps Solutions: Implementing, Maintaining, and Standardizing Build Strategies
Microsoft DevOps Solutions: Integrating Source Control with Tools
Microsoft DevOps Solutions: Planning Deployment Environment Strategies
Mocking with Moq 4 and NUnit
Monitoring Microsoft Azure Data Pipelines and Processing
Monitoring Microsoft Azure Data Storage
Operationalizing Microsoft Azure AI Solutions
Optimizing Microsoft Azure AI Solutions
Optimizing Microsoft Azure Data Solutions
Performing Continuous Delivery with AWS CodeStar
Practicing CI/CD with AWS CodePipeline
Preparing Data for Feature Engineering and Machine Learning
Reducing Complexity in Data
Reporting with Windows PowerShell HTML and Enhanced HTML
Securing a JavaScript REST API with JSON Web Tokens
Securing Microservices in ASP.NET Core
Sourcing Data in Microsoft Azure
Splunk Enterprise Administration: Configuring Distributed Search
Splunk Enterprise Administration: Managing Data and Forwarders
Splunk Enterprise Administration: Managing Users and Authentication
Splunk Enterprise Administration: Monitoring and Creating Inputs
Splunk Enterprise Administration: Parsing and Manipulating Data
Splunk Enterprise Administration: Working with Configuration Files and Indexes
Strategies for Microservice Scalability and Availability in ASP.NET Core
String Manipulation in C#: Best Practices
Tableau Desktop Playbook: Building Common Chart Types
Testing Windows PowerShell with Pester
Uploading Files with a JavaScript REST API
Using Calculated Fields in Tableau Desktop
Using Integrated Analytics in Tableau Desktop
Using Microsoft Azure Security Tools to Protect AI Solutions
Using Reflection in a C# Application: Best Practices
Versioning and Evolving Microservices in ASP.NET Core 3
Windows PowerShell 4 Toolmaking Fundamentals
Windows PowerShell and Regular Expressions
Windows PowerShell Best Practices and Patterns
Windows PowerShell Remoting Fundamentals
Windows Workflows with Windows PowerShell
Working with C# 9 Generics: Best Practices
Working with CSV Data in Windows PowerShell
Working with XML Data in Windows PowerShell
Working with XML in C#
Writing Maintainable UI Test Automation with Appium 1
Accessing Non-relational Databases in Go
Accessing Relational Databases in Go
Accessing, Expanding, and Troubleshooting an EKS Cluster
Advanced Cyber Defense Analysis with Wireshark
Angular 14: The Big Picture
ASP.NET Core 6 Blazor Fundamentals
ASP.NET Core 6 Clean Architecture
ASP.NET Core 6 Crash Course
ASP.NET Core 6 Performance
ASP.NET Core 6 Playbook
ASP.NET Core 6 Web API Deep Dive
ASP.NET Core 6 Web API: Best Practices
Asset Security for CISSP®
Asynchronous Programming in C# 10
Authentication and Authorization in ASP.NET Core 6
Authentication and Authorization in ASP.NET Core 6 Web API
AWS Certified Cloud Practitioner: Exam Prep
AWS Certified Developer - Associate (DVA-C01)
AWS Certified Solutions Architect - Associate (SAA-C03)
AWS Certified SysOps Admin - Associate
AWS DynamoDB Fundamentals
AZ-104 Microsoft Azure Administrator Certification Prep
AZ-305: Designing Microsoft Azure Infrastructure Solutions
AZ-500 Microsoft Azure Security Technologies
AZ-900 Microsoft Azure Fundamentals
Azure DevOps Services Fundamentals
Becoming a Better Communicator
Becoming an Xcode Power User
Building a Data-driven ASP.NET Core 6 Blazor Server Application with EF Core
Building an Application Using Java SE 17
Building Apps with Amazon Honeycode
Building Batch Data Pipelines on GCP
Building Code with AWS CodeBuild
Building Dashboards from Prometheus Data in Grafana
Building Data Visualizations Using Matplotlib
Building Data-driven Apps with AWS AppSync
Building Deep Learning Models Using PyTorch
Building Multi-step Applications with AWS Step Functions
Building Resilient Streaming Analytics Systems on Google Cloud
Building Web Applications with Node.js and Express
C# 10 Advanced Language Features
C# 10 Best Practices
C# 10 Dependency Injection
C# 10 Performance Playbook
C# 10 Unit Testing
C++20 Algorithms Playbook
C++20 Fundamentals
Class Libraries in C# 10
CloudKit Fundamentals
Collections and Generics in C# 10
Collections in Rust 2021
Communication and Network Security for CISSP®
Conducting UX Research
Configuration and Options in ASP.NET Core 6
Configure NAT and VPNs Using Palo Alto Firewalls
Configuring, Compiling, and Debugging TypeScript 4 Projects
Connecting Amazon DynamoDB to Your Application
Core Python: Abstract Base Classes
Creating Dashboards with Power BI
Cypress 9 Fundamentals
Data Access in C# 10 Fundamentals
Data Access in Java SE 17 Fundamentals
Debugging and Error Handling in ASP.NET Core 6 Web API
Debugging C# 10
Debugging in Go
Debugging Rust 2021 Applications
Defending Against JavaScript Keylogger Attacks on Payment Card Information
Defense Evasion with Meterpreter
Demonstrating the Business Value of Power Automate (PL-900)
Dependency Injection in ASP.NET Core 6
Deploying and Managing Azure Kubernetes Service (AKS) Networking
Deploying ASP.NET Core 6 to Azure App Services
Deploying ASP.NET Core 6 Web API to Azure API Management
Developing a Google SRE Culture
Developing an Asynchronous ASP.NET Core 6 Web API
Developing Docker Apps: Core Principles
Developing Java Apps with Docker
DevOps Foundations: Operational Strategies
DevOps Foundations: Planning and Implementing a DevOps Strategy
DevOps Foundations: Test-driven Development
Documenting an ASP.NET Core 6 Web API Using Swagger
EF Core 6: Best Practices
EF Core 6: The Big Picture
Ethical Hacking: Cloud Computing
Ethical Hacking: Cryptography
Ethical Hacking: Enumeration
Ethical Hacking: Exam Review and Tips
Ethical Hacking: Hacking IoT and OT
Ethical Hacking: Hacking Mobile Platforms
Ethical Hacking: Hacking Wireless Networks
Ethical Hacking: Malware Threats
Ethical Hacking: Network and Perimeter Hacking
Ethical Hacking: Reconnaissance/Footprinting
Ethical Hacking: Scanning Networks
Ethical Hacking: Sniffing
Ethical Hacking: System Hacking
Ethical Hacking: Understanding Ethical Hacking
Ethical Hacking: Vulnerability Analysis
Ethical Hacking: Web Application Hacking
Exam Review and Tips for CISSP®
Exception Handling in Java SE 17
Executing Graph Algorithms with GraphFrames on Databricks
Exploratory Data Analysis with Python
Extending ASP.NET Core 6
Fundamental Cloud Concepts for AWS
Generics and Traits in Rust 2021
Getting Started with Ansible
Getting Started with Apache Spark on Databricks
Getting Started with Argo CD
Getting Started with EKS (Elastic Kubernetes Service)
Getting Started with Linux
Getting Started with OpenShift 4
Getting Started with Rancher
Getting Started with Terraform Cloud
GitLab Fundamentals
GitOps Automations for Multiple EKS Environments
Globalization and Internationalization in ASP.NET Core 6
Google Cloud Fundamentals: Core Infrastructure
Handling Batch Data with Apache Spark on Databricks
Handling Data and Stateful Applications in Docker and Kubernetes
Identity and Access Management (IAM) for CISSP®
Implement User-ID on Palo Alto Firewalls
Implementing Docker Security
Implementing Robotic Process Automation (RPA) in Organizations
Implementing Terraform with Google Cloud Platform
Incident Response: Host Analysis
Incorporating Site Reliability Engineering (SRE) in Your System Design
Integrating Automated Security Testing Tools
Introduction to Security and Architecture on AWS
Introduction to the Certified Kubernetes Security Specialist (CKS) Exam
Java SE 17 Advanced Language Features
Java SE 17 Best Practices
Java SE 17 Creational Design Patterns
Java SE 17 Performance with JMeter
Java SE 17 Playbook
Java SE 17 Unit Testing with JUnit
Java SE 17: The Big Picture
Kubernetes for Developers: Moving from Docker Compose to Kubernetes
Kubernetes Security: Cluster Setup
Kubernetes Security: Implementing Monitoring, Logging, and Runtime Security
Kubernetes Security: Minimizing Microservice Vulnerabilities
Kubernetes Security: System Hardening
Line of Business (LOB) Apps with Canvas PowerApps and Flow
LINQ Fundamentals in C# 10
Log File Analysis with Python
Logging and Management in Java SE 17
Malware Detection and Analysis with Python
Manage Palo Alto Firewalls with Panorama and Implement High Availability
Managing and Monitoring Access on AWS
Managing Errors in Go
Managing Go Projects
Mapping Real-world Classes in EF Core 6
Memory Ownership and Borrowing in Rust 2021
Microsoft Power Platform Fundamentals: Preparing to Take the PL-900 Exam
MLOps (Machine Learning Operations) Fundamentals
Moving Data with Snowflake
Network Activity and Packet Analysis with Python
Network Management and Operations
Network Security Basics
Network Troubleshooting and Tools
Next.js 13 Fundamentals
Object-oriented Programming in C# 10
Object-oriented Programming in Java SE 17
Object-oriented Programming in Rust 2021
Optimizing an EKS Cluster for Price and Performance
Optimizing Apache Spark on Databricks
Payment Card Security, Processing, and the PCI Standards
PCI DSS v4: What's New
PCI DSS: Achieving and Maintaining Compliance
PCI DSS: Detection, Assurance, and Management
PCI DSS: Infrastructure Security
PCI DSS: Restricting Access to Cardholder Data
PCI DSS: Securing Data, Systems, and Applications
PCI DSS: The State of Cardholder Data Attacks
PowerShell: Getting Started
Predictive Analytics Using Apache Spark MLlib on Databricks
Preparing for the Google Cloud Professional Data Engineer Exam
Processing Streaming Data with Apache Spark on Databricks
Production Machine Learning Systems
Putting Windows PowerShell to Work
Python 3 Fundamentals
Python Functions and Libraries for Cybersecurity
Query Caching Performance Features with Snowflake
Querying Data with Snowflake
React 18 Fundamentals
React 18 with Create-React-App Playbook
React 18 with Next.js Playbook
React 18: The Big Picture
Refactoring to SOLID Java SE 17 Code
Reliable Google Cloud Infrastructure: Design and Process
RHEL 8: Managing Security
RHEL 8: Managing Users and Groups
Secure Coding with OWASP in ASP.NET Core 6
Secure Coding with OWASP in C# 10
Securing ASP.NET Core 6 with OAuth2 and OpenID Connect
Securing Azure Kubernetes Service (AKS) Clusters
Securing Your GitHub Project
Security and Risk Management: Concepts and Principles for CISSP®
Security and Risk Management: Policies and Procedures for CISSP®
Security Architecture and Engineering: Build Defenses for CISSP®
Security Architecture and Engineering: Understand the Design Principles for CISSP®
Security Assessment and Testing for CISSP®
Security Operations: Provision, Baseline, and Monitor for CISSP®
Security Operations: Respond for CISSP®
Selenium 4: The Big Picture
Setting up Cloud Databases and Tables with Snowflake
Smart Analytics, Machine Learning, and AI on Google Cloud
Snowflake Architecture and Overview: Getting Started
Software Development Security for CISSP®
Splunk 9: Configuring and Administering Splunk Indexer Clusters
Spring Boot 2: The Big Picture
Spring Framework: Spring Boot 2 Actuator
String Manipulation and Regex in C# 10
Styling Apps in React 18
System Services and Activity Monitoring with Python
Tableau Desktop Specialist - Understanding Dimensions vs. Measures and Discrete vs. Continuous
TailwindCSS 3 Fundamentals
Testing .NET Code in Visual Studio 2019
Testing in React 18
Understanding AWS Core Services
Unit Testing Fundamentals
Using ASP.NET Core 6 Web API and NoSQL Databases
Using Declarative Jenkins Pipelines
Using GitOps to Automate Kubernetes Deployments with Flux 2
Using gRPC in ASP.NET Core 6
Using Hooks in React 18
UX Design Systems
Visualizing Data via Snowflake
Web Application Penetration Testing with Burp Suite
What Is React?
What's New in .NET 7
What's New in ASP.NET Core 7.0
What's New in Spring Framework 6 and Spring Boot 3
Working with Components in React 18
Working with Pointers and Arrays in C++ 20
Working with Semi-structured Data with Snowflake
Writing Burp Suite Macros and Plugins