My name is Andrey Karpov. I develop software for developers, and I'm fond of writing articles on code quality issues. In this connection, I have met the wonderful man Walter Bright who has created the D language. In the form of an interview, I will try to learn from him how the D language helps programmers get rid of errors we all make when writing code.
7 lessons learned building high availability / performance systems - CM2015Francesco Degrassi
Slides for my talk "Never gonna give you up, never gonna let you down - 7 lessons learned building high availability, high performance systems".
Presented at Codemotion Berlin 2015
My name is Andrey Karpov. I develop software for developers, and I'm fond of writing articles on code quality issues. In this connection, I have met the wonderful man Walter Bright who has created the D language. In the form of an interview, I will try to learn from him how the D language helps programmers get rid of errors we all make when writing code.
7 lessons learned building high availability / performance systems - CM2015Francesco Degrassi
Slides for my talk "Never gonna give you up, never gonna let you down - 7 lessons learned building high availability, high performance systems".
Presented at Codemotion Berlin 2015
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
From the impact of Pokemon Go on Silicon Valley to artificial intelligence, futurist Brian Solis talks to Mathew Parsons of World Travel Market about the future of travel, tourism and hospitality.
We’re all trying to find that idea or spark that will turn a good project into a great project. Creativity plays a huge role in the outcome of our work. Harnessing the power of collaboration and open source, we can make great strides towards excellence. Not just for designers, this talk can be applicable to many different roles – even development. In this talk, Seasoned Creative Director Sara Cannon is going to share some secrets about creative methodology, collaboration, and the strong role that open source can play in our work.
Gave a talk at StartCon about the future of Growth. I touch on viral marketing / referral marketing, fake news and social media, and marketplaces. Finally, the slides go through future technology platforms and how things might evolve there.
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
If your B2B blogging goals include earning social media shares and backlinks to boost your search rankings, this infographic lists the size best approaches.
Each technological age has been marked by a shift in how the industrial platform enables companies to rethink their business processes and create wealth. In the talk I argue that we are limiting our view of what this next industrial/digital age can offer because of how we read, measure and through that perceive the world (how we cherry pick data). Companies are locked in metrics and quantitative measures, data that can fit into a spreadsheet. And by that they see the digital transformation merely as an efficiency tool to the fossil fuel age. But we need to stretch further…
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
How can a digital marketing consultant help your business? In this resource we'll count the ways. 24 additional marketing resources are bundled for free.
If the coding bug is banal, it doesn't meant it's not crucialPVS-Studio
Spreading the word about PVS-Studio static analyzer, we usually write articles for programmers. However, some things are seen by programmers quite one-sided. That is why there are project managers who can help manage the process of the project development and guide it to the right direction. I decided to write a series of articles, whose target audience is project managers. These articles will help better understand the use of static code analysis methodology. Today we are going to consider a false postulate: "coding errors are insignificant".
I often hear in various interpretations the phrase: "The given examples show not the code incorrect from the viewpoint of porting to x64 systems, but the code incorrect in itself". I would like to discuss and theorize a bit on this point in the blog. Please, take this note with a bit of humor.
Adaptation of the technology of the static code analyzer for developing paral...PVS-Studio
In the article the question of use of the static code analyzers in modern parallel program development processes is considered. Having appeared in 70-80s as an addition to compilers, the static analyzers stopped to be popular with the developers in 90s. The reason was probably the increase of the errors diagnostics quality by the compilers. But in 2000s the interest to the static code analyzers started to increase again. It is explained by the fact that new static code analyzers were created, which started to detect quite difficult errors in programs. If the static code analyzers of the past made it possible, for example, to detect an uninitialized variable, modern static code analyzers tend to detect an unsafe access to data from several threads. The modern tendency of static code analyzers development became their use for diagnosing errors in parallel programs. In the work the situations are considered, where the use of such tools makes it possible to considerably simplify the process of creating parallel program solutions.
An ideal static analyzer, or why ideals are unachievablePVS-Studio
Being inspired by Eugene Laspersky's post about an ideal antivirus, I decided to write a similar post about an ideal static analyzer. And meanwhile think how far from being it our PVS-Studio is.
C, C++, Java, Python, PHP, JavaScript and Linux For BeginnersManjunath.R -
An ideal addition to your personal elibrary. With the aid of this indispensable reference book, you may quickly gain a grasp of Python, Java, JavaScript, C, C++, CSS, Data Science, HTML, LINUX and PHP. It can be challenging to understand the programming language's distinctive advantages and charms. Many programmers who are familiar with a variety of languages frequently approach them from a constrained perspective rather than enjoying their full expressivity. Some programmers incorrectly use Programmatic features, which can later result in serious issues. The programmatic method of writing programs—the ideal approach to use programming languages—is explained in this book. This book is for all programmers, whether you are a novice or an experienced pro. Its numerous examples and well paced discussions will be especially beneficial for beginners. Those who are already familiar with programming will probably gain more from this book, of course. I want you to be prepared to use programming to make a big difference.
Linux Commands, C, C++, Java and Python Exercises For BeginnersManjunath.R -
An approachable manual for new and experienced programmers that introduces the programming languages C, C++, Java, and Python. This book is for all programmers, whether you are a novice or an experienced pro. It is designed for an introductory course that provides beginning engineering and computer science students with a solid foundation in the fundamental concepts of computer programming. It also offers valuable perspectives on important computing concepts through the development of programming and problem-solving skills using the languages C, C++, Java, and Python. The beginner will find its carefully paced exercises especially helpful. Of course, those who are already familiar with programming are likely to derive more benefits from this book. After reading this book you will find yourself at a moderate level of expertise in C, C++, Java and Python, from which you can take yourself to the next levels. The command-line interface is one of the nearly all well built trademarks of Linux. There exists an ocean of Linux commands, permitting you to do nearly everything you can be under the impression of doing on your Linux operating system. However, this, at the end of time, creates a problem: because of all of so copious commands accessible to manage, you don't comprehend where and at which point to fly and learn them, especially when you are a learner. If you are facing this problem, and are peering for a painless method to begin your command line journey in Linux, you've come to the right place-as in this book, we will launch you to a hold of well liked and helpful Linux commands. This book gives a thorough introduction to the C, C++, Java, and Python programming languages, covering everything from fundamentals to advanced concepts. It also includes various exercises that let you put what you learn to use in the real world.
In this article, you're going to find 60 terrible coding tips — and explanations of why they are terrible. It's a fun and serious piece at the same time. No matter how terrible these tips look, they aren't fiction, they are real: we saw them all in the real programming world.
Development of resource-intensive applications in Visual C++PVS-Studio
The article will familiarize application developers with tasks given them by the mass introduction of 64-bit multi-core processors symbolizing revolutionary increase of computing power available for an average user. It will also touch upon the problems of effective use of hardware resources for solving everyday applied tasks within the limits of Windows x64 operating system
Development of resource-intensive applications in Visual C++Andrey Karpov
The article will familiarize application developers with tasks given them by the mass introduction of 64-bit multi-core processors symbolizing revolutionary increase of computing power available for an average user. It will also touch upon the problems of effective use of hardware resources for solving everyday applied tasks within the limits of Windows x64 operating system
Myths about static analysis. The second myth - expert developers do not make ...PVS-Studio
While communicating with people on forums, I noticed there are a few lasting misconceptions concerning the static analysis methodology. I decided to write a series of brief articles where I want to show you the real state of things.
Static analysis as part of the development process in Unreal EnginePVS-Studio
Unreal Engine continues to develop as new code is added and previously written code is changed. What is the inevitable consequence of ongoing development in a project? The emergence of new bugs in the code that a programmer wants to identify as early as possible. One of the ways to reduce the number of errors is the use of a static analyzer like PVS-Studio. Moreover, the analyzer is not only evolving, but also constantly learning to look for new error patterns, some of which we will discuss in this article. If you care about code quality, this article is for you.
In this whitepaper, LearnItFirst founder Scott Whigham talks about how you can become a good (or better) C# programmer. This whitepaper is long - 15 pages - but it includes both a step-by-step system to follow as well as an in-depth discussion of each step.
If you follow this 13-step system (with a bonus 14th step), you can’t help but become a good C# developer!
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
From the impact of Pokemon Go on Silicon Valley to artificial intelligence, futurist Brian Solis talks to Mathew Parsons of World Travel Market about the future of travel, tourism and hospitality.
We’re all trying to find that idea or spark that will turn a good project into a great project. Creativity plays a huge role in the outcome of our work. Harnessing the power of collaboration and open source, we can make great strides towards excellence. Not just for designers, this talk can be applicable to many different roles – even development. In this talk, Seasoned Creative Director Sara Cannon is going to share some secrets about creative methodology, collaboration, and the strong role that open source can play in our work.
Gave a talk at StartCon about the future of Growth. I touch on viral marketing / referral marketing, fake news and social media, and marketplaces. Finally, the slides go through future technology platforms and how things might evolve there.
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
If your B2B blogging goals include earning social media shares and backlinks to boost your search rankings, this infographic lists the size best approaches.
Each technological age has been marked by a shift in how the industrial platform enables companies to rethink their business processes and create wealth. In the talk I argue that we are limiting our view of what this next industrial/digital age can offer because of how we read, measure and through that perceive the world (how we cherry pick data). Companies are locked in metrics and quantitative measures, data that can fit into a spreadsheet. And by that they see the digital transformation merely as an efficiency tool to the fossil fuel age. But we need to stretch further…
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
How can a digital marketing consultant help your business? In this resource we'll count the ways. 24 additional marketing resources are bundled for free.
If the coding bug is banal, it doesn't meant it's not crucialPVS-Studio
Spreading the word about PVS-Studio static analyzer, we usually write articles for programmers. However, some things are seen by programmers quite one-sided. That is why there are project managers who can help manage the process of the project development and guide it to the right direction. I decided to write a series of articles, whose target audience is project managers. These articles will help better understand the use of static code analysis methodology. Today we are going to consider a false postulate: "coding errors are insignificant".
I often hear in various interpretations the phrase: "The given examples show not the code incorrect from the viewpoint of porting to x64 systems, but the code incorrect in itself". I would like to discuss and theorize a bit on this point in the blog. Please, take this note with a bit of humor.
Adaptation of the technology of the static code analyzer for developing paral...PVS-Studio
In the article the question of use of the static code analyzers in modern parallel program development processes is considered. Having appeared in 70-80s as an addition to compilers, the static analyzers stopped to be popular with the developers in 90s. The reason was probably the increase of the errors diagnostics quality by the compilers. But in 2000s the interest to the static code analyzers started to increase again. It is explained by the fact that new static code analyzers were created, which started to detect quite difficult errors in programs. If the static code analyzers of the past made it possible, for example, to detect an uninitialized variable, modern static code analyzers tend to detect an unsafe access to data from several threads. The modern tendency of static code analyzers development became their use for diagnosing errors in parallel programs. In the work the situations are considered, where the use of such tools makes it possible to considerably simplify the process of creating parallel program solutions.
An ideal static analyzer, or why ideals are unachievablePVS-Studio
Being inspired by Eugene Laspersky's post about an ideal antivirus, I decided to write a similar post about an ideal static analyzer. And meanwhile think how far from being it our PVS-Studio is.
C, C++, Java, Python, PHP, JavaScript and Linux For BeginnersManjunath.R -
An ideal addition to your personal elibrary. With the aid of this indispensable reference book, you may quickly gain a grasp of Python, Java, JavaScript, C, C++, CSS, Data Science, HTML, LINUX and PHP. It can be challenging to understand the programming language's distinctive advantages and charms. Many programmers who are familiar with a variety of languages frequently approach them from a constrained perspective rather than enjoying their full expressivity. Some programmers incorrectly use Programmatic features, which can later result in serious issues. The programmatic method of writing programs—the ideal approach to use programming languages—is explained in this book. This book is for all programmers, whether you are a novice or an experienced pro. Its numerous examples and well paced discussions will be especially beneficial for beginners. Those who are already familiar with programming will probably gain more from this book, of course. I want you to be prepared to use programming to make a big difference.
Linux Commands, C, C++, Java and Python Exercises For BeginnersManjunath.R -
An approachable manual for new and experienced programmers that introduces the programming languages C, C++, Java, and Python. This book is for all programmers, whether you are a novice or an experienced pro. It is designed for an introductory course that provides beginning engineering and computer science students with a solid foundation in the fundamental concepts of computer programming. It also offers valuable perspectives on important computing concepts through the development of programming and problem-solving skills using the languages C, C++, Java, and Python. The beginner will find its carefully paced exercises especially helpful. Of course, those who are already familiar with programming are likely to derive more benefits from this book. After reading this book you will find yourself at a moderate level of expertise in C, C++, Java and Python, from which you can take yourself to the next levels. The command-line interface is one of the nearly all well built trademarks of Linux. There exists an ocean of Linux commands, permitting you to do nearly everything you can be under the impression of doing on your Linux operating system. However, this, at the end of time, creates a problem: because of all of so copious commands accessible to manage, you don't comprehend where and at which point to fly and learn them, especially when you are a learner. If you are facing this problem, and are peering for a painless method to begin your command line journey in Linux, you've come to the right place-as in this book, we will launch you to a hold of well liked and helpful Linux commands. This book gives a thorough introduction to the C, C++, Java, and Python programming languages, covering everything from fundamentals to advanced concepts. It also includes various exercises that let you put what you learn to use in the real world.
In this article, you're going to find 60 terrible coding tips — and explanations of why they are terrible. It's a fun and serious piece at the same time. No matter how terrible these tips look, they aren't fiction, they are real: we saw them all in the real programming world.
Development of resource-intensive applications in Visual C++PVS-Studio
The article will familiarize application developers with tasks given them by the mass introduction of 64-bit multi-core processors symbolizing revolutionary increase of computing power available for an average user. It will also touch upon the problems of effective use of hardware resources for solving everyday applied tasks within the limits of Windows x64 operating system
Development of resource-intensive applications in Visual C++Andrey Karpov
The article will familiarize application developers with tasks given them by the mass introduction of 64-bit multi-core processors symbolizing revolutionary increase of computing power available for an average user. It will also touch upon the problems of effective use of hardware resources for solving everyday applied tasks within the limits of Windows x64 operating system
Myths about static analysis. The second myth - expert developers do not make ...PVS-Studio
While communicating with people on forums, I noticed there are a few lasting misconceptions concerning the static analysis methodology. I decided to write a series of brief articles where I want to show you the real state of things.
Static analysis as part of the development process in Unreal EnginePVS-Studio
Unreal Engine continues to develop as new code is added and previously written code is changed. What is the inevitable consequence of ongoing development in a project? The emergence of new bugs in the code that a programmer wants to identify as early as possible. One of the ways to reduce the number of errors is the use of a static analyzer like PVS-Studio. Moreover, the analyzer is not only evolving, but also constantly learning to look for new error patterns, some of which we will discuss in this article. If you care about code quality, this article is for you.
In this whitepaper, LearnItFirst founder Scott Whigham talks about how you can become a good (or better) C# programmer. This whitepaper is long - 15 pages - but it includes both a step-by-step system to follow as well as an in-depth discussion of each step.
If you follow this 13-step system (with a bonus 14th step), you can’t help but become a good C# developer!
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.
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.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
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
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
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.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
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
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
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/
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
It is difficult
1. It is difficult
Author: Andrey Karpov
Date: 05.07.2008
Abstract
The article concerns the problem of excess of program creation terms as a result of a prejudice that
programming is simple and even simpler.
Introduction
Failure to finish development of software in time is a common thing in practice of program product
creation. It is bad for all the participants from the ordinary developers who have to work in hectic rush
to the managers and clients who have to put up with lags and extra costs.
There is a great amount of reasons for this phenomenon but in this article I would like to suggest that
the main cause is a wide-spread belief that software development is simple. And I would like to
emphasize an interesting thing here. On the whole, everybody understands that program creation is
rather a laborious process but as it comes to discussion or presentations everyone pursuing his own
interests starts saying that all the difficulties are left behind and it is now when everything becomes
simple and easy when we can use a new technology / programming language / methodology. This
happens again and again for many years. But on the whole there are no improvements and terms are
exceeded as before. It is the causes and consequences of these phenomena that I would like to touch
upon in this article.
Why do I think about these questions?
I will rely not on abstract speculations but on my own experience. I am involved in creation of static
code analyzers Viva64 and VivaMP to check programs written for 64-bit systems and created with the
use of OpenMP technology. In such programs there are some error patterns which are, however, rather
easy to detect with the help of source program-code analysis. But it is not the main point. The matter is
that while promoting these tools I faced great resistance caused by a wrong idea that 64-bit
technologies and OpenMP are very simple things. The result of this confidence is the necessity to
overcome immense resistance of people who consider that there are no problems and that there cannot
be any. So to say, I turned out to be the enemy of their peace. Of course, it is the same with other
technologies but in this article I will speak upon OpenMP technologies and 64-bit programs as the most
familiar to me.
The belief that everything is simple is not unusual. You are constantly being conceived that you can
easily make your program a 64-bit one and get the increase of performance and immense memory size
at once. It is described how you can easily turn your code into a parallel one by using OpenMP. We are
surrounded by different articles containing theses of "it is enough just to recompile an application", "by
a simple arrangement of OpenMP directions" kind. And I am walking around at this wonderful feast with
posters with large titles of articles "20 issues of porting C++ code on the 64-bit platform", "32 OpenMP
traps for C++ developers". And I feel just like a mean little old man who is dissatisfied with and is
2. constantly grumbling at everything. It is this strange feeling and resistance to "simplicity adherents" that
made me ponder.
A thought appeared that perhaps it is me who is wrong. Together with others I must say that everything
is simple. And that with our tools it is even simpler. As simple as it just can be. But something is wrong.
There is a contradiction. I am familiar with the actual state of things and I am sure that certain
difficulties exist that await programmers while mastering parallel technologies and 64-bit systems with
large memory size. There is no simplicity. It is deceit. And deceit is harmful. It is harmful to me as a
person who is interested in promoting his tools. It is harmful to a manager who cannot forecast the
terms correctly. And of course it is harmful to a programmer who will experience disappointment in new
technologies and will face overtime work. That's why I decided to adhere to my opinion and I will try to
change your viewpoint too.
Where does the difficulty come from?
One can still try to convince me that creation of 64-bit programs is not so difficult, that some programs
can be recompiled without corrections for 64-bit systems and that errors can be automatically found
and corrected when different methodologies are used. Although it would be not so easy because I
possess experience proving that these processes are complicated and that one can easily make a great
mistake forecasting the terms.
But when parallel programming is viewed in the same way it is sabotage. It is a complex and too difficult
task which cannot be solved by a simple arrangement of OpenMP directions around loops and use of
some library. But it is considered to be so. A lot of developers who haven't studied the questions of
creating parallel algorithms yet are convinced that one shouldn't think about it and the problem will be
solved by OpenMP or any other technology. It seems easy and clear to parallelize any program
according to these articles. But popularization of what the reader cannot do and check himself creates
only an illusion of understanding. Perhaps it enlarges his vocabulary and mind but it also brings this
useless illusion of understanding where there is actually no understanding and knowledge.
This doesn't mean that OpenMP or any other technology is bad. They are all perfect. But you should
understand their possibilities and impossibilities. Don't hope to parallelize your existing programs easily.
Most likely, you will have to create new algorithms and convert data structures and mechanisms
working with them. If you want to get sure try yourself to parallelize the algorithm of array sorting which
everybody wrote at school and university quickly. If you fail, look at Batcher's parallel sorting. Don't find
it simple? Of course, it is not. This example is given to show what kind of difficulties you are to face
when dealing even with common algorithms used in your programs. But it is not enough. Perhaps you
use iterators in loops in your C++ programs, don't you? But do you know that when giving examples of
for parallelizing popular articles concerning OpenMP do not mention that iterators cannot be used in it?
Indexes should be simple data types (for example, int). That is when you calculate time for
reconstructing algorithms keep in mind that you may have to change data structures and methods of
working with them as well. And this all demands additional time and effort.
If everything is difficult why do they say that it is simple?
There are no bad people who want to deceive you and convince you that everything is simple. But there
are different interests leading to mutual deceit. Those who promote 64-bit hardware platforms and
operating systems are surely interested in convincing you that it is very simple to port your applications
3. on them. It is understandable. Porting on 64-bit systems is already delayed and if one says that there are
difficulties it can prolong it for several years.
Developers of parallel systems advertise different program technologies and libraries saying that
everything will become parallel nearly by itself. Those who create these libraries/technologies try to
convince programmers that their library/technology is the best because it is the simplest. And a sad
confusion occurs. The fact that a library is simple and convenient (for example, in my opinion, OpenMP
is simple and convenient) doesn't necessarily mean that creation of parallel programs is simple too!
Programmers who have read a lot of articles telling them that everything is wonderful in 64-bit and
parallel worlds but who lack enough practice deceive their managers and themselves when it comes to
terms. Managers deceive clients. However managers themselves prefer to consider everything simple as
it seems to them that it will help to save on developers. As the result there are no guilty but everybody
deceives each other.
Conclusions
While writing this text I came across a wonderful article by Dijkstra "Two views of programming" which
is very close to this article in sense. I would like to quote a short passage which sums up everything said
before in a very good way: "
It is not so much the computer manufacturers, that want to do as if they sell an easy product; it is not so
much the managers of software projects, that would like to view the programming activity as a simple
and predictable one; it is not so much our educational institutes, that would like to train their students
with predictable success.
It is the comfortable illusion of Man as elaborate automata that, like a drug, seems to have freed its
victims from the burden of responsibility. Accepting programming as a hard intellectual challenge would
place the full weight of that burden back upon their shoulders.".
But theweight of this burden mustn't become the reason to go on keeping our eyes shut. It is harmful to
everyone. We must accept the problem as it is.
The conclusion of this all must be a more critical view of the possibilities of new technologies. New
means and methods are useful but they have never been able - and perhaps never will be - to replace
the very process of software development which consists of many steps and items. First of all, it is
necessary to study and improve the development process and only after that choose new technologies
for implementing a project.
Wonderful books by Steve McConnell "How much a program project costs" and "Code Complete" are
indispensable to breaking the circular deceit of simplicity. Besides, one should pay attention to a cult
book by Frederick P. Brooks "The Mythical Man-Month: Essays on Software Engineering".
I wish you soon recovery, success in forecasting difficulty of program projects and their completion in
time!
References
1. Andrey Karpov, Evgeniy Ryzhkov. 20 issues of porting C++ code on the 64-bit platform.
http://www.viva64.com/art-1-2-599168895.html
4. 2. Alexey Kolosov, Evgeniy Ryzhkov, Andrey Karpov. 32 OpenMP traps for C++ developers.
http://www.viva64.com/art-3-2-1023467288.html
3. Edsger Dijkstra. Two views of programming. http://www.viva64.com/go.php?url=145
4. Steve McConnell. Software Estimation: Demystifying the Black Art. Redmond, Wa.: Microsoft
Press, 352 pages, 2006, ISBN: 0735605351..
5. Steve McConnell. Code Complete, 2nd Edition. Redmond, Wa.: Microsoft Press, 2004. 960
pages, ISBN: 0735619670.
6. Frederick P. Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-
Wesley, 1995, 322 pages (ISBN 0201835959).