KanDDDinsky
The art of business software
18.-19. October 2018
H4 conference hotel, Berlin

Workshops: 17. October

J. B. Rainsberger

Surviving Legacy Code

Friends don't let friends remain afraid to change their code.

In this full-day workshop, we'll discuss and practise techniques for rescuing legacy code (the easy part), managing the work involved (the harder part), and navigating the people involved (the hardest part, by far). We'll spend most of the day refactoring some lovably annoying code, but we'll reserve part of the day to discuss how Theory of Constraints, Getting Things Done, and the Satir Interaction Model can help you with the legacy code work that goes beyond the code.

Bring a computer with a working programming environment, including version control. We'll provide the code for you to work on. Also bring your biggest doubts and your toughest questions. If we can't solve your problems, we'll help you figure out how to figure out how to solve them.
Book your ticket

Mathias Verraes

DDD Modelling vs Implementation

The design patterns from Domain-Driven Design are gradually entering the collective consciousness of software developers. But most of the information out there focuses on mechanistic implementation details of the patterns: how to make an Entity in [insert favourite programming language], how to use the Repository pattern with [insert new hot ORM], how to make immutable Value Objects in [insert legacy framework]...

Applied individually, these patterns are useful, but are not giving you the full potential of Domain-Driven Design.

This one day training has a different approach. We address technical concerns in implementing the DDD patterns, but the focus is on the underlying principles and heuristics for building great domain-centric object-oriented code.

* Why you’re underusing Value Objects
* Seeing objects as containers of lifecycles and consistency
* Discovering deeper domain concepts such as business rules, and lifting them into first class domain objects
* The relevance of processes, behaviour, temporal modelling... for finding better Aggregate boundaries
* How mutable software designs have distorted our perception of mutability in the domain
* Better heuristics for understanding a complex domain, and using them to drive a more focused design
* Reducing our dependance on service classes
* Designing an implementation model that not only encapsulates the domain, but communicates that design to future programmers and reduces their surface area for bugs
* ...

This workshop, aimed at programmers, is designed to give you immediate benefits when modelling and implementing the most important parts of your codebase.
Book your ticket

Kevlin Henney

Patterns for the People

Apparently, everyone knows about patterns. Except for the ones that don't. Which is basically all the people who've never come across patterns... plus most of the people who have.

Singleton is often treated as a must-know pattern. Patterns are sometimes considered to be the basis of blueprint-driven architecture. Patterns are sometimes seen as a fixed set of ideas to apply within a school of thinking and practice, such as DDD. Patterns are also seen as something you don't need to know any more because you've got frameworks, libraries and middleware by the download. Or that patterns are something you don't need to know because you're building on diagrams, legacy code or emergent design. All these and more are misconceptions about patterns.

In this workshop, let's take an alternative tour of patterns, one that is based on improving the habitability of code, communication, exploration, empiricism, reasoning, incremental development, sharing design and bridging rather than barricading different levels of expertise. Let's shift the focus from consuming patterns to recognising them, mining them and reasoning through them, with them and about them.
Book your ticket

Schedule

Thursday, 18.10.2018

08:30 - 09:30
Registration
09:30 - 10:30
Michael Feathers
The Design of Names and Spaces
10:30 - 11:00
Coffee
11:00 - 12:00
Kenny Baas
Crunching 'real-life stories' with DDD Event Storming and combining it with BDD techniques
Uberto Barbini
Functional CQRS in Kotlin
Pim Elshoff, Joop Lammerts
(Di|Con)vergent Mob Refactoring
12:00 - 13:00
Julie Lerman
Getting to DDD: Pragmatic or Principled?
Camal Cakar
Serverless x DDD
13:00 - 14:30
Lunch
14:30 - 15:30
Kevlin Henney
What Do You Mean?
Trond Hjorteland
From Capabilities to Services: Modelling for business-IT alignment
Bruno Boucard, Thomas PIERRAIN
Distill the Core Domain from Your Legacy App
15:30 - 16:30
All of you
Empty Slot
Henning Schwentner, Stefan Hofer
How Domain Storytelling reveils the secrets of your domain
16:30 - 17:30
Coffee
17:30 - 18:30
Mathias Verraes
Design Heuristics
Vladik Khononov
Bounded Contexts, Microservices, and Everything In Between
Dennis Doomen
Event Sourcing Done Right - Experiences from the Trenches
18:30 - open
Evening Reception

Friday, 19.10.2018

