The document discusses scaling web applications built with Scala. It covers several Scala web frameworks like Unfiltered, Spray, Lift and Roundup that allow building scalable and high performance web services using Scala. These frameworks leverage Scala language features and the Actor model to build non-blocking and asynchronous applications that can scale to large numbers of concurrent users.
Remotely is an elegant, purely functional machine-to-machine communication library developed in Scala at Verizon. Remotely is fast, lightweight, and models network operations as a monad. It features compositional, reusable protocols and codecs, where the compatibility between client and server is enforced using Scala's type system. It has support for TCP endpoints, with combinators for encryption, circuit-breaking, and load-balancing. In this talk we describe the API of Remotely, and delve into its design and implementation.
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
This document provides an overview of the Ruby on Rails framework. It introduces Rails and its main components, which include ActiveRecord for database access, ActionPack for handling requests and routing, ActionMailer for email, Railties for gluing the framework together, and ActiveSupport for extensions. It then discusses ActiveRecord patterns and the MVC architecture. Sections provide code examples for a basic controller and routing. The document recommends following Ruby conventions and lists the main Rails gems. It concludes by thanking the reader and providing a link to a mini-Rails project on GitHub.
This document discusses ways to create lightweight Ruby solutions by simplifying frameworks and components. It suggests replacing ActiveRecord with the simpler and faster Sequel ORM. It also recommends using Zepto.js instead of jQuery for mobile apps, and Rack and Sinatra to build lightweight web apps instead of full Rails applications. Benchmarks show these lightweight approaches can significantly improve performance compared to default Rails. Tools mentioned that aid lightweight development include Pow for local web serving and rbenv for Ruby version management. The document concludes by reminding developers not to see Ruby as the only solution and to consider other languages like Erlang, Scala and C++ for certain problems.
The Parenscript Common Lisp to JavaScript compilerVladimir Sedach
The document discusses the Parenscript Common Lisp to JavaScript compiler. It describes what Parenscript is and is not, how it works, and its history and uses. Key points include that Parenscript compiles Common Lisp to readable JavaScript code without runtime dependencies or new types, and is used in web frameworks, libraries, and commercial projects.
PSGI is a Perl port of Python's WSGI and Ruby's Rack that defines a common interface between web servers and frameworks. Plack provides reference implementations of PSGI servers as well as middleware and utilities. This allows frameworks to run on many servers like standalone, FastCGI, and Apache using a common PSGI application interface. Plack is fast, supports many frameworks through adapters, and provides tools like Plackup and middleware to help build and test PSGI applications.
Ansible is a simple yet powerful automation engine that uses YAML syntax. It is fast, efficient, and secure as it does not require agents or open ports on servers. Ansible uses inventory to list hosts and groups, modules to define units of work, facts to discover node details, and playbooks to define lists of plays and tasks. Playbooks can use tags to selectively run certain tasks. Roles help organize and reuse groups of tasks. Galaxy allows installing roles from online repositories. Variables precedence determines which value is used. Vault encrypts sensitive files.
Eitaro Fukamachi presented on writing the fast web server Woo in Common Lisp. He discussed three tactics for achieving speed: using a multithreaded event-driven architecture instead of prefork, developing a fast HTTP parser instead of regular expressions, and using the libev event library. Benchmarks showed Woo was 1.6 times faster than Node.js. The goal was to create the fastest HTTP server in Common Lisp.
Remotely is an elegant, purely functional machine-to-machine communication library developed in Scala at Verizon. Remotely is fast, lightweight, and models network operations as a monad. It features compositional, reusable protocols and codecs, where the compatibility between client and server is enforced using Scala's type system. It has support for TCP endpoints, with combinators for encryption, circuit-breaking, and load-balancing. In this talk we describe the API of Remotely, and delve into its design and implementation.
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
This document provides an overview of the Ruby on Rails framework. It introduces Rails and its main components, which include ActiveRecord for database access, ActionPack for handling requests and routing, ActionMailer for email, Railties for gluing the framework together, and ActiveSupport for extensions. It then discusses ActiveRecord patterns and the MVC architecture. Sections provide code examples for a basic controller and routing. The document recommends following Ruby conventions and lists the main Rails gems. It concludes by thanking the reader and providing a link to a mini-Rails project on GitHub.
This document discusses ways to create lightweight Ruby solutions by simplifying frameworks and components. It suggests replacing ActiveRecord with the simpler and faster Sequel ORM. It also recommends using Zepto.js instead of jQuery for mobile apps, and Rack and Sinatra to build lightweight web apps instead of full Rails applications. Benchmarks show these lightweight approaches can significantly improve performance compared to default Rails. Tools mentioned that aid lightweight development include Pow for local web serving and rbenv for Ruby version management. The document concludes by reminding developers not to see Ruby as the only solution and to consider other languages like Erlang, Scala and C++ for certain problems.
The Parenscript Common Lisp to JavaScript compilerVladimir Sedach
The document discusses the Parenscript Common Lisp to JavaScript compiler. It describes what Parenscript is and is not, how it works, and its history and uses. Key points include that Parenscript compiles Common Lisp to readable JavaScript code without runtime dependencies or new types, and is used in web frameworks, libraries, and commercial projects.
PSGI is a Perl port of Python's WSGI and Ruby's Rack that defines a common interface between web servers and frameworks. Plack provides reference implementations of PSGI servers as well as middleware and utilities. This allows frameworks to run on many servers like standalone, FastCGI, and Apache using a common PSGI application interface. Plack is fast, supports many frameworks through adapters, and provides tools like Plackup and middleware to help build and test PSGI applications.
Ansible is a simple yet powerful automation engine that uses YAML syntax. It is fast, efficient, and secure as it does not require agents or open ports on servers. Ansible uses inventory to list hosts and groups, modules to define units of work, facts to discover node details, and playbooks to define lists of plays and tasks. Playbooks can use tags to selectively run certain tasks. Roles help organize and reuse groups of tasks. Galaxy allows installing roles from online repositories. Variables precedence determines which value is used. Vault encrypts sensitive files.
Eitaro Fukamachi presented on writing the fast web server Woo in Common Lisp. He discussed three tactics for achieving speed: using a multithreaded event-driven architecture instead of prefork, developing a fast HTTP parser instead of regular expressions, and using the libev event library. Benchmarks showed Woo was 1.6 times faster than Node.js. The goal was to create the fastest HTTP server in Common Lisp.
JDD 2016 - Andrej Mihály - How To Bake Reactive Behavior Into Your Java Ee Ap...PROIDEA
Reactive applications are flexible and robust. Reactive programming is already an established concept and there are many modern frameworks and tools which support it. You need to understand the concept in order to build truly reactive applications. But you do not need to switch from what you already know to build them. With standard Java EE you have wide range of options to add reactive behavior to new and even existing applications.
I will show that Java EE is a modern and evolving framework, which supports reactive concepts. The latest versions of JDK and Java EE add even more asynchronous API to write fully reactive applications. On top of asynchronous processing in servlets, REST services and EJBs, there is asynchronous IO, managed multithreading and CompletableFuture with its promise-like API to tackle callback hell. Several Java EE implementations, like Payara Micro, go even further and provide extensions to scale your applications in natural way.
Currently pg worker is doing heavy work
do_op() is a long heavy function
PG_LOCK is held during the entire path
We will offload some functions within do_op() to other thread pools and make PG worker pipeline with those threads.
Eitaro Fukamachi gave a presentation on writing a fast HTTP parser in Common Lisp called fast-http. He explained that the bottleneck in the Wookie web framework was HTTP parsing, which was slower than Node.js. This was because Node.js uses the C-based and highly optimized http-parser library. Eitaro discussed how fast-http achieves high performance through an architecture that reduces memory allocation and uses the right data types, as well as through benchmarking, profiling, and type declarations to provide hints to the compiler. The goal was to write carefully optimized Lisp code that could match or beat C in performance for complex programs like an HTTP parser.
Cachopo - Scalable Stateful Services - Madrid Elixir MeetupAbel Muíño
This is an introduction to building our services in a different way, where state is moved out of the database and into the services (as opposed to mainstream stateless servers).
It also describes one particular proof-of-concept tool that Cabify built during its annual offsite.
In this talk, I will introducing Mass, a Python package, that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, (visualization), handling failures, command line integration, and much more.
The purpose of Mass is to address all the plumbing typically associated with long-running batch processes. You want to chain many tasks, automate them, and failures will happen. These tasks can be anything, but are typically long running things like video encoding, rendering for computer graphics, DB dump, or complex algorithm on big data.
The main features of Mass:
* No centralized server.
* Pythonic code snippets to represent a job
* On-premise, cloud-based or even mixed mass workers are allowed.
Let's start your mass job and enjoy it!
Optimize perl5 code for perfomance freakskarupanerura
The document discusses optimizing Perl 5 code for performance. It focuses on optimizing regular expressions, variable access, and conditional branches. Specific techniques discussed include suppressing memory copying, optimizing regular expressions, instance caching, and using string evaluation, with warnings that string evaluation is dangerous. The document demonstrates benchmarks comparing different date/time parsing modules in Perl.
The document describes setting up an Elixir project to perform optical character recognition (OCR) using the Google Vision API. It goes through initializing a new Mix project, adding dependencies like Credo for code analysis and HTTPoison for making HTTP requests, and creating modules to call the Google Vision API and provide a facade. Code examples are provided for creating a GoogleVision module that handles making requests to Google Vision and extracting text from responses. The overall goal is to build an OCR module that extracts quotes from memes by leveraging the Google Vision API.
Kotlin 1.2: Sharing code between platformsKirill Rozov
Discover what's new in Kotlin 1.2: syntax, standard library, performance and , of course, "Multiplatform project". Take closer look at how Kotlin authors see way of reusing code between platforms.
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra Sencha
In this session, Lee will cover the top 10 new features of ECMAScript 2015, their benefits, and go through code examples of how to use them. She will also talk about ECMAScript 2015 compatibilities and incompatibilities with the most widely used browsers today, and how you should plan on developing your applications with ECMAScript 2015.
Leave end-to-end testing to Capybara. Capybara is a web testing tool that simulates user interactions with a website. It allows automating browser interactions for scenarios and features using domain-specific languages like Cucumber. Capybara supports using different drivers like Selenium for JavaScript interactions and HtmlUnit for non-JavaScript sites. Specifying the driver and JavaScript support in tests allows running tests across different environments.
This document discusses Java 8 concurrency abstractions including asynchronous result processing using CompletableFuture and optimistic locking using StampedLock. It provides an overview and comparison to previous concurrency APIs. The agenda includes exploring CompletableFuture features like asynchronous execution, chaining reactions, and exception handling. It also covers using StampedLock for optimistic reads, comparing it to the previous ReentrantReadWriteLock approach. Examples are shown for common use cases of these new concurrency APIs.
This document discusses using Perl 6 with the Java Virtual Machine (JVM). It provides instructions for installing Perl 6 with JVM support and demonstrates various features like JSON processing, HTTP client/server, database access using SQLite and MySQL, calling Java methods, and building a basic GUI. Performance tests show startup is slow but HTTP server throughput is faster with JVM backend compared to MoarVM backend. Overall, the author finds Perl 6 on JVM to be practical for Java developers needing to access Java libraries and calls it potentially useful.
Learn how to build RESTful API using Node JS with Express Js Framework. Database used is Mongo DB (Mongoose Library). Learn Step by step what is Node JS, Express, API and Mongo DB. Explain and sample code step to build RESTful API
This document discusses implementing lightweight concurrency in PHP. It introduces spatie/fork, an open source library for running PHP code concurrently. The library provides an easy to use solution for running code concurrently. It was created by Freek Van der Herten, who develops open source packages and has over 300 packages on Packagist with over 190 million downloads total.
This document discusses Perl testing libraries and frameworks. It provides an overview of the history of Perl testing including Test::More and Test::Class. It also introduces some newer testing libraries like Test::Pretty, Test::Ika, and Test::Kantan that aim to improve on Test::Builder and provide additional features like BDD-style testing and improved output. The document encourages trying out these new testing libraries and frameworks.
Rack is a Ruby web server interface that provides a minimal specification for building web servers and web applications. It allows web servers and frameworks to be developed independently while remaining compatible. Rack defines a simple interface between web servers and Ruby frameworks or applications - a Rack application must respond to the 'call' method and return an array containing the response status, headers, and body. Middleware can be used to modify requests and responses and are configured in a rackup file to build a modular stack.
Plack is a superglue for Perl web frameworks that provides a common interface called PSGI (Perl Web Server Gateway Interface) inspired by WSGI and Rack. PSGI allows any web application or framework to run on any web server by providing a standard way for applications to communicate with servers. Plack also includes tools like Plackup for running PSGI applications from the command line and middleware for common functionality that can be shared across frameworks. Many existing Perl web frameworks have been adapted to run under PSGI through Plack.
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
This document provides a summary of a presentation on building a desktop application using HTTP::Engine, SQLite, and jQuery. The presentation discusses using HTTP::Engine as a lightweight web server, implementing RESTful APIs and backend actions with JSON responses, using SQLite for a simple and flexible local database, and manipulating the DOM with jQuery for the user interface. The goal is to create a desktop-like experience with the technologies of web applications.
Timothy Perrett gave a presentation on Scala Helix at the October LSUG meeting. He has been coding in Scala since 2007 and is the author of Lift in Action. He discussed opaque naming with Helix and demonstrated its workflow and activity scoring capabilities before taking questions from the audience.
JDD 2016 - Andrej Mihály - How To Bake Reactive Behavior Into Your Java Ee Ap...PROIDEA
Reactive applications are flexible and robust. Reactive programming is already an established concept and there are many modern frameworks and tools which support it. You need to understand the concept in order to build truly reactive applications. But you do not need to switch from what you already know to build them. With standard Java EE you have wide range of options to add reactive behavior to new and even existing applications.
I will show that Java EE is a modern and evolving framework, which supports reactive concepts. The latest versions of JDK and Java EE add even more asynchronous API to write fully reactive applications. On top of asynchronous processing in servlets, REST services and EJBs, there is asynchronous IO, managed multithreading and CompletableFuture with its promise-like API to tackle callback hell. Several Java EE implementations, like Payara Micro, go even further and provide extensions to scale your applications in natural way.
Currently pg worker is doing heavy work
do_op() is a long heavy function
PG_LOCK is held during the entire path
We will offload some functions within do_op() to other thread pools and make PG worker pipeline with those threads.
Eitaro Fukamachi gave a presentation on writing a fast HTTP parser in Common Lisp called fast-http. He explained that the bottleneck in the Wookie web framework was HTTP parsing, which was slower than Node.js. This was because Node.js uses the C-based and highly optimized http-parser library. Eitaro discussed how fast-http achieves high performance through an architecture that reduces memory allocation and uses the right data types, as well as through benchmarking, profiling, and type declarations to provide hints to the compiler. The goal was to write carefully optimized Lisp code that could match or beat C in performance for complex programs like an HTTP parser.
Cachopo - Scalable Stateful Services - Madrid Elixir MeetupAbel Muíño
This is an introduction to building our services in a different way, where state is moved out of the database and into the services (as opposed to mainstream stateless servers).
It also describes one particular proof-of-concept tool that Cabify built during its annual offsite.
In this talk, I will introducing Mass, a Python package, that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, (visualization), handling failures, command line integration, and much more.
The purpose of Mass is to address all the plumbing typically associated with long-running batch processes. You want to chain many tasks, automate them, and failures will happen. These tasks can be anything, but are typically long running things like video encoding, rendering for computer graphics, DB dump, or complex algorithm on big data.
The main features of Mass:
* No centralized server.
* Pythonic code snippets to represent a job
* On-premise, cloud-based or even mixed mass workers are allowed.
Let's start your mass job and enjoy it!
Optimize perl5 code for perfomance freakskarupanerura
The document discusses optimizing Perl 5 code for performance. It focuses on optimizing regular expressions, variable access, and conditional branches. Specific techniques discussed include suppressing memory copying, optimizing regular expressions, instance caching, and using string evaluation, with warnings that string evaluation is dangerous. The document demonstrates benchmarks comparing different date/time parsing modules in Perl.
The document describes setting up an Elixir project to perform optical character recognition (OCR) using the Google Vision API. It goes through initializing a new Mix project, adding dependencies like Credo for code analysis and HTTPoison for making HTTP requests, and creating modules to call the Google Vision API and provide a facade. Code examples are provided for creating a GoogleVision module that handles making requests to Google Vision and extracting text from responses. The overall goal is to build an OCR module that extracts quotes from memes by leveraging the Google Vision API.
Kotlin 1.2: Sharing code between platformsKirill Rozov
Discover what's new in Kotlin 1.2: syntax, standard library, performance and , of course, "Multiplatform project". Take closer look at how Kotlin authors see way of reusing code between platforms.
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra Sencha
In this session, Lee will cover the top 10 new features of ECMAScript 2015, their benefits, and go through code examples of how to use them. She will also talk about ECMAScript 2015 compatibilities and incompatibilities with the most widely used browsers today, and how you should plan on developing your applications with ECMAScript 2015.
Leave end-to-end testing to Capybara. Capybara is a web testing tool that simulates user interactions with a website. It allows automating browser interactions for scenarios and features using domain-specific languages like Cucumber. Capybara supports using different drivers like Selenium for JavaScript interactions and HtmlUnit for non-JavaScript sites. Specifying the driver and JavaScript support in tests allows running tests across different environments.
This document discusses Java 8 concurrency abstractions including asynchronous result processing using CompletableFuture and optimistic locking using StampedLock. It provides an overview and comparison to previous concurrency APIs. The agenda includes exploring CompletableFuture features like asynchronous execution, chaining reactions, and exception handling. It also covers using StampedLock for optimistic reads, comparing it to the previous ReentrantReadWriteLock approach. Examples are shown for common use cases of these new concurrency APIs.
This document discusses using Perl 6 with the Java Virtual Machine (JVM). It provides instructions for installing Perl 6 with JVM support and demonstrates various features like JSON processing, HTTP client/server, database access using SQLite and MySQL, calling Java methods, and building a basic GUI. Performance tests show startup is slow but HTTP server throughput is faster with JVM backend compared to MoarVM backend. Overall, the author finds Perl 6 on JVM to be practical for Java developers needing to access Java libraries and calls it potentially useful.
Learn how to build RESTful API using Node JS with Express Js Framework. Database used is Mongo DB (Mongoose Library). Learn Step by step what is Node JS, Express, API and Mongo DB. Explain and sample code step to build RESTful API
This document discusses implementing lightweight concurrency in PHP. It introduces spatie/fork, an open source library for running PHP code concurrently. The library provides an easy to use solution for running code concurrently. It was created by Freek Van der Herten, who develops open source packages and has over 300 packages on Packagist with over 190 million downloads total.
This document discusses Perl testing libraries and frameworks. It provides an overview of the history of Perl testing including Test::More and Test::Class. It also introduces some newer testing libraries like Test::Pretty, Test::Ika, and Test::Kantan that aim to improve on Test::Builder and provide additional features like BDD-style testing and improved output. The document encourages trying out these new testing libraries and frameworks.
Rack is a Ruby web server interface that provides a minimal specification for building web servers and web applications. It allows web servers and frameworks to be developed independently while remaining compatible. Rack defines a simple interface between web servers and Ruby frameworks or applications - a Rack application must respond to the 'call' method and return an array containing the response status, headers, and body. Middleware can be used to modify requests and responses and are configured in a rackup file to build a modular stack.
Plack is a superglue for Perl web frameworks that provides a common interface called PSGI (Perl Web Server Gateway Interface) inspired by WSGI and Rack. PSGI allows any web application or framework to run on any web server by providing a standard way for applications to communicate with servers. Plack also includes tools like Plackup for running PSGI applications from the command line and middleware for common functionality that can be shared across frameworks. Many existing Perl web frameworks have been adapted to run under PSGI through Plack.
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
This document provides a summary of a presentation on building a desktop application using HTTP::Engine, SQLite, and jQuery. The presentation discusses using HTTP::Engine as a lightweight web server, implementing RESTful APIs and backend actions with JSON responses, using SQLite for a simple and flexible local database, and manipulating the DOM with jQuery for the user interface. The goal is to create a desktop-like experience with the technologies of web applications.
Timothy Perrett gave a presentation on Scala Helix at the October LSUG meeting. He has been coding in Scala since 2007 and is the author of Lift in Action. He discussed opaque naming with Helix and demonstrated its workflow and activity scoring capabilities before taking questions from the audience.
This document is a presentation by Timothy Perrett about the Scala programming language. It introduces Scala as a statically typed, hybrid object-functional language. It discusses concepts of functional programming like referential transparency and avoiding side effects. It provides code examples comparing Scala and Ruby. It also highlights features of Scala like useful data types, implicit conversions, domain-specific languages, performance, and more.
Verizon Labs is home to one of the largest Scala-based functional programming teams in North America, and in this talk Timothy Perrett provides an insight into the work of his infrastructure engineering team, in driving adoption of pure-functional programming in a fortune 15 company: from language education and proliferation within the team, to the specific positives and negatives of purely functional programming, when applied at massive scale
Large-scale Infrastructure Automation at VerizonTimothy Perrett
As a company, Verizon networks and infrastructure touch nearly 70% of global internet traffic every single day. The many datacenters that support this - and many other large-scale Verizon services - are our lifeblood. This talk provides a glimpse into the work being done to reimagine the way in which we design and operate the software that runs our internal computing grids, and how we enable a large body of development staff to ship jobs and services to the grid every single day. We’ll cover how Consul and Vault make for invaluable building blocks in modern distributed systems, and highlight the importance of empowering teams through well designed infrastructure systems.
Using and scaling Rack and Rack-based middlewareAlona Mekhovova
Rack provides a standard interface between web servers and web applications. It allows a web application to return a status, headers, and a body in response to an HTTP request. Middleware can be plugged into a Rack application to modify requests and responses. Popular Rack middleware includes Rack::Cache, Rack::Middleware, and Warden for authentication. In Rails, middleware is configured through an initializer and plugged into the middleware stack to run before or after other middleware.
The document discusses Rack, a modular web server interface for Ruby that allows web applications and frameworks to be written as middleware stacks. It covers topics like Rack applications as middleware, common Rack middleware components, building applications with Rack and middleware, and integrating Rack middleware with frameworks like Rails.
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
Building a desktop app using HTTP::Engine as a micro web server, SQLite for data storage, and jQuery for the user interface. Comet and asynchronous workers are used to enable real-time features. JSON-RPC and routing are implemented to support AJAX actions. The combination provides a lightweight "desktop app" architecture that is cross-platform.
There are more smart people building software now than there have been at any point in the past, which means that it's more important than ever to stay on top of new developments, libraries, frameworks, and everything else. To really take advantage of this wealth of innovation, however, you've got to look beyond your normal community -- what's going on in Python? And how can we use that to make our Ruby lives easier? In this session, we'll explore that question. We'll look at actual examples of code and concepts borrowed and reimplemented to form a better idea of when it's appropriate and when it'll fall flat.
Express is a web application framework for Node.js that provides a robust set of features for building web applications and APIs. It is designed for building scalable and fast web applications and services. Some key features include being built on Node.js for asynchronous and event-driven capabilities, a simple routing system and middleware support, and support for template engines and plugins.
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
This document discusses rethinking web app development with React.js and Flux. It outlines some of the challenges with traditional MVC frameworks in scaling to support features like real-time updates. It then introduces React.js as a component-based view library and Flux as an architecture that uses unidirectional data flow to address these challenges through composable and reusable components. Specific implementations discussed include Fluxible for building isomorphic apps and Webpack as a module bundler.
The document discusses using JRuby to integrate Ruby and Rails into an existing Java/Spring application. It describes using JRuby, Warbler, Rack, and Rails to refactor the application in stages from small changes like adding tests and routing, to medium changes like layering on Rails, to a large refactor of the directory structure and bootstrapping Rails within the Spring context.
- PSGI (Perl Web Server Gateway Interface) and Plack provide a common interface and utilities for building web applications and servers in Perl.
- PSGI defines a standard interface that web frameworks can implement to work with different server implementations. Plack provides server implementations like standalone, FastCGI and Apache modules.
- This allows frameworks to focus on the application code instead of server specifics, and servers to handle multiple frameworks. Common middleware and testing utilities are also included.
- Examples of frameworks that have adopted PSGI include Catalyst, Maypole and Mojolicious. Popular servers built on Plack include Starman and Dancer.
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
Developing RESTful WebServices using Jerseyb_kathir
This document provides an overview of RESTful web services using Java. It defines key REST concepts like resources, uniform interface, and state representations. It also introduces JAX-RS, the Java API for RESTful web services, and Jersey, the reference implementation of JAX-RS. The document includes examples of RESTful web service code using JAX-RS annotations and discusses REST framework alternatives.
Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere
This document discusses the Atmosphere framework for building asynchronous web applications. It introduces key concepts like suspending responses, broadcasting events, scheduling broadcasts, and clustering. It also provides an example of building a real-time Twitter search application with Atmosphere and discusses how Atmosphere allows writing applications once that can run anywhere across different transports without browser workarounds. The document encourages developers to use the simple Atmosphere APIs to build powerful asynchronous applications and to join the Atmosphere community.
The document discusses the future of server-side JavaScript. It covers various Node.js frameworks and libraries that support both synchronous and asynchronous programming styles. CommonJS aims to provide interoperability across platforms by implementing synchronous proposals using fibers. Examples demonstrate how CommonJS allows for synchronous-like code while maintaining asynchronous behavior under the hood. Benchmarks show it has comparable performance to Node.js. The author advocates for toolkits over frameworks and continuing development of common standards and packages.
This talk was given at the Dutch PHP Conference 2011 and details the use of Comet (aka reverse ajax or ajax push) technologies and the importance of websockets and server-sent events. More information is available at http://joind.in/3237.
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.
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
You've heard of Zend's new framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and finally how to integrate a third party tool like Doctrine ORM.
Session highlighting and demonstrating approaches to common challenges in modern portlet development. Topics include AJAX in JSR-168 and JSR-286 portlets, CSS and Javascript toolkits, security, and optimization of front-end resources. This session was presented at the Jasig Spring 2010 conference in San Diego, CA by Jennifer Bourey.
Rapid java backend and api development for mobile devicesciklum_ods
This document discusses best practices for developing RESTful APIs and backend services for mobile applications. It recommends using Java, Maven, Spring, Jersey, and Protocol Buffers. Protocol Buffers provide a compact data interchange format that is faster than JSON and more widely supported than other protocols. The document provides an example of implementing authentication, API throttling, caching, testing, and error handling in a RESTful service using these technologies.
Similar to Scalalable Language for a Scalable Web (20)
Nelson: Rigorous Deployment for a Functional WorldTimothy Perrett
Functional programming finds its roots in mathematics - the pursuit of purity and completeness. We functional programmers look to formalize system behaviors in an algebraic and total manner. Despite this, when it comes time to deploy ones beautiful monadic ivory towers to production, most organizations cast caution to the wind and use a myriad of bash scripts and sticky tape to get the job done. In this talk, the speaker will introduce you to Nelson, an open-source project from Verizon that looks to provide rigor to your large distributed system, whilst offering best-in-class security, runtime traffic shifting and a fully immutable approach to application lifecycle. Nelson itself is entirely composed of free algebras and coproducts, and the speaker will show not only how this has enabled development, but also how it provided a frame with which to reason about solutions to fundamental operational problems.
Online Experimentation with Immutable InfrastructureTimothy Perrett
Immutable infrastructure has changed the way we think about system lifecycle: compute machines live for days instead of months or years, and applications live for hours or less. With the proliferation of CI/CD systems, and infrastructure as a service, the increased churn in production systems has hastened the immediate need for tools that prioritize experimentation - is your next development iteration really better than the last? In such a volatile world, traditional notions of compute “environments” and mutable approaches to experimentation can be found lacking. In large systems, emergent behaviors are near impossible to replicate in isolation, so experimenting in production systems is the only way to effectively measure hypothesis. This session covers different schemes for experimentation and the primitives required to make converged infrastructure work for real systems.
Javazone 2011: Goal Directed Web ApplicationsTimothy Perrett
1) The document discusses building goal-directed web applications using Scala by modeling tasks as a series of inter-related functions.
2) It proposes representing user tasks abstractly and capturing user intent through functions to build "smart UIs" that are asynchronous and scale efficiently using technologies like Lift and Akka.
3) A demo is promised to show that reactive programming techniques are useful beyond chat applications.
The document discusses concurrency and parallelism in Scala. It notes that manually handling threads and locks is difficult and error-prone. Actors provide a safer model for concurrency by encapsulating state and message-passing. Parallelism can be achieved in Scala through parallel collections that split work over multiple processors. The author advocates building asynchronous systems using actors for concurrency and parallel collections for parallelism to fully utilize hardware resources.
Scaladays 2011: Task Driven Scala Web ApplicationsTimothy Perrett
1. The document discusses task-based analysis for building scalable web applications in Scala.
2. Task-based analysis provides an abstract model for the entire task flow that is compatible with design patterns like domain-driven design and command query responsibility segregation.
3. This approach allows capturing user interface interactions based on the user's intent and building real-time user interfaces with tools like Lift Comet.
Riak is a document oriented database written in Erlang that is highly fault tolerant and based on Dynamo and the CAP theorem. It uses a similar data model to MongoDB by storing semi-structured data as documents but achieves high availability through quorum writes rather than MongoDB's in-place writes. Key features of Riak include configurable replica counts for reads and writes (N/R/W), masterless replication, and an integer keyspace that allows any node to service requests. Riak search also provides distributed, fault tolerant full-text search capabilities.
Lift is a Scala web framework that makes building highly interactive real-time web applications simple. It leverages Scala language features and takes the best ideas from other frameworks, such as Seaside's granular sessions and security and Rails' convention over configuration. Lift has a unique "view first" architecture and offers unparalleled security and comet support out of the box. It is already used by major companies like Foursquare and has been proven at scale.
The document discusses a presentation on the Lift web framework and the real-time web. The presentation covers an overview of Scala, Lift's rationale, features of the real-time web, Lift's feature set, and how Scala enables Lift. Key features of Scala discussed include immutability, case classes, traits, pattern matching, and actors. Lift is introduced as a web framework that leverages Scala and takes the best ideas from other frameworks to make real-time web applications accessible.
CAKE: Sharing Slices of Confidential Data on BlockchainClaudio Di Ciccio
Presented at the CAiSE 2024 Forum, Intelligent Information Systems, June 6th, Limassol, Cyprus.
Synopsis: Cooperative information systems typically involve various entities in a collaborative process within a distributed environment. Blockchain technology offers a mechanism for automating such processes, even when only partial trust exists among participants. The data stored on the blockchain is replicated across all nodes in the network, ensuring accessibility to all participants. While this aspect facilitates traceability, integrity, and persistence, it poses challenges for adopting public blockchains in enterprise settings due to confidentiality issues. In this paper, we present a software tool named Control Access via Key Encryption (CAKE), designed to ensure data confidentiality in scenarios involving public blockchains. After outlining its core components and functionalities, we showcase the application of CAKE in the context of a real-world cyber-security project within the logistics domain.
Paper: https://doi.org/10.1007/978-3-031-61000-4_16
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Things to Consider When Choosing a Website Developer for your Website | FODUUFODUU
Choosing the right website developer is crucial for your business. This article covers essential factors to consider, including experience, portfolio, technical skills, communication, pricing, reputation & reviews, cost and budget considerations and post-launch support. Make an informed decision to ensure your website meets your business goals.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Good afternoon everyone, and welcome to this talk: scalable language; scalable web. My name is Timothy Perrett, and i’ve been kicking around in the Scala community since about the end of 2007; essentially before we had a reasonable collections library, akka, lift as we know it today, or any of the other awesome Scala projects that make up out lovely community. \n\nI like to make things though, and i’ve been involved in a wide range of projects, from web toolkits, to build systems to a myriad of other things. With that being said, I have a big interest in web programming, and its something I care a great deal about: most of the commercial projects I work on these days are web applications or services. \n
I’m also the author of Lift in Action, the most complete guide to Lift available today; so if you have an interest in learning Lift, by all means pick up a copy.\n
So today I’m going to be talking to you about how approaches to web programming have changed over the years, and how the features present in both the scala language and the within our community have influenced “solutions” to the problem of HTTP application programming.\n\nAs this talk is titled “scalable language; scalable web” I first what to reconsider the meaning of the word “scalable”.\n
Scalability has very much become a buzzword in the business community, and we are often bombarded with blanket marketing that implies scalability is directly centred around performance concerns, and performance alone. \n\nWhilst it may be true that online sites and applications are growing faster than ever before, and indeed, at the end of 2011 there were some 555,000,000 sites online. Of that huge number though, only a very small portion are the Facebooks, Googles and twitters of this world. This is something we must consider when discussing scalability. \n\nAs you can see on the slide here, the dictionary defines scalability to mean “Able to be used or produced in a range of capabilities: it is scalable across a range of systems”. Not once does that sentence mention performance or “big data” or anything else suitably buzzword like. Ergo, we can consider this idea of scalability as being multi-faceted, having multiple applicable axis. In this talk I’ll be covering what could be three possible axis of scalability:\n- scaling down: something that is small, lightweight and has minimal overhead.\n- scaling up, or scaling performance: pretty much what the business folks take it as meaning; building the next facebook. obviously. \n- scaling features: scaling an idea; taking a single concept and applying it to everything you do. \n
So before we get onto all that good stuff, I would just like to take you on a trip down memory lane... the year is 1995, and whilst Bill Gates was busy launching his “revolutionary” new operating system Windows 95, James Gosling was busy inventing servlets. \n\nServlets did remain useful after ’95 though, unlike Windows unfortunately for Mr Gates.\n\n----- ERATA \n\nServlets were later formalised by Pawani Diwanji as part of JavaSofts Jeeves project in 1996[1]\n\n[1] http://www.mtvjug.org/Oct23.html\n
Raise your hands if you recognise this code, or something similar to this, or if you’re still maintaing or writing something like this today...\n\nThis style of HTTP programming is 17 years old. When we look at nearly everything else we use today, “old” constitutes 6 months, or perhaps even a year. On that scale 17 years old is practically neolithic! This stuff is dinosaur technology.\n\n\n\n\n\n
Whilst researching this talk I can across this great quote from a 1996 mountain view JUG agenda, which detailed the “Jeeves” project which the servlet API was originally a part of. The agenda states: “Jeeves defines the Java Servlet APIs for the quick and easy creation, installation, administration and security of Java-based network servers.”\n\nThat sounds awesomely whizzbang!... and at the time it really was. Now though, we know we can do better: its not 1995 or 96 anymore; things in our industry have changed, but, fundamentally web programming hasn’t changed on the JVM since its inception. Ok, things have been added, augmented and hastily bolted on, but at its core it hasn’t really changed.\n
This strikes me as diametrically opposed to views on HTTP programming within the wider industry: things have changed irreparably in the past two years or so with the advent of HTML5. Browsers are now capable of delivering better, more seamless user experiences and interacting with richer server-side backends than ever before: event sources and web sockets being just two such examples.\n\nWith the pace of change being what it is, the unfortunate reality is that the servlet specification cannot keep up; the point in case there being the time it took servlet 3.0 to reach release status. \n
Consider for a moment our vibrant Scala eco-system; its thankfully quite different to the Java eco-system, and its full of very smart folks who’ve approached the problem of HTTP programming in a range of different, and innovative ways. These toolkits are numerous:\n- scalatra\n- play\n- lift\n- unfiltered\n- slinky\n- and many more\n\nGetting back to this idea of scalability, the first on my axis of possible interpretations of scalability was scaling down with lightweight toolkits.\n
I once recall hearing a software industry anecdote that said that by increasing application complexity by 25% would boost the development effort by 200%. This is most fascinating, as one has to consider what happens when situation is reversed: remove 25% of the complexity, and slash the development effort and cost of that project. \n\nOf course, this can’t work for every conceivable application, but as per the introduction, many, many applications will never need to scale to anything more than a single instance. \n
Unfiltered is a lightweight, stateless HTTP abstraction that can sit atop many different types of backend server, from our old friend the servlet API, to newer platforms like Netty. In any case, Unfiltered’s API is exceedingly lightweight and solely based around two Scala language concepts: function composition and pattern matching.\n
Intents are just partial functions\n
\n
\n
\n
\n
\n
1. ergo simple learning curve\n\n
1. ergo simple learning curve\n\n
1. ergo simple learning curve\n\n
1. ergo simple learning curve\n\n
1. ergo simple learning curve\n\n
\n
introduction to spray with a quick mention of its blueeyes lineage \n\ninsanely fast: 65k req/s which is slightly faster than netty \n
\n
\n
\n
\n
\n
\n
\n
Architecturally speaking, Spray is entirely built on actors: HTTP Requests are just immutable messages.\n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
This a gross over-simplification of how spray works, but you can visualise HTTP requests as incoming messages to the HTTP Service actor, which in turn spawns a new worker actor with a request context continuation to execute and respond to continue the request processing. \n
\n
\n
\n
\n
\n
\n
talk about lifts security features\n\nImplements its own session storage so the session is fully type-safe\n
introduction to lift \n\nstateful web\n\nOne of the oldest scala projects around\n\n\n
\n
\n
\n
Prevents CSRF\n
Prevents CSRF\n
Templates are validated XML, not a bunch of strings that are simply munged together. The result is that anytime you want to pass unescaped content you have to be very explicit about it, the toolkit forces the developer to understand why he/she is doing that.\n\nThis massively helps in preventing XSS vulnerable code getting into production by accident. \n
\n
\n
\n
\n
\n
\n
\n
\n
In this talk i’ve demonstrated three distinct ways in which Scala has had an impact on the design of web toolkits within our eco-system. Whilst its fairly easy to see that each tool is distinctly different from its fellow projects, there is a degree of commonality throughout, and that’s composition. \n\nFrom core APIs, to higher level routing DSLs and templating: the upshot of highly compassable systems is more modularity, code that is easier to maintain, and far simpler to reason about. \n\nGone are the days of monolithic Spring or JEE systems! HTTP toolkits in Scala let you achieve things that are either not easily doable with servlets, or require a dependency chain as long as your arm to make it happen.\n\n\n
With all that good stuff being said, its important to understand that there are no panaceas, no silver bullets. \n\nThe real take away from this presentation is that most of the HTTP toolkits differ considerably from one another. Each has its own strengths and weaknesses, and its more important than ever to understand your own use case and make the right tooling choice to solve your problem. \n\n\n
With all that good stuff being said, its important to understand that there are no panaceas, no silver bullets. \n\nThe real take away from this presentation is that most of the HTTP toolkits differ considerably from one another. Each has its own strengths and weaknesses, and its more important than ever to understand your own use case and make the right tooling choice to solve your problem. \n\n\n
With that, thank you very much for listening. If anyone has any questions I’d be happy to answer them. \n
With that, thank you very much for listening. If anyone has any questions I’d be happy to answer them. \n