Refactoring Toward Deeper Insight
DDD Findings in Batch Processing, a Case Study When I was introduced to the Domain-Driven Design (DDD) approach close to ten years ago, it provided me with some of the missing pieces I needed to implement Object-Orientation in an effective way. And over the years I've been coming back to Eric Evans' very rich and deep book many times to discover something new to help me design better software - thinking tools and practical design advice, in the small and in the large. Over the years Object-Orientation has become less important to me, but DDD is still my default starting point when I am helping teams to refactor their architectures and take control over their code bases. Many teams have already made attempts to implement DDD, but very often they don't get the effects they were hoping for. It turns out that DDD is hard to get right. In a current project I have been involved in yet another effort to implement DDD on a legacy code base. And I have made some interesting findings. Batch processing scenarios opened up my eyes to some intrinsic problems with the DDD approach. Issues that have been have been nagging me over the years became very clear. And yet again I managed to gain deeper insight in the DDD approach and come up with some quite interesting ways to implement it.
Andreas Brink, factor10
The document discusses domain models and how they are represented using UML class diagrams. It explains that a domain model shows the key concepts or objects in a domain and the associations between them. It should not include software artifacts or responsibilities. Conceptual classes are identified by examining noun phrases. Descriptions classes are used to store attributes that describe other classes. Associations indicate meaningful relationships between classes that need to be preserved.
The document discusses various techniques for refactoring code based on domain-driven design principles, including protecting invariants by adding validation logic, using subclasses to represent different types of objects and encapsulating state changes, encapsulating operations within objects through methods, and applying the specification pattern to represent business rules and allow flexible querying of objects. It provides examples of refactoring customer and order domain code using these techniques, and testing the refactored code to ensure correctness is maintained.
Liquibase få kontroll på dina databasförändringarSqueed
You never develop code without version control, why do you develop your database without it? With Liquibase, database changes are stored in human XML-files and committed to the source control system. Changes are applied to the developers local databases. As changes are committed they are distributed to all other environments including all developers local databases, test databases, staging databases, and even to production databases. This presentation will introduce you to Liquibase and the topic database change management. We will also present some advanced topics based on real life experience and a few tips and tricks as well
Rikard Thulin, Squeed and Roger Nilsson, Altran
Vilka problem har man historiskt sett haft med att kompilera dynamiska språk till Java bytekod? Vad fanns för work-arounds? Vilka andra roliga saker kan man göra själv med Invokedynamic?
Även om du bara har en vag bild på vad en bytekod överhuvudtaget är och varför du skall bry dig om en ny sådan så är det här en presentation som kommer att fördjupa din förståelse av Java på riktigt låg nivå.
The document discusses refactoring code towards a domain-driven design approach. It notes that over time, as more features are added and teams grow, code becomes more complex without design. Domain-driven design is presented as a way to refactor code through techniques like defining a ubiquitous language, identifying domain models, isolating domains with bounded contexts, and expressing state changes with events. Refactoring requires prioritization and "boyscout refactoring" of cleaning up small pieces of code litter. The document advocates for seeing the benefits of refactoring without having to fully adopt every aspect of domain-driven design or drink the "kool-aid." Consistency is important when refactoring.
The document discusses refactoring tips provided by Martin Fowler. It defines refactoring as improving the internal structure of software without changing its external behavior. It provides examples of common refactoring techniques like extract method, inline method, move method, and consolidate conditional expressions. The goal of refactoring is to improve code quality by making software easier to understand and modify over time.
Warranty Outsourcing For Strategic GainsImranMasood
1) Warranty management involves many challenges across claims management, field support, and supplier recovery with issues like fraudulent claims, slow cycle times, and suboptimal utilization of resources.
2) Outsourcing warranty management can provide benefits like a 1/3 reduction in costs through process interventions across the entire warranty value chain.
3) When selecting a partner, companies should look for one that can provide a customized solution using best-in-class tools and processes, focus on the right metrics around both contractual SLAs and business outcomes, provide cross-industry benchmarks and analytics capabilities to drive improvements.
The document discusses domain models and how they are represented using UML class diagrams. It explains that a domain model shows the key concepts or objects in a domain and the associations between them. It should not include software artifacts or responsibilities. Conceptual classes are identified by examining noun phrases. Descriptions classes are used to store attributes that describe other classes. Associations indicate meaningful relationships between classes that need to be preserved.
The document discusses various techniques for refactoring code based on domain-driven design principles, including protecting invariants by adding validation logic, using subclasses to represent different types of objects and encapsulating state changes, encapsulating operations within objects through methods, and applying the specification pattern to represent business rules and allow flexible querying of objects. It provides examples of refactoring customer and order domain code using these techniques, and testing the refactored code to ensure correctness is maintained.
Liquibase få kontroll på dina databasförändringarSqueed
You never develop code without version control, why do you develop your database without it? With Liquibase, database changes are stored in human XML-files and committed to the source control system. Changes are applied to the developers local databases. As changes are committed they are distributed to all other environments including all developers local databases, test databases, staging databases, and even to production databases. This presentation will introduce you to Liquibase and the topic database change management. We will also present some advanced topics based on real life experience and a few tips and tricks as well
Rikard Thulin, Squeed and Roger Nilsson, Altran
Vilka problem har man historiskt sett haft med att kompilera dynamiska språk till Java bytekod? Vad fanns för work-arounds? Vilka andra roliga saker kan man göra själv med Invokedynamic?
Även om du bara har en vag bild på vad en bytekod överhuvudtaget är och varför du skall bry dig om en ny sådan så är det här en presentation som kommer att fördjupa din förståelse av Java på riktigt låg nivå.
The document discusses refactoring code towards a domain-driven design approach. It notes that over time, as more features are added and teams grow, code becomes more complex without design. Domain-driven design is presented as a way to refactor code through techniques like defining a ubiquitous language, identifying domain models, isolating domains with bounded contexts, and expressing state changes with events. Refactoring requires prioritization and "boyscout refactoring" of cleaning up small pieces of code litter. The document advocates for seeing the benefits of refactoring without having to fully adopt every aspect of domain-driven design or drink the "kool-aid." Consistency is important when refactoring.
The document discusses refactoring tips provided by Martin Fowler. It defines refactoring as improving the internal structure of software without changing its external behavior. It provides examples of common refactoring techniques like extract method, inline method, move method, and consolidate conditional expressions. The goal of refactoring is to improve code quality by making software easier to understand and modify over time.
Warranty Outsourcing For Strategic GainsImranMasood
1) Warranty management involves many challenges across claims management, field support, and supplier recovery with issues like fraudulent claims, slow cycle times, and suboptimal utilization of resources.
2) Outsourcing warranty management can provide benefits like a 1/3 reduction in costs through process interventions across the entire warranty value chain.
3) When selecting a partner, companies should look for one that can provide a customized solution using best-in-class tools and processes, focus on the right metrics around both contractual SLAs and business outcomes, provide cross-industry benchmarks and analytics capabilities to drive improvements.
This is a slide deck I have created for a session I did during a Microsoft Executive Meeting in Dublin. It is an excerpt of my SaaS/Multi Tenancy workshop that I do regularly at various conferences.
Fixed Income Derived Analytics Powered By BlackRock SolutionsConor Coughlan
This is an overview of the new Thomson Reuters Fixed Income Derived Analytics powered by BlackRock Solutions.
For more information visit www.prdcommunity.com
Vortrag OnCommerce zur ITmitte.de Ring Vorlesung, Master Informatik, Universi...Community ITmitte.de
Here are some suggestions to help with your project:
1. Define the key requirements and scope clearly upfront. Focus on the MVP.
2. Leverage existing standard objects like Invoice, Payment etc. before customizing.
3. The link can contain invoice number, amount etc. as parameters.
4. Use a QR code generator library/app to generate the code from the link.
5. Store the QR code as an attachment/file on Invoice.
6. Send automated emails with invoice PDF and embedded QR code on payment due date.
7. Track payments against invoices using a custom object.
8. Integrate with payment gateways for actual transaction processing later.
This document provides an outline for creating product pitch slides. It includes sections for company overview, problem, solution, need/opportunity, value proposition, target market, technology components, scenario, prototype, competitive analysis, marketing/sales, management team, financial projections, current status, and funding sought. The outline is intended to guide presenters in explaining key aspects of their company and product to potential investors.
Client Compass is a tool that provides concise client surveys and reports to help organizations better understand client perceptions and needs. It surveys clients on themes like advocacy, loyalty, and value. It also administers account surveys to measure actions and gauge performance. Client Compass then analyzes the data to provide summary reports and recommendations on improving client disposition, engagement, and outcomes. The tool aims to move clients higher in the value chain through targeted actions informed by its customized survey insights.
Denni Griffith from Executive Business Services presented on the coming of the information age in government contracting. EBS develops the ProPricer cost proposal application to help companies generate proposals more efficiently. ProPricer allows different teams to work simultaneously on proposals, ensures accurate representation of costs, and makes updates like rate changes simple. It also facilitates data sharing between contractors and agencies to improve transparency and relationships. ProPricer fits companies of all sizes and industries and provides benefits for estimators, pricing teams, auditors, and more by streamlining the entire proposal process.
This document provides an overview of a talk given by Steve on sales and leadership. Some key points discussed include:
- Defining the sales equation and key factors that influence sales like width, line, depth, and value productivity.
- Qualities of an ideal salesperson including curiosity, tenacity, diplomacy, patience, and energy.
- The structure of an ASM's job including obvious responsibilities like delivering growth and less obvious ones like leading large teams.
- The growth curve an ASM experiences moving from efficiency, to motivation, infrastructure, and ultimately strategy.
- Key moments in an ASM's career like the first JC meeting, market visit, confrontation, and more
The document provides an overview of agile software development practices compared to traditional waterfall approaches. It summarizes the author's experience transitioning from waterfall to agile development and embracing eXtreme Programming (XP) practices like test-driven development, pair programming, and continuous integration. The author then integrated XP with Scrum, the most popular agile framework. The document compares different agile methodologies and emphasizes that agile is about values and principles over prescriptive rules.
Andrew Hay - Chris Nickerson - Building Bridges - Forcing Hackers and Busine...Source Conference
This document summarizes a presentation about building bridges between hackers and business to improve security. It outlines the differing perspectives of security professionals ("the view from the trenches") and business leaders ("the view from the business") on issues like cost, scope, patching, and disclosure. Both sides are presented as having valid concerns. The presentation argues both groups must find common ground and businesses must support their security teams to effectively address challenges like compliance vs security.
A business plan helps to define concepts, evaluate the competition, analyze markets, determine risks and estimate financial potential. Business plans are required to obtain a small business loan.
We present this seminar regularly throughout the Hot Springs, Arkadelphia, and Nashville, AR areas. Visit asbtdc.ualr.edu/training/arkadelphia.asp for a list of our upcoming seminars near you.
Text or Image classification done using deep neural networks presents us with a unique way to identify each trained image/word via something known as ‘Embedding’. Embedding refers to fix sized vectors which are learnt during the training process of a neural network but it is very difficult to make sense of these random values.
The Emerald Group is an established global search and selection company focused on supplying high calibre recruitment services to the financial services industry. They provide both contingency and retained search services as well as interim solutions. The Emerald Group has experienced consultants that can fulfill even the largest, most complex recruitment briefs across Europe, Australia, Asia, and other global markets. They offer specialized recruitment services for roles in areas such as actuarial, investment, accounting, tax, underwriting, risk and compliance, IT, and more.
The document provides a framework and plan for managing content to generate leads. It outlines categories of content needed at different stages of the buyer's journey, from early research to evaluation and selection. It identifies existing and missing materials, and how to repurpose content across various channels like blogs, videos and social media. The plan emphasizes curating and sharing content through syndication and communication strategies to engage prospects throughout their journey.
1. Bizspark is a Microsoft program that provides startups with software, support, and visibility at no upfront cost to help them grow their business.
2. The objectives of Bizspark are to establish connections with local startup ecosystems, unite global entrepreneurial resources, generate deal flow, and create a new partner experience for startups.
3. Bizspark provides startups with full-featured development tools and server product licenses with no upfront costs, community and technical support from Microsoft and partners, and profile and promotion opportunities.
This document provides information about a large accounting and advisory firm:
1) The firm has over 1,700 personnel across 30 offices serving clients in all 50 US states and internationally with annual revenue of $280 million.
2) They offer a range of services for private equity firms including fund services, transaction advisory, portfolio company services, and exit strategy services.
3) Their transaction advisory services team focuses on mergers, acquisitions, capital raises and sales for middle market clients across various industries, providing due diligence and deal structuring support.
Navigating the risks in implementing Hybrid Cloud, Agile and Project Manageme...Livingstone Advisory
Ensuring the alignment between the various ‘best practice’ technology implementation methodologies supported by appropriate ongoing IT management and business engagement frameworks is key to the delivery of a robust, truly agile and cost effective IT environment. Achieving this without compromising security or exposing the organisation to greater risks is a given in the eyes of the business.
In this presentation, Rob Livingstone explores the key systemic and technical risks associated with the concurrent adoption and management of agile application development methodologies, project management, hybrid cloud, on-premise IT and mobile devices within the enterprise. He also suggests some practical approaches that CIOs, CTOs, CSOs and CFOs should be taking to successfully orchestrate this transition.
Mergers & Acquisitions security - (ISC)2 Secure Summit DACHEQS Group
It does not have an ISO standard. NIST barely mentions it. Despite hundreds of publications, no dedicated book is in sight. Enterprise Risk Management frameworks barely touch on it - if they even do. A chapter in Tipton's book dating 2007, proprietary solutions and sparse articles is all we have. In 2007 there was no Cloud yet - and that can be both a big help or a major issue in the process. Mergers & Acquisition is a matter left to Business Administration professionals, who don't like thinking about Information Security risks anyway. Information Security for Mergers & Acquisition is often an afterthought and rarely a deciding factor in due diligence exercises - but when your company acquires a new firm every quarter, you need to start thinking about something. This session will propose a simple framework and you will walk away with an actionable material you can start using tomorrow.
Learning Objectives:
- Understand information security risks and threats connected with merger and acquisition activities, which include months of often precarious IT migrations, a Cloud mess, and legacy services left exposed for months or years.
- Understand how Cloud Computing affects information security risks and threats during a merger and acquisition activities, as well as the positive opportunities they can offer.
- Why it is important that Information Security is involved in the early phases of due diligence, including during the phases in which the deal is structured and evaluated, and the acquisition model is defined.
- Walk home with a simple framework and actionable material they can start using the day after.
“Dancing with gorillas” is a term used for describing the feeling of startups when they partner with big multinationals (the gorilla). This presentation explores the gorilla’s perspective of partnering with smaller organizations and how they can be made to work
Re-engineering Technology to break barriers with BusinessXPDays
A Key technology-driven transformation - Domain Driven Design - is helping a leading US Airline to break its silos and become more efficient after the pandemic as travel is almost back to normal. Taking this as an opportunity, the airline is revamping its IT Systems based on DDD - to leverage the benefits of XP, Scrum etc. In this talk, I walk through what DDD is - with a practical step-by-step example.
In many projects, the learning curve for new project members is simply too steep. Following a high-level systems introduction (frequently laden with slews of somewhat meaningless presentation pictures), a new developer is assigned to a team and exposed to a large and unknown legacy code base.
The next ? frustrating ? phase taxes the patience of managers, colleagues, and newcomers alike: everyone wants to reduce the time before the newcomer can become productive. How can the code structure help achieve this?
This session presents some battle-proven recommendations for structuring projects and code to increase visibility and reduce the learning curve for old and new project members alike.
Lennart Jörelid, jGuru
A MetaClass in Groovy defines the behavior of any given Groovy or Java class. The document discusses MetaClasses and provides a link to the Groovy API documentation on MetaClass. The majority of the document is repetitive dates taking up space with no additional information provided.
More Related Content
Similar to Refactoring toward deeper insight java forum
This is a slide deck I have created for a session I did during a Microsoft Executive Meeting in Dublin. It is an excerpt of my SaaS/Multi Tenancy workshop that I do regularly at various conferences.
Fixed Income Derived Analytics Powered By BlackRock SolutionsConor Coughlan
This is an overview of the new Thomson Reuters Fixed Income Derived Analytics powered by BlackRock Solutions.
For more information visit www.prdcommunity.com
Vortrag OnCommerce zur ITmitte.de Ring Vorlesung, Master Informatik, Universi...Community ITmitte.de
Here are some suggestions to help with your project:
1. Define the key requirements and scope clearly upfront. Focus on the MVP.
2. Leverage existing standard objects like Invoice, Payment etc. before customizing.
3. The link can contain invoice number, amount etc. as parameters.
4. Use a QR code generator library/app to generate the code from the link.
5. Store the QR code as an attachment/file on Invoice.
6. Send automated emails with invoice PDF and embedded QR code on payment due date.
7. Track payments against invoices using a custom object.
8. Integrate with payment gateways for actual transaction processing later.
This document provides an outline for creating product pitch slides. It includes sections for company overview, problem, solution, need/opportunity, value proposition, target market, technology components, scenario, prototype, competitive analysis, marketing/sales, management team, financial projections, current status, and funding sought. The outline is intended to guide presenters in explaining key aspects of their company and product to potential investors.
Client Compass is a tool that provides concise client surveys and reports to help organizations better understand client perceptions and needs. It surveys clients on themes like advocacy, loyalty, and value. It also administers account surveys to measure actions and gauge performance. Client Compass then analyzes the data to provide summary reports and recommendations on improving client disposition, engagement, and outcomes. The tool aims to move clients higher in the value chain through targeted actions informed by its customized survey insights.
Denni Griffith from Executive Business Services presented on the coming of the information age in government contracting. EBS develops the ProPricer cost proposal application to help companies generate proposals more efficiently. ProPricer allows different teams to work simultaneously on proposals, ensures accurate representation of costs, and makes updates like rate changes simple. It also facilitates data sharing between contractors and agencies to improve transparency and relationships. ProPricer fits companies of all sizes and industries and provides benefits for estimators, pricing teams, auditors, and more by streamlining the entire proposal process.
This document provides an overview of a talk given by Steve on sales and leadership. Some key points discussed include:
- Defining the sales equation and key factors that influence sales like width, line, depth, and value productivity.
- Qualities of an ideal salesperson including curiosity, tenacity, diplomacy, patience, and energy.
- The structure of an ASM's job including obvious responsibilities like delivering growth and less obvious ones like leading large teams.
- The growth curve an ASM experiences moving from efficiency, to motivation, infrastructure, and ultimately strategy.
- Key moments in an ASM's career like the first JC meeting, market visit, confrontation, and more
The document provides an overview of agile software development practices compared to traditional waterfall approaches. It summarizes the author's experience transitioning from waterfall to agile development and embracing eXtreme Programming (XP) practices like test-driven development, pair programming, and continuous integration. The author then integrated XP with Scrum, the most popular agile framework. The document compares different agile methodologies and emphasizes that agile is about values and principles over prescriptive rules.
Andrew Hay - Chris Nickerson - Building Bridges - Forcing Hackers and Busine...Source Conference
This document summarizes a presentation about building bridges between hackers and business to improve security. It outlines the differing perspectives of security professionals ("the view from the trenches") and business leaders ("the view from the business") on issues like cost, scope, patching, and disclosure. Both sides are presented as having valid concerns. The presentation argues both groups must find common ground and businesses must support their security teams to effectively address challenges like compliance vs security.
A business plan helps to define concepts, evaluate the competition, analyze markets, determine risks and estimate financial potential. Business plans are required to obtain a small business loan.
We present this seminar regularly throughout the Hot Springs, Arkadelphia, and Nashville, AR areas. Visit asbtdc.ualr.edu/training/arkadelphia.asp for a list of our upcoming seminars near you.
Text or Image classification done using deep neural networks presents us with a unique way to identify each trained image/word via something known as ‘Embedding’. Embedding refers to fix sized vectors which are learnt during the training process of a neural network but it is very difficult to make sense of these random values.
The Emerald Group is an established global search and selection company focused on supplying high calibre recruitment services to the financial services industry. They provide both contingency and retained search services as well as interim solutions. The Emerald Group has experienced consultants that can fulfill even the largest, most complex recruitment briefs across Europe, Australia, Asia, and other global markets. They offer specialized recruitment services for roles in areas such as actuarial, investment, accounting, tax, underwriting, risk and compliance, IT, and more.
The document provides a framework and plan for managing content to generate leads. It outlines categories of content needed at different stages of the buyer's journey, from early research to evaluation and selection. It identifies existing and missing materials, and how to repurpose content across various channels like blogs, videos and social media. The plan emphasizes curating and sharing content through syndication and communication strategies to engage prospects throughout their journey.
1. Bizspark is a Microsoft program that provides startups with software, support, and visibility at no upfront cost to help them grow their business.
2. The objectives of Bizspark are to establish connections with local startup ecosystems, unite global entrepreneurial resources, generate deal flow, and create a new partner experience for startups.
3. Bizspark provides startups with full-featured development tools and server product licenses with no upfront costs, community and technical support from Microsoft and partners, and profile and promotion opportunities.
This document provides information about a large accounting and advisory firm:
1) The firm has over 1,700 personnel across 30 offices serving clients in all 50 US states and internationally with annual revenue of $280 million.
2) They offer a range of services for private equity firms including fund services, transaction advisory, portfolio company services, and exit strategy services.
3) Their transaction advisory services team focuses on mergers, acquisitions, capital raises and sales for middle market clients across various industries, providing due diligence and deal structuring support.
Navigating the risks in implementing Hybrid Cloud, Agile and Project Manageme...Livingstone Advisory
Ensuring the alignment between the various ‘best practice’ technology implementation methodologies supported by appropriate ongoing IT management and business engagement frameworks is key to the delivery of a robust, truly agile and cost effective IT environment. Achieving this without compromising security or exposing the organisation to greater risks is a given in the eyes of the business.
In this presentation, Rob Livingstone explores the key systemic and technical risks associated with the concurrent adoption and management of agile application development methodologies, project management, hybrid cloud, on-premise IT and mobile devices within the enterprise. He also suggests some practical approaches that CIOs, CTOs, CSOs and CFOs should be taking to successfully orchestrate this transition.
Mergers & Acquisitions security - (ISC)2 Secure Summit DACHEQS Group
It does not have an ISO standard. NIST barely mentions it. Despite hundreds of publications, no dedicated book is in sight. Enterprise Risk Management frameworks barely touch on it - if they even do. A chapter in Tipton's book dating 2007, proprietary solutions and sparse articles is all we have. In 2007 there was no Cloud yet - and that can be both a big help or a major issue in the process. Mergers & Acquisition is a matter left to Business Administration professionals, who don't like thinking about Information Security risks anyway. Information Security for Mergers & Acquisition is often an afterthought and rarely a deciding factor in due diligence exercises - but when your company acquires a new firm every quarter, you need to start thinking about something. This session will propose a simple framework and you will walk away with an actionable material you can start using tomorrow.
Learning Objectives:
- Understand information security risks and threats connected with merger and acquisition activities, which include months of often precarious IT migrations, a Cloud mess, and legacy services left exposed for months or years.
- Understand how Cloud Computing affects information security risks and threats during a merger and acquisition activities, as well as the positive opportunities they can offer.
- Why it is important that Information Security is involved in the early phases of due diligence, including during the phases in which the deal is structured and evaluated, and the acquisition model is defined.
- Walk home with a simple framework and actionable material they can start using the day after.
“Dancing with gorillas” is a term used for describing the feeling of startups when they partner with big multinationals (the gorilla). This presentation explores the gorilla’s perspective of partnering with smaller organizations and how they can be made to work
Re-engineering Technology to break barriers with BusinessXPDays
A Key technology-driven transformation - Domain Driven Design - is helping a leading US Airline to break its silos and become more efficient after the pandemic as travel is almost back to normal. Taking this as an opportunity, the airline is revamping its IT Systems based on DDD - to leverage the benefits of XP, Scrum etc. In this talk, I walk through what DDD is - with a practical step-by-step example.
Similar to Refactoring toward deeper insight java forum (20)
In many projects, the learning curve for new project members is simply too steep. Following a high-level systems introduction (frequently laden with slews of somewhat meaningless presentation pictures), a new developer is assigned to a team and exposed to a large and unknown legacy code base.
The next ? frustrating ? phase taxes the patience of managers, colleagues, and newcomers alike: everyone wants to reduce the time before the newcomer can become productive. How can the code structure help achieve this?
This session presents some battle-proven recommendations for structuring projects and code to increase visibility and reduce the learning curve for old and new project members alike.
Lennart Jörelid, jGuru
A MetaClass in Groovy defines the behavior of any given Groovy or Java class. The document discusses MetaClasses and provides a link to the Groovy API documentation on MetaClass. The majority of the document is repetitive dates taking up space with no additional information provided.
Out Of Memory - Analyze Your Java Heap
A short introduction on why memory usage might not be what you expect it to be and tools for going deeper. Different ways for acquiring memory snapshots and how to examine them with MAT.
Roger Lindsjö, Ericsson
Personal Kaizen - how to improve your daily work as developer
This talks is a personal view on tools, resources and techniques which can help you becoming a better developer. Hardy explains what ideas from books like "My Job Went to India" (Chad Fowler), "The Pragmatic Programmer" (Andrew Hunt) and "Pragmattic Thinking and Learning" (Andrew Hunt) mean to him and how he tries to become a better developer every day by applying some of these ideas. Becoming a better developer, however, requires also to understand our own software better. Only if we understand ourselves we are able to learn effectively and tap into otherwise dormant resources. In this context the Dreyfus model of skill acquisition is explained as well as the different operational modes of our brain (linear vs rich).
Hardy Ferentschik, Redhat
Vilka problem har man historiskt sett haft med att kompilera dynamiska språk till Java bytekod? Vad fanns för work-arounds? Vilka andra roliga saker kan man göra själv med Invokedynamic?
Även om du bara har en vag bild på vad en bytekod överhuvudtaget är och varför du skall bry dig om en ny sådan så är det här en presentation som kommer att fördjupa din förståelse av Java på riktigt låg nivå.
Java 7 har nyss släppts publikt. Vad innehåller den? Vad betyder det för dig? Vilka saker borde du titta extra på? Coin kommer inte att revolutionera din kod, men det kommer att göra den mer kompakt och bugresistent. Invokedynamic är en revolution, för de som är språkastronauter. Det som troligen är värt störst del av din tid är det nya fork/join-ramverket.
Mikael kommer även att förklara lite om vad vi gör inom Java i sverige, hur Oracles Java-organisation ser ut och vem som bestämmer vad.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Refactoring toward deeper insight java forum
1. Disclaimer!!!
.NET not Java
Work In Progress…
Refactoring Toward
Deeper Insight
DDD Findings In Batch Processing
A Case Study
Andreas Brink, factor10
2. Danica Pension
• Core financial business system.
• ASP.NET / RDBMS / Integrations
• Generations of technologies / architectures.
• Lots of financial business rules.
• Lots of Batch Processing.
• Mission: Taking Control of the Code Base
– DRY, Understandability, Testability, Automation
• DDD/DM + ORM fits well!
3. My View of the DDD Toolbox
Model Design & Impl.
Philosophy & Principles • Entity
• Ubiquitous Language • Aggregate
• Model Driven • Value Object
• Declarativity • Respository
• Distilling The Model • Service
• Specifiction
• Breaktrhough
• Side-Effect Free Functions
• … • …
Strategic Design
• Bounded Contexts
• Responsibilty Layers
• …
4. Domain Model Pattern (DM)
Basic Building Blocks Supple Design
• Entity, • Assertions
• Aggregate • Side-effect free
• Value Object Functions
• Specification • Standalone Classes
• Factory • Closure of Operations
Design Sweet-Spot
• Understanding & Communication
• Testability, Executable Specifications
But, not like the Office Object Model…
• Must scale
• Not one single file on disk
5. Implementability
Some
Layer…
Repository ORM
Service
• Object Navigation does not scale
Repositories
• DM does not scale well with composition & coupling
Services
• Problem Solved !?!?
6. Implementation Mess
Repository
Some ORM
Scenario…
Service
• Less focus on Domain Model
• Services – The Ultimate Loophole
– Touches big parts of the system – horizontally, vertically
– Side Effects
Understandability & Testing Problems
• Decentralized Flow Control & Data Access…
Global Optimization & Generic Processing hard or impossible
Performance Problems
7. Why DDD is Hard
Repository
Some ORM
Scenario…
Service
• Model Design is hard to begin with
– OO Expertise is still quite rare
• Have to be a Design Patterns / ORM / Architecture Expert
• Fail to get an Easily Consumable & Testable Model
• Same old Procedural Service Soup (+ some entities…)
8. My DDD Challenge
• Reclaiming the Domain Model
– Easy Reasoning, Consumption & Testing
• REAL Separation of Concerns
– Not just a complex web of objects and method
calls behind superficially simple interfaces
• And with Batch Processing in the mix…
IS THIS POSSIBLE??
9. Batch in the mix…
• ”ORM is not for Batch, use the right tool…”
• DDD/ORM vs Stored Procedures
• Service Chattiness Performance Problem
• Batch becomes a domain service in itself
– Business Workflow as a mini program
– Hard to decompose/compose without Service
– I want the business rules in the Domain Model…
12. Batch Observations
• High input/output entity ratio
– 11 Entity Types as Input – Often Complex
– 2 as Output (1 Create, 1 Update) – Simple
– Simple State Semantics
– Opportunities for Caching
– (Responsibility Layers Analysis…)
• Data is centered around a few central business
keys.
Potential for generalizing / streamlining the batch
processing pipeline??
16. Billing Batch – Generic Cursor Style
Master Keys Entities
Agreement Level Plan Agreement Agreement Insurance History
Category Level Advice History Premium Table Plan Category
Insurance Level Plan Insurance History … …
• Cursor Semantics
• A Set of Master Keys Drives the Cursor
• Entities Associated with Keys in Master
• Each Row Contains Entities for a Unit-Of-Work
17. Entity Level Keys
Level Keys Plan Insurance
Agreement Level = 4501 Agreement ID = 4501
Category Level = 78 Category ID = 78
Insurance Level = ”56076” ID = ”56076”
• Map of EntityLevel & Values
– Dictionary<EntityLevel, object>
• Or derived from Entity Properties
18. The Entity Level Abstraction
class AgreementLevel : EntityLevel {}
class CategoryLevel : EntityLevel {}
class InsuranceLevel : EntityLevel {}
public class PlanAgreement
{
[Level(typeof(AgreementLevel), IdentityType.Full)]
public int Id;
}
19. Entity Cursor: Master + Entities
void Initialize()
{
var cursor = EntityCursor.For(SessionFactory, MetaData);
// MASTER: IEnumerable<object[]> OR IEnumerable<TEntity>
cursor.Master = GetMyMaster();
cursor.MasterLevels(new AgreementLevel(), new InsuranceLevel());
cursor.Add(Query.For<PlanAgreement>());
// ADD MORE ENTITIES TO THE CURSOR...
while (cursor.MoveNext()) {
var currentPlanAgreement = cursor.Get<PlanAgreement>();
// PROCESS EACH ROW IN THE CURSOR...
}
}
20. IoC Style + Syntactic Sugar
class MyBatch : BaseBatch
{
PlanAgreement planAgreement;
EntityLevel[] Levels() { return ... }
object[] Master() { return ... }
void Initialize() {
// Query Defintions that are not simple
// Query.For<MyEntity>()
Add<PlanAgreement>()
.Where(pa => pa.Foo != null);
}
void ProcessRow() {
var foo = this.planAgreement.Foo ...
// PROCESS THE ROW...
}
}
22. Row Processing Chunked Data Fetch
Master Keys Agreement Insurance
Key 1: Agreement Id ChunkSize: 2 ChunkSize: 2
Key 2: Insurance No
(1, “InNo-1") Agreement(1) Insurance(1, “InNo-1")
(1, “InNo-2") -||- Insurance(1, “InNo-2")
(1, “InNo-3") -||-
(2, “InNo-4") Agreement(2)
Query<Insurance>()
(2, “InNo-5") -||- .Where ...
(3, “InNo-6")
... Query<Agreement>()
(n, “InNo-n") .Where(a => a.Id)
.IsIn(1, 2)
• Entities are fetched in Chunks
• Multiple chunk queries executed in one DB round-trip.
• NHibernate MultiCriteria (or Futures).
23. Row Processing Indexing
Master Keys Agreement Insurance
Key 1: Agreement ChunkSize: 2 ChunkSize: 2
Key 2: Insurance
(1, “InNo-1") Agreement(1) Insurance(1, “InNo-1")
(1, “InNo-2") Agreement(2) Insurance(1, “InNo-2")
(1, “InNo-3") Insurance(1, “InNo-3")
(2, “InNo-4") Insurance(2, “InNo-4")
(2, “InNo-5") Insurance(2, “InNo-5")
(3, “InNo-6") Agreement(3) Insurance(3, “InNo-6")
... ...
(n, “InNo-n")
• Each entity is indexed with the identifying level key(s).
• Entities in chunks synced with key for current row as the
cursor proceeds forward.
24. Entity Grouping
class InsuranceHistory : GroupingEntity<Insurance>
{
static readonly Grouping Grouping = Grouping.For<Insurance>()
.By(i => i.AgreementId)
.By(i => i.InsuranceNumber);
public InsuranceHistory(IList<Insurance> values) { ... }
}
Cursor.Add<PlanInsuranceHistory>();
Cursor.Add<PlanInsuranceHistory, PlanInsurance>()
.Where(...); // OK to override filter??
• Groups as a 1st class modeling concept
• Enriching the Domain Model
• “Virtual Aggregate Root” – Model Integrity
• Declarative expression (By, Where, Load)
25. Complex Grouping – PremiumTable
Row
10-22 23-30 31-45 Interval
0-20 100 120 135
Value
20-40 110 130 150
40-65 130 160 190
Column
Interval
• Rich Model Abstraction
• Complex data structure with lookup semantics
• No natural aggregate root
• Not cacheable in NHibernate session
• Fits well as a GroupingEntity
26. Querying
Conceptual API:
Cursor.Add(Query entityProvider)
Query.For<PlanInsurance>()
.Where(insurance => insurance.IsActive)
.Load(insurance => insurance.Category)
Query.For<AdviceHistory>()
Query.For(PremiumTable.ByAgreement)
.IndexBy(table => table.TableId)
• Filter per Entity – Cursor “Joins” using Shared Level Keys
• ORM-semantics: Where, Load
• Grouping Entity has query like qualities
• Level Queries are statically defined query using Entity Levels
Keys to construct underlying ORM query (yes, coupling)
27. Versioning
public class PlanInsurance
{
[Level(typeof(AgreementLevel), IdentityType.Partial)]
public int AgreementId;
[Level(typeof(InsuranceLevel), IdentityType.Partial)]
public string InsuranceNumber;
[VersionLevel(typeof(PlanInsurance), IdentityType.Partial)]
public int Version;
}
• Core to many business domains
• Has its own set of semantics
• Common in Groups – Latest<Insurance> vs InsuranceHistory
• Implemented in different ways in the DB
• Expressed declaratively
• Uniform Query Semantics
28. What About The Services?
void ProcessRow()
{
...
var premiumService = new PremiumService
{
PlanAgreement = Cursor.Get<PlanAgreement>(),
PlanInsurance = Cursor.Get<PlanInsurance>(),
Insurance = Cursor.Get<Insurance>(),
Insured = Cursor.Get<Person>(),
PriceBaseAmountTable = Cursor.Get<PriceBaseAmountTable>(),
PremiumTable = Cursor.Get<PremiumTable>(),
RiskTable = Cursor.Get<RiskTable>()
};
var premium = premiumService.CalculatePremium(advicePeriod);
...
}
• Service has pure calculation responsibility
• Dependencies are injected by client
• Coupling…? Boilerplate Smell…?
29. Conclusions
• Data Access Abstraction with Power & Ease of Use
• Declarative & Composable Entity Pipeline
• Minimizes DB Round-trips; Favors Eager Loading
• Repositories Become Redundant
• No More Unconstrained Services – “Calculators” / …???
• Richer Domain Model – Less Supporting Objects, More Domain
Related Objects
• DDD/ORM + Legacy DB == True
• Composite DB Key Thinking Essential to the Solution
• Patching the DB Model with Entity Level Abstraction…
• What’s Next? – Lots of Low Hanging Fruit…
TOWARDS AN EXECUTABLE ARCHITECTURE…???
30. What’s Next? – Entity Injection
Cursor.Add<PremiumCalculator>();
void ProcessRow()
{
...
var calculator = Get<PremiumCalculator>();
var premium = calculator.Calculate(advicePeriod);
...
}
• Cursor can inject entity dependencies automatically
• Calculators dependencies can be inferred and added
to cursor automatically
• ”Calculator” define Cursor Entities Implicitly
31. What’s Next? – Stateful Calculators?
class PremiumCalculator class PremiumCalculation
{ {
... ...
double CalculatePremium(...) {} double Premium;
... ...
} }
• What if we treated a calculation as a stateful object?
• Calculations become data flows through the system
• Stateful Objects as the Uniform Expression – Simplifies
declarative programming
• Captures Multiple / Intermediate Calculation Results
• Can be bound to a UI
• Additional state in the cursor – UI could add presentation
model/wrapper to the cursor
32. What’s Next? – Entity Pipeline
class BillingCalculation : EntityPipeline
{
void Initialize() {
Add<PlanAgreement>();
...
}
}
var monthlyBatch = new BillingCalculation();
monthlyBatch.Master = GetMasterForMonthlyBatch();
monthlyBatch.Persist<AdviceCalculation>(ac => ac.Advice).BatchSize(20);
monthlyBatch.Execute();
var singleInstance = new BillingCalculation();
singleInstance.Master = new object[]{ 24, "InNo-1"};
singleInstance.Persist<AdviceCalculation>(ac => ac.Advice);
singleInstance.Execute();
var nextUIPage = new BillingCalculation();
nextUIPage.Add<MyUIModel>();
nextUIPage.Master = GetMasterForNextPage();
myGrid.DataSource = nextUIPage.Select(cursor => cursor.Get<MyUIModel>())
33. What’s Next? – New Data Providers
• File Processing for Data Imports
– Prototyped batch framework
• Document Based Persistence
– Premium Table for example
• Hybrid Persistence
– Serialized object graphs in SQLServer
• SOA Integrations
– Loosely Coupled Bounded Contexts
• Parallel data fetch
– Multiple DBs / Data Services
34. What’s Next? – Business Events
• Entity Processing Pipeline seems to be a good
environment for triggering and/or handling
business events based on persistence events.
• Poor man’s Business Events!?!?
35. What’s Next? – Greenfield
• Search the Core Domain/Application Semantics
– Built-in Versioning from the start e.g.
– Semantic Storage…
• Streamline
– Uniform Expression
– Semantics
– Patterns
• Be Opinionted
– Constraints are Liberating
• Executable Architecture