Event Storming is an emerging group modeling technique using sticky notes and verbal communication that is not only extremely efficient, but also easy to learn, and fun to do. This workshop introduces you to Event Storming with a strong focus on process design. Rather than talking a lot of theory, we will quickly dive into a group exercise and start modeling a real-life business problem, which will lead to valuable insights and is likely to spark off a lot of interesting discussions. We will not stop there, however, but also turn the model into working PHP code using Domain-driven Design techniques and patterns, so bring your laptop with a working PHP environment. To conclude the day, we will demonstrate how to integrate the code with your favorite framework. This workshop might forever change the way you write code, so do not miss out on it.
PHP 7 is being used in production by a growing number of companies. With PHP 5.6 no longer actively supported by the PHP project, it is high time to plan your migration to PHP 7 (in case you are still running PHP 5). It is also time to learn about the new features introduced in PHP 7.1 and PHP
7.2 and how to leverage them effectively.
This workshop will get you ready for PHP 7, in all aspects. To prepare you for the migration from PHP 5 to PHP 7, common pitfalls will be covered, and you will get to know pragmatic solutions. You will also take a look under the hood of PHP to better understand why PHP 7 can offer better performance and lower resource usage than PHP 5, and how this will affect the future of PHP. You will learn about the new language features introduced in PHP 7.0 and PHP 7.1 as well as what PHP 7.2 will bring.
The day is rounded up with a Q+A session where no question will go unanswered.
Angular, Google’s popular application framework for modern web-based solutions, brings component orientation, static type checking, and a breath-taking performance. By leveraging the single page application architecture as well as modern web standards it makes the creation of ambitious and enterprise-scale applications very easy. This workshop shows two possibilities of Angular and introduces it with an example application.
PHP is the most popular server-side language on the Web and the most favored language for Web attacks. A single security vulnerability in a widespread open-source PHP application can be used to compromise thousands of server installations. But how bad is the security state of open source applications and plugins today? This talk covers common and quirky security issues and mistakes detected lately. We introduce static analysis techniques for the automated detection of these complex issues and a summary of the most prevalent risks and pitfalls that should be avoided in your application.
Angular uses a relatively classical MVC approach with two-way data binding. This makes it easy to getting started but with more complex applications this approach can be a problem when it comes to traceability of data flows and it can make it harder to extend and maintain an application. An alternative is Redux which is the de facto standard in the React community. Redux is both a pattern and a library that uses principles of functional programming to manage the state of an application. The restriction to one-way data flow, the explicit modelling of user actions and the usage of immutable data leads to better understandable processes in the app and also a better separation of concerns.Redux is not limited to React but instead is neutral to technology and can be used with Angular too. This talk will cover the idea and the principles of Redux and will show how to use Redux with Angular.
Wie lässt sich heute effizient Software entwickeln, die mit den sich schnell ändernden Marktbedingungen mithalten kann und trotzdem unanfällig gegenüber Fremdsystemen ist? Aus unserer Erfahrung in Zusammenarbeit mit Oxid, Shopware, Spryker sowie mehreren Agenturen stellen wir dar, welche Softwaremuster die meisten Probleme verursachen, und wie sich stabile und gut getestete Software effektiv entwickeln lässt. Angedeutet wird zudem ein Weg, wie sich existierende Software dahin entwickeln lässt.
The new Abstract Syntax Tree (AST) in PHP 7 means the way our PHP code is being executed has changed. Understanding this new fundamental compilation step is key to understanding how our code is being run. To demonstrate, James will show how a basic compiler works and how introducing an AST simplifies this process. We’ll look into how these magical time-warp techniques* can also be used in your code to introspect, analyse and modify code in a way that was never possible before. After seeing this talk, you'll have a great insight as to the wonders of an AST, and how it can be applied to both compilers and userland code. (*actual magic or time-warp not guaranteed)
During my presentation I will describe setup that my company (Codesushi) developed. This setup mimics Ghost Inspector service. The big plus of Ghost Inspector is ability to record a video of failed tests. We love that feature so we developed a way to achieve that in our own architecture. Key points of the presentation:
- explanation of this concept
- introduction to Docker
- our way of dockerizing PHP App
- explanation of the idea: how we can dockerize browser and have ability to record sessions
- codeception setup
- binding it with Jenkins or any other CI
Wir - eine Community mittelständischer Softwarehersteller von Geschäftsanwendungen - kamen von Java Swing und später JavaFX-basierten Clientsystemen. Der “Browserdruck” wurde immer größer, die Probleme einer Portierung in Richtung Browser mithilfe bestehender Frameworks wurden aber nicht kleiner. Grund waren die üblichen Verdächtigen: hoher Aufwand für Implementierung und Wartung sowie mangelnde Abdeckung von Layout-/Komponentenfunktionen.
Die RISC-HTML-Methode wird im Vortrag anhand vieler Livebeispiele und -anwendungen vorgestellt und technologisch erläutert.
There is not a sole adjusting screw for performance tuning in single page applications but even several influencing factors that need be considered. This session shows how to deal with them. You learn how to leverage Ahead of Time Compilation (AOT), Tree Shaking and Lazy Loading to improve the startup performance of your application dramatically. For this, we are looking at the Angular Build Optimizer as well as at Google’s Closure compiler that allows aggressive optimizations. In addition to that you see how to use the optimization strategy OnPush to speed up data binding performance in your solutions. Furthermore, Service Worker for caching and instant loading is covered as well as Server Side Rendering to improve the perceived loading time.
The transparent modeling of business processes in any structure requires a solid level of abstraction as well as a deep understanding of the business process itself. One must bridge the gap between business requirements and actual lines of code, without leaving a massive footprint. Business changes, processes adapt, so must the underlying structure. Can they? This talk will give you ideas on how to tackle the art of state machinery. It will give an overview of the possible modeling concepts, their pros and cons, and common pitfalls when running them in production.
There's no denying that engineers are in high demand. Bootcamps are popping up everywhere, and while they're churning out highly motivated juniors, often it's seniors that companies are really after. So how do we bridge this gap together? On the surface it often looks like we've 'naturally' developed into our current roles. And, as we progress it's incredibly easy to forget what it was like being new. Rest assured however, for most the journey has been filled with a whole lot of grit, determination, and discipline.
For the last few years, PHP community has been buzzing about ES/CQRS, pretty much there was a talk on every conference. Now it's time to see how it worked out for me in practice. ES/CQRS is a different approach to building applications from what we all have been thought to do for years. I'm not going to introduce Event Sourcing and Command Query Responsibility Segregation (ES & CQRS) but speak about my experiences in developing & running it on production. I have implemented it on few projects: in some I run it as a part of bigger application, while in some it's just the core and one where everything is event driven. The shift in architecture and mindset is pretty big: while code structures and logic became simple, amount of code and workflows get complicated to the point of "where did I loose this input?". Not to go into too many details, I've had to learn lot of DDD practices that I feel have made me a better developer and use some of the knowledge gathered in this projects into "everyday" code of projects that I work on.
Have you tried to write a chatbot for multiple messaging platforms like Facebook or Slack? It is quite cumbersome as each messaging platform has its own API. Let us find out how to simplify this task and create an intelligent chatbot using PHP and BotMan, that is easy to use and powerful to extend with various tools such as natural language processing.
The browser support for web components has been increasing consistently over the past few years and besides other component libraries, including Polymer or X-Tag, the Ember community presents its own new library – Glimmer – enabling you to create easy-to-use web components today. In this talk we will have a look at the current state of web components in the modern web, including browser support, and polyfilling, and we'll see how Glimmer can help us to create reusable components for our web apps today. Alongside a demo we will see how we can build and ship our Glimmer based web components using the battle-tested Ember-CLI and finally, we will have a look at promising API developments for the future.
We all have experienced that once a software project reaches a byzantine complexity, it becomes easier for bugs and inconsistencies to creep in. The crucial question becomes how to organize large projects to minimize errors and to ensure quality.
While these steps might be effective and helpful, they pose the danger of creating an unwelcoming environment of strictness. Therefore, any project owner has to think about reconciling strict rules and fun, especially in open source contexts, where community involvement is critical for project survival. Although the investment in tooling and automation may be considerable (and, at times, daunting), the long term rewards of such investment are significant: higher quality software and developer happiness.
Back when starting our consulting company, we deemed invoicing a solved problem: Simply write them using office software, print to PDF, done. That solution did not make us happy, though.
There was data redundancy in the various spreadsheets that we used to manage our company, plus concurrency and scalability issues due to binary file formats that you cannot easily diff. So we decided to build our own solution. After all, writing and managing invoices the way we need cannot be that hard - or so we thought.
This is the story of how we went through iterations and rewrites, and what we have learned along he way. Well, we certainly learned to better understand some of the advice we give to our clients.
More and more applications are being realized using web technologies -- from Electron on your desktop to Progressive Web Apps (PWA) on your mobile or as a web service across all your devices. But go back ten years, and it was a rocky road. So called browser wars and competition to release hot new browser features disrupted the evolution. Open Standards and collaboration of browser vendors were helping to spread web technologies.
In my session I'll explain why open standards matter. We'll take a look at the history. You'll learn which requirements a modern browser engine should fulfill. And I’ll share some ideas for how you could help to develop the open web further.
In a business context REST is completely unsuitable as a client-server interface. It is too fine-grained, under-specified and causes to many http requests. In addition, the caching mechanism cannot take advantage of its strengths due to the use of https and the specific requirement in context of client-server-enterprise systems. The better alternative is Facebooks GraphQL. GraphQL is declarative and provides always exactly the expected data. The interface is based on JSON and so it’s quick and easy to understand for the developer.
More and more processes in companies are automated to ensure a high-quality and reliable procedure in daily work processes and absorb human error. But when it comes to a topic where human absence can cause fatal consequences or where processes should work fluently, many companies are still running with human error sources - I’m talking about security automation.
This session contains an overview about effective solutions to automate security relevant processes within DevSecOps. I want to present the results of a study in which attendees gave feedback on how they handle “Continuous Security in Open Source based Projects”. I will analyze the importance and prioritization of those security processes from the perspective of open source companies. Furthermore you will learn details of several security workflows in the open source business.
The term Progressive Web App refers to a group of technologies, such as service workers, and push notifications, that can bring native-like performance and user experience to web apps. Progressive Web Apps are interesting because in some ways they represent a coming of age for the Web. The Angular Mobile Toolkit makes it easy to build snappy Web apps that load instantly on any device, even without an internet connection. Take advantage of the searchability, shareability, and no-install-required-ability of the Web without compromise. During this 100 per cent hands-on session we'll have a look on recent tools and guides from Angular team to help us build Progressive Web Apps. We'll have a look at Angular CLI and plugins/libraries for App Shell, Service Worker, and Application Manifest supporting us in fast and easy creation of installable, offline-capable, mobile-network-friendly apps. Course overview: Introduction to PWA and Workshop Setup, Introduction to Angular Mobile Toolkit, Create an installable mobile web app with Angular CLI, Make the App Installable with Web App Manifest, App Shell Architecture, Add an app shell component to the App, Deep dive into Service Workers, Add basic offline capabilities with Service Worker, Adding Splash Screen, Sending Push Notifications, Questions and answer.
In a world where the front-end is evolving so fast, it is specially important to be able to count on a solid technology for your back-end that holds the foundations of your project. Symfony is a mature framework that had already proven its capacity of enabling rapid and good quality development, both for small prototypes and large and complex systems. Symfony 4 moves further in this direction, cutting configuration times to the minimum, and becoming more flexible and powerful than its previous versions.
We will see how to turn Symfony 4 into your best ally for every project. Starting with a fresh installation, we'll go through the process of building a RESTful API with Symfony, as well as an admin panel - two of the most common requirements in almost every project. Along the way, we will review the best practices and learn how to organize the architecture of your project, as well as many useful tips and tricks learned along the years working with this framework.