Functional programming is one of the most interesting topic in today's JavaScript community. Pure functions and immutable data structures make for code that's fun to test and easy to reason about ... but creating interesting programs from pure computation is neither fun nor easy. This is where Functional Reactive Programming comes in. By wrapping data in observable objects, applying transformations and explicitly assigning side effects, functional programs turn into practical programs. This workshop is a comprehensive introduction into Functional Reactive Programming with RxJS. It covers the basics of FRP and large parts of RxJS's API as well as advanced topics like creating custom operators and using marble tests for unit testing. Much of the material covered in this workshop can be applied to other libraries and programming languages that implement Functional Reactive Programming.
Companies like Netflix, PayPal and even NASA have shown that with the help of Node.js, JavaScript can be used to implement scalable server-side solutions. The asynchronous and non-blocking nature of the language makes it easy to create modern and fast web applications with real-time features, while keeping a small overall footprint. Sven Kölpin and Manuel Rauber will introduce you to this brave new world. They will use a demo application to show you how to create modern web APIs with Node.js. Topics like API design, real-time communication, security, database access and single-page applications will be covered within the workshop.
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.
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.
Do you know the Atom editor by GitHub? This quite complex desktop application was created solely using web technologies. The utilized framework Electron allows you to develop applications with a native look and feel based on Node.js, JavaScript, HTML and CSS. Follow your trainer Jakob Westhoff down the rabbit hole, while he provides you with insights into Electron itself, as well as established toolchains for packaging and creating your next native looking application.
What is SonarJS good for? How does it work internally and how to use it to prevent bugs? An introduction to the ins and outs of the SonarJS code analyzer. After a live demo of the usage of SonarJS within an IDE, we will look into what it means to build a code analyzer and how JavaScript code is represented and understood at different levels of abstraction. And finally we will see how to execute JavaScript code without its actual execution, which is our way to detect runtime exceptions statically.
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.
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.
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.
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.
Da wurde eine Idee geboren, die vom Prototyp zum Selbstläufer wurde: RISC-HTML. Hierbei wird HTML nur noch zum Ausrendern simpelster grafischer Grundelemente verwendet. Eine JavaScript Library baut diese Grundelemente zu Komponenten zusammen: vom einfachen Button über das Grid bis hin zu komplexen Layoutmanagern. Das Ergebnis: 100 % Browserkompatibilität, neue Freiheitsräume beim Erstellen eigener Controls und Layouts sowie - auch für uns eine Überraschung! - eine hervorragende Performance. Über RISC-HTML gelang somit binnen eines Jahres die vollständige technologische Ablösung der vormalig Java-basierten Clients durch nun browserbasierte Clients.
Die RISC-HTML-Methode wird im Vortrag anhand vieler Livebeispiele und -anwendungen vorgestellt und technologisch erläutert.
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)
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.
Fehlende Typisierung, uneinheitliche Implementierungen und nicht zuletzt eine Sprache, die auch mit syntaktischen Fehlern "irgendwie" läuft, haben den Ruf von JavaScript lange Zeit beschädigt. TypeScript konnte viele dieser Probleme verbessern. Mit ECMAScript (Standardisierung von JavaScript) werden nun seit 2015 einmal pro Jahr einige Unterschiede zwischen den beiden Sprachen abgebaut. Die Session zeigt die neuesten Features von ECMAScript, die weiterhin bestehenden Unterschiede zu TypeScript und klärt die Frage, ob wir TypeScript langfristig noch brauchen.
Beim Testen wird JavaScript häufig aufgrund “schwerer Testbarkeit” ausgelassen. Diese Session vermittelt einen Einstieg in das mächtige JavaScript-Testing-Framework Jasmine. Dabei lernen Sie, wie sie einfache JavaScript-Funktionen, Methoden oder Klassen testen können. Außerdem zeigen wir verschiedene Mittel und Wege, Tests auszuführen und zu verwalten. Natürlich stehen auch unterschiedliche Werkzeuge auf dem Plan, die das Testen von DOM-Operationen, XHR sowie Node.js und weitere ansonsten komplexe Situationen vereinfachen.
While JavaScript offers some of the most powerful visualization libraries on the market, such as D3.js, Highcharts or three.js, they require significant configuration which hinders rapid iteration and on-the-fly analysis. However, when doing exploratory data analysis, it is necessary to take many different perspectives in order to obtain insights that might otherwise remain undiscovered. The command-line is an ideal aide for this task as it allows one to combine small, but powerful utilities to process, clean and transform one’s data. In this talk, Philipp Burckhardt will show how the stdlib JavaScript library can be used to combine the strengths of the command-line and browser-based visualization libraries. Since functions of the library are wrapped as CLI utilities, they can be used in conjunction with existing Unix pipelines, so that one is not held back anymore by the lack of data scrubbing and munging tools in the browser environment.
Can Google crawl and index JavaScript? How about other search engines? In this session, Bartosz will introduce the basics about JS crawling and indexing, and the differences between the two. This talk also goes over some basic JavaScript indexing issues and explains how to troubleshoot them.
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.
Over the past three years I've gone from a former professional figure skater teaching myself some basic HTML, to a full stack JavaScript developer, helping build out platforms for companies like Twitter, Facebook, LinkedIn and now Warner Brothers.
In this talk, we'll discuss lessons learned one year after going from a bootcamp grad to a full time JavaScript developer. Not only will I cover advice for newer developers, but I’ll also uncover what you can do if you’re a more advanced developer who works with newer developers. Plan to walk away empowered, and with renewed passion for the incredible industry we're all a part of!
So you’ve finally managed to build a full-stack application, all in JavaScript. But what if your hardware programming could be done with JavaScript too? In this introduction to Nodebots, you will learn how to use Node.js to build a robot using an Arduino board. Well, maybe not a full robot but at least a blinking LED. You will learn how to add basic sensors and other general electronic components and you will learn how you can do it by yourself, at home, on a minimal budget. Come to this talk and you too will be able to contribute to the Robocalypse.
webpack is used in many open source projects for bundling assets and JavaScript. Many frameworks like Angular and Ionic are using this tool. But what is webpack actually doing? Why is it the perfect tool for bundling assets and scripts? This talk shows how simple you can use webpack in your own web project and how to setup a build process with webpack. This talk also shows how to export the webpack configuration of the Angular CLI and make changes for your own project to fit your needs. We're going to handle the words according to webpack like loaders, plugins and why tree shaking is a really cool function. Also we're going to see why it's a good idea to bundle more than only scripts.
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.
In this talk, Philipp Burckhardt will share what control measures were implemented in the open source stdlib library for scientific computing in JavaScript, which consists of more than 1500 packages. The speaker will discuss the merits of extensive unit testing, automatic linting of source files, and the use of style guides to ensure a consistent code style. Human beings make mistakes, whereas machines are consistent and predictable in their behavior. Therefore, automation comes in handy, for example in terms of Git hooks that run tests and lint files when code is committed.
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.
They are so similar: Web and Mobile apps. What a nice option to use our web development experience (JavaScript, to be specific) to create cross-platform native-like applications. Is it that simple? What are the pros and cons of mobile web VS native? What is the difference between hybrid mobile apps, progressive web apps and JavaScript-compiled-to-native ones? Let's find the answers together!Attendees will get an overview of modern concepts for building web-based mobile applications, pros and cons from tech and business sides. Bonus: some practical advices on when to go for this option.First I'll give an idea: to use our JavaScript code for creating mobile applications. I'll mention and demonstrate some frameworks from those days. Right after I'll "destroy" this idea with some serious counter-arguments. Then I'll explain what could the renaissance of mobile web idea look like: using web workers, creating progressive web applications and compiling to real native code using some next generation frameworks. For the each option I'll give advantages/disadvantages from both tech and business points of view so both developers and managers will get a big picture of today's (and tomorrow's) possibilities of the mentioned concept.
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.