The document discusses best practices for code quality. It recommends writing tests first to ensure code is testable, encapsulated, cohesive, and decoupled. It also recommends separating object construction from use, favoring delegation over inheritance, and refactoring code as needed. The goal is to produce code that is testable, has no redundancy, strong encapsulation and cohesion, correct coupling, and readability.
Resumen del capítulo 1 del libro de Robert C. Martin:
Clean code: a handbook of agile software craftsmanship. Upper Saddle River, NJ: Prentice Hall
Para la clase Gestión de Calidad de Software. Universidad Pontificia Bolivariana, Medellín 2016
Resumen del capítulo 1 del libro de Robert C. Martin:
Clean code: a handbook of agile software craftsmanship. Upper Saddle River, NJ: Prentice Hall
Para la clase Gestión de Calidad de Software. Universidad Pontificia Bolivariana, Medellín 2016
Validation is a documented program that provides high degree of assurance that a specific process, method or system consistently produces a result meeting pre-determined acceptance criteria.
Most developers write code to fulfil a business requirement, however the cost of project is not decided by the development but by the effort maintenance. So the emphasis should be to write quality , clean code that minimizes time spent on maintenance.
In this presentation, you will be introduced to Clean Code, Code Smells concepts and anti-patterns in programming, what are the common bad patterns of Selenium code and architectural considerations. We will also go though guidelines on how to write maintainable and reusable automation code, automation of complicated websites, PageObject vs ScreenPlay patterns, and common practices in avoiding and debugging of flaky tests.
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
People talk about ‘clean code’ and ‘best practices’ but what do they really mean? We are going to explore these topics and share with you the fundamentals of clean code and how to be a good teammate and a coder people will respect even after they read your code!
Refactoring is the art of improving the design of existing code. When we have an application that continues to produce revenue, it’s almost always better to reduce, reuse, and refactor, rather than throwing away the old code and starting anew. We’ll learn specific techniques, approaches, and code smells. We’ll see that our IDE can handle simple refactorings such as Extract Method. We’ll use our test suite to ensure that functionality did not change as a result of the refactoring. We’ll gain the habit of refactoring to make our code more expressive and therefore more easily understood after time has passed. Martin Fowler notes that the code we write today is merely tomorrow’s legacy code. Let’s make it as easy as we can on our future selves.
Validation is a documented program that provides high degree of assurance that a specific process, method or system consistently produces a result meeting pre-determined acceptance criteria.
Most developers write code to fulfil a business requirement, however the cost of project is not decided by the development but by the effort maintenance. So the emphasis should be to write quality , clean code that minimizes time spent on maintenance.
In this presentation, you will be introduced to Clean Code, Code Smells concepts and anti-patterns in programming, what are the common bad patterns of Selenium code and architectural considerations. We will also go though guidelines on how to write maintainable and reusable automation code, automation of complicated websites, PageObject vs ScreenPlay patterns, and common practices in avoiding and debugging of flaky tests.
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
People talk about ‘clean code’ and ‘best practices’ but what do they really mean? We are going to explore these topics and share with you the fundamentals of clean code and how to be a good teammate and a coder people will respect even after they read your code!
Refactoring is the art of improving the design of existing code. When we have an application that continues to produce revenue, it’s almost always better to reduce, reuse, and refactor, rather than throwing away the old code and starting anew. We’ll learn specific techniques, approaches, and code smells. We’ll see that our IDE can handle simple refactorings such as Extract Method. We’ll use our test suite to ensure that functionality did not change as a result of the refactoring. We’ll gain the habit of refactoring to make our code more expressive and therefore more easily understood after time has passed. Martin Fowler notes that the code we write today is merely tomorrow’s legacy code. Let’s make it as easy as we can on our future selves.
Handling variations in emerging designsRemus Langu
One thing that Agile Software Development manifesto promises and values more is 'Responding to change over following a plan'. Achieving this value by properly handling variations within the problem domain is one of the biggest challenges. In these slides I will share some techniques from Emergent Design that I use when dealing with changes.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
8. Separate Use
from Construction
Promotes Testability – factories making all
construction decisions can return ‘test
versions’ of objects
Promotes Encapsulation of design
Promotes Cohesion – separate users by builders
Helps keep clients Decoupled from the specific
classes they are using, since they do not have
to build them
Aids Focus – the construction of objects
are concentrated in one or more related
places
9. Encapsulate by Convention,
Reveal by Need
Ease Testing – encapsulated code needs no unit
tests
Encapsulating Construction helps
No Redundancy
Ensures the greatest level of Encapsulation
possible
Leads to Correct Coupling – that which
is hidden cannot possibly be
coupled to
11. Write Tests First
Best way to ensure Testability
Helps avoid Redundancy – redundant test reveal redundant
feature
Helps you determine what can and cannot be Encapsulated
Increases Cohesion - it is easier to write tests for classes
with one responsibility
Promotes Decoupling naturally
Tends to improve Readability – code is written with a clear
idea of what is supposed to do; refactoring
Testing all the variations of a concept, they will tend
to be Focused, because it is easier to test them
if they are
Demo
13. Code by Intention
Improves Testability - a well-defined intention is
easier to test
Eliminates Redundancies
Promotes Encapsulation - less-complex methods
encapsulate their local variables from each other
Increases Cohesion - if the intention is about one
thing
Assists Correct Coupling - the calling routine is
written only to the interface
Improves Readability - methods are well-named
14. Write Clearly
Ensure that people understand what the
method/class does
Use intention revealing names
Follow coding standards
Improves Testability – clearer code is
easier to understand and will make
clearer tests
15. Avoid Redundancy
Easier when considering Testability up front
Ensures No Redundancy, obviously
Keeps Focus from degrading
18. Pull Out Things That Vary
Promotes Encapsulation of type behind an
interface
Increases Cohesion by eliminating varying
function
Helps keep Correct Coupling – eliminates the
opportunity to couple to state or private
functions of the client class
19. Refactor Code as Needed
It is part of TDD
Often results in elimination of Redundancy of state or
behavior – ‘Pull up Method’, ‘Pull up Field’, ‘Form
Template Method’
Often strengthens Encapsulation
Improves Cohesion – ‘Extract Method’, ‘Move Method’
Improves Coupling – ‘Replace Conditional with
Polymorphism’
Tends to improve Readability – generally
simplifies and beautifies code
21. Treat Conceptually Similar
Things the Same Way
Improves Testability – test individual pieces, how
they react and how you decide which pieces
you have
Improves Encapsulation – the different
implementations of variations
Improves Correct Coupling – client is no longer
coupled to the specific types
Improves Focus – it relates the different
implementations together with their
common interface
24. Favor Delegation
over Class Inheritance
Improves Testability – separate classes can be
tested apart from the client classes
Helps eliminate Redundancy – allows for
reuse of pulled out objects
Promotes the Encapsulation of type –
variations are hidden
Increase class Cohesion
Eliminates the possibility of
inheritance Coupling
25. Other Best Practice
Do Not Do More Than You Need:
Save time to work on things you do need
Smarter to implement at the point in the future when it is
needed
Allows you to focus on those things you do need to do
If do you need it later, more of the system will be built that
should make writing the function easier
26. Conclusion
Testability could be achieved with:
Write Tests First
Code by Intention
Write Clearly
Encapsulate by Convention, Reveal by Need
Avoid Redundancy
Treat Conceptually Similar Things the Same Way
Favor Composition over Class Inheritance
Separate Use from Construction
Refactor Code as Needed
27. Conclusion
No Redundancy could be achieved with:
Write Tests First
Code by Intention
Encapsulate by Convention, Reveal by Need
Avoid Redundancy
Favor Composition over Class Inheritance
Refactor Code as Needed
28. Conclusion
Encapsulation could be achieved with:
Write Tests First
Code by Intention
Encapsulate by Convention, Reveal by Need
Pull Out Things That Vary
Treat Conceptually Similar Things the Same Way
Favor Composition over Class Inheritance
Separate Use from Construction
Refactor Code as Needed
29. Conclusion
Strong Cohesion could be achieved with:
Write Tests First
Code by Intention
Pull Out Things That Vary
Favor Composition over Class Inheritance
Separate Use from Construction
Refactor Code as Needed
30. Conclusion
Correct Coupling could be achieved with:
Write Tests First
Code by Intention
Encapsulate by Convention, Reveal by Need
Pull Out Things That Vary
Treat Conceptually Similar Things the Same Way
Favor Composition over Class Inheritance
Separate Use from Construction
Refactor Code as Needed
31. Conclusion
Readability could be achieved with:
Write Tests First
Code by Intention
Write Clearly
Refactor Code as Needed
32. Conclusion
Focus could be achieved with:
Write Tests First
Encapsulate by Convention, Reveal by Need
Avoid Redundancy
Treat Conceptually Similar Things the Same Way
Separate Use from Construction
33. Recommendation
Essential Skills for the Agile Developer: A Guide to Better
Programming and Design (29 Aug 2011),
by Alan Shalloway , Scott Bain, Ken Pugh, Amir Kolsky
Comfort Code: Another delicious presentation
http://vimeo.com/49476115