The presentation is about WebMachine web framework from Ruby - port from Erlang's WebMachine framework. It explains specialties of this framework step by step and teaches how to create web apps in a functional style. Prepared by Mikhail Bortnyk for Ruby Meditation #13.
A sure way to make data and ML work for you in a 10x manner is to start with low-hanging fruit: a recommender system. It's been a useful application of data science to the consumer-facing web since the early days of the internet. This talk explains how one was built to recommend colleges to prospective high school students, the application of popularity tables and collaborative filters, as well as other approaches and the reasons for doing them.
Go to hell Flash, we don't need you anymore! GothamJsmichalbu
When back in 1996 Macromedia introduced Flash, no one suspected that this plugin will revolutionize the world of the Internet and move an open, Web-based technologies into the background. Today, after more than 15 years, situation slowly reverses - finally creating interactive websites, games or advertisements is possible without using any browser plugins. But is it enough? Michal will take us on a tour of the world's holy war between Plugins like Flash and HTML, and will attempt to answer this question, preseting poorly known HTML5 features, services and open source tools he is working on now (like http://bly.sk).
Core Data doesn't have to be hard. Step by step, learn how to use Core Data in code, creating models and relationships. Loading data and efficiently displaying that data.
Getting Started with WordPress DevelopmentRyan Welcher
Jan/21/2015 WordPress Ottawa Meetup.
This talk is aimed at developers or designers interested in getting started with WordPress development. It's meant as a guide to help avoid common issues that trip up newcomers to WordPress.
2019-03 PHP without PHP Architecture @ Confooterry chay
An obscure but ubiquitous design pattern in PHP development is known as Funky Caching. Using real architectural examples as a lens to look at this one simple PHP design pattern, we see how we can design web architectures that are "organic, democratic, and lasting"
A sure way to make data and ML work for you in a 10x manner is to start with low-hanging fruit: a recommender system. It's been a useful application of data science to the consumer-facing web since the early days of the internet. This talk explains how one was built to recommend colleges to prospective high school students, the application of popularity tables and collaborative filters, as well as other approaches and the reasons for doing them.
Go to hell Flash, we don't need you anymore! GothamJsmichalbu
When back in 1996 Macromedia introduced Flash, no one suspected that this plugin will revolutionize the world of the Internet and move an open, Web-based technologies into the background. Today, after more than 15 years, situation slowly reverses - finally creating interactive websites, games or advertisements is possible without using any browser plugins. But is it enough? Michal will take us on a tour of the world's holy war between Plugins like Flash and HTML, and will attempt to answer this question, preseting poorly known HTML5 features, services and open source tools he is working on now (like http://bly.sk).
Core Data doesn't have to be hard. Step by step, learn how to use Core Data in code, creating models and relationships. Loading data and efficiently displaying that data.
Getting Started with WordPress DevelopmentRyan Welcher
Jan/21/2015 WordPress Ottawa Meetup.
This talk is aimed at developers or designers interested in getting started with WordPress development. It's meant as a guide to help avoid common issues that trip up newcomers to WordPress.
2019-03 PHP without PHP Architecture @ Confooterry chay
An obscure but ubiquitous design pattern in PHP development is known as Funky Caching. Using real architectural examples as a lens to look at this one simple PHP design pattern, we see how we can design web architectures that are "organic, democratic, and lasting"
Mind your lang (for role=drinks at CSUN 2017)Adrian Roselli
The lang attribute is necessary, I explain why. Animated GIFs and videos can be found on my site at http://adrianroselli.com/2017/03/slides-from-roledrinks-at-csun.html
Pragmatic REST: recent trends in API designMarsh Gardiner
As presented by @mpnally and @earth2marsh at I Love APIs 2015. Slides covered API design trends, with particular attention paid to hypermedia and versioning. Note the distinction between service-oriented and data-oriented approaches on slide #5.
I gave this talk at Velocity NY 2013, and it covers the installation and use of a private WebPagetest instance, as well as the open source tool wpt-script which Etsy built.
Selfish Accessibility — WordCamp Europe 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
An overview of Firebug's features I presented at the July, 2009 meeting of the West Suburban Chicago PHP Meetup. This presentation was followed by at least a 1/2 hour demo, and then another member of the group went into the details of FirePHP for almost an hour.
It was a really intense night of great presentations and fun.
Visit us on the web at http://php.meetup.com/381/ and http://suburbanchicagophp.org
If you are aware of accessibility practices, you may know some of the basics for supporting users (labels, contrast, alt text). I'll touch on some newer or more obscure techniques that can help prime you to look at the new hotness features with a more critical eye. Instead of pushing stricly code techniques, I’ll review the logic behind these approaches (which you can refute, checking off that elusive audience participation selling point!). We'll discuss the search role, language attribute, <main> element, infinite scroll, page zoom, source order, and as much as I can squeeze in before I am chased from the room.
Modular Open Source in Java for Now and LaterBob Paulin
The Apache community creates the building blocks of software companies world wide. Developers designing those building blocks require a different mindset than developers focused on building applications. Good building blocks can be repurposed, reused, and recomposed. Good building blocks are modular. This talk focus on building good blocks in Java using current language features, frameworks (Apache Felix), and prepare for new modularity features available in Java 9. This talk will cover when it makes sense to break a project down further as well as some of the strategies and tools involved in doing so. We'll cover lessons learned I've learned doing this for clients as well as within the ASF with Apache Tika.
A walkthrough of various application performance tuning tools and a good workflow for where to start, from a presentation at WindyCityRails 2011 in Chicago, IL.
See the video, and more Web and Ruby/Rails Performance info at www.RailsPerformance.com
-John McCaffrey
Become an artisan web analytics practitioner by building your own analytics QA tool. For Adobe Analytics but you could do the same with Google Analytics, A/B testing, tag management, VOC tools and many other analytics tools
6 reasons Jubilee could be a Rubyist's new best friendForrest Chang
(Video here: http://confreaks.com/videos/5014-RubyConf2014-6-reasons-jubilee-could-be-a-rubyist-s-new-best-friend or https://www.youtube.com/watch?feature=player_embedded&v=FFR0G89WXI8)
Rubyconf 2014 talk on Jubilee, a Vert.x module that runs rack apps.
Alternate titles
Beyond Rails while using Rails
Rails can't do everything I want and <fill> makes me want to cry
Rubyconf abstract
Do you do web development in Ruby? Have you been forced to go to node or other technologies just for concurrency/websockets etc. Do miss your gems, and tire of functionality you have to implement from scratch? Do you hate javascript?
Well no need to switch languages/platforms, Jubilee could be your new best friend.
Jubilee, a rack server on top of Vert.x gives you
* Concurrency
* Speed
* Easy Websockets support
* Shared Memory
* Access to the JVM ecosystem
* Ability to reuse your existing Ruby knowledge and gems
"Say Hello to your new friend" - Al Pacino
Mind your lang (for role=drinks at CSUN 2017)Adrian Roselli
The lang attribute is necessary, I explain why. Animated GIFs and videos can be found on my site at http://adrianroselli.com/2017/03/slides-from-roledrinks-at-csun.html
Pragmatic REST: recent trends in API designMarsh Gardiner
As presented by @mpnally and @earth2marsh at I Love APIs 2015. Slides covered API design trends, with particular attention paid to hypermedia and versioning. Note the distinction between service-oriented and data-oriented approaches on slide #5.
I gave this talk at Velocity NY 2013, and it covers the installation and use of a private WebPagetest instance, as well as the open source tool wpt-script which Etsy built.
Selfish Accessibility — WordCamp Europe 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
An overview of Firebug's features I presented at the July, 2009 meeting of the West Suburban Chicago PHP Meetup. This presentation was followed by at least a 1/2 hour demo, and then another member of the group went into the details of FirePHP for almost an hour.
It was a really intense night of great presentations and fun.
Visit us on the web at http://php.meetup.com/381/ and http://suburbanchicagophp.org
If you are aware of accessibility practices, you may know some of the basics for supporting users (labels, contrast, alt text). I'll touch on some newer or more obscure techniques that can help prime you to look at the new hotness features with a more critical eye. Instead of pushing stricly code techniques, I’ll review the logic behind these approaches (which you can refute, checking off that elusive audience participation selling point!). We'll discuss the search role, language attribute, <main> element, infinite scroll, page zoom, source order, and as much as I can squeeze in before I am chased from the room.
Modular Open Source in Java for Now and LaterBob Paulin
The Apache community creates the building blocks of software companies world wide. Developers designing those building blocks require a different mindset than developers focused on building applications. Good building blocks can be repurposed, reused, and recomposed. Good building blocks are modular. This talk focus on building good blocks in Java using current language features, frameworks (Apache Felix), and prepare for new modularity features available in Java 9. This talk will cover when it makes sense to break a project down further as well as some of the strategies and tools involved in doing so. We'll cover lessons learned I've learned doing this for clients as well as within the ASF with Apache Tika.
A walkthrough of various application performance tuning tools and a good workflow for where to start, from a presentation at WindyCityRails 2011 in Chicago, IL.
See the video, and more Web and Ruby/Rails Performance info at www.RailsPerformance.com
-John McCaffrey
Become an artisan web analytics practitioner by building your own analytics QA tool. For Adobe Analytics but you could do the same with Google Analytics, A/B testing, tag management, VOC tools and many other analytics tools
6 reasons Jubilee could be a Rubyist's new best friendForrest Chang
(Video here: http://confreaks.com/videos/5014-RubyConf2014-6-reasons-jubilee-could-be-a-rubyist-s-new-best-friend or https://www.youtube.com/watch?feature=player_embedded&v=FFR0G89WXI8)
Rubyconf 2014 talk on Jubilee, a Vert.x module that runs rack apps.
Alternate titles
Beyond Rails while using Rails
Rails can't do everything I want and <fill> makes me want to cry
Rubyconf abstract
Do you do web development in Ruby? Have you been forced to go to node or other technologies just for concurrency/websockets etc. Do miss your gems, and tire of functionality you have to implement from scratch? Do you hate javascript?
Well no need to switch languages/platforms, Jubilee could be your new best friend.
Jubilee, a rack server on top of Vert.x gives you
* Concurrency
* Speed
* Easy Websockets support
* Shared Memory
* Access to the JVM ecosystem
* Ability to reuse your existing Ruby knowledge and gems
"Say Hello to your new friend" - Al Pacino
Open Data Semantic Web Community Barn RaisingBoris Mann
Open source is now a term that is increasingly understood, or at least talked about. One of the next battles in keeping the web open is keeping data open - from the content we "generate" for many social sites to the closed silos of government and businesses.
Just like open source, open data is a mix of technology, licensing, and attitude. Here in Vancouver, we've started experimenting with what I like to call a Semantic Web Community "Barn Raising" effort. Lots of people are interested in open data and related technology that supports it, like the semantic web, RDF, etc. But it's very hard to just have nice thought experiments about all this, we learn best by doing.
Recently, I gave a talk at DrupalCon Washington DC talking about the semantic web. I said that RDFa is "food for robots", so what better data to experiment with than something related to food?
The project we're tackling is to collectively source restaurant information. The information will be stored in part on Freebase, as well as various front end mashups, iPhone apps, and other tools. Eventually, we hope to create an economic incentive so that some restaurants and/or restaurant directory websites will expose their data semantically.
The talk will be a mix of community, policy, hand waving, and technology, as well as an open call to help with this project in your own city. You'll leave with some food for thought on how open data and the semantic web are evolving, and what you can do with it today.
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...Alexander Lisachenko
It is believed that the Symfony framework is quite heavy and it can be difficult to develop a website that will be able to work under the high load. It is true, but does this mean that it is impossible to implement a dynamic caching and to update only a small part of entire page as data is updated? This talk will give your an answer to that. It is Varnish, ESI-blocks and load balancing. With hundreds of thousands of unique visitors and million hits a day, we continue to use Symfony, and do not see any problems.
My presentation from RedDotRubyConf 2013 in Singapore. Turned out to be a reflection on whether I'd still be a Rubyist in another 5 years, and what are the external trends that might change that. Short story: Yes! Of course. I'll always think like a Rubyist even though things will probably get more polyglot. The arena of web development is perhaps the most unpredictable though.
This talk was presented at RubyConfPH 2015, a conference for Ruby programmers.
As coders, we are very familiar with how to communicate using written words. But words exercise only half of our brain. Using sketches to enhance our message leads to more effective communication. It is fun, too!
I discuss sketching tips that everyone - even those who think they have no drawing skills - can use right away. These can be applied to blog posts, open-source documentation, bug reports, and even emails.
Nowadays REST APIs are behind each mobile and nearly all of web applications. As such they bring a wide range of possibilities in cases of communication and integration with given system. But with great power comes great responsibility. This talk aims to provide general guidance related do API security assessment and covers common API vulnerabilities. We will look at an API interface from the perspective of potential attacker.
I will show:
how to find hidden API interfaces
ways to detect available methods and parameters
fuzzing and pentesting techniques for API calls
typical problems
I will share several interesting cases from public bug bounty reports and personal experience, for example:
* how I got various credentials with one API call
* how to cause DoS by running Garbage Collector from API
GO in Heterogeneous Language EnvironmentsAmoniac OÜ
How to work with the Go language in heterogeneous language environments and how you can run Go, Ruby, PHP and other languages together in the latest presentation from Amoniac's CEO Alexander Simonov.
Our Amoniac OU CEO Alexander Simonov inspired everyone with an original report and even played a bottle of rum on Ruby Meditation Conference in Kyiv.
Get more how really you need to clean the deck in your long Ruby's journey.
Ruby JIT Compilation - the talk and presentation prepared by the experienced developer and lecturer Mykhailo Bortnyk for the Ruby Meditation conference. The presentation contains JIT definition, known Ruby JIT implementations, demonstration, and some considerations on the future of JIT in Ruby.
The story about difficulties, surprises, and workarounds using Sinatra for complex projects. The presentation prepared by Vadim Evseev for the Ruby Meditation Conference, Kyiv.
Different Ways of Integrating React into Rails - Pros and ConsAmoniac OÜ
Applications these days appear to become more specific and role-divided. However, we want to deploy frontend and backend as one unit so Mikhail Bortnyk is going to research and to tell how modern JS frameworks are integrating into Rails, with pros, cons, blackjack, and dancers. Prepared for Ruby Meditation #16.
Mikhail Bortnyk, a senior developer at the Amoniac company, tells how to forget the pain of side effects and start to write your Erlang in Ruby.The presentation has been prepared for the Ruby Meditation conference #12.
Let's Count Bytes! Launching Ruby in 32K of RAMAmoniac OÜ
This presentation will discover how Ruby can be launched even on MCUs. It covers implementation of Ruby virtual machine, a timeline of porting experiences and some shiny demo with blinking LEDs - now in Ruby. Author - Mikhail Bortnyk, a senior developer, who has spoken with this presentation at RubyMeditation #9.
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.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
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.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
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.
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.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaYara Milbes
Discover the transformative power of the WhatsApp API in our latest SlideShare presentation, "Top 7 Unique WhatsApp API Benefits." In today's fast-paced digital era, effective communication is crucial for both personal and professional success. Whether you're a small business looking to enhance customer interactions or an individual seeking seamless communication with loved ones, the WhatsApp API offers robust capabilities that can significantly elevate your experience.
In this presentation, we delve into the top 7 distinctive benefits of the WhatsApp API, provided by the leading WhatsApp API service provider in Saudi Arabia. Learn how to streamline customer support, automate notifications, leverage rich media messaging, run scalable marketing campaigns, integrate secure payments, synchronize with CRM systems, and ensure enhanced security and privacy.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
4. Who am I
❖ Mikhail Bortnyk
❖ github: @vessi
❖ twitter: @mikhailbortnyk
5. Who am I
❖ Mikhail Bortnyk
❖ github: @vessi
❖ twitter: @mikhailbortnyk
❖ language researcher
6. Who am I
❖ Mikhail Bortnyk
❖ github: @vessi
❖ twitter: @mikhailbortnyk
❖ language researcher
❖ co-founder of Kottans community school
7. Who am I
❖ Mikhail Bortnyk
❖ github: @vessi
❖ twitter: @mikhailbortnyk
❖ language researcher
❖ co-founder of Kottans community school
❖ 3rd contributor of mruby/c
8. Who am I
❖ Mikhail Bortnyk
❖ github: @vessi
❖ twitter: @mikhailbortnyk
❖ language researcher
❖ co-founder of Kottans community school
❖ 3rd contributor of mruby/c
❖ Ruby developer (not Rails!)
12. Typical experience of web developer
CGI Old school is cool! (Bash, C, Perl, some scripting)
13. Typical experience of web developer
CGI Old school is cool! (Bash, C, Perl, some scripting)
Servlets I know your pain, bro (PHP, Java)
14. Typical experience of web developer
CGI Old school is cool! (Bash, C, Perl, some scripting)
Servlets I know your pain, bro (PHP, Java)
MVC The thing we all know (Python/Django, Ruby/Rails etc)
17. SPA is a new sexy
❖ No one uses ol’ goo’ ERB
❖ Javascript rules over the web
18. SPA is a new sexy
❖ No one uses ol’ goo’ ERB
❖ Javascript rules over the web
❖ Web does not work without JS
19. SPA is a new sexy
❖ No one uses ol’ goo’ ERB
❖ Javascript rules over the web
❖ Web does not work without JS
❖ http://tobyho.com/
2010/03/11/how-much-of-the-
web-actually/
20. SPA is a new sexy
❖ No one uses ol’ goo’ ERB
❖ Javascript rules over the web
❖ Web does not work without JS
❖ http://tobyho.com/
2010/03/11/how-much-of-the-
web-actually/
❖ In fact, you are limited to
StackOverflow, Amazon and
Google Search
21. SPA is a new sexy
❖ No one uses ol’ goo’ ERB
❖ Javascript rules over the web
❖ Web does not work without JS
❖ http://tobyho.com/2010/03/11/
how-much-of-the-web-actually/
❖ In fact, you are limited to
StackOverflow, Amazon and
Google Search
❖ Actually, only paranoids disable
JS in 2017
27. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
28. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny
29. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
30. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY
31. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
32. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
❖ Roda
33. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
❖ Roda - a challenger appears. No one noticed
34. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
❖ Roda - a challenger appears. No one noticed
❖ Rack
35. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
❖ Roda - a challenger appears. No one noticed
❖ Rack - maybe easier to rewrite the whole stack from
scratch?
36. Solutions for APIs
❖ Still Rails. Now with API flavor (rails-api). Still Rails.
Still boring. Still overbloated.
❖ Sinatra is a new shiny OH WAI~~. A little too big
❖ Microframeworks like Cuba, NYNY - too much to write
❖ Roda - a challenger appears. No one noticed
❖ Rack - maybe easier to rewrite the whole stack from
scratch? (And end up with buggy unfinished Rails)
41. WebMachine-ruby
❖ Based on Erlang’s web machine
❖ Created by Sean Cribbs
❖ More than 5 years old
❖ Still alive!
42. WebMachine-ruby
❖ Based on Erlang’s web machine
❖ Created by Sean Cribbs
❖ More than 5 years old
❖ Still alive! Last commit - on 30 Jan 2017
43. WebMachine-ruby
❖ Based on Erlang’s web machine
❖ Created by Sean Cribbs
❖ More than 5 years old
❖ Still alive! Last commit - on 30 Jan 2017
❖ 13 issues opened and 80 closed
44. WebMachine-ruby
❖ Based on Erlang’s web machine
❖ Created by Sean Cribbs
❖ More than 5 years old
❖ Still alive! Last commit - on 30 Jan 2017
❖ 13 issues opened and 80 closed
❖ Author works with Erlang, Ruby and Elixir
45. WebMachine-ruby
❖ Based on Erlang’s web machine
❖ Created by Sean Cribbs
❖ More than 5 years old
❖ Still alive! Last commit - on 30 Jan 2017
❖ 13 issues opened and 80 closed
❖ Author works with Erlang, Ruby and Elixir
❖ github://webmachine/webmachine-ruby.git
47. Fundamental idea
❖ Each API resource is a typical state machine
❖ Each request is a flow through this state machine
48. Fundamental idea
❖ Each API resource is a typical state machine
❖ Each request is a flow through this state machine
❖ Most requests are pretty standard
49. Fundamental idea
❖ Each API resource is a typical state machine
❖ Each request is a flow through this state machine
❖ Most requests are pretty standard
❖ Functional behavior is more suiting case for this
50. Fundamental idea
❖ Each API resource is a typical state machine
❖ Each request is a flow through this state machine
❖ Most requests are pretty standard
❖ Functional behavior is more suiting case for this
❖ Define standards and override only needed things
51. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure.
52. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure. They are not your bros
53. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure. They are not your bros
❖ Webmachine determines facts about requests
54. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure. They are not your bros
❖ Webmachine determines facts about requests
❖ Uses finite state machine to determine proper response
55. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure. They are not your bros
❖ Webmachine determines facts about requests
❖ Uses finite state machine to determine proper response
❖ Each fact can easily be tested
56. Why state machine?
❖ Typical frameworks: request is running by predefined
procedure. They are not your bros
❖ Webmachine determines facts about requests
❖ Uses finite state machine to determine proper response
❖ Each fact can easily be tested
❖ Webmachine is your bro
68. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept:
application/json" -u test -p test
69. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept: application/json" -u test -p test
❖ Does route /kudos/:id exist?
70. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept: application/json" -u test -p test
❖ Does route /kudos/:id exist?
❖ Does resource with ID 1 exist?
71. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept: application/json" -u test -p test
❖ Does route /kudos/:id exist?
❖ Does resource with ID 1 exist?
❖ Is this user with this password allowed to execute this
request on resource?
72. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept: application/json" -u test -p test
❖ Does route /kudos/:id exist?
❖ Does resource with ID 1 exist?
❖ Is this user with this password allowed to execute this
request on resource?
❖ Can this method be called for this resource?
73. Parsing request
❖ Initial request:
curl "http://localhost/kudos/1" -H "Accept: application/json" -u test -p test
❖ Does route /kudos/:id exist?
❖ Does resource with ID 1 exist?
❖ Is this user with this password allowed to execute this
request on resource?
❖ Can this method be called for this resource?
❖ Can this resource be rendered with this content type?
74. Typical resource
class KudoResource < Webmachine::Resource
def allowed_methods
["GET"]
end
def content_types_provided
[["application/json", :to_json]]
end
def resource_exists?
kudo # Truthy or falsey
end
def to_json
kudo.to_json
end
private
def kudo
@kudo ||= Kudo.find(id)
end
def id
request.path_info[:id]
end
end