The document discusses refactoring code to address design smells. It begins with explaining why design quality and principles are important, noting that poor software quality costs over $150 billion per year. Common design smells like duplicated code, long message chains, and violations of Liskov's substitution principle are presented. The document also discusses using refactoring techniques like replacing conditionals with polymorphism and replacing inheritance with delegation to address smells. Examples of refactoring Java date/time code and using visitors to separate logic are provided. Challenges of refactoring like fear of breaking code and lack of time are also mentioned.
Journey with XP a case study in embedded domain by Pradeep Kumar NRXP Conference India
Journey with XP a case study in embedded domain @XP conference 2016 Through this presentation, Pradeep will share his learning experience and describe his journey with XP that has been part of his life since 2 yrs. This talk also unfolds some aspects of how to adopt XP in embedded space with multiple layers involved and when there is a dependency on hardware
Feature Toggle - What Why and How A technique that allows you to “switch on” or “switch off” features of a product. So till the time the entire story is ready to be released the feature is marked as “switched off”. So though everything that is being developed is in the trunk but it is not visible and is not executed till the time it is “switched on”. There is a lot more to feature toggles and this session will allow you to think away from the conventional approach of Branching and Merging and move towards CI/CD efficiently.
With the explosion of front end technologies such as HTML5 and JS frameworks, it's not enough to do TDD just in your server side code. And frankly, there are likely a lot of DB procedures that are being developed without unit tests. Let's take a step back and look at a full application stack using (front) HTML, CSS, JS, (middle) java, Spring, json client/server, and (back) DB. Lance will show conceptual strategies, tools, and illustrative code examples for common unit test patterns that come up in those areas.
How to Add Test Automation to your Quality Assurance ToolbeltBrett Tramposh
SQA job postings are still in abundance, but it is rare to find one that does not include some form of test automation pedigree. Brett will present the topic and then lead the discussion as we explore the various paths to building your test automation acumen, and learn how to add this valuable skill-set to your resume. If you are already an SQA with test automation experience we encourage you to participate and bring your learning forward and into the discussion where we will compare and contrast Computer Science degrees, Code Camps, licensed automation tools such as HP UFT (QTP), test frameworks and scripting tools such as jMeter and SOAPUI. There is much to explore on this topic and we want everyone to leave with a few key areas they can start building on today.
Still after over 10 years its hard to do good test automation. This presentation highlights what and how we need to approach test automation in order to create reliable, resilient and repeatable tests.
Journey with XP a case study in embedded domain by Pradeep Kumar NRXP Conference India
Journey with XP a case study in embedded domain @XP conference 2016 Through this presentation, Pradeep will share his learning experience and describe his journey with XP that has been part of his life since 2 yrs. This talk also unfolds some aspects of how to adopt XP in embedded space with multiple layers involved and when there is a dependency on hardware
Feature Toggle - What Why and How A technique that allows you to “switch on” or “switch off” features of a product. So till the time the entire story is ready to be released the feature is marked as “switched off”. So though everything that is being developed is in the trunk but it is not visible and is not executed till the time it is “switched on”. There is a lot more to feature toggles and this session will allow you to think away from the conventional approach of Branching and Merging and move towards CI/CD efficiently.
With the explosion of front end technologies such as HTML5 and JS frameworks, it's not enough to do TDD just in your server side code. And frankly, there are likely a lot of DB procedures that are being developed without unit tests. Let's take a step back and look at a full application stack using (front) HTML, CSS, JS, (middle) java, Spring, json client/server, and (back) DB. Lance will show conceptual strategies, tools, and illustrative code examples for common unit test patterns that come up in those areas.
How to Add Test Automation to your Quality Assurance ToolbeltBrett Tramposh
SQA job postings are still in abundance, but it is rare to find one that does not include some form of test automation pedigree. Brett will present the topic and then lead the discussion as we explore the various paths to building your test automation acumen, and learn how to add this valuable skill-set to your resume. If you are already an SQA with test automation experience we encourage you to participate and bring your learning forward and into the discussion where we will compare and contrast Computer Science degrees, Code Camps, licensed automation tools such as HP UFT (QTP), test frameworks and scripting tools such as jMeter and SOAPUI. There is much to explore on this topic and we want everyone to leave with a few key areas they can start building on today.
Still after over 10 years its hard to do good test automation. This presentation highlights what and how we need to approach test automation in order to create reliable, resilient and repeatable tests.
Roman iovlev battle - JDI vs Selenide - Selenium CampРоман Иовлев
The Battle on Selenium Camp conferece February 2017
http://seleniumcamp.com/talk/qa-livecoding-battle-typed-element-framework-jdi-vs-untyped-elements-framework-selenide/
Why typed elements (like Buttons, Images, Checkboxes, Links etc.) are bad practice in UI tests? Or are non-typed elements (like SelenideElement for ´em all!) more evil? Is it better to have predefined Element hierarchy or not?
Alexei and Roman have delivered a sound theoretical battle earlier at Heisenbug-2016 Conference in Moscow. But were everything said just words? The both QA wrestlers are still standing behind their concepts and are willing to prove their point at live coding sessions before the judging audience! In this QA Battle the parties will solve problems using a typed framework JDI and an non-typed one – Selenide, commenting their actions. The audience will decide with their votes which of the concept was better.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
Unit testing and test-driven development are practices that makes it easy and efficient to create well-structured and well-working code. However, many software projects didn't create unit tests from the beginning.
In this presentation I will show a test automation strategy that works well for legacy code, and how to implement such a strategy on a project. The strategy focuses on characterization tests and refactoring, and the slides contain a detailed example of how to carry through a major refactoring in many tiny steps
Pairwise testing has become an indispensable tool in a software tester’s toolbox. This presentation pays special attention to usability of the pairwise testing technique. In particular, it focuses on ways in which the pure pairwise-testing approach must be modified to become practically applicable, and on the features that tools must offer to support the tester who is trying to use pairwise testing in practice.
Lightening Talk I gave at Inaka in April 2014.
I was in charge of investigating test-driven development for our iOS mobile team. Since I realized it was such a big concept, after having gathered enough information and having played with it enough, I decided to introduce my fellows on the topic by presenting it in a formal talk with slides. The aim was teaching them a different way of developing, which, for us, at that moment, was completely new and controversial.
A method of communicating between two devices
A software function provided at a network address over the web with the service always on
It has an interface described in a machine-processable format
http://www.qualitestgroup.com/
Presented at 3|SHARE's EVOLVE'15 - The Adobe Experience Manager Community Summit on August 18th, 2015 at the Hard Rock Hotel in San Diego, CA. http://evolve.3sharecorp.com
There's a recording of this talk at Agile 2012 here: http://www.youtube.com/watch?v=v-L_2y6g5DI
Creating automated end-to-end functional acceptance tests is hard. Maintaining them over time is harder. Some agilistas even claim that the cost outweighs the benefit. In this lecture we present five principles for creating valuable, maintainable acceptance test suites. We discuss practices such as layering acceptance tests to reduce coupling between the test harness, and talk about how teams should be organized in order to efficiently manage acceptance test driven development. The core of the talk discusses how to manage the evolution of acceptance tests by organizing them as scenarios rather than as suites of story tests. Finally we show how to manage data for acceptance tests.
This presentation has been prepared to share knowledge about JetBrains UpSource tool usage on HTML project for back-end developers. Also code review process description has been provided to share good/bad experience of code review procedure.
Slides were used for the session on 'Feature toggles' on ATAGG(2014)
Abstract - Is your code Toggled !?!
What is Agile?
According to Agile manifesto principles, Agile is
“Customer satisfaction by rapid delivery of useful software”, “Working software is delivered frequently (weeks rather than months)”. In most of agile teams, multiple features are worked upon by sub-teams in same sprint/iteration. Even though it enables rapid delivery, if not planned well teams may find it challenging to release work of one sub-team while withholding the others. Or worse, release gets delayed as part of work (any single team) is not production-deployable. Rapid delivery by multiple streams becomes unreality as delivery time grows from weeks to months.
Generally, most teams use multiple branches to manage this challenge to an extent. This strategy, consumes lot of time in integration & regression testing cycles every sprint. Could there be better solution? What if we could save the time we spend on these regression cycles? Think of solution where there is single branch to commit to, and everything is released to staging/production, but features are ”Toggled” depending on their usability/need. This talk explores a concept called “Feature Toggles” and how it could help us make test cycles short.
Talk emphasizes on effectively managing multiple streams, without delaying the delivery of software. It mainly focuses on various useful techniques (Branching, Feature Toggles etc.) which can help agile teams with multiple sub-teams to efficiently manage their codebase & releases to achieve faster delivery.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
Integration Testing in Enterprises using TaaSAnand Bagmar
Typically in organizations, there are multiple projects / products. These products may be of implemented using tech-stacks over many years. Yet - they interact with each other in some way. To manage the complexity around Test Automation, many organizations prefer to have a common Test Automation solution across these products in an effort to build, standardize and maintain the framework.
However, this is not a good idea! With this approach one potentially ends up having to compromise on the quality of automation that can be done for each product, limited by the toolset.
The better approach would be to use the tools and technologies that are "right" for each product. This does have other disadvantages, but you would ensure each product is well tested! The only missing piece that remains is that these different products talk with each other. You need to test the integration between them in an automated way to verify all is well.
"TaaS" is an open-source product solution that allows you do achieve the "correct" way of doing integration testing across a variety of products via Test Automation.
Example:
For one set of products, Selenium-based toolset may be the right choice, where as for legacy reasons, QTP may be used for some other product. With TaaS - you will be able to automate the Integration Testing between these products, by re-using the tests already implemented in the individual product suites.
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This workshop provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The workshop also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this workshop, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice.
Contents overview:
* Why care about design principles, design quality, or design smells?
* Refactoring as the primary means for repaying technical debt
* Smells that violate abstraction, encapsulation, modularisation, or hierarchy
* Tools and techniques for refactoring
Refactoring for Software Design Smells - Tech Talk Ganesh Samarthyam
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This workshop provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The workshop also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this workshop, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice.
Contents overview:
* Why care about design principles, design quality, or design smells?
* Refactoring as the primary means for repaying technical debt
* Smells that violate abstraction, encapsulation, modularisation, or hierarchy
* Tools and techniques for refactoring
Roman iovlev battle - JDI vs Selenide - Selenium CampРоман Иовлев
The Battle on Selenium Camp conferece February 2017
http://seleniumcamp.com/talk/qa-livecoding-battle-typed-element-framework-jdi-vs-untyped-elements-framework-selenide/
Why typed elements (like Buttons, Images, Checkboxes, Links etc.) are bad practice in UI tests? Or are non-typed elements (like SelenideElement for ´em all!) more evil? Is it better to have predefined Element hierarchy or not?
Alexei and Roman have delivered a sound theoretical battle earlier at Heisenbug-2016 Conference in Moscow. But were everything said just words? The both QA wrestlers are still standing behind their concepts and are willing to prove their point at live coding sessions before the judging audience! In this QA Battle the parties will solve problems using a typed framework JDI and an non-typed one – Selenide, commenting their actions. The audience will decide with their votes which of the concept was better.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
Unit testing and test-driven development are practices that makes it easy and efficient to create well-structured and well-working code. However, many software projects didn't create unit tests from the beginning.
In this presentation I will show a test automation strategy that works well for legacy code, and how to implement such a strategy on a project. The strategy focuses on characterization tests and refactoring, and the slides contain a detailed example of how to carry through a major refactoring in many tiny steps
Pairwise testing has become an indispensable tool in a software tester’s toolbox. This presentation pays special attention to usability of the pairwise testing technique. In particular, it focuses on ways in which the pure pairwise-testing approach must be modified to become practically applicable, and on the features that tools must offer to support the tester who is trying to use pairwise testing in practice.
Lightening Talk I gave at Inaka in April 2014.
I was in charge of investigating test-driven development for our iOS mobile team. Since I realized it was such a big concept, after having gathered enough information and having played with it enough, I decided to introduce my fellows on the topic by presenting it in a formal talk with slides. The aim was teaching them a different way of developing, which, for us, at that moment, was completely new and controversial.
A method of communicating between two devices
A software function provided at a network address over the web with the service always on
It has an interface described in a machine-processable format
http://www.qualitestgroup.com/
Presented at 3|SHARE's EVOLVE'15 - The Adobe Experience Manager Community Summit on August 18th, 2015 at the Hard Rock Hotel in San Diego, CA. http://evolve.3sharecorp.com
There's a recording of this talk at Agile 2012 here: http://www.youtube.com/watch?v=v-L_2y6g5DI
Creating automated end-to-end functional acceptance tests is hard. Maintaining them over time is harder. Some agilistas even claim that the cost outweighs the benefit. In this lecture we present five principles for creating valuable, maintainable acceptance test suites. We discuss practices such as layering acceptance tests to reduce coupling between the test harness, and talk about how teams should be organized in order to efficiently manage acceptance test driven development. The core of the talk discusses how to manage the evolution of acceptance tests by organizing them as scenarios rather than as suites of story tests. Finally we show how to manage data for acceptance tests.
This presentation has been prepared to share knowledge about JetBrains UpSource tool usage on HTML project for back-end developers. Also code review process description has been provided to share good/bad experience of code review procedure.
Slides were used for the session on 'Feature toggles' on ATAGG(2014)
Abstract - Is your code Toggled !?!
What is Agile?
According to Agile manifesto principles, Agile is
“Customer satisfaction by rapid delivery of useful software”, “Working software is delivered frequently (weeks rather than months)”. In most of agile teams, multiple features are worked upon by sub-teams in same sprint/iteration. Even though it enables rapid delivery, if not planned well teams may find it challenging to release work of one sub-team while withholding the others. Or worse, release gets delayed as part of work (any single team) is not production-deployable. Rapid delivery by multiple streams becomes unreality as delivery time grows from weeks to months.
Generally, most teams use multiple branches to manage this challenge to an extent. This strategy, consumes lot of time in integration & regression testing cycles every sprint. Could there be better solution? What if we could save the time we spend on these regression cycles? Think of solution where there is single branch to commit to, and everything is released to staging/production, but features are ”Toggled” depending on their usability/need. This talk explores a concept called “Feature Toggles” and how it could help us make test cycles short.
Talk emphasizes on effectively managing multiple streams, without delaying the delivery of software. It mainly focuses on various useful techniques (Branching, Feature Toggles etc.) which can help agile teams with multiple sub-teams to efficiently manage their codebase & releases to achieve faster delivery.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
Integration Testing in Enterprises using TaaSAnand Bagmar
Typically in organizations, there are multiple projects / products. These products may be of implemented using tech-stacks over many years. Yet - they interact with each other in some way. To manage the complexity around Test Automation, many organizations prefer to have a common Test Automation solution across these products in an effort to build, standardize and maintain the framework.
However, this is not a good idea! With this approach one potentially ends up having to compromise on the quality of automation that can be done for each product, limited by the toolset.
The better approach would be to use the tools and technologies that are "right" for each product. This does have other disadvantages, but you would ensure each product is well tested! The only missing piece that remains is that these different products talk with each other. You need to test the integration between them in an automated way to verify all is well.
"TaaS" is an open-source product solution that allows you do achieve the "correct" way of doing integration testing across a variety of products via Test Automation.
Example:
For one set of products, Selenium-based toolset may be the right choice, where as for legacy reasons, QTP may be used for some other product. With TaaS - you will be able to automate the Integration Testing between these products, by re-using the tests already implemented in the individual product suites.
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This workshop provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The workshop also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this workshop, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice.
Contents overview:
* Why care about design principles, design quality, or design smells?
* Refactoring as the primary means for repaying technical debt
* Smells that violate abstraction, encapsulation, modularisation, or hierarchy
* Tools and techniques for refactoring
Refactoring for Software Design Smells - Tech Talk Ganesh Samarthyam
Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This workshop provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The workshop also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this workshop, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice.
Contents overview:
* Why care about design principles, design quality, or design smells?
* Refactoring as the primary means for repaying technical debt
* Smells that violate abstraction, encapsulation, modularisation, or hierarchy
* Tools and techniques for refactoring
This presentation provides an overview of using the Java SE 8 Date & Time API. It covers how to:
1. Create and manage date-based and time-based events including a combination of date and time into a single object using LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duration
2. Work with dates and times across timezones and manage changes resulting from daylight savings including format date and times values
3. Define and create and manage date-based and time-based events using Instant, Period, Duration, and TemporalUnit
Systematic Generation Data and Types in C++Sumant Tambe
This presentation will discuss two classic techniques from the functional domain — composable data generators and property-based testing — implemented in C++14 for testing a generic serialization and deserialization library. We will look at a systematic technique of constructing data generators from a mere random number generator and random type generation using compile-time meta-programming. Along the way, we will discuss monoids, functors, and monads as we encounter them.
Architecture refactoring - accelerating business successGanesh Samarthyam
In the last two decades, refactoring for code and design smells have received considerable attention from both academia and industry. Recently, the focus has turned towards refactoring for architectural smells to repay architectural debt. This presentation covers case studies/examples in refactoring them in industrial and open source projects.
How much performance can you get out of Javascript? - Massimiliano Mantione -...Codemotion
JavaScript started as a slow, interpreted language, but in more than two decades things have changed completely and now we have even game engines running in the browser. What is its maximum theoretical performance, and how can you write code that exploits its full potential? We'll see everything a developer must know to write regular Javascript code that literally rivals C++ code, and learn what WebAssembly adds to this.
Presented in Bangalore Open Java User Group on 21st Jan 2017
Awareness of design smells - Design comes before code. A care at design level can solve lot of problems.
Indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This presentation provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The talk also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this talk, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice. All the examples in this talk are in Java.
How to develop high quality software? What are the key/fundamental principles for software design? Deriving from 3 years of research on software design principles and design smells, this talk shares key insights on developing high-quality software in industrial contexts. By attending this session, you’ll get a clear understanding of the key role that design principles play in developing software. Further, you’ll know how to apply design principles in practice. So, don’t miss it!
From Mess To Masterpiece - JFokus 2017Sven Ruppert
How a migration to MicroServices could change the team, architecture and coding culture. What you could you do and how you could transform a "Jurassic Park" into a lightweight environment. In this talk we will explore the strategy, techniques, pattern and tools I used to transform a team and the architecture that was grown over 15yrs. This will be a mix of pattern, tools and techniques that was able to migrate old systems, used inside insurance and banks. We had to migrate fat systems with a few million lines of code...
Consequences of using the Copy-Paste method in C++ programming and how to dea...Andrey Karpov
I create the PVS-Studio analyzer detecting errors in source code of C/C++/C++0x software. So I have to review a large amount of source code of various applications where we detected suspicious code fragments with the help of PVS-Studio. I have collected a lot of examples demonstrating that an error occurred because of copying and modifying a code fragment. Of course, it has been known for a long time that using Copy-Paste in programming is a bad thing. But let's try to investigate this problem closely instead of limiting ourselves to just saying "do not copy the code".
Similar to Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam (20)
Devops like lance Armstrong by Yahya Poonawala & Siddharth Kulkarni XP Conference India
With the concept of Infrastructure as Code gaining momentum, along with the concept of DevOps, it's important to check the sanity of the Infrastructure as a whole. This talk aims to discuss and demo concepts of why testing your infrastructure is important, what does it involve and how it can be done.
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...XP Conference India
Perspectives on Continuous Integration at Scale In this talk Hrishikesh K & Vinaya Muralidharan share their experience of continuous integration journey and how the transformation is done in enterprise projects having hundreds of people without impacting the business.
Building Big Architectures - The term Microservice Architecture has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. Recently, Docker containerization has been a popular term used by various companies and organizations. There are many benefits with this approach such as the ability to independently deploy, scale and maintain each component and parallel development across multiple teams.
Introduction to Docker - Learning containerization XP conference 2016XP Conference India
Docker is an open-source platform which provides a great way to package and deploy applications. With its lightweight resource consumption pattern, it helps in making CI/CD environments faster and predictable. Learn how to setup Docker and deploy a basic web application.
Respond to What Your Code & What Your Business are Saying When the business is asking for more features, the developers respond by simply adding to that cute little function and it gets bigger and messier. Although it gets harder to understand, well-meaning developers still work with that design. It creaks like a rotting floor, no one does anything different and keeps adding more and more. In this workshop, Lance will show how to componentize so we stop being code-zombies, and where adding new features would mean adding new objects.
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...XP Conference India
Does your organization frown upon “Build Breakers”? Does your team spend a lot of time fixing integration issues in CI? Do you see a lot of “Who broke the build now?” emails? Do your team members hesitate to commit their code for the fear of causing a build failure? If you wish to know what you can do to make the situation better, this session is for you. In this session, Vivek talks about Continuous Integration and its importance to eliminate certain risks, particularly when multiple teams are rallying towards a planned release.
When the British were ruling in colonial India, they were concerned about the number of venomous cobra snakes in Delhi. The government therefore offered a bounty for every dead cobra. Initially this was a successful strategy as large numbers of snakes were killed for the reward. Eventually, however, enterprising people began to breed cobras for the income. When the government became aware of this, the reward program was scrapped, causing the cobra breeders to set the now-worthless snakes free. As a result, the wild cobra population further increased. The apparent solution for the problem made the situation even worse.
Our tests which we assume to be a safeguard for our code might just make our situation even worse!
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
8. #XPIndia2016
Why care about design quality and design principles?
Poor software quality costs
more than $150 billion per year
in U.S. and greater than $500
billion per year worldwide
- Capers Jones
Why care? Reason #1
11. “The problem with quick and dirty...is that dirty
remains long after quick has been forgotten”
Steve C McConnell
12. #XPIndia2016
Why care? Reason #3
“Technical debt is the debt that accrues
when you knowingly or unknowingly make
wrong or non-optimal design decisions”
16. #XPIndia2016
Effective design: Java parallel streams
❖ Applies the principles of abstraction and encapsulation
effectively to significantly simplify concurrent
programming
Parallel code
Serial code
17. #XPIndia2016
Parallel streams: example
import java.util.stream.LongStream;
class PrimeNumbers {
private static boolean isPrime(long val) {
for(long i = 2; i <= val/2; i++) {
if((val % i) == 0) {
return false;
}
}
return true;
}
public static void main(String []args) {
long numOfPrimes = LongStream.rangeClosed(2, 50_000)
.parallel()
.filter(PrimeNumbers::isPrime)
.count();
System.out.println(numOfPrimes);
}
}
18. #XPIndia2016
long numOfPrimes = LongStream.rangeClosed(2, 100_000)
.filter(PrimeNumbers::isPrime)
.count();
System.out.println(numOfPrimes);
Prints 9592
2.510 seconds
24. #XPIndia2016
What is refactoring?
Refactoring (noun): a change
made to the internal structure of
software to make it easier to
understand and cheaper to
modify without changing its
observable behavior
Refactor (verb): to restructure
software by applying a series
of refactorings without
changing its observable
behavior
25. #XPIndia2016
Should this be “refactored”?
abstract class Printer {
private Integer portNumber = getPortNumber();
abstract Integer getPortNumber();
public static void main(String[]s) {
Printer p = new LPDPrinter();
System.out.println(p.portNumber);
}
}
class LPDPrinter extends Printer {
/* Line Printer Deamon port no is 515 */
private Integer defaultPortNumber = 515;
Integer getPortNumber() {
return defaultPortNumber;
}
}
26. #XPIndia2016
Should this be “refactored”?
Calendar calendar = new Calendar.Builder()
.set(YEAR, 2003)
.set(MONTH, APRIL)
.set(DATE, 6)
.set(HOUR, 15)
.set(MINUTE, 45)
.set(SECOND, 22)
.setTimeZone(TimeZone.getDefault())
.build();
System.out.println(calendar);
Does this have “long
message chains” smell?
No - it’s a feature
(use of builder pattern)!
38. #XPIndia2016
Discussion example
// using java.util.Date
Date today = new Date();
System.out.println(today);
$ java DateUse
Wed Dec 02 17:17:08 IST 2015
Why should we get the
time and timezone details
if I only want a date? Can
I get rid of these parts?
No!
39. #XPIndia2016
So what!
Date today = new Date();
System.out.println(today);
Date todayAgain = new Date();
System.out.println(todayAgain);
System.out.println(today.compareTo(todayAgain) == 0);
Thu Mar 17 13:21:55 IST 2016
Thu Mar 17 13:21:55 IST 2016
false
What is going
on here?
44. #XPIndia2016
Refactored example …
You can use only date,
time, or even timezone,
and combine them as
needed!
LocalDate today = LocalDate.now();
System.out.println(today);
LocalTime now = LocalTime.now();
System.out.println(now);
ZoneId id = ZoneId.of("Asia/Tokyo");
System.out.println(id);
LocalDateTime todayAndNow = LocalDateTime.now();
System.out.println(todayAndNow);
ZonedDateTime todayAndNowInTokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(todayAndNowInTokyo);
2016-03-17
13:28:06.927
Asia/Tokyo
2016-03-17T13:28:06.928
2016-03-17T16:58:06.929+09:00[Asia/Tokyo]
51. #XPIndia2016
Scenario
How to separate:
a) code generation logic
from node types?
b) how to support different
target types?
class Plus extends Expr {
private Expr left, right;
public Plus(Expr arg1, Expr arg2) {
left = arg1;
right = arg2;
}
public void genCode() {
left.genCode();
right.genCode();
if(t == Target.JVM) {
System.out.println("iadd");
}
else { // DOTNET
System.out.println("add");
}
}
}
52. #XPIndia2016
A solution using Visitor pattern
class Plus extends Expr {
private Expr left, right;
public Plus(Expr arg1, Expr arg2) {
left = arg1;
right = arg2;
}
public Expr getLeft() {
return left;
}
public Expr getRight() {
return right;
}
public void accept(Visitor v) {
v.visit(this);
}
}
class DOTNETVisitor extends Visitor {
public void visit(Constant arg) {
System.out.println("ldarg " + arg.getVal());
}
public void visit(Plus plus) {
genCode(plus.getLeft());
genCode(plus.getRight());
System.out.println("add");
}
public void visit(Sub sub) {
genCode(sub.getLeft());
genCode(sub.getRight());
System.out.println("sub");
}
public void genCode(Expr expr) {
expr.accept(this);
}
}
53. #XPIndia2016
Visitor pattern: structure
Source: “Design Patterns: Elements of Reusable Object-Oriented Software”, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison-Wesley,1994
54. #XPIndia2016
Visitor pattern: call sequence
Source: “Design Patterns: Elements of Reusable Object-Oriented Software”, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison-Wesley,1994
55. #XPIndia2016
Visitor pattern: Discussion
Represent an operation to be performed on the elements of an object structure.
Visitor lets you define a new operation without changing the classes of the
elements on which it operations
❖ Create two class
hierarchies:
❖ One for the elements
being operated on
❖ One for the visitors that
define operations on the
elements
56. #XPIndia2016
Refactoring with Lambdas
File[] files = new File(".").listFiles(
new FileFilter() {
public boolean accept(File f) { return f.isFile(); }
}
);
for(File file: files) {
System.out.println(file);
}
Arrays.stream(new File(“.”)
.listFiles(file -> file.isFile()))
.forEach(System.out::println);
58. #XPIndia2016
Refactoring: Practical concerns
“Fear of breaking
working code”
Is management buy-in necessary for refactoring?
How to refactor code in legacy projects (no automated
tests, difficulty in understanding, lack of motivation, …)?
Where do I have time
for refactoring?