09:30 - 10:30
J. B. Rainsberger
Some Underrated Elements of Success for the Modern Programmer
Heather Downing
Speak To Me: Voice App Conversation Practices
Silver Oliver, anya somerville
Agile data modelling for parliament(s?): using Domain Driven Design
10:30 - 11:00
Coffee
11:00 - 12:00
Lorraine Steyn
Systems Thinking
Roman Sachse
Do-It-Yourself: Event-Sourcing
Thomas Coopman
Domain Driven Refactoring
12:00 - 13:00
Dennis Traub
How to Model Your Domain in a Serverless World
Mariusz Gil
Modeling complex processes and time with Saga/Process Manager patterns
13:00 - 14:30
Lunch
14:30 - 15:30
Uwe Friedrichsen
Timeless design in a cloud native world
Nicole Rauch
Beyond Consumer-Driven Contract Testing
Kenny Baas
Crunching 'real-life stories' with DDD Event Storming and combining it with BDD techniques
15:30 - 16:30
Nick Tune
Strategic Autonomous Design: Patterns and Heuristics
Yves Lorphelin
Tamed Eventual Consistency
16:30 - 17:00
Coffee
17:00 - 18:00
All of you
Closing session

About us

Our mission is to inspire and educate the working programmers with all degrees of experience in Domain Driven Design and to help them connect. The community in Europe is growing fast, and we provide help and guidance for those who experiment with DDD, and nurish a culture of experimenting, learning and sharing. We believe that software development is about business solutions first, and that we can gain a lot for everyone by bringing the right people together.

Your benefit

Learn how to use Domain Driven Design in your projects directly from acclaimed experts and authors. Tackle complexity in the heart of software. Together with an international cast of DDD practitioners you will strive towards better code, better architecture and better models. We aspire to bring fundamental Domain Driven Design to the hearts and minds of all Developers, Project Managers and Stakeholders.

Code of Conduct

All attendees, speakers, sponsors and volunteers at our conference are required to agree with the following code of conduct. Organisers will enforce this code throughout the event. We expect cooperation from all participants to help ensure a safe environment for everybody.

Need Help?

You have our contact details in the emails we've sent.

The Quick Version

Our conference is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops, parties, Twitter and other online media. Conference participants violating these rules may be sanctioned or expelled from the conference without a refund at the discretion of the conference organisers.

The Less Quick Version

Harassment includes offensive verbal comments related to gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, technology choices, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.

Participants asked to stop any harassing behavior are expected to comply immediately.

Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualised images, activities, or other material. Booth staff (including volunteers) should not use sexualised clothing/uniforms/costumes, or otherwise create a sexualised environment.

If a participant engages in harassing behavior, the conference organisers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund.

If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified as they'll be wearing branded clothing and/or badges.

Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance.

We expect participants to follow these rules at conference and workshop venues and conference-related social events.

Legal Disclosure

Information in accordance with section 5 TMG

KanDDDinsky UG haftungsbeschränkt
Jan Fellien (Geschäftsführender Gesellschafter), Conrad Pöpke und Marco Heimeshoff (Gesellschafter)
Berliner Str. 101
13189 Berlin

Handelsregistereintrag: HRB 197159 B
USt-IDNr: DE318608561

Contact

Telephone: 015201795290
E-Mail: contact@kandddinsky.com

Disclaimer

Accountability for content

The contents of our pages have been created with the utmost care. However, we cannot guarantee the contents' accuracy, completeness or topicality. According to statutory provisions, we are furthermore responsible for our own content on these web pages. In this context, please note that we are accordingly not obliged to monitor merely the transmitted or saved information of third parties, or investigate circumstances pointing to illegal activity. Our obligations to remove or block the use of information under generally applicable laws remain unaffected by this as per §§ 8 to 10 of the Telemedia Act (TMG).

Accountability for links

Responsibility for the content of external links (to web pages of third parties) lies solely with the operators of the linked pages. No violations were evident to us at the time of linking. Should any legal infringement become known to us, we will remove the respective link immediately.

Copyright

Our web pages and their contents are subject to German copyright law. Unless expressly permitted by law (§ 44a et seq. of the copyright law), every form of utilizing, reproducing or processing works subject to copyright protection on our web pages requires the prior consent of the respective owner of the rights. Individual reproductions of a work are allowed only for private use, so must not serve either directly or indirectly for earnings. Unauthorized utilization of copyrighted works is punishable (§ 106 of the copyright law).

Privacy Policy

