DDD is often misinterpreted in so many ways. Many teams focus only on the tactical patterns, or even consider repositories as mere glorified DAO's and forget about all the other concepts that really matter: the focus on the business domain, modeling in code, and the concept of Bounded Contexts. In this talk for junior and senior developers alike, we'll clarify the few most important building blocks of DDD. We will also illustrate how practicing DDD actually looks like. This talk is the perfect opportunity to get started on DDD on solid grounds!
Introduced by Eric Evans in 2004 via his Blue Book, Domain Driven Design (DDD) has received tremendous positive feedbacks from many developers & communities over the years. On the other hand, we have to admit that DDD has since not been widely used in the trenches or within most of our development projects... How can we explain such failure in its diffusion? Is DDD in itself difficult or is it just the way people used to present it which makes it hard to grasp and inaccessible? Through our various (more or less successful ;-) experiences, we will try to highlight what DDD is using a simple and more accessible approach. The opportunity for us is to show you how helpful it can be for your day-to-day projects. Wouldn't be the perfect time for all of us to ease the DDD onboarding for beginners and to reboot DDD for experts?
Déjà 10 ans de Software Craft ! Comment vos pratiques ont-elles évolué durant cette décennie ? Au-delà de la dette technique dont Arnaud Lemaire avait parlé l’an passé, au-delà du Clean Code, de TDD et de BDD, 10 ans après le Craft doit se préoccuper désormais des environnements d’aujourd’hui, avec plus de distribué, des microservices, du Cloud et même (et ce n’est même pas un troll) des transformations digitales ! Mais alors, est-ce vraiment encore du Craft ? Venez juger par vous-mêmes avec Cyrille sous le soleil de Sunny Tech !
We often relate Domain-Driven Design with the content of Eric Evans' book; however even this book suggests looking outside for other patterns and inspirations: analysis patterns (Accounting, Finance), domain-oriented use of design patterns (the Flyweight pattern), established formalisms (e.g. monoids) and XP literature in particular (e.g. the patterns on the c2 wiki and OOPSLA papers).
The world has not stopped since the book either, and new ideas keep on emerging regularly. And you can share your own patterns as well.
In this session, through examples and code we'll go through some particularly important patterns which deserve to be in your tool belt. We'll also provide guidance on how best to use them (or not), at the right time and in the right context, and on how to train your colleagues on them!
DDD is often misinterpreted in so many ways. Many teams focus only on the tactical patterns, or even consider repositories as mere glorified DAO's and forget about all the other concepts that really matter: the focus on the business domain, modeling in code, and the concept of Bounded Contexts.
In this talk for junior and senior developers alike, we'll clarify the few most important building blocks of DDD. We will also illustrate how practicing DDD actually looks like. This talk is the perfect opportunity to get started on DDD on solid grounds!
As developers we are often explained the business domain in a way that is corrupted by implementation concerns or past constraints. This is harmful. To achieve better domain models, we often have to reverse-engineer. Alternatively, we can also explore the domain from its first principles, which are the main concepts or assumptions that cannot be deduced from anything else.
Reaching for first principles takes more mental energy, but is also the key to more radical innovations beyond small incremental evolutions. It also turns domain modeling into a fun puzzle to solve.
Through examples you will discover how domains can be deconstructed towards their essential first principles, in order to reconstruct sharp domain models.
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Cyrille Martraire
What if documentation was as fun as coding? Always up-to-date? And what if it could even improve your design? Reconsider how you invest in knowledge to accelerate delivery, with a touch of Domain-Driven Design.
For more, get the book on Leanpub: https://leanpub.com/livingdocumentation
Introduced by Eric Evans in 2004 via his Blue Book, Domain Driven Design (DDD) has received tremendous positive feedbacks from many developers & communities over the years. On the other hand, we have to admit that DDD has since not been widely used in the trenches or within most of our development projects... How can we explain such failure in its diffusion? Is DDD in itself difficult or is it just the way people used to present it which makes it hard to grasp and inaccessible? Through our various (more or less successful ;-) experiences, we will try to highlight what DDD is using a simple and more accessible approach. The opportunity for us is to show you how helpful it can be for your day-to-day projects. Wouldn't be the perfect time for all of us to ease the DDD onboarding for beginners and to reboot DDD for experts?
Déjà 10 ans de Software Craft ! Comment vos pratiques ont-elles évolué durant cette décennie ? Au-delà de la dette technique dont Arnaud Lemaire avait parlé l’an passé, au-delà du Clean Code, de TDD et de BDD, 10 ans après le Craft doit se préoccuper désormais des environnements d’aujourd’hui, avec plus de distribué, des microservices, du Cloud et même (et ce n’est même pas un troll) des transformations digitales ! Mais alors, est-ce vraiment encore du Craft ? Venez juger par vous-mêmes avec Cyrille sous le soleil de Sunny Tech !
We often relate Domain-Driven Design with the content of Eric Evans' book; however even this book suggests looking outside for other patterns and inspirations: analysis patterns (Accounting, Finance), domain-oriented use of design patterns (the Flyweight pattern), established formalisms (e.g. monoids) and XP literature in particular (e.g. the patterns on the c2 wiki and OOPSLA papers).
The world has not stopped since the book either, and new ideas keep on emerging regularly. And you can share your own patterns as well.
In this session, through examples and code we'll go through some particularly important patterns which deserve to be in your tool belt. We'll also provide guidance on how best to use them (or not), at the right time and in the right context, and on how to train your colleagues on them!
DDD is often misinterpreted in so many ways. Many teams focus only on the tactical patterns, or even consider repositories as mere glorified DAO's and forget about all the other concepts that really matter: the focus on the business domain, modeling in code, and the concept of Bounded Contexts.
In this talk for junior and senior developers alike, we'll clarify the few most important building blocks of DDD. We will also illustrate how practicing DDD actually looks like. This talk is the perfect opportunity to get started on DDD on solid grounds!
As developers we are often explained the business domain in a way that is corrupted by implementation concerns or past constraints. This is harmful. To achieve better domain models, we often have to reverse-engineer. Alternatively, we can also explore the domain from its first principles, which are the main concepts or assumptions that cannot be deduced from anything else.
Reaching for first principles takes more mental energy, but is also the key to more radical innovations beyond small incremental evolutions. It also turns domain modeling into a fun puzzle to solve.
Through examples you will discover how domains can be deconstructed towards their essential first principles, in order to reconstruct sharp domain models.
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Cyrille Martraire
What if documentation was as fun as coding? Always up-to-date? And what if it could even improve your design? Reconsider how you invest in knowledge to accelerate delivery, with a touch of Domain-Driven Design.
For more, get the book on Leanpub: https://leanpub.com/livingdocumentation
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao KambleDatabricks
GoDaddy powers the world’s largest cloud platform dedicated to small, independent ventures. With more than 14 million customers worldwide and more than 63 million domain names under management, GoDaddy is the place people come to name their idea, build a professional website, attract customers and manage their work. At GoDaddy, the Advanced Analytics team developed the Apache Spark-based Customer Success Dashboard to help customer and marketing teams. It is a product of the Apache Spark-based analytics and ETL pipelines to get the insights of the customer data collected from Internet, machine logs and communication like voice and text.
In this session, GoDaddy will discuss how Apache Spark is used as a distributed framework that they build their own algorithms on top of to generate features for Customer Success Dashboard recommendations for each of their 14 million customers. Learn about specific techniques they use at GoDaddy to scale, and the various pitfalls they’ve found along the way.
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
Agile practitioners can be design avoidant! DDD helps improve communication through ubiquitous language; improve thinking through mapping patterns; and ensuring design and reality match.
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...IngridBuenaventura
Reviving the art of software design
The art of software design is facing a slow and painful death. Our mental muscles needed to produce high quality code with good software design are atrophying through the lack of deliberate practice, time, and less people in the tech industry who value software design skills. It's time to get these muscles back into the mental gym!
In this talk we will explore ways to build and maintain software design skills, suggest tools and exercises to help develop this capability, and provide contrasting answers to the question of where these skills are best applied.
Speakers: Andy Marks and Pam Rucinque, Consultants at Thoughtworks
Andy, originally an itinerant teacher of programming at university, has been writing code professionally since 1996 in Melbourne, Brisbane, San Francisco, Leeds and Singapore. He joined Thoughtworks as a technical lead in 2002, and has deep experience in agile development - becoming one of those dreary functional programming evangelists you dread speaking to at parties. Andy is a frequent speaker at conferences in Australia as well as user groups in Melbourne, even though he does not understand monads… not even a little bit.
Pam is a technologist that has focused most of her career on the development of web-based software. As a consultant she has worked with many teams of different shapes and sizes in a wide range of technologies and architectures. Her main interest is in the intersection between people, systems and technology. When working on any organisation, her biggest effort goes into keeping business and tech teams aligned - it saves a lot of time and effort.
Reinventing the Transaction Script (NDC London 2020)Scott Wlaschin
The Transaction Script pattern organizes business logic as a single procedure. It has always been considered less sophisticated and flexible than a layered architecture with a rich domain model. But is that really true?
In this talk, we'll reinvent the Transaction Script using functional programming principles. We'll see that we can still do domain-driven design, and still have code which is decoupled and reusable, all while preserving the simplicity and productivity of the original one-script-per-workflow approach.
Sirius Web 101 : Create a Modeler With No CodeObeo
Learn step-by-step how to create a domain model and define your first diagrams with Sirius Web, without any line of code. It will allow you to easily create custom graphical representations that automatically represent your data in the web.
Frédéric Madiot, Obeo
Frédéric Madiot is Marketing Manager at Obeo. He has more than 25 years of experience in developing model-driven tools to industrialize the development of new applications and the modernization of existing systems.
Lilypad is a permissionless, distributed compute network (based on optimistic reproducibility) that enables internet-scale data processing, AI & ML and other arbitrary computation from blockchains, while unleashing idle processing
power and unlocking an efficient, open compute marketplace that distributes value fairly.
The rapid advancement of AI is the Zeitgeist of our modern day, reshaping industries, transforming the way we work, and revolutionising our daily lives
in ways we couldn’t have imagined just a few decades ago - and still can’t.
Computation is not just one of the core components of the web today - along with networking and storage, it is also one of the core components needed for training AI models, but has so far been a bottleneck to progress.
Distributed compute networks provide both practical and ethical solutions to the web and to AI. Practically, trustless networks are cheaper, more efficient and more accessible to consumers due to their p2p nature.
Ethically, these networks enable business models that better distribute value to contributors, including those providing compute power, data, or machine
learning models and that ensure more open & collaborative AI.
X: @Lilypad_Tech
web: lilypad.tech
slack: bit.ly/bacalhau-project-slack
Slidedeck for my session on Insider Dev Tour 2019 (Lisbon Jul 29th).
Mostly based on tools and platform support for AI workloads and the options for edge computing and cloud computing.
ML.NET, WinML, DirectML, Model Builder, Azure Cognitive Services, ...
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Cyrille Martraire
The collaboration between business people and the development teams is often distorted by implementation concerns, past habits and past constraints. This is harmful, especially if you have major ambitions. To achieve better software, developers could try to reverse-engineer from the given specifications, or you could embark into a joint exploration of the domain towards its first principles, which are the main concepts or assumptions that cannot be deduced from anything else.
Join Cyrille on this topic to find out how it can help your most challenging digital initiatives!
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao KambleDatabricks
GoDaddy powers the world’s largest cloud platform dedicated to small, independent ventures. With more than 14 million customers worldwide and more than 63 million domain names under management, GoDaddy is the place people come to name their idea, build a professional website, attract customers and manage their work. At GoDaddy, the Advanced Analytics team developed the Apache Spark-based Customer Success Dashboard to help customer and marketing teams. It is a product of the Apache Spark-based analytics and ETL pipelines to get the insights of the customer data collected from Internet, machine logs and communication like voice and text.
In this session, GoDaddy will discuss how Apache Spark is used as a distributed framework that they build their own algorithms on top of to generate features for Customer Success Dashboard recommendations for each of their 14 million customers. Learn about specific techniques they use at GoDaddy to scale, and the various pitfalls they’ve found along the way.
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
Agile practitioners can be design avoidant! DDD helps improve communication through ubiquitous language; improve thinking through mapping patterns; and ensuring design and reality match.
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...IngridBuenaventura
Reviving the art of software design
The art of software design is facing a slow and painful death. Our mental muscles needed to produce high quality code with good software design are atrophying through the lack of deliberate practice, time, and less people in the tech industry who value software design skills. It's time to get these muscles back into the mental gym!
In this talk we will explore ways to build and maintain software design skills, suggest tools and exercises to help develop this capability, and provide contrasting answers to the question of where these skills are best applied.
Speakers: Andy Marks and Pam Rucinque, Consultants at Thoughtworks
Andy, originally an itinerant teacher of programming at university, has been writing code professionally since 1996 in Melbourne, Brisbane, San Francisco, Leeds and Singapore. He joined Thoughtworks as a technical lead in 2002, and has deep experience in agile development - becoming one of those dreary functional programming evangelists you dread speaking to at parties. Andy is a frequent speaker at conferences in Australia as well as user groups in Melbourne, even though he does not understand monads… not even a little bit.
Pam is a technologist that has focused most of her career on the development of web-based software. As a consultant she has worked with many teams of different shapes and sizes in a wide range of technologies and architectures. Her main interest is in the intersection between people, systems and technology. When working on any organisation, her biggest effort goes into keeping business and tech teams aligned - it saves a lot of time and effort.
Reinventing the Transaction Script (NDC London 2020)Scott Wlaschin
The Transaction Script pattern organizes business logic as a single procedure. It has always been considered less sophisticated and flexible than a layered architecture with a rich domain model. But is that really true?
In this talk, we'll reinvent the Transaction Script using functional programming principles. We'll see that we can still do domain-driven design, and still have code which is decoupled and reusable, all while preserving the simplicity and productivity of the original one-script-per-workflow approach.
Sirius Web 101 : Create a Modeler With No CodeObeo
Learn step-by-step how to create a domain model and define your first diagrams with Sirius Web, without any line of code. It will allow you to easily create custom graphical representations that automatically represent your data in the web.
Frédéric Madiot, Obeo
Frédéric Madiot is Marketing Manager at Obeo. He has more than 25 years of experience in developing model-driven tools to industrialize the development of new applications and the modernization of existing systems.
Lilypad is a permissionless, distributed compute network (based on optimistic reproducibility) that enables internet-scale data processing, AI & ML and other arbitrary computation from blockchains, while unleashing idle processing
power and unlocking an efficient, open compute marketplace that distributes value fairly.
The rapid advancement of AI is the Zeitgeist of our modern day, reshaping industries, transforming the way we work, and revolutionising our daily lives
in ways we couldn’t have imagined just a few decades ago - and still can’t.
Computation is not just one of the core components of the web today - along with networking and storage, it is also one of the core components needed for training AI models, but has so far been a bottleneck to progress.
Distributed compute networks provide both practical and ethical solutions to the web and to AI. Practically, trustless networks are cheaper, more efficient and more accessible to consumers due to their p2p nature.
Ethically, these networks enable business models that better distribute value to contributors, including those providing compute power, data, or machine
learning models and that ensure more open & collaborative AI.
X: @Lilypad_Tech
web: lilypad.tech
slack: bit.ly/bacalhau-project-slack
Slidedeck for my session on Insider Dev Tour 2019 (Lisbon Jul 29th).
Mostly based on tools and platform support for AI workloads and the options for edge computing and cloud computing.
ML.NET, WinML, DirectML, Model Builder, Azure Cognitive Services, ...
Similar to DDD beyond the infamous repository pattern - GeeCon Prague 2018 (20)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Cyrille Martraire
The collaboration between business people and the development teams is often distorted by implementation concerns, past habits and past constraints. This is harmful, especially if you have major ambitions. To achieve better software, developers could try to reverse-engineer from the given specifications, or you could embark into a joint exploration of the domain towards its first principles, which are the main concepts or assumptions that cannot be deduced from anything else.
Join Cyrille on this topic to find out how it can help your most challenging digital initiatives!
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Cyrille Martraire
En partant d’un legacy de 150 applications qui peinait à livrer chaque trimestre, 3 ans de transformation ont permis à notre département de 150 personnes de réduire ses coûts de 30% tout en livrant de la valeur en continu. Découvrez dans ce retour d'expérience les actions entreprises et tous leurs effets inattendus.
Video disponible sur Infoq.fr : https://www.infoq.com/fr/presentations/effets-inattendus-passage-features-teams-grande-echelle
Even in an agile world, specifications often go too far and describe solutions with too much details; all these premature decisions constraint the implementation and remove opportunities. There is a remedy: refactoring the specs, even before refactoring the code.
In the TDD cycle, refactoring is the art of restructuring the code to make it simpler, without changing its behavior at runtime. A key part of refactoring is to recognize and extract duplications.
Refactoring is very useful at the code level, and it is even more powerful when applied during business analysis or functional architecture. We will show how the practice of refactoring directly "at the business domain level" can simplify the problem, and therefore the resulting implementation code, by orders of magnitude. This means much less code to write, to test and to maintain, and much less defects as a result.
We will introduce 5 patterns on how to refactor at the business-domain level, such as "Make It Systematic" and "Degenerate Case". We will also explain some limits and the required mindset.
This approach of refactoring has been used on several real-world projects and is derived in particular from DDD and from Specification by Example.
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Cyrille Martraire
Deep conversations with domain experts and careful attention to the language are central in software development and in particular in Domain-Driven Design (DDD). However it takes many years and many failures to get better at this game.
Still, over time it is possible to extract a growing set of techniques and heuristics that can boost the effectiveness of the interviews with domain experts, to learn faster and converge quickly to better models.
There are techniques and heuristics for asking better questions, listening carefully to words and other signals, and for managing credibility as a developer facing business experts.
If you think all the above is important, then these interviewing techniques will improve your skills, step up the quality of your collaboration with your domain experts, and will provide benefits for better domain models. And if you find all that boring, then perhaps you could focus your career on Java EE instead.
You have to deliver ambitious new features but your codebase is a huge mess of legacy technologies, with no test?
It is very tempting to throw it all away and rewrite everything from scratch, but is it wise when you consider the associated cost, risk and delayed time-to-market?
Through an experience report, we'll show a "Strangler Application" strategy where only carefully selected areas of legacy code are rewritten. Agile development techniques like BDD or TDD remain necessary, with some adjustments.
We'll also describe step by step the overall thinking process you can use to deal with large legacy code bases efficiently.
First presented at Agile France 2013, and in countless Brown Bag Lunches since, a best-seller!
Video (In French) here: http://www.infoq.com/fr/presentations/code-legacy
You probably can't imagine that Monoids (not monads) are so simple maths creatures that you can understand them in just a few minutes.
You probably can't imagine that Monoids (not monads) are so simple maths creatures that you can understand them in just a few minutes.
But you probably don't imagine either that they can help you craft elegant and powerful domain models that scale very well.
Through various examples, we will have a closer look at monoids used for domain modeling in a style that mixes the best of DDD and FP. Even in languages like Java or C#, this talk will influence your coding style forever!
'More entertaining and educational explanation of Monoids I've heard' - Martin Thompson, DDD exchange London 2014.
See more at http://skillsmatter.com/conferences/1880-ddd-exchange-nyc-2014#program
Domain-Driven Design (DDD) and Functional Programming (FP) have a lot of good things in common: DDD has borrowed many ideas from the FP community, and both share a common inspiration on established formalisms like maths.
Even in non functional languages like Java or C#, this combined set of practices from DDD, OO and FP helps craft simple and powerful code that reads well, that is very easy to test, that composes well and that can somehow describe itself.
We will have a closer look at some of these ideas, in the context of domain models inspired from real-world projects. From value objects and DSL to abstract algebra creatures like monoids and friends, we will show how all that translates into beautiful code that may influence your coding style!
Watch the video online: http://vimeo.com/79181633
Even in an agile world, specifications often go too far and describe solutions with too much details; all these premature decisions constraint the implementation and remove opportunities. There is a remedy: refactoring the specs, even before refactoring the code.
In the TDD cycle, refactoring is the art of restructuring the code to make it simpler, without changing its behavior at runtime. A key part of refactoring is to recognize and extract duplications.
Refactoring is very useful at the code level, and it is even more powerful when applied during business analysis or functional architecture. We will show how the practice of refactoring directly "at the business domain level" can simplify the problem, and therefore the resulting implementation code, by orders of magnitude. This means much less code to write, to test and to maintain, and much less defects as a result.
We will introduce 5 patterns on how to refactor at the business-domain level, such as "Make It Systematic" and "Degenerate Case". We will also explain some limits and the required mindset.
This approach of refactoring has been used on several real-world projects and is derived in particular from DDD and from Specification by Example.
I T.A.K.E. talk: "When DDD meets FP, good things happen"Cyrille Martraire
Domain-Driven Design (DDD) and Functional Programming (FP) have a lot of good things in common: DDD has borrowed many ideas from the FP community, and both share a common inspiration on established formalisms like maths.
For the software developer, the result is a style of code that mixes the best of DDD, OO and FP. Even in non functional languages like Java or C#, this combined set of practices helps craft simple and powerful code that reads well and that is very easy to test.
In this talk we will have a closer look at some of these ideas, in the context of domain models inspired from real-world projects. From basic FP hygiene like immutability and closure of operations to more mathematical inspirations from abstract algebra like monoids, we will show how all that translates into beautiful code.
WARNING: This may influence your coding style…
This talk was presented on the first day of I T.A.K.E. 2013 at Bucharest http://itakeunconf.com/
A software editor in finance was facing the challenge to extend substantially the capabilities of its main application, despite 20 years of legacy in multiple technologies. In this talk, Cyrille Martraire will report on how DDD has been applied to capture deep models of the domain, within bounded contexts that emerged in the course of the project, and how DDD also helped to build a strategy for dealing with the legacy code.
The video is available on Skillsmatter website: http://skillsmatter.com/podcast/design-architecture/applying-ddd-legacy-app
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Cyrille Martraire
Vous avez entendu parler de Domain-Driven Design (DDD) et vous voulez en savoir plus ?
Nous vous offrons un tour d'horizon de concepts importants de DDD et leur application en pratique, avec des retours d'un projet récent.
Vidéo de la présentation disponible : http://www.dailymotion.com/video/xq62pf_aroll-fterwork-du-11-avril-domain-driven-design_tech
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
Tim Combridge from Sensible Giraffe and Salesforce Ben presents some important tips that all developers should know when dealing with Flows in Salesforce.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
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?
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.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
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.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
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.
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.
Modern design is crucial in today's digital environment, and this is especially true for SharePoint intranets. The design of these digital hubs is critical to user engagement and productivity enhancement. They are the cornerstone of internal collaboration and interaction within enterprises.
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).
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
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.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
31. DDD Essentials
Curious about the domain
Talking the Domain Language
Focus on Core Domain
Modeling == Code
Strategic Design
(+ techniques to achieve that)
31
42. Ubiquitous Language
• Naming
•Searchable
•Easy to pronounce
•No abbreviation
• Definitions
•Shared definition
•Understand, not just a vocabulary
h#p://www.visualdicDonaryonline.com/house/structure-house/stairs.php
50. null
DDD style of code?
• No technical pollu5on
• Spring, Hibernate, logger
• javax.*
• SQL
51. [Object Calisthenics]
1. Wrap all primitives and strings
2. Use only one dot per line
3. Don’t abbreviate
4. Keep all classes small
5. Don’t use any classes with more
than two instance variables
6. Use first-class collections
7. Don’t use any getters/setters/
properties
114. Bounded Contexts
Explicitly define the context within which a model
applies. Explicitly set boundaries in terms of team
organization, usage within specific parts of the
application, and physical manifestations such as code
bases and database schemas. Keep the model strictly
consistent within these bounds, but don’t be distracted
or confused by issues outside.
115. Bounded Contexts
Explicitly define the context within which a model
applies. Explicitly set boundaries in terms of team
organization, usage within specific parts of the
application, and physical manifestations such as code
bases and database schemas. Keep the model strictly
consistent within these bounds, but don’t be distracted
or confused by issues outside.
Example
PLZ!
156. What is a book at Amazon?
•Catalog: Picture, title, authors, rating, format
(ebook or paper), category
•Recommandation: List of books often bought
together with it
•Shipping: Dimensions, weight, international
restrictions due to content
•Shopping cart: Price, discount eligible
•Customer review: List of (rating, review,
review rating)
•Book Search: title, isbn, authors
•Search Inside!: full-text content, copyright-
dealing policy
162. Team organization
•Catalog: Team 1
•Recommandation: Team 2
•Shipping: Team 3
•Shopping cart: Team 4
•Customer review: Team 5
•Book Search: Team 6
•Search Inside!: Team 7
184. WHY microservices?
INDEPENDENT Work Streams
GRANULAR Independent Deployments
Plus recent history has proven we don’t
have the DECOUPLING discipline
FAULT-isolation
188. Microservices in practice
Each microservice has its own private logical ”database”:
CREATE DATABASE microservicename;
Microservices expose API’s and consume other services
http / REST / Json
Most microservices are built on a Microservice Chassis
Spring Boot / Spring Cloud Suite
191. Production-ready Microservices
Each service exposes health checks & metrics
/health
/metrics
/info
(built-in Spring Boot Actuator)
Each service produces semlogs used by monitoring
ELK + Worker
Each service is instrumented for distributed tracing
ZIPKIN (Sleuth)
194. WHY Event-Driven
Architecture?
DISTRIBUTE data across services for fast
Eventual Consistency
TEMPORAL Decoupling between services
(reduced failure area)
Events Senders and Receivers DON’T
KNOW each other (Decoupling)
195. Event-Driven Architecture in practice
One event bus with one shared topic
RabbitMQ
Everyone Broadcasts to Everyone
Exchange type: Fanout (or Headers)
Choreography over Orchestration
No central coordinator, control is
decentralized
199. Event Sourcing: a
persistence style
(events as private schema)
Event-Driven Architecture:
an integration style
(events as published contracts)
Can change whenever I want
Can never change once used
200. Contracts are forever!
Robustness rules
• MUST_IGNORE events & fields
you don’t know
• NEVER_REMOVE an existing
field or event
• ALWAYS_ADD new fields for
changes
protobuf, avro Consumer-Driven
Contracts
201. Which language in the events?
B
ACL
B
Events
A
Events
See: DDD /Context Mapping