Most Ms are stale and tasteless - and that although they are probably the most important ingredient of a tasty MVC implementation. This session is about the underestimated role of the M and how to create meaningful and clean Domain Models using Domain-Driven Design (a practical approach for creating clean apps for complex domains, independent from a specific technology). Bring your own apron.
The secret recipe of delicious content promotion - InOrbit 2016AlexandraTachalova
The most commonly-repeated mistake in content marketing is a lack of focus on obtaining a sufficient number of shares and links. The majority of blogs are struggling with getting links and shares; sometimes, even market leaders are failing to get sufficient numbers. My speech will give an easy recipe for how to reach more shares and links; this knowledge was gained by running multiple tests and performing significant research, and has been proven multiple times.
OOP helps us creating a clearly laid out and intuitive model of the reality by means of objects. However, concerns like security, logging or transactions need to be implemented virtually anywhere, resulting in scattered error-prone code. Aspect-Oriented Programming separates these cross-cutting concerns from the rest of the code and lets you handle them in a well-known, central location.
OOP helps us creating a clearly laid out and intuitive model of the reality by means of objects. However, concerns like security, logging or transactions need to be implemented virtually anywhere, resulting in scattered error-prone code. Aspect-Oriented Programming separates these cross-cutting concerns from the rest of the code and lets you handle them in a well-known, central location.
I Know What Youll Do Next Summer - The Skills You Will Be Learning as a Domi...Grégory Engels
HTML5, CSS3, OpenSocial, OAuth, this are all new technologies that will be in the tool box of each Domino Developer. HTML5 was mentioned in every second slide during the App-Dev Keynote at the 2010 Lotusphere in Orlando. Reason enough to look at the buzzwords and start gathering experiences with this upcoming new technologies today.
We also will take a closer look at what was announced as “Project Vulcan”
The secret recipe of delicious content promotion - InOrbit 2016AlexandraTachalova
The most commonly-repeated mistake in content marketing is a lack of focus on obtaining a sufficient number of shares and links. The majority of blogs are struggling with getting links and shares; sometimes, even market leaders are failing to get sufficient numbers. My speech will give an easy recipe for how to reach more shares and links; this knowledge was gained by running multiple tests and performing significant research, and has been proven multiple times.
OOP helps us creating a clearly laid out and intuitive model of the reality by means of objects. However, concerns like security, logging or transactions need to be implemented virtually anywhere, resulting in scattered error-prone code. Aspect-Oriented Programming separates these cross-cutting concerns from the rest of the code and lets you handle them in a well-known, central location.
OOP helps us creating a clearly laid out and intuitive model of the reality by means of objects. However, concerns like security, logging or transactions need to be implemented virtually anywhere, resulting in scattered error-prone code. Aspect-Oriented Programming separates these cross-cutting concerns from the rest of the code and lets you handle them in a well-known, central location.
I Know What Youll Do Next Summer - The Skills You Will Be Learning as a Domi...Grégory Engels
HTML5, CSS3, OpenSocial, OAuth, this are all new technologies that will be in the tool box of each Domino Developer. HTML5 was mentioned in every second slide during the App-Dev Keynote at the 2010 Lotusphere in Orlando. Reason enough to look at the buzzwords and start gathering experiences with this upcoming new technologies today.
We also will take a closer look at what was announced as “Project Vulcan”
Realizzare un Virtual Assistant con Bot Framework Azure e UnityMarco Parenzan
When we talk about (chat) bots, we think of a bot with which to chat through texts entered with a keyboard. Between typos, buttons and AdaptiveCards, we tend to lose sight of the true essence of a Conversational Agent: conversing through a dialogue, perhaps through the voice. The maximum value of a bot is expressed when using the Azure Cognitive services for Speech to Text and Text to Speech. We will understand how to develop a bot, the use of predefined entries and multilingual support. And what are the consequences in defining a conversation.
And then we'll see how to give the bot "physicality". Through the use of Unity, we will create a scene with an Avatar modeled in 3D that synchronizes with the conversation, giving us the feeling of talking to us like a real person. The whole in the context of an enterprise scenario.
CCI2019 - Governance di una Conversational AIwalk2talk srl
E così in azienda è arrivato il chatbot!
Un altro problema, mi pare, per il comparto IT. Vediamo di cosa è composto un chatbot , quali sono i servizi coinvolti e come questo impatti nel quotidiano di un reparto IT.
By Marco Parenzan
Another problem, I think, for the IT sector. Let's see what a chatbot is made of, what services are involved and how this impacts in the daily life of an IT department.
Stream SQL eventflow visual programming for real programmers presentationstreambase
Richard Tibbetts, CTO, StreamBase Systems.
StreamSQL EventFlow is one of the most popular languages for Complex Event Processing (CEP), a data management paradigm for real-time applications. Based on a stream-relational data model common to other CEP languages, EventFlow is unique in that it is a visual language. This talk will focus on the design of visual representations for key features including event dispatch, modularity, data parallelism, polymorphism, and dependency injection, and on the co-development of an Eclipse-based IDE along with a new programming language. StreamSQL EventFlow is the primary programming language for the StreamBase Event Processing Platform.
Complex Event Processing platforms are used to process large volumes of event-oriented data in real-time, often in latency-critical applications such as securities trading. Combining clustering, messaging, queuing, data storage, and application logic into one system minimizes latency and gives the programmer control over all aspects of the application.
StreamSQL EventFlow is an executable visual language for building CEP applications, unlike visual environments designed for non-developers, or architecture-focused modeling tools. The talk will cover experiences overcoming prejudice against visual programming languages, and how critical development tools are to that process. We will also discuss some details of the implementation including the compiler, a visual debugger, and diff/merge functionality.
Neos Content Repository – Git for contentRobert Lemke
The core team of the Open Source CMS Neos has been working on a new content repository for the last 8 years. What took us long? The new CR is event-sourced, with sophisticated projections and a thoroughly designed PHP API, something which has not been done before, not even outside the PHP ecosystem. This content repository allows you to work with content similar to managing Code with Git – branches, versioning, and multi-language with fallbacks included. There's a big range of applications for the Neos CR and since it is available as a standalone component, you can use it in any Composer-based project. We'll guide you through the concepts, architecture, and API of the Neos CR, enough for you to start with your own experiments.
A General Purpose Docker Image for PHPRobert Lemke
There are many reasons to use Docker for development, but if you don't have a PHP image which is tailored to dev and production, your daily work can become a big hassle.
In this session we'll go through what it takes to create a flexible Docker image providing PHP which fits both, development and production environments. We'll look at various aspects, like the operating system, PHP extensions, configuration, debugging, speed, security and the image size.
Realizzare un Virtual Assistant con Bot Framework Azure e UnityMarco Parenzan
When we talk about (chat) bots, we think of a bot with which to chat through texts entered with a keyboard. Between typos, buttons and AdaptiveCards, we tend to lose sight of the true essence of a Conversational Agent: conversing through a dialogue, perhaps through the voice. The maximum value of a bot is expressed when using the Azure Cognitive services for Speech to Text and Text to Speech. We will understand how to develop a bot, the use of predefined entries and multilingual support. And what are the consequences in defining a conversation.
And then we'll see how to give the bot "physicality". Through the use of Unity, we will create a scene with an Avatar modeled in 3D that synchronizes with the conversation, giving us the feeling of talking to us like a real person. The whole in the context of an enterprise scenario.
CCI2019 - Governance di una Conversational AIwalk2talk srl
E così in azienda è arrivato il chatbot!
Un altro problema, mi pare, per il comparto IT. Vediamo di cosa è composto un chatbot , quali sono i servizi coinvolti e come questo impatti nel quotidiano di un reparto IT.
By Marco Parenzan
Another problem, I think, for the IT sector. Let's see what a chatbot is made of, what services are involved and how this impacts in the daily life of an IT department.
Stream SQL eventflow visual programming for real programmers presentationstreambase
Richard Tibbetts, CTO, StreamBase Systems.
StreamSQL EventFlow is one of the most popular languages for Complex Event Processing (CEP), a data management paradigm for real-time applications. Based on a stream-relational data model common to other CEP languages, EventFlow is unique in that it is a visual language. This talk will focus on the design of visual representations for key features including event dispatch, modularity, data parallelism, polymorphism, and dependency injection, and on the co-development of an Eclipse-based IDE along with a new programming language. StreamSQL EventFlow is the primary programming language for the StreamBase Event Processing Platform.
Complex Event Processing platforms are used to process large volumes of event-oriented data in real-time, often in latency-critical applications such as securities trading. Combining clustering, messaging, queuing, data storage, and application logic into one system minimizes latency and gives the programmer control over all aspects of the application.
StreamSQL EventFlow is an executable visual language for building CEP applications, unlike visual environments designed for non-developers, or architecture-focused modeling tools. The talk will cover experiences overcoming prejudice against visual programming languages, and how critical development tools are to that process. We will also discuss some details of the implementation including the compiler, a visual debugger, and diff/merge functionality.
Neos Content Repository – Git for contentRobert Lemke
The core team of the Open Source CMS Neos has been working on a new content repository for the last 8 years. What took us long? The new CR is event-sourced, with sophisticated projections and a thoroughly designed PHP API, something which has not been done before, not even outside the PHP ecosystem. This content repository allows you to work with content similar to managing Code with Git – branches, versioning, and multi-language with fallbacks included. There's a big range of applications for the Neos CR and since it is available as a standalone component, you can use it in any Composer-based project. We'll guide you through the concepts, architecture, and API of the Neos CR, enough for you to start with your own experiments.
A General Purpose Docker Image for PHPRobert Lemke
There are many reasons to use Docker for development, but if you don't have a PHP image which is tailored to dev and production, your daily work can become a big hassle.
In this session we'll go through what it takes to create a flexible Docker image providing PHP which fits both, development and production environments. We'll look at various aspects, like the operating system, PHP extensions, configuration, debugging, speed, security and the image size.
Scaleable PHP Applications in KubernetesRobert Lemke
Kubernetes is also called the "distributed Linux of the cloud" – which implies that it provides fundamental infrastructure, which can solve a lot of challenges. Let’s see how PHP applications fit into this picture. In this presentation, we are going to explore when Kubernetes is a good fit for operating your PHP application and how it can be done in practice. We’ll look at the whole lifecycle: how to build your application, create or choose the right Docker images, deploy and scale, and how to deal with performance and monitoring. At the end you will have a good understanding about all the different stages and building blocks for running a PHP application with Kubernetes in production.
Flownative Beach ist ein Platform as a Service für Neos CMS und Flow basierte Projekte. In diesem Vortrag von dem Hamburger Neos Meetup erfährst du mehr über die technischen Hintergründe.
Infrastructure and applications running in Kubernetes clusters are based on a plethora of "resources". You can manually create and maintain deployments, pods, services and ingress resources, but may soon loose track of your configuration. Fortunately, there’s an alternative way to manage your Kubernetes cluster – the GitOps way.
GitOps is a way of managing your cluster so that the whole system is described declaratively and version controlled. An automated process makes sure that the resources in the cluster match the desired state defined your Git repository. Flux (https://fluxcd.io) is an Open Source solution which automates this task.
Given that you have some basic idea about Kubernetes (or don’t mind shrugging at a few nitty-gritty details during the talk), I’ll show you, how you can control applications and infrastructure in Kubernetes using Flux and Helm.
In this home-recorded session for the Neos Online Conference 2020 I explain what OpenID Connect (OIDC) is all about and demonstrate how you can configure Neos to use an identity provider like Auth0 as a central login.
A practical introduction to Kubernetes (IPC 2018)Robert Lemke
Kubernetes is an open source system for automating deployment, operations, and scaling of containerized applications. It currently is the most promising option you have for deploying your container-based applications to the Internet. In this session you’ll get an understanding of the concepts of Kubernetes and the tooling you need to launch and maintain a PHP application in your own Kubernetes cluster. We will also take a look at topics like load-balancing, (auto-)scaling, persistent storage and typical fun killers which might spoil your Kubernetes party.
A practical introduction to Event Sourcing and CQRSRobert Lemke
Event Sourcing is supposed to be a great thing: silver bullet; at least. But only if your business case requires it. And if you event-source, you of course need CQRS. Unless you don't. After all, if it's business critical, you really want to use DDD.
Enough of the theory? How about some practical introduction to the world of commands, aggregates, events, projectors and process managers? After this session you'll surely have a better idea of what all of this is about.
https://www.youtube.com/watch?v=cUXi9fUqWQ0
These are the slides of the Neos Conference 2017 keynote in Hamburg. A full recording of this talk is available at Youtube: https://youtu.be/8SXfms-qoKE?t=18m45s
IPC16: A Practical Introduction to Kubernetes Robert Lemke
Kubernetes is an open source system for automating deployment, operations, and scaling of containerized applications. It’s one of the promising options you have for deploying your container-based applications to the Internet. In this session we’ll take a look at the concepts of Kubernetes and then go trough all steps necessary to launch and maintain a real-world PHP application in your own Kubernetes cluster.
IPC 2016: Content Strategy for DevelopersRobert Lemke
Long gone are the times where we could get away with creating websites which were pixel-perfect replications of a printed brochure. But publishing to multiple channels, multiple devices, multiple audiences not only creates challenges on the editorial side: how should developers approach content and create content types which support the purpose of the website? What’s a modern approach to CMS-based projects?
You’ve heard about Docker, maybe you use it already as a development environment for virtualising your project on your local machine. But running your application or website with Docker in production is a whole different deal. In this session you’ll get a deeper insight into working with Docker in practice. Starting with the 101 of concepts we’ll go through a practical scenario for hosting, automatically deploying and monitoring an application in production with recommendations for a variety of tools and services.
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)Robert Lemke
Starting an Open Source Project is way more than sharing the code you produced. It is very much about human interaction, achieving high quality on a zero budget, having to do things you don’t have the expertise for, being allowed to do things you don’t have the expertise for, pride, hate, friendships, big visions, hopelessness. You catch yourself thinking: Is this Open Source thing really worth it? And push away the thought, because there are pull requests to review.
Um dir den Einstieg in Flow und Neos zu erleichtern, zeigen wir dir Einstiegspunkte, laden dich ein in unsere Community, und unterstützen bei den ersten Schritten.
Außerdem geben wir einen Einblick in die aktuelle Entwicklung und einen Ausblick für die Zukunft.
Neos ist eine moderne Content Application Platform, die vielseitige Anwendungsfälle ermöglicht: One Pager, Multi-Domain-Webseiten, Mehrsprachigkeit, Personalisierung und Integrationen mit bspw. eCommerce Systemen.
In diesem Vortrag werden wir die Einsatzgebiete und Vorteile von Neos aus Business und technischer Sicht beleuchten.
1. Robert Lemke
The Secret Recipe for a Juicy M
International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
2. Robert Lemke
chief architect of TYPO3 Phoenix and FLOW3
co-founder of the TYPO3 Association
34 years old
lives in Lübeck, Germany
1 wife, 1 daughter, 1 espresso machine
likes drumming
Montag, 11. Oktober 2010
3. = PHP 5.3 Full Stack Application Framework
Montag, 11. Oktober 2010
4. The FLOW3 Experience
Flow [flō] The mental state of operation in which the person is fully immersed in
what he or she is doing by a feeling of energized focus, full involvement, and
success in the process of the activity. Proposed by positive psychologist Mihály
Csíkszentmihályi, the concept has been widely referenced across a variety of fields.
FLOW3 [flō'three] The application framework which takes care of all hassle and lets
you play the fun part.
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
5. DI Dependency Injection DRY
YAA
OOP Object-Oriented Programming
YAGNI
AOP Aspect-Oriented Programming
CoC
MVC Model View Controller
POPO Plain Old PHP Object TDD
DDD Domain-Driven Design
Montag, 11. Oktober 2010
6. Domain-Driven Design
Domain
Desi
g n
lightblue.com
Lorem Ipsum id solum civibus definitionem usu, ex elit contentiones ius. Lorem
his quando facilisis efficiantur cu, delenit laboramus eos id, nec lorem invidunt te.
Suas aliquid consequuntur ne mei, cu qui dicit graeco timeam. Ad assum decore
definitiones ius, has dicat aliquip vocibus te, at per velit viderer legimus. Per no
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
7. Domain: The activity or business of the user
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
8. Goal
To solve real problems
of a real domain
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
9. Domain-Driven Design
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
10. Domain-Driven Design
focus on the domain and domain logic
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
11. Domain-Driven Design
focus on the domain and domain logic
accurately map the domain concepts to software
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
12. Domain-Driven Design
focus on the domain and domain logic
accurately map the domain concepts to software
form a ubiquitous language among the project members
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
14. Ubiquitous language
a common vocabulary:
important prerequisite for successful collaboration
use same words for
discussion class FlagshipStore {
modeling ...
development public function isProfitable() {
return ($this->earnings > ($this->expenses + $this->safetyMarg
documentation }
...
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
15. Layered Architecture
View
Presentation Controller
Application Logic
Domain Domain Model
Data Mapper (Persistence)
Data source Data Source Abstraction
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
21. DDD Building Blocks
Entity Value Object
Aggregate
Repository
Service
Factory
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
22. Entity
Defined by its identity
(instead of its properties)
Examples: Participant, Blog Post
(you probably used artificial keys like a UUID for
identifying entities in a database table)
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
23. Value Object
Defined by its value
Immutable
Green
Examples: Color, Tag Pantone 354c
R: 105 / G: 165 / B: 80
#69A550
#IPC10
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
24. Service
Actions within the domain which can't
be implemted by entities and value objects
alone
Services should be stateless
Example: "Postpone Conference Service"
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
25. Aggregate
Compound of Entities and Value Objects
Entity is Aggregate Root
No direct references to objects inside the
Aggregate from outside
Reduces complexity
Examples: Speaker Profile, Blog Post, Car ...
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
26. Repository
a.k.a. "where you keep things"
connection between clean domain
and dirty data storage
provides query methods for
retrieving domain objects
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
27. The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
28. The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
29. Further Reading
FLOW3 Website
http://flow3.typo3.org
FLOW3 Download
http://flow3.typo3.org/download
git://git.typo3.org/FLOW3/Distributions/Base.git
TYPO3 Forge
http://forge.typo3.org
Further Reading
http://flow3.typo3.org/about/principles/further-reading
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
30. Questions
Email: robert@typo3.org
Blog: http://robertlemke.de/blog
Twitter: @t3rob
Slides: http://slideshare.net/rlmp
Feedback: http://joind.in/talk/view/2182
The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010