The document discusses the concept of connascence, which refers to coupling between software components where a change in one component requires changes in other components to maintain correctness. It defines 9 types of connascence based on different aspects that coupled components may rely on, such as identity, value, timing, etc. It also describes 3 axes (strength, degree, locality) for analyzing connascence issues. Examples are provided to illustrate different types of connascence.
TypeDB Academy- Getting Started with Schema DesignVaticle
In this TypeDB Academy, we start by gaining an understanding of the fundamental components of TypeDB's type system and what makes it unique. We will see how we can download, install, and run TypeDB, and learn to perform basic database operations.
We'll then explore what a schema looks like in TypeDB, starting with clarifying the motivation for schema, the conceptual schema of TypeDB, and its relationship to the Enhanced Entity-Relationship model.
Good for:
- Beginners to TypeDB and TypeQL
- Those who have been using TypeDB and want a refresher on schema and TypeQL
- Experienced database administrators and software engineers
Takeaways:
- Understanding of fundamental components of TypeDB
- How to download, install, and run TypeDB on your computer
- Be able to articulate why schema is so beneficial when using TypeDB, why we use one, and how it enables a more expressive model
- Write a TypeDB schema in TypeQL
Async Code Reviews Are Killing Your Company’s Throughput - Dragan StepanovićDragan Stepanović
Note: You can find a higher resolution slide deck here https://drive.google.com/file/d/1Umv5nfMMU_wJeGPekdBfMVbqp-BsM7ko/view?usp=sharing
Abstract:
"Never had a PR over 300 LoC that didn't look good to me".
We've all been there. The PR is so big you don't even bother commenting. It's already too late to build the quality in. You make a sad face, comment "LGTM", and click approve.
That's still the case in lots of teams but feels like after a long time the industry, on average, learned the value of the Small Batches idea from Lean applied to PRs. And that's a good thing; it's a step in the right direction.
We do a bit of coding, raise a PR and then ask for feedback. People are more likely to engage on smaller PRs. It takes them less time to review it, and they have a feeling that they can still course-correct if something goes astray. PRs go sooner out of the door, and we feel productive as a team.
But, here's the surprise.
What if I told you that teams doing small PRs (with async code reviews) actually have way lower throughput than teams doing big PRs.
"Wait, what?!"
Yes.
I got this surprising systemic insight from analyzing PRs across a bunch of very active repositories and I'll present you with the results of the study.
On the bigger PRs side of the spectrum, we tend to lose quality, while on the smaller PRs end of the spectrum we lose throughput. We're forced to make a trade-off between speed and quality.
But! There's a parallel universe of ways of working where you get to have your cake and eat it too. Where you can have both throughput and quality.
That universe is called co-creation patterns (Pair and Mob programming).
Join me on a journey where I'll show you data invalidating the assumption that two or more people sitting at the same computer will hurt our throughput and why the opposite is actually the case.
Bio:
Dragan is currently a principal engineer at HelloFresh, one of the unicorns of Berlin's thriving start-up scene.
Before HelloFresh he helped Careem/Uber build the largest loyalty program in the MENA region, drive architecture, technical strategy, and shape engineering culture.
Typically on the search for better ways of working, exploring ends of the spectrums, and helping teams and organizations try out counter-intuitive ideas that initially don't make a lot of sense, but end up as completely opposite of that.
It's been a long time since he fell in love with eXtreme Programming, Domain-Driven Design, and software as a craft (founder of Software Crafting Serbia community).
Last couple of years he enjoys endless discussions connecting the Theory of Constraints, Systems Thinking, Lean and socio-technical topics.
Traditional approaches in anti-money laundering involve simple matching algorithms and a lot of human review. However, in recent years this approach has proven to not scale well with the ever increasingly strict regulatory environment. We at Bayard Rock have had much success at applying fancier approaches, including some machine learning, to this problem. In this talk I walk you through the general problem domain and talk about some of the algorithms we use. I’ll also dip into why and how we leverage typed functional programming for rapid iteration with a small team in order to out-innovate our competitors.
Bayard Rock, LLC, is a private research and software development company with headquarters in the Empire State Building. It is a leader in the filed in the research and development of tools for improving the state of the art in anti-money laundering and fraud detection. As you might imagine, these tools rely heavily on mathematics and graph algorithms. In this talk, Richard Minerich will discuss the research activities of Bayard Rock and its approaches to build tools to find the “bad guys”. Richard Minerich is Bayard Rock’s Director of Research and Development. Rick has expertise in F#, C#, C, C++, C++/CLI,. NET (1.1, 2.0, 3.0, 3.5, 4.0, and 4.5), Object Oriented Design, Functional Design, Entity Resolution, Machine Learning, Concurrency, and Image Processing. He is interested in working on algorithmically, mathematically complex projects and remains open to explore new ideas.
Rick holds 2 patents. The first one, co-invented with a colleague, is titled “Method of Image Analysis Using Sparse Hough Transform.” The other independently held is known as “Method for Document to Template Alignment.”
Async Code Reviews Are Killing Your Company’s Throughput - [Old]Dragan Stepanović
"Never had a PR over 300 LoC that didn't look good to me".
We've all been there. The PR is so big you don't even bother commenting. It's already too late to build the quality in. You make a sad face, comment "LGTM", and click approve.
That's still the case in lots of teams but feels like after a long time the industry, on average, learned the value of the Small Batches idea from Lean applied to PRs. And that's a good thing; it's a step in the right direction.
We do a bit of coding, raise a PR and then ask for feedback. People are more likely to engage on smaller PRs. It takes them less time to review it, and they have a feeling that they can still course-correct if something goes astray. PRs go sooner out of the door, and we feel productive as a team.
But, here's the surprise.
What if I told you that teams doing small PRs (with async code reviews) actually have way lower throughput than teams doing big PRs.
"Wait, what?!"
Yes.
I got this surprising systemic insight from analyzing PRs across a bunch of very active repositories and I'll present you with the results of the study.
On the bigger PRs side of the spectrum, we tend to lose quality, while on the smaller PRs end of the spectrum we lose throughput. We're forced to make a trade-off between speed and quality.
But! There's a parallel universe of ways of working where you get to have a cake and eat it too. Where you can have both throughput and quality.
That universe is called co-creation patterns (Pair and Mob programming).
Join me on a journey where I'll show you data invalidating the assumption that two or more people sitting at the same computer will hurt our throughput and why the opposite is actually the case.
TypeDB Academy- Getting Started with Schema DesignVaticle
In this TypeDB Academy, we start by gaining an understanding of the fundamental components of TypeDB's type system and what makes it unique. We will see how we can download, install, and run TypeDB, and learn to perform basic database operations.
We'll then explore what a schema looks like in TypeDB, starting with clarifying the motivation for schema, the conceptual schema of TypeDB, and its relationship to the Enhanced Entity-Relationship model.
Good for:
- Beginners to TypeDB and TypeQL
- Those who have been using TypeDB and want a refresher on schema and TypeQL
- Experienced database administrators and software engineers
Takeaways:
- Understanding of fundamental components of TypeDB
- How to download, install, and run TypeDB on your computer
- Be able to articulate why schema is so beneficial when using TypeDB, why we use one, and how it enables a more expressive model
- Write a TypeDB schema in TypeQL
Async Code Reviews Are Killing Your Company’s Throughput - Dragan StepanovićDragan Stepanović
Note: You can find a higher resolution slide deck here https://drive.google.com/file/d/1Umv5nfMMU_wJeGPekdBfMVbqp-BsM7ko/view?usp=sharing
Abstract:
"Never had a PR over 300 LoC that didn't look good to me".
We've all been there. The PR is so big you don't even bother commenting. It's already too late to build the quality in. You make a sad face, comment "LGTM", and click approve.
That's still the case in lots of teams but feels like after a long time the industry, on average, learned the value of the Small Batches idea from Lean applied to PRs. And that's a good thing; it's a step in the right direction.
We do a bit of coding, raise a PR and then ask for feedback. People are more likely to engage on smaller PRs. It takes them less time to review it, and they have a feeling that they can still course-correct if something goes astray. PRs go sooner out of the door, and we feel productive as a team.
But, here's the surprise.
What if I told you that teams doing small PRs (with async code reviews) actually have way lower throughput than teams doing big PRs.
"Wait, what?!"
Yes.
I got this surprising systemic insight from analyzing PRs across a bunch of very active repositories and I'll present you with the results of the study.
On the bigger PRs side of the spectrum, we tend to lose quality, while on the smaller PRs end of the spectrum we lose throughput. We're forced to make a trade-off between speed and quality.
But! There's a parallel universe of ways of working where you get to have your cake and eat it too. Where you can have both throughput and quality.
That universe is called co-creation patterns (Pair and Mob programming).
Join me on a journey where I'll show you data invalidating the assumption that two or more people sitting at the same computer will hurt our throughput and why the opposite is actually the case.
Bio:
Dragan is currently a principal engineer at HelloFresh, one of the unicorns of Berlin's thriving start-up scene.
Before HelloFresh he helped Careem/Uber build the largest loyalty program in the MENA region, drive architecture, technical strategy, and shape engineering culture.
Typically on the search for better ways of working, exploring ends of the spectrums, and helping teams and organizations try out counter-intuitive ideas that initially don't make a lot of sense, but end up as completely opposite of that.
It's been a long time since he fell in love with eXtreme Programming, Domain-Driven Design, and software as a craft (founder of Software Crafting Serbia community).
Last couple of years he enjoys endless discussions connecting the Theory of Constraints, Systems Thinking, Lean and socio-technical topics.
Traditional approaches in anti-money laundering involve simple matching algorithms and a lot of human review. However, in recent years this approach has proven to not scale well with the ever increasingly strict regulatory environment. We at Bayard Rock have had much success at applying fancier approaches, including some machine learning, to this problem. In this talk I walk you through the general problem domain and talk about some of the algorithms we use. I’ll also dip into why and how we leverage typed functional programming for rapid iteration with a small team in order to out-innovate our competitors.
Bayard Rock, LLC, is a private research and software development company with headquarters in the Empire State Building. It is a leader in the filed in the research and development of tools for improving the state of the art in anti-money laundering and fraud detection. As you might imagine, these tools rely heavily on mathematics and graph algorithms. In this talk, Richard Minerich will discuss the research activities of Bayard Rock and its approaches to build tools to find the “bad guys”. Richard Minerich is Bayard Rock’s Director of Research and Development. Rick has expertise in F#, C#, C, C++, C++/CLI,. NET (1.1, 2.0, 3.0, 3.5, 4.0, and 4.5), Object Oriented Design, Functional Design, Entity Resolution, Machine Learning, Concurrency, and Image Processing. He is interested in working on algorithmically, mathematically complex projects and remains open to explore new ideas.
Rick holds 2 patents. The first one, co-invented with a colleague, is titled “Method of Image Analysis Using Sparse Hough Transform.” The other independently held is known as “Method for Document to Template Alignment.”
Async Code Reviews Are Killing Your Company’s Throughput - [Old]Dragan Stepanović
"Never had a PR over 300 LoC that didn't look good to me".
We've all been there. The PR is so big you don't even bother commenting. It's already too late to build the quality in. You make a sad face, comment "LGTM", and click approve.
That's still the case in lots of teams but feels like after a long time the industry, on average, learned the value of the Small Batches idea from Lean applied to PRs. And that's a good thing; it's a step in the right direction.
We do a bit of coding, raise a PR and then ask for feedback. People are more likely to engage on smaller PRs. It takes them less time to review it, and they have a feeling that they can still course-correct if something goes astray. PRs go sooner out of the door, and we feel productive as a team.
But, here's the surprise.
What if I told you that teams doing small PRs (with async code reviews) actually have way lower throughput than teams doing big PRs.
"Wait, what?!"
Yes.
I got this surprising systemic insight from analyzing PRs across a bunch of very active repositories and I'll present you with the results of the study.
On the bigger PRs side of the spectrum, we tend to lose quality, while on the smaller PRs end of the spectrum we lose throughput. We're forced to make a trade-off between speed and quality.
But! There's a parallel universe of ways of working where you get to have a cake and eat it too. Where you can have both throughput and quality.
That universe is called co-creation patterns (Pair and Mob programming).
Join me on a journey where I'll show you data invalidating the assumption that two or more people sitting at the same computer will hurt our throughput and why the opposite is actually the case.
Introduction to Scala with a background of how it places itself in the hybrid language domain.
The presentation will give an introduction about Imperative flaws, talks about functional approaches and then take you for a ride of Scala.
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.orgJindřich Mynarz
The presentation describes a tool for validating and previewing instances of Schema.org JobPosting described in structured data markup embedded in web pages. The validator and preview was developed to assist users of Schema.org to produce data of better quality. In this way, it tries to enhance usability of a part of Schema.org covering the domain of job postings. The paper discusses implementation of the tool and design of its validation rules based on SPARQL 1.1. Results of experimental validation of a job posting corpus harvested from the Web are presented. Among other findings, the results indicate that publishers of Schema.org JobPosting data often misunderstand precedence rules employed by markup parsers and that they ignore case-sensitivity of vocabulary names.
Powerful technique for feature generation learned from "How to Win a Data Science Competition: Learn from Top Kagglers"
python code implementation at https://github.com/Amarnathchode/Mean-encoding-implemen
HTML5, CSS, JavaScript Style guide and coding conventionsKnoldus Inc.
Coding conventions are style guidelines for any programming language. As, we are growing ourselves rapidly in learning new technology, the need for learning of the coding standards and conventions for the same language also arises.
So, here let us try to learn some coding guidelines for few frontend languages.
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...CleverDATA
Презентация Артема Просветова, data scientist CleverDATA, о технологии анализа данных на примере работы с бьюти-блогами для конференции Data Science Weekend (3-4 марта 2017).
Analytics are connecting companies with their customers – with better understanding of their interests and the products/services that they need. To date, semantic technology has been addressing data management challenges associated with analytics that must be resolved before analytics begin. Now, semantic and cognitive techniques are augmenting conventional data-driven analytics to provide more accurate results as well as new insights from the data.
This presentation will describe knowledge-based reasoning techniques to expand and accelerate insight delivery.
These are the slides from my presentation on Running R in the Database using Oracle R Enterprise. The second half of the presentation is a live demo of using the Oracle R Enterprise. Unfortunately the demo is not listed in these slides
A view on data quality in the real estate domain.
Presented at the LDQ workshop, colocated with SEMANTICS 2017 conference.
see https://2017.semantics.cc/satellite-events/linked-data-quality-assessment-and-improvement-academia-industry
for more details
Natural language holds a wealth of information like user sentiment and conversational intent. In this session, we'll demonstrate the capabilities of Amazon Comprehend, a natural language processing (NLP) service that uses machine learning to find insights and relationships in text. We'll show you how to build a VOC (Voice of the Customer) application and integrate it with other AWS services including AWS Lambda, Amazon S3, Amazon Athena, Amazon QuickSight, and Amazon Translate. We’ll also show you additional methods for NLP available through Amazon Sagemaker
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Introduction to Scala with a background of how it places itself in the hybrid language domain.
The presentation will give an introduction about Imperative flaws, talks about functional approaches and then take you for a ride of Scala.
EC-WEB: Validator and Preview for the JobPosting Data Model of Schema.orgJindřich Mynarz
The presentation describes a tool for validating and previewing instances of Schema.org JobPosting described in structured data markup embedded in web pages. The validator and preview was developed to assist users of Schema.org to produce data of better quality. In this way, it tries to enhance usability of a part of Schema.org covering the domain of job postings. The paper discusses implementation of the tool and design of its validation rules based on SPARQL 1.1. Results of experimental validation of a job posting corpus harvested from the Web are presented. Among other findings, the results indicate that publishers of Schema.org JobPosting data often misunderstand precedence rules employed by markup parsers and that they ignore case-sensitivity of vocabulary names.
Powerful technique for feature generation learned from "How to Win a Data Science Competition: Learn from Top Kagglers"
python code implementation at https://github.com/Amarnathchode/Mean-encoding-implemen
HTML5, CSS, JavaScript Style guide and coding conventionsKnoldus Inc.
Coding conventions are style guidelines for any programming language. As, we are growing ourselves rapidly in learning new technology, the need for learning of the coding standards and conventions for the same language also arises.
So, here let us try to learn some coding guidelines for few frontend languages.
Text mining of Beauty Blogs: о чем говорят женщины? (Артем Просветов, data sc...CleverDATA
Презентация Артема Просветова, data scientist CleverDATA, о технологии анализа данных на примере работы с бьюти-блогами для конференции Data Science Weekend (3-4 марта 2017).
Analytics are connecting companies with their customers – with better understanding of their interests and the products/services that they need. To date, semantic technology has been addressing data management challenges associated with analytics that must be resolved before analytics begin. Now, semantic and cognitive techniques are augmenting conventional data-driven analytics to provide more accurate results as well as new insights from the data.
This presentation will describe knowledge-based reasoning techniques to expand and accelerate insight delivery.
These are the slides from my presentation on Running R in the Database using Oracle R Enterprise. The second half of the presentation is a live demo of using the Oracle R Enterprise. Unfortunately the demo is not listed in these slides
A view on data quality in the real estate domain.
Presented at the LDQ workshop, colocated with SEMANTICS 2017 conference.
see https://2017.semantics.cc/satellite-events/linked-data-quality-assessment-and-improvement-academia-industry
for more details
Natural language holds a wealth of information like user sentiment and conversational intent. In this session, we'll demonstrate the capabilities of Amazon Comprehend, a natural language processing (NLP) service that uses machine learning to find insights and relationships in text. We'll show you how to build a VOC (Voice of the Customer) application and integrate it with other AWS services including AWS Lambda, Amazon S3, Amazon Athena, Amazon QuickSight, and Amazon Translate. We’ll also show you additional methods for NLP available through Amazon Sagemaker
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
7. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
● (1995) Meilir Page-Jones;
“In software engineering, two components are connascent
if a change in one would require the other to be modified in
order to maintain the overall correctness of the system.”
8. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
9. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
10. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Direction where to refactor to
11. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
● Connascence of Identity
● Connascence of Value
● Connascence of Timing
● Connascence of Execution Order
● Connascence of Position
● Connascence of Algorithm
● Connascence of Meaning
● Connascence of Type
● Connascence of Name
Direction where to refactor to
12. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
13. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Direction where to refactor to
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
14. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Definition
Three axis of connascence:
● Strength:
Stronger connascence are harder to discover, or
harder to refactor
● Degree:
An entity that is connascent with thousands of
other entities is likely to be a larger issue than one
that is connascent with only a few.
● Locality:
Connascent elements that are close together in a
codebase are better than ones that are far apart
Direction where to refactor to
Strength
Weak Strong
Degree
Few A lotFew A lot
Locality
Close Far apart
15. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Types of Connascences:
Identity
Value
Timing
Execution Order
-----------------
Position
Algorithm
Meaning
Type
Name
Strength Degree
Locality
16. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Types of Connascences:
Identity
Value
Timing
Execution Order
-----------------
Position
Algorithm
Meaning
Type
Name
Strength Degree
Locality
33. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
34. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
35. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
Types of connascence:
● Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
●
Connascence of Type
●
Connascence of Name
36. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
37. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
38. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
39. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
40. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
*still connascence. of value, but locality close
41. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Examples
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
Types of connascence:
●
Connascence of Identity
●
Connascence of Value
●
Connascence of Timing
●
Connascence of Execution Order
●
Connascence of Position
●
Connascence of Algorithm
●
Connascence of Meaning
● Connascence of Type
● Connascence of Name
43. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Usage
● Gives me a way to evaluate and prioritize code
review/refactor (now I don’t do fixes that are
easiest but the most risky)
● New tool to communicate (good reviews aren’t
based on personal taste but on objective metric)
● Gives new developers a
framework/compass/guidance for writing good,
clean, and maintainable code
44. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Usage
● Gives me a way to evaluate and prioritize code
review/refactor (now I don’t do fixes that are
easiest but the most risky)
● New tool to communicate (good reviews aren’t
based on personal taste but on objective metric)
● Gives new developers a
framework/compass/guidance for writing good,
clean, and maintainable code
Propose!
45. @PandaScriptCom @thadeuszlay linkedin.com/in/trung-thanh-le/ PandaScript.com thanh.le@sinnerschrader.com
Sources
● “What every Software Developer should know about
Object-Oriented Programming” by Meilir Page-Jones
● ETE 2012 - Jim Weirich - Connascence Examined:
https://www.youtube.com/watch?v=NLT7Qcn_PmI
● Codemania 2015: Josh Robb - Connascence &
Coupling:
https://www.youtube.com/watch?v=Ip2o4vbAK3s