This is a short introduction to one of the newest and noisiest additions to the functional family. Chances are you have heard about Elixir before: created six years ago by José Valim, it has emerged rapidly in the Erlang ecosystem, attracting lots of attention. But what's so special about it? What's all the fuzz about? This talk will offer you a few selected sips for you to get a taste... but beware! You may want to drink all the bottle: if so, you may end up following the white rabbit down the hole and wake up in the Erlang wonderland.
This document discusses advanced Java debugging using bytecode. It explains that bytecode is the low-level representation of Java programs that is executed by the Java Virtual Machine (JVM). It shows examples of decompiling Java source code to bytecode instructions and evaluating bytecode on a stack. Various bytecode visualization and debugging tools are demonstrated. Key topics like object-oriented aspects of bytecode and the ".class" file format are also covered at a high-level.
This document provides an overview and examples of using Google Guava, an open-source Java library that includes common libraries useful for writing Java code. It highlights some key classes and methods in Guava, including annotations, strings, collections, I/O, and more. Code samples demonstrate using Guava features like predicates, sets, files, and InetAddress utilities.
Programming JVM Bytecode with JitescriptJoe Kutner
Every Java developer should have a good working knowledge of JVM bytecode. Its fun, it can help you diagnose problems, improve performance, and even empowers you to build your own languages. No matter what kind of Java application you work on, youll get something out of this talk. Well start with bytecode fundamentals. Youll learn how the most common operations work and see visual representations of how the JVM executes that code. The second part of the talk will introduce Jitescript, a Java library for generating bytecode. You learn how to use Jitescript with some plain old Java code to create your own JVM languages.
This document provides an overview of Guava, a common libraries project from Google that includes utilities for collections, caching, predicates and functions, I/O, and more. It highlights features like Optional for avoiding null checks, immutable collections, filtering collections, transforming collections, caching, and string/object utilities. The document also discusses when and where Guava can be used, such as for temporary collections, avoiding null checks, and leveraging a popular library maintained by others.
This document discusses lambda functions and new features coming to Java 8, including lambda functions (anonymous functions), method references, default methods in interfaces, and functional interfaces with a single abstract method. It provides examples of lambda functions and explores how they can be used for filtering, mapping, chaining, and iterating over collections.
The document discusses Scala as a potential replacement for Java on the JVM. It provides quotes from several influential Java developers who express their view that Scala is the most capable replacement for Java currently available on the JVM, and the momentum behind Scala is growing. The document also briefly outlines an agenda for introducing Scala, covering basic syntax, patterns, functions, classes and traits.
The document provides an overview of Kotlin collections including lists, sets, and maps. It discusses collection interfaces like List, Set, and Map and their characteristics. The document then demonstrates various operations that can be performed on collections like filtering, mapping, partitioning, zipping, associating, and more through examples. It also compares the differences between iterables and sequences in Kotlin.
This document discusses advanced Java debugging using bytecode. It explains that bytecode is the low-level representation of Java programs that is executed by the Java Virtual Machine (JVM). It shows examples of decompiling Java source code to bytecode instructions and evaluating bytecode on a stack. Various bytecode visualization and debugging tools are demonstrated. Key topics like object-oriented aspects of bytecode and the ".class" file format are also covered at a high-level.
This document provides an overview and examples of using Google Guava, an open-source Java library that includes common libraries useful for writing Java code. It highlights some key classes and methods in Guava, including annotations, strings, collections, I/O, and more. Code samples demonstrate using Guava features like predicates, sets, files, and InetAddress utilities.
Programming JVM Bytecode with JitescriptJoe Kutner
Every Java developer should have a good working knowledge of JVM bytecode. Its fun, it can help you diagnose problems, improve performance, and even empowers you to build your own languages. No matter what kind of Java application you work on, youll get something out of this talk. Well start with bytecode fundamentals. Youll learn how the most common operations work and see visual representations of how the JVM executes that code. The second part of the talk will introduce Jitescript, a Java library for generating bytecode. You learn how to use Jitescript with some plain old Java code to create your own JVM languages.
This document provides an overview of Guava, a common libraries project from Google that includes utilities for collections, caching, predicates and functions, I/O, and more. It highlights features like Optional for avoiding null checks, immutable collections, filtering collections, transforming collections, caching, and string/object utilities. The document also discusses when and where Guava can be used, such as for temporary collections, avoiding null checks, and leveraging a popular library maintained by others.
This document discusses lambda functions and new features coming to Java 8, including lambda functions (anonymous functions), method references, default methods in interfaces, and functional interfaces with a single abstract method. It provides examples of lambda functions and explores how they can be used for filtering, mapping, chaining, and iterating over collections.
The document discusses Scala as a potential replacement for Java on the JVM. It provides quotes from several influential Java developers who express their view that Scala is the most capable replacement for Java currently available on the JVM, and the momentum behind Scala is growing. The document also briefly outlines an agenda for introducing Scala, covering basic syntax, patterns, functions, classes and traits.
The document provides an overview of Kotlin collections including lists, sets, and maps. It discusses collection interfaces like List, Set, and Map and their characteristics. The document then demonstrates various operations that can be performed on collections like filtering, mapping, partitioning, zipping, associating, and more through examples. It also compares the differences between iterables and sequences in Kotlin.
The document summarizes the key differences between JUnit 4 and JUnit 5 (alpha). Some of the main changes in JUnit 5 include updated annotations like @Test, support for lambda-based assertions using Hamcrest matchers, assumptions and exception testing capabilities, and support for nested and parameterized tests. JUnit 5 also overhauls extension mechanisms and introduces extension points for customization. While still in development, JUnit 5 is moving to an API based on extensions and customization points rather than the runner approach used in JUnit 4.
The document contains code examples demonstrating various Elixir concepts like defining modules and functions, pattern matching, pipes, macros, and more. It shows interactive sessions in IEx testing concepts like strings, binaries, lists, tuples, pattern matching, recursion, comprehensions, and more. Some examples include defining a module to calculate factorials recursively, working with binaries and binary patterns, building a poker hand evaluator, and using quote and unquote in macros.
This document discusses custom operators for RxJava 2. It provides an example of using an extension function to filter an Observable by a predicate and return the first matching element. It then describes issues with compose and how Kotlin can help address them. Finally, it presents a filterObservable operator that filters an Observable of Observables based on the results of a predicate observable. Pseudocode and a link to source code are provided.
Курс "Программирование на Java". Лекция 07 "Бонус - Головоломки".
Java Puzzlers. Синхронизация и многопоточность. Примитивы. Объекты и классы. Исключения и финализация.
МФТИ, 2016 год. Лектор - Лаврентьев Федор Сергеевич
The document discusses various Apache Commons utilities including configuration, lang, IO, and bean utilities. It provides examples of using the Configuration utility to load property files, the StringUtils class for string operations, ToStringBuilder for object toString methods, ArrayUtils for array operations, IOUtils for input/output streams, and making classes immutable by preventing field mutation.
This document provides examples of refactoring Java code to use Guava libraries and utilities. It shows code snippets before and after refactoring to use Guava's Objects, Preconditions, Collections, Splitter, Joiner, Ranges and other utilities to clean up code and make it more readable and robust. Refactoring includes using Guava to validate arguments, create immutable collections, handle nulls safely, join/split strings, and represent ranges.
The document discusses features of the Kotlin programming language. It provides examples of how Kotlin simplifies object-oriented programming tasks like data classes and property access compared to Java. Data classes in Kotlin can auto-generate getters, setters, equals(), hashCode() and toString() methods. Kotlin also allows functional-style programming with properties like immutable state and avoiding null references.
This document provides an overview of arrays, generics, wildcards, and lambda expressions in Java. It discusses array initialization and multi-dimensional arrays. It explains generics and how they avoid type casting. It covers wildcard types, subclass/superclass constraints, and limitations of generics. The document also demonstrates lambda expressions and functional interfaces like Comparator. It provides examples of common data structures in Java like List, Set, and Map as well as streams and iterators.
This document summarizes new features in Swift 2 including guard/defer statements for flow control, protocol extensions for default implementations, and error handling improvements like throwing and catching errors. It also mentions Swift becoming open source with its source code released under a permissive license and contributions accepted from the community, including ports for Linux. Nest is provided as an example open source Swift web framework project on GitHub.
Giordano Scalzo introduces himself as an iOS developer and provides a swift introduction to the Swift programming language. He demonstrates various Swift features through code examples, including functions, closures, classes, structs, enums, generics, and operator overloading. He also discusses unit testing support in Swift through XCTest and Quick. To conclude, he proposes coding a reverse polish notation calculator to demonstrate applying these Swift concepts.
The Ring programming language version 1.5.3 book - Part 27 of 184Mahmoud Samir Fayed
This document discusses Ring's ODBC functions for connecting to databases. It describes functions for initializing an ODBC connection, getting lists of ODBC drivers and data sources, connecting to and executing queries on a data source, and closing an ODBC connection. Examples are given to print lists of available ODBC drivers and data sources on a system.
The document discusses how monads can be used to prevent bugs and handle side effects like missing data in code. It provides examples of using Optional to represent missing values and chaining operations with flatMap to avoid nested if-checks. Monads allow sequencing computations in a declarative way while handling problems in the data or failures transparently.
The core libraries you always wanted - Google GuavaMite Mitreski
Google Guava is a set of core Java libraries that includes collections, caching, predicates and functions, primitives support, and other utilities. It aims to fill in gaps in the Java class library and improve on Java SE classes. Some key features include optional types, immutable collections, caching utilities, character matching, and functional interfaces like predicates and functions. Guava provides utilities to avoid null checks, filter collections, transform values, and load resources. It also includes hashing, bloom filters, and other utilities. Using Guava can make code cleaner and safer by leveraging well-tested utilities rather than reimplementing functionality.
GeeCON 2017 - TestContainers. Integration testing without the hassleAnton Arhipov
TestContainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
An overview how to realize code generation of languages on the JVM that implement other class layouts than the Java programming languages. As an example, the inline-mock-maker for Mockito is discussed which supports languages like Kotlin that make any property final by default.
Slides for presentation on Google Guava I gave at the Near Infinity (www.nearinfinity.com) 2013 spring conference.
The associated sample code is on GitHub at https://github.com/sleberknight/google-guava-samples
The document discusses features and enhancements in Groovy 1.8.0, including improved AST processing, new logging capabilities using the @Log annotation, support for method locks with @WithReadLock and @WithWriteLock, interruptible loops, memoization of recursive functions, and integration with JSON parsing. Slides provide code examples and diagrams to illustrate these Groovy language and library improvements.
The document discusses Scala and why some developers think it could replace Java on the JVM. It provides quotes from several influential developers, including the creator of Java and Groovy, expressing their view that Scala is the best candidate to replace Java in the long run. Specifically, James Gosling says that if he had to pick another language on the JVM besides Java, it would be Scala. Charlie Nutter describes Scala as the current heir apparent to the Java throne and the momentum behind Scala is now unquestionable. James Strachan says that if he had seen the Programming in Scala book in 2003, he may have never created Groovy and that his tip for a long term replacement for Java is
Ever wonder what this "new" Kotlin thing is? Curious what the syntax looks like? Unsure how to implement this at your own company? Or do you just want to know what Nick and Cody's favorite things are about this language?
All that and (maybe) more are revealed in Privet Kotlin.
The document summarizes the key differences between JUnit 4 and JUnit 5 (alpha). Some of the main changes in JUnit 5 include updated annotations like @Test, support for lambda-based assertions using Hamcrest matchers, assumptions and exception testing capabilities, and support for nested and parameterized tests. JUnit 5 also overhauls extension mechanisms and introduces extension points for customization. While still in development, JUnit 5 is moving to an API based on extensions and customization points rather than the runner approach used in JUnit 4.
The document contains code examples demonstrating various Elixir concepts like defining modules and functions, pattern matching, pipes, macros, and more. It shows interactive sessions in IEx testing concepts like strings, binaries, lists, tuples, pattern matching, recursion, comprehensions, and more. Some examples include defining a module to calculate factorials recursively, working with binaries and binary patterns, building a poker hand evaluator, and using quote and unquote in macros.
This document discusses custom operators for RxJava 2. It provides an example of using an extension function to filter an Observable by a predicate and return the first matching element. It then describes issues with compose and how Kotlin can help address them. Finally, it presents a filterObservable operator that filters an Observable of Observables based on the results of a predicate observable. Pseudocode and a link to source code are provided.
Курс "Программирование на Java". Лекция 07 "Бонус - Головоломки".
Java Puzzlers. Синхронизация и многопоточность. Примитивы. Объекты и классы. Исключения и финализация.
МФТИ, 2016 год. Лектор - Лаврентьев Федор Сергеевич
The document discusses various Apache Commons utilities including configuration, lang, IO, and bean utilities. It provides examples of using the Configuration utility to load property files, the StringUtils class for string operations, ToStringBuilder for object toString methods, ArrayUtils for array operations, IOUtils for input/output streams, and making classes immutable by preventing field mutation.
This document provides examples of refactoring Java code to use Guava libraries and utilities. It shows code snippets before and after refactoring to use Guava's Objects, Preconditions, Collections, Splitter, Joiner, Ranges and other utilities to clean up code and make it more readable and robust. Refactoring includes using Guava to validate arguments, create immutable collections, handle nulls safely, join/split strings, and represent ranges.
The document discusses features of the Kotlin programming language. It provides examples of how Kotlin simplifies object-oriented programming tasks like data classes and property access compared to Java. Data classes in Kotlin can auto-generate getters, setters, equals(), hashCode() and toString() methods. Kotlin also allows functional-style programming with properties like immutable state and avoiding null references.
This document provides an overview of arrays, generics, wildcards, and lambda expressions in Java. It discusses array initialization and multi-dimensional arrays. It explains generics and how they avoid type casting. It covers wildcard types, subclass/superclass constraints, and limitations of generics. The document also demonstrates lambda expressions and functional interfaces like Comparator. It provides examples of common data structures in Java like List, Set, and Map as well as streams and iterators.
This document summarizes new features in Swift 2 including guard/defer statements for flow control, protocol extensions for default implementations, and error handling improvements like throwing and catching errors. It also mentions Swift becoming open source with its source code released under a permissive license and contributions accepted from the community, including ports for Linux. Nest is provided as an example open source Swift web framework project on GitHub.
Giordano Scalzo introduces himself as an iOS developer and provides a swift introduction to the Swift programming language. He demonstrates various Swift features through code examples, including functions, closures, classes, structs, enums, generics, and operator overloading. He also discusses unit testing support in Swift through XCTest and Quick. To conclude, he proposes coding a reverse polish notation calculator to demonstrate applying these Swift concepts.
The Ring programming language version 1.5.3 book - Part 27 of 184Mahmoud Samir Fayed
This document discusses Ring's ODBC functions for connecting to databases. It describes functions for initializing an ODBC connection, getting lists of ODBC drivers and data sources, connecting to and executing queries on a data source, and closing an ODBC connection. Examples are given to print lists of available ODBC drivers and data sources on a system.
The document discusses how monads can be used to prevent bugs and handle side effects like missing data in code. It provides examples of using Optional to represent missing values and chaining operations with flatMap to avoid nested if-checks. Monads allow sequencing computations in a declarative way while handling problems in the data or failures transparently.
The core libraries you always wanted - Google GuavaMite Mitreski
Google Guava is a set of core Java libraries that includes collections, caching, predicates and functions, primitives support, and other utilities. It aims to fill in gaps in the Java class library and improve on Java SE classes. Some key features include optional types, immutable collections, caching utilities, character matching, and functional interfaces like predicates and functions. Guava provides utilities to avoid null checks, filter collections, transform values, and load resources. It also includes hashing, bloom filters, and other utilities. Using Guava can make code cleaner and safer by leveraging well-tested utilities rather than reimplementing functionality.
GeeCON 2017 - TestContainers. Integration testing without the hassleAnton Arhipov
TestContainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
An overview how to realize code generation of languages on the JVM that implement other class layouts than the Java programming languages. As an example, the inline-mock-maker for Mockito is discussed which supports languages like Kotlin that make any property final by default.
Slides for presentation on Google Guava I gave at the Near Infinity (www.nearinfinity.com) 2013 spring conference.
The associated sample code is on GitHub at https://github.com/sleberknight/google-guava-samples
The document discusses features and enhancements in Groovy 1.8.0, including improved AST processing, new logging capabilities using the @Log annotation, support for method locks with @WithReadLock and @WithWriteLock, interruptible loops, memoization of recursive functions, and integration with JSON parsing. Slides provide code examples and diagrams to illustrate these Groovy language and library improvements.
The document discusses Scala and why some developers think it could replace Java on the JVM. It provides quotes from several influential developers, including the creator of Java and Groovy, expressing their view that Scala is the best candidate to replace Java in the long run. Specifically, James Gosling says that if he had to pick another language on the JVM besides Java, it would be Scala. Charlie Nutter describes Scala as the current heir apparent to the Java throne and the momentum behind Scala is now unquestionable. James Strachan says that if he had seen the Programming in Scala book in 2003, he may have never created Groovy and that his tip for a long term replacement for Java is
Ever wonder what this "new" Kotlin thing is? Curious what the syntax looks like? Unsure how to implement this at your own company? Or do you just want to know what Nick and Cody's favorite things are about this language?
All that and (maybe) more are revealed in Privet Kotlin.
The Ring programming language version 1.6 book - Part 29 of 189Mahmoud Samir Fayed
This document provides information on ODBC functions in Ring programming language. It describes functions such as odbc_init() to create an ODBC handle, odbc_drivers() to get a list of ODBC drivers, odbc_datasources() to get data sources, odbc_close() to free resources, and others like odbc_connect(), odbc_execute(), odbc_fetch() for connecting, executing queries and fetching results. An example shows how to print the list of ODBC drivers installed using odbc_drivers() function.
The Ring programming language version 1.8 book - Part 32 of 202Mahmoud Samir Fayed
This document summarizes Ring programming language functions for working with ODBC databases:
- odbc_init() creates an ODBC handle
- odbc_drivers() and odbc_datasources() return lists of available ODBC drivers and data sources
- odbc_close() frees resources associated with an ODBC handle
- Other functions like odbc_connect(), odbc_execute(), odbc_fetch() allow executing SQL queries and retrieving results
- Transaction functions like odbc_commit() and odbc_rollback() manage transactions
An example shows how to print the list of ODBC drivers available after initializing a handle.
Specs2 is a Scala library for writing acceptance and unit tests. It uses a domain specific language (DSL) approach based on behavior-driven development (BDD). Specs2 specifications are structured, immutable, and control dependencies. Unit specs extend Specification and are mutable, while acceptance specs extend Specification and are functional. Specs2 provides matchers, mock objects, and forms to make assertions in tests. Tests can be run with JUnit or from SBT with different output formats.
Well-architected libraries for functional programming are at once immensely beautiful and practical. They are simple but extraordinarily powerful, helping users solve their problems by snapping together Lego-like building blocks, each of which has just one purpose. Yet, there is a surprising dearth of material on how developers can construct their own well-architected functional code. Many functional programming tutorials talk discuss type safety and making illegal states unrepresentable, but few speak on the subject of good functional interface design.
In this presentation, John A. De Goes takes to the stage to discuss a nebulous and underrated tool in the arsenal of every functional programmer. Called *orthogonality*, this tool allows programmers to craft the building blocks of their functional code at "right angles", so so they can be reasoned about simply and composed predictably to solve complex problems. John introduces the concept of orthogonality, looking at its geometric and algebraic origins, presents a way to measure orthogonality, and then walks through a number of interface examples, comparing non-orthogonal designs with orthogonal ones.
By the end of the session, attendees should have a newfound appreciation for how important orthogonality is to constructing good functional interfaces, and they should develop the early stages of an intuition about how to slice up a complex problem into core, single-purpose, composable building blocks.
Technical operations is plagued with an unhealthy infatuation of typically untested, imperative code with a high reliance on shared mutable state using dynamically typed languages such as Ruby, Python, Bash, and - ugh - remember Perl? :) In an age where building reliable infrastructure to elastically scale applications and services are paramount to business success, we need to start rethinking the infrastructure engineer’s toolkit and guiding principles. This talk will take a look at applying various functional techniques to building and automating infrastructure. From functional package management and congruent configuration to declarative cloud provisioning we’ll see just how practical these techniques typically used in functional programming for applications can be used to help build more robust and predictable infrastructures. While specific code examples will be given, the emphasis of the talk will be on guiding principles and functional design.
This document provides an overview of the Ruby programming language, including its history, philosophy, characteristics, applications, culture, syntax, built-in types, classes and methods, accessors, control flow, including code, modules, metaprogramming, web frameworks, web servers, shell scripting, testing, JRuby, and calling between Java and Ruby.
Spock is a testing framework written in Groovy that allows developers to write tests in a business readable domain specific language. It combines the benefits of specification-based testing and mock-based testing. Some key features of Spock include the ability to write feature methods with given, when, and then blocks; use fixtures for setup and cleanup; parameterize tests with data tables in where blocks; make assertions about interactions with mock objects; and write tests in a BDD style with descriptive language. Spock's tests are themselves a good source of documentation on how to write and use Spock tests.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
What can be done with Java, but should better be done with Erlang (@pavlobaron)Pavlo Baron
Erlang excels at building distributed, fault-tolerant, concurrent applications due to its lightweight process model and built-in support for distribution. However, Java is more full-featured and is generally a better choice for applications that require more traditional object-oriented capabilities or need to interface with existing Java libraries and frameworks. Both languages have their appropriate uses depending on the requirements of the specific application being developed.
Guava Overview. Part 1 @ Bucharest JUG #1 Andrei Savu
Guava is a Java library developed by Google that includes common libraries such as collections, caching, primitives support, concurrency libraries, and generalized utility classes. The talk covered the basic utilities in Guava including using and avoiding null, preconditions, common object utilities, ordering, and primitive array utilities. It also discussed the collections in Guava including immutable collections, new collection types like multisets and multimaps, collection utilities, and ways to extend the collections framework with decorators.
A slightly-modified version of my IPRUG talk, this time for the BT DevCon5 developer conference at Adastral Park on 25 May 2012.
The main changes are the addition of the Ruby section and the increased number of HHGTTG references in honour of towel day.
An introduction to Kotlin for advanced Android beginners, covering command-line compilation of Kotlin files, conditional logic, val/var, basic functions, higher order functions, recursion.
Front end fundamentals session 1: javascript coreWeb Zhao
This document provides an overview of JavaScript fundamentals presented in a session on JavaScript core concepts. It defines what JavaScript is, demonstrates basic syntax and data types including numbers, strings, Booleans, objects and arrays. It also covers control structures, functions, scope, and built-in objects like Date. The document contains examples and links to interactive demos of JavaScript concepts.
Ola, ChatGPT... que carreira sería boa para min?Laura M. Castro
Cumprimos case un ano da popularización das intelixencias artificiais xeneradoras en xeral, e ChatGPT en particular.
Nesta presentación exploramos os nesgos poden apresentarse nas respostas producidas por estes sistemas, a fin de visibilizar, divulgar e sensibilizar ao respecto.
Introdución histórica e de alto nivel á evolución da IA, e a popularidade actual das IAs xerativas ou xeradoras de contido, e presentación dun caso de estudo sobre os nesgos de xénero en ChatGPT.
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...Laura M. Castro
As intelixencias artificiais xeneradoras están xa producindo textos que pasan a formar parte do noso mundo. A lingua (escrita, neste caso) é un piar fundamental da cutura, polo que cabe preguntarnos que tipo de "axentes creadores de cultura" son estes sistemas.
Para visibilizar esta cuestión, preséntase un experimento que ten como protagonista ChatGPT e como contexto, as mulleres (novas) en STEM.
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...Laura M. Castro
Cryptpad (https://cryptpad.org) es una alternativa a plataformas privativas de almacenamiento y edición colaborativa en la nube de documentos.
En 2022, en una pequeña asociación cultural gallega (Semente Corunha) decidimos adoptar Cryptpad como herramienta. Lamentablemente, meses después tuvimos que reconocer nuestro fracaso.
Esta charla pretende ilustrar las razones que condujeron al desenlace, desde un punto de vista constructivo, que pueda servir de inspiración y aprendizaje para la comunidad.
We all have heard that functional programming requires a change of mind. But... do we really know what does mean? How does it go beyond learning about pattern-matching, tail recursion, gen_server and supervisors? How does it reflect in the way we approach problems and design solutions? We will address these and other questions, and discuss to which extent our BEAM hammer can turn everything into a lightweight, concurrent nail.
Elixir é unha desas linguaxes que soan moito nos últimos tempos, un dos 'new cool kids on the block'. Nesta charla, vemos unha introdución a Elixir desde a perspectiva de quen está familiarizada/o co mundo Java: teñen algo en común? cales son as diferenzas? Quen sabe... se tes demasiada cafeína no teu sistema, quizais te animes a probar esta nova brebaxe!
So I used Erlang... is my system as scalable as they say it'd be?Laura M. Castro
The document discusses property-based testing of Erlang programs for scalability. It explains that Erlang is well-suited for building scalable systems due to its lightweight process model and support for distribution. The author implemented an echo server in Erlang and tested it using property-based testing with PropEr, generating over a million random test cases. Testing showed the echo server could handle the large number of tests within an hour on a standard laptop. Similar tests were conducted on supervised and distributed versions of the echo server. The testing demonstrated that property-based testing is an effective way to empirically validate the scalability of Erlang applications.
Automatic generation of UML sequence diagrams from test counterexamplesLaura M. Castro
The document summarizes a presentation given at the ACM SIGPLAN Erlang Workshop in 2016 about automatically generating UML sequence diagrams from QuickCheck test counterexamples in Erlang. It discusses the challenges of interpreting counterexamples to find bugs, presents an example of a failing phone exchange test case, and shows how the counterexample could be shrunk and represented as a UML sequence diagram. Future work ideas are also proposed, like handling components and state diagrams.
Making property-based testing easier to read for humansLaura M. Castro
Agile practices have taught us that both stakeholder involvement and early testing are key to quality software. However, it is usually the case that tools for good communication are not that good for testing, and vice-versa.
In this talk, readSpec (one of the results of the PF7 EU PROWESS project) is presented, a tool that attempts to fill in this gap.
Erlang as a supporting technology for teaching Software ArchitectureLaura M. Castro
At university, it is usually the case that students are introduced to programming languages to the extent in which they serve a teaching purpose usually related to acquiring some paradigm-bounded programming skills. Thus, they (we) learn to code our first source lines using PASCAL, are introduced to C programming to handle memory and threads, enter the Java world hand-in-hand with UML and object-orientation. However, Erlang is seldom the choice for learning about the declarative paradigm, for which ML or Haskell are often preferred candidates.
Two years ago, the University of A Coruña (UDC) stepped out of this box and decided to use Erlang as supporting technology for teaching Software Architecture. In this subject, we go beyond programming and, in helping students build up a more abstract, system-wide design competence, we make them face the strengths and weaknesses of different architectures (client-server, multi-layered, repository, pipe & filter, master-slave, peer-to-peer) in terms of non-functional requirements (availability, flexibility, performance, security). In this setting, Erlang has worked as an excellent tool in order to quickly prototype and compare systems of different architectural nature, as we will illustrate in more detail during this talk.
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...Laura M. Castro
Property-based testing is an already known testing methodology for the Erlang community, with tools such as QuickCheck and PropEr being highly popular among Erlang developers in the last few years. However, they are commonly used for functional testing... Which are the challenges in using them for testing non-functional properties of software? What other tools or libraries are there to help Erlang developers?
Experiencias Industriales con Programación DeclarativaLaura M. Castro
Building software imposes a set of general challenges, which are complemented by those specific to the business context. The use of declarative programming as key implementation technology provides several advantages in both areas, a fact that has not gone unnoticed by companies of all sizes and domains.
In particular, the functional programming language Erlang is getting big momentum in the last years thanks to its built-in capabilities for high availability, robustness, maintainability.
This presentation shows some practical examples and discusses the role that the implementation technology (Erlang) played in their successful outcome.
Functional programming goes to Hollywood... and around the world!Laura M. Castro
In a moment in which clearly declarative languages and functional programming use are on the increase in industry, this is a recap of the most recent success stories of the MADS (Models and Applications of Distributed Systems) research group, at the Department of Computer Science (University of A Coruña, Spain) in this area.
Failover and takeover contingency mechanisms for network partition and node f...Laura M. Castro
This document summarizes a presentation given at the 2012 Erlang Workshop on failover and takeover contingency mechanisms for network partitions and node failures. The presentation discusses the ADVERTISE distributed system for advertisement transmission, which experienced issues with frequent node failures and network partitions when initially deployed on virtual machines. To address this, the system was redesigned to require a minimum of 3 nodes and implement checks to detect node failures and partitions in order to avoid inconsistencies. The new design has been running successfully with no reported incidents for the past 4 months.
The document discusses LaTeX and provides an introduction and overview. It explains that LaTeX is a document preparation system for producing high-quality documents. It describes the basic structure of LaTeX documents, including the preamble and body, and covers creating documents, formatting text, and editing elements like fonts, lists, tables, and figures. The document is intended as an introduction or primer on LaTeX and how it can be used to create different types of documents.
Improving software development using Erlang/OTPLaura M. Castro
The document discusses a case study of improving software development using Erlang/OTP. It includes an introduction, case study details, methodology sections on requirements analysis and design, paradigm implementation, and testing. The case study involves developing a complex insurance management application. The methodology incorporates object-oriented analysis with a declarative paradigm in Erlang. Testing focuses on unit testing data types using property-based testing with QuickCheck.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving
Manufacturing custom quality metal nameplates and badges involves several standard operations. Processes include sheet prep, lithography, screening, coating, punch press and inspection. All decoration is completed in the flat sheet with adhesive and tooling operations following. The possibilities for creating unique durable nameplates are endless. How will you create your brand identity? We can help!
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/how-axelera-ai-uses-digital-compute-in-memory-to-deliver-fast-and-energy-efficient-computer-vision-a-presentation-from-axelera-ai/
Bram Verhoef, Head of Machine Learning at Axelera AI, presents the “How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-efficient Computer Vision” tutorial at the May 2024 Embedded Vision Summit.
As artificial intelligence inference transitions from cloud environments to edge locations, computer vision applications achieve heightened responsiveness, reliability and privacy. This migration, however, introduces the challenge of operating within the stringent confines of resource constraints typical at the edge, including small form factors, low energy budgets and diminished memory and computational capacities. Axelera AI addresses these challenges through an innovative approach of performing digital computations within memory itself. This technique facilitates the realization of high-performance, energy-efficient and cost-effective computer vision capabilities at the thin and thick edge, extending the frontier of what is achievable with current technologies.
In this presentation, Verhoef unveils his company’s pioneering chip technology and demonstrates its capacity to deliver exceptional frames-per-second performance across a range of standard computer vision networks typical of applications in security, surveillance and the industrial sector. This shows that advanced computer vision can be accessible and efficient, even at the very edge of our technological ecosystem.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
AppSec PNW: Android and iOS Application Security with MobSFAjin Abraham
Mobile Security Framework - MobSF is a free and open source automated mobile application security testing environment designed to help security engineers, researchers, developers, and penetration testers to identify security vulnerabilities, malicious behaviours and privacy concerns in mobile applications using static and dynamic analysis. It supports all the popular mobile application binaries and source code formats built for Android and iOS devices. In addition to automated security assessment, it also offers an interactive testing environment to build and execute scenario based test/fuzz cases against the application.
This talk covers:
Using MobSF for static analysis of mobile applications.
Interactive dynamic security assessment of Android and iOS applications.
Solving Mobile app CTF challenges.
Reverse engineering and runtime analysis of Mobile malware.
How to shift left and integrate MobSF/mobsfscan SAST and DAST in your build pipeline.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
4. Born in 1986, released ’98
Concurrency-oriented
◦ Lightweight, isolated
processes,
message-passing
communication
Multiplatform VM
Transparent distribution
OTP behaviours
Hot code swap
3
5. Born in 1986, released ’98
Concurrency-oriented
◦ Lightweight, isolated
processes,
message-passing
communication
Multiplatform VM
Transparent distribution
OTP behaviours
Hot code swap
3
6. Born in 2011
Runs on the Erlang VM
Can invoke Erlang code
Born in 1986, released ’98
Concurrency-oriented
◦ Lightweight, isolated
processes,
message-passing
communication
Multiplatform VM
Transparent distribution
OTP behaviours
Hot code swap
3
35. ELIXIR, THE NOT-SO-HIDDEN PATH TO ERLANG
Concurrency & distribution
(+scalability, robustness...) made easy!
16
36. ELIXIR, THE NOT-SO-HIDDEN PATH TO ERLANG
Concurrency & distribution
(+scalability, robustness...) made easy!
Enjoy the power of the actor model
16
37. ELIXIR, THE NOT-SO-HIDDEN PATH TO ERLANG
Concurrency & distribution
(+scalability, robustness...) made easy!
Enjoy the power of the actor model
Take advantage of OTP & other tools
◦ Behaviours
◦ Static analysis, stateful property-based
testing, etc.
16