-
1
TotalView
Perforce
Accelerate HPC development with precise debugging and insights.
TotalView debugging software provides critical resources aimed at accelerating the debugging, analysis, and scaling of high-performance computing (HPC) applications. This innovative software effectively manages dynamic, parallel, and multicore applications, functioning seamlessly across a spectrum of hardware, ranging from everyday personal computers to cutting-edge supercomputers. By leveraging TotalView, developers can significantly improve the efficiency of HPC development, elevate the quality of their code, and shorten the time required to launch products into the market, all thanks to its advanced capabilities for rapid fault isolation, exceptional memory optimization, and dynamic visualization. The software empowers users to debug thousands of threads and processes concurrently, making it particularly suitable for multicore and parallel computing environments. TotalView gives developers an unmatched suite of tools that deliver precise control over thread execution and processes, while also providing deep insights into program states and data, ensuring a more streamlined debugging process. With its extensive features and capabilities, TotalView emerges as an indispensable asset for professionals working in the realm of high-performance computing, enabling them to tackle challenges with confidence and efficiency. Its ability to adapt to various computing needs further solidifies its reputation as a premier debugging solution.
-
2
CodeRush
DevExpress
Enhance productivity with unmatched .NET tools and insights.
Discover the impressive capabilities of CodeRush features right away and experience their remarkable potential firsthand. With extensive support for C#, Visual Basic, and XAML, it presents the quickest .NET testing runner on the market, advanced debugging tools, and an unmatched coding environment. You can effortlessly find symbols and files in your projects while quickly navigating to pertinent code elements according to the current context. CodeRush includes Quick Navigation and Quick File Navigation functions, which simplify the task of locating symbols and accessing necessary files. Furthermore, the Analyze Code Coverage function allows you to pinpoint which parts of your solution are protected by unit tests, drawing attention to potential weaknesses within your application. The Code Coverage window offers a comprehensive overview of the percentage of statements covered by unit tests for each namespace, type, and member in your solution, equipping you to improve your code quality effectively. By leveraging these features, you can significantly enhance your development workflow, ensuring greater reliability for your applications while also refining your coding practices. The result is a powerful toolkit that not only boosts productivity but also fosters a more robust software development process.
-
3
Zipy
Zipy
Transform user insights into seamless digital experiences effortlessly.
Zipy serves as an integrated digital experience platform that merges analytics, error tracking, and session replay capabilities into a single solution. This comprehensive approach allows for a thorough understanding of user behavior, accelerates issue resolution, and enhances overall customer satisfaction, ultimately leading to a more engaging user experience. By leveraging these features, businesses can effectively optimize their digital strategies.
-
4
SourceDebug
SourceDebug
Streamline your coding journey with powerful debugging and navigation.
SourceDebug is a powerful and efficient programming editor, code navigator, and debugging tool specifically designed to improve your comprehension of code while you engage in development and planning tasks. It includes integrated dynamic analysis capabilities for languages like C/C++ and Objective-C, making it adaptable to a wide range of programming activities. With SourceDebug, users can debug applications even if the source code resides in multiple locations, allowing for a flexible and streamlined workflow. The application effectively merges editing, browsing, compiling, and debugging features for both local and remote projects, which is beneficial for quickly getting up to speed with an existing codebase and facilitating a smooth transition to new assignments. SourceDebug performs a comprehensive analysis of your project, which simplifies navigation and code editing processes. You can easily jump to variables, functions, or included files, significantly boosting your productivity. One of its most notable features is the Smart Bookmark, which saves your browsing position for quick retrieval at a later time. In addition, it supports debugging through GDB or LLDB-MI over various connection protocols, including SSH, ADB, Telnet, Rlogin, and Local Cygwin, with options for GDB server debugging as well. Users have the ability to view Quickwatch, Watches, Callstack, Variables, Memory, Breakpoint List, Disassemble, and Thread List as needed. Moreover, SourceDebug accommodates a variety of storage options, such as SFTP, FTP, and local drives, making it an all-encompassing tool for developers. This extensive versatility not only empowers programmers to navigate complex projects with ease and efficiency, but it also enhances collaboration among team members.
-
5
Arm DDT
Arm
Optimize performance and streamline debugging for complex applications.
Arm DDT is recognized as the leading debugger for servers and high-performance computing (HPC), favored by software developers and researchers in diverse fields who are working with applications in C++, C, and Fortran, particularly those employing parallel and threaded processes across various CPU and GPU architectures, including Intel and Arm. Its reputation stems from its powerful ability to automatically detect memory-related problems and divergent behaviors, which leads to outstanding performance across different computational scales. Furthermore, it is crafted to function effortlessly across a multitude of servers and HPC environments while also providing native parallel debugging for Python applications. In addition to its top-notch memory debugging features, Arm DDT excels in supporting C++ and offers thorough debugging capabilities for Fortran, making it a versatile tool for developers. It also includes an offline mode that is ideal for non-interactive debugging, allowing for effective management and visualization of extensive data sets. As a versatile parallel debugger, Arm DDT can be used on its own or integrated into the Arm Forge debug and profile suite, while its intuitive graphical interface significantly enhances usability by automatically identifying memory errors and divergent behaviors across all complexity levels of applications. This all-encompassing tool simplifies the debugging workflow and plays a vital role in optimizing both scientific and engineering software, making it an essential asset for anyone in the field. Additionally, its ability to seamlessly integrate into existing workflows ensures that users can maximize their productivity while maintaining high standards of code quality.
-
6
Arm Forge
Arm
Optimize high-performance applications effortlessly with advanced debugging tools.
Developing reliable and optimized code that delivers precise outcomes across a range of server and high-performance computing (HPC) architectures is essential, especially when leveraging the latest compilers and C++ standards for Intel, 64-bit Arm, AMD, OpenPOWER, and Nvidia GPU hardware. Arm Forge brings together Arm DDT, regarded as the top debugging tool that significantly improves the efficiency of debugging high-performance applications, alongside Arm MAP, a trusted performance profiler that delivers vital optimization insights for both native and Python HPC applications, complemented by Arm Performance Reports for superior reporting capabilities. Moreover, both Arm DDT and Arm MAP can function effectively as standalone tools, offering flexibility to developers. With dedicated technical support from Arm experts, the process of application development for Linux Server and HPC is streamlined and productive. Arm DDT stands out as the preferred debugger for C++, C, or Fortran applications that utilize parallel and threaded execution on either CPUs or GPUs. Its powerful graphical interface simplifies the detection of memory-related problems and divergent behaviors, regardless of the scale, reinforcing Arm DDT's esteemed position among researchers, industry professionals, and educational institutions alike. This robust toolkit not only enhances productivity but also plays a significant role in fostering technical innovation across various fields, ultimately driving progress in computational capabilities. Thus, the integration of these tools represents a critical advancement in the pursuit of high-performance application development.
-
7
Antithesis
Antithesis
Revolutionize software development: streamline testing, enhance reliability effortlessly.
Current software testing techniques are becoming increasingly inadequate, leading to elevated expenses and reliability concerns that deplete engineering resources. Antithesis presents a groundbreaking strategy for both testing and debugging software. This cutting-edge method enables your team to focus more on software development instead of merely testing processes. Our platform continuously monitors your software for potential issues within a simulated environment, allowing for the repeatable identification and swift resolution of even the most complex problems. As a cloud-based solution, Antithesis consistently assesses the reliability of software systems. Developers can conveniently upload their software as container images to Antithesis, where we run the software under various scenarios and promptly notify you of any anomalies. Alongside standard testing against numerous established criteria, we offer an SDK that empowers you to create additional test properties specifically designed to meet your individual system needs, thereby guaranteeing thorough coverage and improved performance. This integrated approach not only enhances operational efficiency but also cultivates a more dependable software development lifecycle, setting a new standard in the industry. By adopting Antithesis, teams can achieve higher quality outputs while significantly reducing the time spent on troubleshooting.
-
8
Testlemon
Testlemon
Effortlessly grow your network and boost your presence!
Draw in genuine and relevant followers, boost your presence, and grow your network effortlessly on one platform. This all-in-one tool enables you to optimize your networking strategies with remarkable efficiency. By consolidating your efforts, you can achieve greater results in less time.
-
9
SwapCode AI
SwapCode AI
Transform code seamlessly across languages for enhanced productivity.
SwapCode AI is an advanced tool aimed at simplifying the conversion process between different programming languages. Imagine it as a set of tools that allows you to change a square block into a round one, which is an analogy for how it transforms your code! This innovative assistant enables developers and teams to modify their code for new purposes while preserving its original structure.
It works with a variety of programming languages utilized in web development, gaming, and applications, allowing for smooth transitions; for example, if a segment of code is well-suited for a Java setting but requires adaptation for Python, SwapCode AI skillfully alters it to suit the new environment. Additionally, it guarantees that the adjusted code remains easy to understand and user-friendly.
Moreover, SwapCode AI demonstrates impressive intelligence and integrates effortlessly into your existing workflow, making it a valuable asset during the development process. The tool promotes teamwork among groups, allowing them to collaborate effectively even when working with different programming languages or development tools. By connecting various coding environments, SwapCode AI not only boosts productivity but also enhances creativity, fostering an environment where innovation can thrive. As a result, developers can focus on building new features without the hassle of dealing with language incompatibilities.
-
10
Deleaker
Softanics
Detect and manage memory leaks effortlessly for reliable software.
Deleaker is an advanced application designed to identify memory leaks in programming languages like C++, .NET, and Delphi. It offers seamless integration with development environments such as Visual Studio and RAD Studio, while also functioning as a standalone application. This tool is capable of detecting various types of leaks, including memory and GDI leaks, and can manage them in real time. With its user-friendly interface, comprehensive reports, and accurate stack traces, debugging becomes significantly more straightforward. Deleaker is an invaluable asset for projects of any scale, ensuring that your applications run efficiently without any leaks. By utilizing this tool, developers can enhance the overall quality and reliability of their software products.
-
11
Request Metrics
Request Metrics
Transform web performance with real-user insights and automation!
Request Metrics enhances web performance by utilizing real-user testing alongside automated Lighthouse assessments. This dual approach allows for significant improvements in Core Web Vitals and SEO while simultaneously elevating the overall user experience. With features that track actual visitors, rather than relying solely on laboratory tests, automatic noise cancellation ensures that the data is accurate and relevant. You will gain valuable insights and comprehensive attribution for various elements on your site.
By scheduling Lighthouse tests, you can spot regressions before they impact your search rankings. Access to real-user data provides a clear picture of your site's performance in everyday conditions. You can filter results by device, region, vendor, or specific pages to pinpoint performance issues and receive immediate notifications.
Additionally, the platform enables you to determine which third-party scripts may be hindering your website's loading speed. The system is designed for ease of use, eliminating the need for complex setups or code modifications, and focuses on delivering fast and dependable performance tracking tailored for contemporary websites. Begin your journey today with a free account and unlock the potential for enhanced web performance!
-
12
Rookout
Rookout
Accelerate debugging, enhance collaboration, and boost productivity effortlessly.
Rookout serves as a dynamic platform for collecting live data and debugging, empowering software engineers to gain insights into applications regardless of their deployment environment, from monolithic systems to cloud-native solutions. By utilizing Rookout, engineers can cut down on their debugging and logging time by as much as 80%, enabling them to address customer issues five times more quickly. The platform's Non-Breaking Breakpoints feature allows engineers to obtain the necessary data instantly, eliminating the need for additional coding, restarts, or redeployment. With the ability to extract information from any line of code, developers can streamline collaboration and enhance the efficiency of handoffs between teams. Consequently, Rookout not only accelerates problem-solving but also fosters a more cohesive workflow among software development professionals. This innovative approach ultimately leads to improved productivity and a more responsive development cycle.
-
13
BMC Compuware Xpediter is an extensive toolkit of debuggers and interactive analysis solutions specifically designed for programming languages such as COBOL, Assembler, PL/I, and C, enabling developers to quickly understand application behaviors, make necessary changes, and troubleshoot effectively, irrespective of their prior knowledge of the source code. This comprehensive toolset makes it easy for developers to engage in interactive testing sessions, providing them with the confidence to move applications into production environments. Users benefit from the ability to execute code line by line while exercising complete oversight over all components of program execution and data handling. Through the use of Code Coverage features, developers can confirm execution paths and gather performance analytics across different platforms. Moreover, they can leverage Abend-AID diagnostic capabilities within their debugging workflows. The integration with Topaz for Program Analysis enhances the process by offering a visual layout of the source code, which aids in troubleshooting efforts. Additionally, Topaz for Total Test empowers developers to generate an extensive array of automated, virtualized test cases, further improving testing efficiency. The capacity to intercept and debug mainframe transactions initiated from remote locations introduces an added level of adaptability and productivity to the development process. In summary, Xpediter not only simplifies debugging but also significantly enhances the overall development experience, helping developers meet their targets more effectively.
-
14
Immunity Debugger
Immunity Debugger
Simplified debugging experience with powerful features for developers.
Immunity Debugger offers an intuitive graphical user interface (GUI) complemented by a command line positioned conveniently at the bottom of the display. This command line allows users to enter shortcuts akin to those in traditional text-based debuggers like WinDBG or GDB. To ease the transition for those accustomed to WinDBG, Immunity has implemented aliases, minimizing the need for extensive retraining and allowing users to quickly restore their productivity with a robust debugger interface. Furthermore, users can run Python commands directly within the command bar, significantly broadening the tool’s capabilities. They are also able to revisit previously typed commands or access a list of recent commands through a dropdown menu, which streamlines the debugging process and enhances user experience. Additionally, the availability of shortcuts and aliases makes it easier for developers to adapt, ensuring they can focus on their tasks rather than relearning the system. In summary, the integration of these features firmly establishes Immunity Debugger as an invaluable resource for software developers.
-
15
IDA Pro
Hex-Rays
Unleash powerful insights with advanced binary analysis capabilities.
IDA Pro is a sophisticated disassembler that creates execution maps, portraying the processor's binary instructions in a symbolic form, particularly in assembly language. By utilizing cutting-edge methodologies, IDA Pro can convert machine-executable code into assembly language source code, which improves the clarity of complex programming constructs. Its debugging capabilities include dynamic analysis features that allow it to accommodate a variety of debugging targets and efficiently handle remote applications. The tool's cross-platform debugging functionality enables seamless debugging processes, ensuring straightforward connections to both local and remote systems while supporting 64-bit architectures and multiple connection types. Moreover, IDA Pro enhances the user experience by allowing analysts to modify its automatic decisions or provide guidance, which promotes a more intuitive and effective process for binary code analysis. This adaptability not only increases the analyst's engagement with the disassembler but also significantly streamlines the overall task of dissecting intricate binaries, paving the way for more insightful explorations of software behavior. Ultimately, IDA Pro stands out as an indispensable tool for professionals engaged in reverse engineering and security analysis.
-
16
weinre
Apache Software Foundation
"Empower mobile development with seamless remote debugging solutions."
Weinre, which is pronounced like "winery" or "weiner," stands for WEb INspector REmote and functions as a debugging tool for web pages, akin to FireBug for Firefox and the web inspector available in WebKit browsers, but it is specifically tailored for remote debugging on mobile devices such as smartphones. Developed at a time when no remote debugging solutions were available for mobile platforms, weinre has set the stage for more recent tools that various platforms now incorporate into their development offerings. It employs user interface components from WebKit's web inspector project, making it easily recognizable for those familiar with Safari's web inspector or Chrome's Developer Tools. Generally, the client application is initiated in a desktop or laptop browser while the targeted web page is viewed on a mobile device, facilitating smooth debugging. Importantly, weinre functions entirely through standard JavaScript without depending on any native code in the browser, ensuring widespread compatibility and user-friendliness. This remote debugging capability has become essential for developers creating web applications designed for mobile users, solidifying weinre's position as a crucial asset in the web development toolkit. Additionally, its simplicity and effectiveness have helped it maintain relevance even as newer debugging solutions have emerged.
-
17
OpenText Functional Testing Lab for Mobile and Web is an enterprise-grade, cloud-based testing platform that provides centralized access to a wide array of real mobile devices, desktop browsers, and emulators, allowing development teams to test applications thoroughly from anywhere in the world. This digital lab removes traditional barriers such as expensive device procurement and maintenance by offering scalable on-demand testing on privately dedicated or public devices, supporting a broad spectrum of mobile, web, API, and desktop technologies. Remote access empowers developers and testers to debug, monitor, and optimize application performance across diverse environments, boosting productivity and collaboration. Cloud browser testing eliminates the need to manage physical machines, enabling teams to provision browsers quickly and at scale. The platform incorporates AI-driven automation capabilities that improve testing efficiency, resilience, and adaptability, delivering faster, more reliable results while reducing manual effort. Robust security and privacy safeguards ensure compliance with industry regulations and protect sensitive information during testing activities. OpenText Functional Testing Lab integrates seamlessly with popular open-source frameworks such as Appium and Selenium, facilitating comprehensive end-to-end testing workflows. It also supports accessibility testing, helping organizations create inclusive applications that meet regulatory standards and enhance user experience. Backed by professional services and premium support, the platform guides enterprises through successful implementation and continuous optimization. Ultimately, OpenText Functional Testing Lab for Mobile and Web empowers organizations to accelerate delivery, reduce risks, and improve software quality in a rapidly evolving digital landscape.
-
18
Stetho
Meta
Empower your Android debugging with seamless Chrome integration.
Stetho is an enhanced debugging bridge specifically designed for Android applications. When activated, it allows developers to leverage Chrome Developer Tools, which are a built-in feature of the Chrome desktop browser. Furthermore, users can opt to utilize the dumpapp tool that offers a powerful command-line interface to explore app internals in depth. Stetho can be easily integrated from Maven Central using either Gradle or Maven, making it accessible for developers. While the core Stetho dependency is necessary, incorporating one of the network helpers can provide additional advantages. The connection with the Chrome DevTools frontend operates via a client/server protocol that Stetho sets up for the application, ensuring seamless communication. This platform facilitates thorough network inspection, harnessing the complete capabilities of Chrome Developer Tools, which encompass image previews, assistance with JSON responses, and the ability to export traces in HAR format. In addition, Stetho allows users to visualize and interact with SQLite databases, providing full read and write functionalities for an in-depth exploration. This combination of features establishes Stetho as an essential resource for developers aiming to optimize their application's debugging experience and enhance overall productivity.
-
19
GDB
GDB
Uncover software mysteries with powerful debugging capabilities.
GDB, known as the GNU Project debugger, allows users to delve into the inner workings of a software application while it runs or to analyze its behavior when it crashes. To initiate the process, you should start your application, considering any elements that might affect its performance. When the program stops, take the time to review the sequence of events that led to that moment. You have the ability to adjust components within your program to troubleshoot a specific problem and then continue to investigate other issues that may arise. GDB can be utilized on the same machine as the program (native), on a different computer (remote), or even via a simulator. It supports many popular UNIX operating systems, various versions of Microsoft Windows, and Mac OS X. In addition, inferior objects now come with a read-only property known as 'connection_num', which reveals the connection number as displayed by the 'info connections' and 'info inferiors' commands. Moreover, a new function named gdb.Frame.level() has been added, which provides the stack level tied to the frame object, significantly enhancing the overall debugging process. This makes it easier for developers to track down issues in their code and improve the reliability of their applications.
-
20
GNU DDD
GNU
Visualize your code effortlessly with intuitive graphical debugging.
GNU DDD functions as a graphical interface that integrates with various command-line debuggers, such as GDB, DBX, WDB, and others like Ladebug and JDB. Beyond its basic front-end features, which include displaying source code, DDD is well-known for its interactive graphical data representation, enabling users to visualize data structures in a more intuitive manner. To support the principles of software freedom, individuals can contribute by purchasing products from the FSF shop. For effective use of DDD, it is essential to have the GNU debugger (GDB) version 4.16 or later, though other command-line debuggers might be necessary depending on the particular application being debugged. Not only does DDD enhance the debugging process, but it also promotes a deeper connection with the values of open-source software, fostering a community that thrives on collaboration and shared knowledge. This makes it a valuable tool for developers who wish to explore the intricacies of their code while adhering to the ethos of software freedom.
-
21
Squish
Qt Group
Optimize your GUI testing for unmatched software quality.
Squish GUI Tester enables organizations to automate GUI testing across multiple platforms and technologies, including Qt, Java, Web, .NET/WPF, iOS, Android, and embedded systems. Test scripts can be created in Python, JavaScript, Perl, Tcl, or Ruby, providing flexibility and maintainability, while object-based recognition ensures resilience to UI changes.
Integrated with CI/CD pipelines, version control, and test management, Squish delivers actionable insights into application quality, usability, and performance. By automating GUI testing, organizations reduce manual effort, accelerate development cycles, and ensure reliable, high-quality user experiences—making it an essential tool for enterprise-scale and safety-critical applications.
-
22
Improve machine learning models by capturing real-time training metrics and initiating alerts for any detected anomalies. To reduce both training time and expenses, the training process can automatically stop once the desired accuracy is achieved. Additionally, it is crucial to continuously evaluate and oversee system resource utilization, generating alerts when any limitations are detected to enhance resource efficiency. With the use of Amazon SageMaker Debugger, the troubleshooting process during training can be significantly accelerated, turning what usually takes days into just a few minutes by automatically pinpointing and notifying users about prevalent training challenges, such as extreme gradient values. Alerts can be conveniently accessed through Amazon SageMaker Studio or configured via Amazon CloudWatch. Furthermore, the SageMaker Debugger SDK is specifically crafted to autonomously recognize new types of model-specific errors, encompassing issues related to data sampling, hyperparameter configurations, and values that surpass acceptable thresholds, thereby further strengthening the reliability of your machine learning models. This proactive methodology not only conserves time but also guarantees that your models consistently operate at peak performance levels, ultimately leading to better outcomes and improved overall efficiency.
-
23
Orbit Profiler
Orbit Profiler
Empower your debugging with seamless profiling and insights.
Quickly diagnose performance concerns and acquire insights into the functioning of a complex C/C++ application with Orbit, a standalone profiling and debugging tool tailored for both Windows and Linux platforms. This tool is meticulously designed to help developers understand and visualize the execution flow within sophisticated applications. By offering a comprehensive view of internal processes, Orbit significantly boosts a developer's comprehension of complex systems, allowing them to rapidly identify performance bottlenecks. The tool works seamlessly with any C/C++ application that has access to the Pdb file, enabling immediate profiling once Orbit is downloaded and installed. When launched, Orbit integrates itself directly into the target process, hooking into particular functions while maintaining effectiveness even in highly optimized final or shipping builds. Its sampling feature is especially useful for initiating investigations, as it operates quickly, reliably, and is persistently active. Orbit refines the profiling experience by merging sampling methods with dynamic instrumentation, thereby promoting an efficient workflow for developers aiming to improve application performance. Furthermore, the capability to visualize execution paths offers significant assistance in comprehending the interactions between various components within the system, making it a valuable tool for both new and experienced developers alike. This combination of features empowers developers to tackle challenges in performance optimization with greater confidence and clarity.
-
24
VisualVM
VisualVM
Optimize Java applications with advanced monitoring and profiling tools.
VisualVM is an advanced tool utilized for monitoring and diagnosing Java applications starting from version 1.4, featuring support for various technologies such as jvmstat, JMX, Serviceability Agent (SA), and Attach API from multiple vendors. It is tailored to accommodate the varied requirements of application developers, system administrators, quality assurance engineers, and end users. For each active process, VisualVM presents critical runtime information including process ID (PID), main class, Java process arguments, JVM version, JDK installation path, JVM flags, and system properties. Furthermore, it monitors an array of performance indicators such as CPU consumption, garbage collection (GC) activities, heap and metaspace memory utilization, the total number of loaded classes, and the active thread count. In addition, VisualVM incorporates fundamental profiling capabilities that enable detailed examination of application performance and memory management, providing both sampling and instrumentation profiling techniques to suit different analytical requirements. This extensive suite of tools not only enhances the troubleshooting process but also plays a significant role in the optimization of Java applications, making VisualVM an essential asset for developers and system administrators alike.
-
25
Autoblocks AI
Autoblocks AI
Empower developers to optimize and innovate with AI.
A platform crafted for programmers to manage and improve AI capabilities powered by LLMs and other foundational models. Our intuitive SDK offers a transparent and actionable view of your generative AI applications' performance in real-time. Effortlessly integrate LLM management into your existing code structure and development workflows. Utilize detailed access controls and thorough audit logs to maintain full oversight of your data. Acquire essential insights to enhance user interactions with LLMs. Developer teams are uniquely positioned to embed these sophisticated features into their current software solutions, and their propensity to launch, optimize, and advance will be increasingly vital moving forward. As technology continues to progress and adapt, we foresee engineering teams playing a crucial role in transforming this adaptability into captivating and highly tailored user experiences. Notably, the future of generative AI will heavily rely on developers, who will not only lead this transformation but also innovate continuously to meet evolving user expectations. In this rapidly changing landscape, their expertise will be indispensable in shaping the future direction of AI technology.