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.
Web Performance Culture and Tools at EtsyMike Brittain
This talk covers some of the tools that Etsy uses for measuring performance, how to instill a culture of performance, how Etsy tracks performance wins and regressions, and where to get started if you don't have a formalized performance team in your company.
Originally presented at the Boston Web Performance Meetup on Aug 24, 2011.
RUM isn’t just for page level metrics anymore. Thanks to modern browser updates and new techniques we can collect real user data at the object level, finding slow page components and keeping third parties honest.
In this talk we will show you how to use Resource Timing, User Timing, and other browser tricks to time the most important components in your page. We’ll also share recipes for several of the web’s most popular third parties. This will give you a head start on measuring object level performance on your own site.
Details on how we capture application data in our access and error logs, as well as how to generate quick reports and graphs from these logs.
This talk was presented at O'Reilly's Velocity Online Conference on October 26, 2011.
You do not need automation engineer - Sqa Days - 2015 - ENIakiv Kramarenko
English Version of presentation for the "You don't need automation engineer" talk, given (in russian) at SQA Days 2015.
You can watch the "screencast" try-out cut at https://youtu.be/TZhbI-JPdG0
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Iakiv Kramarenko
Talk given on SeleniumCamp 2016 about:
- What features should a "general web test automation tool" have
- Why Selenide is the one Java
- And Selene is the other in Python
- And how to use the latter
Web Performance Culture and Tools at EtsyMike Brittain
This talk covers some of the tools that Etsy uses for measuring performance, how to instill a culture of performance, how Etsy tracks performance wins and regressions, and where to get started if you don't have a formalized performance team in your company.
Originally presented at the Boston Web Performance Meetup on Aug 24, 2011.
RUM isn’t just for page level metrics anymore. Thanks to modern browser updates and new techniques we can collect real user data at the object level, finding slow page components and keeping third parties honest.
In this talk we will show you how to use Resource Timing, User Timing, and other browser tricks to time the most important components in your page. We’ll also share recipes for several of the web’s most popular third parties. This will give you a head start on measuring object level performance on your own site.
Details on how we capture application data in our access and error logs, as well as how to generate quick reports and graphs from these logs.
This talk was presented at O'Reilly's Velocity Online Conference on October 26, 2011.
You do not need automation engineer - Sqa Days - 2015 - ENIakiv Kramarenko
English Version of presentation for the "You don't need automation engineer" talk, given (in russian) at SQA Days 2015.
You can watch the "screencast" try-out cut at https://youtu.be/TZhbI-JPdG0
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Iakiv Kramarenko
Talk given on SeleniumCamp 2016 about:
- What features should a "general web test automation tool" have
- Why Selenide is the one Java
- And Selene is the other in Python
- And how to use the latter
PowerShell: Through the SharePoint Looking GlassBrian Caauwe
Have you been looking for ways to utilize PowerShell in your SharePoint environment, but don't have any practical scenarios? In this session learn which Cmdlets give you the best "bang for your buck" when working with administrative, provisioning and auditing duties. Get introduced to the gray space between administration and development when learning the differences between using PowerShell with an on-premise deployment or Office 365. Also, learn common tasks that should be turned into valuable scripts.
Build a bot workshop async primer - php[tek]Adam Englander
Asynchronous software development is rapidly moving from the niche to the mainstream. That mainstream now includes PHP. This workshop will give you hands-on instruction in building an asynchronous application in PHP. We will build a Twitter bot utilizing the Amp concurrency framework for PHP and the Twitter Streaming API. During this time you will learn the basics regarding the Amp event loop, generators and co-routines, and writing non-blocking code. Get ready for the future of PHP today.
WebAssembly (aka wasm) is a new, standardized compilation target for the web, available in all modern browsers. But since it's so low level it can be difficult to see how it will revolutionize the future generations of React apps and potentially even power React itself. In this talk Jay will reveal what it is, how you can use it today, and the incredible opportunities it will continue to unlock.
Reactive programming nut and compiler enthusiast. Jay is a Senior Software Engineer at Netflix. Lover of all things open source, his contributions span numerous ecosystems. Former RxJS core team member and author of core-decorators, git-blame-someone-else, and co-author of redux-observable.
This describes what are the best practices of writing RESTful APIs. What are the different tools to create and test these APIs? What are the common pitfalls and how to avoid them? What are some of the industries best public APIs, etc. This also includes a quick and easy hands-on session to fire and launch some APIs in the cloud using Play! Framework.
SPSSTL - PowerShell - Through the SharePoint Looking GlassBrian Caauwe
Have you been looking for ways to utilize PowerShell in your SharePoint environment, but don't have any practical scenarios? In this session learn which Cmdlets give you the best "bang for your buck" when working with administrative, provisioning and auditing duties. Get introduced to the gray space between administration and development when learning the differences between using PowerShell with an on-premise deployment or Office 365. Also, learn common tasks that should be turned into valuable scripts.
Automating Your Workflow with Gulp.js - php[world] 2016Colin O'Dell
Gulp is a powerful utility for automating development workflows. Tasks are written using code, not configuration, enabling the easy creation of highly-custom and flexible automations. This talk introduces developers to the core concepts of gulp.js, and how to leverage it for new & existing projects. We’ll cover several examples of common tasks for managing CSS, JS and PHP, including: compiling Sass, minifying files, running PHP tests, checking code styles, ensuring legacy browser support & more.
The unsung glory of internal tools - Gil Zellner - DevOpsDays Tel Aviv 2018DevOpsDays Tel Aviv
Our internally created tools boost our productivity, remove friction, and make our work-lives not suck. I will discuss a few tools I came across and a few I made to make our life not suck at work.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
On the heals of Luis Lavena's RailsConf talk "Infiltrating Ruby Onto The Enterprise Death Star Using Guerilla Tactics" comes a local and frank talk about the current state of Open Source Software (OSS) participation from Windows developers. Learn what OSS is, what motivates its contributors, and how OSS can make you a stronger developer. Be prepared to fall in love with writing software again!
We will start off with a 101 introduction to both the Ruby programming language and the Ruby on Rails web application framework. You will learn about ActiveRecord, a powerful ORM that maps rich objects to your databases, and the latest components to use it with SQL Server. As a Rails core contributor and author of the SQL Server stack, I will give you a modern insight into both that will allow you to leverage your legacy data with Ruby.
Lastly, I will review the bleeding edge tools being actively created for Windows developers to ease the transition to Ruby, Rails and OSS from a POSIX driven world. Many things have changed. It is time to learn and perform some occupational maintenance.
PowerShell: Through the SharePoint Looking GlassBrian Caauwe
Have you been looking for ways to utilize PowerShell in your SharePoint environment, but don't have any practical scenarios? In this session learn which Cmdlets give you the best "bang for your buck" when working with administrative, provisioning and auditing duties. Get introduced to the gray space between administration and development when learning the differences between using PowerShell with an on-premise deployment or Office 365. Also, learn common tasks that should be turned into valuable scripts.
Build a bot workshop async primer - php[tek]Adam Englander
Asynchronous software development is rapidly moving from the niche to the mainstream. That mainstream now includes PHP. This workshop will give you hands-on instruction in building an asynchronous application in PHP. We will build a Twitter bot utilizing the Amp concurrency framework for PHP and the Twitter Streaming API. During this time you will learn the basics regarding the Amp event loop, generators and co-routines, and writing non-blocking code. Get ready for the future of PHP today.
WebAssembly (aka wasm) is a new, standardized compilation target for the web, available in all modern browsers. But since it's so low level it can be difficult to see how it will revolutionize the future generations of React apps and potentially even power React itself. In this talk Jay will reveal what it is, how you can use it today, and the incredible opportunities it will continue to unlock.
Reactive programming nut and compiler enthusiast. Jay is a Senior Software Engineer at Netflix. Lover of all things open source, his contributions span numerous ecosystems. Former RxJS core team member and author of core-decorators, git-blame-someone-else, and co-author of redux-observable.
This describes what are the best practices of writing RESTful APIs. What are the different tools to create and test these APIs? What are the common pitfalls and how to avoid them? What are some of the industries best public APIs, etc. This also includes a quick and easy hands-on session to fire and launch some APIs in the cloud using Play! Framework.
SPSSTL - PowerShell - Through the SharePoint Looking GlassBrian Caauwe
Have you been looking for ways to utilize PowerShell in your SharePoint environment, but don't have any practical scenarios? In this session learn which Cmdlets give you the best "bang for your buck" when working with administrative, provisioning and auditing duties. Get introduced to the gray space between administration and development when learning the differences between using PowerShell with an on-premise deployment or Office 365. Also, learn common tasks that should be turned into valuable scripts.
Automating Your Workflow with Gulp.js - php[world] 2016Colin O'Dell
Gulp is a powerful utility for automating development workflows. Tasks are written using code, not configuration, enabling the easy creation of highly-custom and flexible automations. This talk introduces developers to the core concepts of gulp.js, and how to leverage it for new & existing projects. We’ll cover several examples of common tasks for managing CSS, JS and PHP, including: compiling Sass, minifying files, running PHP tests, checking code styles, ensuring legacy browser support & more.
The unsung glory of internal tools - Gil Zellner - DevOpsDays Tel Aviv 2018DevOpsDays Tel Aviv
Our internally created tools boost our productivity, remove friction, and make our work-lives not suck. I will discuss a few tools I came across and a few I made to make our life not suck at work.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
On the heals of Luis Lavena's RailsConf talk "Infiltrating Ruby Onto The Enterprise Death Star Using Guerilla Tactics" comes a local and frank talk about the current state of Open Source Software (OSS) participation from Windows developers. Learn what OSS is, what motivates its contributors, and how OSS can make you a stronger developer. Be prepared to fall in love with writing software again!
We will start off with a 101 introduction to both the Ruby programming language and the Ruby on Rails web application framework. You will learn about ActiveRecord, a powerful ORM that maps rich objects to your databases, and the latest components to use it with SQL Server. As a Rails core contributor and author of the SQL Server stack, I will give you a modern insight into both that will allow you to leverage your legacy data with Ruby.
Lastly, I will review the bleeding edge tools being actively created for Windows developers to ease the transition to Ruby, Rails and OSS from a POSIX driven world. Many things have changed. It is time to learn and perform some occupational maintenance.
Akka persistence == event sourcing in 30 minutesKonrad Malawski
Akka 2.3 introduces akka-persistence, a wonderful way of implementing event-sourced applications. Let's give it a shot and see how DDD and Akka are a match made in heaven :-)
Slides from presentation: "Revoke-Obfuscation: PowerShell Obfuscation Detection (And Evasion) Using Science" originally released at Black Hat USA 2017 & DEF CON by @danielhbohannon and @Lee_Holmes.
For more information: http://www.danielbohannon.com/presentations/
Presented on 8/14/2012 at BostonRb. This talk provides a nice intro and overview of what RubyMotion is and whether or not it's worth incorporating into your development toolkit.
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.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
Similar to DC |> Elixir Meetup - Going off the Rails into Elixir - Dan Ivovich (20)
Elixir is great for web servers and embedded devices, but is there anything else it’s good for?
Yes! Elixir is also great at being a multiplayer game server.
We’ll take a look through some existing applications that use Elixir as a multiplayer backend server, ExVenture and Kalevala.
See how they’re architected to be full of state and event driven to handle thousands of users.
Monitoring Your Elixir Application with PrometheusSmartLogic
Get under the hood of your application, with metrics! What is your slowest external call? What are your total daily interactions? Find out with Prometheus!
We’ll use Prometheus and Grafana to give us insights into your application. Prometheus will gather time series metrics, and Grafana will give a powerful display of them.
We’ll cover how to add instrumentation through the lens of a real-world application.
Finally, we'll get alerted about key metrics via the Prometheus AlertManager.
You have an application that works well on a single node, and you’ve heard that Erlang lets you scale out in a cluster. How do you go about doing that?
We’ll walk through the steps I took to turn ExVenture (a multiplayer game server) into a distributed application.
Starting with connecting nodes in development and production, to picking a cluster leader via the Raft protocol, and dealing with process groups to fan calls throughout the cluster.
Finally we’ll see some of the hurdles I encountered when spanning multiple nodes.
SmartLogic's Eric Oestrich discusses Kubernetes at Baltimore Innovation Week. Kubernetes is a webscale cluster manager. By the end of the talk we will have a Rails application hosted inside of Kubernetes, Google's new cluster manager.
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Hivelance Technology
Cryptocurrency trading bots are computer programs designed to automate buying, selling, and managing cryptocurrency transactions. These bots utilize advanced algorithms and machine learning techniques to analyze market data, identify trading opportunities, and execute trades on behalf of their users. By automating the decision-making process, crypto trading bots can react to market changes faster than human traders
Hivelance, a leading provider of cryptocurrency trading bot development services, stands out as the premier choice for crypto traders and developers. Hivelance boasts a team of seasoned cryptocurrency experts and software engineers who deeply understand the crypto market and the latest trends in automated trading, Hivelance leverages the latest technologies and tools in the industry, including advanced AI and machine learning algorithms, to create highly efficient and adaptable crypto trading bots
Strategies for Successful Data Migration Tools.pptxvarshanayak241
Data migration is a complex but essential task for organizations aiming to modernize their IT infrastructure and leverage new technologies. By understanding common challenges and implementing these strategies, businesses can achieve a successful migration with minimal disruption. Data Migration Tool like Ask On Data play a pivotal role in this journey, offering features that streamline the process, ensure data integrity, and maintain security. With the right approach and tools, organizations can turn the challenge of data migration into an opportunity for growth and innovation.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
5. Who Am I?
• Software Developer
• Director of Development at SmartLogic
6. Who Am I?
• Software Developer
• Director of Development at SmartLogic
• Rails developer for 12 years
7. Who Am I?
• Software Developer
• Director of Development at SmartLogic
• Rails developer for 12 years
• Elixir convert since Summer 2016
8. Who Am I?
• Software Developer
• Director of Development at SmartLogic
• Rails developer for 12 years
• Elixir convert since Summer 2016
• Organizer of the Baltimore Elixir and Erlang
Meetup
39. Ecto
Changesets
• Ever try and run just some ActiveRecord
validations depending on the current user?
• Ever have a set of validations dependent on
data state?
40. Ecto
Changesets
def edit_self_changeset(user, params %{}) do
user
|> cast(params, [:name, :age])
|> validate_required([:name])
|> validate_inclusion(:age, 18..100)
end
def admin_edit_changeset(user, params %{}) do
user
|> cast(params, [:name, :email, :age])
|> validate_required([:name, :email])
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
41. Ecto
Changesets
def edit_self_changeset(user, params %{}) do
user
|> cast(params, [:name, :age])
|> validate_required([:name])
|> validate_inclusion(:age, 18..100)
end
def admin_edit_changeset(user, params %{}) do
user
|> cast(params, [:name, :email, :age])
|> validate_required([:name, :email])
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
42. Ecto
Changesets
def edit_self_changeset(user, params %{}) do
user
|> cast(params, [:name, :age])
|> validate_required([:name])
|> validate_inclusion(:age, 18..100)
end
def admin_edit_changeset(user, params %{}) do
user
|> cast(params, [:name, :email, :age])
|> validate_required([:name, :email])
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
43. Ecto
Changesets
def edit_self_changeset(user, params %{}) do
user
|> cast(params, [:name, :age])
|> validate_required([:name])
|> validate_inclusion(:age, 18..100)
end
def admin_edit_changeset(user, params %{}) do
user
|> cast(params, [:name, :email, :age])
|> validate_required([:name, :email])
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
44. Phoenix
Param Matching
def show(conn, %{"user_params" => user_params} = params) do
end
def show(conn, %{"admin_params" => admin_params} = params) do
end
47. Phoenix
View Code
• Not a pile of global namespace helpers
• Good encapsulation of presentation logic
48. Gen Server
No need for external workers
GenServer.cast(MyWorker, {:process, this_thing})
def handle_cast({:process, this_thing}, state) do
# do work
{:noreply, state}
end
49. Gen Server
No need for external workers
GenServer.cast(MyWorker, {:process, this_thing})
def handle_cast({:process, this_thing}, state) do
# do work
{:noreply, state}
end
50. Gen Server
No need for external workers
GenServer.cast(MyWorker, {:process, this_thing})
def handle_cast({:process, this_thing}, state) do
# do work
{:noreply, state}
end
55. What does Elixir bring?
• Ruby-inspired syntax
• Meta programming
56. What does Elixir bring?
• Ruby-inspired syntax
• Meta programming
• Polymorphism via protocols
57. What does Elixir bring?
• Ruby-inspired syntax
• Meta programming
• Polymorphism via protocols
• Great tooling
58. What does Elixir bring?
• Ruby-inspired syntax
• Meta programming
• Polymorphism via protocols
• Great tooling
• Better code organization facilities than Erlang
59. What does Elixir bring?
• Ruby-inspired syntax
• Meta programming
• Polymorphism via protocols
• Great tooling
• Better code organization facilities than Erlang
• Erlang functions can be called from Elixir
62. What does Elixir bring?
• Lightweight and isolated concurrency
• Shared nothing concurrent programming
63. What does Elixir bring?
• Lightweight and isolated concurrency
• Shared nothing concurrent programming
• Lazy and async collections
64. What does Elixir bring?
• Lightweight and isolated concurrency
• Shared nothing concurrent programming
• Lazy and async collections
• Pattern matching
65. What does Elixir bring?
• Lightweight and isolated concurrency
• Shared nothing concurrent programming
• Lazy and async collections
• Pattern matching
• Unicode support and UTF-8 strings
68. Scaleable and Fault-tolerant
• Isolation means each process is garbage
collected independently
• This means less system wide pauses.
69. Scaleable and Fault-tolerant
• Isolation means each process is garbage
collected independently
• This means less system wide pauses.
• Things go wrong. Especially with network or
disk activity.
70. Scaleable and Fault-tolerant
• Isolation means each process is garbage
collected independently
• This means less system wide pauses.
• Things go wrong. Especially with network or
disk activity.
• Supervisor processes are instructed in how to
maintain your application
73. Stable and Extensible
• Only 1 planned language deprecation for 2.0
• No planned timeline for 2.0
74. Stable and Extensible
• Only 1 planned language deprecation for 2.0
• No planned timeline for 2.0
• The core team believes all the right
fundamentals are in place
78. Speed (Throughput)
• Sure, it isn't C
• For a Rails shop, that isn't the benchmark
• Multi-thread by default, no global lock
79. Speed (Throughput)
• Sure, it isn't C
• For a Rails shop, that isn't the benchmark
• Multi-thread by default, no global lock
• Fast garbage collection
80. Speed (Throughput)
• Sure, it isn't C
• For a Rails shop, that isn't the benchmark
• Multi-thread by default, no global lock
• Fast garbage collection
• All means high throughput web apps
89. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
90. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
• Developer focus, cognitive load of functions over
objects
91. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
• Developer focus, cognitive load of functions over
objects
• Ease of implementing new features
92. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
• Developer focus, cognitive load of functions over
objects
• Ease of implementing new features
• Test quality and speed
93. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
• Developer focus, cognitive load of functions over
objects
• Ease of implementing new features
• Test quality and speed
• Bug rates
94. Costs
All of the items we've discussed have a real impact on:
• Development pace, build from pure functions
• Developer focus, cognitive load of functions over
objects
• Ease of implementing new features
• Test quality and speed
• Bug rates
• Maintainability
103. Paradigm Shift?
Functional Programming
• Might take some adjustment
• Fits your use case more than you expect, it is
about the data
• Makes writing great tests easy
104. Paradigm Shift?
Functional Programming
• Might take some adjustment
• Fits your use case more than you expect, it is
about the data
• Makes writing great tests easy
• Makes writing fast tests easy
106. Mix and IEx
Mix - A great build tool for dependency
management and other tasks
IEx - An interactive shell
107. Docs, Tests, and DocTests
Documentation - a first class citizen in the
Elixir ecosystem
Tests - Testing libraries built into the language
with ExUnit
DocTests - A hybrid of testing and documentation