The document discusses OTP (Open Telecom Platform) and Elixir. It provides an overview of OTP including that it is mature, battle tested for 16-18 years, and uses actors, object orientation, and design patterns. It then discusses behaviors and callback modules in OTP, the importance of initialization steps and parameter/return value contracts, using supervisors and strategies, and handling failures in Elixir applications. Code examples are provided for GenServers and supervisors.
200 Days of Code, Beginner Track, Month 5Ryne McCall
Presentation I delivered on 27-MAY-2015 at the Boston PHP meetup (http://www.meetup.com/bostonphp/) for month 5 of the 200 Days of Code (http://200doc.org/) beginner track.
This document discusses the problems with asynchronous JavaScript and callbacks, and introduces promises as a better abstraction. It explains that promises represent asynchronous values, and allow asynchronous code to be written in a more synchronous and readable way using chained .then() calls. It provides examples of how common asynchronous patterns like error handling, parallel operations, and transforming return values can be implemented cleanly with promises. Finally, it discusses popular promise libraries and the upcoming native ES6 Promise implementation.
The document discusses basic operators, loops, and control statements in Java. It covers arithmetic, relational, logical, bitwise, and assignment operators. The core loops covered are for, while, and do-while loops, including their syntax and usage. Break and continue statements are also discussed, explaining how break exits the current block/loop and continue skips to the next iteration. The document provides examples of each concept and proposes programming tasks to demonstrate understanding.
Don't Be STUPID, Grasp SOLID - DrupalCon PragueAnthony Ferrara
This document discusses object-oriented programming and design principles. It begins by describing the classical and modern views of objects, with the classical view being that an object represents a physical thing and the modern view being that an object is a collection of related behaviors. The document then discusses how polymorphism and encapsulation are better approaches than inheritance alone. It introduces the SOLID principles for creating high-quality APIs, including the single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion principles. Finally, it discusses how to recognize "bad" or "stupid" code that violates these principles.
This document discusses techniques for writing domain-specific languages (DSLs) in Go. It begins by providing an example of a DSL for service configuration in Go using self-referential functions. It then compares DSLs in Ruby, noting issues like lack of type safety and syntax errors. The document goes on to discuss using code generation in Go with go:generate to reduce boilerplate like error handling. It provides an example of a code generator that automatically adds error handling based on error variable names. In summary, the document explores writing DSLs in Go and techniques like code generation to improve developer experience.
Excellent is a static analysis gem that finds the nasty lines in your code. It implements a comprehensive set of checks for possibly buggy parts of your app that would otherwise make it into your repo and eventually to the production server.
The document provides an introduction to Elixir and OTP (Open Telecom Platform). It discusses key aspects of Elixir including its functional and meta-programming capabilities. It also covers OTP including processes as the concurrency model, and common behaviors like GenServer, Supervisor, and Application. GenServer is used for building servers, Supervisor supervises child processes, and Application initializes everything at the top level. Overall the document serves as a high-level overview of the Elixir language and OTP framework for building distributed, fault-tolerant applications.
The document discusses RSpec, a behavior-driven development (BDD) framework for testing Ruby code. It describes how RSpec allows writing tests in a natural language style using "should" statements. Examples are provided for different types of RSpec tests, including model, controller, and view tests. Shared examples, custom matchers, and integration with Cucumber for writing tests in a storytelling format are also covered. The document concludes with information on installing and running RSpec and generating reports from test results.
200 Days of Code, Beginner Track, Month 5Ryne McCall
Presentation I delivered on 27-MAY-2015 at the Boston PHP meetup (http://www.meetup.com/bostonphp/) for month 5 of the 200 Days of Code (http://200doc.org/) beginner track.
This document discusses the problems with asynchronous JavaScript and callbacks, and introduces promises as a better abstraction. It explains that promises represent asynchronous values, and allow asynchronous code to be written in a more synchronous and readable way using chained .then() calls. It provides examples of how common asynchronous patterns like error handling, parallel operations, and transforming return values can be implemented cleanly with promises. Finally, it discusses popular promise libraries and the upcoming native ES6 Promise implementation.
The document discusses basic operators, loops, and control statements in Java. It covers arithmetic, relational, logical, bitwise, and assignment operators. The core loops covered are for, while, and do-while loops, including their syntax and usage. Break and continue statements are also discussed, explaining how break exits the current block/loop and continue skips to the next iteration. The document provides examples of each concept and proposes programming tasks to demonstrate understanding.
Don't Be STUPID, Grasp SOLID - DrupalCon PragueAnthony Ferrara
This document discusses object-oriented programming and design principles. It begins by describing the classical and modern views of objects, with the classical view being that an object represents a physical thing and the modern view being that an object is a collection of related behaviors. The document then discusses how polymorphism and encapsulation are better approaches than inheritance alone. It introduces the SOLID principles for creating high-quality APIs, including the single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion principles. Finally, it discusses how to recognize "bad" or "stupid" code that violates these principles.
This document discusses techniques for writing domain-specific languages (DSLs) in Go. It begins by providing an example of a DSL for service configuration in Go using self-referential functions. It then compares DSLs in Ruby, noting issues like lack of type safety and syntax errors. The document goes on to discuss using code generation in Go with go:generate to reduce boilerplate like error handling. It provides an example of a code generator that automatically adds error handling based on error variable names. In summary, the document explores writing DSLs in Go and techniques like code generation to improve developer experience.
Excellent is a static analysis gem that finds the nasty lines in your code. It implements a comprehensive set of checks for possibly buggy parts of your app that would otherwise make it into your repo and eventually to the production server.
The document provides an introduction to Elixir and OTP (Open Telecom Platform). It discusses key aspects of Elixir including its functional and meta-programming capabilities. It also covers OTP including processes as the concurrency model, and common behaviors like GenServer, Supervisor, and Application. GenServer is used for building servers, Supervisor supervises child processes, and Application initializes everything at the top level. Overall the document serves as a high-level overview of the Elixir language and OTP framework for building distributed, fault-tolerant applications.
The document discusses RSpec, a behavior-driven development (BDD) framework for testing Ruby code. It describes how RSpec allows writing tests in a natural language style using "should" statements. Examples are provided for different types of RSpec tests, including model, controller, and view tests. Shared examples, custom matchers, and integration with Cucumber for writing tests in a storytelling format are also covered. The document concludes with information on installing and running RSpec and generating reports from test results.
MobiWeb provides two-factor authentication through one-time PINs (OTPs) sent via SMS. This adds security over simple usernames and passwords and helps reduce fraud. The process works by MobiWeb generating an OTP when a user tries to login, sending it via SMS to the user's phone, and validating the OTP when the user enters it. This solution has benefits like increased security, reduced fraud losses, and a better customer experience compared to hardware tokens. MobiWeb has been providing global SMS services since 1999 through direct connections to mobile networks worldwide.
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"PromptWorks
The document shows examples of pattern matching, case expressions, macros, and queries in Elixir. It demonstrates matching on different data types like lists, maps, tuples, and structs. It also shows examples of macros, case expressions, queries, and defining functions with pattern matching.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Phoenix, an Elixir web framework. It compares Phoenix to Ruby on Rails, noting they are both MVC frameworks but Phoenix emphasizes less magic. The core idea of Phoenix is that a web application is a function that takes a URL as input and returns HTML. It outlines how routes, controllers, models, views, and channels work in Phoenix, using Ecto as the ORM. Pattern matching and OTP behaviors like GenServer are also highlighted.
The document discusses concurrency in Elixir using OTP (Open Telecom Platform). OTP provides libraries and design principles for writing concurrent applications in Erlang/Elixir. It includes components like supervisors, applications, agents, tasks and GenServers that help manage concurrency. Supervisors oversee worker processes in a supervision tree, restarting them based on configured restart strategies if they fail. State is managed by agents and GenServers. This allows applications to have many concurrent processes that are fault tolerant and can seamlessly spread across machines.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
Small lightning talk with some practical advice on how we integrated a Phoenix application in our general application landscape with a rails monolith and some frontend clients.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
My presentation at SDPHP went well. I definitely could improve on this presentation.
I missed the mark on the general workflow. How the customers and developers are impacted.
I made assumptions that I shouldn't have, such as everyone already knew what Two Factor Authentication (2fa) was.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Bottleneck in Elixir Application - Alexey Osipenko Elixir Club
This document appears to be a presentation in a foreign language (not English) about performance bottlenecks in Elixir applications. It introduces the presenter, Alexey, and mentions that while Elixir has advantages over JavaScript for asynchronous programming, high loads can still cause performance problems. It concludes by thanking the audience and providing Alexey's contact information.
This document provides an overview of the Elixir programming language. It discusses Elixir's functional, concurrent, and fault-tolerant features. It also summarizes basic Elixir tools like IEx and Mix, concepts like pattern matching and immutability, and language constructs including types, operators, functions, lists, maps, strings, and control flow. The document aims to introduce fundamental Elixir basics.
Erlang - Concurrent Language for Concurrent WorldZvi Avraham
This document provides biographical information about Zvi Avraham, the founder and CEO of ZADATA Ltd. It then discusses concurrency-oriented programming (COP) and how it differs from object-oriented programming (OOP). COP focuses on processes rather than objects and emphasizes location transparency, isolation of processes without shared memory, and message passing between processes. The document outlines principles of COP like "share nothing" and "no mutable state." It discusses the Erlang programming language, which is designed for COP. Key aspects of Erlang covered include lightweight processes, distribution, fault tolerance, hot code reloading, and the BEAM virtual machine. Tools for Erlang like OTP, libraries, and debuggers are also
The document provides an overview of Erlang and its features for building scalable and fault-tolerant systems. It discusses how Erlang uses lightweight processes, message passing, and supervision to allow for high concurrency. It also covers how Erlang enables hot code upgrading and distribution across nodes.
The document discusses the Erlang programming language and Open Telecom Platform (OTP). It provides an overview of Erlang's history and capabilities, including its support for concurrency, robustness, distribution, hot code loading, and other features. It also describes how Erlang is used to build large, fault-tolerant systems for telecommunications and other applications.
A short introduction to Elixir presented by Chi-chi Ekweozor at Manchester UK's MadLab on 20 February.
Learn how to use the ubiquitous pipeline operator |> to consume functions as data, pattern matching, modules, lists and other language constructs.
The document discusses various approaches for exposing instance variables from controllers to views in Ruby on Rails applications. It compares the pros and cons of using helper_method, decent_exposure, and obviews for this purpose. Examples are provided showing how to expose a post object from a PostsController to views using these different approaches. The discussion concludes by noting that the obviews gem for exposing instance variables is being released on RubyGems.
Ultimate Node.js countdown: the coolest Application Express examplesAlan Arentsen
Node.js is hot and that's not without a reason. There are numerous examples of large websites using Node.js and there is some pretty cool stuff out there.
Since Application Express is officially 'Awesome' and Node.js is 'hot', why not combine the two? With node-oracledb and websockets you can do awesome things, but there is more Node.js has to offer!
In this presentation you will get a short introduction on Node.js. After that I will show you a handful of Node.js applications in Application Express sorted on awesomeness from cool to sub zero.
MobiWeb provides two-factor authentication through one-time PINs (OTPs) sent via SMS. This adds security over simple usernames and passwords and helps reduce fraud. The process works by MobiWeb generating an OTP when a user tries to login, sending it via SMS to the user's phone, and validating the OTP when the user enters it. This solution has benefits like increased security, reduced fraud losses, and a better customer experience compared to hardware tokens. MobiWeb has been providing global SMS services since 1999 through direct connections to mobile networks worldwide.
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"PromptWorks
The document shows examples of pattern matching, case expressions, macros, and queries in Elixir. It demonstrates matching on different data types like lists, maps, tuples, and structs. It also shows examples of macros, case expressions, queries, and defining functions with pattern matching.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Phoenix, an Elixir web framework. It compares Phoenix to Ruby on Rails, noting they are both MVC frameworks but Phoenix emphasizes less magic. The core idea of Phoenix is that a web application is a function that takes a URL as input and returns HTML. It outlines how routes, controllers, models, views, and channels work in Phoenix, using Ecto as the ORM. Pattern matching and OTP behaviors like GenServer are also highlighted.
The document discusses concurrency in Elixir using OTP (Open Telecom Platform). OTP provides libraries and design principles for writing concurrent applications in Erlang/Elixir. It includes components like supervisors, applications, agents, tasks and GenServers that help manage concurrency. Supervisors oversee worker processes in a supervision tree, restarting them based on configured restart strategies if they fail. State is managed by agents and GenServers. This allows applications to have many concurrent processes that are fault tolerant and can seamlessly spread across machines.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
Small lightning talk with some practical advice on how we integrated a Phoenix application in our general application landscape with a rails monolith and some frontend clients.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
My presentation at SDPHP went well. I definitely could improve on this presentation.
I missed the mark on the general workflow. How the customers and developers are impacted.
I made assumptions that I shouldn't have, such as everyone already knew what Two Factor Authentication (2fa) was.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Bottleneck in Elixir Application - Alexey Osipenko Elixir Club
This document appears to be a presentation in a foreign language (not English) about performance bottlenecks in Elixir applications. It introduces the presenter, Alexey, and mentions that while Elixir has advantages over JavaScript for asynchronous programming, high loads can still cause performance problems. It concludes by thanking the audience and providing Alexey's contact information.
This document provides an overview of the Elixir programming language. It discusses Elixir's functional, concurrent, and fault-tolerant features. It also summarizes basic Elixir tools like IEx and Mix, concepts like pattern matching and immutability, and language constructs including types, operators, functions, lists, maps, strings, and control flow. The document aims to introduce fundamental Elixir basics.
Erlang - Concurrent Language for Concurrent WorldZvi Avraham
This document provides biographical information about Zvi Avraham, the founder and CEO of ZADATA Ltd. It then discusses concurrency-oriented programming (COP) and how it differs from object-oriented programming (OOP). COP focuses on processes rather than objects and emphasizes location transparency, isolation of processes without shared memory, and message passing between processes. The document outlines principles of COP like "share nothing" and "no mutable state." It discusses the Erlang programming language, which is designed for COP. Key aspects of Erlang covered include lightweight processes, distribution, fault tolerance, hot code reloading, and the BEAM virtual machine. Tools for Erlang like OTP, libraries, and debuggers are also
The document provides an overview of Erlang and its features for building scalable and fault-tolerant systems. It discusses how Erlang uses lightweight processes, message passing, and supervision to allow for high concurrency. It also covers how Erlang enables hot code upgrading and distribution across nodes.
The document discusses the Erlang programming language and Open Telecom Platform (OTP). It provides an overview of Erlang's history and capabilities, including its support for concurrency, robustness, distribution, hot code loading, and other features. It also describes how Erlang is used to build large, fault-tolerant systems for telecommunications and other applications.
A short introduction to Elixir presented by Chi-chi Ekweozor at Manchester UK's MadLab on 20 February.
Learn how to use the ubiquitous pipeline operator |> to consume functions as data, pattern matching, modules, lists and other language constructs.
The document discusses various approaches for exposing instance variables from controllers to views in Ruby on Rails applications. It compares the pros and cons of using helper_method, decent_exposure, and obviews for this purpose. Examples are provided showing how to expose a post object from a PostsController to views using these different approaches. The discussion concludes by noting that the obviews gem for exposing instance variables is being released on RubyGems.
Ultimate Node.js countdown: the coolest Application Express examplesAlan Arentsen
Node.js is hot and that's not without a reason. There are numerous examples of large websites using Node.js and there is some pretty cool stuff out there.
Since Application Express is officially 'Awesome' and Node.js is 'hot', why not combine the two? With node-oracledb and websockets you can do awesome things, but there is more Node.js has to offer!
In this presentation you will get a short introduction on Node.js. After that I will show you a handful of Node.js applications in Application Express sorted on awesomeness from cool to sub zero.
Talk delivered at the Munich PHP User Group. An overview of the features of Elixir that may be more interesting for a PHP developer, so we focus in the platform, the cheap processes of the Erlang Virtual Machine, the philosophy of Let It Crash and how to model problems with trees of processes, and possible use cases.
High Performance web apps in Om, React and ClojureScriptLeonardo Borges
The document discusses using Om and React for building high performance web user interfaces. It begins with an overview of React, including how it uses virtual DOM and efficient diff algorithms. It then introduces Om as a ClojureScript interface for React that allows leveraging immutable data structures for even faster rendering. A basic counter component is demonstrated in both React JSX and equivalent Om. Larger examples show building reusable editable components and an app with speakers/sessions data and undo functionality using Om.
This document provides an overview of functional reactive programming (FRP) and compositional event systems (CES). It discusses how FRP approaches handling time-varying values like regular values. It presents an example of modeling game movements reactively using key press events. It also demonstrates how CES can be used to handle asynchronous workflows by turning network responses into observable streams. The document compares CES to other approaches like core.async and discusses benefits of CES like supporting multiple subscribers.
Advanced Topics in Continuous DeploymentMike Brittain
Like what you've read? We're frequently hiring for a variety of engineering roles at Etsy. If you're interested, drop me a line or send me your resume: mike@etsy.com.
http://www.etsy.com/careers
DC |> Elixir Meetup - Going off the Rails into Elixir - Dan IvovichSmartLogic
Presentation from DC |> Elixir, March 19, 2019. Covered transitioning from Ruby on Rails to Elixir and Phoenix, and why developers want to make that transition, and why management should be supportive of that transition.
Achievement Unlocked: Drive development, increase velocity, and write blissfu...All Things Open
Presented at: All Things Open 2019
Presented by: Gleb Bahmutov, Cypress.io
Find the original slides: https://cypress.slides.com/cypress-io/achievement-unlocked
This presentation is by Doug Crockford, I'm reposting it here from this Google Blog post: http://googlecode.blogspot.com/2009/03/doug-crockford-javascript-good-parts.html
The document discusses fault tolerance in Elixir and Erlang. Some key points discussed include: accepting that failures will occur and focusing on the normal case; letting processes crash gracefully and handling crashes through supervision; using tools like monitors, links, and supervisors to restart crashed processes and maintain fault tolerance; common mistakes like poor supervision structures and not handling expected errors properly; and benefits like less code, fewer bugs, and faster fixes through crash-and-restart approaches to fault tolerance. The document provides an overview of these concepts and best practices for building robust and resilient Elixir systems.
ElixirConf 2019 - Your Guide to Understand the Initial Commit of a Phoenix Pr...Jorge Bejar
Everyone knows that the Phoenix framework makes web development a breeze, and for this reason, it is tempting to start adding code and more code right after running `mix phx.new`, building upon the original files and structure brought by the initial setup.
This talk proposes to thoroughly inspect the pieces that compose the backbone of a recently created application, which is no more than the result of running `mix phx.new` . It is a journey that will make us more conscious of what is being added to our “Initial Commit”. Even better, we will be able to make changes right after creating our project if it makes sense. We will be obsessed to understand each line of the critical code, being able to explain how it is working, what is the responsibility of each part and what could be removed or change depending on our specific need.
Nothing stops you from blindly accepting what Phoenix gives you as a starting point, but I believe that understanding what is going on from the beginning provides us fundamental insights that are useful during all the life of the project. It is crucial to know what your framework does behind the scenes, to fully take advantage of it.
RubyConf Portugal 2014 - Why ruby must go!Gautam Rege
The document discusses the Go programming language and how it differs from Ruby. It provides examples of Go code demonstrating type declarations, embedded types, exported variables and functions, and variable redeclaration. It also discusses some concepts in Go like interfaces, channels, and concurrency that are different from Ruby. The document suggests that Go teaches programmers awareness about variables, types, and errors that can improve Ruby code.
The document discusses the benefits of using the Erlang programming language. It highlights Erlang's abilities in horizontal and vertical scalability, hot swapping of code, asynchronous processing, supervision, live debugging, predictability, and requiring 4-10x less code that is faster to create, easier to reason about, and has fewer bugs. It compares Erlang favorably to other languages in terms of scalability, speed, and reliability due to its built-in concurrency, error handling, fault detection and recovery capabilities.
The document discusses the state pattern in software design. It explains that state patterns are used to encapsulate objects to represent certain states and define state transitions. The document provides examples of objects that could use state patterns like an enemy in a game that changes states between idle and running. It also discusses challenges in applying state patterns like defining state transitions and managing state object memory.
Why scala is not my ideal language and what I can do with thisRuslan Shevchenko
- The document discusses some of the author's criticisms of Scala, including its use of implicit parameters to configure runtime behavior, and lack of good support for asynchronous programming.
- The author proposes some workarounds, like annotating imports to avoid implicit conflicts, and patching the compiler to add more information to Future exceptions. However, the ideal solution would be language changes or improvements to asynchronous abstractions like Async.
- Overall, the author argues that Scala is not ideal for some use cases like asynchronous programming, but provides some workarounds people can use in the meantime. The best solutions require changes to the language and standard library.
Similar to Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014 (20)
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
1. Elixir Elevated!
The Ups and Downs of OTP
Greg Vaughn!
gvaughn@gmail.com!
twitter: @gregvaughn, github/irc: gvaughn
2. Student of Elixir and OTP!
Hobbying with Elixir almost 13 months!
Texan!
Professional Programmer of 20 years!
Across 6 languages!
Employed by LivingSocial
3. Student of Elixir and OTP!
Hobbying with Elixir almost 13 months!
Texan!
Professional Programmer of 20 years!
Across 6 languages!
Employed by LivingSocial
LivingSocial is Hiring!
6. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
7. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
Object Oriented (NOT class oriented)
8. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
Object Oriented (NOT class oriented)
Actor
9. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
Object Oriented (NOT class oriented)
Actor
Framework (Hollywood Principle)
10. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
Object Oriented (NOT class oriented)
Actor
Framework (Hollywood Principle)
Design Patterns
11. OTP is …
Mature / Battle Tested for 16 (18?) years
Microservices
Object Oriented (NOT class oriented)
Actor
Framework (Hollywood Principle)
Design Patterns
Robust
12. object oriented
OOP to me means only messaging, local
retention and protection and !
hiding of state-process, and extreme
late-binding of all things. — Alan Kay
13. object oriented
OOP to me means only messaging, local
retention and protection and !
hiding of state-process, and extreme
late-binding of all things. — Alan Kay
functional
a style of building the structure and elements of
computer programs that treats computation as
the evaluation of mathematical functions and
avoids state and mutable data. — Wikipedia
14. object oriented
OOP to me means only messaging, local
retention and protection and !
hiding of state-process, and extreme
late-binding of all things. — Alan Kay
functional
a style of building the structure and elements of
computer programs that treats computation as
the evaluation of mathematical functions and
avoids state and mutable data. — Wikipedia
concurrent
The conceptually simultaneous
execution of more than one sequential
program on a computer or network of
computers. — McGraw-Hill Sci & Tech
Dictionary
16. Behaviours: Don’t call us, we’ll call you
defmodule MyCallback do
use GenServer
end
iex> {:ok, pid} = GenServer.start(MyCallback, [])
17. Behaviours: Don’t call us, we’ll call you
defmodule MyCallback do
use GenServer
end
iex> {:ok, pid} = GenServer.start(MyCallback, [])
defmodule GenServer do
defmacro __using__(_) do
quote do
@behaviour :gen_server
!
def init(args), do: {:ok, args}
!
def handle_cast(msg, state), do: {:stop, {:bad_cast, msg}, state}
!
def handle_call(msg, _from, state), do: {:stop, {:bad_call, msg}, state}
!
def handle_info(_msg, state), do: {:noreply, state}
!
def terminate(_reason, _state), do: :ok
!
def code_change(_old, state, _extra), do: {:ok, state}
!
defoverridable [init: 1, handle_call: 3, handle_info: 2,
handle_cast: 2, terminate: 2, code_change: 3]
end
end
…
end
18. defmodule MyCallback do
use GenServer
@initial_state %{}
!
def start_link do
GenServer.start_link(__MODULE__, @initial_state)
end
!
def init(arg) do
state = arg
{:ok, state}
end
!
def do_it(pid, param) do
GenServer.call(pid, {:do_it, param})
end
!
def handle_call({:do_it, param}, _from, state) do
payload = get_payload(param, state)
new_state = update_state(param, state)
{:reply, payload, new_state}
end
!
defp get_payload(param, state), do: “I DONE DID IT!”
!
defp update_state(param, state), do: state
end
19. defmodule MyCallback do
use GenServer
@initial_state %{}
!
def start_link do
GenServer.start_link(__MODULE__, @initial_state)
end
!
def init(arg) do
state = arg
{:ok, state}
end
!
def do_it(pid, param) do
GenServer.call(pid, {:do_it, param})
end
!
def handle_call({:do_it, param}, _from, state) do
payload = get_payload(param, state)
new_state = update_state(param, state)
{:reply, payload, new_state}
end
!
defp get_payload(param, state), do: “I DONE DID IT!”
!
defp update_state(param, state), do: state
end
20. defmodule MyCallback do
use GenServer
@initial_state %{}
!
def start_link do
GenServer.start_link(__MODULE__, @initial_state)
end
!
def init(arg) do
state = arg
{:ok, state}
end
!
def do_it(pid, param) do
GenServer.call(pid, {:do_it, param})
end
!
def handle_call({:do_it, param}, _from, state) do
payload = get_payload(param, state)
new_state = update_state(param, state)
{:reply, payload, new_state}
end
!
defp get_payload(param, state), do: “I DONE DID IT!”
!
defp update_state(param, state), do: state
end
21. defmodule MyCallback do
use GenServer
@initial_state %{}
!
def start_link do
GenServer.start_link(__MODULE__, @initial_state)
end
!
def init(arg) do
state = arg
{:ok, state}
end
!
def do_it(pid, param) do
GenServer.call(pid, {:do_it, param})
end
!
def handle_call({:do_it, param}, _from, state) do
payload = get_payload(param, state)
new_state = update_state(param, state)
{:reply, payload, new_state}
end
!
defp get_payload(param, state), do: “I DONE DID IT!”
!
defp update_state(param, state), do: state
end
22. defmodule MyCallback do
use GenServer
@initial_state %{}
!
def start_link do
GenServer.start_link(__MODULE__, @initial_state)
end
!
def init(arg) do
state = arg
{:ok, state}
end
!
def do_it(pid, param) do
GenServer.call(pid, {:do_it, param})
end
!
def handle_call({:do_it, param}, _from, state) do
payload = get_payload(param, state)
new_state = update_state(param, state)
{:reply, payload, new_state}
end
!
defp get_payload(param, state), do: “I DONE DID IT!”
!
defp update_state(param, state), do: state
end
ClientProcess
ServerProcess
24. A rider on any floor presses the up or down button!
An elevator car arrives!
Rider enters and presses a destination floor button
rider
hall!
signal
hall!
signal
car
carrider
floor hail
retrieve
arrival
arrival
go to
25. A rider on any floor presses the up or down button!
An elevator car arrives!
Rider enters and presses a destination floor button
rider
hall!
signal
hall!
signal
car
carrider
floor hail
retrieve
arrival
arrival
go to
Hail
struct
33. Prepare to Fail
Gen!
Event
HS
Bank A!
Supervisor
CS
Gen!
Event
HS
Bank B!
Supervisor
CS
Elevator!
Supervisor
one_for_one
Gen
Event
Gen
Event
34. Don’t Trip
defmodule MySupervisor do
use Supervisor
!
def init(…) do
workers = worker(MyCallback, [p1, p2, [name: :myc]], [id: :mine])
supervise(workers, strategy: one_for_one)
end
end
!
defmodule MyCallback do
use GenServer
!
def start_link(p1, p2, opts [])
GenServer.start_link(__MODULE__, [p1, p2], opts)
end
!
def init([p1, p2]) do
{:ok, %{p1: p1, p2: p2}}
end
end
35. Don’t Trip
defmodule MySupervisor do
use Supervisor
!
def init(…) do
workers = worker(MyCallback, [p1, p2, [name: :myc]], [id: :mine])
supervise(workers, strategy: one_for_one)
end
end
!
defmodule MyCallback do
use GenServer
!
def start_link(p1, p2, opts [])
GenServer.start_link(__MODULE__, [p1, p2], opts)
end
!
def init([p1, p2]) do
{:ok, %{p1: p1, p2: p2}}
end
end
apply: list of params
36. Don’t Trip
defmodule MySupervisor do
use Supervisor
!
def init(…) do
workers = worker(MyCallback, [p1, p2, [name: :myc]], [id: :mine])
supervise(workers, strategy: one_for_one)
end
end
!
defmodule MyCallback do
use GenServer
!
def start_link(p1, p2, opts [])
GenServer.start_link(__MODULE__, [p1, p2], opts)
end
!
def init([p1, p2]) do
{:ok, %{p1: p1, p2: p2}}
end
end
apply: list of params
single term for init/1
37. Trip-less Convention?
defmodule MySupervisor do
use Supervisor
!
def init(…) do
workers = worker(MyCallback, [{p1, p2}, name: :myc], [id: :mine])
supervise(workers, strategy: one_for_one)
end
end
!
defmodule MyCallback do
use GenServer
!
def start_link(init_params, opts [])
GenServer.start_link(__MODULE__, init_params, opts)
end
!
def init({p1, p2}) do
{:ok, %{p1: p1, p2: p2}}
end
end
39. Takeaways
Behaviours vs. Callback Modules!
Watch your initialization steps!
Watch parameter and return value contracts!
Supervisors and Strategies!
Config
40. Thank you
Elixir Elevated!
The Ups and Downs of OTP!
!
Greg Vaughn!
!
gvaughn@gmail.com!
twitter: @gregvaughn!
github/irc: gvaughn
http://github.com/gvaughn/elixir_elevated/tree/elixirconf2014