Programowanie reaktywne umożliwia wiele niesamowitych rzeczy. Skalowalne systemy potrzebujące zaledwie ułamka mocy obliczeniowej i zasobów w porównaniu z klasyczną, blokującą aplikacją? Pewnie. Responsywny kod, ogromna przepustowość, niskie czasy odpowiedzi? Bez problemu. Niewielki narzut na pamięć i system? Z definicji. Dlaczego by nie kochać programowania reaktywnego i reaktywnych systemów? Podzielę się z Wami moimi doświadczeniami, kiedy reaktywność popłaca, ale zwłaszcza kiedy jest podejście przeinżynierowanym. Jakie są ukryte koszty i typowe błędy? Jak przekonać swój zespół do rozpoczęcia przygody z reaktywnością? I jeszcze ważniejsze, jak dostrzec, że ten styl architektoniczny to ślepa uliczka, więcej kłopotu niż pożytku? Na konkretnych przykładach.
Writing a Space Shooter with HTML5 CanvasSteve Purkis
This talk reviews a Space Shooter game that I wrote to learn about HTML5 canvas. It covers:
* Basics of canvas 2D
* Overview of how the game is put together
* Some performance tips
First presented @ Ottawa JavaScript in September 2012.
Scala 3 is arriving, and with it comes incredible new power for library authors. In this presentation, Alexander Ioffe, contributor to Quill (a LINQ-like persistence layer for Scala), will show how using Scala 3 Macros, Quill is being rebuilt to be better, stronger, and faster. As you will learn in this presentation, Scala 3 introduces a new powerhouse keyword called 'inline' that opens up a new continent of capability. This construct powers all Scala 3 macros, and allows users to interact with staged code almost indistinguishably from normal code, allowing familiar patterns such as global-methods, type-classes, and type-level-logic. For Quill, Alexander will show how this allows generating compile-time SQL using patterns that we once only dreamed about using--and these features just scratch the surface of what can be done with staged code. Come discover the bright future of powerful, type-safe libraries in Scala 3!
In the past year there has been a tremendous amount of activity on Scala APIs for Hadoop. In this talk we`ll talk about writing Map/Reduce jobs in a more functional manner and explore the three most popular Scala packages for Hadoop: Scalding, Scoobi and Scrunch. Detailed usage examples will be provided for each along with some real world use cases.
Writing a Space Shooter with HTML5 CanvasSteve Purkis
This talk reviews a Space Shooter game that I wrote to learn about HTML5 canvas. It covers:
* Basics of canvas 2D
* Overview of how the game is put together
* Some performance tips
First presented @ Ottawa JavaScript in September 2012.
Scala 3 is arriving, and with it comes incredible new power for library authors. In this presentation, Alexander Ioffe, contributor to Quill (a LINQ-like persistence layer for Scala), will show how using Scala 3 Macros, Quill is being rebuilt to be better, stronger, and faster. As you will learn in this presentation, Scala 3 introduces a new powerhouse keyword called 'inline' that opens up a new continent of capability. This construct powers all Scala 3 macros, and allows users to interact with staged code almost indistinguishably from normal code, allowing familiar patterns such as global-methods, type-classes, and type-level-logic. For Quill, Alexander will show how this allows generating compile-time SQL using patterns that we once only dreamed about using--and these features just scratch the surface of what can be done with staged code. Come discover the bright future of powerful, type-safe libraries in Scala 3!
In the past year there has been a tremendous amount of activity on Scala APIs for Hadoop. In this talk we`ll talk about writing Map/Reduce jobs in a more functional manner and explore the three most popular Scala packages for Hadoop: Scalding, Scoobi and Scrunch. Detailed usage examples will be provided for each along with some real world use cases.
My JSConf.eu talk about next-gen JavaScript metaprogramming features, starting with ES5's new Object APIs and then focusing on the forthcoming Proxy object, approved for the next ECMA-262 Edition. This is beautiful work from Tom Van Cutsem and Mark Miller, with Andreas Gal helping on the implementation front -- proxies are already shipping in Firefox 4 betas.
Object Oriented got a lot easier since Moose came around.
This keynote is a one-day advanced Moose workshop covering (almost) everything Moose has to offer perl developers
Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
Working with the Scalding Type-Safe API Criteolabs
Scalding is a go-to choice for developing MapReduce jobs and the new(ish) Type Safe API promises to make jobs ever more safer, without adding any additional testing overhead (and, of course, you all test your jobs). In the process of rolling out the Type Safe API of Scalding at Criteo we encountered a number of pitfalls made more difficult to overcome by the lack of documentation and examples of the Type Safe API. During this talk we'll present a down and dirty look at what it takes to get a team up, running and productive on this sometimes mysterious API.
Presentation from Hadoop Summit Dublin by Justin Coffey (Snr Staff Devlead) & Sofian Djamaa (Snr Software Engineer)
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
In a galaxy far, far away - A procedural generation taleShay Davidson
Let's create a game set in space!
For this, I have to render a nice looking galaxy. How do I do it? Do I create a pre-rendered image and place 100k stars manually (oh no!), or do I try to create something random procedurally that looks awesome?
In this talk, I'll delve into the basic concepts of procedural generation - mostly around the basic mathematical tools at your disposal as a developer to create awesome procedural generated art.
With every step in creating a realistic looking galaxy, I will provide code examples in JavaScript.
A practical guide to using RxJava on Android. Tips for improving your app architecture with reactive programming. What are the advantages and disadvantages of using RxJava over standard architecture? And how to connect with other popular Android libraries?
Presented at Droidcon Greece 2016.
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...GeeksLab Odessa
04.07.2015 WebCamp:Front-end Developers Day
Александр Мостовенко (Python developer at Prom.ua)
"Rx.js - делаем асинхронное программирование проще"
В данном докладе будет рассмотрено преимущество FRP подхода к построению javascript приложений на примере библиотеки Rx.js. Узнаем как Rx.js позволяет избавиться от callback hell и превращает сложные вещи в простые.
Подробнее:
http://geekslab.co,
http://webcamp.in.ua/
https://www.facebook.com/GeeksLab.co , https://www.facebook.com/OdessaInnovationWeek
https://www.youtube.com/user/GeeksLabVideo
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...Zhenzhong Xu
Netflix is obsessed with customer joy, we relentlessly focus on product experience and high-quality content. In recent years, we have been making heavy investments in the tech-driven studio and content production. As a result, a lot of unique challenges arise in the real-time data infrastructure space. For example, in a microservices architecture, domain entities are spread in different applications and persistence storages, this made low latency consistent operational reporting and entity searching especially challenging.
In this talk, we’ll talk about some interesting use cases, the various challenges lay in the fundamentals of distributed systems, and how did we solve them. We will also discuss the learnings, things we could’ve done differently, and the new vision towards an open self-serving Data Mesh platform that empowers our partners and users to build flexible real-time data pipelines.
Join this video course on Udemy. Click the below link
https://www.udemy.com/mastering-rtos-hands-on-with-freertos-arduino-and-stm32fx/?couponCode=SLIDESHARE
>> The Complete FreeRTOS Course with Programming and Debugging <<
"The Biggest objective of this course is to demystifying RTOS practically using FreeRTOS and STM32 MCUs"
STEP-by-STEP guide to port/run FreeRTOS using development setup which includes,
1) Eclipse + STM32F4xx + FreeRTOS + SEGGER SystemView
2) FreeRTOS+Simulator (For windows)
Demystifying the complete Architecture (ARM Cortex M) related code of FreeRTOS which will massively help you to put this kernel on any target hardware of your choice.
My JSConf.eu talk about next-gen JavaScript metaprogramming features, starting with ES5's new Object APIs and then focusing on the forthcoming Proxy object, approved for the next ECMA-262 Edition. This is beautiful work from Tom Van Cutsem and Mark Miller, with Andreas Gal helping on the implementation front -- proxies are already shipping in Firefox 4 betas.
Object Oriented got a lot easier since Moose came around.
This keynote is a one-day advanced Moose workshop covering (almost) everything Moose has to offer perl developers
Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
Working with the Scalding Type-Safe API Criteolabs
Scalding is a go-to choice for developing MapReduce jobs and the new(ish) Type Safe API promises to make jobs ever more safer, without adding any additional testing overhead (and, of course, you all test your jobs). In the process of rolling out the Type Safe API of Scalding at Criteo we encountered a number of pitfalls made more difficult to overcome by the lack of documentation and examples of the Type Safe API. During this talk we'll present a down and dirty look at what it takes to get a team up, running and productive on this sometimes mysterious API.
Presentation from Hadoop Summit Dublin by Justin Coffey (Snr Staff Devlead) & Sofian Djamaa (Snr Software Engineer)
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
In a galaxy far, far away - A procedural generation taleShay Davidson
Let's create a game set in space!
For this, I have to render a nice looking galaxy. How do I do it? Do I create a pre-rendered image and place 100k stars manually (oh no!), or do I try to create something random procedurally that looks awesome?
In this talk, I'll delve into the basic concepts of procedural generation - mostly around the basic mathematical tools at your disposal as a developer to create awesome procedural generated art.
With every step in creating a realistic looking galaxy, I will provide code examples in JavaScript.
A practical guide to using RxJava on Android. Tips for improving your app architecture with reactive programming. What are the advantages and disadvantages of using RxJava over standard architecture? And how to connect with other popular Android libraries?
Presented at Droidcon Greece 2016.
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...GeeksLab Odessa
04.07.2015 WebCamp:Front-end Developers Day
Александр Мостовенко (Python developer at Prom.ua)
"Rx.js - делаем асинхронное программирование проще"
В данном докладе будет рассмотрено преимущество FRP подхода к построению javascript приложений на примере библиотеки Rx.js. Узнаем как Rx.js позволяет избавиться от callback hell и превращает сложные вещи в простые.
Подробнее:
http://geekslab.co,
http://webcamp.in.ua/
https://www.facebook.com/GeeksLab.co , https://www.facebook.com/OdessaInnovationWeek
https://www.youtube.com/user/GeeksLabVideo
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...Zhenzhong Xu
Netflix is obsessed with customer joy, we relentlessly focus on product experience and high-quality content. In recent years, we have been making heavy investments in the tech-driven studio and content production. As a result, a lot of unique challenges arise in the real-time data infrastructure space. For example, in a microservices architecture, domain entities are spread in different applications and persistence storages, this made low latency consistent operational reporting and entity searching especially challenging.
In this talk, we’ll talk about some interesting use cases, the various challenges lay in the fundamentals of distributed systems, and how did we solve them. We will also discuss the learnings, things we could’ve done differently, and the new vision towards an open self-serving Data Mesh platform that empowers our partners and users to build flexible real-time data pipelines.
Join this video course on Udemy. Click the below link
https://www.udemy.com/mastering-rtos-hands-on-with-freertos-arduino-and-stm32fx/?couponCode=SLIDESHARE
>> The Complete FreeRTOS Course with Programming and Debugging <<
"The Biggest objective of this course is to demystifying RTOS practically using FreeRTOS and STM32 MCUs"
STEP-by-STEP guide to port/run FreeRTOS using development setup which includes,
1) Eclipse + STM32F4xx + FreeRTOS + SEGGER SystemView
2) FreeRTOS+Simulator (For windows)
Demystifying the complete Architecture (ARM Cortex M) related code of FreeRTOS which will massively help you to put this kernel on any target hardware of your choice.
Consuming web services asynchronously with Futures and Rx Observables (svcc, ...Chris Richardson
A modular, polyglot architecture has many advantages but it also adds complexity since each incoming request typically fans out to multiple distributed services. For example, in an online store application the information on a product details page - description, price, recommendations, etc - comes from numerous services. To minimize response time and improve scalability, these services must be invoked concurrently. However, traditional concurrency mechanisms are low-level, painful to use and error-prone. In this talk you will learn about some powerful yet easy to use abstractions for consuming web services asynchronously. We will compare the various implementations of futures that are available in Java, Scala and JavaScript. You will learn how to use reactive observables, which are asynchronous data streams, to access web services from both Java and JavaScript. We will describe how these mechanisms let you write asynchronous code in a very straightforward, declarative fashion.
Apache Spark for Library Developers with William Benton and Erik ErlandsonDatabricks
As a developer, data engineer, or data scientist, you’ve seen how Apache Spark is expressive enough to let you solve problems elegantly and efficient enough to let you scale out to handle more data. However, if you’re solving the same problems again and again, you probably want to capture and distribute your solutions so that you can focus on new problems and so other people can reuse and remix them: you want to develop a library that extends Spark.
You faced a learning curve when you first started using Spark, and you’ll face a different learning curve as you start to develop reusable abstractions atop Spark. In this talk, two experienced Spark library developers will give you the background and context you’ll need to turn your code into a library that you can share with the world. We’ll cover: Issues to consider when developing parallel algorithms with Spark, Designing generic, robust functions that operate on data frames and datasets, Extending data frames with user-defined functions (UDFs) and user-defined aggregates (UDAFs), Best practices around caching and broadcasting, and why these are especially important for library developers, Integrating with ML pipelines, Exposing key functionality in both Python and Scala, and How to test, build, and publish your library for the community.
We’ll back up our advice with concrete examples from real packages built atop Spark. You’ll leave this talk informed and inspired to take your Spark proficiency to the next level and develop and publish an awesome library of your own.
Futures and Rx Observables: powerful abstractions for consuming web services ...Chris Richardson
A modular, polyglot architecture has many advantages but it also adds complexity since each incoming request typically fans out to multiple distributed services. For example, in an online store application the information on a product details page - description, price, recommendations, etc - comes from numerous services. To minimize response time and improve scalability, these services must be invoked concurrently. However, traditional concurrency mechanisms are low-level, painful to use and error-prone.
In this talk you will learn about some powerful yet easy to use abstractions for consuming web services asynchronously. We will compare the various implementations of futures that are available on the JVM. You will learn how to access web services using reactive observables (RxJava), which are asynchronous data streams. We will describe how these mechanisms let you write asynchronous code in a very straightforward, declarative fashion.
Why is web application programming so difficult? Is it javascript fault? Is it our fault? Time to take the red pill and wake up in the real, event driven world. A world where if you can dodge the bullets of skyrocketing complexity, your programs can be made scalable, fault tolerant, extensible and just beautiful.
Why is web application programming so difficult? Is it javascript fault? Is it our fault? Time to take the red pill and wake up in the real, event driven world. A world where if you can dodge the bullets of skyrocketing complexity, your programs can be made scalable, fault tolerant, extensible and just beautiful.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020.
Reactive web-applications are an answer to the new requirements of high-availability and resource efficiency brought by this rapid evolution. On the JVM, a set of new languages and tools has emerged that enable the development of entirely asynchronous request and data handling pipelines. At the same time, container-less application frameworks are gaining increasing popularity over traditional deployment mechanisms.
This talk is going to give you an introduction into one of the most trending reactive web-application stack on the JVM, involving the Scala programming language, the concurrency toolkit Akka and the web-application framework Play. It will show you how functional programming techniques enable asynchronous programming, and how those technologies help to build robust and resilient web-applications.
Models—abstract and simple descriptions of some artifact—are the backbone of all software engineering activities. While writing models is hard, existing code can serve as a source for abstract descriptions of how software behaves. To infer correct usage, code analysis needs usage examples, though; the more, the better.
We have built a lightweight parser that efficiently extracts API usage models from source code—models that can then be used to detect anomalies. Applied on the 200 mil- lion lines of code of the Gentoo Linux distribution, we would extract more than 15 million API constraints. On the web site checkmycode.org, anyone can check his/her code against the “wisdom of Linux”.
Progscon 2017: Taming the wild fronteer - Adventures in ClojurescriptJohn Stevenson
Progscon 2017 conference talk, introducing Clojurescript for a functional programming approach to building React.js apps.
Examples include using React.js directly and the Om Clojurescript library that closely follows the React.js API. Also cover a simpler approach to React with the Clojurescript libraries called Reagent and Rum.
Wojciech Rząsa - Przewidywanie zmian wydajności aplikacji rozproszonychSegFaultConf
Wszyscy tworzymy systemy rozproszone, nawet jeśli to „tylko proste aplikacje www”. Z aplikacją rozproszoną mamy do czynienia już wtedy, gdy biblioteka frontendowa przechowuje stan kontrolek, który musi być zsynchronizowany z backendem. Innym przykładem jest uruchomienie aplikacji w środowisku produkcyjnym bazującym na rozproszonej infrastrukturze cloudowej. Oczywistym przykładem jest też korzystanie z zewnętrznych API. Środowisko rozproszone jest z natury zmienne i trudno przewidywalne. Czy zastanawialiście się kiedyś jaki wpływ na wydajność Waszej aplikacji będą miały zmiany tego środowiska? Jak się zmieni wydajność aplikacji gdy wydłuży się czas odpowiedzi jednego z zewnętrznych serwisów? A jeśli load balancer nierówno rozłoży obciążenie na poszczególne serwery aplikacji, albo jeśli zmienicie wydajność i liczbę maszyn które obsługują aplikację? Można to oczywiście przetestować, ale wymaga to na ogół sporo wysiłku i poniesienia niemałego kosztu (wliczając w to cenny czas pracy). Można to jednak zrobić łatwiej, szybciej i taniej. Zaprezentuję dwa konkretne przykłady w których przewiduję zmiany wydajności rzeczywistych aplikacji z mniejszym wysiłkiem i w krótszym czasie niż można to zrobić za pomocą testów. W swojej pracy używam symulacji, która pozwala analizować zachowanie systemu opisanego wygodnym, przejrzystym językiem dziedzinowym (DSL). Metoda została opisana w pracach naukowych [1, 2, 3, 4] i przedstawiona na międzynarodowych konferencjach. Nie zamierzam jednak dyskutować o części naukowej, ale o możliwości wykorzystania w praktyce. Na obecnym etapie szukam kolejnych praktycznych zastosowań tego podejścia, więc bardzo chętnie przedyskutuję praktyczne problemy i wykonam większość pracy potrzebnej, żeby je przeanalizować i dostarczyć potrzebnych odpowiedzi.
[1] Rząsa W.: Simulation-Based Analysis of a Platform as a Service Infrastructure Performance from a User Perspective, P. Gaj et al. (Eds.): CN 2015, CCIS 522, pp. 182–192, 2015 ISBN: 978-3-319-19418-9.
[2] Rząsa W., Rzońca D.: Event-Driven Approach to Modeling and Performance Estimation of a Distributed Control System, in: Gaj P., Kwiecień A., and Stera P. (Eds.): Computer Networks 2016, Communications in Computer and Information Science 608, Springer International Publishing 2016, pp. 168-179.
[3] Rząsa, W.: Predicting Performance in a PaaS Environment: a Case Study for a Web Application. Computer Science, [S.l.], v. 18, n. 1, p. 21, mar. 2017. ISSN 2300-7036. Available at: . Date accessed: 05 Sep. 2017. doi:http://dx.doi.org/10.7494/csci.2017.18.1.21.
[4] Rząsa W., Jamro M., Rzonca D. (2017) Improving Accuracy of a Network Model Basing on the Case Study of a Distributed System with a Mobile Application and an API. In: Gaj P., Kwiecień A., Sawicki M. (eds) Computer Networks. CN 2017. Communications in Computer and Information Science, vol 718. Springer, Cham.
Zbyszko Papierski - Communication patterns in carbon-based networksSegFaultConf
Porozmawiajmy o rzeczach wszystkim Wam świetnie znanych.
Głodzenie wątków. Długie bloki synchronize. Niestabilne I/O. Problemy w wyborem lidera w klastrze.
To wszystko, to oczywiście problemy komunikacji. Takiej międzyludzkiej.
Czym innym jest meeting niż blokiem synchronize, rozciągniętym na wątki naszej uwagi? Cały projekt upada, bo jedna osoba wylądowała na L4 – dziwnie podobne do potężnych stron, upadających z powodu jednej niedziałającej usługi!
Komunikacja, ta w realnych życiu, ma dużo wspólnego z komunikacją pomiędzy wątkami/ procesami/maszynami. Obie są trudne – obie też powinny być przemyślane. Co najważniejsze dla nas – są pewnie lekcje, które odnoszą się do obu!
No dobra, ale czemu ja, programista, miałbym się tym przejmować? – zadajesz sobie pytanie. Odpowiedź jest prosta – komunikacja nie jest dziedziną przeznaczoną tylko i wyłącznie Product Managerom czy architektom. Niekończące się spotkania, czy ciągła niemożność dojścia do decyzji – to są rzeczy, które skutecznie wysycają twoje wewnętrzne zasoby i spowalniają cię w podobny sposób, jak niepotrzebna synchronizacja spowalnia twój kod.
Porozmawiamy o tym, w jaki sposób wiedza o współczesnych procesorach może nam pomóc zorganizować efektywne spotkania. Przekonamy się, co wspólnego mają ze sobą programiści i Java Memory Model. Nauczymy się, jak zaprojektować nieblokującą komunikację, i to bez używania brzydkich tricków jak Unsafe!
Ostrzeżenie – ludzie będą tutaj porównywani do zasobów.
Daniel Pokusa - Praca z kodem zastanym- nadchodzi wielka falaSegFaultConf
Wyobraź sobie, że dostajesz swój wymarzony projekt. W końcu „greenfield”! Ale jest to projekt biznesowy i to Ty jesteś odpowiedzialny za wybór technologii, a jako specjalista czujesz się też odpowiedzialny za całość. Co robisz? Zaryzykujesz tak po prostu i wybierzesz same „nowinki” z rynku, które Cię kręcą i których chciałbyś spróbować? A jeśli uznasz, że jednak trzeba podejść do tematu „poważnie” to czy tak na prawdę aż tak dużo się nauczysz? O ile lepszym architektem i programistą się staniesz korzystając już ze znanych sobie wzorców i podejść? Prawda jest taka, że jak masz już młotek to wszystko staje się gwoździem. A każdy z nas ma swoje ulubione młotki. Oczywiście- część problemów będzie nowych, będzie wymagała nowych podejść i rozwiązań- ale nasz umysł skonstruowany jest w taki, a nie inny sposób- będziemy stosować utarte i pewne praktyki, szczególnie jeśli potrzebujemy udowodnić swoją wartość w (nowym) zespole.
Chciałbym Wam pokazać dlaczego można zakochać się w „legacy”, dlaczego te projekty mogą i powinny często być naszym pierwszym wyborem (o ile znajdują się w określonym środowisku). Prawda jest taka, że najwięcej uczymy się popełniając błędy, rozwiązując nowe problemy, ale także pracując w bardzo ograniczonej przestrzeni, która wymaga ostrożnych modyfikacji. Szczególnie, gdy nadchodzi wielka fala i wymagane są duże zmiany. Wtedy wchodzimy na scenę i chcemy zejść z niej niepokonani.
Prezentacja nie będzie opowieścią o tym dlaczego to jest piękne i wspaniałe. Ten temat zarysowałem powyżej i przedstawię Waszej indywidualnej ocenie. Chcę natomiast razem z Wami przejść przez kilka ciekawych problemów architekturalnych, o które ciężko w nudnych greenfieldach. Chcę razem z Wami zakochać się na nowo w rozwiązywaniu problemów tworzonych przez wymagania biznesowe, technologie i wcześniejsze decyzje. I w końcu chcę razem z Wami popatrzeć na wytwarzanie oprogramowania nie jak na sprint, ale jak na maraton w którym kluczowe jest nie tylko rozłożenie sił w czasie, ale odpowiednia kontrola całego organizmu i umysłu. Będzie dużo kwadracików, kółeczek i strzałek, ale będą też technologie i braki technologii.
Andrzej Ludwikowski - Event Sourcing - co może pójść nie tak?SegFaultConf
Serio? Kolejna prezentacja o Event Sourcingu? I tak, i nie. Zamiast na gloryfikacji tej jakże zacnej koncepcji, skoncentrujemy się na możliwych problemach przy jej implementacji. Co może wybuchnąć (często z opóźnionym zapłonem)? Gdzie i jak przechowywać eventy? Jak osiągnąć najwyższy poziom wtajemniczenia i skalowalności? Jak żyć z eventual consistency? I wiele innych pytań, z którymi spróbujemy się zmierzyć. Postaram się unikać jednoznacznych odpowiedzi - każde rozwiązanie jest dobre, dopóki “działa”. Przerywniki z doświadczeniami słuchaczy będą bardzo mile widziane.
Dominik Boszko - Krocząc doliną ciemności mikroserwisów się nie ulęknęSegFaultConf
Częściowo w oparciu o własne doświadczenia opowiem o pracy z mikroserwisami i o pułapkach w które można wpaść. Czy mikroserwisy naprawdę są rozwiązaniem wszystkich naszych problemów? Czym jest rozproszony monolit, jak powstaje i jak sobie z nim radzić? Jak rozpoznać nadchodzące kłopoty i dlaczego warto przemyśleć swoją architekturę po raz wtóry.
Krzysztof Kaczmarek - 10 rzeczy, które chciałbym wiedzieć 10 lat temuSegFaultConf
Istnieją momenty „Aha” które zmieniają życie, karierę, zatrzymują czas. Czasem jest to pierwsze spojrzenie w oczy kobiety którą kochasz (lub mężczyzny) i nic już nie będzie takie samo, czasem jest to zdanie mentora które zmienia bieg Twojej kariery.
Tematy przechodzą od ontologii po wybór frameworków. Przyjdź i posłuchaj czego nauczyli się już inni.
Ten talk składa się w połowie z własnej retrospektywy, w drugiej ze skompilowanej wiedzy ekspertów, których szanuje i podziwiam.
Wszystko przetestowane na własnej (lub cudzej ) skórze. i na zwierzętach. i programistach. i managerach. i ich rodzinach. 100% meat.
Jan Pustelnik - Curry-Howard w praktyceSegFaultConf
Pewnie gdzieś słyszałeś “Izomorfizm Curry’ego-Howarda” albo obiło Ci się o uszy “Propositions as Types”. A może nawet czytałeś coś o tym, ale szybko zrezygnowałeś, bo poziom abstrakcji wydał Ci się zabójczy. Tymczasem to pewien podstawowy fakt leżący głęboko u podstaw informatyki. W moim wystąpieniu postaram się Ciebie przekonać, że jest to nie tylko coś co jako programista intuicyjnie rozumiesz, używasz na co dzień w językach programowania, ale też, że pozwala on na tworzenie lepszych programów poprzez użycie wyrafinowanych typów do dowodzenia poprawności.
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?SegFaultConf
Wyobraź sobie, że w twojej aplikacji zachodzą jakieś zmiany (domain eventy). Chcielibyśmy te zmiany wystawić na zewnątrz, żebyśmy mogli na ich podstawie robić sobie raporty, read modele, sagi, synchronizować dane. Czy to zadanie okaże się być trudne czy proste, jeśli użyjemy bazy danych SQL. Co zyskaliśmy dzięki temu, że używam RDBMS/SQL a co utraciliśmy, być może, bezpowrotnie. W tej prezentacji opowiem wam jak chciałem zbudować pewną funkcjonalność dla biblioteki Rails Event Store, dlaczego okazało być się to trudniejsze niż myślałem, o modelu MVCC w PostgreSQL, czy jest sposób, żeby go obejść i uzyskać emulację trybu READ UNCOMMITTED. A może możnaby do całego problemu podejśc zupełnie inaczej i podłączyć się pod Write-Ahead-Log (WAL) i wygrać świat w ten sposób? Pokażę też jak moim zdaniem, korzystając z dokładnie tych samych konceptów, które stoją za Event Sourcingiem i bazami danych moglibyśmy budować API, tak bym za każdym razem pisząc integrację z serwisem X nie musiał się zastanawiać czy jego autorzy rozumieją pojęcie idempotent czy nie. Albo jak moglibyśmy osiągnąć prostotę dzięki używaniu Convergent Replicated Data Types (CRDT). Być może jako community stać nas na więcej niż REST nad CRUDem. Zastanowimy się, czy sprzedawcy SQLa zlasowali nam mózgi, sprawili, że zapomnieliśmy o najprostszym sposobie, który może działać i wprowadzili nas w maliny, w których aktualnie się znajdujemy. A może sami jesteśmy sobie winni? TLDR: Czy nasze aplikacje nie mogłyby działać tak jak pod spodem działają bazy danych? Czy to wszystko musi być takie ciężkie i skomplikowane jeśli chcemy mieć mikro-serwisy, zwłaszcza w małym zespole, który niekoniecznie lubi dostawiać 5 bazę danych do stacku technologicznego.
Marcin Grzejszczak - Contract Tests in the EnterpriseSegFaultConf
Is your legacy application talking to a service that is never up and running on your shared testing environment? Does your company waste a lot of time and money on regression testing only to see that, yet again, someone has created a typo in the API? Enough is enough. Time to fix this problem using contract tests!
In this presentation you’ll see how to migrate a legacy application to work with stubs of external applications. We’ll show different ways of increasing your test reliability by writing adding contract tests of your API. You’ll see the difference between producer and consumer driven contracts.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
2. You must beYou must be thisthis tall totall to
practice reactivepractice reactive
programmingprogramming
3. Liam Neeson on reactive programming
[...] a very particular set of skills,
skills [...] acquired over a very long
career. Skills that make me a
nightmare for people like you
13. 1. Fetch user by name from a web service
2. If not yet in database, store it
3. Load shopping cart for user
4. Count total price of items
5. Make single payment
6. Send e-mail for each individual item, together
with payment ID
14. User user = ws.findUserByName(name);
if (!db.contains(user.getSsn())) {
db.save(user);
}
List<Item> cart = loadCart(user);
double total = cart.stream()
.mapToDouble(Item::getPrice)
.sum();
UUID id = pay(total);
cart.forEach(item -> sendEmail(item, id));
25. Are Semigroup, Monoid, Monad,
Functor, Kleisli, and Yoneda
pervasive in your domain model?
www.innoq.com/en/blog/the-language-of-maths-is-not-the-language-of-your-business/
26. cont.
Unless your core domain is
mathematics, category theory is
not the language used by your
domain experts.
www.innoq.com/en/blog/the-language-of-maths-is-not-the-language-of-your-business/
27. cont.
Good luck getting your domain
experts to understand the
language introduced by that
abstraction.
www.innoq.com/en/blog/the-language-of-maths-is-not-the-language-of-your-business/
28. Are Mono and Flux pervasive in
your domain model?
Unless your core domain is
infectious diseases, Reactor is not
the language used by your domain
experts.
en.wikipedia.org/wiki/Infectious_mononucleosis
en.wikipedia.org/wiki/Dysentery
33. Remember that codeRemember that code
with badly writtenwith badly written
tests can be moretests can be more
harmful than codeharmful than code
without tests.without tests.
hackernoon.com/few-simple-rules-for-good-coding-my-15-years-experience-96cb29d4acd9
53. I miss you, stack trace...I miss you, stack trace...
54.
55. java.sql.SQLTransientConnectionException: HikariPool-1 -
Connection is not available,
request timed out after 30003ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutExceptio
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariP
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariP
at com.zaxxer.hikari.HikariDataSource.getConnection(Hikari
at org.springframework.jdbc.datasource.DataSourceTransacti
at org.springframework.transaction.support.AbstractPlatfor
at org.springframework.transaction.interceptor.Transaction
at org.springframework.transaction.interceptor.Transaction
at org.springframework.transaction.interceptor.Transaction
www.nurkiewicz.com/2017/03/beware-of-slow-transaction-callbacks-in.html
56. "http-nio-9099-exec-2@6415" daemon prio=5 tid=0x28 nid=NA wait
java.lang.Thread.State: WAITING
[...4 frames omitted...]
at org.apache.activemq.transport.FutureResponse.getResul
at o.a.a.transport.ResponseCorrelator.request
at o.a.a.ActiveMQConnection.syncSendPacket
at o.a.a.ActiveMQConnection.syncSendPacket
at o.a.a.ActiveMQSession.syncSendPacket
at o.a.a.ActiveMQMessageProducer.<init>
at o.a.a.ActiveMQSession.createProducer
[...5 frames omitted...]
at org.springframework.jms.core.JmsTemplate.send
at com.nurkiewicz.Sample$sendMessageAfterCommit$1.afterC
at org.springframework.transaction.support.TransactionSy
at o.s.t.s.TransactionSynchronizationUtils.triggerAfterC
at o.s.t.s.AbstractPlatformTransactionManager.triggerAft
at o.s.t.s.AbstractPlatformTransactionManager.processCom
at o.s.t.s.AbstractPlatformTransactionManager.commit
[...73 frames omitted...]
57. Async, by contrast, isAsync, by contrast, is
callback based andcallback based and
driven by an eventdriven by an event
looploop [...] stack trace is[...] stack trace is
meaningless whenmeaningless when
trying to follow atrying to follow a
request.request.
medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
58. It is difficult to follow aIt is difficult to follow a
request as events andrequest as events and
callbacks arecallbacks are
processed [...]processed [...]
medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
59. [...] unhandled[...] unhandled
exceptions, andexceptions, and
incorrectly handledincorrectly handled
state changes [...]state changes [...]
These types of issuesThese types of issues
have proven to behave proven to be
quite difficult to debugquite difficult to debug
medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
62. java.lang.NullPointerException:
The mapper function returned a null value.
at io.reactivex.internal.functions.ObjectHelper.requir
at io.reactivex.internal.operators.flowable.FlowableMa
at io.reactivex.internal.subscriptions.ScalarSubscript
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.subscribers.LambdaSubscriber
at io.reactivex.internal.operators.flowable.FlowableIn
at io.reactivex.internal.operators.flowable.FlowableIn
at io.reactivex.internal.subscribers.LambdaSubscriber
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.subscribers.BasicFuseableSubs
at io.reactivex.internal.operators.flowable.FlowableJu
at io.reactivex.Flowable.subscribe(Flowable.java:12986
at io.reactivex.internal.operators.flowable.FlowableMa
at io.reactivex.Flowable.subscribe(Flowable.java:12986
at io.reactivex.internal.operators.flowable.FlowableMa
at io.reactivex.Flowable.subscribe(Flowable.java:12986
at io reactivex internal operators flowable FlowableMa
63. java.lang.NullPointerException:
The mapper returned a null value.
at java.util.Objects.requireNonNull(Objects.java:228)
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxJust$WeakScalarSubscript
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.LambdaSubscriber.onSubscribe
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxMapFuseable$MapFuseableS
at reactor.core.publisher.FluxJust.subscribe(FluxJust
at reactor.core.publisher.FluxMapFuseable.subscribe(Fl
at reactor.core.publisher.FluxMapFuseable.subscribe(Fl
at reactor.core.publisher.FluxMapFuseable.subscribe(Fl
at reactor.core.publisher.Flux.subscribe(Flux.java:657
at reactor.core.publisher.Flux.subscribeWith(Flux.java
at reactor.core.publisher.Flux.subscribe(Flux.java:656
at reactor.core.publisher.Flux.subscribe(Flux.java:652
at reactor.core.publisher.Flux.subscribe(Flux.java:649
65. play.api.http.HttpErrorHandlerExceptions$$anon$1:
Execution exception[[AskTimeoutExcepti
Ask timed out on
[Actor[akka://application/user/$a#-948
after [60000 ms]]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUs
at play.api.http.DefaultHttpErrorHandler.onServerError(Htt
at play.api.GlobalSettings$class.onError(GlobalSettings.sc
at play.api.DefaultGlobal$.onError(GlobalSettings.scala:2
at play.api.http.GlobalSettingsHttpErrorHandler.onServerEr
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon
at scala.runtime.AbstractPartialFunction.apply(AbstractPar
at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:2
at scala.util.Try$.apply(Try.scala:192) [scala-library-2.1
at scala.util.Failure.recover(Try.scala:216) [scala-librar
at scala.concurrent.Future$$anonfun$recover$1.apply(Future
at scala.concurrent.Future$$anonfun$recover$1.apply(Future
at scala.concurrent.impl.CallbackRunnable.run(Promise.scal
at play.api.libs.iteratee.Execution$trampoline$.executeSch
at play.api.libs.iteratee.Execution$trampoline$.execute(Ex
at scala concurrent impl CallbackRunnable executeWithValue
github.com/CogComp/open-eval/issues/186
66.
67. The best reactiveThe best reactive
system is single-system is single-
threaded (!)threaded (!)