How to apply some functional programming ideas in regular JavaScript.
1. Immutability
2. Simple functions
3. Not that simple functions
4. Combining OOP and FP
5. Functors
6. Monads
Great Tools Heavily Used In Japan, You Don't Know.Junichi Ishida
The document discusses Japanese Perl developers who attended YAPC::EU 2015. It introduces many popular Perl modules created by Japanese developers, such as WebService::Simple for making web service requests, Riji for creating blogs, and GrowthForecast for visualizing metrics graphs. It encourages attendees to talk to the Japanese developers about their work or any questions. It emphasizes that Japanese developers prioritize speed and simplicity in their modules due to their culture of valuing efficiency.
Feihong talks about PEP 3156 and basic usage of Tulip, the reference implementation.
Video: http://pyvideo.org/video/2194/asynchronous-io-in-python-3
Source code: https://github.com/feihong/tulip-talk/
This document discusses using Perl 6 with the Java Virtual Machine (JVM). It provides instructions for installing Perl 6 with JVM support and demonstrates various features like JSON processing, HTTP client/server, database access using SQLite and MySQL, calling Java methods, and building a basic GUI. Performance tests show startup is slow but HTTP server throughput is faster with JVM backend compared to MoarVM backend. Overall, the author finds Perl 6 on JVM to be practical for Java developers needing to access Java libraries and calls it potentially useful.
This document discusses Perl testing libraries and frameworks. It provides an overview of the history of Perl testing including Test::More and Test::Class. It also introduces some newer testing libraries like Test::Pretty, Test::Ika, and Test::Kantan that aim to improve on Test::Builder and provide additional features like BDD-style testing and improved output. The document encourages trying out these new testing libraries and frameworks.
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
In this talk, I will talk about why log files are horrible, logging log lines, and more structured performance metrics from large scale production applications as well as building reliable, scaleable and flexible large scale software systems in multiple languages.
Why (almost) all log formats are horrible will be explained, and why JSON is a good solution for logging will be discussed, along with a number of message queuing, middleware and network transport technologies, including STOMP, AMQP and ZeroMQ.
The Message::Passing framework will be introduced, along with the logstash.net project which the perl code is interoperable with. These are pluggable frameworks in ruby/java/jruby and perl with pre-written sets of inputs, filters and outputs for many many different systems, message formats and transports.
They were initially designed to be aggregators and filters of data for logging. However they are flexible enough to be used as part of your messaging middleware, or even as a replacement for centralised message queuing systems.
You can have your cake and eat it too - an architecture which is flexible, extensible, scaleable and distributed. Build discrete, loosely coupled components which just pass messages to each other easily.
Integrate and interoperate with your existing code and code bases easily, consume from or publish to any existing message queue, logging or performance metrics system you have installed.
Simple examples using common input and output classes will be demonstrated using the framework, as will easily adding your own custom filters. A number of common messaging middleware patterns will be shown to be trivial to implement.
Some higher level use-cases will also be explored, demonstrating log indexing in ElasticSearch and how to build a responsive platform API using webhooks.
Interoperability is also an important goal for messaging middleware. The logstash.net project will be highlighted and we'll discuss crossing the single language barrier, allowing us to have full integration between java, ruby and perl components, and to easily write bindings into libraries we want to reuse in any of those languages.
Erlang is a functional programming language built for concurrency, distribution, and fault tolerance. It uses an immutable data structure and avoids loops with tail recursion. The OTP framework provides tools like supervision trees, behaviors, and hot code swapping. While Erlang syntax looks like Prolog, it can integrate with Ruby via bridges or messaging and runs on Heroku. The document recommends resources for learning Erlang and OTP and participating in the local Erlang meetup.
Server::Starter is a daemon that allows hot-deployment of server programs. It was originally designed for Perl web applications but can now also be used to run Java web apps by having the Java Virtual Machine inherit the listening socket from the parent Server::Starter process. This new capability allows easy upgrading of the JVM version and shutdown of old processes when new ones are launched, though it does not currently work on Mac OS X.
This document describes EhTrace, a tool for tracing the execution of binary programs through hooking and branch stepping. EhTrace uses the Windows VEH exception handler to single step programs by setting flags in the CPU context. It can be used to analyze program control flow at the basic block level for purposes like malware analysis, debugging, and code coverage. The document discusses techniques for maintaining control during tracing and fighting attempts by the target program to detect or alter the tracing.
Lessons I Learned While Scaling to 5000 Puppet AgentsPuppet
Russ Johnson of StubHub talks about "Learning Lessons Scaling to 5000 Puppet Agents" at Puppet Camp San Francisco 2013. Find a Puppet Camp near you: puppetlabs.com/community/puppet-camp/
It is mainly about the multithreading and the multiprocessing in Python, and *in Python's flavor*.
It's also the share at Taipei.py [1].
[1] http://www.meetup.com/Taipei-py/events/220452029/
This document discusses writing a web application in Perl6. It summarizes implementing key functions like forking and waiting for child processes using NativeCall to call libc methods. It also proposes writing a C DLL for a Raw::Socket module to provide a BSD socket wrapper and using that to build an httpd with features like request parsing and pre-forking.
Node.js: Patterns and Opinions discusses Node.js principles and best practices. It emphasizes that Node.js is built on JavaScript and uses non-blocking I/O with callbacks to handle requests asynchronously. It recommends avoiding slowness, ignoring errors, and focusing on portability, small modular parts, and an open community approach. The future of Node.js involves continued improvements to core modules like HTTP and new versions of underlying technologies.
Stephen Donner from Mozilla presented at the London Selenium Meetup on November 5, 2010 about how Mozilla uses Selenium for automated testing. He discussed their journey from manual testing to setting up continuous integration with Hudson and implementing the page object model. He also covered their Python-based test runner and driver implementation and how they abstracted common page elements to reduce duplicated code. Donner concluded by discussing future plans like adding screen captures for failures and updating tests for Selenium 2.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
JUnit 4 Can it still teach us something? - Andrzej Jóźwiak - Kariera IT Łodź ...Andrzej Jóźwiak
It's been two years since JUnit 5 was released thus ending the incontestable rule of JUnit 4. But was this the definitive end of forth version? We are constantly encountering projects in which JUnit 4 is the only option either due to maintenance, company policies or developer habits.
Can JUnit 4 allow us to create specifications from our test code? Can we dip into property based testing and create theories about the our code? Are there any useful things that we usually don't remember about?
During the lecture, we will get acquainted with the less known features of JUnit 4 and discuss whether it is worth using them in the day to day work.
This document discusses new features and performance improvements in PHP 7.3. It introduces the author and their background with PHP. Key points include new features like heredoc syntax changes, trailing commas in function calls, and reference assignment in lists. Performance improvements include a faster garbage collector, SIMD optimizations, and benchmark results showing PHP's ongoing performance gains.
Developer-friendly taskqueues: What you should ask yourself before choosing oneSylvain Zimmer
This document summarizes key considerations for choosing a task queue system. It discusses task properties like idempotency and reentrancy. It covers performance factors like latency and throughput as well as consistency models. Common task queue systems like Celery, RQ, and MRQ are evaluated based on factors like performance, complexity, community support, and future plans. The document emphasizes thinking carefully about specific needs before choosing a system and being grateful for open source software.
This document discusses monads from both category-theoretic and computational viewpoints. From a category theory perspective, a monad is defined as a monoid in the category of endofunctors. From a computational perspective, monads are defined by return, bind, and monad laws. Monads can also be modeled as Kleisli triples or algebraic effects. Algebraic effects allow equational reasoning about monadic programs and a classification of effects based on whether they have finite rank. Mathematicians contribute new ideas to functional programming like algebraic effects and modular construction of effects.
Чем можно обмениваться данными: XMLHttpRequest, fetch(), Server-Sent Events, WebSocket, WebRTC. В чем отличия. Какие недостатки. Примеры задач, под которые они заточены.
Сейчас в мире веба каждый день появляются все новые и новые технологии, и наши проекты наполняются кучей новых библиотек, переписываются раз в 6 недель, становятся толстыми и неповоротливыми, и успеть выучить все практически нереально. А действительно ли это нужно?
Приёмы функционального программирования в обычном JavaScriptPavel Klimiankou
Что можно привнести в объектно-ориентированный JavaScript из функционального программирования, не переходя в секту свидетелей монад. В программе:
1. Immutability
2. Просто функции
3. Непросто функции
4. Комбинация ООП/ФП
5. Функторы
6. Ок, монады
Как сделать базовые физические штуки в JavaScript игре: гравитация, столкновения, трение, упругость, импульс, создание и разрушение сложных объектов. И.. машинки!
Примеры: http://pavel-klimiankou.github.io/physics-talk/
Код: http://github.com/pavel-klimiankou/physics-talk
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
В докладе будут рассмотрены приемы, практики и «фишки», которые полезно использовать для создания любого Frontend-приложения.
Мы поговорим об организации модульности и компонентов на примере приложений с Angular, React и Polymer. Обсудим, как использовать особенности JavaScript, и рассмотрим особые случаи, когда фреймворки действительно приходят на помощь.
Unlocking the Magic of Monads with Java 8JavaDayUA
This code-heavy session demystifies what monads are and outlines reasons why you would even want to introduce them into your code. We’ll take a look at the traditional definition for monads and offer a corresponding type definition in Java. We’ve selected a sample Java 8 implementation of a ‘Promise’ monad, which represents the result of async computation to help us answer practical questions about monads. Also, we'll go over the Laws of Monads and show that you can have a proper monad in Java, if you are brave enough to allow the underlying platform change the rules a bit. PS. You won’t be penalised or ridiculed during this session for your (lack of) Haskell knowledge!
Lecture demistifying monads. After talking a bit about Monoids and Functor I explain a functional design technics which is Monad through the refactoring of a JDBC code.
Talk given at The Developper Conference in Porto Alegre in 2014 (http://www.thedevelopersconference.com.br),
Code source of the presentation is in my github: https://github.com/toff63/monads-in-practice-tdc
Рано или поздно возникает необходимость в собственных инструментах по разным причинам: либо не хватает готовых, либо есть какая-то особенность в проекте. Разработка инструментов, работающих в браузере, является непростой задачей. Самое сложное — чтобы они умели работать удаленно, вне страницы. Это многих пугает — нужно много сделать и во многом разобраться. Но если большая часть проблем уже решена, и можно сосредоточиться лишь на основной функции инструмента? Что если такие инструменты смогут работать в произвольном WebView, будь оно встроено в браузер, редактор или другое приложение на любом устройстве? Доклад про удалённые инструменты: какие есть сложности и как их обойти, как перестать бояться и начать делать инструменты под свои задачи и технологический стек.
Lessons I Learned While Scaling to 5000 Puppet AgentsPuppet
Russ Johnson of StubHub talks about "Learning Lessons Scaling to 5000 Puppet Agents" at Puppet Camp San Francisco 2013. Find a Puppet Camp near you: puppetlabs.com/community/puppet-camp/
It is mainly about the multithreading and the multiprocessing in Python, and *in Python's flavor*.
It's also the share at Taipei.py [1].
[1] http://www.meetup.com/Taipei-py/events/220452029/
This document discusses writing a web application in Perl6. It summarizes implementing key functions like forking and waiting for child processes using NativeCall to call libc methods. It also proposes writing a C DLL for a Raw::Socket module to provide a BSD socket wrapper and using that to build an httpd with features like request parsing and pre-forking.
Node.js: Patterns and Opinions discusses Node.js principles and best practices. It emphasizes that Node.js is built on JavaScript and uses non-blocking I/O with callbacks to handle requests asynchronously. It recommends avoiding slowness, ignoring errors, and focusing on portability, small modular parts, and an open community approach. The future of Node.js involves continued improvements to core modules like HTTP and new versions of underlying technologies.
Stephen Donner from Mozilla presented at the London Selenium Meetup on November 5, 2010 about how Mozilla uses Selenium for automated testing. He discussed their journey from manual testing to setting up continuous integration with Hudson and implementing the page object model. He also covered their Python-based test runner and driver implementation and how they abstracted common page elements to reduce duplicated code. Donner concluded by discussing future plans like adding screen captures for failures and updating tests for Selenium 2.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
JUnit 4 Can it still teach us something? - Andrzej Jóźwiak - Kariera IT Łodź ...Andrzej Jóźwiak
It's been two years since JUnit 5 was released thus ending the incontestable rule of JUnit 4. But was this the definitive end of forth version? We are constantly encountering projects in which JUnit 4 is the only option either due to maintenance, company policies or developer habits.
Can JUnit 4 allow us to create specifications from our test code? Can we dip into property based testing and create theories about the our code? Are there any useful things that we usually don't remember about?
During the lecture, we will get acquainted with the less known features of JUnit 4 and discuss whether it is worth using them in the day to day work.
This document discusses new features and performance improvements in PHP 7.3. It introduces the author and their background with PHP. Key points include new features like heredoc syntax changes, trailing commas in function calls, and reference assignment in lists. Performance improvements include a faster garbage collector, SIMD optimizations, and benchmark results showing PHP's ongoing performance gains.
Developer-friendly taskqueues: What you should ask yourself before choosing oneSylvain Zimmer
This document summarizes key considerations for choosing a task queue system. It discusses task properties like idempotency and reentrancy. It covers performance factors like latency and throughput as well as consistency models. Common task queue systems like Celery, RQ, and MRQ are evaluated based on factors like performance, complexity, community support, and future plans. The document emphasizes thinking carefully about specific needs before choosing a system and being grateful for open source software.
This document discusses monads from both category-theoretic and computational viewpoints. From a category theory perspective, a monad is defined as a monoid in the category of endofunctors. From a computational perspective, monads are defined by return, bind, and monad laws. Monads can also be modeled as Kleisli triples or algebraic effects. Algebraic effects allow equational reasoning about monadic programs and a classification of effects based on whether they have finite rank. Mathematicians contribute new ideas to functional programming like algebraic effects and modular construction of effects.
Чем можно обмениваться данными: XMLHttpRequest, fetch(), Server-Sent Events, WebSocket, WebRTC. В чем отличия. Какие недостатки. Примеры задач, под которые они заточены.
Сейчас в мире веба каждый день появляются все новые и новые технологии, и наши проекты наполняются кучей новых библиотек, переписываются раз в 6 недель, становятся толстыми и неповоротливыми, и успеть выучить все практически нереально. А действительно ли это нужно?
Приёмы функционального программирования в обычном JavaScriptPavel Klimiankou
Что можно привнести в объектно-ориентированный JavaScript из функционального программирования, не переходя в секту свидетелей монад. В программе:
1. Immutability
2. Просто функции
3. Непросто функции
4. Комбинация ООП/ФП
5. Функторы
6. Ок, монады
Как сделать базовые физические штуки в JavaScript игре: гравитация, столкновения, трение, упругость, импульс, создание и разрушение сложных объектов. И.. машинки!
Примеры: http://pavel-klimiankou.github.io/physics-talk/
Код: http://github.com/pavel-klimiankou/physics-talk
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
В докладе будут рассмотрены приемы, практики и «фишки», которые полезно использовать для создания любого Frontend-приложения.
Мы поговорим об организации модульности и компонентов на примере приложений с Angular, React и Polymer. Обсудим, как использовать особенности JavaScript, и рассмотрим особые случаи, когда фреймворки действительно приходят на помощь.
Unlocking the Magic of Monads with Java 8JavaDayUA
This code-heavy session demystifies what monads are and outlines reasons why you would even want to introduce them into your code. We’ll take a look at the traditional definition for monads and offer a corresponding type definition in Java. We’ve selected a sample Java 8 implementation of a ‘Promise’ monad, which represents the result of async computation to help us answer practical questions about monads. Also, we'll go over the Laws of Monads and show that you can have a proper monad in Java, if you are brave enough to allow the underlying platform change the rules a bit. PS. You won’t be penalised or ridiculed during this session for your (lack of) Haskell knowledge!
Lecture demistifying monads. After talking a bit about Monoids and Functor I explain a functional design technics which is Monad through the refactoring of a JDBC code.
Talk given at The Developper Conference in Porto Alegre in 2014 (http://www.thedevelopersconference.com.br),
Code source of the presentation is in my github: https://github.com/toff63/monads-in-practice-tdc
Рано или поздно возникает необходимость в собственных инструментах по разным причинам: либо не хватает готовых, либо есть какая-то особенность в проекте. Разработка инструментов, работающих в браузере, является непростой задачей. Самое сложное — чтобы они умели работать удаленно, вне страницы. Это многих пугает — нужно много сделать и во многом разобраться. Но если большая часть проблем уже решена, и можно сосредоточиться лишь на основной функции инструмента? Что если такие инструменты смогут работать в произвольном WebView, будь оно встроено в браузер, редактор или другое приложение на любом устройстве? Доклад про удалённые инструменты: какие есть сложности и как их обойти, как перестать бояться и начать делать инструменты под свои задачи и технологический стек.
La teoria delle categorie sta alla programmazione funzionale come i GoF design pattern stanno a quella ad oggetti. Vista l’imminente introduzione delle lambda expression, è tempo anche per gli sviluppatori Java di imparare qualcosa in più riguardo ai più comuni pattern di programmazione funzionale. Le monadi sono probabilmente le più espressive (e forse le più incomprese) fra questi pattern, per cui lo scopo del talk è quello di introdurle, chiarendo con esempi pratici come e quando dovrebbero essere usate, sottolineando i loro vantaggi e mostrando come possono essere implementate in Java8.
- A monad from a category theoretic perspective is a monoid in the category of endofunctors. From a computational perspective, it is defined by return, bind, and monad laws.
- Kleisli triples and monads are equivalent based on work by Manes in 1976. Monads can be derived from algebraic operations and equations if they have finite rank based on work by Kelly and Power in 1993.
- Algebraic effects classify effects based on algebraic theories and provide a way to modularly combine effects through sums and products. This provides benefits for equational reasoning about monadic programs.
A very basic introductory presentation on Category Theory. Focus was on directly relating category theory to programming in a functional language. Scala was the language of choice for the presentation.
Basic coverage of Functors. Monads to follow in later talk.
Functional programming concepts like lambda calculus and category theory can help organize code in C# and F#. Lambda calculus uses expressions instead of statements to represent computations. This emphasizes composability over side effects. Category theory provides a framework for reasoning about program structure using concepts like functors that map types and morphisms that represent functions. Functors allow abstracting different computation contexts like tasks and sequences. Monads can then combine computations across contexts through applicative functors. Overall, functional programming brings a mathematical approach to code organization that emphasizes composability, pure functions, and handling side effects through abstraction rather than mutation.
The document discusses monads and functional programming concepts. It begins by explaining that monads are structures that put values in computational contexts. It then provides a technical definition of a monad involving endofunctors, natural transformations, and laws. Several examples are given to illustrate monads, including the Optional monad in Java to handle null values, and the Stream monad to represent sequences. The document advocates using monads to make aspects like errors, state, and effects explicit in a program's type system.
Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous and reactive, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Scala developers can use to debug live applications and resolve errors quickly. It explores crucial techniques for distributed debugging - and some of the pitfalls that make resolution much harder, and can lead to downtime. The talk also touches on some little-known JVM tools and capabilities that give you super-deep visibility at high scale without making you restart it or attach debuggers.
Project Jigsaw in JDK 9: Modularity Comes To JavaC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1WCnj0v.
Simon Ritter looks at the fundamentals of how modularity in Java works. He explains the impact project Jigsaw has on developers in terms of building their applications, as well as helping them to understand how things like encapsulation will change in JDK 9. Filmed at qconlondon.com.
Simon Ritter is the Deputy CTO at Azul and was previously a Java Technology Evangelist at Oracle Corporation. He continues to develop demonstrations that push the boundaries of Java for applications like gestural interfaces.
This document summarizes Tomas Doran's talk about his new Message::Passing Perl library for messaging, interoperability, and log aggregation. The library provides a framework for passing messages between different messaging systems and protocols. It uses a simple model where inputs produce events as hashes, outputs consume events, and filters can both produce and consume events. The core distribution includes roles for common inputs, outputs, and filters. Adaptors in separate modules provide connectivity to protocols like ZeroMQ, AMQP, STOMP, Elasticsearch, Redis PubSub, Syslog, MongoDB, and others. The goal is to simplify building complex message processing chains across different systems. Examples are provided to illustrate passing messages between protocols.
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)OpenBlend society
This document provides an introduction to Byteman and The Jokre. Byteman is a scriptable Java agent that allows testing code behavior at runtime without changing sources by simulating unexpected events. The Jokre is an optimization technique that modifies the Infinispan API to avoid unnecessary remote procedure calls. A demonstration shows using standard map operations while The Jokre fixes performance issues transparently. Questions are welcomed about these projects.
Lessons learned from building Demand Side Platformbbogacki
This document provides lessons learned from building a demand-side platform (DSP) at Bidlab. It discusses choosing appropriate tools and technologies, designing for asynchronous and batch processing, caching, monitoring, testing, and scaling the system. Key recommendations include using production data to test concepts, profiling and optimizing performance, automating environments, logging extensively, and having rollback plans for deployments.
With more businesses moving to cloud-based solutions everyday, we must re-think the strategies used to deploy Perl applications and related libraries, given the volatile aspects of the cloud and its constraints.
In this talk I go over the challenges posed by virtualised environments, and consider several solutions to them. The use cases are all related to Amazon's EC2, but will easily be adapted for GoGrid, Mosso, and others.
Multithreading and Parallelism on iOS [MobOS 2013]Kuba Břečka
This document summarizes an overview of parallelism and multithreading on iOS. It covers key topics like parallelism terminology, why parallelization is important, and how it can be achieved through multiple processes, threads, high-level abstractions like Grand Central Dispatch and operation queues, and instruction-level parallelism. It also discusses challenges like race conditions and synchronization issues that must be addressed with techniques like locks and mutexes when working with threads.
This document discusses using ZeroMQ and Elasticsearch for log aggregation. It proposes using ZeroMQ to transmit structured log data from application servers to a central Logstash server, which would then insert the logs into Elasticsearch for querying and analysis. This approach aims to provide a lightweight logging solution that doesn't block application servers like traditional logging to databases can. The document also provides background on tools like Logstash, Elasticsearch, and Splunk.
This document discusses various strategies for backing up MongoDB data to keep it safe. It recommends:
1. Using mongodump for simple backups that can restore quickly but may be inconsistent.
2. Setting up replication for high availability, but also using mongodump for backups and testing restore processes.
3. Taking snapshots of the data files for consistent backups, but this requires downtime and gaps can occur between snapshots.
4. Using the oplog for incremental, continuous backups to avoid gaps without downtime using tools like the Wordnik Admin Tools. Testing backups is strongly recommended.
This is a whirlwind tour of the FP land and is primarily meant for developers wanting to embark on their functional programming journey. Java is used to understand most of the concepts, however, where it falls short to explain certain concepts such as lazy evaluation, currying and partial function application, de-structuring and pattern-matching, Scala or Groovy or Clojure or even Haskell are used to demonstrate it.
The document discusses asynchronous programming with async and await in C#. It explains that async and await were introduced to address issues with threading like overhead and blocking. Async methods use threads efficiently from the thread pool rather than creating new threads. Await yields threads rather than blocking them. The document demonstrates async programming and best practices like using Task instead of async void. It recommends using async for I/O bound work since it can improve performance over synchronous code.
The document discusses using Apache Camel and Apache Karaf to build distributed, asynchronous systems in a similar way to AKKA. It provides examples of building a dynamic routing system using Camel routing and JMS, as well as a modular ETL system for processing CSV files using a configurable, hot-deployable mutation framework. The examples demonstrate how to achieve scalability, modularity, and asynchronous behavior without deep knowledge of the underlying technologies through an event-driven architecture based on messaging.
Aim of this presentation is not to make you masters in Java 8 Concurrency, but to help you guide towards that goal. Sometimes it helps just to know that there is some API that might be suitable for a particular situation. Make use of the pointers given to search more and learn more on those topics. Refer to books, Java API Documentation, Blogs etc. to learn more. Examples and demos for all cases discussed will be added to my blog www.javajee.com.
Polyglot and Functional Programming (OSCON 2012)Martijn Verburg
The document discusses introducing polyglot and functional programming concepts to Java developers. It explains that while Java is a powerful language, other JVM languages can offer advantages like more rapid development, concise coding, and taking advantage of non-object oriented and dynamic approaches. It provides examples of using functional concepts like map and filter to more declaratively operate on collections of data in a Java program. The document suggests exposing developers to these concepts through libraries and by experimenting with other JVM languages.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
The Scala programming language has been gaining significant traction over the last few years, being adopted by vastly different organizations from startups to large enterprises. While the language itself is pretty well understood and explained in tutorials and books, there is an apparent dearth of practical advice for new adopters on the best approach to integrating the new technology. In this talk I’ll attempt to offer such advice gathered over several years of production Scala use, focusing on tools, practices, patterns and the community, in the hope of making your transition into the Scala ecosystem easier and better-informed up front.
A talk given at JavaOne 2015 in San Francisco.
Distributed Model Validation with EpsilonSina Madani
Scalable performance is a major challenge with current model management tools. As the size and complexity of models and model management programs increases and the cost of computing falls, one solution for improving performance of model management programs is to perform computations on multiple computers. The developed prototype demonstrates a low-overhead data-parallel approach for distributed model validation in the context of an OCL-like language. The approach minimises communication costs by exploiting the deterministic structure of programs and can take advantage of multiple cores on each (heterogenous) machine with highly configurable computational granularity. Performance evaluation shows linear improvements with more machines and processor cores, being up to 340x faster than the baseline sequential program with 88 computers.
Mikhail Bortnyk, a senior developer at the Amoniac company, tells how to forget the pain of side effects and start to write your Erlang in Ruby.The presentation has been prepared for the Ruby Meditation conference #12.
This document provides an overview of functional programming concepts using Ruby. It discusses some of the problems with object-oriented programming like side effects and sharing of data and code. It then presents some ways to adopt a more functional style in Ruby, such as treating loops and data structures as functions. The document also introduces the Functional Ruby gem which adds features inspired by languages like Erlang and Haskell, including pattern matching, immutability and memoization. Overall, the document aims to demonstrate how functional programming principles can be applied in Ruby.
This document discusses functional programming and its benefits. It begins with an overview of functional programming concepts like pure functions, referential transparency, and immutability. It then covers functional programming techniques like higher order functions, recursion, composition, and pattern matching. Examples are given comparing imperative and functional implementations for quicksort and optional types. The document argues that functional programming leads to cleaner code by improving modularity, testability and adherence to SOLID principles. It recommends starting with functional features in existing languages and learning Haskell to fully embrace the functional paradigm.
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMPT.JUG
Sanne Grinovero presented on Hibernate Object/Grid Mapper (OGM), which provides an object-oriented interface for NoSQL databases using JPA. OGM stores entities as serialized tuples and uses Lucene/Hibernate Search for querying. It reuses Hibernate Core and is targeted at Infinispan but also works with other NoSQL databases. The goals are to encourage new data usage patterns with a familiar programming model and ease of use while pushing NoSQL exploration in enterprises.
Three tricks how to understand what's happening inside of .NET Core app running on Linux: perf, lttng and lldb. As unrelated bonus, last slides have a brief intro into Google Cloud Platform
Browser APIs for data exchange: types and applicationPavel Klimiankou
What browser APIs can we use for data exchange. XMLHttpRequest, fetch(), Server-Sent Events, WebSocket, WebRTC. What's the difference. Use cases for each of those.
Docker allows you to package applications with their dependencies into standardized units called containers that can run on any Linux server. Containers are more portable and efficient than virtual machines, starting in milliseconds and using less disk space. Docker makes it easy to deploy and run applications without having to rebuild environments and guarantees that an application will run the same regardless of the infrastructure it is running on.
Зачем нужен и что такое докер. Чем он отличается от виртуальных машин. Как создать, сохранить и запустить свой докер-контейнер.
Обновленная презентация с шестого 4front митапа в Минске.
How to create basic physic effects in JavaScript game: gravity, collisions, friction, restitution, impulse, compound objects and their destruction.
Examples: http://pavel-klimiankou.github.io/physics-talk/
Sources: http://github.com/pavel-klimiankou/physics-talk
Revolutionize Your Insurance Workflow with Claims Management SoftwareInsurance Tech Services
Claims management software enhances efficiency, accuracy, and satisfaction by automating processes, reducing errors, and speeding up transparent claims handling—building trust and cutting costs. Explore More - https://www.damcogroup.com/insurance/claims-management-software
A brief introduction to OpenTelemetry, with a practical example of auto-instrumenting a Java web application with the Grafana stack (Loki, Grafana, Tempo, and Mimir).
Plooma is a writing platform to plan, write, and shape books your wayPlooma
Plooma is your all in one writing companion, designed to support authors at every twist and turn of the book creation journey. Whether you're sketching out your story's blueprint, breathing life into characters, or crafting chapters, Plooma provides a seamless space to organize all your ideas and materials without the overwhelm. Its intuitive interface makes building rich narratives and immersive worlds feel effortless.
Packed with powerful story and character organization tools, Plooma lets you track character development and manage world building details with ease. When it’s time to write, the distraction-free mode offers a clean, minimal environment to help you dive deep and write consistently. Plus, built-in editing tools catch grammar slips and style quirks in real-time, polishing your story so you don’t have to juggle multiple apps.
What really sets Plooma apart is its smart AI assistant - analyzing chapters for continuity, helping you generate character portraits, and flagging inconsistencies to keep your story tight and cohesive. This clever support saves you time and builds confidence, especially during those complex, detail packed projects.
Getting started is simple: outline your story’s structure and key characters with Plooma’s user-friendly planning tools, then write your chapters in the focused editor, using analytics to shape your words. Throughout your journey, Plooma’s AI offers helpful feedback and suggestions, guiding you toward a polished, well-crafted book ready to share with the world.
With Plooma by your side, you get a powerful toolkit that simplifies the creative process, boosts your productivity, and elevates your writing - making the path from idea to finished book smoother, more fun, and totally doable.
Get Started here: https://www.plooma.ink/
Invited Talk at RAISE 2025: Requirements engineering for AI-powered SoftwarE Workshop co-located with ICSE, the IEEE/ACM International Conference on Software Engineering.
Abstract: Foundation Models (FMs) have shown remarkable capabilities in various natural language tasks. However, their ability to accurately capture stakeholder requirements remains a significant challenge for using FMs for software development. This paper introduces a novel approach that leverages an FM-powered multi-agent system called AlignMind to address this issue. By having a cognitive architecture that enhances FMs with Theory-of-Mind capabilities, our approach considers the mental states and perspectives of software makers. This allows our solution to iteratively clarify the beliefs, desires, and intentions of stakeholders, translating these into a set of refined requirements and a corresponding actionable natural language workflow in the often-overlooked requirements refinement phase of software engineering, which is crucial after initial elicitation. Through a multifaceted evaluation covering 150 diverse use cases, we demonstrate that our approach can accurately capture the intents and requirements of stakeholders, articulating them as both specifications and a step-by-step plan of action. Our findings suggest that the potential for significant improvements in the software development process justifies these investments. Our work lays the groundwork for future innovation in building intent-first development environments, where software makers can seamlessly collaborate with AIs to create software that truly meets their needs.
How AI Can Improve Media Quality Testing Across Platforms (1).pptxkalichargn70th171
Media platforms, from video streaming to OTT and Smart TV apps, face unprecedented pressure to deliver seamless, high-quality experiences across diverse devices and networks. Ensuring top-notch Quality of Experience (QoE) is critical for user satisfaction and retention.
Design by Contract - Building Robust Software with Contract-First DevelopmentPar-Tec S.p.A.
In the fast-paced world of software development, code quality and reliability are paramount. This SlideShare deck, presented at PyCon Italia 2025 by Antonio Spadaro, DevOps Engineer at Par-Tec, introduces the “Design by Contract” (DbC) philosophy and demonstrates how a Contract-First Development approach can elevate your projects.
Beginning with core DbC principles—preconditions, postconditions, and invariants—these slides define how formal “contracts” between classes and components lead to clearer, more maintainable code. You’ll explore:
The fundamental concepts of Design by Contract and why they matter.
How to write and enforce interface contracts to catch errors early.
Real-world examples showcasing how Contract-First Development improves error handling, documentation, and testability.
Practical Python demonstrations using libraries and tools that streamline DbC adoption in your workflow.
Insurance policy management software transforms complex, manual insurance operations into streamlined, efficient digital workflows, enhancing productivity, accuracy, customer service, and profitability for insurers. Visit https://www.damcogroup.com/insurance/policy-management-software for more details!
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...WSO2
Enterprises must deliver intelligent, cloud native applications quickly—without compromising governance or scalability. This session explores how an internal developer platform increases productivity via AI for code and accelerates AI-native app delivery via code for AI. Learn practical techniques for embedding AI in the software lifecycle, automating governance with AI agents, and applying a cell-based architecture for modularity and scalability. Real-world examples and proven patterns will illustrate how to simplify delivery, enhance developer productivity, and drive measurable outcomes.
Learn more: https://wso2.com/choreo
In a tight labor market and tighter economy, PMOs and resource managers must ensure that every team member is focused on the highest-value work. This session explores how AI reshapes resource planning and empowers organizations to forecast capacity, prevent burnout, and balance workloads more effectively, even with shrinking teams.
Automating Map Production With FME and PythonSafe Software
People still love a good paper map, but every time a request lands on a GIS team’s desk, it takes time to create that perfect, individual map—even when you're ready and have projects prepped. Then come the inevitable changes and iterations that add even more time to the process. This presentation explores a solution for automating map production using FME and Python. FME handles the setup of variables, leveraging GIS reference layers and parameters to manage details like map orientation, label sizes, and layout elements. Python takes over to export PDF maps for each location and template size, uploading them monthly to ArcGIS Online. The result? Fresh, regularly updated maps, ready for anyone to grab anytime—saving you time, effort, and endless revisions while keeping users happy with up-to-date, accessible maps.
Alt-lenders are scaling fast, but manual loan reconciliation is cracking under pressure. See how automation solves revenue leakage and compliance chaos.
https://www.taxilla.com/loan-repayment-reconciliation
FME as an Orchestration Tool - Peak of Data & AI 2025Safe Software
Processing huge amounts of data through FME can have performance consequences, but as an orchestration tool, FME is brilliant! We'll take a look at the principles of data gravity, best practices, pros, cons, tips and tricks. And of course all spiced up with relevant examples!
How to purchase, license and subscribe to Microsoft Azure_PDF.pdfvictordsane
Microsoft Azure is a cloud platform that empowers businesses with scalable computing, data analytics, artificial intelligence, and cybersecurity capabilities.
Arguably the biggest hurdle for most organizations is understanding how to get started.
Microsoft Azure is a consumption-based cloud service. This means you pay for what you use. Unlike traditional software, Azure resources (e.g., VMs, databases, storage) are billed based on usage time, storage size, data transfer, or resource configurations.
There are three primary Azure purchasing models:
• Pay-As-You-Go (PAYG): Ideal for flexibility. Billed monthly based on actual usage.
• Azure Reserved Instances (RI): Commit to 1- or 3-year terms for predictable workloads. This model offers up to 72% cost savings.
• Enterprise Agreements (EA): Best suited for large organizations needing comprehensive Azure solutions and custom pricing.
Licensing Azure: What You Need to Know
Azure doesn’t follow the traditional “per seat” licensing model. Instead, you pay for:
• Compute Hours (e.g., Virtual Machines)
• Storage Used (e.g., Blob, File, Disk)
• Database Transactions
• Data Transfer (Outbound)
Purchasing and subscribing to Microsoft Azure is more than a transactional step, it’s a strategic move.
Get in touch with our team of licensing experts via [email protected] to further understand the purchasing paths, licensing options, and cost management tools, to optimize your investment.
The rise of e-commerce has redefined how retailers operate—and reconciliation...Prachi Desai
As payment flows grow more fragmented, the complexity of reconciliation and revenue recognition increases. The result? Mounting operational costs, silent revenue leakages, and avoidable financial risk.
Spot the inefficiencies. Automate what’s slowing you down.
https://www.taxilla.com/ecommerce-reconciliation
23. HOW TO REDUCE TEMPTATION
• Use const or let instead of var
• filter/map/reduce instead of for
• Object.freeze - to prevent object mutation
24. IMMUTABILITY: PROS
• Simpler code
• Less bugs
• Atomic object construction (object is either fully initialised, or doesn’t exist)
• Less temporal coupling (when order of initialisation matters)
• Simpler caching
• Thread safety*
25. IMMUTABILITY: CONS
• Higher CPU impact (more things to do)
• Higher memory impact (and more GC)
• Higher brain impact (OOP often comes with state)
49. NOT THAT SIMPLE FUNCTIONS: PROS
• Flexibility in using and reusing functions
• Functions tend to be smaller
• Memoization (“Simple functions” PROS list was already too
long)
50. NOT THAT SIMPLE FUNCTIONS: CONS
• Sometimes code looks cryptic
• Might introduce negative performance impact
51. COMBINING OOP AND FP
Shell - OOP, IO, side-effects
Core - FP, logic, pure functions
Core
Shell
57. SHELL/CORE: PROS
• Main bugs will come from the shell, which is small
• Core is easy to test. Unit tests should be enough
• Shell is the one that needs integration tests (shell is small!)
• Command query responsibility segregation out of the box