We are very delighted that you have shown interest in our enterprise. Data protection is of a particularly high priority for the management of the KanDDDinsky UG. The use of the Internet pages of the KanDDDinsky UG is possible without any indication of personal data; however, if a data subject wants to use special enterprise services via our website, processing of personal data could become necessary. If the processing of personal data is necessary and there is no statutory basis for such processing, we generally obtain consent from the data subject.

The processing of personal data, such as the name, address, e-mail address, or telephone number of a data subject shall always be in line with the General Data Protection Regulation (GDPR), and in accordance with the country-specific data protection regulations applicable to the KanDDDinsky UG. By means of this data protection declaration, our enterprise would like to inform the general public of the nature, scope, and purpose of the personal data we collect, use and process. Furthermore, data subjects are informed, by means of this data protection declaration, of the rights to which they are entitled.

As the controller, the KanDDDinsky UG has implemented numerous technical and organizational measures to ensure the most complete protection of personal data processed through this website. However, Internet-based data transmissions may in principle have security gaps, so absolute protection may not be guaranteed. For this reason, every data subject is free to transfer personal data to us via alternative means, e.g. by telephone.

1. Definitions

The data protection declaration of the KanDDDinsky UG is based on the terms used by the European legislator for the adoption of the General Data Protection Regulation (GDPR). Our data protection declaration should be legible and understandable for the general public, as well as our customers and business partners. To ensure this, we would like to first explain the terminology used.

In this data protection declaration, we use, inter alia, the following terms:

2. Name and Address of the controller

Controller for the purposes of the General Data Protection Regulation (GDPR), other data protection laws applicable in Member states of the European Union and other provisions related to data protection is:

KanDDDinsky UG

Berliner Strasse 101

13189 Berlin

Deutschland

Phone: 015201795290

Email: contact@kandddinsky.com

Website: https://kandddinsky.com/

3. Collection of general data and information

The website of the KanDDDinsky UG collects a series of general data and information when a data subject or automated system calls up the website. This general data and information are stored in the server log files. Collected may be (1) the browser types and versions used, (2) the operating system used by the accessing system, (3) the website from which an accessing system reaches our website (so-called referrers), (4) the sub-websites, (5) the date and time of access to the Internet site, (6) an Internet protocol address (IP address), (7) the Internet service provider of the accessing system, and (8) any other similar data and information that may be used in the event of attacks on our information technology systems.

When using these general data and information, the KanDDDinsky UG does not draw any conclusions about the data subject. Rather, this information is needed to (1) deliver the content of our website correctly, (2) optimize the content of our website as well as its advertisement, (3) ensure the long-term viability of our information technology systems and website technology, and (4) provide law enforcement authorities with the information necessary for criminal prosecution in case of a cyber-attack. Therefore, the KanDDDinsky UG analyzes anonymously collected data and information statistically, with the aim of increasing the data protection and data security of our enterprise, and to ensure an optimal level of protection for the personal data we process. The anonymous data of the server log files are stored separately from all personal data provided by a data subject.

4. Subscription to our newsletters

On the website of the KanDDDinsky UG, users are given the opportunity to subscribe to our enterprise's newsletter. The input mask used for this purpose determines what personal data are transmitted, as well as when the newsletter is ordered from the controller.

The KanDDDinsky UG informs its customers and business partners regularly by means of a newsletter about enterprise offers. The enterprise's newsletter may only be received by the data subject if (1) the data subject has a valid e-mail address and (2) the data subject registers for the newsletter shipping. A confirmation e-mail will be sent to the e-mail address registered by a data subject for the first time for newsletter shipping, for legal reasons, in the double opt-in procedure. This confirmation e-mail is used to prove whether the owner of the e-mail address as the data subject is authorized to receive the newsletter.

During the registration for the newsletter, we also store the IP address of the computer system assigned by the Internet service provider (ISP) and used by the data subject at the time of the registration, as well as the date and time of the registration. The collection of this data is necessary in order to understand the (possible) misuse of the e-mail address of a data subject at a later date, and it therefore serves the aim of the legal protection of the controller.

The personal data collected as part of a registration for the newsletter will only be used to send our newsletter. In addition, subscribers to the newsletter may be informed by e-mail, as long as this is necessary for the operation of the newsletter service or a registration in question, as this could be the case in the event of modifications to the newsletter offer, or in the event of a change in technical circumstances. There will be no transfer of personal data collected by the newsletter service to third parties. The subscription to our newsletter may be terminated by the data subject at any time. The consent to the storage of personal data, which the data subject has given for shipping the newsletter, may be revoked at any time. For the purpose of revocation of consent, a corresponding link is found in each newsletter. It is also possible to unsubscribe from the newsletter at any time directly on the website of the controller, or to communicate this to the controller in a different way.

