Presentation done at the historic 20 yeras of C++ conference in Las Vegas 2005. This is also the first time I ever spoke on the topic of combing generative programming and C++ template metaprogramming
This document discusses topology optimization. It begins by defining topology and optimization separately, then explains that topology optimization is a mathematical approach that optimizes material layout within a design space to meet performance targets while minimizing a given objective like mass or deflection. It provides an example of using topology optimization on a cantilever beam by dividing it into elements, removing less stressed elements through iterations, analyzing the results, and continuing until the objective is met. Finally, it mentions software tools used in the topology optimization process and some applications.
The Orsat apparatus allows for the analysis of flue gases by passing them through three absorption bulbs containing different solutions. The first bulb contains potassium hydroxide and absorbs carbon dioxide. The second bulb contains alkaline pyrogallic acid and absorbs any remaining carbon dioxide and oxygen. The third bulb contains ammonical cuprous chloride and absorbs any remaining carbon monoxide. By measuring the volume changes in each bulb, the apparatus can determine the percentages of carbon dioxide, oxygen, and carbon monoxide in flue gases, providing information about the completeness of combustion.
The document discusses various processes for converting biomass into solid, liquid, and gaseous biofuels. It describes drying, sizing, and densification processes to produce solid biofuels like wood pellets from raw biomass. Slow and fast pyrolysis are discussed for producing solid charcoal and liquid bio-oil. Liquefaction and gasification are presented as methods for creating liquid and gaseous biofuels, along with anaerobic digestion to produce biogas. The document provides an overview of the key conversion techniques to transform biomass into different forms of bioenergy and biofuels.
This document contains formulas and concepts related to communication systems and signals and systems. It includes formulas for amplitude modulation techniques like DSB-SC, conventional AM, SSB-AM. It also includes formulas for frequency and phase modulation, PCM, delta modulation, digital modulation techniques like BPSK, FSK, PSK, and concepts like matched filters, probability, random variables, CDF, PDF and more. The document provides a comprehensive reference sheet of important formulas and concepts for communication systems and signals and systems.
The document provides information about screws and their operation. It discusses the principles of how screws work based on the concept of an inclined plane. It defines key terms and objectives related to understanding screws. Several examples are provided to demonstrate how to calculate the pitch, torque, efficiency and other factors related to screws. Formulas are given for determining values like force, torque and efficiency for both raising and lowering loads using screws.
Pyrolysis oil is a synthetic fuel produced by heating biomass or waste materials without oxygen at around 500°C. It is a dark liquid with high oxygen content that has around 50-70% of the energy content of petroleum fuels. Pyrolysis oil can be used directly as a fuel in industrial boilers and furnaces. It can also be refined into diesel or other fuels for transportation. Fast pyrolysis in bubbling fluidized bed reactors is the most common production method, yielding around 60-70% liquid bio-oil from the biomass feedstock. Pyrolysis oil is being investigated for combustion in gas turbines and compression ignition engines in addition to direct industrial heating applications.
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
A Generative Programming Approach to Developing Pervasive Computing SystemsDamien Cassou
This document presents a generative programming approach to developing pervasive computing systems. It describes challenges in pervasive computing like heterogeneity, lack of structure, and dynamicity. It proposes addressing these through domain-specific languages to describe devices, architectures, and generate a programming framework and simulation support. This approach aims to guide development and ensure conformance while abstracting distributed aspects and supporting multiple expertise.
The document discusses practical generative programming. It defines generative programming as automatically manufacturing customized products from reusable components using configuration knowledge. It describes the key elements and steps of generative programming. It discusses strategies for implementing generative programming in C++, including using templates and traits classes to configure generic components. It provides an example of how to capture configuration metadata in XML to define attributes like port ranges and generate C++ code.
The document discusses various patterns for generative programming including parser generation. It describes using a context-free grammar as input to automatically generate a parser. The key steps are:
1. Define regular expressions for tokens and context-free productions for nonterminals
2. Generate code for the parser from the grammar
3. Write boilerplate code to execute the generated parser and feed it a token stream.
The overall approach is to specify language structure through a grammar and then generate artifacts like lexers and parsers that can recognize or operate on that language.
Generative Software Development. Overview and ExamplesEelco Visser
Generative software development is a system-family approach that focuses on automating the creation of system-family members. A given system can be automatically generated from a specification written in one or more domain-specific languages. Domain-specific languages are used to specify systems at a high level of abstraction in a particular problem domain, while mappings and solution components implement the specification in a lower-level solution space. This allows automatic generation of systems from concise, domain-focused specifications.
The document discusses practical meta-programming using C++ templates. It explains how template specialization and partial specialization allow recursive instantiation of templates to transform types and data at compile-time in a functional programming-like manner. Examples are provided to demonstrate summing values, checking type traits, approximating mathematical functions, and creating heterogeneous tuples through recursive templates. SFINAE (substitution failure is not an error) is also introduced as a way to selectively overload functions based on type traits.
The document contains a programming guide in C++ that includes examples of:
- Printing text to the screen
- Calculating velocity using a formula
- Performing arithmetic operations
- Converting between Celsius and Fahrenheit temperatures
- Calculating student marks, totals, averages, and percentages
- Creating an ATM machine interface design
- Converting between time, length, and other units
This slide brushes up on the concepts of class and templates in C++. It introduces the different sections of the C++ Standard Library and talks about std::pair in further details.
This document provides an introduction to programming with C++, including the basic structure of a C++ program, how to open C++, and examples of variable types and programs to calculate the area of a square and sum of two numbers. The main parts of a C++ program include using #include to import headers, defining the main function, and writing code within the main block. Variables can be integer, decimal, character, or boolean types. Example programs show how to declare and assign variables, use input/output streams, and perform calculations.
This document contains instructions and examples for exercises in C++ programming lab 4. It includes exercises to print the square and square root of a number, calculate temperature at a given earth depth, calculate arithmetic, geometric, and harmonic means of two numbers, find the roots of a quadratic equation, and examples of if and else if statements.
The Triangle class lab involves creating a Triangle class that defines properties and methods for triangles. The Triangle class contains private data members for the three sides of the triangle. It includes public methods to calculate the area and perimeter of a triangle using the side lengths, get the side lengths, set the side lengths, determine the triangle type, and print triangle information. The main() function constructs a Triangle object and calls its methods to demonstrate the class functionality in 3 sentences or less.
This document is a lab manual for an introduction to computer programming course using C++. It contains 11 chapters that provide examples and exercises to help students learn programming concepts like variables, operators, control flow, functions, arrays, pointers, structures, and file input/output. Each chapter contains multiple programming questions and examples with the full code provided. The objective is to give students hands-on practice with programming to become familiar with design, coding, and problem solving in C++.
What is probabilistic programming? By analogy: if functional programming is programming with first-class functions and equational reasoning, probabilistic programming is programming with first-class distributions and Bayesian inference. All computable probability distributions can be encoded as probabilistic programs, and every probabilistic program represents a probability distribution.
What does it do? It gives a concise language for specifying complex, structured statistical models, and abstracts over the implementation details of exact and approximate inference algorithms. These models can be networked, causal, hierarchical, recursive, anything: the graph structure of the program is the generative structure of the distribution.
Who's interested? Cognitive scientists, statisticians, machine-learning specialists, and artificial-intelligence researchers.
AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Updatejamieayre
- QGen is a code generator that can generate code from Simulink models. It supports Processor-in-the-Loop testing, has multiple user interfaces, and is the basis for ongoing research focused on system and software integrity.
- It allows for customization at the block and arithmetic levels to reuse pre-certified code libraries. This is done through configuration files that specify functions or libraries to use.
- QGen has achieved a TQL-1 qualification which provides benefits like not needing to review generated code or create low-level tests. This qualification puts requirements on QGen development.
- A QGen debugger provides synchronized views of models, code, and assembly to help with model-level debugging.
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
A Generative Programming Approach to Developing Pervasive Computing SystemsDamien Cassou
This document presents a generative programming approach to developing pervasive computing systems. It describes challenges in pervasive computing like heterogeneity, lack of structure, and dynamicity. It proposes addressing these through domain-specific languages to describe devices, architectures, and generate a programming framework and simulation support. This approach aims to guide development and ensure conformance while abstracting distributed aspects and supporting multiple expertise.
The document discusses practical generative programming. It defines generative programming as automatically manufacturing customized products from reusable components using configuration knowledge. It describes the key elements and steps of generative programming. It discusses strategies for implementing generative programming in C++, including using templates and traits classes to configure generic components. It provides an example of how to capture configuration metadata in XML to define attributes like port ranges and generate C++ code.
The document discusses various patterns for generative programming including parser generation. It describes using a context-free grammar as input to automatically generate a parser. The key steps are:
1. Define regular expressions for tokens and context-free productions for nonterminals
2. Generate code for the parser from the grammar
3. Write boilerplate code to execute the generated parser and feed it a token stream.
The overall approach is to specify language structure through a grammar and then generate artifacts like lexers and parsers that can recognize or operate on that language.
Generative Software Development. Overview and ExamplesEelco Visser
Generative software development is a system-family approach that focuses on automating the creation of system-family members. A given system can be automatically generated from a specification written in one or more domain-specific languages. Domain-specific languages are used to specify systems at a high level of abstraction in a particular problem domain, while mappings and solution components implement the specification in a lower-level solution space. This allows automatic generation of systems from concise, domain-focused specifications.
The document discusses practical meta-programming using C++ templates. It explains how template specialization and partial specialization allow recursive instantiation of templates to transform types and data at compile-time in a functional programming-like manner. Examples are provided to demonstrate summing values, checking type traits, approximating mathematical functions, and creating heterogeneous tuples through recursive templates. SFINAE (substitution failure is not an error) is also introduced as a way to selectively overload functions based on type traits.
The document contains a programming guide in C++ that includes examples of:
- Printing text to the screen
- Calculating velocity using a formula
- Performing arithmetic operations
- Converting between Celsius and Fahrenheit temperatures
- Calculating student marks, totals, averages, and percentages
- Creating an ATM machine interface design
- Converting between time, length, and other units
This slide brushes up on the concepts of class and templates in C++. It introduces the different sections of the C++ Standard Library and talks about std::pair in further details.
This document provides an introduction to programming with C++, including the basic structure of a C++ program, how to open C++, and examples of variable types and programs to calculate the area of a square and sum of two numbers. The main parts of a C++ program include using #include to import headers, defining the main function, and writing code within the main block. Variables can be integer, decimal, character, or boolean types. Example programs show how to declare and assign variables, use input/output streams, and perform calculations.
This document contains instructions and examples for exercises in C++ programming lab 4. It includes exercises to print the square and square root of a number, calculate temperature at a given earth depth, calculate arithmetic, geometric, and harmonic means of two numbers, find the roots of a quadratic equation, and examples of if and else if statements.
The Triangle class lab involves creating a Triangle class that defines properties and methods for triangles. The Triangle class contains private data members for the three sides of the triangle. It includes public methods to calculate the area and perimeter of a triangle using the side lengths, get the side lengths, set the side lengths, determine the triangle type, and print triangle information. The main() function constructs a Triangle object and calls its methods to demonstrate the class functionality in 3 sentences or less.
This document is a lab manual for an introduction to computer programming course using C++. It contains 11 chapters that provide examples and exercises to help students learn programming concepts like variables, operators, control flow, functions, arrays, pointers, structures, and file input/output. Each chapter contains multiple programming questions and examples with the full code provided. The objective is to give students hands-on practice with programming to become familiar with design, coding, and problem solving in C++.
What is probabilistic programming? By analogy: if functional programming is programming with first-class functions and equational reasoning, probabilistic programming is programming with first-class distributions and Bayesian inference. All computable probability distributions can be encoded as probabilistic programs, and every probabilistic program represents a probability distribution.
What does it do? It gives a concise language for specifying complex, structured statistical models, and abstracts over the implementation details of exact and approximate inference algorithms. These models can be networked, causal, hierarchical, recursive, anything: the graph structure of the program is the generative structure of the distribution.
Who's interested? Cognitive scientists, statisticians, machine-learning specialists, and artificial-intelligence researchers.
AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Updatejamieayre
- QGen is a code generator that can generate code from Simulink models. It supports Processor-in-the-Loop testing, has multiple user interfaces, and is the basis for ongoing research focused on system and software integrity.
- It allows for customization at the block and arithmetic levels to reuse pre-certified code libraries. This is done through configuration files that specify functions or libraries to use.
- QGen has achieved a TQL-1 qualification which provides benefits like not needing to review generated code or create low-level tests. This qualification puts requirements on QGen development.
- A QGen debugger provides synchronized views of models, code, and assembly to help with model-level debugging.
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020OdessaJS Conf
How to develop NodeJS apps effectively? I will tell you all details and share his personal experience on the whole process: from the very start and up to the production stage.
You will also learn more about Docker, SDLC and 12 Factor App. Save the date!
Have you ever wondered how to speed up your code in Python? This presentation will show you how to start. I will begin with a guide how to locate performance bottlenecks and then give you some tips how to speed up your code. Also I would like to discuss how to avoid premature optimization as it may be ‘the root of all evil’ (at least according to D. Knuth).
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
For 15 years in development, I managed to take part in the creation of a large number of various projects. I have already made a number of talks on the working architecture of Web applications, but this is only part of the efficient development puzzle. We will consider the whole process from the start of the project to its launch in production. I’ll tell you how we approach the ideas of the “12 Factor App”, how we use the docker, discuss environment deployment issues, security issues, testing issues, discuss the nuances of SDLC and much more.
One of the main hindrances to teams being able to respond rapidly to new features are technical problems resulting from bad coding practices, also known as technical debt. Melissa and Brett will cover Agile tools and practices that help development teams write better code and increase maintainability. Topics that will be covered include:
Pair programming
Automated Unit Testing
Refactoring
Test-Driven Development
Agile Architecture
Pragmatic Optimization in Modern Programming - Ordering Optimization ApproachesMarina Kolpakova
This document provides an overview of pragmatic optimization approaches for modern programming. It discusses understanding code and algorithms, optimizing memory access patterns, minimizing operations, and shrinking critical paths. Hardware-specific optimizations and diving into assembly are also covered. The key lessons are to find and optimize critical code sections, gain knowledge of the code, compiler, and platform, and apply optimizations in an iterative process starting from high-level choices before making low-level changes. Recommended literature on computer architecture, optimization, and compiler engineering is provided.
The document discusses various topics related to embedded C programming including differences between operating systems and embedded systems, advantages of using C for embedded programming, differences between conventional C and embedded C, and tools used for embedded C development. Key points include: Embedded systems are closely tied to hardware and have limited memory and registers compared to operating systems. C is commonly used for embedded programming due to its familiarity, reliability, and portability. Embedded C requires a cross compiler to generate object code for the target microcontroller.
The sole purpose of sharing these slides are to educate the beginners of IT and Computer Science/Engineering. Credits should go to the referred material and also CICRA campus, Colombo 4, Sri Lanka where I taught these in 2017.
The document introduces the Loopback framework for rapidly building apps with Node.js. It discusses how Loopback allows developers to define models and relations, and then exposes CRUD APIs without writing additional code. Loopback also provides features like authentication, authorization, data integration, and client SDKs out of the box. While the documentation could be clearer and there are still some glitches, Loopback allows developers to deliver technical solutions much faster by writing less boilerplate code.
Vertex AI is a managed machine learning platform that helps you build, deploy, and scale machine learning models faster and easier.
GitHub: https://github.com/TrilokiDA/Vertex-AI/tree/main
Ultimate Guide to Microservice Architecture on Kuberneteskloia
This document provides an overview of microservice architecture on Kubernetes. It discusses:
1. Benefits of microservice architecture like independent deployability and scalability compared to monolithic applications.
2. Best practices for microservices including RESTful design, distributed configuration, client code generation, and API gateways.
3. Tools for microservices on Kubernetes including Prometheus for monitoring, Elasticsearch (ELK) stack for logging, service meshes, and event sourcing with CQRS.
This document discusses various techniques for optimizing computer code, including:
1. Local optimizations that improve performance within basic blocks, such as constant folding, propagation, and elimination of redundant computations.
2. Global optimizations that analyze control flow across basic blocks, such as common subexpression elimination.
3. Loop optimizations that improve performance of loops by removing invariant data and induction variables.
4. Machine-dependent optimizations like peephole optimizations that replace instructions with more efficient alternatives.
The goal of optimizations is to improve speed and efficiency while preserving program meaning and correctness. Optimizations can occur at multiple stages of development and compilation.
This document discusses the basics of RTL design and synthesis. It covers stages of synthesis including identifying state machines, inferring logic and state elements, optimization, and mapping to target technology. It notes that not everything that can be simulated can be synthesized. Good coding style reduces hazards and improves optimization. Examples are given of how logic, sequential logic, and datapaths can be synthesized. Pipelining is discussed as dividing complex operations into simpler operations processed sequentially.
This document discusses micro optimizations in C++ and their effectiveness. It begins by defining micro optimizations and noting that the real bottlenecks are often not within one's own code. It then discusses reasons both for and against micro optimizations, noting they can improve performance if used judiciously but also complicate code. The document covers measuring efficiency and complications that arise in C, C++ and higher-level languages. It emphasizes the importance of understanding what languages do behind the scenes and focusing optimizations on the "fast path" code used most frequently.
Anoushiravan Ghamsari, known as Anoush Ghamsari is a brilliant architect, the way he uses his creativity to create phenomenal concepts is beyond this world.
Deploy 22 microservices from scratch in 30 mins with GitOpsOpsta
- What do you need to deploy microservices?
- What is Docker, Kubernetes, Infrastructure, and GitOps?
- Why can GitOps help us to improve the DevOps process?
- Demo GitOps
Jirayut Nimsaeng
Founder & CEO
Opsta (Thailand) Co., Ltd.
Google DevFest 2022
The document discusses improving code quality through effective code review processes. It outlines common coding mistakes like redundant code, long or deeply nested functions, large modules, poor comments, and hardcoding. It recommends following best practices like coding guidelines, centralized server communication, and the single responsibility principle. The document also discusses measuring and reducing code complexity, avoiding memory leaks, optimizing images, static code analysis, and profiling to improve code quality.
What is DocuOps. How does Asciidoctor contribute? How to add it to your Maven & Gradle build. Tying all of the tech documentation together in a single project from commit to publish.
Introduction to Gradle in 45min as done at JBCN 2016. Covers the basics of Gradle for people familiar with other build tools. Includes building Java, Scala, Groovy & Kotlin projects
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionSchalk Cronjé
This document summarizes a presentation about cool JVM tools for testing. It introduces the presenter and discusses tools like Spock and Geb for writing readable tests in Groovy. It also covers Ratpack for HTTP testing, Betamax for recording external API responses, and Gradle for running and integrating tests. The presentation provides code examples and outlines how these tools can help write effective tests more efficiently.
Using the Groovy Ecosystem for Rapid JVM DevelopmentSchalk Cronjé
Overviewing Ratpack, Geb, Spock & Gradle to help with rapid development on the JVM. Mentions of other Gr8 tools & libraries. Swift introduction to Groovy.
This document provides a 3 sentence summary of the presentation "Idiomatic Gradle Plugin Writing" by Schalk W. Cronjé:
The presentation discusses best practices for writing Gradle plugins, including using consistent and readable extensions to the Gradle DSL, supporting offline mode, testing plugins against multiple Gradle versions, and extending existing task types when needed rather than forcing users to use standard configurations. It provides examples of idiomatic ways to handle collections, maps, dependencies, and project extensions within Gradle plugins. The presentation aims to promote quality attributes like readability, consistency, flexibility and expressiveness in plugin authoring.
Documentation An Engineering Problem UnsolvedSchalk Cronjé
Following on from an idea of Dan Allan, this explores desires for authoring documentation from an engineering point of view. THhe second half looks at how Asciidoctor project is trying to address some of these desoires.
This document discusses using Gradle for building projects in multiple languages. Gradle's domain specific language is based on Groovy, which allows for concise syntax. Gradle supports building Java, C++, Ruby, and other languages through plugins. It can also be used to build documentation and publish artifacts to repositories. Migrating from other build systems like Ant, Maven, and Make to Gradle is also discussed.
This document discusses best practices for writing idiomatic Gradle plugins, including:
1. Making the plugin DSL readable, consistent, flexible and expressive.
2. Supporting the same Java versions as Gradle for compatibility.
3. Preferring methods over properties and using annotations properly.
4. Handling collections, maps, overriding dependencies, generated code, extensions and more idiomatically.
Asciidoctor is a document format and publishing tool that focuses on content over formatting. It allows embedding of diagrams and code snippets. It supports multiple output formats and has build integration. Asciidoctor is actively being developed and many open source projects use it for documentation.
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxAnoop Ashok
In today's fast-paced retail environment, efficiency is key. Every minute counts, and every penny matters. One tool that can significantly boost your store's efficiency is a well-executed planogram. These visual merchandising blueprints not only enhance store layouts but also save time and money in the process.
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
This is the keynote of the Into the Box conference, highlighting the release of the BoxLang JVM language, its key enhancements, and its vision for the future.
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveScyllaDB
Want to learn practical tips for designing systems that can scale efficiently without compromising speed?
Join us for a workshop where we’ll address these challenges head-on and explore how to architect low-latency systems using Rust. During this free interactive workshop oriented for developers, engineers, and architects, we’ll cover how Rust’s unique language features and the Tokio async runtime enable high-performance application development.
As you explore key principles of designing low-latency systems with Rust, you will learn how to:
- Create and compile a real-world app with Rust
- Connect the application to ScyllaDB (NoSQL data store)
- Negotiate tradeoffs related to data modeling and querying
- Manage and monitor the database for consistently low latencies
Quantum Computing Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxshyamraj55
We’re bringing the TDX energy to our community with 2 power-packed sessions:
🛠️ Workshop: MuleSoft for Agentforce
Explore the new version of our hands-on workshop featuring the latest Topic Center and API Catalog updates.
📄 Talk: Power Up Document Processing
Dive into smart automation with MuleSoft IDP, NLP, and Einstein AI for intelligent document workflows.
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Impelsys Inc.
Impelsys provided a robust testing solution, leveraging a risk-based and requirement-mapped approach to validate ICU Connect and CritiXpert. A well-defined test suite was developed to assess data communication, clinical data collection, transformation, and visualization across integrated devices.
Semantic Cultivators : The Critical Future Role to Enable AIartmondano
By 2026, AI agents will consume 10x more enterprise data than humans, but with none of the contextual understanding that prevents catastrophic misinterpretations.
Spark is a powerhouse for large datasets, but when it comes to smaller data workloads, its overhead can sometimes slow things down. What if you could achieve high performance and efficiency without the need for Spark?
At S&P Global Commodity Insights, having a complete view of global energy and commodities markets enables customers to make data-driven decisions with confidence and create long-term, sustainable value. 🌍
Explore delta-rs + CDC and how these open-source innovations power lightweight, high-performance data applications beyond Spark! 🚀
How Can I use the AI Hype in my Business Context?Daniel Lehner
𝙄𝙨 𝘼𝙄 𝙟𝙪𝙨𝙩 𝙝𝙮𝙥𝙚? 𝙊𝙧 𝙞𝙨 𝙞𝙩 𝙩𝙝𝙚 𝙜𝙖𝙢𝙚 𝙘𝙝𝙖𝙣𝙜𝙚𝙧 𝙮𝙤𝙪𝙧 𝙗𝙪𝙨𝙞𝙣𝙚𝙨𝙨 𝙣𝙚𝙚𝙙𝙨?
Everyone’s talking about AI but is anyone really using it to create real value?
Most companies want to leverage AI. Few know 𝗵𝗼𝘄.
✅ What exactly should you ask to find real AI opportunities?
✅ Which AI techniques actually fit your business?
✅ Is your data even ready for AI?
If you’re not sure, you’re not alone. This is a condensed version of the slides I presented at a Linkedin webinar for Tecnovy on 28.04.2025.
HCL Nomad Web – Best Practices and Managing Multiuser Environmentspanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-and-managing-multiuser-environments/
HCL Nomad Web is heralded as the next generation of the HCL Notes client, offering numerous advantages such as eliminating the need for packaging, distribution, and installation. Nomad Web client upgrades will be installed “automatically” in the background. This significantly reduces the administrative footprint compared to traditional HCL Notes clients. However, troubleshooting issues in Nomad Web present unique challenges compared to the Notes client.
Join Christoph and Marc as they demonstrate how to simplify the troubleshooting process in HCL Nomad Web, ensuring a smoother and more efficient user experience.
In this webinar, we will explore effective strategies for diagnosing and resolving common problems in HCL Nomad Web, including
- Accessing the console
- Locating and interpreting log files
- Accessing the data folder within the browser’s cache (using OPFS)
- Understand the difference between single- and multi-user scenarios
- Utilizing Client Clocking
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfSoftware Company
Explore the benefits and features of advanced logistics management software for businesses in Riyadh. This guide delves into the latest technologies, from real-time tracking and route optimization to warehouse management and inventory control, helping businesses streamline their logistics operations and reduce costs. Learn how implementing the right software solution can enhance efficiency, improve customer satisfaction, and provide a competitive edge in the growing logistics sector of Riyadh.
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul
Artificial intelligence is changing how businesses operate. Companies are using AI agents to automate tasks, reduce time spent on repetitive work, and focus more on high-value activities. Noah Loul, an AI strategist and entrepreneur, has helped dozens of companies streamline their operations using smart automation. He believes AI agents aren't just tools—they're workers that take on repeatable tasks so your human team can focus on what matters. If you want to reduce time waste and increase output, AI agents are the next move.
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Aqusag Technologies
In late April 2025, a significant portion of Europe, particularly Spain, Portugal, and parts of southern France, experienced widespread, rolling power outages that continue to affect millions of residents, businesses, and infrastructure systems.
2. Even in this new millennium, many engineers will
still build components that have very little reuse
potential due to the inflexible way that they were
constructed.
This leads to excessive time required to adapt a
component for usage in another system.
4. Themes
• GP 101
• Building a team
• Building a single system
• Technical footwork
• Building multiple systems
• Integration & maintenance
5. Definition
It is a software engineering paradigm where the
aim is to automatically manufacture highly
customised and optimised intermediate or end-
products from elementary, reusable components
by means of configuration knowledge.
6. Automatic programming
• Generative programming is not automatic
programming.
• AP aims for highest level of automation
• GP acknowledges that there are potentialy
different levels of automation possible in a
complete system.
• AP usually involves some form of AI and high
amounts of domain knowledge.
• GP provides practical leverage of state-of-the art
software engineering practices.
7. Elements of Generative Programming
Problem space Solution space
Configuration
Knowledge
•Illegal feature
combinations
•Default settings &
dependencies
•Construction rules
•Optimisations
•Configured
Components
•Domain-specific
concepts
•Features
8. Benefits
• Economies of scope
● Less time and effort to produce variety of products
• Software quality improvement
● Reuse of proven components
• Scalability
● Can be applied to parts of a system or to whole
systems
• Optimisation at domain level
● Maximal combinability
● Minimal redundancy
● Maximum reuse
9. Steps
• Domain scoping
• Feature & concept modelling
• Common architecture design and
implementation technology identification
• Domain-specific notations
• Specify configuration knowledge (metadata)
• Implement generic components
• Apply configuration knowledge using generators
There is no specific order to these steps !
10. Configuration Knowledge vs
Metadata
• Configuration knowledge is the term preferred
by Czarnecki & Eisenecker
• Configuration knowledge can be considered the
holistic encapsulation of all knowledge related to
building all variants
• Metadata is probably a more codified form of
configuration knowledge.
• Some people find the term metadata easier to
grasp and less confusing than configuration
knowledge
• The rest of this presentation uses the term
metadata
11. Introducing GP into theProcess
• Start small !
● Use a pilot project or a small subset of an existing
system
● Experiential learning is important – learn to learn.
• Take an iterative and incremental approach to the
different GP steps.
• Don't worry too much about modelling up-front.
12. Building a Team
• Domain experts
● Require the ability to codify configuration knowledge
into a reusable form.
• Language experts
● Converting configuration knowledge in to
programming language representation.
• Guiding light
● One person whom understands GP well, ensures that
the development process stays on track and not
descend into maintenance hell.
13. Strategies for C++
• Templates are the C++ way to generic
programming
• Develop elementary components as generic
components
● Fully testable outside of the intended product
configuration
• Configure these components using generated
traits / policy classes
• Aim for zero cyclomatic-complexity in the
generated classes
14. Template Metaprogramming
• MPL is a key technology to build generic
components
● Best example is Boost C++ MPL
• MPL has been suggested as a domain-specific
language
● Metadata difficult to review to someone not familiar
with MPL
• MPL should rather be used as implementation
strategy
15. Example #1: Configuration system
Name: NetworkPort
Description: Unrestricted port on which a
service can be started
Type: uint16
Minimum Value: 1024
Maximum Value: 65535
16. Example #1: Configuration system
template <typename CfgAttr>
typename CfgAttr::value_type
get_config();
std::cout << “The network port we'll use is “ <<
get_config<NetworkPort>();
17. Example #1: A traits class
struct NetworkPort
{
typedef uint16_t value_type;
static const value_type const_min = 1024;
static const value_type const_max = 65535;
// ... rest to follow
};
18. Example #1: Alternative traits
Because other non-integral types cannot be
initialised inline, it might be more practical to use
the following alternative.
struct NetworkPort
{
typedef uint16_t value_type;
static value_type min_value() {return 1024;}
static value_type max_value() {return 65535;}
// ... rest to follow
};
19. Example #1: Basic generic function
std::string get_cfg_string( const char* name );
template <typename CfgAttr>
typename CfgAttr::value_type
get_config()
{
// Calls a basic configuration interface function
std::string tmp=get_cfg_string( CfgAttr::name() );
// Converts to appropriate type, throws exception
// on conversion failure
return boost::lexical_cast<typename
CfgAttr::value_type>(tmp);
}
20. Introducing run-time safety
• In order to protect the system against external
invalid data we need to add boundary checks.
● Use min_values(), max_value() from traits
● Add a default_value() to handle missing data
• Additional features could include:
● Throwing an exception, instead of defaulting, when
data is missing.
23. Capturing Configuration Knowledge
• Various methods have been used for codifying
metadata
● Text files
● Graphical Tools
● CASE Tools
• XML is a very convenient form for new projects
● Semi-human readable
● Text – Unrestricted source-control
● Easy to transform to other formats
• Includes non-code artefacts
● Custom editor can be created in Python or Java
24. Example #1: Configuration system
<ConfigSystem>
<Attr name=”NetworkPort” adt=”uint16”>
<Description>Unrestricted port on which a
service can be started</Description>
<Min>1024</Min>
<Max>65535</Max>
<Default>4321</Default>
</Attr>
</ConfigSystem>
25. Prefer ADTs
• Use abstract data types (ADTs)
• Use a XML lookup table to go from ADT to C++
type
• Underlying C++ representation can be changed
without changing any of the metadata
27. ADT Lookup Table
<Types>
<Type adt=”uint16” posix-type=”uint16_t” win32-
type=”WORD” embedded-type=”unsigned short”
quoted=”no”/>
<Type adt=”string” posixtype=”std::string” win32-
type=”std::string” embedded-type=”MyFixedString”
quoted=”yes”/>
<!--
adt: ADT name
win32-type: What type to use on a Win32 system
posix-type: Use this type on a POSIX system
embedded-type: Type for embedded systems.
quoted: Whether to quote the type in a traits class
-->
</Types>
28. Example #2
• Logging is an aspect of most systems that
crosscuts the architecture.
• There might be many requirements in your
system, on how logging and reporting is used.
● Loggable entities
● Levels of logging
● User display issues
● Localisation
• From a C++ point-of-view one important feature
is how logging is generated at logging points
• Using a GP approach it is possible to introduce
compile-time validation
29. Example #2: Legacy Logging
#define MINOR_FAILURE 1
#define MAJOR_PROBLEM 2
#define GENERAL_PANIC 3
void log_it( int id, const char* text );
// and then some smartie comes along
log_it(
MINOR_PROBLEM|GENERAL_PANIC,
”Voila!! An unsupported error”
);
30. Example #2: Logging Metadata
<Logging>
<Report id=”1” name=”MINOR_FAILURE”>
<Text>The projector's bulb needs replacing</Text>
</Report>
<Report id=”2” name=”MAJOR_PROBLEM”>
<Text>We're out of Belgium beer</Text>
</Report>
<Report id=”3” name=”GENERAL_PANIC”>
<Text>Elvis has left the building</Text>
</Report>
</Logging>
31. Example #2: Logging Function
template <typename Report>
void log_it( Report const&, const char* text );
log_it( 3,”My code” ); // compile error
log_it( MAJOR_PROBLEM, “Out of German beer too” );
log_it(
MINOR_FAILURE|MAJOR_PROBLEM,
“No way” ); // Compile error
32. Example #2: Logging ID Class
// Define type
class Reportable
{
public:
Reportable( unsigned id_ );
unsigned id() const;
};
// then do either, initialising MINOR_FAILURE in .cpp
extern const Reportable MINOR_FAILURE;
// or
namespace { const Reportable MINOR_FAILURE =
Reportable(1); }
33. Preventing Code-bloat
• Only instantiate what is needed
● For constant objects this is very easy using the MPL-
value idiom
• Due to ways some linkers work, concrete code might be
included in a final link even if the code is not used,
therefore only generate what is needed
● Control the config elements available to a specific
system from metadata
● Only generate the appropriate traits classes
• Cleanly separate common concrete class into a mixin
class
34. The MPL-value idiom
template <int V>
class A
{
public:
static const A<V> value;
private:
A();
};
template <int V>
static const A<V> A<V>::value;
36. Adding logging actions
• A user might want to specify that some reports can have
certain associated actions.
• For the logging example we might have
● GO_BUY
● MAKE_ANNOUNCEMENT
● CALL_SECURITY.
• As this is configuration knowledge we can add
this to the metadata and then generate
appropriate metacode.
39. Using SFINAE as validator
template <typename Report,typename Action>
void log_it( const char* text,
boost::enable_if<
boost::mpl::contains<
typename Report::valid_actions, Action
>::type::value
>*_= 0);
// Fails to compile
log_it<GENERAL_PROBLEM>( GO_BUY,”Bought Elvis beer”);
// OK,
log_it<MAJOR_PROBLEM>( GO_BUY,
”Imported some Hoegaarden”);
40. Multiple Systems
• Examples until now have shown the GP steps
for a configuration system and a logging system.
• The next step is to apply these to three systems:
● System 1 uses XML files for configuration and sends
logs to syslog.
● System2 uses INI files, and sends logs to NT Evlog
● System 3 keeps configuration in a binary format (read-
only) and sends logs via SNMP.
42. Building Multiple Systems
• Four generators can be applied to this product
metadata.
● Two of them we have already seen
● These will generate configurations and logging aspects
• Another generator looks at logging and
configurations and adds the appropriate
subsystems.
• A fourth generator looks at the functionality and
loads up all of the functional classes for the
system
● A creative exercise for the reader …
43. Testing
• Can tests be generated?
● There have been various argument around this topic.
• Validate metadata independently
• Test data can be generated from metadata
• DO NOT generate unit tests to validate that the
generated code is correct!
● How can you verify that the generated tests is correct?
44. Maintenance
• Long-tem maintenance requires upfront
investment in building quality generic
components
• Metadata might have to refactored into smaller
XML files or a tools should be developed to edit
the metadata.
• Refactoring components into more generic
components over time means that you will be
able to configure and customise products even
more.
45. Integration
• Many modern systems are multi-language /
multi-platform
• These techniques extend easily into other
programming languages / development
environments
• The same configuration knowledge remains the
driver
• Localisation data can be generated in various
formats
• Parts of technical documents can also be
generated.
47. In this new millennium, engineers can build high-
quality proven generic components with high reuse
potential and adaptively configure them.
This leads to decreased time required to use a
component in another domain and an increase in
the variety of products that can be assembled.
Did anyone mention competitive edge?