Elixir and Crystal are both descendants of the Ruby programming language, applying Ruby syntax and ideas to extremely different functional and OOP foundations. This talk compares all three languages and suggests appropriate cases for applying them.
PHP 7 provides major performance improvements and new features like scalar type hinting. Benchmarks show PHP 7 code running around 50-90% faster than PHP 5.6 for the same applications, with more significant speedups when opcodes are cached. PHP 7 aims to modernize PHP and bring it more in line with languages like Java in aspects like interfaces while maintaining backwards compatibility.
This document provides an overview of actor modeling and how to implement actors using the Akka library. It begins with explaining the actor model and benefits of actors over threads. It then discusses how to create actors with Akka, demonstrating with a multiplayer chess game. The schedule outlines explaining the actor model for 1/4 of the time and how to create Akka actors for 3/4 of the time using the chess game demo. Useful links are provided for Akka documentation and chess/game related projects.
Lock-free algorithms for Kotlin CoroutinesRoman Elizarov
The document discusses lock-free algorithms for Kotlin coroutines. It covers the implementation of a lock-free doubly linked list using single-word compare-and-swap operations. It also discusses how to build more complex atomic operations, like a multi-word compare-and-swap, to enable select expressions in Kotlin coroutines.
This document discusses concurrency and parallelism in Ruby. It defines concurrency as performing two operations in tandem, while parallelism refers to performing two operations literally at the same time using multiple cores. The document examines traditional approaches to concurrency like threads and locks in Ruby and their limitations. It advocates for adopting models from other languages like actors and software transactional memory that can provide safer concurrency through message passing and transactions rather than shared mutable state and locks. The document reviews several Ruby libraries that implement actors and proposes areas for further improvement in Ruby's core support for concurrent programming.
What's a macro?: Learning by Examples / Scalaのマクロに実用例から触れてみよう!scalaconfjp
Macros allow code to generate code by replacing expressions during compilation. They enable simplifying code and improving efficiency. While macros are powerful, their implementation can be complex, requiring knowledge of compiler internals. The scala.meta library aims to simplify metaprogramming by representing programs as trees without losing information, making macros easier to write without deep compiler expertise.
This document discusses internationalizing (i18n) Scala programs using the gettext approach. It describes marking strings for translation, extracting them to template files, loading translation files, and translating at runtime. Tools are introduced for extracting strings from Scala code and templates, editing translation files, and parsing loaded files. The approach works for various Scala template engines and frameworks like Play.
- Ruby is no longer considered a "cool" language according to the author, who examines several languages that are currently popular including Swift, Rust, Go, Elixir, Julia, and Dart.
- Swift was created by Apple to replace Objective-C and adds modern features while removing the complexity of C. Rust was created to be safe, concurrent, and practical while combining high and low level capabilities. Go was created at Google to be understandable, productive, and scale well for networking and multiprocessing. Elixir builds on Erlang's concurrency model and adds a Ruby-like syntax. Julia targets scientific computing by combining speed and interactivity. Dart was created by Google to replace JavaScript but never gained
This document provides guidance on contributing to the Node.js core codebase. It recommends writing tests before submitting code changes, explains Node's test structure and best practices for writing good tests, and gives an overview of Node's core source code structure and key modules like http and tcp. The document concludes by assigning homework for attendees to read CONTRIBUTING.md, write a test, and submit a patch to fix a bug on GitHub.
PHP 7 provides major performance improvements and new features like scalar type hinting. Benchmarks show PHP 7 code running around 50-90% faster than PHP 5.6 for the same applications, with more significant speedups when opcodes are cached. PHP 7 aims to modernize PHP and bring it more in line with languages like Java in aspects like interfaces while maintaining backwards compatibility.
This document provides an overview of actor modeling and how to implement actors using the Akka library. It begins with explaining the actor model and benefits of actors over threads. It then discusses how to create actors with Akka, demonstrating with a multiplayer chess game. The schedule outlines explaining the actor model for 1/4 of the time and how to create Akka actors for 3/4 of the time using the chess game demo. Useful links are provided for Akka documentation and chess/game related projects.
Lock-free algorithms for Kotlin CoroutinesRoman Elizarov
The document discusses lock-free algorithms for Kotlin coroutines. It covers the implementation of a lock-free doubly linked list using single-word compare-and-swap operations. It also discusses how to build more complex atomic operations, like a multi-word compare-and-swap, to enable select expressions in Kotlin coroutines.
This document discusses concurrency and parallelism in Ruby. It defines concurrency as performing two operations in tandem, while parallelism refers to performing two operations literally at the same time using multiple cores. The document examines traditional approaches to concurrency like threads and locks in Ruby and their limitations. It advocates for adopting models from other languages like actors and software transactional memory that can provide safer concurrency through message passing and transactions rather than shared mutable state and locks. The document reviews several Ruby libraries that implement actors and proposes areas for further improvement in Ruby's core support for concurrent programming.
What's a macro?: Learning by Examples / Scalaのマクロに実用例から触れてみよう!scalaconfjp
Macros allow code to generate code by replacing expressions during compilation. They enable simplifying code and improving efficiency. While macros are powerful, their implementation can be complex, requiring knowledge of compiler internals. The scala.meta library aims to simplify metaprogramming by representing programs as trees without losing information, making macros easier to write without deep compiler expertise.
This document discusses internationalizing (i18n) Scala programs using the gettext approach. It describes marking strings for translation, extracting them to template files, loading translation files, and translating at runtime. Tools are introduced for extracting strings from Scala code and templates, editing translation files, and parsing loaded files. The approach works for various Scala template engines and frameworks like Play.
- Ruby is no longer considered a "cool" language according to the author, who examines several languages that are currently popular including Swift, Rust, Go, Elixir, Julia, and Dart.
- Swift was created by Apple to replace Objective-C and adds modern features while removing the complexity of C. Rust was created to be safe, concurrent, and practical while combining high and low level capabilities. Go was created at Google to be understandable, productive, and scale well for networking and multiprocessing. Elixir builds on Erlang's concurrency model and adds a Ruby-like syntax. Julia targets scientific computing by combining speed and interactivity. Dart was created by Google to replace JavaScript but never gained
This document provides guidance on contributing to the Node.js core codebase. It recommends writing tests before submitting code changes, explains Node's test structure and best practices for writing good tests, and gives an overview of Node's core source code structure and key modules like http and tcp. The document concludes by assigning homework for attendees to read CONTRIBUTING.md, write a test, and submit a patch to fix a bug on GitHub.
The document discusses differences between Ruby and Scala programming languages. Some key similarities include both being class-based object-oriented languages with functional features. Differences include Scala using explicit types while Ruby is dynamically typed, and Scala having separate concepts of methods and functions while Ruby blurs the distinction. The document also compares features like class definitions, collections, functions as values, and enhancing existing classes.
Kotlin is a statically typed programming language for the JVM, Android and the browser designed for the industry. This presentation is an overview of Kotlin features and advantages over Java including code samples.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
With Java 8 adoption skyrocketing, is Scala still relevant? In our opinion, the answer is an unequivocal yes. To make our point, Tomer Gabel (system architect at Wix) will showcase practical examples where Scala's features provide a definitive advantage over Java 8. These include:
* Effective logging with traits and by-name parameters;
* Pattern matching for fun and profit;
* Type-safe, efficient serialization with type classes.
A talk given at a Wix Ukraine R&D meetup in Dnipropetrovsk, Ukraine on 6 April, 2016.
Video recording: https://youtu.be/EXxA3PlcdBg?t=3680
Sample code: https://github.com/holograph/scala-vs-java8
- The document discusses Ruby meta programming and provides information about the author such as their Twitter handle and blog. It then covers topics like what Ruby is, differences between Ruby and other languages, and new concepts in Ruby like symbols, variables, and object-oriented principles.
If you still haven't heard of it, there is a new star in JVM sky - Kotlin. This short presentation will serve as intro for those who wan't to hear what's all the fuss about and dive deeper into this new alternative to Java
Node.js: Patterns and Opinions discusses Node.js principles and best practices. It emphasizes that Node.js is built on JavaScript and uses non-blocking I/O with callbacks to handle requests asynchronously. It recommends avoiding slowness, ignoring errors, and focusing on portability, small modular parts, and an open community approach. The future of Node.js involves continued improvements to core modules like HTTP and new versions of underlying technologies.
You can write Android applications in Ceylon, using the standard Android tools. This has many advantages, since you can use all the language features available for the other platforms that Ceylon targets, such as:
Union and intersection types
Top-level and higher-order functions
Tuples
Comprehensions
Typesafe metamodel (Ceylon’s version of Java reflection, with additional type safety)
JavaScript: Creative Coding for Browsersnoweverywhere
This document introduces JavaScript, highlighting that it is a client-side scripting language used to add interactivity to web browsers. It discusses JavaScript's origins, features, syntax, objects, operators, loops, and constructors. The document also covers JavaScript's use in creative coding examples, HTML5 features it can access like audio/video, canvas and local storage, and popular JavaScript libraries and APIs. Resources for learning more about JavaScript are provided.
The document discusses how the Guardian migrated from Java to Scala for one of its projects. It had been using Java since 2006 but wanted to innovate faster. It tried Python/Django but found it required throwing away Java experience and had different development and runtime environments. It discovered Scala as a better alternative as Scala runs on the JVM so it could reuse Java tools, libraries and deployment processes. It converted a content API project from Java to Scala and was pleased with the results, finding Scala less verbose and more expressive than Java. It now uses Scala by default for new JVM projects.
TypeProf for IDE: Enrich Development Experience without Annotationsmametter
The document discusses TypeProf for IDE, a VSCode extension powered by TypeProf, a static type analyzer for Ruby. It allows achieving aspects of modern development experience like on-the-fly error reporting and type inference without type annotations. The demo shows features like method signature hints, error reporting, and completion working through the language server protocol. Future work includes improving parser robustness and optimizing analysis performance.
LSUG: How we (mostly) moved from Java to ScalaGraham Tackley
Presentation from talk done at the London Scala User Group on Wednesday 12th Jan 2011.
http://skillsmatter.com/podcast/java-jee/how-we-mostly-moved-from-java-to-scala
Develop realtime web with Scala and XitrumNgoc Dao
This document discusses a talk given by Ngoc Dao on developing realtime and distributed web applications with Scala and Xitrum. The talk covers:
1) An overview of Scala, including its functional features, object-oriented features, tools like SBT and REPL, and how to get started.
2) Using Scala for web development with the Xitrum framework, including routing, responding to requests, internationalization, and metrics.
3) Using Scala for concurrency with futures, actors, and Akka FSM.
4) Building realtime web applications with websockets, Socket.IO and SockJS.
5) Distributed systems with Akka remoting
A Type-level Ruby Interpreter for Testing and Understandingmametter
Type Profiler is a type analyzer for Ruby 3 that analyzes non-annotated Ruby code. It runs Ruby code at the type level to find potential errors and prototype type signatures. It forks execution for branches and reuses results when possible. While not perfect, it provides basic type checking capabilities for Ruby without requiring type annotations. The author acknowledges limitations and many areas for future work to improve Type Profiler.
The document discusses The Guardian's migration from a Java-based architecture to one using Scala for their Content API project. They started by writing integration tests in Scala with ScalaTest in January 2010 and enjoyed it so much that after a month, in February 2010, they decided to convert the whole application to Scala. It took some time for the team to learn how to write good Scala code, like embracing the Option type to avoid nulls and using map and flatMap instead of loops. The migration was relatively smooth by embracing Scala features incrementally. [END SUMMARY]
WDB005.1 - JavaScript for Java Developers (Lecture 1)Igor Khotin
This document provides an overview of JavaScript for Java developers. It discusses the origins and history of JavaScript, including how it was influenced by Java syntax but developed separately. The document outlines similarities and differences between JavaScript and Java, as well as features of JavaScript like dynamic typing, prototypes, closures, and this keyword context. It recommends leveraging good JavaScript features like objects, functions, and JSON while avoiding bad patterns like direct DOM manipulation. Resources for further learning are also provided.
This document provides an introduction to the Scala programming language. It discusses that Scala was created by Martin Odersky in 2003 as a hybrid functional and object-oriented language that runs on the Java Virtual Machine. Some key points made include that Scala code compiles to Java bytecode, allows importing of Java libraries, and supports features like functions as first-class objects. The document also provides examples of Hello World programs in Scala and Java for comparison, and demonstrates basic Scala concepts like variables, conditionals, loops, and lists.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
The document reviews JavaScript languages that can be compiled to JavaScript, including CoffeeScript, Dart, TypeScript, Traceur, Emscripten, Scala.js, ClojureScript, Kotlin, and others. It discusses their features like static typing, classes, async/await support, and ability to port other language ecosystems to run in the browser. It also covers architectures like Opa and Ur/Web that aim to use a single language across front-end, back-end, and databases.
The document discusses building programming languages for the Java Virtual Machine (JVM). It begins by introducing the speaker, Charles Oliver Nutter, and his background working with JRuby and the JVM. It then explores reasons for creating and implementing languages, focusing on the benefits of the JVM like cross-platform support, libraries, and memory management. A case study of JRuby is presented, showing how it allows Ruby programming on the JVM with full interoperability with Java. In the conclusion, the document emphasizes benefits of the JVM like tools, open source culture, and how it influenced language implementation.
This document provides an overview of JRuby, a Ruby implementation that runs on the Java Virtual Machine. It begins with an agenda that covers Ruby and JRuby basics, real-world JRuby applications including graphics, games, and web applications, and an opportunity for questions. It then introduces the JRuby developers and provides a brief Ruby tutorial covering classes, blocks, modules and more. Examples are given of JRuby being used for graphics, games, Rails web applications, and GUI programming. The presentation concludes by thanking the audience and providing links for more information.
The document discusses differences between Ruby and Scala programming languages. Some key similarities include both being class-based object-oriented languages with functional features. Differences include Scala using explicit types while Ruby is dynamically typed, and Scala having separate concepts of methods and functions while Ruby blurs the distinction. The document also compares features like class definitions, collections, functions as values, and enhancing existing classes.
Kotlin is a statically typed programming language for the JVM, Android and the browser designed for the industry. This presentation is an overview of Kotlin features and advantages over Java including code samples.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
With Java 8 adoption skyrocketing, is Scala still relevant? In our opinion, the answer is an unequivocal yes. To make our point, Tomer Gabel (system architect at Wix) will showcase practical examples where Scala's features provide a definitive advantage over Java 8. These include:
* Effective logging with traits and by-name parameters;
* Pattern matching for fun and profit;
* Type-safe, efficient serialization with type classes.
A talk given at a Wix Ukraine R&D meetup in Dnipropetrovsk, Ukraine on 6 April, 2016.
Video recording: https://youtu.be/EXxA3PlcdBg?t=3680
Sample code: https://github.com/holograph/scala-vs-java8
- The document discusses Ruby meta programming and provides information about the author such as their Twitter handle and blog. It then covers topics like what Ruby is, differences between Ruby and other languages, and new concepts in Ruby like symbols, variables, and object-oriented principles.
If you still haven't heard of it, there is a new star in JVM sky - Kotlin. This short presentation will serve as intro for those who wan't to hear what's all the fuss about and dive deeper into this new alternative to Java
Node.js: Patterns and Opinions discusses Node.js principles and best practices. It emphasizes that Node.js is built on JavaScript and uses non-blocking I/O with callbacks to handle requests asynchronously. It recommends avoiding slowness, ignoring errors, and focusing on portability, small modular parts, and an open community approach. The future of Node.js involves continued improvements to core modules like HTTP and new versions of underlying technologies.
You can write Android applications in Ceylon, using the standard Android tools. This has many advantages, since you can use all the language features available for the other platforms that Ceylon targets, such as:
Union and intersection types
Top-level and higher-order functions
Tuples
Comprehensions
Typesafe metamodel (Ceylon’s version of Java reflection, with additional type safety)
JavaScript: Creative Coding for Browsersnoweverywhere
This document introduces JavaScript, highlighting that it is a client-side scripting language used to add interactivity to web browsers. It discusses JavaScript's origins, features, syntax, objects, operators, loops, and constructors. The document also covers JavaScript's use in creative coding examples, HTML5 features it can access like audio/video, canvas and local storage, and popular JavaScript libraries and APIs. Resources for learning more about JavaScript are provided.
The document discusses how the Guardian migrated from Java to Scala for one of its projects. It had been using Java since 2006 but wanted to innovate faster. It tried Python/Django but found it required throwing away Java experience and had different development and runtime environments. It discovered Scala as a better alternative as Scala runs on the JVM so it could reuse Java tools, libraries and deployment processes. It converted a content API project from Java to Scala and was pleased with the results, finding Scala less verbose and more expressive than Java. It now uses Scala by default for new JVM projects.
TypeProf for IDE: Enrich Development Experience without Annotationsmametter
The document discusses TypeProf for IDE, a VSCode extension powered by TypeProf, a static type analyzer for Ruby. It allows achieving aspects of modern development experience like on-the-fly error reporting and type inference without type annotations. The demo shows features like method signature hints, error reporting, and completion working through the language server protocol. Future work includes improving parser robustness and optimizing analysis performance.
LSUG: How we (mostly) moved from Java to ScalaGraham Tackley
Presentation from talk done at the London Scala User Group on Wednesday 12th Jan 2011.
http://skillsmatter.com/podcast/java-jee/how-we-mostly-moved-from-java-to-scala
Develop realtime web with Scala and XitrumNgoc Dao
This document discusses a talk given by Ngoc Dao on developing realtime and distributed web applications with Scala and Xitrum. The talk covers:
1) An overview of Scala, including its functional features, object-oriented features, tools like SBT and REPL, and how to get started.
2) Using Scala for web development with the Xitrum framework, including routing, responding to requests, internationalization, and metrics.
3) Using Scala for concurrency with futures, actors, and Akka FSM.
4) Building realtime web applications with websockets, Socket.IO and SockJS.
5) Distributed systems with Akka remoting
A Type-level Ruby Interpreter for Testing and Understandingmametter
Type Profiler is a type analyzer for Ruby 3 that analyzes non-annotated Ruby code. It runs Ruby code at the type level to find potential errors and prototype type signatures. It forks execution for branches and reuses results when possible. While not perfect, it provides basic type checking capabilities for Ruby without requiring type annotations. The author acknowledges limitations and many areas for future work to improve Type Profiler.
The document discusses The Guardian's migration from a Java-based architecture to one using Scala for their Content API project. They started by writing integration tests in Scala with ScalaTest in January 2010 and enjoyed it so much that after a month, in February 2010, they decided to convert the whole application to Scala. It took some time for the team to learn how to write good Scala code, like embracing the Option type to avoid nulls and using map and flatMap instead of loops. The migration was relatively smooth by embracing Scala features incrementally. [END SUMMARY]
WDB005.1 - JavaScript for Java Developers (Lecture 1)Igor Khotin
This document provides an overview of JavaScript for Java developers. It discusses the origins and history of JavaScript, including how it was influenced by Java syntax but developed separately. The document outlines similarities and differences between JavaScript and Java, as well as features of JavaScript like dynamic typing, prototypes, closures, and this keyword context. It recommends leveraging good JavaScript features like objects, functions, and JSON while avoiding bad patterns like direct DOM manipulation. Resources for further learning are also provided.
This document provides an introduction to the Scala programming language. It discusses that Scala was created by Martin Odersky in 2003 as a hybrid functional and object-oriented language that runs on the Java Virtual Machine. Some key points made include that Scala code compiles to Java bytecode, allows importing of Java libraries, and supports features like functions as first-class objects. The document also provides examples of Hello World programs in Scala and Java for comparison, and demonstrates basic Scala concepts like variables, conditionals, loops, and lists.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
The document reviews JavaScript languages that can be compiled to JavaScript, including CoffeeScript, Dart, TypeScript, Traceur, Emscripten, Scala.js, ClojureScript, Kotlin, and others. It discusses their features like static typing, classes, async/await support, and ability to port other language ecosystems to run in the browser. It also covers architectures like Opa and Ur/Web that aim to use a single language across front-end, back-end, and databases.
The document discusses building programming languages for the Java Virtual Machine (JVM). It begins by introducing the speaker, Charles Oliver Nutter, and his background working with JRuby and the JVM. It then explores reasons for creating and implementing languages, focusing on the benefits of the JVM like cross-platform support, libraries, and memory management. A case study of JRuby is presented, showing how it allows Ruby programming on the JVM with full interoperability with Java. In the conclusion, the document emphasizes benefits of the JVM like tools, open source culture, and how it influenced language implementation.
This document provides an overview of JRuby, a Ruby implementation that runs on the Java Virtual Machine. It begins with an agenda that covers Ruby and JRuby basics, real-world JRuby applications including graphics, games, and web applications, and an opportunity for questions. It then introduces the JRuby developers and provides a brief Ruby tutorial covering classes, blocks, modules and more. Examples are given of JRuby being used for graphics, games, Rails web applications, and GUI programming. The presentation concludes by thanking the audience and providing links for more information.
This document provides an overview of JRuby, a Ruby implementation that runs on the Java Virtual Machine. It begins with an agenda, introduces the JRuby developers, provides a brief Ruby tutorial, demonstrates JRuby usage for graphics/games and web applications like Rails, and concludes with a thank you.
A presentation at Twitter's official developer conference, Chirp, about why we use the Scala programming language and how we build services in it. Provides a tour of a number of libraries and tools, both developed at Twitter and otherwise.
Not Everything is an Object - Rocksolid Tour 2013Gary Short
This document provides an overview of the history of programming languages and object-oriented development. It discusses some of the limitations of the object-oriented paradigm, such as complexity, brittle hierarchies, and difficulties modeling real-world objects. The document then introduces Clojure as a functional programming language that avoids these issues by using immutable data and focusing on equality rather than object identity. It provides examples of Clojure's features like persistent collections, and discusses how Clojure code is evaluated through its reader and evaluator.
#MBLTdev: Уроки, которые мы выучили, создавая Realme-Legion
Realm is a cross-platform mobile database that provides an easy to use object-oriented API. It is fast, small in size, and fully ACID compliant. Realm has gained popularity with over 20,000 iOS developers and 5,000 Android developers using it within the first few weeks of release. Realm aims to be simple, fast and modern to use across threads. Some key lessons learned from building Realm include aiming high, listening to user feedback, and prioritizing usability over raw performance. Future plans include adding encryption and other advanced features.
Next Insurance was founded at the beginning of 2016, and the first lines of its production code started accumulating in May 2016. As the first back-end developer, I started writing in Java and out of curiosity was experimenting with Kotlin. Kotlin had just seen its 1.0 release two months earlier. A year later, Next Insurance’s entire back-end development team is writing all the code in Kotlin. We already have 8 microservices and several AWS lambda functions all written in Kotlin. Migration from 1.0.x to Kotlin 1.1 was smooth, and the developers are happy. This presentation covers the language’s features and why I think it is awesome and fits perfectly with my company’s architecture.
This document discusses trends in programming languages, including dynamic vs static languages. It covers concepts like implicit typing, metaprogramming, performance, and scaling. Functional programming concepts are mentioned, like first-class functions, immutable data, and referential transparency. Specific languages mentioned include Lisp, Smalltalk, C, Java, C++, C#, Scheme, Haskell, C#, F#, JavaScript, C++11, and Visual Basic. Type inference is discussed at the local and global level. The document promotes the use of the F# language for its functional programming capabilities.
The document outlines why the author started using Ruby and provides an overview of the Ruby programming language and Ruby on Rails web application framework. It discusses how Ruby is a dynamic, object-oriented language designed to be elegant and efficient. Ruby on Rails makes it easy to build database-backed web applications according to the MVC pattern. The document also covers the Ruby ecosystem including interpreters, frameworks, libraries and tools, and discusses the future of Ruby and Rails.
This document discusses Clojure, an immutable, functional programming language that runs on the JVM. It provides an overview of Clojure basics like its syntax, data structures, concurrency features and macros. It then discusses how Clojure is used in practice, including common tools, frameworks and patterns for web development, testing, persistence and more. Real-world examples are given throughout.
The Transparent Web: Bridging the Chasm in Web Developmenttwopoint718
The document discusses the concept of a "transparent web" where the distinction between client-side and server-side code is minimized. It provides examples using Opa and Ur/Web programming languages to demonstrate "Hello World" programs that can compile and run code on both the client and server without needing to manage separate codebases. The document argues this approach can help address common problems with web applications like security, managing multiple languages, and taking on system administration tasks. It acknowledges some may be hesitant but argues the benefits of increased productivity and reduced errors will lead to this approach becoming standard.
Reuven Lerner's first talk from Open Ruby Day, at Hi-Tech College in Herzliya, Israel, on June 27th 2010. An overview of what makes Rails a powerful framework for Web development -- what attracted Reuven to it, what are the components that most speak to him, and why others should consider Rails for their Web applications.
Rapid Application Development using Ruby on RailsSimobo
This document outlines a 4 day training course on rapid application development using Ruby on Rails. Day 1 covers an overview of Ruby on Rails, setting up the development environment, and conducting live demos. Day 2 delves deeper into model-view-controller architecture, database migrations, and form helpers. Day 3 focuses on testing, Active Record optimizations, and unobtrusive JavaScript. Day 4 explores supporting gems for features like caching, file uploads, searching, and delayed jobs. Each day includes lectures, code examples, and hands-on practice building a sample Rails application.
Clojure - An Introduction for Lisp Programmerselliando dias
Clojure is a dynamic programming language for the JVM that is Lisp-based and emphasizes functional programming with an emphasis on immutability and built-in support for concurrency. It was designed to expose and embrace the capabilities of the JVM platform while also addressing limitations of other Lisps like Common Lisp and Scheme.
Code for Startup MVP (Ruby on Rails) Session 2Henry S
This document provides an overview and agenda for a workshop on learning to code for startup MVPs using Ruby on Rails. It covers setting up the development environment, a review of concepts from the previous session, and a focus on Ruby basics, Rails models, and using Devise for user authentication.
Un actor (model) per amico - Alessandro Melchiori - Codemotion Milan 2016Codemotion
Erlang, Elixir, Scala con Akka, solo per fare gli esempi piu' famosi, sono implementazioni di un modello matematico, formulato nel 1973, ma del tutto attuale: l'Actor Model. Utilizzato per sviluppare soluzioni "concorrenti e distribuite", il concetto di "attore" si sposa alla perfezione con il mondo del "cloud". In questa sessione, dopo una breve introduzione teorica sull'Actor Model, analizzeremo le possibilità messe a disposizione dell'ecosistema .net
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersGerke Max Preussner
Overview of basic concepts and common blockers when programming for Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
Bringing Concurrency to Ruby - RubyConf India 2014Charles Nutter
The document discusses bringing concurrency to Ruby. It begins by defining concurrency and parallelism, noting that both are needed but platforms only enable parallelism if jobs can split into concurrent tasks. It reviews concurrency and parallelism in popular Ruby platforms like MRI, JRuby, and Rubinius. The document outlines four rules for concurrency and discusses techniques like immutable data, locking, atomics, and specialized collections for mutable data. It highlights libraries that provide high-level concurrency abstractions like Celluloid for actors and Sidekiq for background jobs.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
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
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3Data Hops
Free A4 downloadable and printable Cyber Security, Social Engineering Safety and security Training Posters . Promote security awareness in the home or workplace. Lock them Out From training providers datahops.com
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
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
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
3. Where we are
• Portland is in the land of Chinook peoples, including the
Multnomah.
• I wrote most of this along a former trail between the Cayuga and
Onondaga territories of the Haudenosaunee.
4. Me: a meta-person
• I only write “real code” occasionally, with my last big project in 2012.
• I have spent lots of time in too many languages:
• Usually this is confusing, but sometimes – like today! – it’s helpful.
• ZX81 BASIC
• Applesoft BASIC
• Assembler
• Spreadsheets
• HyperCard
• C
• HTML
• Asymetrix Toolbook
• JavaScript
• CSS
• VBScript, VBA
• XML, XSLT, X*
• SQL
• Java
• Ruby
• Erlang
• Elixir
• Crystal
9. Ruby’s priorities
“I want to make Ruby users free. I want to give
them the freedom to choose.”
– Matz, at https://www.artima.com/intv/ruby3.html
“Ruby is designed to make programmers happy.”
– Matz, in The Ruby Programming Language.
10. Ruby achieved its mission
“I initially fell in love with Ruby because other people’s code was
just easier to read than anything else I’d previously encountered.
You needed to learn what how blocks work and what |foo| means,
then it all just fell into place. Then when, based on that, you
figured out Enumerable, you might have had heart palpitations.”
- Tim Bray
(https://www.tbray.org/ongoing/When/201x/2019/06/12/Go-Creeping-In)
But note the title of that piece “Go Creeping In.”
12. The Quiet Forks of 2011-2
• No one noticed at the time.
• Rails applications had pushed performance and reliability.
• “Idiomatic Ruby” had mostly stabilized.
• Ruby had avoided the Python 2.x to 3.x drama.
13. Why Elixir?
“I was doing a lot of work with Ruby, and making Rails thread-safe.
That was my personal pain point, my personal war. I knew the shift
was coming along, we wanted to use all the cores on my machine... it
took us too long to make it thread-safe, literally years...
My original reaction was "there must be a solution to this problem."
Once you go, it's hard to come back. The things that those languages,
Clojure and Erlang, give you...”
- José Valim, May 2016.
https://soundcloud.com/oreilly-radar/jose-valim-interviewed-by-simon-st-laurent
14. Why Crystal?
“Fast as C, slick as Ruby.”
“Crystal doesn’t allow you to have null pointer exceptions.”
Compilation (with LLVM) yields safety and performance.
Developer happiness and productivity as primary goals.
15. Two newcomers
• José Valim started Elixir in
2012.
• Project supported by
Platformatec and a growing
community.
• Ary Borenszweig, Juan
Wajnerman, and Brian Cardiff
started Crystal in 2011.
• Project supported by Manas
Technology Solutions and a
growing community.
https://crystal-lang.org/https://elixir-lang.org/
16. Current status
• 1.0 released in 2014
• 1.9 released this month
• Self-hosting in 2013, first
official release in 2014.
• 0.29.0 released in June.
17. What’s next
“As mentioned earlier, releases
was the last planned feature for
Elixir. We don’t have any major
user-facing feature in the
works nor planned.”
Major projects yet to come:
• Complete concurrency
• Windows support.
19. Elixir tries to be friendlier Erlang
Erlang
-module(count).
-export([countdown/1]).
countdown(From) when From > 0 ->
io:format("~w!~n", [From]),
countdown(From-1);
countdown(From) ->
io:format("blastoff!~n").
Elixir
defmodule Count do
def countdown(from) when from > 0 do
IO.inspect(from)
countdown(from-1)
end
def countdown(from) do
IO.puts("blastoff!")
end
end
20. Crystal tries to be friendlier C
C (header file elsewhere!)
#include <stdio.h>
void countdown(int count) {
for (int i = count; i > 0; i--) {
printf("%dn",i);
}
printf("Blastoff! n");
}
void main() {
countdown(5);
}
Crystal
def countdown (count)
while (count) > 0
puts count
count -= 1
end
puts("Blastoff!")
end
puts countdown(5)
21. Sometimes all three can (almost) line up
def fall_velocity(planemo, distance)
gravity = case planemo
when :earth then 9.8
when :moon then 1.6
when :mars
3.71
end
velocity = Math.sqrt(2 * gravity
* distance)
if
velocity == 0 then "stable“
elsif velocity < 5 then "slow“
elsif velocity >= 5 and
velocity < 10
"moving“
elsif velocity >= 10 and
velocity < 20
"fast“
elsif velocity >= 20
"speedy“
end
end
def fall_velocity(planemo : Symbol,
distance : Int32)
gravity = case planemo
when :earth then 9.8
when :moon then 1.6
when :mars then 3.71
else 0
end
velocity = Math.sqrt(2 * gravity *
distance)
if
velocity == 0
"stable"
elsif velocity < 5
"slow"
elsif velocity >= 5 && velocity < 10
"moving"
elsif velocity >= 10 && velocity < 20
"fast"
elsif velocity >= 20
"speedy"
end
end
Ruby Crystal Elixir
def fall_velocity(planemo, distance)
when distance >= 0 do
gravity = case planemo do
:earth -> 9.8
:moon -> 1.6
:mars -> 3.71
end
velocity = :math.sqrt(2 * gravity *
distance)
cond do
velocity == 0 -> "stable"
velocity < 5 -> "slow"
velocity >= 5 and velocity < 10 -
> "moving"
velocity >= 10 and velocity < 20
-> "fast"
velocity >= 20 -> "speedy"
end
end
23. Both of these children
• Add an explicit compilation step.
• BEAM for Elixir
• LLVM for Crystal.
• Trim Ruby syntax to a smaller set, with fewer choices.
• Have Ruby-like ecosystems, with parallel tools for Rails, Sinatra,
testing frameworks, and more.
• Retain Ruby’s emphasis on programmer fun and productivity.
24. Types are the same but different
Numbers
Boolean
Strings
Hashes
Arrays
Symbols
Closures
Ranges
Objects
integer
floats
booleans
strings
maps
lists
tuples
atoms
anonymous functions
port
Reference
PID
Ruby Elixir Crystal
Integers (8-64, signed & unsigned)
Floats (32 or 64)
Bool
String
Char
Hash
Array
Tuple
NamedTuple
Symbol
Proc
Range
Object
Regex
Command (runs in a subshell)
Nil
25. Ruby and Crystal and OOP
• “Classical” inheritance-based object approaches.
• A megadose of additional flexibility.
• “Everything is an object.” (Almost.)
• Everything has methods and properties directly available.
26. Ruby and Crystal support functional
• Ruby:
my_fn = ->(n, m) { n + m }
my_fn.call(4, 3) # => 7
• Crystal:
my_fn = -> (n : Int32, m : Int32) { n + m }
my_fn.call(43, 108) # => 151
27. Elixir is a more drastic shift
• Yes:
my_fn = fn (n, m) -> n + m end
my_fn.(44, 108) # => 152
• But: no objects, no methods, no properties. (Yes, modules.)
• Everything that does something is a function.
28. Elixir’s pipe operator
Drop.fall_velocity(meters) |> Convert.mps_to_mph
• Elixir added this syntax sugar early.
• Ruby 2.7 added something like it, but… tricky
• Crystal: “Adding Elixir's pipe operator (|>): in OOP languages we
have methods and self. See #1388…. Please don't insist on these
things because they will never, ever happen.”
29. Messaging models
• Sending messages is more flexible than calling functions.
• Elixir processes communicate by sending messages to each
other at named endpoints. OTP cranks up that model.
• Crystal uses (green) fibers with channels for communications
between them, in a Communicating Sequential Processes model.
• Difficult to compare, because Crystal isn’t done.
30. Macros and metaprogramming
• Metaprogramming is a huge part of Ruby’s appeal.
• Both Crystal and Elixir step away from method_missing.
• Crystal still supports monkeypatching, adding new methods to
classes and modules.
• Both Crystal and Elixir offer macros, with warning labels.
32. Elixir’s large promises
• Dave Thomas: “Programming should be about transforming data.”
• Processes (functions) grow and die lightly.
• OTP supervisors, workers, and a distributed node model.
• Phoenix layers on top of OTP, but feels like Rails.
33. Crystal’s large promises
• Errors at compile time, not at runtime.
• Compiler disciplines code while keeping it familiar.
• Type inference protects you without cluttering code.
• Compilation gives you the performance you always wanted.
34. Resilience
Crystal
• Nil won’t break things
• Types ensure reliability
Elixir
• Let it crash
• OTP supervisors and workers
• Update code on the fly
35. Performance
Crystal
• Tight compilation
• Running close to the metal
• Riding on LLVM
Elixir
• Parallel processing as normal
• Lightweight functions
• Riding on BEAM
40. Please Use It For Good
I’ll let you determine what “good” means, but think
about it.
Please try to use Elixir and Crystal’s powers for
projects that make the world a better place, or at
least not a worse place.
41. Children of Ruby
The different worlds of Elixir and Crystal
Simon St.Laurent
@simonstl
Content Manager, LinkedIn Learning
Editor's Notes
I’m also primarily a Web person.
You should be suspicious of me for covering this much territory.
Rubyists? People who have used Elixir? All the time? Crystal? All the time? Web-focused? Love dynamic languages? Like your types strong and static?
while porting the Crystal parser from Ruby to Crystal, Crystal refused to compile because of a possible null pointer exception. And it was correct. So in a way, Crystal found a bug in itself :-)
1.10 next for Elixir, point releases roughly every six months.
All three languages are generally readable by someone who knows any one of them.
MINASWAN continues in both places.
Also, like Ruby, origins outside the US and Europe – both have Latin American roots.
gems, shards, hex
Rails / Amber / Phoenix
Elixir supports tools for additional type annotations.
Crystal’s list is abbreviated by not giving all the Int and Float types their own lines.
Both languages have monkey patching, but Crystal uses method overloading rather than method shadowing.
Ruby has been a school for functional programming for decades, bridging object-oriented expectations with functional capabilities.
Crystal continues that tradition with a similar mix. These are the simplest approaches – you can also capture blocks, etc. Both Crystal and Ruby also support multiple mechanisms for defining lambdas and procs.
Crystal removes lambda vs. proc distinction
Neither, though, reliably supports tail call optimization.
Note guards and pattern matching as superpowered function signatures.
Ruby syntax makes Erlang message-passing foundations more digestible.
Pipes only apply to the first argument of a function, so you’ll need to structure your functions to play nicely with pipes if you want to use this extensively.
Be grateful that none of these use shared memory, an especially common temptation in C-related languages. No locks, either!
CSP means that channels are set up between specific fibers rather than a general message-passing clearing house, and also requires receivers to be listening. Probably more solid in single system environments, but hard to share across nodes.
SO WHERE DOES THIS TAKE US?
The biggest problem with OTP is that it sounds like impossible ridiculous magic when you describe it to someone who hasn’t worked with it before. “Open Telecom Platform whatever!” is a common response.
Give Nerves for IoT a shout-out.
The biggest problem with OTP is that it sounds like impossible ridiculous magic when you describe it to someone who hasn’t worked with it before. “Open Telecom Platform whatever!” is a common response.
Or just because you like its mix of functional approach and practical deployability.
Or just because you like its mix of functional approach and practical deployability.
Also simple familiarity – doesn’t just look like Ruby, but mostly behaves like it.
MINASWAN continues in both places.
Also, like Ruby, origins outside the US and Europe – both have Latin American roots.