5. Newsletter-Tracking

The newsletter of the KanDDDinsky UG contains so-called tracking pixels. A tracking pixel is a miniature graphic embedded in such e-mails, which are sent in HTML format to enable log file recording and analysis. This allows a statistical analysis of the success or failure of online marketing campaigns. Based on the embedded tracking pixel, the KanDDDinsky UG may see if and when an e-mail was opened by a data subject, and which links in the e-mail were called up by data subjects.

Such personal data collected in the tracking pixels contained in the newsletters are stored and analyzed by the controller in order to optimize the shipping of the newsletter, as well as to adapt the content of future newsletters even better to the interests of the data subject. These personal data will not be passed on to third parties. Data subjects are at any time entitled to revoke the respective separate declaration of consent issued by means of the double-opt-in procedure. After a revocation, these personal data will be deleted by the controller. The KanDDDinsky UG automatically regards a withdrawal from the receipt of the newsletter as a revocation.

6. Routine erasure and blocking of personal data

The data controller shall process and store the personal data of the data subject only for the period necessary to achieve the purpose of storage, or as far as this is granted by the European legislator or other legislators in laws or regulations to which the controller is subject to.

If the storage purpose is not applicable, or if a storage period prescribed by the European legislator or another competent legislator expires, the personal data are routinely blocked or erased in accordance with legal requirements.

7. Rights of the data subject

8. Legal basis for the processing

Art. 6(1) lit. a GDPR serves as the legal basis for processing operations for which we obtain consent for a specific processing purpose. If the processing of personal data is necessary for the performance of a contract to which the data subject is party, as is the case, for example, when processing operations are necessary for the supply of goods or to provide any other service, the processing is based on Article 6(1) lit. b GDPR. The same applies to such processing operations which are necessary for carrying out pre-contractual measures, for example in the case of inquiries concerning our products or services. Is our company subject to a legal obligation by which processing of personal data is required, such as for the fulfillment of tax obligations, the processing is based on Art. 6(1) lit. c GDPR. In rare cases, the processing of personal data may be necessary to protect the vital interests of the data subject or of another natural person. This would be the case, for example, if a visitor were injured in our company and his name, age, health insurance data or other vital information would have to be passed on to a doctor, hospital or other third party. Then the processing would be based on Art. 6(1) lit. d GDPR. Finally, processing operations could be based on Article 6(1) lit. f GDPR. This legal basis is used for processing operations which are not covered by any of the abovementioned legal grounds, if processing is necessary for the purposes of the legitimate interests pursued by our company or by a third party, except where such interests are overridden by the interests or fundamental rights and freedoms of the data subject which require protection of personal data. Such processing operations are particularly permissible because they have been specifically mentioned by the European legislator. He considered that a legitimate interest could be assumed if the data subject is a client of the controller (Recital 47 Sentence 2 GDPR).

9. The legitimate interests pursued by the controller or by a third party

Where the processing of personal data is based on Article 6(1) lit. f GDPR our legitimate interest is to carry out our business in favor of the well-being of all our employees and the shareholders.

10. Period for which the personal data will be stored

The criteria used to determine the period of storage of personal data is the respective statutory retention period. After expiration of that period, the corresponding data is routinely deleted, as long as it is no longer necessary for the fulfillment of the contract or the initiation of a contract.

11. Provision of personal data as statutory or contractual requirement; Requirement necessary to enter into a contract; Obligation of the data subject to provide the personal data; possible consequences of failure to provide such data

We clarify that the provision of personal data is partly required by law (e.g. tax regulations) or can also result from contractual provisions (e.g. information on the contractual partner). Sometimes it may be necessary to conclude a contract that the data subject provides us with personal data, which must subsequently be processed by us. The data subject is, for example, obliged to provide us with personal data when our company signs a contract with him or her. The non-provision of the personal data would have the consequence that the contract with the data subject could not be concluded. Before personal data is provided by the data subject, the data subject must contact any employee. The employee clarifies to the data subject whether the provision of the personal data is required by law or contract or is necessary for the conclusion of the contract, whether there is an obligation to provide the personal data and the consequences of non-provision of the personal data.

12. Existence of automated decision-making

As a responsible company, we do not use automatic decision-making or profiling.

This Privacy Policy has been generated by the Privacy Policy Generator of the DGD - Your External DPO that was developed in cooperation with German Lawyers from WILDE BEUGER SOLMECKE, Cologne.