This talk will learn you how to develop clean, maintainable and stable applications in Swift. It will also look at some examples of how I applied these methods in my work.
The document discusses optimizing performance for Ajax applications. It recommends:
- Keeping client-side code light by only requesting necessary data from the server via JSON messages.
- Avoiding unnecessary DOM touches and reflows which are computationally expensive.
- Measuring performance before and after optimizations to validate improvements rather than relying on intuition.
- Optimizing algorithms and avoiding unnecessary work rather than prematurely optimizing without evidence of need.
1. Code refactoring involves changing the internal structure of code to improve its understandability and maintainability without changing its external behavior.
2. Refactoring techniques include extracting methods, inline methods, managing temporary variables, simplifying conditionals, and moving features between objects.
3. Refactoring should be done regularly in small steps to avoid bugs, improve readability and design, and facilitate future changes, but it is important to avoid over-refactoring or refactoring close to deadlines.
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
The document provides recipes for building CQRS architectures. It begins with an introduction and agenda. Lesson 1 discusses a basic layered architecture, noting its limitations in scalability and evolvability. Lesson 2 introduces n-layered architecture with dependency injection to improve decoupling but it also has scalability issues. Lesson 3 explains the Command Query Responsibility Segregation (CQRS) pattern, separating read and write operations for improved scalability and flexibility. It provides code examples of implementing CQRS. The document aims to help architects evolve monolithic systems to more scalable and maintainable architectures.
The presentation describes the properties of a good unit test. The code examples are written in java, but should make sense in each object oriented programming language.
NatvieScript is a free and open source framework for building truly native mobile apps with JavaScript. Use web skills, like TypeScript, Angular, Vue and CSS, and get native UI and performance on iOS and Android.
Here's how you can improve the performance of the NativeScript Apps.
Managing technical debt requires making prudent decisions about design and quality. It is important to 1) register any new debt, 2) assess existing debt, 3) monetize the debt to establish a debt limit, 4) pay down high-interest debt first, and 5) continuously monitor trends to adapt over time. Transparency is key through registering debt, inspection via monetization, and adapting practices as needed.
The document discusses optimizing performance for Ajax applications. It recommends:
- Keeping client-side code light by only requesting necessary data from the server via JSON messages.
- Avoiding unnecessary DOM touches and reflows which are computationally expensive.
- Measuring performance before and after optimizations to validate improvements rather than relying on intuition.
- Optimizing algorithms and avoiding unnecessary work rather than prematurely optimizing without evidence of need.
1. Code refactoring involves changing the internal structure of code to improve its understandability and maintainability without changing its external behavior.
2. Refactoring techniques include extracting methods, inline methods, managing temporary variables, simplifying conditionals, and moving features between objects.
3. Refactoring should be done regularly in small steps to avoid bugs, improve readability and design, and facilitate future changes, but it is important to avoid over-refactoring or refactoring close to deadlines.
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
The best code is the one you never need to write. Using code generation and automated builds, you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it are handed over to a machine? In this tutorial, you will learn how to use open source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you, as a developer, 100 percent control of the generated code. This will not only increase your productivity but also help you build safer, more maintainable Java applications and is a perfect solution for Microservices.
The document provides recipes for building CQRS architectures. It begins with an introduction and agenda. Lesson 1 discusses a basic layered architecture, noting its limitations in scalability and evolvability. Lesson 2 introduces n-layered architecture with dependency injection to improve decoupling but it also has scalability issues. Lesson 3 explains the Command Query Responsibility Segregation (CQRS) pattern, separating read and write operations for improved scalability and flexibility. It provides code examples of implementing CQRS. The document aims to help architects evolve monolithic systems to more scalable and maintainable architectures.
The presentation describes the properties of a good unit test. The code examples are written in java, but should make sense in each object oriented programming language.
NatvieScript is a free and open source framework for building truly native mobile apps with JavaScript. Use web skills, like TypeScript, Angular, Vue and CSS, and get native UI and performance on iOS and Android.
Here's how you can improve the performance of the NativeScript Apps.
Managing technical debt requires making prudent decisions about design and quality. It is important to 1) register any new debt, 2) assess existing debt, 3) monetize the debt to establish a debt limit, 4) pay down high-interest debt first, and 5) continuously monitor trends to adapt over time. Transparency is key through registering debt, inspection via monetization, and adapting practices as needed.
This slide deck describes the most successful software project of my career: automating a 40-person human compiler yielding a reduction in project time from months to hours and cost from $1,000,000 to $100s for our client. The system is still in operation years later and has never had a single bug filed against it.
This document provides an overview of 30 tips for optimizing LotusScript development. It begins with introductions and outlines, then groups the tips into three sections: Theory, Practice, and Advanced. The Theory section covers 10 fundamental tips regarding best practices like using Option Declare, version control, application lifecycles, code structure, testing, and error handling. The Practice section presents 10 tips that should be implemented regularly, such as defensive coding, extending arrays, logging, and using NotesDateTime. The Advanced section introduces more complex topics like custom classes and binding. The goal is to help LotusScript developers improve code quality, maintainability, and performance.
Bob German, a Principal Architect at BlueMetal, gave a presentation about developing SharePoint widgets using TypeScript. He discussed how Microsoft is modernizing SharePoint with the new SharePoint Framework. Widgets provide a way to build reusable components for different SharePoint development models using HTML and JavaScript. TypeScript adds benefits like catch errors earlier and use modern JavaScript features. German demonstrated how to set up TypeScript and build widgets today and in the future SharePoint Framework.
eXtreme Programming (XP) is an agile software development methodology that aims to improve quality and responsiveness to changing requirements. It consists of values like communication, simplicity, feedback and courage, as well as practices like planning, small releases, testing, pair programming and refactoring. XP attempts to address common software project problems like schedule slips, defects, and inability to adapt to changing business needs. It advocates short iterations, frequent integration and customer feedback to deliver working, tested software rapidly and allow requirements to evolve over time at low cost.
eXtreme Programming (XP) is an agile software development methodology that focuses on rapid software development and delivery through practices like continuous integration, pair programming, and frequent refactoring. It aims to address common software project problems like schedule slips, high defect rates, and changing requirements by having short development cycles, automated testing, and close collaboration between developers and customers. Key XP practices include planning game, small releases, simple design, testing, refactoring, pair programming, and on-site customer involvement. Adopting XP can benefit both developers through better requirements and technical empowerment, and customers through timely delivery of valuable software that can adapt to changes.
This document introduces Luis Majano and provides an overview of Model-View-Controller (MVC) patterns and the ColdBox framework. It discusses the problems with traditional ColdFusion code using a single CFM page and the benefits of separating concerns using MVC. ColdBox is introduced as a HMVC framework that follows conventions and addresses common infrastructure needs. It describes how ColdBox works using routed URLs and handlers, and shows examples of handler, model, layout, and view code. The rendering process and use of the request context and private request context are also summarized.
Developers spend up to 20% of their time writing repetitive code that machines could generate more reliably. This presentation explores the problem of duplicated source code that stems from manual implementation of patterns and reveals how to automate the boring side of programming and get a 19x ROI.
The presentation provides insight into:
- the problem of manual implementation of patterns, resulting in boilerplate code
- the cost of boilerplate for companies
- existing technologies for pattern automation
- the key reasons to consider pattern-aware compiler extensions
The white paper was written for CTOs, software architects and senior developers in software-driven organizations—specifically in financial, insurance, healthcare, energy and IT industries that typically write a lot of repetitive code.
CC 2015 Single Page Applications for the ASPNET DeveloperAllen Conway
This is the presentation I gave entitled, "Single Page Applications for the ASP.NET Developer using AngularJS, TypeScript, and WebAPI" done at Orlando Code Camp on 3/28/15
Creating Tomorrow’s Web Applications Using Today’s Technologies Code Mastery
At Code Mastery Boston Mike Suarez, Senior Consultant at Magenic talked about Patterns & Technologies including: MVC Pattern, ASP.Net, MVC 3, HTML5, Modernizr, and jQuery
Oracle Endeca 101 Developer Introduction High Level OverviewGordon Kiser
This slideshare gives developers a high level overview of the structure of an Oracle Commerce Experience Manager page used by business users to create scenarios and triggers that may control static pages and dynamic pages that automatically present content based on site visitor behavior.
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Fwdays
It’s easy to underestimate a front-end project's complexity, which leads to shallow and thus incorrect implementation. Attempts to fix this problem result in uncontrolled complexity growth and undefined behavior in corner cases.
We'll discuss ways of revealing the inherent complexity of a problem and dealing with it both on theoretical and practical levels.
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
The best code is the one you never need to write. Using code generation and automated builds you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it is handed over to a machine? In this tutorial, you will learn how to use open-source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you as a developer 100% control of the generated code. This will not only increase your productivity, but also help you build safer and more maintainable Java applications.
How to generate customized java 8 code from your databaseSpeedment, Inc.
Did you know that database classes, that require many lines of Java and SQL code, may be replaced with a single line of Java 8 code? In this tutorial session you will learn how to use standard Java 8 Streams as an alternative to traditional Object Relational Mappers (ORM). We will use the open-source tool Speedment to show how development speed can be increased and how the application code can be more concise and run faster.
All 3 Clean Code presentations provide great value by themselves, but taken together are designed to offer a holistic approach to successful software creation. This first session creates the foundation for the 2nd and 3rd Clean Code presentation on Dependency Injection, as it explains expected base knowledge. Why writing Clean Code makes us more efficient Over the lifetime of a product, maintaining the product is actually one - if not the most - expensive area(s) of the overall product costs.
We will dive into the basics of Inversion of Control (IOC) and Dependency Injection (DI) to review different ways of achieving decoupling, using and exploring both: Best Practices, Design and Anti Patterns. This presentation requires knowledge and understanding of basics like DRY, SoC, SRP, SOLID etc. which are building the base for decoupled architecture. However, we will start at the basics of DI and will work towards intermediate and advanced scenarios depending on the participating group.
This presentation is based on C# and Visual Studio 2013. However, the demonstrated patterns and practice can be applied to every other programming language too.
Note: Moving forwards this presentation will be updated with the latest version of the slides for the last event I did the presentation instead of creating new separate slide decks here on SlideShare.
Presentation dates and locations:
2015-10-03 Silicon Valley Code Camp, San Jose, CA
2015-06-27 SoCal Code Camp - San Diego, CA
2015-06-25 Bay.NET South Bay, Mountain View, CA
2014-11-14 SoCal Code Camp - Los Angeles, CA
2014-10-11 Silicon Valley Code Camp, Los Altos Hills, CA
This document discusses the principles of clean code based on Robert C. Martin's book "Clean Code". It covers topics like why clean code is important, guidelines for writing clean code like keeping methods small and using descriptive names, design principles like DRY and YAGNI, and code smells to avoid like long methods and duplicated code. The overall goal is to create code that is easy to read, understand and maintain over time.
Cucumber and RSpec are testing tools used in behavior-driven development and test-driven design. Cucumber tests user stories written in a business-readable language and converts them to automated acceptance tests. RSpec is a testing framework that allows writing unit tests in a domain-specific language. Together, Cucumber and RSpec support a test-first approach to agile software development where user requirements are tested through acceptance tests before code is written to pass unit tests.
This document discusses how crowdsourcing ideas and feedback within an integrated development environment (IDE) can speed up the software development process. It proposes collecting data on code usage patterns from developers and using that data to provide automated code completions, documentation, and help for common tasks. Error reports could also be crowdsourced and linked to existing solutions to help developers quickly resolve issues. The goal is to leverage collective intelligence and experience within the development community to reduce individual learning curves and speeds.
Christos Matskas presented on ASP.NET 5 and the .NET ecosystem. He discussed how ASP.NET 5 fits into the new .NET Core runtime as a unified framework for MVC, Web API, and SignalR. ASP.NET 5 allows for agility, control, speed, and cross-platform capabilities. It also provides features for cloud support and uses modern web standards and tools. Legacy ASP.NET applications can integrate with ASP.NET 5.
Conversational agents, or chatbots, are increasingly used to access all sorts of services using natural language. While open-domain chatbots - like ChatGPT - can converse on any topic, task-oriented chatbots - the focus of this paper - are designed for specific tasks, like booking a flight, obtaining customer support, or setting an appointment. Like any other software, task-oriented chatbots need to be properly tested, usually by defining and executing test scenarios (i.e., sequences of user-chatbot interactions). However, there is currently a lack of methods to quantify the completeness and strength of such test scenarios, which can lead to low-quality tests, and hence to buggy chatbots.
To fill this gap, we propose adapting mutation testing (MuT) for task-oriented chatbots. To this end, we introduce a set of mutation operators that emulate faults in chatbot designs, an architecture that enables MuT on chatbots built using heterogeneous technologies, and a practical realisation as an Eclipse plugin. Moreover, we evaluate the applicability, effectiveness and efficiency of our approach on open-source chatbots, with promising results.
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...Jason Yip
The typical problem in product engineering is not bad strategy, so much as “no strategy”. This leads to confusion, lack of motivation, and incoherent action. The next time you look for a strategy and find an empty space, instead of waiting for it to be filled, I will show you how to fill it in yourself. If you’re wrong, it forces a correction. If you’re right, it helps create focus. I’ll share how I’ve approached this in the past, both what works and lessons for what didn’t work so well.
More Related Content
Similar to Writing idealistic apps (Mobilization 2018)
This slide deck describes the most successful software project of my career: automating a 40-person human compiler yielding a reduction in project time from months to hours and cost from $1,000,000 to $100s for our client. The system is still in operation years later and has never had a single bug filed against it.
This document provides an overview of 30 tips for optimizing LotusScript development. It begins with introductions and outlines, then groups the tips into three sections: Theory, Practice, and Advanced. The Theory section covers 10 fundamental tips regarding best practices like using Option Declare, version control, application lifecycles, code structure, testing, and error handling. The Practice section presents 10 tips that should be implemented regularly, such as defensive coding, extending arrays, logging, and using NotesDateTime. The Advanced section introduces more complex topics like custom classes and binding. The goal is to help LotusScript developers improve code quality, maintainability, and performance.
Bob German, a Principal Architect at BlueMetal, gave a presentation about developing SharePoint widgets using TypeScript. He discussed how Microsoft is modernizing SharePoint with the new SharePoint Framework. Widgets provide a way to build reusable components for different SharePoint development models using HTML and JavaScript. TypeScript adds benefits like catch errors earlier and use modern JavaScript features. German demonstrated how to set up TypeScript and build widgets today and in the future SharePoint Framework.
eXtreme Programming (XP) is an agile software development methodology that aims to improve quality and responsiveness to changing requirements. It consists of values like communication, simplicity, feedback and courage, as well as practices like planning, small releases, testing, pair programming and refactoring. XP attempts to address common software project problems like schedule slips, defects, and inability to adapt to changing business needs. It advocates short iterations, frequent integration and customer feedback to deliver working, tested software rapidly and allow requirements to evolve over time at low cost.
eXtreme Programming (XP) is an agile software development methodology that focuses on rapid software development and delivery through practices like continuous integration, pair programming, and frequent refactoring. It aims to address common software project problems like schedule slips, high defect rates, and changing requirements by having short development cycles, automated testing, and close collaboration between developers and customers. Key XP practices include planning game, small releases, simple design, testing, refactoring, pair programming, and on-site customer involvement. Adopting XP can benefit both developers through better requirements and technical empowerment, and customers through timely delivery of valuable software that can adapt to changes.
This document introduces Luis Majano and provides an overview of Model-View-Controller (MVC) patterns and the ColdBox framework. It discusses the problems with traditional ColdFusion code using a single CFM page and the benefits of separating concerns using MVC. ColdBox is introduced as a HMVC framework that follows conventions and addresses common infrastructure needs. It describes how ColdBox works using routed URLs and handlers, and shows examples of handler, model, layout, and view code. The rendering process and use of the request context and private request context are also summarized.
Developers spend up to 20% of their time writing repetitive code that machines could generate more reliably. This presentation explores the problem of duplicated source code that stems from manual implementation of patterns and reveals how to automate the boring side of programming and get a 19x ROI.
The presentation provides insight into:
- the problem of manual implementation of patterns, resulting in boilerplate code
- the cost of boilerplate for companies
- existing technologies for pattern automation
- the key reasons to consider pattern-aware compiler extensions
The white paper was written for CTOs, software architects and senior developers in software-driven organizations—specifically in financial, insurance, healthcare, energy and IT industries that typically write a lot of repetitive code.
CC 2015 Single Page Applications for the ASPNET DeveloperAllen Conway
This is the presentation I gave entitled, "Single Page Applications for the ASP.NET Developer using AngularJS, TypeScript, and WebAPI" done at Orlando Code Camp on 3/28/15
Creating Tomorrow’s Web Applications Using Today’s Technologies Code Mastery
At Code Mastery Boston Mike Suarez, Senior Consultant at Magenic talked about Patterns & Technologies including: MVC Pattern, ASP.Net, MVC 3, HTML5, Modernizr, and jQuery
Oracle Endeca 101 Developer Introduction High Level OverviewGordon Kiser
This slideshare gives developers a high level overview of the structure of an Oracle Commerce Experience Manager page used by business users to create scenarios and triggers that may control static pages and dynamic pages that automatically present content based on site visitor behavior.
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Fwdays
It’s easy to underestimate a front-end project's complexity, which leads to shallow and thus incorrect implementation. Attempts to fix this problem result in uncontrolled complexity growth and undefined behavior in corner cases.
We'll discuss ways of revealing the inherent complexity of a problem and dealing with it both on theoretical and practical levels.
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
The best code is the one you never need to write. Using code generation and automated builds you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it is handed over to a machine? In this tutorial, you will learn how to use open-source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you as a developer 100% control of the generated code. This will not only increase your productivity, but also help you build safer and more maintainable Java applications.
How to generate customized java 8 code from your databaseSpeedment, Inc.
Did you know that database classes, that require many lines of Java and SQL code, may be replaced with a single line of Java 8 code? In this tutorial session you will learn how to use standard Java 8 Streams as an alternative to traditional Object Relational Mappers (ORM). We will use the open-source tool Speedment to show how development speed can be increased and how the application code can be more concise and run faster.
All 3 Clean Code presentations provide great value by themselves, but taken together are designed to offer a holistic approach to successful software creation. This first session creates the foundation for the 2nd and 3rd Clean Code presentation on Dependency Injection, as it explains expected base knowledge. Why writing Clean Code makes us more efficient Over the lifetime of a product, maintaining the product is actually one - if not the most - expensive area(s) of the overall product costs.
We will dive into the basics of Inversion of Control (IOC) and Dependency Injection (DI) to review different ways of achieving decoupling, using and exploring both: Best Practices, Design and Anti Patterns. This presentation requires knowledge and understanding of basics like DRY, SoC, SRP, SOLID etc. which are building the base for decoupled architecture. However, we will start at the basics of DI and will work towards intermediate and advanced scenarios depending on the participating group.
This presentation is based on C# and Visual Studio 2013. However, the demonstrated patterns and practice can be applied to every other programming language too.
Note: Moving forwards this presentation will be updated with the latest version of the slides for the last event I did the presentation instead of creating new separate slide decks here on SlideShare.
Presentation dates and locations:
2015-10-03 Silicon Valley Code Camp, San Jose, CA
2015-06-27 SoCal Code Camp - San Diego, CA
2015-06-25 Bay.NET South Bay, Mountain View, CA
2014-11-14 SoCal Code Camp - Los Angeles, CA
2014-10-11 Silicon Valley Code Camp, Los Altos Hills, CA
This document discusses the principles of clean code based on Robert C. Martin's book "Clean Code". It covers topics like why clean code is important, guidelines for writing clean code like keeping methods small and using descriptive names, design principles like DRY and YAGNI, and code smells to avoid like long methods and duplicated code. The overall goal is to create code that is easy to read, understand and maintain over time.
Cucumber and RSpec are testing tools used in behavior-driven development and test-driven design. Cucumber tests user stories written in a business-readable language and converts them to automated acceptance tests. RSpec is a testing framework that allows writing unit tests in a domain-specific language. Together, Cucumber and RSpec support a test-first approach to agile software development where user requirements are tested through acceptance tests before code is written to pass unit tests.
This document discusses how crowdsourcing ideas and feedback within an integrated development environment (IDE) can speed up the software development process. It proposes collecting data on code usage patterns from developers and using that data to provide automated code completions, documentation, and help for common tasks. Error reports could also be crowdsourced and linked to existing solutions to help developers quickly resolve issues. The goal is to leverage collective intelligence and experience within the development community to reduce individual learning curves and speeds.
Christos Matskas presented on ASP.NET 5 and the .NET ecosystem. He discussed how ASP.NET 5 fits into the new .NET Core runtime as a unified framework for MVC, Web API, and SignalR. ASP.NET 5 allows for agility, control, speed, and cross-platform capabilities. It also provides features for cloud support and uses modern web standards and tools. Legacy ASP.NET applications can integrate with ASP.NET 5.
Similar to Writing idealistic apps (Mobilization 2018) (20)
Conversational agents, or chatbots, are increasingly used to access all sorts of services using natural language. While open-domain chatbots - like ChatGPT - can converse on any topic, task-oriented chatbots - the focus of this paper - are designed for specific tasks, like booking a flight, obtaining customer support, or setting an appointment. Like any other software, task-oriented chatbots need to be properly tested, usually by defining and executing test scenarios (i.e., sequences of user-chatbot interactions). However, there is currently a lack of methods to quantify the completeness and strength of such test scenarios, which can lead to low-quality tests, and hence to buggy chatbots.
To fill this gap, we propose adapting mutation testing (MuT) for task-oriented chatbots. To this end, we introduce a set of mutation operators that emulate faults in chatbot designs, an architecture that enables MuT on chatbots built using heterogeneous technologies, and a practical realisation as an Eclipse plugin. Moreover, we evaluate the applicability, effectiveness and efficiency of our approach on open-source chatbots, with promising results.
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...Jason Yip
The typical problem in product engineering is not bad strategy, so much as “no strategy”. This leads to confusion, lack of motivation, and incoherent action. The next time you look for a strategy and find an empty space, instead of waiting for it to be filled, I will show you how to fill it in yourself. If you’re wrong, it forces a correction. If you’re right, it helps create focus. I’ll share how I’ve approached this in the past, both what works and lessons for what didn’t work so well.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/how-axelera-ai-uses-digital-compute-in-memory-to-deliver-fast-and-energy-efficient-computer-vision-a-presentation-from-axelera-ai/
Bram Verhoef, Head of Machine Learning at Axelera AI, presents the “How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-efficient Computer Vision” tutorial at the May 2024 Embedded Vision Summit.
As artificial intelligence inference transitions from cloud environments to edge locations, computer vision applications achieve heightened responsiveness, reliability and privacy. This migration, however, introduces the challenge of operating within the stringent confines of resource constraints typical at the edge, including small form factors, low energy budgets and diminished memory and computational capacities. Axelera AI addresses these challenges through an innovative approach of performing digital computations within memory itself. This technique facilitates the realization of high-performance, energy-efficient and cost-effective computer vision capabilities at the thin and thick edge, extending the frontier of what is achievable with current technologies.
In this presentation, Verhoef unveils his company’s pioneering chip technology and demonstrates its capacity to deliver exceptional frames-per-second performance across a range of standard computer vision networks typical of applications in security, surveillance and the industrial sector. This shows that advanced computer vision can be accessible and efficient, even at the very edge of our technological ecosystem.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
13. » A huge amount of experience in Swift on the Server
» Very familiar with front-end web development
» Fast learner
But...
» Overwhelming backlog
» Extremely troublesome code
» First time writing a real iOS app
» A severe lack of time and deadlines from the start
15. At least I can do my best
..to get close to perfection
16. Set up rules for my code
» Only allow interactions from parent to child
» Keep your children isolated from parents
» Responsibility must fit in a single sentence
» Keep state in one place only
» Forbid copying code at all times
» When there's code smell, always identify why
» Don't be afraid to remove code
17. The development process
1. Identify and layout visual hierarchy (from design)
2. Layout the view in objectively correct classes
3. Lay relations between times from parent to child
4. Identify and solve problems by abiding to the rules
18. I rewrote the our timeline
» Reduced code from 8066 to 3197 lines of code
» Added 3 new features
» Resolved ~10 bugs
» 1 week development time
» All newly introduced bugs were fixed in 5 minutes
20. Problem: Relaying actions back up
class Timeline {
let cards: [TimelineCard]
}
class TimelineCard {
let header: TimelineCardHeader
...
}
class TimelineCardHeader {
// Only visible to the post's owner
let button: RemoveCardButton
}
21. Solution: Share a common child
class TimelineCard {
let removed: Future<Void>
let header: TimelineCardHeader
init() {
let removePromise = Promise<Void>()
header = TimelineCardHeader(onRemoval: removePromise.complete)
removed = removePromise.futureResult
}
}
22. Problem: Removing two cards
[
card-0 (index 0),
card-1 (index 1), // Remove this card first
card-2 (index 2),
card-3 (index 3), // Remove this card next
card-4 (index 4),
]
Result:
[
card-0 (index 0),
card-2 (index 1), // Card 2 got index 1 now, being pushed up
card-3 (index 2), // Card 3 still exists, because index 3 is removed
] // Card 4 was removed because it has index 3 now
23. // class Timeline
for card in cards {
card.removed.then {
// Unique (pointer) number for the instance
let cardIdentifier = ObjectIdentifier(card)
for i in 0..<cards.count {
if ObjectIdentifier(cards[i]) == cardIdentifier {
cards.remove(at: i)
return
}
}
}
}
25. The obvious benefits
» Increased app stability and maintainability
» Reduced startup time by 90%
» Reduced code by 40%
» Reduced memory usage by 60%
» Closed 80% of the bugs
» Reduced development time for new features
» Created 1 big and 5 small features
26. The important benefits
» A lot of experience gained in iOS development
» Less stress during deployments
» Confidence and pride in your job
28. Separate code in modules
» Improved compile times
» Compile-time enforced anti-
!
» Consistent folder structure
29. Try to reduce state
» Switch to computed properties or reactivity
class User {
let birthDate: Date
var age: Int {
return Date().years(from: birthDate)
}
}
30. Less code is better
» Lower maintainance
» Less
!!!!!
31. Use KeyPaths
class Settings {
var shareEmail: Bool
}
class ToggleSettings {
let label: UITextView
let button: UISwitch
let settings: Settings
let keyPath: ReferenceWritableKeyPath<Settings, Bool>
init(...) { ... }
}
let button = ToggleSettings(
settings,
label: "Share email address",
atKeyPath: .shareEmail
)